From 932bb0d56037d611c445cb79614c8368c251c759 Mon Sep 17 00:00:00 2001 From: Sebastian Lorenz Date: Mon, 11 Sep 2023 14:51:34 +0200 Subject: [PATCH] fun with bun --- .devcontainer.json | 11 - .github/workflows/main.yml | 29 +- .github/workflows/pr.yml | 25 +- .gitpod.Dockerfile | 5 + .gitpod.yml | 4 +- .vscode/tasks.json | 8 +- README.md | 4 +- bun.lockb | Bin 0 -> 328827 bytes flake.lock | 12 +- flake.nix | 9 +- package.json | 28 +- pnpm-lock.yaml | 6862 ----------------- src/internal/testing/testClock.ts | 24 +- test/{Cause.ts => Cause.test.ts} | 35 +- test/{Config.ts => Config.test.ts} | 43 +- ...nfigProvider.ts => ConfigProvider.test.ts} | 12 +- test/{Deferred.ts => Deferred.test.ts} | 50 +- ...ire-release.ts => acquire-release.test.ts} | 21 +- test/Effect/{async.ts => async.test.ts} | 9 +- test/Effect/{caching.ts => caching.test.ts} | 5 +- ...e-rendering.ts => cause-rendering.test.ts} | 26 +- .../{collecting.ts => collecting.test.ts} | 5 +- .../{concurrency.ts => concurrency.test.ts} | 15 +- .../{constructors.ts => constructors.test.ts} | 5 +- .../{destructors.ts => destructors.test.ts} | 15 +- .../{environment.ts => environment.test.ts} | 5 +- ...ror-handling.ts => error-handling.test.ts} | 21 +- .../{filtering.ts => filtering.test.ts} | 5 +- .../{finalization.ts => finalization.test.ts} | 33 +- test/Effect/{foreign.ts => foreign.test.ts} | 5 +- test/Effect/{forking.ts => forking.test.ts} | 15 +- .../{interruption.ts => interruption.test.ts} | 53 +- .../{join-order.ts => join-order.test.ts} | 5 +- test/Effect/{mapping.ts => mapping.test.ts} | 9 +- .../{memoization.ts => memoization.test.ts} | 5 +- test/Effect/{promise.ts => promise.test.ts} | 3 +- ...ide-runtime.ts => provide-runtime.test.ts} | 5 +- ...ery-deadlock.ts => query-deadlock.test.ts} | 3 +- .../{query-nested.ts => query-nested.test.ts} | 3 +- test/Effect/{query.ts => query.test.ts} | 3 +- test/Effect/{racing.ts => racing.test.ts} | 5 +- .../{repeating.ts => repeating.test.ts} | 5 +- test/Effect/{retrying.ts => retrying.test.ts} | 5 +- .../{runtimeFlags.ts => runtimeFlags.test.ts} | 14 +- .../{scheduler.ts => scheduler.test.ts} | 5 +- .../{scheduling.ts => scheduling.test.ts} | 5 +- .../{scope-ref.ts => scope-ref.test.ts} | 3 +- .../{semaphore.ts => semaphore.test.ts} | 5 +- .../{sequencing.ts => sequencing.test.ts} | 27 +- .../{stack-safety.ts => stack-safety.test.ts} | 9 +- .../{structural.ts => structural.test.ts} | 5 +- test/Effect/{sync.ts => sync.test.ts} | 9 +- test/Effect/{tapping.ts => tapping.test.ts} | 4 +- test/Effect/{timeout.ts => timeout.test.ts} | 5 +- .../{traversing.ts => traversing.test.ts} | 27 +- .../{tryPromise.ts => tryPromise.test.ts} | 3 +- .../{validation.ts => validation.test.ts} | 7 +- test/{Exit.ts => Exit.test.ts} | 7 +- test/{Fiber.ts => Fiber.test.ts} | 21 +- test/{FiberRef.ts => FiberRef.test.ts} | 13 +- test/{FiberRefs.ts => FiberRefs.test.ts} | 9 +- test/{Hub.ts => Hub.test.ts} | 5 +- test/{KeyedPool.ts => KeyedPool.test.ts} | 2 +- test/{Layer.ts => Layer.test.ts} | 63 +- test/{Logger.ts => Logger.test.ts} | 33 +- test/{Metric.ts => Metric.test.ts} | 30 +- test/{Pool.ts => Pool.test.ts} | 2 +- test/{Queue.ts => Queue.test.ts} | 75 +- test/{Ref.ts => Ref.test.ts} | 5 +- test/{Reloadable.ts => Reloadable.test.ts} | 5 +- test/{Resource.ts => Resource.test.ts} | 5 +- .../{RuntimeFlags.ts => RuntimeFlags.test.ts} | 17 +- test/{Schedule.ts => Schedule.test.ts} | 33 +- test/{Scope.ts => Scope.test.ts} | 23 +- test/{ScopedCache.ts => ScopedCache.test.ts} | 4 +- test/{ScopedRef.ts => ScopedRef.test.ts} | 5 +- .../{Synchronized.ts => Synchronized.test.ts} | 5 +- test/{Tracer.ts => Tracer.test.ts} | 16 +- test/utils/cache/ObservableResource.ts | 14 +- test/utils/cache/WatchableLookup.ts | 1 + test/utils/extend.ts | 31 +- tsconfig.test.json | 3 +- vitest.config.ts | 23 - 83 files changed, 579 insertions(+), 7449 deletions(-) delete mode 100644 .devcontainer.json create mode 100644 .gitpod.Dockerfile create mode 100755 bun.lockb delete mode 100644 pnpm-lock.yaml rename test/{Cause.ts => Cause.test.ts} (91%) rename test/{Config.ts => Config.test.ts} (93%) rename test/{ConfigProvider.ts => ConfigProvider.test.ts} (99%) rename test/{Deferred.ts => Deferred.test.ts} (84%) rename test/Effect/{acquire-release.ts => acquire-release.test.ts} (84%) rename test/Effect/{async.ts => async.test.ts} (97%) rename test/Effect/{caching.ts => caching.test.ts} (95%) rename test/Effect/{cause-rendering.ts => cause-rendering.test.ts} (81%) rename test/Effect/{collecting.ts => collecting.test.ts} (94%) rename test/Effect/{concurrency.ts => concurrency.test.ts} (97%) rename test/Effect/{constructors.ts => constructors.test.ts} (90%) rename test/Effect/{destructors.ts => destructors.test.ts} (92%) rename test/Effect/{environment.ts => environment.test.ts} (97%) rename test/Effect/{error-handling.ts => error-handling.test.ts} (98%) rename test/Effect/{filtering.ts => filtering.test.ts} (98%) rename test/Effect/{finalization.ts => finalization.test.ts} (93%) rename test/Effect/{foreign.ts => foreign.test.ts} (95%) rename test/Effect/{forking.ts => forking.test.ts} (93%) rename test/Effect/{interruption.ts => interruption.test.ts} (94%) rename test/Effect/{join-order.ts => join-order.test.ts} (88%) rename test/Effect/{mapping.ts => mapping.test.ts} (96%) rename test/Effect/{memoization.ts => memoization.test.ts} (95%) rename test/Effect/{promise.ts => promise.test.ts} (89%) rename test/Effect/{provide-runtime.ts => provide-runtime.test.ts} (95%) rename test/Effect/{query-deadlock.ts => query-deadlock.test.ts} (94%) rename test/Effect/{query-nested.ts => query-nested.test.ts} (98%) rename test/Effect/{query.ts => query.test.ts} (99%) rename test/Effect/{racing.ts => racing.test.ts} (91%) rename test/Effect/{repeating.ts => repeating.test.ts} (97%) rename test/Effect/{retrying.ts => retrying.test.ts} (97%) rename test/Effect/{runtimeFlags.ts => runtimeFlags.test.ts} (66%) rename test/Effect/{scheduler.ts => scheduler.test.ts} (95%) rename test/Effect/{scheduling.ts => scheduling.test.ts} (92%) rename test/Effect/{scope-ref.ts => scope-ref.test.ts} (95%) rename test/Effect/{semaphore.ts => semaphore.test.ts} (93%) rename test/Effect/{sequencing.ts => sequencing.test.ts} (93%) rename test/Effect/{stack-safety.ts => stack-safety.test.ts} (95%) rename test/Effect/{structural.ts => structural.test.ts} (98%) rename test/Effect/{sync.ts => sync.test.ts} (93%) rename test/Effect/{tapping.ts => tapping.test.ts} (88%) rename test/Effect/{timeout.ts => timeout.test.ts} (96%) rename test/Effect/{traversing.ts => traversing.test.ts} (97%) rename test/Effect/{tryPromise.ts => tryPromise.test.ts} (97%) rename test/Effect/{validation.ts => validation.test.ts} (98%) rename test/{Exit.ts => Exit.test.ts} (91%) rename test/{Fiber.ts => Fiber.test.ts} (95%) rename test/{FiberRef.ts => FiberRef.test.ts} (98%) rename test/{FiberRefs.ts => FiberRefs.test.ts} (91%) rename test/{Hub.ts => Hub.test.ts} (99%) rename test/{KeyedPool.ts => KeyedPool.test.ts} (98%) rename test/{Layer.ts => Layer.test.ts} (92%) rename test/{Logger.ts => Logger.test.ts} (93%) rename test/{Metric.ts => Metric.test.ts} (97%) rename test/{Pool.ts => Pool.test.ts} (99%) rename test/{Queue.ts => Queue.test.ts} (95%) rename test/{Ref.ts => Ref.test.ts} (98%) rename test/{Reloadable.ts => Reloadable.test.ts} (93%) rename test/{Resource.ts => Resource.test.ts} (95%) rename test/{RuntimeFlags.ts => RuntimeFlags.test.ts} (85%) rename test/{Schedule.ts => Schedule.test.ts} (97%) rename test/{Scope.ts => Scope.test.ts} (86%) rename test/{ScopedCache.ts => ScopedCache.test.ts} (99%) rename test/{ScopedRef.ts => ScopedRef.test.ts} (96%) rename test/{Synchronized.ts => Synchronized.test.ts} (97%) rename test/{Tracer.ts => Tracer.test.ts} (95%) delete mode 100644 vitest.config.ts diff --git a/.devcontainer.json b/.devcontainer.json deleted file mode 100644 index 4b13a55b..00000000 --- a/.devcontainer.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "image": "mcr.microsoft.com/vscode/devcontainers/typescript-node:16", - "customizations": { - "vscode": { - "extensions": [ - "dbaeumer.vscode-eslint" - ] - } - }, - "initializeCommand": "npm install -g pnpm && pnpm install && pnpm run build" -} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ae98a9e7..074c039c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -32,30 +32,19 @@ jobs: uses: HatsuneMiku3939/direnv-action@v1 with: direnvVersion: 2.32.2 - - name: Get pnpm store directory - id: pnpm-cache - run: | - echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" - - uses: actions/cache@v3 - name: Cache pnpm - with: - path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - run: pnpm install - - run: pnpm run build - - run: pnpm run circular - - run: pnpm run test --coverage - - run: pnpm run lint - - run: pnpm run dtslint - - run: pnpm run docs + - run: bun install + - run: bun run build + - run: bun run circular + - run: bun test --coverage + - run: bun run lint + - run: bun run dtslint + - run: bun run docs - name: Create Release Pull Request or Publish id: changesets uses: changesets/action@v1 with: - version: pnpm run version - publish: pnpm exec changeset publish + version: bun run version + publish: bun exec changeset publish env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 875d0a91..fe320c98 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -33,21 +33,10 @@ jobs: uses: HatsuneMiku3939/direnv-action@v1 with: direnvVersion: 2.32.2 - - name: Get pnpm store directory - id: pnpm-cache - run: | - echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" - - uses: actions/cache@v3 - name: Cache pnpm - with: - path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - run: pnpm install - - run: pnpm run build - - run: pnpm run circular - - run: pnpm run test --coverage - - run: pnpm run lint - - run: pnpm run dtslint - - run: pnpm run docs + - run: bun install + - run: bun run build + - run: bun run circular + - run: bun test --coverage + - run: bun run lint + - run: bun run dtslint + - run: bun run docs diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile new file mode 100644 index 00000000..1955e141 --- /dev/null +++ b/.gitpod.Dockerfile @@ -0,0 +1,5 @@ +FROM gitpod/workspace-full + +RUN curl -fsSL https://bun.sh/install | bash +RUN echo 'export BUN_INSTALL="/home/gitpod/.bun"' >> /home/gitpod/.bashrc.d/600-bun | bash && \ + echo 'export PATH="$BUN_INSTALL/bin:$PATH"' >> /home/gitpod/.bashrc.d/600-bun | bash diff --git a/.gitpod.yml b/.gitpod.yml index 81c41226..be94d477 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -1,5 +1,7 @@ +image: + file: .gitpod.Dockerfile tasks: - - init: npm install -g pnpm && pnpm install && pnpm build + - init: bun install && bun run build github: prebuilds: addCheck: true diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 27a2974e..ed39f75d 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -4,14 +4,14 @@ { "label": "clean", "type": "shell", - "command": "direnv exec . pnpm run clean", + "command": "direnv exec . bun run clean", "isBackground": false, "problemMatcher": [] }, { "label": "build-watch", "type": "shell", - "command": "direnv exec . pnpm run build-watch", + "command": "direnv exec . bun run build-watch", "problemMatcher": [ "$tsc-watch" ], @@ -27,7 +27,7 @@ { "label": "build", "type": "shell", - "command": "direnv exec . pnpm run build", + "command": "direnv exec . bun run build", "problemMatcher": [], "isBackground": false }, @@ -37,7 +37,7 @@ "build-watch" ], "type": "shell", - "command": "direnv exec . pnpm run test", + "command": "direnv exec . bun test", "problemMatcher": [] } ] diff --git a/README.md b/README.md index c0490ac7..b79dced2 100644 --- a/README.md +++ b/README.md @@ -31,9 +31,9 @@ We welcome contributions via pull requests! Here are some guidelines to help you 1. Fork the repository and clone it to your local machine. 2. Create a new branch for your changes: `git checkout -b my-new-feature` -3. Install dependencies: `pnpm install` (`pnpm@8.x`) +3. Install dependencies: `bun install` 4. Make your changes and add tests if applicable. -5. Run the tests: `pnpm test` +5. Run the tests: `bu test` 6. Commit your changes: `git commit -am 'Add some feature'` 7. Push your changes to your fork: `git push origin my-new-feature` 8. Open a pull request against our `main` branch. diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..5e1aa24f7cc8de752e65fe5a84086f5f4e63d64a GIT binary patch literal 328827 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�J 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 literal 0 HcmV?d00001 diff --git a/flake.lock b/flake.lock index b2ff7b45..745806d3 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1689068808, - "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", + "lastModified": 1692799911, + "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", "owner": "numtide", "repo": "flake-utils", - "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", + "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", "type": "github" }, "original": { @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1690593349, - "narHash": "sha256-i6jdORO+YiP19pFNeR7oYIIwmzQvdxwNO+BmtATcYpA=", + "lastModified": 1694343207, + "narHash": "sha256-jWi7OwFxU5Owi4k2JmiL1sa/OuBCQtpaAesuj5LXC8w=", "owner": "nixos", "repo": "nixpkgs", - "rev": "11cf5e1c74fe6892e860afeeaf3bfb84fdb7b1c3", + "rev": "78058d810644f5ed276804ce7ea9e82d92bee293", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index d00e9c95..64f1af45 100644 --- a/flake.nix +++ b/flake.nix @@ -17,19 +17,12 @@ }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; - corepackEnable = pkgs.runCommand "corepack-enable" {} '' - mkdir -p $out/bin - ${pkgs.nodejs-18_x}/bin/corepack enable --install-directory $out/bin - ''; in { formatter = pkgs.alejandra; devShells = { default = pkgs.mkShell { - buildInputs = with pkgs; [ - nodejs-18_x - corepackEnable - ]; + buildInputs = with pkgs; [bun]; }; }; }); diff --git a/package.json b/package.json index 51524e7d..0327196d 100644 --- a/package.json +++ b/package.json @@ -27,25 +27,22 @@ "functional-programming" ], "scripts": { - "example": "ts-node --project tsconfig.examples.json", - "version": "changeset version && pnpm install --no-frozen-lockfile && pnpm run docs-update", - "release": "pnpm run build && changeset publish", + "version": "changeset version && bun install && bun run docs-update", + "release": "bun run build && changeset publish", "clean": "rimraf build tsbuildinfo dist .cache", - "build": "pnpm build-all && pnpm build-pack", + "build": "bun build-all && bun build-pack", "build-cjs": "babel build/esm --config-file ./.babel.cjs.json --out-dir build/cjs --out-file-extension .js --source-maps", "build-mjs": "babel build/esm --config-file ./.babel.mjs.json --out-dir build/mjs --out-file-extension .mjs --source-maps", "build-post": "build-utils pack-v1", - "build-pack": "concurrently \"pnpm build-cjs\" \"pnpm build-mjs\" && pnpm build-post", + "build-pack": "concurrently \"bun build-cjs\" \"bun build-mjs\" && bun build-post", "build-all": "tsc -b tsconfig.json", "build-watch": "tsc -b tsconfig.json --watch", "lint": "eslint src test examples", - "autofix": "pnpm lint --fix", + "autofix": "bun lint --fix", "tc": "tsc --noEmit", "docs": "docgen", "docs-update": "git add --force --all docs/modules || true", "circular": "madge --ts-config ./tsconfig.madge.json --circular --no-color --no-spinner --warning build/esm", - "test": "vitest", - "coverage": "vitest run --coverage", "dtslint": "dtslint --expectOnly dtslint" }, "exports": { @@ -56,7 +53,6 @@ "require": "./build/cjs/*.js" } }, - "packageManager": "pnpm@8.6.10", "devDependencies": { "@babel/cli": "^7.22.10", "@babel/core": "^7.22.11", @@ -75,8 +71,9 @@ "@typescript-eslint/eslint-plugin": "^6.5.0", "@typescript-eslint/parser": "^6.5.0", "@vitejs/plugin-react": "^4.0.4", - "@vitest/coverage-v8": "^0.34.3", "babel-plugin-annotate-pure-calls": "^0.4.0", + "bun": "^1.0.0", + "bun-types": "^1.0.1", "concurrently": "^8.2.1", "error-stack-parser": "^2.1.4", "eslint": "^8.48.0", @@ -90,17 +87,14 @@ "madge": "^6.1.0", "rimraf": "^5.0.1", "stackframe": "^1.3.4", - "ts-node": "^10.9.1", - "typescript": "^5.2.2", - "vite": "^4.4.9", - "vitest": "0.34.3" + "typescript": "^5.2.2" + }, + "peerDependencies": { + "@effect/data": "^0.18.5" }, "config": { "side": [], "modules": [], "global": [] - }, - "peerDependencies": { - "@effect/data": "^0.18.5" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 5eb19ca2..00000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,6862 +0,0 @@ -lockfileVersion: '6.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -devDependencies: - '@babel/cli': - specifier: ^7.22.10 - version: 7.22.10(@babel/core@7.22.11) - '@babel/core': - specifier: ^7.22.11 - version: 7.22.11 - '@babel/plugin-transform-modules-commonjs': - specifier: ^7.22.11 - version: 7.22.11(@babel/core@7.22.11) - '@changesets/changelog-github': - specifier: ^0.4.8 - version: 0.4.8 - '@changesets/cli': - specifier: ^2.26.2 - version: 2.26.2 - '@definitelytyped/dtslint': - specifier: ^0.0.176 - version: 0.0.176(typescript@5.2.2) - '@effect/babel-plugin': - specifier: ^0.2.0 - version: 0.2.0(@babel/core@7.22.11) - '@effect/build-utils': - specifier: ^0.1.4 - version: 0.1.4 - '@effect/data': - specifier: ^0.18.5 - version: 0.18.5 - '@effect/docgen': - specifier: ^0.1.6 - version: 0.1.6(@types/node@20.5.7)(typescript@5.2.2) - '@effect/eslint-plugin': - specifier: ^0.1.2 - version: 0.1.2 - '@effect/language-service': - specifier: ^0.0.21 - version: 0.0.21 - '@types/chai': - specifier: ^4.3.5 - version: 4.3.5 - '@types/node': - specifier: ^20.5.7 - version: 20.5.7 - '@typescript-eslint/eslint-plugin': - specifier: ^6.5.0 - version: 6.5.0(@typescript-eslint/parser@6.5.0)(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/parser': - specifier: ^6.5.0 - version: 6.5.0(eslint@8.48.0)(typescript@5.2.2) - '@vitejs/plugin-react': - specifier: ^4.0.4 - version: 4.0.4(vite@4.4.9) - '@vitest/coverage-v8': - specifier: ^0.34.3 - version: 0.34.3(vitest@0.34.3) - babel-plugin-annotate-pure-calls: - specifier: ^0.4.0 - version: 0.4.0(@babel/core@7.22.11) - concurrently: - specifier: ^8.2.1 - version: 8.2.1 - error-stack-parser: - specifier: ^2.1.4 - version: 2.1.4 - eslint: - specifier: ^8.48.0 - version: 8.48.0 - eslint-import-resolver-typescript: - specifier: ^3.6.0 - version: 3.6.0(@typescript-eslint/parser@6.5.0)(eslint-plugin-import@2.28.1)(eslint@8.48.0) - eslint-plugin-codegen: - specifier: 0.17.0 - version: 0.17.0 - eslint-plugin-deprecation: - specifier: ^1.5.0 - version: 1.5.0(eslint@8.48.0)(typescript@5.2.2) - eslint-plugin-import: - specifier: ^2.28.1 - version: 2.28.1(@typescript-eslint/parser@6.5.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) - eslint-plugin-simple-import-sort: - specifier: ^10.0.0 - version: 10.0.0(eslint@8.48.0) - eslint-plugin-sort-destructure-keys: - specifier: ^1.5.0 - version: 1.5.0(eslint@8.48.0) - fast-check: - specifier: ^3.12.0 - version: 3.12.0 - madge: - specifier: ^6.1.0 - version: 6.1.0(typescript@5.2.2) - rimraf: - specifier: ^5.0.1 - version: 5.0.1 - stackframe: - specifier: ^1.3.4 - version: 1.3.4 - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@20.5.7)(typescript@5.2.2) - typescript: - specifier: ^5.2.2 - version: 5.2.2 - vite: - specifier: ^4.4.9 - version: 4.4.9(@types/node@20.5.7) - vitest: - specifier: 0.34.3 - version: 0.34.3 - -packages: - - /@aashutoshrathi/word-wrap@1.2.6: - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - dev: true - - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 - dev: true - - /@babel/cli@7.22.10(@babel/core@7.22.11): - resolution: {integrity: sha512-rM9ZMmaII630zGvtMtQ3P4GyHs28CHLYE9apLG7L8TgaSqcfoIGrlLSLsh4Q8kDTdZQQEXZm1M0nQtOvU/2heg==} - engines: {node: '>=6.9.0'} - hasBin: true - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@jridgewell/trace-mapping': 0.3.19 - commander: 4.1.1 - convert-source-map: 1.9.0 - fs-readdir-recursive: 1.1.0 - glob: 7.2.3 - make-dir: 2.1.0 - slash: 2.0.0 - optionalDependencies: - '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 - chokidar: 3.5.3 - dev: true - - /@babel/code-frame@7.22.13: - resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.22.13 - chalk: 2.4.2 - dev: true - - /@babel/compat-data@7.22.9: - resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core@7.22.11: - resolution: {integrity: sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.10 - '@babel/helper-compilation-targets': 7.22.10 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) - '@babel/helpers': 7.22.11 - '@babel/parser': 7.22.14 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.11 - '@babel/types': 7.22.11 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator@7.12.17: - resolution: {integrity: sha512-DSA7ruZrY4WI8VxuS1jWSRezFnghEoYEFrZcw9BizQRmOZiUsiHl59+qEARGPqPikwA/GPTyRCi7isuCK/oyqg==} - dependencies: - '@babel/types': 7.22.11 - jsesc: 2.5.2 - source-map: 0.5.7 - dev: true - - /@babel/generator@7.22.10: - resolution: {integrity: sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 - jsesc: 2.5.2 - dev: true - - /@babel/helper-compilation-targets@7.22.10: - resolution: {integrity: sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.10 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - - /@babel/helper-environment-visitor@7.22.5: - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-function-name@7.22.5: - resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.11 - dev: true - - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - dev: true - - /@babel/helper-module-imports@7.22.5: - resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - dev: true - - /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.11): - resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.5 - dev: true - - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - dev: true - - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - dev: true - - /@babel/helper-string-parser@7.22.5: - resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier@7.22.5: - resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-option@7.22.5: - resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helpers@7.22.11: - resolution: {integrity: sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.11 - '@babel/types': 7.22.11 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/highlight@7.22.13: - resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - - /@babel/parser@7.21.8: - resolution: {integrity: sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.22.11 - dev: true - - /@babel/parser@7.22.14: - resolution: {integrity: sha512-1KucTHgOvaw/LzCVrEOAyXkr9rQlp0A1HiHRYnSUE9dmb8PvPW7o5sscg+5169r54n3vGlbx6GevTE/Iw/P3AQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.22.11 - dev: true - - /@babel/plugin-transform-modules-commonjs@7.22.11(@babel/core@7.22.11): - resolution: {integrity: sha512-o2+bg7GDS60cJMgz9jWqRUsWkMzLCxp+jFDeDUT5sjRlAxcJWZ2ylNdI7QQ2+CH5hWu7OnN+Cv3htt7AkSf96g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - dev: true - - /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.11): - resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.11): - resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/runtime@7.22.11: - resolution: {integrity: sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.0 - dev: true - - /@babel/runtime@7.22.5: - resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - dev: true - - /@babel/template@7.22.5: - resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/parser': 7.22.14 - '@babel/types': 7.22.11 - dev: true - - /@babel/traverse@7.21.5: - resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.10 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.21.8 - '@babel/types': 7.22.11 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/traverse@7.22.11: - resolution: {integrity: sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.10 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.14 - '@babel/types': 7.22.11 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types@7.22.11: - resolution: {integrity: sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - to-fast-properties: 2.0.0 - dev: true - - /@bcoe/v8-coverage@0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true - - /@changesets/apply-release-plan@6.1.4: - resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} - dependencies: - '@babel/runtime': 7.22.5 - '@changesets/config': 2.3.1 - '@changesets/get-version-range-type': 0.3.2 - '@changesets/git': 2.0.0 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 2.8.8 - resolve-from: 5.0.0 - semver: 7.5.3 - dev: true - - /@changesets/assemble-release-plan@5.2.4: - resolution: {integrity: sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==} - dependencies: - '@babel/runtime': 7.22.5 - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - semver: 7.5.3 - dev: true - - /@changesets/changelog-git@0.1.14: - resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} - dependencies: - '@changesets/types': 5.2.1 - dev: true - - /@changesets/changelog-github@0.4.8: - resolution: {integrity: sha512-jR1DHibkMAb5v/8ym77E4AMNWZKB5NPzw5a5Wtqm1JepAuIF+hrKp2u04NKM14oBZhHglkCfrla9uq8ORnK/dw==} - dependencies: - '@changesets/get-github-info': 0.5.2 - '@changesets/types': 5.2.1 - dotenv: 8.6.0 - transitivePeerDependencies: - - encoding - dev: true - - /@changesets/cli@2.26.2: - resolution: {integrity: sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==} - hasBin: true - dependencies: - '@babel/runtime': 7.22.5 - '@changesets/apply-release-plan': 6.1.4 - '@changesets/assemble-release-plan': 5.2.4 - '@changesets/changelog-git': 0.1.14 - '@changesets/config': 2.3.1 - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6 - '@changesets/get-release-plan': 3.0.17 - '@changesets/git': 2.0.0 - '@changesets/logger': 0.0.5 - '@changesets/pre': 1.0.14 - '@changesets/read': 0.5.9 - '@changesets/types': 5.2.1 - '@changesets/write': 0.2.3 - '@manypkg/get-packages': 1.1.3 - '@types/is-ci': 3.0.0 - '@types/semver': 7.5.0 - ansi-colors: 4.1.3 - chalk: 2.4.2 - enquirer: 2.3.6 - external-editor: 3.1.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - is-ci: 3.0.1 - meow: 6.1.1 - outdent: 0.5.0 - p-limit: 2.3.0 - preferred-pm: 3.0.3 - resolve-from: 5.0.0 - semver: 7.5.3 - spawndamnit: 2.0.0 - term-size: 2.2.1 - tty-table: 4.2.1 - dev: true - - /@changesets/config@2.3.1: - resolution: {integrity: sha512-PQXaJl82CfIXddUOppj4zWu+987GCw2M+eQcOepxN5s+kvnsZOwjEJO3DH9eVy+OP6Pg/KFEWdsECFEYTtbg6w==} - dependencies: - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6 - '@changesets/logger': 0.0.5 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.5 - dev: true - - /@changesets/errors@0.1.4: - resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} - dependencies: - extendable-error: 0.1.7 - dev: true - - /@changesets/get-dependents-graph@1.3.6: - resolution: {integrity: sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==} - dependencies: - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - chalk: 2.4.2 - fs-extra: 7.0.1 - semver: 7.5.3 - dev: true - - /@changesets/get-github-info@0.5.2: - resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==} - dependencies: - dataloader: 1.4.0 - node-fetch: 2.6.11 - transitivePeerDependencies: - - encoding - dev: true - - /@changesets/get-release-plan@3.0.17: - resolution: {integrity: sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==} - dependencies: - '@babel/runtime': 7.22.5 - '@changesets/assemble-release-plan': 5.2.4 - '@changesets/config': 2.3.1 - '@changesets/pre': 1.0.14 - '@changesets/read': 0.5.9 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - dev: true - - /@changesets/get-version-range-type@0.3.2: - resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} - dev: true - - /@changesets/git@2.0.0: - resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} - dependencies: - '@babel/runtime': 7.22.5 - '@changesets/errors': 0.1.4 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - micromatch: 4.0.5 - spawndamnit: 2.0.0 - dev: true - - /@changesets/logger@0.0.5: - resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} - dependencies: - chalk: 2.4.2 - dev: true - - /@changesets/parse@0.3.16: - resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} - dependencies: - '@changesets/types': 5.2.1 - js-yaml: 3.14.1 - dev: true - - /@changesets/pre@1.0.14: - resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} - dependencies: - '@babel/runtime': 7.22.5 - '@changesets/errors': 0.1.4 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - dev: true - - /@changesets/read@0.5.9: - resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} - dependencies: - '@babel/runtime': 7.22.5 - '@changesets/git': 2.0.0 - '@changesets/logger': 0.0.5 - '@changesets/parse': 0.3.16 - '@changesets/types': 5.2.1 - chalk: 2.4.2 - fs-extra: 7.0.1 - p-filter: 2.1.0 - dev: true - - /@changesets/types@4.1.0: - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - dev: true - - /@changesets/types@5.2.1: - resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} - dev: true - - /@changesets/write@0.2.3: - resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} - dependencies: - '@babel/runtime': 7.22.5 - '@changesets/types': 5.2.1 - fs-extra: 7.0.1 - human-id: 1.0.2 - prettier: 2.8.8 - dev: true - - /@cspotcode/source-map-support@0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: true - - /@definitelytyped/dts-critic@0.0.176(typescript@5.2.2): - resolution: {integrity: sha512-I1RLkKSZaEie/G2JOww22lF0YtDxpaf9V0nKN5IfbFgZutBZj6SgX0ClWN/IHVSAosCF5uDS2h/vitkv1xX62w==} - engines: {node: '>=10.17.0'} - peerDependencies: - typescript: '*' - dependencies: - '@definitelytyped/header-parser': 0.0.176 - command-exists: 1.2.9 - rimraf: 3.0.2 - semver: 7.5.4 - tmp: 0.2.1 - typescript: 5.2.2 - yargs: 15.4.1 - dev: true - - /@definitelytyped/dtslint@0.0.176(typescript@5.2.2): - resolution: {integrity: sha512-wDzRXukDxOS7oM+Rx8rHnR6G29rbfpcQfFcnYUypcGvOF64UzX8kIg1Jc9/hrDokz4pqVm+5I/4O0qvzUPTuIw==} - engines: {node: '>=10.0.0'} - hasBin: true - peerDependencies: - typescript: '>= 3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.7.0-dev || >= 3.8.0-dev || >= 3.9.0-dev || >= 4.0.0-dev || >=5.0.0-dev' - dependencies: - '@definitelytyped/dts-critic': 0.0.176(typescript@5.2.2) - '@definitelytyped/header-parser': 0.0.176 - '@definitelytyped/typescript-versions': 0.0.176 - '@definitelytyped/utils': 0.0.176 - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) - eslint: 8.48.0 - fs-extra: 6.0.1 - json-stable-stringify: 1.0.2 - strip-json-comments: 2.0.1 - tslint: 5.14.0(typescript@5.2.2) - typescript: 5.2.2 - yargs: 15.4.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@definitelytyped/header-parser@0.0.176: - resolution: {integrity: sha512-HYxONYeC2CesHiL/JD26eCloPHexsNkyzFfqCCyXoNBcr2+0dgGhDoJ6gjNgwYeKo3NZVfCR6ZYrEzH/MWjTBA==} - dependencies: - '@definitelytyped/typescript-versions': 0.0.176 - '@types/parsimmon': 1.10.6 - parsimmon: 1.18.1 - dev: true - - /@definitelytyped/typescript-versions@0.0.176: - resolution: {integrity: sha512-1iwxOE5w+gFF+GXTjGyz3nMZXGmqcjEEGJg3NjnB59hYQ5qANogOkS98V+XdRU9LMTvOTtfVSDFEhr32TmMDKA==} - dev: true - - /@definitelytyped/utils@0.0.176: - resolution: {integrity: sha512-NN07S3EDPIkzkSDWo5s+wc2MkhmT72O/rkAnK+ezi54wuur4QpyoJxjN2yy+4wdNAFPECFddnlUE08u1j9Ffaw==} - dependencies: - '@definitelytyped/typescript-versions': 0.0.176 - '@qiwi/npm-registry-client': 8.9.1 - '@types/node': 14.18.56 - charm: 1.0.2 - fs-extra: 8.1.0 - fstream: 1.0.12 - tar: 6.1.15 - tar-stream: 2.2.0 - dev: true - - /@dependents/detective-less@3.0.2: - resolution: {integrity: sha512-1YUvQ+e0eeTWAHoN8Uz2x2U37jZs6IGutiIE5LXId7cxfUGhtZjzxE06FdUiuiRrW+UE0vNCdSNPH2lY4dQCOQ==} - engines: {node: '>=12'} - dependencies: - gonzales-pe: 4.3.0 - node-source-walk: 5.0.2 - dev: true - - /@dprint/formatter@0.2.0: - resolution: {integrity: sha512-E1q1JaOPeEUBhG//IUayqJQvNpqprZ0OCF8B/bIhUqSsMIp0Y74PgF8JPvDCrOdq43qiGUYAavVO8iCBHOoU/A==} - dev: true - - /@dprint/typescript@0.85.1: - resolution: {integrity: sha512-rPwwm/RrFIolz6xHa8Kzpshuwpe+xu/XcEw9iUmRF2tnyIwxxaW7XoFKaQ+GfPju81cKpH4vJeq7/2IizKvyjg==} - dev: true - - /@effect/babel-plugin@0.2.0(@babel/core@7.22.11): - resolution: {integrity: sha512-P6yBZmiKWkm6tzzHonqTQWzj92bguPoRKQzUw1yZh3wke+c35XoqvJjK2Cky6vgw/z4/YAbB9nikrb3rCqYetQ==} - peerDependencies: - '@babel/core': ^6.0.0-0 || 7.x - dependencies: - '@babel/core': 7.22.11 - dev: true - - /@effect/build-utils@0.1.4: - resolution: {integrity: sha512-eQs28z44SHdDR0lFyO0e+0R6+kx0yNqzXOOKgbQOssDaoqXyEutiFfde2aSWBvcQRS7yt0WW6dYNQ2y7jYFK9Q==} - engines: {node: '>=16.17.1'} - hasBin: true - dev: true - - /@effect/data@0.18.5: - resolution: {integrity: sha512-VFPJ0prGq3eF6/eZYKVI/1IC1purdGJXEHJC1ggKynPko03upjtmeCeCsEyMiY12DzVIAuME425JndiFb7m2xw==} - dev: true - - /@effect/docgen@0.1.6(@types/node@20.5.7)(typescript@5.2.2): - resolution: {integrity: sha512-0Kj4qAn1l+zddX7F3+MzBeXsTIygT1L8BrDsYt1g3soGSFE4r9m5NMoSaZj6bZ6zVUM62m9rzp6TldZ1nj6JzA==} - engines: {node: '>=16.17.1'} - hasBin: true - peerDependencies: - typescript: ^5.x - dependencies: - doctrine: 3.0.0 - fs-extra: 11.1.1 - glob: 10.3.3 - markdown-toc: github.com/effect-ts/markdown-toc/4bfeb0f140105440ea0d12df2fa23199cc3ec1d5 - prettier: 2.8.8 - rimraf: 5.0.1 - ts-morph: 19.0.0 - ts-node: 10.9.1(@types/node@20.5.7)(typescript@5.2.2) - tsconfck: 2.1.2(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@types/node' - dev: true - - /@effect/eslint-plugin@0.1.2: - resolution: {integrity: sha512-spBoeM9kF0rTM1JP8dfaubVUqUrkfijIUKqE6bh4gDw9qMYweT1HV9iXLzF5Dsj589wwVfk6sx5uqO09C4+w2w==} - dependencies: - '@dprint/formatter': 0.2.0 - '@dprint/typescript': 0.85.1 - diff: 5.1.0 - dev: true - - /@effect/language-service@0.0.21: - resolution: {integrity: sha512-e8vfKbjnbYiyneBincEFS0tzXluopGK77OkVFbPRtUbNDS5tJfb+jiwOQEiqASDsadcZmd+9J9+Q6v/z7GuN2g==} - dev: true - - /@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.48.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/regexpp@4.8.0: - resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - - /@eslint/eslintrc@2.1.2: - resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.21.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/js@8.48.0: - resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@humanwhocodes/config-array@0.11.11: - resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: true - - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: true - - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true - - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 - dev: true - - /@jest/types@26.6.2: - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 20.5.7 - '@types/yargs': 15.0.15 - chalk: 4.1.2 - dev: true - - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.19 - dev: true - - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true - - /@jridgewell/trace-mapping@0.3.19: - resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - - /@manypkg/find-root@1.1.0: - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - dependencies: - '@babel/runtime': 7.22.5 - '@types/node': 12.20.55 - find-up: 4.1.0 - fs-extra: 8.1.0 - dev: true - - /@manypkg/get-packages@1.1.3: - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - dependencies: - '@babel/runtime': 7.22.5 - '@changesets/types': 4.1.0 - '@manypkg/find-root': 1.1.0 - fs-extra: 8.1.0 - globby: 11.1.0 - read-yaml-file: 1.1.0 - dev: true - - /@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3: - resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} - requiresBuild: true - dev: true - optional: true - - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true - - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: true - - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true - dev: true - optional: true - - /@qiwi/npm-registry-client@8.9.1: - resolution: {integrity: sha512-rZF+mG+NfijR0SHphhTLHRr4aM4gtfdwoAMY6we2VGQam8vkN1cxGG1Lg/Llrj8Dd0Mu6VjdFQRyMMRZxtZR2A==} - dependencies: - concat-stream: 2.0.0 - graceful-fs: 4.2.11 - normalize-package-data: 3.0.3 - npm-package-arg: 8.1.5 - once: 1.4.0 - request: 2.88.2 - retry: 0.12.0 - safe-buffer: 5.2.1 - semver: 7.5.4 - slide: 1.1.6 - ssri: 8.0.1 - optionalDependencies: - npmlog: 4.1.2 - dev: true - - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: true - - /@ts-morph/common@0.20.0: - resolution: {integrity: sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==} - dependencies: - fast-glob: 3.3.1 - minimatch: 7.4.6 - mkdirp: 2.1.6 - path-browserify: 1.0.1 - dev: true - - /@tsconfig/node10@1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: true - - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true - - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true - - /@tsconfig/node16@1.0.3: - resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} - dev: true - - /@types/chai-subset@1.3.3: - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} - dependencies: - '@types/chai': 4.3.5 - dev: true - - /@types/chai@4.3.5: - resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} - dev: true - - /@types/is-ci@3.0.0: - resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} - dependencies: - ci-info: 3.8.0 - dev: true - - /@types/istanbul-lib-coverage@2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: true - - /@types/istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - dev: true - - /@types/istanbul-reports@3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} - dependencies: - '@types/istanbul-lib-report': 3.0.0 - dev: true - - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} - dev: true - - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true - - /@types/minimist@1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - dev: true - - /@types/node@12.20.55: - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - dev: true - - /@types/node@14.18.56: - resolution: {integrity: sha512-+k+57NVS9opgrEn5l9c0gvD1r6C+PtyhVE4BTnMMRwiEA8ZO8uFcs6Yy2sXIy0eC95ZurBtRSvhZiHXBysbl6w==} - dev: true - - /@types/node@20.5.7: - resolution: {integrity: sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==} - dev: true - - /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - dev: true - - /@types/parsimmon@1.10.6: - resolution: {integrity: sha512-FwAQwMRbkhx0J6YELkwIpciVzCcgEqXEbIrIn3a2P5d3kGEHQ3wVhlN3YdVepYP+bZzCYO6OjmD4o9TGOZ40rA==} - dev: true - - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} - dev: true - - /@types/semver@7.5.1: - resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} - dev: true - - /@types/stack-utils@2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - dev: true - - /@types/yargs-parser@21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - dev: true - - /@types/yargs@15.0.15: - resolution: {integrity: sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==} - dependencies: - '@types/yargs-parser': 21.0.0 - dev: true - - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) - debug: 4.3.4 - eslint: 8.48.0 - graphemer: 1.4.0 - ignore: 5.2.4 - natural-compare-lite: 1.4.0 - semver: 7.5.4 - tsutils: 3.21.0(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/eslint-plugin@6.5.0(@typescript-eslint/parser@6.5.0)(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-2pktILyjvMaScU6iK3925uvGU87E+N9rh372uGZgiMYwafaw9SXq86U04XPq3UH6tzRvNgBsub6x2DacHc33lw==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 6.5.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.5.0 - '@typescript-eslint/type-utils': 6.5.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.5.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.5.0 - debug: 4.3.4 - eslint: 8.48.0 - graphemer: 1.4.0 - ignore: 5.2.4 - natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@5.62.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - debug: 4.3.4 - eslint: 8.48.0 - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@6.5.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-LMAVtR5GN8nY0G0BadkG0XIe4AcNMeyEy3DyhKGAh9k4pLSMBO7rF29JvDBpZGCmp5Pgz5RLHP6eCpSYZJQDuQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 6.5.0 - '@typescript-eslint/types': 6.5.0 - '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.5.0 - debug: 4.3.4 - eslint: 8.48.0 - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - dev: true - - /@typescript-eslint/scope-manager@6.5.0: - resolution: {integrity: sha512-A8hZ7OlxURricpycp5kdPTH3XnjG85UpJS6Fn4VzeoH4T388gQJ/PGP4ole5NfKt4WDVhmLaQ/dBLNDC4Xl/Kw==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.5.0 - '@typescript-eslint/visitor-keys': 6.5.0 - dev: true - - /@typescript-eslint/type-utils@5.62.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) - debug: 4.3.4 - eslint: 8.48.0 - tsutils: 3.21.0(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/type-utils@6.5.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-f7OcZOkRivtujIBQ4yrJNIuwyCQO1OjocVqntl9dgSIZAdKqicj3xFDqDOzHDlGCZX990LqhLQXWRnQvsapq8A==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.5.0(eslint@8.48.0)(typescript@5.2.2) - debug: 4.3.4 - eslint: 8.48.0 - ts-api-utils: 1.0.2(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/types@4.33.0: - resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - dev: true - - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@typescript-eslint/types@6.5.0: - resolution: {integrity: sha512-eqLLOEF5/lU8jW3Bw+8auf4lZSbbljHR2saKnYqON12G/WsJrGeeDHWuQePoEf9ro22+JkbPfWQwKEC5WwLQ3w==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true - - /@typescript-eslint/typescript-estree@4.33.0(typescript@3.9.10): - resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/visitor-keys': 4.33.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@3.9.10) - typescript: 3.9.10 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@6.5.0(typescript@5.2.2): - resolution: {integrity: sha512-q0rGwSe9e5Kk/XzliB9h2LBc9tmXX25G0833r7kffbl5437FPWb2tbpIV9wAATebC/018pGa9fwPDuvGN+LxWQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 6.5.0 - '@typescript-eslint/visitor-keys': 6.5.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/utils@5.62.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.1 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - eslint: 8.48.0 - eslint-scope: 5.1.1 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/utils@6.5.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-9nqtjkNykFzeVtt9Pj6lyR9WEdd8npPhhIPM992FWVkZuS6tmxHfGVnlUcjpUP2hv8r4w35nT33mlxd+Be1ACQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.1 - '@typescript-eslint/scope-manager': 6.5.0 - '@typescript-eslint/types': 6.5.0 - '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.2.2) - eslint: 8.48.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/visitor-keys@4.33.0: - resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - dependencies: - '@typescript-eslint/types': 4.33.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@typescript-eslint/visitor-keys@6.5.0: - resolution: {integrity: sha512-yCB/2wkbv3hPsh02ZS8dFQnij9VVQXJMN/gbQsaaY+zxALkZnxa/wagvLEFsAWMPv7d7lxQmNsIzGU1w/T/WyA==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.5.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@vitejs/plugin-react@4.0.4(vite@4.4.9): - resolution: {integrity: sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.11) - react-refresh: 0.14.0 - vite: 4.4.9(@types/node@20.5.7) - transitivePeerDependencies: - - supports-color - dev: true - - /@vitest/coverage-v8@0.34.3(vitest@0.34.3): - resolution: {integrity: sha512-bNjP0RHe8UxdklCigZlk6FVCNbOiqVjWnpZJ1zKixpvb7YHSaZiN/w+mzpvXIoqyxyePzKC+L+G1oj7SB20PJw==} - peerDependencies: - vitest: '>=0.32.0 <1' - dependencies: - '@ampproject/remapping': 2.2.1 - '@bcoe/v8-coverage': 0.2.3 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.6 - magic-string: 0.30.3 - picocolors: 1.0.0 - std-env: 3.4.3 - test-exclude: 6.0.0 - v8-to-istanbul: 9.1.0 - vitest: 0.34.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@vitest/expect@0.34.3: - resolution: {integrity: sha512-F8MTXZUYRBVsYL1uoIft1HHWhwDbSzwAU9Zgh8S6WFC3YgVb4AnFV2GXO3P5Em8FjEYaZtTnQYoNwwBrlOMXgg==} - dependencies: - '@vitest/spy': 0.34.3 - '@vitest/utils': 0.34.3 - chai: 4.3.8 - dev: true - - /@vitest/runner@0.34.3: - resolution: {integrity: sha512-lYNq7N3vR57VMKMPLVvmJoiN4bqwzZ1euTW+XXYH5kzr3W/+xQG3b41xJn9ChJ3AhYOSoweu974S1V3qDcFESA==} - dependencies: - '@vitest/utils': 0.34.3 - p-limit: 4.0.0 - pathe: 1.1.1 - dev: true - - /@vitest/snapshot@0.34.3: - resolution: {integrity: sha512-QyPaE15DQwbnIBp/yNJ8lbvXTZxS00kRly0kfFgAD5EYmCbYcA+1EEyRalc93M0gosL/xHeg3lKAClIXYpmUiQ==} - dependencies: - magic-string: 0.30.3 - pathe: 1.1.1 - pretty-format: 29.6.3 - dev: true - - /@vitest/spy@0.34.3: - resolution: {integrity: sha512-N1V0RFQ6AI7CPgzBq9kzjRdPIgThC340DGjdKdPSE8r86aUSmeliTUgkTqLSgtEwWWsGfBQ+UetZWhK0BgJmkQ==} - dependencies: - tinyspy: 2.1.1 - dev: true - - /@vitest/utils@0.34.3: - resolution: {integrity: sha512-kiSnzLG6m/tiT0XEl4U2H8JDBjFtwVlaE8I3QfGiMFR0QvnRDfYfdP3YvTBWM/6iJDAyaPY6yVQiCTUc7ZzTHA==} - dependencies: - diff-sequences: 29.6.3 - loupe: 2.3.6 - pretty-format: 29.6.3 - dev: true - - /acorn-jsx@5.3.2(acorn@8.10.0): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.10.0 - dev: true - - /acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - dev: true - - /acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - - /ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - dev: true - - /ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - dev: true - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: true - - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - dev: true - - /ansi-styles@2.2.1: - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} - engines: {node: '>=0.10.0'} - dev: true - - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true - - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: true - - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true - - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: true - - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: true - - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - requiresBuild: true - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - optional: true - - /app-module-path@2.2.0: - resolution: {integrity: sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==} - dev: true - - /aproba@1.2.0: - resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} - requiresBuild: true - dev: true - optional: true - - /are-we-there-yet@1.1.7: - resolution: {integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==} - requiresBuild: true - dependencies: - delegates: 1.0.0 - readable-stream: 2.3.8 - dev: true - optional: true - - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true - - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} - dependencies: - call-bind: 1.0.2 - is-array-buffer: 3.0.2 - dev: true - - /array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - get-intrinsic: 1.2.1 - is-string: 1.0.7 - dev: true - - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true - - /array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 - get-intrinsic: 1.2.1 - dev: true - - /array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 - dev: true - - /array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 - dev: true - - /arraybuffer.prototype.slice@1.0.1: - resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.2 - define-properties: 1.2.0 - get-intrinsic: 1.2.1 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 - dev: true - - /arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - dev: true - - /asn1@0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - dependencies: - safer-buffer: 2.1.2 - dev: true - - /assert-plus@1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - dev: true - - /assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true - - /ast-module-types@2.7.1: - resolution: {integrity: sha512-Rnnx/4Dus6fn7fTqdeLEAn5vUll5w7/vts0RN608yFa6si/rDOUonlIIiwugHBFWjylHjxm9owoSZn71KwG4gw==} - dev: true - - /ast-module-types@3.0.0: - resolution: {integrity: sha512-CMxMCOCS+4D+DkOQfuZf+vLrSEmY/7xtORwdxs4wtcC1wVgvk2MqFFTwQCFhvWsI4KPU9lcWXPI8DgRiz+xetQ==} - engines: {node: '>=6.0'} - dev: true - - /ast-module-types@4.0.0: - resolution: {integrity: sha512-Kd0o8r6CDazJGCRzs8Ivpn0xj19oNKrULhoJFzhGjRsLpekF2zyZs9Ukz+JvZhWD6smszfepakTFhAaYpsI12g==} - engines: {node: '>=12.0'} - dev: true - - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true - - /autolinker@0.28.1: - resolution: {integrity: sha512-zQAFO1Dlsn69eXaO6+7YZc+v84aquQKbwpzCE3L0stj56ERn9hutFxPopViLjo9G+rWwjozRhgS5KJ25Xy19cQ==} - dependencies: - gulp-header: 1.8.12 - dev: true - - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - dev: true - - /aws-sign2@0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - dev: true - - /aws4@1.12.0: - resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} - dev: true - - /babel-code-frame@6.26.0: - resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==} - dependencies: - chalk: 1.1.3 - esutils: 2.0.3 - js-tokens: 3.0.2 - dev: true - - /babel-plugin-annotate-pure-calls@0.4.0(@babel/core@7.22.11): - resolution: {integrity: sha512-oi4M/PWUJOU9ZyRGoPTfPMqdyMp06jbJAomd3RcyYuzUtBOddv98BqLm96Lucpi2QFoQHkdGQt0ACvw7VzVEQA==} - peerDependencies: - '@babel/core': ^6.0.0-0 || 7.x - dependencies: - '@babel/core': 7.22.11 - dev: true - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true - - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true - - /bcrypt-pbkdf@1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - dependencies: - tweetnacl: 0.14.5 - dev: true - - /better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} - dependencies: - is-windows: 1.0.2 - dev: true - - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - requiresBuild: true - dev: true - optional: true - - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: true - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - dev: true - - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - - /breakword@1.0.5: - resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} - dependencies: - wcwidth: 1.0.1 - dev: true - - /browserslist@4.21.10: - resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001525 - electron-to-chromium: 1.4.507 - node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.10) - dev: true - - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: true - - /builtin-modules@1.1.1: - resolution: {integrity: sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==} - engines: {node: '>=0.10.0'} - dev: true - - /builtins@1.0.3: - resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} - dev: true - - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: true - - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.2.1 - dev: true - - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true - - /camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - dev: true - - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true - - /caniuse-lite@1.0.30001525: - resolution: {integrity: sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q==} - dev: true - - /caseless@0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - dev: true - - /chai@4.3.8: - resolution: {integrity: sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==} - engines: {node: '>=4'} - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.2 - deep-eql: 4.1.3 - get-func-name: 2.0.0 - loupe: 2.3.6 - pathval: 1.1.1 - type-detect: 4.0.8 - dev: true - - /chalk@1.1.3: - resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 - dev: true - - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true - - /charm@1.0.2: - resolution: {integrity: sha512-wqW3VdPnlSWT4eRiYX+hcs+C6ViBPUWk1qTCd+37qw9kEm/a5n2qcyQDMBWvSYKN/ctqZzeXNQaeBjOetJJUkw==} - dependencies: - inherits: 2.0.4 - dev: true - - /check-error@1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} - dev: true - - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - requiresBuild: true - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - optional: true - - /chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: true - - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} - dev: true - - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - dev: true - - /cli-spinners@2.9.0: - resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} - engines: {node: '>=6'} - dev: true - - /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - dev: true - - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: true - - /code-block-writer@12.0.0: - resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} - dev: true - - /code-point-at@1.1.0: - resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} - engines: {node: '>=0.10.0'} - requiresBuild: true - dev: true - optional: true - - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: true - - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: true - - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true - - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: true - - /command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - dev: true - - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true - - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: true - - /commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - dev: true - - /commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - dev: true - - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: true - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true - - /concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - dev: true - - /concat-stream@2.0.0: - resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} - engines: {'0': node >= 6.0} - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - typedarray: 0.0.6 - dev: true - - /concat-with-sourcemaps@1.1.0: - resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==} - dependencies: - source-map: 0.6.1 - dev: true - - /concurrently@8.2.1: - resolution: {integrity: sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ==} - engines: {node: ^14.13.0 || >=16.0.0} - hasBin: true - dependencies: - chalk: 4.1.2 - date-fns: 2.30.0 - lodash: 4.17.21 - rxjs: 7.8.1 - shell-quote: 1.8.1 - spawn-command: 0.0.2 - supports-color: 8.1.1 - tree-kill: 1.2.2 - yargs: 17.7.2 - dev: true - - /console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - requiresBuild: true - dev: true - optional: true - - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true - - /core-util-is@1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - dev: true - - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true - - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true - - /cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - dependencies: - lru-cache: 4.1.5 - shebang-command: 1.2.0 - which: 1.3.1 - dev: true - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /csv-generate@3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - dev: true - - /csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - dev: true - - /csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - dev: true - - /csv@5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} - engines: {node: '>= 0.1.90'} - dependencies: - csv-generate: 3.4.3 - csv-parse: 4.16.3 - csv-stringify: 5.6.5 - stream-transform: 2.1.3 - dev: true - - /dashdash@1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} - dependencies: - assert-plus: 1.0.0 - dev: true - - /dataloader@1.4.0: - resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} - dev: true - - /date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} - dependencies: - '@babel/runtime': 7.22.11 - dev: true - - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: true - - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - dev: true - - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: true - - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} - dependencies: - type-detect: 4.0.8 - dev: true - - /deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: true - - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - dependencies: - clone: 1.0.4 - dev: true - - /define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} - engines: {node: '>= 0.4'} - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - dev: true - - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: true - - /delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - requiresBuild: true - dev: true - optional: true - - /dependency-tree@9.0.0: - resolution: {integrity: sha512-osYHZJ1fBSon3lNLw70amAXsQ+RGzXsPvk9HbBgTLbp/bQBmpH5mOmsUvqXU+YEWVU0ZLewsmzOET/8jWswjDQ==} - engines: {node: ^10.13 || ^12 || >=14} - hasBin: true - dependencies: - commander: 2.20.3 - debug: 4.3.4 - filing-cabinet: 3.3.1 - precinct: 9.2.1 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: true - - /detective-amd@3.1.2: - resolution: {integrity: sha512-jffU26dyqJ37JHR/o44La6CxtrDf3Rt9tvd2IbImJYxWKTMdBjctp37qoZ6ZcY80RHg+kzWz4bXn39e4P7cctQ==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - ast-module-types: 3.0.0 - escodegen: 2.0.0 - get-amd-module-type: 3.0.2 - node-source-walk: 4.3.0 - dev: true - - /detective-amd@4.2.0: - resolution: {integrity: sha512-RbuEJHz78A8nW7CklkqTzd8lDCN42En53dgEIsya0DilpkwslamSZDasLg8dJyxbw46OxhSQeY+C2btdSkCvQQ==} - engines: {node: '>=12'} - hasBin: true - dependencies: - ast-module-types: 4.0.0 - escodegen: 2.0.0 - get-amd-module-type: 4.1.0 - node-source-walk: 5.0.2 - dev: true - - /detective-cjs@3.1.3: - resolution: {integrity: sha512-ljs7P0Yj9MK64B7G0eNl0ThWSYjhAaSYy+fQcpzaKalYl/UoQBOzOeLCSFEY1qEBhziZ3w7l46KG/nH+s+L7BQ==} - engines: {node: '>=6.0'} - dependencies: - ast-module-types: 3.0.0 - node-source-walk: 4.3.0 - dev: true - - /detective-cjs@4.1.0: - resolution: {integrity: sha512-QxzMwt5MfPLwS7mG30zvnmOvHLx5vyVvjsAV6gQOyuMoBR5G1DhS1eJZ4P10AlH+HSnk93mTcrg3l39+24XCtg==} - engines: {node: '>=12'} - dependencies: - ast-module-types: 4.0.0 - node-source-walk: 5.0.2 - dev: true - - /detective-es6@2.2.2: - resolution: {integrity: sha512-eZUKCUsbHm8xoeoCM0z6JFwvDfJ5Ww5HANo+jPR7AzkFpW9Mun3t/TqIF2jjeWa2TFbAiGaWESykf2OQp3oeMw==} - engines: {node: '>=6.0'} - dependencies: - node-source-walk: 4.3.0 - dev: true - - /detective-es6@3.0.1: - resolution: {integrity: sha512-evPeYIEdK1jK3Oji5p0hX4sPV/1vK+o4ihcWZkMQE6voypSW/cIBiynOLxQk5KOOQbdP8oOAsYqouMTYO5l1sw==} - engines: {node: '>=12'} - dependencies: - node-source-walk: 5.0.2 - dev: true - - /detective-less@1.0.2: - resolution: {integrity: sha512-Rps1xDkEEBSq3kLdsdnHZL1x2S4NGDcbrjmd4q+PykK5aJwDdP5MBgrJw1Xo+kyUHuv3JEzPqxr+Dj9ryeDRTA==} - engines: {node: '>= 6.0'} - dependencies: - debug: 4.3.4 - gonzales-pe: 4.3.0 - node-source-walk: 4.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /detective-postcss@4.0.0: - resolution: {integrity: sha512-Fwc/g9VcrowODIAeKRWZfVA/EufxYL7XfuqJQFroBKGikKX83d2G7NFw6kDlSYGG3LNQIyVa+eWv1mqre+v4+A==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - debug: 4.3.4 - is-url: 1.2.4 - postcss: 8.4.29 - postcss-values-parser: 2.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /detective-postcss@6.1.3: - resolution: {integrity: sha512-7BRVvE5pPEvk2ukUWNQ+H2XOq43xENWbH0LcdCE14mwgTBEAMoAx+Fc1rdp76SmyZ4Sp48HlV7VedUnP6GA1Tw==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dependencies: - is-url: 1.2.4 - postcss: 8.4.27 - postcss-values-parser: 6.0.2(postcss@8.4.27) - dev: true - - /detective-sass@3.0.2: - resolution: {integrity: sha512-DNVYbaSlmti/eztFGSfBw4nZvwsTaVXEQ4NsT/uFckxhJrNRFUh24d76KzoCC3aarvpZP9m8sC2L1XbLej4F7g==} - engines: {node: '>=6.0'} - dependencies: - gonzales-pe: 4.3.0 - node-source-walk: 4.3.0 - dev: true - - /detective-sass@4.1.3: - resolution: {integrity: sha512-xGRbwGaGte57gvEqM8B9GDiURY3El/H49vA6g9wFkxq9zalmTlTAuqWu+BsH0iwonGPruLt55tZZDEZqPc6lag==} - engines: {node: '>=12'} - dependencies: - gonzales-pe: 4.3.0 - node-source-walk: 5.0.2 - dev: true - - /detective-scss@2.0.2: - resolution: {integrity: sha512-hDWnWh/l0tht/7JQltumpVea/inmkBaanJUcXRB9kEEXVwVUMuZd6z7eusQ6GcBFrfifu3pX/XPyD7StjbAiBg==} - engines: {node: '>=6.0'} - dependencies: - gonzales-pe: 4.3.0 - node-source-walk: 4.3.0 - dev: true - - /detective-scss@3.1.1: - resolution: {integrity: sha512-FWkfru1jZBhUeuBsOeGKXKAVDrzYFSQFK2o2tuG/nCCFQ0U/EcXC157MNAcR5mmj+mCeneZzlkBOFJTesDjrww==} - engines: {node: '>=12'} - dependencies: - gonzales-pe: 4.3.0 - node-source-walk: 5.0.2 - dev: true - - /detective-stylus@1.0.3: - resolution: {integrity: sha512-4/bfIU5kqjwugymoxLXXLltzQNeQfxGoLm2eIaqtnkWxqbhap9puDVpJPVDx96hnptdERzS5Cy6p9N8/08A69Q==} - dev: true - - /detective-stylus@2.0.1: - resolution: {integrity: sha512-/Tvs1pWLg8eYwwV6kZQY5IslGaYqc/GACxjcaGudiNtN5nKCH6o2WnJK3j0gA3huCnoQcbv8X7oz/c1lnvE3zQ==} - engines: {node: '>=6.0'} - dev: true - - /detective-stylus@3.0.0: - resolution: {integrity: sha512-1xYTzbrduExqMYmte7Qk99IRA3Aa6oV7PYzd+3yDcQXkmENvyGF/arripri6lxRDdNYEb4fZFuHtNRAXbz3iAA==} - engines: {node: '>=12'} - dev: true - - /detective-typescript@7.0.2: - resolution: {integrity: sha512-unqovnhxzvkCz3m1/W4QW4qGsvXCU06aU2BAm8tkza+xLnp9SOFnob2QsTxUv5PdnQKfDvWcv9YeOeFckWejwA==} - engines: {node: ^10.13 || >=12.0.0} - dependencies: - '@typescript-eslint/typescript-estree': 4.33.0(typescript@3.9.10) - ast-module-types: 2.7.1 - node-source-walk: 4.3.0 - typescript: 3.9.10 - transitivePeerDependencies: - - supports-color - dev: true - - /detective-typescript@9.1.1: - resolution: {integrity: sha512-Uc1yVutTF0RRm1YJ3g//i1Cn2vx1kwHj15cnzQP6ff5koNzQ0idc1zAC73ryaWEulA0ElRXFTq6wOqe8vUQ3MA==} - engines: {node: ^12.20.0 || ^14.14.0 || >=16.0.0} - dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) - ast-module-types: 4.0.0 - node-source-walk: 5.0.2 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /diacritics-map@0.1.0: - resolution: {integrity: sha512-3omnDTYrGigU0i4cJjvaKwD52B8aoqyX/NEIkukFFkogBemsIbhSa1O414fpTp5nuszJG6lvQ5vBvDVNCbSsaQ==} - engines: {node: '>=0.8.0'} - dev: true - - /diff-sequences@26.6.2: - resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} - engines: {node: '>= 10.14.2'} - dev: true - - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - - /diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - dev: true - - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: true - - /diff@5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} - engines: {node: '>=0.3.1'} - dev: true - - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: true - - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /dotenv@8.6.0: - resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} - engines: {node: '>=10'} - dev: true - - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true - - /ecc-jsbn@0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - dependencies: - jsbn: 0.1.1 - safer-buffer: 2.1.2 - dev: true - - /electron-to-chromium@1.4.507: - resolution: {integrity: sha512-brvPFnO1lu3UYBpBht2qWw9qqhdG4htTjT90/9oOJmxQ77VvTxL9+ghErFqQzgj7n8268ONAmlebqjBR/S+qgA==} - dev: true - - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true - - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true - - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: true - - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - dev: true - - /enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - dependencies: - ansi-colors: 4.1.3 - dev: true - - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: true - - /error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - dependencies: - stackframe: 1.3.4 - dev: true - - /es-abstract@1.22.1: - resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.1 - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.2.1 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.5 - is-array-buffer: 3.0.2 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.12 - is-weakref: 1.0.2 - object-inspect: 1.12.3 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 - safe-array-concat: 1.0.0 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.11 - dev: true - - /es-set-tostringtag@2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.1 - has: 1.0.3 - has-tostringtag: 1.0.0 - dev: true - - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} - dependencies: - has: 1.0.3 - dev: true - - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: true - - /esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - dev: true - - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: true - - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true - - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true - - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true - - /escodegen@2.0.0: - resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.6.1 - dev: true - - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - dependencies: - debug: 3.2.7 - is-core-module: 2.13.0 - resolve: 1.22.4 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@6.5.0)(eslint-plugin-import@2.28.1)(eslint@8.48.0): - resolution: {integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - dependencies: - debug: 4.3.4 - enhanced-resolve: 5.15.0 - eslint: 8.48.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.5.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.5.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) - fast-glob: 3.3.1 - get-tsconfig: 4.7.0 - is-core-module: 2.13.0 - is-glob: 4.0.3 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.5.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': 6.5.0(eslint@8.48.0)(typescript@5.2.2) - debug: 3.2.7 - eslint: 8.48.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.5.0)(eslint-plugin-import@2.28.1)(eslint@8.48.0) - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-codegen@0.17.0: - resolution: {integrity: sha512-6DDDob+7PjyNJyy9ynHFFsLp0+aUtWbXiiT/SfU161NCxo1zevewq7VvtDiJh15gMBvVZSFs6hXqYJWT3NUZvA==} - dependencies: - '@babel/core': 7.22.11 - '@babel/generator': 7.12.17 - '@babel/parser': 7.21.8 - '@babel/traverse': 7.21.5 - expect: 26.6.2 - fp-ts: 2.15.0 - glob: 7.2.3 - io-ts: 2.2.20(fp-ts@2.15.0) - io-ts-extra: 0.11.6 - js-yaml: 3.14.1 - lodash: 4.17.21 - read-pkg-up: 7.0.1 - string.prototype.matchall: 4.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-deprecation@1.5.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-mRcssI/tLROueBQ6yf4LnnGTijbMsTCPIpbRbPj5R5wGYVCpk1zDmAS0SEkgcUDXOPc22qMNFR24Qw7vSPrlTA==} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: ^3.7.5 || ^4.0.0 || ^5.0.0 - dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) - eslint: 8.48.0 - tslib: 2.6.1 - tsutils: 3.21.0(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.5.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0): - resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@typescript-eslint/parser': 6.5.0(eslint@8.48.0)(typescript@5.2.2) - array-includes: 3.1.6 - array.prototype.findlastindex: 1.2.3 - array.prototype.flat: 1.3.1 - array.prototype.flatmap: 1.3.1 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.48.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.5.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) - has: 1.0.3 - is-core-module: 2.13.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 - semver: 6.3.1 - tsconfig-paths: 3.14.2 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-plugin-simple-import-sort@10.0.0(eslint@8.48.0): - resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} - peerDependencies: - eslint: '>=5.0.0' - dependencies: - eslint: 8.48.0 - dev: true - - /eslint-plugin-sort-destructure-keys@1.5.0(eslint@8.48.0): - resolution: {integrity: sha512-xGLyqHtbFXZNXQSvAiQ4ISBYokrbUywEhmaA50fKtSKgceCv5y3zjoNuZwcnajdM6q29Nxj+oXC9KcqfMsAPrg==} - engines: {node: '>=6.0.0'} - peerDependencies: - eslint: 3 - 8 - dependencies: - eslint: 8.48.0 - natural-compare-lite: 1.4.0 - dev: true - - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /eslint@8.48.0: - resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - '@eslint-community/regexpp': 4.8.0 - '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.48.0 - '@humanwhocodes/config-array': 0.11.11 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.21.0 - graphemer: 1.4.0 - ignore: 5.2.4 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) - eslint-visitor-keys: 3.4.3 - dev: true - - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: true - - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: true - - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true - - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - - /expand-range@1.8.2: - resolution: {integrity: sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==} - engines: {node: '>=0.10.0'} - dependencies: - fill-range: 2.2.4 - dev: true - - /expect@26.6.2: - resolution: {integrity: sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/types': 26.6.2 - ansi-styles: 4.3.0 - jest-get-type: 26.3.0 - jest-matcher-utils: 26.6.2 - jest-message-util: 26.6.2 - jest-regex-util: 26.0.0 - dev: true - - /extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - dev: true - - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: true - - /extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - dev: true - - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: true - - /extsprintf@1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} - dev: true - - /fast-check@3.12.0: - resolution: {integrity: sha512-SqahE9mlL3+lhjJ39joMLwcj6F+24hfZdf/tchlNO8sHcTdrUUdA5P/ZbSFZM9Xpzs36XaneGwE0FWepm/zyOA==} - engines: {node: '>=8.0.0'} - dependencies: - pure-rand: 6.0.2 - dev: true - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true - - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true - - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - dev: true - - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.1.0 - dev: true - - /filing-cabinet@3.3.1: - resolution: {integrity: sha512-renEK4Hh6DUl9Vl22Y3cxBq1yh8oNvbAdXnhih0wVpmea+uyKjC9K4QeRjUaybIiIewdzfum+Fg15ZqJ/GyCaA==} - engines: {node: '>=10.13.0'} - hasBin: true - dependencies: - app-module-path: 2.2.0 - commander: 2.20.3 - debug: 4.3.4 - enhanced-resolve: 5.15.0 - is-relative-path: 1.0.2 - module-definition: 3.4.0 - module-lookup-amd: 7.0.1 - resolve: 1.22.2 - resolve-dependency-path: 2.0.0 - sass-lookup: 3.0.0 - stylus-lookup: 3.0.2 - tsconfig-paths: 3.14.2 - typescript: 3.9.10 - transitivePeerDependencies: - - supports-color - dev: true - - /fill-range@2.2.4: - resolution: {integrity: sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 2.1.0 - isobject: 2.1.0 - randomatic: 3.1.1 - repeat-element: 1.1.4 - repeat-string: 1.6.1 - dev: true - - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - requiresBuild: true - dependencies: - to-regex-range: 5.0.1 - dev: true - - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - - /find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - dependencies: - micromatch: 4.0.5 - pkg-dir: 4.2.0 - dev: true - - /flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} - engines: {node: '>=12.0.0'} - dependencies: - flatted: 3.2.7 - keyv: 4.5.3 - rimraf: 3.0.2 - dev: true - - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true - - /flatten@1.0.3: - resolution: {integrity: sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==} - deprecated: flatten is deprecated in favor of utility frameworks such as lodash. - dev: true - - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - dependencies: - is-callable: 1.2.7 - dev: true - - /for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - dev: true - - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.0.2 - dev: true - - /forever-agent@0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - dev: true - - /form-data@2.3.3: - resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} - engines: {node: '>= 0.12'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - - /fp-ts@2.15.0: - resolution: {integrity: sha512-3o6EllAvGuCsDgjM+frscLKDRPR9pqbrg13tJ13z86F4eni913kBV8h85rM6zpu2fEvJ8RWA0ouYlUWwHEmxTg==} - dev: true - - /fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: true - - /fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: true - - /fs-extra@6.0.1: - resolution: {integrity: sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - - /fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - - /fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - - /fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: true - - /fs-readdir-recursive@1.1.0: - resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} - dev: true - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true - - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /fstream@1.0.12: - resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==} - engines: {node: '>=0.6'} - dependencies: - graceful-fs: 4.2.11 - inherits: 2.0.4 - mkdirp: 0.5.6 - rimraf: 2.7.1 - dev: true - - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - functions-have-names: 1.2.3 - dev: true - - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true - - /gauge@2.7.4: - resolution: {integrity: sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==} - requiresBuild: true - dependencies: - aproba: 1.2.0 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 1.0.2 - strip-ansi: 3.0.1 - wide-align: 1.1.5 - dev: true - optional: true - - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - - /get-amd-module-type@3.0.2: - resolution: {integrity: sha512-PcuKwB8ouJnKuAPn6Hk3UtdfKoUV3zXRqVEvj8XGIXqjWfgd1j7QGdXy5Z9OdQfzVt1Sk29HVe/P+X74ccOuqw==} - engines: {node: '>=6.0'} - dependencies: - ast-module-types: 3.0.0 - node-source-walk: 4.3.0 - dev: true - - /get-amd-module-type@4.1.0: - resolution: {integrity: sha512-0e/eK6vTGCnSfQ6eYs3wtH05KotJYIP7ZIZEueP/KlA+0dIAEs8bYFvOd/U56w1vfjhJqBagUxVMyy9Tr/cViQ==} - engines: {node: '>=12'} - dependencies: - ast-module-types: 4.0.0 - node-source-walk: 5.0.2 - dev: true - - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true - - /get-func-name@2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} - dev: true - - /get-intrinsic@1.2.1: - resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-proto: 1.0.1 - has-symbols: 1.0.3 - dev: true - - /get-own-enumerable-property-symbols@3.0.2: - resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} - dev: true - - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - dev: true - - /get-tsconfig@4.7.0: - resolution: {integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==} - dependencies: - resolve-pkg-maps: 1.0.0 - dev: true - - /getpass@0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} - dependencies: - assert-plus: 1.0.0 - dev: true - - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob@10.2.7: - resolution: {integrity: sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.2.1 - minimatch: 9.0.3 - minipass: 6.0.2 - path-scurry: 1.9.2 - dev: true - - /glob@10.3.3: - resolution: {integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.2.1 - minimatch: 9.0.3 - minipass: 6.0.2 - path-scurry: 1.10.1 - dev: true - - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - - /globals@13.21.0: - resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.0 - dev: true - - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - dev: true - - /gonzales-pe@4.3.0: - resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} - engines: {node: '>=0.6.0'} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - dependencies: - get-intrinsic: 1.2.1 - dev: true - - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true - - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true - - /gray-matter@3.1.1: - resolution: {integrity: sha512-nZ1qjLmayEv0/wt3sHig7I0s3/sJO0dkAaKYQ5YAOApUtYEOonXSFdWvL1khvnZMTvov4UufkqlFsilPnejEXA==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - js-yaml: 3.14.1 - kind-of: 5.1.0 - strip-bom-string: 1.0.0 - dev: true - - /gulp-header@1.8.12: - resolution: {integrity: sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==} - deprecated: Removed event-stream from gulp-header - dependencies: - concat-with-sourcemaps: 1.1.0 - lodash.template: 4.5.0 - through2: 2.0.5 - dev: true - - /har-schema@2.0.0: - resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} - engines: {node: '>=4'} - dev: true - - /har-validator@5.1.5: - resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} - engines: {node: '>=6'} - deprecated: this library is no longer supported - dependencies: - ajv: 6.12.6 - har-schema: 2.0.0 - dev: true - - /hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - dev: true - - /has-ansi@2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-regex: 2.1.1 - dev: true - - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true - - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: true - - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true - - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - dependencies: - get-intrinsic: 1.2.1 - dev: true - - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - dev: true - - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: true - - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - - /has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - requiresBuild: true - dev: true - optional: true - - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: true - - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true - - /hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - dependencies: - lru-cache: 6.0.0 - dev: true - - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true - - /http-signature@1.2.0: - resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} - engines: {node: '>=0.8', npm: '>=1.3.7'} - dependencies: - assert-plus: 1.0.0 - jsprim: 1.4.2 - sshpk: 1.17.0 - dev: true - - /human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - dev: true - - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: true - - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: true - - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true - - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true - - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: true - - /indexes-of@1.0.1: - resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} - dev: true - - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true - - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: true - - /internal-slot@1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.1 - has: 1.0.3 - side-channel: 1.0.4 - dev: true - - /io-ts-extra@0.11.6: - resolution: {integrity: sha512-rTsvx3W5B2nx7p/eGf+OsEaBTmjSjLzxBDEiweCjwqIL9ZN6CZjG7hFK8zyGJyM0I2uCsRU4uYUhaTgg2SKHkQ==} - dependencies: - fp-ts: 2.15.0 - io-ts: 2.2.20(fp-ts@2.15.0) - dev: true - - /io-ts@2.2.20(fp-ts@2.15.0): - resolution: {integrity: sha512-Rq2BsYmtwS5vVttie4rqrOCIfHCS9TgpRLFpKQCM1wZBBRY9nWVGmEvm2FnDbSE2un1UE39DvFpTR5UL47YDcA==} - peerDependencies: - fp-ts: ^2.5.0 - dependencies: - fp-ts: 2.15.0 - dev: true - - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - is-typed-array: 1.1.12 - dev: true - - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true - - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.2 - dev: true - - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - requiresBuild: true - dependencies: - binary-extensions: 2.2.0 - dev: true - optional: true - - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - - /is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: true - - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: true - - /is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true - dependencies: - ci-info: 3.8.0 - dev: true - - /is-core-module@2.13.0: - resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} - dependencies: - has: 1.0.3 - dev: true - - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - dev: true - - /is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - dependencies: - is-plain-object: 2.0.4 - dev: true - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-fullwidth-code-point@1.0.0: - resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} - engines: {node: '>=0.10.0'} - requiresBuild: true - dependencies: - number-is-nan: 1.0.1 - dev: true - optional: true - - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: true - - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: true - - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: true - - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-number@2.1.0: - resolution: {integrity: sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /is-number@4.0.0: - resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - requiresBuild: true - dev: true - - /is-obj@1.0.1: - resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} - engines: {node: '>=0.10.0'} - dev: true - - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true - - /is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - dev: true - - /is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - - /is-regexp@1.0.0: - resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} - engines: {node: '>=0.10.0'} - dev: true - - /is-relative-path@1.0.2: - resolution: {integrity: sha512-i1h+y50g+0hRbBD+dbnInl3JlJ702aar58snAeX+MxBAPvzXGej7sYoPMhlnykabt0ZzCJNBEyzMlekuQZN7fA==} - dev: true - - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - dependencies: - call-bind: 1.0.2 - dev: true - - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - dependencies: - better-path-resolve: 1.0.0 - dev: true - - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} - engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.11 - dev: true - - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: true - - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: true - - /is-url-superb@4.0.0: - resolution: {integrity: sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==} - engines: {node: '>=10'} - dev: true - - /is-url@1.2.4: - resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} - dev: true - - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.2 - dev: true - - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: true - - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: true - - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true - - /isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - dependencies: - isarray: 1.0.0 - dev: true - - /isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: true - - /isstream@0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - dev: true - - /istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - dev: true - - /istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 4.0.0 - supports-color: 7.2.0 - dev: true - - /istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - dependencies: - debug: 4.3.4 - istanbul-lib-coverage: 3.2.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports@3.1.6: - resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - dev: true - - /jackspeak@2.2.1: - resolution: {integrity: sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==} - engines: {node: '>=14'} - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - dev: true - - /jest-diff@26.6.2: - resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} - engines: {node: '>= 10.14.2'} - dependencies: - chalk: 4.1.2 - diff-sequences: 26.6.2 - jest-get-type: 26.3.0 - pretty-format: 26.6.2 - dev: true - - /jest-get-type@26.3.0: - resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} - engines: {node: '>= 10.14.2'} - dev: true - - /jest-matcher-utils@26.6.2: - resolution: {integrity: sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==} - engines: {node: '>= 10.14.2'} - dependencies: - chalk: 4.1.2 - jest-diff: 26.6.2 - jest-get-type: 26.3.0 - pretty-format: 26.6.2 - dev: true - - /jest-message-util@26.6.2: - resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==} - engines: {node: '>= 10.14.2'} - dependencies: - '@babel/code-frame': 7.22.13 - '@jest/types': 26.6.2 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 26.6.2 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: true - - /jest-regex-util@26.0.0: - resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} - engines: {node: '>= 10.14.2'} - dev: true - - /js-tokens@3.0.2: - resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} - dev: true - - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true - - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - - /jsbn@0.1.1: - resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - dev: true - - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true - - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true - - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true - - /json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - dev: true - - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true - - /json-stable-stringify@1.0.2: - resolution: {integrity: sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==} - dependencies: - jsonify: 0.0.1 - dev: true - - /json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - dev: true - - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: true - - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true - - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - optionalDependencies: - graceful-fs: 4.2.11 - dev: true - - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.11 - dev: true - - /jsonify@0.0.1: - resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} - dev: true - - /jsprim@1.4.2: - resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} - engines: {node: '>=0.6.0'} - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - dev: true - - /keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} - dependencies: - json-buffer: 3.0.1 - dev: true - - /kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: true - - /kind-of@5.1.0: - resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} - engines: {node: '>=0.10.0'} - dev: true - - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true - - /kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - dev: true - - /lazy-cache@2.0.2: - resolution: {integrity: sha512-7vp2Acd2+Kz4XkzxGxaB1FWOi8KjWIWsgdfD5MCb86DWvlLqhRPM+d6Pro3iNEL5VT9mstz5hKAlcd+QR6H3aA==} - engines: {node: '>=0.10.0'} - dependencies: - set-getter: 0.1.1 - dev: true - - /levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - dev: true - - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true - - /list-item@1.1.1: - resolution: {integrity: sha512-S3D0WZ4J6hyM8o5SNKWaMYB1ALSacPZ2nHGEuCjmHZ+dc03gFeNZoNDcqfcnO4vDhTZmNrqrpYZCdXsRh22bzw==} - engines: {node: '>=0.10.0'} - dependencies: - expand-range: 1.8.2 - extend-shallow: 2.0.1 - is-number: 2.1.0 - repeat-string: 1.6.1 - dev: true - - /load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - dev: true - - /local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - dev: true - - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: true - - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: true - - /lodash._reinterpolate@3.0.0: - resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} - dev: true - - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true - - /lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - dev: true - - /lodash.template@4.5.0: - resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==} - dependencies: - lodash._reinterpolate: 3.0.0 - lodash.templatesettings: 4.2.0 - dev: true - - /lodash.templatesettings@4.2.0: - resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==} - dependencies: - lodash._reinterpolate: 3.0.0 - dev: true - - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true - - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: true - - /loupe@2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} - dependencies: - get-func-name: 2.0.0 - dev: true - - /lru-cache@10.0.1: - resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} - engines: {node: 14 || >=16.14} - dev: true - - /lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - dev: true - - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - dev: true - - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - - /lru-cache@9.1.2: - resolution: {integrity: sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==} - engines: {node: 14 || >=16.14} - dev: true - - /madge@6.1.0(typescript@5.2.2): - resolution: {integrity: sha512-irWhT5RpFOc6lkzGHKLihonCVgM0YtfNUh4IrFeW3EqHpnt/JHUG3z26j8PeJEktCGB4tmGOOOJi1Rl/ACWucQ==} - engines: {node: '>=14'} - hasBin: true - peerDependencies: - typescript: ^3.9.5 || ^4.9.5 || ^5 - peerDependenciesMeta: - typescript: - optional: true - dependencies: - chalk: 4.1.2 - commander: 7.2.0 - commondir: 1.0.1 - debug: 4.3.4 - dependency-tree: 9.0.0 - detective-amd: 4.2.0 - detective-cjs: 4.1.0 - detective-es6: 3.0.1 - detective-less: 1.0.2 - detective-postcss: 6.1.3 - detective-sass: 4.1.3 - detective-scss: 3.1.1 - detective-stylus: 2.0.1 - detective-typescript: 9.1.1 - ora: 5.4.1 - pluralize: 8.0.0 - precinct: 8.3.1 - pretty-ms: 7.0.1 - rc: 1.2.8 - stream-to-array: 2.3.0 - ts-graphviz: 1.8.0 - typescript: 5.2.2 - walkdir: 0.4.1 - transitivePeerDependencies: - - supports-color - dev: true - - /magic-string@0.30.3: - resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - - /make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - dependencies: - pify: 4.0.1 - semver: 5.7.2 - dev: true - - /make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - dependencies: - semver: 7.5.4 - dev: true - - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true - - /map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - dev: true - - /map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - dev: true - - /markdown-link@0.1.1: - resolution: {integrity: sha512-TurLymbyLyo+kAUUAV9ggR9EPcDjP/ctlv9QAFiqUH7c+t6FlsbivPo9OKTU8xdOx9oNd2drW/Fi5RRElQbUqA==} - engines: {node: '>=0.10.0'} - dev: true - - /math-random@1.0.4: - resolution: {integrity: sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==} - dev: true - - /meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.13.1 - yargs-parser: 18.1.3 - dev: true - - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true - - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - dev: true - - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: true - - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: true - - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - dev: true - - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true - - /minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - dev: true - - /minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - dev: true - - /minipass@6.0.2: - resolution: {integrity: sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==} - engines: {node: '>=16 || 14 >=14.17'} - dev: true - - /minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - dev: true - - /mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - dev: true - - /mixme@0.5.9: - resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} - engines: {node: '>= 8.0.0'} - dev: true - - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: true - - /mkdirp@2.1.6: - resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} - engines: {node: '>=10'} - hasBin: true - dev: true - - /mlly@1.4.1: - resolution: {integrity: sha512-SCDs78Q2o09jiZiE2WziwVBEqXQ02XkGdUy45cbJf+BpYRIjArXRJ1Wbowxkb+NaM9DWvS3UC9GiO/6eqvQ/pg==} - dependencies: - acorn: 8.10.0 - pathe: 1.1.1 - pkg-types: 1.0.3 - ufo: 1.3.0 - dev: true - - /module-definition@3.4.0: - resolution: {integrity: sha512-XxJ88R1v458pifaSkPNLUTdSPNVGMP2SXVncVmApGO+gAfrLANiYe6JofymCzVceGOMwQE2xogxBSc8uB7XegA==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - ast-module-types: 3.0.0 - node-source-walk: 4.3.0 - dev: true - - /module-definition@4.1.0: - resolution: {integrity: sha512-rHXi/DpMcD2qcKbPCTklDbX9lBKJrUSl971TW5l6nMpqKCIlzJqmQ8cfEF5M923h2OOLHPDVlh5pJxNyV+AJlw==} - engines: {node: '>=12'} - hasBin: true - dependencies: - ast-module-types: 4.0.0 - node-source-walk: 5.0.2 - dev: true - - /module-lookup-amd@7.0.1: - resolution: {integrity: sha512-w9mCNlj0S8qviuHzpakaLVc+/7q50jl9a/kmJ/n8bmXQZgDPkQHnPBb8MUOYh3WpAYkXuNc2c+khsozhIp/amQ==} - engines: {node: '>=10.13.0'} - hasBin: true - dependencies: - commander: 2.20.3 - debug: 4.3.4 - glob: 7.2.3 - requirejs: 2.3.6 - requirejs-config-file: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true - - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true - - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true - - /node-fetch@2.6.11: - resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: true - - /node-releases@2.0.13: - resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - dev: true - - /node-source-walk@4.3.0: - resolution: {integrity: sha512-8Q1hXew6ETzqKRAs3jjLioSxNfT1cx74ooiF8RlAONwVMcfq+UdzLC2eB5qcPldUxaE5w3ytLkrmV1TGddhZTA==} - engines: {node: '>=6.0'} - dependencies: - '@babel/parser': 7.22.14 - dev: true - - /node-source-walk@5.0.2: - resolution: {integrity: sha512-Y4jr/8SRS5hzEdZ7SGuvZGwfORvNsSsNRwDXx5WisiqzsVfeftDvRgfeqWNgZvWSJbgubTRVRYBzK6UO+ErqjA==} - engines: {node: '>=12'} - dependencies: - '@babel/parser': 7.22.14 - dev: true - - /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.2 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - dev: true - - /normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.13.0 - semver: 7.5.4 - validate-npm-package-license: 3.0.4 - dev: true - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - requiresBuild: true - dev: true - optional: true - - /npm-package-arg@8.1.5: - resolution: {integrity: sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==} - engines: {node: '>=10'} - dependencies: - hosted-git-info: 4.1.0 - semver: 7.5.4 - validate-npm-package-name: 3.0.0 - dev: true - - /npmlog@4.1.2: - resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} - requiresBuild: true - dependencies: - are-we-there-yet: 1.1.7 - console-control-strings: 1.1.0 - gauge: 2.7.4 - set-blocking: 2.0.0 - dev: true - optional: true - - /number-is-nan@1.0.1: - resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} - engines: {node: '>=0.10.0'} - requiresBuild: true - dev: true - optional: true - - /oauth-sign@0.9.0: - resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - dev: true - - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - requiresBuild: true - dev: true - optional: true - - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - dev: true - - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true - - /object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: true - - /object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - dev: true - - /object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - get-intrinsic: 1.2.1 - dev: true - - /object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - dev: true - - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: true - - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - - /optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.3 - dev: true - - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.0 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - dev: true - - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: true - - /outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - dev: true - - /p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} - dependencies: - p-map: 2.1.0 - dev: true - - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true - - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true - - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.0.0 - dev: true - - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: true - - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: true - - /p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - dev: true - - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true - - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: true - - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.22.13 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: true - - /parse-ms@2.1.0: - resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} - engines: {node: '>=6'} - dev: true - - /parsimmon@1.18.1: - resolution: {integrity: sha512-u7p959wLfGAhJpSDJVYXoyMCXWYwHia78HhRBWqk7AIbxdmlrfdp5wX0l3xv/iTSH5HvhN9K7o26hwwpgS5Nmw==} - dev: true - - /path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - dev: true - - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: true - - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true - - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true - - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - lru-cache: 10.0.1 - minipass: 6.0.2 - dev: true - - /path-scurry@1.9.2: - resolution: {integrity: sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - lru-cache: 9.1.2 - minipass: 6.0.2 - dev: true - - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true - - /pathe@1.1.1: - resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} - dev: true - - /pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true - - /performance-now@2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - dev: true - - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true - - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true - - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: true - - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: true - - /pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} - dependencies: - jsonc-parser: 3.2.0 - mlly: 1.4.1 - pathe: 1.1.1 - dev: true - - /pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - dev: true - - /postcss-values-parser@2.0.1: - resolution: {integrity: sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==} - engines: {node: '>=6.14.4'} - dependencies: - flatten: 1.0.3 - indexes-of: 1.0.1 - uniq: 1.0.1 - dev: true - - /postcss-values-parser@6.0.2(postcss@8.4.27): - resolution: {integrity: sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==} - engines: {node: '>=10'} - peerDependencies: - postcss: ^8.2.9 - dependencies: - color-name: 1.1.4 - is-url-superb: 4.0.0 - postcss: 8.4.27 - quote-unquote: 1.0.0 - dev: true - - /postcss@8.4.27: - resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /postcss@8.4.29: - resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /precinct@8.3.1: - resolution: {integrity: sha512-pVppfMWLp2wF68rwHqBIpPBYY8Kd12lDhk8LVQzOwqllifVR15qNFyod43YLyFpurKRZQKnE7E4pofAagDOm2Q==} - engines: {node: ^10.13 || ^12 || >=14} - hasBin: true - dependencies: - commander: 2.20.3 - debug: 4.3.4 - detective-amd: 3.1.2 - detective-cjs: 3.1.3 - detective-es6: 2.2.2 - detective-less: 1.0.2 - detective-postcss: 4.0.0 - detective-sass: 3.0.2 - detective-scss: 2.0.2 - detective-stylus: 1.0.3 - detective-typescript: 7.0.2 - module-definition: 3.4.0 - node-source-walk: 4.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /precinct@9.2.1: - resolution: {integrity: sha512-uzKHaTyiVejWW7VJtHInb9KBUq9yl9ojxXGujhjhDmPon2wgZPBKQIKR+6csGqSlUeGXAA4MEFnU6DesxZib+A==} - engines: {node: ^12.20.0 || ^14.14.0 || >=16.0.0} - hasBin: true - dependencies: - '@dependents/detective-less': 3.0.2 - commander: 9.5.0 - detective-amd: 4.2.0 - detective-cjs: 4.1.0 - detective-es6: 3.0.1 - detective-postcss: 6.1.3 - detective-sass: 4.1.3 - detective-scss: 3.1.1 - detective-stylus: 3.0.0 - detective-typescript: 9.1.1 - module-definition: 4.1.0 - node-source-walk: 5.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /preferred-pm@3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} - engines: {node: '>=10'} - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.0.0 - dev: true - - /prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - dev: true - - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true - - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true - - /pretty-format@26.6.2: - resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} - engines: {node: '>= 10'} - dependencies: - '@jest/types': 26.6.2 - ansi-regex: 5.0.1 - ansi-styles: 4.3.0 - react-is: 17.0.2 - dev: true - - /pretty-format@29.6.3: - resolution: {integrity: sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - - /pretty-ms@7.0.1: - resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} - engines: {node: '>=10'} - dependencies: - parse-ms: 2.1.0 - dev: true - - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: true - - /pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - dev: true - - /psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: true - - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - dev: true - - /pure-rand@6.0.2: - resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} - dev: true - - /qs@6.5.3: - resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} - engines: {node: '>=0.6'} - dev: true - - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - - /quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - dev: true - - /quote-unquote@1.0.0: - resolution: {integrity: sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==} - dev: true - - /randomatic@3.1.1: - resolution: {integrity: sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==} - engines: {node: '>= 0.10.0'} - dependencies: - is-number: 4.0.0 - kind-of: 6.0.3 - math-random: 1.0.4 - dev: true - - /rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - dev: true - - /react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - dev: true - - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - dev: true - - /react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} - engines: {node: '>=0.10.0'} - dev: true - - /read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - dev: true - - /read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - dev: true - - /read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - dev: true - - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: true - - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: true - - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - requiresBuild: true - dependencies: - picomatch: 2.3.1 - dev: true - optional: true - - /redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - dev: true - - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: true - - /regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - dev: true - - /regexp.prototype.flags@1.5.0: - resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 - dev: true - - /remarkable@1.7.4: - resolution: {integrity: sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg==} - engines: {node: '>= 0.10.0'} - hasBin: true - dependencies: - argparse: 1.0.10 - autolinker: 0.28.1 - dev: true - - /repeat-element@1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - dev: true - - /repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - dev: true - - /request@2.88.2: - resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} - engines: {node: '>= 6'} - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 - dependencies: - aws-sign2: 0.7.0 - aws4: 1.12.0 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - har-validator: 5.1.5 - http-signature: 1.2.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - oauth-sign: 0.9.0 - performance-now: 2.1.0 - qs: 6.5.3 - safe-buffer: 5.2.1 - tough-cookie: 2.5.0 - tunnel-agent: 0.6.0 - uuid: 3.4.0 - dev: true - - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true - - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true - - /requirejs-config-file@4.0.0: - resolution: {integrity: sha512-jnIre8cbWOyvr8a5F2KuqBnY+SDA4NXr/hzEZJG79Mxm2WiFQz2dzhC8ibtPJS7zkmBEl1mxSwp5HhC1W4qpxw==} - engines: {node: '>=10.13.0'} - dependencies: - esprima: 4.0.1 - stringify-object: 3.3.0 - dev: true - - /requirejs@2.3.6: - resolution: {integrity: sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /resolve-dependency-path@2.0.0: - resolution: {integrity: sha512-DIgu+0Dv+6v2XwRaNWnumKu7GPufBBOr5I1gRPJHkvghrfCGOooJODFvgFimX/KRxk9j0whD2MnKHzM1jYvk9w==} - engines: {node: '>=6.0.0'} - dev: true - - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true - - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - - /resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: true - - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} - hasBin: true - dependencies: - is-core-module: 2.13.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /resolve@1.22.4: - resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} - hasBin: true - dependencies: - is-core-module: 2.13.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: true - - /retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - dev: true - - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - - /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - - /rimraf@5.0.1: - resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} - engines: {node: '>=14'} - hasBin: true - dependencies: - glob: 10.2.7 - dev: true - - /rollup@3.28.1: - resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - dependencies: - tslib: 2.6.2 - dev: true - - /safe-array-concat@1.0.0: - resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} - engines: {node: '>=0.4'} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - has-symbols: 1.0.3 - isarray: 2.0.5 - dev: true - - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true - - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true - - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - is-regex: 1.1.4 - dev: true - - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true - - /sass-lookup@3.0.0: - resolution: {integrity: sha512-TTsus8CfFRn1N44bvdEai1no6PqdmDiQUiqW5DlpmtT+tYnIt1tXtDIph5KA1efC+LmioJXSnCtUVpcK9gaKIg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - commander: 2.20.3 - dev: true - - /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - dev: true - - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - dev: true - - /semver@7.5.3: - resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true - - /set-getter@0.1.1: - resolution: {integrity: sha512-9sVWOy+gthr+0G9DzqqLaYNA7+5OKkSmcqjL9cBpDEaZrr3ShQlyX2cZ/O/ozE41oxn/Tt0LGEM/w4Rub3A3gw==} - engines: {node: '>=0.10.0'} - dependencies: - to-object-path: 0.3.0 - dev: true - - /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - dependencies: - shebang-regex: 1.0.0 - dev: true - - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - dev: true - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true - - /shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - dev: true - - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - object-inspect: 1.12.3 - dev: true - - /siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: true - - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true - - /signal-exit@4.0.2: - resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} - engines: {node: '>=14'} - dev: true - - /slash@2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} - dev: true - - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true - - /slide@1.1.6: - resolution: {integrity: sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==} - dev: true - - /smartwrap@2.0.2: - resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} - engines: {node: '>=6'} - hasBin: true - dependencies: - array.prototype.flat: 1.3.1 - breakword: 1.0.5 - grapheme-splitter: 1.0.4 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 15.4.1 - dev: true - - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true - - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: true - - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - requiresBuild: true - dev: true - - /spawn-command@0.0.2: - resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} - dev: true - - /spawndamnit@2.0.0: - resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} - dependencies: - cross-spawn: 5.1.0 - signal-exit: 3.0.7 - dev: true - - /spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 - dev: true - - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: true - - /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 - dev: true - - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} - dev: true - - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true - - /sshpk@1.17.0: - resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} - engines: {node: '>=0.10.0'} - hasBin: true - dependencies: - asn1: 0.2.6 - assert-plus: 1.0.0 - bcrypt-pbkdf: 1.0.2 - dashdash: 1.14.1 - ecc-jsbn: 0.1.2 - getpass: 0.1.7 - jsbn: 0.1.1 - safer-buffer: 2.1.2 - tweetnacl: 0.14.5 - dev: true - - /ssri@8.0.1: - resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: true - - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 - dev: true - - /stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: true - - /stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - dev: true - - /std-env@3.4.3: - resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} - dev: true - - /stream-to-array@2.3.0: - resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} - dependencies: - any-promise: 1.3.0 - dev: true - - /stream-transform@2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} - dependencies: - mixme: 0.5.9 - dev: true - - /string-width@1.0.2: - resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} - engines: {node: '>=0.10.0'} - requiresBuild: true - dependencies: - code-point-at: 1.1.0 - is-fullwidth-code-point: 1.0.0 - strip-ansi: 3.0.1 - dev: true - optional: true - - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: true - - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - dev: true - - /string.prototype.matchall@4.0.8: - resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - get-intrinsic: 1.2.1 - has-symbols: 1.0.3 - internal-slot: 1.0.5 - regexp.prototype.flags: 1.5.0 - side-channel: 1.0.4 - dev: true - - /string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - dev: true - - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - dev: true - - /string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - dev: true - - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: true - - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /stringify-object@3.3.0: - resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} - engines: {node: '>=4'} - dependencies: - get-own-enumerable-property-symbols: 3.0.2 - is-obj: 1.0.1 - is-regexp: 1.0.0 - dev: true - - /strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-regex: 2.1.1 - dev: true - - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: true - - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - dependencies: - ansi-regex: 6.0.1 - dev: true - - /strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - dev: true - - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true - - /strip-color@0.1.0: - resolution: {integrity: sha512-p9LsUieSjWNNAxVCXLeilaDlmuUOrDS5/dF9znM1nZc7EGX5+zEFC0bEevsNIaldjlks+2jns5Siz6F9iK6jwA==} - engines: {node: '>=0.10.0'} - dev: true - - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - dependencies: - min-indent: 1.0.1 - dev: true - - /strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: true - - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true - - /strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} - dependencies: - acorn: 8.10.0 - dev: true - - /stylus-lookup@3.0.2: - resolution: {integrity: sha512-oEQGHSjg/AMaWlKe7gqsnYzan8DLcGIHe0dUaFkucZZ14z4zjENRlQMCHT4FNsiWnJf17YN9OvrCfCoi7VvOyg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - commander: 2.20.3 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /supports-color@2.0.0: - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} - engines: {node: '>=0.8.0'} - dev: true - - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: true - - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true - - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: true - - /tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: true - - /tar@6.1.15: - resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} - engines: {node: '>=10'} - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: true - - /term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - dev: true - - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - dev: true - - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true - - /through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - dev: true - - /tinybench@2.5.0: - resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} - dev: true - - /tinypool@0.7.0: - resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} - engines: {node: '>=14.0.0'} - dev: true - - /tinyspy@2.1.1: - resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==} - engines: {node: '>=14.0.0'} - dev: true - - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - dependencies: - os-tmpdir: 1.0.2 - dev: true - - /tmp@0.2.1: - resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} - engines: {node: '>=8.17.0'} - dependencies: - rimraf: 3.0.2 - dev: true - - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true - - /to-object-path@0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - requiresBuild: true - dependencies: - is-number: 7.0.0 - dev: true - - /tough-cookie@2.5.0: - resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} - engines: {node: '>=0.8'} - dependencies: - psl: 1.9.0 - punycode: 2.3.0 - dev: true - - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: true - - /tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - dev: true - - /trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - dev: true - - /ts-api-utils@1.0.2(typescript@5.2.2): - resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==} - engines: {node: '>=16.13.0'} - peerDependencies: - typescript: '>=4.2.0' - dependencies: - typescript: 5.2.2 - dev: true - - /ts-graphviz@1.8.0: - resolution: {integrity: sha512-ykZ1YvmAHtpn88CDOLto4Tk6Qph708uTt7yYuajVZKjmcTZLj2oVIU1+Uv2tJ9XgRyA4yTKhzPE/cMUf9hW10Q==} - engines: {node: '>=14.16'} - dev: true - - /ts-morph@19.0.0: - resolution: {integrity: sha512-D6qcpiJdn46tUqV45vr5UGM2dnIEuTGNxVhg0sk5NX11orcouwj6i1bMqZIz2mZTZB1Hcgy7C3oEVhAT+f6mbQ==} - dependencies: - '@ts-morph/common': 0.20.0 - code-block-writer: 12.0.0 - dev: true - - /ts-node@10.9.1(@types/node@20.5.7)(typescript@5.2.2): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 20.5.7 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.2.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - - /tsconfck@2.1.2(typescript@5.2.2): - resolution: {integrity: sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==} - engines: {node: ^14.13.1 || ^16 || >=18} - hasBin: true - peerDependencies: - typescript: ^4.3.5 || ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - dependencies: - typescript: 5.2.2 - dev: true - - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true - - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true - - /tslib@2.6.1: - resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} - dev: true - - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: true - - /tslint@5.14.0(typescript@5.2.2): - resolution: {integrity: sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==} - engines: {node: '>=4.8.0'} - hasBin: true - peerDependencies: - typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' - dependencies: - babel-code-frame: 6.26.0 - builtin-modules: 1.1.1 - chalk: 2.4.2 - commander: 2.20.3 - diff: 3.5.0 - glob: 7.2.3 - js-yaml: 3.14.1 - minimatch: 3.1.2 - mkdirp: 0.5.6 - resolve: 1.22.4 - semver: 5.7.2 - tslib: 1.14.1 - tsutils: 2.29.0(typescript@5.2.2) - typescript: 5.2.2 - dev: true - - /tsutils@2.29.0(typescript@5.2.2): - resolution: {integrity: sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==} - peerDependencies: - typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev' - dependencies: - tslib: 1.14.1 - typescript: 5.2.2 - dev: true - - /tsutils@3.21.0(typescript@3.9.10): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 3.9.10 - dev: true - - /tsutils@3.21.0(typescript@4.9.5): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 4.9.5 - dev: true - - /tsutils@3.21.0(typescript@5.2.2): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.2.2 - dev: true - - /tty-table@4.2.1: - resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} - engines: {node: '>=8.0.0'} - hasBin: true - dependencies: - chalk: 4.1.2 - csv: 5.5.3 - kleur: 4.1.5 - smartwrap: 2.0.2 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 17.7.2 - dev: true - - /tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /tweetnacl@0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - dev: true - - /type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - dev: true - - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - dev: true - - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true - - /type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - dev: true - - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - - /type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: true - - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true - - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - is-typed-array: 1.1.12 - dev: true - - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 - dev: true - - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 - dev: true - - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - dependencies: - call-bind: 1.0.2 - for-each: 0.3.3 - is-typed-array: 1.1.12 - dev: true - - /typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: true - - /typescript@3.9.10: - resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - - /ufo@1.3.0: - resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} - dev: true - - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - dependencies: - call-bind: 1.0.2 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: true - - /uniq@1.0.1: - resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} - dev: true - - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: true - - /universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} - dev: true - - /update-browserslist-db@1.0.11(browserslist@4.21.10): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.10 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.0 - dev: true - - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: true - - /uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - dev: true - - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true - - /v8-to-istanbul@9.1.0: - resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} - engines: {node: '>=10.12.0'} - dependencies: - '@jridgewell/trace-mapping': 0.3.19 - '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.9.0 - dev: true - - /validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - dev: true - - /validate-npm-package-name@3.0.0: - resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} - dependencies: - builtins: 1.0.3 - dev: true - - /verror@1.10.0: - resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} - engines: {'0': node >=0.6.0} - dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.3.0 - dev: true - - /vite-node@0.34.3(@types/node@20.5.7): - resolution: {integrity: sha512-+0TzJf1g0tYXj6tR2vEyiA42OPq68QkRZCu/ERSo2PtsDJfBpDyEfuKbRvLmZqi/CgC7SCBtyC+WjTGNMRIaig==} - engines: {node: '>=v14.18.0'} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.4 - mlly: 1.4.1 - pathe: 1.1.1 - picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.5.7) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vite@4.4.9(@types/node@20.5.7): - resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 20.5.7 - esbuild: 0.18.20 - postcss: 8.4.29 - rollup: 3.28.1 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vitest@0.34.3: - resolution: {integrity: sha512-7+VA5Iw4S3USYk+qwPxHl8plCMhA5rtfwMjgoQXMT7rO5ldWcdsdo3U1QD289JgglGK4WeOzgoLTsGFu6VISyQ==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true - dependencies: - '@types/chai': 4.3.5 - '@types/chai-subset': 1.3.3 - '@types/node': 20.5.7 - '@vitest/expect': 0.34.3 - '@vitest/runner': 0.34.3 - '@vitest/snapshot': 0.34.3 - '@vitest/spy': 0.34.3 - '@vitest/utils': 0.34.3 - acorn: 8.10.0 - acorn-walk: 8.2.0 - cac: 6.7.14 - chai: 4.3.8 - debug: 4.3.4 - local-pkg: 0.4.3 - magic-string: 0.30.3 - pathe: 1.1.1 - picocolors: 1.0.0 - std-env: 3.4.3 - strip-literal: 1.3.0 - tinybench: 2.5.0 - tinypool: 0.7.0 - vite: 4.4.9(@types/node@20.5.7) - vite-node: 0.34.3(@types/node@20.5.7) - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /walkdir@0.4.1: - resolution: {integrity: sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==} - engines: {node: '>=6.0.0'} - dev: true - - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - dependencies: - defaults: 1.0.4 - dev: true - - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: true - - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: true - - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: true - - /which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - dev: true - - /which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - dev: true - - /which-typed-array@1.1.11: - resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - dev: true - - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - dev: true - - /wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - requiresBuild: true - dependencies: - string-width: 1.0.2 - dev: true - optional: true - - /word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - dev: true - - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - dev: true - - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true - - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: true - - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true - - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true - - /yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - dev: true - - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true - - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - - /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: true - - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true - - /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - dev: true - - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: true - - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: true - - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true - - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: true - - github.com/effect-ts/markdown-toc/4bfeb0f140105440ea0d12df2fa23199cc3ec1d5: - resolution: {tarball: https://codeload.github.com/effect-ts/markdown-toc/tar.gz/4bfeb0f140105440ea0d12df2fa23199cc3ec1d5} - name: markdown-toc - version: 1.2.0 - engines: {node: '>=0.10.0'} - hasBin: true - dependencies: - concat-stream: 1.6.2 - diacritics-map: 0.1.0 - gray-matter: 3.1.1 - lazy-cache: 2.0.2 - list-item: 1.1.1 - markdown-link: 0.1.1 - minimist: 1.2.8 - mixin-deep: 1.3.2 - object.pick: 1.3.0 - remarkable: 1.7.4 - repeat-string: 1.6.1 - strip-color: 0.1.0 - dev: true - -publishDirectory: dist diff --git a/src/internal/testing/testClock.ts b/src/internal/testing/testClock.ts index 7c67bf64..66cc6594 100644 --- a/src/internal/testing/testClock.ts +++ b/src/internal/testing/testClock.ts @@ -109,13 +109,17 @@ const suspendedWarning = "Warning: A test is advancing the test clock, " + /** @internal */ export class TestClockImpl implements TestClock { [clock.ClockTypeId]: Clock.ClockTypeId = clock.ClockTypeId + constructor( readonly clockState: Ref.Ref, readonly live: Live.Live, readonly annotations: Annotations.Annotations, readonly warningState: Synchronized.SynchronizedRef, readonly suspendedWarningState: Synchronized.SynchronizedRef - ) {} + ) { + this.currentTimeMillis = core.map(ref.get(clockState), (data) => data.instant) + this.currentTimeNanos = core.map(ref.get(clockState), (data) => BigInt(data.instant * 1000000)) + } /** * Unsafely returns the current time in milliseconds. @@ -127,10 +131,12 @@ export class TestClockImpl implements TestClock { /** * Returns the current clock time in milliseconds. */ - currentTimeMillis: Effect.Effect = core.map( - ref.get(this.clockState), - (data) => data.instant - ) + currentTimeMillis: Effect.Effect + + /** + * Returns the current clock time in nanoseconds. + */ + currentTimeNanos: Effect.Effect /** * Unsafely returns the current time in nanoseconds. @@ -139,14 +145,6 @@ export class TestClockImpl implements TestClock { return BigInt(ref.unsafeGet(this.clockState).instant * 1000000) } - /** - * Returns the current clock time in nanoseconds. - */ - currentTimeNanos: Effect.Effect = core.map( - ref.get(this.clockState), - (data) => BigInt(data.instant * 1000000) - ) - /** * Saves the `TestClock`'s current state in an effect which, when run, will * restore the `TestClock` state to the saved state. diff --git a/test/Cause.ts b/test/Cause.test.ts similarity index 91% rename from test/Cause.ts rename to test/Cause.test.ts index e17389de..0f2aaa59 100644 --- a/test/Cause.ts +++ b/test/Cause.test.ts @@ -6,10 +6,11 @@ import * as Cause from "@effect/io/Cause" import * as FiberId from "@effect/io/FiberId" import * as internal from "@effect/io/internal/cause" import { causes, equalCauses, errorCauseFunctions, errors } from "@effect/io/test/utils/cause" +import { describe, expect, it } from "bun:test" import * as fc from "fast-check" -import { assert, describe } from "vitest" +import assert from "node:assert" -describe.concurrent("Cause", () => { +describe("Cause", () => { it("[internal] prettyErrorMessage", () => { class Error1 { readonly _tag = "WithTag" @@ -46,7 +47,7 @@ describe.concurrent("Cause", () => { ) }) - describe.concurrent("pretty", () => { + describe("pretty", () => { it("Empty", () => { expect(Cause.pretty(Cause.empty)).toEqual("All fibers interrupted without errors.") }) @@ -92,7 +93,7 @@ describe.concurrent("Cause", () => { }) }) - describe.concurrent("toJSON", () => { + describe("toJSON", () => { it("Empty", () => { expect(Cause.empty.toJSON()).toEqual({ _id: "Cause", @@ -194,7 +195,7 @@ describe.concurrent("Cause", () => { }) }) - describe.concurrent("toString", () => { + describe("toString", () => { it("Empty", () => { expect(String(Cause.empty)).toEqual(`All fibers interrupted without errors.`) }) @@ -229,10 +230,10 @@ describe.concurrent("Cause", () => { }) it("should be compared for equality by value", () => { - assert.isTrue(Equal.equals(Cause.fail(0), Cause.fail(0))) - assert.isTrue(Equal.equals(Cause.die(0), Cause.die(0))) - assert.isFalse(Equal.equals(Cause.fail(0), Cause.fail(1))) - assert.isFalse(Equal.equals(Cause.die(0), Cause.die(1))) + expect(Equal.equals(Cause.fail(0), Cause.fail(0))).toBeTrue() + expect(Equal.equals(Cause.die(0), Cause.die(0))).toBeTrue() + expect(Equal.equals(Cause.fail(0), Cause.fail(1))).toBeFalse() + expect(Equal.equals(Cause.die(0), Cause.die(1))).toBeFalse() }) it("`Cause.equals` is symmetric", () => { @@ -254,9 +255,9 @@ describe.concurrent("Cause", () => { fc.assert(fc.property(causes, (cause) => { const result = Cause.keepDefects(cause) if (Cause.isDie(cause)) { - assert.isTrue(Option.isSome(result)) + expect(Option.isSome(result)).toBeTrue() } else { - assert.isTrue(Option.isNone(result)) + expect(Option.isNone(result)).toBeTrue() } })) }) @@ -272,7 +273,7 @@ describe.concurrent("Cause", () => { fc.assert(fc.property(causes, (cause) => { const left = cause.pipe(Cause.flatMap(Cause.fail)) const right = cause - assert.isTrue(Equal.equals(left, right)) + expect(Equal.equals(left, right)).toBeTrue() })) }) @@ -280,7 +281,7 @@ describe.concurrent("Cause", () => { fc.assert(fc.property(errors, errorCauseFunctions, (error, f) => { const left = Cause.fail(error).pipe(Cause.flatMap(f)) const right = f(error) - assert.isTrue(Equal.equals(left, right)) + expect(Equal.equals(left, right)).toBeTrue() })) }) @@ -288,11 +289,11 @@ describe.concurrent("Cause", () => { fc.assert(fc.property(causes, errorCauseFunctions, errorCauseFunctions, (cause, f, g) => { const left = cause.pipe(Cause.flatMap(f), Cause.flatMap(g)) const right = cause.pipe(Cause.flatMap((error) => f(error).pipe(Cause.flatMap(g)))) - assert.isTrue(Equal.equals(left, right)) + expect(Equal.equals(left, right)).toBeTrue() })) }) - describe.concurrent("stripSomeDefects", () => { + describe("stripSomeDefects", () => { it("returns `Some` with remaining causes", () => { const cause1 = Cause.die({ _tag: "NumberFormatException", @@ -310,7 +311,7 @@ describe.concurrent("Cause", () => { Option.none() ) ) - assert.isTrue(Equal.equals(stripped, Option.some(cause2))) + expect(Equal.equals(stripped, Option.some(cause2))).toBeTrue() }) it("returns `None` if there are no remaining causes", () => { @@ -322,7 +323,7 @@ describe.concurrent("Cause", () => { Option.none() ) ) - assert.isTrue(Equal.equals(stripped, Option.none())) + expect(Equal.equals(stripped, Option.none())).toBeTrue() }) }) diff --git a/test/Config.ts b/test/Config.test.ts similarity index 93% rename from test/Config.ts rename to test/Config.test.ts index e9c73cd5..772d6b04 100644 --- a/test/Config.ts +++ b/test/Config.test.ts @@ -10,10 +10,11 @@ import * as ConfigSecret from "@effect/io/ConfigSecret" import * as Effect from "@effect/io/Effect" import * as Exit from "@effect/io/Exit" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" -describe.concurrent("Config", () => { - describe.concurrent("withDefault", () => { +describe("Config", () => { + describe("withDefault", () => { it.effect("recovers from missing data error", () => Effect.gen(function*($) { const config = pipe( @@ -35,11 +36,11 @@ describe.concurrent("Config", () => { const result = yield* $( Effect.exit(configProvider.load(config)) ) - assert.isTrue( + expect( Exit.isFailure(result) && Cause.isFailType(result.i0) && ConfigError.isInvalidData(result.i0.error) - ) + ).toBeTrue() })) it.effect("does not recover from missing data and other error", () => @@ -53,13 +54,13 @@ describe.concurrent("Config", () => { const result = yield* $( Effect.exit(configProvider.load(config)) ) - assert.isTrue( + expect( Exit.isFailure(result) && Cause.isFailType(result.i0) && ConfigError.isAnd(result.i0.error) && ConfigError.isMissingData(result.i0.error.left) && ConfigError.isInvalidData(result.i0.error.right) - ) + ).toBeTrue() })) it.effect("does not recover from missing data or other error", () => @@ -73,7 +74,7 @@ describe.concurrent("Config", () => { const result = yield* $( Effect.exit(configProvider.load(config)) ) - assert.isTrue( + expect( Exit.isFailure(result) && Cause.isFailType(result.i0) && ConfigError.isOr(result.i0.error) && @@ -83,11 +84,11 @@ describe.concurrent("Config", () => { ConfigError.isInvalidData(result.i0.error.right) && result.i0.error.right.message === "Expected an integer value but received value" && Equal.equals(Chunk.unsafeFromArray(result.i0.error.right.path), Chunk.of("key2")) - ) + ).toBeTrue() })) }) - describe.concurrent("optional", () => { + describe("optional", () => { it.effect("recovers from missing data error", () => Effect.gen(function*($) { const config = Config.option(Config.integer("key")) @@ -103,11 +104,11 @@ describe.concurrent("Config", () => { const result = yield* $( Effect.exit(configProvider.load(config)) ) - assert.isTrue( + expect( Exit.isFailure(result) && Cause.isFailType(result.i0) && ConfigError.isInvalidData(result.i0.error) - ) + ).toBeTrue() })) it.effect("does not recover from missing data and other error", () => @@ -121,13 +122,13 @@ describe.concurrent("Config", () => { const result = yield* $( Effect.exit(configProvider.load(config)) ) - assert.isTrue( + expect( Exit.isFailure(result) && Cause.isFailType(result.i0) && ConfigError.isAnd(result.i0.error) && ConfigError.isMissingData(result.i0.error.left) && ConfigError.isInvalidData(result.i0.error.right) - ) + ).toBeTrue() })) it.effect("does not recover from missing data or other error", () => @@ -141,7 +142,7 @@ describe.concurrent("Config", () => { const result = yield* $( Effect.exit(configProvider.load(config)) ) - assert.isTrue( + expect( Exit.isFailure(result) && Cause.isFailType(result.i0) && ConfigError.isOr(result.i0.error) && @@ -151,11 +152,11 @@ describe.concurrent("Config", () => { ConfigError.isInvalidData(result.i0.error.right) && result.i0.error.right.message === "Expected an integer value but received value" && Equal.equals(Chunk.unsafeFromArray(result.i0.error.right.path), Chunk.of("key2")) - ) + ).toBeTrue() })) }) - describe.concurrent("Wrap", () => { + describe("Wrap", () => { it.effect("unwrap correctly builds config", () => Effect.gen(function*($) { const wrapper = ( @@ -193,10 +194,10 @@ describe.concurrent("Config", () => { })) }) - describe.concurrent("Secret", () => { + describe("Secret", () => { it.it("chunk constructor", () => { const secret = ConfigSecret.fromChunk(Chunk.fromIterable("secret".split(""))) - assert.isTrue(Equal.equals(secret, ConfigSecret.fromString("secret"))) + expect(Equal.equals(secret, ConfigSecret.fromString("secret"))).toBeTrue() }) it.it("value", () => { @@ -213,12 +214,12 @@ describe.concurrent("Config", () => { it.it("wipe", () => { const secret = ConfigSecret.fromString("secret") ConfigSecret.unsafeWipe(secret) - assert.isTrue( + expect( Equal.equals( ConfigSecret.value(secret), Array.from({ length: "secret".length }, () => String.fromCharCode(0)).join("") ) - ) + ).toBeTrue() }) }) }) diff --git a/test/ConfigProvider.ts b/test/ConfigProvider.test.ts similarity index 99% rename from test/ConfigProvider.ts rename to test/ConfigProvider.test.ts index e08342ae..c2169e8f 100644 --- a/test/ConfigProvider.ts +++ b/test/ConfigProvider.test.ts @@ -13,7 +13,8 @@ import * as Effect from "@effect/io/Effect" import * as Exit from "@effect/io/Exit" import * as LogLevel from "@effect/io/LogLevel" import * as it from "@effect/io/test/utils/extend" -import { assert, describe, expect } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" interface HostPort { readonly host: string @@ -87,7 +88,7 @@ const provider = (map: Map): ConfigProvider.ConfigProvider => { return ConfigProvider.fromMap(map) } -describe.concurrent("ConfigProvider", () => { +describe("ConfigProvider", () => { it.effect("flat atoms", () => Effect.gen(function*($) { const map = new Map([["host", "localhost"], ["port", "8080"]]) @@ -131,7 +132,7 @@ describe.concurrent("ConfigProvider", () => { Effect.gen(function*($) { const map = new Map() const result = yield* $(Effect.exit(provider(map).load(hostPortsConfig))) - assert.isTrue(Exit.isFailure(result)) + expect(Exit.isFailure(result)).toBeTrue() })) it.effect("simple map", () => @@ -193,6 +194,7 @@ describe.concurrent("ConfigProvider", () => { ["hostPorts.port", "8080,8080,8080"] ]) const result = yield* $(Effect.exit(provider(map).load(hostPortsConfig))) + assert.deepStrictEqual( result, Exit.fail( @@ -355,14 +357,14 @@ describe.concurrent("ConfigProvider", () => { const result = yield* $( Effect.exit(ConfigProvider.fromMap(map).load(config)) ) - assert.isTrue( + expect( Exit.isFailure(result) && Cause.isFailType(result.i0) && ConfigError.isMissingData(result.i0.error) && // TODO: fix error message to not include `.[index]` result.i0.error.message === "Expected employees.[1].id to exist in the provided map" && Equal.equals(Chunk.unsafeFromArray(result.i0.error.path), Chunk.make("employees", "[1]", "id")) - ) + ).toBeTrue() })) it.effect("indexed sequence - multiple product types with optional fields", () => diff --git a/test/Deferred.ts b/test/Deferred.test.ts similarity index 84% rename from test/Deferred.ts rename to test/Deferred.test.ts index e34fab03..5997bbbc 100644 --- a/test/Deferred.ts +++ b/test/Deferred.test.ts @@ -4,16 +4,16 @@ import * as Effect from "@effect/io/Effect" import * as Exit from "@effect/io/Exit" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" -describe.concurrent("Deferred", () => { +describe("Deferred", () => { it.effect("complete a deferred using succeed", () => Effect.gen(function*($) { const deferred = yield* $(Deferred.make()) const success = yield* $(Deferred.succeed(deferred, 32)) const result = yield* $(Deferred.await(deferred)) - assert.isTrue(success) - assert.strictEqual(result, 32) + expect(success).toBeTrue() + expect(result).toStrictEqual(32) })) it.effect("complete a deferred using complete", () => Effect.gen(function*($) { @@ -22,8 +22,8 @@ describe.concurrent("Deferred", () => { yield* $(Deferred.complete(deferred, Ref.updateAndGet(ref, (n) => n + 1))) const result1 = yield* $(Deferred.await(deferred)) const result2 = yield* $(Deferred.await(deferred)) - assert.strictEqual(result1, 14) - assert.strictEqual(result2, 14) + expect(result1).toStrictEqual(14) + expect(result2).toStrictEqual(14) })) it.effect("complete a deferred using completeWith", () => Effect.gen(function*($) { @@ -32,8 +32,8 @@ describe.concurrent("Deferred", () => { yield* $(Deferred.completeWith(deferred, Ref.updateAndGet(ref, (n) => n + 1))) const result1 = yield* $(Deferred.await(deferred)) const result2 = yield* $(Deferred.await(deferred)) - assert.strictEqual(result1, 14) - assert.strictEqual(result2, 15) + expect(result1).toStrictEqual(14) + expect(result2).toStrictEqual(15) })) it.effect("complete a deferred twice", () => Effect.gen(function*($) { @@ -41,16 +41,16 @@ describe.concurrent("Deferred", () => { yield* $(Deferred.succeed(deferred, 1)) const success = yield* $(Deferred.complete(deferred, Effect.succeed(9))) const result = yield* $(Deferred.await(deferred)) - assert.isFalse(success) - assert.strictEqual(result, 1) + expect(success).toBeFalse() + expect(result).toStrictEqual(1) })) it.effect("fail a deferred using fail", () => Effect.gen(function*($) { const deferred = yield* $(Deferred.make()) const success = yield* $(Deferred.fail(deferred, "error with fail")) const result = yield* $(deferred, Deferred.await, Effect.exit) - assert.isTrue(success) - assert.isTrue(Exit.isFailure(result)) + expect(success).toBeTrue() + expect(Exit.isFailure(result)).toBeTrue() })) it.effect("fail a deferred using complete", () => Effect.gen(function*($) { @@ -61,9 +61,9 @@ describe.concurrent("Deferred", () => { ) const result1 = yield* $(deferred, Deferred.await, Effect.exit) const result2 = yield* $(deferred, Deferred.await, Effect.exit) - assert.isTrue(success) - assert.isTrue(Exit.isFailure(result1)) - assert.isTrue(Exit.isFailure(result2)) + expect(success).toBeTrue() + expect(Exit.isFailure(result1)).toBeTrue() + expect(Exit.isFailure(result2)).toBeTrue() })) it.effect("fail a deferred using completeWith", () => Effect.gen(function*($) { @@ -79,35 +79,35 @@ describe.concurrent("Deferred", () => { ) const result1 = yield* $(deferred, Deferred.await, Effect.exit) const result2 = yield* $(deferred, Deferred.await, Effect.exit) - assert.isTrue(success) - assert.isTrue(Exit.isFailure(result1)) - assert.isTrue(Exit.isFailure(result2)) + expect(success).toBeTrue() + expect(Exit.isFailure(result1)).toBeTrue() + expect(Exit.isFailure(result2)).toBeTrue() })) it.effect("is done when a deferred is completed", () => Effect.gen(function*($) { const deferred = yield* $(Deferred.make()) yield* $(Deferred.succeed(deferred, 0)) const result = yield* $(Deferred.isDone(deferred)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("is done when a deferred is failed", () => Effect.gen(function*($) { const deferred = yield* $(Deferred.make()) yield* $(Deferred.fail(deferred, "failure")) const result = yield* $(Deferred.isDone(deferred)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("should interrupt a deferred", () => Effect.gen(function*($) { const deferred = yield* $(Deferred.make()) const result = yield* $(Deferred.interrupt(deferred)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("poll a deferred that is not completed yet", () => Effect.gen(function*($) { const deferred = yield* $(Deferred.make()) const result = yield* $(Deferred.poll(deferred)) - assert.isTrue(Option.isNone(result)) + expect(Option.isNone(result)).toBeTrue() })) it.effect("poll a deferred that is completed", () => Effect.gen(function*($) { @@ -123,7 +123,7 @@ describe.concurrent("Deferred", () => { Effect.exit ) ) - assert.deepStrictEqual(result, Exit.succeed(12)) + expect(result).toStrictEqual(Exit.succeed(12)) })) it.effect("poll a deferred that is failed", () => Effect.gen(function*($) { @@ -139,7 +139,7 @@ describe.concurrent("Deferred", () => { Effect.exit ) ) - assert.isTrue(Exit.isFailure(result)) + expect(Exit.isFailure(result)).toBeTrue() })) it.effect("poll a deferred that is interrupted", () => Effect.gen(function*($) { @@ -155,6 +155,6 @@ describe.concurrent("Deferred", () => { Effect.exit ) ) - assert.isTrue(Exit.isInterrupted(result)) + expect(Exit.isInterrupted(result)).toBeTrue() })) }) diff --git a/test/Effect/acquire-release.ts b/test/Effect/acquire-release.test.ts similarity index 84% rename from test/Effect/acquire-release.ts rename to test/Effect/acquire-release.test.ts index 5dbbd7e9..18cd4fb4 100644 --- a/test/Effect/acquire-release.ts +++ b/test/Effect/acquire-release.test.ts @@ -6,9 +6,10 @@ import * as Effect from "@effect/io/Effect" import * as Exit from "@effect/io/Exit" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("acquireUseRelease - happy path", () => Effect.gen(function*($) { const release = yield* $(Ref.make(false)) @@ -21,7 +22,7 @@ describe.concurrent("Effect", () => { ) const released = yield* $(Ref.get(release)) assert.strictEqual(result, 43) - assert.isTrue(released) + expect(released).toBeTrue() })) it.effect("acquireUseRelease - happy path + disconnect", () => Effect.gen(function*($) { @@ -36,7 +37,7 @@ describe.concurrent("Effect", () => { ) const released = yield* $(Ref.get(release)) assert.strictEqual(result, 43) - assert.isTrue(released) + expect(released).toBeTrue() })) it.effect("acquireUseRelease - error handling", () => Effect.gen(function*($) { @@ -53,8 +54,8 @@ describe.concurrent("Effect", () => { exit, Exit.matchEffect({ onFailure: Effect.succeed, onSuccess: () => Effect.fail("effect should have failed") }) ) - assert.isTrue(equals(Cause.failures(result), Chunk.of("use failed"))) - assert.isTrue(equals(Cause.defects(result), Chunk.of(releaseDied))) + expect(equals(Cause.failures(result), Chunk.of("use failed"))).toBeTrue() + expect(equals(Cause.defects(result), Chunk.of(releaseDied))).toBeTrue() })) it.effect("acquireUseRelease - error handling + disconnect", () => Effect.gen(function*($) { @@ -75,8 +76,8 @@ describe.concurrent("Effect", () => { onSuccess: () => Effect.fail("effect should have failed") }) ) - assert.isTrue(equals(Cause.failures(result), Chunk.of("use failed"))) - assert.isTrue(equals(Cause.defects(result), Chunk.of(releaseDied))) + expect(equals(Cause.failures(result), Chunk.of("use failed"))).toBeTrue() + expect(equals(Cause.defects(result), Chunk.of(releaseDied))).toBeTrue() })) it.effect("acquireUseRelease - beast mode error handling + disconnect", () => Effect.gen(function*($) { @@ -105,7 +106,7 @@ describe.concurrent("Effect", () => { ) ) const released = yield* $(Ref.get(release)) - assert.isTrue(equals(Cause.defects(result), Chunk.of(useDied))) - assert.isTrue(released) + expect(equals(Cause.defects(result), Chunk.of(useDied))).toBeTrue() + expect(released).toBeTrue() })) }) diff --git a/test/Effect/async.ts b/test/Effect/async.test.ts similarity index 97% rename from test/Effect/async.ts rename to test/Effect/async.test.ts index a1654876..138c8a5a 100644 --- a/test/Effect/async.ts +++ b/test/Effect/async.test.ts @@ -10,10 +10,11 @@ import * as Fiber from "@effect/io/Fiber" import * as Ref from "@effect/io/Ref" import * as Runtime from "@effect/io/Runtime" import * as it from "@effect/io/test/utils/extend" +import { describe, expect } from "bun:test" +import assert from "node:assert" import * as os from "node:os" -import { assert, describe } from "vitest" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("simple async must return", () => Effect.gen(function*($) { const result = yield* $(Effect.async((cb) => { @@ -66,7 +67,7 @@ describe.concurrent("Effect", () => { yield* $(Deferred.await(acquire)) yield* $(Fiber.interruptFork(fiber)) const result = yield* $(Deferred.await(release)) - assert.isUndefined(result) + expect(result).toBeUndefined() })) it.live("async should not resume fiber twice after interruption", () => Effect.gen(function*($) { @@ -123,7 +124,7 @@ describe.concurrent("Effect", () => { it.effect("sleep 0 must return", () => Effect.gen(function*($) { const result = yield* $(Effect.sleep(Duration.zero)) - assert.isUndefined(result) + expect(result).toBeUndefined() })) it.effect("shallow bind of async chain", () => Effect.gen(function*($) { diff --git a/test/Effect/caching.ts b/test/Effect/caching.test.ts similarity index 95% rename from test/Effect/caching.ts rename to test/Effect/caching.test.ts index da8aed9b..7e5a95ec 100644 --- a/test/Effect/caching.ts +++ b/test/Effect/caching.test.ts @@ -4,9 +4,10 @@ import * as Effect from "@effect/io/Effect" import * as TestClock from "@effect/io/internal/testing/testClock" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("cached - returns new instances after duration", () => Effect.gen(function*($) { const ref = yield* $(Ref.make(0)) diff --git a/test/Effect/cause-rendering.ts b/test/Effect/cause-rendering.test.ts similarity index 81% rename from test/Effect/cause-rendering.ts rename to test/Effect/cause-rendering.test.ts index 23b28929..102cdc84 100644 --- a/test/Effect/cause-rendering.ts +++ b/test/Effect/cause-rendering.test.ts @@ -2,9 +2,9 @@ import * as Option from "@effect/data/Option" import * as Cause from "@effect/io/Cause" import * as Effect from "@effect/io/Effect" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("Cause should include span data", () => Effect.gen(function*($) { const cause = yield* $(Effect.flip(Effect.sandbox( @@ -15,8 +15,8 @@ describe.concurrent("Effect", () => { ) ))) const rendered = Cause.pretty(cause) - assert.include(rendered, "spanA") - assert.include(rendered, "spanB") + expect(rendered).toInclude("spanA") + expect(rendered).toInclude("spanB") })) it.effect("catchTag should not invalidate traces", () => Effect.gen(function*($) { @@ -37,12 +37,12 @@ describe.concurrent("Effect", () => { ).pipe(Effect.catchTag("E2", (e) => Effect.die(e))) const cause = yield* $(Effect.flip(Effect.sandbox(effect))) const rendered = Cause.pretty(cause) - assert.include(rendered, "spanA") - assert.include(rendered, "spanB") + expect(rendered).toInclude("spanA") + expect(rendered).toInclude("spanB") const obj = Option.getOrThrow(Cause.failureOption(cause)) - assert.isTrue(obj instanceof E1) - assert.isFalse(err === obj) - assert.isTrue(err === Cause.originalError(obj)) + expect(obj instanceof E1).toBeTrue() + expect(err === obj).toBeFalse() + expect(err === Cause.originalError(obj)).toBeTrue() })) it.effect("refail should not invalidate traces", () => Effect.gen(function*($) { @@ -62,8 +62,8 @@ describe.concurrent("Effect", () => { ).pipe(Effect.catchAll((e) => Effect.fail(e))) const cause = yield* $(Effect.flip(Effect.sandbox(effect))) const rendered = Cause.pretty(cause) - assert.include(rendered, "spanA") - assert.include(rendered, "spanB") + expect(rendered).toInclude("spanA") + expect(rendered).toInclude("spanB") })) it.effect("catchTags should not invalidate traces", () => Effect.gen(function*($) { @@ -83,7 +83,7 @@ describe.concurrent("Effect", () => { ).pipe(Effect.catchTags({ E2: (e) => Effect.die(e) })) const cause = yield* $(Effect.flip(Effect.sandbox(effect))) const rendered = Cause.pretty(cause) - assert.include(rendered, "spanA") - assert.include(rendered, "spanB") + expect(rendered).toInclude("spanA") + expect(rendered).toInclude("spanB") })) }) diff --git a/test/Effect/collecting.ts b/test/Effect/collecting.test.ts similarity index 94% rename from test/Effect/collecting.ts rename to test/Effect/collecting.test.ts index ca5cad0a..299b5487 100644 --- a/test/Effect/collecting.ts +++ b/test/Effect/collecting.test.ts @@ -2,9 +2,10 @@ import * as Cause from "@effect/io/Cause" import * as Effect from "@effect/io/Effect" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("all - returns result in the same order", () => Effect.gen(function*($) { const result = yield* $(Effect.all([1, 2, 3].map(Effect.succeed), { diff --git a/test/Effect/concurrency.ts b/test/Effect/concurrency.test.ts similarity index 97% rename from test/Effect/concurrency.ts rename to test/Effect/concurrency.test.ts index 810fce4a..dbc08a4e 100644 --- a/test/Effect/concurrency.ts +++ b/test/Effect/concurrency.test.ts @@ -9,7 +9,8 @@ import { adjust } from "@effect/io/internal/testing/testClock" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" import { withLatch } from "@effect/io/test/utils/latch" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" export const ExampleError = new Error("Oh noes!") @@ -33,7 +34,7 @@ const concurrentFib = (n: number): Effect.Effect => { }) } -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("shallow fork/join identity", () => Effect.gen(function*($) { const result = yield* $(Effect.succeed(42), Effect.fork, Effect.flatMap(Fiber.join)) @@ -80,7 +81,7 @@ describe.concurrent("Effect", () => { const fiber2 = yield* $(Fiber.join(fiber1)) const result = yield* $(Ref.get(ref)) yield* $(Fiber.interrupt(fiber2)) - assert.isFalse(result) + expect(result).toBeFalse() })) it.effect("daemon fiber race interruption", () => Effect.gen(function*($) { @@ -130,8 +131,8 @@ describe.concurrent("Effect", () => { yield* $(Fiber.interrupt(fiber)) const res1 = yield* $(Deferred.await(deferred1)) const res2 = yield* $(Deferred.await(deferred2)) - assert.isUndefined(res1) - assert.isUndefined(res2) + expect(res1).toBeUndefined() + expect(res2).toBeUndefined() })) it.live("supervise fibers", () => Effect.gen(function*($) { @@ -188,9 +189,9 @@ describe.concurrent("Effect", () => { ) yield* $(Deferred.await(latch)) yield* $(adjust("30 seconds")) - assert.isTrue(fiber.unsafePoll() === null) + expect(fiber.unsafePoll() === null).toBeTrue() yield* $(adjust("60 seconds")) - assert.isFalse(fiber.unsafePoll() === null) + expect(fiber.unsafePoll() === null).toBeFalse() }), 20_000) it.effect("race of two forks does not interrupt winner", () => Effect.gen(function*($) { diff --git a/test/Effect/constructors.ts b/test/Effect/constructors.test.ts similarity index 90% rename from test/Effect/constructors.ts rename to test/Effect/constructors.test.ts index 23a11de9..9faac1c4 100644 --- a/test/Effect/constructors.ts +++ b/test/Effect/constructors.test.ts @@ -1,9 +1,10 @@ import * as Option from "@effect/data/Option" import * as Effect from "@effect/io/Effect" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("can lift a value to an option", () => Effect.gen(function*($) { const result = yield* $(Effect.succeedSome(42)) diff --git a/test/Effect/destructors.ts b/test/Effect/destructors.test.ts similarity index 92% rename from test/Effect/destructors.ts rename to test/Effect/destructors.test.ts index b92eec18..9f2c1e4d 100644 --- a/test/Effect/destructors.ts +++ b/test/Effect/destructors.test.ts @@ -4,11 +4,12 @@ import * as Cause from "@effect/io/Cause" import * as Effect from "@effect/io/Effect" import * as Exit from "@effect/io/Exit" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" const ExampleError = new Error("Oh noes!") -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("head - on non empty list", () => Effect.gen(function*($) { const result = yield* $(Effect.succeed([1, 2, 3]), Effect.head, Effect.either) @@ -27,22 +28,22 @@ describe.concurrent("Effect", () => { it.effect("isFailure - returns true when the effect is a failure", () => Effect.gen(function*($) { const result = yield* $(Effect.isFailure(Effect.fail("fail"))) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("isFailure - returns false when the effect is a success", () => Effect.gen(function*($) { const result = yield* $(Effect.isFailure(Effect.succeed("succeed"))) - assert.isFalse(result) + expect(result).toBeFalse() })) it.effect("isSuccess - returns false when the effect is a failure", () => Effect.gen(function*($) { const result = yield* $(Effect.isSuccess(Effect.fail("fail"))) - assert.isFalse(result) + expect(result).toBeFalse() })) it.effect("isSuccess - returns true when the effect is a success", () => Effect.gen(function*($) { const result = yield* $(Effect.isSuccess(Effect.succeed("succeed"))) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("none - on Some fails with None", () => Effect.gen(function*($) { @@ -52,7 +53,7 @@ describe.concurrent("Effect", () => { it.effect("none - on None succeeds with undefined", () => Effect.gen(function*($) { const result = yield* $(Effect.none(Effect.succeed(Option.none()))) - assert.isUndefined(result) + expect(result).toBeUndefined() })) it.effect("none - fails with Some(ex) when effect fails with ex", () => Effect.gen(function*($) { diff --git a/test/Effect/environment.ts b/test/Effect/environment.test.ts similarity index 97% rename from test/Effect/environment.ts rename to test/Effect/environment.test.ts index dd130296..e66b66ad 100644 --- a/test/Effect/environment.ts +++ b/test/Effect/environment.test.ts @@ -2,7 +2,8 @@ import * as Context from "@effect/data/Context" import { pipe } from "@effect/data/Function" import * as Effect from "@effect/io/Effect" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" interface NumberService { readonly n: number @@ -16,7 +17,7 @@ interface StringService { const StringService = Context.Tag() -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("environment - provide is modular", () => pipe( Effect.gen(function*($) { diff --git a/test/Effect/error-handling.ts b/test/Effect/error-handling.test.ts similarity index 98% rename from test/Effect/error-handling.ts rename to test/Effect/error-handling.test.ts index aff1e019..e800b6aa 100644 --- a/test/Effect/error-handling.ts +++ b/test/Effect/error-handling.test.ts @@ -10,8 +10,9 @@ import * as FiberId from "@effect/io/FiberId" import { causesArb } from "@effect/io/test/utils/cause" import * as it from "@effect/io/test/utils/extend" import { assertType, satisfies } from "@effect/io/test/utils/types" +import { describe, expect } from "bun:test" import * as fc from "fast-check" -import { assert, describe } from "vitest" +import assert from "node:assert" const ExampleError = new Error("Oh noes!") @@ -37,7 +38,7 @@ const deepErrorFail = (n: number): Effect.Effect => { return pipe(Effect.unit, Effect.zipRight(deepErrorFail(n - 1))) } -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("attempt - error in sync effect", () => Effect.gen(function*($) { const result = yield* $( @@ -336,12 +337,12 @@ describe.concurrent("Effect", () => { it.effect("ignore - return success as unit", () => Effect.gen(function*($) { const result = yield* $(Effect.ignore(Effect.succeed(11))) - assert.isUndefined(result) + expect(result).toBeUndefined() })) it.effect("ignore - return failure as unit", () => Effect.gen(function*($) { const result = yield* $(Effect.ignore(Effect.fail(123))) - assert.isUndefined(result) + expect(result).toBeUndefined() })) it.effect("ignore - not catch throwable", () => Effect.gen(function*($) { @@ -381,7 +382,7 @@ describe.concurrent("Effect", () => { return Effect.succeed(false) }) ) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("orElse - left failed and right failed with kept cause", () => Effect.gen(function*($) { @@ -401,7 +402,7 @@ describe.concurrent("Effect", () => { return Effect.succeed(false) }) ) - assert.isTrue(result) + expect(result).toBeTrue() })) it.it("orElse - is associative", async () => { const smallInts = fc.integer({ min: 0, max: 100 }) @@ -429,22 +430,22 @@ describe.concurrent("Effect", () => { it.effect("orElseFail - executes this effect and returns its value if it succeeds", () => Effect.gen(function*($) { const result = yield* $(Effect.succeed(true), Effect.orElseFail(constFalse)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("orElseFail - otherwise fails with the specified error", () => Effect.gen(function*($) { const result = yield* $(Effect.fail(false), Effect.orElseFail(constTrue), Effect.flip) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("orElseSucceed - executes this effect and returns its value if it succeeds", () => Effect.gen(function*($) { const result = yield* $(Effect.succeed(true), Effect.orElseSucceed(constFalse)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("orElseSucceed - otherwise succeeds with the specified value", () => Effect.gen(function*($) { const result = yield* $(Effect.fail(false), Effect.orElseSucceed(constTrue)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("parallelErrors - one failure", () => Effect.gen(function*($) { diff --git a/test/Effect/filtering.ts b/test/Effect/filtering.test.ts similarity index 98% rename from test/Effect/filtering.ts rename to test/Effect/filtering.test.ts index db1ea6e8..178c69e1 100644 --- a/test/Effect/filtering.ts +++ b/test/Effect/filtering.test.ts @@ -4,7 +4,8 @@ import * as Cause from "@effect/io/Cause" import * as Effect from "@effect/io/Effect" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" const exactlyOnce = ( value: A, @@ -19,7 +20,7 @@ const exactlyOnce = ( }) } -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("filter - filters a collection using an effectual predicate", () => Effect.gen(function*($) { const ref = yield* $(Ref.make>([])) diff --git a/test/Effect/finalization.ts b/test/Effect/finalization.test.ts similarity index 93% rename from test/Effect/finalization.ts rename to test/Effect/finalization.test.ts index 0a8a16b9..5ff277ff 100644 --- a/test/Effect/finalization.ts +++ b/test/Effect/finalization.test.ts @@ -10,7 +10,8 @@ import * as Exit from "@effect/io/Exit" import * as Fiber from "@effect/io/Fiber" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" const ExampleError = new Error("Oh noes!") @@ -26,7 +27,7 @@ const asyncUnit = (): Effect.Effect => { }) } -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("fail ensuring", () => Effect.gen(function*($) { let finalized = false @@ -38,7 +39,7 @@ describe.concurrent("Effect", () => { Effect.exit ) assert.deepStrictEqual(result, Exit.fail(ExampleError)) - assert.isTrue(finalized) + expect(finalized).toBeTrue() })) it.effect("fail on error", () => Effect.gen(function*($) { @@ -53,7 +54,7 @@ describe.concurrent("Effect", () => { Effect.exit ) assert.deepStrictEqual(result, Exit.fail(ExampleError)) - assert.isTrue(finalized) + expect(finalized).toBeTrue() })) it.effect("finalizer errors not caught", () => Effect.gen(function*($) { @@ -92,8 +93,8 @@ describe.concurrent("Effect", () => { ) ) ) - assert.isUndefined(result) - assert.isFalse(reported !== undefined && Exit.isSuccess(reported)) + expect(result).toBeUndefined() + expect(reported !== undefined && Exit.isSuccess(reported)).toBeFalse() })) it.effect("acquireUseRelease exit.effect() is usage result", () => Effect.gen(function*($) { @@ -250,18 +251,18 @@ describe.concurrent("Effect", () => { Effect.repeatUntil((list) => pipe(list, ReadonlyArray.findFirst((s) => s === "release 2"), Option.isSome)) ) const result = yield* $(Ref.get(ref)) - assert.isTrue(pipe( + expect(pipe( result, ReadonlyArray.findFirst((s) => s === "start 1"), Option.isSome - )) - assert.isTrue(pipe( + )).toBeTrue() + expect(pipe( result, ReadonlyArray.findFirst((s) => s === "release 1"), Option.isSome - )) - assert.isTrue(pipe(result, ReadonlyArray.findFirst((s) => s === "start 2"), Option.isSome)) - assert.isTrue(pipe(result, ReadonlyArray.findFirst((s) => s === "release 2"), Option.isSome)) + )).toBeTrue() + expect(pipe(result, ReadonlyArray.findFirst((s) => s === "start 2"), Option.isSome)).toBeTrue() + expect(pipe(result, ReadonlyArray.findFirst((s) => s === "release 2"), Option.isSome)).toBeTrue() })) it.live("interrupt waits for finalizer", () => Effect.gen(function*($) { @@ -279,7 +280,7 @@ describe.concurrent("Effect", () => { yield* $(Deferred.await(deferred1)) yield* $(Fiber.interrupt(fiber)) const result = yield* $(Ref.get(ref)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("onExit - executes that a cleanup function runs when effect succeeds", () => Effect.gen(function*($) { @@ -292,7 +293,7 @@ describe.concurrent("Effect", () => { })) ) const result = yield* $(Ref.get(ref)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("onExit - ensures that a cleanup function runs when an effect fails", () => Effect.gen(function*($) { @@ -308,7 +309,7 @@ describe.concurrent("Effect", () => { Effect.ignore ) const result = yield* $(Ref.get(ref)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("onExit - ensures that a cleanup function runs when an effect is interrupted", () => Effect.gen(function*($) { @@ -329,6 +330,6 @@ describe.concurrent("Effect", () => { yield* $(Deferred.await(latch1)) yield* $(Fiber.interrupt(fiber)) const result = yield* $(Deferred.await(latch2)) - assert.isUndefined(result) + expect(result).toBeUndefined() })) }) diff --git a/test/Effect/foreign.ts b/test/Effect/foreign.test.ts similarity index 95% rename from test/Effect/foreign.ts rename to test/Effect/foreign.test.ts index 93ebd46f..6f4214ac 100644 --- a/test/Effect/foreign.ts +++ b/test/Effect/foreign.test.ts @@ -7,9 +7,10 @@ import * as Effect from "@effect/io/Effect" import * as Exit from "@effect/io/Exit" import { nextInt } from "@effect/io/Random" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Foreign", () => { +describe("Foreign", () => { it.effect("Unify", () => Effect.gen(function*($) { const unifiedEffect = unify((yield* $(nextInt)) > 1 ? Effect.succeed(0) : Effect.fail(1)) diff --git a/test/Effect/forking.ts b/test/Effect/forking.test.ts similarity index 93% rename from test/Effect/forking.ts rename to test/Effect/forking.test.ts index 5472943d..3235de78 100644 --- a/test/Effect/forking.ts +++ b/test/Effect/forking.test.ts @@ -7,13 +7,14 @@ import * as Exit from "@effect/io/Exit" import * as Fiber from "@effect/io/Fiber" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("fork - propagates interruption", () => Effect.gen(function*($) { const result = yield* $(Effect.never, Effect.fork, Effect.flatMap(Fiber.interrupt)) - assert.isTrue(Exit.isInterrupted(result)) + expect(Exit.isInterrupted(result)).toBeTrue() })) it.effect("fork - propagates interruption with zip of defect", () => Effect.gen(function*($) { @@ -27,7 +28,7 @@ describe.concurrent("Effect", () => { yield* $(Deferred.await(latch)) const result = yield* $(Fiber.interrupt(fiber), Effect.map(Exit.mapErrorCause((cause) => cause))) - assert.isTrue(Exit.isInterrupted(result)) + expect(Exit.isInterrupted(result)).toBeTrue() })) it.effect("fork - interruption status is heritable", () => Effect.gen(function*($) { @@ -43,7 +44,7 @@ describe.concurrent("Effect", () => { ) const result = yield* $(Ref.get(ref)) - assert.isFalse(result) + expect(result).toBeFalse() })) it.effect("forkWithErrorHandler - calls provided function when task fails", () => Effect.gen(function*($) { @@ -53,7 +54,7 @@ describe.concurrent("Effect", () => { Effect.forkWithErrorHandler((e) => pipe(Deferred.succeed(deferred, e), Effect.asUnit)) ) const result = yield* $(Deferred.await(deferred)) - assert.isUndefined(result) + expect(result).toBeUndefined() })) it.effect("forkAll - returns the list of results in the same order", () => Effect.gen(function*($) { @@ -102,7 +103,7 @@ describe.concurrent("Effect", () => { assert.deepStrictEqual(Cause.dieOption(result1), Option.some(boom)) assert.deepStrictEqual(Cause.dieOption(result2), Option.some(boom)) assert.deepStrictEqual(Cause.dieOption(result3), Option.some(boom)) - assert.isTrue(Cause.isInterrupted(result3)) + expect(Cause.isInterrupted(result3)).toBeTrue() })) it.effect("forkAll - infers correctly", () => Effect.gen(function*($) { diff --git a/test/Effect/interruption.ts b/test/Effect/interruption.test.ts similarity index 94% rename from test/Effect/interruption.ts rename to test/Effect/interruption.test.ts index dc9f1d46..46a024a2 100644 --- a/test/Effect/interruption.ts +++ b/test/Effect/interruption.test.ts @@ -16,20 +16,21 @@ import * as TestClock from "@effect/io/internal/testing/testClock" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" import { withLatch, withLatchAwait } from "@effect/io/test/utils/latch" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("sync forever is interruptible", () => Effect.gen(function*($) { const fiber = yield* $(Effect.succeed(1), Effect.forever, Effect.fork) const result = yield* $(Fiber.interrupt(fiber)) - assert.isTrue(Exit.isFailure(result) && Cause.isInterruptedOnly(result.i0)) + expect(Exit.isFailure(result) && Cause.isInterruptedOnly(result.i0)).toBeTrue() })) it.effect("interrupt of never is interrupted with cause", () => Effect.gen(function*($) { const fiber = yield* $(Effect.never, Effect.fork) const result = yield* $(Fiber.interrupt(fiber)) - assert.isTrue(Exit.isFailure(result) && Cause.isInterruptedOnly(result.i0)) + expect(Exit.isFailure(result) && Cause.isInterruptedOnly(result.i0)).toBeTrue() })) it.effect("asyncEffect is interruptible", () => Effect.gen(function*($) { @@ -37,13 +38,13 @@ describe.concurrent("Effect", () => { pipe(Effect.asyncEffect(() => Effect.never), Effect.fork) ) const result = yield* $(Fiber.interrupt(fiber)) - assert.isTrue(Exit.isFailure(result) && Cause.isInterruptedOnly(result.i0)) + expect(Exit.isFailure(result) && Cause.isInterruptedOnly(result.i0)).toBeTrue() })) it.effect("async is interruptible", () => Effect.gen(function*($) { const fiber = yield* $(Effect.async(constVoid), Effect.fork) const result = yield* $(Fiber.interrupt(fiber)) - assert.isTrue(Exit.isFailure(result) && Cause.isInterruptedOnly(result.i0)) + expect(Exit.isFailure(result) && Cause.isInterruptedOnly(result.i0)).toBeTrue() })) it.effect("acquireUseRelease - acquire is uninterruptible", () => Effect.gen(function*($) { @@ -91,7 +92,7 @@ describe.concurrent("Effect", () => { ) ) const result = yield* $(Fiber.interrupt(fiber)) - assert.isTrue(Exit.isInterrupted(result)) + expect(Exit.isInterrupted(result)).toBeTrue() })) it.effect("acquireUseRelease - release is called on interrupt", () => Effect.gen(function*($) { @@ -137,7 +138,7 @@ describe.concurrent("Effect", () => { yield* $(Deferred.await(deferred1)) const result = yield* $(Fiber.interrupt(fiber)) yield* $(Deferred.succeed(deferred3, void 0)) - assert.isTrue(Exit.isInterrupted(result)) + expect(Exit.isInterrupted(result)).toBeTrue() })) it.effect("acquireUseRelease disconnect use is interruptible", () => Effect.gen(function*($) { @@ -151,7 +152,7 @@ describe.concurrent("Effect", () => { Effect.fork ) const result = yield* $(Fiber.interrupt(fiber)) - assert.isTrue(Exit.isInterrupted(result)) + expect(Exit.isInterrupted(result)).toBeTrue() })) it.effect("acquireUseRelease disconnect release called on interrupt in separate fiber", () => Effect.gen(function*($) { @@ -180,7 +181,7 @@ describe.concurrent("Effect", () => { }) ) ) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("catchAll + ensuring + interrupt", () => Effect.gen(function*($) { @@ -198,7 +199,7 @@ describe.concurrent("Effect", () => { yield* $(Deferred.await(latch)) yield* $(Fiber.interrupt(fiber)) const result = yield* $(Deferred.await(deferred)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("finalizer can detect interruption", () => Effect.gen(function*($) { @@ -220,7 +221,7 @@ describe.concurrent("Effect", () => { yield* $(Deferred.await(deferred2)) yield* $(Fiber.interrupt(fiber)) const result = yield* $(Deferred.await(deferred1)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("interrupted cause persists after catching", () => Effect.gen(function*($) { @@ -251,10 +252,10 @@ describe.concurrent("Effect", () => { yield* $(Deferred.await(latch1), Effect.zipRight(Fiber.interrupt(fiber))) const result = yield* $(Ref.get(exits), Effect.map(process)) assert.strictEqual(Array.from(result).length, 2) - assert.isTrue(pipe( + expect(pipe( result, ReadonlyArray.reduce(true, (acc, curr) => acc && Exit.isFailure(curr) && Cause.isInterruptedOnly(curr.i0)) - )) + )).toBeTrue() })) it.effect("interruption of raced", () => Effect.gen(function*($) { @@ -291,7 +292,7 @@ describe.concurrent("Effect", () => { )) yield* $(Fiber.interrupt(fiber)) const result = yield* $(Ref.get(recovered)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("recovery of interruptible", () => Effect.gen(function*($) { @@ -310,7 +311,7 @@ describe.concurrent("Effect", () => { )) yield* $(Fiber.interrupt(fiber)) const result = yield* $(Ref.get(recovered)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("sandbox of interruptible", () => Effect.gen(function*($) { @@ -386,7 +387,7 @@ describe.concurrent("Effect", () => { )) yield* $(Fiber.interrupt(fiber)) const result = yield* $(Ref.get(ref)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("interruption after defect 2", () => Effect.gen(function*($) { @@ -405,7 +406,7 @@ describe.concurrent("Effect", () => { )) yield* $(Fiber.interrupt(fiber)) const result = yield* $(Ref.get(ref)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("disconnect returns immediately on interrupt", () => Effect.gen(function*($) { @@ -421,7 +422,7 @@ describe.concurrent("Effect", () => { ) yield* $(Deferred.await(deferred)) const result = yield* $(Fiber.interrupt(fiber)) - assert.isTrue(Exit.isInterrupted(result)) + expect(Exit.isInterrupted(result)).toBeTrue() })) it.live("disconnected effect that is then interrupted eventually performs interruption", () => Effect.gen(function*($) { @@ -447,7 +448,7 @@ describe.concurrent("Effect", () => { yield* $(Fiber.interrupt(fiber)) yield* $(Deferred.await(deferred2)) const result = yield* $(Ref.get(ref)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("cause reflects interruption", () => Effect.gen(function*($) { @@ -483,7 +484,7 @@ describe.concurrent("Effect", () => { )) yield* $(Fiber.interrupt(fiber)) const result = yield* $(Ref.get(ref)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.live("acquireRelease use inherits interrupt status 2", () => Effect.gen(function*($) { @@ -509,7 +510,7 @@ describe.concurrent("Effect", () => { yield* $(Deferred.succeed(latch2, void 0)) yield* $(Fiber.interrupt(fiber)) const result = yield* $(Ref.get(ref)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.live("async can be uninterruptible", () => Effect.gen(function*($) { @@ -525,7 +526,7 @@ describe.concurrent("Effect", () => { )) yield* $(Fiber.interrupt(fiber)) const result = yield* $(Ref.get(ref)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.live("closing scope is uninterruptible", () => Effect.gen(function*($) { @@ -541,7 +542,7 @@ describe.concurrent("Effect", () => { yield* $(Deferred.await(deferred)) yield* $(Fiber.interrupt(fiber)) const result = yield* $(Ref.get(ref)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("async cancelation", () => Effect.gen(function*($) { @@ -569,7 +570,7 @@ describe.concurrent("Effect", () => { Effect.uninterruptible ) const result = yield* $(Ref.get(ref)) - assert.isFalse(result) + expect(result).toBeFalse() })) it.effect("running an effect preserves interruption status", () => Effect.gen(function*($) { @@ -579,7 +580,7 @@ describe.concurrent("Effect", () => { ) yield* $(Deferred.await(deferred)) const result = yield* $(Fiber.interrupt(fiber)) - assert.isTrue(Exit.isFailure(result) && Exit.isInterrupted(result) && Cause.isInterruptedOnly(result.i0)) + expect(Exit.isFailure(result) && Exit.isInterrupted(result) && Cause.isInterruptedOnly(result.i0)).toBeTrue() })) it.effect("running an effect swallows inner interruption", () => Effect.gen(function*($) { diff --git a/test/Effect/join-order.ts b/test/Effect/join-order.test.ts similarity index 88% rename from test/Effect/join-order.ts rename to test/Effect/join-order.test.ts index 051a1971..00bd62b2 100644 --- a/test/Effect/join-order.ts +++ b/test/Effect/join-order.test.ts @@ -3,9 +3,10 @@ import * as Fiber from "@effect/io/Fiber" import * as FiberRef from "@effect/io/FiberRef" import * as TestClock from "@effect/io/internal/testing/testClock" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("zip/all joins fibers in the correct order", () => Effect.gen(function*($) { const ref = yield* $(FiberRef.make(5)) diff --git a/test/Effect/mapping.ts b/test/Effect/mapping.test.ts similarity index 96% rename from test/Effect/mapping.ts rename to test/Effect/mapping.test.ts index 90817ef4..713c8095 100644 --- a/test/Effect/mapping.ts +++ b/test/Effect/mapping.test.ts @@ -5,7 +5,8 @@ import * as Effect from "@effect/io/Effect" import * as Exit from "@effect/io/Exit" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" const ExampleError = new Error("Oh noes!") @@ -24,7 +25,7 @@ const fib = (n: number): number => { return fib(n - 1) + fib(n - 2) } -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("flip must make error into value", () => Effect.gen(function*($) { const result = yield* $(Effect.flip(Effect.fail(ExampleError))) @@ -65,12 +66,12 @@ describe.concurrent("Effect", () => { it.effect("negate - on true returns false", () => Effect.gen(function*($) { const result = yield* $(Effect.negate(Effect.succeed(true))) - assert.isFalse(result) + expect(result).toBeFalse() })) it.effect("negate - on false returns true", () => Effect.gen(function*($) { const result = yield* $(Effect.negate(Effect.succeed(false))) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("summarized - returns summary and value", () => Effect.gen(function*($) { diff --git a/test/Effect/memoization.ts b/test/Effect/memoization.test.ts similarity index 95% rename from test/Effect/memoization.ts rename to test/Effect/memoization.test.ts index 1c6b0a51..60ffed4e 100644 --- a/test/Effect/memoization.ts +++ b/test/Effect/memoization.test.ts @@ -3,9 +3,10 @@ import * as Effect from "@effect/io/Effect" import * as Random from "@effect/io/Random" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("non-memoized returns new instances on repeated calls", () => it.flakyTest(Effect.gen(function*($) { const random = Random.nextInt diff --git a/test/Effect/promise.ts b/test/Effect/promise.test.ts similarity index 89% rename from test/Effect/promise.ts rename to test/Effect/promise.test.ts index f785be58..fdd4fa37 100644 --- a/test/Effect/promise.ts +++ b/test/Effect/promise.test.ts @@ -1,7 +1,8 @@ import * as Effect from "@effect/io/Effect" import * as timeout from "@effect/io/internal/timeout" +import { describe, expect, it } from "bun:test" -describe.concurrent("Effect", () => { +describe("Effect", () => { it("promise - success with AbortSignal", async () => { let aborted = false const effect = Effect.promise((signal) => { diff --git a/test/Effect/provide-runtime.ts b/test/Effect/provide-runtime.test.ts similarity index 95% rename from test/Effect/provide-runtime.ts rename to test/Effect/provide-runtime.test.ts index e389d484..70d648c9 100644 --- a/test/Effect/provide-runtime.ts +++ b/test/Effect/provide-runtime.test.ts @@ -6,7 +6,8 @@ import * as Layer from "@effect/io/Layer" import * as RuntimeFlags from "@effect/io/RuntimeFlags" import * as Scope from "@effect/io/Scope" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" interface A { readonly value: number @@ -20,7 +21,7 @@ const LiveEnv = Layer.mergeAll( Layer.scopedDiscard(Effect.locallyScoped(ref, 2)) ) -describe.concurrent("Effect", () => { +describe("Effect", () => { it.it("provideSomeRuntime", async () => { const { runtime, scope } = await Effect.runPromise( Effect.flatMap(Scope.make(), (scope) => diff --git a/test/Effect/query-deadlock.ts b/test/Effect/query-deadlock.test.ts similarity index 94% rename from test/Effect/query-deadlock.ts rename to test/Effect/query-deadlock.test.ts index a0f2ccd4..45414bfb 100644 --- a/test/Effect/query-deadlock.ts +++ b/test/Effect/query-deadlock.test.ts @@ -3,6 +3,7 @@ import * as Exit from "@effect/io/Exit" import * as Request from "@effect/io/Request" import * as Resolver from "@effect/io/RequestResolver" import * as it from "@effect/io/test/utils/extend" +import { describe } from "bun:test" export const userIds: ReadonlyArray = [1, 1] @@ -23,7 +24,7 @@ const UserResolver = Resolver.makeBatched((requests: Array) => const getUserNameById = (id: number) => Effect.request(GetNameById({ id }), UserResolver) const getAllUserNames = Effect.forEach([1, 1], getUserNameById, { batching: true }) -describe.concurrent("Effect", () => { +describe("Effect", () => { it.it("requests are executed correctly", () => Effect.runPromise( Effect.gen(function*($) { diff --git a/test/Effect/query-nested.ts b/test/Effect/query-nested.test.ts similarity index 98% rename from test/Effect/query-nested.ts rename to test/Effect/query-nested.test.ts index 57fff51d..4165767c 100644 --- a/test/Effect/query-nested.ts +++ b/test/Effect/query-nested.test.ts @@ -6,6 +6,7 @@ import * as Layer from "@effect/io/Layer" import * as Request from "@effect/io/Request" import * as Resolver from "@effect/io/RequestResolver" import * as it from "@effect/io/test/utils/extend" +import { describe, expect } from "bun:test" interface Counter { readonly _: unique symbol @@ -134,7 +135,7 @@ const EnvLive = Layer.provideMerge( ) ) -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("nested queries are batched", () => Effect.gen(function*($) { const parents = yield* $(getAllParents) diff --git a/test/Effect/query.ts b/test/Effect/query.test.ts similarity index 99% rename from test/Effect/query.ts rename to test/Effect/query.test.ts index 10edc451..a6b5ff73 100644 --- a/test/Effect/query.ts +++ b/test/Effect/query.test.ts @@ -13,6 +13,7 @@ import * as Layer from "@effect/io/Layer" import * as Request from "@effect/io/Request" import * as Resolver from "@effect/io/RequestResolver" import * as it from "@effect/io/test/utils/extend" +import { describe, expect } from "bun:test" interface Counter { readonly _: unique symbol @@ -123,7 +124,7 @@ const EnvLive = Layer.provideMerge( const provideEnv = Effect.provideSomeLayer(EnvLive) -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("requests are executed correctly", () => provideEnv( Effect.gen(function*($) { diff --git a/test/Effect/racing.ts b/test/Effect/racing.test.ts similarity index 91% rename from test/Effect/racing.ts rename to test/Effect/racing.test.ts index 844323ea..cfa65347 100644 --- a/test/Effect/racing.ts +++ b/test/Effect/racing.test.ts @@ -2,9 +2,10 @@ import * as Duration from "@effect/data/Duration" import { pipe } from "@effect/data/Function" import * as Effect from "@effect/io/Effect" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("returns first success", () => Effect.gen(function*($) { const result = yield* $(Effect.raceAll([Effect.fail("fail"), Effect.succeed(24)])) diff --git a/test/Effect/repeating.ts b/test/Effect/repeating.test.ts similarity index 97% rename from test/Effect/repeating.ts rename to test/Effect/repeating.test.ts index b5eb222e..29fbd2f3 100644 --- a/test/Effect/repeating.ts +++ b/test/Effect/repeating.test.ts @@ -2,9 +2,10 @@ import { constFalse, constTrue, pipe } from "@effect/data/Function" import * as Effect from "@effect/io/Effect" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("succeeds eventually", () => Effect.gen(function*($) { const effect = (ref: Ref.Ref) => { diff --git a/test/Effect/retrying.ts b/test/Effect/retrying.test.ts similarity index 97% rename from test/Effect/retrying.ts rename to test/Effect/retrying.test.ts index 23a67ced..7f57a394 100644 --- a/test/Effect/retrying.ts +++ b/test/Effect/retrying.test.ts @@ -2,9 +2,10 @@ import { constFalse, constTrue } from "@effect/data/Function" import * as Effect from "@effect/io/Effect" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("retryUntil - retries until condition is true", () => Effect.gen(function*($) { const input = yield* $(Ref.make(10)) diff --git a/test/Effect/runtimeFlags.ts b/test/Effect/runtimeFlags.test.ts similarity index 66% rename from test/Effect/runtimeFlags.ts rename to test/Effect/runtimeFlags.test.ts index 596a1b75..7a1f94e9 100644 --- a/test/Effect/runtimeFlags.ts +++ b/test/Effect/runtimeFlags.test.ts @@ -2,24 +2,24 @@ import * as Effect from "@effect/io/Effect" import * as Flags from "@effect/io/RuntimeFlags" import * as Patch from "@effect/io/RuntimeFlagsPatch" import * as it from "@effect/io/test/utils/extend" -import { describe } from "vitest" +import { describe, expect } from "bun:test" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.it("should enable flags in the current fiber", () => Effect.runPromise(Effect.gen(function*($) { const before = yield* $(Effect.getRuntimeFlags) - assert.isFalse(Flags.isEnabled(before, Flags.OpSupervision)) + expect(Flags.isEnabled(before, Flags.OpSupervision)).toBeFalse() yield* $(Effect.patchRuntimeFlags(Patch.enable(Flags.OpSupervision))) const after = yield* $(Effect.getRuntimeFlags) - assert.isTrue(Flags.isEnabled(after, Flags.OpSupervision)) + expect(Flags.isEnabled(after, Flags.OpSupervision)).toBeTrue() }))) it.it("should enable flags in the wrapped effect", () => Effect.runPromise(Effect.gen(function*($) { const before = yield* $(Effect.getRuntimeFlags) - assert.isFalse(Flags.isEnabled(before, Flags.OpSupervision)) + expect(Flags.isEnabled(before, Flags.OpSupervision)).toBeFalse() const inside = yield* $(Effect.getRuntimeFlags, Effect.withRuntimeFlagsPatch(Patch.enable(Flags.OpSupervision))) const after = yield* $(Effect.getRuntimeFlags) - assert.isFalse(Flags.isEnabled(after, Flags.OpSupervision)) - assert.isTrue(Flags.isEnabled(inside, Flags.OpSupervision)) + expect(Flags.isEnabled(after, Flags.OpSupervision)).toBeFalse() + expect(Flags.isEnabled(inside, Flags.OpSupervision)).toBeTrue() }))) }) diff --git a/test/Effect/scheduler.ts b/test/Effect/scheduler.test.ts similarity index 95% rename from test/Effect/scheduler.ts rename to test/Effect/scheduler.test.ts index 8d39b905..77e755f4 100644 --- a/test/Effect/scheduler.ts +++ b/test/Effect/scheduler.test.ts @@ -2,9 +2,10 @@ import * as Effect from "@effect/io/Effect" import * as timeout from "@effect/io/internal/timeout" import * as Scheduler from "@effect/io/Scheduler" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("matrix schedules according to priority", () => Effect.gen(function*($) { const ps000: Array = [] diff --git a/test/Effect/scheduling.ts b/test/Effect/scheduling.test.ts similarity index 92% rename from test/Effect/scheduling.ts rename to test/Effect/scheduling.test.ts index e1c35536..87977d31 100644 --- a/test/Effect/scheduling.ts +++ b/test/Effect/scheduling.test.ts @@ -6,9 +6,10 @@ import * as TestClock from "@effect/io/internal/testing/testClock" import * as Ref from "@effect/io/Ref" import * as Schedule from "@effect/io/Schedule" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("schedule - runs effect for each recurrence of the schedule", () => Effect.gen(function*($) { const ref = yield* $(Ref.make>([])) diff --git a/test/Effect/scope-ref.ts b/test/Effect/scope-ref.test.ts similarity index 95% rename from test/Effect/scope-ref.ts rename to test/Effect/scope-ref.test.ts index a549bec0..09b0e933 100644 --- a/test/Effect/scope-ref.ts +++ b/test/Effect/scope-ref.test.ts @@ -5,7 +5,8 @@ import * as FiberRef from "@effect/io/FiberRef" import * as Layer from "@effect/io/Layer" import * as Logger from "@effect/io/Logger" import * as it from "@effect/io/test/utils/extend" -import { describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" const ref = FiberRef.unsafeMake(List.empty()) const env = Tag<"context", number>() diff --git a/test/Effect/semaphore.ts b/test/Effect/semaphore.test.ts similarity index 93% rename from test/Effect/semaphore.ts rename to test/Effect/semaphore.test.ts index ac32310a..6385c83b 100644 --- a/test/Effect/semaphore.ts +++ b/test/Effect/semaphore.test.ts @@ -2,9 +2,10 @@ import * as D from "@effect/data/Duration" import * as Effect from "@effect/io/Effect" import * as TestClock from "@effect/io/internal/testing/testClock" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("semaphore works", () => Effect.gen(function*($) { const sem = yield* $(Effect.makeSemaphore(4)) diff --git a/test/Effect/sequencing.ts b/test/Effect/sequencing.test.ts similarity index 93% rename from test/Effect/sequencing.ts rename to test/Effect/sequencing.test.ts index 2540fc6c..d5d8b15a 100644 --- a/test/Effect/sequencing.ts +++ b/test/Effect/sequencing.test.ts @@ -9,9 +9,10 @@ import * as Exit from "@effect/io/Exit" import * as Fiber from "@effect/io/Fiber" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("flattens nested effects", () => Effect.gen(function*($) { const effect = Effect.succeed(Effect.succeed("test")) @@ -29,7 +30,7 @@ describe.concurrent("Effect", () => { onFalse: Effect.succeed(false) }) ) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("if - runs `onFalse` if result of `b` is `false`", () => Effect.gen(function*($) { @@ -40,9 +41,9 @@ describe.concurrent("Effect", () => { onTrue: Effect.succeed(false) }) ) - assert.isTrue(result) + expect(result).toBeTrue() })) - describe.concurrent("", () => { + describe("", () => { it.effect("tapErrorCause - effectually peeks at the cause of the failure of this effect", () => Effect.gen(function*($) { const ref = yield* $(Ref.make(false)) @@ -50,8 +51,8 @@ describe.concurrent("Effect", () => { pipe(Effect.dieMessage("die"), Effect.tapErrorCause(() => Ref.set(ref, true)), Effect.exit) ) const effect = yield* $(Ref.get(ref)) - assert.isTrue(Exit.isFailure(result) && Option.isSome(Cause.dieOption(result.i0))) - assert.isTrue(effect) + expect(Exit.isFailure(result) && Option.isSome(Cause.dieOption(result.i0))).toBeTrue() + expect(effect).toBeTrue() })) }) it.effect("tapDefect - effectually peeks at defects", () => @@ -63,8 +64,8 @@ describe.concurrent("Effect", () => { Effect.exit ) const effect = yield* $(Ref.get(ref)) - assert.isTrue(Exit.isFailure(result) && Option.isSome(Cause.dieOption(result.i0))) - assert.isTrue(effect) + expect(Exit.isFailure(result) && Option.isSome(Cause.dieOption(result.i0))).toBeTrue() + expect(effect).toBeTrue() })) it.effect("tapDefect - leaves failures", () => Effect.gen(function*($) { @@ -76,7 +77,7 @@ describe.concurrent("Effect", () => { ) const effect = yield* $(Ref.get(ref)) assert.deepStrictEqual(result, Exit.fail("fail")) - assert.isFalse(effect) + expect(effect).toBeFalse() })) it.effect("unless - executes correct branch only", () => Effect.gen(function*($) { @@ -156,7 +157,7 @@ describe.concurrent("Effect", () => { Effect.flatMap((tuple) => Effect.succeed(tuple[0] + tuple[1])), Effect.map((n) => n === 3) ) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("zip/parallel - does not swallow exit causes of loser", () => Effect.gen(function*($) { @@ -170,7 +171,7 @@ describe.concurrent("Effect", () => { ) ) ) - assert.isAbove(HashSet.size(result), 0) + expect(HashSet.size(result)).toBeGreaterThan(0) })) it.effect("zip/parallel - does not report failure when interrupting loser after it succeeded", () => Effect.gen(function*($) { @@ -225,7 +226,7 @@ describe.concurrent("Effect", () => { const rightResult = result[1] const leftResult = yield* $(Fiber.await(leftInnerFiber)) const interrupted = yield* $(Ref.get(ref)) - assert.isFalse(interrupted) + expect(interrupted).toBeFalse() assert.deepStrictEqual(leftResult, Exit.succeed("foo")) assert.strictEqual(rightResult, 42) })) diff --git a/test/Effect/stack-safety.ts b/test/Effect/stack-safety.test.ts similarity index 95% rename from test/Effect/stack-safety.ts rename to test/Effect/stack-safety.test.ts index 54ab63ae..56979f8b 100644 --- a/test/Effect/stack-safety.ts +++ b/test/Effect/stack-safety.test.ts @@ -2,7 +2,8 @@ import { constVoid, identity, pipe } from "@effect/data/Function" import * as Effect from "@effect/io/Effect" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" const deepMapEffect = (n: number): Effect.Effect => { const loop = (n: number, acc: Effect.Effect): Effect.Effect => { @@ -14,7 +15,7 @@ const deepMapEffect = (n: number): Effect.Effect => { return loop(n, Effect.succeed(0)) } -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("deep map of sync effect", () => Effect.gen(function*($) { const result = yield* $(deepMapEffect(10000)) @@ -27,7 +28,7 @@ describe.concurrent("Effect", () => { (acc, _) => pipe(Effect.orDie(acc), Effect.either, Effect.asUnit), Effect.orDie(Effect.try(constVoid)) )) - assert.isUndefined(result) + expect(result).toBeUndefined() })) it.effect("deep flatMap", () => Effect.gen(function*($) { @@ -83,6 +84,6 @@ describe.concurrent("Effect", () => { const left = pipe(Ref.make(0), Effect.flatMap((ref) => incLeft(100, ref)), Effect.map((n) => n === 0)) const right = pipe(Ref.make(0), Effect.flatMap((ref) => incRight(1000, ref)), Effect.map((n) => n === 1000)) const result = yield* $(left, Effect.zipWith(right, (a, b) => a && b)) - assert.isTrue(result) + expect(result).toBeTrue() })) }) diff --git a/test/Effect/structural.ts b/test/Effect/structural.test.ts similarity index 98% rename from test/Effect/structural.ts rename to test/Effect/structural.test.ts index 213d5956..d5269d26 100644 --- a/test/Effect/structural.ts +++ b/test/Effect/structural.test.ts @@ -3,9 +3,10 @@ import * as Option from "@effect/data/Option" import * as Effect from "@effect/io/Effect" import * as it from "@effect/io/test/utils/extend" import { assertType, satisfies } from "@effect/io/test/utils/types" -import { describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { describe("all", () => { it.effect("should work with one array argument", () => Effect.gen(function*($) { diff --git a/test/Effect/sync.ts b/test/Effect/sync.test.ts similarity index 93% rename from test/Effect/sync.ts rename to test/Effect/sync.test.ts index 2c26cefe..7e6debaa 100644 --- a/test/Effect/sync.ts +++ b/test/Effect/sync.test.ts @@ -4,7 +4,8 @@ import * as Cause from "@effect/io/Cause" import * as Effect from "@effect/io/Effect" import * as Exit from "@effect/io/Exit" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" const sum = (n: number): number => { if (n < 0) { @@ -13,7 +14,7 @@ const sum = (n: number): number => { return n + sum(n - 1) } -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("sync - effect", () => Effect.gen(function*($) { const sumEffect = (n: number): Effect.Effect => { @@ -36,7 +37,7 @@ describe.concurrent("Effect", () => { program = Effect.succeed(false) } const result = await Effect.runPromise(program) - assert.isTrue(result) + expect(result).toBeTrue() }) it.it("suspend - must be lazy", async () => { let program @@ -49,7 +50,7 @@ describe.concurrent("Effect", () => { program = Effect.succeed(false) } const result = await Effect.runPromise(program) - assert.isTrue(result) + expect(result).toBeTrue() }) it.effect("suspend - must catch throwable", () => Effect.gen(function*($) { diff --git a/test/Effect/tapping.ts b/test/Effect/tapping.test.ts similarity index 88% rename from test/Effect/tapping.ts rename to test/Effect/tapping.test.ts index 8400bfb5..7b8c24a6 100644 --- a/test/Effect/tapping.ts +++ b/test/Effect/tapping.test.ts @@ -1,6 +1,6 @@ import { pipe } from "@effect/data/Function" import * as Effect from "@effect/io/Effect" -import { describe, expect, it } from "vitest" +import { describe, expect, it } from "bun:test" class TestError1 { readonly _tag = "TestError1" @@ -12,7 +12,7 @@ class TestError2 { constructor() {} } -describe.concurrent("Effect", () => { +describe("Effect", () => { it("tapErrorTag", async () => { let val = 0 diff --git a/test/Effect/timeout.ts b/test/Effect/timeout.test.ts similarity index 96% rename from test/Effect/timeout.ts rename to test/Effect/timeout.test.ts index fa85385a..eb0072ba 100644 --- a/test/Effect/timeout.ts +++ b/test/Effect/timeout.test.ts @@ -7,9 +7,10 @@ import * as Exit from "@effect/io/Exit" import * as Fiber from "@effect/io/Fiber" import * as TestClock from "@effect/io/internal/testing/testClock" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.live("timeout a long computation", () => Effect.gen(function*($) { const result = yield* $( diff --git a/test/Effect/traversing.ts b/test/Effect/traversing.test.ts similarity index 97% rename from test/Effect/traversing.ts rename to test/Effect/traversing.test.ts index cf732ccc..304a376c 100644 --- a/test/Effect/traversing.ts +++ b/test/Effect/traversing.test.ts @@ -9,9 +9,10 @@ import * as Exit from "@effect/io/Exit" import * as Fiber from "@effect/io/Fiber" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("dropWhile - happy path", () => Effect.gen(function*($) { const result = yield* $( @@ -43,16 +44,16 @@ describe.concurrent("Effect", () => { concurrency: "unbounded" }) ) - assert.isTrue(result1) - assert.isFalse(result2) + expect(result1).toBeTrue() + expect(result2).toBeFalse() })) it.effect("forAll - determines whether all elements satisfy the effectual predicate", () => Effect.gen(function*($) { const array = [1, 2, 3, 4, 5, 6] const result1 = yield* $(array, Effect.every((n) => Effect.succeed(n > 3))) const result2 = yield* $(array, Effect.every((n) => Effect.succeed(n > 0))) - assert.isFalse(result1) - assert.isTrue(result2) + expect(result1).toBeFalse() + expect(result2).toBeTrue() })) it.effect("iterate - iterates with the specified effectual function", () => Effect.gen(function*($) { @@ -194,7 +195,7 @@ describe.concurrent("Effect", () => { : Effect.succeed(n * 2), { concurrency: "unbounded" }), Effect.flip ) - assert.isTrue(result === "boom1" || result === "boom2") + expect(result === "boom1" || result === "boom2").toBeTrue() })) it.effect("forEach/concurrency - runs a task that dies", () => Effect.gen(function*($) { @@ -205,7 +206,7 @@ describe.concurrent("Effect", () => { }), Effect.exit ) - assert.isTrue(Exit.isFailure(result) && Cause.isDie(result.i0)) + expect(Exit.isFailure(result) && Cause.isDie(result.i0)).toBeTrue() })) it.effect("forEach/concurrency - runs a task that is interrupted", () => Effect.gen(function*($) { @@ -214,7 +215,7 @@ describe.concurrent("Effect", () => { Effect.forEach((n) => n === 5 ? Effect.interrupt : Effect.succeed(n * 2), { concurrency: "unbounded" }), Effect.exit ) - assert.isTrue(Exit.isInterrupted(result)) + expect(Exit.isInterrupted(result)).toBeTrue() })) it.effect("forEach/concurrency - runs a task that throws an unsuspended exception", () => Effect.gen(function*($) { @@ -247,7 +248,7 @@ describe.concurrent("Effect", () => { ) ) const result = yield* $(Deferred.await(deferred)) - assert.isUndefined(result) + expect(result).toBeUndefined() })) it.effect("forEach/concurrency - propagates error", () => Effect.gen(function*($) { @@ -271,7 +272,7 @@ describe.concurrent("Effect", () => { const error = yield* $(actions, Effect.forEach(identity, { concurrency: "unbounded" }), Effect.flip) const value = yield* $(Ref.get(ref)) assert.strictEqual(error, "C") - assert.isFalse(value) + expect(value).toBeFalse() })) it.effect("forEach/concurrency - does not kill fiber when forked on the parent scope", () => Effect.gen(function*($) { @@ -317,7 +318,7 @@ describe.concurrent("Effect", () => { ) ) const result = yield* $(Deferred.await(deferred)) - assert.isUndefined(result) + expect(result).toBeUndefined() })) it.effect("forEach/concurrency - parallelism - propagates error", () => Effect.gen(function*($) { @@ -398,7 +399,7 @@ describe.concurrent("Effect", () => { discard: true }) ) - assert.isUndefined(result) + expect(result).toBeUndefined() })) it.effect("forEach/concurrency+discard - parallelism - runs all effects", () => Effect.gen(function*($) { diff --git a/test/Effect/tryPromise.ts b/test/Effect/tryPromise.test.ts similarity index 97% rename from test/Effect/tryPromise.ts rename to test/Effect/tryPromise.test.ts index fab74eb3..51348599 100644 --- a/test/Effect/tryPromise.ts +++ b/test/Effect/tryPromise.test.ts @@ -1,8 +1,9 @@ import * as Either from "@effect/data/Either" import * as Effect from "@effect/io/Effect" import * as timeout from "@effect/io/internal/timeout" +import { describe, expect, it } from "bun:test" -describe.concurrent("Effect", () => { +describe("Effect", () => { it("tryPromise - success, no catch, no AbortSignal", async () => { const effect = Effect.tryPromise(() => new Promise((resolve) => { diff --git a/test/Effect/validation.ts b/test/Effect/validation.test.ts similarity index 98% rename from test/Effect/validation.ts rename to test/Effect/validation.test.ts index 5a84340b..bd30b796 100644 --- a/test/Effect/validation.ts +++ b/test/Effect/validation.test.ts @@ -4,9 +4,10 @@ import * as Cause from "@effect/io/Cause" import * as Effect from "@effect/io/Effect" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Effect", () => { +describe("Effect", () => { it.effect("validate - fails", () => Effect.gen(function*($) { const result = yield* $( @@ -139,7 +140,7 @@ describe.concurrent("Effect", () => { const result = yield* $([2, 4, 6, 3, 5, 6], Effect.validateFirst(Effect.fail), Effect.flip) assert.deepStrictEqual(Array.from(result), [2, 4, 6, 3, 5, 6]) })) - describe.concurrent("", () => { + describe("", () => { it.effect("validateFirst/concurrency - returns all errors if never valid", () => Effect.gen(function*($) { const array = Array.from({ length: 1000 }, () => 0) diff --git a/test/Exit.ts b/test/Exit.test.ts similarity index 91% rename from test/Exit.ts rename to test/Exit.test.ts index 2c630085..cfac5ad5 100644 --- a/test/Exit.ts +++ b/test/Exit.test.ts @@ -1,7 +1,8 @@ import * as Exit from "@effect/io/Exit" +import { describe, expect, it } from "bun:test" -describe.concurrent("Exit", () => { - describe.concurrent("toJSON", () => { +describe("Exit", () => { + describe("toJSON", () => { it("succeed", () => { expect(Exit.succeed(1).toJSON()).toEqual({ _id: "Exit", @@ -37,7 +38,7 @@ describe.concurrent("Exit", () => { }) }) - describe.concurrent("toString", () => { + describe("toString", () => { it("succeed", () => { expect(String(Exit.succeed(1))).toEqual(`{ "_id": "Exit", diff --git a/test/Fiber.ts b/test/Fiber.test.ts similarity index 95% rename from test/Fiber.ts rename to test/Fiber.test.ts index 1cfab16e..f6a1368d 100644 --- a/test/Fiber.ts +++ b/test/Fiber.test.ts @@ -13,13 +13,14 @@ import * as Queue from "@effect/io/Queue" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" import { withLatch } from "@effect/io/test/utils/latch" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" const initial = "initial" const update = "update" const fibers = Array.from({ length: 10000 }, () => Fiber.unit) -describe.concurrent("Fiber", () => { +describe("Fiber", () => { it.effect("should track blockingOn in await", () => Effect.gen(function*($) { const fiber1 = yield* $(Effect.never, Effect.fork) @@ -118,7 +119,7 @@ describe.concurrent("Fiber", () => { yield* $(Effect.scoped(Fiber.scoped(fiber))) yield* $(Fiber.await(fiber)) const result = yield* $(Ref.get(ref)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("shard example", () => Effect.gen(function*($) { @@ -148,7 +149,7 @@ describe.concurrent("Fiber", () => { yield* $(Queue.offerAll(queue, Array.from(Array(100), (_, i) => i + 1))) const result = yield* $(Effect.exit(shard(queue, 4, worker))) yield* $(Queue.shutdown(queue)) - assert.isTrue(Exit.isFailure(result)) + expect(Exit.isFailure(result)).toBeTrue() })) it.effect("child becoming interruptible is interrupted due to auto-supervision of uninterruptible parent", () => Effect.gen(function*($) { @@ -160,7 +161,7 @@ describe.concurrent("Fiber", () => { ) yield* $(Effect.uninterruptible(Effect.fork(child))) const result = yield* $(Deferred.await(latch)) - assert.isUndefined(result) + expect(result).toBeUndefined() })) it.effect("dual roots", () => Effect.gen(function*($) { @@ -175,7 +176,7 @@ describe.concurrent("Fiber", () => { Effect.repeatUntil(identity) ) const result = yield* $(Fiber.interrupt(fiber1), Effect.zipRight(Fiber.interrupt(fiber2))) - assert.isTrue(Exit.isInterrupted(result)) + expect(Exit.isInterrupted(result)).toBeTrue() })) it.effect("interruptAll interrupts fibers in parallel", () => Effect.gen(function*($) { @@ -196,7 +197,7 @@ describe.concurrent("Fiber", () => { yield* $(Deferred.await(deferred2)) yield* $(Fiber.interruptAll([fiber2, fiber1])) const result = yield* $(Fiber.await(fiber2)) - assert.isTrue(Exit.isInterrupted(result)) + expect(Exit.isInterrupted(result)).toBeTrue() })) it.effect("await does not return until all fibers have completed execution", () => Effect.gen(function*($) { @@ -210,16 +211,16 @@ describe.concurrent("Fiber", () => { it.effect("awaitAll - stack safety", () => Effect.gen(function*($) { const result = yield* $(Fiber.awaitAll(fibers)) - assert.isUndefined(result) + expect(result).toBeUndefined() }), 10000) it.effect("joinAll - stack safety", () => Effect.gen(function*($) { const result = yield* $(Fiber.joinAll(fibers)) - assert.isUndefined(result) + expect(result).toBeUndefined() }), 10000) it.effect("all - stack safety", () => Effect.gen(function*($) { const result = yield* $(Fiber.join(Fiber.all(fibers)), Effect.asUnit) - assert.isUndefined(result) + expect(result).toBeUndefined() }), 10000) }) diff --git a/test/FiberRef.ts b/test/FiberRef.test.ts similarity index 98% rename from test/FiberRef.ts rename to test/FiberRef.test.ts index 0ad4261f..fb12f09c 100644 --- a/test/FiberRef.ts +++ b/test/FiberRef.test.ts @@ -9,7 +9,8 @@ import * as Fiber from "@effect/io/Fiber" import * as FiberRef from "@effect/io/FiberRef" import * as Runtime from "@effect/io/Runtime" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" const initial = "initial" const update = "update" @@ -23,7 +24,7 @@ const loseTimeAndCpu: Effect.Effect = Effect.yieldNow().pipe Effect.repeatN(100) ) -describe.concurrent("FiberRef", () => { +describe("FiberRef", () => { it.scoped("get returns the current value", () => Effect.gen(function*($) { const fiberRef = yield* $(FiberRef.make(initial)) @@ -231,7 +232,7 @@ describe.concurrent("FiberRef", () => { Effect.orElse(() => Effect.unit) ) const result = yield* $(FiberRef.get(fiberRef)) - assert.isTrue(result.includes(initial)) + expect(result.includes(initial)).toBeTrue() })) it.scoped("the value of all fibers in inherited when running many effects with collectAllPar", () => Effect.gen(function*($) { @@ -252,7 +253,7 @@ describe.concurrent("FiberRef", () => { const fiberRef = yield* $(FiberRef.make(initial)) yield* $(FiberRef.set(fiberRef, update1), Effect.race(FiberRef.set(fiberRef, update2))) const result = yield* $(FiberRef.get(fiberRef)) - assert.isTrue(new RegExp(`${update1}|${update2}`).test(result)) + expect(new RegExp(`${update1}|${update2}`).test(result)).toBeTrue() })) it.scopedLive("its value is inherited after a race with a bad winner", () => Effect.gen(function*($) { @@ -347,7 +348,7 @@ describe.concurrent("FiberRef", () => { Effect.sync(() => FiberRef.get(fiberRef).pipe(Effect.intoDeferred(deferred), Runtime.runCallback(runtime))) ) const result = yield* $(Deferred.await(deferred)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.scoped("fork patch is applied when a fiber is unsafely forked", () => Effect.gen(function*($) { @@ -359,6 +360,6 @@ describe.concurrent("FiberRef", () => { ) yield* $(Fiber.join(fiber)) const result = yield* $(Deferred.await(deferred)) - assert.isTrue(result) + expect(result).toBeTrue() })) }) diff --git a/test/FiberRefs.ts b/test/FiberRefs.test.ts similarity index 91% rename from test/FiberRefs.ts rename to test/FiberRefs.test.ts index 23acb672..0111a01f 100644 --- a/test/FiberRefs.ts +++ b/test/FiberRefs.test.ts @@ -8,9 +8,10 @@ import * as FiberRef from "@effect/io/FiberRef" import * as FiberRefs from "@effect/io/FiberRefs" import * as Queue from "@effect/io/Queue" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" -describe.concurrent("FiberRefs", () => { +describe("FiberRefs", () => { it.scoped("propagate FiberRef values across fiber boundaries", () => Effect.gen(function*($) { const fiberRef = yield* $(FiberRef.make(false)) @@ -28,7 +29,7 @@ describe.concurrent("FiberRefs", () => { ) yield* $(Fiber.join(producer)) const result = yield* $(Fiber.join(consumer)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.it("interruptedCause", () => { const parent = FiberId.make(1, Date.now()) as FiberId.Runtime @@ -43,7 +44,7 @@ describe.concurrent("FiberRefs", () => { assert.deepStrictEqual(FiberRefs.get(newParentFiberRefs, FiberRef.interruptedCause), Option.some(Cause.empty)) }) - describe.concurrent("currentLogAnnotations", () => { + describe("currentLogAnnotations", () => { it.it("doesnt leak", () => { Effect.unit.pipe(Effect.annotateLogs("test", "abc"), Effect.runSync) expect(FiberRef.currentLogAnnotations.pipe(FiberRef.get, Effect.map(HashMap.size), Effect.runSync)).toBe(0) diff --git a/test/Hub.ts b/test/Hub.test.ts similarity index 99% rename from test/Hub.ts rename to test/Hub.test.ts index ef847241..0d7016e8 100644 --- a/test/Hub.ts +++ b/test/Hub.test.ts @@ -6,9 +6,10 @@ import * as Fiber from "@effect/io/Fiber" import * as Hub from "@effect/io/Hub" import * as Queue from "@effect/io/Queue" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Hub", () => { +describe("Hub", () => { it.effect("publishAll - capacity 2 (BoundedHubPow2)", () => { const messages = [1, 2] return Hub.bounded(2).pipe( diff --git a/test/KeyedPool.ts b/test/KeyedPool.test.ts similarity index 98% rename from test/KeyedPool.ts rename to test/KeyedPool.test.ts index 8955d40d..6df711e1 100644 --- a/test/KeyedPool.ts +++ b/test/KeyedPool.test.ts @@ -8,7 +8,7 @@ import * as KeyedPool from "@effect/io/KeyedPool" import * as Random from "@effect/io/Random" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { describe, expect } from "vitest" +import { describe, expect } from "bun:test" describe("KeyedPool", () => { it.scoped("acquire release many successfully while other key is blocked", () => diff --git a/test/Layer.ts b/test/Layer.test.ts similarity index 92% rename from test/Layer.ts rename to test/Layer.test.ts index 143f16f1..ccf3be66 100644 --- a/test/Layer.ts +++ b/test/Layer.test.ts @@ -11,7 +11,8 @@ import * as Layer from "@effect/io/Layer" import * as Ref from "@effect/io/Ref" import * as Schedule from "@effect/io/Schedule" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" export const acquire1 = "Acquiring Module 1" export const acquire2 = "Acquiring Module 2" @@ -20,7 +21,7 @@ export const release1 = "Releasing Module 1" export const release2 = "Releasing Module 2" export const release3 = "Releasing Module 3" -describe.concurrent("Layer", () => { +describe("Layer", () => { it.effect("layers can be acquired in parallel", () => Effect.gen(function*($) { const BoolTag = Context.Tag() @@ -38,7 +39,7 @@ describe.concurrent("Layer", () => { const fiber = yield* $(Effect.scoped(env), Effect.forkDaemon) yield* $(Deferred.await(deferred)) const result = yield* $(Fiber.interrupt(fiber), Effect.asUnit) - assert.isUndefined(result) + expect(result).toBeUndefined() })) it.effect("preserves identity of acquired resources", () => Effect.gen(function*($) { @@ -96,10 +97,10 @@ describe.concurrent("Layer", () => { const env = layer1.pipe(Layer.merge(layer2), Layer.build) yield* $(Effect.scoped(env)) const result = yield* $(Ref.get(ref)) - assert.isDefined(Array.from(result).slice(0, 2).find((s) => s === acquire1)) - assert.isDefined(Array.from(result).slice(0, 2).find((s) => s === acquire2)) - assert.isDefined(Array.from(result).slice(2, 4).find((s) => s === release1)) - assert.isDefined(Array.from(result).slice(2, 4).find((s) => s === release2)) + expect(Array.from(result).slice(0, 2).find((s) => s === acquire1)).toBeDefined() + expect(Array.from(result).slice(0, 2).find((s) => s === acquire2)).toBeDefined() + expect(Array.from(result).slice(2, 4).find((s) => s === release1)).toBeDefined() + expect(Array.from(result).slice(2, 4).find((s) => s === release2)).toBeDefined() })) it.effect("caching values in dependencies", () => Effect.gen(function*($) { @@ -176,7 +177,7 @@ describe.concurrent("Layer", () => { ) const layer = layer1.pipe(Layer.merge(layer2.pipe(Layer.merge(layer3), Layer.provide(layer4)))) const result = yield* $(Effect.unit, Effect.provideLayer(layer), Effect.exit) - assert.isTrue(Exit.isFailure(result)) + expect(Exit.isFailure(result)).toBeTrue() })) it.effect("fresh with merge", () => Effect.gen(function*($) { @@ -242,10 +243,10 @@ describe.concurrent("Layer", () => { yield* $(Fiber.interrupt(fiber)) const result = yield* $(Ref.get(ref), Effect.map((chunk) => Array.from(chunk))) if (result.find((s) => s === acquire1) !== undefined) { - assert.isTrue(result.some((s) => s === release1)) + expect(result.some((s) => s === release1)).toBeTrue() } if (result.find((s) => s === acquire2) !== undefined) { - assert.isTrue(result.some((s) => s === release2)) + expect(result.some((s) => s === release2)).toBeTrue() } })) it.effect("interruption with provideTo", () => @@ -258,10 +259,10 @@ describe.concurrent("Layer", () => { yield* $(Fiber.interrupt(fiber)) const result = yield* $(Ref.get(ref), Effect.map((chunk) => Array.from(chunk))) if (result.find((s) => s === acquire1) !== undefined) { - assert.isTrue(result.some((s) => s === release1)) + expect(result.some((s) => s === release1)).toBeTrue() } if (result.find((s) => s === acquire2) !== undefined) { - assert.isTrue(result.some((s) => s === release2)) + expect(result.some((s) => s === release2)).toBeTrue() } })) it.effect("interruption with multiple layers", () => @@ -278,13 +279,13 @@ describe.concurrent("Layer", () => { yield* $(Fiber.interrupt(fiber)) const result = yield* $(Ref.get(ref), Effect.map((chunk) => Array.from(chunk))) if (result.find((s) => s === acquire1) !== undefined) { - assert.isTrue(result.some((s) => s === release1)) + expect(result.some((s) => s === release1)).toBeTrue() } if (result.find((s) => s === acquire2) !== undefined) { - assert.isTrue(result.some((s) => s === release2)) + expect(result.some((s) => s === release2)).toBeTrue() } if (result.find((s) => s === acquire3) !== undefined) { - assert.isTrue(result.some((s) => s === release3)) + expect(result.some((s) => s === release3)).toBeTrue() } })) it.effect("can map a layer to an unrelated type", () => @@ -484,10 +485,10 @@ describe.concurrent("Layer", () => { yield* $(Effect.scoped(env)) const result = yield* $(Ref.get(ref), Effect.map((chunk) => Array.from(chunk))) assert.strictEqual(result[0], acquire1) - assert.isTrue(result.slice(1, 3).some((s) => s === acquire2)) - assert.isTrue(result.slice(1, 3).some((s) => s === acquire3)) - assert.isTrue(result.slice(3, 5).some((s) => s === release3)) - assert.isTrue(result.slice(3, 5).some((s) => s === release2)) + expect(result.slice(1, 3).some((s) => s === acquire2)).toBeTrue() + expect(result.slice(1, 3).some((s) => s === acquire3)).toBeTrue() + expect(result.slice(3, 5).some((s) => s === release3)).toBeTrue() + expect(result.slice(3, 5).some((s) => s === release2)).toBeTrue() assert.strictEqual(result[5], release1) })) it.effect("finalizers with provideTo", () => @@ -535,10 +536,10 @@ describe.concurrent("Layer", () => { yield* $(Effect.scoped(env)) const result = yield* $(Ref.get(ref), Effect.map((chunk) => Array.from(chunk))) assert.strictEqual(result[0], acquire1) - assert.isTrue(result.slice(1, 3).some((s) => s === acquire2)) - assert.isTrue(result.slice(1, 3).some((s) => s === acquire3)) - assert.isTrue(result.slice(3, 5).some((s) => s === release3)) - assert.isTrue(result.slice(3, 5).some((s) => s === release2)) + expect(result.slice(1, 3).some((s) => s === acquire2)).toBeTrue() + expect(result.slice(1, 3).some((s) => s === acquire3)).toBeTrue() + expect(result.slice(3, 5).some((s) => s === release3)).toBeTrue() + expect(result.slice(3, 5).some((s) => s === release2)).toBeTrue() assert.strictEqual(result[5], release1) })) it.effect("mapError does not interfere with sharing", () => @@ -556,10 +557,10 @@ describe.concurrent("Layer", () => { yield* $(Effect.scoped(env)) const result = yield* $(Ref.get(ref), Effect.map((chunk) => Array.from(chunk))) assert.strictEqual(result[0], acquire1) - assert.isTrue(result.slice(1, 3).some((s) => s === acquire2)) - assert.isTrue(result.slice(1, 3).some((s) => s === acquire3)) - assert.isTrue(result.slice(3, 5).some((s) => s === release3)) - assert.isTrue(result.slice(3, 5).some((s) => s === release2)) + expect(result.slice(1, 3).some((s) => s === acquire2)).toBeTrue() + expect(result.slice(1, 3).some((s) => s === acquire3)).toBeTrue() + expect(result.slice(3, 5).some((s) => s === release3)).toBeTrue() + expect(result.slice(3, 5).some((s) => s === release2)).toBeTrue() assert.strictEqual(result[5], release1) })) it.effect("orDie does not interfere with sharing", () => @@ -576,10 +577,10 @@ describe.concurrent("Layer", () => { yield* $(Effect.scoped(env)) const result = yield* $(Ref.get(ref), Effect.map((chunk) => Array.from(chunk))) assert.strictEqual(result[0], acquire1) - assert.isTrue(result.slice(1, 3).some((s) => s === acquire2)) - assert.isTrue(result.slice(1, 3).some((s) => s === acquire3)) - assert.isTrue(result.slice(3, 5).some((s) => s === release3)) - assert.isTrue(result.slice(3, 5).some((s) => s === release2)) + expect(result.slice(1, 3).some((s) => s === acquire2)).toBeTrue() + expect(result.slice(1, 3).some((s) => s === acquire3)).toBeTrue() + expect(result.slice(3, 5).some((s) => s === release3)).toBeTrue() + expect(result.slice(3, 5).some((s) => s === release2)).toBeTrue() assert.strictEqual(result[5], release1) })) it.effect("tap peeks at an acquired resource", () => diff --git a/test/Logger.ts b/test/Logger.test.ts similarity index 93% rename from test/Logger.ts rename to test/Logger.test.ts index ed9ace01..6c96de40 100644 --- a/test/Logger.ts +++ b/test/Logger.test.ts @@ -7,20 +7,12 @@ import * as FiberRefs from "@effect/io/FiberRefs" import { logLevelInfo } from "@effect/io/internal/core" import * as Logger from "@effect/io/Logger" import * as LogSpan from "@effect/io/LogSpan" - -import { vi } from "vitest" +import { describe, expect, setSystemTime, test } from "bun:test" describe("stringLogger", () => { - beforeEach(() => { - vi.useFakeTimers() - }) - afterEach(() => { - vi.useRealTimers() - }) - test("keys with special chars", () => { const date = new Date() - vi.setSystemTime(date) + setSystemTime(date) const spans = List.make(LogSpan.make("imma span=\"", date.getTime() - 7)) const annotations = HashMap.make( ["just_a_key", "just_a_value"], @@ -48,7 +40,7 @@ describe("stringLogger", () => { test("with linebreaks", () => { const date = new Date() - vi.setSystemTime(date) + setSystemTime(date) const spans = List.make(LogSpan.make("imma\nspan=\"", date.getTime() - 7)) const annotations = HashMap.make( ["I am also\na bad key name", JSON.stringify({ return: "cool\nvalue" })], @@ -77,16 +69,9 @@ with line breaks" good_key3="I_have=a"` }) describe("logfmtLogger", () => { - beforeEach(() => { - vi.useFakeTimers() - }) - afterEach(() => { - vi.useRealTimers() - }) - test("keys with special chars", () => { const date = new Date() - vi.setSystemTime(date) + setSystemTime(date) const spans = List.make(LogSpan.make("imma span=\"", date.getTime() - 7)) const annotations = HashMap.make( ["just_a_key", "just_a_value"], @@ -112,7 +97,7 @@ describe("logfmtLogger", () => { test("with linebreaks", () => { const date = new Date() - vi.setSystemTime(date) + setSystemTime(date) const spans = List.make(LogSpan.make("imma\nspan=\"", date.getTime() - 7)) const annotations = HashMap.make( ["I am also\na bad key name", JSON.stringify({ return: "cool\nvalue" })], @@ -146,7 +131,7 @@ describe("logfmtLogger", () => { test("objects", () => { const date = new Date() - vi.setSystemTime(date) + setSystemTime(date) const result = Logger.logfmtLogger.log({ fiberId: FiberId.none, @@ -166,7 +151,7 @@ describe("logfmtLogger", () => { test("circular objects", () => { const date = new Date() - vi.setSystemTime(date) + setSystemTime(date) const msg: Record = { hello: "world" } msg.msg = msg @@ -189,7 +174,7 @@ describe("logfmtLogger", () => { test("symbols", () => { const date = new Date() - vi.setSystemTime(date) + setSystemTime(date) const result = Logger.logfmtLogger.log({ fiberId: FiberId.none, @@ -209,7 +194,7 @@ describe("logfmtLogger", () => { test("functions", () => { const date = new Date() - vi.setSystemTime(date) + setSystemTime(date) const result = Logger.logfmtLogger.log({ fiberId: FiberId.none, diff --git a/test/Metric.ts b/test/Metric.test.ts similarity index 97% rename from test/Metric.ts rename to test/Metric.test.ts index 9b2115b4..2cebe615 100644 --- a/test/Metric.ts +++ b/test/Metric.test.ts @@ -17,6 +17,8 @@ import * as PollingMetric from "@effect/io/MetricPolling" import * as MetricState from "@effect/io/MetricState" import * as Schedule from "@effect/io/Schedule" import * as it from "@effect/io/test/utils/extend" +import { describe, expect } from "bun:test" +import assert from "node:assert" const labels = Chunk.make(MetricLabel.make("x", "a"), MetricLabel.make("y", "b")) @@ -26,8 +28,8 @@ const makePollingGauge = (name: string, increment: number) => { return [gauge, metric] as const } -describe.concurrent("Metric", () => { - describe.concurrent("Counter", () => { +describe("Metric", () => { + describe("Counter", () => { it.effect("custom increment as aspect", () => Effect.gen(function*($) { const counter = Metric.counter("c1").pipe(Metric.taggedWithLabels(labels), Metric.withConstantInput(1)) @@ -180,7 +182,7 @@ describe.concurrent("Metric", () => { assert.deepStrictEqual(result, MetricState.counter(1)) })) }) - describe.concurrent("Frequency", () => { + describe("Frequency", () => { it.effect("custom occurrences as aspect", () => Effect.gen(function*($) { const frequency = pipe(Metric.frequency("f1"), Metric.taggedWithLabels(labels)) @@ -247,12 +249,12 @@ describe.concurrent("Metric", () => { })) ) ) - assert.isTrue(HashMap.isEmpty(result1.occurrences)) + expect(HashMap.isEmpty(result1.occurrences)).toBeTrue() assert.deepStrictEqual(result2.occurrences, HashMap.make(["hello", 2] as const)) assert.deepStrictEqual(result3.occurrences, HashMap.make(["world", 1] as const)) })) }) - describe.concurrent("Gauge", () => { + describe("Gauge", () => { it.effect("custom set as aspect", () => Effect.gen(function*($) { const gauge = pipe(Metric.gauge("g1"), Metric.taggedWithLabels(labels)) @@ -306,7 +308,7 @@ describe.concurrent("Metric", () => { assert.deepStrictEqual(result, MetricState.gauge(1)) })) }) - describe.concurrent("Histogram", () => { + describe("Histogram", () => { it.effect("custom observe as aspect", () => Effect.gen(function*($) { const boundaries = MetricBoundaries.linear({ start: 0, width: 1, count: 10 }) @@ -357,12 +359,12 @@ describe.concurrent("Metric", () => { const elapsed = end - start const result = yield* $(Metric.value(histogram)) assert.strictEqual(result.count, 2) - assert.isAbove(result.sum, 0.39) - assert.isAtMost(result.sum, elapsed) - assert.isAtLeast(result.min, 0.1) - assert.isBelow(result.min, result.max) - assert.isAtLeast(result.max, 0.3) - assert.isBelow(result.max, elapsed) + expect(result.sum).toBeGreaterThan(0.39) + expect(result.sum).toBeLessThanOrEqual(elapsed) + expect(result.min).toBeGreaterThanOrEqual(0.1) + expect(result.min).toBeLessThan(result.max) + expect(result.max).toBeGreaterThanOrEqual(0.3) + expect(result.max).toBeLessThan(elapsed) }) ) it.effect("custom observe with mapInput", () => @@ -412,7 +414,7 @@ describe.concurrent("Metric", () => { assert.strictEqual(result3.count, 1) })) }) - describe.concurrent("Summary", () => { + describe("Summary", () => { it.effect("custom observe as aspect", () => Effect.gen(function*($) { const summary = Metric.summary({ @@ -510,7 +512,7 @@ describe.concurrent("Metric", () => { assert.strictEqual(result3.count, 1) })) }) - describe.concurrent("Polling", () => { + describe("Polling", () => { it.scopedLive("launch should be interruptible", () => Effect.gen(function*($) { const name = yield* $(Clock.currentTimeMillis, Effect.map((now) => `gauge-${now}`)) diff --git a/test/Pool.ts b/test/Pool.test.ts similarity index 99% rename from test/Pool.ts rename to test/Pool.test.ts index 27251221..219aefdc 100644 --- a/test/Pool.ts +++ b/test/Pool.test.ts @@ -10,7 +10,7 @@ import * as Pool from "@effect/io/Pool" import * as Ref from "@effect/io/Ref" import * as Scope from "@effect/io/Scope" import * as it from "@effect/io/test/utils/extend" -import { describe, expect } from "vitest" +import { describe, expect } from "bun:test" describe("Pool", () => { it.scoped("preallocates pool items", () => diff --git a/test/Queue.ts b/test/Queue.test.ts similarity index 95% rename from test/Queue.ts rename to test/Queue.test.ts index 4626bebb..ea8417e0 100644 --- a/test/Queue.ts +++ b/test/Queue.test.ts @@ -11,7 +11,8 @@ import * as Fiber from "@effect/io/Fiber" import * as Queue from "@effect/io/Queue" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" export const waitForValue = (ref: Effect.Effect, value: A): Effect.Effect => { return ref.pipe(Effect.zipLeft(Effect.yieldNow()), Effect.repeatUntil((a) => value === a)) @@ -21,19 +22,19 @@ export const waitForSize = (queue: Queue.Queue, size: number): Effect.Effe return waitForValue(Queue.size(queue), size) } -describe.concurrent("Queue", () => { +describe("Queue", () => { it.effect("bounded - offerAll returns true when there is enough space", () => Effect.gen(function*($) { const queue = yield* $(Queue.bounded(5)) const result = yield* $(Queue.offerAll(queue, [1, 2, 3])) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("dropping - with offerAll", () => Effect.gen(function*($) { const queue = yield* $(Queue.dropping(4)) const result1 = yield* $(Queue.offerAll(queue, [1, 2, 3, 4, 5])) const result2 = yield* $(Queue.takeAll(queue)) - assert.isFalse(result1) + expect(result1).toBeFalse() assert.deepStrictEqual(Chunk.toReadonlyArray(result2), [1, 2, 3, 4]) })) it.effect("dropping - with offerAll, check offer returns false", () => @@ -41,7 +42,7 @@ describe.concurrent("Queue", () => { const queue = yield* $(Queue.dropping(2)) const result1 = yield* $(Queue.offerAll(queue, [1, 2, 3, 4, 5, 6])) const result2 = yield* $(Queue.takeAll(queue)) - assert.isFalse(result1) + expect(result1).toBeFalse() assert.deepStrictEqual(Chunk.toReadonlyArray(result2), [1, 2]) })) it.effect("dropping - with offerAll, check ordering", () => @@ -49,7 +50,7 @@ describe.concurrent("Queue", () => { const queue = yield* $(Queue.dropping(128)) const result1 = yield* $(Queue.offerAll(queue, Array.from(new Array(256), (_, i) => i + 1))) const result2 = yield* $(Queue.takeAll(queue)) - assert.isFalse(result1) + expect(result1).toBeFalse() assert.deepStrictEqual(Chunk.toReadonlyArray(result2), Array.from(new Array(128), (_, i) => i + 1)) })) it.effect("dropping - with pending taker", () => @@ -59,7 +60,7 @@ describe.concurrent("Queue", () => { yield* $(waitForSize(queue, -1)) const result1 = yield* $(Queue.offerAll(queue, [1, 2, 3, 4])) const result2 = yield* $(Fiber.join(fiber)) - assert.isFalse(result1) + expect(result1).toBeFalse() assert.strictEqual(result2, 1) })) it.effect("sliding - with offer", () => @@ -69,8 +70,8 @@ describe.concurrent("Queue", () => { const result1 = yield* $(Queue.offer(queue, 2)) const result2 = yield* $(Queue.offer(queue, 3)) const result3 = yield* $(Queue.takeAll(queue)) - assert.isTrue(result1) - assert.isTrue(result2) + expect(result1).toBeTrue() + expect(result2).toBeTrue() assert.deepStrictEqual(Chunk.toReadonlyArray(result3), [2, 3]) })) it.effect("sliding - with offerAll", () => @@ -78,7 +79,7 @@ describe.concurrent("Queue", () => { const queue = yield* $(Queue.sliding(2)) const result1 = yield* $(Queue.offerAll(queue, [1, 2, 3])) const result2 = yield* $(Queue.size(queue)) - assert.isTrue(result1) + expect(result1).toBeTrue() assert.strictEqual(result2, 2) })) it.effect("sliding - with enough capacity", () => @@ -95,7 +96,7 @@ describe.concurrent("Queue", () => { const queue = yield* $(Queue.sliding(2)) const result1 = yield* $(Queue.offerAll(queue, [1, 2, 3, 4, 5, 6])) const result2 = yield* $(Queue.takeAll(queue)) - assert.isTrue(result1) + expect(result1).toBeTrue() assert.deepStrictEqual(Chunk.toReadonlyArray(result2), [5, 6]) })) it.effect("sliding - with pending taker", () => @@ -105,14 +106,14 @@ describe.concurrent("Queue", () => { yield* $(waitForSize(queue, -1)) const result1 = yield* $(Queue.offerAll(queue, [1, 2, 3, 4])) const result2 = yield* $(Queue.take(queue)) - assert.isTrue(result1) + expect(result1).toBeTrue() assert.strictEqual(result2, 3) })) it.effect("sliding - check offerAll returns true", () => Effect.gen(function*($) { const queue = yield* $(Queue.sliding(5)) const result = yield* $(Queue.offerAll(queue, [1, 2, 3])) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("awaitShutdown - once", () => Effect.gen(function*($) { @@ -121,7 +122,7 @@ describe.concurrent("Queue", () => { yield* $(Queue.awaitShutdown(queue), Effect.zipRight(Deferred.succeed(deferred, true)), Effect.fork) yield* $(Queue.shutdown(queue)) const result = yield* $(Deferred.await(deferred)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("awaitShutdown - multiple", () => Effect.gen(function*($) { @@ -133,8 +134,8 @@ describe.concurrent("Queue", () => { yield* $(Queue.shutdown(queue)) const result1 = yield* $(Deferred.await(deferred1)) const result2 = yield* $(Deferred.await(deferred2)) - assert.isTrue(result1) - assert.isTrue(result2) + expect(result1).toBeTrue() + expect(result2).toBeTrue() })) it.effect("offers are suspended by back pressure", () => Effect.gen(function*($) { @@ -145,7 +146,7 @@ describe.concurrent("Queue", () => { yield* $(waitForSize(queue, 11)) const result = yield* $(Ref.get(ref)) yield* $(Fiber.interrupt(fiber)) - assert.isTrue(result) + expect(result).toBeTrue() })) it.effect("back pressured offers are retrieved", () => Effect.gen(function*($) { @@ -261,7 +262,7 @@ describe.concurrent("Queue", () => { const result1 = yield* $(Queue.takeAll(queue)) const result2 = yield* $(Queue.takeAll(queue)) assert.deepStrictEqual(Chunk.toReadonlyArray(result1), values1) - assert.isTrue(Chunk.isEmpty(result2)) + expect(Chunk.isEmpty(result2)).toBeTrue() })) it.effect("offerAll with takeAll and back pressure, check ordering", () => Effect.gen(function*($) { @@ -396,9 +397,9 @@ describe.concurrent("Queue", () => { const result1 = yield* $(Queue.take(queue)) const offer2 = yield* $(Queue.offer(queue, 20)) const result2 = yield* $(Queue.take(queue)) - assert.isTrue(offer1) + expect(offer1).toBeTrue() assert.strictEqual(result1, 10) - assert.isTrue(offer2) + expect(offer2).toBeTrue() assert.strictEqual(result2, 20) })) it.effect("sequential take and offer", () => @@ -504,7 +505,7 @@ describe.concurrent("Queue", () => { const fiber = yield* $(Queue.offer(queue, 1), Effect.forever, Effect.fork) yield* $(Queue.shutdown(queue)) const result = yield* $(Fiber.await(fiber)) - assert.isTrue(Exit.isFailure(result)) + expect(Exit.isFailure(result)).toBeTrue() })) it.effect("shutdown race condition with take", () => Effect.gen(function*($) { @@ -514,7 +515,7 @@ describe.concurrent("Queue", () => { const fiber = yield* $(Queue.take(queue), Effect.forever, Effect.fork) yield* $(Queue.shutdown(queue)) const result = yield* $(Fiber.await(fiber)) - assert.isTrue(Exit.isFailure(result)) + expect(Exit.isFailure(result)).toBeTrue() })) it.effect("isShutdown indicates shutdown status", () => Effect.gen(function*($) { @@ -526,10 +527,10 @@ describe.concurrent("Queue", () => { const result3 = yield* $(Queue.isShutdown(queue)) yield* $(Queue.shutdown(queue)) const result4 = yield* $(Queue.isShutdown(queue)) - assert.isFalse(result1) - assert.isFalse(result2) - assert.isFalse(result3) - assert.isTrue(result4) + expect(result1).toBeFalse() + expect(result2).toBeFalse() + expect(result3).toBeFalse() + expect(result4).toBeTrue() })) it.effect("takeAll returns all values from a non-empty queue", () => Effect.gen(function*($) { @@ -556,8 +557,8 @@ describe.concurrent("Queue", () => { yield* $(Queue.offer(queue, 1)) yield* $(Queue.take(queue)) const result2 = yield* $(Queue.takeAll(queue)) - assert.isTrue(Chunk.isEmpty(result1)) - assert.isTrue(Chunk.isEmpty(result2)) + expect(Chunk.isEmpty(result1)).toBeTrue() + expect(Chunk.isEmpty(result2)).toBeTrue() })) it.effect("takeAll does not return more than the queue size", () => Effect.gen(function*($) { @@ -590,7 +591,7 @@ describe.concurrent("Queue", () => { yield* $(Queue.offer(queue, 2)) yield* $(Queue.offer(queue, 3)) const result = yield* $(Queue.takeBetween(queue, 5, 2)) - assert.isTrue(Chunk.isEmpty(result)) + expect(Chunk.isEmpty(result)).toBeTrue() })) it.effect("takeBetween returns an empty list if boundaries are negative", () => Effect.gen(function*($) { @@ -599,7 +600,7 @@ describe.concurrent("Queue", () => { yield* $(Queue.offer(queue, 2)) yield* $(Queue.offer(queue, 3)) const result = yield* $(Queue.takeBetween(queue, -5, -2)) - assert.isTrue(Chunk.isEmpty(result)) + expect(Chunk.isEmpty(result)).toBeTrue() })) it.effect("takeBetween blocks until a required minimum of elements is collected", () => Effect.gen(function*($) { @@ -607,7 +608,7 @@ describe.concurrent("Queue", () => { const updater = pipe(Queue.offer(queue, 10), Effect.forever) const getter = Queue.takeBetween(queue, 5, 10) const result = yield* $(getter, Effect.race(updater)) - assert.isAtLeast(result.length, 5) + expect(result.length).toBeGreaterThanOrEqual(5) })) it.effect("takeBetween returns elements in the correct order", () => Effect.gen(function*($) { @@ -631,8 +632,8 @@ describe.concurrent("Queue", () => { yield* $(Queue.offerAll(queue, [1, 2, 3])) const result1 = yield* $(Queue.takeN(queue, -3)) const result2 = yield* $(Queue.takeN(queue, 0)) - assert.isTrue(Chunk.isEmpty(result1)) - assert.isTrue(Chunk.isEmpty(result2)) + expect(Chunk.isEmpty(result1)).toBeTrue() + expect(Chunk.isEmpty(result2)).toBeTrue() })) it.effect("takeN blocks until the required number of elements is available", () => Effect.gen(function*($) { @@ -654,13 +655,13 @@ describe.concurrent("Queue", () => { Effect.gen(function*($) { const queue = yield* $(Queue.bounded(100)) const result = yield* $(Queue.takeUpTo(queue, 2)) - assert.isTrue(Chunk.isEmpty(result)) + expect(Chunk.isEmpty(result)).toBeTrue() })) it.effect("should handle an empty queue with max higher than queue size", () => Effect.gen(function*($) { const queue = yield* $(Queue.bounded(100)) const result = yield* $(Queue.takeUpTo(queue, 101)) - assert.isTrue(Chunk.isEmpty(result)) + expect(Chunk.isEmpty(result)).toBeTrue() })) it.effect("should leave behind elements if necessary", () => Effect.gen(function*($) { @@ -690,7 +691,7 @@ describe.concurrent("Queue", () => { yield* $(Queue.offer(queue, 3)) yield* $(Queue.offer(queue, 4)) const result = yield* $(Queue.takeUpTo(queue, 0)) - assert.isTrue(Chunk.isEmpty(result)) + expect(Chunk.isEmpty(result)).toBeTrue() })) it.effect("should handle taking up to -1 items", () => Effect.gen(function*($) { @@ -700,7 +701,7 @@ describe.concurrent("Queue", () => { yield* $(Queue.offer(queue, 3)) yield* $(Queue.offer(queue, 4)) const result = yield* $(Queue.takeUpTo(queue, -1)) - assert.isTrue(Chunk.isEmpty(result)) + expect(Chunk.isEmpty(result)).toBeTrue() })) it.effect("should handle taking up to Number.POSITIVE_INFINITY items", () => Effect.gen(function*($) { diff --git a/test/Ref.ts b/test/Ref.test.ts similarity index 98% rename from test/Ref.ts rename to test/Ref.test.ts index cd99dfe2..15be4411 100644 --- a/test/Ref.ts +++ b/test/Ref.test.ts @@ -2,7 +2,8 @@ import * as Option from "@effect/data/Option" import * as Effect from "@effect/io/Effect" import * as Ref from "@effect/io/Ref" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" const current = "value" const update = "new value" @@ -29,7 +30,7 @@ const isActive = (self: State): boolean => self._tag === "Active" const isChanged = (self: State): boolean => self._tag === "Changed" const isClosed = (self: State): boolean => self._tag === "Closed" -describe.concurrent("Ref", () => { +describe("Ref", () => { it.effect("get", () => Effect.gen(function*($) { const result = yield* $(Ref.make(current), Effect.flatMap(Ref.get)) diff --git a/test/Reloadable.ts b/test/Reloadable.test.ts similarity index 93% rename from test/Reloadable.ts rename to test/Reloadable.test.ts index c9a55a7e..78447d53 100644 --- a/test/Reloadable.ts +++ b/test/Reloadable.test.ts @@ -5,7 +5,8 @@ import * as Layer from "@effect/io/Layer" import * as Reloadable from "@effect/io/Reloadable" import * as Counter from "@effect/io/test/utils/counter" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" const DummyServiceTypeId = Symbol.for("@effect/io/test/Reloadable/DummyService") type DummyServiceTypeId = typeof DummyServiceTypeId @@ -20,7 +21,7 @@ const DummyService: DummyService = { const Tag = Context.Tag() -describe.concurrent("Reloadable", () => { +describe("Reloadable", () => { it.effect("initialization", () => Effect.gen(function*($) { const counter = yield* $(Counter.make()) diff --git a/test/Resource.ts b/test/Resource.test.ts similarity index 95% rename from test/Resource.ts rename to test/Resource.test.ts index 9983dbf8..c27800c4 100644 --- a/test/Resource.ts +++ b/test/Resource.test.ts @@ -7,9 +7,10 @@ import * as Ref from "@effect/io/Ref" import * as Cached from "@effect/io/Resource" import * as Schedule from "@effect/io/Schedule" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" -describe.concurrent("Resource", () => { +describe("Resource", () => { it.scoped("manual", () => Effect.gen(function*($) { const ref = yield* $(Ref.make(0)) diff --git a/test/RuntimeFlags.ts b/test/RuntimeFlags.test.ts similarity index 85% rename from test/RuntimeFlags.ts rename to test/RuntimeFlags.test.ts index fef55886..128244de 100644 --- a/test/RuntimeFlags.ts +++ b/test/RuntimeFlags.test.ts @@ -1,8 +1,9 @@ import { pipe } from "@effect/data/Function" import * as RuntimeFlags from "@effect/io/RuntimeFlags" import * as RuntimeFlagsPatch from "@effect/io/RuntimeFlagsPatch" +import { describe, expect, it } from "bun:test" import * as fc from "fast-check" -import { assert, describe, it } from "vitest" +import assert from "node:assert" const arbRuntimeFlag = fc.constantFrom( RuntimeFlags.None, @@ -17,17 +18,17 @@ const arbRuntimeFlags = fc.uniqueArray(arbRuntimeFlag).map( (flags) => RuntimeFlags.make(...flags) ) -describe.concurrent("RuntimeFlags", () => { +describe("RuntimeFlags", () => { it("isDisabled & isEnabled", () => { const flags = RuntimeFlags.make( RuntimeFlags.RuntimeMetrics, RuntimeFlags.Interruption ) - assert.isTrue(RuntimeFlags.isEnabled(flags, RuntimeFlags.RuntimeMetrics)) - assert.isTrue(RuntimeFlags.isEnabled(flags, RuntimeFlags.Interruption)) - assert.isFalse(RuntimeFlags.isEnabled(flags, RuntimeFlags.CooperativeYielding)) - assert.isFalse(RuntimeFlags.isEnabled(flags, RuntimeFlags.OpSupervision)) - assert.isFalse(RuntimeFlags.isEnabled(flags, RuntimeFlags.WindDown)) + expect(RuntimeFlags.isEnabled(flags, RuntimeFlags.RuntimeMetrics)).toBeTrue() + expect(RuntimeFlags.isEnabled(flags, RuntimeFlags.Interruption)).toBeTrue() + expect(RuntimeFlags.isEnabled(flags, RuntimeFlags.CooperativeYielding)).toBeFalse() + expect(RuntimeFlags.isEnabled(flags, RuntimeFlags.OpSupervision)).toBeFalse() + expect(RuntimeFlags.isEnabled(flags, RuntimeFlags.WindDown)).toBeFalse() }) it("enabled patching", () => { @@ -82,7 +83,7 @@ describe.concurrent("RuntimeFlags", () => { const result = Array.from(RuntimeFlags.toSet(flags)).every( (flag) => RuntimeFlags.isEnabled(flags, flag) ) - assert.isTrue(result) + expect(result).toBeTrue() })) }) diff --git a/test/Schedule.ts b/test/Schedule.test.ts similarity index 97% rename from test/Schedule.ts rename to test/Schedule.test.ts index 256ab837..e826ed5b 100644 --- a/test/Schedule.ts +++ b/test/Schedule.test.ts @@ -15,9 +15,10 @@ import * as Schedule from "@effect/io/Schedule" import * as ScheduleDecision from "@effect/io/ScheduleDecision" import * as Intervals from "@effect/io/ScheduleIntervals" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" -describe.concurrent("Schedule", () => { +describe("Schedule", () => { it.effect("collect all inputs into a list as long as the condition f holds", () => Effect.gen(function*($) { const result = yield* $(repeat(Schedule.collectWhile((n) => n < 10))) @@ -26,7 +27,7 @@ describe.concurrent("Schedule", () => { it.effect("collect all inputs into a list as long as the effectful condition f holds", () => Effect.gen(function*($) { const result = yield* $(repeat(Schedule.collectWhileEffect((n) => Effect.succeed(n > 10)))) - assert.isTrue(Chunk.isEmpty(result)) + expect(Chunk.isEmpty(result)).toBeTrue() })) it.effect("collect all inputs into a list until the effectful condition f fails", () => Effect.gen(function*($) { @@ -125,8 +126,8 @@ describe.concurrent("Schedule", () => { const input = ReadonlyArray.range(1, 5) const delays = yield* $(Schedule.delays(schedule), Schedule.run(now, input)) const actual = Array.from(scanLeft(delays, now, (now, delay) => now + Duration.toMillis(delay))).slice(1) - assert.isTrue(actual.map((n) => new Date(n).getHours()).every((n) => n === 4)) - assert.isTrue(actual.map((n) => new Date(n).getMinutes()).every((n) => n === 20)) + expect(actual.map((n) => new Date(n).getHours()).every((n) => n === 4)).toBeTrue() + expect(actual.map((n) => new Date(n).getMinutes()).every((n) => n === 20)).toBeTrue() })) it.effect("passthrough", () => Effect.gen(function*($) { @@ -136,7 +137,7 @@ describe.concurrent("Schedule", () => { ) assert.strictEqual(result, 10) })) - describe.concurrent("simulate a schedule", () => { + describe("simulate a schedule", () => { it.effect("without timing out", () => Effect.gen(function*($) { const schedule = Schedule.exponential("1 minutes") @@ -177,7 +178,7 @@ describe.concurrent("Schedule", () => { assert.deepStrictEqual(Array.from(result), [0, 1, 2, 3, 4, 5]) })) }) - describe.concurrent("repeat an action a single time", () => { + describe("repeat an action a single time", () => { it.effect("repeat on failure does not actually repeat", () => Effect.gen(function*($) { const ref = yield* $(Ref.make(0)) @@ -194,7 +195,7 @@ describe.concurrent("Schedule", () => { assert.strictEqual(result, (n + 1) * 2) })) }) - describe.concurrent("repeat an action two times and call ensuring should", () => { + describe("repeat an action two times and call ensuring should", () => { it.effect("run the specified finalizer as soon as the schedule is complete", () => Effect.gen(function*($) { const deferred = yield* $(Deferred.make()) @@ -207,10 +208,10 @@ describe.concurrent("Schedule", () => { const value = yield* $(Ref.get(ref)) const finalizerValue = yield* $(Deferred.poll(deferred)) assert.strictEqual(value, 6) - assert.isTrue(Option.isSome(finalizerValue)) + expect(Option.isSome(finalizerValue)).toBeTrue() })) }) - describe.concurrent("repeat on success according to a provided strategy", () => { + describe("repeat on success according to a provided strategy", () => { it.effect("for 'recurs(a negative number)' repeats 0 additional time", () => Effect.gen(function*($) { // A repeat with a negative number of times should not repeat the action at all @@ -261,7 +262,7 @@ describe.concurrent("Schedule", () => { assert.strictEqual(result, 11) })) }) - describe.concurrent("delays", () => { + describe("delays", () => { it.effect("duration", () => Effect.gen(function*($) { const [actual, expected] = yield* $(checkDelays(Schedule.duration("1 seconds"))) @@ -297,7 +298,7 @@ describe.concurrent("Schedule", () => { assert.deepStrictEqual(actual, expected) })) }) - describe.concurrent("repetitions", () => { + describe("repetitions", () => { it.effect("forever", () => Effect.gen(function*($) { const [actual, expected] = yield* $(checkRepetitions(Schedule.repeatForever)) @@ -359,7 +360,7 @@ describe.concurrent("Schedule", () => { assert.deepStrictEqual(actual, expected) })) }) - describe.concurrent("retries", () => { + describe("retries", () => { it.effect("for up to 10 times", () => Effect.gen(function*($) { let i = 0 @@ -559,11 +560,11 @@ describe.concurrent("Schedule", () => { ) ) const finalizerValue = yield* $(Deferred.poll(deferred)) - assert.isTrue(Option.isNone(value)) - assert.isTrue(Option.isSome(finalizerValue)) + expect(Option.isNone(value)).toBeTrue() + expect(Option.isSome(finalizerValue)).toBeTrue() })) }) - describe.concurrent("cron-like scheduling - repeats at point of time (minute of hour, day of week, ...)", () => { + describe("cron-like scheduling - repeats at point of time (minute of hour, day of week, ...)", () => { it.effect("recur at 01 second of each minute", () => Effect.gen(function*($) { const originOffset = new Date(new Date(new Date().setMinutes(0)).setSeconds(0)).setMilliseconds(0) diff --git a/test/Scope.ts b/test/Scope.test.ts similarity index 86% rename from test/Scope.ts rename to test/Scope.test.ts index f5477e01..301f9c8d 100644 --- a/test/Scope.ts +++ b/test/Scope.test.ts @@ -4,7 +4,8 @@ import * as Effect from "@effect/io/Effect" import * as Ref from "@effect/io/Ref" import * as Scope from "@effect/io/Scope" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" type Action = Acquire | Use | Release @@ -50,7 +51,7 @@ const resource = (id: number, ref: Ref.Ref>): Effect.Effec ) } -describe.concurrent("Scope", () => { +describe("Scope", () => { it.effect("runs finalizers when the scope is closed", () => Effect.gen(function*($) { const ref = yield* $(Ref.make>([])) @@ -71,7 +72,7 @@ describe.concurrent("Scope", () => { Effect.scoped, Effect.asUnit ) - assert.isUndefined(result) + expect(result).toBeUndefined() })) it.effect("runs finalizers in parallel when the scope is closed", () => Effect.gen(function*($) { @@ -91,12 +92,12 @@ describe.concurrent("Scope", () => { ) ) const result = yield* $(Ref.get(ref)) - assert.isTrue(result.slice(0, 2).some((action) => isAcquire(action) && action.id === 1)) - assert.isTrue(result.slice(0, 2).some((action) => isAcquire(action) && action.id === 2)) - assert.isTrue(result.slice(2, 4).some((action) => isUse(action) && action.id === 1)) - assert.isTrue(result.slice(2, 4).some((action) => isUse(action) && action.id === 2)) - assert.isTrue(result.slice(4, 6).some((action) => isRelease(action) && action.id === 1)) - assert.isTrue(result.slice(4, 6).some((action) => isRelease(action) && action.id === 2)) + expect(result.slice(0, 2).some((action) => isAcquire(action) && action.id === 1)).toBeTrue() + expect(result.slice(0, 2).some((action) => isAcquire(action) && action.id === 2)).toBeTrue() + expect(result.slice(2, 4).some((action) => isUse(action) && action.id === 1)).toBeTrue() + expect(result.slice(2, 4).some((action) => isUse(action) && action.id === 2)).toBeTrue() + expect(result.slice(4, 6).some((action) => isRelease(action) && action.id === 1)).toBeTrue() + expect(result.slice(4, 6).some((action) => isRelease(action) && action.id === 2)).toBeTrue() })) it.effect("preserves order of nested sequential finalizers", () => Effect.gen(function*($) { @@ -109,8 +110,8 @@ describe.concurrent("Scope", () => { const action2Index = actions.findIndex((action) => action.op === OP_RELEASE && action.id === 2) const action3Index = actions.findIndex((action) => action.op === OP_RELEASE && action.id === 3) const action4Index = actions.findIndex((action) => action.op === OP_RELEASE && action.id === 4) - assert.isBelow(action2Index, action1Index) - assert.isBelow(action4Index, action3Index) + expect(action2Index).toBeLessThan(action1Index) + expect(action4Index).toBeLessThan(action3Index) })) it.scoped("withEarlyRelease", () => Effect.gen(function*($) { diff --git a/test/ScopedCache.ts b/test/ScopedCache.test.ts similarity index 99% rename from test/ScopedCache.ts rename to test/ScopedCache.test.ts index cb4f9eb9..7e1befd9 100644 --- a/test/ScopedCache.ts +++ b/test/ScopedCache.test.ts @@ -19,8 +19,8 @@ import * as ScopedCache from "@effect/io/ScopedCache" import * as ObservableResource from "@effect/io/test/utils/cache/ObservableResource" import * as WatchableLookup from "@effect/io/test/utils/cache/WatchableLookup" import * as it from "@effect/io/test/utils/extend" +import { describe, expect } from "bun:test" import * as fc from "fast-check" -import { describe, expect } from "vitest" const hash = dual< (y: number) => (x: number) => number, @@ -32,7 +32,7 @@ const hashEffect = dual< (x: number, y: number) => Effect.Effect >(2, (x, y) => Effect.sync(() => hash(x, y))) -describe.concurrent("ScopedCache", () => { +describe("ScopedCache", () => { it.it("cacheStats - should correctly keep track of cache size, hits and misses", () => fc.assert( fc.asyncProperty(fc.integer(), async (salt) => { diff --git a/test/ScopedRef.ts b/test/ScopedRef.test.ts similarity index 96% rename from test/ScopedRef.ts rename to test/ScopedRef.test.ts index 06250bde..30810e28 100644 --- a/test/ScopedRef.ts +++ b/test/ScopedRef.test.ts @@ -3,9 +3,10 @@ import * as Effect from "@effect/io/Effect" import * as ScopedRef from "@effect/io/ScopedRef" import * as Counter from "@effect/io/test/utils/counter" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" -describe.concurrent("ScopedRef", () => { +describe("ScopedRef", () => { it.scoped("single set", () => Effect.gen(function*($) { const counter = yield* $(Counter.make()) diff --git a/test/Synchronized.ts b/test/Synchronized.test.ts similarity index 97% rename from test/Synchronized.ts rename to test/Synchronized.test.ts index aa208118..4df7f78c 100644 --- a/test/Synchronized.ts +++ b/test/Synchronized.test.ts @@ -5,7 +5,8 @@ import * as Exit from "@effect/io/Exit" import * as Fiber from "@effect/io/Fiber" import * as Synchronized from "@effect/io/SynchronizedRef" import * as it from "@effect/io/test/utils/extend" -import { assert, describe } from "vitest" +import { describe } from "bun:test" +import assert from "node:assert" const current = "value" const update = "new value" @@ -33,7 +34,7 @@ const isActive = (self: State): boolean => self._tag === "Active" const isChanged = (self: State): boolean => self._tag === "Changed" const isClosed = (self: State): boolean => self._tag === "Closed" -describe.concurrent("SynchronizedRef", () => { +describe("SynchronizedRef", () => { it.effect("get", () => Effect.gen(function*($) { const result = yield* $(Synchronized.make(current), Effect.flatMap(Synchronized.get)) diff --git a/test/Tracer.ts b/test/Tracer.test.ts similarity index 95% rename from test/Tracer.ts rename to test/Tracer.test.ts index fd0adbbc..b530078c 100644 --- a/test/Tracer.ts +++ b/test/Tracer.test.ts @@ -10,7 +10,8 @@ import type { NativeSpan } from "@effect/io/internal/tracer" import * as Layer from "@effect/io/Layer" import * as it from "@effect/io/test/utils/extend" import type { Span } from "@effect/io/Tracer" -import { assert, describe } from "vitest" +import { describe, expect } from "bun:test" +import assert from "node:assert" const currentSpan = Effect.flatMap(Effect.currentSpan, identity) @@ -218,13 +219,14 @@ describe("Tracer", () => { Effect.withSpan("A", { links: [{ _tag: "SpanLink", span: childB, attributes: {} }] }), Effect.linkSpans(childA) ) - assert.includeMembers( - currentSpan.pipe( - Option.map((span) => span.links.map((_) => _.span)), - Option.getOrElse(() => []) - ), - [childB, childA] + + const linkedSpans = currentSpan.pipe( + Option.map((span) => span.links.map((_) => _.span)), + Option.getOrElse(() => []) ) + + expect(linkedSpans).toContain(childA) + expect(linkedSpans).toContain(childB) })) }) }) diff --git a/test/utils/cache/ObservableResource.ts b/test/utils/cache/ObservableResource.ts index 3c808c24..a10c08df 100644 --- a/test/utils/cache/ObservableResource.ts +++ b/test/utils/cache/ObservableResource.ts @@ -3,7 +3,7 @@ import * as Effect from "@effect/io/Effect" import * as ExecutionStrategy from "@effect/io/ExecutionStrategy" import * as Ref from "@effect/io/Ref" import * as Scope from "@effect/io/Scope" -import { expect } from "vitest" +import { expect } from "bun:test" export interface ObservableResource { readonly scoped: Effect.Effect @@ -20,22 +20,22 @@ class ObservableResourceImpl implements ObservableResource { assertNotAcquired(): Effect.Effect { return Effect.map(this.getState, ([numAcquisition, numCleaned]) => { - expect(numAcquisition, "Resource acquired when it should not have").toBe(0) - expect(numCleaned, "Resource cleaned when it should not have").toBe(0) + expect(numAcquisition).toBe(0) + expect(numCleaned).toBe(0) }) } assertAcquiredOnceAndCleaned(): Effect.Effect { return Effect.map(this.getState, ([numAcquisition, numCleaned]) => { - expect(numAcquisition, "Resource not acquired once").toBe(1) - expect(numCleaned, "Resource not cleaned when it should have").toBe(1) + expect(numAcquisition).toBe(1) + expect(numCleaned).toBe(1) }) } assertAcquiredOnceAndNotCleaned(): Effect.Effect { return Effect.map(this.getState, ([numAcquisition, numCleaned]) => { - expect(numAcquisition, "Resource not acquired once").toBe(1) - expect(numCleaned, "Resource cleaned when it should not have").toBe(0) + expect(numAcquisition).toBe(1) + expect(numCleaned).toBe(0) }) } } diff --git a/test/utils/cache/WatchableLookup.ts b/test/utils/cache/WatchableLookup.ts index f40c949f..e48aa6c5 100644 --- a/test/utils/cache/WatchableLookup.ts +++ b/test/utils/cache/WatchableLookup.ts @@ -9,6 +9,7 @@ import * as Ref from "@effect/io/Ref" import * as Schedule from "@effect/io/Schedule" import type * as Scope from "@effect/io/Scope" import * as ObservableResource from "@effect/io/test/utils/cache/ObservableResource" +import { expect } from "bun:test" export interface WatchableLookup { (key: Key): Effect.Effect diff --git a/test/utils/extend.ts b/test/utils/extend.ts index e63d3450..db9c96fe 100644 --- a/test/utils/extend.ts +++ b/test/utils/extend.ts @@ -5,12 +5,9 @@ import * as TestEnvironment from "@effect/io/internal/testing/testEnvironment" import type * as TestServices from "@effect/io/internal/testing/testServices" import * as Schedule from "@effect/io/Schedule" import type * as Scope from "@effect/io/Scope" -import type { TestAPI } from "vitest" -import * as V from "vitest" +import * as BunTest from "bun:test" -export type API = TestAPI<{}> - -export const it: API = V.it +export const it = BunTest.it.bind(BunTest) export const effect = (() => { const f = ( @@ -26,7 +23,9 @@ export const effect = (() => { Effect.provideLayer(TestEnvironment.testContext()), Effect.runPromise ), - timeout + { + timeout + } ) } return Object.assign(f, { @@ -43,7 +42,9 @@ export const effect = (() => { Effect.provideLayer(TestEnvironment.testContext()), Effect.runPromise ), - timeout + { + timeout + } ) }, only: ( @@ -59,7 +60,9 @@ export const effect = (() => { Effect.provideLayer(TestEnvironment.testContext()), Effect.runPromise ), - timeout + { + timeout + } ) } }) @@ -77,7 +80,9 @@ export const live = ( Effect.suspend(self), Effect.runPromise ), - timeout + { + timeout + } ) } @@ -112,7 +117,9 @@ export const scoped = ( Effect.provideLayer(TestEnvironment.testContext()), Effect.runPromise ), - timeout + { + timeout + } ) } @@ -129,6 +136,8 @@ export const scopedLive = ( Effect.scoped, Effect.runPromise ), - timeout + { + timeout + } ) } diff --git a/tsconfig.test.json b/tsconfig.test.json index c0e26c46..02f76f6d 100644 --- a/tsconfig.test.json +++ b/tsconfig.test.json @@ -5,7 +5,8 @@ "rootDir": "./", "noEmit": true, "types": [ - "vitest/globals" + "node", + "bun-types" ] }, "include": [ diff --git a/vitest.config.ts b/vitest.config.ts deleted file mode 100644 index aedef414..00000000 --- a/vitest.config.ts +++ /dev/null @@ -1,23 +0,0 @@ -/// - -import babel from "@vitejs/plugin-react" -import path from "path" -import { defineConfig } from "vite" - -// eslint-disable-next-line @typescript-eslint/no-var-requires -const babelConfig = require("./.babel.mjs.json") - -export default defineConfig({ - plugins: [babel({ babel: babelConfig })], - test: { - include: ["./test/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"], - exclude: ["./test/utils/**/*.ts", "./test/**/*.init.ts"], - globals: true - }, - resolve: { - alias: { - "@effect/io/test": path.join(__dirname, "test"), - "@effect/io": path.join(__dirname, "src") - } - } -})