├── .changeset ├── README.md └── config.json ├── .github ├── actions │ └── ci-setup │ │ └── action.yml └── workflows │ └── release.yml ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── example.js ├── package.json ├── pnpm-lock.yaml ├── scripts └── dev.sh ├── src ├── .github │ └── workflows │ │ └── release.yml ├── browser.test.ts ├── browser.ts ├── createInspector.test.ts ├── createInspector.ts ├── createSkyInspector.ts ├── idleCallback.ts ├── index.ts ├── types.ts ├── useless.ts ├── utils.ts └── webSocket.ts └── tsconfig.json /.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/main/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.3.1/schema.json", 3 | "changelog": ["@changesets/changelog-github", { "repo": "statelyai/inspect" }], 4 | "commit": false, 5 | "fixed": [], 6 | "linked": [], 7 | "access": "restricted", 8 | "baseBranch": "main", 9 | "updateInternalDependencies": "patch", 10 | "ignore": [] 11 | } 12 | -------------------------------------------------------------------------------- /.github/actions/ci-setup/action.yml: -------------------------------------------------------------------------------- 1 | name: Setup Workflow 2 | description: Composite action that sets up pnpm 3 | runs: 4 | using: 'composite' 5 | steps: 6 | - uses: pnpm/action-setup@v2 7 | - uses: actions/setup-node@v4 8 | with: 9 | node-version: 20.x 10 | 11 | - name: Get pnpm store directory 12 | shell: bash 13 | id: pnpm-cache 14 | run: | 15 | echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT 16 | - uses: actions/cache@v4 17 | name: Setup pnpm cache 18 | with: 19 | path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} 20 | key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} 21 | restore-keys: | 22 | ${{ runner.os }}-pnpm-store- 23 | - run: pnpm install 24 | shell: bash -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | concurrency: ${{ github.workflow }}-${{ github.ref }} 9 | 10 | permissions: {} 11 | jobs: 12 | release: 13 | permissions: 14 | contents: write # to create release (changesets/action) 15 | issues: write # to post issue comments (changesets/action) 16 | pull-requests: write # to create pull request (changesets/action) 17 | 18 | if: github.repository == 'statelyai/inspect' 19 | 20 | timeout-minutes: 20 21 | 22 | runs-on: ubuntu-latest 23 | 24 | steps: 25 | - uses: actions/checkout@v3 26 | - uses: ./.github/actions/ci-setup 27 | 28 | - name: Create Release Pull Request or Publish to npm 29 | uses: changesets/action@v1 30 | with: 31 | publish: pnpm run release 32 | version: pnpm run version 33 | env: 34 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 35 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 36 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | 132 | .DS_Store 133 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @statelyai/inspect 2 | 3 | ## 0.5.2 4 | 5 | ### Patch Changes 6 | 7 | - [#39](https://github.com/statelyai/inspect/pull/39) [`70430ee`](https://github.com/statelyai/inspect/commit/70430eeffc11fb43a0bcabbb9d1d7737961160c0) Thanks [@davidkpiano](https://github.com/davidkpiano)! - Update XState to 5.18.2 8 | 9 | ## 0.5.1 10 | 11 | ### Patch Changes 12 | 13 | - [#34](https://github.com/statelyai/inspect/pull/34) [`ca30b6f`](https://github.com/statelyai/inspect/commit/ca30b6f830c2714d0878e51dd5be42457c087151) Thanks [@davidkpiano](https://github.com/davidkpiano)! - Update XState to 5.17.1 14 | 15 | ## 0.5.0 16 | 17 | ### Minor Changes 18 | 19 | - [#32](https://github.com/statelyai/inspect/pull/32) [`6f7b65a`](https://github.com/statelyai/inspect/commit/6f7b65aff86320575e626e769bb7baf4a20b7669) Thanks [@davidkpiano](https://github.com/davidkpiano)! - Added new options `sanitizeContext` and `sanitizeEvent` to the inspector configuration. These options allow users to sanitize sensitive data from the context and events before they are sent to the inspector, and also to remove non-serializable data. 20 | 21 | Example usage: 22 | 23 | ```typescript 24 | const inspector = createInspector({ 25 | sanitizeContext: (context) => { 26 | // Remove sensitive data from context 27 | const { password, ...safeContext } = context; 28 | return safeContext; 29 | }, 30 | sanitizeEvent: (event) => { 31 | // Remove sensitive data from event 32 | if (event.type === "SUBMIT_FORM") { 33 | const { creditCardNumber, ...safeEvent } = event; 34 | return safeEvent; 35 | } 36 | return event; 37 | }, 38 | }); 39 | ``` 40 | 41 | ## 0.3.1 42 | 43 | ### Patch Changes 44 | 45 | - [#27](https://github.com/statelyai/inspect/pull/27) [`39279fe`](https://github.com/statelyai/inspect/commit/39279fe6680904f8773331fc7b42a5dbf099a7b8) Thanks [@davidkpiano](https://github.com/davidkpiano)! - Revert serialization changes 46 | 47 | ## 0.3.0 48 | 49 | ### Minor Changes 50 | 51 | - [#24](https://github.com/statelyai/inspect/pull/24) [`9cfc0b3`](https://github.com/statelyai/inspect/commit/9cfc0b3d8f6703de46dd030fe271f2516e36d1d1) Thanks [@davidkpiano](https://github.com/davidkpiano)! - The `serialize` option will now pre-serialize the event using `superjson` before the custom serialization. 52 | 53 | ## 0.2.5 54 | 55 | ### Patch Changes 56 | 57 | - [#21](https://github.com/statelyai/inspect/pull/21) [`a225b37`](https://github.com/statelyai/inspect/commit/a225b37c7e466091528bcf275b57488f144b1f47) Thanks [@davidkpiano](https://github.com/davidkpiano)! - Do not warn for XState events 58 | 59 | ## 0.2.4 60 | 61 | ### Patch Changes 62 | 63 | - [#18](https://github.com/statelyai/inspect/pull/18) [`7d569b1`](https://github.com/statelyai/inspect/commit/7d569b111207d2f9999f2cfa9e270b0c93dc9b9c) Thanks [@davidkpiano](https://github.com/davidkpiano)! - Do not crash on unhandled inspection event type 64 | 65 | ## 0.2.3 66 | 67 | ### Patch Changes 68 | 69 | - [#12](https://github.com/statelyai/inspect/pull/12) [`c878733`](https://github.com/statelyai/inspect/commit/c8787338e100f45649b14eae49f3eddacefd7df9) Thanks [@mellson](https://github.com/mellson)! - Adds `createSkyInspector`, which allows you to inspect machines in Node or the browser. The inspection will send the events to a server backend through websockets and allows you to open and share a live inspection URL. 70 | 71 | ## 0.2.2 72 | 73 | ### Patch Changes 74 | 75 | - [#15](https://github.com/statelyai/inspect/pull/15) [`b20b7b7`](https://github.com/statelyai/inspect/commit/b20b7b71722f4f3a68ee17cfad471d89bc1f0e2e) Thanks [@davidkpiano](https://github.com/davidkpiano)! - Use `safe-stable-stringify` everywhere applicable 76 | 77 | - [#13](https://github.com/statelyai/inspect/pull/13) [`9d9229d`](https://github.com/statelyai/inspect/commit/9d9229dcd6a83a8d32d65c4f9eca084e7f5b66b0) Thanks [@davidkpiano](https://github.com/davidkpiano)! - Replace fast-safe-stringify with stable-safe-stringify 78 | 79 | ## 0.2.1 80 | 81 | ### Patch Changes 82 | 83 | - [#8](https://github.com/statelyai/inspect/pull/8) [`ea5bab4`](https://github.com/statelyai/inspect/commit/ea5bab45c581cb8bf76af0c610258bf1c4250466) Thanks [@davidkpiano](https://github.com/davidkpiano)! - Safely stringify snapshots from XState events to deal with circular references 84 | 85 | - [#9](https://github.com/statelyai/inspect/pull/9) [`12fe68e`](https://github.com/statelyai/inspect/commit/12fe68efd528d63999e157c4711e6b108e650808) Thanks [@mellson](https://github.com/mellson)! - Update to the latest version of XState and move it to peer dependencies. 86 | 87 | ## 0.2.0 88 | 89 | ### Minor Changes 90 | 91 | - 3fe7315: Handle window being undefined when trying to create a browser inspector in isomorphic (server/browser) environments 92 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Stately 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Stately.ai Inspect 2 | 3 | The `@statelyai/inspect` package enables developers to visually inspect state transitions and actor communication in any JavaScript/TypeScript app. 4 | 5 | **Documentation:** [stately.ai/docs/inspector](https://stately.ai/docs/inspector) 6 | 7 | ## Features 8 | 9 | - Visualize state machines 10 | - Visualize sequence diagrams 11 | - Works best with XState 12 | - Can be used with any framework or library (or none at all) 13 | 14 | ## Usage 15 | 16 | **Browser inspector with XState:** 17 | 18 | ```ts 19 | import { createBrowserInspector } from '@statelyai/inspect'; 20 | import { createActor } from 'xstate'; 21 | import { machine } from './someMachine'; 22 | 23 | const inspector = createBrowserInspector(); 24 | 25 | const actor = createActor(machine, { 26 | inspect: inspector.inspect, 27 | }); 28 | 29 | actor.start(); 30 | ``` 31 | 32 | **Browser inspector with _anything_:** 33 | 34 | ```ts 35 | import { createBrowserInspector } from '@statelyai/inspect'; 36 | 37 | const inspector = createBrowserInspector(); 38 | 39 | // ... 40 | 41 | inspector.actor('someActor', { 42 | status: 'active', 43 | context: { 44 | /* any context data */ 45 | }, 46 | }); 47 | 48 | inspector.actor('anotherActor'); 49 | 50 | inspector.event('someActor', 'hello', { source: 'anotherActor' }); 51 | 52 | inspector.snapshot('anotherActor', { 53 | status: 'active', 54 | context: { 55 | /* any context data */ 56 | }, 57 | }); 58 | ``` 59 | -------------------------------------------------------------------------------- /example.js: -------------------------------------------------------------------------------- 1 | const { createMachine, createActor } = require('xstate'); 2 | const { createWebSocketInspector } = require('./dist/index.js'); 3 | 4 | const machine = createMachine({ 5 | // a machine that goes back and forth every second 6 | id: 'counter', 7 | initial: 'counting', 8 | states: { 9 | counting: { 10 | after: { 11 | 1000: 'not counting', 12 | }, 13 | }, 14 | 'not counting': { 15 | after: { 16 | 1000: 'counting', 17 | }, 18 | }, 19 | }, 20 | }); 21 | 22 | const actor = createActor(machine); 23 | 24 | const inspector = createWebSocketInspector('ws://localhost:8080'); 25 | 26 | actor.subscribe((state) => { 27 | inspector.snapshot(state, actor.sessionId); 28 | inspector.actor('some actor'); 29 | inspector.event('EVENT'); 30 | }); 31 | 32 | actor.start(); 33 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "@changesets/changelog-github": "^0.5.0", 4 | "@changesets/cli": "^2.27.7", 5 | "@types/jsdom": "^21.1.7", 6 | "@types/uuid": "^9.0.8", 7 | "jsdom": "^23.2.0", 8 | "tsup": "^8.2.4", 9 | "typescript": "^5.5.4", 10 | "vitest": "^1.6.0", 11 | "xstate": "^5.18.2" 12 | }, 13 | "name": "@statelyai/inspect", 14 | "version": "0.5.2", 15 | "description": "Inspection utilities for state, actors, workflows, and state machines.", 16 | "main": "dist/index.js", 17 | "repository": "https://github.com/statelyai/inspect.git", 18 | "author": "David Khourshid ", 19 | "license": "MIT", 20 | "dependencies": { 21 | "fast-safe-stringify": "^2.1.1", 22 | "isomorphic-ws": "^5.0.0", 23 | "partysocket": "^0.0.25", 24 | "safe-stable-stringify": "^2.4.3", 25 | "superjson": "^1.13.3", 26 | "uuid": "^9.0.1" 27 | }, 28 | "peerDependencies": { 29 | "xstate": "^5.5.1" 30 | }, 31 | "scripts": { 32 | "build": "tsup src/index.ts --dts", 33 | "watch": "tsup src/index.ts --dts --watch", 34 | "test": "vitest", 35 | "prepublishOnly": "tsup src/index.ts --dts", 36 | "changeset": "changeset", 37 | "release": "changeset publish", 38 | "version": "changeset version", 39 | "dev": "yarn build && ./scripts/dev.sh", 40 | "typecheck": "tsc --noEmit" 41 | }, 42 | "publishConfig": { 43 | "access": "public" 44 | }, 45 | "packageManager": "pnpm@8.11.0" 46 | } 47 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | fast-safe-stringify: 12 | specifier: ^2.1.1 13 | version: 2.1.1 14 | isomorphic-ws: 15 | specifier: ^5.0.0 16 | version: 5.0.0(ws@8.18.0) 17 | partysocket: 18 | specifier: ^0.0.25 19 | version: 0.0.25 20 | safe-stable-stringify: 21 | specifier: ^2.4.3 22 | version: 2.4.3 23 | superjson: 24 | specifier: ^1.13.3 25 | version: 1.13.3 26 | uuid: 27 | specifier: ^9.0.1 28 | version: 9.0.1 29 | devDependencies: 30 | '@changesets/changelog-github': 31 | specifier: ^0.5.0 32 | version: 0.5.0 33 | '@changesets/cli': 34 | specifier: ^2.27.7 35 | version: 2.27.7 36 | '@types/jsdom': 37 | specifier: ^21.1.7 38 | version: 21.1.7 39 | '@types/uuid': 40 | specifier: ^9.0.8 41 | version: 9.0.8 42 | jsdom: 43 | specifier: ^23.2.0 44 | version: 23.2.0 45 | tsup: 46 | specifier: ^8.2.4 47 | version: 8.2.4(postcss@8.4.41)(typescript@5.5.4)(yaml@2.4.5) 48 | typescript: 49 | specifier: ^5.5.4 50 | version: 5.5.4 51 | vitest: 52 | specifier: ^1.6.0 53 | version: 1.6.0(@types/node@22.2.0)(jsdom@23.2.0) 54 | xstate: 55 | specifier: ^5.18.2 56 | version: 5.18.2 57 | 58 | packages: 59 | 60 | '@asamuzakjp/dom-selector@2.0.2': 61 | resolution: {integrity: sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==, tarball: https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-2.0.2.tgz} 62 | 63 | '@babel/runtime@7.25.0': 64 | resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==, tarball: https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz} 65 | engines: {node: '>=6.9.0'} 66 | 67 | '@changesets/apply-release-plan@7.0.4': 68 | resolution: {integrity: sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==, tarball: https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.4.tgz} 69 | 70 | '@changesets/assemble-release-plan@6.0.3': 71 | resolution: {integrity: sha512-bLNh9/Lgl1VwkjWZTq8JmRqH+hj7/Yzfz0jsQ/zJJ+FTmVqmqPj3szeKOri8O/hEM8JmHW019vh2gTO9iq5Cuw==, tarball: https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.3.tgz} 72 | 73 | '@changesets/changelog-git@0.2.0': 74 | resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==, tarball: https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.2.0.tgz} 75 | 76 | '@changesets/changelog-github@0.5.0': 77 | resolution: {integrity: sha512-zoeq2LJJVcPJcIotHRJEEA2qCqX0AQIeFE+L21L8sRLPVqDhSXY8ZWAt2sohtBpFZkBwu+LUwMSKRr2lMy3LJA==, tarball: https://registry.npmjs.org/@changesets/changelog-github/-/changelog-github-0.5.0.tgz} 78 | 79 | '@changesets/cli@2.27.7': 80 | resolution: {integrity: sha512-6lr8JltiiXPIjDeYg4iM2MeePP6VN/JkmqBsVA5XRiy01hGS3y629LtSDvKcycj/w/5Eur1rEwby/MjcYS+e2A==, tarball: https://registry.npmjs.org/@changesets/cli/-/cli-2.27.7.tgz} 81 | hasBin: true 82 | 83 | '@changesets/config@3.0.2': 84 | resolution: {integrity: sha512-cdEhS4t8woKCX2M8AotcV2BOWnBp09sqICxKapgLHf9m5KdENpWjyrFNMjkLqGJtUys9U+w93OxWT0czorVDfw==, tarball: https://registry.npmjs.org/@changesets/config/-/config-3.0.2.tgz} 85 | 86 | '@changesets/errors@0.2.0': 87 | resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==, tarball: https://registry.npmjs.org/@changesets/errors/-/errors-0.2.0.tgz} 88 | 89 | '@changesets/get-dependents-graph@2.1.1': 90 | resolution: {integrity: sha512-LRFjjvigBSzfnPU2n/AhFsuWR5DK++1x47aq6qZ8dzYsPtS/I5mNhIGAS68IAxh1xjO9BTtz55FwefhANZ+FCA==, tarball: https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.1.1.tgz} 91 | 92 | '@changesets/get-github-info@0.6.0': 93 | resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==, tarball: https://registry.npmjs.org/@changesets/get-github-info/-/get-github-info-0.6.0.tgz} 94 | 95 | '@changesets/get-release-plan@4.0.3': 96 | resolution: {integrity: sha512-6PLgvOIwTSdJPTtpdcr3sLtGatT+Jr22+cQwEBJBy6wP0rjB4yJ9lv583J9fVpn1bfQlBkDa8JxbS2g/n9lIyA==, tarball: https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.3.tgz} 97 | 98 | '@changesets/get-version-range-type@0.4.0': 99 | resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==, tarball: https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.4.0.tgz} 100 | 101 | '@changesets/git@3.0.0': 102 | resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==, tarball: https://registry.npmjs.org/@changesets/git/-/git-3.0.0.tgz} 103 | 104 | '@changesets/logger@0.1.0': 105 | resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==, tarball: https://registry.npmjs.org/@changesets/logger/-/logger-0.1.0.tgz} 106 | 107 | '@changesets/parse@0.4.0': 108 | resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==, tarball: https://registry.npmjs.org/@changesets/parse/-/parse-0.4.0.tgz} 109 | 110 | '@changesets/pre@2.0.0': 111 | resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==, tarball: https://registry.npmjs.org/@changesets/pre/-/pre-2.0.0.tgz} 112 | 113 | '@changesets/read@0.6.0': 114 | resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==, tarball: https://registry.npmjs.org/@changesets/read/-/read-0.6.0.tgz} 115 | 116 | '@changesets/should-skip-package@0.1.0': 117 | resolution: {integrity: sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==, tarball: https://registry.npmjs.org/@changesets/should-skip-package/-/should-skip-package-0.1.0.tgz} 118 | 119 | '@changesets/types@4.1.0': 120 | resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==, tarball: https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz} 121 | 122 | '@changesets/types@6.0.0': 123 | resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==, tarball: https://registry.npmjs.org/@changesets/types/-/types-6.0.0.tgz} 124 | 125 | '@changesets/write@0.3.1': 126 | resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==, tarball: https://registry.npmjs.org/@changesets/write/-/write-0.3.1.tgz} 127 | 128 | '@esbuild/aix-ppc64@0.21.5': 129 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz} 130 | engines: {node: '>=12'} 131 | cpu: [ppc64] 132 | os: [aix] 133 | 134 | '@esbuild/aix-ppc64@0.23.0': 135 | resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz} 136 | engines: {node: '>=18'} 137 | cpu: [ppc64] 138 | os: [aix] 139 | 140 | '@esbuild/android-arm64@0.21.5': 141 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz} 142 | engines: {node: '>=12'} 143 | cpu: [arm64] 144 | os: [android] 145 | 146 | '@esbuild/android-arm64@0.23.0': 147 | resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz} 148 | engines: {node: '>=18'} 149 | cpu: [arm64] 150 | os: [android] 151 | 152 | '@esbuild/android-arm@0.21.5': 153 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz} 154 | engines: {node: '>=12'} 155 | cpu: [arm] 156 | os: [android] 157 | 158 | '@esbuild/android-arm@0.23.0': 159 | resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.0.tgz} 160 | engines: {node: '>=18'} 161 | cpu: [arm] 162 | os: [android] 163 | 164 | '@esbuild/android-x64@0.21.5': 165 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz} 166 | engines: {node: '>=12'} 167 | cpu: [x64] 168 | os: [android] 169 | 170 | '@esbuild/android-x64@0.23.0': 171 | resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.0.tgz} 172 | engines: {node: '>=18'} 173 | cpu: [x64] 174 | os: [android] 175 | 176 | '@esbuild/darwin-arm64@0.21.5': 177 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz} 178 | engines: {node: '>=12'} 179 | cpu: [arm64] 180 | os: [darwin] 181 | 182 | '@esbuild/darwin-arm64@0.23.0': 183 | resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz} 184 | engines: {node: '>=18'} 185 | cpu: [arm64] 186 | os: [darwin] 187 | 188 | '@esbuild/darwin-x64@0.21.5': 189 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz} 190 | engines: {node: '>=12'} 191 | cpu: [x64] 192 | os: [darwin] 193 | 194 | '@esbuild/darwin-x64@0.23.0': 195 | resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz} 196 | engines: {node: '>=18'} 197 | cpu: [x64] 198 | os: [darwin] 199 | 200 | '@esbuild/freebsd-arm64@0.21.5': 201 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz} 202 | engines: {node: '>=12'} 203 | cpu: [arm64] 204 | os: [freebsd] 205 | 206 | '@esbuild/freebsd-arm64@0.23.0': 207 | resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz} 208 | engines: {node: '>=18'} 209 | cpu: [arm64] 210 | os: [freebsd] 211 | 212 | '@esbuild/freebsd-x64@0.21.5': 213 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz} 214 | engines: {node: '>=12'} 215 | cpu: [x64] 216 | os: [freebsd] 217 | 218 | '@esbuild/freebsd-x64@0.23.0': 219 | resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz} 220 | engines: {node: '>=18'} 221 | cpu: [x64] 222 | os: [freebsd] 223 | 224 | '@esbuild/linux-arm64@0.21.5': 225 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz} 226 | engines: {node: '>=12'} 227 | cpu: [arm64] 228 | os: [linux] 229 | 230 | '@esbuild/linux-arm64@0.23.0': 231 | resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz} 232 | engines: {node: '>=18'} 233 | cpu: [arm64] 234 | os: [linux] 235 | 236 | '@esbuild/linux-arm@0.21.5': 237 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz} 238 | engines: {node: '>=12'} 239 | cpu: [arm] 240 | os: [linux] 241 | 242 | '@esbuild/linux-arm@0.23.0': 243 | resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz} 244 | engines: {node: '>=18'} 245 | cpu: [arm] 246 | os: [linux] 247 | 248 | '@esbuild/linux-ia32@0.21.5': 249 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz} 250 | engines: {node: '>=12'} 251 | cpu: [ia32] 252 | os: [linux] 253 | 254 | '@esbuild/linux-ia32@0.23.0': 255 | resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz} 256 | engines: {node: '>=18'} 257 | cpu: [ia32] 258 | os: [linux] 259 | 260 | '@esbuild/linux-loong64@0.21.5': 261 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz} 262 | engines: {node: '>=12'} 263 | cpu: [loong64] 264 | os: [linux] 265 | 266 | '@esbuild/linux-loong64@0.23.0': 267 | resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz} 268 | engines: {node: '>=18'} 269 | cpu: [loong64] 270 | os: [linux] 271 | 272 | '@esbuild/linux-mips64el@0.21.5': 273 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz} 274 | engines: {node: '>=12'} 275 | cpu: [mips64el] 276 | os: [linux] 277 | 278 | '@esbuild/linux-mips64el@0.23.0': 279 | resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz} 280 | engines: {node: '>=18'} 281 | cpu: [mips64el] 282 | os: [linux] 283 | 284 | '@esbuild/linux-ppc64@0.21.5': 285 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz} 286 | engines: {node: '>=12'} 287 | cpu: [ppc64] 288 | os: [linux] 289 | 290 | '@esbuild/linux-ppc64@0.23.0': 291 | resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz} 292 | engines: {node: '>=18'} 293 | cpu: [ppc64] 294 | os: [linux] 295 | 296 | '@esbuild/linux-riscv64@0.21.5': 297 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz} 298 | engines: {node: '>=12'} 299 | cpu: [riscv64] 300 | os: [linux] 301 | 302 | '@esbuild/linux-riscv64@0.23.0': 303 | resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz} 304 | engines: {node: '>=18'} 305 | cpu: [riscv64] 306 | os: [linux] 307 | 308 | '@esbuild/linux-s390x@0.21.5': 309 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz} 310 | engines: {node: '>=12'} 311 | cpu: [s390x] 312 | os: [linux] 313 | 314 | '@esbuild/linux-s390x@0.23.0': 315 | resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz} 316 | engines: {node: '>=18'} 317 | cpu: [s390x] 318 | os: [linux] 319 | 320 | '@esbuild/linux-x64@0.21.5': 321 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz} 322 | engines: {node: '>=12'} 323 | cpu: [x64] 324 | os: [linux] 325 | 326 | '@esbuild/linux-x64@0.23.0': 327 | resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz} 328 | engines: {node: '>=18'} 329 | cpu: [x64] 330 | os: [linux] 331 | 332 | '@esbuild/netbsd-x64@0.21.5': 333 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz} 334 | engines: {node: '>=12'} 335 | cpu: [x64] 336 | os: [netbsd] 337 | 338 | '@esbuild/netbsd-x64@0.23.0': 339 | resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz} 340 | engines: {node: '>=18'} 341 | cpu: [x64] 342 | os: [netbsd] 343 | 344 | '@esbuild/openbsd-arm64@0.23.0': 345 | resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==, tarball: https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz} 346 | engines: {node: '>=18'} 347 | cpu: [arm64] 348 | os: [openbsd] 349 | 350 | '@esbuild/openbsd-x64@0.21.5': 351 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz} 352 | engines: {node: '>=12'} 353 | cpu: [x64] 354 | os: [openbsd] 355 | 356 | '@esbuild/openbsd-x64@0.23.0': 357 | resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz} 358 | engines: {node: '>=18'} 359 | cpu: [x64] 360 | os: [openbsd] 361 | 362 | '@esbuild/sunos-x64@0.21.5': 363 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz} 364 | engines: {node: '>=12'} 365 | cpu: [x64] 366 | os: [sunos] 367 | 368 | '@esbuild/sunos-x64@0.23.0': 369 | resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz} 370 | engines: {node: '>=18'} 371 | cpu: [x64] 372 | os: [sunos] 373 | 374 | '@esbuild/win32-arm64@0.21.5': 375 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz} 376 | engines: {node: '>=12'} 377 | cpu: [arm64] 378 | os: [win32] 379 | 380 | '@esbuild/win32-arm64@0.23.0': 381 | resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz} 382 | engines: {node: '>=18'} 383 | cpu: [arm64] 384 | os: [win32] 385 | 386 | '@esbuild/win32-ia32@0.21.5': 387 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz} 388 | engines: {node: '>=12'} 389 | cpu: [ia32] 390 | os: [win32] 391 | 392 | '@esbuild/win32-ia32@0.23.0': 393 | resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz} 394 | engines: {node: '>=18'} 395 | cpu: [ia32] 396 | os: [win32] 397 | 398 | '@esbuild/win32-x64@0.21.5': 399 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz} 400 | engines: {node: '>=12'} 401 | cpu: [x64] 402 | os: [win32] 403 | 404 | '@esbuild/win32-x64@0.23.0': 405 | resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz} 406 | engines: {node: '>=18'} 407 | cpu: [x64] 408 | os: [win32] 409 | 410 | '@isaacs/cliui@8.0.2': 411 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, tarball: https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz} 412 | engines: {node: '>=12'} 413 | 414 | '@jest/schemas@29.6.3': 415 | resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==, tarball: https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz} 416 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 417 | 418 | '@jridgewell/gen-mapping@0.3.5': 419 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==, tarball: https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz} 420 | engines: {node: '>=6.0.0'} 421 | 422 | '@jridgewell/resolve-uri@3.1.2': 423 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, tarball: https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz} 424 | engines: {node: '>=6.0.0'} 425 | 426 | '@jridgewell/set-array@1.2.1': 427 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==, tarball: https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz} 428 | engines: {node: '>=6.0.0'} 429 | 430 | '@jridgewell/sourcemap-codec@1.5.0': 431 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==, tarball: https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz} 432 | 433 | '@jridgewell/trace-mapping@0.3.25': 434 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==, tarball: https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz} 435 | 436 | '@manypkg/find-root@1.1.0': 437 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==, tarball: https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz} 438 | 439 | '@manypkg/get-packages@1.1.3': 440 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==, tarball: https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz} 441 | 442 | '@nodelib/fs.scandir@2.1.5': 443 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, tarball: https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz} 444 | engines: {node: '>= 8'} 445 | 446 | '@nodelib/fs.stat@2.0.5': 447 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, tarball: https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz} 448 | engines: {node: '>= 8'} 449 | 450 | '@nodelib/fs.walk@1.2.8': 451 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, tarball: https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz} 452 | engines: {node: '>= 8'} 453 | 454 | '@pkgjs/parseargs@0.11.0': 455 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, tarball: https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz} 456 | engines: {node: '>=14'} 457 | 458 | '@rollup/rollup-android-arm-eabi@4.20.0': 459 | resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz} 460 | cpu: [arm] 461 | os: [android] 462 | 463 | '@rollup/rollup-android-arm64@4.20.0': 464 | resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz} 465 | cpu: [arm64] 466 | os: [android] 467 | 468 | '@rollup/rollup-darwin-arm64@4.20.0': 469 | resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz} 470 | cpu: [arm64] 471 | os: [darwin] 472 | 473 | '@rollup/rollup-darwin-x64@4.20.0': 474 | resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz} 475 | cpu: [x64] 476 | os: [darwin] 477 | 478 | '@rollup/rollup-linux-arm-gnueabihf@4.20.0': 479 | resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz} 480 | cpu: [arm] 481 | os: [linux] 482 | 483 | '@rollup/rollup-linux-arm-musleabihf@4.20.0': 484 | resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz} 485 | cpu: [arm] 486 | os: [linux] 487 | 488 | '@rollup/rollup-linux-arm64-gnu@4.20.0': 489 | resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz} 490 | cpu: [arm64] 491 | os: [linux] 492 | 493 | '@rollup/rollup-linux-arm64-musl@4.20.0': 494 | resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz} 495 | cpu: [arm64] 496 | os: [linux] 497 | 498 | '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': 499 | resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz} 500 | cpu: [ppc64] 501 | os: [linux] 502 | 503 | '@rollup/rollup-linux-riscv64-gnu@4.20.0': 504 | resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz} 505 | cpu: [riscv64] 506 | os: [linux] 507 | 508 | '@rollup/rollup-linux-s390x-gnu@4.20.0': 509 | resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz} 510 | cpu: [s390x] 511 | os: [linux] 512 | 513 | '@rollup/rollup-linux-x64-gnu@4.20.0': 514 | resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz} 515 | cpu: [x64] 516 | os: [linux] 517 | 518 | '@rollup/rollup-linux-x64-musl@4.20.0': 519 | resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz} 520 | cpu: [x64] 521 | os: [linux] 522 | 523 | '@rollup/rollup-win32-arm64-msvc@4.20.0': 524 | resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz} 525 | cpu: [arm64] 526 | os: [win32] 527 | 528 | '@rollup/rollup-win32-ia32-msvc@4.20.0': 529 | resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz} 530 | cpu: [ia32] 531 | os: [win32] 532 | 533 | '@rollup/rollup-win32-x64-msvc@4.20.0': 534 | resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz} 535 | cpu: [x64] 536 | os: [win32] 537 | 538 | '@sinclair/typebox@0.27.8': 539 | resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==, tarball: https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz} 540 | 541 | '@types/estree@1.0.5': 542 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==, tarball: https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz} 543 | 544 | '@types/jsdom@21.1.7': 545 | resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==, tarball: https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz} 546 | 547 | '@types/node@12.20.55': 548 | resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==, tarball: https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz} 549 | 550 | '@types/node@22.2.0': 551 | resolution: {integrity: sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==, tarball: https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz} 552 | 553 | '@types/semver@7.5.8': 554 | resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==, tarball: https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz} 555 | 556 | '@types/tough-cookie@4.0.5': 557 | resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==, tarball: https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz} 558 | 559 | '@types/uuid@9.0.8': 560 | resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==, tarball: https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz} 561 | 562 | '@vitest/expect@1.6.0': 563 | resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==, tarball: https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz} 564 | 565 | '@vitest/runner@1.6.0': 566 | resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==, tarball: https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz} 567 | 568 | '@vitest/snapshot@1.6.0': 569 | resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==, tarball: https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz} 570 | 571 | '@vitest/spy@1.6.0': 572 | resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==, tarball: https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz} 573 | 574 | '@vitest/utils@1.6.0': 575 | resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==, tarball: https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz} 576 | 577 | acorn-walk@8.3.3: 578 | resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==, tarball: https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz} 579 | engines: {node: '>=0.4.0'} 580 | 581 | acorn@8.12.1: 582 | resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==, tarball: https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz} 583 | engines: {node: '>=0.4.0'} 584 | hasBin: true 585 | 586 | agent-base@7.1.1: 587 | resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==, tarball: https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz} 588 | engines: {node: '>= 14'} 589 | 590 | ansi-colors@4.1.3: 591 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, tarball: https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz} 592 | engines: {node: '>=6'} 593 | 594 | ansi-regex@5.0.1: 595 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, tarball: https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz} 596 | engines: {node: '>=8'} 597 | 598 | ansi-regex@6.0.1: 599 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==, tarball: https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz} 600 | engines: {node: '>=12'} 601 | 602 | ansi-styles@3.2.1: 603 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz} 604 | engines: {node: '>=4'} 605 | 606 | ansi-styles@4.3.0: 607 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz} 608 | engines: {node: '>=8'} 609 | 610 | ansi-styles@5.2.0: 611 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz} 612 | engines: {node: '>=10'} 613 | 614 | ansi-styles@6.2.1: 615 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz} 616 | engines: {node: '>=12'} 617 | 618 | any-promise@1.3.0: 619 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, tarball: https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz} 620 | 621 | anymatch@3.1.3: 622 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, tarball: https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz} 623 | engines: {node: '>= 8'} 624 | 625 | argparse@1.0.10: 626 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, tarball: https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz} 627 | 628 | array-union@2.1.0: 629 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, tarball: https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz} 630 | engines: {node: '>=8'} 631 | 632 | assertion-error@1.1.0: 633 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==, tarball: https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz} 634 | 635 | asynckit@0.4.0: 636 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, tarball: https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz} 637 | 638 | balanced-match@1.0.2: 639 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, tarball: https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz} 640 | 641 | better-path-resolve@1.0.0: 642 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==, tarball: https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz} 643 | engines: {node: '>=4'} 644 | 645 | bidi-js@1.0.3: 646 | resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==, tarball: https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz} 647 | 648 | binary-extensions@2.3.0: 649 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, tarball: https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz} 650 | engines: {node: '>=8'} 651 | 652 | brace-expansion@2.0.1: 653 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, tarball: https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz} 654 | 655 | braces@3.0.3: 656 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, tarball: https://registry.npmjs.org/braces/-/braces-3.0.3.tgz} 657 | engines: {node: '>=8'} 658 | 659 | bundle-require@5.0.0: 660 | resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==, tarball: https://registry.npmjs.org/bundle-require/-/bundle-require-5.0.0.tgz} 661 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 662 | peerDependencies: 663 | esbuild: '>=0.18' 664 | 665 | cac@6.7.14: 666 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==, tarball: https://registry.npmjs.org/cac/-/cac-6.7.14.tgz} 667 | engines: {node: '>=8'} 668 | 669 | chai@4.5.0: 670 | resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==, tarball: https://registry.npmjs.org/chai/-/chai-4.5.0.tgz} 671 | engines: {node: '>=4'} 672 | 673 | chalk@2.4.2: 674 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, tarball: https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz} 675 | engines: {node: '>=4'} 676 | 677 | chardet@0.7.0: 678 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==, tarball: https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz} 679 | 680 | check-error@1.0.3: 681 | resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==, tarball: https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz} 682 | 683 | chokidar@3.6.0: 684 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==, tarball: https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz} 685 | engines: {node: '>= 8.10.0'} 686 | 687 | ci-info@3.9.0: 688 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==, tarball: https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz} 689 | engines: {node: '>=8'} 690 | 691 | color-convert@1.9.3: 692 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, tarball: https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz} 693 | 694 | color-convert@2.0.1: 695 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, tarball: https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz} 696 | engines: {node: '>=7.0.0'} 697 | 698 | color-name@1.1.3: 699 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, tarball: https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz} 700 | 701 | color-name@1.1.4: 702 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, tarball: https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz} 703 | 704 | combined-stream@1.0.8: 705 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, tarball: https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz} 706 | engines: {node: '>= 0.8'} 707 | 708 | commander@4.1.1: 709 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==, tarball: https://registry.npmjs.org/commander/-/commander-4.1.1.tgz} 710 | engines: {node: '>= 6'} 711 | 712 | confbox@0.1.7: 713 | resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==, tarball: https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz} 714 | 715 | consola@3.2.3: 716 | resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==, tarball: https://registry.npmjs.org/consola/-/consola-3.2.3.tgz} 717 | engines: {node: ^14.18.0 || >=16.10.0} 718 | 719 | copy-anything@3.0.5: 720 | resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==, tarball: https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz} 721 | engines: {node: '>=12.13'} 722 | 723 | cross-spawn@5.1.0: 724 | resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==, tarball: https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz} 725 | 726 | cross-spawn@7.0.3: 727 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, tarball: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz} 728 | engines: {node: '>= 8'} 729 | 730 | css-tree@2.3.1: 731 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==, tarball: https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz} 732 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 733 | 734 | cssstyle@4.0.1: 735 | resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==, tarball: https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz} 736 | engines: {node: '>=18'} 737 | 738 | data-urls@5.0.0: 739 | resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==, tarball: https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz} 740 | engines: {node: '>=18'} 741 | 742 | dataloader@1.4.0: 743 | resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==, tarball: https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz} 744 | 745 | debug@4.3.6: 746 | resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==, tarball: https://registry.npmjs.org/debug/-/debug-4.3.6.tgz} 747 | engines: {node: '>=6.0'} 748 | peerDependencies: 749 | supports-color: '*' 750 | peerDependenciesMeta: 751 | supports-color: 752 | optional: true 753 | 754 | decimal.js@10.4.3: 755 | resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==, tarball: https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz} 756 | 757 | deep-eql@4.1.4: 758 | resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==, tarball: https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz} 759 | engines: {node: '>=6'} 760 | 761 | delayed-stream@1.0.0: 762 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, tarball: https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz} 763 | engines: {node: '>=0.4.0'} 764 | 765 | detect-indent@6.1.0: 766 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==, tarball: https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz} 767 | engines: {node: '>=8'} 768 | 769 | diff-sequences@29.6.3: 770 | resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==, tarball: https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz} 771 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 772 | 773 | dir-glob@3.0.1: 774 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, tarball: https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz} 775 | engines: {node: '>=8'} 776 | 777 | dotenv@8.6.0: 778 | resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==, tarball: https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz} 779 | engines: {node: '>=10'} 780 | 781 | eastasianwidth@0.2.0: 782 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, tarball: https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz} 783 | 784 | emoji-regex@8.0.0: 785 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, tarball: https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz} 786 | 787 | emoji-regex@9.2.2: 788 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, tarball: https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz} 789 | 790 | enquirer@2.4.1: 791 | resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==, tarball: https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz} 792 | engines: {node: '>=8.6'} 793 | 794 | entities@4.5.0: 795 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, tarball: https://registry.npmjs.org/entities/-/entities-4.5.0.tgz} 796 | engines: {node: '>=0.12'} 797 | 798 | esbuild@0.21.5: 799 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==, tarball: https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz} 800 | engines: {node: '>=12'} 801 | hasBin: true 802 | 803 | esbuild@0.23.0: 804 | resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==, tarball: https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz} 805 | engines: {node: '>=18'} 806 | hasBin: true 807 | 808 | escape-string-regexp@1.0.5: 809 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, tarball: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz} 810 | engines: {node: '>=0.8.0'} 811 | 812 | esprima@4.0.1: 813 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, tarball: https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz} 814 | engines: {node: '>=4'} 815 | hasBin: true 816 | 817 | estree-walker@3.0.3: 818 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, tarball: https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz} 819 | 820 | event-target-shim@6.0.2: 821 | resolution: {integrity: sha512-8q3LsZjRezbFZ2PN+uP+Q7pnHUMmAOziU2vA2OwoFaKIXxlxl38IylhSSgUorWu/rf4er67w0ikBqjBFk/pomA==, tarball: https://registry.npmjs.org/event-target-shim/-/event-target-shim-6.0.2.tgz} 822 | engines: {node: '>=10.13.0'} 823 | 824 | execa@5.1.1: 825 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, tarball: https://registry.npmjs.org/execa/-/execa-5.1.1.tgz} 826 | engines: {node: '>=10'} 827 | 828 | execa@8.0.1: 829 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==, tarball: https://registry.npmjs.org/execa/-/execa-8.0.1.tgz} 830 | engines: {node: '>=16.17'} 831 | 832 | extendable-error@0.1.7: 833 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==, tarball: https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz} 834 | 835 | external-editor@3.1.0: 836 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==, tarball: https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz} 837 | engines: {node: '>=4'} 838 | 839 | fast-glob@3.3.2: 840 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==, tarball: https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz} 841 | engines: {node: '>=8.6.0'} 842 | 843 | fast-safe-stringify@2.1.1: 844 | resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==, tarball: https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz} 845 | 846 | fastq@1.17.1: 847 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==, tarball: https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz} 848 | 849 | fill-range@7.1.1: 850 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, tarball: https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz} 851 | engines: {node: '>=8'} 852 | 853 | find-up@4.1.0: 854 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, tarball: https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz} 855 | engines: {node: '>=8'} 856 | 857 | find-up@5.0.0: 858 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, tarball: https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz} 859 | engines: {node: '>=10'} 860 | 861 | find-yarn-workspace-root2@1.2.16: 862 | resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==, tarball: https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz} 863 | 864 | foreground-child@3.3.0: 865 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==, tarball: https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz} 866 | engines: {node: '>=14'} 867 | 868 | form-data@4.0.0: 869 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, tarball: https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz} 870 | engines: {node: '>= 6'} 871 | 872 | fs-extra@7.0.1: 873 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==, tarball: https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz} 874 | engines: {node: '>=6 <7 || >=8'} 875 | 876 | fs-extra@8.1.0: 877 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==, tarball: https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz} 878 | engines: {node: '>=6 <7 || >=8'} 879 | 880 | fsevents@2.3.3: 881 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz} 882 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 883 | os: [darwin] 884 | 885 | get-func-name@2.0.2: 886 | resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==, tarball: https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz} 887 | 888 | get-stream@6.0.1: 889 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, tarball: https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz} 890 | engines: {node: '>=10'} 891 | 892 | get-stream@8.0.1: 893 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==, tarball: https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz} 894 | engines: {node: '>=16'} 895 | 896 | glob-parent@5.1.2: 897 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, tarball: https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz} 898 | engines: {node: '>= 6'} 899 | 900 | glob@10.4.5: 901 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==, tarball: https://registry.npmjs.org/glob/-/glob-10.4.5.tgz} 902 | hasBin: true 903 | 904 | globby@11.1.0: 905 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, tarball: https://registry.npmjs.org/globby/-/globby-11.1.0.tgz} 906 | engines: {node: '>=10'} 907 | 908 | graceful-fs@4.2.11: 909 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, tarball: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz} 910 | 911 | has-flag@3.0.0: 912 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, tarball: https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz} 913 | engines: {node: '>=4'} 914 | 915 | html-encoding-sniffer@4.0.0: 916 | resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==, tarball: https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz} 917 | engines: {node: '>=18'} 918 | 919 | http-proxy-agent@7.0.2: 920 | resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==, tarball: https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz} 921 | engines: {node: '>= 14'} 922 | 923 | https-proxy-agent@7.0.5: 924 | resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==, tarball: https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz} 925 | engines: {node: '>= 14'} 926 | 927 | human-id@1.0.2: 928 | resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==, tarball: https://registry.npmjs.org/human-id/-/human-id-1.0.2.tgz} 929 | 930 | human-signals@2.1.0: 931 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, tarball: https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz} 932 | engines: {node: '>=10.17.0'} 933 | 934 | human-signals@5.0.0: 935 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==, tarball: https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz} 936 | engines: {node: '>=16.17.0'} 937 | 938 | iconv-lite@0.4.24: 939 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, tarball: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz} 940 | engines: {node: '>=0.10.0'} 941 | 942 | iconv-lite@0.6.3: 943 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, tarball: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz} 944 | engines: {node: '>=0.10.0'} 945 | 946 | ignore@5.3.1: 947 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==, tarball: https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz} 948 | engines: {node: '>= 4'} 949 | 950 | is-binary-path@2.1.0: 951 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, tarball: https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz} 952 | engines: {node: '>=8'} 953 | 954 | is-extglob@2.1.1: 955 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, tarball: https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz} 956 | engines: {node: '>=0.10.0'} 957 | 958 | is-fullwidth-code-point@3.0.0: 959 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, tarball: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz} 960 | engines: {node: '>=8'} 961 | 962 | is-glob@4.0.3: 963 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, tarball: https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz} 964 | engines: {node: '>=0.10.0'} 965 | 966 | is-number@7.0.0: 967 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, tarball: https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz} 968 | engines: {node: '>=0.12.0'} 969 | 970 | is-potential-custom-element-name@1.0.1: 971 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==, tarball: https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz} 972 | 973 | is-stream@2.0.1: 974 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, tarball: https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz} 975 | engines: {node: '>=8'} 976 | 977 | is-stream@3.0.0: 978 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==, tarball: https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz} 979 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 980 | 981 | is-subdir@1.2.0: 982 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==, tarball: https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz} 983 | engines: {node: '>=4'} 984 | 985 | is-what@4.1.16: 986 | resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==, tarball: https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz} 987 | engines: {node: '>=12.13'} 988 | 989 | is-windows@1.0.2: 990 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==, tarball: https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz} 991 | engines: {node: '>=0.10.0'} 992 | 993 | isexe@2.0.0: 994 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, tarball: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz} 995 | 996 | isomorphic-ws@5.0.0: 997 | resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==, tarball: https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz} 998 | peerDependencies: 999 | ws: '*' 1000 | 1001 | jackspeak@3.4.3: 1002 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==, tarball: https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz} 1003 | 1004 | joycon@3.1.1: 1005 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==, tarball: https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz} 1006 | engines: {node: '>=10'} 1007 | 1008 | js-tokens@9.0.0: 1009 | resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==, tarball: https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz} 1010 | 1011 | js-yaml@3.14.1: 1012 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, tarball: https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz} 1013 | hasBin: true 1014 | 1015 | jsdom@23.2.0: 1016 | resolution: {integrity: sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==, tarball: https://registry.npmjs.org/jsdom/-/jsdom-23.2.0.tgz} 1017 | engines: {node: '>=18'} 1018 | peerDependencies: 1019 | canvas: ^2.11.2 1020 | peerDependenciesMeta: 1021 | canvas: 1022 | optional: true 1023 | 1024 | jsonfile@4.0.0: 1025 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==, tarball: https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz} 1026 | 1027 | lilconfig@3.1.2: 1028 | resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==, tarball: https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz} 1029 | engines: {node: '>=14'} 1030 | 1031 | lines-and-columns@1.2.4: 1032 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, tarball: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz} 1033 | 1034 | load-tsconfig@0.2.5: 1035 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==, tarball: https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz} 1036 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1037 | 1038 | load-yaml-file@0.2.0: 1039 | resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==, tarball: https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz} 1040 | engines: {node: '>=6'} 1041 | 1042 | local-pkg@0.5.0: 1043 | resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==, tarball: https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz} 1044 | engines: {node: '>=14'} 1045 | 1046 | locate-path@5.0.0: 1047 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, tarball: https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz} 1048 | engines: {node: '>=8'} 1049 | 1050 | locate-path@6.0.0: 1051 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, tarball: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz} 1052 | engines: {node: '>=10'} 1053 | 1054 | lodash.sortby@4.7.0: 1055 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==, tarball: https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz} 1056 | 1057 | lodash.startcase@4.4.0: 1058 | resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==, tarball: https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz} 1059 | 1060 | loupe@2.3.7: 1061 | resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==, tarball: https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz} 1062 | 1063 | lru-cache@10.4.3: 1064 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz} 1065 | 1066 | lru-cache@4.1.5: 1067 | resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz} 1068 | 1069 | magic-string@0.30.11: 1070 | resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==, tarball: https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz} 1071 | 1072 | mdn-data@2.0.30: 1073 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==, tarball: https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz} 1074 | 1075 | merge-stream@2.0.0: 1076 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, tarball: https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz} 1077 | 1078 | merge2@1.4.1: 1079 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, tarball: https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz} 1080 | engines: {node: '>= 8'} 1081 | 1082 | micromatch@4.0.7: 1083 | resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==, tarball: https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz} 1084 | engines: {node: '>=8.6'} 1085 | 1086 | mime-db@1.52.0: 1087 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, tarball: https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz} 1088 | engines: {node: '>= 0.6'} 1089 | 1090 | mime-types@2.1.35: 1091 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, tarball: https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz} 1092 | engines: {node: '>= 0.6'} 1093 | 1094 | mimic-fn@2.1.0: 1095 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, tarball: https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz} 1096 | engines: {node: '>=6'} 1097 | 1098 | mimic-fn@4.0.0: 1099 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==, tarball: https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz} 1100 | engines: {node: '>=12'} 1101 | 1102 | minimatch@9.0.5: 1103 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==, tarball: https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz} 1104 | engines: {node: '>=16 || 14 >=14.17'} 1105 | 1106 | minipass@7.1.2: 1107 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==, tarball: https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz} 1108 | engines: {node: '>=16 || 14 >=14.17'} 1109 | 1110 | mlly@1.7.1: 1111 | resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==, tarball: https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz} 1112 | 1113 | mri@1.2.0: 1114 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, tarball: https://registry.npmjs.org/mri/-/mri-1.2.0.tgz} 1115 | engines: {node: '>=4'} 1116 | 1117 | ms@2.1.2: 1118 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, tarball: https://registry.npmjs.org/ms/-/ms-2.1.2.tgz} 1119 | 1120 | mz@2.7.0: 1121 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, tarball: https://registry.npmjs.org/mz/-/mz-2.7.0.tgz} 1122 | 1123 | nanoid@3.3.7: 1124 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==, tarball: https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz} 1125 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1126 | hasBin: true 1127 | 1128 | node-fetch@2.7.0: 1129 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, tarball: https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz} 1130 | engines: {node: 4.x || >=6.0.0} 1131 | peerDependencies: 1132 | encoding: ^0.1.0 1133 | peerDependenciesMeta: 1134 | encoding: 1135 | optional: true 1136 | 1137 | normalize-path@3.0.0: 1138 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, tarball: https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz} 1139 | engines: {node: '>=0.10.0'} 1140 | 1141 | npm-run-path@4.0.1: 1142 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, tarball: https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz} 1143 | engines: {node: '>=8'} 1144 | 1145 | npm-run-path@5.3.0: 1146 | resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==, tarball: https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz} 1147 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1148 | 1149 | object-assign@4.1.1: 1150 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, tarball: https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz} 1151 | engines: {node: '>=0.10.0'} 1152 | 1153 | onetime@5.1.2: 1154 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, tarball: https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz} 1155 | engines: {node: '>=6'} 1156 | 1157 | onetime@6.0.0: 1158 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==, tarball: https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz} 1159 | engines: {node: '>=12'} 1160 | 1161 | os-tmpdir@1.0.2: 1162 | resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==, tarball: https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz} 1163 | engines: {node: '>=0.10.0'} 1164 | 1165 | outdent@0.5.0: 1166 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==, tarball: https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz} 1167 | 1168 | p-filter@2.1.0: 1169 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==, tarball: https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz} 1170 | engines: {node: '>=8'} 1171 | 1172 | p-limit@2.3.0: 1173 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, tarball: https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz} 1174 | engines: {node: '>=6'} 1175 | 1176 | p-limit@3.1.0: 1177 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, tarball: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz} 1178 | engines: {node: '>=10'} 1179 | 1180 | p-limit@5.0.0: 1181 | resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==, tarball: https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz} 1182 | engines: {node: '>=18'} 1183 | 1184 | p-locate@4.1.0: 1185 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, tarball: https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz} 1186 | engines: {node: '>=8'} 1187 | 1188 | p-locate@5.0.0: 1189 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, tarball: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz} 1190 | engines: {node: '>=10'} 1191 | 1192 | p-map@2.1.0: 1193 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==, tarball: https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz} 1194 | engines: {node: '>=6'} 1195 | 1196 | p-try@2.2.0: 1197 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, tarball: https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz} 1198 | engines: {node: '>=6'} 1199 | 1200 | package-json-from-dist@1.0.0: 1201 | resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==, tarball: https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz} 1202 | 1203 | parse5@7.1.2: 1204 | resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==, tarball: https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz} 1205 | 1206 | partysocket@0.0.25: 1207 | resolution: {integrity: sha512-1oCGA65fydX/FgdnsiBh68buOvfxuteoZVSb3Paci2kRp/7lhF0HyA8EDb5X/O6FxId1e+usPTQNRuzFEvkJbQ==, tarball: https://registry.npmjs.org/partysocket/-/partysocket-0.0.25.tgz} 1208 | 1209 | path-exists@4.0.0: 1210 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, tarball: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz} 1211 | engines: {node: '>=8'} 1212 | 1213 | path-key@3.1.1: 1214 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, tarball: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz} 1215 | engines: {node: '>=8'} 1216 | 1217 | path-key@4.0.0: 1218 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==, tarball: https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz} 1219 | engines: {node: '>=12'} 1220 | 1221 | path-scurry@1.11.1: 1222 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==, tarball: https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz} 1223 | engines: {node: '>=16 || 14 >=14.18'} 1224 | 1225 | path-type@4.0.0: 1226 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, tarball: https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz} 1227 | engines: {node: '>=8'} 1228 | 1229 | pathe@1.1.2: 1230 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==, tarball: https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz} 1231 | 1232 | pathval@1.1.1: 1233 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==, tarball: https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz} 1234 | 1235 | picocolors@1.0.1: 1236 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==, tarball: https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz} 1237 | 1238 | picomatch@2.3.1: 1239 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, tarball: https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz} 1240 | engines: {node: '>=8.6'} 1241 | 1242 | pify@4.0.1: 1243 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, tarball: https://registry.npmjs.org/pify/-/pify-4.0.1.tgz} 1244 | engines: {node: '>=6'} 1245 | 1246 | pirates@4.0.6: 1247 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==, tarball: https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz} 1248 | engines: {node: '>= 6'} 1249 | 1250 | pkg-dir@4.2.0: 1251 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, tarball: https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz} 1252 | engines: {node: '>=8'} 1253 | 1254 | pkg-types@1.1.3: 1255 | resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==, tarball: https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.3.tgz} 1256 | 1257 | postcss-load-config@6.0.1: 1258 | resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==, tarball: https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz} 1259 | engines: {node: '>= 18'} 1260 | peerDependencies: 1261 | jiti: '>=1.21.0' 1262 | postcss: '>=8.0.9' 1263 | tsx: ^4.8.1 1264 | yaml: ^2.4.2 1265 | peerDependenciesMeta: 1266 | jiti: 1267 | optional: true 1268 | postcss: 1269 | optional: true 1270 | tsx: 1271 | optional: true 1272 | yaml: 1273 | optional: true 1274 | 1275 | postcss@8.4.41: 1276 | resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==, tarball: https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz} 1277 | engines: {node: ^10 || ^12 || >=14} 1278 | 1279 | preferred-pm@3.1.4: 1280 | resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==, tarball: https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.1.4.tgz} 1281 | engines: {node: '>=10'} 1282 | 1283 | prettier@2.8.8: 1284 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, tarball: https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz} 1285 | engines: {node: '>=10.13.0'} 1286 | hasBin: true 1287 | 1288 | pretty-format@29.7.0: 1289 | resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==, tarball: https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz} 1290 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1291 | 1292 | pseudomap@1.0.2: 1293 | resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==, tarball: https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz} 1294 | 1295 | psl@1.9.0: 1296 | resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==, tarball: https://registry.npmjs.org/psl/-/psl-1.9.0.tgz} 1297 | 1298 | punycode@2.3.1: 1299 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, tarball: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz} 1300 | engines: {node: '>=6'} 1301 | 1302 | querystringify@2.2.0: 1303 | resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==, tarball: https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz} 1304 | 1305 | queue-microtask@1.2.3: 1306 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, tarball: https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz} 1307 | 1308 | react-is@18.3.1: 1309 | resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==, tarball: https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz} 1310 | 1311 | read-yaml-file@1.1.0: 1312 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==, tarball: https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz} 1313 | engines: {node: '>=6'} 1314 | 1315 | readdirp@3.6.0: 1316 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, tarball: https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz} 1317 | engines: {node: '>=8.10.0'} 1318 | 1319 | regenerator-runtime@0.14.1: 1320 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==, tarball: https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz} 1321 | 1322 | require-from-string@2.0.2: 1323 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, tarball: https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz} 1324 | engines: {node: '>=0.10.0'} 1325 | 1326 | requires-port@1.0.0: 1327 | resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==, tarball: https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz} 1328 | 1329 | resolve-from@5.0.0: 1330 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, tarball: https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz} 1331 | engines: {node: '>=8'} 1332 | 1333 | reusify@1.0.4: 1334 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, tarball: https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz} 1335 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1336 | 1337 | rollup@4.20.0: 1338 | resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==, tarball: https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz} 1339 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1340 | hasBin: true 1341 | 1342 | rrweb-cssom@0.6.0: 1343 | resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==, tarball: https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz} 1344 | 1345 | run-parallel@1.2.0: 1346 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, tarball: https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz} 1347 | 1348 | safe-stable-stringify@2.4.3: 1349 | resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==, tarball: https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz} 1350 | engines: {node: '>=10'} 1351 | 1352 | safer-buffer@2.1.2: 1353 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, tarball: https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz} 1354 | 1355 | saxes@6.0.0: 1356 | resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==, tarball: https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz} 1357 | engines: {node: '>=v12.22.7'} 1358 | 1359 | semver@7.6.3: 1360 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==, tarball: https://registry.npmjs.org/semver/-/semver-7.6.3.tgz} 1361 | engines: {node: '>=10'} 1362 | hasBin: true 1363 | 1364 | shebang-command@1.2.0: 1365 | resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==, tarball: https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz} 1366 | engines: {node: '>=0.10.0'} 1367 | 1368 | shebang-command@2.0.0: 1369 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, tarball: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz} 1370 | engines: {node: '>=8'} 1371 | 1372 | shebang-regex@1.0.0: 1373 | resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==, tarball: https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz} 1374 | engines: {node: '>=0.10.0'} 1375 | 1376 | shebang-regex@3.0.0: 1377 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, tarball: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz} 1378 | engines: {node: '>=8'} 1379 | 1380 | siginfo@2.0.0: 1381 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==, tarball: https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz} 1382 | 1383 | signal-exit@3.0.7: 1384 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, tarball: https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz} 1385 | 1386 | signal-exit@4.1.0: 1387 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, tarball: https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz} 1388 | engines: {node: '>=14'} 1389 | 1390 | slash@3.0.0: 1391 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, tarball: https://registry.npmjs.org/slash/-/slash-3.0.0.tgz} 1392 | engines: {node: '>=8'} 1393 | 1394 | source-map-js@1.2.0: 1395 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==, tarball: https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz} 1396 | engines: {node: '>=0.10.0'} 1397 | 1398 | source-map@0.8.0-beta.0: 1399 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==, tarball: https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz} 1400 | engines: {node: '>= 8'} 1401 | 1402 | spawndamnit@2.0.0: 1403 | resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==, tarball: https://registry.npmjs.org/spawndamnit/-/spawndamnit-2.0.0.tgz} 1404 | 1405 | sprintf-js@1.0.3: 1406 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, tarball: https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz} 1407 | 1408 | stackback@0.0.2: 1409 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==, tarball: https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz} 1410 | 1411 | std-env@3.7.0: 1412 | resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==, tarball: https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz} 1413 | 1414 | string-width@4.2.3: 1415 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, tarball: https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz} 1416 | engines: {node: '>=8'} 1417 | 1418 | string-width@5.1.2: 1419 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, tarball: https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz} 1420 | engines: {node: '>=12'} 1421 | 1422 | strip-ansi@6.0.1: 1423 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, tarball: https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz} 1424 | engines: {node: '>=8'} 1425 | 1426 | strip-ansi@7.1.0: 1427 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, tarball: https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz} 1428 | engines: {node: '>=12'} 1429 | 1430 | strip-bom@3.0.0: 1431 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, tarball: https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz} 1432 | engines: {node: '>=4'} 1433 | 1434 | strip-final-newline@2.0.0: 1435 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, tarball: https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz} 1436 | engines: {node: '>=6'} 1437 | 1438 | strip-final-newline@3.0.0: 1439 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==, tarball: https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz} 1440 | engines: {node: '>=12'} 1441 | 1442 | strip-literal@2.1.0: 1443 | resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==, tarball: https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz} 1444 | 1445 | sucrase@3.35.0: 1446 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==, tarball: https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz} 1447 | engines: {node: '>=16 || 14 >=14.17'} 1448 | hasBin: true 1449 | 1450 | superjson@1.13.3: 1451 | resolution: {integrity: sha512-mJiVjfd2vokfDxsQPOwJ/PtanO87LhpYY88ubI5dUB1Ab58Txbyje3+jpm+/83R/fevaq/107NNhtYBLuoTrFg==, tarball: https://registry.npmjs.org/superjson/-/superjson-1.13.3.tgz} 1452 | engines: {node: '>=10'} 1453 | 1454 | supports-color@5.5.0: 1455 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, tarball: https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz} 1456 | engines: {node: '>=4'} 1457 | 1458 | symbol-tree@3.2.4: 1459 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==, tarball: https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz} 1460 | 1461 | term-size@2.2.1: 1462 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==, tarball: https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz} 1463 | engines: {node: '>=8'} 1464 | 1465 | thenify-all@1.6.0: 1466 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==, tarball: https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz} 1467 | engines: {node: '>=0.8'} 1468 | 1469 | thenify@3.3.1: 1470 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, tarball: https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz} 1471 | 1472 | tinybench@2.9.0: 1473 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==, tarball: https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz} 1474 | 1475 | tinypool@0.8.4: 1476 | resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==, tarball: https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz} 1477 | engines: {node: '>=14.0.0'} 1478 | 1479 | tinyspy@2.2.1: 1480 | resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==, tarball: https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz} 1481 | engines: {node: '>=14.0.0'} 1482 | 1483 | tmp@0.0.33: 1484 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==, tarball: https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz} 1485 | engines: {node: '>=0.6.0'} 1486 | 1487 | to-regex-range@5.0.1: 1488 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, tarball: https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz} 1489 | engines: {node: '>=8.0'} 1490 | 1491 | tough-cookie@4.1.4: 1492 | resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==, tarball: https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz} 1493 | engines: {node: '>=6'} 1494 | 1495 | tr46@0.0.3: 1496 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, tarball: https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz} 1497 | 1498 | tr46@1.0.1: 1499 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==, tarball: https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz} 1500 | 1501 | tr46@5.0.0: 1502 | resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==, tarball: https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz} 1503 | engines: {node: '>=18'} 1504 | 1505 | tree-kill@1.2.2: 1506 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==, tarball: https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz} 1507 | hasBin: true 1508 | 1509 | ts-interface-checker@0.1.13: 1510 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, tarball: https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz} 1511 | 1512 | tsup@8.2.4: 1513 | resolution: {integrity: sha512-akpCPePnBnC/CXgRrcy72ZSntgIEUa1jN0oJbbvpALWKNOz1B7aM+UVDWGRGIO/T/PZugAESWDJUAb5FD48o8Q==, tarball: https://registry.npmjs.org/tsup/-/tsup-8.2.4.tgz} 1514 | engines: {node: '>=18'} 1515 | hasBin: true 1516 | peerDependencies: 1517 | '@microsoft/api-extractor': ^7.36.0 1518 | '@swc/core': ^1 1519 | postcss: ^8.4.12 1520 | typescript: '>=4.5.0' 1521 | peerDependenciesMeta: 1522 | '@microsoft/api-extractor': 1523 | optional: true 1524 | '@swc/core': 1525 | optional: true 1526 | postcss: 1527 | optional: true 1528 | typescript: 1529 | optional: true 1530 | 1531 | type-detect@4.1.0: 1532 | resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==, tarball: https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz} 1533 | engines: {node: '>=4'} 1534 | 1535 | typescript@5.5.4: 1536 | resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==, tarball: https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz} 1537 | engines: {node: '>=14.17'} 1538 | hasBin: true 1539 | 1540 | ufo@1.5.4: 1541 | resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==, tarball: https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz} 1542 | 1543 | undici-types@6.13.0: 1544 | resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==, tarball: https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz} 1545 | 1546 | universalify@0.1.2: 1547 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==, tarball: https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz} 1548 | engines: {node: '>= 4.0.0'} 1549 | 1550 | universalify@0.2.0: 1551 | resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==, tarball: https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz} 1552 | engines: {node: '>= 4.0.0'} 1553 | 1554 | url-parse@1.5.10: 1555 | resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==, tarball: https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz} 1556 | 1557 | uuid@9.0.1: 1558 | resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==, tarball: https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz} 1559 | hasBin: true 1560 | 1561 | vite-node@1.6.0: 1562 | resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==, tarball: https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz} 1563 | engines: {node: ^18.0.0 || >=20.0.0} 1564 | hasBin: true 1565 | 1566 | vite@5.4.0: 1567 | resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==, tarball: https://registry.npmjs.org/vite/-/vite-5.4.0.tgz} 1568 | engines: {node: ^18.0.0 || >=20.0.0} 1569 | hasBin: true 1570 | peerDependencies: 1571 | '@types/node': ^18.0.0 || >=20.0.0 1572 | less: '*' 1573 | lightningcss: ^1.21.0 1574 | sass: '*' 1575 | sass-embedded: '*' 1576 | stylus: '*' 1577 | sugarss: '*' 1578 | terser: ^5.4.0 1579 | peerDependenciesMeta: 1580 | '@types/node': 1581 | optional: true 1582 | less: 1583 | optional: true 1584 | lightningcss: 1585 | optional: true 1586 | sass: 1587 | optional: true 1588 | sass-embedded: 1589 | optional: true 1590 | stylus: 1591 | optional: true 1592 | sugarss: 1593 | optional: true 1594 | terser: 1595 | optional: true 1596 | 1597 | vitest@1.6.0: 1598 | resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==, tarball: https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz} 1599 | engines: {node: ^18.0.0 || >=20.0.0} 1600 | hasBin: true 1601 | peerDependencies: 1602 | '@edge-runtime/vm': '*' 1603 | '@types/node': ^18.0.0 || >=20.0.0 1604 | '@vitest/browser': 1.6.0 1605 | '@vitest/ui': 1.6.0 1606 | happy-dom: '*' 1607 | jsdom: '*' 1608 | peerDependenciesMeta: 1609 | '@edge-runtime/vm': 1610 | optional: true 1611 | '@types/node': 1612 | optional: true 1613 | '@vitest/browser': 1614 | optional: true 1615 | '@vitest/ui': 1616 | optional: true 1617 | happy-dom: 1618 | optional: true 1619 | jsdom: 1620 | optional: true 1621 | 1622 | w3c-xmlserializer@5.0.0: 1623 | resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==, tarball: https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz} 1624 | engines: {node: '>=18'} 1625 | 1626 | webidl-conversions@3.0.1: 1627 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, tarball: https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz} 1628 | 1629 | webidl-conversions@4.0.2: 1630 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==, tarball: https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz} 1631 | 1632 | webidl-conversions@7.0.0: 1633 | resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==, tarball: https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz} 1634 | engines: {node: '>=12'} 1635 | 1636 | whatwg-encoding@3.1.1: 1637 | resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==, tarball: https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz} 1638 | engines: {node: '>=18'} 1639 | 1640 | whatwg-mimetype@4.0.0: 1641 | resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==, tarball: https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz} 1642 | engines: {node: '>=18'} 1643 | 1644 | whatwg-url@14.0.0: 1645 | resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==, tarball: https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz} 1646 | engines: {node: '>=18'} 1647 | 1648 | whatwg-url@5.0.0: 1649 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, tarball: https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz} 1650 | 1651 | whatwg-url@7.1.0: 1652 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==, tarball: https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz} 1653 | 1654 | which-pm@2.2.0: 1655 | resolution: {integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==, tarball: https://registry.npmjs.org/which-pm/-/which-pm-2.2.0.tgz} 1656 | engines: {node: '>=8.15'} 1657 | 1658 | which@1.3.1: 1659 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==, tarball: https://registry.npmjs.org/which/-/which-1.3.1.tgz} 1660 | hasBin: true 1661 | 1662 | which@2.0.2: 1663 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, tarball: https://registry.npmjs.org/which/-/which-2.0.2.tgz} 1664 | engines: {node: '>= 8'} 1665 | hasBin: true 1666 | 1667 | why-is-node-running@2.3.0: 1668 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==, tarball: https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz} 1669 | engines: {node: '>=8'} 1670 | hasBin: true 1671 | 1672 | wrap-ansi@7.0.0: 1673 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, tarball: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz} 1674 | engines: {node: '>=10'} 1675 | 1676 | wrap-ansi@8.1.0: 1677 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, tarball: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz} 1678 | engines: {node: '>=12'} 1679 | 1680 | ws@8.18.0: 1681 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==, tarball: https://registry.npmjs.org/ws/-/ws-8.18.0.tgz} 1682 | engines: {node: '>=10.0.0'} 1683 | peerDependencies: 1684 | bufferutil: ^4.0.1 1685 | utf-8-validate: '>=5.0.2' 1686 | peerDependenciesMeta: 1687 | bufferutil: 1688 | optional: true 1689 | utf-8-validate: 1690 | optional: true 1691 | 1692 | xml-name-validator@5.0.0: 1693 | resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==, tarball: https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz} 1694 | engines: {node: '>=18'} 1695 | 1696 | xmlchars@2.2.0: 1697 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==, tarball: https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz} 1698 | 1699 | xstate@5.18.2: 1700 | resolution: {integrity: sha512-hab5VOe29D0agy8/7dH1lGw+7kilRQyXwpaChoMu4fe6rDP+nsHYhDYKfS2O4iXE7myA98TW6qMEudj/8NXEkA==, tarball: https://registry.npmjs.org/xstate/-/xstate-5.18.2.tgz} 1701 | 1702 | yallist@2.1.2: 1703 | resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==, tarball: https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz} 1704 | 1705 | yaml@2.4.5: 1706 | resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==, tarball: https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz} 1707 | engines: {node: '>= 14'} 1708 | hasBin: true 1709 | 1710 | yocto-queue@0.1.0: 1711 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, tarball: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz} 1712 | engines: {node: '>=10'} 1713 | 1714 | yocto-queue@1.1.1: 1715 | resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==, tarball: https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz} 1716 | engines: {node: '>=12.20'} 1717 | 1718 | snapshots: 1719 | 1720 | '@asamuzakjp/dom-selector@2.0.2': 1721 | dependencies: 1722 | bidi-js: 1.0.3 1723 | css-tree: 2.3.1 1724 | is-potential-custom-element-name: 1.0.1 1725 | 1726 | '@babel/runtime@7.25.0': 1727 | dependencies: 1728 | regenerator-runtime: 0.14.1 1729 | 1730 | '@changesets/apply-release-plan@7.0.4': 1731 | dependencies: 1732 | '@babel/runtime': 7.25.0 1733 | '@changesets/config': 3.0.2 1734 | '@changesets/get-version-range-type': 0.4.0 1735 | '@changesets/git': 3.0.0 1736 | '@changesets/should-skip-package': 0.1.0 1737 | '@changesets/types': 6.0.0 1738 | '@manypkg/get-packages': 1.1.3 1739 | detect-indent: 6.1.0 1740 | fs-extra: 7.0.1 1741 | lodash.startcase: 4.4.0 1742 | outdent: 0.5.0 1743 | prettier: 2.8.8 1744 | resolve-from: 5.0.0 1745 | semver: 7.6.3 1746 | 1747 | '@changesets/assemble-release-plan@6.0.3': 1748 | dependencies: 1749 | '@babel/runtime': 7.25.0 1750 | '@changesets/errors': 0.2.0 1751 | '@changesets/get-dependents-graph': 2.1.1 1752 | '@changesets/should-skip-package': 0.1.0 1753 | '@changesets/types': 6.0.0 1754 | '@manypkg/get-packages': 1.1.3 1755 | semver: 7.6.3 1756 | 1757 | '@changesets/changelog-git@0.2.0': 1758 | dependencies: 1759 | '@changesets/types': 6.0.0 1760 | 1761 | '@changesets/changelog-github@0.5.0': 1762 | dependencies: 1763 | '@changesets/get-github-info': 0.6.0 1764 | '@changesets/types': 6.0.0 1765 | dotenv: 8.6.0 1766 | transitivePeerDependencies: 1767 | - encoding 1768 | 1769 | '@changesets/cli@2.27.7': 1770 | dependencies: 1771 | '@babel/runtime': 7.25.0 1772 | '@changesets/apply-release-plan': 7.0.4 1773 | '@changesets/assemble-release-plan': 6.0.3 1774 | '@changesets/changelog-git': 0.2.0 1775 | '@changesets/config': 3.0.2 1776 | '@changesets/errors': 0.2.0 1777 | '@changesets/get-dependents-graph': 2.1.1 1778 | '@changesets/get-release-plan': 4.0.3 1779 | '@changesets/git': 3.0.0 1780 | '@changesets/logger': 0.1.0 1781 | '@changesets/pre': 2.0.0 1782 | '@changesets/read': 0.6.0 1783 | '@changesets/should-skip-package': 0.1.0 1784 | '@changesets/types': 6.0.0 1785 | '@changesets/write': 0.3.1 1786 | '@manypkg/get-packages': 1.1.3 1787 | '@types/semver': 7.5.8 1788 | ansi-colors: 4.1.3 1789 | chalk: 2.4.2 1790 | ci-info: 3.9.0 1791 | enquirer: 2.4.1 1792 | external-editor: 3.1.0 1793 | fs-extra: 7.0.1 1794 | human-id: 1.0.2 1795 | mri: 1.2.0 1796 | outdent: 0.5.0 1797 | p-limit: 2.3.0 1798 | preferred-pm: 3.1.4 1799 | resolve-from: 5.0.0 1800 | semver: 7.6.3 1801 | spawndamnit: 2.0.0 1802 | term-size: 2.2.1 1803 | 1804 | '@changesets/config@3.0.2': 1805 | dependencies: 1806 | '@changesets/errors': 0.2.0 1807 | '@changesets/get-dependents-graph': 2.1.1 1808 | '@changesets/logger': 0.1.0 1809 | '@changesets/types': 6.0.0 1810 | '@manypkg/get-packages': 1.1.3 1811 | fs-extra: 7.0.1 1812 | micromatch: 4.0.7 1813 | 1814 | '@changesets/errors@0.2.0': 1815 | dependencies: 1816 | extendable-error: 0.1.7 1817 | 1818 | '@changesets/get-dependents-graph@2.1.1': 1819 | dependencies: 1820 | '@changesets/types': 6.0.0 1821 | '@manypkg/get-packages': 1.1.3 1822 | chalk: 2.4.2 1823 | fs-extra: 7.0.1 1824 | semver: 7.6.3 1825 | 1826 | '@changesets/get-github-info@0.6.0': 1827 | dependencies: 1828 | dataloader: 1.4.0 1829 | node-fetch: 2.7.0 1830 | transitivePeerDependencies: 1831 | - encoding 1832 | 1833 | '@changesets/get-release-plan@4.0.3': 1834 | dependencies: 1835 | '@babel/runtime': 7.25.0 1836 | '@changesets/assemble-release-plan': 6.0.3 1837 | '@changesets/config': 3.0.2 1838 | '@changesets/pre': 2.0.0 1839 | '@changesets/read': 0.6.0 1840 | '@changesets/types': 6.0.0 1841 | '@manypkg/get-packages': 1.1.3 1842 | 1843 | '@changesets/get-version-range-type@0.4.0': {} 1844 | 1845 | '@changesets/git@3.0.0': 1846 | dependencies: 1847 | '@babel/runtime': 7.25.0 1848 | '@changesets/errors': 0.2.0 1849 | '@changesets/types': 6.0.0 1850 | '@manypkg/get-packages': 1.1.3 1851 | is-subdir: 1.2.0 1852 | micromatch: 4.0.7 1853 | spawndamnit: 2.0.0 1854 | 1855 | '@changesets/logger@0.1.0': 1856 | dependencies: 1857 | chalk: 2.4.2 1858 | 1859 | '@changesets/parse@0.4.0': 1860 | dependencies: 1861 | '@changesets/types': 6.0.0 1862 | js-yaml: 3.14.1 1863 | 1864 | '@changesets/pre@2.0.0': 1865 | dependencies: 1866 | '@babel/runtime': 7.25.0 1867 | '@changesets/errors': 0.2.0 1868 | '@changesets/types': 6.0.0 1869 | '@manypkg/get-packages': 1.1.3 1870 | fs-extra: 7.0.1 1871 | 1872 | '@changesets/read@0.6.0': 1873 | dependencies: 1874 | '@babel/runtime': 7.25.0 1875 | '@changesets/git': 3.0.0 1876 | '@changesets/logger': 0.1.0 1877 | '@changesets/parse': 0.4.0 1878 | '@changesets/types': 6.0.0 1879 | chalk: 2.4.2 1880 | fs-extra: 7.0.1 1881 | p-filter: 2.1.0 1882 | 1883 | '@changesets/should-skip-package@0.1.0': 1884 | dependencies: 1885 | '@babel/runtime': 7.25.0 1886 | '@changesets/types': 6.0.0 1887 | '@manypkg/get-packages': 1.1.3 1888 | 1889 | '@changesets/types@4.1.0': {} 1890 | 1891 | '@changesets/types@6.0.0': {} 1892 | 1893 | '@changesets/write@0.3.1': 1894 | dependencies: 1895 | '@babel/runtime': 7.25.0 1896 | '@changesets/types': 6.0.0 1897 | fs-extra: 7.0.1 1898 | human-id: 1.0.2 1899 | prettier: 2.8.8 1900 | 1901 | '@esbuild/aix-ppc64@0.21.5': 1902 | optional: true 1903 | 1904 | '@esbuild/aix-ppc64@0.23.0': 1905 | optional: true 1906 | 1907 | '@esbuild/android-arm64@0.21.5': 1908 | optional: true 1909 | 1910 | '@esbuild/android-arm64@0.23.0': 1911 | optional: true 1912 | 1913 | '@esbuild/android-arm@0.21.5': 1914 | optional: true 1915 | 1916 | '@esbuild/android-arm@0.23.0': 1917 | optional: true 1918 | 1919 | '@esbuild/android-x64@0.21.5': 1920 | optional: true 1921 | 1922 | '@esbuild/android-x64@0.23.0': 1923 | optional: true 1924 | 1925 | '@esbuild/darwin-arm64@0.21.5': 1926 | optional: true 1927 | 1928 | '@esbuild/darwin-arm64@0.23.0': 1929 | optional: true 1930 | 1931 | '@esbuild/darwin-x64@0.21.5': 1932 | optional: true 1933 | 1934 | '@esbuild/darwin-x64@0.23.0': 1935 | optional: true 1936 | 1937 | '@esbuild/freebsd-arm64@0.21.5': 1938 | optional: true 1939 | 1940 | '@esbuild/freebsd-arm64@0.23.0': 1941 | optional: true 1942 | 1943 | '@esbuild/freebsd-x64@0.21.5': 1944 | optional: true 1945 | 1946 | '@esbuild/freebsd-x64@0.23.0': 1947 | optional: true 1948 | 1949 | '@esbuild/linux-arm64@0.21.5': 1950 | optional: true 1951 | 1952 | '@esbuild/linux-arm64@0.23.0': 1953 | optional: true 1954 | 1955 | '@esbuild/linux-arm@0.21.5': 1956 | optional: true 1957 | 1958 | '@esbuild/linux-arm@0.23.0': 1959 | optional: true 1960 | 1961 | '@esbuild/linux-ia32@0.21.5': 1962 | optional: true 1963 | 1964 | '@esbuild/linux-ia32@0.23.0': 1965 | optional: true 1966 | 1967 | '@esbuild/linux-loong64@0.21.5': 1968 | optional: true 1969 | 1970 | '@esbuild/linux-loong64@0.23.0': 1971 | optional: true 1972 | 1973 | '@esbuild/linux-mips64el@0.21.5': 1974 | optional: true 1975 | 1976 | '@esbuild/linux-mips64el@0.23.0': 1977 | optional: true 1978 | 1979 | '@esbuild/linux-ppc64@0.21.5': 1980 | optional: true 1981 | 1982 | '@esbuild/linux-ppc64@0.23.0': 1983 | optional: true 1984 | 1985 | '@esbuild/linux-riscv64@0.21.5': 1986 | optional: true 1987 | 1988 | '@esbuild/linux-riscv64@0.23.0': 1989 | optional: true 1990 | 1991 | '@esbuild/linux-s390x@0.21.5': 1992 | optional: true 1993 | 1994 | '@esbuild/linux-s390x@0.23.0': 1995 | optional: true 1996 | 1997 | '@esbuild/linux-x64@0.21.5': 1998 | optional: true 1999 | 2000 | '@esbuild/linux-x64@0.23.0': 2001 | optional: true 2002 | 2003 | '@esbuild/netbsd-x64@0.21.5': 2004 | optional: true 2005 | 2006 | '@esbuild/netbsd-x64@0.23.0': 2007 | optional: true 2008 | 2009 | '@esbuild/openbsd-arm64@0.23.0': 2010 | optional: true 2011 | 2012 | '@esbuild/openbsd-x64@0.21.5': 2013 | optional: true 2014 | 2015 | '@esbuild/openbsd-x64@0.23.0': 2016 | optional: true 2017 | 2018 | '@esbuild/sunos-x64@0.21.5': 2019 | optional: true 2020 | 2021 | '@esbuild/sunos-x64@0.23.0': 2022 | optional: true 2023 | 2024 | '@esbuild/win32-arm64@0.21.5': 2025 | optional: true 2026 | 2027 | '@esbuild/win32-arm64@0.23.0': 2028 | optional: true 2029 | 2030 | '@esbuild/win32-ia32@0.21.5': 2031 | optional: true 2032 | 2033 | '@esbuild/win32-ia32@0.23.0': 2034 | optional: true 2035 | 2036 | '@esbuild/win32-x64@0.21.5': 2037 | optional: true 2038 | 2039 | '@esbuild/win32-x64@0.23.0': 2040 | optional: true 2041 | 2042 | '@isaacs/cliui@8.0.2': 2043 | dependencies: 2044 | string-width: 5.1.2 2045 | string-width-cjs: string-width@4.2.3 2046 | strip-ansi: 7.1.0 2047 | strip-ansi-cjs: strip-ansi@6.0.1 2048 | wrap-ansi: 8.1.0 2049 | wrap-ansi-cjs: wrap-ansi@7.0.0 2050 | 2051 | '@jest/schemas@29.6.3': 2052 | dependencies: 2053 | '@sinclair/typebox': 0.27.8 2054 | 2055 | '@jridgewell/gen-mapping@0.3.5': 2056 | dependencies: 2057 | '@jridgewell/set-array': 1.2.1 2058 | '@jridgewell/sourcemap-codec': 1.5.0 2059 | '@jridgewell/trace-mapping': 0.3.25 2060 | 2061 | '@jridgewell/resolve-uri@3.1.2': {} 2062 | 2063 | '@jridgewell/set-array@1.2.1': {} 2064 | 2065 | '@jridgewell/sourcemap-codec@1.5.0': {} 2066 | 2067 | '@jridgewell/trace-mapping@0.3.25': 2068 | dependencies: 2069 | '@jridgewell/resolve-uri': 3.1.2 2070 | '@jridgewell/sourcemap-codec': 1.5.0 2071 | 2072 | '@manypkg/find-root@1.1.0': 2073 | dependencies: 2074 | '@babel/runtime': 7.25.0 2075 | '@types/node': 12.20.55 2076 | find-up: 4.1.0 2077 | fs-extra: 8.1.0 2078 | 2079 | '@manypkg/get-packages@1.1.3': 2080 | dependencies: 2081 | '@babel/runtime': 7.25.0 2082 | '@changesets/types': 4.1.0 2083 | '@manypkg/find-root': 1.1.0 2084 | fs-extra: 8.1.0 2085 | globby: 11.1.0 2086 | read-yaml-file: 1.1.0 2087 | 2088 | '@nodelib/fs.scandir@2.1.5': 2089 | dependencies: 2090 | '@nodelib/fs.stat': 2.0.5 2091 | run-parallel: 1.2.0 2092 | 2093 | '@nodelib/fs.stat@2.0.5': {} 2094 | 2095 | '@nodelib/fs.walk@1.2.8': 2096 | dependencies: 2097 | '@nodelib/fs.scandir': 2.1.5 2098 | fastq: 1.17.1 2099 | 2100 | '@pkgjs/parseargs@0.11.0': 2101 | optional: true 2102 | 2103 | '@rollup/rollup-android-arm-eabi@4.20.0': 2104 | optional: true 2105 | 2106 | '@rollup/rollup-android-arm64@4.20.0': 2107 | optional: true 2108 | 2109 | '@rollup/rollup-darwin-arm64@4.20.0': 2110 | optional: true 2111 | 2112 | '@rollup/rollup-darwin-x64@4.20.0': 2113 | optional: true 2114 | 2115 | '@rollup/rollup-linux-arm-gnueabihf@4.20.0': 2116 | optional: true 2117 | 2118 | '@rollup/rollup-linux-arm-musleabihf@4.20.0': 2119 | optional: true 2120 | 2121 | '@rollup/rollup-linux-arm64-gnu@4.20.0': 2122 | optional: true 2123 | 2124 | '@rollup/rollup-linux-arm64-musl@4.20.0': 2125 | optional: true 2126 | 2127 | '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': 2128 | optional: true 2129 | 2130 | '@rollup/rollup-linux-riscv64-gnu@4.20.0': 2131 | optional: true 2132 | 2133 | '@rollup/rollup-linux-s390x-gnu@4.20.0': 2134 | optional: true 2135 | 2136 | '@rollup/rollup-linux-x64-gnu@4.20.0': 2137 | optional: true 2138 | 2139 | '@rollup/rollup-linux-x64-musl@4.20.0': 2140 | optional: true 2141 | 2142 | '@rollup/rollup-win32-arm64-msvc@4.20.0': 2143 | optional: true 2144 | 2145 | '@rollup/rollup-win32-ia32-msvc@4.20.0': 2146 | optional: true 2147 | 2148 | '@rollup/rollup-win32-x64-msvc@4.20.0': 2149 | optional: true 2150 | 2151 | '@sinclair/typebox@0.27.8': {} 2152 | 2153 | '@types/estree@1.0.5': {} 2154 | 2155 | '@types/jsdom@21.1.7': 2156 | dependencies: 2157 | '@types/node': 22.2.0 2158 | '@types/tough-cookie': 4.0.5 2159 | parse5: 7.1.2 2160 | 2161 | '@types/node@12.20.55': {} 2162 | 2163 | '@types/node@22.2.0': 2164 | dependencies: 2165 | undici-types: 6.13.0 2166 | 2167 | '@types/semver@7.5.8': {} 2168 | 2169 | '@types/tough-cookie@4.0.5': {} 2170 | 2171 | '@types/uuid@9.0.8': {} 2172 | 2173 | '@vitest/expect@1.6.0': 2174 | dependencies: 2175 | '@vitest/spy': 1.6.0 2176 | '@vitest/utils': 1.6.0 2177 | chai: 4.5.0 2178 | 2179 | '@vitest/runner@1.6.0': 2180 | dependencies: 2181 | '@vitest/utils': 1.6.0 2182 | p-limit: 5.0.0 2183 | pathe: 1.1.2 2184 | 2185 | '@vitest/snapshot@1.6.0': 2186 | dependencies: 2187 | magic-string: 0.30.11 2188 | pathe: 1.1.2 2189 | pretty-format: 29.7.0 2190 | 2191 | '@vitest/spy@1.6.0': 2192 | dependencies: 2193 | tinyspy: 2.2.1 2194 | 2195 | '@vitest/utils@1.6.0': 2196 | dependencies: 2197 | diff-sequences: 29.6.3 2198 | estree-walker: 3.0.3 2199 | loupe: 2.3.7 2200 | pretty-format: 29.7.0 2201 | 2202 | acorn-walk@8.3.3: 2203 | dependencies: 2204 | acorn: 8.12.1 2205 | 2206 | acorn@8.12.1: {} 2207 | 2208 | agent-base@7.1.1: 2209 | dependencies: 2210 | debug: 4.3.6 2211 | transitivePeerDependencies: 2212 | - supports-color 2213 | 2214 | ansi-colors@4.1.3: {} 2215 | 2216 | ansi-regex@5.0.1: {} 2217 | 2218 | ansi-regex@6.0.1: {} 2219 | 2220 | ansi-styles@3.2.1: 2221 | dependencies: 2222 | color-convert: 1.9.3 2223 | 2224 | ansi-styles@4.3.0: 2225 | dependencies: 2226 | color-convert: 2.0.1 2227 | 2228 | ansi-styles@5.2.0: {} 2229 | 2230 | ansi-styles@6.2.1: {} 2231 | 2232 | any-promise@1.3.0: {} 2233 | 2234 | anymatch@3.1.3: 2235 | dependencies: 2236 | normalize-path: 3.0.0 2237 | picomatch: 2.3.1 2238 | 2239 | argparse@1.0.10: 2240 | dependencies: 2241 | sprintf-js: 1.0.3 2242 | 2243 | array-union@2.1.0: {} 2244 | 2245 | assertion-error@1.1.0: {} 2246 | 2247 | asynckit@0.4.0: {} 2248 | 2249 | balanced-match@1.0.2: {} 2250 | 2251 | better-path-resolve@1.0.0: 2252 | dependencies: 2253 | is-windows: 1.0.2 2254 | 2255 | bidi-js@1.0.3: 2256 | dependencies: 2257 | require-from-string: 2.0.2 2258 | 2259 | binary-extensions@2.3.0: {} 2260 | 2261 | brace-expansion@2.0.1: 2262 | dependencies: 2263 | balanced-match: 1.0.2 2264 | 2265 | braces@3.0.3: 2266 | dependencies: 2267 | fill-range: 7.1.1 2268 | 2269 | bundle-require@5.0.0(esbuild@0.23.0): 2270 | dependencies: 2271 | esbuild: 0.23.0 2272 | load-tsconfig: 0.2.5 2273 | 2274 | cac@6.7.14: {} 2275 | 2276 | chai@4.5.0: 2277 | dependencies: 2278 | assertion-error: 1.1.0 2279 | check-error: 1.0.3 2280 | deep-eql: 4.1.4 2281 | get-func-name: 2.0.2 2282 | loupe: 2.3.7 2283 | pathval: 1.1.1 2284 | type-detect: 4.1.0 2285 | 2286 | chalk@2.4.2: 2287 | dependencies: 2288 | ansi-styles: 3.2.1 2289 | escape-string-regexp: 1.0.5 2290 | supports-color: 5.5.0 2291 | 2292 | chardet@0.7.0: {} 2293 | 2294 | check-error@1.0.3: 2295 | dependencies: 2296 | get-func-name: 2.0.2 2297 | 2298 | chokidar@3.6.0: 2299 | dependencies: 2300 | anymatch: 3.1.3 2301 | braces: 3.0.3 2302 | glob-parent: 5.1.2 2303 | is-binary-path: 2.1.0 2304 | is-glob: 4.0.3 2305 | normalize-path: 3.0.0 2306 | readdirp: 3.6.0 2307 | optionalDependencies: 2308 | fsevents: 2.3.3 2309 | 2310 | ci-info@3.9.0: {} 2311 | 2312 | color-convert@1.9.3: 2313 | dependencies: 2314 | color-name: 1.1.3 2315 | 2316 | color-convert@2.0.1: 2317 | dependencies: 2318 | color-name: 1.1.4 2319 | 2320 | color-name@1.1.3: {} 2321 | 2322 | color-name@1.1.4: {} 2323 | 2324 | combined-stream@1.0.8: 2325 | dependencies: 2326 | delayed-stream: 1.0.0 2327 | 2328 | commander@4.1.1: {} 2329 | 2330 | confbox@0.1.7: {} 2331 | 2332 | consola@3.2.3: {} 2333 | 2334 | copy-anything@3.0.5: 2335 | dependencies: 2336 | is-what: 4.1.16 2337 | 2338 | cross-spawn@5.1.0: 2339 | dependencies: 2340 | lru-cache: 4.1.5 2341 | shebang-command: 1.2.0 2342 | which: 1.3.1 2343 | 2344 | cross-spawn@7.0.3: 2345 | dependencies: 2346 | path-key: 3.1.1 2347 | shebang-command: 2.0.0 2348 | which: 2.0.2 2349 | 2350 | css-tree@2.3.1: 2351 | dependencies: 2352 | mdn-data: 2.0.30 2353 | source-map-js: 1.2.0 2354 | 2355 | cssstyle@4.0.1: 2356 | dependencies: 2357 | rrweb-cssom: 0.6.0 2358 | 2359 | data-urls@5.0.0: 2360 | dependencies: 2361 | whatwg-mimetype: 4.0.0 2362 | whatwg-url: 14.0.0 2363 | 2364 | dataloader@1.4.0: {} 2365 | 2366 | debug@4.3.6: 2367 | dependencies: 2368 | ms: 2.1.2 2369 | 2370 | decimal.js@10.4.3: {} 2371 | 2372 | deep-eql@4.1.4: 2373 | dependencies: 2374 | type-detect: 4.1.0 2375 | 2376 | delayed-stream@1.0.0: {} 2377 | 2378 | detect-indent@6.1.0: {} 2379 | 2380 | diff-sequences@29.6.3: {} 2381 | 2382 | dir-glob@3.0.1: 2383 | dependencies: 2384 | path-type: 4.0.0 2385 | 2386 | dotenv@8.6.0: {} 2387 | 2388 | eastasianwidth@0.2.0: {} 2389 | 2390 | emoji-regex@8.0.0: {} 2391 | 2392 | emoji-regex@9.2.2: {} 2393 | 2394 | enquirer@2.4.1: 2395 | dependencies: 2396 | ansi-colors: 4.1.3 2397 | strip-ansi: 6.0.1 2398 | 2399 | entities@4.5.0: {} 2400 | 2401 | esbuild@0.21.5: 2402 | optionalDependencies: 2403 | '@esbuild/aix-ppc64': 0.21.5 2404 | '@esbuild/android-arm': 0.21.5 2405 | '@esbuild/android-arm64': 0.21.5 2406 | '@esbuild/android-x64': 0.21.5 2407 | '@esbuild/darwin-arm64': 0.21.5 2408 | '@esbuild/darwin-x64': 0.21.5 2409 | '@esbuild/freebsd-arm64': 0.21.5 2410 | '@esbuild/freebsd-x64': 0.21.5 2411 | '@esbuild/linux-arm': 0.21.5 2412 | '@esbuild/linux-arm64': 0.21.5 2413 | '@esbuild/linux-ia32': 0.21.5 2414 | '@esbuild/linux-loong64': 0.21.5 2415 | '@esbuild/linux-mips64el': 0.21.5 2416 | '@esbuild/linux-ppc64': 0.21.5 2417 | '@esbuild/linux-riscv64': 0.21.5 2418 | '@esbuild/linux-s390x': 0.21.5 2419 | '@esbuild/linux-x64': 0.21.5 2420 | '@esbuild/netbsd-x64': 0.21.5 2421 | '@esbuild/openbsd-x64': 0.21.5 2422 | '@esbuild/sunos-x64': 0.21.5 2423 | '@esbuild/win32-arm64': 0.21.5 2424 | '@esbuild/win32-ia32': 0.21.5 2425 | '@esbuild/win32-x64': 0.21.5 2426 | 2427 | esbuild@0.23.0: 2428 | optionalDependencies: 2429 | '@esbuild/aix-ppc64': 0.23.0 2430 | '@esbuild/android-arm': 0.23.0 2431 | '@esbuild/android-arm64': 0.23.0 2432 | '@esbuild/android-x64': 0.23.0 2433 | '@esbuild/darwin-arm64': 0.23.0 2434 | '@esbuild/darwin-x64': 0.23.0 2435 | '@esbuild/freebsd-arm64': 0.23.0 2436 | '@esbuild/freebsd-x64': 0.23.0 2437 | '@esbuild/linux-arm': 0.23.0 2438 | '@esbuild/linux-arm64': 0.23.0 2439 | '@esbuild/linux-ia32': 0.23.0 2440 | '@esbuild/linux-loong64': 0.23.0 2441 | '@esbuild/linux-mips64el': 0.23.0 2442 | '@esbuild/linux-ppc64': 0.23.0 2443 | '@esbuild/linux-riscv64': 0.23.0 2444 | '@esbuild/linux-s390x': 0.23.0 2445 | '@esbuild/linux-x64': 0.23.0 2446 | '@esbuild/netbsd-x64': 0.23.0 2447 | '@esbuild/openbsd-arm64': 0.23.0 2448 | '@esbuild/openbsd-x64': 0.23.0 2449 | '@esbuild/sunos-x64': 0.23.0 2450 | '@esbuild/win32-arm64': 0.23.0 2451 | '@esbuild/win32-ia32': 0.23.0 2452 | '@esbuild/win32-x64': 0.23.0 2453 | 2454 | escape-string-regexp@1.0.5: {} 2455 | 2456 | esprima@4.0.1: {} 2457 | 2458 | estree-walker@3.0.3: 2459 | dependencies: 2460 | '@types/estree': 1.0.5 2461 | 2462 | event-target-shim@6.0.2: {} 2463 | 2464 | execa@5.1.1: 2465 | dependencies: 2466 | cross-spawn: 7.0.3 2467 | get-stream: 6.0.1 2468 | human-signals: 2.1.0 2469 | is-stream: 2.0.1 2470 | merge-stream: 2.0.0 2471 | npm-run-path: 4.0.1 2472 | onetime: 5.1.2 2473 | signal-exit: 3.0.7 2474 | strip-final-newline: 2.0.0 2475 | 2476 | execa@8.0.1: 2477 | dependencies: 2478 | cross-spawn: 7.0.3 2479 | get-stream: 8.0.1 2480 | human-signals: 5.0.0 2481 | is-stream: 3.0.0 2482 | merge-stream: 2.0.0 2483 | npm-run-path: 5.3.0 2484 | onetime: 6.0.0 2485 | signal-exit: 4.1.0 2486 | strip-final-newline: 3.0.0 2487 | 2488 | extendable-error@0.1.7: {} 2489 | 2490 | external-editor@3.1.0: 2491 | dependencies: 2492 | chardet: 0.7.0 2493 | iconv-lite: 0.4.24 2494 | tmp: 0.0.33 2495 | 2496 | fast-glob@3.3.2: 2497 | dependencies: 2498 | '@nodelib/fs.stat': 2.0.5 2499 | '@nodelib/fs.walk': 1.2.8 2500 | glob-parent: 5.1.2 2501 | merge2: 1.4.1 2502 | micromatch: 4.0.7 2503 | 2504 | fast-safe-stringify@2.1.1: {} 2505 | 2506 | fastq@1.17.1: 2507 | dependencies: 2508 | reusify: 1.0.4 2509 | 2510 | fill-range@7.1.1: 2511 | dependencies: 2512 | to-regex-range: 5.0.1 2513 | 2514 | find-up@4.1.0: 2515 | dependencies: 2516 | locate-path: 5.0.0 2517 | path-exists: 4.0.0 2518 | 2519 | find-up@5.0.0: 2520 | dependencies: 2521 | locate-path: 6.0.0 2522 | path-exists: 4.0.0 2523 | 2524 | find-yarn-workspace-root2@1.2.16: 2525 | dependencies: 2526 | micromatch: 4.0.7 2527 | pkg-dir: 4.2.0 2528 | 2529 | foreground-child@3.3.0: 2530 | dependencies: 2531 | cross-spawn: 7.0.3 2532 | signal-exit: 4.1.0 2533 | 2534 | form-data@4.0.0: 2535 | dependencies: 2536 | asynckit: 0.4.0 2537 | combined-stream: 1.0.8 2538 | mime-types: 2.1.35 2539 | 2540 | fs-extra@7.0.1: 2541 | dependencies: 2542 | graceful-fs: 4.2.11 2543 | jsonfile: 4.0.0 2544 | universalify: 0.1.2 2545 | 2546 | fs-extra@8.1.0: 2547 | dependencies: 2548 | graceful-fs: 4.2.11 2549 | jsonfile: 4.0.0 2550 | universalify: 0.1.2 2551 | 2552 | fsevents@2.3.3: 2553 | optional: true 2554 | 2555 | get-func-name@2.0.2: {} 2556 | 2557 | get-stream@6.0.1: {} 2558 | 2559 | get-stream@8.0.1: {} 2560 | 2561 | glob-parent@5.1.2: 2562 | dependencies: 2563 | is-glob: 4.0.3 2564 | 2565 | glob@10.4.5: 2566 | dependencies: 2567 | foreground-child: 3.3.0 2568 | jackspeak: 3.4.3 2569 | minimatch: 9.0.5 2570 | minipass: 7.1.2 2571 | package-json-from-dist: 1.0.0 2572 | path-scurry: 1.11.1 2573 | 2574 | globby@11.1.0: 2575 | dependencies: 2576 | array-union: 2.1.0 2577 | dir-glob: 3.0.1 2578 | fast-glob: 3.3.2 2579 | ignore: 5.3.1 2580 | merge2: 1.4.1 2581 | slash: 3.0.0 2582 | 2583 | graceful-fs@4.2.11: {} 2584 | 2585 | has-flag@3.0.0: {} 2586 | 2587 | html-encoding-sniffer@4.0.0: 2588 | dependencies: 2589 | whatwg-encoding: 3.1.1 2590 | 2591 | http-proxy-agent@7.0.2: 2592 | dependencies: 2593 | agent-base: 7.1.1 2594 | debug: 4.3.6 2595 | transitivePeerDependencies: 2596 | - supports-color 2597 | 2598 | https-proxy-agent@7.0.5: 2599 | dependencies: 2600 | agent-base: 7.1.1 2601 | debug: 4.3.6 2602 | transitivePeerDependencies: 2603 | - supports-color 2604 | 2605 | human-id@1.0.2: {} 2606 | 2607 | human-signals@2.1.0: {} 2608 | 2609 | human-signals@5.0.0: {} 2610 | 2611 | iconv-lite@0.4.24: 2612 | dependencies: 2613 | safer-buffer: 2.1.2 2614 | 2615 | iconv-lite@0.6.3: 2616 | dependencies: 2617 | safer-buffer: 2.1.2 2618 | 2619 | ignore@5.3.1: {} 2620 | 2621 | is-binary-path@2.1.0: 2622 | dependencies: 2623 | binary-extensions: 2.3.0 2624 | 2625 | is-extglob@2.1.1: {} 2626 | 2627 | is-fullwidth-code-point@3.0.0: {} 2628 | 2629 | is-glob@4.0.3: 2630 | dependencies: 2631 | is-extglob: 2.1.1 2632 | 2633 | is-number@7.0.0: {} 2634 | 2635 | is-potential-custom-element-name@1.0.1: {} 2636 | 2637 | is-stream@2.0.1: {} 2638 | 2639 | is-stream@3.0.0: {} 2640 | 2641 | is-subdir@1.2.0: 2642 | dependencies: 2643 | better-path-resolve: 1.0.0 2644 | 2645 | is-what@4.1.16: {} 2646 | 2647 | is-windows@1.0.2: {} 2648 | 2649 | isexe@2.0.0: {} 2650 | 2651 | isomorphic-ws@5.0.0(ws@8.18.0): 2652 | dependencies: 2653 | ws: 8.18.0 2654 | 2655 | jackspeak@3.4.3: 2656 | dependencies: 2657 | '@isaacs/cliui': 8.0.2 2658 | optionalDependencies: 2659 | '@pkgjs/parseargs': 0.11.0 2660 | 2661 | joycon@3.1.1: {} 2662 | 2663 | js-tokens@9.0.0: {} 2664 | 2665 | js-yaml@3.14.1: 2666 | dependencies: 2667 | argparse: 1.0.10 2668 | esprima: 4.0.1 2669 | 2670 | jsdom@23.2.0: 2671 | dependencies: 2672 | '@asamuzakjp/dom-selector': 2.0.2 2673 | cssstyle: 4.0.1 2674 | data-urls: 5.0.0 2675 | decimal.js: 10.4.3 2676 | form-data: 4.0.0 2677 | html-encoding-sniffer: 4.0.0 2678 | http-proxy-agent: 7.0.2 2679 | https-proxy-agent: 7.0.5 2680 | is-potential-custom-element-name: 1.0.1 2681 | parse5: 7.1.2 2682 | rrweb-cssom: 0.6.0 2683 | saxes: 6.0.0 2684 | symbol-tree: 3.2.4 2685 | tough-cookie: 4.1.4 2686 | w3c-xmlserializer: 5.0.0 2687 | webidl-conversions: 7.0.0 2688 | whatwg-encoding: 3.1.1 2689 | whatwg-mimetype: 4.0.0 2690 | whatwg-url: 14.0.0 2691 | ws: 8.18.0 2692 | xml-name-validator: 5.0.0 2693 | transitivePeerDependencies: 2694 | - bufferutil 2695 | - supports-color 2696 | - utf-8-validate 2697 | 2698 | jsonfile@4.0.0: 2699 | optionalDependencies: 2700 | graceful-fs: 4.2.11 2701 | 2702 | lilconfig@3.1.2: {} 2703 | 2704 | lines-and-columns@1.2.4: {} 2705 | 2706 | load-tsconfig@0.2.5: {} 2707 | 2708 | load-yaml-file@0.2.0: 2709 | dependencies: 2710 | graceful-fs: 4.2.11 2711 | js-yaml: 3.14.1 2712 | pify: 4.0.1 2713 | strip-bom: 3.0.0 2714 | 2715 | local-pkg@0.5.0: 2716 | dependencies: 2717 | mlly: 1.7.1 2718 | pkg-types: 1.1.3 2719 | 2720 | locate-path@5.0.0: 2721 | dependencies: 2722 | p-locate: 4.1.0 2723 | 2724 | locate-path@6.0.0: 2725 | dependencies: 2726 | p-locate: 5.0.0 2727 | 2728 | lodash.sortby@4.7.0: {} 2729 | 2730 | lodash.startcase@4.4.0: {} 2731 | 2732 | loupe@2.3.7: 2733 | dependencies: 2734 | get-func-name: 2.0.2 2735 | 2736 | lru-cache@10.4.3: {} 2737 | 2738 | lru-cache@4.1.5: 2739 | dependencies: 2740 | pseudomap: 1.0.2 2741 | yallist: 2.1.2 2742 | 2743 | magic-string@0.30.11: 2744 | dependencies: 2745 | '@jridgewell/sourcemap-codec': 1.5.0 2746 | 2747 | mdn-data@2.0.30: {} 2748 | 2749 | merge-stream@2.0.0: {} 2750 | 2751 | merge2@1.4.1: {} 2752 | 2753 | micromatch@4.0.7: 2754 | dependencies: 2755 | braces: 3.0.3 2756 | picomatch: 2.3.1 2757 | 2758 | mime-db@1.52.0: {} 2759 | 2760 | mime-types@2.1.35: 2761 | dependencies: 2762 | mime-db: 1.52.0 2763 | 2764 | mimic-fn@2.1.0: {} 2765 | 2766 | mimic-fn@4.0.0: {} 2767 | 2768 | minimatch@9.0.5: 2769 | dependencies: 2770 | brace-expansion: 2.0.1 2771 | 2772 | minipass@7.1.2: {} 2773 | 2774 | mlly@1.7.1: 2775 | dependencies: 2776 | acorn: 8.12.1 2777 | pathe: 1.1.2 2778 | pkg-types: 1.1.3 2779 | ufo: 1.5.4 2780 | 2781 | mri@1.2.0: {} 2782 | 2783 | ms@2.1.2: {} 2784 | 2785 | mz@2.7.0: 2786 | dependencies: 2787 | any-promise: 1.3.0 2788 | object-assign: 4.1.1 2789 | thenify-all: 1.6.0 2790 | 2791 | nanoid@3.3.7: {} 2792 | 2793 | node-fetch@2.7.0: 2794 | dependencies: 2795 | whatwg-url: 5.0.0 2796 | 2797 | normalize-path@3.0.0: {} 2798 | 2799 | npm-run-path@4.0.1: 2800 | dependencies: 2801 | path-key: 3.1.1 2802 | 2803 | npm-run-path@5.3.0: 2804 | dependencies: 2805 | path-key: 4.0.0 2806 | 2807 | object-assign@4.1.1: {} 2808 | 2809 | onetime@5.1.2: 2810 | dependencies: 2811 | mimic-fn: 2.1.0 2812 | 2813 | onetime@6.0.0: 2814 | dependencies: 2815 | mimic-fn: 4.0.0 2816 | 2817 | os-tmpdir@1.0.2: {} 2818 | 2819 | outdent@0.5.0: {} 2820 | 2821 | p-filter@2.1.0: 2822 | dependencies: 2823 | p-map: 2.1.0 2824 | 2825 | p-limit@2.3.0: 2826 | dependencies: 2827 | p-try: 2.2.0 2828 | 2829 | p-limit@3.1.0: 2830 | dependencies: 2831 | yocto-queue: 0.1.0 2832 | 2833 | p-limit@5.0.0: 2834 | dependencies: 2835 | yocto-queue: 1.1.1 2836 | 2837 | p-locate@4.1.0: 2838 | dependencies: 2839 | p-limit: 2.3.0 2840 | 2841 | p-locate@5.0.0: 2842 | dependencies: 2843 | p-limit: 3.1.0 2844 | 2845 | p-map@2.1.0: {} 2846 | 2847 | p-try@2.2.0: {} 2848 | 2849 | package-json-from-dist@1.0.0: {} 2850 | 2851 | parse5@7.1.2: 2852 | dependencies: 2853 | entities: 4.5.0 2854 | 2855 | partysocket@0.0.25: 2856 | dependencies: 2857 | event-target-shim: 6.0.2 2858 | 2859 | path-exists@4.0.0: {} 2860 | 2861 | path-key@3.1.1: {} 2862 | 2863 | path-key@4.0.0: {} 2864 | 2865 | path-scurry@1.11.1: 2866 | dependencies: 2867 | lru-cache: 10.4.3 2868 | minipass: 7.1.2 2869 | 2870 | path-type@4.0.0: {} 2871 | 2872 | pathe@1.1.2: {} 2873 | 2874 | pathval@1.1.1: {} 2875 | 2876 | picocolors@1.0.1: {} 2877 | 2878 | picomatch@2.3.1: {} 2879 | 2880 | pify@4.0.1: {} 2881 | 2882 | pirates@4.0.6: {} 2883 | 2884 | pkg-dir@4.2.0: 2885 | dependencies: 2886 | find-up: 4.1.0 2887 | 2888 | pkg-types@1.1.3: 2889 | dependencies: 2890 | confbox: 0.1.7 2891 | mlly: 1.7.1 2892 | pathe: 1.1.2 2893 | 2894 | postcss-load-config@6.0.1(postcss@8.4.41)(yaml@2.4.5): 2895 | dependencies: 2896 | lilconfig: 3.1.2 2897 | optionalDependencies: 2898 | postcss: 8.4.41 2899 | yaml: 2.4.5 2900 | 2901 | postcss@8.4.41: 2902 | dependencies: 2903 | nanoid: 3.3.7 2904 | picocolors: 1.0.1 2905 | source-map-js: 1.2.0 2906 | 2907 | preferred-pm@3.1.4: 2908 | dependencies: 2909 | find-up: 5.0.0 2910 | find-yarn-workspace-root2: 1.2.16 2911 | path-exists: 4.0.0 2912 | which-pm: 2.2.0 2913 | 2914 | prettier@2.8.8: {} 2915 | 2916 | pretty-format@29.7.0: 2917 | dependencies: 2918 | '@jest/schemas': 29.6.3 2919 | ansi-styles: 5.2.0 2920 | react-is: 18.3.1 2921 | 2922 | pseudomap@1.0.2: {} 2923 | 2924 | psl@1.9.0: {} 2925 | 2926 | punycode@2.3.1: {} 2927 | 2928 | querystringify@2.2.0: {} 2929 | 2930 | queue-microtask@1.2.3: {} 2931 | 2932 | react-is@18.3.1: {} 2933 | 2934 | read-yaml-file@1.1.0: 2935 | dependencies: 2936 | graceful-fs: 4.2.11 2937 | js-yaml: 3.14.1 2938 | pify: 4.0.1 2939 | strip-bom: 3.0.0 2940 | 2941 | readdirp@3.6.0: 2942 | dependencies: 2943 | picomatch: 2.3.1 2944 | 2945 | regenerator-runtime@0.14.1: {} 2946 | 2947 | require-from-string@2.0.2: {} 2948 | 2949 | requires-port@1.0.0: {} 2950 | 2951 | resolve-from@5.0.0: {} 2952 | 2953 | reusify@1.0.4: {} 2954 | 2955 | rollup@4.20.0: 2956 | dependencies: 2957 | '@types/estree': 1.0.5 2958 | optionalDependencies: 2959 | '@rollup/rollup-android-arm-eabi': 4.20.0 2960 | '@rollup/rollup-android-arm64': 4.20.0 2961 | '@rollup/rollup-darwin-arm64': 4.20.0 2962 | '@rollup/rollup-darwin-x64': 4.20.0 2963 | '@rollup/rollup-linux-arm-gnueabihf': 4.20.0 2964 | '@rollup/rollup-linux-arm-musleabihf': 4.20.0 2965 | '@rollup/rollup-linux-arm64-gnu': 4.20.0 2966 | '@rollup/rollup-linux-arm64-musl': 4.20.0 2967 | '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0 2968 | '@rollup/rollup-linux-riscv64-gnu': 4.20.0 2969 | '@rollup/rollup-linux-s390x-gnu': 4.20.0 2970 | '@rollup/rollup-linux-x64-gnu': 4.20.0 2971 | '@rollup/rollup-linux-x64-musl': 4.20.0 2972 | '@rollup/rollup-win32-arm64-msvc': 4.20.0 2973 | '@rollup/rollup-win32-ia32-msvc': 4.20.0 2974 | '@rollup/rollup-win32-x64-msvc': 4.20.0 2975 | fsevents: 2.3.3 2976 | 2977 | rrweb-cssom@0.6.0: {} 2978 | 2979 | run-parallel@1.2.0: 2980 | dependencies: 2981 | queue-microtask: 1.2.3 2982 | 2983 | safe-stable-stringify@2.4.3: {} 2984 | 2985 | safer-buffer@2.1.2: {} 2986 | 2987 | saxes@6.0.0: 2988 | dependencies: 2989 | xmlchars: 2.2.0 2990 | 2991 | semver@7.6.3: {} 2992 | 2993 | shebang-command@1.2.0: 2994 | dependencies: 2995 | shebang-regex: 1.0.0 2996 | 2997 | shebang-command@2.0.0: 2998 | dependencies: 2999 | shebang-regex: 3.0.0 3000 | 3001 | shebang-regex@1.0.0: {} 3002 | 3003 | shebang-regex@3.0.0: {} 3004 | 3005 | siginfo@2.0.0: {} 3006 | 3007 | signal-exit@3.0.7: {} 3008 | 3009 | signal-exit@4.1.0: {} 3010 | 3011 | slash@3.0.0: {} 3012 | 3013 | source-map-js@1.2.0: {} 3014 | 3015 | source-map@0.8.0-beta.0: 3016 | dependencies: 3017 | whatwg-url: 7.1.0 3018 | 3019 | spawndamnit@2.0.0: 3020 | dependencies: 3021 | cross-spawn: 5.1.0 3022 | signal-exit: 3.0.7 3023 | 3024 | sprintf-js@1.0.3: {} 3025 | 3026 | stackback@0.0.2: {} 3027 | 3028 | std-env@3.7.0: {} 3029 | 3030 | string-width@4.2.3: 3031 | dependencies: 3032 | emoji-regex: 8.0.0 3033 | is-fullwidth-code-point: 3.0.0 3034 | strip-ansi: 6.0.1 3035 | 3036 | string-width@5.1.2: 3037 | dependencies: 3038 | eastasianwidth: 0.2.0 3039 | emoji-regex: 9.2.2 3040 | strip-ansi: 7.1.0 3041 | 3042 | strip-ansi@6.0.1: 3043 | dependencies: 3044 | ansi-regex: 5.0.1 3045 | 3046 | strip-ansi@7.1.0: 3047 | dependencies: 3048 | ansi-regex: 6.0.1 3049 | 3050 | strip-bom@3.0.0: {} 3051 | 3052 | strip-final-newline@2.0.0: {} 3053 | 3054 | strip-final-newline@3.0.0: {} 3055 | 3056 | strip-literal@2.1.0: 3057 | dependencies: 3058 | js-tokens: 9.0.0 3059 | 3060 | sucrase@3.35.0: 3061 | dependencies: 3062 | '@jridgewell/gen-mapping': 0.3.5 3063 | commander: 4.1.1 3064 | glob: 10.4.5 3065 | lines-and-columns: 1.2.4 3066 | mz: 2.7.0 3067 | pirates: 4.0.6 3068 | ts-interface-checker: 0.1.13 3069 | 3070 | superjson@1.13.3: 3071 | dependencies: 3072 | copy-anything: 3.0.5 3073 | 3074 | supports-color@5.5.0: 3075 | dependencies: 3076 | has-flag: 3.0.0 3077 | 3078 | symbol-tree@3.2.4: {} 3079 | 3080 | term-size@2.2.1: {} 3081 | 3082 | thenify-all@1.6.0: 3083 | dependencies: 3084 | thenify: 3.3.1 3085 | 3086 | thenify@3.3.1: 3087 | dependencies: 3088 | any-promise: 1.3.0 3089 | 3090 | tinybench@2.9.0: {} 3091 | 3092 | tinypool@0.8.4: {} 3093 | 3094 | tinyspy@2.2.1: {} 3095 | 3096 | tmp@0.0.33: 3097 | dependencies: 3098 | os-tmpdir: 1.0.2 3099 | 3100 | to-regex-range@5.0.1: 3101 | dependencies: 3102 | is-number: 7.0.0 3103 | 3104 | tough-cookie@4.1.4: 3105 | dependencies: 3106 | psl: 1.9.0 3107 | punycode: 2.3.1 3108 | universalify: 0.2.0 3109 | url-parse: 1.5.10 3110 | 3111 | tr46@0.0.3: {} 3112 | 3113 | tr46@1.0.1: 3114 | dependencies: 3115 | punycode: 2.3.1 3116 | 3117 | tr46@5.0.0: 3118 | dependencies: 3119 | punycode: 2.3.1 3120 | 3121 | tree-kill@1.2.2: {} 3122 | 3123 | ts-interface-checker@0.1.13: {} 3124 | 3125 | tsup@8.2.4(postcss@8.4.41)(typescript@5.5.4)(yaml@2.4.5): 3126 | dependencies: 3127 | bundle-require: 5.0.0(esbuild@0.23.0) 3128 | cac: 6.7.14 3129 | chokidar: 3.6.0 3130 | consola: 3.2.3 3131 | debug: 4.3.6 3132 | esbuild: 0.23.0 3133 | execa: 5.1.1 3134 | globby: 11.1.0 3135 | joycon: 3.1.1 3136 | picocolors: 1.0.1 3137 | postcss-load-config: 6.0.1(postcss@8.4.41)(yaml@2.4.5) 3138 | resolve-from: 5.0.0 3139 | rollup: 4.20.0 3140 | source-map: 0.8.0-beta.0 3141 | sucrase: 3.35.0 3142 | tree-kill: 1.2.2 3143 | optionalDependencies: 3144 | postcss: 8.4.41 3145 | typescript: 5.5.4 3146 | transitivePeerDependencies: 3147 | - jiti 3148 | - supports-color 3149 | - tsx 3150 | - yaml 3151 | 3152 | type-detect@4.1.0: {} 3153 | 3154 | typescript@5.5.4: {} 3155 | 3156 | ufo@1.5.4: {} 3157 | 3158 | undici-types@6.13.0: {} 3159 | 3160 | universalify@0.1.2: {} 3161 | 3162 | universalify@0.2.0: {} 3163 | 3164 | url-parse@1.5.10: 3165 | dependencies: 3166 | querystringify: 2.2.0 3167 | requires-port: 1.0.0 3168 | 3169 | uuid@9.0.1: {} 3170 | 3171 | vite-node@1.6.0(@types/node@22.2.0): 3172 | dependencies: 3173 | cac: 6.7.14 3174 | debug: 4.3.6 3175 | pathe: 1.1.2 3176 | picocolors: 1.0.1 3177 | vite: 5.4.0(@types/node@22.2.0) 3178 | transitivePeerDependencies: 3179 | - '@types/node' 3180 | - less 3181 | - lightningcss 3182 | - sass 3183 | - sass-embedded 3184 | - stylus 3185 | - sugarss 3186 | - supports-color 3187 | - terser 3188 | 3189 | vite@5.4.0(@types/node@22.2.0): 3190 | dependencies: 3191 | esbuild: 0.21.5 3192 | postcss: 8.4.41 3193 | rollup: 4.20.0 3194 | optionalDependencies: 3195 | '@types/node': 22.2.0 3196 | fsevents: 2.3.3 3197 | 3198 | vitest@1.6.0(@types/node@22.2.0)(jsdom@23.2.0): 3199 | dependencies: 3200 | '@vitest/expect': 1.6.0 3201 | '@vitest/runner': 1.6.0 3202 | '@vitest/snapshot': 1.6.0 3203 | '@vitest/spy': 1.6.0 3204 | '@vitest/utils': 1.6.0 3205 | acorn-walk: 8.3.3 3206 | chai: 4.5.0 3207 | debug: 4.3.6 3208 | execa: 8.0.1 3209 | local-pkg: 0.5.0 3210 | magic-string: 0.30.11 3211 | pathe: 1.1.2 3212 | picocolors: 1.0.1 3213 | std-env: 3.7.0 3214 | strip-literal: 2.1.0 3215 | tinybench: 2.9.0 3216 | tinypool: 0.8.4 3217 | vite: 5.4.0(@types/node@22.2.0) 3218 | vite-node: 1.6.0(@types/node@22.2.0) 3219 | why-is-node-running: 2.3.0 3220 | optionalDependencies: 3221 | '@types/node': 22.2.0 3222 | jsdom: 23.2.0 3223 | transitivePeerDependencies: 3224 | - less 3225 | - lightningcss 3226 | - sass 3227 | - sass-embedded 3228 | - stylus 3229 | - sugarss 3230 | - supports-color 3231 | - terser 3232 | 3233 | w3c-xmlserializer@5.0.0: 3234 | dependencies: 3235 | xml-name-validator: 5.0.0 3236 | 3237 | webidl-conversions@3.0.1: {} 3238 | 3239 | webidl-conversions@4.0.2: {} 3240 | 3241 | webidl-conversions@7.0.0: {} 3242 | 3243 | whatwg-encoding@3.1.1: 3244 | dependencies: 3245 | iconv-lite: 0.6.3 3246 | 3247 | whatwg-mimetype@4.0.0: {} 3248 | 3249 | whatwg-url@14.0.0: 3250 | dependencies: 3251 | tr46: 5.0.0 3252 | webidl-conversions: 7.0.0 3253 | 3254 | whatwg-url@5.0.0: 3255 | dependencies: 3256 | tr46: 0.0.3 3257 | webidl-conversions: 3.0.1 3258 | 3259 | whatwg-url@7.1.0: 3260 | dependencies: 3261 | lodash.sortby: 4.7.0 3262 | tr46: 1.0.1 3263 | webidl-conversions: 4.0.2 3264 | 3265 | which-pm@2.2.0: 3266 | dependencies: 3267 | load-yaml-file: 0.2.0 3268 | path-exists: 4.0.0 3269 | 3270 | which@1.3.1: 3271 | dependencies: 3272 | isexe: 2.0.0 3273 | 3274 | which@2.0.2: 3275 | dependencies: 3276 | isexe: 2.0.0 3277 | 3278 | why-is-node-running@2.3.0: 3279 | dependencies: 3280 | siginfo: 2.0.0 3281 | stackback: 0.0.2 3282 | 3283 | wrap-ansi@7.0.0: 3284 | dependencies: 3285 | ansi-styles: 4.3.0 3286 | string-width: 4.2.3 3287 | strip-ansi: 6.0.1 3288 | 3289 | wrap-ansi@8.1.0: 3290 | dependencies: 3291 | ansi-styles: 6.2.1 3292 | string-width: 5.1.2 3293 | strip-ansi: 7.1.0 3294 | 3295 | ws@8.18.0: {} 3296 | 3297 | xml-name-validator@5.0.0: {} 3298 | 3299 | xmlchars@2.2.0: {} 3300 | 3301 | xstate@5.18.2: {} 3302 | 3303 | yallist@2.1.2: {} 3304 | 3305 | yaml@2.4.5: 3306 | optional: true 3307 | 3308 | yocto-queue@0.1.0: {} 3309 | 3310 | yocto-queue@1.1.1: {} 3311 | -------------------------------------------------------------------------------- /scripts/dev.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script copies the source code of the packages in the packages/ directory 4 | # to the node_modules/@statelyai/ directory of each destination project. 5 | 6 | # Load environment variables from .env file 7 | if [ -f .env ]; then 8 | export $(cat .env | xargs) 9 | fi 10 | 11 | # Split the DEV_DESTINATIONS variable into an array 12 | IFS=',' read -r -a destinations <<<"$DEV_DESTINATIONS" 13 | 14 | # Package name 15 | package="inspect" 16 | 17 | for destination in "${destinations[@]}"; do 18 | echo "Copying ${package} to ${destination}" 19 | rm -rf "${destination}/node_modules/@statelyai/${package}" 20 | cp -r "./" "${destination}/node_modules/@statelyai/${package}" 21 | done 22 | -------------------------------------------------------------------------------- /src/.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | concurrency: ${{ github.workflow }}-${{ github.ref }} 9 | 10 | jobs: 11 | release: 12 | name: Release 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: Checkout Repo 16 | uses: actions/checkout@v3 17 | 18 | - name: Setup Node.js 19 | uses: actions/setup-node@v3 20 | with: 21 | node-version: 18.x 22 | 23 | - name: Install Dependencies 24 | run: yarn 25 | 26 | - name: Create Release Pull Request 27 | uses: changesets/action@v1 28 | env: 29 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 30 | -------------------------------------------------------------------------------- /src/browser.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from 'vitest'; 2 | import { createActor, createMachine } from 'xstate'; 3 | import { createBrowserInspector } from './'; 4 | import { StatelyActorEvent } from './types'; 5 | import { JSDOM } from 'jsdom'; 6 | 7 | test('inspector observes a state machine', async () => { 8 | const dom = new JSDOM(); 9 | 10 | const events: StatelyActorEvent[] = []; 11 | 12 | const trafficLightMachine = createMachine({ 13 | id: 'trafficLight', 14 | initial: 'green', 15 | states: { 16 | green: { 17 | after: { 18 | 10: 'yellow', 19 | }, 20 | }, 21 | yellow: { 22 | after: { 23 | 10: 'red', 24 | }, 25 | }, 26 | red: {}, 27 | }, 28 | }); 29 | 30 | const inspector = createBrowserInspector({ 31 | window: dom.window as any as Window, 32 | }); 33 | inspector.adapter.targetWindow = new JSDOM().window as any; 34 | 35 | inspector.adapter.targetWindow!.addEventListener('message', (event) => { 36 | events.push(event.data); 37 | }); 38 | 39 | const trafficLightActor = createActor(trafficLightMachine, { 40 | inspect: inspector.inspect, 41 | }); 42 | trafficLightActor.start(); 43 | 44 | // simulate getting an event from the inspector 45 | dom.window.postMessage( 46 | { 47 | type: '@statelyai.connected', 48 | }, 49 | '*' 50 | ); 51 | 52 | await new Promise((res) => { 53 | setTimeout(res, 30); 54 | }); 55 | 56 | expect(events.map((ev) => ev.type)).toMatchInlineSnapshot(` 57 | [ 58 | "@xstate.actor", 59 | "@xstate.event", 60 | "@xstate.snapshot", 61 | "@xstate.event", 62 | "@xstate.snapshot", 63 | "@xstate.event", 64 | "@xstate.snapshot", 65 | ] 66 | `); 67 | }); 68 | 69 | test('inspector works with window undefined', async () => { 70 | const inspector = createBrowserInspector({ 71 | window: undefined, 72 | }); 73 | 74 | const machine = createMachine({}); 75 | const actor = createActor(machine, { inspect: inspector.inspect }); 76 | 77 | expect(() => { 78 | actor.start(); 79 | }).not.toThrow(); 80 | }); 81 | -------------------------------------------------------------------------------- /src/browser.ts: -------------------------------------------------------------------------------- 1 | import safeStringify from 'fast-safe-stringify'; 2 | import { AnyEventObject, Observer, Subscribable, toObserver } from 'xstate'; 3 | import { 4 | InspectorOptions, 5 | createInspector, 6 | defaultInspectorOptions, 7 | } from './createInspector'; 8 | import { Adapter, Inspector, StatelyInspectionEvent } from './types'; 9 | import { UselessAdapter } from './useless'; 10 | 11 | interface BrowserReceiver extends Subscribable {} 12 | 13 | export const CONNECTION_EVENT = '@statelyai.connected'; 14 | 15 | export function isEventObject(event: unknown): event is AnyEventObject { 16 | return ( 17 | typeof event === 'object' && 18 | event !== null && 19 | typeof (event as any).type === 'string' 20 | ); 21 | } 22 | 23 | export function isStatelyInspectionEvent( 24 | event: unknown 25 | ): event is StatelyInspectionEvent { 26 | return ( 27 | typeof event === 'object' && 28 | event !== null && 29 | typeof (event as any).type === 'string' && 30 | typeof (event as any)._version === 'string' 31 | ); 32 | } 33 | 34 | export interface BrowserInspectorOptions extends InspectorOptions { 35 | url?: string; 36 | window?: Window; 37 | iframe?: HTMLIFrameElement | null; 38 | } 39 | 40 | interface OptionalBrowserInspectorOptions { 41 | send?: Adapter['send']; 42 | } 43 | 44 | /** 45 | * Creates a browser-based inspector that sends events to a remote inspector window. 46 | * The remote inspector opens an inspector window at the specified URL by default. 47 | */ 48 | export function createBrowserInspector( 49 | options?: BrowserInspectorOptions & OptionalBrowserInspectorOptions 50 | ): Inspector { 51 | const resolvedWindow = 52 | options?.window ?? (typeof window === 'undefined' ? undefined : window); 53 | 54 | if (!resolvedWindow) { 55 | console.error('Window does not exist; inspector cannot be started.'); 56 | 57 | return new UselessAdapter() as any; 58 | } 59 | 60 | const resolvedOptions = { 61 | ...defaultInspectorOptions, 62 | url: 'https://stately.ai/inspect', 63 | filter: () => true, 64 | serialize: (inspectionEvent) => JSON.parse(safeStringify(inspectionEvent)), 65 | autoStart: true, 66 | iframe: null, 67 | ...options, 68 | window: resolvedWindow, 69 | } satisfies Required & 70 | OptionalBrowserInspectorOptions; 71 | const adapter = new BrowserAdapter(resolvedOptions); 72 | const inspector = createInspector(adapter, resolvedOptions); 73 | 74 | // Start immediately 75 | if (resolvedOptions.autoStart) { 76 | inspector.start(); 77 | } 78 | 79 | return inspector; 80 | } 81 | 82 | interface BrowserReceiverOptions { 83 | window?: Window; 84 | /** 85 | * The number of events from the current event to replay 86 | */ 87 | replayCount?: number; 88 | } 89 | 90 | const defaultBrowserReceiverOptions: Required = { 91 | replayCount: 0, 92 | window: typeof window !== 'undefined' ? window : (undefined as any), 93 | }; 94 | 95 | export function createBrowserReceiver( 96 | options?: BrowserReceiverOptions 97 | ): BrowserReceiver { 98 | const resolvedOptions = { 99 | ...defaultBrowserReceiverOptions, 100 | ...options, 101 | }; 102 | 103 | const browserWindow = resolvedOptions.window; 104 | 105 | const targetWindow: Window | null = 106 | browserWindow.self === browserWindow.top 107 | ? browserWindow.opener 108 | : browserWindow.parent; 109 | 110 | const observers = new Set>(); 111 | 112 | browserWindow.addEventListener('message', (event) => { 113 | if (!isStatelyInspectionEvent(event.data)) { 114 | return; 115 | } 116 | 117 | observers.forEach((observer) => observer.next?.(event.data)); 118 | }); 119 | 120 | const receiver: BrowserReceiver = { 121 | subscribe(observerOrFn) { 122 | const observer = toObserver(observerOrFn); 123 | observers.add(observer); 124 | 125 | return { 126 | unsubscribe() { 127 | observers.delete(observer); 128 | }, 129 | }; 130 | }, 131 | }; 132 | 133 | if (targetWindow) { 134 | targetWindow.postMessage( 135 | { 136 | type: CONNECTION_EVENT, 137 | }, 138 | '*' 139 | ); 140 | } 141 | 142 | return receiver; 143 | } 144 | 145 | export class BrowserAdapter implements Adapter { 146 | private status = 'disconnected' as 'disconnected' | 'connected'; 147 | private deferredEvents: StatelyInspectionEvent[] = []; 148 | public targetWindow: Window | null = null; 149 | 150 | constructor( 151 | public options: Required & 152 | OptionalBrowserInspectorOptions 153 | ) {} 154 | public start() { 155 | this.targetWindow = this.options.iframe 156 | ? null 157 | : this.options.window.open(String(this.options.url), 'xstateinspector'); 158 | 159 | if (this.options.iframe) { 160 | this.options.iframe.addEventListener('load', () => { 161 | this.targetWindow = this.options.iframe?.contentWindow ?? null; 162 | }); 163 | this.options.iframe?.setAttribute('src', String(this.options.url)); 164 | } 165 | 166 | this.options.window.addEventListener('message', (event) => { 167 | if ( 168 | isEventObject(event.data) && 169 | event.data.type === '@statelyai.connected' 170 | ) { 171 | this.status = 'connected'; 172 | this.deferredEvents.forEach((event) => { 173 | const serializedEvent = this.options.serialize(event); 174 | this.targetWindow?.postMessage(serializedEvent, '*'); 175 | }); 176 | } 177 | }); 178 | } 179 | public stop() { 180 | this.targetWindow?.postMessage({ type: '@statelyai.disconnected' }, '*'); 181 | this.status = 'disconnected'; 182 | } 183 | public send(event: StatelyInspectionEvent) { 184 | const shouldSendEvent = this.options.filter(event); 185 | if (!shouldSendEvent) { 186 | return; 187 | } 188 | 189 | if (this.options.send) { 190 | this.options.send(event); 191 | } else if (this.status === 'connected') { 192 | const serializedEvent = this.options.serialize(event); 193 | this.targetWindow?.postMessage(serializedEvent, '*'); 194 | } 195 | 196 | this.deferredEvents.push(event); 197 | 198 | // Remove the oldest event if we've reached the max deferred events 199 | if (this.deferredEvents.length > this.options.maxDeferredEvents) { 200 | this.deferredEvents.shift(); 201 | } 202 | } 203 | } 204 | -------------------------------------------------------------------------------- /src/createInspector.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from 'vitest'; 2 | import { createInspector } from './createInspector'; 3 | import { StatelyInspectionEvent, Adapter, StatelyEventEvent } from './types'; 4 | import { createActor, createMachine } from 'xstate'; 5 | import pkg from '../package.json'; 6 | import { StatelyActorEvent } from '../dist'; 7 | 8 | function simplifyEvent(ev: StatelyInspectionEvent) { 9 | return ev.type === '@xstate.actor' 10 | ? { type: ev.type, sessionId: ev.sessionId } 11 | : ev.type === '@xstate.event' 12 | ? { type: ev.type, sessionId: ev.sessionId, event: ev.event } 13 | : { 14 | type: ev.type, 15 | sessionId: ev.sessionId, 16 | snapshot: 'value' in ev.snapshot ? ev.snapshot.value : ev.snapshot, 17 | }; 18 | } 19 | 20 | test('Creates an inspector for a state machine', async () => { 21 | const events: StatelyInspectionEvent[] = []; 22 | const testAdapter: Adapter = { 23 | send: (event) => { 24 | events.push(event); 25 | }, 26 | start: () => {}, 27 | stop: () => {}, 28 | }; 29 | 30 | const inspector = createInspector(testAdapter); 31 | 32 | const machine = createMachine({ 33 | id: 'trafficLight', 34 | initial: 'green', 35 | states: { 36 | green: { 37 | after: { 38 | 10: 'yellow', 39 | }, 40 | }, 41 | yellow: { 42 | after: { 43 | 10: 'red', 44 | }, 45 | }, 46 | red: {}, 47 | }, 48 | }); 49 | 50 | createActor(machine, { 51 | inspect: inspector.inspect, 52 | }).start(); 53 | 54 | await new Promise((res) => { 55 | setTimeout(() => { 56 | expect(events.map(simplifyEvent)).toMatchInlineSnapshot(` 57 | [ 58 | { 59 | "sessionId": "x:0", 60 | "type": "@xstate.actor", 61 | }, 62 | { 63 | "event": { 64 | "input": undefined, 65 | "type": "xstate.init", 66 | }, 67 | "sessionId": "x:0", 68 | "type": "@xstate.event", 69 | }, 70 | { 71 | "sessionId": "x:0", 72 | "snapshot": "green", 73 | "type": "@xstate.snapshot", 74 | }, 75 | { 76 | "event": { 77 | "type": "xstate.after.10.trafficLight.green", 78 | }, 79 | "sessionId": "x:0", 80 | "type": "@xstate.event", 81 | }, 82 | { 83 | "sessionId": "x:0", 84 | "snapshot": "yellow", 85 | "type": "@xstate.snapshot", 86 | }, 87 | { 88 | "event": { 89 | "type": "xstate.after.10.trafficLight.yellow", 90 | }, 91 | "sessionId": "x:0", 92 | "type": "@xstate.event", 93 | }, 94 | { 95 | "sessionId": "x:0", 96 | "snapshot": "red", 97 | "type": "@xstate.snapshot", 98 | }, 99 | ] 100 | `); 101 | res(); 102 | }, 100); 103 | }); 104 | }); 105 | 106 | test('Manually inspected events', () => { 107 | const events: StatelyInspectionEvent[] = []; 108 | const testAdapter: Adapter = { 109 | send: (event) => { 110 | events.push(event); 111 | }, 112 | start: () => {}, 113 | stop: () => {}, 114 | }; 115 | const inspector = createInspector(testAdapter); 116 | 117 | inspector.actor('test'); 118 | inspector.actor('another', { status: 'active', context: 10 }); 119 | inspector.event('test', 'stringEvent'); 120 | inspector.event('another', { type: 'objectEvent' }, { source: 'test' }); 121 | inspector.snapshot('test', { status: 'active', context: 20 }); 122 | 123 | inspector.snapshot( 124 | 'another', 125 | { status: 'done', context: { foo: 'bar' } }, 126 | { event: { type: 'objectEvent' } } 127 | ); 128 | 129 | expect(events.map(simplifyEvent)).toMatchInlineSnapshot(` 130 | [ 131 | { 132 | "sessionId": "test", 133 | "type": "@xstate.actor", 134 | }, 135 | { 136 | "sessionId": "another", 137 | "type": "@xstate.actor", 138 | }, 139 | { 140 | "event": { 141 | "type": "stringEvent", 142 | }, 143 | "sessionId": "test", 144 | "type": "@xstate.event", 145 | }, 146 | { 147 | "event": { 148 | "type": "objectEvent", 149 | }, 150 | "sessionId": "another", 151 | "type": "@xstate.event", 152 | }, 153 | { 154 | "sessionId": "test", 155 | "snapshot": { 156 | "context": 20, 157 | "status": "active", 158 | }, 159 | "type": "@xstate.snapshot", 160 | }, 161 | { 162 | "sessionId": "another", 163 | "snapshot": { 164 | "context": { 165 | "foo": "bar", 166 | }, 167 | "status": "done", 168 | }, 169 | "type": "@xstate.snapshot", 170 | }, 171 | ] 172 | `); 173 | }); 174 | 175 | test('Inspected event includes version', () => { 176 | const events: StatelyInspectionEvent[] = []; 177 | const testAdapter: Adapter = { 178 | send: (event) => { 179 | events.push(event); 180 | }, 181 | start: () => {}, 182 | stop: () => {}, 183 | }; 184 | const inspector = createInspector(testAdapter); 185 | 186 | inspector.actor('test'); 187 | 188 | expect(events[0]._version).toEqual(pkg.version); 189 | }); 190 | 191 | test('options.serialize', async () => { 192 | const events: StatelyInspectionEvent[] = []; 193 | const testAdapter: Adapter = { 194 | send: (event) => { 195 | events.push(event); 196 | }, 197 | start: () => {}, 198 | stop: () => {}, 199 | }; 200 | const inspector = createInspector(testAdapter, { 201 | serialize: (ev) => { 202 | if ('snapshot' in ev) { 203 | return { 204 | ...ev, 205 | snapshot: { 206 | context: { user: 'anonymous' }, 207 | } as any, 208 | }; 209 | } else if (ev.type === '@xstate.event') { 210 | return { 211 | ...ev, 212 | event: { 213 | ...ev.event, 214 | user: 'anonymous', 215 | }, 216 | }; 217 | } else { 218 | return ev; 219 | } 220 | }, 221 | }); 222 | 223 | inspector.actor('test', { context: { user: 'David' } }); 224 | 225 | expect((events[0] as StatelyActorEvent).snapshot.context).toEqual({ 226 | user: 'anonymous', 227 | }); 228 | 229 | inspector.snapshot('test', { context: { user: 'David' } }); 230 | 231 | expect((events[1] as StatelyActorEvent).snapshot.context).toEqual({ 232 | user: 'anonymous', 233 | }); 234 | 235 | inspector.event('test', { type: 'updateUser', user: 'David' }); 236 | 237 | expect((events[2] as StatelyEventEvent).event).toEqual({ 238 | type: 'updateUser', 239 | user: 'anonymous', 240 | }); 241 | 242 | inspector.inspect.next?.({ 243 | type: '@xstate.event', 244 | actorRef: {} as any, 245 | event: { 246 | type: 'setUser', 247 | user: 'Another', 248 | }, 249 | rootId: '', 250 | sourceRef: undefined, 251 | }); 252 | 253 | await new Promise((res) => { 254 | setTimeout(res, 10); 255 | }); 256 | 257 | expect((events[3] as StatelyEventEvent).event).toEqual({ 258 | type: 'setUser', 259 | user: 'anonymous', 260 | }); 261 | }); 262 | 263 | test('Sanitization options', async () => { 264 | const events: StatelyInspectionEvent[] = []; 265 | const testAdapter: Adapter = { 266 | send: (event) => { 267 | events.push(event); 268 | }, 269 | start: () => {}, 270 | stop: () => {}, 271 | }; 272 | const inspector = createInspector(testAdapter, { 273 | sanitizeContext: (ctx) => ({ 274 | ...ctx, 275 | user: 'anonymous', 276 | }), 277 | sanitizeEvent: (ev) => { 278 | if ('user' in ev) { 279 | return { ...ev, user: 'anonymous' }; 280 | } else { 281 | return ev; 282 | } 283 | }, 284 | }); 285 | 286 | inspector.actor('test', { context: { user: 'David' } }); 287 | 288 | expect((events[0] as StatelyActorEvent).snapshot.context).toEqual({ 289 | user: 'anonymous', 290 | }); 291 | 292 | inspector.snapshot('test', { context: { user: 'David' } }); 293 | 294 | expect((events[1] as StatelyActorEvent).snapshot.context).toEqual({ 295 | user: 'anonymous', 296 | }); 297 | 298 | inspector.event('test', { type: 'updateUser', user: 'David' }); 299 | 300 | expect((events[2] as StatelyEventEvent).event).toEqual({ 301 | type: 'updateUser', 302 | user: 'anonymous', 303 | }); 304 | 305 | inspector.inspect.next?.({ 306 | type: '@xstate.event', 307 | actorRef: {} as any, 308 | event: { 309 | type: 'setUser', 310 | user: 'Another', 311 | }, 312 | rootId: '', 313 | sourceRef: undefined, 314 | }); 315 | 316 | await new Promise((res) => { 317 | setTimeout(res, 10); 318 | }); 319 | 320 | expect((events[3] as StatelyEventEvent).event).toEqual({ 321 | type: 'setUser', 322 | user: 'anonymous', 323 | }); 324 | }); 325 | 326 | test('it safely stringifies objects with circular dependencies', () => { 327 | const events: StatelyInspectionEvent[] = []; 328 | const testAdapter: Adapter = { 329 | send: (event) => { 330 | events.push(event); 331 | }, 332 | start: () => {}, 333 | stop: () => {}, 334 | }; 335 | 336 | const inspector = createInspector(testAdapter); 337 | 338 | const circular = { 339 | get val() { 340 | return circular; 341 | }, 342 | }; 343 | 344 | expect(() => { 345 | inspector.inspect.next?.({ 346 | type: '@xstate.snapshot', 347 | snapshot: { context: circular } as any, 348 | actorRef: {} as any, 349 | event: { type: 'any' }, 350 | rootId: '', 351 | }); 352 | }).not.toThrow(); 353 | }); 354 | -------------------------------------------------------------------------------- /src/createInspector.ts: -------------------------------------------------------------------------------- 1 | import { 2 | StatelyActorEvent, 3 | StatelyEventEvent, 4 | StatelyInspectionEvent, 5 | StatelySnapshotEvent, 6 | Adapter, 7 | ActorRefLikeWithData, 8 | } from './types'; 9 | import { toEventObject } from './utils'; 10 | import { Inspector } from './types'; 11 | import { 12 | ActorRefLike, 13 | AnyEventObject, 14 | InspectionEvent, 15 | MachineContext, 16 | Snapshot, 17 | } from 'xstate'; 18 | import pkg from '../package.json'; 19 | import { idleCallback } from './idleCallback'; 20 | import safeStringify from 'safe-stable-stringify'; 21 | 22 | function getRoot(actorRef: ActorRefLike) { 23 | let marker: ActorRefLikeWithData | undefined = actorRef; 24 | 25 | do { 26 | marker = marker._parent; 27 | } while (marker?._parent); 28 | 29 | return marker; 30 | } 31 | 32 | function getRootId(actorRefOrId: ActorRefLike | string): string | undefined { 33 | const rootActorRef = 34 | typeof actorRefOrId === 'string' 35 | ? undefined 36 | : getRoot(actorRefOrId)?.sessionId; 37 | 38 | return rootActorRef ?? undefined; 39 | } 40 | 41 | export interface InspectorOptions { 42 | filter?: (event: StatelyInspectionEvent) => boolean; 43 | serialize?: (event: StatelyInspectionEvent) => StatelyInspectionEvent; 44 | /** 45 | * Whether to automatically start the inspector. 46 | * 47 | * @default true 48 | */ 49 | autoStart?: boolean; 50 | /** 51 | * The maximum number of deferred events to hold in memory until the inspector is active. 52 | * If the number of deferred events exceeds this number, the oldest events will be dropped. 53 | * 54 | * @default 200 55 | */ 56 | maxDeferredEvents?: number; 57 | 58 | /** 59 | * Sanitizes events sent to actors. Only the sanitized event will be sent to the inspector. 60 | */ 61 | sanitizeEvent?: (event: AnyEventObject) => AnyEventObject; 62 | 63 | /** 64 | * Sanitizes actor snapshot context. Only the sanitized context will be sent to the inspector. 65 | */ 66 | sanitizeContext?: (context: MachineContext) => MachineContext; 67 | } 68 | 69 | export const defaultInspectorOptions: Required = { 70 | filter: () => true, 71 | serialize: (event) => event, 72 | autoStart: true, 73 | maxDeferredEvents: 200, 74 | sanitizeEvent: (event) => event, 75 | sanitizeContext: (context) => context, 76 | }; 77 | 78 | export function createInspector( 79 | adapter: TAdapter, 80 | options?: InspectorOptions 81 | ): Inspector { 82 | function sendAdapter(inspectionEvent: StatelyInspectionEvent): void { 83 | if (options?.filter && !options.filter(inspectionEvent)) { 84 | // Event filtered out 85 | return; 86 | } 87 | 88 | const sanitizedEvent: typeof inspectionEvent = 89 | options?.sanitizeContext || options?.sanitizeEvent 90 | ? inspectionEvent 91 | : { 92 | ...inspectionEvent, 93 | }; 94 | if ( 95 | options?.sanitizeContext && 96 | (sanitizedEvent.type === '@xstate.actor' || 97 | sanitizedEvent.type === '@xstate.snapshot') 98 | ) { 99 | sanitizedEvent.snapshot = { 100 | ...sanitizedEvent.snapshot, 101 | // @ts-ignore 102 | context: options.sanitizeContext( 103 | // @ts-ignore 104 | sanitizedEvent.snapshot.context 105 | ), 106 | }; 107 | } 108 | if ( 109 | options?.sanitizeEvent && 110 | (sanitizedEvent.type === '@xstate.event' || 111 | sanitizedEvent.type === '@xstate.snapshot') 112 | ) { 113 | sanitizedEvent.event = options.sanitizeEvent(sanitizedEvent.event); 114 | } 115 | const serializedEvent = 116 | options?.serialize?.(sanitizedEvent) ?? sanitizedEvent; 117 | adapter.send(serializedEvent); 118 | } 119 | const inspector: Inspector = { 120 | adapter, 121 | actor: (actorRef, snapshot, info) => { 122 | const sessionId = 123 | typeof actorRef === 'string' ? actorRef : actorRef.sessionId; 124 | const definitionObject = (actorRef as any)?.logic?.config; 125 | const definition = definitionObject 126 | ? safeStringify(definitionObject) 127 | : undefined; 128 | const rootId = 129 | info?.rootId ?? typeof actorRef === 'string' 130 | ? undefined 131 | : getRootId(actorRef); 132 | const parentId = 133 | info?.parentId ?? typeof actorRef === 'string' 134 | ? undefined 135 | : actorRef._parent?.sessionId; 136 | const name = definitionObject ? definitionObject.id : sessionId; 137 | 138 | sendAdapter({ 139 | type: '@xstate.actor', 140 | name, 141 | sessionId, 142 | createdAt: Date.now().toString(), 143 | _version: pkg.version, 144 | rootId, 145 | parentId, 146 | id: null as any, 147 | definition, 148 | snapshot: snapshot ?? { status: 'active' }, 149 | } satisfies StatelyActorEvent); 150 | }, 151 | event: (target, event, info) => { 152 | const sessionId = typeof target === 'string' ? target : target.sessionId; 153 | const sourceId = !info?.source 154 | ? undefined 155 | : typeof info.source === 'string' 156 | ? info.source 157 | : info.source.sessionId; 158 | sendAdapter({ 159 | type: '@xstate.event', 160 | sourceId, 161 | sessionId, 162 | event: toEventObject(event), 163 | id: Math.random().toString(), 164 | createdAt: Date.now().toString(), 165 | rootId: 'anonymous', 166 | _version: pkg.version, 167 | }); 168 | }, 169 | snapshot: (actor, snapshot, info) => { 170 | const sessionId = typeof actor === 'string' ? actor : actor.sessionId; 171 | sendAdapter({ 172 | type: '@xstate.snapshot', 173 | snapshot: { 174 | status: 'active', 175 | ...snapshot, 176 | } as unknown as Snapshot, 177 | event: info?.event ?? { type: '' }, 178 | sessionId, 179 | id: null as any, 180 | createdAt: Date.now().toString(), 181 | rootId: 'anonymous', 182 | _version: pkg.version, 183 | }); 184 | }, 185 | inspect: { 186 | next: (event) => { 187 | idleCallback(function inspectNext() { 188 | const convertedEvent = convertXStateEvent(event); 189 | if (convertedEvent) { 190 | sendAdapter(convertedEvent); 191 | } 192 | }); 193 | }, 194 | }, 195 | start() { 196 | adapter.start?.(); 197 | }, 198 | stop() { 199 | adapter.stop?.(); 200 | }, 201 | }; 202 | 203 | return inspector; 204 | } 205 | 206 | export function convertXStateEvent( 207 | inspectionEvent: InspectionEvent 208 | ): StatelyInspectionEvent | undefined { 209 | switch (inspectionEvent.type) { 210 | case '@xstate.actor': { 211 | const actorRef = inspectionEvent.actorRef; 212 | const logic = (actorRef as any)?.logic; 213 | const definitionObject = logic?.config; 214 | let name = (actorRef as any).id; 215 | 216 | // TODO: fix this in XState 217 | if (name === actorRef.sessionId && definitionObject) { 218 | name = definitionObject.id; 219 | } 220 | const definitionString = 221 | typeof definitionObject === 'object' 222 | ? safeStringify(definitionObject, (_key, value) => { 223 | if (typeof value === 'function') { 224 | return { type: value.name }; 225 | } 226 | 227 | return value; 228 | }) 229 | : safeStringify({ 230 | id: name, 231 | }); 232 | 233 | return { 234 | name, 235 | type: '@xstate.actor', 236 | definition: definitionString, 237 | _version: pkg.version, 238 | createdAt: Date.now().toString(), 239 | id: null as any, 240 | rootId: inspectionEvent.rootId, 241 | parentId: (inspectionEvent.actorRef as any)._parent?.sessionId, 242 | sessionId: inspectionEvent.actorRef.sessionId, 243 | snapshot: inspectionEvent.actorRef.getSnapshot(), 244 | } satisfies StatelyActorEvent; 245 | } 246 | case '@xstate.event': { 247 | return { 248 | type: '@xstate.event', 249 | event: inspectionEvent.event, 250 | sourceId: inspectionEvent.sourceRef?.sessionId, 251 | // sessionId: inspectionEvent.targetRef.sessionId, 252 | sessionId: inspectionEvent.actorRef.sessionId, 253 | _version: pkg.version, 254 | createdAt: Date.now().toString(), 255 | id: null as any, 256 | rootId: inspectionEvent.rootId, 257 | } satisfies StatelyEventEvent; 258 | } 259 | case '@xstate.snapshot': { 260 | return { 261 | type: '@xstate.snapshot', 262 | event: inspectionEvent.event, 263 | snapshot: JSON.parse(safeStringify(inspectionEvent.snapshot)), 264 | sessionId: inspectionEvent.actorRef.sessionId, 265 | _version: pkg.version, 266 | createdAt: Date.now().toString(), 267 | id: null as any, 268 | rootId: inspectionEvent.rootId, 269 | } satisfies StatelySnapshotEvent; 270 | } 271 | default: { 272 | // Ignore future XState inspection events (assume that they are valid) 273 | if (inspectionEvent.type.startsWith('@xstate.')) { 274 | return undefined; 275 | } 276 | console.warn( 277 | `Unhandled inspection event type: ${(inspectionEvent as any).type}` 278 | ); 279 | return undefined; 280 | } 281 | } 282 | } 283 | -------------------------------------------------------------------------------- /src/createSkyInspector.ts: -------------------------------------------------------------------------------- 1 | import PartySocket from 'partysocket'; 2 | import { stringify } from 'superjson'; 3 | import { v4 as uuidv4 } from 'uuid'; 4 | import { createBrowserInspector } from './browser'; 5 | import { 6 | InspectorOptions, 7 | createInspector as inspectCreator, 8 | } from './createInspector'; 9 | import { isNode } from './utils'; 10 | 11 | // Not the most elegant way to do this, but it makes it much easier to test local changes 12 | const isDevMode = false; 13 | 14 | export function createSkyInspector( 15 | options: { 16 | apiKey?: string; // Not used yet, will be used to add additional features later 17 | onerror?: (error: Error) => void; 18 | } & InspectorOptions = {} 19 | ): ReturnType { 20 | const { host, apiBaseURL } = { 21 | host: isDevMode 22 | ? 'localhost:1999' 23 | : 'stately-sky-beta.mellson.partykit.dev', 24 | apiBaseURL: isDevMode 25 | ? 'http://localhost:3000/registry/api/sky' 26 | : 'https://stately.ai/registry/api/sky', 27 | }; 28 | const server = apiBaseURL.replace('/api/sky', ''); 29 | const { apiKey, onerror, ...inspectorOptions } = options; 30 | const sessionId = uuidv4(); // Generate a unique session ID 31 | const room = `inspect-${sessionId}`; 32 | const socket = new PartySocket({ 33 | host, 34 | room, 35 | WebSocket: isNode ? require('isomorphic-ws') : undefined, 36 | }); 37 | const liveInspectUrl = `${server}/inspect/${sessionId}`; 38 | socket.onerror = onerror ?? console.error; 39 | socket.onopen = () => { 40 | console.log('Connected to Sky, link to your live inspect session:'); 41 | console.log(liveInspectUrl); 42 | }; 43 | if (isNode) { 44 | return inspectCreator({ 45 | ...inspectorOptions, 46 | send(event) { 47 | const skyEvent = apiKey ? { apiKey, ...event } : event; 48 | socket.send(stringify(skyEvent)); 49 | }, 50 | }); 51 | } else { 52 | return createBrowserInspector({ 53 | ...inspectorOptions, 54 | url: liveInspectUrl, 55 | send(event) { 56 | const skyEvent = apiKey ? { apiKey, ...event } : event; 57 | socket.send(stringify(skyEvent)); 58 | }, 59 | }); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/idleCallback.ts: -------------------------------------------------------------------------------- 1 | export function idleCallback(cb: () => void) { 2 | if (typeof window !== 'undefined') { 3 | const raf = window.requestIdleCallback || window.requestAnimationFrame; 4 | raf(cb); 5 | } else { 6 | setTimeout(cb, 0); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { createBrowserInspector, createBrowserReceiver } from './browser'; 2 | export { createInspector } from './createInspector'; 3 | export { createSkyInspector } from './createSkyInspector'; 4 | export type { 5 | StatelyActorEvent, 6 | StatelyEventEvent, 7 | StatelyInspectionEvent, 8 | StatelySnapshotEvent, 9 | } from './types'; 10 | export { createWebSocketInspector, createWebSocketReceiver } from './webSocket'; 11 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | import { 2 | ActorRefLike, 3 | AnyEventObject, 4 | InspectionEvent, 5 | Observer, 6 | Snapshot, 7 | } from 'xstate'; 8 | 9 | export interface StatelyBaseInspectionEvent { 10 | // the session ID of the root 11 | rootId: string | undefined; 12 | sessionId: string; 13 | createdAt: string; // Timestamp 14 | id: string; // unique string for this actor update 15 | _version: string; // version of this protocol 16 | } 17 | 18 | export type StatelySnapshotEvent = Pick< 19 | InspectionEvent & { type: '@xstate.snapshot' }, 20 | 'event' | 'rootId' | 'snapshot' | 'type' 21 | > & 22 | StatelyBaseInspectionEvent; 23 | 24 | export type StatelyEventEvent = Pick< 25 | InspectionEvent & { type: '@xstate.event' }, 26 | 'event' | 'rootId' | 'type' 27 | > & { 28 | // used instead of sourceRef 29 | sourceId: string | undefined; 30 | } & StatelyBaseInspectionEvent; 31 | 32 | export type StatelyActorEvent = Pick< 33 | InspectionEvent & { type: '@xstate.actor' }, 34 | 'type' 35 | > & { 36 | name: string; 37 | snapshot: InspectedSnapshot; // JSON snapshot 38 | definition: string | undefined; // JSON-stringified definition or URL 39 | parentId: string | undefined; 40 | } & StatelyBaseInspectionEvent; 41 | 42 | export type StatelyInspectionEvent = 43 | | StatelySnapshotEvent 44 | | StatelyEventEvent 45 | | StatelyActorEvent; 46 | 47 | export interface Adapter { 48 | start?: () => void; 49 | stop?: () => void; 50 | send(event: StatelyInspectionEvent): void; 51 | } 52 | 53 | export interface InspectedSnapshot { 54 | status?: Snapshot['status']; 55 | context?: any; 56 | value?: any; 57 | output?: any; 58 | } 59 | 60 | export interface Inspector { 61 | adapter: TAdapter; 62 | /** 63 | * Sends a snapshot inspection event. This represents the state of the actor. 64 | */ 65 | snapshot( 66 | actor: ActorRefLikeWithData | string, 67 | snapshot: InspectedSnapshot, 68 | info?: { event?: AnyEventObject } 69 | ): void; 70 | /** 71 | * Sends an event inspection event. This represents the event that was sent to the actor. 72 | */ 73 | event( 74 | actor: ActorRefLikeWithData | string, 75 | event: AnyEventObject | string, 76 | info?: { source?: ActorRefLikeWithData | string } 77 | ): void; 78 | /** 79 | * Sends an actor registration inspection event. This represents the actor that was created. 80 | */ 81 | actor( 82 | actor: ActorRefLikeWithData | string, 83 | snapshot?: InspectedSnapshot, 84 | info?: { 85 | definition?: string; 86 | parentId?: string; 87 | rootId?: string; 88 | } 89 | ): void; 90 | /** 91 | * Starts the inspector. 92 | */ 93 | start: () => void; 94 | /** 95 | * Stops the inspector. 96 | */ 97 | stop: () => void; 98 | /** 99 | * An inspection observer that can be passed into XState. 100 | * @example 101 | * ```js 102 | * import { createActor } from 'xstate'; 103 | * import { createInspector } from '@xstate/inspect'; 104 | * // ... 105 | * 106 | * const inspector = createInspector(...) 107 | * 108 | * const actor = createActor(someMachine, { 109 | * inspect: inspector.inspect 110 | * }) 111 | * ``` 112 | */ 113 | inspect: Observer; 114 | } 115 | 116 | export type ActorRefLikeWithData = ActorRefLike & { 117 | _parent?: ActorRefLikeWithData; 118 | id?: string; 119 | }; 120 | -------------------------------------------------------------------------------- /src/useless.ts: -------------------------------------------------------------------------------- 1 | import { InspectorOptions } from './createInspector'; 2 | import { Adapter, StatelyInspectionEvent } from './types'; 3 | 4 | export class UselessAdapter implements Adapter { 5 | constructor() {} 6 | public start() { 7 | // ... 8 | } 9 | public stop() { 10 | // ... 11 | } 12 | public send(_event: StatelyInspectionEvent) { 13 | // ... 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | import type { AnyActorRef, AnyEventObject } from 'xstate'; 2 | 3 | export function toEventObject(event: AnyEventObject | string): AnyEventObject { 4 | if (typeof event === 'string') { 5 | return { type: event }; 6 | } 7 | 8 | return event; 9 | } 10 | 11 | export function isActorRef(actorRef: any): actorRef is AnyActorRef { 12 | return ( 13 | typeof actorRef === 'object' && 14 | actorRef !== null && 15 | typeof actorRef.sessionId === 'string' && 16 | typeof actorRef.send === 'function' 17 | ); 18 | } 19 | 20 | export const isNode = 21 | typeof process !== 'undefined' && 22 | typeof process.versions?.node !== 'undefined' && 23 | typeof document === 'undefined'; 24 | -------------------------------------------------------------------------------- /src/webSocket.ts: -------------------------------------------------------------------------------- 1 | import { 2 | InspectorOptions, 3 | createInspector, 4 | defaultInspectorOptions, 5 | } from './createInspector'; 6 | import { Adapter, StatelyInspectionEvent } from './types'; 7 | import WebSocket from 'isomorphic-ws'; 8 | import safeStringify from 'safe-stable-stringify'; 9 | import { Observer, Subscribable, toObserver } from 'xstate'; 10 | 11 | export interface WebSocketInspectorOptions extends InspectorOptions { 12 | url: string; 13 | } 14 | 15 | export class WebSocketAdapter implements Adapter { 16 | private ws: WebSocket; 17 | private status = 'closed' as 'closed' | 'open'; 18 | private deferredEvents: StatelyInspectionEvent[] = []; 19 | private options: Required; 20 | 21 | constructor(options?: WebSocketInspectorOptions) { 22 | this.options = { 23 | ...defaultInspectorOptions, 24 | filter: () => true, 25 | serialize: (inspectionEvent) => 26 | JSON.parse(safeStringify(inspectionEvent)), 27 | autoStart: true, 28 | url: 'ws://localhost:8080', 29 | ...options, 30 | }; 31 | } 32 | public start() { 33 | const start = () => { 34 | this.ws = new WebSocket(this.options.url); 35 | 36 | this.ws.onopen = () => { 37 | console.log('websocket open'); 38 | this.status = 'open'; 39 | this.deferredEvents.forEach((inspectionEvent) => { 40 | const preSerializedEvent = 41 | defaultInspectorOptions.serialize(inspectionEvent); 42 | const serializedEvent = this.options.serialize(preSerializedEvent); 43 | this.ws.send(safeStringify(serializedEvent)); 44 | }); 45 | }; 46 | 47 | this.ws.onclose = () => { 48 | console.log('websocket closed'); 49 | }; 50 | 51 | this.ws.onerror = async (event: unknown) => { 52 | console.error('websocket error', event); 53 | await new Promise((res) => setTimeout(res, 5000)); 54 | console.warn('restarting'); 55 | start(); 56 | }; 57 | 58 | this.ws.onmessage = (event: { data: unknown }) => { 59 | if (typeof event.data !== 'string') { 60 | return; 61 | } 62 | 63 | console.log('message', event.data); 64 | }; 65 | }; 66 | 67 | start(); 68 | } 69 | public stop() { 70 | this.ws.close(); 71 | this.status = 'closed'; 72 | } 73 | public send(inspectionEvent: StatelyInspectionEvent) { 74 | if (this.status === 'open') { 75 | this.ws.send(safeStringify(inspectionEvent)); 76 | } else { 77 | this.deferredEvents.push(inspectionEvent); 78 | 79 | if (this.deferredEvents.length > this.options.maxDeferredEvents) { 80 | this.deferredEvents.shift(); 81 | } 82 | } 83 | } 84 | } 85 | 86 | export function createWebSocketInspector(options?: WebSocketInspectorOptions) { 87 | const adapter = new WebSocketAdapter(options); 88 | 89 | const inspector = createInspector(adapter, options); 90 | 91 | return inspector; 92 | } 93 | 94 | interface WebSocketReceiver extends Subscribable {} 95 | 96 | export function createWebSocketReceiver(options?: { 97 | server: string; 98 | }): WebSocketReceiver { 99 | const resolvedOptions = { 100 | server: 'ws://localhost:8080', 101 | ...options, 102 | }; 103 | 104 | const observers = new Set>(); 105 | 106 | const ws = new WebSocket(resolvedOptions.server); 107 | 108 | ws.onopen = () => { 109 | console.log('websocket open'); 110 | 111 | ws.onmessage = (event: { data: unknown }) => { 112 | if (typeof event.data !== 'string') { 113 | return; 114 | } 115 | console.log('message', event.data); 116 | const eventData = JSON.parse(event.data); 117 | 118 | observers.forEach((observer) => { 119 | observer.next?.(eventData); 120 | }); 121 | }; 122 | }; 123 | 124 | const receiver: WebSocketReceiver = { 125 | subscribe(observerOrFn) { 126 | const observer = toObserver(observerOrFn); 127 | observers.add(observer); 128 | 129 | return { 130 | unsubscribe() { 131 | observers.delete(observer); 132 | }, 133 | }; 134 | }, 135 | }; 136 | 137 | return receiver; 138 | } 139 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "esnext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, 15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 16 | // "jsx": "preserve", /* Specify what JSX code is generated. */ 17 | // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ 18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ 22 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ 26 | 27 | /* Modules */ 28 | "module": "commonjs" /* Specify what module code is generated. */, 29 | // "rootDir": "./", /* Specify the root folder within your source files. */ 30 | // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ 31 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 32 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 33 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 34 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ 35 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 36 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 37 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ 38 | // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ 39 | // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ 40 | // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ 41 | // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ 42 | "resolveJsonModule": true /* Enable importing .json files. */, 43 | // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ 44 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ 45 | 46 | /* JavaScript Support */ 47 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ 48 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 49 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ 50 | 51 | /* Emit */ 52 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 53 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 54 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 55 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 56 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 57 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ 58 | // "outDir": "./", /* Specify an output folder for all emitted files. */ 59 | // "removeComments": true, /* Disable emitting comments. */ 60 | // "noEmit": true, /* Disable emitting files from a compilation. */ 61 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 62 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ 63 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 64 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 65 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 66 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 67 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 68 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 69 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ 70 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ 71 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 72 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ 73 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 74 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 75 | 76 | /* Interop Constraints */ 77 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 78 | // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ 79 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 80 | "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, 81 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 82 | "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, 83 | 84 | /* Type Checking */ 85 | "strict": true /* Enable all strict type-checking options. */, 86 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ 87 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ 88 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 89 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ 90 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 91 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ 92 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ 93 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 94 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ 95 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ 96 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 97 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 98 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 99 | // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ 100 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 101 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ 102 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 103 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 104 | 105 | /* Completeness */ 106 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 107 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 108 | } 109 | } 110 | --------------------------------------------------------------------------------