diff --git a/.gitignore b/.gitignore index 6704566..75e8c73 100644 --- a/.gitignore +++ b/.gitignore @@ -80,7 +80,6 @@ typings/ # Nuxt.js build / generate output .nuxt -dist # Gatsby files .cache/ @@ -91,6 +90,9 @@ dist # vuepress build output .vuepress/dist +# Build output +dist/ + # Serverless directories .serverless/ diff --git a/.pnp.cjs b/.pnp.cjs new file mode 100755 index 0000000..6b18be0 --- /dev/null +++ b/.pnp.cjs @@ -0,0 +1,17857 @@ +#!/usr/bin/env node +/* eslint-disable */ +// @ts-nocheck +"use strict"; + +const RAW_RUNTIME_STATE = +'{\ + "__info": [\ + "This file is automatically generated. Do not touch it, or risk",\ + "your modifications being lost."\ + ],\ + "dependencyTreeRoots": [\ + {\ + "name": "scm-slang",\ + "reference": "workspace:."\ + }\ + ],\ + "enableTopLevelFallback": true,\ + "ignorePatternData": "(^(?:\\\\.yarn\\\\/sdks(?:\\\\/(?!\\\\.{1,2}(?:\\\\/|$))(?:(?:(?!(?:^|\\\\/)\\\\.{1,2}(?:\\\\/|$)).)*?)|$))$)",\ + "pnpZipBackend": "libzip",\ + "fallbackExclusionList": [\ + ["scm-slang", ["workspace:."]]\ + ],\ + "fallbackPool": [\ + ],\ + "packageRegistryData": [\ + [null, [\ + [null, {\ + "packageLocation": "./",\ + "packageDependencies": [\ + ["@babel/preset-env", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:7.28.0"],\ + ["@rollup/plugin-commonjs", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:28.0.6"],\ + ["@rollup/plugin-node-resolve", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:16.0.1"],\ + ["@rollup/plugin-typescript", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:12.1.4"],\ + ["@types/estree", "npm:1.0.8"],\ + ["@types/jest", "npm:30.0.0"],\ + ["@types/node", "npm:22.17.1"],\ + ["@typescript-eslint/eslint-plugin", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:6.21.0"],\ + ["acorn", "npm:8.15.0"],\ + ["acorn-walk", "npm:8.3.4"],\ + ["babel-jest", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:30.0.5"],\ + ["escodegen", "npm:2.1.0"],\ + ["eslint", "npm:8.57.1"],\ + ["eslint-config-standard-with-typescript", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:43.0.1"],\ + ["eslint-plugin-import", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:2.32.0"],\ + ["eslint-plugin-n", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:16.6.2"],\ + ["eslint-plugin-promise", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:6.6.0"],\ + ["husky", "npm:9.1.7"],\ + ["jest", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["js-base64", "npm:3.7.7"],\ + ["prettier", "npm:3.6.2"],\ + ["rollup", "npm:4.46.2"],\ + ["scm-slang", "workspace:."],\ + ["source-map", "npm:0.7.6"],\ + ["ts-jest", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:29.4.1"],\ + ["tslib", "npm:2.8.1"],\ + ["typescript", "patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5"]\ + ],\ + "linkType": "SOFT"\ + }]\ + ]],\ + ["@ampproject/remapping", [\ + ["npm:2.3.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@ampproject-remapping-npm-2.3.0-559c14eee4-10c0.zip/node_modules/@ampproject/remapping/",\ + "packageDependencies": [\ + ["@ampproject/remapping", "npm:2.3.0"],\ + ["@jridgewell/gen-mapping", "npm:0.3.12"],\ + ["@jridgewell/trace-mapping", "npm:0.3.29"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/code-frame", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-code-frame-npm-7.27.1-4dbcabb137-10c0.zip/node_modules/@babel/code-frame/",\ + "packageDependencies": [\ + ["@babel/code-frame", "npm:7.27.1"],\ + ["@babel/helper-validator-identifier", "npm:7.27.1"],\ + ["js-tokens", "npm:4.0.0"],\ + ["picocolors", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/compat-data", [\ + ["npm:7.28.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-compat-data-npm-7.28.0-04d8eecea9-10c0.zip/node_modules/@babel/compat-data/",\ + "packageDependencies": [\ + ["@babel/compat-data", "npm:7.28.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/core", [\ + ["npm:7.28.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-core-npm-7.28.0-2c03249042-10c0.zip/node_modules/@babel/core/",\ + "packageDependencies": [\ + ["@ampproject/remapping", "npm:2.3.0"],\ + ["@babel/code-frame", "npm:7.27.1"],\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/generator", "npm:7.28.0"],\ + ["@babel/helper-compilation-targets", "npm:7.27.2"],\ + ["@babel/helper-module-transforms", "virtual:2c032490421458ee4e212ed9bd0627762ff65ed1232d4208f2d615b0d0187bb07fc168cbfc1670b2da389400360e723c4eeeceee24d006e509ab345b44149a9f#npm:7.27.3"],\ + ["@babel/helpers", "npm:7.28.2"],\ + ["@babel/parser", "npm:7.28.0"],\ + ["@babel/template", "npm:7.27.2"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@babel/types", "npm:7.28.2"],\ + ["convert-source-map", "npm:2.0.0"],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"],\ + ["gensync", "npm:1.0.0-beta.2"],\ + ["json5", "npm:2.2.3"],\ + ["semver", "npm:6.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/generator", [\ + ["npm:7.28.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-generator-npm-7.28.0-41b4249958-10c0.zip/node_modules/@babel/generator/",\ + "packageDependencies": [\ + ["@babel/generator", "npm:7.28.0"],\ + ["@babel/parser", "npm:7.28.0"],\ + ["@babel/types", "npm:7.28.2"],\ + ["@jridgewell/gen-mapping", "npm:0.3.12"],\ + ["@jridgewell/trace-mapping", "npm:0.3.29"],\ + ["jsesc", "npm:3.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-annotate-as-pure", [\ + ["npm:7.27.3", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-annotate-as-pure-npm-7.27.3-d8daa5b949-10c0.zip/node_modules/@babel/helper-annotate-as-pure/",\ + "packageDependencies": [\ + ["@babel/helper-annotate-as-pure", "npm:7.27.3"],\ + ["@babel/types", "npm:7.28.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-compilation-targets", [\ + ["npm:7.27.2", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-compilation-targets-npm-7.27.2-111dda04b6-10c0.zip/node_modules/@babel/helper-compilation-targets/",\ + "packageDependencies": [\ + ["@babel/compat-data", "npm:7.28.0"],\ + ["@babel/helper-compilation-targets", "npm:7.27.2"],\ + ["@babel/helper-validator-option", "npm:7.27.1"],\ + ["browserslist", "npm:4.25.2"],\ + ["lru-cache", "npm:5.1.1"],\ + ["semver", "npm:6.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-create-class-features-plugin", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-create-class-features-plugin-npm-7.27.1-65d3087eb1-10c0.zip/node_modules/@babel/helper-create-class-features-plugin/",\ + "packageDependencies": [\ + ["@babel/helper-create-class-features-plugin", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:8d0b7bb4c3ea10c62e6c3f2acfcd472ec23d6b4725225001b718fb681d4e40da39060b2ab8e0ab31b51e4e734abf2a3de1a4331088e18ba20329446113440a16#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-helper-create-class-features-plugin-virtual-b796a245a7/4/.yarn/berry/cache/@babel-helper-create-class-features-plugin-npm-7.27.1-65d3087eb1-10c0.zip/node_modules/@babel/helper-create-class-features-plugin/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-annotate-as-pure", "npm:7.27.3"],\ + ["@babel/helper-create-class-features-plugin", "virtual:8d0b7bb4c3ea10c62e6c3f2acfcd472ec23d6b4725225001b718fb681d4e40da39060b2ab8e0ab31b51e4e734abf2a3de1a4331088e18ba20329446113440a16#npm:7.27.1"],\ + ["@babel/helper-member-expression-to-functions", "npm:7.27.1"],\ + ["@babel/helper-optimise-call-expression", "npm:7.27.1"],\ + ["@babel/helper-replace-supers", "virtual:b796a245a74eb6f32557f40dea8aa4676b11b126f58a76b1ba334ea43621d18b49deff4d35c28c3193a7490fd874530f043dff6dd900140b63bb2c02d3a0e7d4#npm:7.27.1"],\ + ["@babel/helper-skip-transparent-expression-wrappers", "npm:7.27.1"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@types/babel__core", null],\ + ["semver", "npm:6.3.1"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-create-regexp-features-plugin", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-create-regexp-features-plugin-npm-7.27.1-76d8a0ecb8-10c0.zip/node_modules/@babel/helper-create-regexp-features-plugin/",\ + "packageDependencies": [\ + ["@babel/helper-create-regexp-features-plugin", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:edebc3d427a08c9449b925cc9699a7885cee57b4df753cdbec68b6068e0c9d373a0e3c92e83184eeec46c05a6b193887e9f51648a0d83a3d5f327b464553c21e#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-helper-create-regexp-features-plugin-virtual-28c2711a5c/4/.yarn/berry/cache/@babel-helper-create-regexp-features-plugin-npm-7.27.1-76d8a0ecb8-10c0.zip/node_modules/@babel/helper-create-regexp-features-plugin/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-annotate-as-pure", "npm:7.27.3"],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:edebc3d427a08c9449b925cc9699a7885cee57b4df753cdbec68b6068e0c9d373a0e3c92e83184eeec46c05a6b193887e9f51648a0d83a3d5f327b464553c21e#npm:7.27.1"],\ + ["@types/babel__core", null],\ + ["regexpu-core", "npm:6.2.0"],\ + ["semver", "npm:6.3.1"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-define-polyfill-provider", [\ + ["npm:0.6.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-define-polyfill-provider-npm-0.6.5-6bd5237c07-10c0.zip/node_modules/@babel/helper-define-polyfill-provider/",\ + "packageDependencies": [\ + ["@babel/helper-define-polyfill-provider", "npm:0.6.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f2566795bf3a86342ae118548a107badfe0ced733d3a3dbb9fbf722a577eb03acc60b53dcc1cb44110b1dd51571c8eea73858ba02e31f4719c497579322eb51a#npm:0.6.5", {\ + "packageLocation": "./.yarn/__virtual__/@babel-helper-define-polyfill-provider-virtual-8f587ae88c/4/.yarn/berry/cache/@babel-helper-define-polyfill-provider-npm-0.6.5-6bd5237c07-10c0.zip/node_modules/@babel/helper-define-polyfill-provider/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-compilation-targets", "npm:7.27.2"],\ + ["@babel/helper-define-polyfill-provider", "virtual:f2566795bf3a86342ae118548a107badfe0ced733d3a3dbb9fbf722a577eb03acc60b53dcc1cb44110b1dd51571c8eea73858ba02e31f4719c497579322eb51a#npm:0.6.5"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@types/babel__core", null],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"],\ + ["lodash.debounce", "npm:4.0.8"],\ + ["resolve", "patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-globals", [\ + ["npm:7.28.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-globals-npm-7.28.0-8d79c12faf-10c0.zip/node_modules/@babel/helper-globals/",\ + "packageDependencies": [\ + ["@babel/helper-globals", "npm:7.28.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-member-expression-to-functions", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-member-expression-to-functions-npm-7.27.1-39af2b31f0-10c0.zip/node_modules/@babel/helper-member-expression-to-functions/",\ + "packageDependencies": [\ + ["@babel/helper-member-expression-to-functions", "npm:7.27.1"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@babel/types", "npm:7.28.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-module-imports", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-module-imports-npm-7.27.1-3bf33978f4-10c0.zip/node_modules/@babel/helper-module-imports/",\ + "packageDependencies": [\ + ["@babel/helper-module-imports", "npm:7.27.1"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@babel/types", "npm:7.28.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-module-transforms", [\ + ["npm:7.27.3", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-module-transforms-npm-7.27.3-90dc30d3d9-10c0.zip/node_modules/@babel/helper-module-transforms/",\ + "packageDependencies": [\ + ["@babel/helper-module-transforms", "npm:7.27.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:2c032490421458ee4e212ed9bd0627762ff65ed1232d4208f2d615b0d0187bb07fc168cbfc1670b2da389400360e723c4eeeceee24d006e509ab345b44149a9f#npm:7.27.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-helper-module-transforms-virtual-fc3dc6ed85/4/.yarn/berry/cache/@babel-helper-module-transforms-npm-7.27.3-90dc30d3d9-10c0.zip/node_modules/@babel/helper-module-transforms/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-module-imports", "npm:7.27.1"],\ + ["@babel/helper-module-transforms", "virtual:2c032490421458ee4e212ed9bd0627762ff65ed1232d4208f2d615b0d0187bb07fc168cbfc1670b2da389400360e723c4eeeceee24d006e509ab345b44149a9f#npm:7.27.3"],\ + ["@babel/helper-validator-identifier", "npm:7.27.1"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:b7456b070c3012b847a1a56a3e4fd8300f9cc96874a64769b21b2d4976d3356549cd7773191b60ec523e868f2fd6cbef6dca7e0536e21d6eec9c9fa743629996#npm:7.27.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-helper-module-transforms-virtual-0e85777211/4/.yarn/berry/cache/@babel-helper-module-transforms-npm-7.27.3-90dc30d3d9-10c0.zip/node_modules/@babel/helper-module-transforms/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-module-imports", "npm:7.27.1"],\ + ["@babel/helper-module-transforms", "virtual:b7456b070c3012b847a1a56a3e4fd8300f9cc96874a64769b21b2d4976d3356549cd7773191b60ec523e868f2fd6cbef6dca7e0536e21d6eec9c9fa743629996#npm:7.27.3"],\ + ["@babel/helper-validator-identifier", "npm:7.27.1"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-optimise-call-expression", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-optimise-call-expression-npm-7.27.1-84d2c8f7d3-10c0.zip/node_modules/@babel/helper-optimise-call-expression/",\ + "packageDependencies": [\ + ["@babel/helper-optimise-call-expression", "npm:7.27.1"],\ + ["@babel/types", "npm:7.28.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-plugin-utils", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-plugin-utils-npm-7.27.1-4f91e7999b-10c0.zip/node_modules/@babel/helper-plugin-utils/",\ + "packageDependencies": [\ + ["@babel/helper-plugin-utils", "npm:7.27.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-remap-async-to-generator", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-remap-async-to-generator-npm-7.27.1-6e89d61aa6-10c0.zip/node_modules/@babel/helper-remap-async-to-generator/",\ + "packageDependencies": [\ + ["@babel/helper-remap-async-to-generator", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:28d42cf444e4e97b32a16bbe8f417cdd52860786da2aaea09062f57fbee797235add785d26a1580ba60770e1c5d359725d3131de15bf79a13bb1b7acfcc6d425#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-helper-remap-async-to-generator-virtual-27666a20dc/4/.yarn/berry/cache/@babel-helper-remap-async-to-generator-npm-7.27.1-6e89d61aa6-10c0.zip/node_modules/@babel/helper-remap-async-to-generator/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-annotate-as-pure", "npm:7.27.3"],\ + ["@babel/helper-remap-async-to-generator", "virtual:28d42cf444e4e97b32a16bbe8f417cdd52860786da2aaea09062f57fbee797235add785d26a1580ba60770e1c5d359725d3131de15bf79a13bb1b7acfcc6d425#npm:7.27.1"],\ + ["@babel/helper-wrap-function", "npm:7.27.1"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-replace-supers", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-replace-supers-npm-7.27.1-f784132f4b-10c0.zip/node_modules/@babel/helper-replace-supers/",\ + "packageDependencies": [\ + ["@babel/helper-replace-supers", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:b796a245a74eb6f32557f40dea8aa4676b11b126f58a76b1ba334ea43621d18b49deff4d35c28c3193a7490fd874530f043dff6dd900140b63bb2c02d3a0e7d4#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-helper-replace-supers-virtual-44d2d3905a/4/.yarn/berry/cache/@babel-helper-replace-supers-npm-7.27.1-f784132f4b-10c0.zip/node_modules/@babel/helper-replace-supers/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-member-expression-to-functions", "npm:7.27.1"],\ + ["@babel/helper-optimise-call-expression", "npm:7.27.1"],\ + ["@babel/helper-replace-supers", "virtual:b796a245a74eb6f32557f40dea8aa4676b11b126f58a76b1ba334ea43621d18b49deff4d35c28c3193a7490fd874530f043dff6dd900140b63bb2c02d3a0e7d4#npm:7.27.1"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-skip-transparent-expression-wrappers", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-skip-transparent-expression-wrappers-npm-7.27.1-c539e02d36-10c0.zip/node_modules/@babel/helper-skip-transparent-expression-wrappers/",\ + "packageDependencies": [\ + ["@babel/helper-skip-transparent-expression-wrappers", "npm:7.27.1"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@babel/types", "npm:7.28.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-string-parser", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-string-parser-npm-7.27.1-d1471e0598-10c0.zip/node_modules/@babel/helper-string-parser/",\ + "packageDependencies": [\ + ["@babel/helper-string-parser", "npm:7.27.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-validator-identifier", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-validator-identifier-npm-7.27.1-2c3cefd5dc-10c0.zip/node_modules/@babel/helper-validator-identifier/",\ + "packageDependencies": [\ + ["@babel/helper-validator-identifier", "npm:7.27.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-validator-option", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-validator-option-npm-7.27.1-7c563f0423-10c0.zip/node_modules/@babel/helper-validator-option/",\ + "packageDependencies": [\ + ["@babel/helper-validator-option", "npm:7.27.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-wrap-function", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helper-wrap-function-npm-7.27.1-7c7bc9ac83-10c0.zip/node_modules/@babel/helper-wrap-function/",\ + "packageDependencies": [\ + ["@babel/helper-wrap-function", "npm:7.27.1"],\ + ["@babel/template", "npm:7.27.2"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@babel/types", "npm:7.28.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helpers", [\ + ["npm:7.28.2", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-helpers-npm-7.28.2-20c7a44ade-10c0.zip/node_modules/@babel/helpers/",\ + "packageDependencies": [\ + ["@babel/helpers", "npm:7.28.2"],\ + ["@babel/template", "npm:7.27.2"],\ + ["@babel/types", "npm:7.28.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/parser", [\ + ["npm:7.28.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-parser-npm-7.28.0-d5c2974608-10c0.zip/node_modules/@babel/parser/",\ + "packageDependencies": [\ + ["@babel/parser", "npm:7.28.0"],\ + ["@babel/types", "npm:7.28.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-bugfix-firefox-class-in-computed-class-key", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-bugfix-firefox-class-in-computed-class-key-npm-7.27.1-f0c584df24-10c0.zip/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/",\ + "packageDependencies": [\ + ["@babel/plugin-bugfix-firefox-class-in-computed-class-key", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-bugfix-firefox-class-in-computed-class-key-virtual-7253057042/4/.yarn/berry/cache/@babel-plugin-bugfix-firefox-class-in-computed-class-key-npm-7.27.1-f0c584df24-10c0.zip/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-bugfix-firefox-class-in-computed-class-key", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-bugfix-safari-class-field-initializer-scope", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-bugfix-safari-class-field-initializer-scope-npm-7.27.1-168d311408-10c0.zip/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/",\ + "packageDependencies": [\ + ["@babel/plugin-bugfix-safari-class-field-initializer-scope", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-bugfix-safari-class-field-initializer-scope-virtual-1b2742db51/4/.yarn/berry/cache/@babel-plugin-bugfix-safari-class-field-initializer-scope-npm-7.27.1-168d311408-10c0.zip/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-bugfix-safari-class-field-initializer-scope", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression-npm-7.27.1-8650001d00-10c0.zip/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/",\ + "packageDependencies": [\ + ["@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression-virtual-69ee790e12/4/.yarn/berry/cache/@babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression-npm-7.27.1-8650001d00-10c0.zip/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining-npm-7.27.1-1740419cb6-10c0.zip/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/",\ + "packageDependencies": [\ + ["@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining-virtual-44ab37a250/4/.yarn/berry/cache/@babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining-npm-7.27.1-1740419cb6-10c0.zip/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/helper-skip-transparent-expression-wrappers", "npm:7.27.1"],\ + ["@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-optional-chaining", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-bugfix-v8-static-class-fields-redefine-readonly-npm-7.27.1-424bedd466-10c0.zip/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/",\ + "packageDependencies": [\ + ["@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-bugfix-v8-static-class-fields-redefine-readonly-virtual-be249f6fc2/4/.yarn/berry/cache/@babel-plugin-bugfix-v8-static-class-fields-redefine-readonly-npm-7.27.1-424bedd466-10c0.zip/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-proposal-private-property-in-object", [\ + ["npm:7.21.0-placeholder-for-preset-env.2", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-proposal-private-property-in-object-npm-7.21.0-placeholder-for-preset-env.2-eb70026c88-10c0.zip/node_modules/@babel/plugin-proposal-private-property-in-object/",\ + "packageDependencies": [\ + ["@babel/plugin-proposal-private-property-in-object", "npm:7.21.0-placeholder-for-preset-env.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.21.0-placeholder-for-preset-env.2", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-proposal-private-property-in-object-virtual-6d7381411d/4/.yarn/berry/cache/@babel-plugin-proposal-private-property-in-object-npm-7.21.0-placeholder-for-preset-env.2-eb70026c88-10c0.zip/node_modules/@babel/plugin-proposal-private-property-in-object/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/plugin-proposal-private-property-in-object", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.21.0-placeholder-for-preset-env.2"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-async-generators", [\ + ["npm:7.8.4", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-async-generators-npm-7.8.4-d10cf993c9-10c0.zip/node_modules/@babel/plugin-syntax-async-generators/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-async-generators", "npm:7.8.4"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-async-generators-virtual-40dea2cd93/4/.yarn/berry/cache/@babel-plugin-syntax-async-generators-npm-7.8.4-d10cf993c9-10c0.zip/node_modules/@babel/plugin-syntax-async-generators/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-async-generators", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.4"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-async-generators-virtual-f5c2ffa28c/4/.yarn/berry/cache/@babel-plugin-syntax-async-generators-npm-7.8.4-d10cf993c9-10c0.zip/node_modules/@babel/plugin-syntax-async-generators/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-async-generators", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.4"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-async-generators-virtual-42aa4a9349/4/.yarn/berry/cache/@babel-plugin-syntax-async-generators-npm-7.8.4-d10cf993c9-10c0.zip/node_modules/@babel/plugin-syntax-async-generators/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-async-generators", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.4"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-bigint", [\ + ["npm:7.8.3", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-bigint-npm-7.8.3-b05d971e6c-10c0.zip/node_modules/@babel/plugin-syntax-bigint/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-bigint", "npm:7.8.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-bigint-virtual-34eafd690d/4/.yarn/berry/cache/@babel-plugin-syntax-bigint-npm-7.8.3-b05d971e6c-10c0.zip/node_modules/@babel/plugin-syntax-bigint/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-bigint", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-bigint-virtual-d1574e2bb0/4/.yarn/berry/cache/@babel-plugin-syntax-bigint-npm-7.8.3-b05d971e6c-10c0.zip/node_modules/@babel/plugin-syntax-bigint/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-bigint", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-bigint-virtual-82e0dac51a/4/.yarn/berry/cache/@babel-plugin-syntax-bigint-npm-7.8.3-b05d971e6c-10c0.zip/node_modules/@babel/plugin-syntax-bigint/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-bigint", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-class-properties", [\ + ["npm:7.12.13", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-class-properties-npm-7.12.13-002ee9d930-10c0.zip/node_modules/@babel/plugin-syntax-class-properties/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-class-properties", "npm:7.12.13"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.12.13", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-class-properties-virtual-91ed8b71ad/4/.yarn/berry/cache/@babel-plugin-syntax-class-properties-npm-7.12.13-002ee9d930-10c0.zip/node_modules/@babel/plugin-syntax-class-properties/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-class-properties", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.12.13"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.12.13", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-class-properties-virtual-42dc1d1bc8/4/.yarn/berry/cache/@babel-plugin-syntax-class-properties-npm-7.12.13-002ee9d930-10c0.zip/node_modules/@babel/plugin-syntax-class-properties/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-class-properties", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.12.13"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.12.13", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-class-properties-virtual-58b550d0ad/4/.yarn/berry/cache/@babel-plugin-syntax-class-properties-npm-7.12.13-002ee9d930-10c0.zip/node_modules/@babel/plugin-syntax-class-properties/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-class-properties", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.12.13"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-class-static-block", [\ + ["npm:7.14.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-class-static-block-npm-7.14.5-7bdd0ff1b3-10c0.zip/node_modules/@babel/plugin-syntax-class-static-block/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-class-static-block", "npm:7.14.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.14.5", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-class-static-block-virtual-dadd15a34e/4/.yarn/berry/cache/@babel-plugin-syntax-class-static-block-npm-7.14.5-7bdd0ff1b3-10c0.zip/node_modules/@babel/plugin-syntax-class-static-block/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-class-static-block", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.14.5"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.14.5", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-class-static-block-virtual-b4c2682751/4/.yarn/berry/cache/@babel-plugin-syntax-class-static-block-npm-7.14.5-7bdd0ff1b3-10c0.zip/node_modules/@babel/plugin-syntax-class-static-block/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-class-static-block", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.14.5"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.14.5", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-class-static-block-virtual-fd7aea6d7f/4/.yarn/berry/cache/@babel-plugin-syntax-class-static-block-npm-7.14.5-7bdd0ff1b3-10c0.zip/node_modules/@babel/plugin-syntax-class-static-block/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-class-static-block", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.14.5"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-import-assertions", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-import-assertions-npm-7.27.1-2af23a0a52-10c0.zip/node_modules/@babel/plugin-syntax-import-assertions/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-import-assertions", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-import-assertions-virtual-23193daf36/4/.yarn/berry/cache/@babel-plugin-syntax-import-assertions-npm-7.27.1-2af23a0a52-10c0.zip/node_modules/@babel/plugin-syntax-import-assertions/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-import-assertions", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-import-attributes", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-import-attributes-npm-7.27.1-e7e02d37a0-10c0.zip/node_modules/@babel/plugin-syntax-import-attributes/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-import-attributes", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-import-attributes-virtual-dafe8e7040/4/.yarn/berry/cache/@babel-plugin-syntax-import-attributes-npm-7.27.1-e7e02d37a0-10c0.zip/node_modules/@babel/plugin-syntax-import-attributes/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-import-attributes", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-import-attributes-virtual-2798f3c8e9/4/.yarn/berry/cache/@babel-plugin-syntax-import-attributes-npm-7.27.1-e7e02d37a0-10c0.zip/node_modules/@babel/plugin-syntax-import-attributes/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-import-attributes", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.27.1"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-import-attributes-virtual-8c93b0fae1/4/.yarn/berry/cache/@babel-plugin-syntax-import-attributes-npm-7.27.1-e7e02d37a0-10c0.zip/node_modules/@babel/plugin-syntax-import-attributes/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-import-attributes", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.27.1"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-import-attributes-virtual-f36988f3b2/4/.yarn/berry/cache/@babel-plugin-syntax-import-attributes-npm-7.27.1-e7e02d37a0-10c0.zip/node_modules/@babel/plugin-syntax-import-attributes/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-import-attributes", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-import-meta", [\ + ["npm:7.10.4", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-import-meta-npm-7.10.4-4a0a0158bc-10c0.zip/node_modules/@babel/plugin-syntax-import-meta/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-import-meta", "npm:7.10.4"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.10.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-import-meta-virtual-0f31594b88/4/.yarn/berry/cache/@babel-plugin-syntax-import-meta-npm-7.10.4-4a0a0158bc-10c0.zip/node_modules/@babel/plugin-syntax-import-meta/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-import-meta", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.10.4"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.10.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-import-meta-virtual-3b487ff462/4/.yarn/berry/cache/@babel-plugin-syntax-import-meta-npm-7.10.4-4a0a0158bc-10c0.zip/node_modules/@babel/plugin-syntax-import-meta/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-import-meta", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.10.4"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.10.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-import-meta-virtual-161ab5027c/4/.yarn/berry/cache/@babel-plugin-syntax-import-meta-npm-7.10.4-4a0a0158bc-10c0.zip/node_modules/@babel/plugin-syntax-import-meta/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-import-meta", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.10.4"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-json-strings", [\ + ["npm:7.8.3", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-json-strings-npm-7.8.3-6dc7848179-10c0.zip/node_modules/@babel/plugin-syntax-json-strings/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-json-strings", "npm:7.8.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-json-strings-virtual-c4995a6953/4/.yarn/berry/cache/@babel-plugin-syntax-json-strings-npm-7.8.3-6dc7848179-10c0.zip/node_modules/@babel/plugin-syntax-json-strings/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-json-strings", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-json-strings-virtual-ff56d14ab8/4/.yarn/berry/cache/@babel-plugin-syntax-json-strings-npm-7.8.3-6dc7848179-10c0.zip/node_modules/@babel/plugin-syntax-json-strings/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-json-strings", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-json-strings-virtual-389345b918/4/.yarn/berry/cache/@babel-plugin-syntax-json-strings-npm-7.8.3-6dc7848179-10c0.zip/node_modules/@babel/plugin-syntax-json-strings/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-json-strings", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-jsx", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-jsx-npm-7.27.1-2f6039b8f0-10c0.zip/node_modules/@babel/plugin-syntax-jsx/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-jsx", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:052de7ae97c223e584de278807e78334b8208788fbec8f7787702dbb0606bbcef4558098868025ee5d5fb21679b84abb154ab06f42969dc884fcda1b084f35e0#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-jsx-virtual-6ab270adb8/4/.yarn/berry/cache/@babel-plugin-syntax-jsx-npm-7.27.1-2f6039b8f0-10c0.zip/node_modules/@babel/plugin-syntax-jsx/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-jsx", "virtual:052de7ae97c223e584de278807e78334b8208788fbec8f7787702dbb0606bbcef4558098868025ee5d5fb21679b84abb154ab06f42969dc884fcda1b084f35e0#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-logical-assignment-operators", [\ + ["npm:7.10.4", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-logical-assignment-operators-npm-7.10.4-72ae00fdf6-10c0.zip/node_modules/@babel/plugin-syntax-logical-assignment-operators/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-logical-assignment-operators", "npm:7.10.4"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.10.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-logical-assignment-operators-virtual-2c22f9a093/4/.yarn/berry/cache/@babel-plugin-syntax-logical-assignment-operators-npm-7.10.4-72ae00fdf6-10c0.zip/node_modules/@babel/plugin-syntax-logical-assignment-operators/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-logical-assignment-operators", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.10.4"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.10.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-logical-assignment-operators-virtual-4b110f3ef4/4/.yarn/berry/cache/@babel-plugin-syntax-logical-assignment-operators-npm-7.10.4-72ae00fdf6-10c0.zip/node_modules/@babel/plugin-syntax-logical-assignment-operators/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-logical-assignment-operators", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.10.4"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.10.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-logical-assignment-operators-virtual-ceebd34ce8/4/.yarn/berry/cache/@babel-plugin-syntax-logical-assignment-operators-npm-7.10.4-72ae00fdf6-10c0.zip/node_modules/@babel/plugin-syntax-logical-assignment-operators/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-logical-assignment-operators", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.10.4"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-nullish-coalescing-operator", [\ + ["npm:7.8.3", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-nullish-coalescing-operator-npm-7.8.3-8a723173b5-10c0.zip/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-nullish-coalescing-operator", "npm:7.8.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-nullish-coalescing-operator-virtual-d278b72de0/4/.yarn/berry/cache/@babel-plugin-syntax-nullish-coalescing-operator-npm-7.8.3-8a723173b5-10c0.zip/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-nullish-coalescing-operator", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-nullish-coalescing-operator-virtual-680f9ed5bd/4/.yarn/berry/cache/@babel-plugin-syntax-nullish-coalescing-operator-npm-7.8.3-8a723173b5-10c0.zip/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-nullish-coalescing-operator", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-nullish-coalescing-operator-virtual-d79a6cfa64/4/.yarn/berry/cache/@babel-plugin-syntax-nullish-coalescing-operator-npm-7.8.3-8a723173b5-10c0.zip/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-nullish-coalescing-operator", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-numeric-separator", [\ + ["npm:7.10.4", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-numeric-separator-npm-7.10.4-81444be605-10c0.zip/node_modules/@babel/plugin-syntax-numeric-separator/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-numeric-separator", "npm:7.10.4"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.10.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-numeric-separator-virtual-bb07019246/4/.yarn/berry/cache/@babel-plugin-syntax-numeric-separator-npm-7.10.4-81444be605-10c0.zip/node_modules/@babel/plugin-syntax-numeric-separator/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-numeric-separator", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.10.4"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.10.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-numeric-separator-virtual-b4da7b3ea7/4/.yarn/berry/cache/@babel-plugin-syntax-numeric-separator-npm-7.10.4-81444be605-10c0.zip/node_modules/@babel/plugin-syntax-numeric-separator/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-numeric-separator", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.10.4"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.10.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-numeric-separator-virtual-5b8cce61ca/4/.yarn/berry/cache/@babel-plugin-syntax-numeric-separator-npm-7.10.4-81444be605-10c0.zip/node_modules/@babel/plugin-syntax-numeric-separator/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-numeric-separator", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.10.4"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-object-rest-spread", [\ + ["npm:7.8.3", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-object-rest-spread-npm-7.8.3-60bd05b6ae-10c0.zip/node_modules/@babel/plugin-syntax-object-rest-spread/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-object-rest-spread", "npm:7.8.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-object-rest-spread-virtual-ab0cfa15a0/4/.yarn/berry/cache/@babel-plugin-syntax-object-rest-spread-npm-7.8.3-60bd05b6ae-10c0.zip/node_modules/@babel/plugin-syntax-object-rest-spread/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-object-rest-spread", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-object-rest-spread-virtual-404186fe9d/4/.yarn/berry/cache/@babel-plugin-syntax-object-rest-spread-npm-7.8.3-60bd05b6ae-10c0.zip/node_modules/@babel/plugin-syntax-object-rest-spread/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-object-rest-spread", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-object-rest-spread-virtual-5f1c5af13b/4/.yarn/berry/cache/@babel-plugin-syntax-object-rest-spread-npm-7.8.3-60bd05b6ae-10c0.zip/node_modules/@babel/plugin-syntax-object-rest-spread/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-object-rest-spread", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-optional-catch-binding", [\ + ["npm:7.8.3", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-optional-catch-binding-npm-7.8.3-ce337427d8-10c0.zip/node_modules/@babel/plugin-syntax-optional-catch-binding/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-optional-catch-binding", "npm:7.8.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-optional-catch-binding-virtual-d3062e2eda/4/.yarn/berry/cache/@babel-plugin-syntax-optional-catch-binding-npm-7.8.3-ce337427d8-10c0.zip/node_modules/@babel/plugin-syntax-optional-catch-binding/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-optional-catch-binding", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-optional-catch-binding-virtual-0d60ebb83f/4/.yarn/berry/cache/@babel-plugin-syntax-optional-catch-binding-npm-7.8.3-ce337427d8-10c0.zip/node_modules/@babel/plugin-syntax-optional-catch-binding/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-optional-catch-binding", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-optional-catch-binding-virtual-50275f423c/4/.yarn/berry/cache/@babel-plugin-syntax-optional-catch-binding-npm-7.8.3-ce337427d8-10c0.zip/node_modules/@babel/plugin-syntax-optional-catch-binding/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-optional-catch-binding", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-optional-chaining", [\ + ["npm:7.8.3", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-optional-chaining-npm-7.8.3-f3f3c79579-10c0.zip/node_modules/@babel/plugin-syntax-optional-chaining/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-optional-chaining", "npm:7.8.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-optional-chaining-virtual-688e0ec0c0/4/.yarn/berry/cache/@babel-plugin-syntax-optional-chaining-npm-7.8.3-f3f3c79579-10c0.zip/node_modules/@babel/plugin-syntax-optional-chaining/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-optional-chaining", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-optional-chaining-virtual-b4a24881ae/4/.yarn/berry/cache/@babel-plugin-syntax-optional-chaining-npm-7.8.3-f3f3c79579-10c0.zip/node_modules/@babel/plugin-syntax-optional-chaining/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-optional-chaining", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-optional-chaining-virtual-b40264a04a/4/.yarn/berry/cache/@babel-plugin-syntax-optional-chaining-npm-7.8.3-f3f3c79579-10c0.zip/node_modules/@babel/plugin-syntax-optional-chaining/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-optional-chaining", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-private-property-in-object", [\ + ["npm:7.14.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-private-property-in-object-npm-7.14.5-ee837fdbb2-10c0.zip/node_modules/@babel/plugin-syntax-private-property-in-object/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-private-property-in-object", "npm:7.14.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.14.5", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-private-property-in-object-virtual-c187e81816/4/.yarn/berry/cache/@babel-plugin-syntax-private-property-in-object-npm-7.14.5-ee837fdbb2-10c0.zip/node_modules/@babel/plugin-syntax-private-property-in-object/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-private-property-in-object", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.14.5"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.14.5", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-private-property-in-object-virtual-6adeb6d040/4/.yarn/berry/cache/@babel-plugin-syntax-private-property-in-object-npm-7.14.5-ee837fdbb2-10c0.zip/node_modules/@babel/plugin-syntax-private-property-in-object/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-private-property-in-object", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.14.5"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.14.5", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-private-property-in-object-virtual-8b2384c6cb/4/.yarn/berry/cache/@babel-plugin-syntax-private-property-in-object-npm-7.14.5-ee837fdbb2-10c0.zip/node_modules/@babel/plugin-syntax-private-property-in-object/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-private-property-in-object", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.14.5"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-top-level-await", [\ + ["npm:7.14.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-top-level-await-npm-7.14.5-60a0a2e83b-10c0.zip/node_modules/@babel/plugin-syntax-top-level-await/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-top-level-await", "npm:7.14.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.14.5", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-top-level-await-virtual-3e5bbad390/4/.yarn/berry/cache/@babel-plugin-syntax-top-level-await-npm-7.14.5-60a0a2e83b-10c0.zip/node_modules/@babel/plugin-syntax-top-level-await/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-top-level-await", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.14.5"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.14.5", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-top-level-await-virtual-c5c5363fb4/4/.yarn/berry/cache/@babel-plugin-syntax-top-level-await-npm-7.14.5-60a0a2e83b-10c0.zip/node_modules/@babel/plugin-syntax-top-level-await/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-top-level-await", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.14.5"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.14.5", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-top-level-await-virtual-2c3c3d3ecc/4/.yarn/berry/cache/@babel-plugin-syntax-top-level-await-npm-7.14.5-60a0a2e83b-10c0.zip/node_modules/@babel/plugin-syntax-top-level-await/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-top-level-await", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.14.5"],\ + ["@types/babel__core", "npm:7.20.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-typescript", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-typescript-npm-7.27.1-5d60015570-10c0.zip/node_modules/@babel/plugin-syntax-typescript/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-typescript", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:052de7ae97c223e584de278807e78334b8208788fbec8f7787702dbb0606bbcef4558098868025ee5d5fb21679b84abb154ab06f42969dc884fcda1b084f35e0#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-typescript-virtual-a61e77fbfd/4/.yarn/berry/cache/@babel-plugin-syntax-typescript-npm-7.27.1-5d60015570-10c0.zip/node_modules/@babel/plugin-syntax-typescript/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-typescript", "virtual:052de7ae97c223e584de278807e78334b8208788fbec8f7787702dbb0606bbcef4558098868025ee5d5fb21679b84abb154ab06f42969dc884fcda1b084f35e0#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-unicode-sets-regex", [\ + ["npm:7.18.6", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-syntax-unicode-sets-regex-npm-7.18.6-b618a36bfd-10c0.zip/node_modules/@babel/plugin-syntax-unicode-sets-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-unicode-sets-regex", "npm:7.18.6"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.18.6", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-unicode-sets-regex-virtual-edebc3d427/4/.yarn/berry/cache/@babel-plugin-syntax-unicode-sets-regex-npm-7.18.6-b618a36bfd-10c0.zip/node_modules/@babel/plugin-syntax-unicode-sets-regex/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:edebc3d427a08c9449b925cc9699a7885cee57b4df753cdbec68b6068e0c9d373a0e3c92e83184eeec46c05a6b193887e9f51648a0d83a3d5f327b464553c21e#npm:7.27.1"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-syntax-unicode-sets-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.18.6"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-arrow-functions", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-arrow-functions-npm-7.27.1-fa40ddd46f-10c0.zip/node_modules/@babel/plugin-transform-arrow-functions/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-arrow-functions", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-arrow-functions-virtual-b378436cd3/4/.yarn/berry/cache/@babel-plugin-transform-arrow-functions-npm-7.27.1-fa40ddd46f-10c0.zip/node_modules/@babel/plugin-transform-arrow-functions/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-arrow-functions", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-async-generator-functions", [\ + ["npm:7.28.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-async-generator-functions-npm-7.28.0-4436f2d50f-10c0.zip/node_modules/@babel/plugin-transform-async-generator-functions/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-async-generator-functions", "npm:7.28.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-async-generator-functions-virtual-28d42cf444/4/.yarn/berry/cache/@babel-plugin-transform-async-generator-functions-npm-7.28.0-4436f2d50f-10c0.zip/node_modules/@babel/plugin-transform-async-generator-functions/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/helper-remap-async-to-generator", "virtual:28d42cf444e4e97b32a16bbe8f417cdd52860786da2aaea09062f57fbee797235add785d26a1580ba60770e1c5d359725d3131de15bf79a13bb1b7acfcc6d425#npm:7.27.1"],\ + ["@babel/plugin-transform-async-generator-functions", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-async-to-generator", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-async-to-generator-npm-7.27.1-033d1809c3-10c0.zip/node_modules/@babel/plugin-transform-async-to-generator/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-async-to-generator", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-async-to-generator-virtual-9a31e0b688/4/.yarn/berry/cache/@babel-plugin-transform-async-to-generator-npm-7.27.1-033d1809c3-10c0.zip/node_modules/@babel/plugin-transform-async-to-generator/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-module-imports", "npm:7.27.1"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/helper-remap-async-to-generator", "virtual:28d42cf444e4e97b32a16bbe8f417cdd52860786da2aaea09062f57fbee797235add785d26a1580ba60770e1c5d359725d3131de15bf79a13bb1b7acfcc6d425#npm:7.27.1"],\ + ["@babel/plugin-transform-async-to-generator", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-block-scoped-functions", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-block-scoped-functions-npm-7.27.1-c6d66f6e50-10c0.zip/node_modules/@babel/plugin-transform-block-scoped-functions/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-block-scoped-functions", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-block-scoped-functions-virtual-320e752493/4/.yarn/berry/cache/@babel-plugin-transform-block-scoped-functions-npm-7.27.1-c6d66f6e50-10c0.zip/node_modules/@babel/plugin-transform-block-scoped-functions/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-block-scoped-functions", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-block-scoping", [\ + ["npm:7.28.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-block-scoping-npm-7.28.0-a08eef2c22-10c0.zip/node_modules/@babel/plugin-transform-block-scoping/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-block-scoping", "npm:7.28.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-block-scoping-virtual-c6fcec4f46/4/.yarn/berry/cache/@babel-plugin-transform-block-scoping-npm-7.28.0-a08eef2c22-10c0.zip/node_modules/@babel/plugin-transform-block-scoping/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-block-scoping", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-class-properties", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-class-properties-npm-7.27.1-f08223baf6-10c0.zip/node_modules/@babel/plugin-transform-class-properties/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-class-properties", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-class-properties-virtual-8d0b7bb4c3/4/.yarn/berry/cache/@babel-plugin-transform-class-properties-npm-7.27.1-f08223baf6-10c0.zip/node_modules/@babel/plugin-transform-class-properties/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-create-class-features-plugin", "virtual:8d0b7bb4c3ea10c62e6c3f2acfcd472ec23d6b4725225001b718fb681d4e40da39060b2ab8e0ab31b51e4e734abf2a3de1a4331088e18ba20329446113440a16#npm:7.27.1"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-class-properties", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-class-static-block", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-class-static-block-npm-7.27.1-a1a8a0d79f-10c0.zip/node_modules/@babel/plugin-transform-class-static-block/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-class-static-block", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-class-static-block-virtual-e5f8aa082e/4/.yarn/berry/cache/@babel-plugin-transform-class-static-block-npm-7.27.1-a1a8a0d79f-10c0.zip/node_modules/@babel/plugin-transform-class-static-block/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-create-class-features-plugin", "virtual:8d0b7bb4c3ea10c62e6c3f2acfcd472ec23d6b4725225001b718fb681d4e40da39060b2ab8e0ab31b51e4e734abf2a3de1a4331088e18ba20329446113440a16#npm:7.27.1"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-class-static-block", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-classes", [\ + ["npm:7.28.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-classes-npm-7.28.0-3815bda6ff-10c0.zip/node_modules/@babel/plugin-transform-classes/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-classes", "npm:7.28.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-classes-virtual-59ce6d7690/4/.yarn/berry/cache/@babel-plugin-transform-classes-npm-7.28.0-3815bda6ff-10c0.zip/node_modules/@babel/plugin-transform-classes/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-annotate-as-pure", "npm:7.27.3"],\ + ["@babel/helper-compilation-targets", "npm:7.27.2"],\ + ["@babel/helper-globals", "npm:7.28.0"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/helper-replace-supers", "virtual:b796a245a74eb6f32557f40dea8aa4676b11b126f58a76b1ba334ea43621d18b49deff4d35c28c3193a7490fd874530f043dff6dd900140b63bb2c02d3a0e7d4#npm:7.27.1"],\ + ["@babel/plugin-transform-classes", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-computed-properties", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-computed-properties-npm-7.27.1-ff3d364d1c-10c0.zip/node_modules/@babel/plugin-transform-computed-properties/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-computed-properties", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-computed-properties-virtual-24b2811ef5/4/.yarn/berry/cache/@babel-plugin-transform-computed-properties-npm-7.27.1-ff3d364d1c-10c0.zip/node_modules/@babel/plugin-transform-computed-properties/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-computed-properties", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/template", "npm:7.27.2"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-destructuring", [\ + ["npm:7.28.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-destructuring-npm-7.28.0-f13a1b7c68-10c0.zip/node_modules/@babel/plugin-transform-destructuring/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-destructuring", "npm:7.28.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-destructuring-virtual-fe8e2a6924/4/.yarn/berry/cache/@babel-plugin-transform-destructuring-npm-7.28.0-f13a1b7c68-10c0.zip/node_modules/@babel/plugin-transform-destructuring/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-destructuring", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-dotall-regex", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-dotall-regex-npm-7.27.1-cda1a36d12-10c0.zip/node_modules/@babel/plugin-transform-dotall-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-dotall-regex", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-dotall-regex-virtual-b21085e772/4/.yarn/berry/cache/@babel-plugin-transform-dotall-regex-npm-7.27.1-cda1a36d12-10c0.zip/node_modules/@babel/plugin-transform-dotall-regex/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:edebc3d427a08c9449b925cc9699a7885cee57b4df753cdbec68b6068e0c9d373a0e3c92e83184eeec46c05a6b193887e9f51648a0d83a3d5f327b464553c21e#npm:7.27.1"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-dotall-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-duplicate-keys", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-duplicate-keys-npm-7.27.1-0b21c3b329-10c0.zip/node_modules/@babel/plugin-transform-duplicate-keys/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-duplicate-keys", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-duplicate-keys-virtual-d34baf3c09/4/.yarn/berry/cache/@babel-plugin-transform-duplicate-keys-npm-7.27.1-0b21c3b329-10c0.zip/node_modules/@babel/plugin-transform-duplicate-keys/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-duplicate-keys", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-duplicate-named-capturing-groups-regex", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-duplicate-named-capturing-groups-regex-npm-7.27.1-17e5efed8f-10c0.zip/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-duplicate-named-capturing-groups-regex", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-duplicate-named-capturing-groups-regex-virtual-d7a1046120/4/.yarn/berry/cache/@babel-plugin-transform-duplicate-named-capturing-groups-regex-npm-7.27.1-17e5efed8f-10c0.zip/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:edebc3d427a08c9449b925cc9699a7885cee57b4df753cdbec68b6068e0c9d373a0e3c92e83184eeec46c05a6b193887e9f51648a0d83a3d5f327b464553c21e#npm:7.27.1"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-duplicate-named-capturing-groups-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-dynamic-import", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-dynamic-import-npm-7.27.1-ae3564e9cd-10c0.zip/node_modules/@babel/plugin-transform-dynamic-import/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-dynamic-import", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-dynamic-import-virtual-c08d564dc0/4/.yarn/berry/cache/@babel-plugin-transform-dynamic-import-npm-7.27.1-ae3564e9cd-10c0.zip/node_modules/@babel/plugin-transform-dynamic-import/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-dynamic-import", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-explicit-resource-management", [\ + ["npm:7.28.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-explicit-resource-management-npm-7.28.0-8a17cc633d-10c0.zip/node_modules/@babel/plugin-transform-explicit-resource-management/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-explicit-resource-management", "npm:7.28.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-explicit-resource-management-virtual-2536d71fda/4/.yarn/berry/cache/@babel-plugin-transform-explicit-resource-management-npm-7.28.0-8a17cc633d-10c0.zip/node_modules/@babel/plugin-transform-explicit-resource-management/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-destructuring", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0"],\ + ["@babel/plugin-transform-explicit-resource-management", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-exponentiation-operator", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-exponentiation-operator-npm-7.27.1-ce51b745ac-10c0.zip/node_modules/@babel/plugin-transform-exponentiation-operator/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-exponentiation-operator", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-exponentiation-operator-virtual-c31f0dbb28/4/.yarn/berry/cache/@babel-plugin-transform-exponentiation-operator-npm-7.27.1-ce51b745ac-10c0.zip/node_modules/@babel/plugin-transform-exponentiation-operator/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-exponentiation-operator", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-export-namespace-from", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-export-namespace-from-npm-7.27.1-584dda771c-10c0.zip/node_modules/@babel/plugin-transform-export-namespace-from/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-export-namespace-from", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-export-namespace-from-virtual-6060b227fb/4/.yarn/berry/cache/@babel-plugin-transform-export-namespace-from-npm-7.27.1-584dda771c-10c0.zip/node_modules/@babel/plugin-transform-export-namespace-from/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-export-namespace-from", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-for-of", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-for-of-npm-7.27.1-57bb1bd6d3-10c0.zip/node_modules/@babel/plugin-transform-for-of/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-for-of", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-for-of-virtual-150a7c2f41/4/.yarn/berry/cache/@babel-plugin-transform-for-of-npm-7.27.1-57bb1bd6d3-10c0.zip/node_modules/@babel/plugin-transform-for-of/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/helper-skip-transparent-expression-wrappers", "npm:7.27.1"],\ + ["@babel/plugin-transform-for-of", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-function-name", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-function-name-npm-7.27.1-ed7f7430eb-10c0.zip/node_modules/@babel/plugin-transform-function-name/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-function-name", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-function-name-virtual-e5db299896/4/.yarn/berry/cache/@babel-plugin-transform-function-name-npm-7.27.1-ed7f7430eb-10c0.zip/node_modules/@babel/plugin-transform-function-name/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-compilation-targets", "npm:7.27.2"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-function-name", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-json-strings", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-json-strings-npm-7.27.1-65f3c4eee2-10c0.zip/node_modules/@babel/plugin-transform-json-strings/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-json-strings", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-json-strings-virtual-44f3f9ec52/4/.yarn/berry/cache/@babel-plugin-transform-json-strings-npm-7.27.1-65f3c4eee2-10c0.zip/node_modules/@babel/plugin-transform-json-strings/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-json-strings", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-literals", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-literals-npm-7.27.1-16084b62dc-10c0.zip/node_modules/@babel/plugin-transform-literals/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-literals", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-literals-virtual-5db4f0fef4/4/.yarn/berry/cache/@babel-plugin-transform-literals-npm-7.27.1-16084b62dc-10c0.zip/node_modules/@babel/plugin-transform-literals/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-literals", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-logical-assignment-operators", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-logical-assignment-operators-npm-7.27.1-b46ecdb249-10c0.zip/node_modules/@babel/plugin-transform-logical-assignment-operators/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-logical-assignment-operators", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-logical-assignment-operators-virtual-01df38e8b5/4/.yarn/berry/cache/@babel-plugin-transform-logical-assignment-operators-npm-7.27.1-b46ecdb249-10c0.zip/node_modules/@babel/plugin-transform-logical-assignment-operators/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-logical-assignment-operators", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-member-expression-literals", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-member-expression-literals-npm-7.27.1-2d8a23c4c7-10c0.zip/node_modules/@babel/plugin-transform-member-expression-literals/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-member-expression-literals", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-member-expression-literals-virtual-911073d2b2/4/.yarn/berry/cache/@babel-plugin-transform-member-expression-literals-npm-7.27.1-2d8a23c4c7-10c0.zip/node_modules/@babel/plugin-transform-member-expression-literals/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-member-expression-literals", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-modules-amd", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-modules-amd-npm-7.27.1-dbd9a5ef9f-10c0.zip/node_modules/@babel/plugin-transform-modules-amd/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-modules-amd", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-modules-amd-virtual-b7456b070c/4/.yarn/berry/cache/@babel-plugin-transform-modules-amd-npm-7.27.1-dbd9a5ef9f-10c0.zip/node_modules/@babel/plugin-transform-modules-amd/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-module-transforms", "virtual:b7456b070c3012b847a1a56a3e4fd8300f9cc96874a64769b21b2d4976d3356549cd7773191b60ec523e868f2fd6cbef6dca7e0536e21d6eec9c9fa743629996#npm:7.27.3"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-modules-amd", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-modules-commonjs", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-modules-commonjs-npm-7.27.1-2ad2271dea-10c0.zip/node_modules/@babel/plugin-transform-modules-commonjs/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-modules-commonjs", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-modules-commonjs-virtual-4002cf362c/4/.yarn/berry/cache/@babel-plugin-transform-modules-commonjs-npm-7.27.1-2ad2271dea-10c0.zip/node_modules/@babel/plugin-transform-modules-commonjs/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-module-transforms", "virtual:b7456b070c3012b847a1a56a3e4fd8300f9cc96874a64769b21b2d4976d3356549cd7773191b60ec523e868f2fd6cbef6dca7e0536e21d6eec9c9fa743629996#npm:7.27.3"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-modules-commonjs", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-modules-systemjs", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-modules-systemjs-npm-7.27.1-8b05b5a514-10c0.zip/node_modules/@babel/plugin-transform-modules-systemjs/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-modules-systemjs", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-modules-systemjs-virtual-fcbff6e8ff/4/.yarn/berry/cache/@babel-plugin-transform-modules-systemjs-npm-7.27.1-8b05b5a514-10c0.zip/node_modules/@babel/plugin-transform-modules-systemjs/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-module-transforms", "virtual:b7456b070c3012b847a1a56a3e4fd8300f9cc96874a64769b21b2d4976d3356549cd7773191b60ec523e868f2fd6cbef6dca7e0536e21d6eec9c9fa743629996#npm:7.27.3"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/helper-validator-identifier", "npm:7.27.1"],\ + ["@babel/plugin-transform-modules-systemjs", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-modules-umd", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-modules-umd-npm-7.27.1-b62536925c-10c0.zip/node_modules/@babel/plugin-transform-modules-umd/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-modules-umd", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-modules-umd-virtual-7fd14d70a1/4/.yarn/berry/cache/@babel-plugin-transform-modules-umd-npm-7.27.1-b62536925c-10c0.zip/node_modules/@babel/plugin-transform-modules-umd/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-module-transforms", "virtual:b7456b070c3012b847a1a56a3e4fd8300f9cc96874a64769b21b2d4976d3356549cd7773191b60ec523e868f2fd6cbef6dca7e0536e21d6eec9c9fa743629996#npm:7.27.3"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-modules-umd", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-named-capturing-groups-regex", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-named-capturing-groups-regex-npm-7.27.1-12b8abead5-10c0.zip/node_modules/@babel/plugin-transform-named-capturing-groups-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-named-capturing-groups-regex", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-named-capturing-groups-regex-virtual-dc21c9de9f/4/.yarn/berry/cache/@babel-plugin-transform-named-capturing-groups-regex-npm-7.27.1-12b8abead5-10c0.zip/node_modules/@babel/plugin-transform-named-capturing-groups-regex/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:edebc3d427a08c9449b925cc9699a7885cee57b4df753cdbec68b6068e0c9d373a0e3c92e83184eeec46c05a6b193887e9f51648a0d83a3d5f327b464553c21e#npm:7.27.1"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-named-capturing-groups-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-new-target", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-new-target-npm-7.27.1-93bf8bdaef-10c0.zip/node_modules/@babel/plugin-transform-new-target/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-new-target", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-new-target-virtual-63bddc5a79/4/.yarn/berry/cache/@babel-plugin-transform-new-target-npm-7.27.1-93bf8bdaef-10c0.zip/node_modules/@babel/plugin-transform-new-target/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-new-target", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-nullish-coalescing-operator", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-nullish-coalescing-operator-npm-7.27.1-3a841ec416-10c0.zip/node_modules/@babel/plugin-transform-nullish-coalescing-operator/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-nullish-coalescing-operator", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-nullish-coalescing-operator-virtual-5e1715d71b/4/.yarn/berry/cache/@babel-plugin-transform-nullish-coalescing-operator-npm-7.27.1-3a841ec416-10c0.zip/node_modules/@babel/plugin-transform-nullish-coalescing-operator/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-nullish-coalescing-operator", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-numeric-separator", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-numeric-separator-npm-7.27.1-a8403cac09-10c0.zip/node_modules/@babel/plugin-transform-numeric-separator/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-numeric-separator", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-numeric-separator-virtual-5d67ccb84b/4/.yarn/berry/cache/@babel-plugin-transform-numeric-separator-npm-7.27.1-a8403cac09-10c0.zip/node_modules/@babel/plugin-transform-numeric-separator/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-numeric-separator", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-object-rest-spread", [\ + ["npm:7.28.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-object-rest-spread-npm-7.28.0-7aa5a9958a-10c0.zip/node_modules/@babel/plugin-transform-object-rest-spread/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-object-rest-spread", "npm:7.28.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-object-rest-spread-virtual-9818c728d3/4/.yarn/berry/cache/@babel-plugin-transform-object-rest-spread-npm-7.28.0-7aa5a9958a-10c0.zip/node_modules/@babel/plugin-transform-object-rest-spread/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-compilation-targets", "npm:7.27.2"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-destructuring", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0"],\ + ["@babel/plugin-transform-object-rest-spread", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0"],\ + ["@babel/plugin-transform-parameters", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.7"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-object-super", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-object-super-npm-7.27.1-1268b11683-10c0.zip/node_modules/@babel/plugin-transform-object-super/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-object-super", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-object-super-virtual-f9e598c637/4/.yarn/berry/cache/@babel-plugin-transform-object-super-npm-7.27.1-1268b11683-10c0.zip/node_modules/@babel/plugin-transform-object-super/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/helper-replace-supers", "virtual:b796a245a74eb6f32557f40dea8aa4676b11b126f58a76b1ba334ea43621d18b49deff4d35c28c3193a7490fd874530f043dff6dd900140b63bb2c02d3a0e7d4#npm:7.27.1"],\ + ["@babel/plugin-transform-object-super", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-optional-catch-binding", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-optional-catch-binding-npm-7.27.1-5810c95838-10c0.zip/node_modules/@babel/plugin-transform-optional-catch-binding/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-optional-catch-binding", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-optional-catch-binding-virtual-fd0d07f333/4/.yarn/berry/cache/@babel-plugin-transform-optional-catch-binding-npm-7.27.1-5810c95838-10c0.zip/node_modules/@babel/plugin-transform-optional-catch-binding/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-optional-catch-binding", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-optional-chaining", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-optional-chaining-npm-7.27.1-6a18b9cc63-10c0.zip/node_modules/@babel/plugin-transform-optional-chaining/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-optional-chaining", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-optional-chaining-virtual-6bf5b5af2e/4/.yarn/berry/cache/@babel-plugin-transform-optional-chaining-npm-7.27.1-6a18b9cc63-10c0.zip/node_modules/@babel/plugin-transform-optional-chaining/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/helper-skip-transparent-expression-wrappers", "npm:7.27.1"],\ + ["@babel/plugin-transform-optional-chaining", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-parameters", [\ + ["npm:7.27.7", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-parameters-npm-7.27.7-b002e2d6ef-10c0.zip/node_modules/@babel/plugin-transform-parameters/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-parameters", "npm:7.27.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-parameters-virtual-15a4a82e36/4/.yarn/berry/cache/@babel-plugin-transform-parameters-npm-7.27.7-b002e2d6ef-10c0.zip/node_modules/@babel/plugin-transform-parameters/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-parameters", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.7"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-private-methods", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-private-methods-npm-7.27.1-71100e51a7-10c0.zip/node_modules/@babel/plugin-transform-private-methods/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-private-methods", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-private-methods-virtual-a8b005d863/4/.yarn/berry/cache/@babel-plugin-transform-private-methods-npm-7.27.1-71100e51a7-10c0.zip/node_modules/@babel/plugin-transform-private-methods/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-create-class-features-plugin", "virtual:8d0b7bb4c3ea10c62e6c3f2acfcd472ec23d6b4725225001b718fb681d4e40da39060b2ab8e0ab31b51e4e734abf2a3de1a4331088e18ba20329446113440a16#npm:7.27.1"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-private-methods", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-private-property-in-object", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-private-property-in-object-npm-7.27.1-b7636d14a5-10c0.zip/node_modules/@babel/plugin-transform-private-property-in-object/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-private-property-in-object", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-private-property-in-object-virtual-5ba307be51/4/.yarn/berry/cache/@babel-plugin-transform-private-property-in-object-npm-7.27.1-b7636d14a5-10c0.zip/node_modules/@babel/plugin-transform-private-property-in-object/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-annotate-as-pure", "npm:7.27.3"],\ + ["@babel/helper-create-class-features-plugin", "virtual:8d0b7bb4c3ea10c62e6c3f2acfcd472ec23d6b4725225001b718fb681d4e40da39060b2ab8e0ab31b51e4e734abf2a3de1a4331088e18ba20329446113440a16#npm:7.27.1"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-private-property-in-object", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-property-literals", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-property-literals-npm-7.27.1-608e9f0cae-10c0.zip/node_modules/@babel/plugin-transform-property-literals/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-property-literals", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-property-literals-virtual-c9b7a0fffa/4/.yarn/berry/cache/@babel-plugin-transform-property-literals-npm-7.27.1-608e9f0cae-10c0.zip/node_modules/@babel/plugin-transform-property-literals/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-property-literals", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-regenerator", [\ + ["npm:7.28.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-regenerator-npm-7.28.1-2cc4798981-10c0.zip/node_modules/@babel/plugin-transform-regenerator/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-regenerator", "npm:7.28.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-regenerator-virtual-334558eaf0/4/.yarn/berry/cache/@babel-plugin-transform-regenerator-npm-7.28.1-2cc4798981-10c0.zip/node_modules/@babel/plugin-transform-regenerator/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-regenerator", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-regexp-modifiers", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-regexp-modifiers-npm-7.27.1-cee91a1fcf-10c0.zip/node_modules/@babel/plugin-transform-regexp-modifiers/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-regexp-modifiers", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-regexp-modifiers-virtual-6379676e01/4/.yarn/berry/cache/@babel-plugin-transform-regexp-modifiers-npm-7.27.1-cee91a1fcf-10c0.zip/node_modules/@babel/plugin-transform-regexp-modifiers/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:edebc3d427a08c9449b925cc9699a7885cee57b4df753cdbec68b6068e0c9d373a0e3c92e83184eeec46c05a6b193887e9f51648a0d83a3d5f327b464553c21e#npm:7.27.1"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-regexp-modifiers", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-reserved-words", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-reserved-words-npm-7.27.1-da9ded5cec-10c0.zip/node_modules/@babel/plugin-transform-reserved-words/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-reserved-words", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-reserved-words-virtual-6e5f64776a/4/.yarn/berry/cache/@babel-plugin-transform-reserved-words-npm-7.27.1-da9ded5cec-10c0.zip/node_modules/@babel/plugin-transform-reserved-words/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-reserved-words", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-shorthand-properties", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-shorthand-properties-npm-7.27.1-114632891f-10c0.zip/node_modules/@babel/plugin-transform-shorthand-properties/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-shorthand-properties", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-shorthand-properties-virtual-90e6f71ebb/4/.yarn/berry/cache/@babel-plugin-transform-shorthand-properties-npm-7.27.1-114632891f-10c0.zip/node_modules/@babel/plugin-transform-shorthand-properties/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-shorthand-properties", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-spread", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-spread-npm-7.27.1-93b5426802-10c0.zip/node_modules/@babel/plugin-transform-spread/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-spread", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-spread-virtual-68ac4fe708/4/.yarn/berry/cache/@babel-plugin-transform-spread-npm-7.27.1-93b5426802-10c0.zip/node_modules/@babel/plugin-transform-spread/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/helper-skip-transparent-expression-wrappers", "npm:7.27.1"],\ + ["@babel/plugin-transform-spread", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-sticky-regex", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-sticky-regex-npm-7.27.1-e0308c6eee-10c0.zip/node_modules/@babel/plugin-transform-sticky-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-sticky-regex", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-sticky-regex-virtual-c6fb2f9fff/4/.yarn/berry/cache/@babel-plugin-transform-sticky-regex-npm-7.27.1-e0308c6eee-10c0.zip/node_modules/@babel/plugin-transform-sticky-regex/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-sticky-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-template-literals", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-template-literals-npm-7.27.1-e8a9aeaebf-10c0.zip/node_modules/@babel/plugin-transform-template-literals/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-template-literals", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-template-literals-virtual-4cb7fc212a/4/.yarn/berry/cache/@babel-plugin-transform-template-literals-npm-7.27.1-e8a9aeaebf-10c0.zip/node_modules/@babel/plugin-transform-template-literals/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-template-literals", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-typeof-symbol", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-typeof-symbol-npm-7.27.1-56795eb29a-10c0.zip/node_modules/@babel/plugin-transform-typeof-symbol/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-typeof-symbol", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-typeof-symbol-virtual-47da55d022/4/.yarn/berry/cache/@babel-plugin-transform-typeof-symbol-npm-7.27.1-56795eb29a-10c0.zip/node_modules/@babel/plugin-transform-typeof-symbol/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-typeof-symbol", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-unicode-escapes", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-unicode-escapes-npm-7.27.1-61a6253b0b-10c0.zip/node_modules/@babel/plugin-transform-unicode-escapes/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-unicode-escapes", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-unicode-escapes-virtual-6ab23f6b76/4/.yarn/berry/cache/@babel-plugin-transform-unicode-escapes-npm-7.27.1-61a6253b0b-10c0.zip/node_modules/@babel/plugin-transform-unicode-escapes/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-unicode-escapes", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-unicode-property-regex", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-unicode-property-regex-npm-7.27.1-b5fb4d5460-10c0.zip/node_modules/@babel/plugin-transform-unicode-property-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-unicode-property-regex", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-unicode-property-regex-virtual-75ef32983c/4/.yarn/berry/cache/@babel-plugin-transform-unicode-property-regex-npm-7.27.1-b5fb4d5460-10c0.zip/node_modules/@babel/plugin-transform-unicode-property-regex/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:edebc3d427a08c9449b925cc9699a7885cee57b4df753cdbec68b6068e0c9d373a0e3c92e83184eeec46c05a6b193887e9f51648a0d83a3d5f327b464553c21e#npm:7.27.1"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-unicode-property-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-unicode-regex", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-unicode-regex-npm-7.27.1-9b283ef768-10c0.zip/node_modules/@babel/plugin-transform-unicode-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-unicode-regex", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-unicode-regex-virtual-eb6fa3f48e/4/.yarn/berry/cache/@babel-plugin-transform-unicode-regex-npm-7.27.1-9b283ef768-10c0.zip/node_modules/@babel/plugin-transform-unicode-regex/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:edebc3d427a08c9449b925cc9699a7885cee57b4df753cdbec68b6068e0c9d373a0e3c92e83184eeec46c05a6b193887e9f51648a0d83a3d5f327b464553c21e#npm:7.27.1"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-unicode-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-unicode-sets-regex", [\ + ["npm:7.27.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-plugin-transform-unicode-sets-regex-npm-7.27.1-5b2c0a4c1f-10c0.zip/node_modules/@babel/plugin-transform-unicode-sets-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-unicode-sets-regex", "npm:7.27.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-unicode-sets-regex-virtual-04bc6a25ae/4/.yarn/berry/cache/@babel-plugin-transform-unicode-sets-regex-npm-7.27.1-5b2c0a4c1f-10c0.zip/node_modules/@babel/plugin-transform-unicode-sets-regex/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:edebc3d427a08c9449b925cc9699a7885cee57b4df753cdbec68b6068e0c9d373a0e3c92e83184eeec46c05a6b193887e9f51648a0d83a3d5f327b464553c21e#npm:7.27.1"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/plugin-transform-unicode-sets-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/preset-env", [\ + ["npm:7.28.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-preset-env-npm-7.28.0-964e29aeee-10c0.zip/node_modules/@babel/preset-env/",\ + "packageDependencies": [\ + ["@babel/preset-env", "npm:7.28.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:7.28.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-preset-env-virtual-f79c7a81bb/4/.yarn/berry/cache/@babel-preset-env-npm-7.28.0-964e29aeee-10c0.zip/node_modules/@babel/preset-env/",\ + "packageDependencies": [\ + ["@babel/compat-data", "npm:7.28.0"],\ + ["@babel/core", null],\ + ["@babel/helper-compilation-targets", "npm:7.27.2"],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/helper-validator-option", "npm:7.27.1"],\ + ["@babel/plugin-bugfix-firefox-class-in-computed-class-key", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-bugfix-safari-class-field-initializer-scope", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-proposal-private-property-in-object", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.21.0-placeholder-for-preset-env.2"],\ + ["@babel/plugin-syntax-import-assertions", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-syntax-import-attributes", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-syntax-unicode-sets-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.18.6"],\ + ["@babel/plugin-transform-arrow-functions", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-async-generator-functions", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0"],\ + ["@babel/plugin-transform-async-to-generator", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-block-scoped-functions", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-block-scoping", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0"],\ + ["@babel/plugin-transform-class-properties", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-class-static-block", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-classes", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0"],\ + ["@babel/plugin-transform-computed-properties", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-destructuring", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0"],\ + ["@babel/plugin-transform-dotall-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-duplicate-keys", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-duplicate-named-capturing-groups-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-dynamic-import", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-explicit-resource-management", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0"],\ + ["@babel/plugin-transform-exponentiation-operator", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-export-namespace-from", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-for-of", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-function-name", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-json-strings", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-literals", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-logical-assignment-operators", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-member-expression-literals", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-modules-amd", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-modules-commonjs", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-modules-systemjs", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-modules-umd", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-named-capturing-groups-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-new-target", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-nullish-coalescing-operator", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-numeric-separator", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-object-rest-spread", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.0"],\ + ["@babel/plugin-transform-object-super", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-optional-catch-binding", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-optional-chaining", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-parameters", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.7"],\ + ["@babel/plugin-transform-private-methods", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-private-property-in-object", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-property-literals", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-regenerator", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.28.1"],\ + ["@babel/plugin-transform-regexp-modifiers", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-reserved-words", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-shorthand-properties", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-spread", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-sticky-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-template-literals", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-typeof-symbol", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-unicode-escapes", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-unicode-property-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-unicode-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/plugin-transform-unicode-sets-regex", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:7.27.1"],\ + ["@babel/preset-env", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:7.28.0"],\ + ["@babel/preset-modules", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:0.1.6-no-external-plugins"],\ + ["@types/babel__core", null],\ + ["babel-plugin-polyfill-corejs2", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:0.4.14"],\ + ["babel-plugin-polyfill-corejs3", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:0.13.0"],\ + ["babel-plugin-polyfill-regenerator", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:0.6.5"],\ + ["core-js-compat", "npm:3.45.0"],\ + ["semver", "npm:6.3.1"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/preset-modules", [\ + ["npm:0.1.6-no-external-plugins", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-preset-modules-npm-0.1.6-no-external-plugins-0ae0b52ff3-10c0.zip/node_modules/@babel/preset-modules/",\ + "packageDependencies": [\ + ["@babel/preset-modules", "npm:0.1.6-no-external-plugins"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:0.1.6-no-external-plugins", {\ + "packageLocation": "./.yarn/__virtual__/@babel-preset-modules-virtual-0ef308bb70/4/.yarn/berry/cache/@babel-preset-modules-npm-0.1.6-no-external-plugins-0ae0b52ff3-10c0.zip/node_modules/@babel/preset-modules/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@babel/preset-modules", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:0.1.6-no-external-plugins"],\ + ["@babel/types", "npm:7.28.2"],\ + ["@types/babel__core", null],\ + ["esutils", "npm:2.0.3"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/template", [\ + ["npm:7.27.2", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-template-npm-7.27.2-77e67eabbd-10c0.zip/node_modules/@babel/template/",\ + "packageDependencies": [\ + ["@babel/code-frame", "npm:7.27.1"],\ + ["@babel/parser", "npm:7.28.0"],\ + ["@babel/template", "npm:7.27.2"],\ + ["@babel/types", "npm:7.28.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/traverse", [\ + ["npm:7.28.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-traverse-npm-7.28.0-66b3390b4e-10c0.zip/node_modules/@babel/traverse/",\ + "packageDependencies": [\ + ["@babel/code-frame", "npm:7.27.1"],\ + ["@babel/generator", "npm:7.28.0"],\ + ["@babel/helper-globals", "npm:7.28.0"],\ + ["@babel/parser", "npm:7.28.0"],\ + ["@babel/template", "npm:7.27.2"],\ + ["@babel/traverse", "npm:7.28.0"],\ + ["@babel/types", "npm:7.28.2"],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/types", [\ + ["npm:7.28.2", {\ + "packageLocation": "../../../.yarn/berry/cache/@babel-types-npm-7.28.2-9db4224804-10c0.zip/node_modules/@babel/types/",\ + "packageDependencies": [\ + ["@babel/helper-string-parser", "npm:7.27.1"],\ + ["@babel/helper-validator-identifier", "npm:7.27.1"],\ + ["@babel/types", "npm:7.28.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@bcoe/v8-coverage", [\ + ["npm:0.2.3", {\ + "packageLocation": "../../../.yarn/berry/cache/@bcoe-v8-coverage-npm-0.2.3-9e27b3c57e-10c0.zip/node_modules/@bcoe/v8-coverage/",\ + "packageDependencies": [\ + ["@bcoe/v8-coverage", "npm:0.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@emnapi/core", [\ + ["npm:1.4.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@emnapi-core-npm-1.4.5-ec124a1813-10c0.zip/node_modules/@emnapi/core/",\ + "packageDependencies": [\ + ["@emnapi/core", "npm:1.4.5"],\ + ["@emnapi/wasi-threads", "npm:1.0.4"],\ + ["tslib", "npm:2.8.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@emnapi/runtime", [\ + ["npm:1.4.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@emnapi-runtime-npm-1.4.5-3b801be1ae-10c0.zip/node_modules/@emnapi/runtime/",\ + "packageDependencies": [\ + ["@emnapi/runtime", "npm:1.4.5"],\ + ["tslib", "npm:2.8.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@emnapi/wasi-threads", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../../.yarn/berry/cache/@emnapi-wasi-threads-npm-1.0.4-ac6c94b37b-10c0.zip/node_modules/@emnapi/wasi-threads/",\ + "packageDependencies": [\ + ["@emnapi/wasi-threads", "npm:1.0.4"],\ + ["tslib", "npm:2.8.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@eslint-community/eslint-utils", [\ + ["npm:4.7.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@eslint-community-eslint-utils-npm-4.7.0-47503bfa2a-10c0.zip/node_modules/@eslint-community/eslint-utils/",\ + "packageDependencies": [\ + ["@eslint-community/eslint-utils", "npm:4.7.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:dd20287a5a1e86b12a5b04609f98bd729fafd847d08e1fc89cdc68f92d1acf209e53b09ef0af4b6e7781d88e1f9acf94e3bf34619939e434ad5ffb0f24855eb4#npm:4.7.0", {\ + "packageLocation": "./.yarn/__virtual__/@eslint-community-eslint-utils-virtual-9774fc3b41/4/.yarn/berry/cache/@eslint-community-eslint-utils-npm-4.7.0-47503bfa2a-10c0.zip/node_modules/@eslint-community/eslint-utils/",\ + "packageDependencies": [\ + ["@eslint-community/eslint-utils", "virtual:dd20287a5a1e86b12a5b04609f98bd729fafd847d08e1fc89cdc68f92d1acf209e53b09ef0af4b6e7781d88e1f9acf94e3bf34619939e434ad5ffb0f24855eb4#npm:4.7.0"],\ + ["@types/eslint", null],\ + ["eslint", "npm:8.57.1"],\ + ["eslint-visitor-keys", "npm:3.4.3"]\ + ],\ + "packagePeers": [\ + "@types/eslint",\ + "eslint"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@eslint-community/regexpp", [\ + ["npm:4.12.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@eslint-community-regexpp-npm-4.12.1-ef4ab5217e-10c0.zip/node_modules/@eslint-community/regexpp/",\ + "packageDependencies": [\ + ["@eslint-community/regexpp", "npm:4.12.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@eslint/eslintrc", [\ + ["npm:2.1.4", {\ + "packageLocation": "../../../.yarn/berry/cache/@eslint-eslintrc-npm-2.1.4-1ff4b5f908-10c0.zip/node_modules/@eslint/eslintrc/",\ + "packageDependencies": [\ + ["@eslint/eslintrc", "npm:2.1.4"],\ + ["ajv", "npm:6.12.6"],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"],\ + ["espree", "npm:9.6.1"],\ + ["globals", "npm:13.24.0"],\ + ["ignore", "npm:5.3.2"],\ + ["import-fresh", "npm:3.3.1"],\ + ["js-yaml", "npm:4.1.0"],\ + ["minimatch", "npm:3.1.2"],\ + ["strip-json-comments", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@eslint/js", [\ + ["npm:8.57.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@eslint-js-npm-8.57.1-dec269f278-10c0.zip/node_modules/@eslint/js/",\ + "packageDependencies": [\ + ["@eslint/js", "npm:8.57.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@humanwhocodes/config-array", [\ + ["npm:0.13.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@humanwhocodes-config-array-npm-0.13.0-843095a032-10c0.zip/node_modules/@humanwhocodes/config-array/",\ + "packageDependencies": [\ + ["@humanwhocodes/config-array", "npm:0.13.0"],\ + ["@humanwhocodes/object-schema", "npm:2.0.3"],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"],\ + ["minimatch", "npm:3.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@humanwhocodes/module-importer", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@humanwhocodes-module-importer-npm-1.0.1-9d07ed2e4a-10c0.zip/node_modules/@humanwhocodes/module-importer/",\ + "packageDependencies": [\ + ["@humanwhocodes/module-importer", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@humanwhocodes/object-schema", [\ + ["npm:2.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/@humanwhocodes-object-schema-npm-2.0.3-4f0e508cd9-10c0.zip/node_modules/@humanwhocodes/object-schema/",\ + "packageDependencies": [\ + ["@humanwhocodes/object-schema", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@isaacs/cliui", [\ + ["npm:8.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/@isaacs-cliui-npm-8.0.2-f4364666d5-10c0.zip/node_modules/@isaacs/cliui/",\ + "packageDependencies": [\ + ["@isaacs/cliui", "npm:8.0.2"],\ + ["string-width", "npm:5.1.2"],\ + ["string-width-cjs", [\ + "string-width",\ + "npm:4.2.3"\ + ]],\ + ["strip-ansi", "npm:7.1.0"],\ + ["strip-ansi-cjs", [\ + "strip-ansi",\ + "npm:6.0.1"\ + ]],\ + ["wrap-ansi", "npm:8.1.0"],\ + ["wrap-ansi-cjs", [\ + "wrap-ansi",\ + "npm:7.0.0"\ + ]]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@isaacs/fs-minipass", [\ + ["npm:4.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@isaacs-fs-minipass-npm-4.0.1-677026e841-10c0.zip/node_modules/@isaacs/fs-minipass/",\ + "packageDependencies": [\ + ["@isaacs/fs-minipass", "npm:4.0.1"],\ + ["minipass", "npm:7.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@istanbuljs/load-nyc-config", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@istanbuljs-load-nyc-config-npm-1.1.0-42d17c9cb1-10c0.zip/node_modules/@istanbuljs/load-nyc-config/",\ + "packageDependencies": [\ + ["@istanbuljs/load-nyc-config", "npm:1.1.0"],\ + ["camelcase", "npm:5.3.1"],\ + ["find-up", "npm:4.1.0"],\ + ["get-package-type", "npm:0.1.0"],\ + ["js-yaml", "npm:3.14.1"],\ + ["resolve-from", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@istanbuljs/schema", [\ + ["npm:0.1.3", {\ + "packageLocation": "../../../.yarn/berry/cache/@istanbuljs-schema-npm-0.1.3-466bd3eaaa-10c0.zip/node_modules/@istanbuljs/schema/",\ + "packageDependencies": [\ + ["@istanbuljs/schema", "npm:0.1.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/console", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-console-npm-30.0.5-0e754890e7-10c0.zip/node_modules/@jest/console/",\ + "packageDependencies": [\ + ["@jest/console", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/node", "npm:24.2.1"],\ + ["chalk", "npm:4.1.2"],\ + ["jest-message-util", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["slash", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/core", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-core-npm-30.0.5-5d05e5b308-10c0.zip/node_modules/@jest/core/",\ + "packageDependencies": [\ + ["@jest/core", "npm:30.0.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:58c24a0b8aeedaf0c7a8d6d9ee7817c6ff9fed4cbebc557ca5ece2436be1957f7acdfa37681b3623cc826c315bb3b70c44695a943d4308ffdb7c4832d4dbae40#npm:30.0.5", {\ + "packageLocation": "./.yarn/__virtual__/@jest-core-virtual-21278dafe1/4/.yarn/berry/cache/@jest-core-npm-30.0.5-5d05e5b308-10c0.zip/node_modules/@jest/core/",\ + "packageDependencies": [\ + ["@jest/console", "npm:30.0.5"],\ + ["@jest/core", "virtual:58c24a0b8aeedaf0c7a8d6d9ee7817c6ff9fed4cbebc557ca5ece2436be1957f7acdfa37681b3623cc826c315bb3b70c44695a943d4308ffdb7c4832d4dbae40#npm:30.0.5"],\ + ["@jest/pattern", "npm:30.0.1"],\ + ["@jest/reporters", "virtual:21278dafe1dd97eeef64edb10ecfece410dd8deb9f159d1d3b2f70f87c4a7067514a1fd90ca04f207453603e3a09addef214a986e896c17379a43aeb79d3fea7#npm:30.0.5"],\ + ["@jest/test-result", "npm:30.0.5"],\ + ["@jest/transform", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/node", "npm:24.2.1"],\ + ["@types/node-notifier", null],\ + ["ansi-escapes", "npm:4.3.2"],\ + ["chalk", "npm:4.1.2"],\ + ["ci-info", "npm:4.3.0"],\ + ["exit-x", "npm:0.2.2"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["jest-changed-files", "npm:30.0.5"],\ + ["jest-config", "virtual:21278dafe1dd97eeef64edb10ecfece410dd8deb9f159d1d3b2f70f87c4a7067514a1fd90ca04f207453603e3a09addef214a986e896c17379a43aeb79d3fea7#npm:30.0.5"],\ + ["jest-haste-map", "npm:30.0.5"],\ + ["jest-message-util", "npm:30.0.5"],\ + ["jest-regex-util", "npm:30.0.1"],\ + ["jest-resolve", "npm:30.0.5"],\ + ["jest-resolve-dependencies", "npm:30.0.5"],\ + ["jest-runner", "npm:30.0.5"],\ + ["jest-runtime", "npm:30.0.5"],\ + ["jest-snapshot", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["jest-validate", "npm:30.0.5"],\ + ["jest-watcher", "npm:30.0.5"],\ + ["micromatch", "npm:4.0.8"],\ + ["node-notifier", null],\ + ["pretty-format", "npm:30.0.5"],\ + ["slash", "npm:3.0.0"]\ + ],\ + "packagePeers": [\ + "@types/node-notifier",\ + "node-notifier"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/diff-sequences", [\ + ["npm:30.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-diff-sequences-npm-30.0.1-73f863a027-10c0.zip/node_modules/@jest/diff-sequences/",\ + "packageDependencies": [\ + ["@jest/diff-sequences", "npm:30.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/environment", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-environment-npm-30.0.5-545a49ea04-10c0.zip/node_modules/@jest/environment/",\ + "packageDependencies": [\ + ["@jest/environment", "npm:30.0.5"],\ + ["@jest/fake-timers", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/node", "npm:24.2.1"],\ + ["jest-mock", "npm:30.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/expect", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-expect-npm-30.0.5-6d8317c6af-10c0.zip/node_modules/@jest/expect/",\ + "packageDependencies": [\ + ["@jest/expect", "npm:30.0.5"],\ + ["expect", "npm:30.0.5"],\ + ["jest-snapshot", "npm:30.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/expect-utils", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-expect-utils-npm-30.0.5-fe23a9ebe5-10c0.zip/node_modules/@jest/expect-utils/",\ + "packageDependencies": [\ + ["@jest/expect-utils", "npm:30.0.5"],\ + ["@jest/get-type", "npm:30.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/fake-timers", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-fake-timers-npm-30.0.5-1c89af63f1-10c0.zip/node_modules/@jest/fake-timers/",\ + "packageDependencies": [\ + ["@jest/fake-timers", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@sinonjs/fake-timers", "npm:13.0.5"],\ + ["@types/node", "npm:24.2.1"],\ + ["jest-message-util", "npm:30.0.5"],\ + ["jest-mock", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/get-type", [\ + ["npm:30.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-get-type-npm-30.0.1-3664a34e57-10c0.zip/node_modules/@jest/get-type/",\ + "packageDependencies": [\ + ["@jest/get-type", "npm:30.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/globals", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-globals-npm-30.0.5-4a7b271cb2-10c0.zip/node_modules/@jest/globals/",\ + "packageDependencies": [\ + ["@jest/environment", "npm:30.0.5"],\ + ["@jest/expect", "npm:30.0.5"],\ + ["@jest/globals", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["jest-mock", "npm:30.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/pattern", [\ + ["npm:30.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-pattern-npm-30.0.1-2ce04a6497-10c0.zip/node_modules/@jest/pattern/",\ + "packageDependencies": [\ + ["@jest/pattern", "npm:30.0.1"],\ + ["@types/node", "npm:24.2.1"],\ + ["jest-regex-util", "npm:30.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/reporters", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-reporters-npm-30.0.5-e1a47cf6dc-10c0.zip/node_modules/@jest/reporters/",\ + "packageDependencies": [\ + ["@jest/reporters", "npm:30.0.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:21278dafe1dd97eeef64edb10ecfece410dd8deb9f159d1d3b2f70f87c4a7067514a1fd90ca04f207453603e3a09addef214a986e896c17379a43aeb79d3fea7#npm:30.0.5", {\ + "packageLocation": "./.yarn/__virtual__/@jest-reporters-virtual-c935b91d3a/4/.yarn/berry/cache/@jest-reporters-npm-30.0.5-e1a47cf6dc-10c0.zip/node_modules/@jest/reporters/",\ + "packageDependencies": [\ + ["@bcoe/v8-coverage", "npm:0.2.3"],\ + ["@jest/console", "npm:30.0.5"],\ + ["@jest/reporters", "virtual:21278dafe1dd97eeef64edb10ecfece410dd8deb9f159d1d3b2f70f87c4a7067514a1fd90ca04f207453603e3a09addef214a986e896c17379a43aeb79d3fea7#npm:30.0.5"],\ + ["@jest/test-result", "npm:30.0.5"],\ + ["@jest/transform", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@jridgewell/trace-mapping", "npm:0.3.29"],\ + ["@types/node", "npm:24.2.1"],\ + ["@types/node-notifier", null],\ + ["chalk", "npm:4.1.2"],\ + ["collect-v8-coverage", "npm:1.0.2"],\ + ["exit-x", "npm:0.2.2"],\ + ["glob", "npm:10.4.5"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["istanbul-lib-coverage", "npm:3.2.2"],\ + ["istanbul-lib-instrument", "npm:6.0.3"],\ + ["istanbul-lib-report", "npm:3.0.1"],\ + ["istanbul-lib-source-maps", "npm:5.0.6"],\ + ["istanbul-reports", "npm:3.1.7"],\ + ["jest-message-util", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["jest-worker", "npm:30.0.5"],\ + ["node-notifier", null],\ + ["slash", "npm:3.0.0"],\ + ["string-length", "npm:4.0.2"],\ + ["v8-to-istanbul", "npm:9.3.0"]\ + ],\ + "packagePeers": [\ + "@types/node-notifier",\ + "node-notifier"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/schemas", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-schemas-npm-30.0.5-e55a4c770e-10c0.zip/node_modules/@jest/schemas/",\ + "packageDependencies": [\ + ["@jest/schemas", "npm:30.0.5"],\ + ["@sinclair/typebox", "npm:0.34.38"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/snapshot-utils", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-snapshot-utils-npm-30.0.5-8a6b1916e7-10c0.zip/node_modules/@jest/snapshot-utils/",\ + "packageDependencies": [\ + ["@jest/snapshot-utils", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["chalk", "npm:4.1.2"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["natural-compare", "npm:1.4.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/source-map", [\ + ["npm:30.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-source-map-npm-30.0.1-52afc7f781-10c0.zip/node_modules/@jest/source-map/",\ + "packageDependencies": [\ + ["@jest/source-map", "npm:30.0.1"],\ + ["@jridgewell/trace-mapping", "npm:0.3.29"],\ + ["callsites", "npm:3.1.0"],\ + ["graceful-fs", "npm:4.2.11"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/test-result", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-test-result-npm-30.0.5-eb56e1a6f2-10c0.zip/node_modules/@jest/test-result/",\ + "packageDependencies": [\ + ["@jest/console", "npm:30.0.5"],\ + ["@jest/test-result", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/istanbul-lib-coverage", "npm:2.0.6"],\ + ["collect-v8-coverage", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/test-sequencer", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-test-sequencer-npm-30.0.5-268112fc9c-10c0.zip/node_modules/@jest/test-sequencer/",\ + "packageDependencies": [\ + ["@jest/test-result", "npm:30.0.5"],\ + ["@jest/test-sequencer", "npm:30.0.5"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["jest-haste-map", "npm:30.0.5"],\ + ["slash", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/transform", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-transform-npm-30.0.5-90874ed0b8-10c0.zip/node_modules/@jest/transform/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@jest/transform", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@jridgewell/trace-mapping", "npm:0.3.29"],\ + ["babel-plugin-istanbul", "npm:7.0.0"],\ + ["chalk", "npm:4.1.2"],\ + ["convert-source-map", "npm:2.0.0"],\ + ["fast-json-stable-stringify", "npm:2.1.0"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["jest-haste-map", "npm:30.0.5"],\ + ["jest-regex-util", "npm:30.0.1"],\ + ["jest-util", "npm:30.0.5"],\ + ["micromatch", "npm:4.0.8"],\ + ["pirates", "npm:4.0.7"],\ + ["slash", "npm:3.0.0"],\ + ["write-file-atomic", "npm:5.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jest/types", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@jest-types-npm-30.0.5-0475c9b283-10c0.zip/node_modules/@jest/types/",\ + "packageDependencies": [\ + ["@jest/pattern", "npm:30.0.1"],\ + ["@jest/schemas", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/istanbul-lib-coverage", "npm:2.0.6"],\ + ["@types/istanbul-reports", "npm:3.0.4"],\ + ["@types/node", "npm:24.2.1"],\ + ["@types/yargs", "npm:17.0.33"],\ + ["chalk", "npm:4.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jridgewell/gen-mapping", [\ + ["npm:0.3.12", {\ + "packageLocation": "../../../.yarn/berry/cache/@jridgewell-gen-mapping-npm-0.3.12-540cb6029b-10c0.zip/node_modules/@jridgewell/gen-mapping/",\ + "packageDependencies": [\ + ["@jridgewell/gen-mapping", "npm:0.3.12"],\ + ["@jridgewell/sourcemap-codec", "npm:1.5.4"],\ + ["@jridgewell/trace-mapping", "npm:0.3.29"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jridgewell/resolve-uri", [\ + ["npm:3.1.2", {\ + "packageLocation": "../../../.yarn/berry/cache/@jridgewell-resolve-uri-npm-3.1.2-5bc4245992-10c0.zip/node_modules/@jridgewell/resolve-uri/",\ + "packageDependencies": [\ + ["@jridgewell/resolve-uri", "npm:3.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jridgewell/sourcemap-codec", [\ + ["npm:1.5.4", {\ + "packageLocation": "../../../.yarn/berry/cache/@jridgewell-sourcemap-codec-npm-1.5.4-0708d1c59d-10c0.zip/node_modules/@jridgewell/sourcemap-codec/",\ + "packageDependencies": [\ + ["@jridgewell/sourcemap-codec", "npm:1.5.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jridgewell/trace-mapping", [\ + ["npm:0.3.29", {\ + "packageLocation": "../../../.yarn/berry/cache/@jridgewell-trace-mapping-npm-0.3.29-6702d36c67-10c0.zip/node_modules/@jridgewell/trace-mapping/",\ + "packageDependencies": [\ + ["@jridgewell/resolve-uri", "npm:3.1.2"],\ + ["@jridgewell/sourcemap-codec", "npm:1.5.4"],\ + ["@jridgewell/trace-mapping", "npm:0.3.29"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@napi-rs/wasm-runtime", [\ + ["npm:0.2.12", {\ + "packageLocation": "../../../.yarn/berry/cache/@napi-rs-wasm-runtime-npm-0.2.12-8f0d65e253-10c0.zip/node_modules/@napi-rs/wasm-runtime/",\ + "packageDependencies": [\ + ["@emnapi/core", "npm:1.4.5"],\ + ["@emnapi/runtime", "npm:1.4.5"],\ + ["@napi-rs/wasm-runtime", "npm:0.2.12"],\ + ["@tybys/wasm-util", "npm:0.10.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@nodelib/fs.scandir", [\ + ["npm:2.1.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@nodelib-fs.scandir-npm-2.1.5-89c67370dd-10c0.zip/node_modules/@nodelib/fs.scandir/",\ + "packageDependencies": [\ + ["@nodelib/fs.scandir", "npm:2.1.5"],\ + ["@nodelib/fs.stat", "npm:2.0.5"],\ + ["run-parallel", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@nodelib/fs.stat", [\ + ["npm:2.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@nodelib-fs.stat-npm-2.0.5-01f4dd3030-10c0.zip/node_modules/@nodelib/fs.stat/",\ + "packageDependencies": [\ + ["@nodelib/fs.stat", "npm:2.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@nodelib/fs.walk", [\ + ["npm:1.2.8", {\ + "packageLocation": "../../../.yarn/berry/cache/@nodelib-fs.walk-npm-1.2.8-b4a89da548-10c0.zip/node_modules/@nodelib/fs.walk/",\ + "packageDependencies": [\ + ["@nodelib/fs.scandir", "npm:2.1.5"],\ + ["@nodelib/fs.walk", "npm:1.2.8"],\ + ["fastq", "npm:1.19.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@npmcli/agent", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@npmcli-agent-npm-3.0.0-169e79294f-10c0.zip/node_modules/@npmcli/agent/",\ + "packageDependencies": [\ + ["@npmcli/agent", "npm:3.0.0"],\ + ["agent-base", "npm:7.1.4"],\ + ["http-proxy-agent", "npm:7.0.2"],\ + ["https-proxy-agent", "npm:7.0.6"],\ + ["lru-cache", "npm:10.4.3"],\ + ["socks-proxy-agent", "npm:8.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@npmcli/fs", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@npmcli-fs-npm-4.0.0-1d9cc8a27b-10c0.zip/node_modules/@npmcli/fs/",\ + "packageDependencies": [\ + ["@npmcli/fs", "npm:4.0.0"],\ + ["semver", "npm:7.7.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@pkgjs/parseargs", [\ + ["npm:0.11.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@pkgjs-parseargs-npm-0.11.0-cd2a3fe948-10c0.zip/node_modules/@pkgjs/parseargs/",\ + "packageDependencies": [\ + ["@pkgjs/parseargs", "npm:0.11.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@pkgr/core", [\ + ["npm:0.2.9", {\ + "packageLocation": "../../../.yarn/berry/cache/@pkgr-core-npm-0.2.9-c65fc09be3-10c0.zip/node_modules/@pkgr/core/",\ + "packageDependencies": [\ + ["@pkgr/core", "npm:0.2.9"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/plugin-commonjs", [\ + ["npm:28.0.6", {\ + "packageLocation": "../../../.yarn/berry/cache/@rollup-plugin-commonjs-npm-28.0.6-4944888a9e-10c0.zip/node_modules/@rollup/plugin-commonjs/",\ + "packageDependencies": [\ + ["@rollup/plugin-commonjs", "npm:28.0.6"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:28.0.6", {\ + "packageLocation": "./.yarn/__virtual__/@rollup-plugin-commonjs-virtual-de8abe1d69/4/.yarn/berry/cache/@rollup-plugin-commonjs-npm-28.0.6-4944888a9e-10c0.zip/node_modules/@rollup/plugin-commonjs/",\ + "packageDependencies": [\ + ["@rollup/plugin-commonjs", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:28.0.6"],\ + ["@rollup/pluginutils", "virtual:de8abe1d692143d99eae1e5dbb1d7dc96264ff4d5bc86da3412fea3c5dae96bb0e54568a121c50e48660b5b8af56e877dad1b3776b65a6206d091ad3da8a2155#npm:5.2.0"],\ + ["@types/rollup", null],\ + ["commondir", "npm:1.0.1"],\ + ["estree-walker", "npm:2.0.2"],\ + ["fdir", "virtual:d4e4bcf80e67f9de0540c123c7c4882e34dce6a8ba807a0a834f267f9132ee6bd264e69a49c6203aa89877ed3a5a5d633bfa002384881be452cc3a2d2fbcce0b#npm:6.4.6"],\ + ["is-reference", "npm:1.2.1"],\ + ["magic-string", "npm:0.30.17"],\ + ["picomatch", "npm:4.0.3"],\ + ["rollup", "npm:4.46.2"]\ + ],\ + "packagePeers": [\ + "@types/rollup",\ + "rollup"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/plugin-node-resolve", [\ + ["npm:16.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@rollup-plugin-node-resolve-npm-16.0.1-2936474bab-10c0.zip/node_modules/@rollup/plugin-node-resolve/",\ + "packageDependencies": [\ + ["@rollup/plugin-node-resolve", "npm:16.0.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:16.0.1", {\ + "packageLocation": "./.yarn/__virtual__/@rollup-plugin-node-resolve-virtual-5e0d25231c/4/.yarn/berry/cache/@rollup-plugin-node-resolve-npm-16.0.1-2936474bab-10c0.zip/node_modules/@rollup/plugin-node-resolve/",\ + "packageDependencies": [\ + ["@rollup/plugin-node-resolve", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:16.0.1"],\ + ["@rollup/pluginutils", "virtual:de8abe1d692143d99eae1e5dbb1d7dc96264ff4d5bc86da3412fea3c5dae96bb0e54568a121c50e48660b5b8af56e877dad1b3776b65a6206d091ad3da8a2155#npm:5.2.0"],\ + ["@types/resolve", "npm:1.20.2"],\ + ["@types/rollup", null],\ + ["deepmerge", "npm:4.3.1"],\ + ["is-module", "npm:1.0.0"],\ + ["resolve", "patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d"],\ + ["rollup", "npm:4.46.2"]\ + ],\ + "packagePeers": [\ + "@types/rollup",\ + "rollup"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/plugin-typescript", [\ + ["npm:12.1.4", {\ + "packageLocation": "../../../.yarn/berry/cache/@rollup-plugin-typescript-npm-12.1.4-9003c60309-10c0.zip/node_modules/@rollup/plugin-typescript/",\ + "packageDependencies": [\ + ["@rollup/plugin-typescript", "npm:12.1.4"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:12.1.4", {\ + "packageLocation": "./.yarn/__virtual__/@rollup-plugin-typescript-virtual-a488dcc79a/4/.yarn/berry/cache/@rollup-plugin-typescript-npm-12.1.4-9003c60309-10c0.zip/node_modules/@rollup/plugin-typescript/",\ + "packageDependencies": [\ + ["@rollup/plugin-typescript", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:12.1.4"],\ + ["@rollup/pluginutils", "virtual:de8abe1d692143d99eae1e5dbb1d7dc96264ff4d5bc86da3412fea3c5dae96bb0e54568a121c50e48660b5b8af56e877dad1b3776b65a6206d091ad3da8a2155#npm:5.2.0"],\ + ["@types/rollup", null],\ + ["@types/tslib", null],\ + ["@types/typescript", null],\ + ["resolve", "patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d"],\ + ["rollup", "npm:4.46.2"],\ + ["tslib", "npm:2.8.1"],\ + ["typescript", "patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5"]\ + ],\ + "packagePeers": [\ + "@types/rollup",\ + "@types/tslib",\ + "@types/typescript",\ + "rollup",\ + "tslib",\ + "typescript"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/pluginutils", [\ + ["npm:5.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@rollup-pluginutils-npm-5.2.0-2a7b66eecd-10c0.zip/node_modules/@rollup/pluginutils/",\ + "packageDependencies": [\ + ["@rollup/pluginutils", "npm:5.2.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:de8abe1d692143d99eae1e5dbb1d7dc96264ff4d5bc86da3412fea3c5dae96bb0e54568a121c50e48660b5b8af56e877dad1b3776b65a6206d091ad3da8a2155#npm:5.2.0", {\ + "packageLocation": "./.yarn/__virtual__/@rollup-pluginutils-virtual-e0d325b3b5/4/.yarn/berry/cache/@rollup-pluginutils-npm-5.2.0-2a7b66eecd-10c0.zip/node_modules/@rollup/pluginutils/",\ + "packageDependencies": [\ + ["@rollup/pluginutils", "virtual:de8abe1d692143d99eae1e5dbb1d7dc96264ff4d5bc86da3412fea3c5dae96bb0e54568a121c50e48660b5b8af56e877dad1b3776b65a6206d091ad3da8a2155#npm:5.2.0"],\ + ["@types/estree", "npm:1.0.8"],\ + ["@types/rollup", null],\ + ["estree-walker", "npm:2.0.2"],\ + ["picomatch", "npm:4.0.3"],\ + ["rollup", "npm:4.46.2"]\ + ],\ + "packagePeers": [\ + "@types/rollup",\ + "rollup"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-android-arm-eabi", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-android-arm-eabi-npm-4.46.2-d5d42d0dc1/node_modules/@rollup/rollup-android-arm-eabi/",\ + "packageDependencies": [\ + ["@rollup/rollup-android-arm-eabi", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-android-arm64", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-android-arm64-npm-4.46.2-16ca19c239/node_modules/@rollup/rollup-android-arm64/",\ + "packageDependencies": [\ + ["@rollup/rollup-android-arm64", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-darwin-arm64", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-darwin-arm64-npm-4.46.2-78a61e53eb/node_modules/@rollup/rollup-darwin-arm64/",\ + "packageDependencies": [\ + ["@rollup/rollup-darwin-arm64", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-darwin-x64", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-darwin-x64-npm-4.46.2-e7b2f4101e/node_modules/@rollup/rollup-darwin-x64/",\ + "packageDependencies": [\ + ["@rollup/rollup-darwin-x64", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-freebsd-arm64", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-freebsd-arm64-npm-4.46.2-0360564935/node_modules/@rollup/rollup-freebsd-arm64/",\ + "packageDependencies": [\ + ["@rollup/rollup-freebsd-arm64", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-freebsd-x64", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-freebsd-x64-npm-4.46.2-85f8c00f41/node_modules/@rollup/rollup-freebsd-x64/",\ + "packageDependencies": [\ + ["@rollup/rollup-freebsd-x64", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-arm-gnueabihf", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm-gnueabihf-npm-4.46.2-ff6fe0e8fa/node_modules/@rollup/rollup-linux-arm-gnueabihf/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-arm-gnueabihf", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-arm-musleabihf", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm-musleabihf-npm-4.46.2-2dde976386/node_modules/@rollup/rollup-linux-arm-musleabihf/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-arm-musleabihf", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-arm64-gnu", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm64-gnu-npm-4.46.2-64a0dfcd54/node_modules/@rollup/rollup-linux-arm64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-arm64-gnu", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-arm64-musl", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm64-musl-npm-4.46.2-2fa210adc6/node_modules/@rollup/rollup-linux-arm64-musl/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-arm64-musl", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-loongarch64-gnu", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-loongarch64-gnu-npm-4.46.2-5ac5c2a3ab/node_modules/@rollup/rollup-linux-loongarch64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-loongarch64-gnu", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-ppc64-gnu", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-ppc64-gnu-npm-4.46.2-065ca7af59/node_modules/@rollup/rollup-linux-ppc64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-ppc64-gnu", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-riscv64-gnu", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-riscv64-gnu-npm-4.46.2-af0f41851d/node_modules/@rollup/rollup-linux-riscv64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-riscv64-gnu", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-riscv64-musl", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-riscv64-musl-npm-4.46.2-f43755c9d3/node_modules/@rollup/rollup-linux-riscv64-musl/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-riscv64-musl", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-s390x-gnu", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-s390x-gnu-npm-4.46.2-40c07d1692/node_modules/@rollup/rollup-linux-s390x-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-s390x-gnu", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-x64-gnu", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-x64-gnu-npm-4.46.2-2605268b59/node_modules/@rollup/rollup-linux-x64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-x64-gnu", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-x64-musl", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-x64-musl-npm-4.46.2-6432615f01/node_modules/@rollup/rollup-linux-x64-musl/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-x64-musl", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-win32-arm64-msvc", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-arm64-msvc-npm-4.46.2-63142f8c2f/node_modules/@rollup/rollup-win32-arm64-msvc/",\ + "packageDependencies": [\ + ["@rollup/rollup-win32-arm64-msvc", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-win32-ia32-msvc", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-ia32-msvc-npm-4.46.2-aecc681e96/node_modules/@rollup/rollup-win32-ia32-msvc/",\ + "packageDependencies": [\ + ["@rollup/rollup-win32-ia32-msvc", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-win32-x64-msvc", [\ + ["npm:4.46.2", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-x64-msvc-npm-4.46.2-66021925a7/node_modules/@rollup/rollup-win32-x64-msvc/",\ + "packageDependencies": [\ + ["@rollup/rollup-win32-x64-msvc", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rtsao/scc", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@rtsao-scc-npm-1.1.0-f4ba9ceb2c-10c0.zip/node_modules/@rtsao/scc/",\ + "packageDependencies": [\ + ["@rtsao/scc", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@sinclair/typebox", [\ + ["npm:0.34.38", {\ + "packageLocation": "../../../.yarn/berry/cache/@sinclair-typebox-npm-0.34.38-b86877c3b5-10c0.zip/node_modules/@sinclair/typebox/",\ + "packageDependencies": [\ + ["@sinclair/typebox", "npm:0.34.38"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@sinonjs/commons", [\ + ["npm:3.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@sinonjs-commons-npm-3.0.1-bffb9f5a53-10c0.zip/node_modules/@sinonjs/commons/",\ + "packageDependencies": [\ + ["@sinonjs/commons", "npm:3.0.1"],\ + ["type-detect", "npm:4.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@sinonjs/fake-timers", [\ + ["npm:13.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@sinonjs-fake-timers-npm-13.0.5-b25ae4bd2b-10c0.zip/node_modules/@sinonjs/fake-timers/",\ + "packageDependencies": [\ + ["@sinonjs/commons", "npm:3.0.1"],\ + ["@sinonjs/fake-timers", "npm:13.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@tybys/wasm-util", [\ + ["npm:0.10.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@tybys-wasm-util-npm-0.10.0-5601bb24f9-10c0.zip/node_modules/@tybys/wasm-util/",\ + "packageDependencies": [\ + ["@tybys/wasm-util", "npm:0.10.0"],\ + ["tslib", "npm:2.8.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/babel__core", [\ + ["npm:7.20.5", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-babel__core-npm-7.20.5-4d95f75eab-10c0.zip/node_modules/@types/babel__core/",\ + "packageDependencies": [\ + ["@babel/parser", "npm:7.28.0"],\ + ["@babel/types", "npm:7.28.2"],\ + ["@types/babel__core", "npm:7.20.5"],\ + ["@types/babel__generator", "npm:7.27.0"],\ + ["@types/babel__template", "npm:7.4.4"],\ + ["@types/babel__traverse", "npm:7.28.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/babel__generator", [\ + ["npm:7.27.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-babel__generator-npm-7.27.0-a5af33547a-10c0.zip/node_modules/@types/babel__generator/",\ + "packageDependencies": [\ + ["@babel/types", "npm:7.28.2"],\ + ["@types/babel__generator", "npm:7.27.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/babel__template", [\ + ["npm:7.4.4", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-babel__template-npm-7.4.4-f34eba762c-10c0.zip/node_modules/@types/babel__template/",\ + "packageDependencies": [\ + ["@babel/parser", "npm:7.28.0"],\ + ["@babel/types", "npm:7.28.2"],\ + ["@types/babel__template", "npm:7.4.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/babel__traverse", [\ + ["npm:7.28.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-babel__traverse-npm-7.28.0-44a48c1b20-10c0.zip/node_modules/@types/babel__traverse/",\ + "packageDependencies": [\ + ["@babel/types", "npm:7.28.2"],\ + ["@types/babel__traverse", "npm:7.28.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/estree", [\ + ["npm:1.0.8", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-estree-npm-1.0.8-2195bac6d6-10c0.zip/node_modules/@types/estree/",\ + "packageDependencies": [\ + ["@types/estree", "npm:1.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/istanbul-lib-coverage", [\ + ["npm:2.0.6", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-istanbul-lib-coverage-npm-2.0.6-2ea31fda9c-10c0.zip/node_modules/@types/istanbul-lib-coverage/",\ + "packageDependencies": [\ + ["@types/istanbul-lib-coverage", "npm:2.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/istanbul-lib-report", [\ + ["npm:3.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-istanbul-lib-report-npm-3.0.3-a5c0ef4b88-10c0.zip/node_modules/@types/istanbul-lib-report/",\ + "packageDependencies": [\ + ["@types/istanbul-lib-coverage", "npm:2.0.6"],\ + ["@types/istanbul-lib-report", "npm:3.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/istanbul-reports", [\ + ["npm:3.0.4", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-istanbul-reports-npm-3.0.4-1afa69db29-10c0.zip/node_modules/@types/istanbul-reports/",\ + "packageDependencies": [\ + ["@types/istanbul-lib-report", "npm:3.0.3"],\ + ["@types/istanbul-reports", "npm:3.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/jest", [\ + ["npm:30.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-jest-npm-30.0.0-7c3c407336-10c0.zip/node_modules/@types/jest/",\ + "packageDependencies": [\ + ["@types/jest", "npm:30.0.0"],\ + ["expect", "npm:30.0.5"],\ + ["pretty-format", "npm:30.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/json-schema", [\ + ["npm:7.0.15", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-json-schema-npm-7.0.15-fd16381786-10c0.zip/node_modules/@types/json-schema/",\ + "packageDependencies": [\ + ["@types/json-schema", "npm:7.0.15"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/json5", [\ + ["npm:0.0.29", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-json5-npm-0.0.29-f63a7916bd-10c0.zip/node_modules/@types/json5/",\ + "packageDependencies": [\ + ["@types/json5", "npm:0.0.29"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/node", [\ + ["npm:22.17.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-node-npm-22.17.1-83f89abe9b-10c0.zip/node_modules/@types/node/",\ + "packageDependencies": [\ + ["@types/node", "npm:22.17.1"],\ + ["undici-types", "npm:6.21.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:24.2.1", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-node-npm-24.2.1-00ab09acd1-10c0.zip/node_modules/@types/node/",\ + "packageDependencies": [\ + ["@types/node", "npm:24.2.1"],\ + ["undici-types", "npm:7.10.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/resolve", [\ + ["npm:1.20.2", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-resolve-npm-1.20.2-5fccb2ad46-10c0.zip/node_modules/@types/resolve/",\ + "packageDependencies": [\ + ["@types/resolve", "npm:1.20.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/semver", [\ + ["npm:7.7.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-semver-npm-7.7.0-0314bdb65a-10c0.zip/node_modules/@types/semver/",\ + "packageDependencies": [\ + ["@types/semver", "npm:7.7.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/stack-utils", [\ + ["npm:2.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-stack-utils-npm-2.0.3-48a0a03262-10c0.zip/node_modules/@types/stack-utils/",\ + "packageDependencies": [\ + ["@types/stack-utils", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/yargs", [\ + ["npm:17.0.33", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-yargs-npm-17.0.33-1d6cca6a2e-10c0.zip/node_modules/@types/yargs/",\ + "packageDependencies": [\ + ["@types/yargs", "npm:17.0.33"],\ + ["@types/yargs-parser", "npm:21.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/yargs-parser", [\ + ["npm:21.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/@types-yargs-parser-npm-21.0.3-1d265246a1-10c0.zip/node_modules/@types/yargs-parser/",\ + "packageDependencies": [\ + ["@types/yargs-parser", "npm:21.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@typescript-eslint/eslint-plugin", [\ + ["npm:6.21.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@typescript-eslint-eslint-plugin-npm-6.21.0-eed10a6c66-10c0.zip/node_modules/@typescript-eslint/eslint-plugin/",\ + "packageDependencies": [\ + ["@typescript-eslint/eslint-plugin", "npm:6.21.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:6.21.0", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-eslint-plugin-virtual-9be9cbaec7/4/.yarn/berry/cache/@typescript-eslint-eslint-plugin-npm-6.21.0-eed10a6c66-10c0.zip/node_modules/@typescript-eslint/eslint-plugin/",\ + "packageDependencies": [\ + ["@eslint-community/regexpp", "npm:4.12.1"],\ + ["@types/eslint", null],\ + ["@types/typescript", null],\ + ["@types/typescript-eslint__parser", null],\ + ["@typescript-eslint/eslint-plugin", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:6.21.0"],\ + ["@typescript-eslint/parser", null],\ + ["@typescript-eslint/scope-manager", "npm:6.21.0"],\ + ["@typescript-eslint/type-utils", "virtual:9be9cbaec770f6530391cc7d1057d8a7cd7c15cae65dd7ec241111dbe83f42a7dce7732a8d77205e197950f9a4e1b861e595f56a5e1d7a08b1eafea8fcf0914d#npm:6.21.0"],\ + ["@typescript-eslint/utils", "virtual:9be9cbaec770f6530391cc7d1057d8a7cd7c15cae65dd7ec241111dbe83f42a7dce7732a8d77205e197950f9a4e1b861e595f56a5e1d7a08b1eafea8fcf0914d#npm:6.21.0"],\ + ["@typescript-eslint/visitor-keys", "npm:6.21.0"],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"],\ + ["eslint", "npm:8.57.1"],\ + ["graphemer", "npm:1.4.0"],\ + ["ignore", "npm:5.3.2"],\ + ["natural-compare", "npm:1.4.0"],\ + ["semver", "npm:7.7.2"],\ + ["ts-api-utils", "virtual:9be9cbaec770f6530391cc7d1057d8a7cd7c15cae65dd7ec241111dbe83f42a7dce7732a8d77205e197950f9a4e1b861e595f56a5e1d7a08b1eafea8fcf0914d#npm:1.4.3"],\ + ["typescript", "patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5"]\ + ],\ + "packagePeers": [\ + "@types/eslint",\ + "@types/typescript-eslint__parser",\ + "@types/typescript",\ + "@typescript-eslint/parser",\ + "eslint",\ + "typescript"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@typescript-eslint/parser", [\ + ["npm:6.21.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@typescript-eslint-parser-npm-6.21.0-d7ff8425ee-10c0.zip/node_modules/@typescript-eslint/parser/",\ + "packageDependencies": [\ + ["@typescript-eslint/parser", "npm:6.21.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:e5f474d70814499e61a74da9a1e7dc336c1420c1ddbe9c0d0c9fb5c74bd65c1daac7e897e7252d2a59836ba1ff11498253b27980f512e46f9e9d1a2ace5a2094#npm:6.21.0", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-parser-virtual-150152a47e/4/.yarn/berry/cache/@typescript-eslint-parser-npm-6.21.0-d7ff8425ee-10c0.zip/node_modules/@typescript-eslint/parser/",\ + "packageDependencies": [\ + ["@types/eslint", null],\ + ["@types/typescript", null],\ + ["@typescript-eslint/parser", "virtual:e5f474d70814499e61a74da9a1e7dc336c1420c1ddbe9c0d0c9fb5c74bd65c1daac7e897e7252d2a59836ba1ff11498253b27980f512e46f9e9d1a2ace5a2094#npm:6.21.0"],\ + ["@typescript-eslint/scope-manager", "npm:6.21.0"],\ + ["@typescript-eslint/types", "npm:6.21.0"],\ + ["@typescript-eslint/typescript-estree", "virtual:c841041cd807fa57802a06f562bb69e3d9029137fab275a006977cb15a32aeebb769d47b22ee785be50dd713df48348a7205a3831c6ac5e1d0e991d290d5d6a4#npm:6.21.0"],\ + ["@typescript-eslint/visitor-keys", "npm:6.21.0"],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"],\ + ["eslint", "npm:8.57.1"],\ + ["typescript", "patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5"]\ + ],\ + "packagePeers": [\ + "@types/eslint",\ + "@types/typescript",\ + "eslint",\ + "typescript"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@typescript-eslint/scope-manager", [\ + ["npm:6.21.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@typescript-eslint-scope-manager-npm-6.21.0-60aa61cad2-10c0.zip/node_modules/@typescript-eslint/scope-manager/",\ + "packageDependencies": [\ + ["@typescript-eslint/scope-manager", "npm:6.21.0"],\ + ["@typescript-eslint/types", "npm:6.21.0"],\ + ["@typescript-eslint/visitor-keys", "npm:6.21.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@typescript-eslint/type-utils", [\ + ["npm:6.21.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@typescript-eslint-type-utils-npm-6.21.0-b5d74d2e4c-10c0.zip/node_modules/@typescript-eslint/type-utils/",\ + "packageDependencies": [\ + ["@typescript-eslint/type-utils", "npm:6.21.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:9be9cbaec770f6530391cc7d1057d8a7cd7c15cae65dd7ec241111dbe83f42a7dce7732a8d77205e197950f9a4e1b861e595f56a5e1d7a08b1eafea8fcf0914d#npm:6.21.0", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-type-utils-virtual-c841041cd8/4/.yarn/berry/cache/@typescript-eslint-type-utils-npm-6.21.0-b5d74d2e4c-10c0.zip/node_modules/@typescript-eslint/type-utils/",\ + "packageDependencies": [\ + ["@types/eslint", null],\ + ["@types/typescript", null],\ + ["@typescript-eslint/type-utils", "virtual:9be9cbaec770f6530391cc7d1057d8a7cd7c15cae65dd7ec241111dbe83f42a7dce7732a8d77205e197950f9a4e1b861e595f56a5e1d7a08b1eafea8fcf0914d#npm:6.21.0"],\ + ["@typescript-eslint/typescript-estree", "virtual:c841041cd807fa57802a06f562bb69e3d9029137fab275a006977cb15a32aeebb769d47b22ee785be50dd713df48348a7205a3831c6ac5e1d0e991d290d5d6a4#npm:6.21.0"],\ + ["@typescript-eslint/utils", "virtual:9be9cbaec770f6530391cc7d1057d8a7cd7c15cae65dd7ec241111dbe83f42a7dce7732a8d77205e197950f9a4e1b861e595f56a5e1d7a08b1eafea8fcf0914d#npm:6.21.0"],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"],\ + ["eslint", "npm:8.57.1"],\ + ["ts-api-utils", "virtual:9be9cbaec770f6530391cc7d1057d8a7cd7c15cae65dd7ec241111dbe83f42a7dce7732a8d77205e197950f9a4e1b861e595f56a5e1d7a08b1eafea8fcf0914d#npm:1.4.3"],\ + ["typescript", "patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5"]\ + ],\ + "packagePeers": [\ + "@types/eslint",\ + "@types/typescript",\ + "eslint",\ + "typescript"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@typescript-eslint/types", [\ + ["npm:6.21.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@typescript-eslint-types-npm-6.21.0-4d08954078-10c0.zip/node_modules/@typescript-eslint/types/",\ + "packageDependencies": [\ + ["@typescript-eslint/types", "npm:6.21.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@typescript-eslint/typescript-estree", [\ + ["npm:6.21.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@typescript-eslint-typescript-estree-npm-6.21.0-04a199adba-10c0.zip/node_modules/@typescript-eslint/typescript-estree/",\ + "packageDependencies": [\ + ["@typescript-eslint/typescript-estree", "npm:6.21.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:85b44ac4a4057be62d0e251165e5dc278513661c44b9f0ced795ab9e678d0b00951b83a247e919243a67a7ed9790017ecf08043c9f7f83886e975d1a1cce2f35#npm:6.21.0", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-a334039e34/4/.yarn/berry/cache/@typescript-eslint-typescript-estree-npm-6.21.0-04a199adba-10c0.zip/node_modules/@typescript-eslint/typescript-estree/",\ + "packageDependencies": [\ + ["@types/typescript", null],\ + ["@typescript-eslint/types", "npm:6.21.0"],\ + ["@typescript-eslint/typescript-estree", "virtual:85b44ac4a4057be62d0e251165e5dc278513661c44b9f0ced795ab9e678d0b00951b83a247e919243a67a7ed9790017ecf08043c9f7f83886e975d1a1cce2f35#npm:6.21.0"],\ + ["@typescript-eslint/visitor-keys", "npm:6.21.0"],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"],\ + ["globby", "npm:11.1.0"],\ + ["is-glob", "npm:4.0.3"],\ + ["minimatch", "npm:9.0.3"],\ + ["semver", "npm:7.7.2"],\ + ["ts-api-utils", "virtual:a334039e34565c8fe5bf81dda7c9078589de36c701a4cdeaab9652f3fabf71e0440ddd31ccb33bb543238eeff21660bb85cf156fdb050ad2c089f1b5251799fa#npm:1.4.3"],\ + ["typescript", null]\ + ],\ + "packagePeers": [\ + "@types/typescript",\ + "typescript"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:c841041cd807fa57802a06f562bb69e3d9029137fab275a006977cb15a32aeebb769d47b22ee785be50dd713df48348a7205a3831c6ac5e1d0e991d290d5d6a4#npm:6.21.0", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-5b6f8701e4/4/.yarn/berry/cache/@typescript-eslint-typescript-estree-npm-6.21.0-04a199adba-10c0.zip/node_modules/@typescript-eslint/typescript-estree/",\ + "packageDependencies": [\ + ["@types/typescript", null],\ + ["@typescript-eslint/types", "npm:6.21.0"],\ + ["@typescript-eslint/typescript-estree", "virtual:c841041cd807fa57802a06f562bb69e3d9029137fab275a006977cb15a32aeebb769d47b22ee785be50dd713df48348a7205a3831c6ac5e1d0e991d290d5d6a4#npm:6.21.0"],\ + ["@typescript-eslint/visitor-keys", "npm:6.21.0"],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"],\ + ["globby", "npm:11.1.0"],\ + ["is-glob", "npm:4.0.3"],\ + ["minimatch", "npm:9.0.3"],\ + ["semver", "npm:7.7.2"],\ + ["ts-api-utils", "virtual:9be9cbaec770f6530391cc7d1057d8a7cd7c15cae65dd7ec241111dbe83f42a7dce7732a8d77205e197950f9a4e1b861e595f56a5e1d7a08b1eafea8fcf0914d#npm:1.4.3"],\ + ["typescript", "patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5"]\ + ],\ + "packagePeers": [\ + "@types/typescript",\ + "typescript"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@typescript-eslint/utils", [\ + ["npm:6.21.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@typescript-eslint-utils-npm-6.21.0-b19969b8aa-10c0.zip/node_modules/@typescript-eslint/utils/",\ + "packageDependencies": [\ + ["@typescript-eslint/utils", "npm:6.21.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:9be9cbaec770f6530391cc7d1057d8a7cd7c15cae65dd7ec241111dbe83f42a7dce7732a8d77205e197950f9a4e1b861e595f56a5e1d7a08b1eafea8fcf0914d#npm:6.21.0", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-utils-virtual-85b44ac4a4/4/.yarn/berry/cache/@typescript-eslint-utils-npm-6.21.0-b19969b8aa-10c0.zip/node_modules/@typescript-eslint/utils/",\ + "packageDependencies": [\ + ["@eslint-community/eslint-utils", "virtual:dd20287a5a1e86b12a5b04609f98bd729fafd847d08e1fc89cdc68f92d1acf209e53b09ef0af4b6e7781d88e1f9acf94e3bf34619939e434ad5ffb0f24855eb4#npm:4.7.0"],\ + ["@types/eslint", null],\ + ["@types/json-schema", "npm:7.0.15"],\ + ["@types/semver", "npm:7.7.0"],\ + ["@typescript-eslint/scope-manager", "npm:6.21.0"],\ + ["@typescript-eslint/types", "npm:6.21.0"],\ + ["@typescript-eslint/typescript-estree", "virtual:85b44ac4a4057be62d0e251165e5dc278513661c44b9f0ced795ab9e678d0b00951b83a247e919243a67a7ed9790017ecf08043c9f7f83886e975d1a1cce2f35#npm:6.21.0"],\ + ["@typescript-eslint/utils", "virtual:9be9cbaec770f6530391cc7d1057d8a7cd7c15cae65dd7ec241111dbe83f42a7dce7732a8d77205e197950f9a4e1b861e595f56a5e1d7a08b1eafea8fcf0914d#npm:6.21.0"],\ + ["eslint", "npm:8.57.1"],\ + ["semver", "npm:7.7.2"]\ + ],\ + "packagePeers": [\ + "@types/eslint",\ + "eslint"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@typescript-eslint/visitor-keys", [\ + ["npm:6.21.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@typescript-eslint-visitor-keys-npm-6.21.0-b36d99336e-10c0.zip/node_modules/@typescript-eslint/visitor-keys/",\ + "packageDependencies": [\ + ["@typescript-eslint/types", "npm:6.21.0"],\ + ["@typescript-eslint/visitor-keys", "npm:6.21.0"],\ + ["eslint-visitor-keys", "npm:3.4.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@ungap/structured-clone", [\ + ["npm:1.3.0", {\ + "packageLocation": "../../../.yarn/berry/cache/@ungap-structured-clone-npm-1.3.0-aea1bdf957-10c0.zip/node_modules/@ungap/structured-clone/",\ + "packageDependencies": [\ + ["@ungap/structured-clone", "npm:1.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-android-arm-eabi", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-android-arm-eabi-npm-1.11.1-06ce6674af/node_modules/@unrs/resolver-binding-android-arm-eabi/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-android-arm-eabi", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-android-arm64", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-android-arm64-npm-1.11.1-1f130db68b/node_modules/@unrs/resolver-binding-android-arm64/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-android-arm64", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-darwin-arm64", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-darwin-arm64-npm-1.11.1-c78d4bd2cb/node_modules/@unrs/resolver-binding-darwin-arm64/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-darwin-arm64", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-darwin-x64", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-darwin-x64-npm-1.11.1-8b085bc124/node_modules/@unrs/resolver-binding-darwin-x64/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-darwin-x64", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-freebsd-x64", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-freebsd-x64-npm-1.11.1-1fa015e147/node_modules/@unrs/resolver-binding-freebsd-x64/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-freebsd-x64", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-linux-arm-gnueabihf", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-linux-arm-gnueabihf-npm-1.11.1-5392340ab8/node_modules/@unrs/resolver-binding-linux-arm-gnueabihf/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-linux-arm-gnueabihf", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-linux-arm-musleabihf", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-linux-arm-musleabihf-npm-1.11.1-a767cbd98d/node_modules/@unrs/resolver-binding-linux-arm-musleabihf/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-linux-arm-musleabihf", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-linux-arm64-gnu", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-linux-arm64-gnu-npm-1.11.1-9df43e91b5/node_modules/@unrs/resolver-binding-linux-arm64-gnu/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-linux-arm64-gnu", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-linux-arm64-musl", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-linux-arm64-musl-npm-1.11.1-56bc63ba54/node_modules/@unrs/resolver-binding-linux-arm64-musl/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-linux-arm64-musl", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-linux-ppc64-gnu", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-linux-ppc64-gnu-npm-1.11.1-0b8bf102a2/node_modules/@unrs/resolver-binding-linux-ppc64-gnu/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-linux-ppc64-gnu", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-linux-riscv64-gnu", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-linux-riscv64-gnu-npm-1.11.1-320ad6c64e/node_modules/@unrs/resolver-binding-linux-riscv64-gnu/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-linux-riscv64-gnu", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-linux-riscv64-musl", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-linux-riscv64-musl-npm-1.11.1-26046daaf7/node_modules/@unrs/resolver-binding-linux-riscv64-musl/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-linux-riscv64-musl", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-linux-s390x-gnu", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-linux-s390x-gnu-npm-1.11.1-9f00ee4143/node_modules/@unrs/resolver-binding-linux-s390x-gnu/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-linux-s390x-gnu", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-linux-x64-gnu", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-linux-x64-gnu-npm-1.11.1-93a00570de/node_modules/@unrs/resolver-binding-linux-x64-gnu/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-linux-x64-gnu", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-linux-x64-musl", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-linux-x64-musl-npm-1.11.1-e50d25f974/node_modules/@unrs/resolver-binding-linux-x64-musl/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-linux-x64-musl", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-wasm32-wasi", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-wasm32-wasi-npm-1.11.1-bad5761d71/node_modules/@unrs/resolver-binding-wasm32-wasi/",\ + "packageDependencies": [\ + ["@napi-rs/wasm-runtime", "npm:0.2.12"],\ + ["@unrs/resolver-binding-wasm32-wasi", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-win32-arm64-msvc", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-win32-arm64-msvc-npm-1.11.1-88c7759a88/node_modules/@unrs/resolver-binding-win32-arm64-msvc/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-win32-arm64-msvc", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-win32-ia32-msvc", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-win32-ia32-msvc-npm-1.11.1-5679839eac/node_modules/@unrs/resolver-binding-win32-ia32-msvc/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-win32-ia32-msvc", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@unrs/resolver-binding-win32-x64-msvc", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/@unrs-resolver-binding-win32-x64-msvc-npm-1.11.1-4121c06678/node_modules/@unrs/resolver-binding-win32-x64-msvc/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-win32-x64-msvc", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["abbrev", [\ + ["npm:3.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/abbrev-npm-3.0.1-a34d600e50-10c0.zip/node_modules/abbrev/",\ + "packageDependencies": [\ + ["abbrev", "npm:3.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["acorn", [\ + ["npm:8.15.0", {\ + "packageLocation": "../../../.yarn/berry/cache/acorn-npm-8.15.0-0764cf600e-10c0.zip/node_modules/acorn/",\ + "packageDependencies": [\ + ["acorn", "npm:8.15.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["acorn-jsx", [\ + ["npm:5.3.2", {\ + "packageLocation": "../../../.yarn/berry/cache/acorn-jsx-npm-5.3.2-d7594599ea-10c0.zip/node_modules/acorn-jsx/",\ + "packageDependencies": [\ + ["acorn-jsx", "npm:5.3.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:a50722a5a9326b6a5f12350c494c4db3aa0f4caeac45e3e9e5fe071da20014ecfe738fe2ebe2c9c98abae81a4ea86b42f56d776b3bd5ec37f9ad3670c242b242#npm:5.3.2", {\ + "packageLocation": "./.yarn/__virtual__/acorn-jsx-virtual-834321b202/4/.yarn/berry/cache/acorn-jsx-npm-5.3.2-d7594599ea-10c0.zip/node_modules/acorn-jsx/",\ + "packageDependencies": [\ + ["@types/acorn", null],\ + ["acorn", "npm:8.15.0"],\ + ["acorn-jsx", "virtual:a50722a5a9326b6a5f12350c494c4db3aa0f4caeac45e3e9e5fe071da20014ecfe738fe2ebe2c9c98abae81a4ea86b42f56d776b3bd5ec37f9ad3670c242b242#npm:5.3.2"]\ + ],\ + "packagePeers": [\ + "@types/acorn",\ + "acorn"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["acorn-walk", [\ + ["npm:8.3.4", {\ + "packageLocation": "../../../.yarn/berry/cache/acorn-walk-npm-8.3.4-a75fa85ead-10c0.zip/node_modules/acorn-walk/",\ + "packageDependencies": [\ + ["acorn", "npm:8.15.0"],\ + ["acorn-walk", "npm:8.3.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["agent-base", [\ + ["npm:7.1.4", {\ + "packageLocation": "../../../.yarn/berry/cache/agent-base-npm-7.1.4-cb8b4604d5-10c0.zip/node_modules/agent-base/",\ + "packageDependencies": [\ + ["agent-base", "npm:7.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ajv", [\ + ["npm:6.12.6", {\ + "packageLocation": "../../../.yarn/berry/cache/ajv-npm-6.12.6-4b5105e2b2-10c0.zip/node_modules/ajv/",\ + "packageDependencies": [\ + ["ajv", "npm:6.12.6"],\ + ["fast-deep-equal", "npm:3.1.3"],\ + ["fast-json-stable-stringify", "npm:2.1.0"],\ + ["json-schema-traverse", "npm:0.4.1"],\ + ["uri-js", "npm:4.4.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ansi-escapes", [\ + ["npm:4.3.2", {\ + "packageLocation": "../../../.yarn/berry/cache/ansi-escapes-npm-4.3.2-3ad173702f-10c0.zip/node_modules/ansi-escapes/",\ + "packageDependencies": [\ + ["ansi-escapes", "npm:4.3.2"],\ + ["type-fest", "npm:0.21.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ansi-regex", [\ + ["npm:5.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/ansi-regex-npm-5.0.1-c963a48615-10c0.zip/node_modules/ansi-regex/",\ + "packageDependencies": [\ + ["ansi-regex", "npm:5.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/ansi-regex-npm-6.1.0-abe011aae4-10c0.zip/node_modules/ansi-regex/",\ + "packageDependencies": [\ + ["ansi-regex", "npm:6.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ansi-styles", [\ + ["npm:4.3.0", {\ + "packageLocation": "../../../.yarn/berry/cache/ansi-styles-npm-4.3.0-245c7d42c7-10c0.zip/node_modules/ansi-styles/",\ + "packageDependencies": [\ + ["ansi-styles", "npm:4.3.0"],\ + ["color-convert", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/ansi-styles-npm-5.2.0-72fc7003e3-10c0.zip/node_modules/ansi-styles/",\ + "packageDependencies": [\ + ["ansi-styles", "npm:5.2.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.2.1", {\ + "packageLocation": "../../../.yarn/berry/cache/ansi-styles-npm-6.2.1-d43647018c-10c0.zip/node_modules/ansi-styles/",\ + "packageDependencies": [\ + ["ansi-styles", "npm:6.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["anymatch", [\ + ["npm:3.1.3", {\ + "packageLocation": "../../../.yarn/berry/cache/anymatch-npm-3.1.3-bc81d103b1-10c0.zip/node_modules/anymatch/",\ + "packageDependencies": [\ + ["anymatch", "npm:3.1.3"],\ + ["normalize-path", "npm:3.0.0"],\ + ["picomatch", "npm:2.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["argparse", [\ + ["npm:1.0.10", {\ + "packageLocation": "../../../.yarn/berry/cache/argparse-npm-1.0.10-528934e59d-10c0.zip/node_modules/argparse/",\ + "packageDependencies": [\ + ["argparse", "npm:1.0.10"],\ + ["sprintf-js", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/argparse-npm-2.0.1-faff7999e6-10c0.zip/node_modules/argparse/",\ + "packageDependencies": [\ + ["argparse", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["array-buffer-byte-length", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/array-buffer-byte-length-npm-1.0.2-c2be1e97e0-10c0.zip/node_modules/array-buffer-byte-length/",\ + "packageDependencies": [\ + ["array-buffer-byte-length", "npm:1.0.2"],\ + ["call-bound", "npm:1.0.4"],\ + ["is-array-buffer", "npm:3.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["array-includes", [\ + ["npm:3.1.9", {\ + "packageLocation": "../../../.yarn/berry/cache/array-includes-npm-3.1.9-b081638946-10c0.zip/node_modules/array-includes/",\ + "packageDependencies": [\ + ["array-includes", "npm:3.1.9"],\ + ["call-bind", "npm:1.0.8"],\ + ["call-bound", "npm:1.0.4"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-abstract", "npm:1.24.0"],\ + ["es-object-atoms", "npm:1.1.1"],\ + ["get-intrinsic", "npm:1.3.0"],\ + ["is-string", "npm:1.1.1"],\ + ["math-intrinsics", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["array-union", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/array-union-npm-2.1.0-4e4852b221-10c0.zip/node_modules/array-union/",\ + "packageDependencies": [\ + ["array-union", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["array.prototype.findlastindex", [\ + ["npm:1.2.6", {\ + "packageLocation": "../../../.yarn/berry/cache/array.prototype.findlastindex-npm-1.2.6-65fef3f969-10c0.zip/node_modules/array.prototype.findlastindex/",\ + "packageDependencies": [\ + ["array.prototype.findlastindex", "npm:1.2.6"],\ + ["call-bind", "npm:1.0.8"],\ + ["call-bound", "npm:1.0.4"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-abstract", "npm:1.24.0"],\ + ["es-errors", "npm:1.3.0"],\ + ["es-object-atoms", "npm:1.1.1"],\ + ["es-shim-unscopables", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["array.prototype.flat", [\ + ["npm:1.3.3", {\ + "packageLocation": "../../../.yarn/berry/cache/array.prototype.flat-npm-1.3.3-51377719d9-10c0.zip/node_modules/array.prototype.flat/",\ + "packageDependencies": [\ + ["array.prototype.flat", "npm:1.3.3"],\ + ["call-bind", "npm:1.0.8"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-abstract", "npm:1.24.0"],\ + ["es-shim-unscopables", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["array.prototype.flatmap", [\ + ["npm:1.3.3", {\ + "packageLocation": "../../../.yarn/berry/cache/array.prototype.flatmap-npm-1.3.3-db3afdbfda-10c0.zip/node_modules/array.prototype.flatmap/",\ + "packageDependencies": [\ + ["array.prototype.flatmap", "npm:1.3.3"],\ + ["call-bind", "npm:1.0.8"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-abstract", "npm:1.24.0"],\ + ["es-shim-unscopables", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["arraybuffer.prototype.slice", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../../.yarn/berry/cache/arraybuffer.prototype.slice-npm-1.0.4-01f62a9713-10c0.zip/node_modules/arraybuffer.prototype.slice/",\ + "packageDependencies": [\ + ["array-buffer-byte-length", "npm:1.0.2"],\ + ["arraybuffer.prototype.slice", "npm:1.0.4"],\ + ["call-bind", "npm:1.0.8"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-abstract", "npm:1.24.0"],\ + ["es-errors", "npm:1.3.0"],\ + ["get-intrinsic", "npm:1.3.0"],\ + ["is-array-buffer", "npm:3.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["async-function", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/async-function-npm-1.0.0-a81667ebcd-10c0.zip/node_modules/async-function/",\ + "packageDependencies": [\ + ["async-function", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["available-typed-arrays", [\ + ["npm:1.0.7", {\ + "packageLocation": "../../../.yarn/berry/cache/available-typed-arrays-npm-1.0.7-e5e5d79687-10c0.zip/node_modules/available-typed-arrays/",\ + "packageDependencies": [\ + ["available-typed-arrays", "npm:1.0.7"],\ + ["possible-typed-array-names", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["babel-jest", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/babel-jest-npm-30.0.5-8bced40b9f-10c0.zip/node_modules/babel-jest/",\ + "packageDependencies": [\ + ["babel-jest", "npm:30.0.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:30.0.5", {\ + "packageLocation": "./.yarn/__virtual__/babel-jest-virtual-c6c3571667/4/.yarn/berry/cache/babel-jest-npm-30.0.5-8bced40b9f-10c0.zip/node_modules/babel-jest/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@jest/transform", "npm:30.0.5"],\ + ["@types/babel__core", "npm:7.20.5"],\ + ["babel-jest", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:30.0.5"],\ + ["babel-plugin-istanbul", "npm:7.0.0"],\ + ["babel-preset-jest", "virtual:c6c3571667447f272f6ea8b37df9ffbb36d4d769c7618be8f1e55ab9d0e6de4df02b25b149fa5c0732141821b38eeb3c37e7e0cc373b692bddad5190cf09fc3c#npm:30.0.1"],\ + ["chalk", "npm:4.1.2"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["slash", "npm:3.0.0"]\ + ],\ + "packagePeers": [\ + "@babel/core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:5a9d5f26d12d9e6b79dc62af2b9606f8146e7aca46a0372d52ddf11cec77e4b6afd3ce628f01274f9a58cdcaa17c49cabd140248e5d367f5a5603a1ee5f60a79#npm:30.0.5", {\ + "packageLocation": "./.yarn/__virtual__/babel-jest-virtual-cec4b95eb8/4/.yarn/berry/cache/babel-jest-npm-30.0.5-8bced40b9f-10c0.zip/node_modules/babel-jest/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@jest/transform", "npm:30.0.5"],\ + ["@types/babel__core", "npm:7.20.5"],\ + ["babel-jest", "virtual:5a9d5f26d12d9e6b79dc62af2b9606f8146e7aca46a0372d52ddf11cec77e4b6afd3ce628f01274f9a58cdcaa17c49cabd140248e5d367f5a5603a1ee5f60a79#npm:30.0.5"],\ + ["babel-plugin-istanbul", "npm:7.0.0"],\ + ["babel-preset-jest", "virtual:cec4b95eb8160573f937d12de2b7c139f08bc29ec95f7999f23401b409284f9a6fd3a0bc2ad2e62db7a2b5acb66cf99de0df2be929c85d319a62d162c174d0ef#npm:30.0.1"],\ + ["chalk", "npm:4.1.2"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["slash", "npm:3.0.0"]\ + ],\ + "packagePeers": [\ + "@babel/core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["babel-plugin-istanbul", [\ + ["npm:7.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/babel-plugin-istanbul-npm-7.0.0-924905ff8c-10c0.zip/node_modules/babel-plugin-istanbul/",\ + "packageDependencies": [\ + ["@babel/helper-plugin-utils", "npm:7.27.1"],\ + ["@istanbuljs/load-nyc-config", "npm:1.1.0"],\ + ["@istanbuljs/schema", "npm:0.1.3"],\ + ["babel-plugin-istanbul", "npm:7.0.0"],\ + ["istanbul-lib-instrument", "npm:6.0.3"],\ + ["test-exclude", "npm:6.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["babel-plugin-jest-hoist", [\ + ["npm:30.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/babel-plugin-jest-hoist-npm-30.0.1-be1f25b566-10c0.zip/node_modules/babel-plugin-jest-hoist/",\ + "packageDependencies": [\ + ["@babel/template", "npm:7.27.2"],\ + ["@babel/types", "npm:7.28.2"],\ + ["@types/babel__core", "npm:7.20.5"],\ + ["babel-plugin-jest-hoist", "npm:30.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["babel-plugin-polyfill-corejs2", [\ + ["npm:0.4.14", {\ + "packageLocation": "../../../.yarn/berry/cache/babel-plugin-polyfill-corejs2-npm-0.4.14-63d074d369-10c0.zip/node_modules/babel-plugin-polyfill-corejs2/",\ + "packageDependencies": [\ + ["babel-plugin-polyfill-corejs2", "npm:0.4.14"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:0.4.14", {\ + "packageLocation": "./.yarn/__virtual__/babel-plugin-polyfill-corejs2-virtual-f2566795bf/4/.yarn/berry/cache/babel-plugin-polyfill-corejs2-npm-0.4.14-63d074d369-10c0.zip/node_modules/babel-plugin-polyfill-corejs2/",\ + "packageDependencies": [\ + ["@babel/compat-data", "npm:7.28.0"],\ + ["@babel/core", null],\ + ["@babel/helper-define-polyfill-provider", "virtual:f2566795bf3a86342ae118548a107badfe0ced733d3a3dbb9fbf722a577eb03acc60b53dcc1cb44110b1dd51571c8eea73858ba02e31f4719c497579322eb51a#npm:0.6.5"],\ + ["@types/babel__core", null],\ + ["babel-plugin-polyfill-corejs2", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:0.4.14"],\ + ["semver", "npm:6.3.1"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["babel-plugin-polyfill-corejs3", [\ + ["npm:0.13.0", {\ + "packageLocation": "../../../.yarn/berry/cache/babel-plugin-polyfill-corejs3-npm-0.13.0-180f7738ff-10c0.zip/node_modules/babel-plugin-polyfill-corejs3/",\ + "packageDependencies": [\ + ["babel-plugin-polyfill-corejs3", "npm:0.13.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:0.13.0", {\ + "packageLocation": "./.yarn/__virtual__/babel-plugin-polyfill-corejs3-virtual-d0495c467f/4/.yarn/berry/cache/babel-plugin-polyfill-corejs3-npm-0.13.0-180f7738ff-10c0.zip/node_modules/babel-plugin-polyfill-corejs3/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-define-polyfill-provider", "virtual:f2566795bf3a86342ae118548a107badfe0ced733d3a3dbb9fbf722a577eb03acc60b53dcc1cb44110b1dd51571c8eea73858ba02e31f4719c497579322eb51a#npm:0.6.5"],\ + ["@types/babel__core", null],\ + ["babel-plugin-polyfill-corejs3", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:0.13.0"],\ + ["core-js-compat", "npm:3.45.0"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["babel-plugin-polyfill-regenerator", [\ + ["npm:0.6.5", {\ + "packageLocation": "../../../.yarn/berry/cache/babel-plugin-polyfill-regenerator-npm-0.6.5-80a67684cc-10c0.zip/node_modules/babel-plugin-polyfill-regenerator/",\ + "packageDependencies": [\ + ["babel-plugin-polyfill-regenerator", "npm:0.6.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:0.6.5", {\ + "packageLocation": "./.yarn/__virtual__/babel-plugin-polyfill-regenerator-virtual-104abf63ba/4/.yarn/berry/cache/babel-plugin-polyfill-regenerator-npm-0.6.5-80a67684cc-10c0.zip/node_modules/babel-plugin-polyfill-regenerator/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/helper-define-polyfill-provider", "virtual:f2566795bf3a86342ae118548a107badfe0ced733d3a3dbb9fbf722a577eb03acc60b53dcc1cb44110b1dd51571c8eea73858ba02e31f4719c497579322eb51a#npm:0.6.5"],\ + ["@types/babel__core", null],\ + ["babel-plugin-polyfill-regenerator", "virtual:f79c7a81bbb43fb4dc36eda73d6af6706170c2674994d2bc8e0e5e29fd2c88bbed1c5e661b6b1cec9ff19eb63d9e0fd3317edbab65a888ab1b55acae06a21a14#npm:0.6.5"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["babel-preset-current-node-syntax", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/babel-preset-current-node-syntax-npm-1.2.0-a954a29b2b-10c0.zip/node_modules/babel-preset-current-node-syntax/",\ + "packageDependencies": [\ + ["babel-preset-current-node-syntax", "npm:1.2.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:052de7ae97c223e584de278807e78334b8208788fbec8f7787702dbb0606bbcef4558098868025ee5d5fb21679b84abb154ab06f42969dc884fcda1b084f35e0#npm:1.2.0", {\ + "packageLocation": "./.yarn/__virtual__/babel-preset-current-node-syntax-virtual-223a0f0ecf/4/.yarn/berry/cache/babel-preset-current-node-syntax-npm-1.2.0-a954a29b2b-10c0.zip/node_modules/babel-preset-current-node-syntax/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/plugin-syntax-async-generators", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.4"],\ + ["@babel/plugin-syntax-bigint", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3"],\ + ["@babel/plugin-syntax-class-properties", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.12.13"],\ + ["@babel/plugin-syntax-class-static-block", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.14.5"],\ + ["@babel/plugin-syntax-import-attributes", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.27.1"],\ + ["@babel/plugin-syntax-import-meta", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.10.4"],\ + ["@babel/plugin-syntax-json-strings", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3"],\ + ["@babel/plugin-syntax-logical-assignment-operators", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.10.4"],\ + ["@babel/plugin-syntax-nullish-coalescing-operator", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3"],\ + ["@babel/plugin-syntax-numeric-separator", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.10.4"],\ + ["@babel/plugin-syntax-object-rest-spread", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3"],\ + ["@babel/plugin-syntax-optional-catch-binding", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3"],\ + ["@babel/plugin-syntax-optional-chaining", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.8.3"],\ + ["@babel/plugin-syntax-private-property-in-object", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.14.5"],\ + ["@babel/plugin-syntax-top-level-await", "virtual:223a0f0ecfd8d3c28b2bbe14bacd5e54834eb89dacd8f7afc47bb7c8b4166a7df83b0f7b5205db6833fb6230604251d0ade238f5e4fe3234742e01768e78dfac#npm:7.14.5"],\ + ["@types/babel__core", null],\ + ["babel-preset-current-node-syntax", "virtual:052de7ae97c223e584de278807e78334b8208788fbec8f7787702dbb0606bbcef4558098868025ee5d5fb21679b84abb154ab06f42969dc884fcda1b084f35e0#npm:1.2.0"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:d6f703ae8d64f0ac70dcc02c53a8c61c1f97c4d4b88b7a76545cd70529d5ad71975b01d3f1d618b5e1fffb09f168757d6a1138cce2ae65e82aac01fba85b0317#npm:1.2.0", {\ + "packageLocation": "./.yarn/__virtual__/babel-preset-current-node-syntax-virtual-e9c0e69ac4/4/.yarn/berry/cache/babel-preset-current-node-syntax-npm-1.2.0-a954a29b2b-10c0.zip/node_modules/babel-preset-current-node-syntax/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@babel/plugin-syntax-async-generators", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.4"],\ + ["@babel/plugin-syntax-bigint", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3"],\ + ["@babel/plugin-syntax-class-properties", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.12.13"],\ + ["@babel/plugin-syntax-class-static-block", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.14.5"],\ + ["@babel/plugin-syntax-import-attributes", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.27.1"],\ + ["@babel/plugin-syntax-import-meta", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.10.4"],\ + ["@babel/plugin-syntax-json-strings", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3"],\ + ["@babel/plugin-syntax-logical-assignment-operators", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.10.4"],\ + ["@babel/plugin-syntax-nullish-coalescing-operator", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3"],\ + ["@babel/plugin-syntax-numeric-separator", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.10.4"],\ + ["@babel/plugin-syntax-object-rest-spread", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3"],\ + ["@babel/plugin-syntax-optional-catch-binding", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3"],\ + ["@babel/plugin-syntax-optional-chaining", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.8.3"],\ + ["@babel/plugin-syntax-private-property-in-object", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.14.5"],\ + ["@babel/plugin-syntax-top-level-await", "virtual:e9c0e69ac451c00a5990e6ec2aca95ce6c665084c399fd51e0f110c5ef3cc9195c471932a822372d897a81900598f089385217442298134843330d3c1678356f#npm:7.14.5"],\ + ["@types/babel__core", "npm:7.20.5"],\ + ["babel-preset-current-node-syntax", "virtual:d6f703ae8d64f0ac70dcc02c53a8c61c1f97c4d4b88b7a76545cd70529d5ad71975b01d3f1d618b5e1fffb09f168757d6a1138cce2ae65e82aac01fba85b0317#npm:1.2.0"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:eec8638b7cd4db1efb16488079b527f5f82b008e2cd0d80fd2923398c88bc986eaf546da4dfc40d22a98a217393464800b12a7d6edd05df3acd8fdad6f0eab13#npm:1.2.0", {\ + "packageLocation": "./.yarn/__virtual__/babel-preset-current-node-syntax-virtual-6afe8f4ce4/4/.yarn/berry/cache/babel-preset-current-node-syntax-npm-1.2.0-a954a29b2b-10c0.zip/node_modules/babel-preset-current-node-syntax/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/plugin-syntax-async-generators", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.4"],\ + ["@babel/plugin-syntax-bigint", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3"],\ + ["@babel/plugin-syntax-class-properties", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.12.13"],\ + ["@babel/plugin-syntax-class-static-block", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.14.5"],\ + ["@babel/plugin-syntax-import-attributes", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.27.1"],\ + ["@babel/plugin-syntax-import-meta", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.10.4"],\ + ["@babel/plugin-syntax-json-strings", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3"],\ + ["@babel/plugin-syntax-logical-assignment-operators", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.10.4"],\ + ["@babel/plugin-syntax-nullish-coalescing-operator", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3"],\ + ["@babel/plugin-syntax-numeric-separator", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.10.4"],\ + ["@babel/plugin-syntax-object-rest-spread", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3"],\ + ["@babel/plugin-syntax-optional-catch-binding", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3"],\ + ["@babel/plugin-syntax-optional-chaining", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.8.3"],\ + ["@babel/plugin-syntax-private-property-in-object", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.14.5"],\ + ["@babel/plugin-syntax-top-level-await", "virtual:6afe8f4ce4667be5ac14f05b8bd3645acd882a3ae3b85881da45a06509b4456f08293b718db641144e17c06684180bf10a05bcc2241487642e5d9e29287c4f4b#npm:7.14.5"],\ + ["@types/babel__core", "npm:7.20.5"],\ + ["babel-preset-current-node-syntax", "virtual:eec8638b7cd4db1efb16488079b527f5f82b008e2cd0d80fd2923398c88bc986eaf546da4dfc40d22a98a217393464800b12a7d6edd05df3acd8fdad6f0eab13#npm:1.2.0"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["babel-preset-jest", [\ + ["npm:30.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/babel-preset-jest-npm-30.0.1-0b8ffd2c88-10c0.zip/node_modules/babel-preset-jest/",\ + "packageDependencies": [\ + ["babel-preset-jest", "npm:30.0.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:c6c3571667447f272f6ea8b37df9ffbb36d4d769c7618be8f1e55ab9d0e6de4df02b25b149fa5c0732141821b38eeb3c37e7e0cc373b692bddad5190cf09fc3c#npm:30.0.1", {\ + "packageLocation": "./.yarn/__virtual__/babel-preset-jest-virtual-d6f703ae8d/4/.yarn/berry/cache/babel-preset-jest-npm-30.0.1-0b8ffd2c88-10c0.zip/node_modules/babel-preset-jest/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@types/babel__core", "npm:7.20.5"],\ + ["babel-plugin-jest-hoist", "npm:30.0.1"],\ + ["babel-preset-current-node-syntax", "virtual:d6f703ae8d64f0ac70dcc02c53a8c61c1f97c4d4b88b7a76545cd70529d5ad71975b01d3f1d618b5e1fffb09f168757d6a1138cce2ae65e82aac01fba85b0317#npm:1.2.0"],\ + ["babel-preset-jest", "virtual:c6c3571667447f272f6ea8b37df9ffbb36d4d769c7618be8f1e55ab9d0e6de4df02b25b149fa5c0732141821b38eeb3c37e7e0cc373b692bddad5190cf09fc3c#npm:30.0.1"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:cec4b95eb8160573f937d12de2b7c139f08bc29ec95f7999f23401b409284f9a6fd3a0bc2ad2e62db7a2b5acb66cf99de0df2be929c85d319a62d162c174d0ef#npm:30.0.1", {\ + "packageLocation": "./.yarn/__virtual__/babel-preset-jest-virtual-eec8638b7c/4/.yarn/berry/cache/babel-preset-jest-npm-30.0.1-0b8ffd2c88-10c0.zip/node_modules/babel-preset-jest/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@types/babel__core", "npm:7.20.5"],\ + ["babel-plugin-jest-hoist", "npm:30.0.1"],\ + ["babel-preset-current-node-syntax", "virtual:eec8638b7cd4db1efb16488079b527f5f82b008e2cd0d80fd2923398c88bc986eaf546da4dfc40d22a98a217393464800b12a7d6edd05df3acd8fdad6f0eab13#npm:1.2.0"],\ + ["babel-preset-jest", "virtual:cec4b95eb8160573f937d12de2b7c139f08bc29ec95f7999f23401b409284f9a6fd3a0bc2ad2e62db7a2b5acb66cf99de0df2be929c85d319a62d162c174d0ef#npm:30.0.1"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["balanced-match", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/balanced-match-npm-1.0.2-a53c126459-10c0.zip/node_modules/balanced-match/",\ + "packageDependencies": [\ + ["balanced-match", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["brace-expansion", [\ + ["npm:1.1.12", {\ + "packageLocation": "../../../.yarn/berry/cache/brace-expansion-npm-1.1.12-329e9ad7a1-10c0.zip/node_modules/brace-expansion/",\ + "packageDependencies": [\ + ["balanced-match", "npm:1.0.2"],\ + ["brace-expansion", "npm:1.1.12"],\ + ["concat-map", "npm:0.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/brace-expansion-npm-2.0.2-bc7f134bbc-10c0.zip/node_modules/brace-expansion/",\ + "packageDependencies": [\ + ["balanced-match", "npm:1.0.2"],\ + ["brace-expansion", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["braces", [\ + ["npm:3.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/braces-npm-3.0.3-582c14023c-10c0.zip/node_modules/braces/",\ + "packageDependencies": [\ + ["braces", "npm:3.0.3"],\ + ["fill-range", "npm:7.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["browserslist", [\ + ["npm:4.25.2", {\ + "packageLocation": "../../../.yarn/berry/cache/browserslist-npm-4.25.2-709063cc7c-10c0.zip/node_modules/browserslist/",\ + "packageDependencies": [\ + ["browserslist", "npm:4.25.2"],\ + ["caniuse-lite", "npm:1.0.30001733"],\ + ["electron-to-chromium", "npm:1.5.199"],\ + ["node-releases", "npm:2.0.19"],\ + ["update-browserslist-db", "virtual:709063cc7c27323dd9dc113c4a8744367f834f43252a97255f46615804d535055749a2717337a2726f379c9cac3d264f99cb1ce68eb8a2af5fcbcd17dc557c2e#npm:1.1.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["bs-logger", [\ + ["npm:0.2.6", {\ + "packageLocation": "../../../.yarn/berry/cache/bs-logger-npm-0.2.6-7670f88b66-10c0.zip/node_modules/bs-logger/",\ + "packageDependencies": [\ + ["bs-logger", "npm:0.2.6"],\ + ["fast-json-stable-stringify", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["bser", [\ + ["npm:2.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/bser-npm-2.1.1-cc902055ce-10c0.zip/node_modules/bser/",\ + "packageDependencies": [\ + ["bser", "npm:2.1.1"],\ + ["node-int64", "npm:0.4.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["buffer-from", [\ + ["npm:1.1.2", {\ + "packageLocation": "../../../.yarn/berry/cache/buffer-from-npm-1.1.2-03d2f20d7e-10c0.zip/node_modules/buffer-from/",\ + "packageDependencies": [\ + ["buffer-from", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["builtin-modules", [\ + ["npm:3.3.0", {\ + "packageLocation": "../../../.yarn/berry/cache/builtin-modules-npm-3.3.0-db4f3d32de-10c0.zip/node_modules/builtin-modules/",\ + "packageDependencies": [\ + ["builtin-modules", "npm:3.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["builtins", [\ + ["npm:5.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/builtins-npm-5.1.0-490ec3b04c-10c0.zip/node_modules/builtins/",\ + "packageDependencies": [\ + ["builtins", "npm:5.1.0"],\ + ["semver", "npm:7.7.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["cacache", [\ + ["npm:19.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/cacache-npm-19.0.1-395cba1936-10c0.zip/node_modules/cacache/",\ + "packageDependencies": [\ + ["@npmcli/fs", "npm:4.0.0"],\ + ["cacache", "npm:19.0.1"],\ + ["fs-minipass", "npm:3.0.3"],\ + ["glob", "npm:10.4.5"],\ + ["lru-cache", "npm:10.4.3"],\ + ["minipass", "npm:7.1.2"],\ + ["minipass-collect", "npm:2.0.1"],\ + ["minipass-flush", "npm:1.0.5"],\ + ["minipass-pipeline", "npm:1.2.4"],\ + ["p-map", "npm:7.0.3"],\ + ["ssri", "npm:12.0.0"],\ + ["tar", "npm:7.4.3"],\ + ["unique-filename", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["call-bind", [\ + ["npm:1.0.8", {\ + "packageLocation": "../../../.yarn/berry/cache/call-bind-npm-1.0.8-4145a20621-10c0.zip/node_modules/call-bind/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.8"],\ + ["call-bind-apply-helpers", "npm:1.0.2"],\ + ["es-define-property", "npm:1.0.1"],\ + ["get-intrinsic", "npm:1.3.0"],\ + ["set-function-length", "npm:1.2.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["call-bind-apply-helpers", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/call-bind-apply-helpers-npm-1.0.2-3eedbea3bb-10c0.zip/node_modules/call-bind-apply-helpers/",\ + "packageDependencies": [\ + ["call-bind-apply-helpers", "npm:1.0.2"],\ + ["es-errors", "npm:1.3.0"],\ + ["function-bind", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["call-bound", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../../.yarn/berry/cache/call-bound-npm-1.0.4-359cfa32c7-10c0.zip/node_modules/call-bound/",\ + "packageDependencies": [\ + ["call-bind-apply-helpers", "npm:1.0.2"],\ + ["call-bound", "npm:1.0.4"],\ + ["get-intrinsic", "npm:1.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["callsites", [\ + ["npm:3.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/callsites-npm-3.1.0-268f989910-10c0.zip/node_modules/callsites/",\ + "packageDependencies": [\ + ["callsites", "npm:3.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["camelcase", [\ + ["npm:5.3.1", {\ + "packageLocation": "../../../.yarn/berry/cache/camelcase-npm-5.3.1-5db8af62c5-10c0.zip/node_modules/camelcase/",\ + "packageDependencies": [\ + ["camelcase", "npm:5.3.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.3.0", {\ + "packageLocation": "../../../.yarn/berry/cache/camelcase-npm-6.3.0-e5e42a0d15-10c0.zip/node_modules/camelcase/",\ + "packageDependencies": [\ + ["camelcase", "npm:6.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["caniuse-lite", [\ + ["npm:1.0.30001733", {\ + "packageLocation": "../../../.yarn/berry/cache/caniuse-lite-npm-1.0.30001733-66307b16ed-10c0.zip/node_modules/caniuse-lite/",\ + "packageDependencies": [\ + ["caniuse-lite", "npm:1.0.30001733"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["chalk", [\ + ["npm:4.1.2", {\ + "packageLocation": "../../../.yarn/berry/cache/chalk-npm-4.1.2-ba8b67ab80-10c0.zip/node_modules/chalk/",\ + "packageDependencies": [\ + ["ansi-styles", "npm:4.3.0"],\ + ["chalk", "npm:4.1.2"],\ + ["supports-color", "npm:7.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["char-regex", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/char-regex-npm-1.0.2-ecade5f97f-10c0.zip/node_modules/char-regex/",\ + "packageDependencies": [\ + ["char-regex", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["chownr", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/chownr-npm-3.0.0-5275e85d25-10c0.zip/node_modules/chownr/",\ + "packageDependencies": [\ + ["chownr", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ci-info", [\ + ["npm:4.3.0", {\ + "packageLocation": "../../../.yarn/berry/cache/ci-info-npm-4.3.0-2894137978-10c0.zip/node_modules/ci-info/",\ + "packageDependencies": [\ + ["ci-info", "npm:4.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["cjs-module-lexer", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/cjs-module-lexer-npm-2.1.0-c520790078-10c0.zip/node_modules/cjs-module-lexer/",\ + "packageDependencies": [\ + ["cjs-module-lexer", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["cliui", [\ + ["npm:8.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/cliui-npm-8.0.1-3b029092cf-10c0.zip/node_modules/cliui/",\ + "packageDependencies": [\ + ["cliui", "npm:8.0.1"],\ + ["string-width", "npm:4.2.3"],\ + ["strip-ansi", "npm:6.0.1"],\ + ["wrap-ansi", "npm:7.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["co", [\ + ["npm:4.6.0", {\ + "packageLocation": "../../../.yarn/berry/cache/co-npm-4.6.0-03f2d1feb6-10c0.zip/node_modules/co/",\ + "packageDependencies": [\ + ["co", "npm:4.6.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["collect-v8-coverage", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/collect-v8-coverage-npm-1.0.2-bd20d0c572-10c0.zip/node_modules/collect-v8-coverage/",\ + "packageDependencies": [\ + ["collect-v8-coverage", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["color-convert", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/color-convert-npm-2.0.1-79730e935b-10c0.zip/node_modules/color-convert/",\ + "packageDependencies": [\ + ["color-convert", "npm:2.0.1"],\ + ["color-name", "npm:1.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["color-name", [\ + ["npm:1.1.4", {\ + "packageLocation": "../../../.yarn/berry/cache/color-name-npm-1.1.4-025792b0ea-10c0.zip/node_modules/color-name/",\ + "packageDependencies": [\ + ["color-name", "npm:1.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["commondir", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/commondir-npm-1.0.1-291b790340-10c0.zip/node_modules/commondir/",\ + "packageDependencies": [\ + ["commondir", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["concat-map", [\ + ["npm:0.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/concat-map-npm-0.0.1-85a921b7ee-10c0.zip/node_modules/concat-map/",\ + "packageDependencies": [\ + ["concat-map", "npm:0.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["convert-source-map", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/convert-source-map-npm-2.0.0-7ab664dc4e-10c0.zip/node_modules/convert-source-map/",\ + "packageDependencies": [\ + ["convert-source-map", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["core-js-compat", [\ + ["npm:3.45.0", {\ + "packageLocation": "../../../.yarn/berry/cache/core-js-compat-npm-3.45.0-8313f17244-10c0.zip/node_modules/core-js-compat/",\ + "packageDependencies": [\ + ["browserslist", "npm:4.25.2"],\ + ["core-js-compat", "npm:3.45.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["cross-spawn", [\ + ["npm:7.0.6", {\ + "packageLocation": "../../../.yarn/berry/cache/cross-spawn-npm-7.0.6-264bddf921-10c0.zip/node_modules/cross-spawn/",\ + "packageDependencies": [\ + ["cross-spawn", "npm:7.0.6"],\ + ["path-key", "npm:3.1.1"],\ + ["shebang-command", "npm:2.0.0"],\ + ["which", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["data-view-buffer", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/data-view-buffer-npm-1.0.2-93c9247e37-10c0.zip/node_modules/data-view-buffer/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["data-view-buffer", "npm:1.0.2"],\ + ["es-errors", "npm:1.3.0"],\ + ["is-data-view", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["data-view-byte-length", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/data-view-byte-length-npm-1.0.2-96d312fb9c-10c0.zip/node_modules/data-view-byte-length/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["data-view-byte-length", "npm:1.0.2"],\ + ["es-errors", "npm:1.3.0"],\ + ["is-data-view", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["data-view-byte-offset", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/data-view-byte-offset-npm-1.0.1-315a12a556-10c0.zip/node_modules/data-view-byte-offset/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["data-view-byte-offset", "npm:1.0.1"],\ + ["es-errors", "npm:1.3.0"],\ + ["is-data-view", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["debug", [\ + ["npm:3.2.7", {\ + "packageLocation": "../../../.yarn/berry/cache/debug-npm-3.2.7-754e818c7a-10c0.zip/node_modules/debug/",\ + "packageDependencies": [\ + ["debug", "npm:3.2.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["npm:4.4.1", {\ + "packageLocation": "../../../.yarn/berry/cache/debug-npm-4.4.1-6eab84b9f7-10c0.zip/node_modules/debug/",\ + "packageDependencies": [\ + ["debug", "npm:4.4.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1", {\ + "packageLocation": "./.yarn/__virtual__/debug-virtual-9bbd2288b5/4/.yarn/berry/cache/debug-npm-4.4.1-6eab84b9f7-10c0.zip/node_modules/debug/",\ + "packageDependencies": [\ + ["@types/supports-color", null],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"],\ + ["ms", "npm:2.1.3"],\ + ["supports-color", null]\ + ],\ + "packagePeers": [\ + "@types/supports-color",\ + "supports-color"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:2a426afc4b2eef43db12a540d29c2b5476640459bfcd5c24f86bb401cf8cce97e63bd81794d206a5643057e7f662643afd5ce3dfc4d4bfd8e706006c6309c5fa#npm:3.2.7", {\ + "packageLocation": "./.yarn/__virtual__/debug-virtual-d2345003b7/4/.yarn/berry/cache/debug-npm-3.2.7-754e818c7a-10c0.zip/node_modules/debug/",\ + "packageDependencies": [\ + ["@types/supports-color", null],\ + ["debug", "virtual:2a426afc4b2eef43db12a540d29c2b5476640459bfcd5c24f86bb401cf8cce97e63bd81794d206a5643057e7f662643afd5ce3dfc4d4bfd8e706006c6309c5fa#npm:3.2.7"],\ + ["ms", "npm:2.1.3"],\ + ["supports-color", null]\ + ],\ + "packagePeers": [\ + "@types/supports-color",\ + "supports-color"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["dedent", [\ + ["npm:1.6.0", {\ + "packageLocation": "../../../.yarn/berry/cache/dedent-npm-1.6.0-2a2b4ba2b1-10c0.zip/node_modules/dedent/",\ + "packageDependencies": [\ + ["dedent", "npm:1.6.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f1541aa9fef8c5b43a5e4d4aac70244006c53060ded7550efbbe866b587daa2bf824ec28057c61a7f214ecbb54ab3e4b68a9e6191ce19110c7b2bb9eee745831#npm:1.6.0", {\ + "packageLocation": "./.yarn/__virtual__/dedent-virtual-3bad466a38/4/.yarn/berry/cache/dedent-npm-1.6.0-2a2b4ba2b1-10c0.zip/node_modules/dedent/",\ + "packageDependencies": [\ + ["@types/babel-plugin-macros", null],\ + ["babel-plugin-macros", null],\ + ["dedent", "virtual:f1541aa9fef8c5b43a5e4d4aac70244006c53060ded7550efbbe866b587daa2bf824ec28057c61a7f214ecbb54ab3e4b68a9e6191ce19110c7b2bb9eee745831#npm:1.6.0"]\ + ],\ + "packagePeers": [\ + "@types/babel-plugin-macros",\ + "babel-plugin-macros"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["deep-is", [\ + ["npm:0.1.4", {\ + "packageLocation": "../../../.yarn/berry/cache/deep-is-npm-0.1.4-88938b5a67-10c0.zip/node_modules/deep-is/",\ + "packageDependencies": [\ + ["deep-is", "npm:0.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["deepmerge", [\ + ["npm:4.3.1", {\ + "packageLocation": "../../../.yarn/berry/cache/deepmerge-npm-4.3.1-4f751a0844-10c0.zip/node_modules/deepmerge/",\ + "packageDependencies": [\ + ["deepmerge", "npm:4.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["define-data-property", [\ + ["npm:1.1.4", {\ + "packageLocation": "../../../.yarn/berry/cache/define-data-property-npm-1.1.4-4cbd8efc51-10c0.zip/node_modules/define-data-property/",\ + "packageDependencies": [\ + ["define-data-property", "npm:1.1.4"],\ + ["es-define-property", "npm:1.0.1"],\ + ["es-errors", "npm:1.3.0"],\ + ["gopd", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["define-properties", [\ + ["npm:1.2.1", {\ + "packageLocation": "../../../.yarn/berry/cache/define-properties-npm-1.2.1-8a4d42413b-10c0.zip/node_modules/define-properties/",\ + "packageDependencies": [\ + ["define-data-property", "npm:1.1.4"],\ + ["define-properties", "npm:1.2.1"],\ + ["has-property-descriptors", "npm:1.0.2"],\ + ["object-keys", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["detect-newline", [\ + ["npm:3.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/detect-newline-npm-3.1.0-6d33fa8d37-10c0.zip/node_modules/detect-newline/",\ + "packageDependencies": [\ + ["detect-newline", "npm:3.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["dir-glob", [\ + ["npm:3.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/dir-glob-npm-3.0.1-1aea628b1b-10c0.zip/node_modules/dir-glob/",\ + "packageDependencies": [\ + ["dir-glob", "npm:3.0.1"],\ + ["path-type", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["doctrine", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/doctrine-npm-2.1.0-ac15d049b7-10c0.zip/node_modules/doctrine/",\ + "packageDependencies": [\ + ["doctrine", "npm:2.1.0"],\ + ["esutils", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/doctrine-npm-3.0.0-c6f1615f04-10c0.zip/node_modules/doctrine/",\ + "packageDependencies": [\ + ["doctrine", "npm:3.0.0"],\ + ["esutils", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["dunder-proto", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/dunder-proto-npm-1.0.1-90eb6829db-10c0.zip/node_modules/dunder-proto/",\ + "packageDependencies": [\ + ["call-bind-apply-helpers", "npm:1.0.2"],\ + ["dunder-proto", "npm:1.0.1"],\ + ["es-errors", "npm:1.3.0"],\ + ["gopd", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eastasianwidth", [\ + ["npm:0.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/eastasianwidth-npm-0.2.0-c37eb16bd1-10c0.zip/node_modules/eastasianwidth/",\ + "packageDependencies": [\ + ["eastasianwidth", "npm:0.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["electron-to-chromium", [\ + ["npm:1.5.199", {\ + "packageLocation": "../../../.yarn/berry/cache/electron-to-chromium-npm-1.5.199-25fdb4dab6-10c0.zip/node_modules/electron-to-chromium/",\ + "packageDependencies": [\ + ["electron-to-chromium", "npm:1.5.199"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["emittery", [\ + ["npm:0.13.1", {\ + "packageLocation": "../../../.yarn/berry/cache/emittery-npm-0.13.1-cb6cd1bb03-10c0.zip/node_modules/emittery/",\ + "packageDependencies": [\ + ["emittery", "npm:0.13.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["emoji-regex", [\ + ["npm:8.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/emoji-regex-npm-8.0.0-213764015c-10c0.zip/node_modules/emoji-regex/",\ + "packageDependencies": [\ + ["emoji-regex", "npm:8.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:9.2.2", {\ + "packageLocation": "../../../.yarn/berry/cache/emoji-regex-npm-9.2.2-e6fac8d058-10c0.zip/node_modules/emoji-regex/",\ + "packageDependencies": [\ + ["emoji-regex", "npm:9.2.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["encoding", [\ + ["npm:0.1.13", {\ + "packageLocation": "../../../.yarn/berry/cache/encoding-npm-0.1.13-82a1837d30-10c0.zip/node_modules/encoding/",\ + "packageDependencies": [\ + ["encoding", "npm:0.1.13"],\ + ["iconv-lite", "npm:0.6.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["env-paths", [\ + ["npm:2.2.1", {\ + "packageLocation": "../../../.yarn/berry/cache/env-paths-npm-2.2.1-7c7577428c-10c0.zip/node_modules/env-paths/",\ + "packageDependencies": [\ + ["env-paths", "npm:2.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["err-code", [\ + ["npm:2.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/err-code-npm-2.0.3-082e0ff9a7-10c0.zip/node_modules/err-code/",\ + "packageDependencies": [\ + ["err-code", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["error-ex", [\ + ["npm:1.3.2", {\ + "packageLocation": "../../../.yarn/berry/cache/error-ex-npm-1.3.2-5654f80c0f-10c0.zip/node_modules/error-ex/",\ + "packageDependencies": [\ + ["error-ex", "npm:1.3.2"],\ + ["is-arrayish", "npm:0.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["es-abstract", [\ + ["npm:1.24.0", {\ + "packageLocation": "../../../.yarn/berry/cache/es-abstract-npm-1.24.0-dc8c602e35-10c0.zip/node_modules/es-abstract/",\ + "packageDependencies": [\ + ["array-buffer-byte-length", "npm:1.0.2"],\ + ["arraybuffer.prototype.slice", "npm:1.0.4"],\ + ["available-typed-arrays", "npm:1.0.7"],\ + ["call-bind", "npm:1.0.8"],\ + ["call-bound", "npm:1.0.4"],\ + ["data-view-buffer", "npm:1.0.2"],\ + ["data-view-byte-length", "npm:1.0.2"],\ + ["data-view-byte-offset", "npm:1.0.1"],\ + ["es-abstract", "npm:1.24.0"],\ + ["es-define-property", "npm:1.0.1"],\ + ["es-errors", "npm:1.3.0"],\ + ["es-object-atoms", "npm:1.1.1"],\ + ["es-set-tostringtag", "npm:2.1.0"],\ + ["es-to-primitive", "npm:1.3.0"],\ + ["function.prototype.name", "npm:1.1.8"],\ + ["get-intrinsic", "npm:1.3.0"],\ + ["get-proto", "npm:1.0.1"],\ + ["get-symbol-description", "npm:1.1.0"],\ + ["globalthis", "npm:1.0.4"],\ + ["gopd", "npm:1.2.0"],\ + ["has-property-descriptors", "npm:1.0.2"],\ + ["has-proto", "npm:1.2.0"],\ + ["has-symbols", "npm:1.1.0"],\ + ["hasown", "npm:2.0.2"],\ + ["internal-slot", "npm:1.1.0"],\ + ["is-array-buffer", "npm:3.0.5"],\ + ["is-callable", "npm:1.2.7"],\ + ["is-data-view", "npm:1.0.2"],\ + ["is-negative-zero", "npm:2.0.3"],\ + ["is-regex", "npm:1.2.1"],\ + ["is-set", "npm:2.0.3"],\ + ["is-shared-array-buffer", "npm:1.0.4"],\ + ["is-string", "npm:1.1.1"],\ + ["is-typed-array", "npm:1.1.15"],\ + ["is-weakref", "npm:1.1.1"],\ + ["math-intrinsics", "npm:1.1.0"],\ + ["object-inspect", "npm:1.13.4"],\ + ["object-keys", "npm:1.1.1"],\ + ["object.assign", "npm:4.1.7"],\ + ["own-keys", "npm:1.0.1"],\ + ["regexp.prototype.flags", "npm:1.5.4"],\ + ["safe-array-concat", "npm:1.1.3"],\ + ["safe-push-apply", "npm:1.0.0"],\ + ["safe-regex-test", "npm:1.1.0"],\ + ["set-proto", "npm:1.0.0"],\ + ["stop-iteration-iterator", "npm:1.1.0"],\ + ["string.prototype.trim", "npm:1.2.10"],\ + ["string.prototype.trimend", "npm:1.0.9"],\ + ["string.prototype.trimstart", "npm:1.0.8"],\ + ["typed-array-buffer", "npm:1.0.3"],\ + ["typed-array-byte-length", "npm:1.0.3"],\ + ["typed-array-byte-offset", "npm:1.0.4"],\ + ["typed-array-length", "npm:1.0.7"],\ + ["unbox-primitive", "npm:1.1.0"],\ + ["which-typed-array", "npm:1.1.19"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["es-define-property", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/es-define-property-npm-1.0.1-3fc6324f1c-10c0.zip/node_modules/es-define-property/",\ + "packageDependencies": [\ + ["es-define-property", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["es-errors", [\ + ["npm:1.3.0", {\ + "packageLocation": "../../../.yarn/berry/cache/es-errors-npm-1.3.0-fda0c9b8a8-10c0.zip/node_modules/es-errors/",\ + "packageDependencies": [\ + ["es-errors", "npm:1.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["es-object-atoms", [\ + ["npm:1.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/es-object-atoms-npm-1.1.1-362d8043c2-10c0.zip/node_modules/es-object-atoms/",\ + "packageDependencies": [\ + ["es-errors", "npm:1.3.0"],\ + ["es-object-atoms", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["es-set-tostringtag", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/es-set-tostringtag-npm-2.1.0-4e55705d3f-10c0.zip/node_modules/es-set-tostringtag/",\ + "packageDependencies": [\ + ["es-errors", "npm:1.3.0"],\ + ["es-set-tostringtag", "npm:2.1.0"],\ + ["get-intrinsic", "npm:1.3.0"],\ + ["has-tostringtag", "npm:1.0.2"],\ + ["hasown", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["es-shim-unscopables", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/es-shim-unscopables-npm-1.1.0-13f1970345-10c0.zip/node_modules/es-shim-unscopables/",\ + "packageDependencies": [\ + ["es-shim-unscopables", "npm:1.1.0"],\ + ["hasown", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["es-to-primitive", [\ + ["npm:1.3.0", {\ + "packageLocation": "../../../.yarn/berry/cache/es-to-primitive-npm-1.3.0-470b6d51b6-10c0.zip/node_modules/es-to-primitive/",\ + "packageDependencies": [\ + ["es-to-primitive", "npm:1.3.0"],\ + ["is-callable", "npm:1.2.7"],\ + ["is-date-object", "npm:1.1.0"],\ + ["is-symbol", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["escalade", [\ + ["npm:3.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/escalade-npm-3.2.0-19b50dd48f-10c0.zip/node_modules/escalade/",\ + "packageDependencies": [\ + ["escalade", "npm:3.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["escape-string-regexp", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/escape-string-regexp-npm-2.0.0-aef69d2a25-10c0.zip/node_modules/escape-string-regexp/",\ + "packageDependencies": [\ + ["escape-string-regexp", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/escape-string-regexp-npm-4.0.0-4b531d8d59-10c0.zip/node_modules/escape-string-regexp/",\ + "packageDependencies": [\ + ["escape-string-regexp", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["escodegen", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/escodegen-npm-2.1.0-e0bf940745-10c0.zip/node_modules/escodegen/",\ + "packageDependencies": [\ + ["escodegen", "npm:2.1.0"],\ + ["esprima", "npm:4.0.1"],\ + ["estraverse", "npm:5.3.0"],\ + ["esutils", "npm:2.0.3"],\ + ["source-map", "npm:0.6.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint", [\ + ["npm:8.57.1", {\ + "packageLocation": "../../../.yarn/berry/cache/eslint-npm-8.57.1-dd20287a5a-10c0.zip/node_modules/eslint/",\ + "packageDependencies": [\ + ["@eslint-community/eslint-utils", "virtual:dd20287a5a1e86b12a5b04609f98bd729fafd847d08e1fc89cdc68f92d1acf209e53b09ef0af4b6e7781d88e1f9acf94e3bf34619939e434ad5ffb0f24855eb4#npm:4.7.0"],\ + ["@eslint-community/regexpp", "npm:4.12.1"],\ + ["@eslint/eslintrc", "npm:2.1.4"],\ + ["@eslint/js", "npm:8.57.1"],\ + ["@humanwhocodes/config-array", "npm:0.13.0"],\ + ["@humanwhocodes/module-importer", "npm:1.0.1"],\ + ["@nodelib/fs.walk", "npm:1.2.8"],\ + ["@ungap/structured-clone", "npm:1.3.0"],\ + ["ajv", "npm:6.12.6"],\ + ["chalk", "npm:4.1.2"],\ + ["cross-spawn", "npm:7.0.6"],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"],\ + ["doctrine", "npm:3.0.0"],\ + ["escape-string-regexp", "npm:4.0.0"],\ + ["eslint", "npm:8.57.1"],\ + ["eslint-scope", "npm:7.2.2"],\ + ["eslint-visitor-keys", "npm:3.4.3"],\ + ["espree", "npm:9.6.1"],\ + ["esquery", "npm:1.6.0"],\ + ["esutils", "npm:2.0.3"],\ + ["fast-deep-equal", "npm:3.1.3"],\ + ["file-entry-cache", "npm:6.0.1"],\ + ["find-up", "npm:5.0.0"],\ + ["glob-parent", "npm:6.0.2"],\ + ["globals", "npm:13.24.0"],\ + ["graphemer", "npm:1.4.0"],\ + ["ignore", "npm:5.3.2"],\ + ["imurmurhash", "npm:0.1.4"],\ + ["is-glob", "npm:4.0.3"],\ + ["is-path-inside", "npm:3.0.3"],\ + ["js-yaml", "npm:4.1.0"],\ + ["json-stable-stringify-without-jsonify", "npm:1.0.1"],\ + ["levn", "npm:0.4.1"],\ + ["lodash.merge", "npm:4.6.2"],\ + ["minimatch", "npm:3.1.2"],\ + ["natural-compare", "npm:1.4.0"],\ + ["optionator", "npm:0.9.4"],\ + ["strip-ansi", "npm:6.0.1"],\ + ["text-table", "npm:0.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint-compat-utils", [\ + ["npm:0.5.1", {\ + "packageLocation": "../../../.yarn/berry/cache/eslint-compat-utils-npm-0.5.1-f1f8ade49a-10c0.zip/node_modules/eslint-compat-utils/",\ + "packageDependencies": [\ + ["eslint-compat-utils", "npm:0.5.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:73895c403c2de7256aa4eec7e3efea78fcf6f24995949c95e0b9ad0a44275f401e703f429f3cd9d431d0719e20c5d0c72783a9d3228c6f9e1ec01258e61d0742#npm:0.5.1", {\ + "packageLocation": "./.yarn/__virtual__/eslint-compat-utils-virtual-6a3c99360f/4/.yarn/berry/cache/eslint-compat-utils-npm-0.5.1-f1f8ade49a-10c0.zip/node_modules/eslint-compat-utils/",\ + "packageDependencies": [\ + ["@types/eslint", null],\ + ["eslint", "npm:8.57.1"],\ + ["eslint-compat-utils", "virtual:73895c403c2de7256aa4eec7e3efea78fcf6f24995949c95e0b9ad0a44275f401e703f429f3cd9d431d0719e20c5d0c72783a9d3228c6f9e1ec01258e61d0742#npm:0.5.1"],\ + ["semver", "npm:7.7.2"]\ + ],\ + "packagePeers": [\ + "@types/eslint",\ + "eslint"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint-config-standard", [\ + ["npm:17.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/eslint-config-standard-npm-17.1.0-e72fd623cc-10c0.zip/node_modules/eslint-config-standard/",\ + "packageDependencies": [\ + ["eslint-config-standard", "npm:17.1.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:e5f474d70814499e61a74da9a1e7dc336c1420c1ddbe9c0d0c9fb5c74bd65c1daac7e897e7252d2a59836ba1ff11498253b27980f512e46f9e9d1a2ace5a2094#npm:17.1.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-config-standard-virtual-38b6afb677/4/.yarn/berry/cache/eslint-config-standard-npm-17.1.0-e72fd623cc-10c0.zip/node_modules/eslint-config-standard/",\ + "packageDependencies": [\ + ["@types/eslint", null],\ + ["@types/eslint-plugin-import", null],\ + ["@types/eslint-plugin-n", null],\ + ["@types/eslint-plugin-promise", null],\ + ["eslint", "npm:8.57.1"],\ + ["eslint-config-standard", "virtual:e5f474d70814499e61a74da9a1e7dc336c1420c1ddbe9c0d0c9fb5c74bd65c1daac7e897e7252d2a59836ba1ff11498253b27980f512e46f9e9d1a2ace5a2094#npm:17.1.0"],\ + ["eslint-plugin-import", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:2.32.0"],\ + ["eslint-plugin-n", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:16.6.2"],\ + ["eslint-plugin-promise", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:6.6.0"]\ + ],\ + "packagePeers": [\ + "@types/eslint-plugin-import",\ + "@types/eslint-plugin-n",\ + "@types/eslint-plugin-promise",\ + "@types/eslint",\ + "eslint-plugin-import",\ + "eslint-plugin-n",\ + "eslint-plugin-promise",\ + "eslint"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint-config-standard-with-typescript", [\ + ["npm:43.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/eslint-config-standard-with-typescript-npm-43.0.1-b68f7108f2-10c0.zip/node_modules/eslint-config-standard-with-typescript/",\ + "packageDependencies": [\ + ["eslint-config-standard-with-typescript", "npm:43.0.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:43.0.1", {\ + "packageLocation": "./.yarn/__virtual__/eslint-config-standard-with-typescript-virtual-e5f474d708/4/.yarn/berry/cache/eslint-config-standard-with-typescript-npm-43.0.1-b68f7108f2-10c0.zip/node_modules/eslint-config-standard-with-typescript/",\ + "packageDependencies": [\ + ["@types/eslint", null],\ + ["@types/eslint-plugin-import", null],\ + ["@types/eslint-plugin-n", null],\ + ["@types/eslint-plugin-promise", null],\ + ["@types/typescript", null],\ + ["@types/typescript-eslint__eslint-plugin", null],\ + ["@typescript-eslint/eslint-plugin", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:6.21.0"],\ + ["@typescript-eslint/parser", "virtual:e5f474d70814499e61a74da9a1e7dc336c1420c1ddbe9c0d0c9fb5c74bd65c1daac7e897e7252d2a59836ba1ff11498253b27980f512e46f9e9d1a2ace5a2094#npm:6.21.0"],\ + ["eslint", "npm:8.57.1"],\ + ["eslint-config-standard", "virtual:e5f474d70814499e61a74da9a1e7dc336c1420c1ddbe9c0d0c9fb5c74bd65c1daac7e897e7252d2a59836ba1ff11498253b27980f512e46f9e9d1a2ace5a2094#npm:17.1.0"],\ + ["eslint-config-standard-with-typescript", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:43.0.1"],\ + ["eslint-plugin-import", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:2.32.0"],\ + ["eslint-plugin-n", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:16.6.2"],\ + ["eslint-plugin-promise", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:6.6.0"],\ + ["typescript", "patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5"]\ + ],\ + "packagePeers": [\ + "@types/eslint-plugin-import",\ + "@types/eslint-plugin-n",\ + "@types/eslint-plugin-promise",\ + "@types/eslint",\ + "@types/typescript-eslint__eslint-plugin",\ + "@types/typescript",\ + "@typescript-eslint/eslint-plugin",\ + "eslint-plugin-import",\ + "eslint-plugin-n",\ + "eslint-plugin-promise",\ + "eslint",\ + "typescript"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint-import-resolver-node", [\ + ["npm:0.3.9", {\ + "packageLocation": "../../../.yarn/berry/cache/eslint-import-resolver-node-npm-0.3.9-2a426afc4b-10c0.zip/node_modules/eslint-import-resolver-node/",\ + "packageDependencies": [\ + ["debug", "virtual:2a426afc4b2eef43db12a540d29c2b5476640459bfcd5c24f86bb401cf8cce97e63bd81794d206a5643057e7f662643afd5ce3dfc4d4bfd8e706006c6309c5fa#npm:3.2.7"],\ + ["eslint-import-resolver-node", "npm:0.3.9"],\ + ["is-core-module", "npm:2.16.1"],\ + ["resolve", "patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint-module-utils", [\ + ["npm:2.12.1", {\ + "packageLocation": "../../../.yarn/berry/cache/eslint-module-utils-npm-2.12.1-11995f0970-10c0.zip/node_modules/eslint-module-utils/",\ + "packageDependencies": [\ + ["eslint-module-utils", "npm:2.12.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:601dad001f2689804529ea7f4bb7d1e9e8cdba0a59fe507d9a3e54bc6ad6cbf9bf1f696903bc66a82c25a2e8fb9df5fc7e228560f7ba455f66d2187a11f2f9fc#npm:2.12.1", {\ + "packageLocation": "./.yarn/__virtual__/eslint-module-utils-virtual-0b2f2e2976/4/.yarn/berry/cache/eslint-module-utils-npm-2.12.1-11995f0970-10c0.zip/node_modules/eslint-module-utils/",\ + "packageDependencies": [\ + ["@types/eslint", null],\ + ["@types/eslint-import-resolver-node", null],\ + ["@types/eslint-import-resolver-typescript", null],\ + ["@types/eslint-import-resolver-webpack", null],\ + ["@types/typescript-eslint__parser", null],\ + ["@typescript-eslint/parser", null],\ + ["debug", "virtual:2a426afc4b2eef43db12a540d29c2b5476640459bfcd5c24f86bb401cf8cce97e63bd81794d206a5643057e7f662643afd5ce3dfc4d4bfd8e706006c6309c5fa#npm:3.2.7"],\ + ["eslint", "npm:8.57.1"],\ + ["eslint-import-resolver-node", "npm:0.3.9"],\ + ["eslint-import-resolver-typescript", null],\ + ["eslint-import-resolver-webpack", null],\ + ["eslint-module-utils", "virtual:601dad001f2689804529ea7f4bb7d1e9e8cdba0a59fe507d9a3e54bc6ad6cbf9bf1f696903bc66a82c25a2e8fb9df5fc7e228560f7ba455f66d2187a11f2f9fc#npm:2.12.1"]\ + ],\ + "packagePeers": [\ + "@types/eslint-import-resolver-node",\ + "@types/eslint-import-resolver-typescript",\ + "@types/eslint-import-resolver-webpack",\ + "@types/eslint",\ + "@types/typescript-eslint__parser",\ + "@typescript-eslint/parser",\ + "eslint-import-resolver-node",\ + "eslint-import-resolver-typescript",\ + "eslint-import-resolver-webpack",\ + "eslint"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint-plugin-es-x", [\ + ["npm:7.8.0", {\ + "packageLocation": "../../../.yarn/berry/cache/eslint-plugin-es-x-npm-7.8.0-8237bd972e-10c0.zip/node_modules/eslint-plugin-es-x/",\ + "packageDependencies": [\ + ["eslint-plugin-es-x", "npm:7.8.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:4c0bd5d4deac34554a2cc997fb17ee09ea4028978daa741a2cae157cef1e2185eaba91215081cf61167d1bface42ad642bb6126976534e91f2322bcdf8b67f60#npm:7.8.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-es-x-virtual-73895c403c/4/.yarn/berry/cache/eslint-plugin-es-x-npm-7.8.0-8237bd972e-10c0.zip/node_modules/eslint-plugin-es-x/",\ + "packageDependencies": [\ + ["@eslint-community/eslint-utils", "virtual:dd20287a5a1e86b12a5b04609f98bd729fafd847d08e1fc89cdc68f92d1acf209e53b09ef0af4b6e7781d88e1f9acf94e3bf34619939e434ad5ffb0f24855eb4#npm:4.7.0"],\ + ["@eslint-community/regexpp", "npm:4.12.1"],\ + ["@types/eslint", null],\ + ["eslint", "npm:8.57.1"],\ + ["eslint-compat-utils", "virtual:73895c403c2de7256aa4eec7e3efea78fcf6f24995949c95e0b9ad0a44275f401e703f429f3cd9d431d0719e20c5d0c72783a9d3228c6f9e1ec01258e61d0742#npm:0.5.1"],\ + ["eslint-plugin-es-x", "virtual:4c0bd5d4deac34554a2cc997fb17ee09ea4028978daa741a2cae157cef1e2185eaba91215081cf61167d1bface42ad642bb6126976534e91f2322bcdf8b67f60#npm:7.8.0"]\ + ],\ + "packagePeers": [\ + "@types/eslint",\ + "eslint"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint-plugin-import", [\ + ["npm:2.32.0", {\ + "packageLocation": "../../../.yarn/berry/cache/eslint-plugin-import-npm-2.32.0-a1643bce9b-10c0.zip/node_modules/eslint-plugin-import/",\ + "packageDependencies": [\ + ["eslint-plugin-import", "npm:2.32.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:2.32.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-import-virtual-601dad001f/4/.yarn/berry/cache/eslint-plugin-import-npm-2.32.0-a1643bce9b-10c0.zip/node_modules/eslint-plugin-import/",\ + "packageDependencies": [\ + ["@rtsao/scc", "npm:1.1.0"],\ + ["@types/eslint", null],\ + ["@types/typescript-eslint__parser", null],\ + ["@typescript-eslint/parser", null],\ + ["array-includes", "npm:3.1.9"],\ + ["array.prototype.findlastindex", "npm:1.2.6"],\ + ["array.prototype.flat", "npm:1.3.3"],\ + ["array.prototype.flatmap", "npm:1.3.3"],\ + ["debug", "virtual:2a426afc4b2eef43db12a540d29c2b5476640459bfcd5c24f86bb401cf8cce97e63bd81794d206a5643057e7f662643afd5ce3dfc4d4bfd8e706006c6309c5fa#npm:3.2.7"],\ + ["doctrine", "npm:2.1.0"],\ + ["eslint", "npm:8.57.1"],\ + ["eslint-import-resolver-node", "npm:0.3.9"],\ + ["eslint-module-utils", "virtual:601dad001f2689804529ea7f4bb7d1e9e8cdba0a59fe507d9a3e54bc6ad6cbf9bf1f696903bc66a82c25a2e8fb9df5fc7e228560f7ba455f66d2187a11f2f9fc#npm:2.12.1"],\ + ["eslint-plugin-import", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:2.32.0"],\ + ["hasown", "npm:2.0.2"],\ + ["is-core-module", "npm:2.16.1"],\ + ["is-glob", "npm:4.0.3"],\ + ["minimatch", "npm:3.1.2"],\ + ["object.fromentries", "npm:2.0.8"],\ + ["object.groupby", "npm:1.0.3"],\ + ["object.values", "npm:1.2.1"],\ + ["semver", "npm:6.3.1"],\ + ["string.prototype.trimend", "npm:1.0.9"],\ + ["tsconfig-paths", "npm:3.15.0"]\ + ],\ + "packagePeers": [\ + "@types/eslint",\ + "@types/typescript-eslint__parser",\ + "@typescript-eslint/parser",\ + "eslint"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint-plugin-n", [\ + ["npm:16.6.2", {\ + "packageLocation": "../../../.yarn/berry/cache/eslint-plugin-n-npm-16.6.2-77775852d0-10c0.zip/node_modules/eslint-plugin-n/",\ + "packageDependencies": [\ + ["eslint-plugin-n", "npm:16.6.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:16.6.2", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-n-virtual-4c0bd5d4de/4/.yarn/berry/cache/eslint-plugin-n-npm-16.6.2-77775852d0-10c0.zip/node_modules/eslint-plugin-n/",\ + "packageDependencies": [\ + ["@eslint-community/eslint-utils", "virtual:dd20287a5a1e86b12a5b04609f98bd729fafd847d08e1fc89cdc68f92d1acf209e53b09ef0af4b6e7781d88e1f9acf94e3bf34619939e434ad5ffb0f24855eb4#npm:4.7.0"],\ + ["@types/eslint", null],\ + ["builtins", "npm:5.1.0"],\ + ["eslint", "npm:8.57.1"],\ + ["eslint-plugin-es-x", "virtual:4c0bd5d4deac34554a2cc997fb17ee09ea4028978daa741a2cae157cef1e2185eaba91215081cf61167d1bface42ad642bb6126976534e91f2322bcdf8b67f60#npm:7.8.0"],\ + ["eslint-plugin-n", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:16.6.2"],\ + ["get-tsconfig", "npm:4.10.1"],\ + ["globals", "npm:13.24.0"],\ + ["ignore", "npm:5.3.2"],\ + ["is-builtin-module", "npm:3.2.1"],\ + ["is-core-module", "npm:2.16.1"],\ + ["minimatch", "npm:3.1.2"],\ + ["resolve", "patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d"],\ + ["semver", "npm:7.7.2"]\ + ],\ + "packagePeers": [\ + "@types/eslint",\ + "eslint"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint-plugin-promise", [\ + ["npm:6.6.0", {\ + "packageLocation": "../../../.yarn/berry/cache/eslint-plugin-promise-npm-6.6.0-8b48ba0714-10c0.zip/node_modules/eslint-plugin-promise/",\ + "packageDependencies": [\ + ["eslint-plugin-promise", "npm:6.6.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:6.6.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-promise-virtual-a551b0cdc2/4/.yarn/berry/cache/eslint-plugin-promise-npm-6.6.0-8b48ba0714-10c0.zip/node_modules/eslint-plugin-promise/",\ + "packageDependencies": [\ + ["@types/eslint", null],\ + ["eslint", "npm:8.57.1"],\ + ["eslint-plugin-promise", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:6.6.0"]\ + ],\ + "packagePeers": [\ + "@types/eslint",\ + "eslint"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint-scope", [\ + ["npm:7.2.2", {\ + "packageLocation": "../../../.yarn/berry/cache/eslint-scope-npm-7.2.2-53cb0df8e8-10c0.zip/node_modules/eslint-scope/",\ + "packageDependencies": [\ + ["eslint-scope", "npm:7.2.2"],\ + ["esrecurse", "npm:4.3.0"],\ + ["estraverse", "npm:5.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint-visitor-keys", [\ + ["npm:3.4.3", {\ + "packageLocation": "../../../.yarn/berry/cache/eslint-visitor-keys-npm-3.4.3-a356ac7e46-10c0.zip/node_modules/eslint-visitor-keys/",\ + "packageDependencies": [\ + ["eslint-visitor-keys", "npm:3.4.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["espree", [\ + ["npm:9.6.1", {\ + "packageLocation": "../../../.yarn/berry/cache/espree-npm-9.6.1-a50722a5a9-10c0.zip/node_modules/espree/",\ + "packageDependencies": [\ + ["acorn", "npm:8.15.0"],\ + ["acorn-jsx", "virtual:a50722a5a9326b6a5f12350c494c4db3aa0f4caeac45e3e9e5fe071da20014ecfe738fe2ebe2c9c98abae81a4ea86b42f56d776b3bd5ec37f9ad3670c242b242#npm:5.3.2"],\ + ["eslint-visitor-keys", "npm:3.4.3"],\ + ["espree", "npm:9.6.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["esprima", [\ + ["npm:4.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/esprima-npm-4.0.1-1084e98778-10c0.zip/node_modules/esprima/",\ + "packageDependencies": [\ + ["esprima", "npm:4.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["esquery", [\ + ["npm:1.6.0", {\ + "packageLocation": "../../../.yarn/berry/cache/esquery-npm-1.6.0-16fee31531-10c0.zip/node_modules/esquery/",\ + "packageDependencies": [\ + ["esquery", "npm:1.6.0"],\ + ["estraverse", "npm:5.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["esrecurse", [\ + ["npm:4.3.0", {\ + "packageLocation": "../../../.yarn/berry/cache/esrecurse-npm-4.3.0-10b86a887a-10c0.zip/node_modules/esrecurse/",\ + "packageDependencies": [\ + ["esrecurse", "npm:4.3.0"],\ + ["estraverse", "npm:5.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["estraverse", [\ + ["npm:5.3.0", {\ + "packageLocation": "../../../.yarn/berry/cache/estraverse-npm-5.3.0-03284f8f63-10c0.zip/node_modules/estraverse/",\ + "packageDependencies": [\ + ["estraverse", "npm:5.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["estree-walker", [\ + ["npm:2.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/estree-walker-npm-2.0.2-dfab42f65c-10c0.zip/node_modules/estree-walker/",\ + "packageDependencies": [\ + ["estree-walker", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["esutils", [\ + ["npm:2.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/esutils-npm-2.0.3-f865beafd5-10c0.zip/node_modules/esutils/",\ + "packageDependencies": [\ + ["esutils", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["execa", [\ + ["npm:5.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/execa-npm-5.1.1-191347acf5-10c0.zip/node_modules/execa/",\ + "packageDependencies": [\ + ["cross-spawn", "npm:7.0.6"],\ + ["execa", "npm:5.1.1"],\ + ["get-stream", "npm:6.0.1"],\ + ["human-signals", "npm:2.1.0"],\ + ["is-stream", "npm:2.0.1"],\ + ["merge-stream", "npm:2.0.0"],\ + ["npm-run-path", "npm:4.0.1"],\ + ["onetime", "npm:5.1.2"],\ + ["signal-exit", "npm:3.0.7"],\ + ["strip-final-newline", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["exit-x", [\ + ["npm:0.2.2", {\ + "packageLocation": "../../../.yarn/berry/cache/exit-x-npm-0.2.2-c46ac0577e-10c0.zip/node_modules/exit-x/",\ + "packageDependencies": [\ + ["exit-x", "npm:0.2.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["expect", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/expect-npm-30.0.5-999b54772e-10c0.zip/node_modules/expect/",\ + "packageDependencies": [\ + ["@jest/expect-utils", "npm:30.0.5"],\ + ["@jest/get-type", "npm:30.0.1"],\ + ["expect", "npm:30.0.5"],\ + ["jest-matcher-utils", "npm:30.0.5"],\ + ["jest-message-util", "npm:30.0.5"],\ + ["jest-mock", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["exponential-backoff", [\ + ["npm:3.1.2", {\ + "packageLocation": "../../../.yarn/berry/cache/exponential-backoff-npm-3.1.2-e030c582de-10c0.zip/node_modules/exponential-backoff/",\ + "packageDependencies": [\ + ["exponential-backoff", "npm:3.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fast-deep-equal", [\ + ["npm:3.1.3", {\ + "packageLocation": "../../../.yarn/berry/cache/fast-deep-equal-npm-3.1.3-790edcfcf5-10c0.zip/node_modules/fast-deep-equal/",\ + "packageDependencies": [\ + ["fast-deep-equal", "npm:3.1.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fast-glob", [\ + ["npm:3.3.3", {\ + "packageLocation": "../../../.yarn/berry/cache/fast-glob-npm-3.3.3-2a653be532-10c0.zip/node_modules/fast-glob/",\ + "packageDependencies": [\ + ["@nodelib/fs.stat", "npm:2.0.5"],\ + ["@nodelib/fs.walk", "npm:1.2.8"],\ + ["fast-glob", "npm:3.3.3"],\ + ["glob-parent", "npm:5.1.2"],\ + ["merge2", "npm:1.4.1"],\ + ["micromatch", "npm:4.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fast-json-stable-stringify", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/fast-json-stable-stringify-npm-2.1.0-02e8905fda-10c0.zip/node_modules/fast-json-stable-stringify/",\ + "packageDependencies": [\ + ["fast-json-stable-stringify", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fast-levenshtein", [\ + ["npm:2.0.6", {\ + "packageLocation": "../../../.yarn/berry/cache/fast-levenshtein-npm-2.0.6-fcd74b8df5-10c0.zip/node_modules/fast-levenshtein/",\ + "packageDependencies": [\ + ["fast-levenshtein", "npm:2.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fastq", [\ + ["npm:1.19.1", {\ + "packageLocation": "../../../.yarn/berry/cache/fastq-npm-1.19.1-ca0a13ec3f-10c0.zip/node_modules/fastq/",\ + "packageDependencies": [\ + ["fastq", "npm:1.19.1"],\ + ["reusify", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fb-watchman", [\ + ["npm:2.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/fb-watchman-npm-2.0.2-bcb6f8f831-10c0.zip/node_modules/fb-watchman/",\ + "packageDependencies": [\ + ["bser", "npm:2.1.1"],\ + ["fb-watchman", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fdir", [\ + ["npm:6.4.6", {\ + "packageLocation": "../../../.yarn/berry/cache/fdir-npm-6.4.6-52922d4c25-10c0.zip/node_modules/fdir/",\ + "packageDependencies": [\ + ["fdir", "npm:6.4.6"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:d4e4bcf80e67f9de0540c123c7c4882e34dce6a8ba807a0a834f267f9132ee6bd264e69a49c6203aa89877ed3a5a5d633bfa002384881be452cc3a2d2fbcce0b#npm:6.4.6", {\ + "packageLocation": "./.yarn/__virtual__/fdir-virtual-895faf82c5/4/.yarn/berry/cache/fdir-npm-6.4.6-52922d4c25-10c0.zip/node_modules/fdir/",\ + "packageDependencies": [\ + ["@types/picomatch", null],\ + ["fdir", "virtual:d4e4bcf80e67f9de0540c123c7c4882e34dce6a8ba807a0a834f267f9132ee6bd264e69a49c6203aa89877ed3a5a5d633bfa002384881be452cc3a2d2fbcce0b#npm:6.4.6"],\ + ["picomatch", "npm:4.0.3"]\ + ],\ + "packagePeers": [\ + "@types/picomatch",\ + "picomatch"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["file-entry-cache", [\ + ["npm:6.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/file-entry-cache-npm-6.0.1-31965cf0af-10c0.zip/node_modules/file-entry-cache/",\ + "packageDependencies": [\ + ["file-entry-cache", "npm:6.0.1"],\ + ["flat-cache", "npm:3.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fill-range", [\ + ["npm:7.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/fill-range-npm-7.1.1-bf491486db-10c0.zip/node_modules/fill-range/",\ + "packageDependencies": [\ + ["fill-range", "npm:7.1.1"],\ + ["to-regex-range", "npm:5.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["find-up", [\ + ["npm:4.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/find-up-npm-4.1.0-c3ccf8d855-10c0.zip/node_modules/find-up/",\ + "packageDependencies": [\ + ["find-up", "npm:4.1.0"],\ + ["locate-path", "npm:5.0.0"],\ + ["path-exists", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/find-up-npm-5.0.0-e03e9b796d-10c0.zip/node_modules/find-up/",\ + "packageDependencies": [\ + ["find-up", "npm:5.0.0"],\ + ["locate-path", "npm:6.0.0"],\ + ["path-exists", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["flat-cache", [\ + ["npm:3.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/flat-cache-npm-3.2.0-9a887f084e-10c0.zip/node_modules/flat-cache/",\ + "packageDependencies": [\ + ["flat-cache", "npm:3.2.0"],\ + ["flatted", "npm:3.3.3"],\ + ["keyv", "npm:4.5.4"],\ + ["rimraf", "npm:3.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["flatted", [\ + ["npm:3.3.3", {\ + "packageLocation": "../../../.yarn/berry/cache/flatted-npm-3.3.3-ca455563b2-10c0.zip/node_modules/flatted/",\ + "packageDependencies": [\ + ["flatted", "npm:3.3.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["for-each", [\ + ["npm:0.3.5", {\ + "packageLocation": "../../../.yarn/berry/cache/for-each-npm-0.3.5-b74c5c5ba7-10c0.zip/node_modules/for-each/",\ + "packageDependencies": [\ + ["for-each", "npm:0.3.5"],\ + ["is-callable", "npm:1.2.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["foreground-child", [\ + ["npm:3.3.1", {\ + "packageLocation": "../../../.yarn/berry/cache/foreground-child-npm-3.3.1-b7775fda04-10c0.zip/node_modules/foreground-child/",\ + "packageDependencies": [\ + ["cross-spawn", "npm:7.0.6"],\ + ["foreground-child", "npm:3.3.1"],\ + ["signal-exit", "npm:4.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fs-minipass", [\ + ["npm:3.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/fs-minipass-npm-3.0.3-d148d6ac19-10c0.zip/node_modules/fs-minipass/",\ + "packageDependencies": [\ + ["fs-minipass", "npm:3.0.3"],\ + ["minipass", "npm:7.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fs.realpath", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/fs.realpath-npm-1.0.0-c8f05d8126-10c0.zip/node_modules/fs.realpath/",\ + "packageDependencies": [\ + ["fs.realpath", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fsevents", [\ + ["patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1", {\ + "packageLocation": "./.yarn/unplugged/fsevents-patch-6b67494872/node_modules/fsevents/",\ + "packageDependencies": [\ + ["fsevents", "patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1"],\ + ["node-gyp", "npm:11.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["function-bind", [\ + ["npm:1.1.2", {\ + "packageLocation": "../../../.yarn/berry/cache/function-bind-npm-1.1.2-7a55be9b03-10c0.zip/node_modules/function-bind/",\ + "packageDependencies": [\ + ["function-bind", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["function.prototype.name", [\ + ["npm:1.1.8", {\ + "packageLocation": "../../../.yarn/berry/cache/function.prototype.name-npm-1.1.8-2cf198aac8-10c0.zip/node_modules/function.prototype.name/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.8"],\ + ["call-bound", "npm:1.0.4"],\ + ["define-properties", "npm:1.2.1"],\ + ["function.prototype.name", "npm:1.1.8"],\ + ["functions-have-names", "npm:1.2.3"],\ + ["hasown", "npm:2.0.2"],\ + ["is-callable", "npm:1.2.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["functions-have-names", [\ + ["npm:1.2.3", {\ + "packageLocation": "../../../.yarn/berry/cache/functions-have-names-npm-1.2.3-e5cf1e2208-10c0.zip/node_modules/functions-have-names/",\ + "packageDependencies": [\ + ["functions-have-names", "npm:1.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["gensync", [\ + ["npm:1.0.0-beta.2", {\ + "packageLocation": "../../../.yarn/berry/cache/gensync-npm-1.0.0-beta.2-224666d72f-10c0.zip/node_modules/gensync/",\ + "packageDependencies": [\ + ["gensync", "npm:1.0.0-beta.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["get-caller-file", [\ + ["npm:2.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/get-caller-file-npm-2.0.5-80e8a86305-10c0.zip/node_modules/get-caller-file/",\ + "packageDependencies": [\ + ["get-caller-file", "npm:2.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["get-intrinsic", [\ + ["npm:1.3.0", {\ + "packageLocation": "../../../.yarn/berry/cache/get-intrinsic-npm-1.3.0-35558f27b6-10c0.zip/node_modules/get-intrinsic/",\ + "packageDependencies": [\ + ["call-bind-apply-helpers", "npm:1.0.2"],\ + ["es-define-property", "npm:1.0.1"],\ + ["es-errors", "npm:1.3.0"],\ + ["es-object-atoms", "npm:1.1.1"],\ + ["function-bind", "npm:1.1.2"],\ + ["get-intrinsic", "npm:1.3.0"],\ + ["get-proto", "npm:1.0.1"],\ + ["gopd", "npm:1.2.0"],\ + ["has-symbols", "npm:1.1.0"],\ + ["hasown", "npm:2.0.2"],\ + ["math-intrinsics", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["get-package-type", [\ + ["npm:0.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/get-package-type-npm-0.1.0-6c70cdc8ab-10c0.zip/node_modules/get-package-type/",\ + "packageDependencies": [\ + ["get-package-type", "npm:0.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["get-proto", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/get-proto-npm-1.0.1-4d30bac614-10c0.zip/node_modules/get-proto/",\ + "packageDependencies": [\ + ["dunder-proto", "npm:1.0.1"],\ + ["es-object-atoms", "npm:1.1.1"],\ + ["get-proto", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["get-stream", [\ + ["npm:6.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/get-stream-npm-6.0.1-83e51a4642-10c0.zip/node_modules/get-stream/",\ + "packageDependencies": [\ + ["get-stream", "npm:6.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["get-symbol-description", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/get-symbol-description-npm-1.1.0-7a9e0b1c24-10c0.zip/node_modules/get-symbol-description/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["es-errors", "npm:1.3.0"],\ + ["get-intrinsic", "npm:1.3.0"],\ + ["get-symbol-description", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["get-tsconfig", [\ + ["npm:4.10.1", {\ + "packageLocation": "../../../.yarn/berry/cache/get-tsconfig-npm-4.10.1-87b6240e36-10c0.zip/node_modules/get-tsconfig/",\ + "packageDependencies": [\ + ["get-tsconfig", "npm:4.10.1"],\ + ["resolve-pkg-maps", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["glob", [\ + ["npm:10.4.5", {\ + "packageLocation": "../../../.yarn/berry/cache/glob-npm-10.4.5-8c63175f05-10c0.zip/node_modules/glob/",\ + "packageDependencies": [\ + ["foreground-child", "npm:3.3.1"],\ + ["glob", "npm:10.4.5"],\ + ["jackspeak", "npm:3.4.3"],\ + ["minimatch", "npm:9.0.5"],\ + ["minipass", "npm:7.1.2"],\ + ["package-json-from-dist", "npm:1.0.1"],\ + ["path-scurry", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.2.3", {\ + "packageLocation": "../../../.yarn/berry/cache/glob-npm-7.2.3-2d866d17a5-10c0.zip/node_modules/glob/",\ + "packageDependencies": [\ + ["fs.realpath", "npm:1.0.0"],\ + ["glob", "npm:7.2.3"],\ + ["inflight", "npm:1.0.6"],\ + ["inherits", "npm:2.0.4"],\ + ["minimatch", "npm:3.1.2"],\ + ["once", "npm:1.4.0"],\ + ["path-is-absolute", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["glob-parent", [\ + ["npm:5.1.2", {\ + "packageLocation": "../../../.yarn/berry/cache/glob-parent-npm-5.1.2-021ab32634-10c0.zip/node_modules/glob-parent/",\ + "packageDependencies": [\ + ["glob-parent", "npm:5.1.2"],\ + ["is-glob", "npm:4.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/glob-parent-npm-6.0.2-2cbef12738-10c0.zip/node_modules/glob-parent/",\ + "packageDependencies": [\ + ["glob-parent", "npm:6.0.2"],\ + ["is-glob", "npm:4.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["globals", [\ + ["npm:13.24.0", {\ + "packageLocation": "../../../.yarn/berry/cache/globals-npm-13.24.0-cc7713139c-10c0.zip/node_modules/globals/",\ + "packageDependencies": [\ + ["globals", "npm:13.24.0"],\ + ["type-fest", "npm:0.20.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["globalthis", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../../.yarn/berry/cache/globalthis-npm-1.0.4-de22ac6193-10c0.zip/node_modules/globalthis/",\ + "packageDependencies": [\ + ["define-properties", "npm:1.2.1"],\ + ["globalthis", "npm:1.0.4"],\ + ["gopd", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["globby", [\ + ["npm:11.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/globby-npm-11.1.0-bdcdf20c71-10c0.zip/node_modules/globby/",\ + "packageDependencies": [\ + ["array-union", "npm:2.1.0"],\ + ["dir-glob", "npm:3.0.1"],\ + ["fast-glob", "npm:3.3.3"],\ + ["globby", "npm:11.1.0"],\ + ["ignore", "npm:5.3.2"],\ + ["merge2", "npm:1.4.1"],\ + ["slash", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["gopd", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/gopd-npm-1.2.0-df89ffa78e-10c0.zip/node_modules/gopd/",\ + "packageDependencies": [\ + ["gopd", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["graceful-fs", [\ + ["npm:4.2.11", {\ + "packageLocation": "../../../.yarn/berry/cache/graceful-fs-npm-4.2.11-24bb648a68-10c0.zip/node_modules/graceful-fs/",\ + "packageDependencies": [\ + ["graceful-fs", "npm:4.2.11"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["graphemer", [\ + ["npm:1.4.0", {\ + "packageLocation": "../../../.yarn/berry/cache/graphemer-npm-1.4.0-0627732d35-10c0.zip/node_modules/graphemer/",\ + "packageDependencies": [\ + ["graphemer", "npm:1.4.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["handlebars", [\ + ["npm:4.7.8", {\ + "packageLocation": "../../../.yarn/berry/cache/handlebars-npm-4.7.8-25244c2c82-10c0.zip/node_modules/handlebars/",\ + "packageDependencies": [\ + ["handlebars", "npm:4.7.8"],\ + ["minimist", "npm:1.2.8"],\ + ["neo-async", "npm:2.6.2"],\ + ["source-map", "npm:0.6.1"],\ + ["uglify-js", "npm:3.19.3"],\ + ["wordwrap", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["has-bigints", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/has-bigints-npm-1.1.0-d481f8ed50-10c0.zip/node_modules/has-bigints/",\ + "packageDependencies": [\ + ["has-bigints", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["has-flag", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/has-flag-npm-4.0.0-32af9f0536-10c0.zip/node_modules/has-flag/",\ + "packageDependencies": [\ + ["has-flag", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["has-property-descriptors", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/has-property-descriptors-npm-1.0.2-d7077d09f1-10c0.zip/node_modules/has-property-descriptors/",\ + "packageDependencies": [\ + ["es-define-property", "npm:1.0.1"],\ + ["has-property-descriptors", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["has-proto", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/has-proto-npm-1.2.0-0108d177d3-10c0.zip/node_modules/has-proto/",\ + "packageDependencies": [\ + ["dunder-proto", "npm:1.0.1"],\ + ["has-proto", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["has-symbols", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/has-symbols-npm-1.1.0-9aa7dc2ac1-10c0.zip/node_modules/has-symbols/",\ + "packageDependencies": [\ + ["has-symbols", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["has-tostringtag", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/has-tostringtag-npm-1.0.2-74a4800369-10c0.zip/node_modules/has-tostringtag/",\ + "packageDependencies": [\ + ["has-symbols", "npm:1.1.0"],\ + ["has-tostringtag", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["hasown", [\ + ["npm:2.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/hasown-npm-2.0.2-80fe6c9901-10c0.zip/node_modules/hasown/",\ + "packageDependencies": [\ + ["function-bind", "npm:1.1.2"],\ + ["hasown", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["html-escaper", [\ + ["npm:2.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/html-escaper-npm-2.0.2-38e51ef294-10c0.zip/node_modules/html-escaper/",\ + "packageDependencies": [\ + ["html-escaper", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["http-cache-semantics", [\ + ["npm:4.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/http-cache-semantics-npm-4.2.0-fadacfb3ad-10c0.zip/node_modules/http-cache-semantics/",\ + "packageDependencies": [\ + ["http-cache-semantics", "npm:4.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["http-proxy-agent", [\ + ["npm:7.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/http-proxy-agent-npm-7.0.2-643ed7cc33-10c0.zip/node_modules/http-proxy-agent/",\ + "packageDependencies": [\ + ["agent-base", "npm:7.1.4"],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"],\ + ["http-proxy-agent", "npm:7.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["https-proxy-agent", [\ + ["npm:7.0.6", {\ + "packageLocation": "../../../.yarn/berry/cache/https-proxy-agent-npm-7.0.6-27a95c2690-10c0.zip/node_modules/https-proxy-agent/",\ + "packageDependencies": [\ + ["agent-base", "npm:7.1.4"],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"],\ + ["https-proxy-agent", "npm:7.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["human-signals", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/human-signals-npm-2.1.0-f75815481d-10c0.zip/node_modules/human-signals/",\ + "packageDependencies": [\ + ["human-signals", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["husky", [\ + ["npm:9.1.7", {\ + "packageLocation": "../../../.yarn/berry/cache/husky-npm-9.1.7-5b02eaabc4-10c0.zip/node_modules/husky/",\ + "packageDependencies": [\ + ["husky", "npm:9.1.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["iconv-lite", [\ + ["npm:0.6.3", {\ + "packageLocation": "../../../.yarn/berry/cache/iconv-lite-npm-0.6.3-24b8aae27e-10c0.zip/node_modules/iconv-lite/",\ + "packageDependencies": [\ + ["iconv-lite", "npm:0.6.3"],\ + ["safer-buffer", "npm:2.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ignore", [\ + ["npm:5.3.2", {\ + "packageLocation": "../../../.yarn/berry/cache/ignore-npm-5.3.2-346d3ba017-10c0.zip/node_modules/ignore/",\ + "packageDependencies": [\ + ["ignore", "npm:5.3.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["import-fresh", [\ + ["npm:3.3.1", {\ + "packageLocation": "../../../.yarn/berry/cache/import-fresh-npm-3.3.1-1916794950-10c0.zip/node_modules/import-fresh/",\ + "packageDependencies": [\ + ["import-fresh", "npm:3.3.1"],\ + ["parent-module", "npm:1.0.1"],\ + ["resolve-from", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["import-local", [\ + ["npm:3.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/import-local-npm-3.2.0-bf54ec7842-10c0.zip/node_modules/import-local/",\ + "packageDependencies": [\ + ["import-local", "npm:3.2.0"],\ + ["pkg-dir", "npm:4.2.0"],\ + ["resolve-cwd", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["imurmurhash", [\ + ["npm:0.1.4", {\ + "packageLocation": "../../../.yarn/berry/cache/imurmurhash-npm-0.1.4-610c5068a0-10c0.zip/node_modules/imurmurhash/",\ + "packageDependencies": [\ + ["imurmurhash", "npm:0.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["inflight", [\ + ["npm:1.0.6", {\ + "packageLocation": "../../../.yarn/berry/cache/inflight-npm-1.0.6-ccedb4b908-10c0.zip/node_modules/inflight/",\ + "packageDependencies": [\ + ["inflight", "npm:1.0.6"],\ + ["once", "npm:1.4.0"],\ + ["wrappy", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["inherits", [\ + ["npm:2.0.4", {\ + "packageLocation": "../../../.yarn/berry/cache/inherits-npm-2.0.4-c66b3957a0-10c0.zip/node_modules/inherits/",\ + "packageDependencies": [\ + ["inherits", "npm:2.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["internal-slot", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/internal-slot-npm-1.1.0-269ac0e8be-10c0.zip/node_modules/internal-slot/",\ + "packageDependencies": [\ + ["es-errors", "npm:1.3.0"],\ + ["hasown", "npm:2.0.2"],\ + ["internal-slot", "npm:1.1.0"],\ + ["side-channel", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ip-address", [\ + ["npm:9.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/ip-address-npm-9.0.5-9fa024d42a-10c0.zip/node_modules/ip-address/",\ + "packageDependencies": [\ + ["ip-address", "npm:9.0.5"],\ + ["jsbn", "npm:1.1.0"],\ + ["sprintf-js", "npm:1.1.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-array-buffer", [\ + ["npm:3.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/is-array-buffer-npm-3.0.5-8f0828e156-10c0.zip/node_modules/is-array-buffer/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.8"],\ + ["call-bound", "npm:1.0.4"],\ + ["get-intrinsic", "npm:1.3.0"],\ + ["is-array-buffer", "npm:3.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-arrayish", [\ + ["npm:0.2.1", {\ + "packageLocation": "../../../.yarn/berry/cache/is-arrayish-npm-0.2.1-23927dfb15-10c0.zip/node_modules/is-arrayish/",\ + "packageDependencies": [\ + ["is-arrayish", "npm:0.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-async-function", [\ + ["npm:2.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/is-async-function-npm-2.1.1-547309fbf2-10c0.zip/node_modules/is-async-function/",\ + "packageDependencies": [\ + ["async-function", "npm:1.0.0"],\ + ["call-bound", "npm:1.0.4"],\ + ["get-proto", "npm:1.0.1"],\ + ["has-tostringtag", "npm:1.0.2"],\ + ["is-async-function", "npm:2.1.1"],\ + ["safe-regex-test", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-bigint", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/is-bigint-npm-1.1.0-963b4e89e1-10c0.zip/node_modules/is-bigint/",\ + "packageDependencies": [\ + ["has-bigints", "npm:1.1.0"],\ + ["is-bigint", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-boolean-object", [\ + ["npm:1.2.2", {\ + "packageLocation": "../../../.yarn/berry/cache/is-boolean-object-npm-1.2.2-ceb8c82b17-10c0.zip/node_modules/is-boolean-object/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["has-tostringtag", "npm:1.0.2"],\ + ["is-boolean-object", "npm:1.2.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-builtin-module", [\ + ["npm:3.2.1", {\ + "packageLocation": "../../../.yarn/berry/cache/is-builtin-module-npm-3.2.1-2f92a5d353-10c0.zip/node_modules/is-builtin-module/",\ + "packageDependencies": [\ + ["builtin-modules", "npm:3.3.0"],\ + ["is-builtin-module", "npm:3.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-callable", [\ + ["npm:1.2.7", {\ + "packageLocation": "../../../.yarn/berry/cache/is-callable-npm-1.2.7-808a303e61-10c0.zip/node_modules/is-callable/",\ + "packageDependencies": [\ + ["is-callable", "npm:1.2.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-core-module", [\ + ["npm:2.16.1", {\ + "packageLocation": "../../../.yarn/berry/cache/is-core-module-npm-2.16.1-a54837229e-10c0.zip/node_modules/is-core-module/",\ + "packageDependencies": [\ + ["hasown", "npm:2.0.2"],\ + ["is-core-module", "npm:2.16.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-data-view", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/is-data-view-npm-1.0.2-8a9e34c5e6-10c0.zip/node_modules/is-data-view/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["get-intrinsic", "npm:1.3.0"],\ + ["is-data-view", "npm:1.0.2"],\ + ["is-typed-array", "npm:1.1.15"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-date-object", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/is-date-object-npm-1.1.0-c444eba828-10c0.zip/node_modules/is-date-object/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["has-tostringtag", "npm:1.0.2"],\ + ["is-date-object", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-extglob", [\ + ["npm:2.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/is-extglob-npm-2.1.1-0870ea68b5-10c0.zip/node_modules/is-extglob/",\ + "packageDependencies": [\ + ["is-extglob", "npm:2.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-finalizationregistry", [\ + ["npm:1.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/is-finalizationregistry-npm-1.1.1-f9cad6c9aa-10c0.zip/node_modules/is-finalizationregistry/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["is-finalizationregistry", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-fullwidth-code-point", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-10c0.zip/node_modules/is-fullwidth-code-point/",\ + "packageDependencies": [\ + ["is-fullwidth-code-point", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-generator-fn", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/is-generator-fn-npm-2.1.0-37895c2d2b-10c0.zip/node_modules/is-generator-fn/",\ + "packageDependencies": [\ + ["is-generator-fn", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-generator-function", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/is-generator-function-npm-1.1.0-e96e2ba973-10c0.zip/node_modules/is-generator-function/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["get-proto", "npm:1.0.1"],\ + ["has-tostringtag", "npm:1.0.2"],\ + ["is-generator-function", "npm:1.1.0"],\ + ["safe-regex-test", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-glob", [\ + ["npm:4.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/is-glob-npm-4.0.3-cb87bf1bdb-10c0.zip/node_modules/is-glob/",\ + "packageDependencies": [\ + ["is-extglob", "npm:2.1.1"],\ + ["is-glob", "npm:4.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-map", [\ + ["npm:2.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/is-map-npm-2.0.3-9e061e76e3-10c0.zip/node_modules/is-map/",\ + "packageDependencies": [\ + ["is-map", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-module", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/is-module-npm-1.0.0-79ba918283-10c0.zip/node_modules/is-module/",\ + "packageDependencies": [\ + ["is-module", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-negative-zero", [\ + ["npm:2.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/is-negative-zero-npm-2.0.3-d06b09e322-10c0.zip/node_modules/is-negative-zero/",\ + "packageDependencies": [\ + ["is-negative-zero", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-number", [\ + ["npm:7.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/is-number-npm-7.0.0-060086935c-10c0.zip/node_modules/is-number/",\ + "packageDependencies": [\ + ["is-number", "npm:7.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-number-object", [\ + ["npm:1.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/is-number-object-npm-1.1.1-010c417fc6-10c0.zip/node_modules/is-number-object/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["has-tostringtag", "npm:1.0.2"],\ + ["is-number-object", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-path-inside", [\ + ["npm:3.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/is-path-inside-npm-3.0.3-2ea0ef44fd-10c0.zip/node_modules/is-path-inside/",\ + "packageDependencies": [\ + ["is-path-inside", "npm:3.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-reference", [\ + ["npm:1.2.1", {\ + "packageLocation": "../../../.yarn/berry/cache/is-reference-npm-1.2.1-87ca1743c8-10c0.zip/node_modules/is-reference/",\ + "packageDependencies": [\ + ["@types/estree", "npm:1.0.8"],\ + ["is-reference", "npm:1.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-regex", [\ + ["npm:1.2.1", {\ + "packageLocation": "../../../.yarn/berry/cache/is-regex-npm-1.2.1-70a484f2c8-10c0.zip/node_modules/is-regex/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["gopd", "npm:1.2.0"],\ + ["has-tostringtag", "npm:1.0.2"],\ + ["hasown", "npm:2.0.2"],\ + ["is-regex", "npm:1.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-set", [\ + ["npm:2.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/is-set-npm-2.0.3-1b72c9a855-10c0.zip/node_modules/is-set/",\ + "packageDependencies": [\ + ["is-set", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-shared-array-buffer", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../../.yarn/berry/cache/is-shared-array-buffer-npm-1.0.4-70c977585b-10c0.zip/node_modules/is-shared-array-buffer/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["is-shared-array-buffer", "npm:1.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-stream", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/is-stream-npm-2.0.1-c802db55e7-10c0.zip/node_modules/is-stream/",\ + "packageDependencies": [\ + ["is-stream", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-string", [\ + ["npm:1.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/is-string-npm-1.1.1-d2c4f9f448-10c0.zip/node_modules/is-string/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["has-tostringtag", "npm:1.0.2"],\ + ["is-string", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-symbol", [\ + ["npm:1.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/is-symbol-npm-1.1.1-f17b666ca9-10c0.zip/node_modules/is-symbol/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["has-symbols", "npm:1.1.0"],\ + ["is-symbol", "npm:1.1.1"],\ + ["safe-regex-test", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-typed-array", [\ + ["npm:1.1.15", {\ + "packageLocation": "../../../.yarn/berry/cache/is-typed-array-npm-1.1.15-33aa18e28f-10c0.zip/node_modules/is-typed-array/",\ + "packageDependencies": [\ + ["is-typed-array", "npm:1.1.15"],\ + ["which-typed-array", "npm:1.1.19"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-weakmap", [\ + ["npm:2.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/is-weakmap-npm-2.0.2-ced3cab2dc-10c0.zip/node_modules/is-weakmap/",\ + "packageDependencies": [\ + ["is-weakmap", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-weakref", [\ + ["npm:1.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/is-weakref-npm-1.1.1-e6458807f4-10c0.zip/node_modules/is-weakref/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["is-weakref", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-weakset", [\ + ["npm:2.0.4", {\ + "packageLocation": "../../../.yarn/berry/cache/is-weakset-npm-2.0.4-155b83e84b-10c0.zip/node_modules/is-weakset/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["get-intrinsic", "npm:1.3.0"],\ + ["is-weakset", "npm:2.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["isarray", [\ + ["npm:2.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/isarray-npm-2.0.5-4ba522212d-10c0.zip/node_modules/isarray/",\ + "packageDependencies": [\ + ["isarray", "npm:2.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["isexe", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/isexe-npm-2.0.0-b58870bd2e-10c0.zip/node_modules/isexe/",\ + "packageDependencies": [\ + ["isexe", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/isexe-npm-3.1.1-9c0061eead-10c0.zip/node_modules/isexe/",\ + "packageDependencies": [\ + ["isexe", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["istanbul-lib-coverage", [\ + ["npm:3.2.2", {\ + "packageLocation": "../../../.yarn/berry/cache/istanbul-lib-coverage-npm-3.2.2-5c0526e059-10c0.zip/node_modules/istanbul-lib-coverage/",\ + "packageDependencies": [\ + ["istanbul-lib-coverage", "npm:3.2.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["istanbul-lib-instrument", [\ + ["npm:6.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/istanbul-lib-instrument-npm-6.0.3-959dca7404-10c0.zip/node_modules/istanbul-lib-instrument/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/parser", "npm:7.28.0"],\ + ["@istanbuljs/schema", "npm:0.1.3"],\ + ["istanbul-lib-coverage", "npm:3.2.2"],\ + ["istanbul-lib-instrument", "npm:6.0.3"],\ + ["semver", "npm:7.7.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["istanbul-lib-report", [\ + ["npm:3.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/istanbul-lib-report-npm-3.0.1-b17446ab24-10c0.zip/node_modules/istanbul-lib-report/",\ + "packageDependencies": [\ + ["istanbul-lib-coverage", "npm:3.2.2"],\ + ["istanbul-lib-report", "npm:3.0.1"],\ + ["make-dir", "npm:4.0.0"],\ + ["supports-color", "npm:7.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["istanbul-lib-source-maps", [\ + ["npm:5.0.6", {\ + "packageLocation": "../../../.yarn/berry/cache/istanbul-lib-source-maps-npm-5.0.6-e18ad1aaae-10c0.zip/node_modules/istanbul-lib-source-maps/",\ + "packageDependencies": [\ + ["@jridgewell/trace-mapping", "npm:0.3.29"],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"],\ + ["istanbul-lib-coverage", "npm:3.2.2"],\ + ["istanbul-lib-source-maps", "npm:5.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["istanbul-reports", [\ + ["npm:3.1.7", {\ + "packageLocation": "../../../.yarn/berry/cache/istanbul-reports-npm-3.1.7-356486c0f4-10c0.zip/node_modules/istanbul-reports/",\ + "packageDependencies": [\ + ["html-escaper", "npm:2.0.2"],\ + ["istanbul-lib-report", "npm:3.0.1"],\ + ["istanbul-reports", "npm:3.1.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jackspeak", [\ + ["npm:3.4.3", {\ + "packageLocation": "../../../.yarn/berry/cache/jackspeak-npm-3.4.3-546bfad080-10c0.zip/node_modules/jackspeak/",\ + "packageDependencies": [\ + ["@isaacs/cliui", "npm:8.0.2"],\ + ["@pkgjs/parseargs", "npm:0.11.0"],\ + ["jackspeak", "npm:3.4.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-npm-30.0.5-5a93e850fa-10c0.zip/node_modules/jest/",\ + "packageDependencies": [\ + ["jest", "npm:30.0.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:30.0.5", {\ + "packageLocation": "./.yarn/__virtual__/jest-virtual-58c24a0b8a/4/.yarn/berry/cache/jest-npm-30.0.5-5a93e850fa-10c0.zip/node_modules/jest/",\ + "packageDependencies": [\ + ["@jest/core", "virtual:58c24a0b8aeedaf0c7a8d6d9ee7817c6ff9fed4cbebc557ca5ece2436be1957f7acdfa37681b3623cc826c315bb3b70c44695a943d4308ffdb7c4832d4dbae40#npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/node-notifier", null],\ + ["import-local", "npm:3.2.0"],\ + ["jest", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:30.0.5"],\ + ["jest-cli", "virtual:58c24a0b8aeedaf0c7a8d6d9ee7817c6ff9fed4cbebc557ca5ece2436be1957f7acdfa37681b3623cc826c315bb3b70c44695a943d4308ffdb7c4832d4dbae40#npm:30.0.5"],\ + ["node-notifier", null]\ + ],\ + "packagePeers": [\ + "@types/node-notifier",\ + "node-notifier"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-changed-files", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-changed-files-npm-30.0.5-7d8d9ad654-10c0.zip/node_modules/jest-changed-files/",\ + "packageDependencies": [\ + ["execa", "npm:5.1.1"],\ + ["jest-changed-files", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["p-limit", "npm:3.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-circus", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-circus-npm-30.0.5-f1541aa9fe-10c0.zip/node_modules/jest-circus/",\ + "packageDependencies": [\ + ["@jest/environment", "npm:30.0.5"],\ + ["@jest/expect", "npm:30.0.5"],\ + ["@jest/test-result", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/node", "npm:24.2.1"],\ + ["chalk", "npm:4.1.2"],\ + ["co", "npm:4.6.0"],\ + ["dedent", "virtual:f1541aa9fef8c5b43a5e4d4aac70244006c53060ded7550efbbe866b587daa2bf824ec28057c61a7f214ecbb54ab3e4b68a9e6191ce19110c7b2bb9eee745831#npm:1.6.0"],\ + ["is-generator-fn", "npm:2.1.0"],\ + ["jest-circus", "npm:30.0.5"],\ + ["jest-each", "npm:30.0.5"],\ + ["jest-matcher-utils", "npm:30.0.5"],\ + ["jest-message-util", "npm:30.0.5"],\ + ["jest-runtime", "npm:30.0.5"],\ + ["jest-snapshot", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["p-limit", "npm:3.1.0"],\ + ["pretty-format", "npm:30.0.5"],\ + ["pure-rand", "npm:7.0.1"],\ + ["slash", "npm:3.0.0"],\ + ["stack-utils", "npm:2.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-cli", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-cli-npm-30.0.5-724a926653-10c0.zip/node_modules/jest-cli/",\ + "packageDependencies": [\ + ["jest-cli", "npm:30.0.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:58c24a0b8aeedaf0c7a8d6d9ee7817c6ff9fed4cbebc557ca5ece2436be1957f7acdfa37681b3623cc826c315bb3b70c44695a943d4308ffdb7c4832d4dbae40#npm:30.0.5", {\ + "packageLocation": "./.yarn/__virtual__/jest-cli-virtual-a03b770844/4/.yarn/berry/cache/jest-cli-npm-30.0.5-724a926653-10c0.zip/node_modules/jest-cli/",\ + "packageDependencies": [\ + ["@jest/core", "virtual:58c24a0b8aeedaf0c7a8d6d9ee7817c6ff9fed4cbebc557ca5ece2436be1957f7acdfa37681b3623cc826c315bb3b70c44695a943d4308ffdb7c4832d4dbae40#npm:30.0.5"],\ + ["@jest/test-result", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/node-notifier", null],\ + ["chalk", "npm:4.1.2"],\ + ["exit-x", "npm:0.2.2"],\ + ["import-local", "npm:3.2.0"],\ + ["jest-cli", "virtual:58c24a0b8aeedaf0c7a8d6d9ee7817c6ff9fed4cbebc557ca5ece2436be1957f7acdfa37681b3623cc826c315bb3b70c44695a943d4308ffdb7c4832d4dbae40#npm:30.0.5"],\ + ["jest-config", "virtual:a03b770844b12c4c6acad7e4575a39fafcfcdf14b108235bbddf3897f896e18cd9f3023ddd36eb890d8f5466acee4184c6241ed3636b913b2918512a023900d8#npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["jest-validate", "npm:30.0.5"],\ + ["node-notifier", null],\ + ["yargs", "npm:17.7.2"]\ + ],\ + "packagePeers": [\ + "@types/node-notifier",\ + "node-notifier"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-config", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-config-npm-30.0.5-c544726592-10c0.zip/node_modules/jest-config/",\ + "packageDependencies": [\ + ["jest-config", "npm:30.0.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:21278dafe1dd97eeef64edb10ecfece410dd8deb9f159d1d3b2f70f87c4a7067514a1fd90ca04f207453603e3a09addef214a986e896c17379a43aeb79d3fea7#npm:30.0.5", {\ + "packageLocation": "./.yarn/__virtual__/jest-config-virtual-5a9d5f26d1/4/.yarn/berry/cache/jest-config-npm-30.0.5-c544726592-10c0.zip/node_modules/jest-config/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@jest/get-type", "npm:30.0.1"],\ + ["@jest/pattern", "npm:30.0.1"],\ + ["@jest/test-sequencer", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/esbuild-register", null],\ + ["@types/node", "npm:24.2.1"],\ + ["@types/ts-node", null],\ + ["babel-jest", "virtual:5a9d5f26d12d9e6b79dc62af2b9606f8146e7aca46a0372d52ddf11cec77e4b6afd3ce628f01274f9a58cdcaa17c49cabd140248e5d367f5a5603a1ee5f60a79#npm:30.0.5"],\ + ["chalk", "npm:4.1.2"],\ + ["ci-info", "npm:4.3.0"],\ + ["deepmerge", "npm:4.3.1"],\ + ["esbuild-register", null],\ + ["glob", "npm:10.4.5"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["jest-circus", "npm:30.0.5"],\ + ["jest-config", "virtual:21278dafe1dd97eeef64edb10ecfece410dd8deb9f159d1d3b2f70f87c4a7067514a1fd90ca04f207453603e3a09addef214a986e896c17379a43aeb79d3fea7#npm:30.0.5"],\ + ["jest-docblock", "npm:30.0.1"],\ + ["jest-environment-node", "npm:30.0.5"],\ + ["jest-regex-util", "npm:30.0.1"],\ + ["jest-resolve", "npm:30.0.5"],\ + ["jest-runner", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["jest-validate", "npm:30.0.5"],\ + ["micromatch", "npm:4.0.8"],\ + ["parse-json", "npm:5.2.0"],\ + ["pretty-format", "npm:30.0.5"],\ + ["slash", "npm:3.0.0"],\ + ["strip-json-comments", "npm:3.1.1"],\ + ["ts-node", null]\ + ],\ + "packagePeers": [\ + "@types/esbuild-register",\ + "@types/node",\ + "@types/ts-node",\ + "esbuild-register",\ + "ts-node"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:a03b770844b12c4c6acad7e4575a39fafcfcdf14b108235bbddf3897f896e18cd9f3023ddd36eb890d8f5466acee4184c6241ed3636b913b2918512a023900d8#npm:30.0.5", {\ + "packageLocation": "./.yarn/__virtual__/jest-config-virtual-52b9ddaa31/4/.yarn/berry/cache/jest-config-npm-30.0.5-c544726592-10c0.zip/node_modules/jest-config/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@jest/get-type", "npm:30.0.1"],\ + ["@jest/pattern", "npm:30.0.1"],\ + ["@jest/test-sequencer", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/esbuild-register", null],\ + ["@types/node", null],\ + ["@types/ts-node", null],\ + ["babel-jest", "virtual:5a9d5f26d12d9e6b79dc62af2b9606f8146e7aca46a0372d52ddf11cec77e4b6afd3ce628f01274f9a58cdcaa17c49cabd140248e5d367f5a5603a1ee5f60a79#npm:30.0.5"],\ + ["chalk", "npm:4.1.2"],\ + ["ci-info", "npm:4.3.0"],\ + ["deepmerge", "npm:4.3.1"],\ + ["esbuild-register", null],\ + ["glob", "npm:10.4.5"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["jest-circus", "npm:30.0.5"],\ + ["jest-config", "virtual:a03b770844b12c4c6acad7e4575a39fafcfcdf14b108235bbddf3897f896e18cd9f3023ddd36eb890d8f5466acee4184c6241ed3636b913b2918512a023900d8#npm:30.0.5"],\ + ["jest-docblock", "npm:30.0.1"],\ + ["jest-environment-node", "npm:30.0.5"],\ + ["jest-regex-util", "npm:30.0.1"],\ + ["jest-resolve", "npm:30.0.5"],\ + ["jest-runner", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["jest-validate", "npm:30.0.5"],\ + ["micromatch", "npm:4.0.8"],\ + ["parse-json", "npm:5.2.0"],\ + ["pretty-format", "npm:30.0.5"],\ + ["slash", "npm:3.0.0"],\ + ["strip-json-comments", "npm:3.1.1"],\ + ["ts-node", null]\ + ],\ + "packagePeers": [\ + "@types/esbuild-register",\ + "@types/node",\ + "@types/ts-node",\ + "esbuild-register",\ + "ts-node"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-diff", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-diff-npm-30.0.5-59ca443133-10c0.zip/node_modules/jest-diff/",\ + "packageDependencies": [\ + ["@jest/diff-sequences", "npm:30.0.1"],\ + ["@jest/get-type", "npm:30.0.1"],\ + ["chalk", "npm:4.1.2"],\ + ["jest-diff", "npm:30.0.5"],\ + ["pretty-format", "npm:30.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-docblock", [\ + ["npm:30.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-docblock-npm-30.0.1-86756f2942-10c0.zip/node_modules/jest-docblock/",\ + "packageDependencies": [\ + ["detect-newline", "npm:3.1.0"],\ + ["jest-docblock", "npm:30.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-each", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-each-npm-30.0.5-e25cb3c983-10c0.zip/node_modules/jest-each/",\ + "packageDependencies": [\ + ["@jest/get-type", "npm:30.0.1"],\ + ["@jest/types", "npm:30.0.5"],\ + ["chalk", "npm:4.1.2"],\ + ["jest-each", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["pretty-format", "npm:30.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-environment-node", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-environment-node-npm-30.0.5-29644942d7-10c0.zip/node_modules/jest-environment-node/",\ + "packageDependencies": [\ + ["@jest/environment", "npm:30.0.5"],\ + ["@jest/fake-timers", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/node", "npm:24.2.1"],\ + ["jest-environment-node", "npm:30.0.5"],\ + ["jest-mock", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["jest-validate", "npm:30.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-haste-map", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-haste-map-npm-30.0.5-ff2b66456e-10c0.zip/node_modules/jest-haste-map/",\ + "packageDependencies": [\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/node", "npm:24.2.1"],\ + ["anymatch", "npm:3.1.3"],\ + ["fb-watchman", "npm:2.0.2"],\ + ["fsevents", "patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["jest-haste-map", "npm:30.0.5"],\ + ["jest-regex-util", "npm:30.0.1"],\ + ["jest-util", "npm:30.0.5"],\ + ["jest-worker", "npm:30.0.5"],\ + ["micromatch", "npm:4.0.8"],\ + ["walker", "npm:1.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-leak-detector", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-leak-detector-npm-30.0.5-2ac9d13ca9-10c0.zip/node_modules/jest-leak-detector/",\ + "packageDependencies": [\ + ["@jest/get-type", "npm:30.0.1"],\ + ["jest-leak-detector", "npm:30.0.5"],\ + ["pretty-format", "npm:30.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-matcher-utils", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-matcher-utils-npm-30.0.5-cd329126a2-10c0.zip/node_modules/jest-matcher-utils/",\ + "packageDependencies": [\ + ["@jest/get-type", "npm:30.0.1"],\ + ["chalk", "npm:4.1.2"],\ + ["jest-diff", "npm:30.0.5"],\ + ["jest-matcher-utils", "npm:30.0.5"],\ + ["pretty-format", "npm:30.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-message-util", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-message-util-npm-30.0.5-e3f1e713c7-10c0.zip/node_modules/jest-message-util/",\ + "packageDependencies": [\ + ["@babel/code-frame", "npm:7.27.1"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/stack-utils", "npm:2.0.3"],\ + ["chalk", "npm:4.1.2"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["jest-message-util", "npm:30.0.5"],\ + ["micromatch", "npm:4.0.8"],\ + ["pretty-format", "npm:30.0.5"],\ + ["slash", "npm:3.0.0"],\ + ["stack-utils", "npm:2.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-mock", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-mock-npm-30.0.5-0573f7a688-10c0.zip/node_modules/jest-mock/",\ + "packageDependencies": [\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/node", "npm:24.2.1"],\ + ["jest-mock", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-pnp-resolver", [\ + ["npm:1.2.3", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-pnp-resolver-npm-1.2.3-70e06bf27c-10c0.zip/node_modules/jest-pnp-resolver/",\ + "packageDependencies": [\ + ["jest-pnp-resolver", "npm:1.2.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:16edfd2d1add4b881c6d8750b890ebcb724880716c529a27f7c7e7775eab11c4aed9daeef0d6bd204607059d94d8e98ce033429d311a67498b21c5fddc9e6a17#npm:1.2.3", {\ + "packageLocation": "./.yarn/__virtual__/jest-pnp-resolver-virtual-8ba12080d7/4/.yarn/berry/cache/jest-pnp-resolver-npm-1.2.3-70e06bf27c-10c0.zip/node_modules/jest-pnp-resolver/",\ + "packageDependencies": [\ + ["@types/jest-resolve", null],\ + ["jest-pnp-resolver", "virtual:16edfd2d1add4b881c6d8750b890ebcb724880716c529a27f7c7e7775eab11c4aed9daeef0d6bd204607059d94d8e98ce033429d311a67498b21c5fddc9e6a17#npm:1.2.3"],\ + ["jest-resolve", "npm:30.0.5"]\ + ],\ + "packagePeers": [\ + "@types/jest-resolve",\ + "jest-resolve"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-regex-util", [\ + ["npm:30.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-regex-util-npm-30.0.1-af482a9a29-10c0.zip/node_modules/jest-regex-util/",\ + "packageDependencies": [\ + ["jest-regex-util", "npm:30.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-resolve", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-resolve-npm-30.0.5-16edfd2d1a-10c0.zip/node_modules/jest-resolve/",\ + "packageDependencies": [\ + ["chalk", "npm:4.1.2"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["jest-haste-map", "npm:30.0.5"],\ + ["jest-pnp-resolver", "virtual:16edfd2d1add4b881c6d8750b890ebcb724880716c529a27f7c7e7775eab11c4aed9daeef0d6bd204607059d94d8e98ce033429d311a67498b21c5fddc9e6a17#npm:1.2.3"],\ + ["jest-resolve", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["jest-validate", "npm:30.0.5"],\ + ["slash", "npm:3.0.0"],\ + ["unrs-resolver", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-resolve-dependencies", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-resolve-dependencies-npm-30.0.5-3e7234973e-10c0.zip/node_modules/jest-resolve-dependencies/",\ + "packageDependencies": [\ + ["jest-regex-util", "npm:30.0.1"],\ + ["jest-resolve-dependencies", "npm:30.0.5"],\ + ["jest-snapshot", "npm:30.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-runner", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-runner-npm-30.0.5-581af13da2-10c0.zip/node_modules/jest-runner/",\ + "packageDependencies": [\ + ["@jest/console", "npm:30.0.5"],\ + ["@jest/environment", "npm:30.0.5"],\ + ["@jest/test-result", "npm:30.0.5"],\ + ["@jest/transform", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/node", "npm:24.2.1"],\ + ["chalk", "npm:4.1.2"],\ + ["emittery", "npm:0.13.1"],\ + ["exit-x", "npm:0.2.2"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["jest-docblock", "npm:30.0.1"],\ + ["jest-environment-node", "npm:30.0.5"],\ + ["jest-haste-map", "npm:30.0.5"],\ + ["jest-leak-detector", "npm:30.0.5"],\ + ["jest-message-util", "npm:30.0.5"],\ + ["jest-resolve", "npm:30.0.5"],\ + ["jest-runner", "npm:30.0.5"],\ + ["jest-runtime", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["jest-watcher", "npm:30.0.5"],\ + ["jest-worker", "npm:30.0.5"],\ + ["p-limit", "npm:3.1.0"],\ + ["source-map-support", "npm:0.5.13"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-runtime", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-runtime-npm-30.0.5-bb8ab9d0d3-10c0.zip/node_modules/jest-runtime/",\ + "packageDependencies": [\ + ["@jest/environment", "npm:30.0.5"],\ + ["@jest/fake-timers", "npm:30.0.5"],\ + ["@jest/globals", "npm:30.0.5"],\ + ["@jest/source-map", "npm:30.0.1"],\ + ["@jest/test-result", "npm:30.0.5"],\ + ["@jest/transform", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/node", "npm:24.2.1"],\ + ["chalk", "npm:4.1.2"],\ + ["cjs-module-lexer", "npm:2.1.0"],\ + ["collect-v8-coverage", "npm:1.0.2"],\ + ["glob", "npm:10.4.5"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["jest-haste-map", "npm:30.0.5"],\ + ["jest-message-util", "npm:30.0.5"],\ + ["jest-mock", "npm:30.0.5"],\ + ["jest-regex-util", "npm:30.0.1"],\ + ["jest-resolve", "npm:30.0.5"],\ + ["jest-runtime", "npm:30.0.5"],\ + ["jest-snapshot", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["slash", "npm:3.0.0"],\ + ["strip-bom", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-snapshot", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-snapshot-npm-30.0.5-052de7ae97-10c0.zip/node_modules/jest-snapshot/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.28.0"],\ + ["@babel/generator", "npm:7.28.0"],\ + ["@babel/plugin-syntax-jsx", "virtual:052de7ae97c223e584de278807e78334b8208788fbec8f7787702dbb0606bbcef4558098868025ee5d5fb21679b84abb154ab06f42969dc884fcda1b084f35e0#npm:7.27.1"],\ + ["@babel/plugin-syntax-typescript", "virtual:052de7ae97c223e584de278807e78334b8208788fbec8f7787702dbb0606bbcef4558098868025ee5d5fb21679b84abb154ab06f42969dc884fcda1b084f35e0#npm:7.27.1"],\ + ["@babel/types", "npm:7.28.2"],\ + ["@jest/expect-utils", "npm:30.0.5"],\ + ["@jest/get-type", "npm:30.0.1"],\ + ["@jest/snapshot-utils", "npm:30.0.5"],\ + ["@jest/transform", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["babel-preset-current-node-syntax", "virtual:052de7ae97c223e584de278807e78334b8208788fbec8f7787702dbb0606bbcef4558098868025ee5d5fb21679b84abb154ab06f42969dc884fcda1b084f35e0#npm:1.2.0"],\ + ["chalk", "npm:4.1.2"],\ + ["expect", "npm:30.0.5"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["jest-diff", "npm:30.0.5"],\ + ["jest-matcher-utils", "npm:30.0.5"],\ + ["jest-message-util", "npm:30.0.5"],\ + ["jest-snapshot", "npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["pretty-format", "npm:30.0.5"],\ + ["semver", "npm:7.7.2"],\ + ["synckit", "npm:0.11.11"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-util", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-util-npm-30.0.5-8940b46e20-10c0.zip/node_modules/jest-util/",\ + "packageDependencies": [\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/node", "npm:24.2.1"],\ + ["chalk", "npm:4.1.2"],\ + ["ci-info", "npm:4.3.0"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["jest-util", "npm:30.0.5"],\ + ["picomatch", "npm:4.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-validate", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-validate-npm-30.0.5-a96e94c38e-10c0.zip/node_modules/jest-validate/",\ + "packageDependencies": [\ + ["@jest/get-type", "npm:30.0.1"],\ + ["@jest/types", "npm:30.0.5"],\ + ["camelcase", "npm:6.3.0"],\ + ["chalk", "npm:4.1.2"],\ + ["jest-validate", "npm:30.0.5"],\ + ["leven", "npm:3.1.0"],\ + ["pretty-format", "npm:30.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-watcher", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-watcher-npm-30.0.5-9b9837d4ea-10c0.zip/node_modules/jest-watcher/",\ + "packageDependencies": [\ + ["@jest/test-result", "npm:30.0.5"],\ + ["@jest/types", "npm:30.0.5"],\ + ["@types/node", "npm:24.2.1"],\ + ["ansi-escapes", "npm:4.3.2"],\ + ["chalk", "npm:4.1.2"],\ + ["emittery", "npm:0.13.1"],\ + ["jest-util", "npm:30.0.5"],\ + ["jest-watcher", "npm:30.0.5"],\ + ["string-length", "npm:4.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-worker", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/jest-worker-npm-30.0.5-dcae728924-10c0.zip/node_modules/jest-worker/",\ + "packageDependencies": [\ + ["@types/node", "npm:24.2.1"],\ + ["@ungap/structured-clone", "npm:1.3.0"],\ + ["jest-util", "npm:30.0.5"],\ + ["jest-worker", "npm:30.0.5"],\ + ["merge-stream", "npm:2.0.0"],\ + ["supports-color", "npm:8.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["js-base64", [\ + ["npm:3.7.7", {\ + "packageLocation": "../../../.yarn/berry/cache/js-base64-npm-3.7.7-641cff09f0-10c0.zip/node_modules/js-base64/",\ + "packageDependencies": [\ + ["js-base64", "npm:3.7.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["js-tokens", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/js-tokens-npm-4.0.0-0ac852e9e2-10c0.zip/node_modules/js-tokens/",\ + "packageDependencies": [\ + ["js-tokens", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["js-yaml", [\ + ["npm:3.14.1", {\ + "packageLocation": "../../../.yarn/berry/cache/js-yaml-npm-3.14.1-b968c6095e-10c0.zip/node_modules/js-yaml/",\ + "packageDependencies": [\ + ["argparse", "npm:1.0.10"],\ + ["esprima", "npm:4.0.1"],\ + ["js-yaml", "npm:3.14.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/js-yaml-npm-4.1.0-3606f32312-10c0.zip/node_modules/js-yaml/",\ + "packageDependencies": [\ + ["argparse", "npm:2.0.1"],\ + ["js-yaml", "npm:4.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jsbn", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/jsbn-npm-1.1.0-1da0181838-10c0.zip/node_modules/jsbn/",\ + "packageDependencies": [\ + ["jsbn", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jsesc", [\ + ["npm:3.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/jsesc-npm-3.0.2-3b3b74ec0d-10c0.zip/node_modules/jsesc/",\ + "packageDependencies": [\ + ["jsesc", "npm:3.0.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/jsesc-npm-3.1.0-2f4f998cd7-10c0.zip/node_modules/jsesc/",\ + "packageDependencies": [\ + ["jsesc", "npm:3.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["json-buffer", [\ + ["npm:3.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/json-buffer-npm-3.0.1-f8f6d20603-10c0.zip/node_modules/json-buffer/",\ + "packageDependencies": [\ + ["json-buffer", "npm:3.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["json-parse-even-better-errors", [\ + ["npm:2.3.1", {\ + "packageLocation": "../../../.yarn/berry/cache/json-parse-even-better-errors-npm-2.3.1-144d62256e-10c0.zip/node_modules/json-parse-even-better-errors/",\ + "packageDependencies": [\ + ["json-parse-even-better-errors", "npm:2.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["json-schema-traverse", [\ + ["npm:0.4.1", {\ + "packageLocation": "../../../.yarn/berry/cache/json-schema-traverse-npm-0.4.1-4759091693-10c0.zip/node_modules/json-schema-traverse/",\ + "packageDependencies": [\ + ["json-schema-traverse", "npm:0.4.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["json-stable-stringify-without-jsonify", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/json-stable-stringify-without-jsonify-npm-1.0.1-b65772b28b-10c0.zip/node_modules/json-stable-stringify-without-jsonify/",\ + "packageDependencies": [\ + ["json-stable-stringify-without-jsonify", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["json5", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/json5-npm-1.0.2-9607f93e30-10c0.zip/node_modules/json5/",\ + "packageDependencies": [\ + ["json5", "npm:1.0.2"],\ + ["minimist", "npm:1.2.8"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.2.3", {\ + "packageLocation": "../../../.yarn/berry/cache/json5-npm-2.2.3-9962c55073-10c0.zip/node_modules/json5/",\ + "packageDependencies": [\ + ["json5", "npm:2.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["keyv", [\ + ["npm:4.5.4", {\ + "packageLocation": "../../../.yarn/berry/cache/keyv-npm-4.5.4-4c8e2cf7f7-10c0.zip/node_modules/keyv/",\ + "packageDependencies": [\ + ["json-buffer", "npm:3.0.1"],\ + ["keyv", "npm:4.5.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["leven", [\ + ["npm:3.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/leven-npm-3.1.0-b7697736a3-10c0.zip/node_modules/leven/",\ + "packageDependencies": [\ + ["leven", "npm:3.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["levn", [\ + ["npm:0.4.1", {\ + "packageLocation": "../../../.yarn/berry/cache/levn-npm-0.4.1-d183b2d7bb-10c0.zip/node_modules/levn/",\ + "packageDependencies": [\ + ["levn", "npm:0.4.1"],\ + ["prelude-ls", "npm:1.2.1"],\ + ["type-check", "npm:0.4.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["lines-and-columns", [\ + ["npm:1.2.4", {\ + "packageLocation": "../../../.yarn/berry/cache/lines-and-columns-npm-1.2.4-d6c7cc5799-10c0.zip/node_modules/lines-and-columns/",\ + "packageDependencies": [\ + ["lines-and-columns", "npm:1.2.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["locate-path", [\ + ["npm:5.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/locate-path-npm-5.0.0-46580c43e4-10c0.zip/node_modules/locate-path/",\ + "packageDependencies": [\ + ["locate-path", "npm:5.0.0"],\ + ["p-locate", "npm:4.1.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/locate-path-npm-6.0.0-06a1e4c528-10c0.zip/node_modules/locate-path/",\ + "packageDependencies": [\ + ["locate-path", "npm:6.0.0"],\ + ["p-locate", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["lodash.debounce", [\ + ["npm:4.0.8", {\ + "packageLocation": "../../../.yarn/berry/cache/lodash.debounce-npm-4.0.8-f1d6e09799-10c0.zip/node_modules/lodash.debounce/",\ + "packageDependencies": [\ + ["lodash.debounce", "npm:4.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["lodash.memoize", [\ + ["npm:4.1.2", {\ + "packageLocation": "../../../.yarn/berry/cache/lodash.memoize-npm-4.1.2-0e6250041f-10c0.zip/node_modules/lodash.memoize/",\ + "packageDependencies": [\ + ["lodash.memoize", "npm:4.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["lodash.merge", [\ + ["npm:4.6.2", {\ + "packageLocation": "../../../.yarn/berry/cache/lodash.merge-npm-4.6.2-77cb4416bf-10c0.zip/node_modules/lodash.merge/",\ + "packageDependencies": [\ + ["lodash.merge", "npm:4.6.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["lru-cache", [\ + ["npm:10.4.3", {\ + "packageLocation": "../../../.yarn/berry/cache/lru-cache-npm-10.4.3-30c10b861a-10c0.zip/node_modules/lru-cache/",\ + "packageDependencies": [\ + ["lru-cache", "npm:10.4.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/lru-cache-npm-5.1.1-f475882a51-10c0.zip/node_modules/lru-cache/",\ + "packageDependencies": [\ + ["lru-cache", "npm:5.1.1"],\ + ["yallist", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["magic-string", [\ + ["npm:0.30.17", {\ + "packageLocation": "../../../.yarn/berry/cache/magic-string-npm-0.30.17-da1b7593b1-10c0.zip/node_modules/magic-string/",\ + "packageDependencies": [\ + ["@jridgewell/sourcemap-codec", "npm:1.5.4"],\ + ["magic-string", "npm:0.30.17"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["make-dir", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/make-dir-npm-4.0.0-ec3cd921cc-10c0.zip/node_modules/make-dir/",\ + "packageDependencies": [\ + ["make-dir", "npm:4.0.0"],\ + ["semver", "npm:7.7.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["make-error", [\ + ["npm:1.3.6", {\ + "packageLocation": "../../../.yarn/berry/cache/make-error-npm-1.3.6-ccb85d9458-10c0.zip/node_modules/make-error/",\ + "packageDependencies": [\ + ["make-error", "npm:1.3.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["make-fetch-happen", [\ + ["npm:14.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/make-fetch-happen-npm-14.0.3-23b30e8691-10c0.zip/node_modules/make-fetch-happen/",\ + "packageDependencies": [\ + ["@npmcli/agent", "npm:3.0.0"],\ + ["cacache", "npm:19.0.1"],\ + ["http-cache-semantics", "npm:4.2.0"],\ + ["make-fetch-happen", "npm:14.0.3"],\ + ["minipass", "npm:7.1.2"],\ + ["minipass-fetch", "npm:4.0.1"],\ + ["minipass-flush", "npm:1.0.5"],\ + ["minipass-pipeline", "npm:1.2.4"],\ + ["negotiator", "npm:1.0.0"],\ + ["proc-log", "npm:5.0.0"],\ + ["promise-retry", "npm:2.0.1"],\ + ["ssri", "npm:12.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["makeerror", [\ + ["npm:1.0.12", {\ + "packageLocation": "../../../.yarn/berry/cache/makeerror-npm-1.0.12-69abf085d7-10c0.zip/node_modules/makeerror/",\ + "packageDependencies": [\ + ["makeerror", "npm:1.0.12"],\ + ["tmpl", "npm:1.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["math-intrinsics", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/math-intrinsics-npm-1.1.0-9204d80e7d-10c0.zip/node_modules/math-intrinsics/",\ + "packageDependencies": [\ + ["math-intrinsics", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["merge-stream", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/merge-stream-npm-2.0.0-2ac83efea5-10c0.zip/node_modules/merge-stream/",\ + "packageDependencies": [\ + ["merge-stream", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["merge2", [\ + ["npm:1.4.1", {\ + "packageLocation": "../../../.yarn/berry/cache/merge2-npm-1.4.1-a2507bd06c-10c0.zip/node_modules/merge2/",\ + "packageDependencies": [\ + ["merge2", "npm:1.4.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["micromatch", [\ + ["npm:4.0.8", {\ + "packageLocation": "../../../.yarn/berry/cache/micromatch-npm-4.0.8-c9570e4aca-10c0.zip/node_modules/micromatch/",\ + "packageDependencies": [\ + ["braces", "npm:3.0.3"],\ + ["micromatch", "npm:4.0.8"],\ + ["picomatch", "npm:2.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["mimic-fn", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/mimic-fn-npm-2.1.0-4fbeb3abb4-10c0.zip/node_modules/mimic-fn/",\ + "packageDependencies": [\ + ["mimic-fn", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minimatch", [\ + ["npm:3.1.2", {\ + "packageLocation": "../../../.yarn/berry/cache/minimatch-npm-3.1.2-9405269906-10c0.zip/node_modules/minimatch/",\ + "packageDependencies": [\ + ["brace-expansion", "npm:1.1.12"],\ + ["minimatch", "npm:3.1.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:9.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/minimatch-npm-9.0.3-69d7d6fad5-10c0.zip/node_modules/minimatch/",\ + "packageDependencies": [\ + ["brace-expansion", "npm:2.0.2"],\ + ["minimatch", "npm:9.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:9.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/minimatch-npm-9.0.5-9aa93d97fa-10c0.zip/node_modules/minimatch/",\ + "packageDependencies": [\ + ["brace-expansion", "npm:2.0.2"],\ + ["minimatch", "npm:9.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minimist", [\ + ["npm:1.2.8", {\ + "packageLocation": "../../../.yarn/berry/cache/minimist-npm-1.2.8-d7af7b1dce-10c0.zip/node_modules/minimist/",\ + "packageDependencies": [\ + ["minimist", "npm:1.2.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass", [\ + ["npm:3.3.6", {\ + "packageLocation": "../../../.yarn/berry/cache/minipass-npm-3.3.6-b8d93a945b-10c0.zip/node_modules/minipass/",\ + "packageDependencies": [\ + ["minipass", "npm:3.3.6"],\ + ["yallist", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.1.2", {\ + "packageLocation": "../../../.yarn/berry/cache/minipass-npm-7.1.2-3a5327d36d-10c0.zip/node_modules/minipass/",\ + "packageDependencies": [\ + ["minipass", "npm:7.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass-collect", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/minipass-collect-npm-2.0.1-73d3907e40-10c0.zip/node_modules/minipass-collect/",\ + "packageDependencies": [\ + ["minipass", "npm:7.1.2"],\ + ["minipass-collect", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass-fetch", [\ + ["npm:4.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/minipass-fetch-npm-4.0.1-ce1d15e957-10c0.zip/node_modules/minipass-fetch/",\ + "packageDependencies": [\ + ["encoding", "npm:0.1.13"],\ + ["minipass", "npm:7.1.2"],\ + ["minipass-fetch", "npm:4.0.1"],\ + ["minipass-sized", "npm:1.0.3"],\ + ["minizlib", "npm:3.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass-flush", [\ + ["npm:1.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/minipass-flush-npm-1.0.5-efe79d9826-10c0.zip/node_modules/minipass-flush/",\ + "packageDependencies": [\ + ["minipass", "npm:3.3.6"],\ + ["minipass-flush", "npm:1.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass-pipeline", [\ + ["npm:1.2.4", {\ + "packageLocation": "../../../.yarn/berry/cache/minipass-pipeline-npm-1.2.4-5924cb077f-10c0.zip/node_modules/minipass-pipeline/",\ + "packageDependencies": [\ + ["minipass", "npm:3.3.6"],\ + ["minipass-pipeline", "npm:1.2.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass-sized", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/minipass-sized-npm-1.0.3-306d86f432-10c0.zip/node_modules/minipass-sized/",\ + "packageDependencies": [\ + ["minipass", "npm:3.3.6"],\ + ["minipass-sized", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minizlib", [\ + ["npm:3.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/minizlib-npm-3.0.2-f56e815013-10c0.zip/node_modules/minizlib/",\ + "packageDependencies": [\ + ["minipass", "npm:7.1.2"],\ + ["minizlib", "npm:3.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["mkdirp", [\ + ["npm:3.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/mkdirp-npm-3.0.1-f94bfa769e-10c0.zip/node_modules/mkdirp/",\ + "packageDependencies": [\ + ["mkdirp", "npm:3.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ms", [\ + ["npm:2.1.3", {\ + "packageLocation": "../../../.yarn/berry/cache/ms-npm-2.1.3-81ff3cfac1-10c0.zip/node_modules/ms/",\ + "packageDependencies": [\ + ["ms", "npm:2.1.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["napi-postinstall", [\ + ["npm:0.3.3", {\ + "packageLocation": "../../../.yarn/berry/cache/napi-postinstall-npm-0.3.3-21669af7d2-10c0.zip/node_modules/napi-postinstall/",\ + "packageDependencies": [\ + ["napi-postinstall", "npm:0.3.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["natural-compare", [\ + ["npm:1.4.0", {\ + "packageLocation": "../../../.yarn/berry/cache/natural-compare-npm-1.4.0-97b75b362d-10c0.zip/node_modules/natural-compare/",\ + "packageDependencies": [\ + ["natural-compare", "npm:1.4.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["negotiator", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/negotiator-npm-1.0.0-47d727e27e-10c0.zip/node_modules/negotiator/",\ + "packageDependencies": [\ + ["negotiator", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["neo-async", [\ + ["npm:2.6.2", {\ + "packageLocation": "../../../.yarn/berry/cache/neo-async-npm-2.6.2-75d6902586-10c0.zip/node_modules/neo-async/",\ + "packageDependencies": [\ + ["neo-async", "npm:2.6.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["node-gyp", [\ + ["npm:11.3.0", {\ + "packageLocation": "./.yarn/unplugged/node-gyp-npm-11.3.0-b555487fd9/node_modules/node-gyp/",\ + "packageDependencies": [\ + ["env-paths", "npm:2.2.1"],\ + ["exponential-backoff", "npm:3.1.2"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["make-fetch-happen", "npm:14.0.3"],\ + ["node-gyp", "npm:11.3.0"],\ + ["nopt", "npm:8.1.0"],\ + ["proc-log", "npm:5.0.0"],\ + ["semver", "npm:7.7.2"],\ + ["tar", "npm:7.4.3"],\ + ["tinyglobby", "npm:0.2.14"],\ + ["which", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["node-int64", [\ + ["npm:0.4.0", {\ + "packageLocation": "../../../.yarn/berry/cache/node-int64-npm-0.4.0-0dc04ec3b2-10c0.zip/node_modules/node-int64/",\ + "packageDependencies": [\ + ["node-int64", "npm:0.4.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["node-releases", [\ + ["npm:2.0.19", {\ + "packageLocation": "../../../.yarn/berry/cache/node-releases-npm-2.0.19-b123ed6240-10c0.zip/node_modules/node-releases/",\ + "packageDependencies": [\ + ["node-releases", "npm:2.0.19"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["nopt", [\ + ["npm:8.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/nopt-npm-8.1.0-5570ef63cd-10c0.zip/node_modules/nopt/",\ + "packageDependencies": [\ + ["abbrev", "npm:3.0.1"],\ + ["nopt", "npm:8.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["normalize-path", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/normalize-path-npm-3.0.0-658ba7d77f-10c0.zip/node_modules/normalize-path/",\ + "packageDependencies": [\ + ["normalize-path", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["npm-run-path", [\ + ["npm:4.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/npm-run-path-npm-4.0.1-7aebd8bab3-10c0.zip/node_modules/npm-run-path/",\ + "packageDependencies": [\ + ["npm-run-path", "npm:4.0.1"],\ + ["path-key", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["object-inspect", [\ + ["npm:1.13.4", {\ + "packageLocation": "../../../.yarn/berry/cache/object-inspect-npm-1.13.4-4e741f9806-10c0.zip/node_modules/object-inspect/",\ + "packageDependencies": [\ + ["object-inspect", "npm:1.13.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["object-keys", [\ + ["npm:1.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/object-keys-npm-1.1.1-1bf2f1be93-10c0.zip/node_modules/object-keys/",\ + "packageDependencies": [\ + ["object-keys", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["object.assign", [\ + ["npm:4.1.7", {\ + "packageLocation": "../../../.yarn/berry/cache/object.assign-npm-4.1.7-a3464be41b-10c0.zip/node_modules/object.assign/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.8"],\ + ["call-bound", "npm:1.0.4"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-object-atoms", "npm:1.1.1"],\ + ["has-symbols", "npm:1.1.0"],\ + ["object-keys", "npm:1.1.1"],\ + ["object.assign", "npm:4.1.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["object.fromentries", [\ + ["npm:2.0.8", {\ + "packageLocation": "../../../.yarn/berry/cache/object.fromentries-npm-2.0.8-8f6e2db04a-10c0.zip/node_modules/object.fromentries/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.8"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-abstract", "npm:1.24.0"],\ + ["es-object-atoms", "npm:1.1.1"],\ + ["object.fromentries", "npm:2.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["object.groupby", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/object.groupby-npm-1.0.3-d5feb41454-10c0.zip/node_modules/object.groupby/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.8"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-abstract", "npm:1.24.0"],\ + ["object.groupby", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["object.values", [\ + ["npm:1.2.1", {\ + "packageLocation": "../../../.yarn/berry/cache/object.values-npm-1.2.1-cd21c82f2d-10c0.zip/node_modules/object.values/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.8"],\ + ["call-bound", "npm:1.0.4"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-object-atoms", "npm:1.1.1"],\ + ["object.values", "npm:1.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["once", [\ + ["npm:1.4.0", {\ + "packageLocation": "../../../.yarn/berry/cache/once-npm-1.4.0-ccf03ef07a-10c0.zip/node_modules/once/",\ + "packageDependencies": [\ + ["once", "npm:1.4.0"],\ + ["wrappy", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["onetime", [\ + ["npm:5.1.2", {\ + "packageLocation": "../../../.yarn/berry/cache/onetime-npm-5.1.2-3ed148fa42-10c0.zip/node_modules/onetime/",\ + "packageDependencies": [\ + ["mimic-fn", "npm:2.1.0"],\ + ["onetime", "npm:5.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["optionator", [\ + ["npm:0.9.4", {\ + "packageLocation": "../../../.yarn/berry/cache/optionator-npm-0.9.4-1f114b00e8-10c0.zip/node_modules/optionator/",\ + "packageDependencies": [\ + ["deep-is", "npm:0.1.4"],\ + ["fast-levenshtein", "npm:2.0.6"],\ + ["levn", "npm:0.4.1"],\ + ["optionator", "npm:0.9.4"],\ + ["prelude-ls", "npm:1.2.1"],\ + ["type-check", "npm:0.4.0"],\ + ["word-wrap", "npm:1.2.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["own-keys", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/own-keys-npm-1.0.1-1253f9b344-10c0.zip/node_modules/own-keys/",\ + "packageDependencies": [\ + ["get-intrinsic", "npm:1.3.0"],\ + ["object-keys", "npm:1.1.1"],\ + ["own-keys", "npm:1.0.1"],\ + ["safe-push-apply", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["p-limit", [\ + ["npm:2.3.0", {\ + "packageLocation": "../../../.yarn/berry/cache/p-limit-npm-2.3.0-94a0310039-10c0.zip/node_modules/p-limit/",\ + "packageDependencies": [\ + ["p-limit", "npm:2.3.0"],\ + ["p-try", "npm:2.2.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/p-limit-npm-3.1.0-05d2ede37f-10c0.zip/node_modules/p-limit/",\ + "packageDependencies": [\ + ["p-limit", "npm:3.1.0"],\ + ["yocto-queue", "npm:0.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["p-locate", [\ + ["npm:4.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/p-locate-npm-4.1.0-eec6872537-10c0.zip/node_modules/p-locate/",\ + "packageDependencies": [\ + ["p-limit", "npm:2.3.0"],\ + ["p-locate", "npm:4.1.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/p-locate-npm-5.0.0-92cc7c7a3e-10c0.zip/node_modules/p-locate/",\ + "packageDependencies": [\ + ["p-limit", "npm:3.1.0"],\ + ["p-locate", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["p-map", [\ + ["npm:7.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/p-map-npm-7.0.3-93bbec0d8c-10c0.zip/node_modules/p-map/",\ + "packageDependencies": [\ + ["p-map", "npm:7.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["p-try", [\ + ["npm:2.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/p-try-npm-2.2.0-e0390dbaf8-10c0.zip/node_modules/p-try/",\ + "packageDependencies": [\ + ["p-try", "npm:2.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["package-json-from-dist", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/package-json-from-dist-npm-1.0.1-4631a88465-10c0.zip/node_modules/package-json-from-dist/",\ + "packageDependencies": [\ + ["package-json-from-dist", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["parent-module", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/parent-module-npm-1.0.1-1fae11b095-10c0.zip/node_modules/parent-module/",\ + "packageDependencies": [\ + ["callsites", "npm:3.1.0"],\ + ["parent-module", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["parse-json", [\ + ["npm:5.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/parse-json-npm-5.2.0-00a63b1199-10c0.zip/node_modules/parse-json/",\ + "packageDependencies": [\ + ["@babel/code-frame", "npm:7.27.1"],\ + ["error-ex", "npm:1.3.2"],\ + ["json-parse-even-better-errors", "npm:2.3.1"],\ + ["lines-and-columns", "npm:1.2.4"],\ + ["parse-json", "npm:5.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-exists", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/path-exists-npm-4.0.0-e9e4f63eb0-10c0.zip/node_modules/path-exists/",\ + "packageDependencies": [\ + ["path-exists", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-is-absolute", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/path-is-absolute-npm-1.0.1-31bc695ffd-10c0.zip/node_modules/path-is-absolute/",\ + "packageDependencies": [\ + ["path-is-absolute", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-key", [\ + ["npm:3.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/path-key-npm-3.1.1-0e66ea8321-10c0.zip/node_modules/path-key/",\ + "packageDependencies": [\ + ["path-key", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-parse", [\ + ["npm:1.0.7", {\ + "packageLocation": "../../../.yarn/berry/cache/path-parse-npm-1.0.7-09564527b7-10c0.zip/node_modules/path-parse/",\ + "packageDependencies": [\ + ["path-parse", "npm:1.0.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-scurry", [\ + ["npm:1.11.1", {\ + "packageLocation": "../../../.yarn/berry/cache/path-scurry-npm-1.11.1-aaf8c339af-10c0.zip/node_modules/path-scurry/",\ + "packageDependencies": [\ + ["lru-cache", "npm:10.4.3"],\ + ["minipass", "npm:7.1.2"],\ + ["path-scurry", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-type", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/path-type-npm-4.0.0-10d47fc86a-10c0.zip/node_modules/path-type/",\ + "packageDependencies": [\ + ["path-type", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["picocolors", [\ + ["npm:1.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/picocolors-npm-1.1.1-4fede47cf1-10c0.zip/node_modules/picocolors/",\ + "packageDependencies": [\ + ["picocolors", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["picomatch", [\ + ["npm:2.3.1", {\ + "packageLocation": "../../../.yarn/berry/cache/picomatch-npm-2.3.1-c782cfd986-10c0.zip/node_modules/picomatch/",\ + "packageDependencies": [\ + ["picomatch", "npm:2.3.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/picomatch-npm-4.0.3-0a647b87cc-10c0.zip/node_modules/picomatch/",\ + "packageDependencies": [\ + ["picomatch", "npm:4.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["pirates", [\ + ["npm:4.0.7", {\ + "packageLocation": "../../../.yarn/berry/cache/pirates-npm-4.0.7-5e4ee2f078-10c0.zip/node_modules/pirates/",\ + "packageDependencies": [\ + ["pirates", "npm:4.0.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["pkg-dir", [\ + ["npm:4.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/pkg-dir-npm-4.2.0-2b5d0a8d32-10c0.zip/node_modules/pkg-dir/",\ + "packageDependencies": [\ + ["find-up", "npm:4.1.0"],\ + ["pkg-dir", "npm:4.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["possible-typed-array-names", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/possible-typed-array-names-npm-1.1.0-ce60ca4401-10c0.zip/node_modules/possible-typed-array-names/",\ + "packageDependencies": [\ + ["possible-typed-array-names", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["prelude-ls", [\ + ["npm:1.2.1", {\ + "packageLocation": "../../../.yarn/berry/cache/prelude-ls-npm-1.2.1-3e4d272a55-10c0.zip/node_modules/prelude-ls/",\ + "packageDependencies": [\ + ["prelude-ls", "npm:1.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["prettier", [\ + ["npm:3.6.2", {\ + "packageLocation": "./.yarn/unplugged/prettier-npm-3.6.2-2668152203/node_modules/prettier/",\ + "packageDependencies": [\ + ["prettier", "npm:3.6.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["pretty-format", [\ + ["npm:30.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/pretty-format-npm-30.0.5-12c8203223-10c0.zip/node_modules/pretty-format/",\ + "packageDependencies": [\ + ["@jest/schemas", "npm:30.0.5"],\ + ["ansi-styles", "npm:5.2.0"],\ + ["pretty-format", "npm:30.0.5"],\ + ["react-is", "npm:18.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["proc-log", [\ + ["npm:5.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/proc-log-npm-5.0.0-405173f9b4-10c0.zip/node_modules/proc-log/",\ + "packageDependencies": [\ + ["proc-log", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["promise-retry", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/promise-retry-npm-2.0.1-871f0b01b7-10c0.zip/node_modules/promise-retry/",\ + "packageDependencies": [\ + ["err-code", "npm:2.0.3"],\ + ["promise-retry", "npm:2.0.1"],\ + ["retry", "npm:0.12.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["punycode", [\ + ["npm:2.3.1", {\ + "packageLocation": "../../../.yarn/berry/cache/punycode-npm-2.3.1-97543c420d-10c0.zip/node_modules/punycode/",\ + "packageDependencies": [\ + ["punycode", "npm:2.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["pure-rand", [\ + ["npm:7.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/pure-rand-npm-7.0.1-c1074fa9ee-10c0.zip/node_modules/pure-rand/",\ + "packageDependencies": [\ + ["pure-rand", "npm:7.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["queue-microtask", [\ + ["npm:1.2.3", {\ + "packageLocation": "../../../.yarn/berry/cache/queue-microtask-npm-1.2.3-fcc98e4e2d-10c0.zip/node_modules/queue-microtask/",\ + "packageDependencies": [\ + ["queue-microtask", "npm:1.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["react-is", [\ + ["npm:18.3.1", {\ + "packageLocation": "../../../.yarn/berry/cache/react-is-npm-18.3.1-370a81e1e9-10c0.zip/node_modules/react-is/",\ + "packageDependencies": [\ + ["react-is", "npm:18.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["reflect.getprototypeof", [\ + ["npm:1.0.10", {\ + "packageLocation": "../../../.yarn/berry/cache/reflect.getprototypeof-npm-1.0.10-8c3ce862a2-10c0.zip/node_modules/reflect.getprototypeof/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.8"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-abstract", "npm:1.24.0"],\ + ["es-errors", "npm:1.3.0"],\ + ["es-object-atoms", "npm:1.1.1"],\ + ["get-intrinsic", "npm:1.3.0"],\ + ["get-proto", "npm:1.0.1"],\ + ["reflect.getprototypeof", "npm:1.0.10"],\ + ["which-builtin-type", "npm:1.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["regenerate", [\ + ["npm:1.4.2", {\ + "packageLocation": "../../../.yarn/berry/cache/regenerate-npm-1.4.2-b296c5b63a-10c0.zip/node_modules/regenerate/",\ + "packageDependencies": [\ + ["regenerate", "npm:1.4.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["regenerate-unicode-properties", [\ + ["npm:10.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/regenerate-unicode-properties-npm-10.2.0-3d662e6e17-10c0.zip/node_modules/regenerate-unicode-properties/",\ + "packageDependencies": [\ + ["regenerate", "npm:1.4.2"],\ + ["regenerate-unicode-properties", "npm:10.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["regexp.prototype.flags", [\ + ["npm:1.5.4", {\ + "packageLocation": "../../../.yarn/berry/cache/regexp.prototype.flags-npm-1.5.4-39008ab64c-10c0.zip/node_modules/regexp.prototype.flags/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.8"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-errors", "npm:1.3.0"],\ + ["get-proto", "npm:1.0.1"],\ + ["gopd", "npm:1.2.0"],\ + ["regexp.prototype.flags", "npm:1.5.4"],\ + ["set-function-name", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["regexpu-core", [\ + ["npm:6.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/regexpu-core-npm-6.2.0-56e98c3a61-10c0.zip/node_modules/regexpu-core/",\ + "packageDependencies": [\ + ["regenerate", "npm:1.4.2"],\ + ["regenerate-unicode-properties", "npm:10.2.0"],\ + ["regexpu-core", "npm:6.2.0"],\ + ["regjsgen", "npm:0.8.0"],\ + ["regjsparser", "npm:0.12.0"],\ + ["unicode-match-property-ecmascript", "npm:2.0.0"],\ + ["unicode-match-property-value-ecmascript", "npm:2.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["regjsgen", [\ + ["npm:0.8.0", {\ + "packageLocation": "../../../.yarn/berry/cache/regjsgen-npm-0.8.0-146d7cf052-10c0.zip/node_modules/regjsgen/",\ + "packageDependencies": [\ + ["regjsgen", "npm:0.8.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["regjsparser", [\ + ["npm:0.12.0", {\ + "packageLocation": "../../../.yarn/berry/cache/regjsparser-npm-0.12.0-9d000fca30-10c0.zip/node_modules/regjsparser/",\ + "packageDependencies": [\ + ["jsesc", "npm:3.0.2"],\ + ["regjsparser", "npm:0.12.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["require-directory", [\ + ["npm:2.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/require-directory-npm-2.1.1-8608aee50b-10c0.zip/node_modules/require-directory/",\ + "packageDependencies": [\ + ["require-directory", "npm:2.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["resolve", [\ + ["patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d", {\ + "packageLocation": "../../../.yarn/berry/cache/resolve-patch-b5982cfa8c-10c0.zip/node_modules/resolve/",\ + "packageDependencies": [\ + ["is-core-module", "npm:2.16.1"],\ + ["path-parse", "npm:1.0.7"],\ + ["resolve", "patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d"],\ + ["supports-preserve-symlinks-flag", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["resolve-cwd", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/resolve-cwd-npm-3.0.0-e6f4e296bf-10c0.zip/node_modules/resolve-cwd/",\ + "packageDependencies": [\ + ["resolve-cwd", "npm:3.0.0"],\ + ["resolve-from", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["resolve-from", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/resolve-from-npm-4.0.0-f758ec21bf-10c0.zip/node_modules/resolve-from/",\ + "packageDependencies": [\ + ["resolve-from", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/resolve-from-npm-5.0.0-15c9db4d33-10c0.zip/node_modules/resolve-from/",\ + "packageDependencies": [\ + ["resolve-from", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["resolve-pkg-maps", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/resolve-pkg-maps-npm-1.0.0-135b70c854-10c0.zip/node_modules/resolve-pkg-maps/",\ + "packageDependencies": [\ + ["resolve-pkg-maps", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["retry", [\ + ["npm:0.12.0", {\ + "packageLocation": "../../../.yarn/berry/cache/retry-npm-0.12.0-72ac7fb4cc-10c0.zip/node_modules/retry/",\ + "packageDependencies": [\ + ["retry", "npm:0.12.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["reusify", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/reusify-npm-1.1.0-96242be57f-10c0.zip/node_modules/reusify/",\ + "packageDependencies": [\ + ["reusify", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["rimraf", [\ + ["npm:3.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/rimraf-npm-3.0.2-2cb7dac69a-10c0.zip/node_modules/rimraf/",\ + "packageDependencies": [\ + ["glob", "npm:7.2.3"],\ + ["rimraf", "npm:3.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["rollup", [\ + ["npm:4.46.2", {\ + "packageLocation": "../../../.yarn/berry/cache/rollup-npm-4.46.2-14ffb3c832-10c0.zip/node_modules/rollup/",\ + "packageDependencies": [\ + ["@rollup/rollup-android-arm-eabi", "npm:4.46.2"],\ + ["@rollup/rollup-android-arm64", "npm:4.46.2"],\ + ["@rollup/rollup-darwin-arm64", "npm:4.46.2"],\ + ["@rollup/rollup-darwin-x64", "npm:4.46.2"],\ + ["@rollup/rollup-freebsd-arm64", "npm:4.46.2"],\ + ["@rollup/rollup-freebsd-x64", "npm:4.46.2"],\ + ["@rollup/rollup-linux-arm-gnueabihf", "npm:4.46.2"],\ + ["@rollup/rollup-linux-arm-musleabihf", "npm:4.46.2"],\ + ["@rollup/rollup-linux-arm64-gnu", "npm:4.46.2"],\ + ["@rollup/rollup-linux-arm64-musl", "npm:4.46.2"],\ + ["@rollup/rollup-linux-loongarch64-gnu", "npm:4.46.2"],\ + ["@rollup/rollup-linux-ppc64-gnu", "npm:4.46.2"],\ + ["@rollup/rollup-linux-riscv64-gnu", "npm:4.46.2"],\ + ["@rollup/rollup-linux-riscv64-musl", "npm:4.46.2"],\ + ["@rollup/rollup-linux-s390x-gnu", "npm:4.46.2"],\ + ["@rollup/rollup-linux-x64-gnu", "npm:4.46.2"],\ + ["@rollup/rollup-linux-x64-musl", "npm:4.46.2"],\ + ["@rollup/rollup-win32-arm64-msvc", "npm:4.46.2"],\ + ["@rollup/rollup-win32-ia32-msvc", "npm:4.46.2"],\ + ["@rollup/rollup-win32-x64-msvc", "npm:4.46.2"],\ + ["@types/estree", "npm:1.0.8"],\ + ["fsevents", "patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1"],\ + ["rollup", "npm:4.46.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["run-parallel", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/run-parallel-npm-1.2.0-3f47ff2034-10c0.zip/node_modules/run-parallel/",\ + "packageDependencies": [\ + ["queue-microtask", "npm:1.2.3"],\ + ["run-parallel", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["safe-array-concat", [\ + ["npm:1.1.3", {\ + "packageLocation": "../../../.yarn/berry/cache/safe-array-concat-npm-1.1.3-dab0384e54-10c0.zip/node_modules/safe-array-concat/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.8"],\ + ["call-bound", "npm:1.0.4"],\ + ["get-intrinsic", "npm:1.3.0"],\ + ["has-symbols", "npm:1.1.0"],\ + ["isarray", "npm:2.0.5"],\ + ["safe-array-concat", "npm:1.1.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["safe-push-apply", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/safe-push-apply-npm-1.0.0-51a0a42944-10c0.zip/node_modules/safe-push-apply/",\ + "packageDependencies": [\ + ["es-errors", "npm:1.3.0"],\ + ["isarray", "npm:2.0.5"],\ + ["safe-push-apply", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["safe-regex-test", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/safe-regex-test-npm-1.1.0-453eb81b83-10c0.zip/node_modules/safe-regex-test/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["es-errors", "npm:1.3.0"],\ + ["is-regex", "npm:1.2.1"],\ + ["safe-regex-test", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["safer-buffer", [\ + ["npm:2.1.2", {\ + "packageLocation": "../../../.yarn/berry/cache/safer-buffer-npm-2.1.2-8d5c0b705e-10c0.zip/node_modules/safer-buffer/",\ + "packageDependencies": [\ + ["safer-buffer", "npm:2.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["scm-slang", [\ + ["workspace:.", {\ + "packageLocation": "./",\ + "packageDependencies": [\ + ["@babel/preset-env", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:7.28.0"],\ + ["@rollup/plugin-commonjs", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:28.0.6"],\ + ["@rollup/plugin-node-resolve", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:16.0.1"],\ + ["@rollup/plugin-typescript", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:12.1.4"],\ + ["@types/estree", "npm:1.0.8"],\ + ["@types/jest", "npm:30.0.0"],\ + ["@types/node", "npm:22.17.1"],\ + ["@typescript-eslint/eslint-plugin", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:6.21.0"],\ + ["acorn", "npm:8.15.0"],\ + ["acorn-walk", "npm:8.3.4"],\ + ["babel-jest", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:30.0.5"],\ + ["escodegen", "npm:2.1.0"],\ + ["eslint", "npm:8.57.1"],\ + ["eslint-config-standard-with-typescript", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:43.0.1"],\ + ["eslint-plugin-import", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:2.32.0"],\ + ["eslint-plugin-n", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:16.6.2"],\ + ["eslint-plugin-promise", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:6.6.0"],\ + ["husky", "npm:9.1.7"],\ + ["jest", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["js-base64", "npm:3.7.7"],\ + ["prettier", "npm:3.6.2"],\ + ["rollup", "npm:4.46.2"],\ + ["scm-slang", "workspace:."],\ + ["source-map", "npm:0.7.6"],\ + ["ts-jest", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:29.4.1"],\ + ["tslib", "npm:2.8.1"],\ + ["typescript", "patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5"]\ + ],\ + "linkType": "SOFT"\ + }]\ + ]],\ + ["semver", [\ + ["npm:6.3.1", {\ + "packageLocation": "../../../.yarn/berry/cache/semver-npm-6.3.1-bcba31fdbe-10c0.zip/node_modules/semver/",\ + "packageDependencies": [\ + ["semver", "npm:6.3.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.7.2", {\ + "packageLocation": "../../../.yarn/berry/cache/semver-npm-7.7.2-dfc3bc5ec9-10c0.zip/node_modules/semver/",\ + "packageDependencies": [\ + ["semver", "npm:7.7.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["set-function-length", [\ + ["npm:1.2.2", {\ + "packageLocation": "../../../.yarn/berry/cache/set-function-length-npm-1.2.2-243073748b-10c0.zip/node_modules/set-function-length/",\ + "packageDependencies": [\ + ["define-data-property", "npm:1.1.4"],\ + ["es-errors", "npm:1.3.0"],\ + ["function-bind", "npm:1.1.2"],\ + ["get-intrinsic", "npm:1.3.0"],\ + ["gopd", "npm:1.2.0"],\ + ["has-property-descriptors", "npm:1.0.2"],\ + ["set-function-length", "npm:1.2.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["set-function-name", [\ + ["npm:2.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/set-function-name-npm-2.0.2-3d9a2d8899-10c0.zip/node_modules/set-function-name/",\ + "packageDependencies": [\ + ["define-data-property", "npm:1.1.4"],\ + ["es-errors", "npm:1.3.0"],\ + ["functions-have-names", "npm:1.2.3"],\ + ["has-property-descriptors", "npm:1.0.2"],\ + ["set-function-name", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["set-proto", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/set-proto-npm-1.0.0-68d7485485-10c0.zip/node_modules/set-proto/",\ + "packageDependencies": [\ + ["dunder-proto", "npm:1.0.1"],\ + ["es-errors", "npm:1.3.0"],\ + ["es-object-atoms", "npm:1.1.1"],\ + ["set-proto", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["shebang-command", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/shebang-command-npm-2.0.0-eb2b01921d-10c0.zip/node_modules/shebang-command/",\ + "packageDependencies": [\ + ["shebang-command", "npm:2.0.0"],\ + ["shebang-regex", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["shebang-regex", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/shebang-regex-npm-3.0.0-899a0cd65e-10c0.zip/node_modules/shebang-regex/",\ + "packageDependencies": [\ + ["shebang-regex", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["side-channel", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/side-channel-npm-1.1.0-4993930974-10c0.zip/node_modules/side-channel/",\ + "packageDependencies": [\ + ["es-errors", "npm:1.3.0"],\ + ["object-inspect", "npm:1.13.4"],\ + ["side-channel", "npm:1.1.0"],\ + ["side-channel-list", "npm:1.0.0"],\ + ["side-channel-map", "npm:1.0.1"],\ + ["side-channel-weakmap", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["side-channel-list", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/side-channel-list-npm-1.0.0-14f74146d1-10c0.zip/node_modules/side-channel-list/",\ + "packageDependencies": [\ + ["es-errors", "npm:1.3.0"],\ + ["object-inspect", "npm:1.13.4"],\ + ["side-channel-list", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["side-channel-map", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/side-channel-map-npm-1.0.1-5903573b3c-10c0.zip/node_modules/side-channel-map/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["es-errors", "npm:1.3.0"],\ + ["get-intrinsic", "npm:1.3.0"],\ + ["object-inspect", "npm:1.13.4"],\ + ["side-channel-map", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["side-channel-weakmap", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/side-channel-weakmap-npm-1.0.2-027acaf499-10c0.zip/node_modules/side-channel-weakmap/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["es-errors", "npm:1.3.0"],\ + ["get-intrinsic", "npm:1.3.0"],\ + ["object-inspect", "npm:1.13.4"],\ + ["side-channel-map", "npm:1.0.1"],\ + ["side-channel-weakmap", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["signal-exit", [\ + ["npm:3.0.7", {\ + "packageLocation": "../../../.yarn/berry/cache/signal-exit-npm-3.0.7-bd270458a3-10c0.zip/node_modules/signal-exit/",\ + "packageDependencies": [\ + ["signal-exit", "npm:3.0.7"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/signal-exit-npm-4.1.0-61fb957687-10c0.zip/node_modules/signal-exit/",\ + "packageDependencies": [\ + ["signal-exit", "npm:4.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["slash", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/slash-npm-3.0.0-b87de2279a-10c0.zip/node_modules/slash/",\ + "packageDependencies": [\ + ["slash", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["smart-buffer", [\ + ["npm:4.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/smart-buffer-npm-4.2.0-5ac3f668bb-10c0.zip/node_modules/smart-buffer/",\ + "packageDependencies": [\ + ["smart-buffer", "npm:4.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["socks", [\ + ["npm:2.8.6", {\ + "packageLocation": "../../../.yarn/berry/cache/socks-npm-2.8.6-8da6c765b1-10c0.zip/node_modules/socks/",\ + "packageDependencies": [\ + ["ip-address", "npm:9.0.5"],\ + ["smart-buffer", "npm:4.2.0"],\ + ["socks", "npm:2.8.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["socks-proxy-agent", [\ + ["npm:8.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/socks-proxy-agent-npm-8.0.5-24d77a90dc-10c0.zip/node_modules/socks-proxy-agent/",\ + "packageDependencies": [\ + ["agent-base", "npm:7.1.4"],\ + ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.4.1"],\ + ["socks", "npm:2.8.6"],\ + ["socks-proxy-agent", "npm:8.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["source-map", [\ + ["npm:0.6.1", {\ + "packageLocation": "../../../.yarn/berry/cache/source-map-npm-0.6.1-1a3621db16-10c0.zip/node_modules/source-map/",\ + "packageDependencies": [\ + ["source-map", "npm:0.6.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.7.6", {\ + "packageLocation": "../../../.yarn/berry/cache/source-map-npm-0.7.6-a3854be193-10c0.zip/node_modules/source-map/",\ + "packageDependencies": [\ + ["source-map", "npm:0.7.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["source-map-support", [\ + ["npm:0.5.13", {\ + "packageLocation": "../../../.yarn/berry/cache/source-map-support-npm-0.5.13-377dfd7321-10c0.zip/node_modules/source-map-support/",\ + "packageDependencies": [\ + ["buffer-from", "npm:1.1.2"],\ + ["source-map", "npm:0.6.1"],\ + ["source-map-support", "npm:0.5.13"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["sprintf-js", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/sprintf-js-npm-1.0.3-73f0a322fa-10c0.zip/node_modules/sprintf-js/",\ + "packageDependencies": [\ + ["sprintf-js", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.1.3", {\ + "packageLocation": "../../../.yarn/berry/cache/sprintf-js-npm-1.1.3-b99efd75b2-10c0.zip/node_modules/sprintf-js/",\ + "packageDependencies": [\ + ["sprintf-js", "npm:1.1.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ssri", [\ + ["npm:12.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/ssri-npm-12.0.0-97c0e53d2e-10c0.zip/node_modules/ssri/",\ + "packageDependencies": [\ + ["minipass", "npm:7.1.2"],\ + ["ssri", "npm:12.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["stack-utils", [\ + ["npm:2.0.6", {\ + "packageLocation": "../../../.yarn/berry/cache/stack-utils-npm-2.0.6-2be1099696-10c0.zip/node_modules/stack-utils/",\ + "packageDependencies": [\ + ["escape-string-regexp", "npm:2.0.0"],\ + ["stack-utils", "npm:2.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["stop-iteration-iterator", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/stop-iteration-iterator-npm-1.1.0-057344287e-10c0.zip/node_modules/stop-iteration-iterator/",\ + "packageDependencies": [\ + ["es-errors", "npm:1.3.0"],\ + ["internal-slot", "npm:1.1.0"],\ + ["stop-iteration-iterator", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["string-length", [\ + ["npm:4.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/string-length-npm-4.0.2-675173c7a2-10c0.zip/node_modules/string-length/",\ + "packageDependencies": [\ + ["char-regex", "npm:1.0.2"],\ + ["string-length", "npm:4.0.2"],\ + ["strip-ansi", "npm:6.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["string-width", [\ + ["npm:4.2.3", {\ + "packageLocation": "../../../.yarn/berry/cache/string-width-npm-4.2.3-2c27177bae-10c0.zip/node_modules/string-width/",\ + "packageDependencies": [\ + ["emoji-regex", "npm:8.0.0"],\ + ["is-fullwidth-code-point", "npm:3.0.0"],\ + ["string-width", "npm:4.2.3"],\ + ["strip-ansi", "npm:6.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.1.2", {\ + "packageLocation": "../../../.yarn/berry/cache/string-width-npm-5.1.2-bf60531341-10c0.zip/node_modules/string-width/",\ + "packageDependencies": [\ + ["eastasianwidth", "npm:0.2.0"],\ + ["emoji-regex", "npm:9.2.2"],\ + ["string-width", "npm:5.1.2"],\ + ["strip-ansi", "npm:7.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["string.prototype.trim", [\ + ["npm:1.2.10", {\ + "packageLocation": "../../../.yarn/berry/cache/string.prototype.trim-npm-1.2.10-40a44bc719-10c0.zip/node_modules/string.prototype.trim/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.8"],\ + ["call-bound", "npm:1.0.4"],\ + ["define-data-property", "npm:1.1.4"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-abstract", "npm:1.24.0"],\ + ["es-object-atoms", "npm:1.1.1"],\ + ["has-property-descriptors", "npm:1.0.2"],\ + ["string.prototype.trim", "npm:1.2.10"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["string.prototype.trimend", [\ + ["npm:1.0.9", {\ + "packageLocation": "../../../.yarn/berry/cache/string.prototype.trimend-npm-1.0.9-e8729528fb-10c0.zip/node_modules/string.prototype.trimend/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.8"],\ + ["call-bound", "npm:1.0.4"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-object-atoms", "npm:1.1.1"],\ + ["string.prototype.trimend", "npm:1.0.9"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["string.prototype.trimstart", [\ + ["npm:1.0.8", {\ + "packageLocation": "../../../.yarn/berry/cache/string.prototype.trimstart-npm-1.0.8-8c6b16ba6e-10c0.zip/node_modules/string.prototype.trimstart/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.8"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-object-atoms", "npm:1.1.1"],\ + ["string.prototype.trimstart", "npm:1.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["strip-ansi", [\ + ["npm:6.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/strip-ansi-npm-6.0.1-caddc7cb40-10c0.zip/node_modules/strip-ansi/",\ + "packageDependencies": [\ + ["ansi-regex", "npm:5.0.1"],\ + ["strip-ansi", "npm:6.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/strip-ansi-npm-7.1.0-7453b80b79-10c0.zip/node_modules/strip-ansi/",\ + "packageDependencies": [\ + ["ansi-regex", "npm:6.1.0"],\ + ["strip-ansi", "npm:7.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["strip-bom", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/strip-bom-npm-3.0.0-71e8f81ff9-10c0.zip/node_modules/strip-bom/",\ + "packageDependencies": [\ + ["strip-bom", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/strip-bom-npm-4.0.0-97d367a64d-10c0.zip/node_modules/strip-bom/",\ + "packageDependencies": [\ + ["strip-bom", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["strip-final-newline", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/strip-final-newline-npm-2.0.0-340c4f7c66-10c0.zip/node_modules/strip-final-newline/",\ + "packageDependencies": [\ + ["strip-final-newline", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["strip-json-comments", [\ + ["npm:3.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/strip-json-comments-npm-3.1.1-dcb2324823-10c0.zip/node_modules/strip-json-comments/",\ + "packageDependencies": [\ + ["strip-json-comments", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["supports-color", [\ + ["npm:7.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/supports-color-npm-7.2.0-606bfcf7da-10c0.zip/node_modules/supports-color/",\ + "packageDependencies": [\ + ["has-flag", "npm:4.0.0"],\ + ["supports-color", "npm:7.2.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:8.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/supports-color-npm-8.1.1-289e937149-10c0.zip/node_modules/supports-color/",\ + "packageDependencies": [\ + ["has-flag", "npm:4.0.0"],\ + ["supports-color", "npm:8.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["supports-preserve-symlinks-flag", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/supports-preserve-symlinks-flag-npm-1.0.0-f17c4d0028-10c0.zip/node_modules/supports-preserve-symlinks-flag/",\ + "packageDependencies": [\ + ["supports-preserve-symlinks-flag", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["synckit", [\ + ["npm:0.11.11", {\ + "packageLocation": "../../../.yarn/berry/cache/synckit-npm-0.11.11-415ad819d7-10c0.zip/node_modules/synckit/",\ + "packageDependencies": [\ + ["@pkgr/core", "npm:0.2.9"],\ + ["synckit", "npm:0.11.11"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["tar", [\ + ["npm:7.4.3", {\ + "packageLocation": "../../../.yarn/berry/cache/tar-npm-7.4.3-1dbbd1ffc3-10c0.zip/node_modules/tar/",\ + "packageDependencies": [\ + ["@isaacs/fs-minipass", "npm:4.0.1"],\ + ["chownr", "npm:3.0.0"],\ + ["minipass", "npm:7.1.2"],\ + ["minizlib", "npm:3.0.2"],\ + ["mkdirp", "npm:3.0.1"],\ + ["tar", "npm:7.4.3"],\ + ["yallist", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["test-exclude", [\ + ["npm:6.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/test-exclude-npm-6.0.0-3fb03d69df-10c0.zip/node_modules/test-exclude/",\ + "packageDependencies": [\ + ["@istanbuljs/schema", "npm:0.1.3"],\ + ["glob", "npm:7.2.3"],\ + ["minimatch", "npm:3.1.2"],\ + ["test-exclude", "npm:6.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["text-table", [\ + ["npm:0.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/text-table-npm-0.2.0-d92a778b59-10c0.zip/node_modules/text-table/",\ + "packageDependencies": [\ + ["text-table", "npm:0.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["tinyglobby", [\ + ["npm:0.2.14", {\ + "packageLocation": "../../../.yarn/berry/cache/tinyglobby-npm-0.2.14-d4e4bcf80e-10c0.zip/node_modules/tinyglobby/",\ + "packageDependencies": [\ + ["fdir", "virtual:d4e4bcf80e67f9de0540c123c7c4882e34dce6a8ba807a0a834f267f9132ee6bd264e69a49c6203aa89877ed3a5a5d633bfa002384881be452cc3a2d2fbcce0b#npm:6.4.6"],\ + ["picomatch", "npm:4.0.3"],\ + ["tinyglobby", "npm:0.2.14"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["tmpl", [\ + ["npm:1.0.5", {\ + "packageLocation": "../../../.yarn/berry/cache/tmpl-npm-1.0.5-d399ba37e2-10c0.zip/node_modules/tmpl/",\ + "packageDependencies": [\ + ["tmpl", "npm:1.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["to-regex-range", [\ + ["npm:5.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/to-regex-range-npm-5.0.1-f1e8263b00-10c0.zip/node_modules/to-regex-range/",\ + "packageDependencies": [\ + ["is-number", "npm:7.0.0"],\ + ["to-regex-range", "npm:5.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ts-api-utils", [\ + ["npm:1.4.3", {\ + "packageLocation": "../../../.yarn/berry/cache/ts-api-utils-npm-1.4.3-ee6b12ae73-10c0.zip/node_modules/ts-api-utils/",\ + "packageDependencies": [\ + ["ts-api-utils", "npm:1.4.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:9be9cbaec770f6530391cc7d1057d8a7cd7c15cae65dd7ec241111dbe83f42a7dce7732a8d77205e197950f9a4e1b861e595f56a5e1d7a08b1eafea8fcf0914d#npm:1.4.3", {\ + "packageLocation": "./.yarn/__virtual__/ts-api-utils-virtual-36c1c58f52/4/.yarn/berry/cache/ts-api-utils-npm-1.4.3-ee6b12ae73-10c0.zip/node_modules/ts-api-utils/",\ + "packageDependencies": [\ + ["@types/typescript", null],\ + ["ts-api-utils", "virtual:9be9cbaec770f6530391cc7d1057d8a7cd7c15cae65dd7ec241111dbe83f42a7dce7732a8d77205e197950f9a4e1b861e595f56a5e1d7a08b1eafea8fcf0914d#npm:1.4.3"],\ + ["typescript", "patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5"]\ + ],\ + "packagePeers": [\ + "@types/typescript",\ + "typescript"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:a334039e34565c8fe5bf81dda7c9078589de36c701a4cdeaab9652f3fabf71e0440ddd31ccb33bb543238eeff21660bb85cf156fdb050ad2c089f1b5251799fa#npm:1.4.3", {\ + "packageLocation": "./.yarn/__virtual__/ts-api-utils-virtual-f80382388e/4/.yarn/berry/cache/ts-api-utils-npm-1.4.3-ee6b12ae73-10c0.zip/node_modules/ts-api-utils/",\ + "packageDependencies": [\ + ["@types/typescript", null],\ + ["ts-api-utils", "virtual:a334039e34565c8fe5bf81dda7c9078589de36c701a4cdeaab9652f3fabf71e0440ddd31ccb33bb543238eeff21660bb85cf156fdb050ad2c089f1b5251799fa#npm:1.4.3"],\ + ["typescript", null]\ + ],\ + "packagePeers": [\ + "@types/typescript",\ + "typescript"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ts-jest", [\ + ["npm:29.4.1", {\ + "packageLocation": "../../../.yarn/berry/cache/ts-jest-npm-29.4.1-ab76d85d32-10c0.zip/node_modules/ts-jest/",\ + "packageDependencies": [\ + ["ts-jest", "npm:29.4.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:29.4.1", {\ + "packageLocation": "./.yarn/__virtual__/ts-jest-virtual-d1f5c27bd8/4/.yarn/berry/cache/ts-jest-npm-29.4.1-ab76d85d32-10c0.zip/node_modules/ts-jest/",\ + "packageDependencies": [\ + ["@babel/core", null],\ + ["@jest/transform", null],\ + ["@jest/types", null],\ + ["@types/babel-jest", null],\ + ["@types/babel__core", null],\ + ["@types/esbuild", null],\ + ["@types/jest", "npm:30.0.0"],\ + ["@types/jest-util", null],\ + ["@types/jest__transform", null],\ + ["@types/jest__types", null],\ + ["@types/typescript", null],\ + ["babel-jest", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:30.0.5"],\ + ["bs-logger", "npm:0.2.6"],\ + ["esbuild", null],\ + ["fast-json-stable-stringify", "npm:2.1.0"],\ + ["handlebars", "npm:4.7.8"],\ + ["jest", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:30.0.5"],\ + ["jest-util", "npm:30.0.5"],\ + ["json5", "npm:2.2.3"],\ + ["lodash.memoize", "npm:4.1.2"],\ + ["make-error", "npm:1.3.6"],\ + ["semver", "npm:7.7.2"],\ + ["ts-jest", "virtual:1bb06f52524950ab8a6dc932fe5ef300ab2887bd3fe022475369c36c7c1d2075a1926cc75bd0041c209bad4d6826f544d9fb9ba45a6c58a0cb70e3883ddcb9e7#npm:29.4.1"],\ + ["type-fest", "npm:4.41.0"],\ + ["typescript", "patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5"],\ + ["yargs-parser", "npm:21.1.1"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@jest/transform",\ + "@jest/types",\ + "@types/babel-jest",\ + "@types/babel__core",\ + "@types/esbuild",\ + "@types/jest-util",\ + "@types/jest",\ + "@types/jest__transform",\ + "@types/jest__types",\ + "@types/typescript",\ + "babel-jest",\ + "esbuild",\ + "jest-util",\ + "jest",\ + "typescript"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["tsconfig-paths", [\ + ["npm:3.15.0", {\ + "packageLocation": "../../../.yarn/berry/cache/tsconfig-paths-npm-3.15.0-ff68930e0e-10c0.zip/node_modules/tsconfig-paths/",\ + "packageDependencies": [\ + ["@types/json5", "npm:0.0.29"],\ + ["json5", "npm:1.0.2"],\ + ["minimist", "npm:1.2.8"],\ + ["strip-bom", "npm:3.0.0"],\ + ["tsconfig-paths", "npm:3.15.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["tslib", [\ + ["npm:2.8.1", {\ + "packageLocation": "../../../.yarn/berry/cache/tslib-npm-2.8.1-66590b21b8-10c0.zip/node_modules/tslib/",\ + "packageDependencies": [\ + ["tslib", "npm:2.8.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["type-check", [\ + ["npm:0.4.0", {\ + "packageLocation": "../../../.yarn/berry/cache/type-check-npm-0.4.0-60565800ce-10c0.zip/node_modules/type-check/",\ + "packageDependencies": [\ + ["prelude-ls", "npm:1.2.1"],\ + ["type-check", "npm:0.4.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["type-detect", [\ + ["npm:4.0.8", {\ + "packageLocation": "../../../.yarn/berry/cache/type-detect-npm-4.0.8-8d8127b901-10c0.zip/node_modules/type-detect/",\ + "packageDependencies": [\ + ["type-detect", "npm:4.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["type-fest", [\ + ["npm:0.20.2", {\ + "packageLocation": "../../../.yarn/berry/cache/type-fest-npm-0.20.2-b36432617f-10c0.zip/node_modules/type-fest/",\ + "packageDependencies": [\ + ["type-fest", "npm:0.20.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.21.3", {\ + "packageLocation": "../../../.yarn/berry/cache/type-fest-npm-0.21.3-5ff2a9c6fd-10c0.zip/node_modules/type-fest/",\ + "packageDependencies": [\ + ["type-fest", "npm:0.21.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.41.0", {\ + "packageLocation": "../../../.yarn/berry/cache/type-fest-npm-4.41.0-31a6ce52d8-10c0.zip/node_modules/type-fest/",\ + "packageDependencies": [\ + ["type-fest", "npm:4.41.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["typed-array-buffer", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/typed-array-buffer-npm-1.0.3-bddcba0c25-10c0.zip/node_modules/typed-array-buffer/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["es-errors", "npm:1.3.0"],\ + ["is-typed-array", "npm:1.1.15"],\ + ["typed-array-buffer", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["typed-array-byte-length", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../.yarn/berry/cache/typed-array-byte-length-npm-1.0.3-0769937080-10c0.zip/node_modules/typed-array-byte-length/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.8"],\ + ["for-each", "npm:0.3.5"],\ + ["gopd", "npm:1.2.0"],\ + ["has-proto", "npm:1.2.0"],\ + ["is-typed-array", "npm:1.1.15"],\ + ["typed-array-byte-length", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["typed-array-byte-offset", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../../.yarn/berry/cache/typed-array-byte-offset-npm-1.0.4-12f60e4553-10c0.zip/node_modules/typed-array-byte-offset/",\ + "packageDependencies": [\ + ["available-typed-arrays", "npm:1.0.7"],\ + ["call-bind", "npm:1.0.8"],\ + ["for-each", "npm:0.3.5"],\ + ["gopd", "npm:1.2.0"],\ + ["has-proto", "npm:1.2.0"],\ + ["is-typed-array", "npm:1.1.15"],\ + ["reflect.getprototypeof", "npm:1.0.10"],\ + ["typed-array-byte-offset", "npm:1.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["typed-array-length", [\ + ["npm:1.0.7", {\ + "packageLocation": "../../../.yarn/berry/cache/typed-array-length-npm-1.0.7-ac6ef772a7-10c0.zip/node_modules/typed-array-length/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.8"],\ + ["for-each", "npm:0.3.5"],\ + ["gopd", "npm:1.2.0"],\ + ["is-typed-array", "npm:1.1.15"],\ + ["possible-typed-array-names", "npm:1.1.0"],\ + ["reflect.getprototypeof", "npm:1.0.10"],\ + ["typed-array-length", "npm:1.0.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["typescript", [\ + ["patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5", {\ + "packageLocation": "../../../.yarn/berry/cache/typescript-patch-bcfe2ebaf8-10c0.zip/node_modules/typescript/",\ + "packageDependencies": [\ + ["typescript", "patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["uglify-js", [\ + ["npm:3.19.3", {\ + "packageLocation": "../../../.yarn/berry/cache/uglify-js-npm-3.19.3-d73835bac2-10c0.zip/node_modules/uglify-js/",\ + "packageDependencies": [\ + ["uglify-js", "npm:3.19.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unbox-primitive", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/unbox-primitive-npm-1.1.0-269638c590-10c0.zip/node_modules/unbox-primitive/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["has-bigints", "npm:1.1.0"],\ + ["has-symbols", "npm:1.1.0"],\ + ["unbox-primitive", "npm:1.1.0"],\ + ["which-boxed-primitive", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["undici-types", [\ + ["npm:6.21.0", {\ + "packageLocation": "../../../.yarn/berry/cache/undici-types-npm-6.21.0-eb2b0ed56a-10c0.zip/node_modules/undici-types/",\ + "packageDependencies": [\ + ["undici-types", "npm:6.21.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.10.0", {\ + "packageLocation": "../../../.yarn/berry/cache/undici-types-npm-7.10.0-cd8324b9eb-10c0.zip/node_modules/undici-types/",\ + "packageDependencies": [\ + ["undici-types", "npm:7.10.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unicode-canonical-property-names-ecmascript", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/unicode-canonical-property-names-ecmascript-npm-2.0.1-80cef17f3b-10c0.zip/node_modules/unicode-canonical-property-names-ecmascript/",\ + "packageDependencies": [\ + ["unicode-canonical-property-names-ecmascript", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unicode-match-property-ecmascript", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/unicode-match-property-ecmascript-npm-2.0.0-97a00fd52c-10c0.zip/node_modules/unicode-match-property-ecmascript/",\ + "packageDependencies": [\ + ["unicode-canonical-property-names-ecmascript", "npm:2.0.1"],\ + ["unicode-match-property-ecmascript", "npm:2.0.0"],\ + ["unicode-property-aliases-ecmascript", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unicode-match-property-value-ecmascript", [\ + ["npm:2.2.0", {\ + "packageLocation": "../../../.yarn/berry/cache/unicode-match-property-value-ecmascript-npm-2.2.0-011b10a684-10c0.zip/node_modules/unicode-match-property-value-ecmascript/",\ + "packageDependencies": [\ + ["unicode-match-property-value-ecmascript", "npm:2.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unicode-property-aliases-ecmascript", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/unicode-property-aliases-ecmascript-npm-2.1.0-46779595f4-10c0.zip/node_modules/unicode-property-aliases-ecmascript/",\ + "packageDependencies": [\ + ["unicode-property-aliases-ecmascript", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unique-filename", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/unique-filename-npm-4.0.0-bfc100c4e3-10c0.zip/node_modules/unique-filename/",\ + "packageDependencies": [\ + ["unique-filename", "npm:4.0.0"],\ + ["unique-slug", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unique-slug", [\ + ["npm:5.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/unique-slug-npm-5.0.0-11508c0469-10c0.zip/node_modules/unique-slug/",\ + "packageDependencies": [\ + ["imurmurhash", "npm:0.1.4"],\ + ["unique-slug", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unrs-resolver", [\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/unplugged/unrs-resolver-npm-1.11.1-9828edd1f1/node_modules/unrs-resolver/",\ + "packageDependencies": [\ + ["@unrs/resolver-binding-android-arm-eabi", "npm:1.11.1"],\ + ["@unrs/resolver-binding-android-arm64", "npm:1.11.1"],\ + ["@unrs/resolver-binding-darwin-arm64", "npm:1.11.1"],\ + ["@unrs/resolver-binding-darwin-x64", "npm:1.11.1"],\ + ["@unrs/resolver-binding-freebsd-x64", "npm:1.11.1"],\ + ["@unrs/resolver-binding-linux-arm-gnueabihf", "npm:1.11.1"],\ + ["@unrs/resolver-binding-linux-arm-musleabihf", "npm:1.11.1"],\ + ["@unrs/resolver-binding-linux-arm64-gnu", "npm:1.11.1"],\ + ["@unrs/resolver-binding-linux-arm64-musl", "npm:1.11.1"],\ + ["@unrs/resolver-binding-linux-ppc64-gnu", "npm:1.11.1"],\ + ["@unrs/resolver-binding-linux-riscv64-gnu", "npm:1.11.1"],\ + ["@unrs/resolver-binding-linux-riscv64-musl", "npm:1.11.1"],\ + ["@unrs/resolver-binding-linux-s390x-gnu", "npm:1.11.1"],\ + ["@unrs/resolver-binding-linux-x64-gnu", "npm:1.11.1"],\ + ["@unrs/resolver-binding-linux-x64-musl", "npm:1.11.1"],\ + ["@unrs/resolver-binding-wasm32-wasi", "npm:1.11.1"],\ + ["@unrs/resolver-binding-win32-arm64-msvc", "npm:1.11.1"],\ + ["@unrs/resolver-binding-win32-ia32-msvc", "npm:1.11.1"],\ + ["@unrs/resolver-binding-win32-x64-msvc", "npm:1.11.1"],\ + ["napi-postinstall", "npm:0.3.3"],\ + ["unrs-resolver", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["update-browserslist-db", [\ + ["npm:1.1.3", {\ + "packageLocation": "../../../.yarn/berry/cache/update-browserslist-db-npm-1.1.3-569a9be54b-10c0.zip/node_modules/update-browserslist-db/",\ + "packageDependencies": [\ + ["update-browserslist-db", "npm:1.1.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:709063cc7c27323dd9dc113c4a8744367f834f43252a97255f46615804d535055749a2717337a2726f379c9cac3d264f99cb1ce68eb8a2af5fcbcd17dc557c2e#npm:1.1.3", {\ + "packageLocation": "./.yarn/__virtual__/update-browserslist-db-virtual-d5a1f0c6cd/4/.yarn/berry/cache/update-browserslist-db-npm-1.1.3-569a9be54b-10c0.zip/node_modules/update-browserslist-db/",\ + "packageDependencies": [\ + ["@types/browserslist", null],\ + ["browserslist", "npm:4.25.2"],\ + ["escalade", "npm:3.2.0"],\ + ["picocolors", "npm:1.1.1"],\ + ["update-browserslist-db", "virtual:709063cc7c27323dd9dc113c4a8744367f834f43252a97255f46615804d535055749a2717337a2726f379c9cac3d264f99cb1ce68eb8a2af5fcbcd17dc557c2e#npm:1.1.3"]\ + ],\ + "packagePeers": [\ + "@types/browserslist",\ + "browserslist"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["uri-js", [\ + ["npm:4.4.1", {\ + "packageLocation": "../../../.yarn/berry/cache/uri-js-npm-4.4.1-66d11cbcaf-10c0.zip/node_modules/uri-js/",\ + "packageDependencies": [\ + ["punycode", "npm:2.3.1"],\ + ["uri-js", "npm:4.4.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["v8-to-istanbul", [\ + ["npm:9.3.0", {\ + "packageLocation": "../../../.yarn/berry/cache/v8-to-istanbul-npm-9.3.0-35fef658c9-10c0.zip/node_modules/v8-to-istanbul/",\ + "packageDependencies": [\ + ["@jridgewell/trace-mapping", "npm:0.3.29"],\ + ["@types/istanbul-lib-coverage", "npm:2.0.6"],\ + ["convert-source-map", "npm:2.0.0"],\ + ["v8-to-istanbul", "npm:9.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["walker", [\ + ["npm:1.0.8", {\ + "packageLocation": "../../../.yarn/berry/cache/walker-npm-1.0.8-b0a05b9478-10c0.zip/node_modules/walker/",\ + "packageDependencies": [\ + ["makeerror", "npm:1.0.12"],\ + ["walker", "npm:1.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["which", [\ + ["npm:2.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/which-npm-2.0.2-320ddf72f7-10c0.zip/node_modules/which/",\ + "packageDependencies": [\ + ["isexe", "npm:2.0.0"],\ + ["which", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/which-npm-5.0.0-15aa39eb60-10c0.zip/node_modules/which/",\ + "packageDependencies": [\ + ["isexe", "npm:3.1.1"],\ + ["which", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["which-boxed-primitive", [\ + ["npm:1.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/which-boxed-primitive-npm-1.1.1-80ca20c912-10c0.zip/node_modules/which-boxed-primitive/",\ + "packageDependencies": [\ + ["is-bigint", "npm:1.1.0"],\ + ["is-boolean-object", "npm:1.2.2"],\ + ["is-number-object", "npm:1.1.1"],\ + ["is-string", "npm:1.1.1"],\ + ["is-symbol", "npm:1.1.1"],\ + ["which-boxed-primitive", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["which-builtin-type", [\ + ["npm:1.2.1", {\ + "packageLocation": "../../../.yarn/berry/cache/which-builtin-type-npm-1.2.1-bbbdf9137f-10c0.zip/node_modules/which-builtin-type/",\ + "packageDependencies": [\ + ["call-bound", "npm:1.0.4"],\ + ["function.prototype.name", "npm:1.1.8"],\ + ["has-tostringtag", "npm:1.0.2"],\ + ["is-async-function", "npm:2.1.1"],\ + ["is-date-object", "npm:1.1.0"],\ + ["is-finalizationregistry", "npm:1.1.1"],\ + ["is-generator-function", "npm:1.1.0"],\ + ["is-regex", "npm:1.2.1"],\ + ["is-weakref", "npm:1.1.1"],\ + ["isarray", "npm:2.0.5"],\ + ["which-boxed-primitive", "npm:1.1.1"],\ + ["which-builtin-type", "npm:1.2.1"],\ + ["which-collection", "npm:1.0.2"],\ + ["which-typed-array", "npm:1.1.19"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["which-collection", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/which-collection-npm-1.0.2-0d6277e921-10c0.zip/node_modules/which-collection/",\ + "packageDependencies": [\ + ["is-map", "npm:2.0.3"],\ + ["is-set", "npm:2.0.3"],\ + ["is-weakmap", "npm:2.0.2"],\ + ["is-weakset", "npm:2.0.4"],\ + ["which-collection", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["which-typed-array", [\ + ["npm:1.1.19", {\ + "packageLocation": "../../../.yarn/berry/cache/which-typed-array-npm-1.1.19-e664d1e89c-10c0.zip/node_modules/which-typed-array/",\ + "packageDependencies": [\ + ["available-typed-arrays", "npm:1.0.7"],\ + ["call-bind", "npm:1.0.8"],\ + ["call-bound", "npm:1.0.4"],\ + ["for-each", "npm:0.3.5"],\ + ["get-proto", "npm:1.0.1"],\ + ["gopd", "npm:1.2.0"],\ + ["has-tostringtag", "npm:1.0.2"],\ + ["which-typed-array", "npm:1.1.19"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["word-wrap", [\ + ["npm:1.2.5", {\ + "packageLocation": "../../../.yarn/berry/cache/word-wrap-npm-1.2.5-42d00c4b09-10c0.zip/node_modules/word-wrap/",\ + "packageDependencies": [\ + ["word-wrap", "npm:1.2.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["wordwrap", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/wordwrap-npm-1.0.0-ae57a645e8-10c0.zip/node_modules/wordwrap/",\ + "packageDependencies": [\ + ["wordwrap", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["wrap-ansi", [\ + ["npm:7.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-10c0.zip/node_modules/wrap-ansi/",\ + "packageDependencies": [\ + ["ansi-styles", "npm:4.3.0"],\ + ["string-width", "npm:4.2.3"],\ + ["strip-ansi", "npm:6.0.1"],\ + ["wrap-ansi", "npm:7.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:8.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/wrap-ansi-npm-8.1.0-26a4e6ae28-10c0.zip/node_modules/wrap-ansi/",\ + "packageDependencies": [\ + ["ansi-styles", "npm:6.2.1"],\ + ["string-width", "npm:5.1.2"],\ + ["strip-ansi", "npm:7.1.0"],\ + ["wrap-ansi", "npm:8.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["wrappy", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../.yarn/berry/cache/wrappy-npm-1.0.2-916de4d4b3-10c0.zip/node_modules/wrappy/",\ + "packageDependencies": [\ + ["wrappy", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["write-file-atomic", [\ + ["npm:5.0.1", {\ + "packageLocation": "../../../.yarn/berry/cache/write-file-atomic-npm-5.0.1-52283db6ee-10c0.zip/node_modules/write-file-atomic/",\ + "packageDependencies": [\ + ["imurmurhash", "npm:0.1.4"],\ + ["signal-exit", "npm:4.1.0"],\ + ["write-file-atomic", "npm:5.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["y18n", [\ + ["npm:5.0.8", {\ + "packageLocation": "../../../.yarn/berry/cache/y18n-npm-5.0.8-5f3a0a7e62-10c0.zip/node_modules/y18n/",\ + "packageDependencies": [\ + ["y18n", "npm:5.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["yallist", [\ + ["npm:3.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/yallist-npm-3.1.1-a568a556b4-10c0.zip/node_modules/yallist/",\ + "packageDependencies": [\ + ["yallist", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/yallist-npm-4.0.0-b493d9e907-10c0.zip/node_modules/yallist/",\ + "packageDependencies": [\ + ["yallist", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.0", {\ + "packageLocation": "../../../.yarn/berry/cache/yallist-npm-5.0.0-8732dd9f1c-10c0.zip/node_modules/yallist/",\ + "packageDependencies": [\ + ["yallist", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["yargs", [\ + ["npm:17.7.2", {\ + "packageLocation": "../../../.yarn/berry/cache/yargs-npm-17.7.2-80b62638e1-10c0.zip/node_modules/yargs/",\ + "packageDependencies": [\ + ["cliui", "npm:8.0.1"],\ + ["escalade", "npm:3.2.0"],\ + ["get-caller-file", "npm:2.0.5"],\ + ["require-directory", "npm:2.1.1"],\ + ["string-width", "npm:4.2.3"],\ + ["y18n", "npm:5.0.8"],\ + ["yargs", "npm:17.7.2"],\ + ["yargs-parser", "npm:21.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["yargs-parser", [\ + ["npm:21.1.1", {\ + "packageLocation": "../../../.yarn/berry/cache/yargs-parser-npm-21.1.1-8fdc003314-10c0.zip/node_modules/yargs-parser/",\ + "packageDependencies": [\ + ["yargs-parser", "npm:21.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["yocto-queue", [\ + ["npm:0.1.0", {\ + "packageLocation": "../../../.yarn/berry/cache/yocto-queue-npm-0.1.0-c6c9a7db29-10c0.zip/node_modules/yocto-queue/",\ + "packageDependencies": [\ + ["yocto-queue", "npm:0.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]]\ + ]\ +}'; + +function $$SETUP_STATE(hydrateRuntimeState, basePath) { + return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname}); +} + +const fs = require('fs'); +const path = require('path'); +const crypto = require('crypto'); +const os = require('os'); +const events = require('events'); +const nodeUtils = require('util'); +const stream = require('stream'); +const zlib = require('zlib'); +const require$$0 = require('module'); +const StringDecoder = require('string_decoder'); +const url = require('url'); +const buffer = require('buffer'); +const readline = require('readline'); +const assert = require('assert'); + +const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e }; + +function _interopNamespace(e) { + if (e && e.__esModule) return e; + const n = Object.create(null); + if (e) { + for (const k in e) { + if (k !== 'default') { + const d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: () => e[k] + }); + } + } + } + n.default = e; + return Object.freeze(n); +} + +const fs__default = /*#__PURE__*/_interopDefaultLegacy(fs); +const path__default = /*#__PURE__*/_interopDefaultLegacy(path); +const nodeUtils__namespace = /*#__PURE__*/_interopNamespace(nodeUtils); +const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib); +const require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0); +const StringDecoder__default = /*#__PURE__*/_interopDefaultLegacy(StringDecoder); +const buffer__default = /*#__PURE__*/_interopDefaultLegacy(buffer); +const assert__default = /*#__PURE__*/_interopDefaultLegacy(assert); + +const S_IFMT = 61440; +const S_IFDIR = 16384; +const S_IFREG = 32768; +const S_IFLNK = 40960; +const SAFE_TIME = 456789e3; + +function makeError$1(code, message) { + return Object.assign(new Error(`${code}: ${message}`), { code }); +} +function EBUSY(message) { + return makeError$1(`EBUSY`, message); +} +function ENOSYS(message, reason) { + return makeError$1(`ENOSYS`, `${message}, ${reason}`); +} +function EINVAL(reason) { + return makeError$1(`EINVAL`, `invalid argument, ${reason}`); +} +function EBADF(reason) { + return makeError$1(`EBADF`, `bad file descriptor, ${reason}`); +} +function ENOENT(reason) { + return makeError$1(`ENOENT`, `no such file or directory, ${reason}`); +} +function ENOTDIR(reason) { + return makeError$1(`ENOTDIR`, `not a directory, ${reason}`); +} +function EISDIR(reason) { + return makeError$1(`EISDIR`, `illegal operation on a directory, ${reason}`); +} +function EEXIST(reason) { + return makeError$1(`EEXIST`, `file already exists, ${reason}`); +} +function EROFS(reason) { + return makeError$1(`EROFS`, `read-only filesystem, ${reason}`); +} +function ENOTEMPTY(reason) { + return makeError$1(`ENOTEMPTY`, `directory not empty, ${reason}`); +} +function EOPNOTSUPP(reason) { + return makeError$1(`EOPNOTSUPP`, `operation not supported, ${reason}`); +} +function ERR_DIR_CLOSED() { + return makeError$1(`ERR_DIR_CLOSED`, `Directory handle was closed`); +} + +const DEFAULT_MODE = S_IFREG | 420; +class StatEntry { + uid = 0; + gid = 0; + size = 0; + blksize = 0; + atimeMs = 0; + mtimeMs = 0; + ctimeMs = 0; + birthtimeMs = 0; + atime = /* @__PURE__ */ new Date(0); + mtime = /* @__PURE__ */ new Date(0); + ctime = /* @__PURE__ */ new Date(0); + birthtime = /* @__PURE__ */ new Date(0); + dev = 0; + ino = 0; + mode = DEFAULT_MODE; + nlink = 1; + rdev = 0; + blocks = 1; + isBlockDevice() { + return false; + } + isCharacterDevice() { + return false; + } + isDirectory() { + return (this.mode & S_IFMT) === S_IFDIR; + } + isFIFO() { + return false; + } + isFile() { + return (this.mode & S_IFMT) === S_IFREG; + } + isSocket() { + return false; + } + isSymbolicLink() { + return (this.mode & S_IFMT) === S_IFLNK; + } +} +class BigIntStatsEntry { + uid = BigInt(0); + gid = BigInt(0); + size = BigInt(0); + blksize = BigInt(0); + atimeMs = BigInt(0); + mtimeMs = BigInt(0); + ctimeMs = BigInt(0); + birthtimeMs = BigInt(0); + atimeNs = BigInt(0); + mtimeNs = BigInt(0); + ctimeNs = BigInt(0); + birthtimeNs = BigInt(0); + atime = /* @__PURE__ */ new Date(0); + mtime = /* @__PURE__ */ new Date(0); + ctime = /* @__PURE__ */ new Date(0); + birthtime = /* @__PURE__ */ new Date(0); + dev = BigInt(0); + ino = BigInt(0); + mode = BigInt(DEFAULT_MODE); + nlink = BigInt(1); + rdev = BigInt(0); + blocks = BigInt(1); + isBlockDevice() { + return false; + } + isCharacterDevice() { + return false; + } + isDirectory() { + return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFDIR); + } + isFIFO() { + return false; + } + isFile() { + return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFREG); + } + isSocket() { + return false; + } + isSymbolicLink() { + return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFLNK); + } +} +function makeDefaultStats() { + return new StatEntry(); +} +function clearStats(stats) { + for (const key in stats) { + if (Object.hasOwn(stats, key)) { + const element = stats[key]; + if (typeof element === `number`) { + stats[key] = 0; + } else if (typeof element === `bigint`) { + stats[key] = BigInt(0); + } else if (nodeUtils__namespace.types.isDate(element)) { + stats[key] = /* @__PURE__ */ new Date(0); + } + } + } + return stats; +} +function convertToBigIntStats(stats) { + const bigintStats = new BigIntStatsEntry(); + for (const key in stats) { + if (Object.hasOwn(stats, key)) { + const element = stats[key]; + if (typeof element === `number`) { + bigintStats[key] = BigInt(element); + } else if (nodeUtils__namespace.types.isDate(element)) { + bigintStats[key] = new Date(element); + } + } + } + bigintStats.atimeNs = bigintStats.atimeMs * BigInt(1e6); + bigintStats.mtimeNs = bigintStats.mtimeMs * BigInt(1e6); + bigintStats.ctimeNs = bigintStats.ctimeMs * BigInt(1e6); + bigintStats.birthtimeNs = bigintStats.birthtimeMs * BigInt(1e6); + return bigintStats; +} +function areStatsEqual(a, b) { + if (a.atimeMs !== b.atimeMs) + return false; + if (a.birthtimeMs !== b.birthtimeMs) + return false; + if (a.blksize !== b.blksize) + return false; + if (a.blocks !== b.blocks) + return false; + if (a.ctimeMs !== b.ctimeMs) + return false; + if (a.dev !== b.dev) + return false; + if (a.gid !== b.gid) + return false; + if (a.ino !== b.ino) + return false; + if (a.isBlockDevice() !== b.isBlockDevice()) + return false; + if (a.isCharacterDevice() !== b.isCharacterDevice()) + return false; + if (a.isDirectory() !== b.isDirectory()) + return false; + if (a.isFIFO() !== b.isFIFO()) + return false; + if (a.isFile() !== b.isFile()) + return false; + if (a.isSocket() !== b.isSocket()) + return false; + if (a.isSymbolicLink() !== b.isSymbolicLink()) + return false; + if (a.mode !== b.mode) + return false; + if (a.mtimeMs !== b.mtimeMs) + return false; + if (a.nlink !== b.nlink) + return false; + if (a.rdev !== b.rdev) + return false; + if (a.size !== b.size) + return false; + if (a.uid !== b.uid) + return false; + const aN = a; + const bN = b; + if (aN.atimeNs !== bN.atimeNs) + return false; + if (aN.mtimeNs !== bN.mtimeNs) + return false; + if (aN.ctimeNs !== bN.ctimeNs) + return false; + if (aN.birthtimeNs !== bN.birthtimeNs) + return false; + return true; +} + +const PortablePath = { + root: `/`, + dot: `.`, + parent: `..` +}; +const Filename = { + home: `~`, + nodeModules: `node_modules`, + manifest: `package.json`, + lockfile: `yarn.lock`, + virtual: `__virtual__`, + /** + * @deprecated + */ + pnpJs: `.pnp.js`, + pnpCjs: `.pnp.cjs`, + pnpData: `.pnp.data.json`, + pnpEsmLoader: `.pnp.loader.mjs`, + rc: `.yarnrc.yml`, + env: `.env` +}; +const npath = Object.create(path__default.default); +const ppath = Object.create(path__default.default.posix); +npath.cwd = () => process.cwd(); +ppath.cwd = process.platform === `win32` ? () => toPortablePath(process.cwd()) : process.cwd; +if (process.platform === `win32`) { + ppath.resolve = (...segments) => { + if (segments.length > 0 && ppath.isAbsolute(segments[0])) { + return path__default.default.posix.resolve(...segments); + } else { + return path__default.default.posix.resolve(ppath.cwd(), ...segments); + } + }; +} +const contains = function(pathUtils, from, to) { + from = pathUtils.normalize(from); + to = pathUtils.normalize(to); + if (from === to) + return `.`; + if (!from.endsWith(pathUtils.sep)) + from = from + pathUtils.sep; + if (to.startsWith(from)) { + return to.slice(from.length); + } else { + return null; + } +}; +npath.contains = (from, to) => contains(npath, from, to); +ppath.contains = (from, to) => contains(ppath, from, to); +const WINDOWS_PATH_REGEXP = /^([a-zA-Z]:.*)$/; +const UNC_WINDOWS_PATH_REGEXP = /^\/\/(\.\/)?(.*)$/; +const PORTABLE_PATH_REGEXP = /^\/([a-zA-Z]:.*)$/; +const UNC_PORTABLE_PATH_REGEXP = /^\/unc\/(\.dot\/)?(.*)$/; +function fromPortablePathWin32(p) { + let portablePathMatch, uncPortablePathMatch; + if (portablePathMatch = p.match(PORTABLE_PATH_REGEXP)) + p = portablePathMatch[1]; + else if (uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP)) + p = `\\\\${uncPortablePathMatch[1] ? `.\\` : ``}${uncPortablePathMatch[2]}`; + else + return p; + return p.replace(/\//g, `\\`); +} +function toPortablePathWin32(p) { + p = p.replace(/\\/g, `/`); + let windowsPathMatch, uncWindowsPathMatch; + if (windowsPathMatch = p.match(WINDOWS_PATH_REGEXP)) + p = `/${windowsPathMatch[1]}`; + else if (uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP)) + p = `/unc/${uncWindowsPathMatch[1] ? `.dot/` : ``}${uncWindowsPathMatch[2]}`; + return p; +} +const toPortablePath = process.platform === `win32` ? toPortablePathWin32 : (p) => p; +const fromPortablePath = process.platform === `win32` ? fromPortablePathWin32 : (p) => p; +npath.fromPortablePath = fromPortablePath; +npath.toPortablePath = toPortablePath; +function convertPath(targetPathUtils, sourcePath) { + return targetPathUtils === npath ? fromPortablePath(sourcePath) : toPortablePath(sourcePath); +} + +const defaultTime = new Date(SAFE_TIME * 1e3); +const defaultTimeMs = defaultTime.getTime(); +async function copyPromise(destinationFs, destination, sourceFs, source, opts) { + const normalizedDestination = destinationFs.pathUtils.normalize(destination); + const normalizedSource = sourceFs.pathUtils.normalize(source); + const prelayout = []; + const postlayout = []; + const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : await sourceFs.lstatPromise(normalizedSource); + await destinationFs.mkdirpPromise(destinationFs.pathUtils.dirname(destination), { utimes: [atime, mtime] }); + await copyImpl(prelayout, postlayout, destinationFs, normalizedDestination, sourceFs, normalizedSource, { ...opts, didParentExist: true }); + for (const operation of prelayout) + await operation(); + await Promise.all(postlayout.map((operation) => { + return operation(); + })); +} +async function copyImpl(prelayout, postlayout, destinationFs, destination, sourceFs, source, opts) { + const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null; + const sourceStat = await sourceFs.lstatPromise(source); + const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat; + let updated; + switch (true) { + case sourceStat.isDirectory(): + { + updated = await copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + case sourceStat.isFile(): + { + updated = await copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + case sourceStat.isSymbolicLink(): + { + updated = await copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + default: { + throw new Error(`Unsupported file type (${sourceStat.mode})`); + } + } + if (opts.linkStrategy?.type !== `HardlinkFromIndex` || !sourceStat.isFile()) { + if (updated || destinationStat?.mtime?.getTime() !== mtime.getTime() || destinationStat?.atime?.getTime() !== atime.getTime()) { + postlayout.push(() => destinationFs.lutimesPromise(destination, atime, mtime)); + updated = true; + } + if (destinationStat === null || (destinationStat.mode & 511) !== (sourceStat.mode & 511)) { + postlayout.push(() => destinationFs.chmodPromise(destination, sourceStat.mode & 511)); + updated = true; + } + } + return updated; +} +async function maybeLStat(baseFs, p) { + try { + return await baseFs.lstatPromise(p); + } catch { + return null; + } +} +async function copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null && !destinationStat.isDirectory()) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + let updated = false; + if (destinationStat === null) { + prelayout.push(async () => { + try { + await destinationFs.mkdirPromise(destination, { mode: sourceStat.mode }); + } catch (err) { + if (err.code !== `EEXIST`) { + throw err; + } + } + }); + updated = true; + } + const entries = await sourceFs.readdirPromise(source); + const nextOpts = opts.didParentExist && !destinationStat ? { ...opts, didParentExist: false } : opts; + if (opts.stableSort) { + for (const entry of entries.sort()) { + if (await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts)) { + updated = true; + } + } + } else { + const entriesUpdateStatus = await Promise.all(entries.map(async (entry) => { + await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts); + })); + if (entriesUpdateStatus.some((status) => status)) { + updated = true; + } + } + return updated; +} +async function copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, linkStrategy) { + const sourceHash = await sourceFs.checksumFilePromise(source, { algorithm: `sha1` }); + const defaultMode = 420; + const sourceMode = sourceStat.mode & 511; + const indexFileName = `${sourceHash}${sourceMode !== defaultMode ? sourceMode.toString(8) : ``}`; + const indexPath = destinationFs.pathUtils.join(linkStrategy.indexPath, sourceHash.slice(0, 2), `${indexFileName}.dat`); + let AtomicBehavior; + ((AtomicBehavior2) => { + AtomicBehavior2[AtomicBehavior2["Lock"] = 0] = "Lock"; + AtomicBehavior2[AtomicBehavior2["Rename"] = 1] = "Rename"; + })(AtomicBehavior || (AtomicBehavior = {})); + let atomicBehavior = 1 /* Rename */; + let indexStat = await maybeLStat(destinationFs, indexPath); + if (destinationStat) { + const isDestinationHardlinkedFromIndex = indexStat && destinationStat.dev === indexStat.dev && destinationStat.ino === indexStat.ino; + const isIndexModified = indexStat?.mtimeMs !== defaultTimeMs; + if (isDestinationHardlinkedFromIndex) { + if (isIndexModified && linkStrategy.autoRepair) { + atomicBehavior = 0 /* Lock */; + indexStat = null; + } + } + if (!isDestinationHardlinkedFromIndex) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + } + const tempPath = !indexStat && atomicBehavior === 1 /* Rename */ ? `${indexPath}.${Math.floor(Math.random() * 4294967296).toString(16).padStart(8, `0`)}` : null; + let tempPathCleaned = false; + prelayout.push(async () => { + if (!indexStat) { + if (atomicBehavior === 0 /* Lock */) { + await destinationFs.lockPromise(indexPath, async () => { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(indexPath, content); + }); + } + if (atomicBehavior === 1 /* Rename */ && tempPath) { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(tempPath, content); + try { + await destinationFs.linkPromise(tempPath, indexPath); + } catch (err) { + if (err.code === `EEXIST`) { + tempPathCleaned = true; + await destinationFs.unlinkPromise(tempPath); + } else { + throw err; + } + } + } + } + if (!destinationStat) { + await destinationFs.linkPromise(indexPath, destination); + } + }); + postlayout.push(async () => { + if (!indexStat) { + await destinationFs.lutimesPromise(indexPath, defaultTime, defaultTime); + if (sourceMode !== defaultMode) { + await destinationFs.chmodPromise(indexPath, sourceMode); + } + } + if (tempPath && !tempPathCleaned) { + await destinationFs.unlinkPromise(tempPath); + } + }); + return false; +} +async function copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + prelayout.push(async () => { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(destination, content); + }); + return true; +} +async function copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (opts.linkStrategy?.type === `HardlinkFromIndex`) { + return copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, opts.linkStrategy); + } else { + return copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } +} +async function copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + prelayout.push(async () => { + await destinationFs.symlinkPromise(convertPath(destinationFs.pathUtils, await sourceFs.readlinkPromise(source)), destination); + }); + return true; +} + +class CustomDir { + constructor(path, nextDirent, opts = {}) { + this.path = path; + this.nextDirent = nextDirent; + this.opts = opts; + } + closed = false; + throwIfClosed() { + if (this.closed) { + throw ERR_DIR_CLOSED(); + } + } + async *[Symbol.asyncIterator]() { + try { + let dirent; + while ((dirent = await this.read()) !== null) { + yield dirent; + } + } finally { + await this.close(); + } + } + read(cb) { + const dirent = this.readSync(); + if (typeof cb !== `undefined`) + return cb(null, dirent); + return Promise.resolve(dirent); + } + readSync() { + this.throwIfClosed(); + return this.nextDirent(); + } + close(cb) { + this.closeSync(); + if (typeof cb !== `undefined`) + return cb(null); + return Promise.resolve(); + } + closeSync() { + this.throwIfClosed(); + this.opts.onClose?.(); + this.closed = true; + } +} +function opendir(fakeFs, path, entries, opts) { + const nextDirent = () => { + const filename = entries.shift(); + if (typeof filename === `undefined`) + return null; + const entryPath = fakeFs.pathUtils.join(path, filename); + return Object.assign(fakeFs.statSync(entryPath), { + name: filename, + path: void 0 + }); + }; + return new CustomDir(path, nextDirent, opts); +} + +function assertStatus(current, expected) { + if (current !== expected) { + throw new Error(`Invalid StatWatcher status: expected '${expected}', got '${current}'`); + } +} +class CustomStatWatcher extends events.EventEmitter { + fakeFs; + path; + bigint; + status = "ready" /* Ready */; + changeListeners = /* @__PURE__ */ new Map(); + lastStats; + startTimeout = null; + static create(fakeFs, path, opts) { + const statWatcher = new CustomStatWatcher(fakeFs, path, opts); + statWatcher.start(); + return statWatcher; + } + constructor(fakeFs, path, { bigint = false } = {}) { + super(); + this.fakeFs = fakeFs; + this.path = path; + this.bigint = bigint; + this.lastStats = this.stat(); + } + start() { + assertStatus(this.status, "ready" /* Ready */); + this.status = "running" /* Running */; + this.startTimeout = setTimeout(() => { + this.startTimeout = null; + if (!this.fakeFs.existsSync(this.path)) { + this.emit("change" /* Change */, this.lastStats, this.lastStats); + } + }, 3); + } + stop() { + assertStatus(this.status, "running" /* Running */); + this.status = "stopped" /* Stopped */; + if (this.startTimeout !== null) { + clearTimeout(this.startTimeout); + this.startTimeout = null; + } + this.emit("stop" /* Stop */); + } + stat() { + try { + return this.fakeFs.statSync(this.path, { bigint: this.bigint }); + } catch { + const statInstance = this.bigint ? new BigIntStatsEntry() : new StatEntry(); + return clearStats(statInstance); + } + } + /** + * Creates an interval whose callback compares the current stats with the previous stats and notifies all listeners in case of changes. + * + * @param opts.persistent Decides whether the interval should be immediately unref-ed. + */ + makeInterval(opts) { + const interval = setInterval(() => { + const currentStats = this.stat(); + const previousStats = this.lastStats; + if (areStatsEqual(currentStats, previousStats)) + return; + this.lastStats = currentStats; + this.emit("change" /* Change */, currentStats, previousStats); + }, opts.interval); + return opts.persistent ? interval : interval.unref(); + } + /** + * Registers a listener and assigns it an interval. + */ + registerChangeListener(listener, opts) { + this.addListener("change" /* Change */, listener); + this.changeListeners.set(listener, this.makeInterval(opts)); + } + /** + * Unregisters the listener and clears the assigned interval. + */ + unregisterChangeListener(listener) { + this.removeListener("change" /* Change */, listener); + const interval = this.changeListeners.get(listener); + if (typeof interval !== `undefined`) + clearInterval(interval); + this.changeListeners.delete(listener); + } + /** + * Unregisters all listeners and clears all assigned intervals. + */ + unregisterAllChangeListeners() { + for (const listener of this.changeListeners.keys()) { + this.unregisterChangeListener(listener); + } + } + hasChangeListeners() { + return this.changeListeners.size > 0; + } + /** + * Refs all stored intervals. + */ + ref() { + for (const interval of this.changeListeners.values()) + interval.ref(); + return this; + } + /** + * Unrefs all stored intervals. + */ + unref() { + for (const interval of this.changeListeners.values()) + interval.unref(); + return this; + } +} + +const statWatchersByFakeFS = /* @__PURE__ */ new WeakMap(); +function watchFile(fakeFs, path, a, b) { + let bigint; + let persistent; + let interval; + let listener; + switch (typeof a) { + case `function`: + { + bigint = false; + persistent = true; + interval = 5007; + listener = a; + } + break; + default: + { + ({ + bigint = false, + persistent = true, + interval = 5007 + } = a); + listener = b; + } + break; + } + let statWatchers = statWatchersByFakeFS.get(fakeFs); + if (typeof statWatchers === `undefined`) + statWatchersByFakeFS.set(fakeFs, statWatchers = /* @__PURE__ */ new Map()); + let statWatcher = statWatchers.get(path); + if (typeof statWatcher === `undefined`) { + statWatcher = CustomStatWatcher.create(fakeFs, path, { bigint }); + statWatchers.set(path, statWatcher); + } + statWatcher.registerChangeListener(listener, { persistent, interval }); + return statWatcher; +} +function unwatchFile(fakeFs, path, cb) { + const statWatchers = statWatchersByFakeFS.get(fakeFs); + if (typeof statWatchers === `undefined`) + return; + const statWatcher = statWatchers.get(path); + if (typeof statWatcher === `undefined`) + return; + if (typeof cb === `undefined`) + statWatcher.unregisterAllChangeListeners(); + else + statWatcher.unregisterChangeListener(cb); + if (!statWatcher.hasChangeListeners()) { + statWatcher.stop(); + statWatchers.delete(path); + } +} +function unwatchAllFiles(fakeFs) { + const statWatchers = statWatchersByFakeFS.get(fakeFs); + if (typeof statWatchers === `undefined`) + return; + for (const path of statWatchers.keys()) { + unwatchFile(fakeFs, path); + } +} + +class FakeFS { + pathUtils; + constructor(pathUtils) { + this.pathUtils = pathUtils; + } + async *genTraversePromise(init, { stableSort = false } = {}) { + const stack = [init]; + while (stack.length > 0) { + const p = stack.shift(); + const entry = await this.lstatPromise(p); + if (entry.isDirectory()) { + const entries = await this.readdirPromise(p); + if (stableSort) { + for (const entry2 of entries.sort()) { + stack.push(this.pathUtils.join(p, entry2)); + } + } else { + throw new Error(`Not supported`); + } + } else { + yield p; + } + } + } + async checksumFilePromise(path, { algorithm = `sha512` } = {}) { + const fd = await this.openPromise(path, `r`); + try { + const CHUNK_SIZE = 65536; + const chunk = Buffer.allocUnsafeSlow(CHUNK_SIZE); + const hash = crypto.createHash(algorithm); + let bytesRead = 0; + while ((bytesRead = await this.readPromise(fd, chunk, 0, CHUNK_SIZE)) !== 0) + hash.update(bytesRead === CHUNK_SIZE ? chunk : chunk.slice(0, bytesRead)); + return hash.digest(`hex`); + } finally { + await this.closePromise(fd); + } + } + async removePromise(p, { recursive = true, maxRetries = 5 } = {}) { + let stat; + try { + stat = await this.lstatPromise(p); + } catch (error) { + if (error.code === `ENOENT`) { + return; + } else { + throw error; + } + } + if (stat.isDirectory()) { + if (recursive) { + const entries = await this.readdirPromise(p); + await Promise.all(entries.map((entry) => { + return this.removePromise(this.pathUtils.resolve(p, entry)); + })); + } + for (let t = 0; t <= maxRetries; t++) { + try { + await this.rmdirPromise(p); + break; + } catch (error) { + if (error.code !== `EBUSY` && error.code !== `ENOTEMPTY`) { + throw error; + } else if (t < maxRetries) { + await new Promise((resolve) => setTimeout(resolve, t * 100)); + } + } + } + } else { + await this.unlinkPromise(p); + } + } + removeSync(p, { recursive = true } = {}) { + let stat; + try { + stat = this.lstatSync(p); + } catch (error) { + if (error.code === `ENOENT`) { + return; + } else { + throw error; + } + } + if (stat.isDirectory()) { + if (recursive) + for (const entry of this.readdirSync(p)) + this.removeSync(this.pathUtils.resolve(p, entry)); + this.rmdirSync(p); + } else { + this.unlinkSync(p); + } + } + async mkdirpPromise(p, { chmod, utimes } = {}) { + p = this.resolve(p); + if (p === this.pathUtils.dirname(p)) + return void 0; + const parts = p.split(this.pathUtils.sep); + let createdDirectory; + for (let u = 2; u <= parts.length; ++u) { + const subPath = parts.slice(0, u).join(this.pathUtils.sep); + if (!this.existsSync(subPath)) { + try { + await this.mkdirPromise(subPath); + } catch (error) { + if (error.code === `EEXIST`) { + continue; + } else { + throw error; + } + } + createdDirectory ??= subPath; + if (chmod != null) + await this.chmodPromise(subPath, chmod); + if (utimes != null) { + await this.utimesPromise(subPath, utimes[0], utimes[1]); + } else { + const parentStat = await this.statPromise(this.pathUtils.dirname(subPath)); + await this.utimesPromise(subPath, parentStat.atime, parentStat.mtime); + } + } + } + return createdDirectory; + } + mkdirpSync(p, { chmod, utimes } = {}) { + p = this.resolve(p); + if (p === this.pathUtils.dirname(p)) + return void 0; + const parts = p.split(this.pathUtils.sep); + let createdDirectory; + for (let u = 2; u <= parts.length; ++u) { + const subPath = parts.slice(0, u).join(this.pathUtils.sep); + if (!this.existsSync(subPath)) { + try { + this.mkdirSync(subPath); + } catch (error) { + if (error.code === `EEXIST`) { + continue; + } else { + throw error; + } + } + createdDirectory ??= subPath; + if (chmod != null) + this.chmodSync(subPath, chmod); + if (utimes != null) { + this.utimesSync(subPath, utimes[0], utimes[1]); + } else { + const parentStat = this.statSync(this.pathUtils.dirname(subPath)); + this.utimesSync(subPath, parentStat.atime, parentStat.mtime); + } + } + } + return createdDirectory; + } + async copyPromise(destination, source, { baseFs = this, overwrite = true, stableSort = false, stableTime = false, linkStrategy = null } = {}) { + return await copyPromise(this, destination, baseFs, source, { overwrite, stableSort, stableTime, linkStrategy }); + } + copySync(destination, source, { baseFs = this, overwrite = true } = {}) { + const stat = baseFs.lstatSync(source); + const exists = this.existsSync(destination); + if (stat.isDirectory()) { + this.mkdirpSync(destination); + const directoryListing = baseFs.readdirSync(source); + for (const entry of directoryListing) { + this.copySync(this.pathUtils.join(destination, entry), baseFs.pathUtils.join(source, entry), { baseFs, overwrite }); + } + } else if (stat.isFile()) { + if (!exists || overwrite) { + if (exists) + this.removeSync(destination); + const content = baseFs.readFileSync(source); + this.writeFileSync(destination, content); + } + } else if (stat.isSymbolicLink()) { + if (!exists || overwrite) { + if (exists) + this.removeSync(destination); + const target = baseFs.readlinkSync(source); + this.symlinkSync(convertPath(this.pathUtils, target), destination); + } + } else { + throw new Error(`Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`); + } + const mode = stat.mode & 511; + this.chmodSync(destination, mode); + } + async changeFilePromise(p, content, opts = {}) { + if (Buffer.isBuffer(content)) { + return this.changeFileBufferPromise(p, content, opts); + } else { + return this.changeFileTextPromise(p, content, opts); + } + } + async changeFileBufferPromise(p, content, { mode } = {}) { + let current = Buffer.alloc(0); + try { + current = await this.readFilePromise(p); + } catch { + } + if (Buffer.compare(current, content) === 0) + return; + await this.writeFilePromise(p, content, { mode }); + } + async changeFileTextPromise(p, content, { automaticNewlines, mode } = {}) { + let current = ``; + try { + current = await this.readFilePromise(p, `utf8`); + } catch { + } + const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; + if (current === normalizedContent) + return; + await this.writeFilePromise(p, normalizedContent, { mode }); + } + changeFileSync(p, content, opts = {}) { + if (Buffer.isBuffer(content)) { + return this.changeFileBufferSync(p, content, opts); + } else { + return this.changeFileTextSync(p, content, opts); + } + } + changeFileBufferSync(p, content, { mode } = {}) { + let current = Buffer.alloc(0); + try { + current = this.readFileSync(p); + } catch { + } + if (Buffer.compare(current, content) === 0) + return; + this.writeFileSync(p, content, { mode }); + } + changeFileTextSync(p, content, { automaticNewlines = false, mode } = {}) { + let current = ``; + try { + current = this.readFileSync(p, `utf8`); + } catch { + } + const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; + if (current === normalizedContent) + return; + this.writeFileSync(p, normalizedContent, { mode }); + } + async movePromise(fromP, toP) { + try { + await this.renamePromise(fromP, toP); + } catch (error) { + if (error.code === `EXDEV`) { + await this.copyPromise(toP, fromP); + await this.removePromise(fromP); + } else { + throw error; + } + } + } + moveSync(fromP, toP) { + try { + this.renameSync(fromP, toP); + } catch (error) { + if (error.code === `EXDEV`) { + this.copySync(toP, fromP); + this.removeSync(fromP); + } else { + throw error; + } + } + } + async lockPromise(affectedPath, callback) { + const lockPath = `${affectedPath}.flock`; + const interval = 1e3 / 60; + const startTime = Date.now(); + let fd = null; + const isAlive = async () => { + let pid; + try { + [pid] = await this.readJsonPromise(lockPath); + } catch { + return Date.now() - startTime < 500; + } + try { + process.kill(pid, 0); + return true; + } catch { + return false; + } + }; + while (fd === null) { + try { + fd = await this.openPromise(lockPath, `wx`); + } catch (error) { + if (error.code === `EEXIST`) { + if (!await isAlive()) { + try { + await this.unlinkPromise(lockPath); + continue; + } catch { + } + } + if (Date.now() - startTime < 60 * 1e3) { + await new Promise((resolve) => setTimeout(resolve, interval)); + } else { + throw new Error(`Couldn't acquire a lock in a reasonable time (via ${lockPath})`); + } + } else { + throw error; + } + } + } + await this.writePromise(fd, JSON.stringify([process.pid])); + try { + return await callback(); + } finally { + try { + await this.closePromise(fd); + await this.unlinkPromise(lockPath); + } catch { + } + } + } + async readJsonPromise(p) { + const content = await this.readFilePromise(p, `utf8`); + try { + return JSON.parse(content); + } catch (error) { + error.message += ` (in ${p})`; + throw error; + } + } + readJsonSync(p) { + const content = this.readFileSync(p, `utf8`); + try { + return JSON.parse(content); + } catch (error) { + error.message += ` (in ${p})`; + throw error; + } + } + async writeJsonPromise(p, data, { compact = false } = {}) { + const space = compact ? 0 : 2; + return await this.writeFilePromise(p, `${JSON.stringify(data, null, space)} +`); + } + writeJsonSync(p, data, { compact = false } = {}) { + const space = compact ? 0 : 2; + return this.writeFileSync(p, `${JSON.stringify(data, null, space)} +`); + } + async preserveTimePromise(p, cb) { + const stat = await this.lstatPromise(p); + const result = await cb(); + if (typeof result !== `undefined`) + p = result; + await this.lutimesPromise(p, stat.atime, stat.mtime); + } + async preserveTimeSync(p, cb) { + const stat = this.lstatSync(p); + const result = cb(); + if (typeof result !== `undefined`) + p = result; + this.lutimesSync(p, stat.atime, stat.mtime); + } +} +class BasePortableFakeFS extends FakeFS { + constructor() { + super(ppath); + } +} +function getEndOfLine(content) { + const matches = content.match(/\r?\n/g); + if (matches === null) + return os.EOL; + const crlf = matches.filter((nl) => nl === `\r +`).length; + const lf = matches.length - crlf; + return crlf > lf ? `\r +` : ` +`; +} +function normalizeLineEndings(originalContent, newContent) { + return newContent.replace(/\r?\n/g, getEndOfLine(originalContent)); +} + +class ProxiedFS extends FakeFS { + getExtractHint(hints) { + return this.baseFs.getExtractHint(hints); + } + resolve(path) { + return this.mapFromBase(this.baseFs.resolve(this.mapToBase(path))); + } + getRealPath() { + return this.mapFromBase(this.baseFs.getRealPath()); + } + async openPromise(p, flags, mode) { + return this.baseFs.openPromise(this.mapToBase(p), flags, mode); + } + openSync(p, flags, mode) { + return this.baseFs.openSync(this.mapToBase(p), flags, mode); + } + async opendirPromise(p, opts) { + return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(p), opts), { path: p }); + } + opendirSync(p, opts) { + return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { path: p }); + } + async readPromise(fd, buffer, offset, length, position) { + return await this.baseFs.readPromise(fd, buffer, offset, length, position); + } + readSync(fd, buffer, offset, length, position) { + return this.baseFs.readSync(fd, buffer, offset, length, position); + } + async writePromise(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return await this.baseFs.writePromise(fd, buffer, offset); + } else { + return await this.baseFs.writePromise(fd, buffer, offset, length, position); + } + } + writeSync(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return this.baseFs.writeSync(fd, buffer, offset); + } else { + return this.baseFs.writeSync(fd, buffer, offset, length, position); + } + } + async closePromise(fd) { + return this.baseFs.closePromise(fd); + } + closeSync(fd) { + this.baseFs.closeSync(fd); + } + createReadStream(p, opts) { + return this.baseFs.createReadStream(p !== null ? this.mapToBase(p) : p, opts); + } + createWriteStream(p, opts) { + return this.baseFs.createWriteStream(p !== null ? this.mapToBase(p) : p, opts); + } + async realpathPromise(p) { + return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(p))); + } + realpathSync(p) { + return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(p))); + } + async existsPromise(p) { + return this.baseFs.existsPromise(this.mapToBase(p)); + } + existsSync(p) { + return this.baseFs.existsSync(this.mapToBase(p)); + } + accessSync(p, mode) { + return this.baseFs.accessSync(this.mapToBase(p), mode); + } + async accessPromise(p, mode) { + return this.baseFs.accessPromise(this.mapToBase(p), mode); + } + async statPromise(p, opts) { + return this.baseFs.statPromise(this.mapToBase(p), opts); + } + statSync(p, opts) { + return this.baseFs.statSync(this.mapToBase(p), opts); + } + async fstatPromise(fd, opts) { + return this.baseFs.fstatPromise(fd, opts); + } + fstatSync(fd, opts) { + return this.baseFs.fstatSync(fd, opts); + } + lstatPromise(p, opts) { + return this.baseFs.lstatPromise(this.mapToBase(p), opts); + } + lstatSync(p, opts) { + return this.baseFs.lstatSync(this.mapToBase(p), opts); + } + async fchmodPromise(fd, mask) { + return this.baseFs.fchmodPromise(fd, mask); + } + fchmodSync(fd, mask) { + return this.baseFs.fchmodSync(fd, mask); + } + async chmodPromise(p, mask) { + return this.baseFs.chmodPromise(this.mapToBase(p), mask); + } + chmodSync(p, mask) { + return this.baseFs.chmodSync(this.mapToBase(p), mask); + } + async fchownPromise(fd, uid, gid) { + return this.baseFs.fchownPromise(fd, uid, gid); + } + fchownSync(fd, uid, gid) { + return this.baseFs.fchownSync(fd, uid, gid); + } + async chownPromise(p, uid, gid) { + return this.baseFs.chownPromise(this.mapToBase(p), uid, gid); + } + chownSync(p, uid, gid) { + return this.baseFs.chownSync(this.mapToBase(p), uid, gid); + } + async renamePromise(oldP, newP) { + return this.baseFs.renamePromise(this.mapToBase(oldP), this.mapToBase(newP)); + } + renameSync(oldP, newP) { + return this.baseFs.renameSync(this.mapToBase(oldP), this.mapToBase(newP)); + } + async copyFilePromise(sourceP, destP, flags = 0) { + return this.baseFs.copyFilePromise(this.mapToBase(sourceP), this.mapToBase(destP), flags); + } + copyFileSync(sourceP, destP, flags = 0) { + return this.baseFs.copyFileSync(this.mapToBase(sourceP), this.mapToBase(destP), flags); + } + async appendFilePromise(p, content, opts) { + return this.baseFs.appendFilePromise(this.fsMapToBase(p), content, opts); + } + appendFileSync(p, content, opts) { + return this.baseFs.appendFileSync(this.fsMapToBase(p), content, opts); + } + async writeFilePromise(p, content, opts) { + return this.baseFs.writeFilePromise(this.fsMapToBase(p), content, opts); + } + writeFileSync(p, content, opts) { + return this.baseFs.writeFileSync(this.fsMapToBase(p), content, opts); + } + async unlinkPromise(p) { + return this.baseFs.unlinkPromise(this.mapToBase(p)); + } + unlinkSync(p) { + return this.baseFs.unlinkSync(this.mapToBase(p)); + } + async utimesPromise(p, atime, mtime) { + return this.baseFs.utimesPromise(this.mapToBase(p), atime, mtime); + } + utimesSync(p, atime, mtime) { + return this.baseFs.utimesSync(this.mapToBase(p), atime, mtime); + } + async lutimesPromise(p, atime, mtime) { + return this.baseFs.lutimesPromise(this.mapToBase(p), atime, mtime); + } + lutimesSync(p, atime, mtime) { + return this.baseFs.lutimesSync(this.mapToBase(p), atime, mtime); + } + async mkdirPromise(p, opts) { + return this.baseFs.mkdirPromise(this.mapToBase(p), opts); + } + mkdirSync(p, opts) { + return this.baseFs.mkdirSync(this.mapToBase(p), opts); + } + async rmdirPromise(p, opts) { + return this.baseFs.rmdirPromise(this.mapToBase(p), opts); + } + rmdirSync(p, opts) { + return this.baseFs.rmdirSync(this.mapToBase(p), opts); + } + async rmPromise(p, opts) { + return this.baseFs.rmPromise(this.mapToBase(p), opts); + } + rmSync(p, opts) { + return this.baseFs.rmSync(this.mapToBase(p), opts); + } + async linkPromise(existingP, newP) { + return this.baseFs.linkPromise(this.mapToBase(existingP), this.mapToBase(newP)); + } + linkSync(existingP, newP) { + return this.baseFs.linkSync(this.mapToBase(existingP), this.mapToBase(newP)); + } + async symlinkPromise(target, p, type) { + const mappedP = this.mapToBase(p); + if (this.pathUtils.isAbsolute(target)) + return this.baseFs.symlinkPromise(this.mapToBase(target), mappedP, type); + const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); + const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + return this.baseFs.symlinkPromise(mappedTarget, mappedP, type); + } + symlinkSync(target, p, type) { + const mappedP = this.mapToBase(p); + if (this.pathUtils.isAbsolute(target)) + return this.baseFs.symlinkSync(this.mapToBase(target), mappedP, type); + const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); + const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + return this.baseFs.symlinkSync(mappedTarget, mappedP, type); + } + async readFilePromise(p, encoding) { + return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding); + } + readFileSync(p, encoding) { + return this.baseFs.readFileSync(this.fsMapToBase(p), encoding); + } + readdirPromise(p, opts) { + return this.baseFs.readdirPromise(this.mapToBase(p), opts); + } + readdirSync(p, opts) { + return this.baseFs.readdirSync(this.mapToBase(p), opts); + } + async readlinkPromise(p) { + return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(p))); + } + readlinkSync(p) { + return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(p))); + } + async truncatePromise(p, len) { + return this.baseFs.truncatePromise(this.mapToBase(p), len); + } + truncateSync(p, len) { + return this.baseFs.truncateSync(this.mapToBase(p), len); + } + async ftruncatePromise(fd, len) { + return this.baseFs.ftruncatePromise(fd, len); + } + ftruncateSync(fd, len) { + return this.baseFs.ftruncateSync(fd, len); + } + watch(p, a, b) { + return this.baseFs.watch( + this.mapToBase(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + watchFile(p, a, b) { + return this.baseFs.watchFile( + this.mapToBase(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + unwatchFile(p, cb) { + return this.baseFs.unwatchFile(this.mapToBase(p), cb); + } + fsMapToBase(p) { + if (typeof p === `number`) { + return p; + } else { + return this.mapToBase(p); + } + } +} + +function direntToPortable(dirent) { + const portableDirent = dirent; + if (typeof dirent.path === `string`) + portableDirent.path = npath.toPortablePath(dirent.path); + return portableDirent; +} +class NodeFS extends BasePortableFakeFS { + realFs; + constructor(realFs = fs__default.default) { + super(); + this.realFs = realFs; + } + getExtractHint() { + return false; + } + getRealPath() { + return PortablePath.root; + } + resolve(p) { + return ppath.resolve(p); + } + async openPromise(p, flags, mode) { + return await new Promise((resolve, reject) => { + this.realFs.open(npath.fromPortablePath(p), flags, mode, this.makeCallback(resolve, reject)); + }); + } + openSync(p, flags, mode) { + return this.realFs.openSync(npath.fromPortablePath(p), flags, mode); + } + async opendirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (typeof opts !== `undefined`) { + this.realFs.opendir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }).then((dir) => { + const dirWithFixedPath = dir; + Object.defineProperty(dirWithFixedPath, `path`, { + value: p, + configurable: true, + writable: true + }); + return dirWithFixedPath; + }); + } + opendirSync(p, opts) { + const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p)); + const dirWithFixedPath = dir; + Object.defineProperty(dirWithFixedPath, `path`, { + value: p, + configurable: true, + writable: true + }); + return dirWithFixedPath; + } + async readPromise(fd, buffer, offset = 0, length = 0, position = -1) { + return await new Promise((resolve, reject) => { + this.realFs.read(fd, buffer, offset, length, position, (error, bytesRead) => { + if (error) { + reject(error); + } else { + resolve(bytesRead); + } + }); + }); + } + readSync(fd, buffer, offset, length, position) { + return this.realFs.readSync(fd, buffer, offset, length, position); + } + async writePromise(fd, buffer, offset, length, position) { + return await new Promise((resolve, reject) => { + if (typeof buffer === `string`) { + return this.realFs.write(fd, buffer, offset, this.makeCallback(resolve, reject)); + } else { + return this.realFs.write(fd, buffer, offset, length, position, this.makeCallback(resolve, reject)); + } + }); + } + writeSync(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return this.realFs.writeSync(fd, buffer, offset); + } else { + return this.realFs.writeSync(fd, buffer, offset, length, position); + } + } + async closePromise(fd) { + await new Promise((resolve, reject) => { + this.realFs.close(fd, this.makeCallback(resolve, reject)); + }); + } + closeSync(fd) { + this.realFs.closeSync(fd); + } + createReadStream(p, opts) { + const realPath = p !== null ? npath.fromPortablePath(p) : p; + return this.realFs.createReadStream(realPath, opts); + } + createWriteStream(p, opts) { + const realPath = p !== null ? npath.fromPortablePath(p) : p; + return this.realFs.createWriteStream(realPath, opts); + } + async realpathPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.realpath(npath.fromPortablePath(p), {}, this.makeCallback(resolve, reject)); + }).then((path) => { + return npath.toPortablePath(path); + }); + } + realpathSync(p) { + return npath.toPortablePath(this.realFs.realpathSync(npath.fromPortablePath(p), {})); + } + async existsPromise(p) { + return await new Promise((resolve) => { + this.realFs.exists(npath.fromPortablePath(p), resolve); + }); + } + accessSync(p, mode) { + return this.realFs.accessSync(npath.fromPortablePath(p), mode); + } + async accessPromise(p, mode) { + return await new Promise((resolve, reject) => { + this.realFs.access(npath.fromPortablePath(p), mode, this.makeCallback(resolve, reject)); + }); + } + existsSync(p) { + return this.realFs.existsSync(npath.fromPortablePath(p)); + } + async statPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.stat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.stat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + statSync(p, opts) { + if (opts) { + return this.realFs.statSync(npath.fromPortablePath(p), opts); + } else { + return this.realFs.statSync(npath.fromPortablePath(p)); + } + } + async fstatPromise(fd, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.fstat(fd, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.fstat(fd, this.makeCallback(resolve, reject)); + } + }); + } + fstatSync(fd, opts) { + if (opts) { + return this.realFs.fstatSync(fd, opts); + } else { + return this.realFs.fstatSync(fd); + } + } + async lstatPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.lstat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.lstat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + lstatSync(p, opts) { + if (opts) { + return this.realFs.lstatSync(npath.fromPortablePath(p), opts); + } else { + return this.realFs.lstatSync(npath.fromPortablePath(p)); + } + } + async fchmodPromise(fd, mask) { + return await new Promise((resolve, reject) => { + this.realFs.fchmod(fd, mask, this.makeCallback(resolve, reject)); + }); + } + fchmodSync(fd, mask) { + return this.realFs.fchmodSync(fd, mask); + } + async chmodPromise(p, mask) { + return await new Promise((resolve, reject) => { + this.realFs.chmod(npath.fromPortablePath(p), mask, this.makeCallback(resolve, reject)); + }); + } + chmodSync(p, mask) { + return this.realFs.chmodSync(npath.fromPortablePath(p), mask); + } + async fchownPromise(fd, uid, gid) { + return await new Promise((resolve, reject) => { + this.realFs.fchown(fd, uid, gid, this.makeCallback(resolve, reject)); + }); + } + fchownSync(fd, uid, gid) { + return this.realFs.fchownSync(fd, uid, gid); + } + async chownPromise(p, uid, gid) { + return await new Promise((resolve, reject) => { + this.realFs.chown(npath.fromPortablePath(p), uid, gid, this.makeCallback(resolve, reject)); + }); + } + chownSync(p, uid, gid) { + return this.realFs.chownSync(npath.fromPortablePath(p), uid, gid); + } + async renamePromise(oldP, newP) { + return await new Promise((resolve, reject) => { + this.realFs.rename(npath.fromPortablePath(oldP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + }); + } + renameSync(oldP, newP) { + return this.realFs.renameSync(npath.fromPortablePath(oldP), npath.fromPortablePath(newP)); + } + async copyFilePromise(sourceP, destP, flags = 0) { + return await new Promise((resolve, reject) => { + this.realFs.copyFile(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags, this.makeCallback(resolve, reject)); + }); + } + copyFileSync(sourceP, destP, flags = 0) { + return this.realFs.copyFileSync(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags); + } + async appendFilePromise(p, content, opts) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.appendFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.appendFile(fsNativePath, content, this.makeCallback(resolve, reject)); + } + }); + } + appendFileSync(p, content, opts) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.appendFileSync(fsNativePath, content, opts); + } else { + this.realFs.appendFileSync(fsNativePath, content); + } + } + async writeFilePromise(p, content, opts) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.writeFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.writeFile(fsNativePath, content, this.makeCallback(resolve, reject)); + } + }); + } + writeFileSync(p, content, opts) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.writeFileSync(fsNativePath, content, opts); + } else { + this.realFs.writeFileSync(fsNativePath, content); + } + } + async unlinkPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.unlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + }); + } + unlinkSync(p) { + return this.realFs.unlinkSync(npath.fromPortablePath(p)); + } + async utimesPromise(p, atime, mtime) { + return await new Promise((resolve, reject) => { + this.realFs.utimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + }); + } + utimesSync(p, atime, mtime) { + this.realFs.utimesSync(npath.fromPortablePath(p), atime, mtime); + } + async lutimesPromise(p, atime, mtime) { + return await new Promise((resolve, reject) => { + this.realFs.lutimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + }); + } + lutimesSync(p, atime, mtime) { + this.realFs.lutimesSync(npath.fromPortablePath(p), atime, mtime); + } + async mkdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + this.realFs.mkdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + }); + } + mkdirSync(p, opts) { + return this.realFs.mkdirSync(npath.fromPortablePath(p), opts); + } + async rmdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.rmdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.rmdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + rmdirSync(p, opts) { + return this.realFs.rmdirSync(npath.fromPortablePath(p), opts); + } + async rmPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.rm(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.rm(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + rmSync(p, opts) { + return this.realFs.rmSync(npath.fromPortablePath(p), opts); + } + async linkPromise(existingP, newP) { + return await new Promise((resolve, reject) => { + this.realFs.link(npath.fromPortablePath(existingP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + }); + } + linkSync(existingP, newP) { + return this.realFs.linkSync(npath.fromPortablePath(existingP), npath.fromPortablePath(newP)); + } + async symlinkPromise(target, p, type) { + return await new Promise((resolve, reject) => { + this.realFs.symlink(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type, this.makeCallback(resolve, reject)); + }); + } + symlinkSync(target, p, type) { + return this.realFs.symlinkSync(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type); + } + async readFilePromise(p, encoding) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + this.realFs.readFile(fsNativePath, encoding, this.makeCallback(resolve, reject)); + }); + } + readFileSync(p, encoding) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + return this.realFs.readFileSync(fsNativePath, encoding); + } + async readdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + if (opts.recursive && process.platform === `win32`) { + if (opts.withFileTypes) { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(direntToPortable)), reject)); + } else { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(npath.toPortablePath)), reject)); + } + } else { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } + } else { + this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + readdirSync(p, opts) { + if (opts) { + if (opts.recursive && process.platform === `win32`) { + if (opts.withFileTypes) { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(direntToPortable); + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(npath.toPortablePath); + } + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts); + } + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p)); + } + } + async readlinkPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.readlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + }).then((path) => { + return npath.toPortablePath(path); + }); + } + readlinkSync(p) { + return npath.toPortablePath(this.realFs.readlinkSync(npath.fromPortablePath(p))); + } + async truncatePromise(p, len) { + return await new Promise((resolve, reject) => { + this.realFs.truncate(npath.fromPortablePath(p), len, this.makeCallback(resolve, reject)); + }); + } + truncateSync(p, len) { + return this.realFs.truncateSync(npath.fromPortablePath(p), len); + } + async ftruncatePromise(fd, len) { + return await new Promise((resolve, reject) => { + this.realFs.ftruncate(fd, len, this.makeCallback(resolve, reject)); + }); + } + ftruncateSync(fd, len) { + return this.realFs.ftruncateSync(fd, len); + } + watch(p, a, b) { + return this.realFs.watch( + npath.fromPortablePath(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + watchFile(p, a, b) { + return this.realFs.watchFile( + npath.fromPortablePath(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + unwatchFile(p, cb) { + return this.realFs.unwatchFile(npath.fromPortablePath(p), cb); + } + makeCallback(resolve, reject) { + return (err, result) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }; + } +} + +const MOUNT_MASK = 4278190080; +class MountFS extends BasePortableFakeFS { + baseFs; + mountInstances; + fdMap = /* @__PURE__ */ new Map(); + nextFd = 3; + factoryPromise; + factorySync; + filter; + getMountPoint; + magic; + maxAge; + maxOpenFiles; + typeCheck; + isMount = /* @__PURE__ */ new Set(); + notMount = /* @__PURE__ */ new Set(); + realPaths = /* @__PURE__ */ new Map(); + constructor({ baseFs = new NodeFS(), filter = null, magicByte = 42, maxOpenFiles = Infinity, useCache = true, maxAge = 5e3, typeCheck = fs.constants.S_IFREG, getMountPoint, factoryPromise, factorySync }) { + if (Math.floor(magicByte) !== magicByte || !(magicByte > 1 && magicByte <= 127)) + throw new Error(`The magic byte must be set to a round value between 1 and 127 included`); + super(); + this.baseFs = baseFs; + this.mountInstances = useCache ? /* @__PURE__ */ new Map() : null; + this.factoryPromise = factoryPromise; + this.factorySync = factorySync; + this.filter = filter; + this.getMountPoint = getMountPoint; + this.magic = magicByte << 24; + this.maxAge = maxAge; + this.maxOpenFiles = maxOpenFiles; + this.typeCheck = typeCheck; + } + getExtractHint(hints) { + return this.baseFs.getExtractHint(hints); + } + getRealPath() { + return this.baseFs.getRealPath(); + } + saveAndClose() { + unwatchAllFiles(this); + if (this.mountInstances) { + for (const [path, { childFs }] of this.mountInstances.entries()) { + childFs.saveAndClose?.(); + this.mountInstances.delete(path); + } + } + } + discardAndClose() { + unwatchAllFiles(this); + if (this.mountInstances) { + for (const [path, { childFs }] of this.mountInstances.entries()) { + childFs.discardAndClose?.(); + this.mountInstances.delete(path); + } + } + } + resolve(p) { + return this.baseFs.resolve(p); + } + remapFd(mountFs, fd) { + const remappedFd = this.nextFd++ | this.magic; + this.fdMap.set(remappedFd, [mountFs, fd]); + return remappedFd; + } + async openPromise(p, flags, mode) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.openPromise(p, flags, mode); + }, async (mountFs, { subPath }) => { + return this.remapFd(mountFs, await mountFs.openPromise(subPath, flags, mode)); + }); + } + openSync(p, flags, mode) { + return this.makeCallSync(p, () => { + return this.baseFs.openSync(p, flags, mode); + }, (mountFs, { subPath }) => { + return this.remapFd(mountFs, mountFs.openSync(subPath, flags, mode)); + }); + } + async opendirPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.opendirPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.opendirPromise(subPath, opts); + }, { + requireSubpath: false + }); + } + opendirSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.opendirSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.opendirSync(subPath, opts); + }, { + requireSubpath: false + }); + } + async readPromise(fd, buffer, offset, length, position) { + if ((fd & MOUNT_MASK) !== this.magic) + return await this.baseFs.readPromise(fd, buffer, offset, length, position); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`read`); + const [mountFs, realFd] = entry; + return await mountFs.readPromise(realFd, buffer, offset, length, position); + } + readSync(fd, buffer, offset, length, position) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.readSync(fd, buffer, offset, length, position); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`readSync`); + const [mountFs, realFd] = entry; + return mountFs.readSync(realFd, buffer, offset, length, position); + } + async writePromise(fd, buffer, offset, length, position) { + if ((fd & MOUNT_MASK) !== this.magic) { + if (typeof buffer === `string`) { + return await this.baseFs.writePromise(fd, buffer, offset); + } else { + return await this.baseFs.writePromise(fd, buffer, offset, length, position); + } + } + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`write`); + const [mountFs, realFd] = entry; + if (typeof buffer === `string`) { + return await mountFs.writePromise(realFd, buffer, offset); + } else { + return await mountFs.writePromise(realFd, buffer, offset, length, position); + } + } + writeSync(fd, buffer, offset, length, position) { + if ((fd & MOUNT_MASK) !== this.magic) { + if (typeof buffer === `string`) { + return this.baseFs.writeSync(fd, buffer, offset); + } else { + return this.baseFs.writeSync(fd, buffer, offset, length, position); + } + } + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`writeSync`); + const [mountFs, realFd] = entry; + if (typeof buffer === `string`) { + return mountFs.writeSync(realFd, buffer, offset); + } else { + return mountFs.writeSync(realFd, buffer, offset, length, position); + } + } + async closePromise(fd) { + if ((fd & MOUNT_MASK) !== this.magic) + return await this.baseFs.closePromise(fd); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`close`); + this.fdMap.delete(fd); + const [mountFs, realFd] = entry; + return await mountFs.closePromise(realFd); + } + closeSync(fd) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.closeSync(fd); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`closeSync`); + this.fdMap.delete(fd); + const [mountFs, realFd] = entry; + return mountFs.closeSync(realFd); + } + createReadStream(p, opts) { + if (p === null) + return this.baseFs.createReadStream(p, opts); + return this.makeCallSync(p, () => { + return this.baseFs.createReadStream(p, opts); + }, (mountFs, { archivePath, subPath }) => { + const stream = mountFs.createReadStream(subPath, opts); + stream.path = npath.fromPortablePath(this.pathUtils.join(archivePath, subPath)); + return stream; + }); + } + createWriteStream(p, opts) { + if (p === null) + return this.baseFs.createWriteStream(p, opts); + return this.makeCallSync(p, () => { + return this.baseFs.createWriteStream(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.createWriteStream(subPath, opts); + }); + } + async realpathPromise(p) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.realpathPromise(p); + }, async (mountFs, { archivePath, subPath }) => { + let realArchivePath = this.realPaths.get(archivePath); + if (typeof realArchivePath === `undefined`) { + realArchivePath = await this.baseFs.realpathPromise(archivePath); + this.realPaths.set(archivePath, realArchivePath); + } + return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, await mountFs.realpathPromise(subPath))); + }); + } + realpathSync(p) { + return this.makeCallSync(p, () => { + return this.baseFs.realpathSync(p); + }, (mountFs, { archivePath, subPath }) => { + let realArchivePath = this.realPaths.get(archivePath); + if (typeof realArchivePath === `undefined`) { + realArchivePath = this.baseFs.realpathSync(archivePath); + this.realPaths.set(archivePath, realArchivePath); + } + return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, mountFs.realpathSync(subPath))); + }); + } + async existsPromise(p) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.existsPromise(p); + }, async (mountFs, { subPath }) => { + return await mountFs.existsPromise(subPath); + }); + } + existsSync(p) { + return this.makeCallSync(p, () => { + return this.baseFs.existsSync(p); + }, (mountFs, { subPath }) => { + return mountFs.existsSync(subPath); + }); + } + async accessPromise(p, mode) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.accessPromise(p, mode); + }, async (mountFs, { subPath }) => { + return await mountFs.accessPromise(subPath, mode); + }); + } + accessSync(p, mode) { + return this.makeCallSync(p, () => { + return this.baseFs.accessSync(p, mode); + }, (mountFs, { subPath }) => { + return mountFs.accessSync(subPath, mode); + }); + } + async statPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.statPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.statPromise(subPath, opts); + }); + } + statSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.statSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.statSync(subPath, opts); + }); + } + async fstatPromise(fd, opts) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fstatPromise(fd, opts); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fstat`); + const [mountFs, realFd] = entry; + return mountFs.fstatPromise(realFd, opts); + } + fstatSync(fd, opts) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fstatSync(fd, opts); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fstatSync`); + const [mountFs, realFd] = entry; + return mountFs.fstatSync(realFd, opts); + } + async lstatPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.lstatPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.lstatPromise(subPath, opts); + }); + } + lstatSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.lstatSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.lstatSync(subPath, opts); + }); + } + async fchmodPromise(fd, mask) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fchmodPromise(fd, mask); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fchmod`); + const [mountFs, realFd] = entry; + return mountFs.fchmodPromise(realFd, mask); + } + fchmodSync(fd, mask) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fchmodSync(fd, mask); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fchmodSync`); + const [mountFs, realFd] = entry; + return mountFs.fchmodSync(realFd, mask); + } + async chmodPromise(p, mask) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.chmodPromise(p, mask); + }, async (mountFs, { subPath }) => { + return await mountFs.chmodPromise(subPath, mask); + }); + } + chmodSync(p, mask) { + return this.makeCallSync(p, () => { + return this.baseFs.chmodSync(p, mask); + }, (mountFs, { subPath }) => { + return mountFs.chmodSync(subPath, mask); + }); + } + async fchownPromise(fd, uid, gid) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fchownPromise(fd, uid, gid); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fchown`); + const [zipFs, realFd] = entry; + return zipFs.fchownPromise(realFd, uid, gid); + } + fchownSync(fd, uid, gid) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fchownSync(fd, uid, gid); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fchownSync`); + const [zipFs, realFd] = entry; + return zipFs.fchownSync(realFd, uid, gid); + } + async chownPromise(p, uid, gid) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.chownPromise(p, uid, gid); + }, async (mountFs, { subPath }) => { + return await mountFs.chownPromise(subPath, uid, gid); + }); + } + chownSync(p, uid, gid) { + return this.makeCallSync(p, () => { + return this.baseFs.chownSync(p, uid, gid); + }, (mountFs, { subPath }) => { + return mountFs.chownSync(subPath, uid, gid); + }); + } + async renamePromise(oldP, newP) { + return await this.makeCallPromise(oldP, async () => { + return await this.makeCallPromise(newP, async () => { + return await this.baseFs.renamePromise(oldP, newP); + }, async () => { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + }); + }, async (mountFsO, { subPath: subPathO }) => { + return await this.makeCallPromise(newP, async () => { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + }, async (mountFsN, { subPath: subPathN }) => { + if (mountFsO !== mountFsN) { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + } else { + return await mountFsO.renamePromise(subPathO, subPathN); + } + }); + }); + } + renameSync(oldP, newP) { + return this.makeCallSync(oldP, () => { + return this.makeCallSync(newP, () => { + return this.baseFs.renameSync(oldP, newP); + }, () => { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + }); + }, (mountFsO, { subPath: subPathO }) => { + return this.makeCallSync(newP, () => { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + }, (mountFsN, { subPath: subPathN }) => { + if (mountFsO !== mountFsN) { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + } else { + return mountFsO.renameSync(subPathO, subPathN); + } + }); + }); + } + async copyFilePromise(sourceP, destP, flags = 0) { + const fallback = async (sourceFs, sourceP2, destFs, destP2) => { + if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0) + throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` }); + if (flags & fs.constants.COPYFILE_EXCL && await this.existsPromise(sourceP2)) + throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` }); + let content; + try { + content = await sourceFs.readFilePromise(sourceP2); + } catch { + throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` }); + } + await destFs.writeFilePromise(destP2, content); + }; + return await this.makeCallPromise(sourceP, async () => { + return await this.makeCallPromise(destP, async () => { + return await this.baseFs.copyFilePromise(sourceP, destP, flags); + }, async (mountFsD, { subPath: subPathD }) => { + return await fallback(this.baseFs, sourceP, mountFsD, subPathD); + }); + }, async (mountFsS, { subPath: subPathS }) => { + return await this.makeCallPromise(destP, async () => { + return await fallback(mountFsS, subPathS, this.baseFs, destP); + }, async (mountFsD, { subPath: subPathD }) => { + if (mountFsS !== mountFsD) { + return await fallback(mountFsS, subPathS, mountFsD, subPathD); + } else { + return await mountFsS.copyFilePromise(subPathS, subPathD, flags); + } + }); + }); + } + copyFileSync(sourceP, destP, flags = 0) { + const fallback = (sourceFs, sourceP2, destFs, destP2) => { + if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0) + throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` }); + if (flags & fs.constants.COPYFILE_EXCL && this.existsSync(sourceP2)) + throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` }); + let content; + try { + content = sourceFs.readFileSync(sourceP2); + } catch { + throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` }); + } + destFs.writeFileSync(destP2, content); + }; + return this.makeCallSync(sourceP, () => { + return this.makeCallSync(destP, () => { + return this.baseFs.copyFileSync(sourceP, destP, flags); + }, (mountFsD, { subPath: subPathD }) => { + return fallback(this.baseFs, sourceP, mountFsD, subPathD); + }); + }, (mountFsS, { subPath: subPathS }) => { + return this.makeCallSync(destP, () => { + return fallback(mountFsS, subPathS, this.baseFs, destP); + }, (mountFsD, { subPath: subPathD }) => { + if (mountFsS !== mountFsD) { + return fallback(mountFsS, subPathS, mountFsD, subPathD); + } else { + return mountFsS.copyFileSync(subPathS, subPathD, flags); + } + }); + }); + } + async appendFilePromise(p, content, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.appendFilePromise(p, content, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.appendFilePromise(subPath, content, opts); + }); + } + appendFileSync(p, content, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.appendFileSync(p, content, opts); + }, (mountFs, { subPath }) => { + return mountFs.appendFileSync(subPath, content, opts); + }); + } + async writeFilePromise(p, content, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.writeFilePromise(p, content, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.writeFilePromise(subPath, content, opts); + }); + } + writeFileSync(p, content, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.writeFileSync(p, content, opts); + }, (mountFs, { subPath }) => { + return mountFs.writeFileSync(subPath, content, opts); + }); + } + async unlinkPromise(p) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.unlinkPromise(p); + }, async (mountFs, { subPath }) => { + return await mountFs.unlinkPromise(subPath); + }); + } + unlinkSync(p) { + return this.makeCallSync(p, () => { + return this.baseFs.unlinkSync(p); + }, (mountFs, { subPath }) => { + return mountFs.unlinkSync(subPath); + }); + } + async utimesPromise(p, atime, mtime) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.utimesPromise(p, atime, mtime); + }, async (mountFs, { subPath }) => { + return await mountFs.utimesPromise(subPath, atime, mtime); + }); + } + utimesSync(p, atime, mtime) { + return this.makeCallSync(p, () => { + return this.baseFs.utimesSync(p, atime, mtime); + }, (mountFs, { subPath }) => { + return mountFs.utimesSync(subPath, atime, mtime); + }); + } + async lutimesPromise(p, atime, mtime) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.lutimesPromise(p, atime, mtime); + }, async (mountFs, { subPath }) => { + return await mountFs.lutimesPromise(subPath, atime, mtime); + }); + } + lutimesSync(p, atime, mtime) { + return this.makeCallSync(p, () => { + return this.baseFs.lutimesSync(p, atime, mtime); + }, (mountFs, { subPath }) => { + return mountFs.lutimesSync(subPath, atime, mtime); + }); + } + async mkdirPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.mkdirPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.mkdirPromise(subPath, opts); + }); + } + mkdirSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.mkdirSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.mkdirSync(subPath, opts); + }); + } + async rmdirPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.rmdirPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.rmdirPromise(subPath, opts); + }); + } + rmdirSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.rmdirSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.rmdirSync(subPath, opts); + }); + } + async rmPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.rmPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.rmPromise(subPath, opts); + }); + } + rmSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.rmSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.rmSync(subPath, opts); + }); + } + async linkPromise(existingP, newP) { + return await this.makeCallPromise(newP, async () => { + return await this.baseFs.linkPromise(existingP, newP); + }, async (mountFs, { subPath }) => { + return await mountFs.linkPromise(existingP, subPath); + }); + } + linkSync(existingP, newP) { + return this.makeCallSync(newP, () => { + return this.baseFs.linkSync(existingP, newP); + }, (mountFs, { subPath }) => { + return mountFs.linkSync(existingP, subPath); + }); + } + async symlinkPromise(target, p, type) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.symlinkPromise(target, p, type); + }, async (mountFs, { subPath }) => { + return await mountFs.symlinkPromise(target, subPath); + }); + } + symlinkSync(target, p, type) { + return this.makeCallSync(p, () => { + return this.baseFs.symlinkSync(target, p, type); + }, (mountFs, { subPath }) => { + return mountFs.symlinkSync(target, subPath); + }); + } + async readFilePromise(p, encoding) { + return this.makeCallPromise(p, async () => { + return await this.baseFs.readFilePromise(p, encoding); + }, async (mountFs, { subPath }) => { + return await mountFs.readFilePromise(subPath, encoding); + }); + } + readFileSync(p, encoding) { + return this.makeCallSync(p, () => { + return this.baseFs.readFileSync(p, encoding); + }, (mountFs, { subPath }) => { + return mountFs.readFileSync(subPath, encoding); + }); + } + async readdirPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.readdirPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.readdirPromise(subPath, opts); + }, { + requireSubpath: false + }); + } + readdirSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.readdirSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.readdirSync(subPath, opts); + }, { + requireSubpath: false + }); + } + async readlinkPromise(p) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.readlinkPromise(p); + }, async (mountFs, { subPath }) => { + return await mountFs.readlinkPromise(subPath); + }); + } + readlinkSync(p) { + return this.makeCallSync(p, () => { + return this.baseFs.readlinkSync(p); + }, (mountFs, { subPath }) => { + return mountFs.readlinkSync(subPath); + }); + } + async truncatePromise(p, len) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.truncatePromise(p, len); + }, async (mountFs, { subPath }) => { + return await mountFs.truncatePromise(subPath, len); + }); + } + truncateSync(p, len) { + return this.makeCallSync(p, () => { + return this.baseFs.truncateSync(p, len); + }, (mountFs, { subPath }) => { + return mountFs.truncateSync(subPath, len); + }); + } + async ftruncatePromise(fd, len) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.ftruncatePromise(fd, len); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`ftruncate`); + const [mountFs, realFd] = entry; + return mountFs.ftruncatePromise(realFd, len); + } + ftruncateSync(fd, len) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.ftruncateSync(fd, len); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`ftruncateSync`); + const [mountFs, realFd] = entry; + return mountFs.ftruncateSync(realFd, len); + } + watch(p, a, b) { + return this.makeCallSync(p, () => { + return this.baseFs.watch( + p, + // @ts-expect-error - reason TBS + a, + b + ); + }, (mountFs, { subPath }) => { + return mountFs.watch( + subPath, + // @ts-expect-error - reason TBS + a, + b + ); + }); + } + watchFile(p, a, b) { + return this.makeCallSync(p, () => { + return this.baseFs.watchFile( + p, + // @ts-expect-error - reason TBS + a, + b + ); + }, () => { + return watchFile(this, p, a, b); + }); + } + unwatchFile(p, cb) { + return this.makeCallSync(p, () => { + return this.baseFs.unwatchFile(p, cb); + }, () => { + return unwatchFile(this, p, cb); + }); + } + async makeCallPromise(p, discard, accept, { requireSubpath = true } = {}) { + if (typeof p !== `string`) + return await discard(); + const normalizedP = this.resolve(p); + const mountInfo = this.findMount(normalizedP); + if (!mountInfo) + return await discard(); + if (requireSubpath && mountInfo.subPath === `/`) + return await discard(); + return await this.getMountPromise(mountInfo.archivePath, async (mountFs) => await accept(mountFs, mountInfo)); + } + makeCallSync(p, discard, accept, { requireSubpath = true } = {}) { + if (typeof p !== `string`) + return discard(); + const normalizedP = this.resolve(p); + const mountInfo = this.findMount(normalizedP); + if (!mountInfo) + return discard(); + if (requireSubpath && mountInfo.subPath === `/`) + return discard(); + return this.getMountSync(mountInfo.archivePath, (mountFs) => accept(mountFs, mountInfo)); + } + findMount(p) { + if (this.filter && !this.filter.test(p)) + return null; + let filePath = ``; + while (true) { + const pathPartWithArchive = p.substring(filePath.length); + const mountPoint = this.getMountPoint(pathPartWithArchive, filePath); + if (!mountPoint) + return null; + filePath = this.pathUtils.join(filePath, mountPoint); + if (!this.isMount.has(filePath)) { + if (this.notMount.has(filePath)) + continue; + try { + if (this.typeCheck !== null && (this.baseFs.statSync(filePath).mode & fs.constants.S_IFMT) !== this.typeCheck) { + this.notMount.add(filePath); + continue; + } + } catch { + return null; + } + this.isMount.add(filePath); + } + return { + archivePath: filePath, + subPath: this.pathUtils.join(PortablePath.root, p.substring(filePath.length)) + }; + } + } + limitOpenFilesTimeout = null; + limitOpenFiles(max) { + if (this.mountInstances === null) + return; + const now = Date.now(); + let nextExpiresAt = now + this.maxAge; + let closeCount = max === null ? 0 : this.mountInstances.size - max; + for (const [path, { childFs, expiresAt, refCount }] of this.mountInstances.entries()) { + if (refCount !== 0 || childFs.hasOpenFileHandles?.()) { + continue; + } else if (now >= expiresAt) { + childFs.saveAndClose?.(); + this.mountInstances.delete(path); + closeCount -= 1; + continue; + } else if (max === null || closeCount <= 0) { + nextExpiresAt = expiresAt; + break; + } + childFs.saveAndClose?.(); + this.mountInstances.delete(path); + closeCount -= 1; + } + if (this.limitOpenFilesTimeout === null && (max === null && this.mountInstances.size > 0 || max !== null) && isFinite(nextExpiresAt)) { + this.limitOpenFilesTimeout = setTimeout(() => { + this.limitOpenFilesTimeout = null; + this.limitOpenFiles(null); + }, nextExpiresAt - now).unref(); + } + } + async getMountPromise(p, accept) { + if (this.mountInstances) { + let cachedMountFs = this.mountInstances.get(p); + if (!cachedMountFs) { + const createFsInstance = await this.factoryPromise(this.baseFs, p); + cachedMountFs = this.mountInstances.get(p); + if (!cachedMountFs) { + cachedMountFs = { + childFs: createFsInstance(), + expiresAt: 0, + refCount: 0 + }; + } + } + this.mountInstances.delete(p); + this.limitOpenFiles(this.maxOpenFiles - 1); + this.mountInstances.set(p, cachedMountFs); + cachedMountFs.expiresAt = Date.now() + this.maxAge; + cachedMountFs.refCount += 1; + try { + return await accept(cachedMountFs.childFs); + } finally { + cachedMountFs.refCount -= 1; + } + } else { + const mountFs = (await this.factoryPromise(this.baseFs, p))(); + try { + return await accept(mountFs); + } finally { + mountFs.saveAndClose?.(); + } + } + } + getMountSync(p, accept) { + if (this.mountInstances) { + let cachedMountFs = this.mountInstances.get(p); + if (!cachedMountFs) { + cachedMountFs = { + childFs: this.factorySync(this.baseFs, p), + expiresAt: 0, + refCount: 0 + }; + } + this.mountInstances.delete(p); + this.limitOpenFiles(this.maxOpenFiles - 1); + this.mountInstances.set(p, cachedMountFs); + cachedMountFs.expiresAt = Date.now() + this.maxAge; + return accept(cachedMountFs.childFs); + } else { + const childFs = this.factorySync(this.baseFs, p); + try { + return accept(childFs); + } finally { + childFs.saveAndClose?.(); + } + } + } +} + +class PosixFS extends ProxiedFS { + baseFs; + constructor(baseFs) { + super(npath); + this.baseFs = baseFs; + } + mapFromBase(path) { + return npath.fromPortablePath(path); + } + mapToBase(path) { + return npath.toPortablePath(path); + } +} + +const NUMBER_REGEXP = /^[0-9]+$/; +const VIRTUAL_REGEXP = /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/; +const VALID_COMPONENT = /^([^/]+-)?[a-f0-9]+$/; +class VirtualFS extends ProxiedFS { + baseFs; + static makeVirtualPath(base, component, to) { + if (ppath.basename(base) !== `__virtual__`) + throw new Error(`Assertion failed: Virtual folders must be named "__virtual__"`); + if (!ppath.basename(component).match(VALID_COMPONENT)) + throw new Error(`Assertion failed: Virtual components must be ended by an hexadecimal hash`); + const target = ppath.relative(ppath.dirname(base), to); + const segments = target.split(`/`); + let depth = 0; + while (depth < segments.length && segments[depth] === `..`) + depth += 1; + const finalSegments = segments.slice(depth); + const fullVirtualPath = ppath.join(base, component, String(depth), ...finalSegments); + return fullVirtualPath; + } + static resolveVirtual(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match || !match[3] && match[5]) + return p; + const target = ppath.dirname(match[1]); + if (!match[3] || !match[4]) + return target; + const isnum = NUMBER_REGEXP.test(match[4]); + if (!isnum) + return p; + const depth = Number(match[4]); + const backstep = `../`.repeat(depth); + const subpath = match[5] || `.`; + return VirtualFS.resolveVirtual(ppath.join(target, backstep, subpath)); + } + constructor({ baseFs = new NodeFS() } = {}) { + super(ppath); + this.baseFs = baseFs; + } + getExtractHint(hints) { + return this.baseFs.getExtractHint(hints); + } + getRealPath() { + return this.baseFs.getRealPath(); + } + realpathSync(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match) + return this.baseFs.realpathSync(p); + if (!match[5]) + return p; + const realpath = this.baseFs.realpathSync(this.mapToBase(p)); + return VirtualFS.makeVirtualPath(match[1], match[3], realpath); + } + async realpathPromise(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match) + return await this.baseFs.realpathPromise(p); + if (!match[5]) + return p; + const realpath = await this.baseFs.realpathPromise(this.mapToBase(p)); + return VirtualFS.makeVirtualPath(match[1], match[3], realpath); + } + mapToBase(p) { + if (p === ``) + return p; + if (this.pathUtils.isAbsolute(p)) + return VirtualFS.resolveVirtual(p); + const resolvedRoot = VirtualFS.resolveVirtual(this.baseFs.resolve(PortablePath.dot)); + const resolvedP = VirtualFS.resolveVirtual(this.baseFs.resolve(p)); + return ppath.relative(resolvedRoot, resolvedP) || PortablePath.dot; + } + mapFromBase(p) { + return p; + } +} + +const URL = Number(process.versions.node.split('.', 1)[0]) < 20 ? url.URL : globalThis.URL; + +class NodePathFS extends ProxiedFS { + baseFs; + constructor(baseFs) { + super(npath); + this.baseFs = baseFs; + } + mapFromBase(path) { + return path; + } + mapToBase(path) { + if (typeof path === `string`) + return path; + if (path instanceof URL) + return url.fileURLToPath(path); + if (Buffer.isBuffer(path)) { + const str = path.toString(); + if (!isUtf8(path, str)) + throw new Error(`Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942`); + return str; + } + throw new Error(`Unsupported path type: ${nodeUtils.inspect(path)}`); + } +} +function isUtf8(buf, str) { + if (typeof buffer__default.default.isUtf8 !== `undefined`) + return buffer__default.default.isUtf8(buf); + return Buffer.byteLength(str) === buf.byteLength; +} + +const kBaseFs = Symbol(`kBaseFs`); +const kFd = Symbol(`kFd`); +const kClosePromise = Symbol(`kClosePromise`); +const kCloseResolve = Symbol(`kCloseResolve`); +const kCloseReject = Symbol(`kCloseReject`); +const kRefs = Symbol(`kRefs`); +const kRef = Symbol(`kRef`); +const kUnref = Symbol(`kUnref`); +class FileHandle { + [kBaseFs]; + [kFd]; + [kRefs] = 1; + [kClosePromise] = void 0; + [kCloseResolve] = void 0; + [kCloseReject] = void 0; + constructor(fd, baseFs) { + this[kBaseFs] = baseFs; + this[kFd] = fd; + } + get fd() { + return this[kFd]; + } + async appendFile(data, options) { + try { + this[kRef](this.appendFile); + const encoding = (typeof options === `string` ? options : options?.encoding) ?? void 0; + return await this[kBaseFs].appendFilePromise(this.fd, data, encoding ? { encoding } : void 0); + } finally { + this[kUnref](); + } + } + async chown(uid, gid) { + try { + this[kRef](this.chown); + return await this[kBaseFs].fchownPromise(this.fd, uid, gid); + } finally { + this[kUnref](); + } + } + async chmod(mode) { + try { + this[kRef](this.chmod); + return await this[kBaseFs].fchmodPromise(this.fd, mode); + } finally { + this[kUnref](); + } + } + createReadStream(options) { + return this[kBaseFs].createReadStream(null, { ...options, fd: this.fd }); + } + createWriteStream(options) { + return this[kBaseFs].createWriteStream(null, { ...options, fd: this.fd }); + } + // FIXME: Missing FakeFS version + datasync() { + throw new Error(`Method not implemented.`); + } + // FIXME: Missing FakeFS version + sync() { + throw new Error(`Method not implemented.`); + } + async read(bufferOrOptions, offset, length, position) { + try { + this[kRef](this.read); + let buffer; + if (!Buffer.isBuffer(bufferOrOptions)) { + bufferOrOptions ??= {}; + buffer = bufferOrOptions.buffer ?? Buffer.alloc(16384); + offset = bufferOrOptions.offset || 0; + length = bufferOrOptions.length ?? buffer.byteLength; + position = bufferOrOptions.position ?? null; + } else { + buffer = bufferOrOptions; + } + offset ??= 0; + length ??= 0; + if (length === 0) { + return { + bytesRead: length, + buffer + }; + } + const bytesRead = await this[kBaseFs].readPromise(this.fd, buffer, offset, length, position); + return { + bytesRead, + buffer + }; + } finally { + this[kUnref](); + } + } + async readFile(options) { + try { + this[kRef](this.readFile); + const encoding = (typeof options === `string` ? options : options?.encoding) ?? void 0; + return await this[kBaseFs].readFilePromise(this.fd, encoding); + } finally { + this[kUnref](); + } + } + readLines(options) { + return readline.createInterface({ + input: this.createReadStream(options), + crlfDelay: Infinity + }); + } + async stat(opts) { + try { + this[kRef](this.stat); + return await this[kBaseFs].fstatPromise(this.fd, opts); + } finally { + this[kUnref](); + } + } + async truncate(len) { + try { + this[kRef](this.truncate); + return await this[kBaseFs].ftruncatePromise(this.fd, len); + } finally { + this[kUnref](); + } + } + // FIXME: Missing FakeFS version + utimes(atime, mtime) { + throw new Error(`Method not implemented.`); + } + async writeFile(data, options) { + try { + this[kRef](this.writeFile); + const encoding = (typeof options === `string` ? options : options?.encoding) ?? void 0; + await this[kBaseFs].writeFilePromise(this.fd, data, encoding); + } finally { + this[kUnref](); + } + } + async write(...args) { + try { + this[kRef](this.write); + if (ArrayBuffer.isView(args[0])) { + const [buffer, offset, length, position] = args; + const bytesWritten = await this[kBaseFs].writePromise(this.fd, buffer, offset ?? void 0, length ?? void 0, position ?? void 0); + return { bytesWritten, buffer }; + } else { + const [data, position, encoding] = args; + const bytesWritten = await this[kBaseFs].writePromise(this.fd, data, position, encoding); + return { bytesWritten, buffer: data }; + } + } finally { + this[kUnref](); + } + } + // TODO: Use writev from FakeFS when that is implemented + async writev(buffers, position) { + try { + this[kRef](this.writev); + let bytesWritten = 0; + if (typeof position !== `undefined`) { + for (const buffer of buffers) { + const writeResult = await this.write(buffer, void 0, void 0, position); + bytesWritten += writeResult.bytesWritten; + position += writeResult.bytesWritten; + } + } else { + for (const buffer of buffers) { + const writeResult = await this.write(buffer); + bytesWritten += writeResult.bytesWritten; + } + } + return { + buffers, + bytesWritten + }; + } finally { + this[kUnref](); + } + } + // FIXME: Missing FakeFS version + readv(buffers, position) { + throw new Error(`Method not implemented.`); + } + close() { + if (this[kFd] === -1) return Promise.resolve(); + if (this[kClosePromise]) return this[kClosePromise]; + this[kRefs]--; + if (this[kRefs] === 0) { + const fd = this[kFd]; + this[kFd] = -1; + this[kClosePromise] = this[kBaseFs].closePromise(fd).finally(() => { + this[kClosePromise] = void 0; + }); + } else { + this[kClosePromise] = new Promise((resolve, reject) => { + this[kCloseResolve] = resolve; + this[kCloseReject] = reject; + }).finally(() => { + this[kClosePromise] = void 0; + this[kCloseReject] = void 0; + this[kCloseResolve] = void 0; + }); + } + return this[kClosePromise]; + } + [kRef](caller) { + if (this[kFd] === -1) { + const err = new Error(`file closed`); + err.code = `EBADF`; + err.syscall = caller.name; + throw err; + } + this[kRefs]++; + } + [kUnref]() { + this[kRefs]--; + if (this[kRefs] === 0) { + const fd = this[kFd]; + this[kFd] = -1; + this[kBaseFs].closePromise(fd).then(this[kCloseResolve], this[kCloseReject]); + } + } +} + +const SYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([ + `accessSync`, + `appendFileSync`, + `createReadStream`, + `createWriteStream`, + `chmodSync`, + `fchmodSync`, + `chownSync`, + `fchownSync`, + `closeSync`, + `copyFileSync`, + `linkSync`, + `lstatSync`, + `fstatSync`, + `lutimesSync`, + `mkdirSync`, + `openSync`, + `opendirSync`, + `readlinkSync`, + `readFileSync`, + `readdirSync`, + `readlinkSync`, + `realpathSync`, + `renameSync`, + `rmdirSync`, + `rmSync`, + `statSync`, + `symlinkSync`, + `truncateSync`, + `ftruncateSync`, + `unlinkSync`, + `unwatchFile`, + `utimesSync`, + `watch`, + `watchFile`, + `writeFileSync`, + `writeSync` +]); +const ASYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([ + `accessPromise`, + `appendFilePromise`, + `fchmodPromise`, + `chmodPromise`, + `fchownPromise`, + `chownPromise`, + `closePromise`, + `copyFilePromise`, + `linkPromise`, + `fstatPromise`, + `lstatPromise`, + `lutimesPromise`, + `mkdirPromise`, + `openPromise`, + `opendirPromise`, + `readdirPromise`, + `realpathPromise`, + `readFilePromise`, + `readdirPromise`, + `readlinkPromise`, + `renamePromise`, + `rmdirPromise`, + `rmPromise`, + `statPromise`, + `symlinkPromise`, + `truncatePromise`, + `ftruncatePromise`, + `unlinkPromise`, + `utimesPromise`, + `writeFilePromise`, + `writeSync` +]); +function patchFs(patchedFs, fakeFs) { + fakeFs = new NodePathFS(fakeFs); + const setupFn = (target, name, replacement) => { + const orig = target[name]; + target[name] = replacement; + if (typeof orig?.[nodeUtils.promisify.custom] !== `undefined`) { + replacement[nodeUtils.promisify.custom] = orig[nodeUtils.promisify.custom]; + } + }; + { + setupFn(patchedFs, `exists`, (p, ...args) => { + const hasCallback = typeof args[args.length - 1] === `function`; + const callback = hasCallback ? args.pop() : () => { + }; + process.nextTick(() => { + fakeFs.existsPromise(p).then((exists) => { + callback(exists); + }, () => { + callback(false); + }); + }); + }); + setupFn(patchedFs, `read`, (...args) => { + let [fd, buffer, offset, length, position, callback] = args; + if (args.length <= 3) { + let options = {}; + if (args.length < 3) { + callback = args[1]; + } else { + options = args[1]; + callback = args[2]; + } + ({ + buffer = Buffer.alloc(16384), + offset = 0, + length = buffer.byteLength, + position + } = options); + } + if (offset == null) + offset = 0; + length |= 0; + if (length === 0) { + process.nextTick(() => { + callback(null, 0, buffer); + }); + return; + } + if (position == null) + position = -1; + process.nextTick(() => { + fakeFs.readPromise(fd, buffer, offset, length, position).then((bytesRead) => { + callback(null, bytesRead, buffer); + }, (error) => { + callback(error, 0, buffer); + }); + }); + }); + for (const fnName of ASYNC_IMPLEMENTATIONS) { + const origName = fnName.replace(/Promise$/, ``); + if (typeof patchedFs[origName] === `undefined`) + continue; + const fakeImpl = fakeFs[fnName]; + if (typeof fakeImpl === `undefined`) + continue; + const wrapper = (...args) => { + const hasCallback = typeof args[args.length - 1] === `function`; + const callback = hasCallback ? args.pop() : () => { + }; + process.nextTick(() => { + fakeImpl.apply(fakeFs, args).then((result) => { + callback(null, result); + }, (error) => { + callback(error); + }); + }); + }; + setupFn(patchedFs, origName, wrapper); + } + patchedFs.realpath.native = patchedFs.realpath; + } + { + setupFn(patchedFs, `existsSync`, (p) => { + try { + return fakeFs.existsSync(p); + } catch { + return false; + } + }); + setupFn(patchedFs, `readSync`, (...args) => { + let [fd, buffer, offset, length, position] = args; + if (args.length <= 3) { + const options = args[2] || {}; + ({ offset = 0, length = buffer.byteLength, position } = options); + } + if (offset == null) + offset = 0; + length |= 0; + if (length === 0) + return 0; + if (position == null) + position = -1; + return fakeFs.readSync(fd, buffer, offset, length, position); + }); + for (const fnName of SYNC_IMPLEMENTATIONS) { + const origName = fnName; + if (typeof patchedFs[origName] === `undefined`) + continue; + const fakeImpl = fakeFs[fnName]; + if (typeof fakeImpl === `undefined`) + continue; + setupFn(patchedFs, origName, fakeImpl.bind(fakeFs)); + } + patchedFs.realpathSync.native = patchedFs.realpathSync; + } + { + const patchedFsPromises = patchedFs.promises; + for (const fnName of ASYNC_IMPLEMENTATIONS) { + const origName = fnName.replace(/Promise$/, ``); + if (typeof patchedFsPromises[origName] === `undefined`) + continue; + const fakeImpl = fakeFs[fnName]; + if (typeof fakeImpl === `undefined`) + continue; + if (fnName === `open`) + continue; + setupFn(patchedFsPromises, origName, (pathLike, ...args) => { + if (pathLike instanceof FileHandle) { + return pathLike[origName].apply(pathLike, args); + } else { + return fakeImpl.call(fakeFs, pathLike, ...args); + } + }); + } + setupFn(patchedFsPromises, `open`, async (...args) => { + const fd = await fakeFs.openPromise(...args); + return new FileHandle(fd, fakeFs); + }); + } + { + patchedFs.read[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => { + const res = fakeFs.readPromise(fd, buffer, ...args); + return { bytesRead: await res, buffer }; + }; + patchedFs.write[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => { + const res = fakeFs.writePromise(fd, buffer, ...args); + return { bytesWritten: await res, buffer }; + }; + } +} + +let cachedInstance; +let registeredFactory = () => { + throw new Error(`Assertion failed: No libzip instance is available, and no factory was configured`); +}; +function setFactory(factory) { + registeredFactory = factory; +} +function getInstance() { + if (typeof cachedInstance === `undefined`) + cachedInstance = registeredFactory(); + return cachedInstance; +} + +var libzipSync = {exports: {}}; + +(function (module, exports) { +var frozenFs = Object.assign({}, fs__default.default); +var createModule = function() { + var _scriptDir = void 0; + if (typeof __filename !== "undefined") _scriptDir = _scriptDir || __filename; + return function(createModule2) { + createModule2 = createModule2 || {}; + var Module = typeof createModule2 !== "undefined" ? createModule2 : {}; + var readyPromiseResolve, readyPromiseReject; + Module["ready"] = new Promise(function(resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; + }); + var moduleOverrides = {}; + var key; + for (key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } + } + var scriptDirectory = ""; + function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; + } + var read_, readBinary; + var nodeFS; + var nodePath; + { + { + scriptDirectory = __dirname + "/"; + } + read_ = function shell_read(filename, binary) { + var ret = tryParseAsDataURI(filename); + if (ret) { + return binary ? ret : ret.toString(); + } + if (!nodeFS) nodeFS = frozenFs; + if (!nodePath) nodePath = path__default.default; + filename = nodePath["normalize"](filename); + return nodeFS["readFileSync"](filename, binary ? null : "utf8"); + }; + readBinary = function readBinary2(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert(ret.buffer); + return ret; + }; + if (process["argv"].length > 1) { + process["argv"][1].replace(/\\/g, "/"); + } + process["argv"].slice(2); + Module["inspect"] = function() { + return "[Emscripten Module object]"; + }; + } + Module["print"] || console.log.bind(console); + var err = Module["printErr"] || console.warn.bind(console); + for (key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } + } + moduleOverrides = null; + if (Module["arguments"]) ; + if (Module["thisProgram"]) ; + if (Module["quit"]) ; + var wasmBinary; + if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + Module["noExitRuntime"] || true; + if (typeof WebAssembly !== "object") { + abort("no native wasm support detected"); + } + function getValue(ptr, type, noSafe) { + type = type || "i8"; + if (type.charAt(type.length - 1) === "*") type = "i32"; + switch (type) { + case "i1": + return HEAP8[ptr >> 0]; + case "i8": + return HEAP8[ptr >> 0]; + case "i16": + return LE_HEAP_LOAD_I16((ptr >> 1) * 2); + case "i32": + return LE_HEAP_LOAD_I32((ptr >> 2) * 4); + case "i64": + return LE_HEAP_LOAD_I32((ptr >> 2) * 4); + case "float": + return LE_HEAP_LOAD_F32((ptr >> 2) * 4); + case "double": + return LE_HEAP_LOAD_F64((ptr >> 3) * 8); + default: + abort("invalid type for getValue: " + type); + } + return null; + } + var wasmMemory; + var ABORT = false; + function assert(condition, text) { + if (!condition) { + abort("Assertion failed: " + text); + } + } + function getCFunc(ident) { + var func = Module["_" + ident]; + assert( + func, + "Cannot call unknown function " + ident + ", make sure it is exported" + ); + return func; + } + function ccall(ident, returnType, argTypes, args, opts) { + var toC = { + string: function(str) { + var ret2 = 0; + if (str !== null && str !== void 0 && str !== 0) { + var len = (str.length << 2) + 1; + ret2 = stackAlloc(len); + stringToUTF8(str, ret2, len); + } + return ret2; + }, + array: function(arr) { + var ret2 = stackAlloc(arr.length); + writeArrayToMemory(arr, ret2); + return ret2; + } + }; + function convertReturnValue(ret2) { + if (returnType === "string") return UTF8ToString(ret2); + if (returnType === "boolean") return Boolean(ret2); + return ret2; + } + var func = getCFunc(ident); + var cArgs = []; + var stack = 0; + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack === 0) stack = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func.apply(null, cArgs); + ret = convertReturnValue(ret); + if (stack !== 0) stackRestore(stack); + return ret; + } + function cwrap(ident, returnType, argTypes, opts) { + argTypes = argTypes || []; + var numericArgs = argTypes.every(function(type) { + return type === "number"; + }); + var numericRet = returnType !== "string"; + if (numericRet && numericArgs && !opts) { + return getCFunc(ident); + } + return function() { + return ccall(ident, returnType, argTypes, arguments); + }; + } + var UTF8Decoder = new TextDecoder("utf8"); + function UTF8ToString(ptr, maxBytesToRead) { + if (!ptr) return ""; + var maxPtr = ptr + maxBytesToRead; + for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end; + return UTF8Decoder.decode(HEAPU8.subarray(ptr, end)); + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; + } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); + } + function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) + u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023; + if (u <= 127) ++len; + else if (u <= 2047) len += 2; + else if (u <= 65535) len += 3; + else len += 4; + } + return len; + } + function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; + } + function writeArrayToMemory(array, buffer2) { + HEAP8.set(array, buffer2); + } + function alignUp(x, multiple) { + if (x % multiple > 0) { + x += multiple - x % multiple; + } + return x; + } + var buffer, HEAP8, HEAPU8; + var HEAP_DATA_VIEW; + function updateGlobalBufferAndViews(buf) { + buffer = buf; + Module["HEAP_DATA_VIEW"] = HEAP_DATA_VIEW = new DataView(buf); + Module["HEAP8"] = HEAP8 = new Int8Array(buf); + Module["HEAP16"] = new Int16Array(buf); + Module["HEAP32"] = new Int32Array(buf); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); + Module["HEAPU16"] = new Uint16Array(buf); + Module["HEAPU32"] = new Uint32Array(buf); + Module["HEAPF32"] = new Float32Array(buf); + Module["HEAPF64"] = new Float64Array(buf); + } + Module["INITIAL_MEMORY"] || 16777216; + var wasmTable; + var __ATPRERUN__ = []; + var __ATINIT__ = []; + var __ATPOSTRUN__ = []; + function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") + Module["preRun"] = [Module["preRun"]]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); + } + function initRuntime() { + callRuntimeCallbacks(__ATINIT__); + } + function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") + Module["postRun"] = [Module["postRun"]]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); + } + function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); + } + function addOnInit(cb) { + __ATINIT__.unshift(cb); + } + function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); + } + var runDependencies = 0; + var dependenciesFulfilled = null; + function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + } + function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (runDependencies == 0) { + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } + } + Module["preloadedImages"] = {}; + Module["preloadedAudios"] = {}; + function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + what += ""; + err(what); + ABORT = true; + what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e; + } + var dataURIPrefix = "data:application/octet-stream;base64,"; + function isDataURI(filename) { + return filename.startsWith(dataURIPrefix); + } + var wasmBinaryFile = "data:application/octet-stream;base64,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QCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQ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KAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASEL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NgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsi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CyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYg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DCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcN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DCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQL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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRl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UgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkA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SXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w=="; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } + function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + var binary = tryParseAsDataURI(file); + if (binary) { + return binary; + } + if (readBinary) { + return readBinary(file); + } else { + throw "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"; + } + } catch (err2) { + abort(err2); + } + } + function instantiateSync(file, info) { + var instance; + var module2; + var binary; + try { + binary = getBinary(file); + module2 = new WebAssembly.Module(binary); + instance = new WebAssembly.Instance(module2, info); + } catch (e) { + var str = e.toString(); + err("failed to compile wasm module: " + str); + if (str.includes("imported Memory") || str.includes("memory import")) { + err( + "Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)." + ); + } + throw e; + } + return [instance, module2]; + } + function createWasm() { + var info = { a: asmLibraryArg }; + function receiveInstance(instance, module2) { + var exports3 = instance.exports; + Module["asm"] = exports3; + wasmMemory = Module["asm"]["g"]; + updateGlobalBufferAndViews(wasmMemory.buffer); + wasmTable = Module["asm"]["W"]; + addOnInit(Module["asm"]["h"]); + removeRunDependency(); + } + addRunDependency(); + if (Module["instantiateWasm"]) { + try { + var exports2 = Module["instantiateWasm"](info, receiveInstance); + return exports2; + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + return false; + } + } + var result = instantiateSync(wasmBinaryFile, info); + receiveInstance(result[0]); + return Module["asm"]; + } + function LE_HEAP_LOAD_F32(byteOffset) { + return HEAP_DATA_VIEW.getFloat32(byteOffset, true); + } + function LE_HEAP_LOAD_F64(byteOffset) { + return HEAP_DATA_VIEW.getFloat64(byteOffset, true); + } + function LE_HEAP_LOAD_I16(byteOffset) { + return HEAP_DATA_VIEW.getInt16(byteOffset, true); + } + function LE_HEAP_LOAD_I32(byteOffset) { + return HEAP_DATA_VIEW.getInt32(byteOffset, true); + } + function LE_HEAP_STORE_I32(byteOffset, value) { + HEAP_DATA_VIEW.setInt32(byteOffset, value, true); + } + function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == "function") { + callback(Module); + continue; + } + var func = callback.func; + if (typeof func === "number") { + if (callback.arg === void 0) { + wasmTable.get(func)(); + } else { + wasmTable.get(func)(callback.arg); + } + } else { + func(callback.arg === void 0 ? null : callback.arg); + } + } + } + function _gmtime_r(time, tmPtr) { + var date = new Date(LE_HEAP_LOAD_I32((time >> 2) * 4) * 1e3); + LE_HEAP_STORE_I32((tmPtr >> 2) * 4, date.getUTCSeconds()); + LE_HEAP_STORE_I32((tmPtr + 4 >> 2) * 4, date.getUTCMinutes()); + LE_HEAP_STORE_I32((tmPtr + 8 >> 2) * 4, date.getUTCHours()); + LE_HEAP_STORE_I32((tmPtr + 12 >> 2) * 4, date.getUTCDate()); + LE_HEAP_STORE_I32((tmPtr + 16 >> 2) * 4, date.getUTCMonth()); + LE_HEAP_STORE_I32((tmPtr + 20 >> 2) * 4, date.getUTCFullYear() - 1900); + LE_HEAP_STORE_I32((tmPtr + 24 >> 2) * 4, date.getUTCDay()); + LE_HEAP_STORE_I32((tmPtr + 36 >> 2) * 4, 0); + LE_HEAP_STORE_I32((tmPtr + 32 >> 2) * 4, 0); + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; + LE_HEAP_STORE_I32((tmPtr + 28 >> 2) * 4, yday); + if (!_gmtime_r.GMTString) _gmtime_r.GMTString = allocateUTF8("GMT"); + LE_HEAP_STORE_I32((tmPtr + 40 >> 2) * 4, _gmtime_r.GMTString); + return tmPtr; + } + function ___gmtime_r(a0, a1) { + return _gmtime_r(a0, a1); + } + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); + } + function emscripten_realloc_buffer(size) { + try { + wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16); + updateGlobalBufferAndViews(wasmMemory.buffer); + return 1; + } catch (e) { + } + } + function _emscripten_resize_heap(requestedSize) { + var oldSize = HEAPU8.length; + requestedSize = requestedSize >>> 0; + var maxHeapSize = 2147483648; + if (requestedSize > maxHeapSize) { + return false; + } + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); + overGrownHeapSize = Math.min( + overGrownHeapSize, + requestedSize + 100663296 + ); + var newSize = Math.min( + maxHeapSize, + alignUp(Math.max(requestedSize, overGrownHeapSize), 65536) + ); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + return false; + } + function _setTempRet0(val) { + } + function _time(ptr) { + var ret = Date.now() / 1e3 | 0; + if (ptr) { + LE_HEAP_STORE_I32((ptr >> 2) * 4, ret); + } + return ret; + } + function _tzset() { + if (_tzset.called) return; + _tzset.called = true; + var currentYear = (/* @__PURE__ */ new Date()).getFullYear(); + var winter = new Date(currentYear, 0, 1); + var summer = new Date(currentYear, 6, 1); + var winterOffset = winter.getTimezoneOffset(); + var summerOffset = summer.getTimezoneOffset(); + var stdTimezoneOffset = Math.max(winterOffset, summerOffset); + LE_HEAP_STORE_I32((__get_timezone() >> 2) * 4, stdTimezoneOffset * 60); + LE_HEAP_STORE_I32( + (__get_daylight() >> 2) * 4, + Number(winterOffset != summerOffset) + ); + function extractZone(date) { + var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); + return match ? match[1] : "GMT"; + } + var winterName = extractZone(winter); + var summerName = extractZone(summer); + var winterNamePtr = allocateUTF8(winterName); + var summerNamePtr = allocateUTF8(summerName); + if (summerOffset < winterOffset) { + LE_HEAP_STORE_I32((__get_tzname() >> 2) * 4, winterNamePtr); + LE_HEAP_STORE_I32((__get_tzname() + 4 >> 2) * 4, summerNamePtr); + } else { + LE_HEAP_STORE_I32((__get_tzname() >> 2) * 4, summerNamePtr); + LE_HEAP_STORE_I32((__get_tzname() + 4 >> 2) * 4, winterNamePtr); + } + } + function _timegm(tmPtr) { + _tzset(); + var time = Date.UTC( + LE_HEAP_LOAD_I32((tmPtr + 20 >> 2) * 4) + 1900, + LE_HEAP_LOAD_I32((tmPtr + 16 >> 2) * 4), + LE_HEAP_LOAD_I32((tmPtr + 12 >> 2) * 4), + LE_HEAP_LOAD_I32((tmPtr + 8 >> 2) * 4), + LE_HEAP_LOAD_I32((tmPtr + 4 >> 2) * 4), + LE_HEAP_LOAD_I32((tmPtr >> 2) * 4), + 0 + ); + var date = new Date(time); + LE_HEAP_STORE_I32((tmPtr + 24 >> 2) * 4, date.getUTCDay()); + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; + LE_HEAP_STORE_I32((tmPtr + 28 >> 2) * 4, yday); + return date.getTime() / 1e3 | 0; + } + function intArrayFromBase64(s) { + { + var buf; + try { + buf = Buffer.from(s, "base64"); + } catch (_) { + buf = new Buffer(s, "base64"); + } + return new Uint8Array( + buf["buffer"], + buf["byteOffset"], + buf["byteLength"] + ); + } + } + function tryParseAsDataURI(filename) { + if (!isDataURI(filename)) { + return; + } + return intArrayFromBase64(filename.slice(dataURIPrefix.length)); + } + var asmLibraryArg = { + e: ___gmtime_r, + c: _emscripten_memcpy_big, + d: _emscripten_resize_heap, + a: _setTempRet0, + b: _time, + f: _timegm + }; + var asm = createWasm(); + Module["___wasm_call_ctors"] = asm["h"]; + Module["_zip_ext_count_symlinks"] = asm["i"]; + Module["_zip_file_get_external_attributes"] = asm["j"]; + Module["_zipstruct_statS"] = asm["k"]; + Module["_zipstruct_stat_size"] = asm["l"]; + Module["_zipstruct_stat_mtime"] = asm["m"]; + Module["_zipstruct_stat_crc"] = asm["n"]; + Module["_zipstruct_errorS"] = asm["o"]; + Module["_zipstruct_error_code_zip"] = asm["p"]; + Module["_zipstruct_stat_comp_size"] = asm["q"]; + Module["_zipstruct_stat_comp_method"] = asm["r"]; + Module["_zip_close"] = asm["s"]; + Module["_zip_delete"] = asm["t"]; + Module["_zip_dir_add"] = asm["u"]; + Module["_zip_discard"] = asm["v"]; + Module["_zip_error_init_with_code"] = asm["w"]; + Module["_zip_get_error"] = asm["x"]; + Module["_zip_file_get_error"] = asm["y"]; + Module["_zip_error_strerror"] = asm["z"]; + Module["_zip_fclose"] = asm["A"]; + Module["_zip_file_add"] = asm["B"]; + Module["_free"] = asm["C"]; + var _malloc = Module["_malloc"] = asm["D"]; + Module["_zip_source_error"] = asm["E"]; + Module["_zip_source_seek"] = asm["F"]; + Module["_zip_file_set_external_attributes"] = asm["G"]; + Module["_zip_file_set_mtime"] = asm["H"]; + Module["_zip_fopen_index"] = asm["I"]; + Module["_zip_fread"] = asm["J"]; + Module["_zip_get_name"] = asm["K"]; + Module["_zip_get_num_entries"] = asm["L"]; + Module["_zip_source_read"] = asm["M"]; + Module["_zip_name_locate"] = asm["N"]; + Module["_zip_open_from_source"] = asm["O"]; + Module["_zip_set_file_compression"] = asm["P"]; + Module["_zip_source_buffer"] = asm["Q"]; + Module["_zip_source_buffer_create"] = asm["R"]; + Module["_zip_source_close"] = asm["S"]; + Module["_zip_source_free"] = asm["T"]; + Module["_zip_source_keep"] = asm["U"]; + Module["_zip_source_open"] = asm["V"]; + Module["_zip_source_tell"] = asm["X"]; + Module["_zip_stat_index"] = asm["Y"]; + var __get_tzname = Module["__get_tzname"] = asm["Z"]; + var __get_daylight = Module["__get_daylight"] = asm["_"]; + var __get_timezone = Module["__get_timezone"] = asm["$"]; + var stackSave = Module["stackSave"] = asm["aa"]; + var stackRestore = Module["stackRestore"] = asm["ba"]; + var stackAlloc = Module["stackAlloc"] = asm["ca"]; + Module["cwrap"] = cwrap; + Module["getValue"] = getValue; + var calledRun; + dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; + }; + function run(args) { + if (runDependencies > 0) { + return; + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function() { + setTimeout(function() { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } + } + Module["run"] = run; + if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") + Module["preInit"] = [Module["preInit"]]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } + } + run(); + return createModule2; + }; +}(); +module.exports = createModule; +}(libzipSync)); + +const createModule = libzipSync.exports; + +const number64 = [ + `number`, + // low + `number` + // high +]; +var Errors = /* @__PURE__ */ ((Errors2) => { + Errors2[Errors2["ZIP_ER_OK"] = 0] = "ZIP_ER_OK"; + Errors2[Errors2["ZIP_ER_MULTIDISK"] = 1] = "ZIP_ER_MULTIDISK"; + Errors2[Errors2["ZIP_ER_RENAME"] = 2] = "ZIP_ER_RENAME"; + Errors2[Errors2["ZIP_ER_CLOSE"] = 3] = "ZIP_ER_CLOSE"; + Errors2[Errors2["ZIP_ER_SEEK"] = 4] = "ZIP_ER_SEEK"; + Errors2[Errors2["ZIP_ER_READ"] = 5] = "ZIP_ER_READ"; + Errors2[Errors2["ZIP_ER_WRITE"] = 6] = "ZIP_ER_WRITE"; + Errors2[Errors2["ZIP_ER_CRC"] = 7] = "ZIP_ER_CRC"; + Errors2[Errors2["ZIP_ER_ZIPCLOSED"] = 8] = "ZIP_ER_ZIPCLOSED"; + Errors2[Errors2["ZIP_ER_NOENT"] = 9] = "ZIP_ER_NOENT"; + Errors2[Errors2["ZIP_ER_EXISTS"] = 10] = "ZIP_ER_EXISTS"; + Errors2[Errors2["ZIP_ER_OPEN"] = 11] = "ZIP_ER_OPEN"; + Errors2[Errors2["ZIP_ER_TMPOPEN"] = 12] = "ZIP_ER_TMPOPEN"; + Errors2[Errors2["ZIP_ER_ZLIB"] = 13] = "ZIP_ER_ZLIB"; + Errors2[Errors2["ZIP_ER_MEMORY"] = 14] = "ZIP_ER_MEMORY"; + Errors2[Errors2["ZIP_ER_CHANGED"] = 15] = "ZIP_ER_CHANGED"; + Errors2[Errors2["ZIP_ER_COMPNOTSUPP"] = 16] = "ZIP_ER_COMPNOTSUPP"; + Errors2[Errors2["ZIP_ER_EOF"] = 17] = "ZIP_ER_EOF"; + Errors2[Errors2["ZIP_ER_INVAL"] = 18] = "ZIP_ER_INVAL"; + Errors2[Errors2["ZIP_ER_NOZIP"] = 19] = "ZIP_ER_NOZIP"; + Errors2[Errors2["ZIP_ER_INTERNAL"] = 20] = "ZIP_ER_INTERNAL"; + Errors2[Errors2["ZIP_ER_INCONS"] = 21] = "ZIP_ER_INCONS"; + Errors2[Errors2["ZIP_ER_REMOVE"] = 22] = "ZIP_ER_REMOVE"; + Errors2[Errors2["ZIP_ER_DELETED"] = 23] = "ZIP_ER_DELETED"; + Errors2[Errors2["ZIP_ER_ENCRNOTSUPP"] = 24] = "ZIP_ER_ENCRNOTSUPP"; + Errors2[Errors2["ZIP_ER_RDONLY"] = 25] = "ZIP_ER_RDONLY"; + Errors2[Errors2["ZIP_ER_NOPASSWD"] = 26] = "ZIP_ER_NOPASSWD"; + Errors2[Errors2["ZIP_ER_WRONGPASSWD"] = 27] = "ZIP_ER_WRONGPASSWD"; + Errors2[Errors2["ZIP_ER_OPNOTSUPP"] = 28] = "ZIP_ER_OPNOTSUPP"; + Errors2[Errors2["ZIP_ER_INUSE"] = 29] = "ZIP_ER_INUSE"; + Errors2[Errors2["ZIP_ER_TELL"] = 30] = "ZIP_ER_TELL"; + Errors2[Errors2["ZIP_ER_COMPRESSED_DATA"] = 31] = "ZIP_ER_COMPRESSED_DATA"; + return Errors2; +})(Errors || {}); +const makeInterface = (emZip) => ({ + // Those are getters because they can change after memory growth + get HEAPU8() { + return emZip.HEAPU8; + }, + errors: Errors, + SEEK_SET: 0, + SEEK_CUR: 1, + SEEK_END: 2, + ZIP_CHECKCONS: 4, + ZIP_EXCL: 2, + ZIP_RDONLY: 16, + ZIP_FL_OVERWRITE: 8192, + ZIP_FL_COMPRESSED: 4, + ZIP_OPSYS_DOS: 0, + ZIP_OPSYS_AMIGA: 1, + ZIP_OPSYS_OPENVMS: 2, + ZIP_OPSYS_UNIX: 3, + ZIP_OPSYS_VM_CMS: 4, + ZIP_OPSYS_ATARI_ST: 5, + ZIP_OPSYS_OS_2: 6, + ZIP_OPSYS_MACINTOSH: 7, + ZIP_OPSYS_Z_SYSTEM: 8, + ZIP_OPSYS_CPM: 9, + ZIP_OPSYS_WINDOWS_NTFS: 10, + ZIP_OPSYS_MVS: 11, + ZIP_OPSYS_VSE: 12, + ZIP_OPSYS_ACORN_RISC: 13, + ZIP_OPSYS_VFAT: 14, + ZIP_OPSYS_ALTERNATE_MVS: 15, + ZIP_OPSYS_BEOS: 16, + ZIP_OPSYS_TANDEM: 17, + ZIP_OPSYS_OS_400: 18, + ZIP_OPSYS_OS_X: 19, + ZIP_CM_DEFAULT: -1, + ZIP_CM_STORE: 0, + ZIP_CM_DEFLATE: 8, + uint08S: emZip._malloc(1), + uint32S: emZip._malloc(4), + malloc: emZip._malloc, + free: emZip._free, + getValue: emZip.getValue, + openFromSource: emZip.cwrap(`zip_open_from_source`, `number`, [`number`, `number`, `number`]), + close: emZip.cwrap(`zip_close`, `number`, [`number`]), + discard: emZip.cwrap(`zip_discard`, null, [`number`]), + getError: emZip.cwrap(`zip_get_error`, `number`, [`number`]), + getName: emZip.cwrap(`zip_get_name`, `string`, [`number`, `number`, `number`]), + getNumEntries: emZip.cwrap(`zip_get_num_entries`, `number`, [`number`, `number`]), + delete: emZip.cwrap(`zip_delete`, `number`, [`number`, `number`]), + statIndex: emZip.cwrap(`zip_stat_index`, `number`, [`number`, ...number64, `number`, `number`]), + fopenIndex: emZip.cwrap(`zip_fopen_index`, `number`, [`number`, ...number64, `number`]), + fread: emZip.cwrap(`zip_fread`, `number`, [`number`, `number`, `number`, `number`]), + fclose: emZip.cwrap(`zip_fclose`, `number`, [`number`]), + dir: { + add: emZip.cwrap(`zip_dir_add`, `number`, [`number`, `string`]) + }, + file: { + add: emZip.cwrap(`zip_file_add`, `number`, [`number`, `string`, `number`, `number`]), + getError: emZip.cwrap(`zip_file_get_error`, `number`, [`number`]), + getExternalAttributes: emZip.cwrap(`zip_file_get_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]), + setExternalAttributes: emZip.cwrap(`zip_file_set_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]), + setMtime: emZip.cwrap(`zip_file_set_mtime`, `number`, [`number`, ...number64, `number`, `number`]), + setCompression: emZip.cwrap(`zip_set_file_compression`, `number`, [`number`, ...number64, `number`, `number`]) + }, + ext: { + countSymlinks: emZip.cwrap(`zip_ext_count_symlinks`, `number`, [`number`]) + }, + error: { + initWithCode: emZip.cwrap(`zip_error_init_with_code`, null, [`number`, `number`]), + strerror: emZip.cwrap(`zip_error_strerror`, `string`, [`number`]) + }, + name: { + locate: emZip.cwrap(`zip_name_locate`, `number`, [`number`, `string`, `number`]) + }, + source: { + fromUnattachedBuffer: emZip.cwrap(`zip_source_buffer_create`, `number`, [`number`, ...number64, `number`, `number`]), + fromBuffer: emZip.cwrap(`zip_source_buffer`, `number`, [`number`, `number`, ...number64, `number`]), + free: emZip.cwrap(`zip_source_free`, null, [`number`]), + keep: emZip.cwrap(`zip_source_keep`, null, [`number`]), + open: emZip.cwrap(`zip_source_open`, `number`, [`number`]), + close: emZip.cwrap(`zip_source_close`, `number`, [`number`]), + seek: emZip.cwrap(`zip_source_seek`, `number`, [`number`, ...number64, `number`]), + tell: emZip.cwrap(`zip_source_tell`, `number`, [`number`]), + read: emZip.cwrap(`zip_source_read`, `number`, [`number`, `number`, `number`]), + error: emZip.cwrap(`zip_source_error`, `number`, [`number`]) + }, + struct: { + statS: emZip.cwrap(`zipstruct_statS`, `number`, []), + statSize: emZip.cwrap(`zipstruct_stat_size`, `number`, [`number`]), + statCompSize: emZip.cwrap(`zipstruct_stat_comp_size`, `number`, [`number`]), + statCompMethod: emZip.cwrap(`zipstruct_stat_comp_method`, `number`, [`number`]), + statMtime: emZip.cwrap(`zipstruct_stat_mtime`, `number`, [`number`]), + statCrc: emZip.cwrap(`zipstruct_stat_crc`, `number`, [`number`]), + errorS: emZip.cwrap(`zipstruct_errorS`, `number`, []), + errorCodeZip: emZip.cwrap(`zipstruct_error_code_zip`, `number`, [`number`]) + } +}); + +function getArchivePart(path, extension) { + let idx = path.indexOf(extension); + if (idx <= 0) + return null; + let nextCharIdx = idx; + while (idx >= 0) { + nextCharIdx = idx + extension.length; + if (path[nextCharIdx] === ppath.sep) + break; + if (path[idx - 1] === ppath.sep) + return null; + idx = path.indexOf(extension, nextCharIdx); + } + if (path.length > nextCharIdx && path[nextCharIdx] !== ppath.sep) + return null; + return path.slice(0, nextCharIdx); +} +class ZipOpenFS extends MountFS { + static async openPromise(fn, opts) { + const zipOpenFs = new ZipOpenFS(opts); + try { + return await fn(zipOpenFs); + } finally { + zipOpenFs.saveAndClose(); + } + } + constructor(opts = {}) { + const fileExtensions = opts.fileExtensions; + const readOnlyArchives = opts.readOnlyArchives; + const getMountPoint = typeof fileExtensions === `undefined` ? (path) => getArchivePart(path, `.zip`) : (path) => { + for (const extension of fileExtensions) { + const result = getArchivePart(path, extension); + if (result) { + return result; + } + } + return null; + }; + const factorySync = (baseFs, p) => { + return new ZipFS(p, { + baseFs, + readOnly: readOnlyArchives, + stats: baseFs.statSync(p), + customZipImplementation: opts.customZipImplementation + }); + }; + const factoryPromise = async (baseFs, p) => { + const zipOptions = { + baseFs, + readOnly: readOnlyArchives, + stats: await baseFs.statPromise(p), + customZipImplementation: opts.customZipImplementation + }; + return () => { + return new ZipFS(p, zipOptions); + }; + }; + super({ + ...opts, + factorySync, + factoryPromise, + getMountPoint + }); + } +} + +class LibzipError extends Error { + code; + constructor(message, code) { + super(message); + this.name = `Libzip Error`; + this.code = code; + } +} +class LibZipImpl { + libzip; + lzSource; + zip; + listings; + symlinkCount; + filesShouldBeCached = true; + constructor(opts) { + const buffer = `buffer` in opts ? opts.buffer : opts.baseFs.readFileSync(opts.path); + this.libzip = getInstance(); + const errPtr = this.libzip.malloc(4); + try { + let flags = 0; + if (opts.readOnly) + flags |= this.libzip.ZIP_RDONLY; + const lzSource = this.allocateUnattachedSource(buffer); + try { + this.zip = this.libzip.openFromSource(lzSource, flags, errPtr); + this.lzSource = lzSource; + } catch (error) { + this.libzip.source.free(lzSource); + throw error; + } + if (this.zip === 0) { + const error = this.libzip.struct.errorS(); + this.libzip.error.initWithCode(error, this.libzip.getValue(errPtr, `i32`)); + throw this.makeLibzipError(error); + } + } finally { + this.libzip.free(errPtr); + } + const entryCount = this.libzip.getNumEntries(this.zip, 0); + const listings = new Array(entryCount); + for (let t = 0; t < entryCount; ++t) + listings[t] = this.libzip.getName(this.zip, t, 0); + this.listings = listings; + this.symlinkCount = this.libzip.ext.countSymlinks(this.zip); + if (this.symlinkCount === -1) { + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + } + getSymlinkCount() { + return this.symlinkCount; + } + getListings() { + return this.listings; + } + stat(entry) { + const stat = this.libzip.struct.statS(); + const rc = this.libzip.statIndex(this.zip, entry, 0, 0, stat); + if (rc === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + const size = this.libzip.struct.statSize(stat) >>> 0; + const mtime = this.libzip.struct.statMtime(stat) >>> 0; + const crc = this.libzip.struct.statCrc(stat) >>> 0; + return { size, mtime, crc }; + } + makeLibzipError(error) { + const errorCode = this.libzip.struct.errorCodeZip(error); + const strerror = this.libzip.error.strerror(error); + const libzipError = new LibzipError(strerror, this.libzip.errors[errorCode]); + if (errorCode === this.libzip.errors.ZIP_ER_CHANGED) + throw new Error(`Assertion failed: Unexpected libzip error: ${libzipError.message}`); + return libzipError; + } + setFileSource(target, compression, buffer) { + const lzSource = this.allocateSource(buffer); + try { + const newIndex = this.libzip.file.add(this.zip, target, lzSource, this.libzip.ZIP_FL_OVERWRITE); + if (newIndex === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + if (compression !== null) { + const rc = this.libzip.file.setCompression(this.zip, newIndex, 0, compression[0], compression[1]); + if (rc === -1) { + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + } + return newIndex; + } catch (error) { + this.libzip.source.free(lzSource); + throw error; + } + } + setMtime(entry, mtime) { + const rc = this.libzip.file.setMtime(this.zip, entry, 0, mtime, 0); + if (rc === -1) { + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + } + getExternalAttributes(index) { + const attrs = this.libzip.file.getExternalAttributes(this.zip, index, 0, 0, this.libzip.uint08S, this.libzip.uint32S); + if (attrs === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0; + const attributes = this.libzip.getValue(this.libzip.uint32S, `i32`) >>> 0; + return [opsys, attributes]; + } + setExternalAttributes(index, opsys, attributes) { + const rc = this.libzip.file.setExternalAttributes(this.zip, index, 0, 0, opsys, attributes); + if (rc === -1) { + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + } + locate(name) { + return this.libzip.name.locate(this.zip, name, 0); + } + getFileSource(index) { + const stat = this.libzip.struct.statS(); + const rc = this.libzip.statIndex(this.zip, index, 0, 0, stat); + if (rc === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + const size = this.libzip.struct.statCompSize(stat); + const compressionMethod = this.libzip.struct.statCompMethod(stat); + const buffer = this.libzip.malloc(size); + try { + const file = this.libzip.fopenIndex(this.zip, index, 0, this.libzip.ZIP_FL_COMPRESSED); + if (file === 0) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + try { + const rc2 = this.libzip.fread(file, buffer, size, 0); + if (rc2 === -1) + throw this.makeLibzipError(this.libzip.file.getError(file)); + else if (rc2 < size) + throw new Error(`Incomplete read`); + else if (rc2 > size) + throw new Error(`Overread`); + const memory = this.libzip.HEAPU8.subarray(buffer, buffer + size); + const data = Buffer.from(memory); + return { data, compressionMethod }; + } finally { + this.libzip.fclose(file); + } + } finally { + this.libzip.free(buffer); + } + } + deleteEntry(index) { + const rc = this.libzip.delete(this.zip, index); + if (rc === -1) { + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + } + addDirectory(path) { + const index = this.libzip.dir.add(this.zip, path); + if (index === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + return index; + } + getBufferAndClose() { + try { + this.libzip.source.keep(this.lzSource); + if (this.libzip.close(this.zip) === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + if (this.libzip.source.open(this.lzSource) === -1) + throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); + if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_END) === -1) + throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); + const size = this.libzip.source.tell(this.lzSource); + if (size === -1) + throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); + if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_SET) === -1) + throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); + const buffer = this.libzip.malloc(size); + if (!buffer) + throw new Error(`Couldn't allocate enough memory`); + try { + const rc = this.libzip.source.read(this.lzSource, buffer, size); + if (rc === -1) + throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); + else if (rc < size) + throw new Error(`Incomplete read`); + else if (rc > size) + throw new Error(`Overread`); + let result = Buffer.from(this.libzip.HEAPU8.subarray(buffer, buffer + size)); + if (process.env.YARN_IS_TEST_ENV && process.env.YARN_ZIP_DATA_EPILOGUE) + result = Buffer.concat([result, Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)]); + return result; + } finally { + this.libzip.free(buffer); + } + } finally { + this.libzip.source.close(this.lzSource); + this.libzip.source.free(this.lzSource); + } + } + allocateBuffer(content) { + if (!Buffer.isBuffer(content)) + content = Buffer.from(content); + const buffer = this.libzip.malloc(content.byteLength); + if (!buffer) + throw new Error(`Couldn't allocate enough memory`); + const heap = new Uint8Array(this.libzip.HEAPU8.buffer, buffer, content.byteLength); + heap.set(content); + return { buffer, byteLength: content.byteLength }; + } + allocateUnattachedSource(content) { + const error = this.libzip.struct.errorS(); + const { buffer, byteLength } = this.allocateBuffer(content); + const source = this.libzip.source.fromUnattachedBuffer(buffer, byteLength, 0, 1, error); + if (source === 0) { + this.libzip.free(error); + throw this.makeLibzipError(error); + } + return source; + } + allocateSource(content) { + const { buffer, byteLength } = this.allocateBuffer(content); + const source = this.libzip.source.fromBuffer(this.zip, buffer, byteLength, 0, 1); + if (source === 0) { + this.libzip.free(buffer); + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + return source; + } + discard() { + this.libzip.discard(this.zip); + } +} + +const ZIP_UNIX = 3; +const STORE = 0; +const DEFLATE = 8; +const DEFAULT_COMPRESSION_LEVEL = `mixed`; +function toUnixTimestamp(time) { + if (typeof time === `string` && String(+time) === time) + return +time; + if (typeof time === `number` && Number.isFinite(time)) { + if (time < 0) { + return Date.now() / 1e3; + } else { + return time; + } + } + if (nodeUtils.types.isDate(time)) + return time.getTime() / 1e3; + throw new Error(`Invalid time`); +} +function makeEmptyArchive() { + return Buffer.from([ + 80, + 75, + 5, + 6, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]); +} +class ZipFS extends BasePortableFakeFS { + baseFs; + path; + stats; + level; + zipImpl; + listings = /* @__PURE__ */ new Map(); + entries = /* @__PURE__ */ new Map(); + /** + * A cache of indices mapped to file sources. + * Populated by `setFileSource` calls. + * Required for supporting read after write. + */ + fileSources = /* @__PURE__ */ new Map(); + symlinkCount; + fds = /* @__PURE__ */ new Map(); + nextFd = 0; + ready = false; + readOnly = false; + constructor(source, opts = {}) { + super(); + if (opts.readOnly) + this.readOnly = true; + const pathOptions = opts; + this.level = typeof pathOptions.level !== `undefined` ? pathOptions.level : DEFAULT_COMPRESSION_LEVEL; + const ZipImplCls = opts.customZipImplementation ?? LibZipImpl; + if (typeof source === `string`) { + const { baseFs = new NodeFS() } = pathOptions; + this.baseFs = baseFs; + this.path = source; + } else { + this.path = null; + this.baseFs = null; + } + if (opts.stats) { + this.stats = opts.stats; + } else { + if (typeof source === `string`) { + try { + this.stats = this.baseFs.statSync(source); + } catch (error) { + if (error.code === `ENOENT` && pathOptions.create) { + this.stats = makeDefaultStats(); + } else { + throw error; + } + } + } else { + this.stats = makeDefaultStats(); + } + } + if (typeof source === `string`) { + if (opts.create) { + this.zipImpl = new ZipImplCls({ buffer: makeEmptyArchive(), readOnly: this.readOnly }); + } else { + this.zipImpl = new ZipImplCls({ path: source, baseFs: this.baseFs, readOnly: this.readOnly, size: this.stats.size }); + } + } else { + this.zipImpl = new ZipImplCls({ buffer: source ?? makeEmptyArchive(), readOnly: this.readOnly }); + } + this.listings.set(PortablePath.root, /* @__PURE__ */ new Set()); + const listings = this.zipImpl.getListings(); + for (let t = 0; t < listings.length; t++) { + const raw = listings[t]; + if (ppath.isAbsolute(raw)) + continue; + const p = ppath.resolve(PortablePath.root, raw); + this.registerEntry(p, t); + if (raw.endsWith(`/`)) { + this.registerListing(p); + } + } + this.symlinkCount = this.zipImpl.getSymlinkCount(); + this.ready = true; + } + getExtractHint(hints) { + for (const fileName of this.entries.keys()) { + const ext = this.pathUtils.extname(fileName); + if (hints.relevantExtensions.has(ext)) { + return true; + } + } + return false; + } + getAllFiles() { + return Array.from(this.entries.keys()); + } + getRealPath() { + if (!this.path) + throw new Error(`ZipFS don't have real paths when loaded from a buffer`); + return this.path; + } + prepareClose() { + if (!this.ready) + throw EBUSY(`archive closed, close`); + unwatchAllFiles(this); + } + getBufferAndClose() { + this.prepareClose(); + if (this.entries.size === 0) { + this.discardAndClose(); + return makeEmptyArchive(); + } + try { + return this.zipImpl.getBufferAndClose(); + } finally { + this.ready = false; + } + } + discardAndClose() { + this.prepareClose(); + this.zipImpl.discard(); + this.ready = false; + } + saveAndClose() { + if (!this.path || !this.baseFs) + throw new Error(`ZipFS cannot be saved and must be discarded when loaded from a buffer`); + if (this.readOnly) { + this.discardAndClose(); + return; + } + const newMode = this.baseFs.existsSync(this.path) || this.stats.mode === DEFAULT_MODE ? void 0 : this.stats.mode; + this.baseFs.writeFileSync(this.path, this.getBufferAndClose(), { mode: newMode }); + this.ready = false; + } + resolve(p) { + return ppath.resolve(PortablePath.root, p); + } + async openPromise(p, flags, mode) { + return this.openSync(p, flags, mode); + } + openSync(p, flags, mode) { + const fd = this.nextFd++; + this.fds.set(fd, { cursor: 0, p }); + return fd; + } + hasOpenFileHandles() { + return !!this.fds.size; + } + async opendirPromise(p, opts) { + return this.opendirSync(p, opts); + } + opendirSync(p, opts = {}) { + const resolvedP = this.resolveFilename(`opendir '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`opendir '${p}'`); + const directoryListing = this.listings.get(resolvedP); + if (!directoryListing) + throw ENOTDIR(`opendir '${p}'`); + const entries = [...directoryListing]; + const fd = this.openSync(resolvedP, `r`); + const onClose = () => { + this.closeSync(fd); + }; + return opendir(this, resolvedP, entries, { onClose }); + } + async readPromise(fd, buffer, offset, length, position) { + return this.readSync(fd, buffer, offset, length, position); + } + readSync(fd, buffer, offset = 0, length = buffer.byteLength, position = -1) { + const entry = this.fds.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`read`); + const realPosition = position === -1 || position === null ? entry.cursor : position; + const source = this.readFileSync(entry.p); + source.copy(buffer, offset, realPosition, realPosition + length); + const bytesRead = Math.max(0, Math.min(source.length - realPosition, length)); + if (position === -1 || position === null) + entry.cursor += bytesRead; + return bytesRead; + } + async writePromise(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return this.writeSync(fd, buffer, position); + } else { + return this.writeSync(fd, buffer, offset, length, position); + } + } + writeSync(fd, buffer, offset, length, position) { + const entry = this.fds.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`read`); + throw new Error(`Unimplemented`); + } + async closePromise(fd) { + return this.closeSync(fd); + } + closeSync(fd) { + const entry = this.fds.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`read`); + this.fds.delete(fd); + } + createReadStream(p, { encoding } = {}) { + if (p === null) + throw new Error(`Unimplemented`); + const fd = this.openSync(p, `r`); + const stream$1 = Object.assign( + new stream.PassThrough({ + emitClose: true, + autoDestroy: true, + destroy: (error, callback) => { + clearImmediate(immediate); + this.closeSync(fd); + callback(error); + } + }), + { + close() { + stream$1.destroy(); + }, + bytesRead: 0, + path: p, + // "This property is `true` if the underlying file has not been opened yet" + pending: false + } + ); + const immediate = setImmediate(async () => { + try { + const data = await this.readFilePromise(p, encoding); + stream$1.bytesRead = data.length; + stream$1.end(data); + } catch (error) { + stream$1.destroy(error); + } + }); + return stream$1; + } + createWriteStream(p, { encoding } = {}) { + if (this.readOnly) + throw EROFS(`open '${p}'`); + if (p === null) + throw new Error(`Unimplemented`); + const chunks = []; + const fd = this.openSync(p, `w`); + const stream$1 = Object.assign( + new stream.PassThrough({ + autoDestroy: true, + emitClose: true, + destroy: (error, callback) => { + try { + if (error) { + callback(error); + } else { + this.writeFileSync(p, Buffer.concat(chunks), encoding); + callback(null); + } + } catch (err) { + callback(err); + } finally { + this.closeSync(fd); + } + } + }), + { + close() { + stream$1.destroy(); + }, + bytesWritten: 0, + path: p, + // "This property is `true` if the underlying file has not been opened yet" + pending: false + } + ); + stream$1.on(`data`, (chunk) => { + const chunkBuffer = Buffer.from(chunk); + stream$1.bytesWritten += chunkBuffer.length; + chunks.push(chunkBuffer); + }); + return stream$1; + } + async realpathPromise(p) { + return this.realpathSync(p); + } + realpathSync(p) { + const resolvedP = this.resolveFilename(`lstat '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`lstat '${p}'`); + return resolvedP; + } + async existsPromise(p) { + return this.existsSync(p); + } + existsSync(p) { + if (!this.ready) + throw EBUSY(`archive closed, existsSync '${p}'`); + if (this.symlinkCount === 0) { + const resolvedP2 = ppath.resolve(PortablePath.root, p); + return this.entries.has(resolvedP2) || this.listings.has(resolvedP2); + } + let resolvedP; + try { + resolvedP = this.resolveFilename(`stat '${p}'`, p, void 0, false); + } catch { + return false; + } + if (resolvedP === void 0) + return false; + return this.entries.has(resolvedP) || this.listings.has(resolvedP); + } + async accessPromise(p, mode) { + return this.accessSync(p, mode); + } + accessSync(p, mode = fs.constants.F_OK) { + const resolvedP = this.resolveFilename(`access '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`access '${p}'`); + if (this.readOnly && mode & fs.constants.W_OK) { + throw EROFS(`access '${p}'`); + } + } + async statPromise(p, opts = { bigint: false }) { + if (opts.bigint) + return this.statSync(p, { bigint: true }); + return this.statSync(p); + } + statSync(p, opts = { bigint: false, throwIfNoEntry: true }) { + const resolvedP = this.resolveFilename(`stat '${p}'`, p, void 0, opts.throwIfNoEntry); + if (resolvedP === void 0) + return void 0; + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) { + if (opts.throwIfNoEntry === false) + return void 0; + throw ENOENT(`stat '${p}'`); + } + if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) + throw ENOTDIR(`stat '${p}'`); + return this.statImpl(`stat '${p}'`, resolvedP, opts); + } + async fstatPromise(fd, opts) { + return this.fstatSync(fd, opts); + } + fstatSync(fd, opts) { + const entry = this.fds.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fstatSync`); + const { p } = entry; + const resolvedP = this.resolveFilename(`stat '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`stat '${p}'`); + if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) + throw ENOTDIR(`stat '${p}'`); + return this.statImpl(`fstat '${p}'`, resolvedP, opts); + } + async lstatPromise(p, opts = { bigint: false }) { + if (opts.bigint) + return this.lstatSync(p, { bigint: true }); + return this.lstatSync(p); + } + lstatSync(p, opts = { bigint: false, throwIfNoEntry: true }) { + const resolvedP = this.resolveFilename(`lstat '${p}'`, p, false, opts.throwIfNoEntry); + if (resolvedP === void 0) + return void 0; + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) { + if (opts.throwIfNoEntry === false) + return void 0; + throw ENOENT(`lstat '${p}'`); + } + if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) + throw ENOTDIR(`lstat '${p}'`); + return this.statImpl(`lstat '${p}'`, resolvedP, opts); + } + statImpl(reason, p, opts = {}) { + const entry = this.entries.get(p); + if (typeof entry !== `undefined`) { + const stat = this.zipImpl.stat(entry); + const crc = stat.crc; + const size = stat.size; + const mtimeMs = stat.mtime * 1e3; + const uid = this.stats.uid; + const gid = this.stats.gid; + const blksize = 512; + const blocks = Math.ceil(stat.size / blksize); + const atimeMs = mtimeMs; + const birthtimeMs = mtimeMs; + const ctimeMs = mtimeMs; + const atime = new Date(atimeMs); + const birthtime = new Date(birthtimeMs); + const ctime = new Date(ctimeMs); + const mtime = new Date(mtimeMs); + const type = this.listings.has(p) ? fs.constants.S_IFDIR : this.isSymbolicLink(entry) ? fs.constants.S_IFLNK : fs.constants.S_IFREG; + const defaultMode = type === fs.constants.S_IFDIR ? 493 : 420; + const mode = type | this.getUnixMode(entry, defaultMode) & 511; + const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc }); + return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance; + } + if (this.listings.has(p)) { + const uid = this.stats.uid; + const gid = this.stats.gid; + const size = 0; + const blksize = 512; + const blocks = 0; + const atimeMs = this.stats.mtimeMs; + const birthtimeMs = this.stats.mtimeMs; + const ctimeMs = this.stats.mtimeMs; + const mtimeMs = this.stats.mtimeMs; + const atime = new Date(atimeMs); + const birthtime = new Date(birthtimeMs); + const ctime = new Date(ctimeMs); + const mtime = new Date(mtimeMs); + const mode = fs.constants.S_IFDIR | 493; + const crc = 0; + const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc }); + return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance; + } + throw new Error(`Unreachable`); + } + getUnixMode(index, defaultMode) { + const [opsys, attributes] = this.zipImpl.getExternalAttributes(index); + if (opsys !== ZIP_UNIX) + return defaultMode; + return attributes >>> 16; + } + registerListing(p) { + const existingListing = this.listings.get(p); + if (existingListing) + return existingListing; + const parentListing = this.registerListing(ppath.dirname(p)); + parentListing.add(ppath.basename(p)); + const newListing = /* @__PURE__ */ new Set(); + this.listings.set(p, newListing); + return newListing; + } + registerEntry(p, index) { + const parentListing = this.registerListing(ppath.dirname(p)); + parentListing.add(ppath.basename(p)); + this.entries.set(p, index); + } + unregisterListing(p) { + this.listings.delete(p); + const parentListing = this.listings.get(ppath.dirname(p)); + parentListing?.delete(ppath.basename(p)); + } + unregisterEntry(p) { + this.unregisterListing(p); + const entry = this.entries.get(p); + this.entries.delete(p); + if (typeof entry === `undefined`) + return; + this.fileSources.delete(entry); + if (this.isSymbolicLink(entry)) { + this.symlinkCount--; + } + } + deleteEntry(p, index) { + this.unregisterEntry(p); + this.zipImpl.deleteEntry(index); + } + resolveFilename(reason, p, resolveLastComponent = true, throwIfNoEntry = true) { + if (!this.ready) + throw EBUSY(`archive closed, ${reason}`); + let resolvedP = ppath.resolve(PortablePath.root, p); + if (resolvedP === `/`) + return PortablePath.root; + const fileIndex = this.entries.get(resolvedP); + if (resolveLastComponent && fileIndex !== void 0) { + if (this.symlinkCount !== 0 && this.isSymbolicLink(fileIndex)) { + const target = this.getFileSource(fileIndex).toString(); + return this.resolveFilename(reason, ppath.resolve(ppath.dirname(resolvedP), target), true, throwIfNoEntry); + } else { + return resolvedP; + } + } + while (true) { + const parentP = this.resolveFilename(reason, ppath.dirname(resolvedP), true, throwIfNoEntry); + if (parentP === void 0) + return parentP; + const isDir = this.listings.has(parentP); + const doesExist = this.entries.has(parentP); + if (!isDir && !doesExist) { + if (throwIfNoEntry === false) + return void 0; + throw ENOENT(reason); + } + if (!isDir) + throw ENOTDIR(reason); + resolvedP = ppath.resolve(parentP, ppath.basename(resolvedP)); + if (!resolveLastComponent || this.symlinkCount === 0) + break; + const index = this.zipImpl.locate(resolvedP.slice(1)); + if (index === -1) + break; + if (this.isSymbolicLink(index)) { + const target = this.getFileSource(index).toString(); + resolvedP = ppath.resolve(ppath.dirname(resolvedP), target); + } else { + break; + } + } + return resolvedP; + } + setFileSource(p, content) { + const buffer = Buffer.isBuffer(content) ? content : Buffer.from(content); + const target = ppath.relative(PortablePath.root, p); + let compression = null; + if (this.level !== `mixed`) { + const method = this.level === 0 ? STORE : DEFLATE; + compression = [method, this.level]; + } + const newIndex = this.zipImpl.setFileSource(target, compression, buffer); + this.fileSources.set(newIndex, buffer); + return newIndex; + } + isSymbolicLink(index) { + if (this.symlinkCount === 0) + return false; + const [opsys, attrs] = this.zipImpl.getExternalAttributes(index); + if (opsys !== ZIP_UNIX) + return false; + const attributes = attrs >>> 16; + return (attributes & fs.constants.S_IFMT) === fs.constants.S_IFLNK; + } + getFileSource(index, opts = { asyncDecompress: false }) { + const cachedFileSource = this.fileSources.get(index); + if (typeof cachedFileSource !== `undefined`) + return cachedFileSource; + const { data, compressionMethod } = this.zipImpl.getFileSource(index); + if (compressionMethod === STORE) { + if (this.zipImpl.filesShouldBeCached) + this.fileSources.set(index, data); + return data; + } else if (compressionMethod === DEFLATE) { + if (opts.asyncDecompress) { + return new Promise((resolve, reject) => { + zlib__default.default.inflateRaw(data, (error, result) => { + if (error) { + reject(error); + } else { + if (this.zipImpl.filesShouldBeCached) + this.fileSources.set(index, result); + resolve(result); + } + }); + }); + } else { + const decompressedData = zlib__default.default.inflateRawSync(data); + if (this.zipImpl.filesShouldBeCached) + this.fileSources.set(index, decompressedData); + return decompressedData; + } + } else { + throw new Error(`Unsupported compression method: ${compressionMethod}`); + } + } + async fchmodPromise(fd, mask) { + return this.chmodPromise(this.fdToPath(fd, `fchmod`), mask); + } + fchmodSync(fd, mask) { + return this.chmodSync(this.fdToPath(fd, `fchmodSync`), mask); + } + async chmodPromise(p, mask) { + return this.chmodSync(p, mask); + } + chmodSync(p, mask) { + if (this.readOnly) + throw EROFS(`chmod '${p}'`); + mask &= 493; + const resolvedP = this.resolveFilename(`chmod '${p}'`, p, false); + const entry = this.entries.get(resolvedP); + if (typeof entry === `undefined`) + throw new Error(`Assertion failed: The entry should have been registered (${resolvedP})`); + const oldMod = this.getUnixMode(entry, fs.constants.S_IFREG | 0); + const newMod = oldMod & ~511 | mask; + this.zipImpl.setExternalAttributes(entry, ZIP_UNIX, newMod << 16); + } + async fchownPromise(fd, uid, gid) { + return this.chownPromise(this.fdToPath(fd, `fchown`), uid, gid); + } + fchownSync(fd, uid, gid) { + return this.chownSync(this.fdToPath(fd, `fchownSync`), uid, gid); + } + async chownPromise(p, uid, gid) { + return this.chownSync(p, uid, gid); + } + chownSync(p, uid, gid) { + throw new Error(`Unimplemented`); + } + async renamePromise(oldP, newP) { + return this.renameSync(oldP, newP); + } + renameSync(oldP, newP) { + throw new Error(`Unimplemented`); + } + async copyFilePromise(sourceP, destP, flags) { + const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags); + const source = await this.getFileSource(indexSource, { asyncDecompress: true }); + const newIndex = this.setFileSource(resolvedDestP, source); + if (newIndex !== indexDest) { + this.registerEntry(resolvedDestP, newIndex); + } + } + copyFileSync(sourceP, destP, flags = 0) { + const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags); + const source = this.getFileSource(indexSource); + const newIndex = this.setFileSource(resolvedDestP, source); + if (newIndex !== indexDest) { + this.registerEntry(resolvedDestP, newIndex); + } + } + prepareCopyFile(sourceP, destP, flags = 0) { + if (this.readOnly) + throw EROFS(`copyfile '${sourceP} -> '${destP}'`); + if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0) + throw ENOSYS(`unsupported clone operation`, `copyfile '${sourceP}' -> ${destP}'`); + const resolvedSourceP = this.resolveFilename(`copyfile '${sourceP} -> ${destP}'`, sourceP); + const indexSource = this.entries.get(resolvedSourceP); + if (typeof indexSource === `undefined`) + throw EINVAL(`copyfile '${sourceP}' -> '${destP}'`); + const resolvedDestP = this.resolveFilename(`copyfile '${sourceP}' -> ${destP}'`, destP); + const indexDest = this.entries.get(resolvedDestP); + if ((flags & (fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE_FORCE)) !== 0 && typeof indexDest !== `undefined`) + throw EEXIST(`copyfile '${sourceP}' -> '${destP}'`); + return { + indexSource, + resolvedDestP, + indexDest + }; + } + async appendFilePromise(p, content, opts) { + if (this.readOnly) + throw EROFS(`open '${p}'`); + if (typeof opts === `undefined`) + opts = { flag: `a` }; + else if (typeof opts === `string`) + opts = { flag: `a`, encoding: opts }; + else if (typeof opts.flag === `undefined`) + opts = { flag: `a`, ...opts }; + return this.writeFilePromise(p, content, opts); + } + appendFileSync(p, content, opts = {}) { + if (this.readOnly) + throw EROFS(`open '${p}'`); + if (typeof opts === `undefined`) + opts = { flag: `a` }; + else if (typeof opts === `string`) + opts = { flag: `a`, encoding: opts }; + else if (typeof opts.flag === `undefined`) + opts = { flag: `a`, ...opts }; + return this.writeFileSync(p, content, opts); + } + fdToPath(fd, reason) { + const path = this.fds.get(fd)?.p; + if (typeof path === `undefined`) + throw EBADF(reason); + return path; + } + async writeFilePromise(p, content, opts) { + const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts); + if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`)) + content = Buffer.concat([await this.getFileSource(index, { asyncDecompress: true }), Buffer.from(content)]); + if (encoding !== null) + content = content.toString(encoding); + const newIndex = this.setFileSource(resolvedP, content); + if (newIndex !== index) + this.registerEntry(resolvedP, newIndex); + if (mode !== null) { + await this.chmodPromise(resolvedP, mode); + } + } + writeFileSync(p, content, opts) { + const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts); + if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`)) + content = Buffer.concat([this.getFileSource(index), Buffer.from(content)]); + if (encoding !== null) + content = content.toString(encoding); + const newIndex = this.setFileSource(resolvedP, content); + if (newIndex !== index) + this.registerEntry(resolvedP, newIndex); + if (mode !== null) { + this.chmodSync(resolvedP, mode); + } + } + prepareWriteFile(p, opts) { + if (typeof p === `number`) + p = this.fdToPath(p, `read`); + if (this.readOnly) + throw EROFS(`open '${p}'`); + const resolvedP = this.resolveFilename(`open '${p}'`, p); + if (this.listings.has(resolvedP)) + throw EISDIR(`open '${p}'`); + let encoding = null, mode = null; + if (typeof opts === `string`) { + encoding = opts; + } else if (typeof opts === `object`) { + ({ + encoding = null, + mode = null + } = opts); + } + const index = this.entries.get(resolvedP); + return { + encoding, + mode, + resolvedP, + index + }; + } + async unlinkPromise(p) { + return this.unlinkSync(p); + } + unlinkSync(p) { + if (this.readOnly) + throw EROFS(`unlink '${p}'`); + const resolvedP = this.resolveFilename(`unlink '${p}'`, p); + if (this.listings.has(resolvedP)) + throw EISDIR(`unlink '${p}'`); + const index = this.entries.get(resolvedP); + if (typeof index === `undefined`) + throw EINVAL(`unlink '${p}'`); + this.deleteEntry(resolvedP, index); + } + async utimesPromise(p, atime, mtime) { + return this.utimesSync(p, atime, mtime); + } + utimesSync(p, atime, mtime) { + if (this.readOnly) + throw EROFS(`utimes '${p}'`); + const resolvedP = this.resolveFilename(`utimes '${p}'`, p); + this.utimesImpl(resolvedP, mtime); + } + async lutimesPromise(p, atime, mtime) { + return this.lutimesSync(p, atime, mtime); + } + lutimesSync(p, atime, mtime) { + if (this.readOnly) + throw EROFS(`lutimes '${p}'`); + const resolvedP = this.resolveFilename(`utimes '${p}'`, p, false); + this.utimesImpl(resolvedP, mtime); + } + utimesImpl(resolvedP, mtime) { + if (this.listings.has(resolvedP)) { + if (!this.entries.has(resolvedP)) + this.hydrateDirectory(resolvedP); + } + const entry = this.entries.get(resolvedP); + if (entry === void 0) + throw new Error(`Unreachable`); + this.zipImpl.setMtime(entry, toUnixTimestamp(mtime)); + } + async mkdirPromise(p, opts) { + return this.mkdirSync(p, opts); + } + mkdirSync(p, { mode = 493, recursive = false } = {}) { + if (recursive) + return this.mkdirpSync(p, { chmod: mode }); + if (this.readOnly) + throw EROFS(`mkdir '${p}'`); + const resolvedP = this.resolveFilename(`mkdir '${p}'`, p); + if (this.entries.has(resolvedP) || this.listings.has(resolvedP)) + throw EEXIST(`mkdir '${p}'`); + this.hydrateDirectory(resolvedP); + this.chmodSync(resolvedP, mode); + return void 0; + } + async rmdirPromise(p, opts) { + return this.rmdirSync(p, opts); + } + rmdirSync(p, { recursive = false } = {}) { + if (this.readOnly) + throw EROFS(`rmdir '${p}'`); + if (recursive) { + this.removeSync(p); + return; + } + const resolvedP = this.resolveFilename(`rmdir '${p}'`, p); + const directoryListing = this.listings.get(resolvedP); + if (!directoryListing) + throw ENOTDIR(`rmdir '${p}'`); + if (directoryListing.size > 0) + throw ENOTEMPTY(`rmdir '${p}'`); + const index = this.entries.get(resolvedP); + if (typeof index === `undefined`) + throw EINVAL(`rmdir '${p}'`); + this.deleteEntry(p, index); + } + async rmPromise(p, opts) { + return this.rmSync(p, opts); + } + rmSync(p, { recursive = false } = {}) { + if (this.readOnly) + throw EROFS(`rm '${p}'`); + if (recursive) { + this.removeSync(p); + return; + } + const resolvedP = this.resolveFilename(`rm '${p}'`, p); + const directoryListing = this.listings.get(resolvedP); + if (!directoryListing) + throw ENOTDIR(`rm '${p}'`); + if (directoryListing.size > 0) + throw ENOTEMPTY(`rm '${p}'`); + const index = this.entries.get(resolvedP); + if (typeof index === `undefined`) + throw EINVAL(`rm '${p}'`); + this.deleteEntry(p, index); + } + hydrateDirectory(resolvedP) { + const index = this.zipImpl.addDirectory(ppath.relative(PortablePath.root, resolvedP)); + this.registerListing(resolvedP); + this.registerEntry(resolvedP, index); + return index; + } + async linkPromise(existingP, newP) { + return this.linkSync(existingP, newP); + } + linkSync(existingP, newP) { + throw EOPNOTSUPP(`link '${existingP}' -> '${newP}'`); + } + async symlinkPromise(target, p) { + return this.symlinkSync(target, p); + } + symlinkSync(target, p) { + if (this.readOnly) + throw EROFS(`symlink '${target}' -> '${p}'`); + const resolvedP = this.resolveFilename(`symlink '${target}' -> '${p}'`, p); + if (this.listings.has(resolvedP)) + throw EISDIR(`symlink '${target}' -> '${p}'`); + if (this.entries.has(resolvedP)) + throw EEXIST(`symlink '${target}' -> '${p}'`); + const index = this.setFileSource(resolvedP, target); + this.registerEntry(resolvedP, index); + this.zipImpl.setExternalAttributes(index, ZIP_UNIX, (fs.constants.S_IFLNK | 511) << 16); + this.symlinkCount += 1; + } + async readFilePromise(p, encoding) { + if (typeof encoding === `object`) + encoding = encoding ? encoding.encoding : void 0; + const data = await this.readFileBuffer(p, { asyncDecompress: true }); + return encoding ? data.toString(encoding) : data; + } + readFileSync(p, encoding) { + if (typeof encoding === `object`) + encoding = encoding ? encoding.encoding : void 0; + const data = this.readFileBuffer(p); + return encoding ? data.toString(encoding) : data; + } + readFileBuffer(p, opts = { asyncDecompress: false }) { + if (typeof p === `number`) + p = this.fdToPath(p, `read`); + const resolvedP = this.resolveFilename(`open '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`open '${p}'`); + if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) + throw ENOTDIR(`open '${p}'`); + if (this.listings.has(resolvedP)) + throw EISDIR(`read`); + const entry = this.entries.get(resolvedP); + if (entry === void 0) + throw new Error(`Unreachable`); + return this.getFileSource(entry, opts); + } + async readdirPromise(p, opts) { + return this.readdirSync(p, opts); + } + readdirSync(p, opts) { + const resolvedP = this.resolveFilename(`scandir '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`scandir '${p}'`); + const directoryListing = this.listings.get(resolvedP); + if (!directoryListing) + throw ENOTDIR(`scandir '${p}'`); + if (opts?.recursive) { + if (opts?.withFileTypes) { + const entries = Array.from(directoryListing, (name) => { + return Object.assign(this.statImpl(`lstat`, ppath.join(p, name)), { + name, + path: PortablePath.dot + }); + }); + for (const entry of entries) { + if (!entry.isDirectory()) + continue; + const subPath = ppath.join(entry.path, entry.name); + const subListing = this.listings.get(ppath.join(resolvedP, subPath)); + for (const child of subListing) { + entries.push(Object.assign(this.statImpl(`lstat`, ppath.join(p, subPath, child)), { + name: child, + path: subPath + })); + } + } + return entries; + } else { + const entries = [...directoryListing]; + for (const subPath of entries) { + const subListing = this.listings.get(ppath.join(resolvedP, subPath)); + if (typeof subListing === `undefined`) + continue; + for (const child of subListing) { + entries.push(ppath.join(subPath, child)); + } + } + return entries; + } + } else if (opts?.withFileTypes) { + return Array.from(directoryListing, (name) => { + return Object.assign(this.statImpl(`lstat`, ppath.join(p, name)), { + name, + path: void 0 + }); + }); + } else { + return [...directoryListing]; + } + } + async readlinkPromise(p) { + const entry = this.prepareReadlink(p); + return (await this.getFileSource(entry, { asyncDecompress: true })).toString(); + } + readlinkSync(p) { + const entry = this.prepareReadlink(p); + return this.getFileSource(entry).toString(); + } + prepareReadlink(p) { + const resolvedP = this.resolveFilename(`readlink '${p}'`, p, false); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`readlink '${p}'`); + if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) + throw ENOTDIR(`open '${p}'`); + if (this.listings.has(resolvedP)) + throw EINVAL(`readlink '${p}'`); + const entry = this.entries.get(resolvedP); + if (entry === void 0) + throw new Error(`Unreachable`); + if (!this.isSymbolicLink(entry)) + throw EINVAL(`readlink '${p}'`); + return entry; + } + async truncatePromise(p, len = 0) { + const resolvedP = this.resolveFilename(`open '${p}'`, p); + const index = this.entries.get(resolvedP); + if (typeof index === `undefined`) + throw EINVAL(`open '${p}'`); + const source = await this.getFileSource(index, { asyncDecompress: true }); + const truncated = Buffer.alloc(len, 0); + source.copy(truncated); + return await this.writeFilePromise(p, truncated); + } + truncateSync(p, len = 0) { + const resolvedP = this.resolveFilename(`open '${p}'`, p); + const index = this.entries.get(resolvedP); + if (typeof index === `undefined`) + throw EINVAL(`open '${p}'`); + const source = this.getFileSource(index); + const truncated = Buffer.alloc(len, 0); + source.copy(truncated); + return this.writeFileSync(p, truncated); + } + async ftruncatePromise(fd, len) { + return this.truncatePromise(this.fdToPath(fd, `ftruncate`), len); + } + ftruncateSync(fd, len) { + return this.truncateSync(this.fdToPath(fd, `ftruncateSync`), len); + } + watch(p, a, b) { + let persistent; + switch (typeof a) { + case `function`: + case `string`: + case `undefined`: + { + persistent = true; + } + break; + default: + { + ({ persistent = true } = a); + } + break; + } + if (!persistent) + return { on: () => { + }, close: () => { + } }; + const interval = setInterval(() => { + }, 24 * 60 * 60 * 1e3); + return { + on: () => { + }, + close: () => { + clearInterval(interval); + } + }; + } + watchFile(p, a, b) { + const resolvedP = ppath.resolve(PortablePath.root, p); + return watchFile(this, resolvedP, a, b); + } + unwatchFile(p, cb) { + const resolvedP = ppath.resolve(PortablePath.root, p); + return unwatchFile(this, resolvedP, cb); + } +} + +const SIGNATURE = { + CENTRAL_DIRECTORY: 33639248, + END_OF_CENTRAL_DIRECTORY: 101010256 +}; +const noCommentCDSize = 22; +class JsZipImpl { + fd; + baseFs; + entries; + filesShouldBeCached = false; + constructor(opts) { + if (`buffer` in opts) + throw new Error(`Buffer based zip archives are not supported`); + if (!opts.readOnly) + throw new Error(`Writable zip archives are not supported`); + this.baseFs = opts.baseFs; + this.fd = this.baseFs.openSync(opts.path, `r`); + try { + this.entries = JsZipImpl.readZipSync(this.fd, this.baseFs, opts.size); + } catch (error) { + this.baseFs.closeSync(this.fd); + this.fd = `closed`; + throw error; + } + } + static readZipSync(fd, baseFs, fileSize) { + if (fileSize < noCommentCDSize) + throw new Error(`Invalid ZIP file: EOCD not found`); + let eocdOffset = -1; + let eocdBuffer = Buffer.alloc(noCommentCDSize); + baseFs.readSync( + fd, + eocdBuffer, + 0, + noCommentCDSize, + fileSize - noCommentCDSize + ); + if (eocdBuffer.readUInt32LE(0) === SIGNATURE.END_OF_CENTRAL_DIRECTORY) { + eocdOffset = 0; + } else { + const bufferSize = Math.min(65557, fileSize); + eocdBuffer = Buffer.alloc(bufferSize); + baseFs.readSync( + fd, + eocdBuffer, + 0, + bufferSize, + Math.max(0, fileSize - bufferSize) + ); + for (let i = eocdBuffer.length - 4; i >= 0; i--) { + if (eocdBuffer.readUInt32LE(i) === SIGNATURE.END_OF_CENTRAL_DIRECTORY) { + eocdOffset = i; + break; + } + } + if (eocdOffset === -1) { + throw new Error(`Not a zip archive`); + } + } + const totalEntries = eocdBuffer.readUInt16LE(eocdOffset + 10); + const centralDirSize = eocdBuffer.readUInt32LE(eocdOffset + 12); + const centralDirOffset = eocdBuffer.readUInt32LE(eocdOffset + 16); + const commentLength = eocdBuffer.readUInt16LE(eocdOffset + 20); + if (eocdOffset + commentLength + noCommentCDSize > eocdBuffer.length) + throw new Error(`Zip archive inconsistent`); + if (totalEntries == 65535 || centralDirSize == 4294967295 || centralDirOffset == 4294967295) + throw new Error(`Zip 64 is not supported`); + if (centralDirSize > fileSize) + throw new Error(`Zip archive inconsistent`); + if (totalEntries > centralDirSize / 46) + throw new Error(`Zip archive inconsistent`); + const cdBuffer = Buffer.alloc(centralDirSize); + if (baseFs.readSync(fd, cdBuffer, 0, cdBuffer.length, centralDirOffset) !== cdBuffer.length) + throw new Error(`Zip archive inconsistent`); + const entries = []; + let offset = 0; + let index = 0; + let sumCompressedSize = 0; + while (index < totalEntries) { + if (offset + 46 > cdBuffer.length) + throw new Error(`Zip archive inconsistent`); + if (cdBuffer.readUInt32LE(offset) !== SIGNATURE.CENTRAL_DIRECTORY) + throw new Error(`Zip archive inconsistent`); + const versionMadeBy = cdBuffer.readUInt16LE(offset + 4); + const os = versionMadeBy >>> 8; + const flags = cdBuffer.readUInt16LE(offset + 8); + if ((flags & 1) !== 0) + throw new Error(`Encrypted zip files are not supported`); + const compressionMethod = cdBuffer.readUInt16LE(offset + 10); + const crc = cdBuffer.readUInt32LE(offset + 16); + const nameLength = cdBuffer.readUInt16LE(offset + 28); + const extraLength = cdBuffer.readUInt16LE(offset + 30); + const commentLength2 = cdBuffer.readUInt16LE(offset + 32); + const localHeaderOffset = cdBuffer.readUInt32LE(offset + 42); + const name = cdBuffer.toString(`utf8`, offset + 46, offset + 46 + nameLength).replaceAll(`\0`, ` `); + if (name.includes(`\0`)) + throw new Error(`Invalid ZIP file`); + const compressedSize = cdBuffer.readUInt32LE(offset + 20); + const externalAttributes = cdBuffer.readUInt32LE(offset + 38); + entries.push({ + name, + os, + mtime: SAFE_TIME, + //we dont care, + crc, + compressionMethod, + isSymbolicLink: os === ZIP_UNIX && (externalAttributes >>> 16 & S_IFMT) === S_IFLNK, + size: cdBuffer.readUInt32LE(offset + 24), + compressedSize, + externalAttributes, + localHeaderOffset + }); + sumCompressedSize += compressedSize; + index += 1; + offset += 46 + nameLength + extraLength + commentLength2; + } + if (sumCompressedSize > fileSize) + throw new Error(`Zip archive inconsistent`); + if (offset !== cdBuffer.length) + throw new Error(`Zip archive inconsistent`); + return entries; + } + getExternalAttributes(index) { + const entry = this.entries[index]; + return [entry.os, entry.externalAttributes]; + } + getListings() { + return this.entries.map((e) => e.name); + } + getSymlinkCount() { + let count = 0; + for (const entry of this.entries) + if (entry.isSymbolicLink) + count += 1; + return count; + } + stat(index) { + const entry = this.entries[index]; + return { + crc: entry.crc, + mtime: entry.mtime, + size: entry.size + }; + } + locate(name) { + for (let ind = 0; ind < this.entries.length; ind++) + if (this.entries[ind].name === name) + return ind; + return -1; + } + getFileSource(index) { + if (this.fd === `closed`) + throw new Error(`ZIP file is closed`); + const entry = this.entries[index]; + const localHeaderBuf = Buffer.alloc(30); + this.baseFs.readSync( + this.fd, + localHeaderBuf, + 0, + localHeaderBuf.length, + entry.localHeaderOffset + ); + const nameLength = localHeaderBuf.readUInt16LE(26); + const extraLength = localHeaderBuf.readUInt16LE(28); + const buffer = Buffer.alloc(entry.compressedSize); + if (this.baseFs.readSync(this.fd, buffer, 0, entry.compressedSize, entry.localHeaderOffset + 30 + nameLength + extraLength) !== entry.compressedSize) + throw new Error(`Invalid ZIP file`); + return { data: buffer, compressionMethod: entry.compressionMethod }; + } + discard() { + if (this.fd !== `closed`) { + this.baseFs.closeSync(this.fd); + this.fd = `closed`; + } + } + addDirectory(path) { + throw new Error(`Not implemented`); + } + deleteEntry(index) { + throw new Error(`Not implemented`); + } + setMtime(index, mtime) { + throw new Error(`Not implemented`); + } + getBufferAndClose() { + throw new Error(`Not implemented`); + } + setFileSource(target, compression, buffer) { + throw new Error(`Not implemented`); + } + setExternalAttributes(index, opsys, attributes) { + throw new Error(`Not implemented`); + } +} + +setFactory(() => { + const emZip = createModule(); + return makeInterface(emZip); +}); + +var ErrorCode = /* @__PURE__ */ ((ErrorCode2) => { + ErrorCode2["API_ERROR"] = `API_ERROR`; + ErrorCode2["BUILTIN_NODE_RESOLUTION_FAILED"] = `BUILTIN_NODE_RESOLUTION_FAILED`; + ErrorCode2["EXPORTS_RESOLUTION_FAILED"] = `EXPORTS_RESOLUTION_FAILED`; + ErrorCode2["MISSING_DEPENDENCY"] = `MISSING_DEPENDENCY`; + ErrorCode2["MISSING_PEER_DEPENDENCY"] = `MISSING_PEER_DEPENDENCY`; + ErrorCode2["QUALIFIED_PATH_RESOLUTION_FAILED"] = `QUALIFIED_PATH_RESOLUTION_FAILED`; + ErrorCode2["INTERNAL"] = `INTERNAL`; + ErrorCode2["UNDECLARED_DEPENDENCY"] = `UNDECLARED_DEPENDENCY`; + ErrorCode2["UNSUPPORTED"] = `UNSUPPORTED`; + return ErrorCode2; +})(ErrorCode || {}); +const MODULE_NOT_FOUND_ERRORS = /* @__PURE__ */ new Set([ + "BUILTIN_NODE_RESOLUTION_FAILED" /* BUILTIN_NODE_RESOLUTION_FAILED */, + "MISSING_DEPENDENCY" /* MISSING_DEPENDENCY */, + "MISSING_PEER_DEPENDENCY" /* MISSING_PEER_DEPENDENCY */, + "QUALIFIED_PATH_RESOLUTION_FAILED" /* QUALIFIED_PATH_RESOLUTION_FAILED */, + "UNDECLARED_DEPENDENCY" /* UNDECLARED_DEPENDENCY */ +]); +function makeError(pnpCode, message, data = {}, code) { + code ??= MODULE_NOT_FOUND_ERRORS.has(pnpCode) ? `MODULE_NOT_FOUND` : pnpCode; + const propertySpec = { + configurable: true, + writable: true, + enumerable: false + }; + return Object.defineProperties(new Error(message), { + code: { + ...propertySpec, + value: code + }, + pnpCode: { + ...propertySpec, + value: pnpCode + }, + data: { + ...propertySpec, + value: data + } + }); +} +function getIssuerModule(parent) { + let issuer = parent; + while (issuer && (issuer.id === `[eval]` || issuer.id === `` || !issuer.filename)) + issuer = issuer.parent; + return issuer || null; +} +function getPathForDisplay(p) { + return npath.normalize(npath.fromPortablePath(p)); +} + +const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10)); +const WATCH_MODE_MESSAGE_USES_ARRAYS = major > 19 || major === 19 && minor >= 2 || major === 18 && minor >= 13; + +function readPackageScope(checkPath) { + const rootSeparatorIndex = checkPath.indexOf(npath.sep); + let separatorIndex; + do { + separatorIndex = checkPath.lastIndexOf(npath.sep); + checkPath = checkPath.slice(0, separatorIndex); + if (checkPath.endsWith(`${npath.sep}node_modules`)) + return false; + const pjson = readPackage(checkPath + npath.sep); + if (pjson) { + return { + data: pjson, + path: checkPath + }; + } + } while (separatorIndex > rootSeparatorIndex); + return false; +} +function readPackage(requestPath) { + const jsonPath = npath.resolve(requestPath, `package.json`); + if (!fs__default.default.existsSync(jsonPath)) + return null; + return JSON.parse(fs__default.default.readFileSync(jsonPath, `utf8`)); +} +function ERR_REQUIRE_ESM(filename, parentPath = null) { + const basename = parentPath && path__default.default.basename(filename) === path__default.default.basename(parentPath) ? filename : path__default.default.basename(filename); + const msg = `require() of ES Module ${filename}${parentPath ? ` from ${parentPath}` : ``} not supported. +Instead change the require of ${basename} in ${parentPath} to a dynamic import() which is available in all CommonJS modules.`; + const err = new Error(msg); + err.code = `ERR_REQUIRE_ESM`; + return err; +} +function reportRequiredFilesToWatchMode(files) { + if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) { + files = files.map((filename) => npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename)))); + if (WATCH_MODE_MESSAGE_USES_ARRAYS) { + process.send({ "watch:require": files }); + } else { + for (const filename of files) { + process.send({ "watch:require": filename }); + } + } + } +} + +function applyPatch(pnpapi, opts) { + let enableNativeHooks = true; + process.versions.pnp = String(pnpapi.VERSIONS.std); + const moduleExports = require$$0__default.default; + moduleExports.findPnpApi = (lookupSource) => { + const lookupPath = lookupSource instanceof URL ? url.fileURLToPath(lookupSource) : lookupSource; + const apiPath = opts.manager.findApiPathFor(lookupPath); + if (apiPath === null) + return null; + const apiEntry = opts.manager.getApiEntry(apiPath, true); + return apiEntry.instance.findPackageLocator(lookupPath) ? apiEntry.instance : null; + }; + function getRequireStack(parent) { + const requireStack = []; + for (let cursor = parent; cursor; cursor = cursor.parent) + requireStack.push(cursor.filename || cursor.id); + return requireStack; + } + const originalModuleLoad = require$$0.Module._load; + require$$0.Module._load = function(request, parent, isMain) { + if (request === `pnpapi`) { + const parentApiPath = opts.manager.getApiPathFromParent(parent); + if (parentApiPath) { + return opts.manager.getApiEntry(parentApiPath, true).instance; + } + } + return originalModuleLoad.call(require$$0.Module, request, parent, isMain); + }; + function getIssuerSpecsFromPaths(paths) { + return paths.map((path) => ({ + apiPath: opts.manager.findApiPathFor(path), + path, + module: null + })); + } + function getIssuerSpecsFromModule(module) { + if (module && module.id !== `` && module.id !== `internal/preload` && !module.parent && !module.filename && module.paths.length > 0) { + return [{ + apiPath: opts.manager.findApiPathFor(module.paths[0]), + path: module.paths[0], + module + }]; + } + const issuer = getIssuerModule(module); + if (issuer !== null) { + const path = npath.dirname(issuer.filename); + const apiPath = opts.manager.getApiPathFromParent(issuer); + return [{ apiPath, path, module }]; + } else { + const path = process.cwd(); + const apiPath = opts.manager.findApiPathFor(npath.join(path, `[file]`)) ?? opts.manager.getApiPathFromParent(null); + return [{ apiPath, path, module }]; + } + } + function makeFakeParent(path) { + const fakeParent = new require$$0.Module(``); + const fakeFilePath = npath.join(path, `[file]`); + fakeParent.paths = require$$0.Module._nodeModulePaths(fakeFilePath); + return fakeParent; + } + const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:@[^/]+\/)?[^/]+)\/*(.*|)$/; + const originalModuleResolveFilename = require$$0.Module._resolveFilename; + require$$0.Module._resolveFilename = function(request, parent, isMain, options) { + if (require$$0.isBuiltin(request)) + return request; + if (!enableNativeHooks) + return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, options); + if (options && options.plugnplay === false) { + const { plugnplay, ...forwardedOptions } = options; + try { + enableNativeHooks = false; + return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, forwardedOptions); + } finally { + enableNativeHooks = true; + } + } + if (options) { + const optionNames = new Set(Object.keys(options)); + optionNames.delete(`paths`); + optionNames.delete(`plugnplay`); + if (optionNames.size > 0) { + throw makeError( + ErrorCode.UNSUPPORTED, + `Some options passed to require() aren't supported by PnP yet (${Array.from(optionNames).join(`, `)})` + ); + } + } + const issuerSpecs = options && options.paths ? getIssuerSpecsFromPaths(options.paths) : getIssuerSpecsFromModule(parent); + if (request.match(pathRegExp) === null) { + const parentDirectory = parent?.filename != null ? npath.dirname(parent.filename) : null; + const absoluteRequest = npath.isAbsolute(request) ? request : parentDirectory !== null ? npath.resolve(parentDirectory, request) : null; + if (absoluteRequest !== null) { + const apiPath = parent && parentDirectory === npath.dirname(absoluteRequest) ? opts.manager.getApiPathFromParent(parent) : opts.manager.findApiPathFor(absoluteRequest); + if (apiPath !== null) { + issuerSpecs.unshift({ + apiPath, + path: parentDirectory, + module: null + }); + } + } + } + let firstError; + for (const { apiPath, path, module } of issuerSpecs) { + let resolution; + const issuerApi = apiPath !== null ? opts.manager.getApiEntry(apiPath, true).instance : null; + try { + if (issuerApi !== null) { + resolution = issuerApi.resolveRequest(request, path !== null ? `${path}/` : null); + } else { + if (path === null) + throw new Error(`Assertion failed: Expected the path to be set`); + resolution = originalModuleResolveFilename.call(require$$0.Module, request, module || makeFakeParent(path), isMain); + } + } catch (error) { + firstError = firstError || error; + continue; + } + if (resolution !== null) { + return resolution; + } + } + const requireStack = getRequireStack(parent); + Object.defineProperty(firstError, `requireStack`, { + configurable: true, + writable: true, + enumerable: false, + value: requireStack + }); + if (requireStack.length > 0) + firstError.message += ` +Require stack: +- ${requireStack.join(` +- `)}`; + if (typeof firstError.pnpCode === `string`) + Error.captureStackTrace(firstError); + throw firstError; + }; + const originalFindPath = require$$0.Module._findPath; + require$$0.Module._findPath = function(request, paths, isMain) { + if (request === `pnpapi`) + return false; + if (!enableNativeHooks) + return originalFindPath.call(require$$0.Module, request, paths, isMain); + const isAbsolute = npath.isAbsolute(request); + if (isAbsolute) + paths = [``]; + else if (!paths || paths.length === 0) + return false; + for (const path of paths) { + let resolution; + try { + const pnpApiPath = opts.manager.findApiPathFor(isAbsolute ? request : path); + if (pnpApiPath !== null) { + const api = opts.manager.getApiEntry(pnpApiPath, true).instance; + resolution = api.resolveRequest(request, path) || false; + } else { + resolution = originalFindPath.call(require$$0.Module, request, [path], isMain); + } + } catch { + continue; + } + if (resolution) { + return resolution; + } + } + return false; + }; + if (!process.features.require_module) { + const originalExtensionJSFunction = require$$0.Module._extensions[`.js`]; + require$$0.Module._extensions[`.js`] = function(module, filename) { + if (filename.endsWith(`.js`)) { + const pkg = readPackageScope(filename); + if (pkg && pkg.data?.type === `module`) { + const err = ERR_REQUIRE_ESM(filename, module.parent?.filename); + Error.captureStackTrace(err); + throw err; + } + } + originalExtensionJSFunction.call(this, module, filename); + }; + } + const originalDlopen = process.dlopen; + process.dlopen = function(...args) { + const [module, filename, ...rest] = args; + return originalDlopen.call( + this, + module, + npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename))), + ...rest + ); + }; + const originalEmit = process.emit; + process.emit = function(name, data, ...args) { + if (name === `warning` && typeof data === `object` && data.name === `ExperimentalWarning` && (data.message.includes(`--experimental-loader`) || data.message.includes(`Custom ESM Loaders is an experimental feature`))) + return false; + return originalEmit.apply(process, arguments); + }; + patchFs(fs__default.default, new PosixFS(opts.fakeFs)); +} + +function hydrateRuntimeState(data, { basePath }) { + const portablePath = npath.toPortablePath(basePath); + const absolutePortablePath = ppath.resolve(portablePath); + const ignorePattern = data.ignorePatternData !== null ? new RegExp(data.ignorePatternData) : null; + const packageLocatorsByLocations = /* @__PURE__ */ new Map(); + const packageRegistry = new Map(data.packageRegistryData.map(([packageName, packageStoreData]) => { + return [packageName, new Map(packageStoreData.map(([packageReference, packageInformationData]) => { + if (packageName === null !== (packageReference === null)) + throw new Error(`Assertion failed: The name and reference should be null, or neither should`); + const discardFromLookup = packageInformationData.discardFromLookup ?? false; + const packageLocator = { name: packageName, reference: packageReference }; + const entry = packageLocatorsByLocations.get(packageInformationData.packageLocation); + if (!entry) { + packageLocatorsByLocations.set(packageInformationData.packageLocation, { locator: packageLocator, discardFromLookup }); + } else { + entry.discardFromLookup = entry.discardFromLookup && discardFromLookup; + if (!discardFromLookup) { + entry.locator = packageLocator; + } + } + let resolvedPackageLocation = null; + return [packageReference, { + packageDependencies: new Map(packageInformationData.packageDependencies), + packagePeers: new Set(packageInformationData.packagePeers), + linkType: packageInformationData.linkType, + discardFromLookup, + // we only need this for packages that are used by the currently running script + // this is a lazy getter because `ppath.join` has some overhead + get packageLocation() { + return resolvedPackageLocation || (resolvedPackageLocation = ppath.join(absolutePortablePath, packageInformationData.packageLocation)); + } + }]; + }))]; + })); + const fallbackExclusionList = new Map(data.fallbackExclusionList.map(([packageName, packageReferences]) => { + return [packageName, new Set(packageReferences)]; + })); + const fallbackPool = new Map(data.fallbackPool); + const dependencyTreeRoots = data.dependencyTreeRoots; + const enableTopLevelFallback = data.enableTopLevelFallback; + return { + basePath: portablePath, + dependencyTreeRoots, + enableTopLevelFallback, + fallbackExclusionList, + pnpZipBackend: data.pnpZipBackend, + fallbackPool, + ignorePattern, + packageLocatorsByLocations, + packageRegistry + }; +} + +const ArrayIsArray = Array.isArray; +const JSONStringify = JSON.stringify; +const ObjectGetOwnPropertyNames = Object.getOwnPropertyNames; +const ObjectPrototypeHasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); +const RegExpPrototypeExec = (obj, string) => RegExp.prototype.exec.call(obj, string); +const RegExpPrototypeSymbolReplace = (obj, ...rest) => RegExp.prototype[Symbol.replace].apply(obj, rest); +const StringPrototypeEndsWith = (str, ...rest) => String.prototype.endsWith.apply(str, rest); +const StringPrototypeIncludes = (str, ...rest) => String.prototype.includes.apply(str, rest); +const StringPrototypeLastIndexOf = (str, ...rest) => String.prototype.lastIndexOf.apply(str, rest); +const StringPrototypeIndexOf = (str, ...rest) => String.prototype.indexOf.apply(str, rest); +const StringPrototypeReplace = (str, ...rest) => String.prototype.replace.apply(str, rest); +const StringPrototypeSlice = (str, ...rest) => String.prototype.slice.apply(str, rest); +const StringPrototypeStartsWith = (str, ...rest) => String.prototype.startsWith.apply(str, rest); +const SafeMap = Map; +const JSONParse = JSON.parse; + +function createErrorType(code, messageCreator, errorType) { + return class extends errorType { + constructor(...args) { + super(messageCreator(...args)); + this.code = code; + this.name = `${errorType.name} [${code}]`; + } + }; +} +const ERR_PACKAGE_IMPORT_NOT_DEFINED = createErrorType( + `ERR_PACKAGE_IMPORT_NOT_DEFINED`, + (specifier, packagePath, base) => { + return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ``} imported from ${base}`; + }, + TypeError +); +const ERR_INVALID_MODULE_SPECIFIER = createErrorType( + `ERR_INVALID_MODULE_SPECIFIER`, + (request, reason, base = void 0) => { + return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ``}`; + }, + TypeError +); +const ERR_INVALID_PACKAGE_TARGET = createErrorType( + `ERR_INVALID_PACKAGE_TARGET`, + (pkgPath, key, target, isImport = false, base = void 0) => { + const relError = typeof target === `string` && !isImport && target.length && !StringPrototypeStartsWith(target, `./`); + if (key === `.`) { + assert__default.default(isImport === false); + return `Invalid "exports" main target ${JSONStringify(target)} defined in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; + } + return `Invalid "${isImport ? `imports` : `exports`}" target ${JSONStringify( + target + )} defined for '${key}' in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; + }, + Error +); +const ERR_INVALID_PACKAGE_CONFIG = createErrorType( + `ERR_INVALID_PACKAGE_CONFIG`, + (path, base, message) => { + return `Invalid package config ${path}${base ? ` while importing ${base}` : ``}${message ? `. ${message}` : ``}`; + }, + Error +); +const ERR_PACKAGE_PATH_NOT_EXPORTED = createErrorType( + "ERR_PACKAGE_PATH_NOT_EXPORTED", + (pkgPath, subpath, base = void 0) => { + if (subpath === ".") + return `No "exports" main defined in ${pkgPath}package.json${base ? ` imported from ${base}` : ""}`; + return `Package subpath '${subpath}' is not defined by "exports" in ${pkgPath}package.json${base ? ` imported from ${base}` : ""}`; + }, + Error +); + +function filterOwnProperties(source, keys) { + const filtered = /* @__PURE__ */ Object.create(null); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (ObjectPrototypeHasOwnProperty(source, key)) { + filtered[key] = source[key]; + } + } + return filtered; +} + +const packageJSONCache = new SafeMap(); +function getPackageConfig(path, specifier, base, readFileSyncFn) { + const existing = packageJSONCache.get(path); + if (existing !== void 0) { + return existing; + } + const source = readFileSyncFn(path); + if (source === void 0) { + const packageConfig2 = { + pjsonPath: path, + exists: false, + main: void 0, + name: void 0, + type: "none", + exports: void 0, + imports: void 0 + }; + packageJSONCache.set(path, packageConfig2); + return packageConfig2; + } + let packageJSON; + try { + packageJSON = JSONParse(source); + } catch (error) { + throw new ERR_INVALID_PACKAGE_CONFIG( + path, + (base ? `"${specifier}" from ` : "") + url.fileURLToPath(base || specifier), + error.message + ); + } + let { imports, main, name, type } = filterOwnProperties(packageJSON, [ + "imports", + "main", + "name", + "type" + ]); + const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") ? packageJSON.exports : void 0; + if (typeof imports !== "object" || imports === null) { + imports = void 0; + } + if (typeof main !== "string") { + main = void 0; + } + if (typeof name !== "string") { + name = void 0; + } + if (type !== "module" && type !== "commonjs") { + type = "none"; + } + const packageConfig = { + pjsonPath: path, + exists: true, + main, + name, + type, + exports, + imports + }; + packageJSONCache.set(path, packageConfig); + return packageConfig; +} +function getPackageScopeConfig(resolved, readFileSyncFn) { + let packageJSONUrl = new URL("./package.json", resolved); + while (true) { + const packageJSONPath2 = packageJSONUrl.pathname; + if (StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json")) { + break; + } + const packageConfig2 = getPackageConfig( + url.fileURLToPath(packageJSONUrl), + resolved, + void 0, + readFileSyncFn + ); + if (packageConfig2.exists) { + return packageConfig2; + } + const lastPackageJSONUrl = packageJSONUrl; + packageJSONUrl = new URL("../package.json", packageJSONUrl); + if (packageJSONUrl.pathname === lastPackageJSONUrl.pathname) { + break; + } + } + const packageJSONPath = url.fileURLToPath(packageJSONUrl); + const packageConfig = { + pjsonPath: packageJSONPath, + exists: false, + main: void 0, + name: void 0, + type: "none", + exports: void 0, + imports: void 0 + }; + packageJSONCache.set(packageJSONPath, packageConfig); + return packageConfig; +} + +function throwImportNotDefined(specifier, packageJSONUrl, base) { + throw new ERR_PACKAGE_IMPORT_NOT_DEFINED( + specifier, + packageJSONUrl && url.fileURLToPath(new URL(".", packageJSONUrl)), + url.fileURLToPath(base) + ); +} +function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) { + const reason = `request is not a valid subpath for the "${internal ? "imports" : "exports"}" resolution of ${url.fileURLToPath(packageJSONUrl)}`; + throw new ERR_INVALID_MODULE_SPECIFIER( + subpath, + reason, + base && url.fileURLToPath(base) + ); +} +function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, base) { + if (typeof target === "object" && target !== null) { + target = JSONStringify(target, null, ""); + } else { + target = `${target}`; + } + throw new ERR_INVALID_PACKAGE_TARGET( + url.fileURLToPath(new URL(".", packageJSONUrl)), + subpath, + target, + internal, + base && url.fileURLToPath(base) + ); +} +const invalidSegmentRegEx = /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i; +const patternRegEx = /\*/g; +function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base, pattern, internal, conditions) { + if (subpath !== "" && !pattern && target[target.length - 1] !== "/") + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + if (!StringPrototypeStartsWith(target, "./")) { + if (internal && !StringPrototypeStartsWith(target, "../") && !StringPrototypeStartsWith(target, "/")) { + let isURL = false; + try { + new URL(target); + isURL = true; + } catch { + } + if (!isURL) { + const exportTarget = pattern ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) : target + subpath; + return exportTarget; + } + } + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + } + if (RegExpPrototypeExec( + invalidSegmentRegEx, + StringPrototypeSlice(target, 2) + ) !== null) + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + const resolved = new URL(target, packageJSONUrl); + const resolvedPath = resolved.pathname; + const packagePath = new URL(".", packageJSONUrl).pathname; + if (!StringPrototypeStartsWith(resolvedPath, packagePath)) + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + if (subpath === "") return resolved; + if (RegExpPrototypeExec(invalidSegmentRegEx, subpath) !== null) { + const request = pattern ? StringPrototypeReplace(match, "*", () => subpath) : match + subpath; + throwInvalidSubpath(request, packageJSONUrl, internal, base); + } + if (pattern) { + return new URL( + RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath) + ); + } + return new URL(subpath, resolved); +} +function isArrayIndex(key) { + const keyNum = +key; + if (`${keyNum}` !== key) return false; + return keyNum >= 0 && keyNum < 4294967295; +} +function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, base, pattern, internal, conditions) { + if (typeof target === "string") { + return resolvePackageTargetString( + target, + subpath, + packageSubpath, + packageJSONUrl, + base, + pattern, + internal); + } else if (ArrayIsArray(target)) { + if (target.length === 0) { + return null; + } + let lastException; + for (let i = 0; i < target.length; i++) { + const targetItem = target[i]; + let resolveResult; + try { + resolveResult = resolvePackageTarget( + packageJSONUrl, + targetItem, + subpath, + packageSubpath, + base, + pattern, + internal, + conditions + ); + } catch (e) { + lastException = e; + if (e.code === "ERR_INVALID_PACKAGE_TARGET") { + continue; + } + throw e; + } + if (resolveResult === void 0) { + continue; + } + if (resolveResult === null) { + lastException = null; + continue; + } + return resolveResult; + } + if (lastException === void 0 || lastException === null) + return lastException; + throw lastException; + } else if (typeof target === "object" && target !== null) { + const keys = ObjectGetOwnPropertyNames(target); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (isArrayIndex(key)) { + throw new ERR_INVALID_PACKAGE_CONFIG( + url.fileURLToPath(packageJSONUrl), + base, + '"exports" cannot contain numeric property keys.' + ); + } + } + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (key === "default" || conditions.has(key)) { + const conditionalTarget = target[key]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + conditionalTarget, + subpath, + packageSubpath, + base, + pattern, + internal, + conditions + ); + if (resolveResult === void 0) continue; + return resolveResult; + } + } + return void 0; + } else if (target === null) { + return null; + } + throwInvalidPackageTarget( + packageSubpath, + target, + packageJSONUrl, + internal, + base + ); +} +function patternKeyCompare(a, b) { + const aPatternIndex = StringPrototypeIndexOf(a, "*"); + const bPatternIndex = StringPrototypeIndexOf(b, "*"); + const baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1; + const baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1; + if (baseLenA > baseLenB) return -1; + if (baseLenB > baseLenA) return 1; + if (aPatternIndex === -1) return 1; + if (bPatternIndex === -1) return -1; + if (a.length > b.length) return -1; + if (b.length > a.length) return 1; + return 0; +} +function isConditionalExportsMainSugar(exports, packageJSONUrl, base) { + if (typeof exports === "string" || ArrayIsArray(exports)) return true; + if (typeof exports !== "object" || exports === null) return false; + const keys = ObjectGetOwnPropertyNames(exports); + let isConditionalSugar = false; + let i = 0; + for (let j = 0; j < keys.length; j++) { + const key = keys[j]; + const curIsConditionalSugar = key === "" || key[0] !== "."; + if (i++ === 0) { + isConditionalSugar = curIsConditionalSugar; + } else if (isConditionalSugar !== curIsConditionalSugar) { + throw new ERR_INVALID_PACKAGE_CONFIG( + url.fileURLToPath(packageJSONUrl), + base, + `"exports" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.` + ); + } + } + return isConditionalSugar; +} +function throwExportsNotFound(subpath, packageJSONUrl, base) { + throw new ERR_PACKAGE_PATH_NOT_EXPORTED( + url.fileURLToPath(new URL(".", packageJSONUrl)), + subpath, + base && url.fileURLToPath(base) + ); +} +const emittedPackageWarnings = /* @__PURE__ */ new Set(); +function emitTrailingSlashPatternDeprecation(match, pjsonUrl, base) { + const pjsonPath = url.fileURLToPath(pjsonUrl); + if (emittedPackageWarnings.has(pjsonPath + "|" + match)) return; + emittedPackageWarnings.add(pjsonPath + "|" + match); + process.emitWarning( + `Use of deprecated trailing slash pattern mapping "${match}" in the "exports" field module resolution of the package at ${pjsonPath}${base ? ` imported from ${url.fileURLToPath(base)}` : ""}. Mapping specifiers ending in "/" is no longer supported.`, + "DeprecationWarning", + "DEP0155" + ); +} +function packageExportsResolve({ + packageJSONUrl, + packageSubpath, + exports, + base, + conditions +}) { + if (isConditionalExportsMainSugar(exports, packageJSONUrl, base)) + exports = { ".": exports }; + if (ObjectPrototypeHasOwnProperty(exports, packageSubpath) && !StringPrototypeIncludes(packageSubpath, "*") && !StringPrototypeEndsWith(packageSubpath, "/")) { + const target = exports[packageSubpath]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + target, + "", + packageSubpath, + base, + false, + false, + conditions + ); + if (resolveResult == null) { + throwExportsNotFound(packageSubpath, packageJSONUrl, base); + } + return resolveResult; + } + let bestMatch = ""; + let bestMatchSubpath; + const keys = ObjectGetOwnPropertyNames(exports); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const patternIndex = StringPrototypeIndexOf(key, "*"); + if (patternIndex !== -1 && StringPrototypeStartsWith( + packageSubpath, + StringPrototypeSlice(key, 0, patternIndex) + )) { + if (StringPrototypeEndsWith(packageSubpath, "/")) + emitTrailingSlashPatternDeprecation( + packageSubpath, + packageJSONUrl, + base + ); + const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); + if (packageSubpath.length >= key.length && StringPrototypeEndsWith(packageSubpath, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) { + bestMatch = key; + bestMatchSubpath = StringPrototypeSlice( + packageSubpath, + patternIndex, + packageSubpath.length - patternTrailer.length + ); + } + } + } + if (bestMatch) { + const target = exports[bestMatch]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + target, + bestMatchSubpath, + bestMatch, + base, + true, + false, + conditions + ); + if (resolveResult == null) { + throwExportsNotFound(packageSubpath, packageJSONUrl, base); + } + return resolveResult; + } + throwExportsNotFound(packageSubpath, packageJSONUrl, base); +} +function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { + if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) { + const reason = "is not a valid internal imports specifier name"; + throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, url.fileURLToPath(base)); + } + let packageJSONUrl; + const packageConfig = getPackageScopeConfig(base, readFileSyncFn); + if (packageConfig.exists) { + packageJSONUrl = url.pathToFileURL(packageConfig.pjsonPath); + const imports = packageConfig.imports; + if (imports) { + if (ObjectPrototypeHasOwnProperty(imports, name) && !StringPrototypeIncludes(name, "*")) { + const resolveResult = resolvePackageTarget( + packageJSONUrl, + imports[name], + "", + name, + base, + false, + true, + conditions + ); + if (resolveResult != null) { + return resolveResult; + } + } else { + let bestMatch = ""; + let bestMatchSubpath; + const keys = ObjectGetOwnPropertyNames(imports); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const patternIndex = StringPrototypeIndexOf(key, "*"); + if (patternIndex !== -1 && StringPrototypeStartsWith( + name, + StringPrototypeSlice(key, 0, patternIndex) + )) { + const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); + if (name.length >= key.length && StringPrototypeEndsWith(name, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) { + bestMatch = key; + bestMatchSubpath = StringPrototypeSlice( + name, + patternIndex, + name.length - patternTrailer.length + ); + } + } + } + if (bestMatch) { + const target = imports[bestMatch]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + target, + bestMatchSubpath, + bestMatch, + base, + true, + true, + conditions + ); + if (resolveResult != null) { + return resolveResult; + } + } + } + } + } + throwImportNotDefined(name, packageJSONUrl, base); +} + +const flagSymbol = Symbol('arg flag'); + +class ArgError extends Error { + constructor(msg, code) { + super(msg); + this.name = 'ArgError'; + this.code = code; + + Object.setPrototypeOf(this, ArgError.prototype); + } +} + +function arg( + opts, + { + argv = process.argv.slice(2), + permissive = false, + stopAtPositional = false + } = {} +) { + if (!opts) { + throw new ArgError( + 'argument specification object is required', + 'ARG_CONFIG_NO_SPEC' + ); + } + + const result = { _: [] }; + + const aliases = {}; + const handlers = {}; + + for (const key of Object.keys(opts)) { + if (!key) { + throw new ArgError( + 'argument key cannot be an empty string', + 'ARG_CONFIG_EMPTY_KEY' + ); + } + + if (key[0] !== '-') { + throw new ArgError( + `argument key must start with '-' but found: '${key}'`, + 'ARG_CONFIG_NONOPT_KEY' + ); + } + + if (key.length === 1) { + throw new ArgError( + `argument key must have a name; singular '-' keys are not allowed: ${key}`, + 'ARG_CONFIG_NONAME_KEY' + ); + } + + if (typeof opts[key] === 'string') { + aliases[key] = opts[key]; + continue; + } + + let type = opts[key]; + let isFlag = false; + + if ( + Array.isArray(type) && + type.length === 1 && + typeof type[0] === 'function' + ) { + const [fn] = type; + type = (value, name, prev = []) => { + prev.push(fn(value, name, prev[prev.length - 1])); + return prev; + }; + isFlag = fn === Boolean || fn[flagSymbol] === true; + } else if (typeof type === 'function') { + isFlag = type === Boolean || type[flagSymbol] === true; + } else { + throw new ArgError( + `type missing or not a function or valid array type: ${key}`, + 'ARG_CONFIG_VAD_TYPE' + ); + } + + if (key[1] !== '-' && key.length > 2) { + throw new ArgError( + `short argument keys (with a single hyphen) must have only one character: ${key}`, + 'ARG_CONFIG_SHORTOPT_TOOLONG' + ); + } + + handlers[key] = [type, isFlag]; + } + + for (let i = 0, len = argv.length; i < len; i++) { + const wholeArg = argv[i]; + + if (stopAtPositional && result._.length > 0) { + result._ = result._.concat(argv.slice(i)); + break; + } + + if (wholeArg === '--') { + result._ = result._.concat(argv.slice(i + 1)); + break; + } + + if (wholeArg.length > 1 && wholeArg[0] === '-') { + /* eslint-disable operator-linebreak */ + const separatedArguments = + wholeArg[1] === '-' || wholeArg.length === 2 + ? [wholeArg] + : wholeArg + .slice(1) + .split('') + .map((a) => `-${a}`); + /* eslint-enable operator-linebreak */ + + for (let j = 0; j < separatedArguments.length; j++) { + const arg = separatedArguments[j]; + const [originalArgName, argStr] = + arg[1] === '-' ? arg.split(/=(.*)/, 2) : [arg, undefined]; + + let argName = originalArgName; + while (argName in aliases) { + argName = aliases[argName]; + } + + if (!(argName in handlers)) { + if (permissive) { + result._.push(arg); + continue; + } else { + throw new ArgError( + `unknown or unexpected option: ${originalArgName}`, + 'ARG_UNKNOWN_OPTION' + ); + } + } + + const [type, isFlag] = handlers[argName]; + + if (!isFlag && j + 1 < separatedArguments.length) { + throw new ArgError( + `option requires argument (but was followed by another short argument): ${originalArgName}`, + 'ARG_MISSING_REQUIRED_SHORTARG' + ); + } + + if (isFlag) { + result[argName] = type(true, argName, result[argName]); + } else if (argStr === undefined) { + if ( + argv.length < i + 2 || + (argv[i + 1].length > 1 && + argv[i + 1][0] === '-' && + !( + argv[i + 1].match(/^-?\d*(\.(?=\d))?\d*$/) && + (type === Number || + // eslint-disable-next-line no-undef + (typeof BigInt !== 'undefined' && type === BigInt)) + )) + ) { + const extended = + originalArgName === argName ? '' : ` (alias for ${argName})`; + throw new ArgError( + `option requires argument: ${originalArgName}${extended}`, + 'ARG_MISSING_REQUIRED_LONGARG' + ); + } + + result[argName] = type(argv[i + 1], argName, result[argName]); + ++i; + } else { + result[argName] = type(argStr, argName, result[argName]); + } + } + } else { + result._.push(wholeArg); + } + } + + return result; +} + +arg.flag = (fn) => { + fn[flagSymbol] = true; + return fn; +}; + +// Utility types +arg.COUNT = arg.flag((v, name, existingCount) => (existingCount || 0) + 1); + +// Expose error class +arg.ArgError = ArgError; + +var arg_1 = arg; + +/** + @license + The MIT License (MIT) + + Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ +function getOptionValue(opt) { + parseOptions(); + return options[opt]; +} +let options; +function parseOptions() { + if (!options) { + options = { + "--conditions": [], + ...parseArgv(getNodeOptionsEnvArgv()), + ...parseArgv(process.execArgv) + }; + } +} +function parseArgv(argv) { + return arg_1( + { + "--conditions": [String], + "-C": "--conditions" + }, + { + argv, + permissive: true + } + ); +} +function getNodeOptionsEnvArgv() { + const errors = []; + const envArgv = ParseNodeOptionsEnvVar(process.env.NODE_OPTIONS || "", errors); + if (errors.length !== 0) ; + return envArgv; +} +function ParseNodeOptionsEnvVar(node_options, errors) { + const env_argv = []; + let is_in_string = false; + let will_start_new_arg = true; + for (let index = 0; index < node_options.length; ++index) { + let c = node_options[index]; + if (c === "\\" && is_in_string) { + if (index + 1 === node_options.length) { + errors.push("invalid value for NODE_OPTIONS (invalid escape)\n"); + return env_argv; + } else { + c = node_options[++index]; + } + } else if (c === " " && !is_in_string) { + will_start_new_arg = true; + continue; + } else if (c === '"') { + is_in_string = !is_in_string; + continue; + } + if (will_start_new_arg) { + env_argv.push(c); + will_start_new_arg = false; + } else { + env_argv[env_argv.length - 1] += c; + } + } + if (is_in_string) { + errors.push("invalid value for NODE_OPTIONS (unterminated string)\n"); + } + return env_argv; +} + +function makeApi(runtimeState, opts) { + const alwaysWarnOnFallback = Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK) > 0; + const debugLevel = Number(process.env.PNP_DEBUG_LEVEL); + const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/; + const isStrictRegExp = /^(\/|\.{1,2}(\/|$))/; + const isDirRegExp = /\/$/; + const isRelativeRegexp = /^\.{0,2}\//; + const topLevelLocator = { name: null, reference: null }; + const fallbackLocators = []; + const emittedWarnings = /* @__PURE__ */ new Set(); + if (runtimeState.enableTopLevelFallback === true) + fallbackLocators.push(topLevelLocator); + if (opts.compatibilityMode !== false) { + for (const name of [`react-scripts`, `gatsby`]) { + const packageStore = runtimeState.packageRegistry.get(name); + if (packageStore) { + for (const reference of packageStore.keys()) { + if (reference === null) { + throw new Error(`Assertion failed: This reference shouldn't be null`); + } else { + fallbackLocators.push({ name, reference }); + } + } + } + } + } + const { + ignorePattern, + packageRegistry, + packageLocatorsByLocations + } = runtimeState; + function makeLogEntry(name, args) { + return { + fn: name, + args, + error: null, + result: null + }; + } + function trace(entry) { + const colors = process.stderr?.hasColors?.() ?? process.stdout.isTTY; + const c = (n, str) => `\x1B[${n}m${str}\x1B[0m`; + const error = entry.error; + if (error) + console.error(c(`31;1`, `\u2716 ${entry.error?.message.replace(/\n.*/s, ``)}`)); + else + console.error(c(`33;1`, `\u203C Resolution`)); + if (entry.args.length > 0) + console.error(); + for (const arg of entry.args) + console.error(` ${c(`37;1`, `In \u2190`)} ${nodeUtils.inspect(arg, { colors, compact: true })}`); + if (entry.result) { + console.error(); + console.error(` ${c(`37;1`, `Out \u2192`)} ${nodeUtils.inspect(entry.result, { colors, compact: true })}`); + } + const stack = new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2) ?? []; + if (stack.length > 0) { + console.error(); + for (const line of stack) { + console.error(` ${c(`38;5;244`, line)}`); + } + } + console.error(); + } + function maybeLog(name, fn) { + if (opts.allowDebug === false) + return fn; + if (Number.isFinite(debugLevel)) { + if (debugLevel >= 2) { + return (...args) => { + const logEntry = makeLogEntry(name, args); + try { + return logEntry.result = fn(...args); + } catch (error) { + throw logEntry.error = error; + } finally { + trace(logEntry); + } + }; + } else if (debugLevel >= 1) { + return (...args) => { + try { + return fn(...args); + } catch (error) { + const logEntry = makeLogEntry(name, args); + logEntry.error = error; + trace(logEntry); + throw error; + } + }; + } + } + return fn; + } + function getPackageInformationSafe(packageLocator) { + const packageInformation = getPackageInformation(packageLocator); + if (!packageInformation) { + throw makeError( + ErrorCode.INTERNAL, + `Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)` + ); + } + return packageInformation; + } + function isDependencyTreeRoot(packageLocator) { + if (packageLocator.name === null) + return true; + for (const dependencyTreeRoot of runtimeState.dependencyTreeRoots) + if (dependencyTreeRoot.name === packageLocator.name && dependencyTreeRoot.reference === packageLocator.reference) + return true; + return false; + } + const defaultExportsConditions = /* @__PURE__ */ new Set([ + `node`, + `require`, + ...getOptionValue(`--conditions`) + ]); + function applyNodeExportsResolution(unqualifiedPath, conditions = defaultExportsConditions, issuer) { + const locator = findPackageLocator(ppath.join(unqualifiedPath, `internal.js`), { + resolveIgnored: true, + includeDiscardFromLookup: true + }); + if (locator === null) { + throw makeError( + ErrorCode.INTERNAL, + `The locator that owns the "${unqualifiedPath}" path can't be found inside the dependency tree (this is probably an internal error)` + ); + } + const { packageLocation } = getPackageInformationSafe(locator); + const manifestPath = ppath.join(packageLocation, Filename.manifest); + if (!opts.fakeFs.existsSync(manifestPath)) + return null; + const pkgJson = JSON.parse(opts.fakeFs.readFileSync(manifestPath, `utf8`)); + if (pkgJson.exports == null) + return null; + let subpath = ppath.contains(packageLocation, unqualifiedPath); + if (subpath === null) { + throw makeError( + ErrorCode.INTERNAL, + `unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)` + ); + } + if (subpath !== `.` && !isRelativeRegexp.test(subpath)) + subpath = `./${subpath}`; + try { + const resolvedExport = packageExportsResolve({ + packageJSONUrl: url.pathToFileURL(npath.fromPortablePath(manifestPath)), + packageSubpath: subpath, + exports: pkgJson.exports, + base: issuer ? url.pathToFileURL(npath.fromPortablePath(issuer)) : null, + conditions + }); + return npath.toPortablePath(url.fileURLToPath(resolvedExport)); + } catch (error) { + throw makeError( + ErrorCode.EXPORTS_RESOLUTION_FAILED, + error.message, + { unqualifiedPath: getPathForDisplay(unqualifiedPath), locator, pkgJson, subpath: getPathForDisplay(subpath), conditions }, + error.code + ); + } + } + function applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions }) { + let stat; + try { + candidates.push(unqualifiedPath); + stat = opts.fakeFs.statSync(unqualifiedPath); + } catch { + } + if (stat && !stat.isDirectory()) + return opts.fakeFs.realpathSync(unqualifiedPath); + if (stat && stat.isDirectory()) { + let pkgJson; + try { + pkgJson = JSON.parse(opts.fakeFs.readFileSync(ppath.join(unqualifiedPath, Filename.manifest), `utf8`)); + } catch { + } + let nextUnqualifiedPath; + if (pkgJson && pkgJson.main) + nextUnqualifiedPath = ppath.resolve(unqualifiedPath, pkgJson.main); + if (nextUnqualifiedPath && nextUnqualifiedPath !== unqualifiedPath) { + const resolution = applyNodeExtensionResolution(nextUnqualifiedPath, candidates, { extensions }); + if (resolution !== null) { + return resolution; + } + } + } + for (let i = 0, length = extensions.length; i < length; i++) { + const candidateFile = `${unqualifiedPath}${extensions[i]}`; + candidates.push(candidateFile); + if (opts.fakeFs.existsSync(candidateFile)) { + return candidateFile; + } + } + if (stat && stat.isDirectory()) { + for (let i = 0, length = extensions.length; i < length; i++) { + const candidateFile = ppath.format({ dir: unqualifiedPath, name: `index`, ext: extensions[i] }); + candidates.push(candidateFile); + if (opts.fakeFs.existsSync(candidateFile)) { + return candidateFile; + } + } + } + return null; + } + function makeFakeModule(path) { + const fakeModule = new require$$0.Module(path, null); + fakeModule.filename = path; + fakeModule.paths = require$$0.Module._nodeModulePaths(path); + return fakeModule; + } + function callNativeResolution(request, issuer) { + if (issuer.endsWith(`/`)) + issuer = ppath.join(issuer, `internal.js`); + return require$$0.Module._resolveFilename(npath.fromPortablePath(request), makeFakeModule(npath.fromPortablePath(issuer)), false, { plugnplay: false }); + } + function isPathIgnored(path) { + if (ignorePattern === null) + return false; + const subPath = ppath.contains(runtimeState.basePath, path); + if (subPath === null) + return false; + if (ignorePattern.test(subPath.replace(/\/$/, ``))) { + return true; + } else { + return false; + } + } + const VERSIONS = { std: 3, resolveVirtual: 1, getAllLocators: 1 }; + const topLevel = topLevelLocator; + function getPackageInformation({ name, reference }) { + const packageInformationStore = packageRegistry.get(name); + if (!packageInformationStore) + return null; + const packageInformation = packageInformationStore.get(reference); + if (!packageInformation) + return null; + return packageInformation; + } + function findPackageDependents({ name, reference }) { + const dependents = []; + for (const [dependentName, packageInformationStore] of packageRegistry) { + if (dependentName === null) + continue; + for (const [dependentReference, packageInformation] of packageInformationStore) { + if (dependentReference === null) + continue; + const dependencyReference = packageInformation.packageDependencies.get(name); + if (dependencyReference !== reference) + continue; + if (dependentName === name && dependentReference === reference) + continue; + dependents.push({ + name: dependentName, + reference: dependentReference + }); + } + } + return dependents; + } + function findBrokenPeerDependencies(dependency, initialPackage) { + const brokenPackages = /* @__PURE__ */ new Map(); + const alreadyVisited = /* @__PURE__ */ new Set(); + const traversal = (currentPackage) => { + const identifier = JSON.stringify(currentPackage.name); + if (alreadyVisited.has(identifier)) + return; + alreadyVisited.add(identifier); + const dependents = findPackageDependents(currentPackage); + for (const dependent of dependents) { + const dependentInformation = getPackageInformationSafe(dependent); + if (dependentInformation.packagePeers.has(dependency)) { + traversal(dependent); + } else { + let brokenSet = brokenPackages.get(dependent.name); + if (typeof brokenSet === `undefined`) + brokenPackages.set(dependent.name, brokenSet = /* @__PURE__ */ new Set()); + brokenSet.add(dependent.reference); + } + } + }; + traversal(initialPackage); + const brokenList = []; + for (const name of [...brokenPackages.keys()].sort()) + for (const reference of [...brokenPackages.get(name)].sort()) + brokenList.push({ name, reference }); + return brokenList; + } + function findPackageLocator(location, { resolveIgnored = false, includeDiscardFromLookup = false } = {}) { + if (isPathIgnored(location) && !resolveIgnored) + return null; + let relativeLocation = ppath.relative(runtimeState.basePath, location); + if (!relativeLocation.match(isStrictRegExp)) + relativeLocation = `./${relativeLocation}`; + if (!relativeLocation.endsWith(`/`)) + relativeLocation = `${relativeLocation}/`; + do { + const entry = packageLocatorsByLocations.get(relativeLocation); + if (typeof entry === `undefined` || entry.discardFromLookup && !includeDiscardFromLookup) { + relativeLocation = relativeLocation.substring(0, relativeLocation.lastIndexOf(`/`, relativeLocation.length - 2) + 1); + continue; + } + return entry.locator; + } while (relativeLocation !== ``); + return null; + } + function tryReadFile(filePath) { + try { + return opts.fakeFs.readFileSync(npath.toPortablePath(filePath), `utf8`); + } catch (err) { + if (err.code === `ENOENT`) + return void 0; + throw err; + } + } + function resolveToUnqualified(request, issuer, { considerBuiltins = true } = {}) { + if (request.startsWith(`#`)) + throw new Error(`resolveToUnqualified can not handle private import mappings`); + if (request === `pnpapi`) + return npath.toPortablePath(opts.pnpapiResolution); + if (considerBuiltins && require$$0.isBuiltin(request)) + return null; + const requestForDisplay = getPathForDisplay(request); + const issuerForDisplay = issuer && getPathForDisplay(issuer); + if (issuer && isPathIgnored(issuer)) { + if (!ppath.isAbsolute(request) || findPackageLocator(request) === null) { + const result = callNativeResolution(request, issuer); + if (result === false) { + throw makeError( + ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED, + `The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) + +Require request: "${requestForDisplay}" +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay } + ); + } + return npath.toPortablePath(result); + } + } + let unqualifiedPath; + const dependencyNameMatch = request.match(pathRegExp); + if (!dependencyNameMatch) { + if (ppath.isAbsolute(request)) { + unqualifiedPath = ppath.normalize(request); + } else { + if (!issuer) { + throw makeError( + ErrorCode.API_ERROR, + `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`, + { request: requestForDisplay, issuer: issuerForDisplay } + ); + } + const absoluteIssuer = ppath.resolve(issuer); + if (issuer.match(isDirRegExp)) { + unqualifiedPath = ppath.normalize(ppath.join(absoluteIssuer, request)); + } else { + unqualifiedPath = ppath.normalize(ppath.join(ppath.dirname(absoluteIssuer), request)); + } + } + } else { + if (!issuer) { + throw makeError( + ErrorCode.API_ERROR, + `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`, + { request: requestForDisplay, issuer: issuerForDisplay } + ); + } + const [, dependencyName, subPath] = dependencyNameMatch; + const issuerLocator = findPackageLocator(issuer); + if (!issuerLocator) { + const result = callNativeResolution(request, issuer); + if (result === false) { + throw makeError( + ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED, + `The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). + +Require path: "${requestForDisplay}" +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay } + ); + } + return npath.toPortablePath(result); + } + const issuerInformation = getPackageInformationSafe(issuerLocator); + let dependencyReference = issuerInformation.packageDependencies.get(dependencyName); + let fallbackReference = null; + if (dependencyReference == null) { + if (issuerLocator.name !== null) { + const exclusionEntry = runtimeState.fallbackExclusionList.get(issuerLocator.name); + const canUseFallbacks = !exclusionEntry || !exclusionEntry.has(issuerLocator.reference); + if (canUseFallbacks) { + for (let t = 0, T = fallbackLocators.length; t < T; ++t) { + const fallbackInformation = getPackageInformationSafe(fallbackLocators[t]); + const reference = fallbackInformation.packageDependencies.get(dependencyName); + if (reference == null) + continue; + if (alwaysWarnOnFallback) + fallbackReference = reference; + else + dependencyReference = reference; + break; + } + if (runtimeState.enableTopLevelFallback) { + if (dependencyReference == null && fallbackReference === null) { + const reference = runtimeState.fallbackPool.get(dependencyName); + if (reference != null) { + fallbackReference = reference; + } + } + } + } + } + } + let error = null; + if (dependencyReference === null) { + if (isDependencyTreeRoot(issuerLocator)) { + error = makeError( + ErrorCode.MISSING_PEER_DEPENDENCY, + `Your application tried to access ${dependencyName} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay, dependencyName } + ); + } else { + const brokenAncestors = findBrokenPeerDependencies(dependencyName, issuerLocator); + if (brokenAncestors.every((ancestor) => isDependencyTreeRoot(ancestor))) { + error = makeError( + ErrorCode.MISSING_PEER_DEPENDENCY, + `${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) +${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference} +`).join(``)} +`, + { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors } + ); + } else { + error = makeError( + ErrorCode.MISSING_PEER_DEPENDENCY, + `${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) + +${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference} +`).join(``)} +`, + { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors } + ); + } + } + } else if (dependencyReference === void 0) { + if (!considerBuiltins && require$$0.isBuiltin(request)) { + if (isDependencyTreeRoot(issuerLocator)) { + error = makeError( + ErrorCode.UNDECLARED_DEPENDENCY, + `Your application tried to access ${dependencyName}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${dependencyName} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay, dependencyName } + ); + } else { + error = makeError( + ErrorCode.UNDECLARED_DEPENDENCY, + `${issuerLocator.name} tried to access ${dependencyName}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${dependencyName} isn't otherwise declared in ${issuerLocator.name}'s dependencies, this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName } + ); + } + } else { + if (isDependencyTreeRoot(issuerLocator)) { + error = makeError( + ErrorCode.UNDECLARED_DEPENDENCY, + `Your application tried to access ${dependencyName}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay, dependencyName } + ); + } else { + error = makeError( + ErrorCode.UNDECLARED_DEPENDENCY, + `${issuerLocator.name} tried to access ${dependencyName}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) +`, + { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName } + ); + } + } + } + if (dependencyReference == null) { + if (fallbackReference === null || error === null) + throw error || new Error(`Assertion failed: Expected an error to have been set`); + dependencyReference = fallbackReference; + const message = error.message.replace(/\n.*/g, ``); + error.message = message; + if (!emittedWarnings.has(message) && debugLevel !== 0) { + emittedWarnings.add(message); + process.emitWarning(error); + } + } + const dependencyLocator = Array.isArray(dependencyReference) ? { name: dependencyReference[0], reference: dependencyReference[1] } : { name: dependencyName, reference: dependencyReference }; + const dependencyInformation = getPackageInformationSafe(dependencyLocator); + if (!dependencyInformation.packageLocation) { + throw makeError( + ErrorCode.MISSING_DEPENDENCY, + `A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. + +Required package: ${dependencyLocator.name}@${dependencyLocator.reference}${dependencyLocator.name !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) +`, + { request: requestForDisplay, issuer: issuerForDisplay, dependencyLocator: Object.assign({}, dependencyLocator) } + ); + } + const dependencyLocation = dependencyInformation.packageLocation; + if (subPath) { + unqualifiedPath = ppath.join(dependencyLocation, subPath); + } else { + unqualifiedPath = dependencyLocation; + } + } + return ppath.normalize(unqualifiedPath); + } + function resolveUnqualifiedExport(request, unqualifiedPath, conditions = defaultExportsConditions, issuer) { + if (isStrictRegExp.test(request)) + return unqualifiedPath; + const unqualifiedExportPath = applyNodeExportsResolution(unqualifiedPath, conditions, issuer); + if (unqualifiedExportPath) { + return ppath.normalize(unqualifiedExportPath); + } else { + return unqualifiedPath; + } + } + function resolveUnqualified(unqualifiedPath, { extensions = Object.keys(require$$0.Module._extensions) } = {}) { + const candidates = []; + const qualifiedPath = applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions }); + if (qualifiedPath) { + return ppath.normalize(qualifiedPath); + } else { + reportRequiredFilesToWatchMode(candidates.map((candidate) => npath.fromPortablePath(candidate))); + const unqualifiedPathForDisplay = getPathForDisplay(unqualifiedPath); + const containingPackage = findPackageLocator(unqualifiedPath); + if (containingPackage) { + const { packageLocation } = getPackageInformationSafe(containingPackage); + let exists = true; + try { + opts.fakeFs.accessSync(packageLocation); + } catch (err) { + if (err?.code === `ENOENT`) { + exists = false; + } else { + const readableError = (err?.message ?? err ?? `empty exception thrown`).replace(/^[A-Z]/, ($0) => $0.toLowerCase()); + throw makeError(ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, `Required package exists but could not be accessed (${readableError}). + +Missing package: ${containingPackage.name}@${containingPackage.reference} +Expected package location: ${getPathForDisplay(packageLocation)} +`, { unqualifiedPath: unqualifiedPathForDisplay, extensions }); + } + } + if (!exists) { + const errorMessage = packageLocation.includes(`/unplugged/`) ? `Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).` : `Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.`; + throw makeError( + ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, + `${errorMessage} + +Missing package: ${containingPackage.name}@${containingPackage.reference} +Expected package location: ${getPathForDisplay(packageLocation)} +`, + { unqualifiedPath: unqualifiedPathForDisplay, extensions } + ); + } + } + throw makeError( + ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, + `Qualified path resolution failed: we looked for the following paths, but none could be accessed. + +Source path: ${unqualifiedPathForDisplay} +${candidates.map((candidate) => `Not found: ${getPathForDisplay(candidate)} +`).join(``)}`, + { unqualifiedPath: unqualifiedPathForDisplay, extensions } + ); + } + } + function resolvePrivateRequest(request, issuer, opts2) { + if (!issuer) + throw new Error(`Assertion failed: An issuer is required to resolve private import mappings`); + const resolved = packageImportsResolve({ + name: request, + base: url.pathToFileURL(npath.fromPortablePath(issuer)), + conditions: opts2.conditions ?? defaultExportsConditions, + readFileSyncFn: tryReadFile + }); + if (resolved instanceof URL) { + return resolveUnqualified(npath.toPortablePath(url.fileURLToPath(resolved)), { extensions: opts2.extensions }); + } else { + if (resolved.startsWith(`#`)) + throw new Error(`Mapping from one private import to another isn't allowed`); + return resolveRequest(resolved, issuer, opts2); + } + } + function resolveRequest(request, issuer, opts2 = {}) { + try { + if (request.startsWith(`#`)) + return resolvePrivateRequest(request, issuer, opts2); + const { considerBuiltins, extensions, conditions } = opts2; + const unqualifiedPath = resolveToUnqualified(request, issuer, { considerBuiltins }); + if (request === `pnpapi`) + return unqualifiedPath; + if (unqualifiedPath === null) + return null; + const isIssuerIgnored = () => issuer !== null ? isPathIgnored(issuer) : false; + const remappedPath = (!considerBuiltins || !require$$0.isBuiltin(request)) && !isIssuerIgnored() ? resolveUnqualifiedExport(request, unqualifiedPath, conditions, issuer) : unqualifiedPath; + return resolveUnqualified(remappedPath, { extensions }); + } catch (error) { + if (Object.hasOwn(error, `pnpCode`)) + Object.assign(error.data, { request: getPathForDisplay(request), issuer: issuer && getPathForDisplay(issuer) }); + throw error; + } + } + function resolveVirtual(request) { + const normalized = ppath.normalize(request); + const resolved = VirtualFS.resolveVirtual(normalized); + return resolved !== normalized ? resolved : null; + } + return { + VERSIONS, + topLevel, + getLocator: (name, referencish) => { + if (Array.isArray(referencish)) { + return { name: referencish[0], reference: referencish[1] }; + } else { + return { name, reference: referencish }; + } + }, + getDependencyTreeRoots: () => { + return [...runtimeState.dependencyTreeRoots]; + }, + getAllLocators() { + const locators = []; + for (const [name, entry] of packageRegistry) + for (const reference of entry.keys()) + if (name !== null && reference !== null) + locators.push({ name, reference }); + return locators; + }, + getPackageInformation: (locator) => { + const info = getPackageInformation(locator); + if (info === null) + return null; + const packageLocation = npath.fromPortablePath(info.packageLocation); + const nativeInfo = { ...info, packageLocation }; + return nativeInfo; + }, + findPackageLocator: (path) => { + return findPackageLocator(npath.toPortablePath(path)); + }, + resolveToUnqualified: maybeLog(`resolveToUnqualified`, (request, issuer, opts2) => { + const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null; + const resolution = resolveToUnqualified(npath.toPortablePath(request), portableIssuer, opts2); + if (resolution === null) + return null; + return npath.fromPortablePath(resolution); + }), + resolveUnqualified: maybeLog(`resolveUnqualified`, (unqualifiedPath, opts2) => { + return npath.fromPortablePath(resolveUnqualified(npath.toPortablePath(unqualifiedPath), opts2)); + }), + resolveRequest: maybeLog(`resolveRequest`, (request, issuer, opts2) => { + const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null; + const resolution = resolveRequest(npath.toPortablePath(request), portableIssuer, opts2); + if (resolution === null) + return null; + return npath.fromPortablePath(resolution); + }), + resolveVirtual: maybeLog(`resolveVirtual`, (path) => { + const result = resolveVirtual(npath.toPortablePath(path)); + if (result !== null) { + return npath.fromPortablePath(result); + } else { + return null; + } + }) + }; +} + +function makeManager(pnpapi, opts) { + const initialApiPath = npath.toPortablePath(pnpapi.resolveToUnqualified(`pnpapi`, null)); + const initialApiStats = opts.fakeFs.statSync(npath.toPortablePath(initialApiPath)); + const apiMetadata = /* @__PURE__ */ new Map([ + [initialApiPath, { + instance: pnpapi, + stats: initialApiStats, + lastRefreshCheck: Date.now() + }] + ]); + function loadApiInstance(pnpApiPath) { + const nativePath = npath.fromPortablePath(pnpApiPath); + const module = new require$$0.Module(nativePath, null); + module.load(nativePath); + return module.exports; + } + function refreshApiEntry(pnpApiPath, apiEntry) { + const timeNow = Date.now(); + if (timeNow - apiEntry.lastRefreshCheck < 500) + return; + apiEntry.lastRefreshCheck = timeNow; + const stats = opts.fakeFs.statSync(pnpApiPath); + if (stats.mtime > apiEntry.stats.mtime) { + process.emitWarning(`[Warning] The runtime detected new information in a PnP file; reloading the API instance (${npath.fromPortablePath(pnpApiPath)})`); + apiEntry.stats = stats; + apiEntry.instance = loadApiInstance(pnpApiPath); + } + } + function getApiEntry(pnpApiPath, refresh = false) { + let apiEntry = apiMetadata.get(pnpApiPath); + if (typeof apiEntry !== `undefined`) { + if (refresh) { + refreshApiEntry(pnpApiPath, apiEntry); + } + } else { + apiMetadata.set(pnpApiPath, apiEntry = { + instance: loadApiInstance(pnpApiPath), + stats: opts.fakeFs.statSync(pnpApiPath), + lastRefreshCheck: Date.now() + }); + } + return apiEntry; + } + const findApiPathCache = /* @__PURE__ */ new Map(); + function addToCacheAndReturn(start, end, target) { + if (target !== null) { + target = VirtualFS.resolveVirtual(target); + target = opts.fakeFs.realpathSync(target); + } + let curr; + let next = start; + do { + curr = next; + findApiPathCache.set(curr, target); + next = ppath.dirname(curr); + } while (curr !== end); + return target; + } + function findApiPathFor(modulePath) { + let bestCandidate = null; + for (const [apiPath, apiEntry] of apiMetadata) { + const locator = apiEntry.instance.findPackageLocator(modulePath); + if (!locator) + continue; + if (apiMetadata.size === 1) + return apiPath; + const packageInformation = apiEntry.instance.getPackageInformation(locator); + if (!packageInformation) + throw new Error(`Assertion failed: Couldn't get package information for '${modulePath}'`); + if (!bestCandidate) + bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [] }; + if (packageInformation.packageLocation === bestCandidate.packageLocation) { + bestCandidate.apiPaths.push(apiPath); + } else if (packageInformation.packageLocation.length > bestCandidate.packageLocation.length) { + bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [apiPath] }; + } + } + if (bestCandidate) { + if (bestCandidate.apiPaths.length === 1) + return bestCandidate.apiPaths[0]; + const controlSegment = bestCandidate.apiPaths.map((apiPath) => ` ${npath.fromPortablePath(apiPath)}`).join(` +`); + throw new Error(`Unable to locate pnpapi, the module '${modulePath}' is controlled by multiple pnpapi instances. +This is usually caused by using the global cache (enableGlobalCache: true) + +Controlled by: +${controlSegment} +`); + } + const start = ppath.resolve(npath.toPortablePath(modulePath)); + let curr; + let next = start; + do { + curr = next; + const cached = findApiPathCache.get(curr); + if (cached !== void 0) + return addToCacheAndReturn(start, curr, cached); + const cjsCandidate = ppath.join(curr, Filename.pnpCjs); + if (opts.fakeFs.existsSync(cjsCandidate) && opts.fakeFs.statSync(cjsCandidate).isFile()) + return addToCacheAndReturn(start, curr, cjsCandidate); + const legacyCjsCandidate = ppath.join(curr, Filename.pnpJs); + if (opts.fakeFs.existsSync(legacyCjsCandidate) && opts.fakeFs.statSync(legacyCjsCandidate).isFile()) + return addToCacheAndReturn(start, curr, legacyCjsCandidate); + next = ppath.dirname(curr); + } while (curr !== PortablePath.root); + return addToCacheAndReturn(start, curr, null); + } + const moduleToApiPathCache = /* @__PURE__ */ new WeakMap(); + function getApiPathFromParent(parent) { + if (parent == null) + return initialApiPath; + let apiPath = moduleToApiPathCache.get(parent); + if (typeof apiPath !== `undefined`) + return apiPath; + apiPath = parent.filename ? findApiPathFor(parent.filename) : null; + moduleToApiPathCache.set(parent, apiPath); + return apiPath; + } + return { + getApiPathFromParent, + findApiPathFor, + getApiEntry + }; +} + +const localFs = { ...fs__default.default }; +const nodeFs = new NodeFS(localFs); +const defaultRuntimeState = $$SETUP_STATE(hydrateRuntimeState); +const defaultPnpapiResolution = __filename; +const customZipImplementation = defaultRuntimeState.pnpZipBackend === `js` ? JsZipImpl : void 0; +const defaultFsLayer = new VirtualFS({ + baseFs: new ZipOpenFS({ + customZipImplementation, + baseFs: nodeFs, + maxOpenFiles: 80, + readOnlyArchives: true + }) +}); +class DynamicFS extends ProxiedFS { + baseFs = defaultFsLayer; + constructor() { + super(ppath); + } + mapToBase(p) { + return p; + } + mapFromBase(p) { + return p; + } +} +const dynamicFsLayer = new DynamicFS(); +let manager; +const defaultApi = Object.assign(makeApi(defaultRuntimeState, { + fakeFs: dynamicFsLayer, + pnpapiResolution: defaultPnpapiResolution +}), { + /** + * Can be used to generate a different API than the default one (for example + * to map it on `/` rather than the local directory path, or to use a + * different FS layer than the default one). + */ + makeApi: ({ + basePath = void 0, + fakeFs = dynamicFsLayer, + pnpapiResolution = defaultPnpapiResolution, + ...rest + }) => { + const apiRuntimeState = typeof basePath !== `undefined` ? $$SETUP_STATE(hydrateRuntimeState, basePath) : defaultRuntimeState; + return makeApi(apiRuntimeState, { + fakeFs, + pnpapiResolution, + ...rest + }); + }, + /** + * Will inject the specified API into the environment, monkey-patching FS. Is + * automatically called when the hook is loaded through `--require`. + */ + setup: (api) => { + applyPatch(api || defaultApi, { + fakeFs: defaultFsLayer, + manager + }); + dynamicFsLayer.baseFs = new NodeFS(fs__default.default); + } +}); +manager = makeManager(defaultApi, { + fakeFs: dynamicFsLayer +}); +if (module.parent && module.parent.id === `internal/preload`) { + defaultApi.setup(); + if (module.filename) { + delete require$$0__default.default._cache[module.filename]; + } +} +if (process.mainModule === module) { + const reportError = (code, message, data) => { + process.stdout.write(`${JSON.stringify([{ code, message, data }, null])} +`); + }; + const reportSuccess = (resolution) => { + process.stdout.write(`${JSON.stringify([null, resolution])} +`); + }; + const processResolution = (request, issuer) => { + try { + reportSuccess(defaultApi.resolveRequest(request, issuer)); + } catch (error) { + reportError(error.code, error.message, error.data); + } + }; + const processRequest = (data) => { + try { + const [request, issuer] = JSON.parse(data); + processResolution(request, issuer); + } catch (error) { + reportError(`INVALID_JSON`, error.message, error.data); + } + }; + if (process.argv.length > 2) { + if (process.argv.length !== 4) { + process.stderr.write(`Usage: ${process.argv[0]} ${process.argv[1]} +`); + process.exitCode = 64; + } else { + processResolution(process.argv[2], process.argv[3]); + } + } else { + let buffer = ``; + const decoder = new StringDecoder__default.default.StringDecoder(); + process.stdin.on(`data`, (chunk) => { + buffer += decoder.write(chunk); + do { + const index = buffer.indexOf(` +`); + if (index === -1) + break; + const line = buffer.slice(0, index); + buffer = buffer.slice(index + 1); + processRequest(line); + } while (true); + }); + } +} + +module.exports = defaultApi; diff --git a/.pnp.loader.mjs b/.pnp.loader.mjs new file mode 100644 index 0000000..9896cc7 --- /dev/null +++ b/.pnp.loader.mjs @@ -0,0 +1,2126 @@ +/* eslint-disable */ +// @ts-nocheck + +import fs from 'fs'; +import { URL as URL$1, fileURLToPath, pathToFileURL } from 'url'; +import path from 'path'; +import { createHash } from 'crypto'; +import { EOL } from 'os'; +import esmModule, { createRequire, isBuiltin } from 'module'; +import assert from 'assert'; + +const SAFE_TIME = 456789e3; + +const PortablePath = { + root: `/`, + dot: `.`, + parent: `..` +}; +const npath = Object.create(path); +const ppath = Object.create(path.posix); +npath.cwd = () => process.cwd(); +ppath.cwd = process.platform === `win32` ? () => toPortablePath(process.cwd()) : process.cwd; +if (process.platform === `win32`) { + ppath.resolve = (...segments) => { + if (segments.length > 0 && ppath.isAbsolute(segments[0])) { + return path.posix.resolve(...segments); + } else { + return path.posix.resolve(ppath.cwd(), ...segments); + } + }; +} +const contains = function(pathUtils, from, to) { + from = pathUtils.normalize(from); + to = pathUtils.normalize(to); + if (from === to) + return `.`; + if (!from.endsWith(pathUtils.sep)) + from = from + pathUtils.sep; + if (to.startsWith(from)) { + return to.slice(from.length); + } else { + return null; + } +}; +npath.contains = (from, to) => contains(npath, from, to); +ppath.contains = (from, to) => contains(ppath, from, to); +const WINDOWS_PATH_REGEXP = /^([a-zA-Z]:.*)$/; +const UNC_WINDOWS_PATH_REGEXP = /^\/\/(\.\/)?(.*)$/; +const PORTABLE_PATH_REGEXP = /^\/([a-zA-Z]:.*)$/; +const UNC_PORTABLE_PATH_REGEXP = /^\/unc\/(\.dot\/)?(.*)$/; +function fromPortablePathWin32(p) { + let portablePathMatch, uncPortablePathMatch; + if (portablePathMatch = p.match(PORTABLE_PATH_REGEXP)) + p = portablePathMatch[1]; + else if (uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP)) + p = `\\\\${uncPortablePathMatch[1] ? `.\\` : ``}${uncPortablePathMatch[2]}`; + else + return p; + return p.replace(/\//g, `\\`); +} +function toPortablePathWin32(p) { + p = p.replace(/\\/g, `/`); + let windowsPathMatch, uncWindowsPathMatch; + if (windowsPathMatch = p.match(WINDOWS_PATH_REGEXP)) + p = `/${windowsPathMatch[1]}`; + else if (uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP)) + p = `/unc/${uncWindowsPathMatch[1] ? `.dot/` : ``}${uncWindowsPathMatch[2]}`; + return p; +} +const toPortablePath = process.platform === `win32` ? toPortablePathWin32 : (p) => p; +const fromPortablePath = process.platform === `win32` ? fromPortablePathWin32 : (p) => p; +npath.fromPortablePath = fromPortablePath; +npath.toPortablePath = toPortablePath; +function convertPath(targetPathUtils, sourcePath) { + return targetPathUtils === npath ? fromPortablePath(sourcePath) : toPortablePath(sourcePath); +} + +const defaultTime = new Date(SAFE_TIME * 1e3); +const defaultTimeMs = defaultTime.getTime(); +async function copyPromise(destinationFs, destination, sourceFs, source, opts) { + const normalizedDestination = destinationFs.pathUtils.normalize(destination); + const normalizedSource = sourceFs.pathUtils.normalize(source); + const prelayout = []; + const postlayout = []; + const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : await sourceFs.lstatPromise(normalizedSource); + await destinationFs.mkdirpPromise(destinationFs.pathUtils.dirname(destination), { utimes: [atime, mtime] }); + await copyImpl(prelayout, postlayout, destinationFs, normalizedDestination, sourceFs, normalizedSource, { ...opts, didParentExist: true }); + for (const operation of prelayout) + await operation(); + await Promise.all(postlayout.map((operation) => { + return operation(); + })); +} +async function copyImpl(prelayout, postlayout, destinationFs, destination, sourceFs, source, opts) { + const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null; + const sourceStat = await sourceFs.lstatPromise(source); + const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat; + let updated; + switch (true) { + case sourceStat.isDirectory(): + { + updated = await copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + case sourceStat.isFile(): + { + updated = await copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + case sourceStat.isSymbolicLink(): + { + updated = await copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + default: { + throw new Error(`Unsupported file type (${sourceStat.mode})`); + } + } + if (opts.linkStrategy?.type !== `HardlinkFromIndex` || !sourceStat.isFile()) { + if (updated || destinationStat?.mtime?.getTime() !== mtime.getTime() || destinationStat?.atime?.getTime() !== atime.getTime()) { + postlayout.push(() => destinationFs.lutimesPromise(destination, atime, mtime)); + updated = true; + } + if (destinationStat === null || (destinationStat.mode & 511) !== (sourceStat.mode & 511)) { + postlayout.push(() => destinationFs.chmodPromise(destination, sourceStat.mode & 511)); + updated = true; + } + } + return updated; +} +async function maybeLStat(baseFs, p) { + try { + return await baseFs.lstatPromise(p); + } catch { + return null; + } +} +async function copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null && !destinationStat.isDirectory()) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + let updated = false; + if (destinationStat === null) { + prelayout.push(async () => { + try { + await destinationFs.mkdirPromise(destination, { mode: sourceStat.mode }); + } catch (err) { + if (err.code !== `EEXIST`) { + throw err; + } + } + }); + updated = true; + } + const entries = await sourceFs.readdirPromise(source); + const nextOpts = opts.didParentExist && !destinationStat ? { ...opts, didParentExist: false } : opts; + if (opts.stableSort) { + for (const entry of entries.sort()) { + if (await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts)) { + updated = true; + } + } + } else { + const entriesUpdateStatus = await Promise.all(entries.map(async (entry) => { + await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts); + })); + if (entriesUpdateStatus.some((status) => status)) { + updated = true; + } + } + return updated; +} +async function copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, linkStrategy) { + const sourceHash = await sourceFs.checksumFilePromise(source, { algorithm: `sha1` }); + const defaultMode = 420; + const sourceMode = sourceStat.mode & 511; + const indexFileName = `${sourceHash}${sourceMode !== defaultMode ? sourceMode.toString(8) : ``}`; + const indexPath = destinationFs.pathUtils.join(linkStrategy.indexPath, sourceHash.slice(0, 2), `${indexFileName}.dat`); + let AtomicBehavior; + ((AtomicBehavior2) => { + AtomicBehavior2[AtomicBehavior2["Lock"] = 0] = "Lock"; + AtomicBehavior2[AtomicBehavior2["Rename"] = 1] = "Rename"; + })(AtomicBehavior || (AtomicBehavior = {})); + let atomicBehavior = 1 /* Rename */; + let indexStat = await maybeLStat(destinationFs, indexPath); + if (destinationStat) { + const isDestinationHardlinkedFromIndex = indexStat && destinationStat.dev === indexStat.dev && destinationStat.ino === indexStat.ino; + const isIndexModified = indexStat?.mtimeMs !== defaultTimeMs; + if (isDestinationHardlinkedFromIndex) { + if (isIndexModified && linkStrategy.autoRepair) { + atomicBehavior = 0 /* Lock */; + indexStat = null; + } + } + if (!isDestinationHardlinkedFromIndex) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + } + const tempPath = !indexStat && atomicBehavior === 1 /* Rename */ ? `${indexPath}.${Math.floor(Math.random() * 4294967296).toString(16).padStart(8, `0`)}` : null; + let tempPathCleaned = false; + prelayout.push(async () => { + if (!indexStat) { + if (atomicBehavior === 0 /* Lock */) { + await destinationFs.lockPromise(indexPath, async () => { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(indexPath, content); + }); + } + if (atomicBehavior === 1 /* Rename */ && tempPath) { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(tempPath, content); + try { + await destinationFs.linkPromise(tempPath, indexPath); + } catch (err) { + if (err.code === `EEXIST`) { + tempPathCleaned = true; + await destinationFs.unlinkPromise(tempPath); + } else { + throw err; + } + } + } + } + if (!destinationStat) { + await destinationFs.linkPromise(indexPath, destination); + } + }); + postlayout.push(async () => { + if (!indexStat) { + await destinationFs.lutimesPromise(indexPath, defaultTime, defaultTime); + if (sourceMode !== defaultMode) { + await destinationFs.chmodPromise(indexPath, sourceMode); + } + } + if (tempPath && !tempPathCleaned) { + await destinationFs.unlinkPromise(tempPath); + } + }); + return false; +} +async function copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + prelayout.push(async () => { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(destination, content); + }); + return true; +} +async function copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (opts.linkStrategy?.type === `HardlinkFromIndex`) { + return copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, opts.linkStrategy); + } else { + return copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } +} +async function copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + prelayout.push(async () => { + await destinationFs.symlinkPromise(convertPath(destinationFs.pathUtils, await sourceFs.readlinkPromise(source)), destination); + }); + return true; +} + +class FakeFS { + pathUtils; + constructor(pathUtils) { + this.pathUtils = pathUtils; + } + async *genTraversePromise(init, { stableSort = false } = {}) { + const stack = [init]; + while (stack.length > 0) { + const p = stack.shift(); + const entry = await this.lstatPromise(p); + if (entry.isDirectory()) { + const entries = await this.readdirPromise(p); + if (stableSort) { + for (const entry2 of entries.sort()) { + stack.push(this.pathUtils.join(p, entry2)); + } + } else { + throw new Error(`Not supported`); + } + } else { + yield p; + } + } + } + async checksumFilePromise(path, { algorithm = `sha512` } = {}) { + const fd = await this.openPromise(path, `r`); + try { + const CHUNK_SIZE = 65536; + const chunk = Buffer.allocUnsafeSlow(CHUNK_SIZE); + const hash = createHash(algorithm); + let bytesRead = 0; + while ((bytesRead = await this.readPromise(fd, chunk, 0, CHUNK_SIZE)) !== 0) + hash.update(bytesRead === CHUNK_SIZE ? chunk : chunk.slice(0, bytesRead)); + return hash.digest(`hex`); + } finally { + await this.closePromise(fd); + } + } + async removePromise(p, { recursive = true, maxRetries = 5 } = {}) { + let stat; + try { + stat = await this.lstatPromise(p); + } catch (error) { + if (error.code === `ENOENT`) { + return; + } else { + throw error; + } + } + if (stat.isDirectory()) { + if (recursive) { + const entries = await this.readdirPromise(p); + await Promise.all(entries.map((entry) => { + return this.removePromise(this.pathUtils.resolve(p, entry)); + })); + } + for (let t = 0; t <= maxRetries; t++) { + try { + await this.rmdirPromise(p); + break; + } catch (error) { + if (error.code !== `EBUSY` && error.code !== `ENOTEMPTY`) { + throw error; + } else if (t < maxRetries) { + await new Promise((resolve) => setTimeout(resolve, t * 100)); + } + } + } + } else { + await this.unlinkPromise(p); + } + } + removeSync(p, { recursive = true } = {}) { + let stat; + try { + stat = this.lstatSync(p); + } catch (error) { + if (error.code === `ENOENT`) { + return; + } else { + throw error; + } + } + if (stat.isDirectory()) { + if (recursive) + for (const entry of this.readdirSync(p)) + this.removeSync(this.pathUtils.resolve(p, entry)); + this.rmdirSync(p); + } else { + this.unlinkSync(p); + } + } + async mkdirpPromise(p, { chmod, utimes } = {}) { + p = this.resolve(p); + if (p === this.pathUtils.dirname(p)) + return void 0; + const parts = p.split(this.pathUtils.sep); + let createdDirectory; + for (let u = 2; u <= parts.length; ++u) { + const subPath = parts.slice(0, u).join(this.pathUtils.sep); + if (!this.existsSync(subPath)) { + try { + await this.mkdirPromise(subPath); + } catch (error) { + if (error.code === `EEXIST`) { + continue; + } else { + throw error; + } + } + createdDirectory ??= subPath; + if (chmod != null) + await this.chmodPromise(subPath, chmod); + if (utimes != null) { + await this.utimesPromise(subPath, utimes[0], utimes[1]); + } else { + const parentStat = await this.statPromise(this.pathUtils.dirname(subPath)); + await this.utimesPromise(subPath, parentStat.atime, parentStat.mtime); + } + } + } + return createdDirectory; + } + mkdirpSync(p, { chmod, utimes } = {}) { + p = this.resolve(p); + if (p === this.pathUtils.dirname(p)) + return void 0; + const parts = p.split(this.pathUtils.sep); + let createdDirectory; + for (let u = 2; u <= parts.length; ++u) { + const subPath = parts.slice(0, u).join(this.pathUtils.sep); + if (!this.existsSync(subPath)) { + try { + this.mkdirSync(subPath); + } catch (error) { + if (error.code === `EEXIST`) { + continue; + } else { + throw error; + } + } + createdDirectory ??= subPath; + if (chmod != null) + this.chmodSync(subPath, chmod); + if (utimes != null) { + this.utimesSync(subPath, utimes[0], utimes[1]); + } else { + const parentStat = this.statSync(this.pathUtils.dirname(subPath)); + this.utimesSync(subPath, parentStat.atime, parentStat.mtime); + } + } + } + return createdDirectory; + } + async copyPromise(destination, source, { baseFs = this, overwrite = true, stableSort = false, stableTime = false, linkStrategy = null } = {}) { + return await copyPromise(this, destination, baseFs, source, { overwrite, stableSort, stableTime, linkStrategy }); + } + copySync(destination, source, { baseFs = this, overwrite = true } = {}) { + const stat = baseFs.lstatSync(source); + const exists = this.existsSync(destination); + if (stat.isDirectory()) { + this.mkdirpSync(destination); + const directoryListing = baseFs.readdirSync(source); + for (const entry of directoryListing) { + this.copySync(this.pathUtils.join(destination, entry), baseFs.pathUtils.join(source, entry), { baseFs, overwrite }); + } + } else if (stat.isFile()) { + if (!exists || overwrite) { + if (exists) + this.removeSync(destination); + const content = baseFs.readFileSync(source); + this.writeFileSync(destination, content); + } + } else if (stat.isSymbolicLink()) { + if (!exists || overwrite) { + if (exists) + this.removeSync(destination); + const target = baseFs.readlinkSync(source); + this.symlinkSync(convertPath(this.pathUtils, target), destination); + } + } else { + throw new Error(`Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`); + } + const mode = stat.mode & 511; + this.chmodSync(destination, mode); + } + async changeFilePromise(p, content, opts = {}) { + if (Buffer.isBuffer(content)) { + return this.changeFileBufferPromise(p, content, opts); + } else { + return this.changeFileTextPromise(p, content, opts); + } + } + async changeFileBufferPromise(p, content, { mode } = {}) { + let current = Buffer.alloc(0); + try { + current = await this.readFilePromise(p); + } catch { + } + if (Buffer.compare(current, content) === 0) + return; + await this.writeFilePromise(p, content, { mode }); + } + async changeFileTextPromise(p, content, { automaticNewlines, mode } = {}) { + let current = ``; + try { + current = await this.readFilePromise(p, `utf8`); + } catch { + } + const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; + if (current === normalizedContent) + return; + await this.writeFilePromise(p, normalizedContent, { mode }); + } + changeFileSync(p, content, opts = {}) { + if (Buffer.isBuffer(content)) { + return this.changeFileBufferSync(p, content, opts); + } else { + return this.changeFileTextSync(p, content, opts); + } + } + changeFileBufferSync(p, content, { mode } = {}) { + let current = Buffer.alloc(0); + try { + current = this.readFileSync(p); + } catch { + } + if (Buffer.compare(current, content) === 0) + return; + this.writeFileSync(p, content, { mode }); + } + changeFileTextSync(p, content, { automaticNewlines = false, mode } = {}) { + let current = ``; + try { + current = this.readFileSync(p, `utf8`); + } catch { + } + const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; + if (current === normalizedContent) + return; + this.writeFileSync(p, normalizedContent, { mode }); + } + async movePromise(fromP, toP) { + try { + await this.renamePromise(fromP, toP); + } catch (error) { + if (error.code === `EXDEV`) { + await this.copyPromise(toP, fromP); + await this.removePromise(fromP); + } else { + throw error; + } + } + } + moveSync(fromP, toP) { + try { + this.renameSync(fromP, toP); + } catch (error) { + if (error.code === `EXDEV`) { + this.copySync(toP, fromP); + this.removeSync(fromP); + } else { + throw error; + } + } + } + async lockPromise(affectedPath, callback) { + const lockPath = `${affectedPath}.flock`; + const interval = 1e3 / 60; + const startTime = Date.now(); + let fd = null; + const isAlive = async () => { + let pid; + try { + [pid] = await this.readJsonPromise(lockPath); + } catch { + return Date.now() - startTime < 500; + } + try { + process.kill(pid, 0); + return true; + } catch { + return false; + } + }; + while (fd === null) { + try { + fd = await this.openPromise(lockPath, `wx`); + } catch (error) { + if (error.code === `EEXIST`) { + if (!await isAlive()) { + try { + await this.unlinkPromise(lockPath); + continue; + } catch { + } + } + if (Date.now() - startTime < 60 * 1e3) { + await new Promise((resolve) => setTimeout(resolve, interval)); + } else { + throw new Error(`Couldn't acquire a lock in a reasonable time (via ${lockPath})`); + } + } else { + throw error; + } + } + } + await this.writePromise(fd, JSON.stringify([process.pid])); + try { + return await callback(); + } finally { + try { + await this.closePromise(fd); + await this.unlinkPromise(lockPath); + } catch { + } + } + } + async readJsonPromise(p) { + const content = await this.readFilePromise(p, `utf8`); + try { + return JSON.parse(content); + } catch (error) { + error.message += ` (in ${p})`; + throw error; + } + } + readJsonSync(p) { + const content = this.readFileSync(p, `utf8`); + try { + return JSON.parse(content); + } catch (error) { + error.message += ` (in ${p})`; + throw error; + } + } + async writeJsonPromise(p, data, { compact = false } = {}) { + const space = compact ? 0 : 2; + return await this.writeFilePromise(p, `${JSON.stringify(data, null, space)} +`); + } + writeJsonSync(p, data, { compact = false } = {}) { + const space = compact ? 0 : 2; + return this.writeFileSync(p, `${JSON.stringify(data, null, space)} +`); + } + async preserveTimePromise(p, cb) { + const stat = await this.lstatPromise(p); + const result = await cb(); + if (typeof result !== `undefined`) + p = result; + await this.lutimesPromise(p, stat.atime, stat.mtime); + } + async preserveTimeSync(p, cb) { + const stat = this.lstatSync(p); + const result = cb(); + if (typeof result !== `undefined`) + p = result; + this.lutimesSync(p, stat.atime, stat.mtime); + } +} +class BasePortableFakeFS extends FakeFS { + constructor() { + super(ppath); + } +} +function getEndOfLine(content) { + const matches = content.match(/\r?\n/g); + if (matches === null) + return EOL; + const crlf = matches.filter((nl) => nl === `\r +`).length; + const lf = matches.length - crlf; + return crlf > lf ? `\r +` : ` +`; +} +function normalizeLineEndings(originalContent, newContent) { + return newContent.replace(/\r?\n/g, getEndOfLine(originalContent)); +} + +class ProxiedFS extends FakeFS { + getExtractHint(hints) { + return this.baseFs.getExtractHint(hints); + } + resolve(path) { + return this.mapFromBase(this.baseFs.resolve(this.mapToBase(path))); + } + getRealPath() { + return this.mapFromBase(this.baseFs.getRealPath()); + } + async openPromise(p, flags, mode) { + return this.baseFs.openPromise(this.mapToBase(p), flags, mode); + } + openSync(p, flags, mode) { + return this.baseFs.openSync(this.mapToBase(p), flags, mode); + } + async opendirPromise(p, opts) { + return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(p), opts), { path: p }); + } + opendirSync(p, opts) { + return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { path: p }); + } + async readPromise(fd, buffer, offset, length, position) { + return await this.baseFs.readPromise(fd, buffer, offset, length, position); + } + readSync(fd, buffer, offset, length, position) { + return this.baseFs.readSync(fd, buffer, offset, length, position); + } + async writePromise(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return await this.baseFs.writePromise(fd, buffer, offset); + } else { + return await this.baseFs.writePromise(fd, buffer, offset, length, position); + } + } + writeSync(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return this.baseFs.writeSync(fd, buffer, offset); + } else { + return this.baseFs.writeSync(fd, buffer, offset, length, position); + } + } + async closePromise(fd) { + return this.baseFs.closePromise(fd); + } + closeSync(fd) { + this.baseFs.closeSync(fd); + } + createReadStream(p, opts) { + return this.baseFs.createReadStream(p !== null ? this.mapToBase(p) : p, opts); + } + createWriteStream(p, opts) { + return this.baseFs.createWriteStream(p !== null ? this.mapToBase(p) : p, opts); + } + async realpathPromise(p) { + return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(p))); + } + realpathSync(p) { + return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(p))); + } + async existsPromise(p) { + return this.baseFs.existsPromise(this.mapToBase(p)); + } + existsSync(p) { + return this.baseFs.existsSync(this.mapToBase(p)); + } + accessSync(p, mode) { + return this.baseFs.accessSync(this.mapToBase(p), mode); + } + async accessPromise(p, mode) { + return this.baseFs.accessPromise(this.mapToBase(p), mode); + } + async statPromise(p, opts) { + return this.baseFs.statPromise(this.mapToBase(p), opts); + } + statSync(p, opts) { + return this.baseFs.statSync(this.mapToBase(p), opts); + } + async fstatPromise(fd, opts) { + return this.baseFs.fstatPromise(fd, opts); + } + fstatSync(fd, opts) { + return this.baseFs.fstatSync(fd, opts); + } + lstatPromise(p, opts) { + return this.baseFs.lstatPromise(this.mapToBase(p), opts); + } + lstatSync(p, opts) { + return this.baseFs.lstatSync(this.mapToBase(p), opts); + } + async fchmodPromise(fd, mask) { + return this.baseFs.fchmodPromise(fd, mask); + } + fchmodSync(fd, mask) { + return this.baseFs.fchmodSync(fd, mask); + } + async chmodPromise(p, mask) { + return this.baseFs.chmodPromise(this.mapToBase(p), mask); + } + chmodSync(p, mask) { + return this.baseFs.chmodSync(this.mapToBase(p), mask); + } + async fchownPromise(fd, uid, gid) { + return this.baseFs.fchownPromise(fd, uid, gid); + } + fchownSync(fd, uid, gid) { + return this.baseFs.fchownSync(fd, uid, gid); + } + async chownPromise(p, uid, gid) { + return this.baseFs.chownPromise(this.mapToBase(p), uid, gid); + } + chownSync(p, uid, gid) { + return this.baseFs.chownSync(this.mapToBase(p), uid, gid); + } + async renamePromise(oldP, newP) { + return this.baseFs.renamePromise(this.mapToBase(oldP), this.mapToBase(newP)); + } + renameSync(oldP, newP) { + return this.baseFs.renameSync(this.mapToBase(oldP), this.mapToBase(newP)); + } + async copyFilePromise(sourceP, destP, flags = 0) { + return this.baseFs.copyFilePromise(this.mapToBase(sourceP), this.mapToBase(destP), flags); + } + copyFileSync(sourceP, destP, flags = 0) { + return this.baseFs.copyFileSync(this.mapToBase(sourceP), this.mapToBase(destP), flags); + } + async appendFilePromise(p, content, opts) { + return this.baseFs.appendFilePromise(this.fsMapToBase(p), content, opts); + } + appendFileSync(p, content, opts) { + return this.baseFs.appendFileSync(this.fsMapToBase(p), content, opts); + } + async writeFilePromise(p, content, opts) { + return this.baseFs.writeFilePromise(this.fsMapToBase(p), content, opts); + } + writeFileSync(p, content, opts) { + return this.baseFs.writeFileSync(this.fsMapToBase(p), content, opts); + } + async unlinkPromise(p) { + return this.baseFs.unlinkPromise(this.mapToBase(p)); + } + unlinkSync(p) { + return this.baseFs.unlinkSync(this.mapToBase(p)); + } + async utimesPromise(p, atime, mtime) { + return this.baseFs.utimesPromise(this.mapToBase(p), atime, mtime); + } + utimesSync(p, atime, mtime) { + return this.baseFs.utimesSync(this.mapToBase(p), atime, mtime); + } + async lutimesPromise(p, atime, mtime) { + return this.baseFs.lutimesPromise(this.mapToBase(p), atime, mtime); + } + lutimesSync(p, atime, mtime) { + return this.baseFs.lutimesSync(this.mapToBase(p), atime, mtime); + } + async mkdirPromise(p, opts) { + return this.baseFs.mkdirPromise(this.mapToBase(p), opts); + } + mkdirSync(p, opts) { + return this.baseFs.mkdirSync(this.mapToBase(p), opts); + } + async rmdirPromise(p, opts) { + return this.baseFs.rmdirPromise(this.mapToBase(p), opts); + } + rmdirSync(p, opts) { + return this.baseFs.rmdirSync(this.mapToBase(p), opts); + } + async rmPromise(p, opts) { + return this.baseFs.rmPromise(this.mapToBase(p), opts); + } + rmSync(p, opts) { + return this.baseFs.rmSync(this.mapToBase(p), opts); + } + async linkPromise(existingP, newP) { + return this.baseFs.linkPromise(this.mapToBase(existingP), this.mapToBase(newP)); + } + linkSync(existingP, newP) { + return this.baseFs.linkSync(this.mapToBase(existingP), this.mapToBase(newP)); + } + async symlinkPromise(target, p, type) { + const mappedP = this.mapToBase(p); + if (this.pathUtils.isAbsolute(target)) + return this.baseFs.symlinkPromise(this.mapToBase(target), mappedP, type); + const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); + const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + return this.baseFs.symlinkPromise(mappedTarget, mappedP, type); + } + symlinkSync(target, p, type) { + const mappedP = this.mapToBase(p); + if (this.pathUtils.isAbsolute(target)) + return this.baseFs.symlinkSync(this.mapToBase(target), mappedP, type); + const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); + const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + return this.baseFs.symlinkSync(mappedTarget, mappedP, type); + } + async readFilePromise(p, encoding) { + return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding); + } + readFileSync(p, encoding) { + return this.baseFs.readFileSync(this.fsMapToBase(p), encoding); + } + readdirPromise(p, opts) { + return this.baseFs.readdirPromise(this.mapToBase(p), opts); + } + readdirSync(p, opts) { + return this.baseFs.readdirSync(this.mapToBase(p), opts); + } + async readlinkPromise(p) { + return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(p))); + } + readlinkSync(p) { + return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(p))); + } + async truncatePromise(p, len) { + return this.baseFs.truncatePromise(this.mapToBase(p), len); + } + truncateSync(p, len) { + return this.baseFs.truncateSync(this.mapToBase(p), len); + } + async ftruncatePromise(fd, len) { + return this.baseFs.ftruncatePromise(fd, len); + } + ftruncateSync(fd, len) { + return this.baseFs.ftruncateSync(fd, len); + } + watch(p, a, b) { + return this.baseFs.watch( + this.mapToBase(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + watchFile(p, a, b) { + return this.baseFs.watchFile( + this.mapToBase(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + unwatchFile(p, cb) { + return this.baseFs.unwatchFile(this.mapToBase(p), cb); + } + fsMapToBase(p) { + if (typeof p === `number`) { + return p; + } else { + return this.mapToBase(p); + } + } +} + +function direntToPortable(dirent) { + const portableDirent = dirent; + if (typeof dirent.path === `string`) + portableDirent.path = npath.toPortablePath(dirent.path); + return portableDirent; +} +class NodeFS extends BasePortableFakeFS { + realFs; + constructor(realFs = fs) { + super(); + this.realFs = realFs; + } + getExtractHint() { + return false; + } + getRealPath() { + return PortablePath.root; + } + resolve(p) { + return ppath.resolve(p); + } + async openPromise(p, flags, mode) { + return await new Promise((resolve, reject) => { + this.realFs.open(npath.fromPortablePath(p), flags, mode, this.makeCallback(resolve, reject)); + }); + } + openSync(p, flags, mode) { + return this.realFs.openSync(npath.fromPortablePath(p), flags, mode); + } + async opendirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (typeof opts !== `undefined`) { + this.realFs.opendir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }).then((dir) => { + const dirWithFixedPath = dir; + Object.defineProperty(dirWithFixedPath, `path`, { + value: p, + configurable: true, + writable: true + }); + return dirWithFixedPath; + }); + } + opendirSync(p, opts) { + const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p)); + const dirWithFixedPath = dir; + Object.defineProperty(dirWithFixedPath, `path`, { + value: p, + configurable: true, + writable: true + }); + return dirWithFixedPath; + } + async readPromise(fd, buffer, offset = 0, length = 0, position = -1) { + return await new Promise((resolve, reject) => { + this.realFs.read(fd, buffer, offset, length, position, (error, bytesRead) => { + if (error) { + reject(error); + } else { + resolve(bytesRead); + } + }); + }); + } + readSync(fd, buffer, offset, length, position) { + return this.realFs.readSync(fd, buffer, offset, length, position); + } + async writePromise(fd, buffer, offset, length, position) { + return await new Promise((resolve, reject) => { + if (typeof buffer === `string`) { + return this.realFs.write(fd, buffer, offset, this.makeCallback(resolve, reject)); + } else { + return this.realFs.write(fd, buffer, offset, length, position, this.makeCallback(resolve, reject)); + } + }); + } + writeSync(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return this.realFs.writeSync(fd, buffer, offset); + } else { + return this.realFs.writeSync(fd, buffer, offset, length, position); + } + } + async closePromise(fd) { + await new Promise((resolve, reject) => { + this.realFs.close(fd, this.makeCallback(resolve, reject)); + }); + } + closeSync(fd) { + this.realFs.closeSync(fd); + } + createReadStream(p, opts) { + const realPath = p !== null ? npath.fromPortablePath(p) : p; + return this.realFs.createReadStream(realPath, opts); + } + createWriteStream(p, opts) { + const realPath = p !== null ? npath.fromPortablePath(p) : p; + return this.realFs.createWriteStream(realPath, opts); + } + async realpathPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.realpath(npath.fromPortablePath(p), {}, this.makeCallback(resolve, reject)); + }).then((path) => { + return npath.toPortablePath(path); + }); + } + realpathSync(p) { + return npath.toPortablePath(this.realFs.realpathSync(npath.fromPortablePath(p), {})); + } + async existsPromise(p) { + return await new Promise((resolve) => { + this.realFs.exists(npath.fromPortablePath(p), resolve); + }); + } + accessSync(p, mode) { + return this.realFs.accessSync(npath.fromPortablePath(p), mode); + } + async accessPromise(p, mode) { + return await new Promise((resolve, reject) => { + this.realFs.access(npath.fromPortablePath(p), mode, this.makeCallback(resolve, reject)); + }); + } + existsSync(p) { + return this.realFs.existsSync(npath.fromPortablePath(p)); + } + async statPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.stat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.stat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + statSync(p, opts) { + if (opts) { + return this.realFs.statSync(npath.fromPortablePath(p), opts); + } else { + return this.realFs.statSync(npath.fromPortablePath(p)); + } + } + async fstatPromise(fd, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.fstat(fd, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.fstat(fd, this.makeCallback(resolve, reject)); + } + }); + } + fstatSync(fd, opts) { + if (opts) { + return this.realFs.fstatSync(fd, opts); + } else { + return this.realFs.fstatSync(fd); + } + } + async lstatPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.lstat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.lstat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + lstatSync(p, opts) { + if (opts) { + return this.realFs.lstatSync(npath.fromPortablePath(p), opts); + } else { + return this.realFs.lstatSync(npath.fromPortablePath(p)); + } + } + async fchmodPromise(fd, mask) { + return await new Promise((resolve, reject) => { + this.realFs.fchmod(fd, mask, this.makeCallback(resolve, reject)); + }); + } + fchmodSync(fd, mask) { + return this.realFs.fchmodSync(fd, mask); + } + async chmodPromise(p, mask) { + return await new Promise((resolve, reject) => { + this.realFs.chmod(npath.fromPortablePath(p), mask, this.makeCallback(resolve, reject)); + }); + } + chmodSync(p, mask) { + return this.realFs.chmodSync(npath.fromPortablePath(p), mask); + } + async fchownPromise(fd, uid, gid) { + return await new Promise((resolve, reject) => { + this.realFs.fchown(fd, uid, gid, this.makeCallback(resolve, reject)); + }); + } + fchownSync(fd, uid, gid) { + return this.realFs.fchownSync(fd, uid, gid); + } + async chownPromise(p, uid, gid) { + return await new Promise((resolve, reject) => { + this.realFs.chown(npath.fromPortablePath(p), uid, gid, this.makeCallback(resolve, reject)); + }); + } + chownSync(p, uid, gid) { + return this.realFs.chownSync(npath.fromPortablePath(p), uid, gid); + } + async renamePromise(oldP, newP) { + return await new Promise((resolve, reject) => { + this.realFs.rename(npath.fromPortablePath(oldP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + }); + } + renameSync(oldP, newP) { + return this.realFs.renameSync(npath.fromPortablePath(oldP), npath.fromPortablePath(newP)); + } + async copyFilePromise(sourceP, destP, flags = 0) { + return await new Promise((resolve, reject) => { + this.realFs.copyFile(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags, this.makeCallback(resolve, reject)); + }); + } + copyFileSync(sourceP, destP, flags = 0) { + return this.realFs.copyFileSync(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags); + } + async appendFilePromise(p, content, opts) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.appendFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.appendFile(fsNativePath, content, this.makeCallback(resolve, reject)); + } + }); + } + appendFileSync(p, content, opts) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.appendFileSync(fsNativePath, content, opts); + } else { + this.realFs.appendFileSync(fsNativePath, content); + } + } + async writeFilePromise(p, content, opts) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.writeFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.writeFile(fsNativePath, content, this.makeCallback(resolve, reject)); + } + }); + } + writeFileSync(p, content, opts) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.writeFileSync(fsNativePath, content, opts); + } else { + this.realFs.writeFileSync(fsNativePath, content); + } + } + async unlinkPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.unlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + }); + } + unlinkSync(p) { + return this.realFs.unlinkSync(npath.fromPortablePath(p)); + } + async utimesPromise(p, atime, mtime) { + return await new Promise((resolve, reject) => { + this.realFs.utimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + }); + } + utimesSync(p, atime, mtime) { + this.realFs.utimesSync(npath.fromPortablePath(p), atime, mtime); + } + async lutimesPromise(p, atime, mtime) { + return await new Promise((resolve, reject) => { + this.realFs.lutimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + }); + } + lutimesSync(p, atime, mtime) { + this.realFs.lutimesSync(npath.fromPortablePath(p), atime, mtime); + } + async mkdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + this.realFs.mkdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + }); + } + mkdirSync(p, opts) { + return this.realFs.mkdirSync(npath.fromPortablePath(p), opts); + } + async rmdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.rmdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.rmdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + rmdirSync(p, opts) { + return this.realFs.rmdirSync(npath.fromPortablePath(p), opts); + } + async rmPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.rm(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.rm(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + rmSync(p, opts) { + return this.realFs.rmSync(npath.fromPortablePath(p), opts); + } + async linkPromise(existingP, newP) { + return await new Promise((resolve, reject) => { + this.realFs.link(npath.fromPortablePath(existingP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + }); + } + linkSync(existingP, newP) { + return this.realFs.linkSync(npath.fromPortablePath(existingP), npath.fromPortablePath(newP)); + } + async symlinkPromise(target, p, type) { + return await new Promise((resolve, reject) => { + this.realFs.symlink(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type, this.makeCallback(resolve, reject)); + }); + } + symlinkSync(target, p, type) { + return this.realFs.symlinkSync(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type); + } + async readFilePromise(p, encoding) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + this.realFs.readFile(fsNativePath, encoding, this.makeCallback(resolve, reject)); + }); + } + readFileSync(p, encoding) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + return this.realFs.readFileSync(fsNativePath, encoding); + } + async readdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + if (opts.recursive && process.platform === `win32`) { + if (opts.withFileTypes) { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(direntToPortable)), reject)); + } else { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(npath.toPortablePath)), reject)); + } + } else { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } + } else { + this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + readdirSync(p, opts) { + if (opts) { + if (opts.recursive && process.platform === `win32`) { + if (opts.withFileTypes) { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(direntToPortable); + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(npath.toPortablePath); + } + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts); + } + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p)); + } + } + async readlinkPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.readlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + }).then((path) => { + return npath.toPortablePath(path); + }); + } + readlinkSync(p) { + return npath.toPortablePath(this.realFs.readlinkSync(npath.fromPortablePath(p))); + } + async truncatePromise(p, len) { + return await new Promise((resolve, reject) => { + this.realFs.truncate(npath.fromPortablePath(p), len, this.makeCallback(resolve, reject)); + }); + } + truncateSync(p, len) { + return this.realFs.truncateSync(npath.fromPortablePath(p), len); + } + async ftruncatePromise(fd, len) { + return await new Promise((resolve, reject) => { + this.realFs.ftruncate(fd, len, this.makeCallback(resolve, reject)); + }); + } + ftruncateSync(fd, len) { + return this.realFs.ftruncateSync(fd, len); + } + watch(p, a, b) { + return this.realFs.watch( + npath.fromPortablePath(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + watchFile(p, a, b) { + return this.realFs.watchFile( + npath.fromPortablePath(p), + // @ts-expect-error - reason TBS + a, + b + ); + } + unwatchFile(p, cb) { + return this.realFs.unwatchFile(npath.fromPortablePath(p), cb); + } + makeCallback(resolve, reject) { + return (err, result) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }; + } +} + +const NUMBER_REGEXP = /^[0-9]+$/; +const VIRTUAL_REGEXP = /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/; +const VALID_COMPONENT = /^([^/]+-)?[a-f0-9]+$/; +class VirtualFS extends ProxiedFS { + baseFs; + static makeVirtualPath(base, component, to) { + if (ppath.basename(base) !== `__virtual__`) + throw new Error(`Assertion failed: Virtual folders must be named "__virtual__"`); + if (!ppath.basename(component).match(VALID_COMPONENT)) + throw new Error(`Assertion failed: Virtual components must be ended by an hexadecimal hash`); + const target = ppath.relative(ppath.dirname(base), to); + const segments = target.split(`/`); + let depth = 0; + while (depth < segments.length && segments[depth] === `..`) + depth += 1; + const finalSegments = segments.slice(depth); + const fullVirtualPath = ppath.join(base, component, String(depth), ...finalSegments); + return fullVirtualPath; + } + static resolveVirtual(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match || !match[3] && match[5]) + return p; + const target = ppath.dirname(match[1]); + if (!match[3] || !match[4]) + return target; + const isnum = NUMBER_REGEXP.test(match[4]); + if (!isnum) + return p; + const depth = Number(match[4]); + const backstep = `../`.repeat(depth); + const subpath = match[5] || `.`; + return VirtualFS.resolveVirtual(ppath.join(target, backstep, subpath)); + } + constructor({ baseFs = new NodeFS() } = {}) { + super(ppath); + this.baseFs = baseFs; + } + getExtractHint(hints) { + return this.baseFs.getExtractHint(hints); + } + getRealPath() { + return this.baseFs.getRealPath(); + } + realpathSync(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match) + return this.baseFs.realpathSync(p); + if (!match[5]) + return p; + const realpath = this.baseFs.realpathSync(this.mapToBase(p)); + return VirtualFS.makeVirtualPath(match[1], match[3], realpath); + } + async realpathPromise(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match) + return await this.baseFs.realpathPromise(p); + if (!match[5]) + return p; + const realpath = await this.baseFs.realpathPromise(this.mapToBase(p)); + return VirtualFS.makeVirtualPath(match[1], match[3], realpath); + } + mapToBase(p) { + if (p === ``) + return p; + if (this.pathUtils.isAbsolute(p)) + return VirtualFS.resolveVirtual(p); + const resolvedRoot = VirtualFS.resolveVirtual(this.baseFs.resolve(PortablePath.dot)); + const resolvedP = VirtualFS.resolveVirtual(this.baseFs.resolve(p)); + return ppath.relative(resolvedRoot, resolvedP) || PortablePath.dot; + } + mapFromBase(p) { + return p; + } +} + +const URL = Number(process.versions.node.split('.', 1)[0]) < 20 ? URL$1 : globalThis.URL; + +const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10)); +const WATCH_MODE_MESSAGE_USES_ARRAYS = major > 19 || major === 19 && minor >= 2 || major === 18 && minor >= 13; +const HAS_LAZY_LOADED_TRANSLATORS = major === 20 && minor < 6 || major === 19 && minor >= 3; +const SUPPORTS_IMPORT_ATTRIBUTES = major >= 21 || major === 20 && minor >= 10 || major === 18 && minor >= 20; +const SUPPORTS_IMPORT_ATTRIBUTES_ONLY = major >= 22; + +function readPackageScope(checkPath) { + const rootSeparatorIndex = checkPath.indexOf(npath.sep); + let separatorIndex; + do { + separatorIndex = checkPath.lastIndexOf(npath.sep); + checkPath = checkPath.slice(0, separatorIndex); + if (checkPath.endsWith(`${npath.sep}node_modules`)) + return false; + const pjson = readPackage(checkPath + npath.sep); + if (pjson) { + return { + data: pjson, + path: checkPath + }; + } + } while (separatorIndex > rootSeparatorIndex); + return false; +} +function readPackage(requestPath) { + const jsonPath = npath.resolve(requestPath, `package.json`); + if (!fs.existsSync(jsonPath)) + return null; + return JSON.parse(fs.readFileSync(jsonPath, `utf8`)); +} + +async function tryReadFile$1(path2) { + try { + return await fs.promises.readFile(path2, `utf8`); + } catch (error) { + if (error.code === `ENOENT`) + return null; + throw error; + } +} +function tryParseURL(str, base) { + try { + return new URL(str, base); + } catch { + return null; + } +} +let entrypointPath = null; +function setEntrypointPath(file) { + entrypointPath = file; +} +function getFileFormat(filepath) { + const ext = path.extname(filepath); + switch (ext) { + case `.mjs`: { + return `module`; + } + case `.cjs`: { + return `commonjs`; + } + case `.wasm`: { + throw new Error( + `Unknown file extension ".wasm" for ${filepath}` + ); + } + case `.json`: { + return `json`; + } + case `.js`: { + const pkg = readPackageScope(filepath); + if (!pkg) + return `commonjs`; + return pkg.data.type ?? `commonjs`; + } + default: { + if (entrypointPath !== filepath) + return null; + const pkg = readPackageScope(filepath); + if (!pkg) + return `commonjs`; + if (pkg.data.type === `module`) + return null; + return pkg.data.type ?? `commonjs`; + } + } +} + +async function load$1(urlString, context, nextLoad) { + const url = tryParseURL(urlString); + if (url?.protocol !== `file:`) + return nextLoad(urlString, context, nextLoad); + const filePath = fileURLToPath(url); + const format = getFileFormat(filePath); + if (!format) + return nextLoad(urlString, context, nextLoad); + if (format === `json`) { + if (SUPPORTS_IMPORT_ATTRIBUTES_ONLY) { + if (context.importAttributes?.type !== `json`) { + const err = new TypeError(`[ERR_IMPORT_ATTRIBUTE_MISSING]: Module "${urlString}" needs an import attribute of "type: json"`); + err.code = `ERR_IMPORT_ATTRIBUTE_MISSING`; + throw err; + } + } else { + const type = `importAttributes` in context ? context.importAttributes?.type : context.importAssertions?.type; + if (type !== `json`) { + const err = new TypeError(`[ERR_IMPORT_ASSERTION_TYPE_MISSING]: Module "${urlString}" needs an import ${SUPPORTS_IMPORT_ATTRIBUTES ? `attribute` : `assertion`} of type "json"`); + err.code = `ERR_IMPORT_ASSERTION_TYPE_MISSING`; + throw err; + } + } + } + if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) { + const pathToSend = pathToFileURL( + npath.fromPortablePath( + VirtualFS.resolveVirtual(npath.toPortablePath(filePath)) + ) + ).href; + process.send({ + "watch:import": WATCH_MODE_MESSAGE_USES_ARRAYS ? [pathToSend] : pathToSend + }); + } + return { + format, + source: format === `commonjs` ? void 0 : await fs.promises.readFile(filePath, `utf8`), + shortCircuit: true + }; +} + +const ArrayIsArray = Array.isArray; +const JSONStringify = JSON.stringify; +const ObjectGetOwnPropertyNames = Object.getOwnPropertyNames; +const ObjectPrototypeHasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); +const RegExpPrototypeExec = (obj, string) => RegExp.prototype.exec.call(obj, string); +const RegExpPrototypeSymbolReplace = (obj, ...rest) => RegExp.prototype[Symbol.replace].apply(obj, rest); +const StringPrototypeEndsWith = (str, ...rest) => String.prototype.endsWith.apply(str, rest); +const StringPrototypeIncludes = (str, ...rest) => String.prototype.includes.apply(str, rest); +const StringPrototypeLastIndexOf = (str, ...rest) => String.prototype.lastIndexOf.apply(str, rest); +const StringPrototypeIndexOf = (str, ...rest) => String.prototype.indexOf.apply(str, rest); +const StringPrototypeReplace = (str, ...rest) => String.prototype.replace.apply(str, rest); +const StringPrototypeSlice = (str, ...rest) => String.prototype.slice.apply(str, rest); +const StringPrototypeStartsWith = (str, ...rest) => String.prototype.startsWith.apply(str, rest); +const SafeMap = Map; +const JSONParse = JSON.parse; + +function createErrorType(code, messageCreator, errorType) { + return class extends errorType { + constructor(...args) { + super(messageCreator(...args)); + this.code = code; + this.name = `${errorType.name} [${code}]`; + } + }; +} +const ERR_PACKAGE_IMPORT_NOT_DEFINED = createErrorType( + `ERR_PACKAGE_IMPORT_NOT_DEFINED`, + (specifier, packagePath, base) => { + return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ``} imported from ${base}`; + }, + TypeError +); +const ERR_INVALID_MODULE_SPECIFIER = createErrorType( + `ERR_INVALID_MODULE_SPECIFIER`, + (request, reason, base = void 0) => { + return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ``}`; + }, + TypeError +); +const ERR_INVALID_PACKAGE_TARGET = createErrorType( + `ERR_INVALID_PACKAGE_TARGET`, + (pkgPath, key, target, isImport = false, base = void 0) => { + const relError = typeof target === `string` && !isImport && target.length && !StringPrototypeStartsWith(target, `./`); + if (key === `.`) { + assert(isImport === false); + return `Invalid "exports" main target ${JSONStringify(target)} defined in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; + } + return `Invalid "${isImport ? `imports` : `exports`}" target ${JSONStringify( + target + )} defined for '${key}' in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; + }, + Error +); +const ERR_INVALID_PACKAGE_CONFIG = createErrorType( + `ERR_INVALID_PACKAGE_CONFIG`, + (path, base, message) => { + return `Invalid package config ${path}${base ? ` while importing ${base}` : ``}${message ? `. ${message}` : ``}`; + }, + Error +); + +function filterOwnProperties(source, keys) { + const filtered = /* @__PURE__ */ Object.create(null); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (ObjectPrototypeHasOwnProperty(source, key)) { + filtered[key] = source[key]; + } + } + return filtered; +} + +const packageJSONCache = new SafeMap(); +function getPackageConfig(path, specifier, base, readFileSyncFn) { + const existing = packageJSONCache.get(path); + if (existing !== void 0) { + return existing; + } + const source = readFileSyncFn(path); + if (source === void 0) { + const packageConfig2 = { + pjsonPath: path, + exists: false, + main: void 0, + name: void 0, + type: "none", + exports: void 0, + imports: void 0 + }; + packageJSONCache.set(path, packageConfig2); + return packageConfig2; + } + let packageJSON; + try { + packageJSON = JSONParse(source); + } catch (error) { + throw new ERR_INVALID_PACKAGE_CONFIG( + path, + (base ? `"${specifier}" from ` : "") + fileURLToPath(base || specifier), + error.message + ); + } + let { imports, main, name, type } = filterOwnProperties(packageJSON, [ + "imports", + "main", + "name", + "type" + ]); + const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") ? packageJSON.exports : void 0; + if (typeof imports !== "object" || imports === null) { + imports = void 0; + } + if (typeof main !== "string") { + main = void 0; + } + if (typeof name !== "string") { + name = void 0; + } + if (type !== "module" && type !== "commonjs") { + type = "none"; + } + const packageConfig = { + pjsonPath: path, + exists: true, + main, + name, + type, + exports, + imports + }; + packageJSONCache.set(path, packageConfig); + return packageConfig; +} +function getPackageScopeConfig(resolved, readFileSyncFn) { + let packageJSONUrl = new URL("./package.json", resolved); + while (true) { + const packageJSONPath2 = packageJSONUrl.pathname; + if (StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json")) { + break; + } + const packageConfig2 = getPackageConfig( + fileURLToPath(packageJSONUrl), + resolved, + void 0, + readFileSyncFn + ); + if (packageConfig2.exists) { + return packageConfig2; + } + const lastPackageJSONUrl = packageJSONUrl; + packageJSONUrl = new URL("../package.json", packageJSONUrl); + if (packageJSONUrl.pathname === lastPackageJSONUrl.pathname) { + break; + } + } + const packageJSONPath = fileURLToPath(packageJSONUrl); + const packageConfig = { + pjsonPath: packageJSONPath, + exists: false, + main: void 0, + name: void 0, + type: "none", + exports: void 0, + imports: void 0 + }; + packageJSONCache.set(packageJSONPath, packageConfig); + return packageConfig; +} + +function throwImportNotDefined(specifier, packageJSONUrl, base) { + throw new ERR_PACKAGE_IMPORT_NOT_DEFINED( + specifier, + packageJSONUrl && fileURLToPath(new URL(".", packageJSONUrl)), + fileURLToPath(base) + ); +} +function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) { + const reason = `request is not a valid subpath for the "${internal ? "imports" : "exports"}" resolution of ${fileURLToPath(packageJSONUrl)}`; + throw new ERR_INVALID_MODULE_SPECIFIER( + subpath, + reason, + base && fileURLToPath(base) + ); +} +function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, base) { + if (typeof target === "object" && target !== null) { + target = JSONStringify(target, null, ""); + } else { + target = `${target}`; + } + throw new ERR_INVALID_PACKAGE_TARGET( + fileURLToPath(new URL(".", packageJSONUrl)), + subpath, + target, + internal, + base && fileURLToPath(base) + ); +} +const invalidSegmentRegEx = /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i; +const patternRegEx = /\*/g; +function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base, pattern, internal, conditions) { + if (subpath !== "" && !pattern && target[target.length - 1] !== "/") + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + if (!StringPrototypeStartsWith(target, "./")) { + if (internal && !StringPrototypeStartsWith(target, "../") && !StringPrototypeStartsWith(target, "/")) { + let isURL = false; + try { + new URL(target); + isURL = true; + } catch { + } + if (!isURL) { + const exportTarget = pattern ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) : target + subpath; + return exportTarget; + } + } + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + } + if (RegExpPrototypeExec( + invalidSegmentRegEx, + StringPrototypeSlice(target, 2) + ) !== null) + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + const resolved = new URL(target, packageJSONUrl); + const resolvedPath = resolved.pathname; + const packagePath = new URL(".", packageJSONUrl).pathname; + if (!StringPrototypeStartsWith(resolvedPath, packagePath)) + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + if (subpath === "") return resolved; + if (RegExpPrototypeExec(invalidSegmentRegEx, subpath) !== null) { + const request = pattern ? StringPrototypeReplace(match, "*", () => subpath) : match + subpath; + throwInvalidSubpath(request, packageJSONUrl, internal, base); + } + if (pattern) { + return new URL( + RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath) + ); + } + return new URL(subpath, resolved); +} +function isArrayIndex(key) { + const keyNum = +key; + if (`${keyNum}` !== key) return false; + return keyNum >= 0 && keyNum < 4294967295; +} +function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, base, pattern, internal, conditions) { + if (typeof target === "string") { + return resolvePackageTargetString( + target, + subpath, + packageSubpath, + packageJSONUrl, + base, + pattern, + internal); + } else if (ArrayIsArray(target)) { + if (target.length === 0) { + return null; + } + let lastException; + for (let i = 0; i < target.length; i++) { + const targetItem = target[i]; + let resolveResult; + try { + resolveResult = resolvePackageTarget( + packageJSONUrl, + targetItem, + subpath, + packageSubpath, + base, + pattern, + internal, + conditions + ); + } catch (e) { + lastException = e; + if (e.code === "ERR_INVALID_PACKAGE_TARGET") { + continue; + } + throw e; + } + if (resolveResult === void 0) { + continue; + } + if (resolveResult === null) { + lastException = null; + continue; + } + return resolveResult; + } + if (lastException === void 0 || lastException === null) + return lastException; + throw lastException; + } else if (typeof target === "object" && target !== null) { + const keys = ObjectGetOwnPropertyNames(target); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (isArrayIndex(key)) { + throw new ERR_INVALID_PACKAGE_CONFIG( + fileURLToPath(packageJSONUrl), + base, + '"exports" cannot contain numeric property keys.' + ); + } + } + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (key === "default" || conditions.has(key)) { + const conditionalTarget = target[key]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + conditionalTarget, + subpath, + packageSubpath, + base, + pattern, + internal, + conditions + ); + if (resolveResult === void 0) continue; + return resolveResult; + } + } + return void 0; + } else if (target === null) { + return null; + } + throwInvalidPackageTarget( + packageSubpath, + target, + packageJSONUrl, + internal, + base + ); +} +function patternKeyCompare(a, b) { + const aPatternIndex = StringPrototypeIndexOf(a, "*"); + const bPatternIndex = StringPrototypeIndexOf(b, "*"); + const baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1; + const baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1; + if (baseLenA > baseLenB) return -1; + if (baseLenB > baseLenA) return 1; + if (aPatternIndex === -1) return 1; + if (bPatternIndex === -1) return -1; + if (a.length > b.length) return -1; + if (b.length > a.length) return 1; + return 0; +} +function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { + if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) { + const reason = "is not a valid internal imports specifier name"; + throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, fileURLToPath(base)); + } + let packageJSONUrl; + const packageConfig = getPackageScopeConfig(base, readFileSyncFn); + if (packageConfig.exists) { + packageJSONUrl = pathToFileURL(packageConfig.pjsonPath); + const imports = packageConfig.imports; + if (imports) { + if (ObjectPrototypeHasOwnProperty(imports, name) && !StringPrototypeIncludes(name, "*")) { + const resolveResult = resolvePackageTarget( + packageJSONUrl, + imports[name], + "", + name, + base, + false, + true, + conditions + ); + if (resolveResult != null) { + return resolveResult; + } + } else { + let bestMatch = ""; + let bestMatchSubpath; + const keys = ObjectGetOwnPropertyNames(imports); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const patternIndex = StringPrototypeIndexOf(key, "*"); + if (patternIndex !== -1 && StringPrototypeStartsWith( + name, + StringPrototypeSlice(key, 0, patternIndex) + )) { + const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); + if (name.length >= key.length && StringPrototypeEndsWith(name, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) { + bestMatch = key; + bestMatchSubpath = StringPrototypeSlice( + name, + patternIndex, + name.length - patternTrailer.length + ); + } + } + } + if (bestMatch) { + const target = imports[bestMatch]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + target, + bestMatchSubpath, + bestMatch, + base, + true, + true, + conditions + ); + if (resolveResult != null) { + return resolveResult; + } + } + } + } + } + throwImportNotDefined(name, packageJSONUrl, base); +} + +let findPnpApi = esmModule.findPnpApi; +if (!findPnpApi) { + const require = createRequire(import.meta.url); + const pnpApi = require(`./.pnp.cjs`); + pnpApi.setup(); + findPnpApi = esmModule.findPnpApi; +} +const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/; +const isRelativeRegexp = /^\.{0,2}\//; +function tryReadFile(filePath) { + try { + return fs.readFileSync(filePath, `utf8`); + } catch (err) { + if (err.code === `ENOENT`) + return void 0; + throw err; + } +} +async function resolvePrivateRequest(specifier, issuer, context, nextResolve) { + const resolved = packageImportsResolve({ + name: specifier, + base: pathToFileURL(issuer), + conditions: new Set(context.conditions), + readFileSyncFn: tryReadFile + }); + if (resolved instanceof URL) { + return { url: resolved.href, shortCircuit: true }; + } else { + if (resolved.startsWith(`#`)) + throw new Error(`Mapping from one private import to another isn't allowed`); + return resolve$1(resolved, context, nextResolve); + } +} +async function resolve$1(originalSpecifier, context, nextResolve) { + if (!findPnpApi || isBuiltin(originalSpecifier)) + return nextResolve(originalSpecifier, context, nextResolve); + let specifier = originalSpecifier; + const url = tryParseURL(specifier, isRelativeRegexp.test(specifier) ? context.parentURL : void 0); + if (url) { + if (url.protocol !== `file:`) + return nextResolve(originalSpecifier, context, nextResolve); + specifier = fileURLToPath(url); + } + const { parentURL, conditions = [] } = context; + const issuer = parentURL && tryParseURL(parentURL)?.protocol === `file:` ? fileURLToPath(parentURL) : process.cwd(); + const pnpapi = findPnpApi(issuer) ?? (url ? findPnpApi(specifier) : null); + if (!pnpapi) + return nextResolve(originalSpecifier, context, nextResolve); + if (specifier.startsWith(`#`)) + return resolvePrivateRequest(specifier, issuer, context, nextResolve); + const dependencyNameMatch = specifier.match(pathRegExp); + let allowLegacyResolve = false; + if (dependencyNameMatch) { + const [, dependencyName, subPath] = dependencyNameMatch; + if (subPath === `` && dependencyName !== `pnpapi`) { + const resolved = pnpapi.resolveToUnqualified(`${dependencyName}/package.json`, issuer); + if (resolved) { + const content = await tryReadFile$1(resolved); + if (content) { + const pkg = JSON.parse(content); + allowLegacyResolve = pkg.exports == null; + } + } + } + } + let result; + try { + result = pnpapi.resolveRequest(specifier, issuer, { + conditions: new Set(conditions), + // TODO: Handle --experimental-specifier-resolution=node + extensions: allowLegacyResolve ? void 0 : [] + }); + } catch (err) { + if (err instanceof Error && `code` in err && err.code === `MODULE_NOT_FOUND`) + err.code = `ERR_MODULE_NOT_FOUND`; + throw err; + } + if (!result) + throw new Error(`Resolving '${specifier}' from '${issuer}' failed`); + const resultURL = pathToFileURL(result); + if (url) { + resultURL.search = url.search; + resultURL.hash = url.hash; + } + if (!parentURL) + setEntrypointPath(fileURLToPath(resultURL)); + return { + url: resultURL.href, + shortCircuit: true + }; +} + +if (!HAS_LAZY_LOADED_TRANSLATORS) { + const binding = process.binding(`fs`); + const originalReadFile = binding.readFileUtf8 || binding.readFileSync; + if (originalReadFile) { + binding[originalReadFile.name] = function(...args) { + try { + return fs.readFileSync(args[0], { + encoding: `utf8`, + // @ts-expect-error - The docs says it needs to be a string but + // links to https://nodejs.org/dist/latest-v20.x/docs/api/fs.html#file-system-flags + // which says it can be a number which matches the implementation. + flag: args[1] + }); + } catch { + } + return originalReadFile.apply(this, args); + }; + } else { + const binding2 = process.binding(`fs`); + const originalfstat = binding2.fstat; + const ZIP_MASK = 4278190080; + const ZIP_MAGIC = 704643072; + binding2.fstat = function(...args) { + const [fd, useBigint, req] = args; + if ((fd & ZIP_MASK) === ZIP_MAGIC && useBigint === false && req === void 0) { + try { + const stats = fs.fstatSync(fd); + return new Float64Array([ + stats.dev, + stats.mode, + stats.nlink, + stats.uid, + stats.gid, + stats.rdev, + stats.blksize, + stats.ino, + stats.size, + stats.blocks + // atime sec + // atime ns + // mtime sec + // mtime ns + // ctime sec + // ctime ns + // birthtime sec + // birthtime ns + ]); + } catch { + } + } + return originalfstat.apply(this, args); + }; + } +} + +const resolve = resolve$1; +const load = load$1; + +export { load, resolve }; diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz new file mode 100644 index 0000000..59e1d83 Binary files /dev/null and b/.yarn/install-state.gz differ diff --git a/package.json b/package.json index 4893031..f882346 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "type": "git", "url": "git+https://github.com/source-academy/scm-slang.git" }, - "main": "index.js", + "main": "dist/index.js", + "types": "dist/index.d.ts", "bugs": { "url": "https://github.com/source-academy/scm-slang/issues" }, @@ -25,6 +26,8 @@ "js-base64": "^3.7.7" }, "scripts": { + "build": "rollup -c --bundleConfigAsCjs", + "start": "npm run build && node dist/index.js", "build-libs": "npx ts-node ./src/compile-libs.ts", "test": "jest", "test-coverage": "jest --coverage", @@ -35,11 +38,14 @@ }, "meta": {}, "devDependencies": { - "@babel/preset-env": "^7.28.0", + "@babel/preset-env": "^7.27.2", + "@rollup/plugin-commonjs": "^28.0.3", + "@rollup/plugin-node-resolve": "^16.0.1", + "@rollup/plugin-typescript": "^12.1.2", "@types/jest": "^30.0.0", "@types/node": "^22.15.30", "@typescript-eslint/eslint-plugin": "^6.4.0", - "babel-jest": "^30.0.5", + "babel-jest": "^30.0.2", "escodegen": "^2.1.0", "eslint": "^8.57.1", "eslint-config-standard-with-typescript": "^43.0.1", @@ -48,9 +54,12 @@ "eslint-plugin-promise": "^6.6.0", "husky": "^9.1.7", "jest": "^30.0.4", - "prettier": "^3.6.2", + "jest-util": "^30.0.5", + "prettier": "^3.5.3", + "rollup": "^4.38.0", "source-map": "^0.7.4", "ts-jest": "^29.4.0", + "tslib": "^2.8.1", "typescript": "*" } } diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..1627e28 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,33 @@ +import resolve from "@rollup/plugin-node-resolve"; +import commonjs from "@rollup/plugin-commonjs"; +import typescript from "@rollup/plugin-typescript"; + +/** + * @type {import('rollup').RollupOptions} + */ +const config = { + input: "src/index.ts", + output: { + file: "dist/index.js", + format: "umd", + name: "ScmSlangRunner", + sourcemap: false, + globals: {}, + }, + plugins: [ + resolve({ + preferBuiltins: false, + browser: true, + }), + commonjs({ + include: "node_modules/**", + transformMixedEsModules: true, + requireReturnsDefault: "auto", + }), + typescript({ + tsconfig: "./tsconfig.json", + }), + ], +}; + +export default config; diff --git a/src/CSE-machine/astToControl.ts b/src/CSE-machine/astToControl.ts new file mode 100644 index 0000000..b4948a7 --- /dev/null +++ b/src/CSE-machine/astToControl.ts @@ -0,0 +1,39 @@ +import { ControlItem } from "./control"; +import { + Expression, + Atomic, + Extended, +} from "../transpiler/types/nodes/scheme-node-types"; + +export function astToControl(expr: Expression): ControlItem[] { + if ( + expr instanceof Atomic.NumericLiteral || + expr instanceof Atomic.BooleanLiteral || + expr instanceof Atomic.StringLiteral || + expr instanceof Atomic.Symbol || + expr instanceof Atomic.Identifier || + expr instanceof Atomic.Lambda || + expr instanceof Atomic.Application || + expr instanceof Atomic.Definition || + expr instanceof Atomic.Reassignment || + expr instanceof Atomic.Conditional || + expr instanceof Atomic.Sequence || + expr instanceof Atomic.Pair || + expr instanceof Atomic.Nil || + expr instanceof Atomic.Import || + expr instanceof Atomic.Export || + expr instanceof Atomic.Vector || + expr instanceof Atomic.DefineSyntax || + expr instanceof Atomic.SyntaxRules || + expr instanceof Extended.FunctionDefinition || + expr instanceof Extended.Let || + expr instanceof Extended.Cond || + expr instanceof Extended.List || + expr instanceof Extended.Begin || + expr instanceof Extended.Delay + ) { + return [expr]; + } + console.log("DEBUG expr:", expr); + throw new Error(`Unhandled expr type: ${expr.constructor.name}`); +} diff --git a/src/CSE-machine/closure.ts b/src/CSE-machine/closure.ts new file mode 100644 index 0000000..088daaf --- /dev/null +++ b/src/CSE-machine/closure.ts @@ -0,0 +1,26 @@ +// closure.ts +import { Expression } from "../transpiler/types/nodes/scheme-node-types"; +import { Environment } from "./environment"; + +export class Closure { + readonly type = "Closure"; + readonly params: string[]; + readonly body: Expression[]; + readonly env: Environment; + readonly declaredName?: string; + readonly srcNode?: Expression; // AST node for debugging + + constructor( + params: string[], + body: Expression[], + env: Environment, + declaredName?: string, + srcNode?: Expression + ) { + this.params = params; + this.body = body; + this.env = env; + this.declaredName = declaredName; + this.srcNode = srcNode; + } +} diff --git a/src/CSE-machine/complex.ts b/src/CSE-machine/complex.ts new file mode 100644 index 0000000..5c382ea --- /dev/null +++ b/src/CSE-machine/complex.ts @@ -0,0 +1,151 @@ +// Complex number implementation for Scheme +// Based on py-slang PyComplexNumber + +export class SchemeComplexNumber { + public real: number; + public imag: number; + + constructor(real: number, imag: number) { + this.real = real; + this.imag = imag; + } + + public static fromNumber(value: number): SchemeComplexNumber { + return new SchemeComplexNumber(value, 0); + } + + public static fromString(str: string): SchemeComplexNumber { + // Handle Scheme complex number syntax: 3+4i, 1-2i, 5i + if (!/[iI]/.test(str)) { + const realVal = Number(str); + if (isNaN(realVal)) { + throw new Error(`Invalid complex string: ${str}`); + } + return new SchemeComplexNumber(realVal, 0); + } + + const lower = str.toLowerCase(); + if (lower.endsWith("i")) { + const numericPart = str.substring(0, str.length - 1); + + // Handle purely imaginary: i, +i, -i + if (numericPart === "" || numericPart === "+") { + return new SchemeComplexNumber(0, 1); + } else if (numericPart === "-") { + return new SchemeComplexNumber(0, -1); + } + + // Check if it's purely imaginary: 5i + const imagVal = Number(numericPart); + if (!isNaN(imagVal)) { + return new SchemeComplexNumber(0, imagVal); + } + + // Handle complex with both real and imaginary parts: 3+4i, 1-2i + const match = numericPart.match( + /^([\+\-]?\d+(?:\.\d+)?(?:[eE][+\-]?\d+)?)([\+\-]\d+(?:\.\d+)?(?:[eE][+\-]?\d+)?)$/ + ); + if (match) { + const realPart = Number(match[1]); + const imagPart = Number(match[2]); + return new SchemeComplexNumber(realPart, imagPart); + } + } + + throw new Error(`Invalid complex string: ${str}`); + } + + public static fromValue( + value: number | string | SchemeComplexNumber + ): SchemeComplexNumber { + if (value instanceof SchemeComplexNumber) { + return value; + } else if (typeof value === "number") { + return SchemeComplexNumber.fromNumber(value); + } else if (typeof value === "string") { + return SchemeComplexNumber.fromString(value); + } else { + throw new Error(`Cannot convert ${typeof value} to complex number`); + } + } + + // Arithmetic operations + public add(other: SchemeComplexNumber): SchemeComplexNumber { + return new SchemeComplexNumber( + this.real + other.real, + this.imag + other.imag + ); + } + + public sub(other: SchemeComplexNumber): SchemeComplexNumber { + return new SchemeComplexNumber( + this.real - other.real, + this.imag - other.imag + ); + } + + public mul(other: SchemeComplexNumber): SchemeComplexNumber { + // (a + bi) * (c + di) = (ac - bd) + (ad + bc)i + const real = this.real * other.real - this.imag * other.imag; + const imag = this.real * other.imag + this.imag * other.real; + return new SchemeComplexNumber(real, imag); + } + + public div(other: SchemeComplexNumber): SchemeComplexNumber { + // (a + bi) / (c + di) = ((ac + bd) + (bc - ad)i) / (c² + d²) + const denominator = other.real * other.real + other.imag * other.imag; + if (denominator === 0) { + throw new Error("Division by zero"); + } + const real = + (this.real * other.real + this.imag * other.imag) / denominator; + const imag = + (this.imag * other.real - this.real * other.imag) / denominator; + return new SchemeComplexNumber(real, imag); + } + + public negate(): SchemeComplexNumber { + return new SchemeComplexNumber(-this.real, -this.imag); + } + + // Comparison (only for equality) + public equals(other: SchemeComplexNumber): boolean { + return this.real === other.real && this.imag === other.imag; + } + + // Magnitude + public abs(): number { + return Math.sqrt(this.real * this.real + this.imag * this.imag); + } + + // String representation + public toString(): string { + if (this.imag === 0) { + return this.real.toString(); + } else if (this.real === 0) { + if (this.imag === 1) return "i"; + if (this.imag === -1) return "-i"; + return `${this.imag}i`; + } else { + const imagPart = + this.imag === 1 + ? "i" + : this.imag === -1 + ? "-i" + : this.imag > 0 + ? `+${this.imag}i` + : `${this.imag}i`; + return `${this.real}${imagPart}`; + } + } + + // Convert to JavaScript number (only if purely real) + public toNumber(): number { + if (this.imag !== 0) { + throw new Error( + "Cannot convert complex number with imaginary part to real number" + ); + } + return this.real; + } +} diff --git a/src/CSE-machine/control.ts b/src/CSE-machine/control.ts new file mode 100644 index 0000000..9be493c --- /dev/null +++ b/src/CSE-machine/control.ts @@ -0,0 +1,92 @@ +// src/CSE-machine/control.ts +import { Expression } from "../transpiler/types/nodes/scheme-node-types"; +import { Stack } from "./stack"; +import { Node, StatementSequence, Instr } from "./types"; + +export type ControlItem = (Node | Instr) & { + isEnvDependent?: boolean; + skipEnv?: boolean; +}; + +export class Control extends Stack { + private numEnvDependentItems: number; + + public constructor(program?: Expression[] | StatementSequence) { + super(); + this.numEnvDependentItems = 0; + // Load program into control stack + if (program) { + if (Array.isArray(program)) { + // If it's an array of expressions, create a sequence + const seq: StatementSequence = { + type: "StatementSequence", + body: program, + location: program[0]?.location || { + start: { line: 1, column: 1 }, + end: { line: 1, column: 1 }, + }, + }; + this.push(seq); + } else { + this.push(program); + } + } + } + + public canAvoidEnvInstr(): boolean { + return this.numEnvDependentItems === 0; + } + + // For testing purposes + public getNumEnvDependentItems(): number { + return this.numEnvDependentItems; + } + + public pop(): ControlItem | undefined { + const item = super.pop(); + if (item !== undefined && this.isEnvDependent(item)) { + this.numEnvDependentItems--; + } + return item; + } + + public push(...items: ControlItem[]): void { + const itemsNew: ControlItem[] = Control.simplifyBlocksWithoutDeclarations( + ...items + ); + itemsNew.forEach((item: ControlItem) => { + if (this.isEnvDependent(item)) { + this.numEnvDependentItems++; + } + }); + super.push(...itemsNew); + } + + private isEnvDependent(item: ControlItem): boolean { + return item.isEnvDependent === true; + } + + /** + * Before pushing block statements on the control stack, we check if the block statement has any declarations. + * If not, the block is converted to a StatementSequence. + * @param items The items being pushed on the control. + * @returns The same set of control items, but with block statements without declarations converted to StatementSequences. + */ + private static simplifyBlocksWithoutDeclarations( + ...items: ControlItem[] + ): ControlItem[] { + const itemsNew: ControlItem[] = []; + items.forEach(item => { + // For Scheme, we don't have block statements like Python, so we just pass through + itemsNew.push(item); + }); + return itemsNew; + } + + public copy(): Control { + const newControl = new Control(); + const stackCopy = super.getStack(); + newControl.push(...stackCopy); + return newControl; + } +} diff --git a/src/CSE-machine/environment.ts b/src/CSE-machine/environment.ts new file mode 100644 index 0000000..4dedfb7 --- /dev/null +++ b/src/CSE-machine/environment.ts @@ -0,0 +1,85 @@ +import { Expression } from "../transpiler/types/nodes/scheme-node-types"; + +export interface Environment { + parent: Environment | null; + frame: Map; + name: string; + get(name: string): any; + set(name: string, value: any): void; + define(name: string, value: any): void; + has(name: string): boolean; + clone(): Environment; +} + +export function createEnvironment( + name: string, + parent: Environment | null = null +): Environment { + return { + parent, + frame: new Map(), + name, + get(name: string): any { + if (this.frame.has(name)) { + return this.frame.get(name); + } + if (this.parent) { + return this.parent.get(name); + } + throw new Error(`Undefined variable: ${name}`); + }, + set(name: string, value: any): void { + if (this.frame.has(name)) { + this.frame.set(name, value); + return; + } + if (this.parent) { + this.parent.set(name, value); + return; + } + throw new Error(`Cannot set undefined variable: ${name}`); + }, + define(name: string, value: any): void { + this.frame.set(name, value); + }, + has(name: string): boolean { + if (this.frame.has(name)) { + return true; + } + if (this.parent) { + return this.parent.has(name); + } + return false; + }, + clone(): Environment { + const clonedFrame = new Map(this.frame); + const clonedParent = this.parent ? this.parent.clone() : null; + const clonedEnv = createEnvironment(this.name, clonedParent); + clonedEnv.frame = clonedFrame; + return clonedEnv; + }, + }; +} + +export function createProgramEnvironment(): Environment { + return createEnvironment("program"); +} + +export function createBlockEnvironment(parent: Environment): Environment { + return createEnvironment("block", parent); +} + +export function currentEnvironment(env: Environment): Environment { + return env; +} + +export function pushEnvironment(env: Environment): Environment { + return createBlockEnvironment(env); +} + +export function popEnvironment(env: Environment): Environment { + if (!env.parent) { + throw new Error("Cannot pop root environment"); + } + return env.parent; +} diff --git a/src/CSE-machine/instrCreator.ts b/src/CSE-machine/instrCreator.ts new file mode 100644 index 0000000..542fd17 --- /dev/null +++ b/src/CSE-machine/instrCreator.ts @@ -0,0 +1,258 @@ +// instrCreator.ts +import { + Expression, + Atomic, + Extended, +} from "../transpiler/types/nodes/scheme-node-types"; +import { Location, Position } from "../transpiler/types/location"; +import { Environment } from "./environment"; +import { + Instr, + InstrType, + DefineInstr, + SetInstr, + CondInstr, + LetInstr, + BeginInstr, + DelayInstr, + PairInstr, + ListInstr, + VectorInstr, + SymbolInstr, + NilInstr, + CarInstr, + CdrInstr, + ConsInstr, + RestoreEnvInstr, + AppInstr, + BranchInstr, +} from "./types"; + +export function createDefineInstr( + name: string, + value: Expression +): DefineInstr { + return { + instrType: InstrType.DEFINE, + srcNode: value, + name, + value, + }; +} + +export function createSetInstr(name: string, value: Expression): SetInstr { + return { + instrType: InstrType.SET, + srcNode: value, + name, + value, + }; +} + +export function createCondInstr( + predicates: Expression[], + consequents: Expression[], + catchall?: Expression +): CondInstr { + return { + instrType: InstrType.COND, + srcNode: predicates[0] || consequents[0], + predicates, + consequents, + catchall, + }; +} + +export function createLetInstr( + identifiers: string[], + values: Expression[], + body: Expression +): LetInstr { + return { + instrType: InstrType.LET, + srcNode: body, + identifiers, + values, + body, + }; +} + +export function createBeginInstr(expressions: Expression[]): BeginInstr { + return { + instrType: InstrType.BEGIN, + srcNode: expressions[0] || expressions[expressions.length - 1], + expressions, + }; +} + +export function createDelayInstr(expression: Expression): DelayInstr { + return { + instrType: InstrType.DELAY, + srcNode: expression, + expression, + }; +} + +export function createPairInstr(car: Expression, cdr: Expression): PairInstr { + return { + instrType: InstrType.PAIR, + srcNode: car, + car, + cdr, + }; +} + +export function createListInstr( + elements: Expression[], + terminator?: Expression +): ListInstr { + return { + instrType: InstrType.LIST, + srcNode: elements[0] || terminator, + elements, + terminator, + }; +} + +export function createVectorInstr(elements: Expression[]): VectorInstr { + return { + instrType: InstrType.VECTOR, + srcNode: elements[0], + elements, + }; +} + +export function createSymbolInstr(value: string): SymbolInstr { + return { + instrType: InstrType.SYMBOL, + srcNode: new Atomic.Symbol( + new Location(new Position(1, 1), new Position(1, 1)), + value + ), + value, + }; +} + +export function createNilInstr(): NilInstr { + return { + instrType: InstrType.NIL, + srcNode: new Atomic.Nil( + new Location(new Position(1, 1), new Position(1, 1)) + ), + }; +} + +export function createCarInstr(pair: Expression): CarInstr { + return { + instrType: InstrType.CAR, + srcNode: pair, + pair, + }; +} + +export function createCdrInstr(pair: Expression): CdrInstr { + return { + instrType: InstrType.CDR, + srcNode: pair, + pair, + }; +} + +export function createConsInstr(car: Expression, cdr: Expression): ConsInstr { + return { + instrType: InstrType.CONS, + srcNode: car, + car, + cdr, + }; +} + +export function createAppInstr( + numOfArgs: number, + srcNode: Expression +): AppInstr { + return { + instrType: InstrType.APPLICATION, + srcNode, + numOfArgs, + }; +} + +export function createBranchInstr( + consequent: Expression, + alternate: Expression | null | undefined +): BranchInstr { + return { + instrType: InstrType.BRANCH, + srcNode: consequent, + consequent, + alternate, + }; +} + +export function createRestoreEnvInstr(env: Environment): RestoreEnvInstr { + return { + instrType: InstrType.RESTORE_ENV, + srcNode: { + type: "StatementSequence", + body: [], + location: { start: { line: 0, column: 0 }, end: { line: 0, column: 0 } }, + }, + env, + }; +} +import { LiteralInstr, VariableInstr, LambdaInstr, IfInstr } from "./types"; + +// Literal instruction +export function createLiteralInstr( + value: any, + srcNode: Expression +): LiteralInstr { + return { + instrType: InstrType.LITERAL, + srcNode, + value, + }; +} + +// Variable instruction +export function createVariableInstr( + name: string, + srcNode: Expression +): VariableInstr { + return { + instrType: InstrType.VARIABLE, + srcNode, + name, + }; +} + +// Lambda instruction +export function createLambdaInstr( + params: string[], + body: Expression[], + srcNode: Expression +): LambdaInstr { + return { + instrType: InstrType.LAMBDA, + srcNode, + params, + body, + }; +} + +// If instruction +export function createIfInstr( + test: Expression, + consequent: Expression, + alternate: Expression, + srcNode: Expression +): IfInstr { + return { + instrType: InstrType.IF, + srcNode, + test, + consequent, + alternate, + }; +} diff --git a/src/CSE-machine/interpreter.ts b/src/CSE-machine/interpreter.ts new file mode 100644 index 0000000..9a44606 --- /dev/null +++ b/src/CSE-machine/interpreter.ts @@ -0,0 +1,477 @@ +import { + Expression, + Atomic, + Extended, +} from "../transpiler/types/nodes/scheme-node-types"; +import { Control, ControlItem } from "./control"; +import { Stash, Value } from "./stash"; +import { + Environment, + createBlockEnvironment, + createEnvironment, + createProgramEnvironment, + currentEnvironment, + popEnvironment, + pushEnvironment, +} from "./environment"; +import { + Instr, + InstrType, + DefineInstr, + SetInstr, + CondInstr, + LetInstr, + BeginInstr, + DelayInstr, + PairInstr, + ListInstr, + VectorInstr, + SymbolInstr, + NilInstr, + CarInstr, + CdrInstr, + ConsInstr, + RestoreEnvInstr, + AppInstr, + BranchInstr, + StatementSequence, +} from "./types"; +import * as instr from "./instrCreator"; +import { primitives } from "./primitives"; +import { SchemeComplexNumber } from "./complex"; + +export interface Context { + control: Control; + stash: Stash; + environment: Environment; + runtime: { + isRunning: boolean; + }; +} + +export function evaluate( + code: string, + program: Expression[], + context: Context +): Value { + try { + // Initialize + context.runtime.isRunning = true; + context.stash = new Stash(); + context.control = new Control(); + + // Initialize environment with primitives + Object.entries(primitives).forEach(([name, func]) => { + context.environment.define(name, { type: "primitive", name, func }); + }); + + // Push expressions in reverse order + for (let i = program.length - 1; i >= 0; i--) { + context.control.push(program[i]); + } + + // Run CSE machine using the existing function + const result = runCSEMachine(code, context, context.control, context.stash); + return result; + } catch (error: any) { + return { type: "error", message: error.message }; + } +} + +function initializeEnvironment(environment: Environment): void { + // Add all primitive functions to the environment + Object.entries(primitives).forEach(([name, func]) => { + environment.define(name, { type: "primitive", name, func }); + }); +} + +function runCSEMachine( + code: string, + context: Context, + control: Control, + stash: Stash +): Value { + while (!control.isEmpty() && context.runtime.isRunning) { + const item = control.pop(); + if (!item) break; + + evaluateControlItem(item, context, control, stash); + } + + const result = stash.pop(); + return result || { type: "nil" }; +} + +function evaluateControlItem( + item: ControlItem, + context: Context, + control: Control, + stash: Stash +): void { + if (isInstr(item)) { + console.log("DEBUG: Evaluating instruction:", item.instrType); + evaluateInstruction(item, context, control, stash); + } else if (isStatementSequence(item)) { + // Handle StatementSequence by pushing all expressions in reverse order + const seq = item as StatementSequence; + for (let i = seq.body.length - 1; i >= 0; i--) { + control.push(seq.body[i]); + } + } else { + console.log("DEBUG: Evaluating expression:", item.constructor.name); + evaluateExpression(item as Expression, context, control, stash); + } +} + +function isStatementSequence(item: ControlItem): item is StatementSequence { + return "type" in item && item.type === "StatementSequence"; +} + +function isInstr(item: ControlItem): item is Instr { + return "instrType" in item; +} + +function evaluateExpression( + expr: Expression, + context: Context, + control: Control, + stash: Stash +): void { + if (expr instanceof Atomic.NumericLiteral) { + console.log("DEBUG: Evaluating NumericLiteral:", expr.value); + stash.push({ type: "number", value: parseFloat(expr.value) }); + } else if (expr instanceof Atomic.ComplexLiteral) { + try { + const complexNumber = SchemeComplexNumber.fromString(expr.value); + stash.push({ type: "complex", value: complexNumber }); + } catch (error: any) { + stash.push({ + type: "error", + message: `Invalid complex number: ${error.message}`, + }); + } + } else if (expr instanceof Atomic.BooleanLiteral) { + stash.push({ type: "boolean", value: expr.value }); + } else if (expr instanceof Atomic.StringLiteral) { + stash.push({ type: "string", value: expr.value }); + } else if (expr instanceof Atomic.Symbol) { + stash.push({ type: "symbol", value: expr.value }); + } else if (expr instanceof Atomic.Nil) { + stash.push({ type: "nil" }); + } else if (expr instanceof Atomic.Identifier) { + const value = context.environment.get(expr.name); + stash.push(value); + } else if (expr instanceof Atomic.Definition) { + // Push the value to be evaluated, then the define instruction + // The value will be evaluated first, then the define instruction will use the result + console.log( + "DEBUG: Definition - expr.value type:", + expr.value.constructor.name + ); + console.log("DEBUG: Definition - expr.value:", expr.value); + + // Push the define instruction AFTER the value evaluation + // This ensures the value is evaluated and pushed to stash before define runs + console.log("DEBUG: Pushing define instruction after value evaluation"); + control.push(instr.createDefineInstr(expr.name.name, expr.value)); + control.push(expr.value); + } else if (expr instanceof Atomic.Reassignment) { + // Push the value to be evaluated, then the set instruction + control.push(expr.value); + control.push(instr.createSetInstr(expr.name.name, expr.value)); + } else if (expr instanceof Atomic.Application) { + console.log( + "DEBUG: Evaluating Application with", + expr.operands.length, + "operands" + ); + + // Push the application instruction first (so it's executed last) + control.push(instr.createAppInstr(expr.operands.length, expr)); + + // Push the operator (so it's evaluated before the instruction) + control.push(expr.operator); + + // Push operands in reverse order (so they are evaluated left-to-right) + for (let i = expr.operands.length - 1; i >= 0; i--) { + control.push(expr.operands[i]); + } + } else if (expr instanceof Atomic.Conditional) { + console.log("DEBUG: Evaluating Conditional expression"); + // Push test expression first, then branch instruction + // The branch instruction will decide which branch to take based on test result + control.push(instr.createBranchInstr(expr.consequent, expr.alternate)); + control.push(expr.test); + } else if (expr instanceof Atomic.Lambda) { + // Create closure + const closure: Value = { + type: "closure", + params: expr.params.map(p => p.name), + body: [expr.body], + env: context.environment, + }; + stash.push(closure); + } else if (expr instanceof Atomic.Pair) { + // Push car and cdr to be evaluated, then pair instruction + control.push(expr.car); + control.push(expr.cdr); + control.push(instr.createPairInstr(expr.car, expr.cdr)); + } else if (expr instanceof Extended.List) { + // Push elements to be evaluated, then list instruction + for (let i = expr.elements.length - 1; i >= 0; i--) { + control.push(expr.elements[i]); + } + control.push(instr.createListInstr(expr.elements, expr.terminator)); + } else if (expr instanceof Atomic.Vector) { + // Push elements to be evaluated, then vector instruction + for (let i = expr.elements.length - 1; i >= 0; i--) { + control.push(expr.elements[i]); + } + control.push(instr.createVectorInstr(expr.elements)); + } else if (expr instanceof Extended.Begin) { + // Push expressions to be evaluated, then begin instruction + for (let i = expr.expressions.length - 1; i >= 0; i--) { + control.push(expr.expressions[i]); + } + control.push(instr.createBeginInstr(expr.expressions)); + } else if (expr instanceof Extended.Let) { + // Push values, then let instruction + for (let i = expr.values.length - 1; i >= 0; i--) { + control.push(expr.values[i]); + } + control.push( + instr.createLetInstr( + expr.identifiers.map(id => id.name), + expr.values, + expr.body + ) + ); + } else if (expr instanceof Extended.Cond) { + // Push predicates and consequents, then cond instruction + for (let i = expr.predicates.length - 1; i >= 0; i--) { + control.push(expr.predicates[i]); + control.push(expr.consequents[i]); + } + if (expr.catchall) { + control.push(expr.catchall); + } + control.push( + instr.createCondInstr(expr.predicates, expr.consequents, expr.catchall) + ); + } else if (expr instanceof Extended.Delay) { + // Push expression to be evaluated, then delay instruction + control.push(expr.expression); + control.push(instr.createDelayInstr(expr.expression)); + } else { + throw new Error(`Unsupported expression type: ${expr.constructor.name}`); + } +} + +function evaluateInstruction( + instruction: Instr, + context: Context, + control: Control, + stash: Stash +): void { + switch (instruction.instrType) { + case InstrType.DEFINE: { + const value = stash.pop(); + if (!value) { + console.error("DEBUG: Stash is empty when define instruction runs"); + console.error("DEBUG: Stash size:", stash.size()); + console.error("DEBUG: Define instruction:", instruction); + throw new Error("No value to define"); + } + const defineInstr = instruction as DefineInstr; + console.log("DEBUG: Defining", defineInstr.name, "with value:", value); + context.environment.define(defineInstr.name, value); + // Push void value to indicate successful definition + stash.push({ type: "void" }); + break; + } + + case InstrType.SET: { + const value = stash.pop(); + if (!value) throw new Error("No value to set"); + const setInstr = instruction as SetInstr; + context.environment.set(setInstr.name, value); + break; + } + + case InstrType.APPLICATION: { + console.log("DEBUG: Executing APPLICATION instruction"); + const appInstr = instruction as AppInstr; + const operator = stash.pop(); + if (!operator) throw new Error("No operator for application"); + console.log("DEBUG: Operator:", operator); + + const args: Value[] = []; + for (let i = 0; i < appInstr.numOfArgs; i++) { + const arg = stash.pop(); + if (arg) args.unshift(arg); + } + console.log("DEBUG: Arguments:", args); + + if (operator.type === "closure") { + // Apply closure - save current environment and create new one + const currentEnv = context.environment; + const newEnv = createBlockEnvironment(operator.env); + + // Bind parameters to the new environment + for (let i = 0; i < operator.params.length; i++) { + newEnv.define(operator.params[i], args[i] || { type: "nil" }); + } + + // Set the new environment for function execution + context.environment = newEnv; + + // Push a marker to restore environment after function execution + control.push(instr.createRestoreEnvInstr(currentEnv)); + + // Push function body for execution + control.push(...operator.body); + } else if (operator.type === "primitive") { + // Apply primitive function + try { + const result = operator.func(...args); + stash.push(result); + } catch (error: any) { + stash.push({ type: "error", message: error.message }); + } + } else { + stash.push({ + type: "error", + message: `Cannot apply non-function: ${operator.type}`, + }); + } + break; + } + + case InstrType.BRANCH: { + console.log("DEBUG: Executing BRANCH instruction"); + const test = stash.pop(); + if (!test) { + console.error("DEBUG: No test value for branch - stash is empty"); + console.error("DEBUG: Stash size:", stash.size()); + throw new Error("No test value for branch"); + } + console.log("DEBUG: Test value:", test); + const branchInstr = instruction as BranchInstr; + + // Check if test is truthy (not false and not nil) + const isTruthy = test.type !== "boolean" || test.value !== false; + if (isTruthy && test.type !== "nil") { + console.log("DEBUG: Taking consequent branch"); + control.push(branchInstr.consequent); + } else if (branchInstr.alternate) { + console.log("DEBUG: Taking alternate branch"); + control.push(branchInstr.alternate); + } + break; + } + + case InstrType.PAIR: { + const cdr = stash.pop(); + const car = stash.pop(); + if (!car || !cdr) throw new Error("Missing car or cdr for pair"); + + stash.push({ type: "pair", car, cdr }); + break; + } + + case InstrType.LIST: { + const listInstr = instruction as ListInstr; + const elements: Value[] = []; + for (let i = 0; i < listInstr.elements.length; i++) { + const element = stash.pop(); + if (element) elements.unshift(element); + } + stash.push({ type: "list", elements }); + break; + } + + case InstrType.VECTOR: { + const vectorInstr = instruction as VectorInstr; + const elements: Value[] = []; + for (let i = 0; i < vectorInstr.elements.length; i++) { + const element = stash.pop(); + if (element) elements.unshift(element); + } + stash.push({ type: "vector", elements }); + break; + } + + case InstrType.BEGIN: { + // Begin evaluates all expressions and returns the last one + const beginInstr = instruction as BeginInstr; + const expressions = beginInstr.expressions; + if (expressions.length === 0) { + stash.push({ type: "nil" }); + } else if (expressions.length === 1) { + control.push(expressions[0]); + } else { + // Push all expressions to be evaluated + for (let i = expressions.length - 1; i >= 0; i--) { + control.push(expressions[i]); + } + } + break; + } + + case InstrType.LET: { + // Let creates a new environment with bindings + const letInstr = instruction as LetInstr; + const values: Value[] = []; + for (let i = 0; i < letInstr.values.length; i++) { + const value = stash.pop(); + if (value) values.unshift(value); + } + + const newEnv = createBlockEnvironment(context.environment); + for (let i = 0; i < letInstr.identifiers.length; i++) { + newEnv.define(letInstr.identifiers[i], values[i] || { type: "nil" }); + } + + context.environment = newEnv; + control.push(letInstr.body); + break; + } + + case InstrType.COND: { + // Cond evaluates predicates and consequents + const condInstr = instruction as CondInstr; + const predicates = condInstr.predicates; + const consequents = condInstr.consequents; + + if (predicates.length === 0) { + if (condInstr.catchall) { + control.push(condInstr.catchall); + } else { + stash.push({ type: "nil" }); + } + } else { + // Push first predicate and consequent + control.push(predicates[0]); + control.push(consequents[0]); + // Push remaining predicates and consequents + for (let i = 1; i < predicates.length; i++) { + control.push(predicates[i]); + control.push(consequents[i]); + } + if (condInstr.catchall) { + control.push(condInstr.catchall); + } + } + break; + } + + case InstrType.RESTORE_ENV: { + const restoreInstr = instruction as RestoreEnvInstr; + context.environment = restoreInstr.env; + break; + } + + default: + throw new Error(`Unsupported instruction type: ${instruction.instrType}`); + } +} diff --git a/src/CSE-machine/primitives.ts b/src/CSE-machine/primitives.ts new file mode 100644 index 0000000..e6f22fb --- /dev/null +++ b/src/CSE-machine/primitives.ts @@ -0,0 +1,244 @@ +import { Value } from "./stash"; +import { SchemeComplexNumber } from "./complex"; + +// Helper functions for numeric operations +function isNumericValue(value: Value): boolean { + return value.type === "number" || value.type === "complex"; +} + +function toComplexNumber(value: Value): SchemeComplexNumber { + if (value.type === "number") { + return SchemeComplexNumber.fromNumber(value.value); + } else if (value.type === "complex") { + return value.value; + } else { + throw new Error(`Cannot convert ${value.type} to complex number`); + } +} + +function complexValueToResult(complex: SchemeComplexNumber): Value { + // If purely real, return as number + if (complex.imag === 0) { + return { type: "number", value: complex.real }; + } + return { type: "complex", value: complex }; +} + +export const primitives: Record Value> = { + // Arithmetic operations + "+": (...args: Value[]) => { + if (args.length === 0) return { type: "number", value: 0 }; + + // Check if all args are numeric (number or complex) + if (!args.every(isNumericValue)) { + throw new Error("+ requires numeric arguments"); + } + + // Convert all to complex and add + const complexNumbers = args.map(toComplexNumber); + const result = complexNumbers.reduce( + (acc, curr) => acc.add(curr), + SchemeComplexNumber.fromNumber(0) + ); + return complexValueToResult(result); + }, + + "*": (...args: Value[]) => { + if (args.length === 0) return { type: "number", value: 1 }; + + if (!args.every(isNumericValue)) { + throw new Error("* requires numeric arguments"); + } + + const complexNumbers = args.map(toComplexNumber); + const result = complexNumbers.reduce( + (acc, curr) => acc.mul(curr), + SchemeComplexNumber.fromNumber(1) + ); + return complexValueToResult(result); + }, + + "-": (...args: Value[]) => { + if (args.length === 0) + throw new Error("Subtraction requires at least one argument"); + + if (!args.every(isNumericValue)) { + throw new Error("- requires numeric arguments"); + } + + const complexNumbers = args.map(toComplexNumber); + const result = + args.length === 1 + ? complexNumbers[0].negate() + : complexNumbers.reduce((acc, curr) => acc.sub(curr)); + return complexValueToResult(result); + }, + + "/": (...args: Value[]) => { + if (args.length === 0) + throw new Error("Division requires at least one argument"); + + if (!args.every(isNumericValue)) { + throw new Error("/ requires numeric arguments"); + } + + const complexNumbers = args.map(toComplexNumber); + const result = + args.length === 1 + ? SchemeComplexNumber.fromNumber(1).div(complexNumbers[0]) + : complexNumbers.reduce((acc, curr) => acc.div(curr)); + return complexValueToResult(result); + }, + + // Comparison operations + "=": (a: Value, b: Value) => { + if (a.type !== b.type) return { type: "boolean", value: false }; + if (a.type === "number" && b.type === "number") { + return { type: "boolean", value: a.value === b.value }; + } + if (a.type === "string" && b.type === "string") { + return { type: "boolean", value: a.value === b.value }; + } + if (a.type === "boolean" && b.type === "boolean") { + return { type: "boolean", value: a.value === b.value }; + } + return { type: "boolean", value: false }; + }, + + ">": (a: Value, b: Value) => { + if (a.type !== "number" || b.type !== "number") { + throw new Error("> requires numbers"); + } + return { type: "boolean", value: a.value > b.value }; + }, + + "<": (a: Value, b: Value) => { + if (a.type !== "number" || b.type !== "number") { + throw new Error("< requires numbers"); + } + return { type: "boolean", value: a.value < b.value }; + }, + + ">=": (a: Value, b: Value) => { + if (a.type !== "number" || b.type !== "number") { + throw new Error(">= requires numbers"); + } + return { type: "boolean", value: a.value >= b.value }; + }, + + "<=": (a: Value, b: Value) => { + if (a.type !== "number" || b.type !== "number") { + throw new Error("<= requires numbers"); + } + return { type: "boolean", value: a.value <= b.value }; + }, + + // Logical operations + not: (x: Value) => { + if (x.type === "boolean") { + return { type: "boolean", value: !x.value }; + } + return { type: "boolean", value: false }; + }, + + and: (...args: Value[]) => { + for (const arg of args) { + if (arg.type === "boolean" && !arg.value) { + return { type: "boolean", value: false }; + } + } + return { type: "boolean", value: true }; + }, + + or: (...args: Value[]) => { + for (const arg of args) { + if (arg.type === "boolean" && arg.value) { + return { type: "boolean", value: true }; + } + } + return { type: "boolean", value: false }; + }, + + // List operations + cons: (car: Value, cdr: Value) => { + return { type: "pair", car, cdr }; + }, + + car: (pair: Value) => { + if (pair.type === "pair") { + return pair.car; + } else if (pair.type === "list" && pair.elements.length > 0) { + return pair.elements[0]; + } else { + throw new Error("car requires a pair or non-empty list"); + } + }, + + cdr: (pair: Value) => { + if (pair.type === "pair") { + return pair.cdr; + } else if (pair.type === "list" && pair.elements.length > 0) { + return { type: "list", elements: pair.elements.slice(1) }; + } else { + throw new Error("cdr requires a pair or non-empty list"); + } + }, + + list: (...args: Value[]) => { + return { type: "list", elements: args }; + }, + + // Type predicates + "null?": (value: Value) => { + return { type: "boolean", value: value.type === "nil" }; + }, + + "pair?": (value: Value) => { + return { + type: "boolean", + value: value.type === "pair" || value.type === "list", + }; + }, + + "list?": (value: Value) => { + return { + type: "boolean", + value: value.type === "list" || value.type === "nil", + }; + }, + + "number?": (value: Value) => { + return { type: "boolean", value: value.type === "number" }; + }, + + "string?": (value: Value) => { + return { type: "boolean", value: value.type === "string" }; + }, + + "boolean?": (value: Value) => { + return { type: "boolean", value: value.type === "boolean" }; + }, + + "symbol?": (value: Value) => { + return { type: "boolean", value: value.type === "symbol" }; + }, + + length: (value: Value) => { + if (value.type === "list") { + return { type: "number", value: value.elements.length }; + } else if (value.type === "pair") { + // Recursively count pairs + let count = 0; + let current: Value = value; + while (current.type === "pair") { + count++; + current = current.cdr; + } + return { type: "number", value: count }; + } else if (value.type === "nil") { + return { type: "number", value: 0 }; + } else { + throw new Error("length requires a list or pair"); + } + }, +}; diff --git a/src/CSE-machine/runCSEMachine.ts b/src/CSE-machine/runCSEMachine.ts new file mode 100644 index 0000000..d32753d --- /dev/null +++ b/src/CSE-machine/runCSEMachine.ts @@ -0,0 +1,103 @@ +import { ControlItem } from "./control"; +import { Environment } from "./environment"; +import { Stack } from "./stack"; +import { Atomic } from "../transpiler/types/nodes/scheme-node-types"; +import { astToControl } from "./astToControl"; + +let globalStepCount = 0; + +export function runCSE(control: ControlItem[], env: Environment): any { + const stack = new Stack(); + let stepCount = 0; + + while (control.length > 0) { + globalStepCount += 1; + const current = control.shift()!; + + // Kiểm tra loại node bằng instanceof + if ( + current instanceof Atomic.NumericLiteral || + current instanceof Atomic.BooleanLiteral || + current instanceof Atomic.StringLiteral || + current instanceof Atomic.Symbol + ) { + stack.push(current.value); + continue; + } + + if (current instanceof Atomic.Identifier) { + const val = env.get(current.name); + stack.push(val); + continue; + } + + if (current instanceof Atomic.Definition) { + const valControl = astToControl(current.value); + const val = runCSE(valControl, env); + if (env.define) env.define(current.name.name, val); + else env.set(current.name.name, val); + continue; + } + + if (current instanceof Atomic.Lambda) { + const closure = { + type: "Closure", + params: current.params.map(p => p.name), + body: current.body, + env: env.clone ? env.clone() : env, // fallback nếu không có clone + }; + stack.push(closure); + continue; + } + + if (current instanceof Atomic.Application) { + const fn = evaluateExpr(current.operator, env); + const args = current.operands.map(arg => evaluateExpr(arg, env)); + if (typeof fn === "function") { + stack.push(fn(...args)); + } else if (typeof fn === "object" && fn.type === "Closure") { + const newEnv = fn.env.extend ? fn.env.extend() : fn.env; + fn.params.forEach((p: string, i: number) => { + if (newEnv.define) newEnv.define(p, args[i]); + else newEnv.set(p, args[i]); + }); + const bodyControl = astToControl(fn.body); + const result = runCSE(bodyControl, newEnv); + stack.push(result); + } else { + throw new Error("Invalid function application"); + } + continue; + } + + if (current instanceof Atomic.Conditional) { + const testVal = evaluateExpr(current.test, env); + const nextExpr = testVal ? current.consequent : current.alternate; + const controlItems = astToControl(nextExpr); + control.unshift(...controlItems); + continue; + } + + throw new Error(`Unknown control item: ${current.constructor.name}`); + } + + return stack.pop(); +} + +function evaluateExpr(expr: any, env: Environment): any { + if (expr instanceof Atomic.Identifier) { + return env.get(expr.name); + } + if (expr instanceof Atomic.NumericLiteral) { + return expr.value; + } + if (expr instanceof Atomic.Lambda) { + return { + type: "Closure", + params: expr.params.map((p: any) => p.name), + body: expr.body, + env: env.clone ? env.clone() : env, + }; + } + throw new Error(`Unhandled expr: ${JSON.stringify(expr)}`); +} diff --git a/src/CSE-machine/simple-parser.ts b/src/CSE-machine/simple-parser.ts new file mode 100644 index 0000000..6a83a4f --- /dev/null +++ b/src/CSE-machine/simple-parser.ts @@ -0,0 +1,535 @@ +import { + Expression, + Atomic, + Extended, +} from "../transpiler/types/nodes/scheme-node-types"; +import { Location, Position } from "../transpiler/types/location"; +import { SchemeComplexNumber } from "./complex"; + +interface Token { + type: string; + value: string; + line: number; + column: number; +} + +export function parseSchemeSimple(code: string): Expression[] { + const tokens = tokenize(code); + const parser = new SimpleSchemeParser(tokens); + return parser.parse(); +} + +function tokenize(code: string): Token[] { + const tokens: Token[] = []; + let current = 0; + let line = 1; + let column = 1; + + while (current < code.length) { + const char = code[current]; + + if (char === "(" || char === "[") { + tokens.push({ type: "LPAREN", value: char, line, column }); + current++; + column++; + } else if (char === ")" || char === "]") { + tokens.push({ type: "RPAREN", value: char, line, column }); + current++; + column++; + } else if (char === "'") { + tokens.push({ type: "QUOTE", value: char, line, column }); + current++; + column++; + } else if (isWhitespace(char)) { + if (char === "\n") { + line++; + column = 1; + } else { + column++; + } + current++; + } else if (char === ";") { + // Skip comments + while (current < code.length && code[current] !== "\n") { + current++; + } + } else if (char === '"') { + // String literal + const startColumn = column; + current++; + column++; + let value = ""; + while (current < code.length && code[current] !== '"') { + if (code[current] === "\\" && current + 1 < code.length) { + current++; + column++; + value += code[current]; + } else { + value += code[current]; + } + current++; + column++; + } + if (current < code.length) { + current++; + column++; + } + tokens.push({ type: "STRING", value, line, column: startColumn }); + } else if ( + isDigit(char) || + ((char === "+" || char === "-") && isDigit(code[current + 1])) + ) { + // Number literal (including complex numbers) + const startColumn = column; + let value = ""; + + // Handle potential complex numbers or signed numbers + if (char === "+" || char === "-") { + value += char; + current++; + column++; + } + + // Read number part + while ( + current < code.length && + (isDigit(code[current]) || + code[current] === "." || + code[current] === "e" || + code[current] === "E" || + code[current] === "+" || + code[current] === "-") + ) { + value += code[current]; + current++; + column++; + } + + // Check for complex number suffix 'i' or 'I' + if ( + current < code.length && + (code[current] === "i" || code[current] === "I") + ) { + value += code[current]; + current++; + column++; + tokens.push({ type: "COMPLEX", value, line, column: startColumn }); + } else { + tokens.push({ type: "NUMBER", value, line, column: startColumn }); + } + } else if (char === "#") { + // Handle # prefixed tokens + const startColumn = column; + current++; + column++; + let value = "#"; + while (current < code.length && isIdentifierPart(code[current])) { + value += code[current]; + current++; + column++; + } + + // Check for special keywords + if (value === "#t" || value === "#true") { + tokens.push({ + type: "BOOLEAN", + value: "true", + line, + column: startColumn, + }); + } else if (value === "#f" || value === "#false") { + tokens.push({ + type: "BOOLEAN", + value: "false", + line, + column: startColumn, + }); + } else { + tokens.push({ type: "IDENTIFIER", value, line, column: startColumn }); + } + } else if (isIdentifierStart(char)) { + // Identifier or keyword + const startColumn = column; + let value = ""; + while (current < code.length && isIdentifierPart(code[current])) { + value += code[current]; + current++; + column++; + } + + tokens.push({ type: "IDENTIFIER", value, line, column: startColumn }); + } else { + // Unknown character + current++; + column++; + } + } + + tokens.push({ type: "EOF", value: "", line, column }); + return tokens; +} + +function isWhitespace(char: string): boolean { + return /\s/.test(char); +} + +function isDigit(char: string): boolean { + return /\d/.test(char); +} + +function isIdentifierStart(char: string): boolean { + return /[a-zA-Z_+\-*/=<>!?]/.test(char); +} + +function isIdentifierPart(char: string): boolean { + return /[a-zA-Z0-9_+\-*/=<>!?]/.test(char); +} + +class SimpleSchemeParser { + private tokens: Token[]; + private current: number = 0; + + constructor(tokens: Token[]) { + this.tokens = tokens; + } + + parse(): Expression[] { + const expressions: Expression[] = []; + + while (!this.isAtEnd()) { + const expr = this.parseExpression(); + if (expr) { + expressions.push(expr); + } + } + + return expressions; + } + + private parseExpression(): Expression | null { + const token = this.peek(); + + if (token.type === "NUMBER") { + return this.parseNumber(); + } else if (token.type === "COMPLEX") { + return this.parseComplex(); + } else if (token.type === "STRING") { + return this.parseString(); + } else if (token.type === "BOOLEAN") { + return this.parseBoolean(); + } else if (token.type === "IDENTIFIER") { + return this.parseIdentifier(); + } else if (token.type === "LPAREN") { + return this.parseList(); + } else if (token.type === "QUOTE") { + return this.parseQuote(); + } else { + this.advance(); // Skip unknown tokens + return null; + } + } + + private parseNumber(): Expression { + const token = this.advance(); + const location = this.createLocation(token); + return new Atomic.NumericLiteral(location, token.value); + } + + private parseComplex(): Expression { + const token = this.advance(); + const location = this.createLocation(token); + return new Atomic.ComplexLiteral(location, token.value); + } + + private parseString(): Expression { + const token = this.advance(); + const location = this.createLocation(token); + return new Atomic.StringLiteral(location, token.value); + } + + private parseBoolean(): Expression { + const token = this.advance(); + const location = this.createLocation(token); + return new Atomic.BooleanLiteral(location, token.value === "true"); + } + + private parseIdentifier(): Expression { + const token = this.advance(); + const location = this.createLocation(token); + return new Atomic.Identifier(location, token.value); + } + + private parseList(): Expression { + const openToken = this.advance(); // Consume '(' + const location = this.createLocation(openToken); + const elements: Expression[] = []; + + while (!this.isAtEnd() && this.peek().type !== "RPAREN") { + const expr = this.parseExpression(); + if (expr) { + elements.push(expr); + } + } + + if (this.peek().type === "RPAREN") { + this.advance(); // Consume ')' + } + + if (elements.length === 0) { + return new Atomic.Nil(location); + } + + // Check for special forms + if (elements.length > 0 && elements[0] instanceof Atomic.Identifier) { + const first = elements[0] as Atomic.Identifier; + console.log("DEBUG: parseList - checking special form:", first.name); + + if (first.name === "define") { + return this.parseDefine(elements, location); + } else if (first.name === "lambda") { + return this.parseLambda(elements, location); + } else if (first.name === "if") { + return this.parseConditional(elements, location); + } else if (first.name === "let") { + return this.parseLet(elements, location); + } else if (first.name === "begin") { + return this.parseBegin(elements, location); + } else if (first.name === "cond") { + return this.parseCond(elements, location); + } + } + + // Regular function application (including (list) which should be a function call) + if (elements.length > 0) { + const operator = elements[0]; + const operands = elements.slice(1); + return new Atomic.Application(location, operator, operands); + } + + // Empty list literal + return new Extended.List(location, elements); + } + + private parseDefine(elements: Expression[], location: Location): Expression { + if (elements.length < 3) { + throw new Error("define requires at least 2 arguments"); + } + + const name = elements[1]; + const value = elements[2]; + + console.log("DEBUG: parseDefine - name type:", name.constructor.name); + console.log("DEBUG: parseDefine - name:", name); + console.log( + "DEBUG: parseDefine - Extended.List check:", + name instanceof Extended.List + ); + + // Handle function definition: (define (func-name args) body) + if ( + (name instanceof Extended.List && name.elements.length > 0) || + (name instanceof Atomic.Application && + name.operator instanceof Atomic.Identifier) + ) { + console.log("DEBUG: parseDefine - Processing function definition"); + + let funcName: Atomic.Identifier; + let params: Atomic.Identifier[]; + + if (name instanceof Extended.List) { + funcName = name.elements[0] as Atomic.Identifier; + params = name.elements + .slice(1) + .filter(e => e instanceof Atomic.Identifier) as Atomic.Identifier[]; + } else { + // Handle Application case: (add x y) -> operator is 'add', operands are [x, y] + funcName = name.operator as Atomic.Identifier; + params = name.operands.filter( + e => e instanceof Atomic.Identifier + ) as Atomic.Identifier[]; + } + + console.log( + "DEBUG: parseDefine - funcName type:", + funcName.constructor.name + ); + console.log("DEBUG: parseDefine - funcName:", funcName.name); + + if (!(funcName instanceof Atomic.Identifier)) { + throw new Error("function name must be an identifier"); + } + + console.log("DEBUG: parseDefine - params:", params.length); + + // Create lambda expression for the function body + const lambda = new Atomic.Lambda(location, value, params); + + // Return definition with lambda as value + return new Atomic.Definition(location, funcName, lambda); + } + + // Handle variable definition: (define name value) + console.log("DEBUG: parseDefine - Processing variable definition"); + if (!(name instanceof Atomic.Identifier)) { + throw new Error("define name must be an identifier"); + } + + return new Atomic.Definition(location, name, value); + } + + private parseLambda(elements: Expression[], location: Location): Expression { + if (elements.length < 3) { + throw new Error("lambda requires at least 2 arguments"); + } + + const paramsExpr = elements[1]; + const body = elements[2]; + + console.log( + "DEBUG: parseLambda - paramsExpr type:", + paramsExpr.constructor.name + ); + console.log("DEBUG: parseLambda - paramsExpr:", paramsExpr); + + let params: Atomic.Identifier[] = []; + if (paramsExpr instanceof Extended.List) { + // Handle parameter list like (x y z) + params = paramsExpr.elements.filter( + e => e instanceof Atomic.Identifier + ) as Atomic.Identifier[]; + } else if ( + paramsExpr instanceof Atomic.Application && + paramsExpr.operator instanceof Atomic.Identifier + ) { + // Handle Application case: (x y) -> operator is 'x', operands are ['y'] + params = [paramsExpr.operator as Atomic.Identifier]; + params.push( + ...(paramsExpr.operands.filter( + e => e instanceof Atomic.Identifier + ) as Atomic.Identifier[]) + ); + } else if (paramsExpr instanceof Atomic.Identifier) { + // Handle single parameter like x + params = [paramsExpr]; + } else if (paramsExpr instanceof Atomic.Nil) { + // Handle empty parameter list like () + params = []; + } else { + throw new Error("lambda parameters must be identifiers"); + } + + console.log("DEBUG: parseLambda - params:", params.length); + return new Atomic.Lambda(location, body, params); + } + + private parseConditional( + elements: Expression[], + location: Location + ): Expression { + if (elements.length !== 4) { + throw new Error("if requires exactly 3 arguments"); + } + + const test = elements[1]; + const consequent = elements[2]; + const alternate = elements[3]; + + return new Atomic.Conditional(location, test, consequent, alternate); + } + + private parseLet(elements: Expression[], location: Location): Expression { + if (elements.length < 3) { + throw new Error("let requires at least 2 arguments"); + } + + const bindingsExpr = elements[1]; + const body = elements[2]; + + let identifiers: Atomic.Identifier[] = []; + let values: Expression[] = []; + + if (bindingsExpr instanceof Extended.List) { + for (const binding of bindingsExpr.elements) { + if (binding instanceof Extended.List && binding.elements.length === 2) { + const id = binding.elements[0]; + const val = binding.elements[1]; + if (id instanceof Atomic.Identifier) { + identifiers.push(id); + values.push(val); + } + } + } + } + + return new Extended.Let(location, identifiers, values, body); + } + + private parseBegin(elements: Expression[], location: Location): Expression { + const expressions = elements.slice(1); + return new Extended.Begin(location, expressions); + } + + private parseCond(elements: Expression[], location: Location): Expression { + const clauses = elements.slice(1); + const predicates: Expression[] = []; + const consequents: Expression[] = []; + let catchall: Expression | undefined; + + for (const clause of clauses) { + if (clause instanceof Extended.List && clause.elements.length >= 2) { + const predicate = clause.elements[0]; + const consequent = clause.elements[1]; + + if ( + predicate instanceof Atomic.Identifier && + predicate.name === "else" + ) { + catchall = consequent; + } else { + predicates.push(predicate); + consequents.push(consequent); + } + } + } + + return new Extended.Cond(location, predicates, consequents, catchall); + } + + private parseQuote(): Expression { + this.advance(); // Consume quote + const quoted = this.parseExpression(); + if (!quoted) { + throw new Error("quote requires an expression"); + } + // Convert quoted expression to symbol if it's an identifier + if (quoted instanceof Atomic.Identifier) { + return new Atomic.Symbol(quoted.location, quoted.name); + } + return quoted; // Return the quoted expression directly + } + + private createLocation(token: Token): Location { + const start = new Position(token.line, token.column); + const end = new Position(token.line, token.column + token.value.length); + return new Location(start, end); + } + + private advance(): Token { + if (!this.isAtEnd()) { + this.current++; + } + return this.previous(); + } + + private peek(): Token { + return this.tokens[this.current]; + } + + private previous(): Token { + return this.tokens[this.current - 1]; + } + + private isAtEnd(): boolean { + return this.peek().type === "EOF"; + } +} diff --git a/src/CSE-machine/stack.ts b/src/CSE-machine/stack.ts new file mode 100644 index 0000000..31125f6 --- /dev/null +++ b/src/CSE-machine/stack.ts @@ -0,0 +1,48 @@ +// stack.ts + +export interface IStack { + push(...items: T[]): void; + pop(): T | undefined; + peek(): T | undefined; + size(): number; + isEmpty(): boolean; + getStack(): T[]; +} + +export class Stack { + private items: T[] = []; + + push(...items: T[]): void { + this.items.push(...items); + } + + pop(): T | undefined { + return this.items.pop(); + } + + peek(): T | undefined { + return this.items[this.items.length - 1]; + } + + isEmpty(): boolean { + return this.items.length === 0; + } + + size(): number { + return this.items.length; + } + + clear(): void { + this.items = []; + } + + getStack(): T[] { + return [...this.items]; + } +} +//Checking +const s = new Stack(); +s.push(1, 2, 3); +console.log(s.pop()); // 3 +console.log(s.peek()); // 2 +console.log(s.toString()); diff --git a/src/CSE-machine/stash.ts b/src/CSE-machine/stash.ts new file mode 100644 index 0000000..927a14a --- /dev/null +++ b/src/CSE-machine/stash.ts @@ -0,0 +1,44 @@ +import { SchemeComplexNumber } from "./complex"; + +export type Value = + | { type: "number"; value: number } + | { type: "boolean"; value: boolean } + | { type: "string"; value: string } + | { type: "symbol"; value: string } + | { type: "complex"; value: SchemeComplexNumber } + | { type: "pair"; car: Value; cdr: Value } + | { type: "list"; elements: Value[] } + | { type: "vector"; elements: Value[] } + | { type: "nil" } + | { type: "void" } + | { type: "closure"; params: string[]; body: any[]; env: any } + | { type: "primitive"; name: string; func: Function } + | { type: "error"; message: string }; + +export class Stash { + private values: Value[] = []; + + push(value: Value): void { + this.values.push(value); + } + + pop(): Value | undefined { + return this.values.pop(); + } + + peek(): Value | undefined { + return this.values[this.values.length - 1]; + } + + size(): number { + return this.values.length; + } + + clear(): void { + this.values = []; + } + + getValues(): Value[] { + return [...this.values]; + } +} diff --git a/src/CSE-machine/types.ts b/src/CSE-machine/types.ts new file mode 100644 index 0000000..36c610f --- /dev/null +++ b/src/CSE-machine/types.ts @@ -0,0 +1,233 @@ +// types.ts +import { Expression } from "../transpiler/types/nodes/scheme-node-types"; +import { Environment } from "./environment"; + +export type Node = { isEnvDependent?: boolean } & ( + | Expression + | StatementSequence +); + +export interface StatementSequence { + type: "StatementSequence"; + body: Expression[]; + location: any; +} + +export enum InstrType { + RESET = "Reset", + WHILE = "While", + FOR = "For", + ASSIGNMENT = "Assignment", + APPLICATION = "Application", + UNARY_OP = "UnaryOperation", + BINARY_OP = "BinaryOperation", + BOOL_OP = "BoolOperation", + COMPARE = "Compare", + CALL = "Call", + RETURN = "Return", + BREAK = "Break", + CONTINUE = "Continue", + IF = "If", + FUNCTION_DEF = "FunctionDef", + LAMBDA = "Lambda", + MULTI_LAMBDA = "MultiLambda", + GROUPING = "Grouping", + LITERAL = "Literal", + VARIABLE = "Variable", + TERNARY = "Ternary", + PASS = "Pass", + ASSERT = "Assert", + IMPORT = "Import", + GLOBAL = "Global", + NONLOCAL = "NonLocal", + Program = "Program", + BRANCH = "Branch", + POP = "Pop", + ENVIRONMENT = "environment", + MARKER = "marker", + // Scheme-specific instructions + DEFINE = "Define", + SET = "Set", + COND = "Cond", + LET = "Let", + BEGIN = "Begin", + DELAY = "Delay", + PAIR = "Pair", + LIST = "List", + VECTOR = "Vector", + SYMBOL = "Symbol", + NIL = "Nil", + CAR = "Car", + CDR = "Cdr", + CONS = "Cons", + RESTORE_ENV = "RestoreEnv", +} + +interface BaseInstr { + instrType: InstrType; + srcNode: Node; + isEnvDependent?: boolean; +} + +export interface WhileInstr extends BaseInstr { + test: Expression; + body: Expression; +} + +export interface ForInstr extends BaseInstr { + init: Expression; + test: Expression; + update: Expression; + body: Expression; +} + +export interface AssmtInstr extends BaseInstr { + symbol: string; + constant: boolean; + declaration: boolean; +} + +export interface UnOpInstr extends BaseInstr { + symbol: string; +} + +export interface BinOpInstr extends BaseInstr { + symbol: string; +} + +export interface AppInstr extends BaseInstr { + numOfArgs: number; + srcNode: Expression; +} + +export interface BranchInstr extends BaseInstr { + consequent: Expression; + alternate: Expression | null | undefined; +} + +export interface EnvInstr extends BaseInstr { + env: Environment; +} + +export interface ArrLitInstr extends BaseInstr { + arity: number; +} + +export interface DefineInstr extends BaseInstr { + name: string; + value: Expression; +} + +export interface SetInstr extends BaseInstr { + name: string; + value: Expression; +} + +export interface CondInstr extends BaseInstr { + predicates: Expression[]; + consequents: Expression[]; + catchall?: Expression; +} + +export interface LetInstr extends BaseInstr { + identifiers: string[]; + values: Expression[]; + body: Expression; +} + +export interface BeginInstr extends BaseInstr { + expressions: Expression[]; +} + +export interface DelayInstr extends BaseInstr { + expression: Expression; +} + +export interface PairInstr extends BaseInstr { + car: Expression; + cdr: Expression; +} + +export interface ListInstr extends BaseInstr { + elements: Expression[]; + terminator?: Expression; +} + +export interface VectorInstr extends BaseInstr { + elements: Expression[]; +} + +export interface SymbolInstr extends BaseInstr { + value: string; +} + +export interface NilInstr extends BaseInstr {} + +export interface CarInstr extends BaseInstr { + pair: Expression; +} + +export interface CdrInstr extends BaseInstr { + pair: Expression; +} + +export interface ConsInstr extends BaseInstr { + car: Expression; + cdr: Expression; +} + +export interface RestoreEnvInstr extends BaseInstr { + env: Environment; +} + +// ...existing code... + +export interface LiteralInstr extends BaseInstr { + value: any; +} + +export interface VariableInstr extends BaseInstr { + name: string; +} + +export interface LambdaInstr extends BaseInstr { + params: string[]; + body: Expression[]; +} + +export interface IfInstr extends BaseInstr { + test: Expression; + consequent: Expression; + alternate: Expression; +} + +// Thêm các type này vào union Instr: +export type Instr = + | BaseInstr + | WhileInstr + | AssmtInstr + | AppInstr + | BranchInstr + | EnvInstr + | ArrLitInstr + | DefineInstr + | SetInstr + | CondInstr + | LetInstr + | BeginInstr + | DelayInstr + | PairInstr + | ListInstr + | VectorInstr + | SymbolInstr + | NilInstr + | CarInstr + | CdrInstr + | ConsInstr + | RestoreEnvInstr + | UnOpInstr + | BinOpInstr + | LiteralInstr + | VariableInstr + | LambdaInstr + | IfInstr; diff --git a/src/common/Constant.ts b/src/common/Constant.ts new file mode 100644 index 0000000..7bdb2cc --- /dev/null +++ b/src/common/Constant.ts @@ -0,0 +1,9 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export const enum Constant { + PROTOCOL_VERSION = 0, + PROTOCOL_MIN_VERSION = 0, + SETUP_MESSAGES_BUFFER_SIZE = 10, +} diff --git a/src/common/ds/MessageQueue.ts b/src/common/ds/MessageQueue.ts new file mode 100644 index 0000000..7dbaf6c --- /dev/null +++ b/src/common/ds/MessageQueue.ts @@ -0,0 +1,31 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { Queue } from "./Queue"; + +export class MessageQueue { + private readonly __inputQueue: Queue = new Queue(); + private readonly __promiseQueue: Queue = new Queue(); + + push(item: T) { + if (this.__promiseQueue.length !== 0) this.__promiseQueue.pop()(item); + else this.__inputQueue.push(item); + } + + async pop(): Promise { + if (this.__inputQueue.length !== 0) return this.__inputQueue.pop(); + return new Promise((resolve, _reject) => { + this.__promiseQueue.push(resolve); + }); + } + + tryPop(): T | undefined { + if (this.__inputQueue.length !== 0) return this.__inputQueue.pop(); + return undefined; + } + + constructor() { + this.push = this.push.bind(this); + } +} diff --git a/src/common/ds/Queue.ts b/src/common/ds/Queue.ts new file mode 100644 index 0000000..7ab0c8b --- /dev/null +++ b/src/common/ds/Queue.ts @@ -0,0 +1,55 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +/** + * A stack-based queue implementation. + * `push` and `pop` run in amortized constant time. + */ +export class Queue { + /** The output stack. */ + private __s1: T[] = []; + /** The input stack. */ + private __s2: T[] = []; + + /** + * Adds an item to the queue. + * @param item The item to be added to the queue. + */ + push(item: T) { + this.__s2.push(item); + } + + /** + * Removes an item from the queue. + * @returns The item removed from the queue. + * @throws If the queue is empty. + */ + pop(): T { + if (this.__s1.length === 0) { + if (this.__s2.length === 0) throw new Error("queue is empty"); + let temp = this.__s1; + this.__s1 = this.__s2.reverse(); + this.__s2 = temp; + } + return this.__s1.pop()!; // as the length is nonzero + } + + /** + * The length of the queue. + */ + get length() { + return this.__s1.length + this.__s2.length; + } + + /** + * Makes a copy of the queue. + * @returns A copy of the queue. + */ + clone(): Queue { + const newQueue = new Queue(); + newQueue.__s1 = [...this.__s1]; + newQueue.__s2 = [...this.__s2]; + return newQueue; + } +} diff --git a/src/common/ds/index.ts b/src/common/ds/index.ts new file mode 100644 index 0000000..abe0900 --- /dev/null +++ b/src/common/ds/index.ts @@ -0,0 +1,6 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export { MessageQueue } from "./MessageQueue"; +export { Queue } from "./Queue"; diff --git a/src/common/errors/ConductorError.ts b/src/common/errors/ConductorError.ts new file mode 100644 index 0000000..f0e6505 --- /dev/null +++ b/src/common/errors/ConductorError.ts @@ -0,0 +1,17 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { ErrorType } from "./ErrorType"; + +/** + * Generic Conductor Error. + */ +export class ConductorError extends Error { + override name = "ConductorError"; + readonly errorType: ErrorType | string = ErrorType.UNKNOWN; + + constructor(message: string) { + super(message); + } +} diff --git a/src/common/errors/ConductorInternalError.ts b/src/common/errors/ConductorInternalError.ts new file mode 100644 index 0000000..0135039 --- /dev/null +++ b/src/common/errors/ConductorInternalError.ts @@ -0,0 +1,18 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { ConductorError } from "./ConductorError"; +import { ErrorType } from "./ErrorType"; + +/** + * Conductor internal error, probably caused by developer oversight. + */ +export class ConductorInternalError extends ConductorError { + override name = "ConductorInternalError"; + override readonly errorType: ErrorType | string = ErrorType.INTERNAL; + + constructor(message: string) { + super(message); + } +} diff --git a/src/common/errors/ErrorType.ts b/src/common/errors/ErrorType.ts new file mode 100644 index 0000000..1670225 --- /dev/null +++ b/src/common/errors/ErrorType.ts @@ -0,0 +1,12 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export const enum ErrorType { + UNKNOWN = "__unknown", + INTERNAL = "__internal", + EVALUATOR = "__evaluator", + EVALUATOR_SYNTAX = "__evaluator_syntax", + EVALUATOR_TYPE = "__evaluator_type", + EVALUATOR_RUNTIME = "__evaluator_runtime", +} diff --git a/src/common/errors/EvaluatorError.ts b/src/common/errors/EvaluatorError.ts new file mode 100644 index 0000000..6490e82 --- /dev/null +++ b/src/common/errors/EvaluatorError.ts @@ -0,0 +1,36 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { ConductorError } from "./ConductorError"; +import { ErrorType } from "./ErrorType"; + +/** + * Generic evaluation error, caused by a problem in user code. + */ +export class EvaluatorError extends ConductorError { + override name = "EvaluatorError"; + override readonly errorType: ErrorType | string = ErrorType.EVALUATOR; + + readonly rawMessage: string; + readonly line?: number; + readonly column?: number; + readonly fileName?: string; + + constructor( + message: string, + line?: number, + column?: number, + fileName?: string + ) { + const location = + line !== undefined + ? `${fileName ? fileName + ":" : ""}${line}${column !== undefined ? ":" + column : ""}: ` + : ""; + super(`${location}${message}`); + this.rawMessage = message; + this.line = line; + this.column = column; + this.fileName = fileName; + } +} diff --git a/src/common/errors/EvaluatorRuntimeError.ts b/src/common/errors/EvaluatorRuntimeError.ts new file mode 100644 index 0000000..8d95bc3 --- /dev/null +++ b/src/common/errors/EvaluatorRuntimeError.ts @@ -0,0 +1,14 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { ErrorType } from "./ErrorType"; +import { EvaluatorError } from "./EvaluatorError"; + +/** + * Evaluator runtime error - some problem occurred while running the user code. + */ +export class EvaluatorRuntimeError extends EvaluatorError { + override name = "EvaluatorRuntimeError"; + override readonly errorType: ErrorType | string = ErrorType.EVALUATOR_RUNTIME; +} diff --git a/src/common/errors/EvaluatorSyntaxError.ts b/src/common/errors/EvaluatorSyntaxError.ts new file mode 100644 index 0000000..68e4869 --- /dev/null +++ b/src/common/errors/EvaluatorSyntaxError.ts @@ -0,0 +1,14 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { ErrorType } from "./ErrorType"; +import { EvaluatorError } from "./EvaluatorError"; + +/** + * Evaluator syntax error - the user code does not follow the evaluator's prescribed syntax. + */ +export class EvaluatorSyntaxError extends EvaluatorError { + override name = "EvaluatorSyntaxError"; + override readonly errorType: ErrorType | string = ErrorType.EVALUATOR_SYNTAX; +} diff --git a/src/common/errors/EvaluatorTypeError.ts b/src/common/errors/EvaluatorTypeError.ts new file mode 100644 index 0000000..c6e89f3 --- /dev/null +++ b/src/common/errors/EvaluatorTypeError.ts @@ -0,0 +1,38 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { ConductorError } from "./ConductorError"; +import { ErrorType } from "./ErrorType"; +import { EvaluatorError } from "./EvaluatorError"; + +/** + * Evaluator type error - the user code is not well typed or provides values of incorrect type to external functions. + */ +export class EvaluatorTypeError extends EvaluatorError { + override name = "EvaluatorTypeError"; + override readonly errorType: ErrorType | string = ErrorType.EVALUATOR_TYPE; + + override readonly rawMessage: string; + readonly expected: string; + readonly actual: string; + + constructor( + message: string, + expected: string, + actual: string, + line?: number, + column?: number, + fileName?: string + ) { + super( + `${message} (expected ${expected}, got ${actual})`, + line, + column, + fileName + ); + this.rawMessage = message; + this.expected = expected; + this.actual = actual; + } +} diff --git a/src/common/errors/index.ts b/src/common/errors/index.ts new file mode 100644 index 0000000..4ad6ad2 --- /dev/null +++ b/src/common/errors/index.ts @@ -0,0 +1,8 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export { ConductorError } from "./ConductorError"; +export { ConductorInternalError } from "./ConductorInternalError"; +export { ErrorType } from "./ErrorType"; +export { EvaluatorTypeError } from "./EvaluatorTypeError"; diff --git a/src/common/util/InvalidModuleError.ts b/src/common/util/InvalidModuleError.ts new file mode 100644 index 0000000..4a6fab4 --- /dev/null +++ b/src/common/util/InvalidModuleError.ts @@ -0,0 +1,14 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { ConductorError } from "../errors"; + +export class InvalidModuleError extends ConductorError { + override name = "InvalidModuleError"; + override readonly errorType = "__invalidmodule"; + + constructor() { + super("Not a module"); + } +} diff --git a/src/common/util/importExternalModule.ts b/src/common/util/importExternalModule.ts new file mode 100644 index 0000000..efaeb29 --- /dev/null +++ b/src/common/util/importExternalModule.ts @@ -0,0 +1,23 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { IModulePlugin } from "../../conductor/module"; +import { PluginClass } from "../../conduit/types"; +import { importExternalPlugin } from "./importExternalPlugin"; + +/** + * Imports an external module from a given location. + * @param location Where to find the external module. + * @returns A promise resolving to the imported module. + */ +export async function importExternalModule( + location: string +): Promise> { + const plugin = (await importExternalPlugin(location)) as PluginClass< + any, + IModulePlugin + >; + // TODO: additional verification it is a module + return plugin; +} diff --git a/src/common/util/importExternalPlugin.ts b/src/common/util/importExternalPlugin.ts new file mode 100644 index 0000000..db64863 --- /dev/null +++ b/src/common/util/importExternalPlugin.ts @@ -0,0 +1,19 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { PluginClass } from "../../conduit/types"; + +/** + * Imports an external plugin from a given location. + * @param location Where to find the external plugin. + * @returns A promise resolving to the imported plugin. + */ +export async function importExternalPlugin( + location: string +): Promise { + const plugin = (await import(/* webpackIgnore: true */ location)) + .plugin as PluginClass; + // TODO: verify it is actually a plugin + return plugin; +} diff --git a/src/common/util/index.ts b/src/common/util/index.ts new file mode 100644 index 0000000..f459b58 --- /dev/null +++ b/src/common/util/index.ts @@ -0,0 +1,7 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export { importExternalModule } from "./importExternalModule"; +export { importExternalPlugin } from "./importExternalPlugin"; +export { InvalidModuleError } from "./InvalidModuleError"; diff --git a/src/compile-libs.ts b/src/compile-libs.ts deleted file mode 100644 index 7b0e403..0000000 --- a/src/compile-libs.ts +++ /dev/null @@ -1,45 +0,0 @@ -import path from "path"; -import fs from "fs"; -import { schemeParse } from "./transpiler"; -import { estreeEncode } from "./utils/encoder-visitor"; -const escodegen = require("escodegen"); - -function transpile(inputFilePath: string, outputFilePath: string) { - fs.readFile(inputFilePath, "utf8", (err, data) => { - if (err) { - console.error(`Error reading file: ${err}`); - return; - } - - // we transpile the file - const transpiledAST = schemeParse(data); - const encodedAST = estreeEncode(transpiledAST); - const transpiledProgram = escodegen.generate(encodedAST); - - fs.writeFile(outputFilePath, transpiledProgram, err => { - if (err) { - console.error(`Error writing file: ${err}`); - return; - } - console.log(`${inputFilePath} has been transpiled to ${outputFilePath}`); - }); - }); -} - -// get file paths from command line arguments -const inputFilePath: string = process.argv[2]; -const outputFilePath: string = process.argv[3] - ? process.argv[3] - : inputFilePath.replace(".scm", ".js"); - -// validate file paths -if (!inputFilePath) { - console.error("Please provide an input file path and an output file path"); -} - -if (!(path.extname(inputFilePath) === ".scm")) { - console.error("Please provide a .scm file for compilation!"); -} - -// if everything is fine, we transpile the file -transpile(inputFilePath, outputFilePath); diff --git a/src/conductor/host/BasicHostPlugin.ts b/src/conductor/host/BasicHostPlugin.ts new file mode 100644 index 0000000..0cb5b3d --- /dev/null +++ b/src/conductor/host/BasicHostPlugin.ts @@ -0,0 +1,184 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { Constant } from "../../common/Constant"; +import type { ConductorError } from "../../common/errors"; +import { importExternalPlugin } from "../../common/util"; +import { IChannel, IConduit, IPlugin } from "../../conduit"; +import { makeRpc } from "../../conduit/rpc"; +import { PluginClass } from "../../conduit/types"; +import { checkIsPluginClass } from "../../conduit/util"; +import { InternalChannelName, InternalPluginName } from "../strings"; +import { + AbortServiceMessage, + Chunk, + EntryServiceMessage, + HelloServiceMessage, + IChunkMessage, + IErrorMessage, + IIOMessage, + IServiceMessage, + IStatusMessage, + PluginServiceMessage, + RunnerStatus, +} from "../types"; +import { ServiceMessageType } from "../types"; +import { IHostFileRpc, IHostPlugin } from "./types"; + +@checkIsPluginClass +export abstract class BasicHostPlugin implements IHostPlugin { + name = InternalPluginName.HOST_MAIN; + + private readonly __conduit: IConduit; + private readonly __chunkChannel: IChannel; + private readonly __serviceChannel: IChannel; + private readonly __ioChannel: IChannel; + + private readonly __status = new Map(); + + private __chunkCount: number = 0; + + // @ts-expect-error TODO: figure proper way to typecheck this + private readonly __serviceHandlers = new Map< + ServiceMessageType, + (message: IServiceMessage) => void + >([ + [ + ServiceMessageType.HELLO, + function helloServiceHandler( + this: BasicHostPlugin, + message: HelloServiceMessage + ) { + if (message.data.version < Constant.PROTOCOL_MIN_VERSION) { + this.__serviceChannel.send( + new AbortServiceMessage(Constant.PROTOCOL_MIN_VERSION) + ); + console.error( + `Runner's protocol version (${message.data.version}) must be at least ${Constant.PROTOCOL_MIN_VERSION}` + ); + } else { + console.log( + `Runner is using protocol version ${message.data.version}` + ); + } + }, + ], + [ + ServiceMessageType.ABORT, + function abortServiceHandler( + this: BasicHostPlugin, + message: AbortServiceMessage + ) { + console.error( + `Runner expects at least protocol version ${message.data.minVersion}, but we are on version ${Constant.PROTOCOL_VERSION}` + ); + this.__conduit.terminate(); + }, + ], + [ + ServiceMessageType.PLUGIN, + function pluginServiceHandler( + this: BasicHostPlugin, + message: PluginServiceMessage + ) { + const pluginName = message.data; + this.requestLoadPlugin(pluginName); + }, + ], + ]); + + abstract requestFile(fileName: string): Promise; + + abstract requestLoadPlugin(pluginName: string): void; + + startEvaluator(entryPoint: string): void { + this.__serviceChannel.send(new EntryServiceMessage(entryPoint)); + } + + sendChunk(chunk: Chunk): void { + this.__chunkChannel.send({ id: this.__chunkCount++, chunk }); + } + + sendInput(message: string): void { + this.__ioChannel.send({ message }); + } + + receiveOutput?(message: string): void; + + receiveError?(message: ConductorError): void; + + isStatusActive(status: RunnerStatus): boolean { + return this.__status.get(status) ?? false; + } + + receiveStatusUpdate?(status: RunnerStatus, isActive: boolean): void; + + registerPlugin( + pluginClass: PluginClass, + ...arg: Arg + ): NoInfer { + return this.__conduit.registerPlugin(pluginClass, ...arg); + } + + unregisterPlugin(plugin: IPlugin): void { + this.__conduit.unregisterPlugin(plugin); + } + + async importAndRegisterExternalPlugin( + location: string, + ...arg: any[] + ): Promise { + const pluginClass = await importExternalPlugin(location); + return this.registerPlugin(pluginClass as any, ...arg); + } + + static readonly channelAttach = [ + InternalChannelName.FILE, + InternalChannelName.CHUNK, + InternalChannelName.SERVICE, + InternalChannelName.STANDARD_IO, + InternalChannelName.ERROR, + InternalChannelName.STATUS, + ]; + constructor( + conduit: IConduit, + [ + fileChannel, + chunkChannel, + serviceChannel, + ioChannel, + errorChannel, + statusChannel, + ]: IChannel[] + ) { + this.__conduit = conduit; + + makeRpc(fileChannel, { + requestFile: this.requestFile.bind(this), + }); + + this.__chunkChannel = chunkChannel; + this.__serviceChannel = serviceChannel; + + this.__ioChannel = ioChannel; + ioChannel.subscribe((ioMessage: IIOMessage) => + this.receiveOutput?.(ioMessage.message) + ); + + errorChannel.subscribe((errorMessage: IErrorMessage) => + this.receiveError?.(errorMessage.error) + ); + + statusChannel.subscribe((statusMessage: IStatusMessage) => { + const { status, isActive } = statusMessage; + this.__status.set(status, isActive); + this.receiveStatusUpdate?.(status, isActive); + }); + + this.__serviceChannel.send(new HelloServiceMessage()); + this.__serviceChannel.subscribe(message => { + this.__serviceHandlers.get(message.type)?.call(this, message); + }); + } +} diff --git a/src/conductor/host/HostPlugin.ts b/src/conductor/host/HostPlugin.ts new file mode 100644 index 0000000..1f57a48 --- /dev/null +++ b/src/conductor/host/HostPlugin.ts @@ -0,0 +1,45 @@ +import { BasicHostPlugin } from "./BasicHostPlugin"; +import { IHostPlugin } from "./types"; + +export class HostPlugin extends BasicHostPlugin implements IHostPlugin { + private files = new Map(); + private outputCallback?: (message: string) => void; + private errorCallback?: (error: any) => void; + + async requestFile(fileName: string): Promise { + return this.files.get(fileName); + } + + requestLoadPlugin(pluginName: string): void { + console.log(`Requested to load plugin: ${pluginName}`); + } + + sendChunk(chunk: string): void { + super.sendChunk(chunk); + } + + onOutput(callback: (message: string) => void): void { + this.outputCallback = callback; + } + + onError(callback: (error: any) => void): void { + this.errorCallback = callback; + } + + receiveOutput(message: string): void { + if (this.outputCallback) { + this.outputCallback(message); + } + } + + receiveError(error: any): void { + if (this.errorCallback) { + this.errorCallback(error); + } + } + + // Add a file to the virtual file system + addFile(fileName: string, content: string): void { + this.files.set(fileName, content); + } +} diff --git a/src/conductor/host/index.ts b/src/conductor/host/index.ts new file mode 100644 index 0000000..25b32a0 --- /dev/null +++ b/src/conductor/host/index.ts @@ -0,0 +1,6 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export type { IHostPlugin } from "./types"; +export { BasicHostPlugin } from "./BasicHostPlugin"; diff --git a/src/conductor/host/types/IHostFileRpc.ts b/src/conductor/host/types/IHostFileRpc.ts new file mode 100644 index 0000000..e6e6b80 --- /dev/null +++ b/src/conductor/host/types/IHostFileRpc.ts @@ -0,0 +1,7 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export interface IHostFileRpc { + requestFile(fileName: string): Promise; +} diff --git a/src/conductor/host/types/IHostPlugin.ts b/src/conductor/host/types/IHostPlugin.ts new file mode 100644 index 0000000..efb027e --- /dev/null +++ b/src/conductor/host/types/IHostPlugin.ts @@ -0,0 +1,119 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { ConductorError } from "../../../common/errors"; +import type { IPlugin } from "../../../conduit"; +import { PluginClass } from "../../../conduit/types"; +import type { Chunk, RunnerStatus } from "../../types"; + +export interface IHostPlugin extends IPlugin { + /** + * Request a file's contents. + * @param fileName The name of the file to request. + * @returns A promise resolving to the content of the requested file. + */ + requestFile(fileName: string): Promise; + + /** + * Request to load a plugin. + * @param pluginName The name of the plugin to request loading. + */ + requestLoadPlugin(pluginName: string): void; + + /** + * Starts the evaluator. + * @param entryPoint The entry point file to start running from. + */ + startEvaluator(entryPoint: string): void; + + /** + * Send the next chunk to be run. + * @param chunk The next chunk to be run. + */ + sendChunk(chunk: Chunk): void; + + /** + * Send an input on standard-input. + * @param input The input to be sent on standard-input. + */ + sendInput(input: string): void; + + // /** + // * Request for some output on standard-output. + // * @returns A promise resolving to the output received. + // */ + // requestOutput(): Promise; + + // /** + // * Try to request for some output on standard-output. + // * @returns The output received, or undefined if there is currently no output. + // */ + // tryRequestOutput(): string | undefined; + + /** + * An event handler called when an output is received. + * @param message The output received. + */ + receiveOutput?(message: string): void; + + // /** + // * Request for some output on standard-error. + // * @returns A promise resolving to the error received. + // */ + // requestError(): Promise; + + // /** + // * Try to request for some output on standard-error. + // * @returns The error received, or undefined if there is currently no error. + // */ + // tryRequestError(): ConductorError | undefined; + + /** + * An event handler called when an error is received. + * @param message The error received. + */ + receiveError?(message: ConductorError): void; + + /** + * Checks if a runner status is active. + * @param status The runner status to check. + * @returns true if the given status is active. + */ + isStatusActive(status: RunnerStatus): boolean; + + /** + * An event handler called when a status update is received. + * @param message The status update received. + * @param isActive Is the specified status currently active? + */ + receiveStatusUpdate?(status: RunnerStatus, isActive: boolean): void; + + /** + * Registers a plugin with the conduit. + * @param pluginClass The plugin class to be registered. + * @param arg Arguments to be passed to pluginClass' constructor. + * @returns The registered plugin. + */ + registerPlugin( + pluginClass: PluginClass, + ...arg: Arg + ): NoInfer; + + /** + * Unregister a plugin from the conduit. + * @param plugin The plugin to be unregistered. + */ + unregisterPlugin(plugin: IPlugin): void; + + /** + * Imports an external plugin and registers it with the conduit. + * @param location The location of the external plugin. + * @param arg Arguments to be passed to the external plugin's constructor. + * @returns The imported plugin. + */ + importAndRegisterExternalPlugin( + location: string, + ...arg: any[] + ): Promise; +} diff --git a/src/conductor/host/types/index.ts b/src/conductor/host/types/index.ts new file mode 100644 index 0000000..04a2fd4 --- /dev/null +++ b/src/conductor/host/types/index.ts @@ -0,0 +1,6 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export type { IHostFileRpc } from "./IHostFileRpc"; +export type { IHostPlugin } from "./IHostPlugin"; diff --git a/src/conductor/module/BaseModulePlugin.ts b/src/conductor/module/BaseModulePlugin.ts new file mode 100644 index 0000000..c876a76 --- /dev/null +++ b/src/conductor/module/BaseModulePlugin.ts @@ -0,0 +1,41 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { ConductorInternalError } from "../../common/errors/ConductorInternalError"; +import { IChannel, IConduit } from "../../conduit"; +import { checkIsPluginClass } from "../../conduit/util"; +import { IInterfacableEvaluator } from "../runner/types"; +import { ExternCallable, IDataHandler, IFunctionSignature } from "../types"; +import { IModulePlugin, IModuleExport } from "./types"; + +@checkIsPluginClass +export abstract class BaseModulePlugin implements IModulePlugin { + readonly exports: IModuleExport[] = []; + readonly exportedNames: readonly (keyof this)[] = []; + + readonly evaluator: IDataHandler; + + static readonly channelAttach: string[]; + constructor( + _conduit: IConduit, + _channels: IChannel[], + evaluator: IInterfacableEvaluator + ) { + this.evaluator = evaluator; + for (const name of this.exportedNames) { + const m = this[name] as ExternCallable & { + signature?: IFunctionSignature; + }; + if (!m.signature || typeof m !== "function" || typeof name !== "string") + throw new ConductorInternalError( + `'${String(name)}' is not an exportable method` + ); + this.exports.push({ + symbol: name, + value: m, + signature: m.signature, + }); + } + } +} diff --git a/src/conductor/module/index.ts b/src/conductor/module/index.ts new file mode 100644 index 0000000..b3bb29b --- /dev/null +++ b/src/conductor/module/index.ts @@ -0,0 +1,6 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export type { IModuleExport, IModulePlugin } from "./types"; +export { BaseModulePlugin } from "./BaseModulePlugin"; diff --git a/src/conductor/module/types/IModuleExport.ts b/src/conductor/module/types/IModuleExport.ts new file mode 100644 index 0000000..5212f9b --- /dev/null +++ b/src/conductor/module/types/IModuleExport.ts @@ -0,0 +1,20 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { + ExternCallable, + IFunctionSignature, + NativeValue, +} from "../../types"; + +export interface IModuleExport { + /** The symbol referencing the export. */ + symbol: string; + + /** The exported value. Can be JS-native values or a function. */ + value: NativeValue | ExternCallable; + + /** If value is a function, provides its function signature. */ + signature?: IFunctionSignature; // TODO: allow richer typing somehow? +} diff --git a/src/conductor/module/types/IModulePlugin.ts b/src/conductor/module/types/IModulePlugin.ts new file mode 100644 index 0000000..f3f5d2b --- /dev/null +++ b/src/conductor/module/types/IModulePlugin.ts @@ -0,0 +1,13 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { IPlugin } from "../../../conduit"; +import type { IDataHandler } from "../../types"; +import type { IModuleExport } from "./IModuleExport"; + +export interface IModulePlugin extends IPlugin { + readonly exports: IModuleExport[]; + + readonly evaluator: IDataHandler; +} diff --git a/src/conductor/module/types/ModuleClass.ts b/src/conductor/module/types/ModuleClass.ts new file mode 100644 index 0000000..020ea70 --- /dev/null +++ b/src/conductor/module/types/ModuleClass.ts @@ -0,0 +1,12 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { PluginClass } from "../../../conduit/types"; +import { IEvaluator } from "../../runner/types"; +import { IModulePlugin } from "./IModulePlugin"; + +export type ModuleClass = PluginClass< + [IEvaluator], + T +>; diff --git a/src/conductor/module/types/index.ts b/src/conductor/module/types/index.ts new file mode 100644 index 0000000..8f4fe03 --- /dev/null +++ b/src/conductor/module/types/index.ts @@ -0,0 +1,6 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export type { IModuleExport } from "./IModuleExport"; +export type { IModulePlugin } from "./IModulePlugin"; diff --git a/src/conductor/module/util/index.ts b/src/conductor/module/util/index.ts new file mode 100644 index 0000000..f108c0d --- /dev/null +++ b/src/conductor/module/util/index.ts @@ -0,0 +1,5 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export { moduleMethod } from "./moduleMethod"; diff --git a/src/conductor/module/util/moduleMethod.ts b/src/conductor/module/util/moduleMethod.ts new file mode 100644 index 0000000..d051a29 --- /dev/null +++ b/src/conductor/module/util/moduleMethod.ts @@ -0,0 +1,21 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { DataType, ExternCallable, IFunctionSignature } from "../../types"; + +export function moduleMethod< + const Args extends DataType[], + Ret extends DataType, +>(args: Args, returnType: Ret) { + const signature = { args, returnType } as const satisfies IFunctionSignature; + function externalClosureDecorator( + method: ExternCallable & { + signature?: IFunctionSignature; + }, + _context: ClassMemberDecoratorContext + ) { + method.signature = signature; + } + return externalClosureDecorator; +} diff --git a/src/conductor/runner/BasicEvaluator.ts b/src/conductor/runner/BasicEvaluator.ts new file mode 100644 index 0000000..63a4424 --- /dev/null +++ b/src/conductor/runner/BasicEvaluator.ts @@ -0,0 +1,42 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { ConductorInternalError } from "../../common/errors"; +import { IEvaluator, IRunnerPlugin } from "./types"; + +export abstract class BasicEvaluator implements IEvaluator { + readonly conductor: IRunnerPlugin; + + async startEvaluator(entryPoint: string): Promise { + const initialChunk = await this.conductor.requestFile(entryPoint); + if (!initialChunk) + throw new ConductorInternalError("Cannot load entrypoint file"); + await this.evaluateFile(entryPoint, initialChunk); + while (true) { + const chunk = await this.conductor.requestChunk(); + await this.evaluateChunk(chunk); + } + } + + /** + * Evaluates a file. + * @param fileName The name of the file to be evaluated. + * @param fileContent The content of the file to be evaluated. + * @returns A promise that resolves when the evaluation is complete. + */ + async evaluateFile(fileName: string, fileContent: string): Promise { + return this.evaluateChunk(fileContent); + } + + /** + * Evaluates a chunk. + * @param chunk The chunk to be evaluated. + * @returns A promise that resolves when the evaluation is complete. + */ + abstract evaluateChunk(chunk: string): Promise; + + constructor(conductor: IRunnerPlugin) { + this.conductor = conductor; + } +} diff --git a/src/conductor/runner/RunnerPlugin.ts b/src/conductor/runner/RunnerPlugin.ts new file mode 100644 index 0000000..0f6d5ff --- /dev/null +++ b/src/conductor/runner/RunnerPlugin.ts @@ -0,0 +1,221 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { Constant } from "../../common/Constant"; +import type { ConductorError } from "../../common/errors"; +import { ConductorInternalError } from "../../common/errors/ConductorInternalError"; +import { importExternalModule, importExternalPlugin } from "../../common/util"; +import { + IConduit, + IChannelQueue, + IChannel, + ChannelQueue, + IPlugin, +} from "../../conduit"; +import { makeRpc } from "../../conduit/rpc"; +import { Remote } from "../../conduit/rpc/types"; +import { PluginClass } from "../../conduit/types"; +import { checkIsPluginClass } from "../../conduit/util"; +import { IHostFileRpc } from "../host/types"; +import { IModulePlugin } from "../module"; +import { ModuleClass } from "../module/types/ModuleClass"; +import { InternalChannelName, InternalPluginName } from "../strings"; +import { + Chunk, + IChunkMessage, + IServiceMessage, + IIOMessage, + IStatusMessage, + RunnerStatus, + ServiceMessageType, + HelloServiceMessage, + AbortServiceMessage, + type EntryServiceMessage, + IErrorMessage, + PluginServiceMessage, +} from "../types"; +import { + IRunnerPlugin, + IEvaluator, + IInterfacableEvaluator, + EvaluatorClass, +} from "./types"; +import { SchemeEvaluator } from "./SchemeEvaluator"; + +@checkIsPluginClass +export class RunnerPlugin implements IRunnerPlugin { + name = InternalPluginName.RUNNER_MAIN; + + private readonly __evaluator: IEvaluator | IInterfacableEvaluator; + private readonly __isCompatibleWithModules: boolean; + private readonly __conduit: IConduit; + private readonly __fileRpc: Remote; + private readonly __chunkQueue: IChannelQueue; + private readonly __serviceChannel: IChannel; + private readonly __ioQueue: IChannelQueue; + private readonly __errorChannel: IChannel; + private readonly __statusChannel: IChannel; + + // @ts-expect-error TODO: figure proper way to typecheck this + private readonly __serviceHandlers = new Map< + ServiceMessageType, + (message: IServiceMessage) => void + >([ + [ + ServiceMessageType.HELLO, + function helloServiceHandler( + this: RunnerPlugin, + message: HelloServiceMessage + ) { + if (message.data.version < Constant.PROTOCOL_MIN_VERSION) { + this.__serviceChannel.send( + new AbortServiceMessage(Constant.PROTOCOL_MIN_VERSION) + ); + console.error( + `Host's protocol version (${message.data.version}) must be at least ${Constant.PROTOCOL_MIN_VERSION}` + ); + } else { + console.log(`Host is using protocol version ${message.data.version}`); + } + }, + ], + [ + ServiceMessageType.ABORT, + function abortServiceHandler( + this: RunnerPlugin, + message: AbortServiceMessage + ) { + console.error( + `Host expects at least protocol version ${message.data.minVersion}, but we are on version ${Constant.PROTOCOL_VERSION}` + ); + this.__conduit.terminate(); + }, + ], + [ + ServiceMessageType.ENTRY, + function entryServiceHandler( + this: RunnerPlugin, + message: EntryServiceMessage + ) { + this.__evaluator.startEvaluator(message.data); + }, + ], + ]); + + requestFile(fileName: string): Promise { + return this.__fileRpc.requestFile(fileName); + } + + async requestChunk(): Promise { + return (await this.__chunkQueue.receive()).chunk; + } + + async requestInput(): Promise { + const { message } = await this.__ioQueue.receive(); + return message; + } + + tryRequestInput(): string | undefined { + const out = this.__ioQueue.tryReceive(); + return out?.message; + } + + sendOutput(message: string): void { + this.__ioQueue.send({ message }); + } + + sendError(error: ConductorError): void { + this.__errorChannel.send({ error }); + } + + updateStatus(status: RunnerStatus, isActive: boolean): void { + this.__statusChannel.send({ status, isActive }); + } + + hostLoadPlugin(pluginName: string): void { + this.__serviceChannel.send(new PluginServiceMessage(pluginName)); + } + + registerPlugin( + pluginClass: PluginClass, + ...arg: Arg + ): NoInfer { + return this.__conduit.registerPlugin(pluginClass, ...arg); + } + + unregisterPlugin(plugin: IPlugin): void { + this.__conduit.unregisterPlugin(plugin); + } + + registerModule( + moduleClass: ModuleClass + ): NoInfer { + if (!this.__isCompatibleWithModules) + throw new ConductorInternalError("Evaluator has no data interface"); + return this.registerPlugin( + moduleClass, + this.__evaluator as IInterfacableEvaluator + ); + } + + unregisterModule(module: IModulePlugin): void { + this.unregisterPlugin(module); + } + + async importAndRegisterExternalPlugin( + location: string, + ...arg: any[] + ): Promise { + const pluginClass = await importExternalPlugin(location); + return this.registerPlugin(pluginClass as any, ...arg); + } + + async importAndRegisterExternalModule( + location: string + ): Promise { + const moduleClass = await importExternalModule(location); + return this.registerModule(moduleClass); + } + + static readonly channelAttach = [ + InternalChannelName.FILE, + InternalChannelName.CHUNK, + InternalChannelName.SERVICE, + InternalChannelName.STANDARD_IO, + InternalChannelName.ERROR, + InternalChannelName.STATUS, + ]; + constructor( + conduit: IConduit, + [ + fileChannel, + chunkChannel, + serviceChannel, + ioChannel, + errorChannel, + statusChannel, + ]: IChannel[], + evaluatorClass: EvaluatorClass + ) { + this.__conduit = conduit; + this.__fileRpc = makeRpc<{}, IHostFileRpc>(fileChannel, {}); + this.__chunkQueue = new ChannelQueue(chunkChannel); + this.__serviceChannel = serviceChannel; + this.__ioQueue = new ChannelQueue(ioChannel); + this.__errorChannel = errorChannel; + this.__statusChannel = statusChannel; + + // Use SchemeEvaluator instead of BasicEvaluator + this.__evaluator = new SchemeEvaluator(this); + this.__isCompatibleWithModules = false; + + this.__serviceChannel.send(new HelloServiceMessage()); + this.__serviceChannel.subscribe(message => { + const handler = this.__serviceHandlers.get(message.type); + if (handler) { + handler.call(this, message); + } + }); + } +} diff --git a/src/conductor/runner/SchemeEvaluator.ts b/src/conductor/runner/SchemeEvaluator.ts new file mode 100644 index 0000000..5d82cd0 --- /dev/null +++ b/src/conductor/runner/SchemeEvaluator.ts @@ -0,0 +1,89 @@ +import { BasicEvaluator } from "./BasicEvaluator"; +import { IRunnerPlugin } from "./types"; +import { parseSchemeSimple } from "../../CSE-machine/simple-parser"; +import { evaluate, Context } from "../../CSE-machine/interpreter"; +import { + createProgramEnvironment, + Environment, +} from "../../CSE-machine/environment"; +import { Stash } from "../../CSE-machine/stash"; +import { Control } from "../../CSE-machine/control"; +import { Value } from "../../CSE-machine/stash"; +import { ConductorError } from "../../common/errors/ConductorError"; + +export class SchemeEvaluator extends BasicEvaluator { + private context: Context; + private environment: Environment; + + constructor(conductor: IRunnerPlugin) { + super(conductor); + this.environment = createProgramEnvironment(); + this.context = { + control: new Control(), + stash: new Stash(), + environment: this.environment, + runtime: { + isRunning: true, + }, + }; + } + + async evaluateChunk(chunk: string): Promise { + try { + // Parse the Scheme code using simple parser + const expressions = parseSchemeSimple(chunk); + + // Reset control and stash but keep the same environment + this.context.control = new Control(); + this.context.stash = new Stash(); + this.context.runtime.isRunning = true; + + // Evaluate the expressions + const result = evaluate(chunk, expressions, this.context); + + // Send output to the conductor (like py-slang) + if (result.type === "error") { + this.conductor.sendOutput(`Error: ${result.message}`); + } else { + // Send the result as output + this.conductor.sendOutput(this.valueToString(result)); + } + } catch (error: any) { + this.conductor.sendOutput( + `Error: ${error instanceof Error ? error.message : error}` + ); + } + } + + private valueToString(value: Value): string { + if (value.type === "number") { + return value.value.toString(); + } else if (value.type === "complex") { + return value.value.toString(); + } else if (value.type === "string") { + return value.value; + } else if (value.type === "boolean") { + return value.value ? "#t" : "#f"; + } else if (value.type === "symbol") { + return value.value; + } else if (value.type === "nil") { + return "()"; + } else if (value.type === "void") { + return ""; // Return empty string for void values (define statements) + } else if (value.type === "pair") { + return `(${this.valueToString(value.car)} . ${this.valueToString(value.cdr)})`; + } else if (value.type === "list") { + return `(${value.elements.map((el: Value) => this.valueToString(el)).join(" ")})`; + } else if (value.type === "vector") { + return `#(${value.elements.map((el: Value) => this.valueToString(el)).join(" ")})`; + } else if (value.type === "closure") { + return `#`; + } else if (value.type === "primitive") { + return `#`; + } else if (value.type === "error") { + return `Error: ${value.message}`; + } else { + return String(value); + } + } +} diff --git a/src/conductor/runner/index.ts b/src/conductor/runner/index.ts new file mode 100644 index 0000000..419d4e7 --- /dev/null +++ b/src/conductor/runner/index.ts @@ -0,0 +1,6 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export { BasicEvaluator } from "./BasicEvaluator"; +export { RunnerPlugin } from "./RunnerPlugin"; diff --git a/src/conductor/runner/types/EvaluatorClass.ts b/src/conductor/runner/types/EvaluatorClass.ts new file mode 100644 index 0000000..7805f2b --- /dev/null +++ b/src/conductor/runner/types/EvaluatorClass.ts @@ -0,0 +1,12 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { IEvaluator } from "./IEvaluator"; +import { IInterfacableEvaluator } from "./IInterfacableEvaluator"; +import { IRunnerPlugin } from "./IRunnerPlugin"; + +export type EvaluatorClass = new ( + conductor: IRunnerPlugin, + ...arg: Arg +) => IEvaluator | IInterfacableEvaluator; diff --git a/src/conductor/runner/types/IEvaluator.ts b/src/conductor/runner/types/IEvaluator.ts new file mode 100644 index 0000000..304793d --- /dev/null +++ b/src/conductor/runner/types/IEvaluator.ts @@ -0,0 +1,15 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +/** + * The IEvaluator interface exposes methods used by Conductor to interact with evaluators. + */ +export interface IEvaluator { + /** + * Starts this evaluator. + * @param entryPoint The entry point file to start running from. + * @returns A promise that resolves when the evaluator has terminated. + */ + startEvaluator(entryPoint: string): Promise; +} diff --git a/src/conductor/runner/types/IInterfacableEvaluator.ts b/src/conductor/runner/types/IInterfacableEvaluator.ts new file mode 100644 index 0000000..71572ae --- /dev/null +++ b/src/conductor/runner/types/IInterfacableEvaluator.ts @@ -0,0 +1,8 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { IDataHandler } from "../../types"; +import type { IEvaluator } from "./IEvaluator"; + +export type IInterfacableEvaluator = IEvaluator & IDataHandler; diff --git a/src/conductor/runner/types/IRunnerPlugin.ts b/src/conductor/runner/types/IRunnerPlugin.ts new file mode 100644 index 0000000..c594dc5 --- /dev/null +++ b/src/conductor/runner/types/IRunnerPlugin.ts @@ -0,0 +1,110 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { ConductorError } from "../../../common/errors"; +import type { IPlugin } from "../../../conduit"; +import { PluginClass } from "../../../conduit/types"; +import type { IModulePlugin } from "../../module"; +import { ModuleClass } from "../../module/types/ModuleClass"; +import type { Chunk, RunnerStatus } from "../../types"; + +export interface IRunnerPlugin extends IPlugin { + /** + * Request a file's contents. + * @param fileName The name of the file to request. + * @returns A promise resolving to the content of the requested file. + */ + requestFile(fileName: string): Promise; + + /** + * Request the next chunk to run. + * @returns A promise resolving to the next chunk. + */ + requestChunk(): Promise; + + /** + * Request for some input on standard-input. + * @returns A promise resolving to the input received. + */ + requestInput(): Promise; + + /** + * Try to request for some input on standard-input. + * @returns The input received, or undefined if there is currently no input. + */ + tryRequestInput(): string | undefined; + + /** + * Sends a message on standard-output. + * @param message The output message to send. + */ + sendOutput(message: string): void; + + /** + * Sends an error. + * @param error The error to send. + */ + sendError(error: ConductorError): void; + + /** + * Provide a status update of the runner. + * @param status The status to update. + * @param isActive Is the specified status currently active? + */ + updateStatus(status: RunnerStatus, isActive: boolean): void; + + /** + * Informs the host to load a plugin. + * @param pluginName The name of the plugin to load. + */ + hostLoadPlugin(pluginName: string): void; + + /** + * Registers a plugin with the conduit. + * @param pluginClass The plugin class to be registered. + * @param arg Arguments to be passed to pluginClass' constructor. + * @returns The registered plugin. + */ + registerPlugin( + pluginClass: PluginClass, + ...arg: Arg + ): NoInfer; + + /** + * Unregister a plugin from the conduit. + * @param plugin The plugin to be unregistered. + */ + unregisterPlugin(plugin: IPlugin): void; + + /** + * Registers an external module with the conduit, and links it with the evaluator. + * @param moduleClass The module class to be registered. + * @returns The registered module. + */ + registerModule(moduleClass: ModuleClass): T; + + /** + * Unregisters an external module from the conduit, and unlinks it from the evaluator. + * @param module The module to be unregistered. + */ + unregisterModule(module: IModulePlugin): void; + + /** + * Imports an external plugin and registers it with the conduit. + * @param location The location of the external plugin. + * @param arg Arguments to be passed to the external plugin's constructor. + * @returns The imported plugin. + */ + importAndRegisterExternalPlugin( + location: string, + ...arg: any[] + ): Promise; + + /** + * Imports an external module and registers it with the conduit. + * @param location The location of the external module. + * @returns The imported module. + */ + importAndRegisterExternalModule(location: string): Promise; +} diff --git a/src/conductor/runner/types/index.ts b/src/conductor/runner/types/index.ts new file mode 100644 index 0000000..042469c --- /dev/null +++ b/src/conductor/runner/types/index.ts @@ -0,0 +1,8 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export type { EvaluatorClass } from "./EvaluatorClass"; +export type { IEvaluator } from "./IEvaluator"; +export type { IInterfacableEvaluator } from "./IInterfacableEvaluator"; +export type { IRunnerPlugin } from "./IRunnerPlugin"; diff --git a/src/conductor/runner/util/index.ts b/src/conductor/runner/util/index.ts new file mode 100644 index 0000000..a7e1ca2 --- /dev/null +++ b/src/conductor/runner/util/index.ts @@ -0,0 +1 @@ +export { initialise } from "./initialise"; diff --git a/src/conductor/runner/util/initialise.ts b/src/conductor/runner/util/initialise.ts new file mode 100644 index 0000000..6255c05 --- /dev/null +++ b/src/conductor/runner/util/initialise.ts @@ -0,0 +1,36 @@ +import { RunnerPlugin } from ".."; +import { Conduit, IConduit, ILink } from "../../../conduit"; +import { EvaluatorClass, IRunnerPlugin } from "../types"; + +/** + * Initialise this runner with the evaluator to be used. + * @param evaluatorClass The Evaluator to be used on this runner. + * @param link The underlying communication link. + * @returns The initialised `runnerPlugin` and `conduit`. + */ +export function initialise( + evaluatorClass: EvaluatorClass, + link: ILink = (typeof self !== "undefined" + ? self + : typeof global !== "undefined" + ? global + : { + addEventListener: () => {}, + postMessage: () => {}, + onmessage: null, + }) as ILink +): { runnerPlugin: IRunnerPlugin; conduit: IConduit } { + // Skip conductor initialization in browser environment for now + // This is causing issues with postMessage + if (typeof window !== "undefined") { + // Return mock objects for browser + return { + runnerPlugin: {} as IRunnerPlugin, + conduit: {} as IConduit, + }; + } + + const conduit = new Conduit(link, false); + const runnerPlugin = conduit.registerPlugin(RunnerPlugin, evaluatorClass); + return { runnerPlugin, conduit }; +} diff --git a/src/conductor/stdlib/index.ts b/src/conductor/stdlib/index.ts new file mode 100644 index 0000000..8e05b81 --- /dev/null +++ b/src/conductor/stdlib/index.ts @@ -0,0 +1,14 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { StdlibFunction } from "../types"; +import { accumulate, is_list, length } from "./list"; + +export const stdlib = { + is_list: is_list, + accumulate: accumulate, + length: length, +} satisfies Record>; + +export { accumulate }; diff --git a/src/conductor/stdlib/list/accumulate.ts b/src/conductor/stdlib/list/accumulate.ts new file mode 100644 index 0000000..5fd568c --- /dev/null +++ b/src/conductor/stdlib/list/accumulate.ts @@ -0,0 +1,38 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { + ClosureIdentifier, + DataType, + IDataHandler, + TypedValue, + List, +} from "../../types"; + +/** + * Accumulates a Closure over a List. + * + * The Closure is applied in a right-to-left order - the first application + * will be on the last element of the list and the given initial value. + * @param op The Closure to use as an accumulator over the List. + * @param initial The initial typed value (that is, the result of accumulating an empty List). + * @param sequence The List to be accumulated over. + * @param resultType The (expected) type of the result. + * @returns A Promise resolving to the result of accumulating the Closure over the List. + */ +export async function accumulate>( + this: IDataHandler, + op: ClosureIdentifier, + initial: TypedValue, + sequence: List, + resultType: T +): Promise> { + const vec = this.list_to_vec(sequence); + let result = initial; + for (let i = vec.length - 1; i >= 0; --i) { + result = await this.closure_call(op, [vec[i], result], resultType); + } + + return result; +} diff --git a/src/conductor/stdlib/list/index.ts b/src/conductor/stdlib/list/index.ts new file mode 100644 index 0000000..86cfee5 --- /dev/null +++ b/src/conductor/stdlib/list/index.ts @@ -0,0 +1,9 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export { accumulate } from "./accumulate"; +export { is_list } from "./is_list"; +export { length } from "./length"; +export { list_to_vec } from "./list_to_vec"; +export { list } from "./list"; diff --git a/src/conductor/stdlib/list/is_list.ts b/src/conductor/stdlib/list/is_list.ts new file mode 100644 index 0000000..943ce82 --- /dev/null +++ b/src/conductor/stdlib/list/is_list.ts @@ -0,0 +1,20 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { DataType, IDataHandler, List } from "../../types"; + +/** + * Checks if a List is a true list (`tail(tail...(xs))` is empty-list). + * @param xs The List to check. + * @returns true if the provided List is a true list. + */ +export function is_list(this: IDataHandler, xs: List): boolean { + if (xs === null) return true; // TODO: figure out some way to avoid JS value comparison + while (true) { + const tail = this.pair_tail(xs); + if (tail.type === DataType.EMPTY_LIST) return true; + if (tail.type !== DataType.PAIR) return false; + xs = tail.value; + } +} diff --git a/src/conductor/stdlib/list/length.ts b/src/conductor/stdlib/list/length.ts new file mode 100644 index 0000000..b125cef --- /dev/null +++ b/src/conductor/stdlib/list/length.ts @@ -0,0 +1,28 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { EvaluatorTypeError } from "../../../common/errors"; +import { DataType, IDataHandler, List } from "../../types"; + +/** + * Gets the length of a List. + * @param xs The List to get the length of. + * @returns The length of the List. + */ +export function length(this: IDataHandler, xs: List): number { + let length = 0; + if (xs === null) return length; // TODO: figure out some way to avoid JS value comparison + while (true) { + length++; + const tail = this.pair_tail(xs); + if (tail.type === DataType.EMPTY_LIST) return length; + if (tail.type !== DataType.PAIR) + throw new EvaluatorTypeError( + "Input is not a list", + DataType[DataType.LIST], + DataType[tail.type] + ); + xs = tail.value; + } +} diff --git a/src/conductor/stdlib/list/list.ts b/src/conductor/stdlib/list/list.ts new file mode 100644 index 0000000..c93c0e4 --- /dev/null +++ b/src/conductor/stdlib/list/list.ts @@ -0,0 +1,23 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { DataType, IDataHandler, TypedValue } from "../../types"; +import { mList } from "../../util/mList"; + +/** + * Creates a new List from given elements. + * @param elements The elements of the List, given as typed values. + * @returns The newly created List. + */ +export function list( + this: IDataHandler, + ...elements: TypedValue[] +): TypedValue { + let theList: TypedValue = mList(null); + for (let i = elements.length - 1; i >= 0; --i) { + const p = mList(this.pair_make(elements[i], theList)); + theList = p; + } + return theList; +} diff --git a/src/conductor/stdlib/list/list_to_vec.ts b/src/conductor/stdlib/list/list_to_vec.ts new file mode 100644 index 0000000..9956982 --- /dev/null +++ b/src/conductor/stdlib/list/list_to_vec.ts @@ -0,0 +1,26 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { EvaluatorTypeError } from "../../../common/errors"; +import { DataType, IDataHandler, List, TypedValue } from "../../types"; + +export function list_to_vec( + this: IDataHandler, + xs: List +): TypedValue[] { + const vec: TypedValue[] = []; + if (xs === null) return vec; + while (true) { + vec.push(this.pair_head(xs)); + const tail = this.pair_tail(xs); + if (tail.type === DataType.EMPTY_LIST) return vec; + if (tail.type !== DataType.PAIR) + throw new EvaluatorTypeError( + "Input is not a list", + DataType[DataType.LIST], + DataType[tail.type] + ); + xs = tail.value; + } +} diff --git a/src/conductor/stdlib/util/array_assert.ts b/src/conductor/stdlib/util/array_assert.ts new file mode 100644 index 0000000..9c6635f --- /dev/null +++ b/src/conductor/stdlib/util/array_assert.ts @@ -0,0 +1,33 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { EvaluatorTypeError } from "../../../common/errors"; +import { ArrayIdentifier, DataType, IDataHandler } from "../../types"; +import { isSameType } from "../../util"; + +export function array_assert( + this: IDataHandler, + a: ArrayIdentifier, + type?: T, + length?: number +): asserts a is ArrayIdentifier { + if (type) { + const t = this.array_type(a); + if (!isSameType(t, type)) + throw new EvaluatorTypeError( + "Array type assertion failure", + DataType[type], + DataType[t] + ); + } + if (length) { + const l = this.array_length(a); + if (l !== length) + throw new EvaluatorTypeError( + "Array length assertion failure", + String(length), + String(l) + ); + } +} diff --git a/src/conductor/stdlib/util/closure_arity_assert.ts b/src/conductor/stdlib/util/closure_arity_assert.ts new file mode 100644 index 0000000..f8be99b --- /dev/null +++ b/src/conductor/stdlib/util/closure_arity_assert.ts @@ -0,0 +1,21 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { EvaluatorTypeError } from "../../../common/errors"; +import { IDataHandler, ClosureIdentifier, DataType } from "../../types"; + +export function closure_arity_assert( + this: IDataHandler, + c: ClosureIdentifier, + arity: number +): void { + const a = this.closure_arity(c); + if (this.closure_is_vararg(c) ? arity < a : arity !== a) { + throw new EvaluatorTypeError( + "Closure arity assertion failure", + String(arity), + String(a) + ); + } +} diff --git a/src/conductor/stdlib/util/index.ts b/src/conductor/stdlib/util/index.ts new file mode 100644 index 0000000..8081b9c --- /dev/null +++ b/src/conductor/stdlib/util/index.ts @@ -0,0 +1,7 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export { array_assert } from "./array_assert"; +export { closure_arity_assert } from "./closure_arity_assert"; +export { pair_assert } from "./pair_assert"; diff --git a/src/conductor/stdlib/util/pair_assert.ts b/src/conductor/stdlib/util/pair_assert.ts new file mode 100644 index 0000000..d052bdb --- /dev/null +++ b/src/conductor/stdlib/util/pair_assert.ts @@ -0,0 +1,33 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { EvaluatorTypeError } from "../../../common/errors"; +import { DataType, IDataHandler, PairIdentifier } from "../../types"; +import { isSameType } from "../../util"; + +export function pair_assert( + this: IDataHandler, + p: PairIdentifier, + headType?: DataType, + tailType?: DataType +): void { + if (headType) { + const head = this.pair_head(p); + if (!isSameType(head.type, headType)) + throw new EvaluatorTypeError( + "Pair head assertion failure", + DataType[headType], + DataType[head.type] + ); + } + if (tailType) { + const tail = this.pair_tail(p); + if (!isSameType(tail.type, tailType)) + throw new EvaluatorTypeError( + "Pair tail assertion failure", + DataType[tailType], + DataType[tail.type] + ); + } +} diff --git a/src/conductor/strings/InternalChannelName.ts b/src/conductor/strings/InternalChannelName.ts new file mode 100644 index 0000000..bee7bba --- /dev/null +++ b/src/conductor/strings/InternalChannelName.ts @@ -0,0 +1,12 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export const enum InternalChannelName { + CHUNK = "__chunk", + FILE = "__file_rpc", + SERVICE = "__service", + STANDARD_IO = "__stdio", + ERROR = "__error", + STATUS = "__status", +} diff --git a/src/conductor/strings/InternalPluginName.ts b/src/conductor/strings/InternalPluginName.ts new file mode 100644 index 0000000..5e880f7 --- /dev/null +++ b/src/conductor/strings/InternalPluginName.ts @@ -0,0 +1,8 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export const enum InternalPluginName { + HOST_MAIN = "__host_main", + RUNNER_MAIN = "__runner_main", +} diff --git a/src/conductor/strings/index.ts b/src/conductor/strings/index.ts new file mode 100644 index 0000000..4554c5c --- /dev/null +++ b/src/conductor/strings/index.ts @@ -0,0 +1,6 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export { InternalChannelName } from "./InternalChannelName"; +export { InternalPluginName } from "./InternalPluginName"; diff --git a/src/conductor/types/Chunk.ts b/src/conductor/types/Chunk.ts new file mode 100644 index 0000000..548224d --- /dev/null +++ b/src/conductor/types/Chunk.ts @@ -0,0 +1,6 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +/** A chunk of code. */ +export type Chunk = string; diff --git a/src/conductor/types/IChunkMessage.ts b/src/conductor/types/IChunkMessage.ts new file mode 100644 index 0000000..05d1a4f --- /dev/null +++ b/src/conductor/types/IChunkMessage.ts @@ -0,0 +1,10 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { Chunk } from "./Chunk"; + +export interface IChunkMessage { + id: number; + chunk: Chunk; +} diff --git a/src/conductor/types/IErrorMessage.ts b/src/conductor/types/IErrorMessage.ts new file mode 100644 index 0000000..e85751c --- /dev/null +++ b/src/conductor/types/IErrorMessage.ts @@ -0,0 +1,9 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { ConductorError } from "../../common/errors"; + +export interface IErrorMessage { + error: ConductorError; +} diff --git a/src/conductor/types/IIOMessage.ts b/src/conductor/types/IIOMessage.ts new file mode 100644 index 0000000..6916958 --- /dev/null +++ b/src/conductor/types/IIOMessage.ts @@ -0,0 +1,8 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export interface IIOMessage { + // stream: number; + message: string; +} diff --git a/src/conductor/types/IServiceMessage.ts b/src/conductor/types/IServiceMessage.ts new file mode 100644 index 0000000..36f1abc --- /dev/null +++ b/src/conductor/types/IServiceMessage.ts @@ -0,0 +1,10 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { ServiceMessageType } from "./ServiceMessageType"; + +export interface IServiceMessage { + readonly type: ServiceMessageType; + readonly data?: any; +} diff --git a/src/conductor/types/IStatusMessage.ts b/src/conductor/types/IStatusMessage.ts new file mode 100644 index 0000000..977f11a --- /dev/null +++ b/src/conductor/types/IStatusMessage.ts @@ -0,0 +1,10 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { RunnerStatus } from "./RunnerStatus"; + +export interface IStatusMessage { + status: RunnerStatus; + isActive: boolean; +} diff --git a/src/conductor/types/RunnerStatus.ts b/src/conductor/types/RunnerStatus.ts new file mode 100644 index 0000000..0ff24f4 --- /dev/null +++ b/src/conductor/types/RunnerStatus.ts @@ -0,0 +1,13 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export const enum RunnerStatus { + ONLINE, // Runner is online + EVAL_READY, // Evaluator is ready + RUNNING, // I am running some code + WAITING, // I am waiting for inputs + BREAKPOINT, // I have reached a debug breakpoint + STOPPED, // I have exited, crashed, etc.; the environment is no longer valid + ERROR, // I have stopped unexpectedly +} diff --git a/src/conductor/types/ServiceMessageType.ts b/src/conductor/types/ServiceMessageType.ts new file mode 100644 index 0000000..1374186 --- /dev/null +++ b/src/conductor/types/ServiceMessageType.ts @@ -0,0 +1,17 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export const enum ServiceMessageType { + /** A handshake message. See `HelloServiceMessage`. */ + HELLO = 0, + + /** Abort the connection, due to incompatible protocol versions. See `AbortServiceMessage`. */ + ABORT = 1, + + /** The evaluation entry point, sent from the host. See `EntryServiceMessage`. */ + ENTRY = 2, + + /** Plugin advisory sent from the runner so the host may load a corresponding plugin. See `PluginServiceMessage`. */ + PLUGIN = 3, +} diff --git a/src/conductor/types/index.ts b/src/conductor/types/index.ts new file mode 100644 index 0000000..b6e0037 --- /dev/null +++ b/src/conductor/types/index.ts @@ -0,0 +1,14 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export type { Chunk } from "./Chunk"; +export type { IChunkMessage } from "./IChunkMessage"; +export type { IErrorMessage } from "./IErrorMessage"; +export type { IIOMessage } from "./IIOMessage"; +export type { IServiceMessage } from "./IServiceMessage"; +export type { IStatusMessage } from "./IStatusMessage"; +export { RunnerStatus } from "./RunnerStatus"; +export { ServiceMessageType } from "./ServiceMessageType"; +export * from "./moduleInterface"; +export * from "./serviceMessages"; diff --git a/src/conductor/types/moduleInterface/ArrayIdentifier.ts b/src/conductor/types/moduleInterface/ArrayIdentifier.ts new file mode 100644 index 0000000..dbae640 --- /dev/null +++ b/src/conductor/types/moduleInterface/ArrayIdentifier.ts @@ -0,0 +1,12 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { DataType } from "./DataType"; +import type { Identifier } from "./Identifier"; + +/** An identifier for an extern array. */ +export type ArrayIdentifier = Identifier & { + __brand: "array"; + __type: T; +}; // apply branding so it's harder to mix identifiers up diff --git a/src/conductor/types/moduleInterface/ClosureIdentifier.ts b/src/conductor/types/moduleInterface/ClosureIdentifier.ts new file mode 100644 index 0000000..9c51298 --- /dev/null +++ b/src/conductor/types/moduleInterface/ClosureIdentifier.ts @@ -0,0 +1,12 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { DataType } from "./DataType"; +import type { Identifier } from "./Identifier"; + +/** An identifier for an extern closure. */ +export type ClosureIdentifier = Identifier & { + __brand: "closure"; + __ret: T; +}; // apply branding so it's harder to mix identifiers up diff --git a/src/conductor/types/moduleInterface/DataType.ts b/src/conductor/types/moduleInterface/DataType.ts new file mode 100644 index 0000000..790b548 --- /dev/null +++ b/src/conductor/types/moduleInterface/DataType.ts @@ -0,0 +1,35 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export enum DataType { + /** The return type of functions with no returned value. As a convention, the associated JS value is undefined. */ + VOID = 0, + + /** A Boolean value. */ + BOOLEAN = 1, + + /** A numerical value. */ + NUMBER = 2, + + /** An immutable string of characters. */ + CONST_STRING = 3, + + /** The empty list. As a convention, the associated JS value is null. */ + EMPTY_LIST = 4, + + /** A pair of values. Reference type. */ + PAIR = 5, + + /** An array of values of a single type. Reference type. */ + ARRAY = 6, + + /** A value that can be called with fixed arity. Reference type. */ + CLOSURE = 7, + + /** An opaque value that cannot be manipulated from user code. */ + OPAQUE = 8, + + /** A list (either a pair or the empty list). */ + LIST = 9, +} diff --git a/src/conductor/types/moduleInterface/ExternCallable.ts b/src/conductor/types/moduleInterface/ExternCallable.ts new file mode 100644 index 0000000..ee68585 --- /dev/null +++ b/src/conductor/types/moduleInterface/ExternCallable.ts @@ -0,0 +1,16 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { DataType } from "./DataType"; +import type { ExternTypeOf } from "./ExternTypeOf"; +import type { IFunctionSignature } from "./IFunctionSignature"; + +type DataTypeMap = { + [Idx in keyof T]: ExternTypeOf; +}; + +/** The expected function type based on an IFunctionSignature. */ +export type ExternCallable = ( + ...args: DataTypeMap +) => ExternTypeOf | Promise>; diff --git a/src/conductor/types/moduleInterface/ExternTypeOf.ts b/src/conductor/types/moduleInterface/ExternTypeOf.ts new file mode 100644 index 0000000..130fb0d --- /dev/null +++ b/src/conductor/types/moduleInterface/ExternTypeOf.ts @@ -0,0 +1,26 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { ArrayIdentifier } from "./ArrayIdentifier"; +import type { ClosureIdentifier } from "./ClosureIdentifier"; +import { DataType } from "./DataType"; +import { List } from "./List"; +import type { OpaqueIdentifier } from "./OpaqueIdentifier"; +import type { PairIdentifier } from "./PairIdentifier"; + +type typeMap = { + [DataType.VOID]: void; + [DataType.BOOLEAN]: boolean; + [DataType.NUMBER]: number; + [DataType.CONST_STRING]: string; + [DataType.EMPTY_LIST]: null; + [DataType.PAIR]: PairIdentifier; + [DataType.ARRAY]: ArrayIdentifier; + [DataType.CLOSURE]: ClosureIdentifier; + [DataType.OPAQUE]: OpaqueIdentifier; + [DataType.LIST]: List; +}; + +/** Maps the Conductor DataTypes to their corresponding native types. */ +export type ExternTypeOf = T extends DataType ? typeMap[T] : never; diff --git a/src/conductor/types/moduleInterface/ExternValue.ts b/src/conductor/types/moduleInterface/ExternValue.ts new file mode 100644 index 0000000..51092e7 --- /dev/null +++ b/src/conductor/types/moduleInterface/ExternValue.ts @@ -0,0 +1,22 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { + ArrayIdentifier, + ClosureIdentifier, + DataType, + Identifier, + NativeValue, + OpaqueIdentifier, + PairIdentifier, +} from "."; + +/** A valid extern value. */ +export type ExternValue = + | NativeValue + | Identifier + | PairIdentifier + | ArrayIdentifier + | ClosureIdentifier + | OpaqueIdentifier; diff --git a/src/conductor/types/moduleInterface/IDataHandler.ts b/src/conductor/types/moduleInterface/IDataHandler.ts new file mode 100644 index 0000000..4be2ff5 --- /dev/null +++ b/src/conductor/types/moduleInterface/IDataHandler.ts @@ -0,0 +1,263 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { + ArrayIdentifier, + ClosureIdentifier, + DataType, + ExternCallable, + Identifier, + IFunctionSignature, + List, + OpaqueIdentifier, + PairIdentifier, + TypedValue, +} from "."; + +export interface IDataHandler { + readonly hasDataInterface: true; + + ///// Data Handling Functions + + /** + * Makes a new Pair. + * @param head The typed value to be the head of the new Pair. + * @param tail The typed value to be the tail of the new Pair. + * @returns An identifier to the new Pair. + */ + pair_make( + head: TypedValue, + tail: TypedValue + ): PairIdentifier; + + /** + * Gets the typed value in the head of a Pair. + * @param p The Pair to retrieve the head of. + * @returns The typed value in the head of the Pair. + */ + pair_head(p: PairIdentifier): TypedValue; + + /** + * Sets the head of a Pair. + * @param p The Pair to set the head of. + * @param tv The typed value to set the head of the Pair to. + */ + pair_sethead(p: PairIdentifier, tv: TypedValue): void; + + /** + * Gets the typed value in the tail of a Pair. + * @param p The Pair to retrieve the tail of. + * @returns The typed value in the tail of the Pair. + */ + pair_tail(p: PairIdentifier): TypedValue; + + /** + * Sets the tail of a Pair. + * @param p The Pair to set the tail of. + * @param tv The typed value to set the tail of the Pair to. + */ + pair_settail(p: PairIdentifier, tv: TypedValue): void; + + /** + * Asserts the type of a Pair. + * @param p The Pair to assert the type of. + * @param headType The expected type of the head of the Pair. + * @param tailType The expected type of the tail of the Pair. + * @throws If the Pair's type is not as expected. + */ + pair_assert( + p: PairIdentifier, + headType?: DataType, + tailType?: DataType + ): void; + + /** + * Makes a new Array. + * + * Creation of untyped arrays (with type `VOID`) should be avoided. + * @param t The type of the elements of the Array + * @param len The length of the Array + * @param init An optional initial typed value for the elements of the Array + * @returns An identifier to the new Array. + */ + array_make( + t: T, + len: number, + init?: TypedValue> + ): ArrayIdentifier>; + + /** + * Gets the length of an Array. + * @param a The Array to retrieve the length of. + * @returns The length of the given Array. + */ + array_length(a: ArrayIdentifier): number; + + /** + * Gets the typed value at a specific index of an Array. + * Arrays are 0-indexed. + * @param a The Array to retrieve the value from. + * @param idx The index of the value wanted. + * @returns The typed value at the given index of the given Array. + */ + array_get( + a: ArrayIdentifier, + idx: number + ): TypedValue; + array_get( + a: ArrayIdentifier, + idx: number + ): TypedValue>; + + /** + * Gets the type of the elements of an Array. + * + * If the Array is untyped, `VOID` is returned. + * @param a The Array to retrieve the element type of. + * @returns The type of the elements of the Array. + */ + array_type(a: ArrayIdentifier): NoInfer; + + /** + * Sets a value at a specific index of an Array. + * Arrays are 0-indexed. + * @param a The Array to be modified. + * @param idx The index to be modified. + * @param tv The new typed value at the given index of the given Array. + * @throws If the array is typed and v's type does not match the Array's type. + */ + array_set( + a: ArrayIdentifier, + idx: number, + tv: TypedValue + ): void; + array_set( + a: ArrayIdentifier, + idx: number, + tv: TypedValue> + ): void; + + /** + * Asserts the type and/or length of an Array. + * @param a The Array to assert. + * @param type The expected type of the elements of the Array. + * @param length The expected length of the Array. + * @throws If the Array's type is not as expected. + */ + array_assert( + a: ArrayIdentifier, + type?: T, + length?: number + ): asserts a is ArrayIdentifier>; + + /** + * Makes a new Closure. + * @param sig The signature of the new Closure. + * @param func A callback to be called when the Closure is called. + * @param dependsOn An optional array of Identifiers the Closure will depend on. + * @returns An identifier to the new Closure. + */ + closure_make( + sig: T, + func: ExternCallable, + dependsOn?: (Identifier | null)[] + ): ClosureIdentifier; + + /** + * Checks if a Closure accepts variable number of arguments. + * @param c The Closure to check. + * @returns `true` if the Closure accepts variable number of arguments. + */ + closure_is_vararg(c: ClosureIdentifier): boolean; + + /** + * Gets the arity (number of parameters) of a Closure. + * For vararg Closures, the arity is the minimum number of parameters required. + * @param c The Closure to get the arity of. + * @returns The arity of the Closure. + */ + closure_arity(c: ClosureIdentifier): number; + + /** + * Calls a Closure and checks the type of the returned value. + * @param c The Closure to be called. + * @param args An array of typed arguments to be passed to the Closure. + * @param returnType The expected type of the returned value. + * @returns The returned typed value. + */ + closure_call( + c: ClosureIdentifier, + args: TypedValue[], + returnType: T + ): Promise>>; + + /** + * Calls a Closure of known return type. + * @param c The Closure to be called. + * @param args An array of typed arguments to be passed to the Closure. + * @returns The returned typed value. + */ + closure_call_unchecked( + c: ClosureIdentifier, + args: TypedValue[] + ): Promise>>; + + /** + * Asserts the arity of a Closure. + * @param c The Closure to assert the arity of. + * @param arity The expected arity of the Closure. + * @throws If the Closure's arity is not as expected. + */ + closure_arity_assert(c: ClosureIdentifier, arity: number): void; + + /** + * Makes a new Opaque object. + * @param v The value to be stored under this Opaque object. + * @param immutable Mark this Opaque object as immutable. Mutable Opaque objects are not rollback-friendly, + * and evaluators should disable any rollback functionality upon receiving such an object. + * @returns An identifier to the new Opaque object. + */ + opaque_make(v: any, immutable?: boolean): OpaqueIdentifier; + + /** + * Gets the value stored under an Opaque object. + * @param o The identifier to the Opaque object. + * @returns The value stored under this new Opaque object. + */ + opaque_get(o: OpaqueIdentifier): any; + + /** + * Update the value stored under an Opaque object. + * @param o The identifier to the Opaque object. + * @param v The new value to store under this Opaque object. + */ + opaque_update(o: OpaqueIdentifier, v: any): void; + + /** + * Ties the lifetime of the dependee to the dependent. + * @param dependent The object that requires the existence of the dependee. + * @param dependee The object whose existence is required by the dependent. + */ + tie(dependent: Identifier, dependee: Identifier | null): void; + + /** + * Unties the lifetime of the dependee from the dependent. + * @param dependent The tied dependent object. + * @param dependee The tied dependee object. + */ + untie(dependent: Identifier, dependee: Identifier | null): void; + + ///// Standard library functions + + list(...elements: TypedValue[]): TypedValue; + is_list(xs: List): boolean; + list_to_vec(xs: List): TypedValue[]; + accumulate>( + op: ClosureIdentifier, + initial: TypedValue, + sequence: List, + resultType: T + ): Promise>; + length(xs: List): number; +} diff --git a/src/conductor/types/moduleInterface/IFunctionSignature.ts b/src/conductor/types/moduleInterface/IFunctionSignature.ts new file mode 100644 index 0000000..4409777 --- /dev/null +++ b/src/conductor/types/moduleInterface/IFunctionSignature.ts @@ -0,0 +1,16 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { DataType } from "./DataType"; + +export interface IFunctionSignature { + /** The name of this function or closure. */ + name?: string; + + /** The parameter types of this function or closure. */ + args: readonly DataType[]; + + /** The type of the return value from this function or closure. */ + returnType: DataType; +} diff --git a/src/conductor/types/moduleInterface/Identifier.ts b/src/conductor/types/moduleInterface/Identifier.ts new file mode 100644 index 0000000..3b43b28 --- /dev/null +++ b/src/conductor/types/moduleInterface/Identifier.ts @@ -0,0 +1,6 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +/** An identifier to an extern value. */ +export type Identifier = number; // we want number here so evaluators do not have to specifically cast to it diff --git a/src/conductor/types/moduleInterface/List.ts b/src/conductor/types/moduleInterface/List.ts new file mode 100644 index 0000000..14b52fb --- /dev/null +++ b/src/conductor/types/moduleInterface/List.ts @@ -0,0 +1,8 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { PairIdentifier } from "./PairIdentifier"; + +/** Either an identifier for a extern pair, or a null (empty-list) value. */ +export type List = PairIdentifier | null; diff --git a/src/conductor/types/moduleInterface/NativeValue.ts b/src/conductor/types/moduleInterface/NativeValue.ts new file mode 100644 index 0000000..6990bb2 --- /dev/null +++ b/src/conductor/types/moduleInterface/NativeValue.ts @@ -0,0 +1,6 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +/** A value that can be expressed with JS primitives. */ +export type NativeValue = undefined | boolean | number | string | null; diff --git a/src/conductor/types/moduleInterface/OpaqueIdentifier.ts b/src/conductor/types/moduleInterface/OpaqueIdentifier.ts new file mode 100644 index 0000000..f6e9f25 --- /dev/null +++ b/src/conductor/types/moduleInterface/OpaqueIdentifier.ts @@ -0,0 +1,8 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { Identifier } from "./Identifier"; + +/** An identifier for an extern opaque value. */ +export type OpaqueIdentifier = Identifier & { __brand: "opaque" }; // apply branding so it's harder to mix identifiers up diff --git a/src/conductor/types/moduleInterface/PairIdentifier.ts b/src/conductor/types/moduleInterface/PairIdentifier.ts new file mode 100644 index 0000000..df34e47 --- /dev/null +++ b/src/conductor/types/moduleInterface/PairIdentifier.ts @@ -0,0 +1,8 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { Identifier } from "./Identifier"; + +/** An identifier for an extern pair. */ +export type PairIdentifier = Identifier & { __brand: "pair" }; // apply branding so it's harder to mix identifiers up diff --git a/src/conductor/types/moduleInterface/StdlibFunction.ts b/src/conductor/types/moduleInterface/StdlibFunction.ts new file mode 100644 index 0000000..43ded35 --- /dev/null +++ b/src/conductor/types/moduleInterface/StdlibFunction.ts @@ -0,0 +1,10 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { IDataHandler } from "./IDataHandler"; + +export type StdlibFunction = ( + this: IDataHandler, + ...args: Arg +) => Ret; diff --git a/src/conductor/types/moduleInterface/TypedValue.ts b/src/conductor/types/moduleInterface/TypedValue.ts new file mode 100644 index 0000000..453eb70 --- /dev/null +++ b/src/conductor/types/moduleInterface/TypedValue.ts @@ -0,0 +1,14 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { DataType } from "./DataType"; +import type { ExternTypeOf } from "./ExternTypeOf"; + +interface ITypedValue { + type: T; + value: ExternTypeOf; +} + +// export a type instead to benefit from distributive conditional type +export type TypedValue = T extends DataType ? ITypedValue : never; diff --git a/src/conductor/types/moduleInterface/index.ts b/src/conductor/types/moduleInterface/index.ts new file mode 100644 index 0000000..a937716 --- /dev/null +++ b/src/conductor/types/moduleInterface/index.ts @@ -0,0 +1,19 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export type { ArrayIdentifier } from "./ArrayIdentifier"; +export type { ClosureIdentifier } from "./ClosureIdentifier"; +export { DataType } from "./DataType"; +export type { ExternCallable } from "./ExternCallable"; +export type { ExternTypeOf } from "./ExternTypeOf"; +export type { ExternValue } from "./ExternValue"; +export type { IDataHandler } from "./IDataHandler"; +export type { Identifier } from "./Identifier"; +export type { IFunctionSignature } from "./IFunctionSignature"; +export type { List } from "./List"; +export type { NativeValue } from "./NativeValue"; +export type { OpaqueIdentifier } from "./OpaqueIdentifier"; +export type { PairIdentifier } from "./PairIdentifier"; +export type { StdlibFunction } from "./StdlibFunction"; +export type { TypedValue } from "./TypedValue"; diff --git a/src/conductor/types/serviceMessages/AbortServiceMessage.ts b/src/conductor/types/serviceMessages/AbortServiceMessage.ts new file mode 100644 index 0000000..bf0aa6b --- /dev/null +++ b/src/conductor/types/serviceMessages/AbortServiceMessage.ts @@ -0,0 +1,14 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { IServiceMessage } from "../IServiceMessage"; +import { ServiceMessageType } from "../ServiceMessageType"; + +export class AbortServiceMessage implements IServiceMessage { + readonly type = ServiceMessageType.ABORT; + readonly data: { minVersion: number }; + constructor(minVersion: number) { + this.data = { minVersion: minVersion }; + } +} diff --git a/src/conductor/types/serviceMessages/EntryServiceMessage.ts b/src/conductor/types/serviceMessages/EntryServiceMessage.ts new file mode 100644 index 0000000..ee61ec0 --- /dev/null +++ b/src/conductor/types/serviceMessages/EntryServiceMessage.ts @@ -0,0 +1,14 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { IServiceMessage } from "../IServiceMessage"; +import { ServiceMessageType } from "../ServiceMessageType"; + +export class EntryServiceMessage implements IServiceMessage { + readonly type = ServiceMessageType.ENTRY; + readonly data: string; + constructor(entryPoint: string) { + this.data = entryPoint; + } +} diff --git a/src/conductor/types/serviceMessages/HelloServiceMessage.ts b/src/conductor/types/serviceMessages/HelloServiceMessage.ts new file mode 100644 index 0000000..6490525 --- /dev/null +++ b/src/conductor/types/serviceMessages/HelloServiceMessage.ts @@ -0,0 +1,12 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { Constant } from "../../../common/Constant"; +import type { IServiceMessage } from "../IServiceMessage"; +import { ServiceMessageType } from "../ServiceMessageType"; + +export class HelloServiceMessage implements IServiceMessage { + readonly type = ServiceMessageType.HELLO; + readonly data = { version: Constant.PROTOCOL_VERSION }; +} diff --git a/src/conductor/types/serviceMessages/PluginServiceMessage.ts b/src/conductor/types/serviceMessages/PluginServiceMessage.ts new file mode 100644 index 0000000..af520a1 --- /dev/null +++ b/src/conductor/types/serviceMessages/PluginServiceMessage.ts @@ -0,0 +1,14 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { IServiceMessage } from "../IServiceMessage"; +import { ServiceMessageType } from "../ServiceMessageType"; + +export class PluginServiceMessage implements IServiceMessage { + readonly type = ServiceMessageType.PLUGIN; + readonly data: string; + constructor(pluginName: string) { + this.data = pluginName; + } +} diff --git a/src/conductor/types/serviceMessages/index.ts b/src/conductor/types/serviceMessages/index.ts new file mode 100644 index 0000000..de1b776 --- /dev/null +++ b/src/conductor/types/serviceMessages/index.ts @@ -0,0 +1,8 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export { AbortServiceMessage } from "./AbortServiceMessage"; +export { EntryServiceMessage } from "./EntryServiceMessage"; +export { HelloServiceMessage } from "./HelloServiceMessage"; +export { PluginServiceMessage } from "./PluginServiceMessage"; diff --git a/src/conductor/util/index.ts b/src/conductor/util/index.ts new file mode 100644 index 0000000..91da694 --- /dev/null +++ b/src/conductor/util/index.ts @@ -0,0 +1,16 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export { isReferenceType } from "./isReferenceType"; +export { isSameType } from "./isSameType"; +export { mArray } from "./mArray"; +export { mBoolean } from "./mBoolean"; +export { mClosure } from "./mClosure"; +export { mEmptyList } from "./mEmptyList"; +export { mList } from "./mList"; +export { mNumber } from "./mNumber"; +export { mOpaque } from "./mOpaque"; +export { mPair } from "./mPair"; +export { mString } from "./mString"; +export { mVoid } from "./mVoid"; diff --git a/src/conductor/util/isReferenceType.ts b/src/conductor/util/isReferenceType.ts new file mode 100644 index 0000000..b3ce6ea --- /dev/null +++ b/src/conductor/util/isReferenceType.ts @@ -0,0 +1,22 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { DataType } from "../types"; + +const lookupTable = { + [DataType.VOID]: false, + [DataType.BOOLEAN]: false, + [DataType.NUMBER]: false, + [DataType.CONST_STRING]: false, + [DataType.EMPTY_LIST]: true, // technically not; see list + [DataType.PAIR]: true, + [DataType.ARRAY]: true, + [DataType.CLOSURE]: true, + [DataType.OPAQUE]: true, + [DataType.LIST]: true, // technically not, but easier to do this due to pair being so +}; + +export function isReferenceType(type: DataType): boolean { + return lookupTable[type]; +} diff --git a/src/conductor/util/isSameType.ts b/src/conductor/util/isSameType.ts new file mode 100644 index 0000000..2b4ef67 --- /dev/null +++ b/src/conductor/util/isSameType.ts @@ -0,0 +1,20 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { DataType } from "../types"; + +export function isSameType(t1: DataType, t2: DataType): boolean { + if (t1 === t2) return true; + if ( + t1 === DataType.LIST && + (t2 === DataType.PAIR || t2 === DataType.EMPTY_LIST) + ) + return true; + if ( + t2 === DataType.LIST && + (t1 === DataType.PAIR || t1 === DataType.EMPTY_LIST) + ) + return true; + return false; +} diff --git a/src/conductor/util/mArray.ts b/src/conductor/util/mArray.ts new file mode 100644 index 0000000..9f4ef6b --- /dev/null +++ b/src/conductor/util/mArray.ts @@ -0,0 +1,14 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { ArrayIdentifier, DataType, TypedValue } from "../types"; + +export function mArray( + value: ArrayIdentifier +): TypedValue { + return { + type: DataType.ARRAY, + value, + }; +} diff --git a/src/conductor/util/mBoolean.ts b/src/conductor/util/mBoolean.ts new file mode 100644 index 0000000..c629209 --- /dev/null +++ b/src/conductor/util/mBoolean.ts @@ -0,0 +1,12 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { DataType, TypedValue } from "../types"; + +export function mBoolean(value: boolean): TypedValue { + return { + type: DataType.BOOLEAN, + value, + }; +} diff --git a/src/conductor/util/mClosure.ts b/src/conductor/util/mClosure.ts new file mode 100644 index 0000000..8095096 --- /dev/null +++ b/src/conductor/util/mClosure.ts @@ -0,0 +1,14 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { ClosureIdentifier, DataType, TypedValue } from "../types"; + +export function mClosure( + value: ClosureIdentifier +): TypedValue { + return { + type: DataType.CLOSURE, + value, + }; +} diff --git a/src/conductor/util/mEmptyList.ts b/src/conductor/util/mEmptyList.ts new file mode 100644 index 0000000..26754e8 --- /dev/null +++ b/src/conductor/util/mEmptyList.ts @@ -0,0 +1,14 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { DataType, TypedValue } from "../types"; + +export function mEmptyList( + value: null = null +): TypedValue { + return { + type: DataType.EMPTY_LIST, + value, + }; +} diff --git a/src/conductor/util/mList.ts b/src/conductor/util/mList.ts new file mode 100644 index 0000000..da3016b --- /dev/null +++ b/src/conductor/util/mList.ts @@ -0,0 +1,12 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { DataType, TypedValue, PairIdentifier } from "../types"; + +export function mList(value: PairIdentifier | null): TypedValue { + return { + type: DataType.LIST, + value, + }; +} diff --git a/src/conductor/util/mNumber.ts b/src/conductor/util/mNumber.ts new file mode 100644 index 0000000..9767eb3 --- /dev/null +++ b/src/conductor/util/mNumber.ts @@ -0,0 +1,12 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { DataType, TypedValue } from "../types"; + +export function mNumber(value: number): TypedValue { + return { + type: DataType.NUMBER, + value, + }; +} diff --git a/src/conductor/util/mOpaque.ts b/src/conductor/util/mOpaque.ts new file mode 100644 index 0000000..0d9cfe2 --- /dev/null +++ b/src/conductor/util/mOpaque.ts @@ -0,0 +1,12 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { DataType, TypedValue, OpaqueIdentifier } from "../types"; + +export function mOpaque(value: OpaqueIdentifier): TypedValue { + return { + type: DataType.OPAQUE, + value, + }; +} diff --git a/src/conductor/util/mPair.ts b/src/conductor/util/mPair.ts new file mode 100644 index 0000000..ae0fe04 --- /dev/null +++ b/src/conductor/util/mPair.ts @@ -0,0 +1,12 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { DataType, TypedValue, PairIdentifier } from "../types"; + +export function mPair(value: PairIdentifier): TypedValue { + return { + type: DataType.PAIR, + value, + }; +} diff --git a/src/conductor/util/mString.ts b/src/conductor/util/mString.ts new file mode 100644 index 0000000..4ee51c7 --- /dev/null +++ b/src/conductor/util/mString.ts @@ -0,0 +1,12 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { DataType, TypedValue } from "../types"; + +export function mString(value: string): TypedValue { + return { + type: DataType.CONST_STRING, + value, + }; +} diff --git a/src/conductor/util/mVoid.ts b/src/conductor/util/mVoid.ts new file mode 100644 index 0000000..c1f9fef --- /dev/null +++ b/src/conductor/util/mVoid.ts @@ -0,0 +1,12 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { DataType, TypedValue } from "../types"; + +export function mVoid(value: void = undefined): TypedValue { + return { + type: DataType.VOID, + value, + }; +} diff --git a/src/conduit/Channel.ts b/src/conduit/Channel.ts new file mode 100644 index 0000000..a192f7e --- /dev/null +++ b/src/conduit/Channel.ts @@ -0,0 +1,95 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { ConductorInternalError } from "../common/errors/ConductorInternalError"; +import { IChannel, Subscriber } from "./types"; + +export class Channel implements IChannel { + readonly name: string; + + /** The underlying MessagePort of this Channel. */ + private __port!: MessagePort; // replacePort assigns this in the constructor + + /** The callbacks subscribed to this Channel. */ + private readonly __subscribers: Set> = new Set(); // TODO: use WeakRef? but callbacks tend to be thrown away and leaking is better than incorrect behaviour + + /** Is the Channel allowed to be used? */ + private __isAlive: boolean = true; + + private __waitingMessages?: T[] = []; + + send(message: T, transfer?: Transferable[]): void { + this.__verifyAlive(); + this.__port.postMessage(message, transfer ?? []); + } + subscribe(subscriber: Subscriber): void { + this.__verifyAlive(); + this.__subscribers.add(subscriber); + if (this.__waitingMessages) { + for (const data of this.__waitingMessages) { + subscriber(data); + } + delete this.__waitingMessages; + } + } + unsubscribe(subscriber: Subscriber): void { + this.__verifyAlive(); + this.__subscribers.delete(subscriber); + } + close(): void { + this.__verifyAlive(); + this.__isAlive = false; + this.__port?.close(); + } + + /** + * Check if this Channel is allowed to be used. + * @throws Throws an error if the Channel has been closed. + */ + private __verifyAlive() { + if (!this.__isAlive) + throw new ConductorInternalError(`Channel ${this.name} has been closed`); + } + + /** + * Dispatch some data to subscribers. + * @param data The data to be dispatched to subscribers. + */ + private __dispatch(data: T): void { + this.__verifyAlive(); + if (this.__waitingMessages) { + this.__waitingMessages.push(data); + } else { + for (const subscriber of this.__subscribers) { + subscriber(data); + } + } + } + + /** + * Listens to the port's message event, and starts the port. + * Messages will be buffered until the first subscriber listens to the Channel. + * @param port The MessagePort to listen to. + */ + listenToPort(port: MessagePort): void { + port.addEventListener("message", e => this.__dispatch(e.data)); + port.start(); + } + + /** + * Replaces the underlying MessagePort of this Channel and closes it, and starts the new port. + * @param port The new port to use. + */ + replacePort(port: MessagePort): void { + this.__verifyAlive(); + this.__port?.close(); + this.__port = port; + this.listenToPort(port); + } + + constructor(name: string, port: MessagePort) { + this.name = name; + this.replacePort(port); + } +} diff --git a/src/conduit/ChannelQueue.ts b/src/conduit/ChannelQueue.ts new file mode 100644 index 0000000..a0b8b42 --- /dev/null +++ b/src/conduit/ChannelQueue.ts @@ -0,0 +1,30 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { MessageQueue } from "../common/ds"; +import { IChannelQueue, IChannel } from "./types"; + +export class ChannelQueue implements IChannelQueue { + readonly name: string; + private __channel: IChannel; + private __messageQueue: MessageQueue = new MessageQueue(); + + async receive(): Promise { + return this.__messageQueue.pop(); + } + tryReceive(): T | undefined { + return this.__messageQueue.tryPop(); + } + send(message: T, transfer?: Transferable[]): void { + this.__channel.send(message, transfer); + } + close(): void { + this.__channel.unsubscribe(this.__messageQueue.push); + } + constructor(channel: IChannel) { + this.name = channel.name; + this.__channel = channel; + this.__channel.subscribe(this.__messageQueue.push); + } +} diff --git a/src/conduit/Conduit.ts b/src/conduit/Conduit.ts new file mode 100644 index 0000000..2b2193f --- /dev/null +++ b/src/conduit/Conduit.ts @@ -0,0 +1,109 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { ConductorInternalError } from "../common/errors/ConductorInternalError"; +import { Channel } from "./Channel"; +import { IConduit, ILink, IPlugin, IChannel, PluginClass } from "./types"; + +export class Conduit implements IConduit { + private __alive: boolean = true; + private readonly __link: ILink; + private readonly __parent: boolean; + private readonly __channels: Map> = new Map(); + private readonly __pluginMap: Map = new Map(); + private readonly __plugins: IPlugin[] = []; + private __negotiateChannel(channelName: string): void { + const { port1, port2 } = new MessageChannel(); + const channel = new Channel(channelName, port1); + this.__link.postMessage([channelName, port2], [port2]); // TODO: update communication protocol? + this.__channels.set(channelName, channel); + } + private __verifyAlive() { + if (!this.__alive) + throw new ConductorInternalError("Conduit already terminated"); + } + registerPlugin( + pluginClass: PluginClass, + ...arg: Arg + ): NoInfer { + this.__verifyAlive(); + const attachedChannels: IChannel[] = []; + for (const channelName of pluginClass.channelAttach) { + if (!this.__channels.has(channelName)) + this.__negotiateChannel(channelName); + attachedChannels.push(this.__channels.get(channelName)!); // as the Channel has been negotiated + } + const plugin = new pluginClass(this, attachedChannels, ...arg); + + if (plugin.name !== undefined) { + if (this.__pluginMap.has(plugin.name)) + throw new ConductorInternalError( + `Plugin ${plugin.name} already registered` + ); + this.__pluginMap.set(plugin.name, plugin); + } + + this.__plugins.push(plugin); + + return plugin; + } + unregisterPlugin(plugin: IPlugin): void { + this.__verifyAlive(); + let p = 0; + for (let i = 0; i < this.__plugins.length; ++i) { + if (this.__plugins[p] === plugin) ++p; + this.__plugins[i] = this.__plugins[i + p]; + } + for ( + let i = this.__plugins.length - 1, e = this.__plugins.length - p; + i >= e; + --i + ) { + delete this.__plugins[i]; + } + if (plugin.name) { + this.__pluginMap.delete(plugin.name); + } + plugin.destroy?.(); + } + lookupPlugin(pluginName: string): IPlugin { + this.__verifyAlive(); + if (!this.__pluginMap.has(pluginName)) + throw new ConductorInternalError(`Plugin ${pluginName} not registered`); + return this.__pluginMap.get(pluginName)!; // as the map has been checked + } + terminate(): void { + this.__verifyAlive(); + for (const plugin of this.__plugins) { + //this.unregisterPlugin(plugin); + plugin.destroy?.(); + } + this.__link.terminate?.(); + this.__alive = false; + } + private __handlePort(data: [string, MessagePort]) { + // TODO: update communication protocol? + const [channelName, port] = data; + if (this.__channels.has(channelName)) { + // uh-oh, we already have a port for this channel + const channel = this.__channels.get(channelName)!; // as the map has been checked + if (this.__parent) { + // extract the data and discard the messageport; child's Channel will close it + channel.listenToPort(port); + } else { + // replace our messageport; Channel will close it + channel.replacePort(port); + } + } else { + // register the new channel + const channel = new Channel(channelName, port); + this.__channels.set(channelName, channel); + } + } + constructor(link: ILink, parent: boolean = false) { + this.__link = link; + link.addEventListener("message", e => this.__handlePort(e.data)); + this.__parent = parent; + } +} diff --git a/src/conduit/index.ts b/src/conduit/index.ts new file mode 100644 index 0000000..27054cc --- /dev/null +++ b/src/conduit/index.ts @@ -0,0 +1,15 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export type { + IChannel, + IConduit, + ILink, + IChannelQueue, + IPlugin, + Subscriber, +} from "./types"; +export { Channel } from "./Channel"; +export { ChannelQueue } from "./ChannelQueue"; +export { Conduit } from "./Conduit"; diff --git a/src/conduit/rpc/index.ts b/src/conduit/rpc/index.ts new file mode 100644 index 0000000..17f0a0a --- /dev/null +++ b/src/conduit/rpc/index.ts @@ -0,0 +1,6 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export { Remote } from "./types"; +export { makeRpc } from "./makeRpc"; diff --git a/src/conduit/rpc/makeRpc.ts b/src/conduit/rpc/makeRpc.ts new file mode 100644 index 0000000..785b3fc --- /dev/null +++ b/src/conduit/rpc/makeRpc.ts @@ -0,0 +1,74 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { IChannel } from "../types"; +import { + IRpcMessage, + Remote, + RpcCallMessage, + RpcErrorMessage, + RpcMessageType, + RpcReturnMessage, +} from "./types"; + +export function makeRpc( + channel: IChannel, + self: ISelf +): Remote { + const waiting: [Function, Function][] = []; + let invocations = 0; + const otherCallbacks: Partial< + Record Promise> + > = {}; + + channel.subscribe(async rpcMessage => { + switch (rpcMessage.type) { + case RpcMessageType.CALL: { + const { fn, args, invokeId } = (rpcMessage as RpcCallMessage).data; + try { + // @ts-expect-error + const res = await self[fn as keyof ISelf](...args); + if (invokeId > 0) channel.send(new RpcReturnMessage(invokeId, res)); + } catch (err) { + if (invokeId > 0) channel.send(new RpcErrorMessage(invokeId, err)); + } + break; + } + case RpcMessageType.RETURN: { + const { invokeId, res } = (rpcMessage as RpcReturnMessage).data; + waiting[invokeId]?.[0]?.(res); + delete waiting[invokeId]; + break; + } + case RpcMessageType.RETURN_ERR: { + const { invokeId, err } = (rpcMessage as RpcErrorMessage).data; + waiting[invokeId]?.[1]?.(err); + delete waiting[invokeId]; + break; + } + } + }); + + return new Proxy(otherCallbacks, { + // TODO: transferring functions + get(target, p, receiver) { + const cb = Reflect.get(target, p, receiver); + if (cb) return cb; + const newCallback = + typeof p === "string" && p.charAt(0) === "$" + ? (...args: any[]) => { + channel.send(new RpcCallMessage(p, args, 0)); + } + : (...args: any[]) => { + const invokeId = ++invocations; + channel.send(new RpcCallMessage(p, args, invokeId)); + return new Promise((resolve, reject) => { + waiting[invokeId] = [resolve, reject]; + }); + }; + Reflect.set(target, p, newCallback, receiver); + return newCallback; + }, + }) as Remote; +} diff --git a/src/conduit/rpc/types/IRpcMessage.ts b/src/conduit/rpc/types/IRpcMessage.ts new file mode 100644 index 0000000..65d3caa --- /dev/null +++ b/src/conduit/rpc/types/IRpcMessage.ts @@ -0,0 +1,10 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { RpcMessageType } from "./RpcMessageType"; + +export interface IRpcMessage { + type: RpcMessageType; + data?: any; +} diff --git a/src/conduit/rpc/types/Remote.ts b/src/conduit/rpc/types/Remote.ts new file mode 100644 index 0000000..19824fd --- /dev/null +++ b/src/conduit/rpc/types/Remote.ts @@ -0,0 +1,15 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export type Remote = { + [K in keyof IOther]: IOther[K] extends (...args: infer Args) => infer Ret + ? K extends `$${infer _N}` + ? Ret extends void + ? IOther[K] + : (...args: Args) => void + : Ret extends Promise + ? IOther[K] + : (...args: Args) => Promise + : never; +}; diff --git a/src/conduit/rpc/types/RpcCallMessage.ts b/src/conduit/rpc/types/RpcCallMessage.ts new file mode 100644 index 0000000..536e051 --- /dev/null +++ b/src/conduit/rpc/types/RpcCallMessage.ts @@ -0,0 +1,15 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { IRpcMessage } from "./IRpcMessage"; +import { RpcMessageType } from "./RpcMessageType"; + +export class RpcCallMessage implements IRpcMessage { + type = RpcMessageType.CALL; + readonly data: { fn: string | symbol; args: any[]; invokeId: number }; + + constructor(fn: string | symbol, args: any[], invokeId: number) { + this.data = { fn, args, invokeId }; + } +} diff --git a/src/conduit/rpc/types/RpcErrorMessage.ts b/src/conduit/rpc/types/RpcErrorMessage.ts new file mode 100644 index 0000000..1c48081 --- /dev/null +++ b/src/conduit/rpc/types/RpcErrorMessage.ts @@ -0,0 +1,15 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { IRpcMessage } from "./IRpcMessage"; +import { RpcMessageType } from "./RpcMessageType"; + +export class RpcErrorMessage implements IRpcMessage { + type = RpcMessageType.RETURN_ERR; + readonly data: { invokeId: number; err: any }; + + constructor(invokeId: number, err: any) { + this.data = { invokeId, err }; + } +} diff --git a/src/conduit/rpc/types/RpcMessageType.ts b/src/conduit/rpc/types/RpcMessageType.ts new file mode 100644 index 0000000..99c8822 --- /dev/null +++ b/src/conduit/rpc/types/RpcMessageType.ts @@ -0,0 +1,11 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +const enum RpcMessageType { + CALL, + RETURN, + RETURN_ERR, +} + +export { RpcMessageType }; diff --git a/src/conduit/rpc/types/RpcReturnMessage.ts b/src/conduit/rpc/types/RpcReturnMessage.ts new file mode 100644 index 0000000..332f0f6 --- /dev/null +++ b/src/conduit/rpc/types/RpcReturnMessage.ts @@ -0,0 +1,15 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { IRpcMessage } from "./IRpcMessage"; +import { RpcMessageType } from "./RpcMessageType"; + +export class RpcReturnMessage implements IRpcMessage { + type = RpcMessageType.RETURN; + readonly data: { invokeId: number; res: any }; + + constructor(invokeId: number, res: any) { + this.data = { invokeId, res }; + } +} diff --git a/src/conduit/rpc/types/index.ts b/src/conduit/rpc/types/index.ts new file mode 100644 index 0000000..23d74c6 --- /dev/null +++ b/src/conduit/rpc/types/index.ts @@ -0,0 +1,10 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export type { IRpcMessage } from "./IRpcMessage"; +export type { Remote } from "./Remote"; +export { RpcCallMessage } from "./RpcCallMessage"; +export { RpcErrorMessage } from "./RpcErrorMessage"; +export { RpcMessageType } from "./RpcMessageType"; +export { RpcReturnMessage } from "./RpcReturnMessage"; diff --git a/src/conduit/types/AbstractPluginClass.ts b/src/conduit/types/AbstractPluginClass.ts new file mode 100644 index 0000000..f633dd7 --- /dev/null +++ b/src/conduit/types/AbstractPluginClass.ts @@ -0,0 +1,15 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { IChannel } from "./IChannel"; +import { IConduit } from "./IConduit"; +import { IPlugin } from "./IPlugin"; + +export type AbstractPluginClass = { + readonly channelAttach: string[]; +} & (abstract new ( + conduit: IConduit, + channels: IChannel[], + ...arg: Arg +) => T); diff --git a/src/conduit/types/IChannel.ts b/src/conduit/types/IChannel.ts new file mode 100644 index 0000000..87dfc25 --- /dev/null +++ b/src/conduit/types/IChannel.ts @@ -0,0 +1,34 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { Subscriber } from "./Subscriber"; + +export interface IChannel { + /** The name of the channel. */ + readonly name: string; + + /** + * Send a message through this channel. + * @param message The message to be sent. + * @param transfer An array of transferable objects to be sent with the message. + */ + send(message: T, transfer?: Transferable[]): void; + + /** + * Subscribe to messages on this channel. + * @param subscriber The function to be called when a message is received. + */ + subscribe(subscriber: Subscriber): void; + + /** + * Unsubscribe from messages on this channel. + * @param subscriber The function that was called when a message is received. + */ + unsubscribe(subscriber: Subscriber): void; + + /** + * Closes the channel, and frees any held resources. + */ + close(): void; +} diff --git a/src/conduit/types/IChannelQueue.ts b/src/conduit/types/IChannelQueue.ts new file mode 100644 index 0000000..0bb873f --- /dev/null +++ b/src/conduit/types/IChannelQueue.ts @@ -0,0 +1,33 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export interface IChannelQueue { + /** The name of the message queue. */ + readonly name: string; + + /** + * Send a message through the underlying channel. + * @param message The message to be sent. + * @param transfer An array of transferable objects to be sent with the message. + */ + send(message: T, transfer?: Transferable[]): void; + + /** + * Receives a queued message, or waits until one arrives. + * @returns A promise resolving to the received message. + */ + receive(): Promise; + + /** + * Tries to receive a queued message. + * Does not wait for a message if the queue is empty. + * @returns The received message, or undefined if the queue is empty. + */ + tryReceive(): T | undefined; + + /** + * Closes the message queue. + */ + close(): void; +} diff --git a/src/conduit/types/IConduit.ts b/src/conduit/types/IConduit.ts new file mode 100644 index 0000000..7880666 --- /dev/null +++ b/src/conduit/types/IConduit.ts @@ -0,0 +1,34 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import type { IPlugin } from "./IPlugin"; +import type { PluginClass } from "./PluginClass"; + +export interface IConduit { + /** + * Register a plugin with the conduit. + * @param pluginClass The plugin to be registered. + */ + registerPlugin( + pluginClass: PluginClass, + ...arg: Arg + ): NoInfer; + + /** + * Unregister a plugin from the conduit. + * @param plugin The plugin to be unregistered. + */ + unregisterPlugin(plugin: IPlugin): void; + + /** + * Look for a plugin with the given name. + * @param pluginName The name of the plugin to be searched for. + */ + lookupPlugin(pluginName: string): IPlugin; + + /** + * Shuts down the conduit. + */ + terminate(): void; +} diff --git a/src/conduit/types/ILink.ts b/src/conduit/types/ILink.ts new file mode 100644 index 0000000..ae2fbb2 --- /dev/null +++ b/src/conduit/types/ILink.ts @@ -0,0 +1,9 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export interface ILink { + postMessage: typeof Worker.prototype.postMessage; + addEventListener: typeof Worker.prototype.addEventListener; + terminate?: typeof Worker.prototype.terminate; +} diff --git a/src/conduit/types/IPlugin.ts b/src/conduit/types/IPlugin.ts new file mode 100644 index 0000000..f1593f4 --- /dev/null +++ b/src/conduit/types/IPlugin.ts @@ -0,0 +1,13 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export interface IPlugin { + /** The name of the plugin. Can be undefined for an unnamed plugin. */ + readonly name?: string; + + /** + * Perform any cleanup of the plugin (e.g. closing message queues). + */ + destroy?(): void; +} diff --git a/src/conduit/types/PluginClass.ts b/src/conduit/types/PluginClass.ts new file mode 100644 index 0000000..a57584b --- /dev/null +++ b/src/conduit/types/PluginClass.ts @@ -0,0 +1,11 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { IChannel } from "./IChannel"; +import { IConduit } from "./IConduit"; +import type { IPlugin } from "./IPlugin"; + +export type PluginClass = { + readonly channelAttach: string[]; +} & (new (conduit: IConduit, channels: IChannel[], ...arg: Arg) => T); diff --git a/src/conduit/types/Subscriber.ts b/src/conduit/types/Subscriber.ts new file mode 100644 index 0000000..2e8a16c --- /dev/null +++ b/src/conduit/types/Subscriber.ts @@ -0,0 +1,6 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +/** A subscriber of a channel. */ +export type Subscriber = (data: T) => void; diff --git a/src/conduit/types/index.ts b/src/conduit/types/index.ts new file mode 100644 index 0000000..1a12428 --- /dev/null +++ b/src/conduit/types/index.ts @@ -0,0 +1,12 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export type { AbstractPluginClass } from "./AbstractPluginClass"; +export type { IChannel } from "./IChannel"; +export type { IChannelQueue } from "./IChannelQueue"; +export type { IConduit } from "./IConduit"; +export type { ILink } from "./ILink"; +export type { IPlugin } from "./IPlugin"; +export type { PluginClass } from "./PluginClass"; +export type { Subscriber } from "./Subscriber"; diff --git a/src/conduit/util/checkIsPluginClass.ts b/src/conduit/util/checkIsPluginClass.ts new file mode 100644 index 0000000..2d38798 --- /dev/null +++ b/src/conduit/util/checkIsPluginClass.ts @@ -0,0 +1,17 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +import { IPlugin } from ".."; +import { AbstractPluginClass, PluginClass } from "../types"; + +/** + * Typechecking utility decorator. + * It is recommended that usage of this decorator is removed + * before or during the build process, as some tools + * (e.g. terser) do not have good support for class decorators. + * @param _pluginClass The Class to be typechecked. + */ +export function checkIsPluginClass( + _pluginClass: PluginClass | AbstractPluginClass +) {} diff --git a/src/conduit/util/index.ts b/src/conduit/util/index.ts new file mode 100644 index 0000000..1bc76af --- /dev/null +++ b/src/conduit/util/index.ts @@ -0,0 +1,5 @@ +// This file is adapted from: +// https://github.com/source-academy/conductor +// Original author(s): Source Academy Team + +export { checkIsPluginClass } from "./checkIsPluginClass"; diff --git a/src/index.ts b/src/index.ts index f9d4b64..8ffae9d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,10 +1,36 @@ -import { encode as b64Encode, decode as b64Decode } from "js-base64"; +// Import for internal use +import { SchemeEvaluator } from "./conductor/runner/SchemeEvaluator"; +import { initialise } from "./conductor/runner/util/initialise"; +// Import js-base64 functions directly +const b64Encode = (str: string) => btoa(unescape(encodeURIComponent(str))); +const b64Decode = (str: string) => decodeURIComponent(escape(atob(str))); + +// Export CSE Machine functionality +export { parseSchemeSimple } from "./CSE-machine/simple-parser"; +export { evaluate, Context } from "./CSE-machine/interpreter"; +export { createProgramEnvironment } from "./CSE-machine/environment"; +export { Value, Stash } from "./CSE-machine/stash"; +export { Control } from "./CSE-machine/control"; +export { SchemeComplexNumber } from "./CSE-machine/complex"; + +// Export Conductor integration +export { SchemeEvaluator } from "./conductor/runner/SchemeEvaluator"; +export { BasicEvaluator } from "./conductor/runner/BasicEvaluator"; +export { initialise } from "./conductor/runner/util/initialise"; + +// // Export types +// export * from "./conductor/runner/types"; +// export * from "./conductor/types"; +// export * from "./conduit/types"; +// export * from "./common/errors"; + +// Export transpiler functionality (for compatibility) export * from "./utils/encoder-visitor"; export { unparse } from "./utils/reverse_parser"; -export { LexerError } from "./transpiler"; -export { ParserError } from "./transpiler"; -export { schemeParse } from "./transpiler"; + +// Export tracer functionality +export { stepExpression } from "./tracer/stepper"; const JS_KEYWORDS: string[] = [ "break", @@ -98,3 +124,22 @@ export function decode(identifier: string): string { ); } } + +// Initialize conductor (following py-slang pattern) +// Note: This will be executed when the module is loaded +let runnerPlugin: any; +let conduit: any; + +try { + const result = initialise(SchemeEvaluator); + runnerPlugin = result.runnerPlugin; + conduit = result.conduit; +} catch (error) { + console.warn("Conductor initialization failed, using mock objects:", error); + // Create mock objects if initialization fails + runnerPlugin = {}; + conduit = {}; +} + +// Export for Source Academy integration +export { runnerPlugin, conduit }; diff --git a/src/stdlib/scm_s1_constants.json b/src/stdlib/scm_s1_constants.json new file mode 100644 index 0000000..bc357c5 --- /dev/null +++ b/src/stdlib/scm_s1_constants.json @@ -0,0 +1,65 @@ +{ + "builtInFuncs": [ + "+", + "-", + "*", + "/", + ">", + "<", + ">=", + "<=", + "=", + "equal?", + "car", + "cdr", + "cons", + "list", + "null?", + "pair?", + "number?", + "string?", + "boolean?", + "display", + "newline", + "abs", + "max", + "min", + "round", + "floor", + "ceiling", + "sqrt", + "expt", + "remainder", + "quotient", + "modulo" + ], + "constants": ["pi", "e", "infinity", "negative-infinity"], + "keywords": [ + "define", + "lambda", + "if", + "cond", + "else", + "and", + "or", + "not", + "let", + "let*", + "letrec", + "begin", + "quote", + "set!" + ], + "features": [ + "variable-declaration", + "function-definition", + "function-application", + "conditional-expressions", + "arithmetic-operations", + "comparison-operations", + "list-operations", + "boolean-operations", + "complex-numbers", + "basic-builtins" + ] +} diff --git a/src/test/01-test-parser.ts b/src/test/01-test-parser.ts new file mode 100644 index 0000000..df79807 --- /dev/null +++ b/src/test/01-test-parser.ts @@ -0,0 +1,90 @@ +import { parseSchemeSimple } from "../CSE-machine/simple-parser"; +import { Atomic } from "../transpiler/types/nodes/scheme-node-types"; + +function testParser() { + console.log("🧪 Testing Parser"); + console.log("================\n"); + + const testCases = [ + { code: "42", expected: "NumericLiteral", description: "Number literal" }, + { + code: '"hello"', + expected: "StringLiteral", + description: "String literal", + }, + { code: "#t", expected: "BooleanLiteral", description: "Boolean true" }, + { code: "#f", expected: "BooleanLiteral", description: "Boolean false" }, + { code: "()", expected: "Nil", description: "Empty list" }, + { code: "x", expected: "Identifier", description: "Identifier" }, + { + code: "(+ 1 2)", + expected: "Application", + description: "Function application", + }, + { + code: "(define x 5)", + expected: "Definition", + description: "Variable definition", + }, + { + code: "(if #t 1 2)", + expected: "Conditional", + description: "Conditional expression", + }, + { + code: "(lambda (x) (+ x 1))", + expected: "Lambda", + description: "Lambda expression", + }, + ]; + + let passed = 0; + let failed = 0; + + for (const testCase of testCases) { + try { + const expressions = parseSchemeSimple(testCase.code); + + if (expressions.length === 0) { + console.log(`❌ ${testCase.description}: No expressions parsed`); + failed++; + continue; + } + + const firstExpr = expressions[0]; + const actualType = firstExpr.constructor.name; + + if (actualType === testCase.expected) { + console.log( + `✅ ${testCase.description}: ${testCase.code} -> ${actualType}` + ); + passed++; + } else { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> ${actualType} (expected ${testCase.expected})` + ); + failed++; + } + } catch (error: any) { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> ERROR: ${error.message}` + ); + failed++; + } + } + + console.log("\n📊 Parser Test Results:"); + console.log(`✅ Passed: ${passed}`); + console.log(`❌ Failed: ${failed}`); + console.log( + `📈 Success Rate: ${((passed / (passed + failed)) * 100).toFixed(1)}%` + ); + + if (failed === 0) { + console.log("\n🎉 Parser is working correctly!"); + } else { + console.log("\n🔧 Parser needs fixes"); + } +} + +testParser(); diff --git a/src/test/02-test-cse-basic.ts b/src/test/02-test-cse-basic.ts new file mode 100644 index 0000000..9d7c7f2 --- /dev/null +++ b/src/test/02-test-cse-basic.ts @@ -0,0 +1,86 @@ +import { parseSchemeSimple } from "../CSE-machine/simple-parser"; +import { evaluate, Context } from "../CSE-machine/interpreter"; +import { createProgramEnvironment } from "../CSE-machine/environment"; +import { Stash } from "../CSE-machine/stash"; +import { Control } from "../CSE-machine/control"; + +function testCSEBasic() { + console.log("🧪 Testing CSE Machine - Basic Expressions"); + console.log("==========================================\n"); + + const testCases = [ + { + code: "42", + expected: { type: "number", value: 42 }, + description: "Number literal", + }, + { + code: '"hello"', + expected: { type: "string", value: "hello" }, + description: "String literal", + }, + { + code: "#t", + expected: { type: "boolean", value: true }, + description: "Boolean true", + }, + { + code: "#f", + expected: { type: "boolean", value: false }, + description: "Boolean false", + }, + { code: "()", expected: { type: "nil" }, description: "Empty list" }, + ]; + + let passed = 0; + let failed = 0; + + for (const testCase of testCases) { + try { + const context: Context = { + control: new Control(), + stash: new Stash(), + environment: createProgramEnvironment(), + runtime: { isRunning: true }, + }; + + const expressions = parseSchemeSimple(testCase.code); + const result = evaluate(testCase.code, expressions, context); + + const success = + JSON.stringify(result) === JSON.stringify(testCase.expected); + + if (success) { + console.log( + `✅ ${testCase.description}: ${testCase.code} -> ${JSON.stringify(result)}` + ); + passed++; + } else { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> ${JSON.stringify(result)} (expected ${JSON.stringify(testCase.expected)})` + ); + failed++; + } + } catch (error: any) { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> ERROR: ${error.message}` + ); + failed++; + } + } + + console.log("\n📊 Basic CSE Test Results:"); + console.log(`✅ Passed: ${passed}`); + console.log(`❌ Failed: ${failed}`); + console.log( + `📈 Success Rate: ${((passed / (passed + failed)) * 100).toFixed(1)}%` + ); + + if (failed === 0) { + console.log("\n🎉 Basic CSE machine is working correctly!"); + } else { + console.log("\n🔧 Basic CSE machine needs fixes"); + } +} + +testCSEBasic(); diff --git a/src/test/06-test-conductor-simple.ts b/src/test/06-test-conductor-simple.ts new file mode 100644 index 0000000..5333a25 --- /dev/null +++ b/src/test/06-test-conductor-simple.ts @@ -0,0 +1,138 @@ +import { SchemeEvaluator } from "../conductor/runner/SchemeEvaluator"; +import { ConductorError } from "../common/errors/ConductorError"; + +// Simple mock for testing +class MockConductor { + public outputs: string[] = []; + public errors: ConductorError[] = []; + + sendOutput(output: string): void { + this.outputs.push(output); + } + + sendError(error: ConductorError): void { + this.errors.push(error); + } + + // Mock methods that aren't used in evaluateChunk + async requestFile(fileName: string): Promise { + return undefined; + } + + async requestChunk(): Promise { + throw new Error("Mock chunk request"); + } + + clear(): void { + this.outputs = []; + this.errors = []; + } +} + +async function testSimpleConductor() { + console.log("🧪 Testing Simple Conductor Integration"); + console.log("=======================================\n"); + + const mockConductor = new MockConductor() as any; + const evaluator = new SchemeEvaluator(mockConductor); + + const testCases = [ + { code: "42", expected: "42", description: "Number literal" }, + { code: '"hello"', expected: "hello", description: "String literal" }, + { code: "#t", expected: "#t", description: "Boolean true" }, + { code: "(+ 1 2)", expected: "3", description: "Addition" }, + { code: "3+4i", expected: "3+4i", description: "Complex number" }, + { + code: "(+ 3+4i 1+2i)", + expected: "4+6i", + description: "Complex addition", + }, + { code: "(* 2 3)", expected: "6", description: "Multiplication" }, + ]; + + let passed = 0; + let failed = 0; + + for (const testCase of testCases) { + try { + mockConductor.clear(); + + // Test evaluateChunk + await evaluator.evaluateChunk(testCase.code); + + if (mockConductor.errors.length > 0) { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> Error: ${mockConductor.errors[0].message}` + ); + failed++; + } else if (mockConductor.outputs.length > 0) { + const actualOutput = mockConductor.outputs[0]; + if (actualOutput === testCase.expected) { + console.log( + `✅ ${testCase.description}: ${testCase.code} -> ${actualOutput}` + ); + passed++; + } else { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> ${actualOutput} (expected ${testCase.expected})` + ); + failed++; + } + } else { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> No output` + ); + failed++; + } + } catch (error: any) { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> Exception: ${error.message}` + ); + failed++; + } + } + + console.log("\n📊 Simple Conductor Test Results:"); + console.log(`✅ Passed: ${passed}`); + console.log(`❌ Failed: ${failed}`); + console.log( + `📈 Success Rate: ${((passed / (passed + failed)) * 100).toFixed(1)}%` + ); + + if (failed === 0) { + console.log("\n🎉 Conductor integration is working correctly!"); + } else { + console.log("\n🔧 Conductor integration needs fixes"); + } + + // Test error cases + console.log("\n🧪 Testing Error Cases:"); + + const errorCases = [ + { code: '(+ 1 "hello")', description: "Type error" }, + { code: "(undefined-function)", description: "Undefined function" }, + ]; + + for (const testCase of errorCases) { + try { + mockConductor.clear(); + await evaluator.evaluateChunk(testCase.code); + + if (mockConductor.errors.length > 0) { + console.log( + `✅ ${testCase.description}: ${testCase.code} -> Error correctly caught` + ); + } else { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> Expected error but got: ${mockConductor.outputs[0] || "no output"}` + ); + } + } catch (error: any) { + console.log( + `✅ ${testCase.description}: ${testCase.code} -> Exception correctly caught: ${error.message}` + ); + } + } +} + +testSimpleConductor().catch(console.error); diff --git a/src/test/07-test-bundle.ts b/src/test/07-test-bundle.ts new file mode 100644 index 0000000..c539558 --- /dev/null +++ b/src/test/07-test-bundle.ts @@ -0,0 +1,64 @@ +// Test script to verify bundle exports work correctly +import { + parseSchemeSimple, + evaluate, + createProgramEnvironment, + SchemeEvaluator, + initialise, +} from "../index"; + +console.log("🧪 Testing Bundle Exports"); +console.log("=========================\n"); + +// Test basic exports +console.log("1. Testing parseSchemeSimple export:"); +try { + const result = parseSchemeSimple("(+ 1 2)"); + console.log("✅ parseSchemeSimple works:", result.length > 0); +} catch (error: any) { + console.log("❌ parseSchemeSimple failed:", error.message); +} + +console.log("\n2. Testing evaluate export:"); +try { + const expressions = parseSchemeSimple("42"); + const context = { + control: new (require("../CSE-machine/control").Control)(), + stash: new (require("../CSE-machine/stash").Stash)(), + environment: createProgramEnvironment(), + runtime: { isRunning: true }, + }; + const result = evaluate("42", expressions, context); + console.log( + "✅ evaluate works:", + result.type === "number" && result.value === 42 + ); +} catch (error: any) { + console.log("❌ evaluate failed:", error.message); +} + +console.log("\n3. Testing SchemeEvaluator export:"); +try { + const mockConductor = { + sendOutput: (output: string) => console.log("Mock output:", output), + sendError: (error: any) => console.log("Mock error:", error.message), + requestFile: async () => undefined, + requestChunk: async () => { + throw new Error("Mock chunk request"); + }, + }; + const evaluator = new SchemeEvaluator(mockConductor as any); + console.log("✅ SchemeEvaluator constructor works"); +} catch (error: any) { + console.log("❌ SchemeEvaluator failed:", error.message); +} + +console.log("\n4. Testing initialise export:"); +try { + const { runnerPlugin, conduit } = initialise(SchemeEvaluator); + console.log("✅ initialise works:", !!runnerPlugin && !!conduit); +} catch (error: any) { + console.log("❌ initialise failed:", error.message); +} + +console.log("\n🎉 Bundle export tests completed!"); diff --git a/src/test/11-test-complete-flow.ts b/src/test/11-test-complete-flow.ts new file mode 100644 index 0000000..e6f5774 --- /dev/null +++ b/src/test/11-test-complete-flow.ts @@ -0,0 +1,319 @@ +import { parseSchemeSimple } from "../CSE-machine/simple-parser"; +import { evaluate, Context } from "../CSE-machine/interpreter"; +import { createProgramEnvironment } from "../CSE-machine/environment"; +import { Stash } from "../CSE-machine/stash"; +import { Control } from "../CSE-machine/control"; + +function testCompleteFlow() { + console.log("🧪 Testing Complete Evaluation Flow - Scheme Chapter 1"); + console.log("=====================================================\n"); + + const testCases = [ + // Basic literals + { + code: "42", + expected: { type: "number", value: 42 }, + description: "Number literal", + }, + { + code: "3.14", + expected: { type: "number", value: 3.14 }, + description: "Float literal", + }, + { + code: '"hello"', + expected: { type: "string", value: "hello" }, + description: "String literal", + }, + { + code: "#t", + expected: { type: "boolean", value: true }, + description: "Boolean true", + }, + { + code: "#f", + expected: { type: "boolean", value: false }, + description: "Boolean false", + }, + { code: "()", expected: { type: "nil" }, description: "Empty list" }, + + // Complex numbers + { + code: "3+4i", + expected: { type: "complex", value: { real: 3, imag: 4 } }, + description: "Complex number", + }, + { + code: "(+ 3+4i 1+2i)", + expected: { type: "complex", value: { real: 4, imag: 6 } }, + description: "Complex addition", + }, + + // Basic arithmetic + { + code: "(+ 1 2)", + expected: { type: "number", value: 3 }, + description: "Addition", + }, + { + code: "(* 3 4)", + expected: { type: "number", value: 12 }, + description: "Multiplication", + }, + { + code: "(- 10 3)", + expected: { type: "number", value: 7 }, + description: "Subtraction", + }, + { + code: "(/ 15 3)", + expected: { type: "number", value: 5 }, + description: "Division", + }, + + // Comparison operations + { + code: "(> 5 3)", + expected: { type: "boolean", value: true }, + description: "Greater than", + }, + { + code: "(< 2 4)", + expected: { type: "boolean", value: true }, + description: "Less than", + }, + { + code: "(= 5 5)", + expected: { type: "boolean", value: true }, + description: "Equal", + }, + { + code: "(>= 5 5)", + expected: { type: "boolean", value: true }, + description: "Greater or equal", + }, + { + code: "(<= 3 5)", + expected: { type: "boolean", value: true }, + description: "Less or equal", + }, + + // Variable declarations (Chapter 1 feature) + { + code: "(define x 10)", + expected: { type: "void" }, + description: "Variable declaration", + }, + { + code: "(define y (+ 5 3))", + expected: { type: "void" }, + description: "Variable declaration with expression", + }, + + // Variable usage (Chapter 1 feature) + { + code: "x", + expected: { type: "number", value: 10 }, + description: "Variable usage", + }, + { + code: "y", + expected: { type: "number", value: 8 }, + description: "Variable usage with expression", + }, + + // Function definitions (Chapter 1 feature) + { + code: "(define (square x) (* x x))", + expected: { type: "void" }, + description: "Function definition", + }, + { + code: "(define (add x y) (+ x y))", + expected: { type: "void" }, + description: "Function definition with multiple parameters", + }, + + // Function calls (Chapter 1 feature) + { + code: "(square 5)", + expected: { type: "number", value: 25 }, + description: "Function call", + }, + { + code: "(add 3 4)", + expected: { type: "number", value: 7 }, + description: "Function call with multiple parameters", + }, + + // Conditional expressions (Chapter 1 feature) + { + code: '(if (> 5 3) "yes" "no")', + expected: { type: "string", value: "yes" }, + description: "If expression true", + }, + { + code: '(if (< 2 1) "yes" "no")', + expected: { type: "string", value: "no" }, + description: "If expression false", + }, + + // List operations (Chapter 1 feature) + { + code: "(cons 1 ())", + expected: { + type: "pair", + car: { type: "number", value: 1 }, + cdr: { type: "nil" }, + }, + description: "Cons operation", + }, + { + code: "(car (cons 1 2))", + expected: { type: "number", value: 1 }, + description: "Car operation", + }, + { + code: "(cdr (cons 1 2))", + expected: { type: "number", value: 2 }, + description: "Cdr operation", + }, + + // Boolean operations (Chapter 1 feature) + { + code: "(and #t #t)", + expected: { type: "boolean", value: true }, + description: "And operation true", + }, + { + code: "(and #t #f)", + expected: { type: "boolean", value: false }, + description: "And operation false", + }, + { + code: "(or #f #t)", + expected: { type: "boolean", value: true }, + description: "Or operation true", + }, + { + code: "(not #f)", + expected: { type: "boolean", value: true }, + description: "Not operation", + }, + + // Built-in functions (Chapter 1 feature) + { + code: "(abs -5)", + expected: { type: "number", value: 5 }, + description: "Absolute value", + }, + { + code: "(max 3 7 2)", + expected: { type: "number", value: 7 }, + description: "Maximum value", + }, + { + code: "(min 3 7 2)", + expected: { type: "number", value: 2 }, + description: "Minimum value", + }, + + // Type predicates (Chapter 1 feature) + { + code: "(number? 42)", + expected: { type: "boolean", value: true }, + description: "Number predicate", + }, + { + code: '(string? "hello")', + expected: { type: "boolean", value: true }, + description: "String predicate", + }, + { + code: "(boolean? #t)", + expected: { type: "boolean", value: true }, + description: "Boolean predicate", + }, + { + code: "(null? ())", + expected: { type: "boolean", value: true }, + description: "Null predicate", + }, + { + code: "(pair? (cons 1 2))", + expected: { type: "boolean", value: true }, + description: "Pair predicate", + }, + ]; + + let passed = 0; + let failed = 0; + let environment = createProgramEnvironment(); + + for (const testCase of testCases) { + try { + const context: Context = { + control: new Control(), + stash: new Stash(), + environment: environment, + runtime: { isRunning: true }, + }; + + const expressions = parseSchemeSimple(testCase.code); + const result = evaluate(testCase.code, expressions, context); + + // Update environment for next test + environment = context.environment; + + const success = + JSON.stringify(result) === JSON.stringify(testCase.expected); + + if (success) { + console.log( + `✅ ${testCase.description}: ${testCase.code} -> ${JSON.stringify(result)}` + ); + passed++; + } else { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> ${JSON.stringify(result)} (expected ${JSON.stringify(testCase.expected)})` + ); + failed++; + } + } catch (error: any) { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> ERROR: ${error.message}` + ); + failed++; + } + } + + console.log("\n📊 Complete Flow Test Results:"); + console.log(`✅ Passed: ${passed}`); + console.log(`❌ Failed: ${failed}`); + console.log( + `📈 Success Rate: ${((passed / (passed + failed)) * 100).toFixed(1)}%` + ); + + if (failed === 0) { + console.log("\n🎉 All Scheme Chapter 1 features are working correctly!"); + } else { + console.log("\n🔧 Some features need fixes"); + } + + console.log("\n📋 Scheme Chapter 1 Features Tested:"); + console.log("✅ Basic literals (numbers, strings, booleans, lists)"); + console.log("✅ Complex numbers"); + console.log("✅ Arithmetic operations (+, -, *, /)"); + console.log("✅ Comparison operations (>, <, =, >=, <=)"); + console.log("✅ Variable declarations (define)"); + console.log("✅ Variable usage"); + console.log("✅ Function definitions"); + console.log("✅ Function calls"); + console.log("✅ Conditional expressions (if)"); + console.log("✅ List operations (cons, car, cdr)"); + console.log("✅ Boolean operations (and, or, not)"); + console.log("✅ Built-in functions (abs, max, min)"); + console.log("✅ Type predicates (number?, string?, boolean?, null?, pair?)"); +} + +testCompleteFlow(); diff --git a/src/test/12-test-chapter1-features.ts b/src/test/12-test-chapter1-features.ts new file mode 100644 index 0000000..1984c7f --- /dev/null +++ b/src/test/12-test-chapter1-features.ts @@ -0,0 +1,410 @@ +import { parseSchemeSimple } from "../CSE-machine/simple-parser"; +import { evaluate, Context } from "../CSE-machine/interpreter"; +import { createProgramEnvironment } from "../CSE-machine/environment"; +import { Stash } from "../CSE-machine/stash"; +import { Control } from "../CSE-machine/control"; + +function testChapter1Features() { + console.log("🧪 Testing Scheme Chapter 1 Advanced Features"); + console.log("============================================\n"); + + const testCases = [ + // Nested expressions + { + code: "(+ (* 2 3) (/ 10 2))", + expected: { type: "number", value: 11 }, + description: "Nested arithmetic expressions", + }, + { + code: "(> (+ 3 4) (* 2 3))", + expected: { type: "boolean", value: true }, + description: "Nested comparison expressions", + }, + + // Multiple variable definitions + { + code: "(define a 5)", + expected: { type: "void" }, + description: "Define variable a", + }, + { + code: "(define b 10)", + expected: { type: "void" }, + description: "Define variable b", + }, + { + code: "(+ a b)", + expected: { type: "number", value: 15 }, + description: "Use multiple variables", + }, + + // Function with multiple parameters + { + code: "(define (multiply x y z) (* x (* y z)))", + expected: { type: "void" }, + description: "Function with 3 parameters", + }, + { + code: "(multiply 2 3 4)", + expected: { type: "number", value: 24 }, + description: "Call function with 3 parameters", + }, + + // Conditional with complex expressions + { + code: '(if (> (+ 5 3) (* 2 3)) "greater" "less")', + expected: { type: "string", value: "greater" }, + description: "Complex conditional", + }, + { + code: '(if (and (> 5 3) (< 2 4)) "both true" "one false")', + expected: { type: "string", value: "both true" }, + description: "Conditional with boolean operations", + }, + + // List operations with variables + { + code: "(define my-list (cons 1 (cons 2 ())))", + expected: { type: "void" }, + description: "Create list with cons", + }, + { + code: "(car my-list)", + expected: { type: "number", value: 1 }, + description: "Get first element", + }, + { + code: "(car (cdr my-list))", + expected: { type: "number", value: 2 }, + description: "Get second element", + }, + + // Type checking with variables + { + code: "(define num 42)", + expected: { type: "void" }, + description: "Define number variable", + }, + { + code: '(define str "hello")', + expected: { type: "void" }, + description: "Define string variable", + }, + { + code: "(number? num)", + expected: { type: "boolean", value: true }, + description: "Check if variable is number", + }, + { + code: "(string? str)", + expected: { type: "boolean", value: true }, + description: "Check if variable is string", + }, + { + code: "(string? num)", + expected: { type: "boolean", value: false }, + description: "Check if number is string", + }, + + // Complex number operations + { + code: "(define z1 3+4i)", + expected: { type: "void" }, + description: "Define complex number", + }, + { + code: "(define z2 1+2i)", + expected: { type: "void" }, + description: "Define another complex number", + }, + { + code: "(+ z1 z2)", + expected: { type: "complex", value: { real: 4, imag: 6 } }, + description: "Add complex numbers", + }, + + // Built-in functions with variables + { + code: "(define x -10)", + expected: { type: "void" }, + description: "Define negative number", + }, + { + code: "(abs x)", + expected: { type: "number", value: 10 }, + description: "Absolute value of variable", + }, + { + code: "(define values (list 3 7 1 9 2))", + expected: { type: "void" }, + description: "Define list of values", + }, + { + code: "(max 3 7 1 9 2)", + expected: { type: "number", value: 9 }, + description: "Maximum of multiple values", + }, + { + code: "(min 3 7 1 9 2)", + expected: { type: "number", value: 1 }, + description: "Minimum of multiple values", + }, + + // Boolean operations with variables + { + code: "(define flag1 #t)", + expected: { type: "void" }, + description: "Define boolean variable", + }, + { + code: "(define flag2 #f)", + expected: { type: "void" }, + description: "Define another boolean variable", + }, + { + code: "(and flag1 flag2)", + expected: { type: "boolean", value: false }, + description: "And with variables", + }, + { + code: "(or flag1 flag2)", + expected: { type: "boolean", value: true }, + description: "Or with variables", + }, + { + code: "(not flag2)", + expected: { type: "boolean", value: true }, + description: "Not with variable", + }, + + // Function composition + { + code: "(define (double x) (* x 2))", + expected: { type: "void" }, + description: "Define double function", + }, + { + code: "(define (add-one x) (+ x 1))", + expected: { type: "void" }, + description: "Define add-one function", + }, + { + code: "(add-one (double 5))", + expected: { type: "number", value: 11 }, + description: "Function composition", + }, + { + code: "(double (add-one 3))", + expected: { type: "number", value: 8 }, + description: "Reverse function composition", + }, + + // Length function + { + code: "(length (list 1 2 3 4 5))", + expected: { type: "number", value: 5 }, + description: "Length of list with 5 elements", + }, + { + code: "(length ())", + expected: { type: "number", value: 0 }, + description: "Length of empty list", + }, + { + code: "(define my-list (list 'a 'b 'c))", + expected: { type: "void" }, + description: "Define list with symbols", + }, + { + code: "(length my-list)", + expected: { type: "number", value: 3 }, + description: "Length of variable list", + }, + + // ===== COMPOUND FUNCTIONS ===== + { + code: "(define (square x) (* x x))", + expected: { type: "void" }, + description: "Define square function", + }, + { + code: "(define (cube x) (* x (square x)))", + expected: { type: "void" }, + description: "Define cube using square (compound function)", + }, + { + code: "(cube 3)", + expected: { type: "number", value: 27 }, + description: "Test compound function", + }, + { + code: "(define (average x y) (/ (+ x y) 2))", + expected: { type: "void" }, + description: "Define average function", + }, + { + code: "(define (square-average x y) (square (average x y)))", + expected: { type: "void" }, + description: "Compound function using average", + }, + { + code: "(square-average 4 6)", + expected: { type: "number", value: 25 }, + description: "Test nested compound function", + }, + + // ===== LINEAR RECURSION ===== + { + code: "(define (factorial n) (if (= n 0) 1 (* n (factorial (- n 1)))))", + expected: { type: "void" }, + description: "Define factorial with linear recursion", + }, + { + code: "(factorial 5)", + expected: { type: "number", value: 120 }, + description: "Test factorial recursion", + }, + { + code: "(factorial 0)", + expected: { type: "number", value: 1 }, + description: "Test factorial base case", + }, + { + code: "(define (sum-list lst) (if (null? lst) 0 (+ (car lst) (sum-list (cdr lst)))))", + expected: { type: "void" }, + description: "Define sum-list with linear recursion", + }, + { + code: "(sum-list (list 1 2 3 4 5))", + expected: { type: "number", value: 15 }, + description: "Test sum-list recursion", + }, + { + code: "(sum-list ())", + expected: { type: "number", value: 0 }, + description: "Test sum-list base case", + }, + { + code: "(define (count-elements lst) (if (null? lst) 0 (+ 1 (count-elements (cdr lst)))))", + expected: { type: "void" }, + description: "Define count-elements with linear recursion", + }, + { + code: "(count-elements (list 'a 'b 'c))", + expected: { type: "number", value: 3 }, + description: "Test count-elements recursion", + }, + + // ===== ITERATION (Tail Recursion) ===== + { + code: "(define (factorial-iter n) (define (iter n acc) (if (= n 0) acc (iter (- n 1) (* n acc)))) (iter n 1))", + expected: { type: "void" }, + description: "Define factorial with iteration (tail recursion)", + }, + { + code: "(factorial-iter 5)", + expected: { type: "number", value: 120 }, + description: "Test factorial iteration", + }, + { + code: "(define (sum-list-iter lst) (define (iter lst acc) (if (null? lst) acc (iter (cdr lst) (+ (car lst) acc)))) (iter lst 0))", + expected: { type: "void" }, + description: "Define sum-list with iteration", + }, + { + code: "(sum-list-iter (list 1 2 3 4 5))", + expected: { type: "number", value: 15 }, + description: "Test sum-list iteration", + }, + { + code: "(define (reverse-list lst) (define (iter lst result) (if (null? lst) result (iter (cdr lst) (cons (car lst) result)))) (iter lst ()))", + expected: { type: "void" }, + description: "Define reverse-list with iteration", + }, + { + code: "(reverse-list (list 1 2 3))", + expected: { + type: "list", + elements: [ + { type: "number", value: 3 }, + { type: "number", value: 2 }, + { type: "number", value: 1 }, + ], + }, + description: "Test reverse-list iteration", + }, + ]; + + let passed = 0; + let failed = 0; + let environment = createProgramEnvironment(); + + for (const testCase of testCases) { + try { + const context: Context = { + control: new Control(), + stash: new Stash(), + environment: environment, + runtime: { isRunning: true }, + }; + + const expressions = parseSchemeSimple(testCase.code); + const result = evaluate(testCase.code, expressions, context); + + // Update environment for next test + environment = context.environment; + + const success = + JSON.stringify(result) === JSON.stringify(testCase.expected); + + if (success) { + console.log( + `✅ ${testCase.description}: ${testCase.code} -> ${JSON.stringify(result)}` + ); + passed++; + } else { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> ${JSON.stringify(result)} (expected ${JSON.stringify(testCase.expected)})` + ); + failed++; + } + } catch (error: any) { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> ERROR: ${error.message}` + ); + failed++; + } + } + + console.log("\n📊 Chapter 1 Advanced Features Test Results:"); + console.log(`✅ Passed: ${passed}`); + console.log(`❌ Failed: ${failed}`); + console.log( + `📈 Success Rate: ${((passed / (passed + failed)) * 100).toFixed(1)}%` + ); + + if (failed === 0) { + console.log("\n🎉 All Chapter 1 advanced features are working correctly!"); + } else { + console.log("\n🔧 Some advanced features need fixes"); + } + + console.log("\n📋 Advanced Features Tested:"); + console.log("✅ Nested expressions"); + console.log("✅ Multiple variable definitions"); + console.log("✅ Functions with multiple parameters"); + console.log("✅ Complex conditionals"); + console.log("✅ List operations with variables"); + console.log("✅ Type checking with variables"); + console.log("✅ Complex number operations"); + console.log("✅ Built-in functions with variables"); + console.log("✅ Boolean operations with variables"); + console.log("✅ Function composition"); + console.log("✅ Compound functions (functions using other functions)"); + console.log("✅ Linear recursion (factorial, sum-list, count-elements)"); + console.log( + "✅ Iteration via tail recursion (factorial-iter, sum-list-iter, reverse-list)" + ); +} + +testChapter1Features(); diff --git a/src/test/13-test-error-handling.ts b/src/test/13-test-error-handling.ts new file mode 100644 index 0000000..7abc189 --- /dev/null +++ b/src/test/13-test-error-handling.ts @@ -0,0 +1,223 @@ +import { parseSchemeSimple } from "../CSE-machine/simple-parser"; +import { evaluate, Context } from "../CSE-machine/interpreter"; +import { createProgramEnvironment } from "../CSE-machine/environment"; +import { Stash } from "../CSE-machine/stash"; +import { Control } from "../CSE-machine/control"; + +function testErrorHandling() { + console.log("🧪 Testing Scheme Chapter 1 Error Handling"); + console.log("==========================================\n"); + + const testCases = [ + // Syntax errors + { + code: "(define x)", + expected: "Error", + description: "Define with missing value", + }, + { + code: "(define 10 x)", + expected: "Error", + description: "Define with non-identifier name", + }, + { + code: "(if (> 5 3))", + expected: "Error", + description: "If with missing else clause", + }, + { + code: "(lambda x y)", + expected: "Error", + description: "Lambda with invalid parameters", + }, + + // Runtime errors + { + code: "undefined-var", + expected: "Error", + description: "Undefined variable", + }, + { + code: '(+ 1 "hello")', + expected: "Error", + description: "Type mismatch in arithmetic", + }, + { code: "(car 42)", expected: "Error", description: "Car on non-pair" }, + { code: "(cdr 42)", expected: "Error", description: "Cdr on non-pair" }, + { + code: "(cons 1 2 3)", + expected: "Error", + description: "Cons with too many arguments", + }, + { code: "(car)", expected: "Error", description: "Car with no arguments" }, + { code: "(cdr)", expected: "Error", description: "Cdr with no arguments" }, + + // Division by zero + { code: "(/ 10 0)", expected: "Error", description: "Division by zero" }, + + // Function call errors + { + code: "(not-a-function 1 2 3)", + expected: "Error", + description: "Call undefined function", + }, + { + code: "(+ 1 2 3 4 5)", + expected: { type: "number", value: 15 }, + description: "Add with many arguments (should work)", + }, + { code: "(max)", expected: "Error", description: "Max with no arguments" }, + { code: "(min)", expected: "Error", description: "Min with no arguments" }, + + // Type predicate errors + { + code: "(number? 1 2)", + expected: "Error", + description: "Number? with too many arguments", + }, + { + code: "(string? 1 2)", + expected: "Error", + description: "String? with too many arguments", + }, + { + code: "(boolean? 1 2)", + expected: "Error", + description: "Boolean? with too many arguments", + }, + + // Boolean operation errors + { + code: "(and)", + expected: { type: "boolean", value: true }, + description: "And with no arguments (should return true)", + }, + { + code: "(or)", + expected: { type: "boolean", value: false }, + description: "Or with no arguments (should return false)", + }, + { + code: "(not 1 2)", + expected: "Error", + description: "Not with too many arguments", + }, + + // Complex number errors + { + code: '(+ 3+4i "hello")', + expected: "Error", + description: "Complex addition with string", + }, + { + code: "(+ 3+4i #t)", + expected: "Error", + description: "Complex addition with boolean", + }, + + // List operation errors + { + code: "(list 1 2 3 4 5)", + expected: { + type: "list", + elements: [ + { type: "number", value: 1 }, + { type: "number", value: 2 }, + { type: "number", value: 3 }, + { type: "number", value: 4 }, + { type: "number", value: 5 }, + ], + }, + description: "List with many arguments (should work)", + }, + { + code: "(null? 1 2)", + expected: "Error", + description: "Null? with too many arguments", + }, + { + code: "(pair? 1 2)", + expected: "Error", + description: "Pair? with too many arguments", + }, + ]; + + let passed = 0; + let failed = 0; + let environment = createProgramEnvironment(); + + for (const testCase of testCases) { + try { + const context: Context = { + control: new Control(), + stash: new Stash(), + environment: environment, + runtime: { isRunning: true }, + }; + + const expressions = parseSchemeSimple(testCase.code); + const result = evaluate(testCase.code, expressions, context); + + // Update environment for next test + environment = context.environment; + + if (testCase.expected === "Error") { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> Should have thrown error but got ${JSON.stringify(result)}` + ); + failed++; + } else { + const success = + JSON.stringify(result) === JSON.stringify(testCase.expected); + if (success) { + console.log( + `✅ ${testCase.description}: ${testCase.code} -> ${JSON.stringify(result)}` + ); + passed++; + } else { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> ${JSON.stringify(result)} (expected ${JSON.stringify(testCase.expected)})` + ); + failed++; + } + } + } catch (error: any) { + if (testCase.expected === "Error") { + console.log( + `✅ ${testCase.description}: ${testCase.code} -> ERROR: ${error.message}` + ); + passed++; + } else { + console.log( + `❌ ${testCase.description}: ${testCase.code} -> Unexpected ERROR: ${error.message}` + ); + failed++; + } + } + } + + console.log("\n📊 Error Handling Test Results:"); + console.log(`✅ Passed: ${passed}`); + console.log(`❌ Failed: ${failed}`); + console.log( + `📈 Success Rate: ${((passed / (passed + failed)) * 100).toFixed(1)}%` + ); + + if (failed === 0) { + console.log("\n🎉 All error handling is working correctly!"); + } else { + console.log("\n🔧 Some error handling needs fixes"); + } + + console.log("\n📋 Error Handling Tested:"); + console.log("✅ Syntax errors (malformed expressions)"); + console.log("✅ Runtime errors (undefined variables)"); + console.log("✅ Type errors (wrong argument types)"); + console.log("✅ Division by zero"); + console.log("✅ Function call errors"); + console.log("✅ Argument count errors"); + console.log("✅ List operation errors"); + console.log("✅ Complex number errors"); +} + +testErrorHandling(); diff --git a/src/tracer/generator.ts b/src/tracer/generator.ts new file mode 100644 index 0000000..38ae587 --- /dev/null +++ b/src/tracer/generator.ts @@ -0,0 +1,72 @@ +import { StepperBaseNode } from './interface'; +import { StepperLiteral } from './nodes/Expression/Literal'; +import { StepperBinaryExpression } from './nodes/Expression/BinaryExpression'; +import { StepperIdentifier } from './nodes/Expression/Identifier'; +import { StepperFunctionApplication } from './nodes/Expression/FunctionApplication'; +import { StepperLambdaExpression } from './nodes/Expression/LambdaExpression'; +import { StepperProgram } from './nodes/Program'; + +const undefinedNode = new StepperLiteral('undefined'); + +// Helper function to convert nodes without circular dependency +function convertNode(node: any): StepperBaseNode { + const nodeType = node.constructor.name; + + switch (nodeType) { + case 'NumericLiteral': + case 'BooleanLiteral': + case 'StringLiteral': + return StepperLiteral.create(node); + case 'Identifier': + return StepperIdentifier.create(node); + case 'Application': + return new StepperFunctionApplication( + convertNode(node.operator), + node.operands.map(convertNode) + ); + case 'Lambda': + return new StepperLambdaExpression( + node.params || [], + convertNode(node.body) + ); + case 'Sequence': + return new StepperProgram( + node.expressions.map(convertNode) + ); + default: + return undefinedNode; + } +} + +const nodeConverters: { [Key: string]: (node: any) => StepperBaseNode } = { + NumericLiteral: (node: any) => StepperLiteral.create(node), + BooleanLiteral: (node: any) => StepperLiteral.create(node), + StringLiteral: (node: any) => StepperLiteral.create(node), + Identifier: (node: any) => StepperIdentifier.create(node), + Application: (node: any) => convertNode(node), + Lambda: (node: any) => convertNode(node), + Sequence: (node: any) => convertNode(node) +}; + +export function convert(node: any): StepperBaseNode { + const converter = nodeConverters[node.type as keyof typeof nodeConverters]; + return converter ? converter(node) : undefinedNode; +} + +export function explain(node: StepperBaseNode): string { + // Generate explanation based on node type + switch (node.type) { + case 'Literal': + return `Evaluated to literal value: ${node.toString()}`; + case 'BinaryExpression': + return `Evaluated binary expression: ${node.toString()}`; + case 'Identifier': + return `Variable reference: ${node.toString()}`; + case 'FunctionApplication': + return `Function application: ${node.toString()}`; + case 'LambdaExpression': + return `Lambda expression: ${node.toString()}`; + default: + return `Processed ${node.type}`; + } +} diff --git a/src/tracer/index.ts b/src/tracer/index.ts new file mode 100644 index 0000000..594b993 --- /dev/null +++ b/src/tracer/index.ts @@ -0,0 +1,23 @@ +import { StepperBaseNode } from './interface'; + +export let redex: { preRedex: StepperBaseNode[]; postRedex: StepperBaseNode[] } = { + preRedex: [], + postRedex: [] +}; + +export interface Marker { + redex?: StepperBaseNode | null; + redexType?: 'beforeMarker' | 'afterMarker'; + explanation?: string; +} + +export interface IStepperPropContents { + ast: StepperBaseNode; + markers: Marker[]; +} + +// Export all modules +export * from './generator'; +export * from './steppers'; +export * from './stepper'; +export * from './nodes'; diff --git a/src/tracer/interface.ts b/src/tracer/interface.ts new file mode 100644 index 0000000..31d03c8 --- /dev/null +++ b/src/tracer/interface.ts @@ -0,0 +1,14 @@ +import { StepperExpression, StepperPattern } from './nodes'; + +export interface StepperBaseNode { + type: string; + isContractible(): boolean; + isOneStepPossible(): boolean; + contract(): StepperBaseNode; + oneStep(): StepperBaseNode; + substitute(id: StepperPattern, value: StepperExpression): StepperBaseNode; + freeNames(): string[]; + allNames(): string[]; + rename(before: string, after: string): StepperBaseNode; + toString(): string; +} diff --git a/src/tracer/nodes/Expression/BinaryExpression.ts b/src/tracer/nodes/Expression/BinaryExpression.ts new file mode 100644 index 0000000..dc3d67d --- /dev/null +++ b/src/tracer/nodes/Expression/BinaryExpression.ts @@ -0,0 +1,108 @@ +import { StepperBaseNode } from '../../interface'; +import { StepperExpression, StepperPattern } from '../index'; + +export class StepperBinaryExpression implements StepperBaseNode { + type = 'BinaryExpression'; + operator: string; + left: StepperBaseNode; + right: StepperBaseNode; + + constructor(operator: string, left: StepperBaseNode, right: StepperBaseNode) { + this.operator = operator; + this.left = left; + this.right = right; + } + + static create(node: any): StepperBinaryExpression { + // This would need to be implemented based on how Scheme binary expressions are parsed + // For now, creating a basic implementation + return new StepperBinaryExpression( + node.operator || '+', + node.left || { type: 'Literal', value: 0 }, + node.right || { type: 'Literal', value: 0 } + ); + } + + isContractible(): boolean { + return this.left.isContractible() && this.right.isContractible(); + } + + isOneStepPossible(): boolean { + return !this.left.isContractible() || !this.right.isContractible(); + } + + contract(): StepperBaseNode { + if (!this.isContractible()) { + throw new Error('Cannot contract non-contractible expression'); + } + + // Evaluate the binary expression + const leftValue = this.left.contract(); + const rightValue = this.right.contract(); + + if (leftValue.type === 'Literal' && rightValue.type === 'Literal') { + const left = (leftValue as any).value; + const right = (rightValue as any).value; + let result: any; + + switch (this.operator) { + case '+': + result = left + right; + break; + case '-': + result = left - right; + break; + case '*': + result = left * right; + break; + case '/': + result = left / right; + break; + default: + throw new Error(`Unknown operator: ${this.operator}`); + } + + return { type: 'Literal', value: result, raw: String(result), toString: () => String(result) } as any; + } + + return this; + } + + oneStep(): StepperBaseNode { + if (!this.left.isContractible()) { + return new StepperBinaryExpression(this.operator, this.left.oneStep(), this.right); + } + if (!this.right.isContractible()) { + return new StepperBinaryExpression(this.operator, this.left, this.right.oneStep()); + } + return this.contract(); + } + + substitute(id: StepperPattern, value: StepperExpression): StepperBaseNode { + return new StepperBinaryExpression( + this.operator, + this.left.substitute(id, value), + this.right.substitute(id, value) + ); + } + + freeNames(): string[] { + return [...this.left.freeNames(), ...this.right.freeNames()]; + } + + allNames(): string[] { + return [...this.left.allNames(), ...this.right.allNames()]; + } + + rename(before: string, after: string): StepperBaseNode { + return new StepperBinaryExpression( + this.operator, + this.left.rename(before, after), + this.right.rename(before, after) + ); + } + + toString(): string { + return `(${this.operator} ${this.left.toString()} ${this.right.toString()})`; + } +} diff --git a/src/tracer/nodes/Expression/FunctionApplication.ts b/src/tracer/nodes/Expression/FunctionApplication.ts new file mode 100644 index 0000000..f99d25f --- /dev/null +++ b/src/tracer/nodes/Expression/FunctionApplication.ts @@ -0,0 +1,105 @@ +import { StepperBaseNode } from '../../interface'; +import { StepperExpression, StepperPattern } from '../index'; + +export class StepperFunctionApplication implements StepperBaseNode { + type = 'FunctionApplication'; + operator: StepperBaseNode; + operands: StepperBaseNode[]; + + constructor(operator: StepperBaseNode, operands: StepperBaseNode[]) { + this.operator = operator; + this.operands = operands; + } + + static create(node: any): StepperFunctionApplication { + // This will be handled by the convertNode function in generator.ts + return new StepperFunctionApplication( + node.operator, + node.operands + ); + } + + isContractible(): boolean { + // Check if operator is a lambda and all operands are literals + if (this.operator.type === 'LambdaExpression') { + return this.operands.every(op => op.isContractible()); + } + return false; + } + + isOneStepPossible(): boolean { + // Can step if any operand is not contractible, or if operator is lambda and all operands are contractible + return this.operands.some(op => !op.isContractible()) || this.isContractible(); + } + + contract(): StepperBaseNode { + if (!this.isContractible()) { + throw new Error('Cannot contract non-contractible expression'); + } + + // Perform beta-reduction for lambda applications + if (this.operator.type === 'LambdaExpression') { + const lambda = this.operator as any; + let body = lambda.body; + + // Substitute parameters with arguments + for (let i = 0; i < lambda.params.length && i < this.operands.length; i++) { + const param = lambda.params[i]; + const arg = this.operands[i]; + body = body.substitute(param, arg); + } + + return body; + } + + return this; + } + + oneStep(): StepperBaseNode { + // First, step any non-contractible operands + const steppedOperands = this.operands.map(op => + op.isContractible() ? op : op.oneStep() + ); + + // If all operands are now contractible and operator is lambda, contract + if (this.operator.type === 'LambdaExpression' && + steppedOperands.every(op => op.isContractible())) { + return this.contract(); + } + + return new StepperFunctionApplication(this.operator, steppedOperands); + } + + substitute(id: StepperPattern, value: StepperExpression): StepperBaseNode { + return new StepperFunctionApplication( + this.operator.substitute(id, value), + this.operands.map(op => op.substitute(id, value)) + ); + } + + freeNames(): string[] { + return [ + ...this.operator.freeNames(), + ...this.operands.flatMap(op => op.freeNames()) + ]; + } + + allNames(): string[] { + return [ + ...this.operator.allNames(), + ...this.operands.flatMap(op => op.allNames()) + ]; + } + + rename(before: string, after: string): StepperBaseNode { + return new StepperFunctionApplication( + this.operator.rename(before, after), + this.operands.map(op => op.rename(before, after)) + ); + } + + toString(): string { + return `(${this.operator.toString()} ${this.operands.map(op => op.toString()).join(' ')})`; + } +} + diff --git a/src/tracer/nodes/Expression/Identifier.ts b/src/tracer/nodes/Expression/Identifier.ts new file mode 100644 index 0000000..6dbb096 --- /dev/null +++ b/src/tracer/nodes/Expression/Identifier.ts @@ -0,0 +1,57 @@ +import { StepperBaseNode } from '../../interface'; +import { StepperExpression, StepperPattern } from '../index'; + +export class StepperIdentifier implements StepperBaseNode { + type = 'Identifier'; + name: string; + + constructor(name: string) { + this.name = name; + } + + static create(node: any): StepperIdentifier { + return new StepperIdentifier(node.name); + } + + isContractible(): boolean { + return true; + } + + isOneStepPossible(): boolean { + return false; + } + + contract(): StepperBaseNode { + return this; + } + + oneStep(): StepperBaseNode { + return this; + } + + substitute(id: StepperPattern, value: StepperExpression): StepperBaseNode { + if (this.name === id.name) { + return value; + } + return this; + } + + freeNames(): string[] { + return [this.name]; + } + + allNames(): string[] { + return [this.name]; + } + + rename(before: string, after: string): StepperBaseNode { + if (this.name === before) { + return new StepperIdentifier(after); + } + return this; + } + + toString(): string { + return this.name; + } +} diff --git a/src/tracer/nodes/Expression/LambdaExpression.ts b/src/tracer/nodes/Expression/LambdaExpression.ts new file mode 100644 index 0000000..f50da01 --- /dev/null +++ b/src/tracer/nodes/Expression/LambdaExpression.ts @@ -0,0 +1,76 @@ +import { StepperBaseNode } from '../../interface'; +import { StepperExpression, StepperPattern } from '../index'; + +export class StepperLambdaExpression implements StepperBaseNode { + type = 'LambdaExpression'; + params: StepperPattern[]; + body: StepperBaseNode; + + constructor(params: StepperPattern[], body: StepperBaseNode) { + this.params = params; + this.body = body; + } + + static create(node: any): StepperLambdaExpression { + // This will be handled by the convertNode function in generator.ts + return new StepperLambdaExpression( + node.params || [], + node.body + ); + } + + isContractible(): boolean { + return true; // Lambda expressions are irreducible + } + + isOneStepPossible(): boolean { + return false; // Lambda expressions cannot be stepped + } + + contract(): StepperBaseNode { + return this; // Lambda expressions are irreducible + } + + oneStep(): StepperBaseNode { + return this; // Lambda expressions cannot be stepped + } + + substitute(id: StepperPattern, value: StepperExpression): StepperBaseNode { + // Don't substitute if the identifier is bound by this lambda + if (this.params.some(param => param.name === id.name)) { + return this; + } + + return new StepperLambdaExpression( + this.params, + this.body.substitute(id, value) + ); + } + + freeNames(): string[] { + const paramNames = this.params.map(p => p.name); + return this.body.freeNames().filter(name => !paramNames.includes(name)); + } + + allNames(): string[] { + const paramNames = this.params.map(p => p.name); + return [...paramNames, ...this.body.allNames()]; + } + + rename(before: string, after: string): StepperBaseNode { + // Rename parameters if they match + const newParams = this.params.map(param => + param.name === before ? new (param.constructor as any)(after) : param + ); + + return new StepperLambdaExpression( + newParams, + this.body.rename(before, after) + ); + } + + toString(): string { + const paramsStr = this.params.map(p => p.toString()).join(' '); + return `(lambda (${paramsStr}) ${this.body.toString()})`; + } +} diff --git a/src/tracer/nodes/Expression/Literal.ts b/src/tracer/nodes/Expression/Literal.ts new file mode 100644 index 0000000..e9cf758 --- /dev/null +++ b/src/tracer/nodes/Expression/Literal.ts @@ -0,0 +1,53 @@ +import { StepperBaseNode } from '../../interface'; +import { StepperExpression, StepperPattern } from '../index'; + +export class StepperLiteral implements StepperBaseNode { + type = 'Literal'; + value: any; + raw: string; + + constructor(value: any, raw?: string) { + this.value = value; + this.raw = raw || String(value); + } + + static create(node: any): StepperLiteral { + return new StepperLiteral(node.value, String(node.value)); + } + + isContractible(): boolean { + return true; + } + + isOneStepPossible(): boolean { + return false; + } + + contract(): StepperBaseNode { + return this; + } + + oneStep(): StepperBaseNode { + return this; + } + + substitute(id: StepperPattern, value: StepperExpression): StepperBaseNode { + return this; + } + + freeNames(): string[] { + return []; + } + + allNames(): string[] { + return []; + } + + rename(before: string, after: string): StepperBaseNode { + return this; + } + + toString(): string { + return this.raw; + } +} diff --git a/src/tracer/nodes/Program.ts b/src/tracer/nodes/Program.ts new file mode 100644 index 0000000..00b8598 --- /dev/null +++ b/src/tracer/nodes/Program.ts @@ -0,0 +1,86 @@ +import { StepperBaseNode } from '../interface'; +import { StepperExpression, StepperPattern } from './index'; + +export class StepperProgram implements StepperBaseNode { + type = 'Program'; + body: StepperBaseNode[]; + + constructor(body: StepperBaseNode[]) { + this.body = body; + } + + static create(node: any): StepperProgram { + // This will be handled by the convertNode function in generator.ts + return new StepperProgram( + node.expressions || [] + ); + } + + isContractible(): boolean { + return this.body.every(expr => expr.isContractible()); + } + + isOneStepPossible(): boolean { + return this.body.some(expr => expr.isOneStepPossible()); + } + + contract(): StepperBaseNode { + if (!this.isContractible()) { + throw new Error('Cannot contract non-contractible program'); + } + + // Contract all expressions in the program + const contractedBody = this.body.map(expr => expr.contract()); + + // If there's only one expression left, return it + if (contractedBody.length === 1) { + return contractedBody[0]; + } + + return new StepperProgram(contractedBody); + } + + oneStep(): StepperBaseNode { + // Find the first expression that can be stepped + for (let i = 0; i < this.body.length; i++) { + const expr = this.body[i]; + + if (expr.isOneStepPossible()) { + const newBody = [...this.body]; + newBody[i] = expr.oneStep(); + return new StepperProgram(newBody); + } + } + + // If we can contract the entire program, do it + if (this.isContractible()) { + return this.contract(); + } + + return this; + } + + substitute(id: StepperPattern, value: StepperExpression): StepperBaseNode { + return new StepperProgram( + this.body.map(expr => expr.substitute(id, value)) + ); + } + + freeNames(): string[] { + return this.body.flatMap(expr => expr.freeNames()); + } + + allNames(): string[] { + return this.body.flatMap(expr => expr.allNames()); + } + + rename(before: string, after: string): StepperBaseNode { + return new StepperProgram( + this.body.map(expr => expr.rename(before, after)) + ); + } + + toString(): string { + return this.body.map(expr => expr.toString()).join('\n'); + } +} diff --git a/src/tracer/nodes/index.ts b/src/tracer/nodes/index.ts new file mode 100644 index 0000000..0f3bf2b --- /dev/null +++ b/src/tracer/nodes/index.ts @@ -0,0 +1,24 @@ +import { StepperBinaryExpression } from './Expression/BinaryExpression'; +import { StepperLiteral } from './Expression/Literal'; +import { StepperIdentifier } from './Expression/Identifier'; +import { StepperFunctionApplication } from './Expression/FunctionApplication'; +import { StepperLambdaExpression } from './Expression/LambdaExpression'; +import { StepperProgram } from './Program'; + +export type StepperExpression = + | StepperBinaryExpression + | StepperLiteral + | StepperPattern + | StepperFunctionApplication + | StepperLambdaExpression; + +export type StepperPattern = StepperIdentifier; + +export { + StepperBinaryExpression, + StepperLiteral, + StepperIdentifier, + StepperFunctionApplication, + StepperLambdaExpression, + StepperProgram +}; diff --git a/src/tracer/stepper.ts b/src/tracer/stepper.ts new file mode 100644 index 0000000..437a038 --- /dev/null +++ b/src/tracer/stepper.ts @@ -0,0 +1,366 @@ +import { parseSchemeSimple } from '../CSE-machine/simple-parser'; + +// Simple stepper implementation +function createSimpleStepperNode(node: any): any { + const nodeType = node.constructor.name; + + switch (nodeType) { + case 'NumericLiteral': + case 'BooleanLiteral': + case 'StringLiteral': + return { + type: 'Literal', + value: node.value, + raw: String(node.value), + toString: () => String(node.value), + isContractible: () => true, + isOneStepPossible: () => false, + contract: function() { return this; }, + oneStep: function() { return this; } + }; + case 'Identifier': + return { + type: 'Identifier', + name: node.name, + toString: () => node.name, + isContractible: () => true, + isOneStepPossible: () => false, + contract: function() { return this; }, + oneStep: function() { return this; } + }; + case 'Application': { + const opNode = createSimpleStepperNode(node.operator); + const ops = node.operands.map(createSimpleStepperNode); + // No JS BinaryExpression mapping; keep Scheme prefix application + // General application (lambda etc.) + const operator = opNode; + const operands = ops; + + // Helper: deep substitute identifiers by name with provided values, respecting shadowing in nested lambdas + function substitute(nodeAny: any, env: Record): any { + if (!nodeAny) return nodeAny; + switch (nodeAny.type) { + case 'Identifier': { + const name = nodeAny.name; + return env.hasOwnProperty(name) ? env[name] : nodeAny; + } + case 'Literal': + return nodeAny; + case 'FunctionApplication': + return { ...nodeAny, operator: substitute(nodeAny.operator, env), operands: nodeAny.operands.map((o: any) => substitute(o, env)) }; + case 'LambdaExpression': { + // Avoid capturing: do not substitute parameters that are newly bound here + const shadowed = Object.keys(env).reduce((acc: Record, key) => { + const params: any[] = nodeAny.params || []; + const has = params.some(p => (p && p.name) === key); + if (!has) acc[key] = env[key]; + return acc; + }, {} as Record); + return { ...nodeAny, body: substitute(nodeAny.body, shadowed) }; + } + case 'Program': + return { ...nodeAny, body: nodeAny.body.map((b: any) => substitute(b, env)) }; + default: + return nodeAny; + } + } + return { + type: 'FunctionApplication', + operator, + operands, + toString: function() { return `(${this.operator.toString()} ${this.operands.map((n: any) => n.toString()).join(' ')})`; }, + isContractible: function() { + const isPrim = this.operator.type === 'Identifier' && ['+', '-', '*', '/'].includes(this.operator.name); + const allLit = this.operands.every((op: any) => op.type === 'Literal' || (op.isContractible && op.isContractible())); + const allContractible = this.operands.every((op: any) => op.isContractible ? op.isContractible() : true); + return (this.operator.type === 'LambdaExpression' && allContractible) || (isPrim && this.operands.every((op: any) => op.type === 'Literal')); + }, + isOneStepPossible: function () { return this.operands.some((op: any) => op.isOneStepPossible()) || this.isContractible(); }, + contract: function () { return this; }, + oneStep: function () { + // Step only the first reducible operand + for (let i = 0; i < this.operands.length; i++) { + const op = this.operands[i]; + if (op.isOneStepPossible && op.isOneStepPossible()) { + const newOperands = [...this.operands]; + newOperands[i] = op.oneStep(); + return { ...this, operands: newOperands }; + } + } + // No operand stepped; try to contract the application itself + const isPrim = this.operator.type === 'Identifier' && ['+', '-', '*', '/'].includes(this.operator.name); + if (isPrim && this.operands.every((op: any) => op.type === 'Literal')) { + const a = Number(this.operands[0].value); + const b = Number(this.operands[1].value); + let result = 0; + switch (this.operator.name) { + case '+': result = a + b; break; + case '-': result = a - b; break; + case '*': result = a * b; break; + case '/': result = a / b; break; + } + return { type: 'Literal', value: result, raw: String(result), toString: () => String(result), isContractible: () => true, isOneStepPossible: () => false, contract: function(){ return this; }, oneStep: function(){ return this; } }; + } + if (this.operator.type === 'LambdaExpression' && this.operands.every((op: any) => op.isContractible ? op.isContractible() : true)) { + const params: any[] = this.operator.params || []; + const env: Record = {}; + for (let i = 0; i < Math.min(params.length, this.operands.length); i++) { + const param = params[i]; + const name = param && param.name ? param.name : undefined; + if (name) env[name] = this.operands[i]; + } + const reduced = substitute(this.operator.body, env); + return reduced; + } + return this; + } + }; + } + case 'Lambda': + const body = createSimpleStepperNode(node.body); + return { + type: 'LambdaExpression', + params: node.params || [], + body, + toString: () => `(lambda (${(node.params || []).map((p: any) => p.name).join(' ')}) ${body.toString()})`, + isContractible: () => true, + isOneStepPossible: () => false, + contract: function() { return this; }, + oneStep: function() { return this; } + }; + case 'Sequence': + const bodyNodes = node.expressions.map(createSimpleStepperNode); + return { + type: 'Program', + body: bodyNodes, + toString: function() { return this.body.map((n: any) => n.toString()).join('\n'); }, + isContractible: function() { return this.body.every((expr: any) => expr.isContractible()); }, + isOneStepPossible: function() { return this.body.some((expr: any) => expr.isOneStepPossible()); }, + contract: function() { + if (!this.isContractible()) { + throw new Error('Cannot contract non-contractible program'); + } + const contractedBody = this.body.map((expr: any) => expr.contract()); + if (contractedBody.length === 1) { + return contractedBody[0]; + } + return { ...this, body: contractedBody }; + }, + oneStep: function() { + for (let i = 0; i < this.body.length; i++) { + const expr = this.body[i]; + if (expr.isOneStepPossible()) { + const newBody = [...this.body]; + newBody[i] = expr.oneStep(); + return { ...this, body: newBody }; + } + } + if (this.isContractible()) { + return this.contract(); + } + return this; + } + }; + default: + return { + type: 'Literal', + value: 'undefined', + raw: 'undefined', + toString: () => 'undefined', + isContractible: () => true, + isOneStepPossible: () => false, + contract: function() { return this; }, + oneStep: function() { return this; } + }; + } +} + +export interface IStepperPropContents { + ast: any; + markers: any[]; +} + +export function stepExpression(code: string, stepLimit: number = 1000): IStepperPropContents[] { + try { + // Utilities to emulate js-slang stepper behaviour: find the next reducible + // sub-expression and produce before/after markers and human-readable messages. + type PathSegment = { key: 'left' | 'right' | 'body' | 'operands'; index?: number }; + const isOneStepPossibleSafe = (n: any) => !!n && typeof n.isOneStepPossible === 'function' && n.isOneStepPossible(); + const isContractibleSafe = (n: any) => !!n && typeof n.isContractible === 'function' && n.isContractible(); + const getNodeAtPath = (node: any, path: PathSegment[]) => { + let cur = node; + for (const seg of path) { + if (cur == null) return cur; + if (seg.key === 'left' || seg.key === 'right') { + cur = cur[seg.key]; + } else if (seg.key === 'body' || seg.key === 'operands') { + const arr = cur[seg.key]; + cur = Array.isArray(arr) ? arr[seg.index as number] : undefined; + } + } + return cur; + }; + const findReduciblePath = (node: any): PathSegment[] | null => { + if (!node) return null; + switch (node.type) { + case 'Program': { + const body = node.body || []; + for (let i = 0; i < body.length; i++) { + const sub = body[i]; + const subPath = findReduciblePath(sub); + if (subPath) return [{ key: 'body', index: i }, ...subPath]; + } + return isContractibleSafe(node) ? [] : null; + } + case 'BinaryExpression': { + const left = node.left; + const right = node.right; + if (isOneStepPossibleSafe(left)) return [{ key: 'left' }, ...(findReduciblePath(left) || [])]; + if (isOneStepPossibleSafe(right)) return [{ key: 'right' }, ...(findReduciblePath(right) || [])]; + return isContractibleSafe(node) ? [] : null; + } + case 'FunctionApplication': { + const ops = node.operands || []; + for (let i = 0; i < ops.length; i++) { + const sub = ops[i]; + if (isOneStepPossibleSafe(sub)) return [{ key: 'operands', index: i }, ...(findReduciblePath(sub) || [])]; + } + return isContractibleSafe(node) ? [] : null; + } + default: + return null; + } + }; + const explainRedex = (node: any): string => { + // Arithmetic in prefix form: (+ a b) + if (node && node.type === 'FunctionApplication' && node.operator && node.operator.type === 'Identifier' && ['+','-','*','/'].includes(node.operator.name)) { + const ops = node.operands || [] + if (ops.length >= 2) { + const l = ops[0].raw !== undefined ? ops[0].raw : ops[0].value !== undefined ? String(ops[0].value) : '' + const r = ops[1].raw !== undefined ? ops[1].raw : ops[1].value !== undefined ? String(ops[1].value) : '' + if (l !== '' && r !== '') return `Binary expression ${l} ${node.operator.name} ${r} evaluated` + } + } + return 'Step' + } + const canReduce = (node: any): boolean => { + if (!node || typeof node !== 'object') return false + switch (node.type) { + case 'Literal': + case 'Identifier': + return false + case 'LambdaExpression': + return canReduce(node.body) + case 'Program': + return (node.body || []).some((b: any) => canReduce(b)) + case 'FunctionApplication': { + const ops = node.operands || [] + if (ops.some((o: any) => canReduce(o))) return true + const isPrim = node.operator && node.operator.type === 'Identifier' && ['+','-','*','/'].includes(node.operator.name) + const allLit = ops.length >= 2 && ops.every((o: any) => o.type === 'Literal') + const allContractible = ops.every((o: any) => (o.isContractible ? o.isContractible() : true)) + return (isPrim && allLit) || (node.operator && node.operator.type === 'LambdaExpression' && allContractible) + } + default: + return false + } + } + + // Parse the Scheme code into AST + const expressions = parseSchemeSimple(code); + if (!expressions || expressions.length === 0) { + return [{ + ast: { type: 'Literal', value: 'error', raw: 'error' }, + markers: [{ explanation: 'Error parsing code' }] + }]; + } + + // Convert to stepper nodes + let stepperNode; + if (expressions.length === 1) { + stepperNode = createSimpleStepperNode(expressions[0]); + } else { + // Create a program node for multiple expressions + stepperNode = createSimpleStepperNode({ constructor: { name: 'Sequence' }, expressions }); + } + + // Generate steps manually + const steps: IStepperPropContents[] = []; + + // Add initial step + steps.push({ + ast: stepperNode, + markers: [{ explanation: 'Start of evaluation' }] + }); + + // Generate steps until no more steps possible or limit reached + let currentStep = 0; + let currentNode = stepperNode; + + while (currentStep < stepLimit && canReduce(currentNode)) { + currentStep++; + + try { + const oldNode = currentNode; + // Determine redex to mimic js-slang tracer + const path = findReduciblePath(oldNode) || []; + const beforeRedex = getNodeAtPath(oldNode, path) ?? oldNode; + const explanation = explainRedex(beforeRedex); + + const nextNode = (currentNode as any).oneStep(); + + // No-change guard + const unchanged = JSON.stringify(nextNode) === JSON.stringify(oldNode); + currentNode = nextNode; + + steps.push({ + ast: oldNode, + markers: [{ redex: beforeRedex, redexType: 'beforeMarker', explanation }] + }); + + const afterRedex = getNodeAtPath(currentNode, path) ?? currentNode; + steps.push({ + ast: currentNode, + markers: [{ redex: afterRedex, redexType: 'afterMarker', explanation }] + }); + + if (unchanged) { + break; + } + } catch (error) { + steps.push({ + ast: currentNode, + markers: [{ explanation: `Step ${currentStep}: Error - ${error}` }] + }); + break; + } + } + + // Fallback: if for some reason no reduction steps were generated but the node supports oneStep, + // attempt a single reduction to provide at least one step pair for the UI. + if (steps.length === 1 && typeof (currentNode as any).oneStep === 'function') { + try { + const oldNode = currentNode; + const path: any[] = findReduciblePath(oldNode) || []; + const beforeRedex = getNodeAtPath(oldNode, path) ?? oldNode; + const explanation = explainRedex(beforeRedex); + currentNode = (currentNode as any).oneStep(); + steps.push({ ast: oldNode, markers: [{ redex: beforeRedex, redexType: 'beforeMarker', explanation }] }); + const afterRedex = getNodeAtPath(currentNode, path) ?? currentNode; + steps.push({ ast: currentNode, markers: [{ redex: afterRedex, redexType: 'afterMarker', explanation }] }); + } catch {} + } + + // Mark the last step as complete if any steps exist + if (steps.length > 1) { + const last = steps[steps.length - 1]; + last.markers = [{ explanation: 'Evaluation complete' }]; + } + return steps; + } catch (error) { + return [{ + ast: { type: 'Literal', value: 'error', raw: 'error' }, + markers: [{ explanation: `Error parsing code: ${error}` }] + }]; + } +} diff --git a/src/tracer/steppers.ts b/src/tracer/steppers.ts new file mode 100644 index 0000000..62b9ccc --- /dev/null +++ b/src/tracer/steppers.ts @@ -0,0 +1,95 @@ +import { StepperBaseNode } from './interface'; +import { explain } from './generator'; +import { IStepperPropContents, Marker, redex } from './index'; + +export function getSteps( + inputNode: any, + context: any, + { stepLimit }: { stepLimit: number } +): IStepperPropContents[] { + const node: StepperBaseNode = inputNode; + const steps: IStepperPropContents[] = []; + const limit = stepLimit === undefined ? 1000 : stepLimit % 2 === 0 ? stepLimit : stepLimit + 1; + let hasError = false; + + let numSteps = 0; + function evaluate(node: StepperBaseNode): StepperBaseNode { + numSteps += 1; + if (numSteps >= limit) { + return node; + } + + try { + const isOneStepPossible = node.isOneStepPossible(); + if (isOneStepPossible) { + const oldNode = node; + let newNode: StepperBaseNode; + newNode = node.oneStep(); + + if (redex) { + const explanations: string[] = redex.preRedex.map(explain); + const beforeMarkers: Marker[] = redex.preRedex.map((redex, index) => ({ + redex: redex, + redexType: 'beforeMarker', + explanation: explanations[index] + })); + steps.push({ + ast: oldNode, + markers: beforeMarkers + }); + const afterMarkers: Marker[] = + redex.postRedex.length > 0 + ? redex.postRedex.map((redex, index) => ({ + redex: redex, + redexType: 'afterMarker', + explanation: explanations[index] + })) + : [ + { + redexType: 'afterMarker', + explanation: explanations[0] // use explanation based on preRedex + } + ]; + steps.push({ + ast: newNode, + markers: afterMarkers + }); + } + // reset + redex.preRedex = []; + redex.postRedex = []; + return evaluate(newNode); + } else { + return node; + } + } catch (error) { + // Handle error during step evaluation + hasError = true; + steps.push({ + ast: node, + markers: [ + { + redexType: 'beforeMarker', + explanation: error instanceof Error ? error.message : String(error) + } + ] + }); + return node; + } + } + + // First node + steps.push({ + ast: node, + markers: [ + { + explanation: 'Start of evaluation' + } + ] + }); + + // Start evaluation + evaluate(node); + + return steps; +} diff --git a/src/transpiler/__tests__/__snapshots__/schemeParse.ts.snap b/src/transpiler/__tests__/__snapshots__/schemeParse.ts.snap deleted file mode 100644 index 76ea6b7..0000000 --- a/src/transpiler/__tests__/__snapshots__/schemeParse.ts.snap +++ /dev/null @@ -1,2736 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`schemeParse (s-expression) 1`] = ` -{ - "body": [ - { - "loc": Location { - "end": Position { - "column": 27, - "line": 2, - }, - "start": Position { - "column": 3, - "line": 2, - }, - }, - "source": { - "loc": Location { - "end": Position { - "column": 19, - "line": 2, - }, - "start": Position { - "column": 15, - "line": 2, - }, - }, - "raw": ""std"", - "type": "Literal", - "value": "std", - }, - "specifiers": [ - { - "imported": { - "loc": Location { - "end": Position { - "column": 24, - "line": 2, - }, - "start": Position { - "column": 21, - "line": 2, - }, - }, - "name": "list", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 24, - "line": 2, - }, - "start": Position { - "column": 21, - "line": 2, - }, - }, - "local": { - "loc": Location { - "end": Position { - "column": 24, - "line": 2, - }, - "start": Position { - "column": 21, - "line": 2, - }, - }, - "name": "importedlist", - "type": "Identifier", - }, - "type": "ImportSpecifier", - }, - { - "imported": { - "loc": Location { - "end": Position { - "column": 27, - "line": 2, - }, - "start": Position { - "column": 25, - "line": 2, - }, - }, - "name": "map", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 27, - "line": 2, - }, - "start": Position { - "column": 25, - "line": 2, - }, - }, - "local": { - "loc": Location { - "end": Position { - "column": 27, - "line": 2, - }, - "start": Position { - "column": 25, - "line": 2, - }, - }, - "name": "importedmap", - "type": "Identifier", - }, - "type": "ImportSpecifier", - }, - ], - "type": "ImportDeclaration", - }, - { - "declarations": [ - { - "id": { - "loc": Location { - "end": Position { - "column": 24, - "line": 2, - }, - "start": Position { - "column": 21, - "line": 2, - }, - }, - "name": "list", - "type": "Identifier", - }, - "init": { - "loc": Location { - "end": Position { - "column": 24, - "line": 2, - }, - "start": Position { - "column": 21, - "line": 2, - }, - }, - "name": "importedlist", - "type": "Identifier", - }, - "type": "VariableDeclarator", - }, - ], - "kind": "let", - "loc": Location { - "end": Position { - "column": 24, - "line": 2, - }, - "start": Position { - "column": 21, - "line": 2, - }, - }, - "type": "VariableDeclaration", - }, - { - "declarations": [ - { - "id": { - "loc": Location { - "end": Position { - "column": 27, - "line": 2, - }, - "start": Position { - "column": 25, - "line": 2, - }, - }, - "name": "map", - "type": "Identifier", - }, - "init": { - "loc": Location { - "end": Position { - "column": 27, - "line": 2, - }, - "start": Position { - "column": 25, - "line": 2, - }, - }, - "name": "importedmap", - "type": "Identifier", - }, - "type": "VariableDeclarator", - }, - ], - "kind": "let", - "loc": Location { - "end": Position { - "column": 27, - "line": 2, - }, - "start": Position { - "column": 25, - "line": 2, - }, - }, - "type": "VariableDeclaration", - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 50, - "line": 6, - }, - "start": Position { - "column": 3, - "line": 3, - }, - }, - "raw": ""begin"", - "type": "Literal", - "value": "begin", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 50, - "line": 6, - }, - "start": Position { - "column": 3, - "line": 3, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 50, - "line": 6, - }, - "start": Position { - "column": 3, - "line": 3, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 14, - "line": 3, - }, - "start": Position { - "column": 9, - "line": 3, - }, - }, - "raw": ""define"", - "type": "Literal", - "value": "define", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 14, - "line": 3, - }, - "start": Position { - "column": 9, - "line": 3, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 14, - "line": 3, - }, - "start": Position { - "column": 9, - "line": 3, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 22, - "line": 3, - }, - "start": Position { - "column": 17, - "line": 3, - }, - }, - "raw": ""square"", - "type": "Literal", - "value": "square", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 22, - "line": 3, - }, - "start": Position { - "column": 17, - "line": 3, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 22, - "line": 3, - }, - "start": Position { - "column": 17, - "line": 3, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 19, - "line": 3, - }, - "start": Position { - "column": 19, - "line": 3, - }, - }, - "raw": ""x"", - "type": "Literal", - "value": "x", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 19, - "line": 3, - }, - "start": Position { - "column": 19, - "line": 3, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 19, - "line": 3, - }, - "start": Position { - "column": 19, - "line": 3, - }, - }, - "optional": false, - "type": "CallExpression", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 20, - "line": 3, - }, - "start": Position { - "column": 11, - "line": 3, - }, - }, - "name": "list", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 20, - "line": 3, - }, - "start": Position { - "column": 11, - "line": 3, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 23, - "line": 3, - }, - "start": Position { - "column": 23, - "line": 3, - }, - }, - "raw": ""*"", - "type": "Literal", - "value": "*", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 23, - "line": 3, - }, - "start": Position { - "column": 23, - "line": 3, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 23, - "line": 3, - }, - "start": Position { - "column": 23, - "line": 3, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 25, - "line": 3, - }, - "start": Position { - "column": 25, - "line": 3, - }, - }, - "raw": ""x"", - "type": "Literal", - "value": "x", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 25, - "line": 3, - }, - "start": Position { - "column": 25, - "line": 3, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 25, - "line": 3, - }, - "start": Position { - "column": 25, - "line": 3, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 27, - "line": 3, - }, - "start": Position { - "column": 27, - "line": 3, - }, - }, - "raw": ""x"", - "type": "Literal", - "value": "x", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 27, - "line": 3, - }, - "start": Position { - "column": 27, - "line": 3, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 27, - "line": 3, - }, - "start": Position { - "column": 27, - "line": 3, - }, - }, - "optional": false, - "type": "CallExpression", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 28, - "line": 3, - }, - "start": Position { - "column": 22, - "line": 3, - }, - }, - "name": "list", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 28, - "line": 3, - }, - "start": Position { - "column": 22, - "line": 3, - }, - }, - "optional": false, - "type": "CallExpression", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 29, - "line": 3, - }, - "start": Position { - "column": 3, - "line": 3, - }, - }, - "name": "list", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 29, - "line": 3, - }, - "start": Position { - "column": 3, - "line": 3, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 9, - "line": 4, - }, - }, - "raw": ""square"", - "type": "Literal", - "value": "square", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 9, - "line": 4, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 9, - "line": 4, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 15, - "line": 4, - }, - "start": Position { - "column": 13, - "line": 4, - }, - }, - "raw": ""5/8"", - "type": "Literal", - "value": "5/8", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 15, - "line": 4, - }, - "start": Position { - "column": 13, - "line": 4, - }, - }, - "name": "make_number", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 15, - "line": 4, - }, - "start": Position { - "column": 13, - "line": 4, - }, - }, - "optional": false, - "type": "CallExpression", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 3, - "line": 4, - }, - }, - "name": "list", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 3, - "line": 4, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 12, - "line": 5, - }, - "start": Position { - "column": 8, - "line": 5, - }, - }, - "raw": ""begin"", - "type": "Literal", - "value": "begin", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 12, - "line": 5, - }, - "start": Position { - "column": 8, - "line": 5, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 12, - "line": 5, - }, - "start": Position { - "column": 8, - "line": 5, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 21, - "line": 5, - }, - "start": Position { - "column": 16, - "line": 5, - }, - }, - "raw": ""define"", - "type": "Literal", - "value": "define", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 21, - "line": 5, - }, - "start": Position { - "column": 16, - "line": 5, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 21, - "line": 5, - }, - "start": Position { - "column": 16, - "line": 5, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 18, - "line": 5, - }, - "start": Position { - "column": 18, - "line": 5, - }, - }, - "raw": ""x"", - "type": "Literal", - "value": "x", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 18, - "line": 5, - }, - "start": Position { - "column": 18, - "line": 5, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 18, - "line": 5, - }, - "start": Position { - "column": 18, - "line": 5, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 20, - "line": 5, - }, - "start": Position { - "column": 20, - "line": 5, - }, - }, - "raw": ""5"", - "type": "Literal", - "value": "5", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 20, - "line": 5, - }, - "start": Position { - "column": 20, - "line": 5, - }, - }, - "name": "make_number", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 20, - "line": 5, - }, - "start": Position { - "column": 20, - "line": 5, - }, - }, - "optional": false, - "type": "CallExpression", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 21, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "name": "list", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 21, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 30, - "line": 5, - }, - "start": Position { - "column": 27, - "line": 5, - }, - }, - "raw": ""set!"", - "type": "Literal", - "value": "set!", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 30, - "line": 5, - }, - "start": Position { - "column": 27, - "line": 5, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 30, - "line": 5, - }, - "start": Position { - "column": 27, - "line": 5, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 29, - "line": 5, - }, - "start": Position { - "column": 29, - "line": 5, - }, - }, - "raw": ""x"", - "type": "Literal", - "value": "x", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 29, - "line": 5, - }, - "start": Position { - "column": 29, - "line": 5, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 29, - "line": 5, - }, - "start": Position { - "column": 29, - "line": 5, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 33, - "line": 5, - }, - "start": Position { - "column": 32, - "line": 5, - }, - }, - "raw": ""10"", - "type": "Literal", - "value": "10", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 33, - "line": 5, - }, - "start": Position { - "column": 32, - "line": 5, - }, - }, - "name": "make_number", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 33, - "line": 5, - }, - "start": Position { - "column": 32, - "line": 5, - }, - }, - "optional": false, - "type": "CallExpression", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 33, - "line": 5, - }, - "start": Position { - "column": 23, - "line": 5, - }, - }, - "name": "list", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 33, - "line": 5, - }, - "start": Position { - "column": 23, - "line": 5, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 35, - "line": 5, - }, - "start": Position { - "column": 35, - "line": 5, - }, - }, - "raw": ""x"", - "type": "Literal", - "value": "x", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 35, - "line": 5, - }, - "start": Position { - "column": 35, - "line": 5, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 35, - "line": 5, - }, - "start": Position { - "column": 35, - "line": 5, - }, - }, - "optional": false, - "type": "CallExpression", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 36, - "line": 5, - }, - "start": Position { - "column": 3, - "line": 5, - }, - }, - "name": "list", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 36, - "line": 5, - }, - "start": Position { - "column": 3, - "line": 5, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 14, - "line": 6, - }, - "start": Position { - "column": 9, - "line": 6, - }, - }, - "raw": ""define"", - "type": "Literal", - "value": "define", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 14, - "line": 6, - }, - "start": Position { - "column": 9, - "line": 6, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 14, - "line": 6, - }, - "start": Position { - "column": 9, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 22, - "line": 6, - }, - "start": Position { - "column": 17, - "line": 6, - }, - }, - "raw": ""square"", - "type": "Literal", - "value": "square", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 22, - "line": 6, - }, - "start": Position { - "column": 17, - "line": 6, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 22, - "line": 6, - }, - "start": Position { - "column": 17, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 19, - "line": 6, - }, - "start": Position { - "column": 19, - "line": 6, - }, - }, - "raw": ""x"", - "type": "Literal", - "value": "x", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 19, - "line": 6, - }, - "start": Position { - "column": 19, - "line": 6, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 19, - "line": 6, - }, - "start": Position { - "column": 19, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 20, - "line": 6, - }, - "start": Position { - "column": 11, - "line": 6, - }, - }, - "name": "list", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 20, - "line": 6, - }, - "start": Position { - "column": 11, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 31, - "line": 6, - }, - "start": Position { - "column": 27, - "line": 6, - }, - }, - "raw": ""begin"", - "type": "Literal", - "value": "begin", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 31, - "line": 6, - }, - "start": Position { - "column": 27, - "line": 6, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 31, - "line": 6, - }, - "start": Position { - "column": 27, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 40, - "line": 6, - }, - "start": Position { - "column": 35, - "line": 6, - }, - }, - "raw": ""define"", - "type": "Literal", - "value": "define", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 40, - "line": 6, - }, - "start": Position { - "column": 35, - "line": 6, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 40, - "line": 6, - }, - "start": Position { - "column": 35, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 37, - "line": 6, - }, - "start": Position { - "column": 37, - "line": 6, - }, - }, - "raw": ""x"", - "type": "Literal", - "value": "x", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 37, - "line": 6, - }, - "start": Position { - "column": 37, - "line": 6, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 37, - "line": 6, - }, - "start": Position { - "column": 37, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 39, - "line": 6, - }, - "start": Position { - "column": 39, - "line": 6, - }, - }, - "raw": ""5"", - "type": "Literal", - "value": "5", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 39, - "line": 6, - }, - "start": Position { - "column": 39, - "line": 6, - }, - }, - "name": "make_number", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 39, - "line": 6, - }, - "start": Position { - "column": 39, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 40, - "line": 6, - }, - "start": Position { - "column": 29, - "line": 6, - }, - }, - "name": "list", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 40, - "line": 6, - }, - "start": Position { - "column": 29, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 43, - "line": 6, - }, - "start": Position { - "column": 43, - "line": 6, - }, - }, - "raw": ""*"", - "type": "Literal", - "value": "*", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 43, - "line": 6, - }, - "start": Position { - "column": 43, - "line": 6, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 43, - "line": 6, - }, - "start": Position { - "column": 43, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 45, - "line": 6, - }, - "start": Position { - "column": 45, - "line": 6, - }, - }, - "raw": ""x"", - "type": "Literal", - "value": "x", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 45, - "line": 6, - }, - "start": Position { - "column": 45, - "line": 6, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 45, - "line": 6, - }, - "start": Position { - "column": 45, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 47, - "line": 6, - }, - "start": Position { - "column": 47, - "line": 6, - }, - }, - "raw": ""x"", - "type": "Literal", - "value": "x", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 47, - "line": 6, - }, - "start": Position { - "column": 47, - "line": 6, - }, - }, - "name": "string->symbol", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 47, - "line": 6, - }, - "start": Position { - "column": 47, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 48, - "line": 6, - }, - "start": Position { - "column": 42, - "line": 6, - }, - }, - "name": "list", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 48, - "line": 6, - }, - "start": Position { - "column": 42, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 49, - "line": 6, - }, - "start": Position { - "column": 22, - "line": 6, - }, - }, - "name": "list", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 49, - "line": 6, - }, - "start": Position { - "column": 22, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 50, - "line": 6, - }, - "start": Position { - "column": 3, - "line": 6, - }, - }, - "name": "list", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 50, - "line": 6, - }, - "start": Position { - "column": 3, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 50, - "line": 6, - }, - "start": Position { - "column": 3, - "line": 3, - }, - }, - "name": "list", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 50, - "line": 6, - }, - "start": Position { - "column": 3, - "line": 3, - }, - }, - "optional": false, - "type": "CallExpression", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 50, - "line": 6, - }, - "start": Position { - "column": 3, - "line": 3, - }, - }, - "name": "eval", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 50, - "line": 6, - }, - "start": Position { - "column": 3, - "line": 3, - }, - }, - "optional": false, - "type": "CallExpression", - }, - "loc": Location { - "end": Position { - "column": 50, - "line": 6, - }, - "start": Position { - "column": 3, - "line": 3, - }, - }, - "type": "ExpressionStatement", - }, - ], - "loc": { - "end": Position { - "column": 50, - "line": 6, - }, - "start": Position { - "column": 3, - "line": 2, - }, - }, - "sourceType": "module", - "type": "Program", -} -`; - -exports[`schemeParse (standard) 1`] = ` -{ - "body": [ - { - "loc": Location { - "end": Position { - "column": 27, - "line": 2, - }, - "start": Position { - "column": 3, - "line": 2, - }, - }, - "source": { - "loc": Location { - "end": Position { - "column": 19, - "line": 2, - }, - "start": Position { - "column": 15, - "line": 2, - }, - }, - "raw": ""std"", - "type": "Literal", - "value": "std", - }, - "specifiers": [ - { - "imported": { - "loc": Location { - "end": Position { - "column": 24, - "line": 2, - }, - "start": Position { - "column": 21, - "line": 2, - }, - }, - "name": "list", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 24, - "line": 2, - }, - "start": Position { - "column": 21, - "line": 2, - }, - }, - "local": { - "loc": Location { - "end": Position { - "column": 24, - "line": 2, - }, - "start": Position { - "column": 21, - "line": 2, - }, - }, - "name": "importedlist", - "type": "Identifier", - }, - "type": "ImportSpecifier", - }, - { - "imported": { - "loc": Location { - "end": Position { - "column": 27, - "line": 2, - }, - "start": Position { - "column": 25, - "line": 2, - }, - }, - "name": "map", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 27, - "line": 2, - }, - "start": Position { - "column": 25, - "line": 2, - }, - }, - "local": { - "loc": Location { - "end": Position { - "column": 27, - "line": 2, - }, - "start": Position { - "column": 25, - "line": 2, - }, - }, - "name": "importedmap", - "type": "Identifier", - }, - "type": "ImportSpecifier", - }, - ], - "type": "ImportDeclaration", - }, - { - "declarations": [ - { - "id": { - "loc": Location { - "end": Position { - "column": 24, - "line": 2, - }, - "start": Position { - "column": 21, - "line": 2, - }, - }, - "name": "list", - "type": "Identifier", - }, - "init": { - "loc": Location { - "end": Position { - "column": 24, - "line": 2, - }, - "start": Position { - "column": 21, - "line": 2, - }, - }, - "name": "importedlist", - "type": "Identifier", - }, - "type": "VariableDeclarator", - }, - ], - "kind": "let", - "loc": Location { - "end": Position { - "column": 24, - "line": 2, - }, - "start": Position { - "column": 21, - "line": 2, - }, - }, - "type": "VariableDeclaration", - }, - { - "declarations": [ - { - "id": { - "loc": Location { - "end": Position { - "column": 27, - "line": 2, - }, - "start": Position { - "column": 25, - "line": 2, - }, - }, - "name": "map", - "type": "Identifier", - }, - "init": { - "loc": Location { - "end": Position { - "column": 27, - "line": 2, - }, - "start": Position { - "column": 25, - "line": 2, - }, - }, - "name": "importedmap", - "type": "Identifier", - }, - "type": "VariableDeclarator", - }, - ], - "kind": "let", - "loc": Location { - "end": Position { - "column": 27, - "line": 2, - }, - "start": Position { - "column": 25, - "line": 2, - }, - }, - "type": "VariableDeclaration", - }, - { - "declarations": [ - { - "id": { - "loc": Location { - "end": Position { - "column": 22, - "line": 3, - }, - "start": Position { - "column": 17, - "line": 3, - }, - }, - "name": "square", - "type": "Identifier", - }, - "init": { - "async": false, - "body": { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 25, - "line": 3, - }, - "start": Position { - "column": 25, - "line": 3, - }, - }, - "name": "x", - "type": "Identifier", - }, - { - "loc": Location { - "end": Position { - "column": 27, - "line": 3, - }, - "start": Position { - "column": 27, - "line": 3, - }, - }, - "name": "x", - "type": "Identifier", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 23, - "line": 3, - }, - "start": Position { - "column": 23, - "line": 3, - }, - }, - "name": "*", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 28, - "line": 3, - }, - "start": Position { - "column": 22, - "line": 3, - }, - }, - "optional": false, - "type": "CallExpression", - }, - "expression": true, - "loc": Location { - "end": Position { - "column": 29, - "line": 3, - }, - "start": Position { - "column": 3, - "line": 3, - }, - }, - "params": [ - { - "loc": Location { - "end": Position { - "column": 19, - "line": 3, - }, - "start": Position { - "column": 19, - "line": 3, - }, - }, - "name": "x", - "type": "Identifier", - }, - ], - "type": "ArrowFunctionExpression", - }, - "type": "VariableDeclarator", - }, - ], - "kind": "let", - "loc": Location { - "end": Position { - "column": 29, - "line": 3, - }, - "start": Position { - "column": 3, - "line": 3, - }, - }, - "type": "VariableDeclaration", - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 15, - "line": 4, - }, - "start": Position { - "column": 13, - "line": 4, - }, - }, - "raw": ""5/8"", - "type": "Literal", - "value": "5/8", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 15, - "line": 4, - }, - "start": Position { - "column": 13, - "line": 4, - }, - }, - "name": "make_number", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 15, - "line": 4, - }, - "start": Position { - "column": 13, - "line": 4, - }, - }, - "optional": false, - "type": "CallExpression", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 9, - "line": 4, - }, - }, - "name": "square", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 3, - "line": 4, - }, - }, - "optional": false, - "type": "CallExpression", - }, - "loc": Location { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 3, - "line": 4, - }, - }, - "type": "ExpressionStatement", - }, - { - "declarations": [ - { - "id": { - "loc": Location { - "end": Position { - "column": 18, - "line": 5, - }, - "start": Position { - "column": 18, - "line": 5, - }, - }, - "name": "x", - "type": "Identifier", - }, - "init": { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 20, - "line": 5, - }, - "start": Position { - "column": 20, - "line": 5, - }, - }, - "raw": ""5"", - "type": "Literal", - "value": "5", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 20, - "line": 5, - }, - "start": Position { - "column": 20, - "line": 5, - }, - }, - "name": "make_number", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 20, - "line": 5, - }, - "start": Position { - "column": 20, - "line": 5, - }, - }, - "optional": false, - "type": "CallExpression", - }, - "type": "VariableDeclarator", - }, - ], - "kind": "let", - "loc": Location { - "end": Position { - "column": 21, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "type": "VariableDeclaration", - }, - { - "expression": { - "left": { - "loc": Location { - "end": Position { - "column": 29, - "line": 5, - }, - "start": Position { - "column": 29, - "line": 5, - }, - }, - "name": "x", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 33, - "line": 5, - }, - "start": Position { - "column": 23, - "line": 5, - }, - }, - "operator": "=", - "right": { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 33, - "line": 5, - }, - "start": Position { - "column": 32, - "line": 5, - }, - }, - "raw": ""10"", - "type": "Literal", - "value": "10", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 33, - "line": 5, - }, - "start": Position { - "column": 32, - "line": 5, - }, - }, - "name": "make_number", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 33, - "line": 5, - }, - "start": Position { - "column": 32, - "line": 5, - }, - }, - "optional": false, - "type": "CallExpression", - }, - "type": "AssignmentExpression", - }, - "loc": Location { - "end": Position { - "column": 33, - "line": 5, - }, - "start": Position { - "column": 23, - "line": 5, - }, - }, - "type": "ExpressionStatement", - }, - { - "expression": { - "loc": Location { - "end": Position { - "column": 35, - "line": 5, - }, - "start": Position { - "column": 35, - "line": 5, - }, - }, - "name": "x", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 35, - "line": 5, - }, - "start": Position { - "column": 35, - "line": 5, - }, - }, - "type": "ExpressionStatement", - }, - { - "expression": { - "left": { - "loc": Location { - "end": Position { - "column": 22, - "line": 6, - }, - "start": Position { - "column": 17, - "line": 6, - }, - }, - "name": "square", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 50, - "line": 6, - }, - "start": Position { - "column": 3, - "line": 6, - }, - }, - "operator": "=", - "right": { - "async": false, - "body": { - "body": [ - { - "declarations": [ - { - "id": { - "loc": Location { - "end": Position { - "column": 37, - "line": 6, - }, - "start": Position { - "column": 37, - "line": 6, - }, - }, - "name": "x", - "type": "Identifier", - }, - "init": { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 39, - "line": 6, - }, - "start": Position { - "column": 39, - "line": 6, - }, - }, - "raw": ""5"", - "type": "Literal", - "value": "5", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 39, - "line": 6, - }, - "start": Position { - "column": 39, - "line": 6, - }, - }, - "name": "make_number", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 39, - "line": 6, - }, - "start": Position { - "column": 39, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - "type": "VariableDeclarator", - }, - ], - "kind": "let", - "loc": Location { - "end": Position { - "column": 40, - "line": 6, - }, - "start": Position { - "column": 29, - "line": 6, - }, - }, - "type": "VariableDeclaration", - }, - { - "argument": { - "arguments": [ - { - "loc": Location { - "end": Position { - "column": 45, - "line": 6, - }, - "start": Position { - "column": 45, - "line": 6, - }, - }, - "name": "x", - "type": "Identifier", - }, - { - "loc": Location { - "end": Position { - "column": 47, - "line": 6, - }, - "start": Position { - "column": 47, - "line": 6, - }, - }, - "name": "x", - "type": "Identifier", - }, - ], - "callee": { - "loc": Location { - "end": Position { - "column": 43, - "line": 6, - }, - "start": Position { - "column": 43, - "line": 6, - }, - }, - "name": "*", - "type": "Identifier", - }, - "loc": Location { - "end": Position { - "column": 48, - "line": 6, - }, - "start": Position { - "column": 42, - "line": 6, - }, - }, - "optional": false, - "type": "CallExpression", - }, - "loc": Location { - "end": Position { - "column": 48, - "line": 6, - }, - "start": Position { - "column": 42, - "line": 6, - }, - }, - "type": "ReturnStatement", - }, - ], - "loc": { - "end": Position { - "column": 48, - "line": 6, - }, - "start": Position { - "column": 29, - "line": 6, - }, - }, - "type": "BlockStatement", - }, - "expression": false, - "loc": Location { - "end": Position { - "column": 50, - "line": 6, - }, - "start": Position { - "column": 3, - "line": 6, - }, - }, - "params": [ - { - "loc": Location { - "end": Position { - "column": 19, - "line": 6, - }, - "start": Position { - "column": 19, - "line": 6, - }, - }, - "name": "x", - "type": "Identifier", - }, - ], - "type": "ArrowFunctionExpression", - }, - "type": "AssignmentExpression", - }, - "loc": Location { - "end": Position { - "column": 50, - "line": 6, - }, - "start": Position { - "column": 3, - "line": 6, - }, - }, - "type": "ExpressionStatement", - }, - ], - "loc": { - "end": Position { - "column": 50, - "line": 6, - }, - "start": Position { - "column": 3, - "line": 2, - }, - }, - "sourceType": "module", - "type": "Program", -} -`; diff --git a/src/transpiler/__tests__/schemeParse.ts b/src/transpiler/__tests__/schemeParse.ts deleted file mode 100644 index 0580e9a..0000000 --- a/src/transpiler/__tests__/schemeParse.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { schemeParse } from "../.."; - -test("schemeParse (standard)", () => { - const source = ` - (import "std" (list map)) - (define (square x) (* x x)) - (square 5/8) - (begin (define x 5) (set! x 10) x) - (define (square x) (begin (define x 5) (* x x))) - `; - const program = schemeParse(source, 4); - expect(program).toMatchSnapshot(); -}); - -test("schemeParse (s-expression)", () => { - const source = ` - (import "std" (list map)) - (define (square x) (* x x)) - (square 5/8) - (begin (define x 5) (set! x 10) x) - (define (square x) (begin (define x 5) (* x x))) - `; - const program = schemeParse(source, 5); - expect(program).toMatchSnapshot(); -}); diff --git a/src/transpiler/types/nodes/scheme-node-types.ts b/src/transpiler/types/nodes/scheme-node-types.ts index 0a62e8c..ed05f9f 100644 --- a/src/transpiler/types/nodes/scheme-node-types.ts +++ b/src/transpiler/types/nodes/scheme-node-types.ts @@ -128,6 +128,27 @@ export namespace Atomic { } } + /** + * A node that represents a Scheme complex number. + */ + export class ComplexLiteral implements Literal { + location: Location; + value: string; + constructor(location: Location, value: string) { + this.location = location; + this.value = value; + } + accept(visitor: Visitor): any { + return visitor.visitComplexLiteral(this); + } + equals(other: Expression): boolean { + if (other instanceof ComplexLiteral) { + return this.value === other.value; + } + return false; + } + } + /** * A node representing a Scheme lambda expression. * TODO: Support rest arguments. diff --git a/src/transpiler/visitors/printer.ts b/src/transpiler/visitors/printer.ts index 724dcca..63a13fa 100644 --- a/src/transpiler/visitors/printer.ts +++ b/src/transpiler/visitors/printer.ts @@ -252,4 +252,8 @@ export class Printer implements Visitor { }); this.display(") "); } + + visitComplexLiteral(node: Atomic.ComplexLiteral): void { + this.display(node.value); + } } diff --git a/src/transpiler/visitors/redefiner.ts b/src/transpiler/visitors/redefiner.ts index 6034fdf..7be711b 100644 --- a/src/transpiler/visitors/redefiner.ts +++ b/src/transpiler/visitors/redefiner.ts @@ -235,4 +235,8 @@ export class Redefiner implements Visitor { visitSyntaxRules(node: Atomic.SyntaxRules) { return node; } + + visitComplexLiteral(node: Atomic.ComplexLiteral): Expression { + return node; + } } diff --git a/src/transpiler/visitors/simplifier.ts b/src/transpiler/visitors/simplifier.ts index 06d1668..07179ad 100644 --- a/src/transpiler/visitors/simplifier.ts +++ b/src/transpiler/visitors/simplifier.ts @@ -264,4 +264,8 @@ export class Simplifier implements Visitor { visitSyntaxRules(node: Atomic.SyntaxRules) { return node; } + + visitComplexLiteral(node: Atomic.ComplexLiteral): Expression { + return node; + } } diff --git a/src/transpiler/visitors/transpiler.ts b/src/transpiler/visitors/transpiler.ts index 274d67b..e3c94e3 100644 --- a/src/transpiler/visitors/transpiler.ts +++ b/src/transpiler/visitors/transpiler.ts @@ -416,4 +416,9 @@ export class Transpiler implements Visitor { visitSyntaxRules(node: Atomic.SyntaxRules) { throw new Error("This should not be called!"); } + + visitComplexLiteral(node: Atomic.ComplexLiteral): [es.Literal] { + // Convert complex literal to string representation for JavaScript + return [estreeBuilder.makeLiteral(node.value, node.location)]; + } } diff --git a/src/transpiler/visitors/visitor.ts b/src/transpiler/visitors/visitor.ts index 154d408..4c87dcd 100644 --- a/src/transpiler/visitors/visitor.ts +++ b/src/transpiler/visitors/visitor.ts @@ -12,6 +12,7 @@ export interface Visitor { visitNumericLiteral(node: Atomic.NumericLiteral): any; visitBooleanLiteral(node: Atomic.BooleanLiteral): any; visitStringLiteral(node: Atomic.StringLiteral): any; + visitComplexLiteral(node: Atomic.ComplexLiteral): any; visitLambda(node: Atomic.Lambda): any; visitIdentifier(node: Atomic.Identifier): any; diff --git a/src/utils/encoder-visitor.ts b/src/utils/encoder-visitor.ts index 4874212..c9b3461 100644 --- a/src/utils/encoder-visitor.ts +++ b/src/utils/encoder-visitor.ts @@ -1,11 +1,115 @@ import * as es from "estree"; -import { decode, encode } from ".."; -const walk = require("acorn-walk"); + +// Import encode/decode functions directly to avoid circular dependency +const b64Encode = (str: string) => btoa(unescape(encodeURIComponent(str))); +const b64Decode = (str: string) => decodeURIComponent(escape(atob(str))); + +const JS_KEYWORDS: string[] = [ + "break", + "case", + "catch", + "class", + "const", + "continue", + "debugger", + "default", + "delete", + "do", + "else", + "eval", + "export", + "extends", + "false", + "finally", + "for", + "function", + "if", + "import", + "in", + "instanceof", + "new", + "return", + "super", + "switch", + "this", + "throw", + "true", + "try", + "typeof", + "var", + "void", + "while", + "with", + "yield", + "enum", + "await", + "implements", + "package", + "protected", + "static", + "interface", + "private", + "public", +]; + +function encode(identifier: string): string { + if (JS_KEYWORDS.includes(identifier) || identifier.startsWith("$scheme_")) { + return ( + "$scheme_" + + b64Encode(identifier).replace( + /([^a-zA-Z0-9_])/g, + (match: string) => `\$${match.charCodeAt(0)}\$` + ) + ); + } else { + return identifier.replace( + /([^a-zA-Z0-9_])/g, + (match: string) => `\$${match.charCodeAt(0)}\$` + ); + } +} + +function decode(identifier: string): string { + if (identifier.startsWith("$scheme_")) { + return b64Decode( + identifier + .slice(8) + .replace(/\$([0-9]+)\$/g, (_, code: string) => + String.fromCharCode(parseInt(code)) + ) + ); + } else { + return identifier.replace(/\$([0-9]+)\$/g, (_, code: string) => + String.fromCharCode(parseInt(code)) + ); + } +} + +// Simple AST walker to replace acorn-walk +function walkFull(ast: es.Node, visitor: (node: es.Node) => void) { + visitor(ast); + + // Walk through all properties that might contain nodes + for (const key in ast) { + const value = (ast as any)[key]; + if (value && typeof value === "object") { + if (Array.isArray(value)) { + value.forEach(item => { + if (item && typeof item === "object" && item.type) { + walkFull(item, visitor); + } + }); + } else if (value.type) { + walkFull(value, visitor); + } + } + } +} // A function to modify all names in the estree program. // Prevents any name collisions with JS keywords and invalid characters. export function estreeEncode(ast: es.Node): es.Node { - walk.full(ast, (node: es.Node) => { + walkFull(ast, (node: es.Node) => { if ((node as any).encoded === true) { return; } @@ -15,14 +119,14 @@ export function estreeEncode(ast: es.Node): es.Node { (node as any).encoded = true; } }); - walk.full(ast, (node: es.Node) => { + walkFull(ast, (node: es.Node) => { (node as any).encoded = undefined; }); return ast; } export function estreeDecode(ast: es.Node): es.Node { - walk.full(ast, (node: es.Node) => { + walkFull(ast, (node: es.Node) => { if ((node as any).decoded === true) { return; } @@ -32,7 +136,7 @@ export function estreeDecode(ast: es.Node): es.Node { (node as any).decoded = true; } }); - walk.full(ast, (node: es.Node) => { + walkFull(ast, (node: es.Node) => { (node as any).decoded = undefined; }); return ast; diff --git a/src/utils/estree-nodes.ts b/src/utils/estree-nodes.ts index d8b96fb..49cff76 100644 --- a/src/utils/estree-nodes.ts +++ b/src/utils/estree-nodes.ts @@ -241,6 +241,7 @@ export function makeImportDeclaration( type: "ImportDeclaration", specifiers, source, + attributes: [], loc: loc ? loc : { @@ -258,6 +259,7 @@ export function makeExportNamedDeclaration( type: "ExportNamedDeclaration", specifiers: [], source: null, + attributes: [], declaration, loc: loc ? loc : declaration.loc, }; diff --git a/test-tracer.html b/test-tracer.html new file mode 100644 index 0000000..1135a33 --- /dev/null +++ b/test-tracer.html @@ -0,0 +1,40 @@ + + + + SCM-Slang Tracer Test + + +

SCM-Slang Tracer Test

+
+ + + + + diff --git a/tsconfig.json b/tsconfig.json index 4cb1fba..04ca92a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -25,7 +25,8 @@ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ /* Modules */ - "module": "commonjs" /* Specify what module code is generated. */, + "module": "esnext" /* Specify what module code is generated. */, + "moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */, // "rootDir": "./", /* Specify the root folder within your source files. */ // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ diff --git a/yarn.lock b/yarn.lock index 96f17e8..a6d08a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,6219 +1,7374 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== - dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" - -"@babel/code-frame@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== - dependencies: - "@babel/helper-validator-identifier" "^7.27.1" - js-tokens "^4.0.0" - picocolors "^1.1.1" - -"@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.0.tgz#9fc6fd58c2a6a15243cd13983224968392070790" - integrity sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw== - -"@babel/core@^7.12.3": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" - integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.9" - "@babel/parser" "^7.23.9" - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/core@^7.23.9", "@babel/core@^7.27.4": - version "7.27.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.4.tgz#cc1fc55d0ce140a1828d1dd2a2eba285adbfb3ce" - integrity sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.27.3" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-module-transforms" "^7.27.3" - "@babel/helpers" "^7.27.4" - "@babel/parser" "^7.27.4" - "@babel/template" "^7.27.2" - "@babel/traverse" "^7.27.4" - "@babel/types" "^7.27.3" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== - dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/generator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.1.tgz#862d4fad858f7208edd487c28b58144036b76230" - integrity sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w== - dependencies: - "@babel/parser" "^7.27.1" - "@babel/types" "^7.27.1" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^3.0.2" - -"@babel/generator@^7.27.3": - version "7.27.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.5.tgz#3eb01866b345ba261b04911020cbe22dd4be8c8c" - integrity sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw== - dependencies: - "@babel/parser" "^7.27.5" - "@babel/types" "^7.27.3" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^3.0.2" - -"@babel/generator@^7.27.5", "@babel/generator@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.0.tgz#9cc2f7bd6eb054d77dc66c2664148a0c5118acd2" - integrity sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg== - dependencies: - "@babel/parser" "^7.28.0" - "@babel/types" "^7.28.0" - "@jridgewell/gen-mapping" "^0.3.12" - "@jridgewell/trace-mapping" "^0.3.28" - jsesc "^3.0.2" - -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-annotate-as-pure@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz#4345d81a9a46a6486e24d069469f13e60445c05d" - integrity sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow== - dependencies: - "@babel/types" "^7.27.1" - -"@babel/helper-annotate-as-pure@^7.27.3": - version "7.27.3" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" - integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== - dependencies: - "@babel/types" "^7.27.3" - -"@babel/helper-compilation-targets@^7.23.6", "@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" - integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== - dependencies: - "@babel/compat-data" "^7.27.2" - "@babel/helper-validator-option" "^7.27.1" - browserslist "^4.24.0" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-create-class-features-plugin@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281" - integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-member-expression-to-functions" "^7.27.1" - "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/traverse" "^7.27.1" - semver "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - regexpu-core "^5.3.1" - semver "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz#05b0882d97ba1d4d03519e4bce615d70afa18c53" - integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - regexpu-core "^6.2.0" - semver "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.6.5": - version "0.6.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz#742ccf1cb003c07b48859fc9fa2c1bbe40e5f753" - integrity sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg== - dependencies: - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - debug "^4.4.1" - lodash.debounce "^4.0.8" - resolve "^1.22.10" - -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-globals@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" - integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-member-expression-to-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" - integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-module-imports@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-module-imports@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" - integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-module-transforms@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz#e1663b8b71d2de948da5c4fb2a20ca4f3ec27a6f" - integrity sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g== - dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/helper-module-transforms@^7.27.3": - version "7.27.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz#db0bbcfba5802f9ef7870705a7ef8788508ede02" - integrity sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg== - dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.27.3" - -"@babel/helper-optimise-call-expression@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" - integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== - dependencies: - "@babel/types" "^7.27.1" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" - integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== - -"@babel/helper-remap-async-to-generator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" - integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-wrap-function" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/helper-replace-supers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" - integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.27.1" - "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" - integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== - -"@babel/helper-string-parser@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" - integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-identifier@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" - integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== - -"@babel/helper-validator-option@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" - integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== - -"@babel/helper-wrap-function@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz#b88285009c31427af318d4fe37651cd62a142409" - integrity sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ== - dependencies: - "@babel/template" "^7.27.1" - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helpers@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" - integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== - dependencies: - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" - -"@babel/helpers@^7.27.4": - version "7.27.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.6.tgz#6456fed15b2cb669d2d1fabe84b66b34991d812c" - integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug== - dependencies: - "@babel/template" "^7.27.2" - "@babel/types" "^7.27.6" - -"@babel/highlight@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" - integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" - integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== - -"@babel/parser@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.1.tgz#c55d5bed74449d1223701f1869b9ee345cc94cc9" - integrity sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ== - dependencies: - "@babel/types" "^7.27.1" - -"@babel/parser@^7.27.2", "@babel/parser@^7.27.4", "@babel/parser@^7.27.5": - version "7.27.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.5.tgz#ed22f871f110aa285a6fd934a0efed621d118826" - integrity sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg== - dependencies: - "@babel/types" "^7.27.3" - -"@babel/parser@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.0.tgz#979829fbab51a29e13901e5a80713dbcb840825e" - integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g== - dependencies: - "@babel/types" "^7.28.0" - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz#61dd8a8e61f7eb568268d1b5f129da3eee364bf9" - integrity sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz#43f70a6d7efd52370eefbdf55ae03d91b293856d" - integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" - integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" - integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/plugin-transform-optional-chaining" "^7.27.1" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz#bb1c25af34d75115ce229a1de7fa44bf8f955670" - integrity sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-import-assertions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" - integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" - integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-import-meta@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c" - integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18" - integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" - integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-async-generator-functions@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz#1276e6c7285ab2cd1eccb0bc7356b7a69ff842c2" - integrity sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-remap-async-to-generator" "^7.27.1" - "@babel/traverse" "^7.28.0" - -"@babel/plugin-transform-async-to-generator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" - integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== - dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-remap-async-to-generator" "^7.27.1" - -"@babel/plugin-transform-block-scoped-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" - integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-block-scoping@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz#e7c50cbacc18034f210b93defa89638666099451" - integrity sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-class-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925" - integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-class-static-block@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz#7e920d5625b25bbccd3061aefbcc05805ed56ce4" - integrity sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-classes@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz#12fa46cffc32a6e084011b650539e880add8a0f8" - integrity sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-globals" "^7.28.0" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" - "@babel/traverse" "^7.28.0" - -"@babel/plugin-transform-computed-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" - integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/template" "^7.27.1" - -"@babel/plugin-transform-destructuring@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz#0f156588f69c596089b7d5b06f5af83d9aa7f97a" - integrity sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.0" - -"@babel/plugin-transform-dotall-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" - integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-duplicate-keys@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" - integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec" - integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-dynamic-import@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz#4c78f35552ac0e06aa1f6e3c573d67695e8af5a4" - integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-explicit-resource-management@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz#45be6211b778dbf4b9d54c4e8a2b42fa72e09a1a" - integrity sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" - -"@babel/plugin-transform-exponentiation-operator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz#fc497b12d8277e559747f5a3ed868dd8064f83e1" - integrity sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-export-namespace-from@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz#71ca69d3471edd6daa711cf4dfc3400415df9c23" - integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-for-of@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" - integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - -"@babel/plugin-transform-function-name@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" - integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== - dependencies: - "@babel/helper-compilation-targets" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/plugin-transform-json-strings@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c" - integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" - integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-logical-assignment-operators@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz#890cb20e0270e0e5bebe3f025b434841c32d5baa" - integrity sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-member-expression-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" - integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-modules-amd@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" - integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== - dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-modules-commonjs@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" - integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== - dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-modules-systemjs@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz#00e05b61863070d0f3292a00126c16c0e024c4ed" - integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== - dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/plugin-transform-modules-umd@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" - integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== - dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" - integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-new-target@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" - integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d" - integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-numeric-separator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6" - integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-object-rest-spread@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz#d23021857ffd7cd809f54d624299b8086402ed8d" - integrity sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA== - dependencies: - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" - "@babel/plugin-transform-parameters" "^7.27.7" - "@babel/traverse" "^7.28.0" - -"@babel/plugin-transform-object-super@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" - integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" - -"@babel/plugin-transform-optional-catch-binding@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c" - integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-optional-chaining@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz#874ce3c4f06b7780592e946026eb76a32830454f" - integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - -"@babel/plugin-transform-parameters@^7.27.7": - version "7.27.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz#1fd2febb7c74e7d21cf3b05f7aebc907940af53a" - integrity sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-private-methods@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af" - integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-private-property-in-object@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11" - integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-property-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" - integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-regenerator@^7.28.0": - version "7.28.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.1.tgz#bde80603442ff4bb4e910bc8b35485295d556ab1" - integrity sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-regexp-modifiers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09" - integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-reserved-words@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" - integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-shorthand-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" - integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-spread@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" - integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - -"@babel/plugin-transform-sticky-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" - integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-template-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" - integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-typeof-symbol@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" - integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-unicode-escapes@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" - integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-unicode-property-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956" - integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-unicode-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" - integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-unicode-sets-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1" - integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/preset-env@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.0.tgz#d23a6bc17b43227d11db77081a0779c706b5569c" - integrity sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg== - dependencies: - "@babel/compat-data" "^7.28.0" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.27.1" - "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.27.1" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions" "^7.27.1" - "@babel/plugin-syntax-import-attributes" "^7.27.1" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.27.1" - "@babel/plugin-transform-async-generator-functions" "^7.28.0" - "@babel/plugin-transform-async-to-generator" "^7.27.1" - "@babel/plugin-transform-block-scoped-functions" "^7.27.1" - "@babel/plugin-transform-block-scoping" "^7.28.0" - "@babel/plugin-transform-class-properties" "^7.27.1" - "@babel/plugin-transform-class-static-block" "^7.27.1" - "@babel/plugin-transform-classes" "^7.28.0" - "@babel/plugin-transform-computed-properties" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" - "@babel/plugin-transform-dotall-regex" "^7.27.1" - "@babel/plugin-transform-duplicate-keys" "^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" - "@babel/plugin-transform-dynamic-import" "^7.27.1" - "@babel/plugin-transform-explicit-resource-management" "^7.28.0" - "@babel/plugin-transform-exponentiation-operator" "^7.27.1" - "@babel/plugin-transform-export-namespace-from" "^7.27.1" - "@babel/plugin-transform-for-of" "^7.27.1" - "@babel/plugin-transform-function-name" "^7.27.1" - "@babel/plugin-transform-json-strings" "^7.27.1" - "@babel/plugin-transform-literals" "^7.27.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.27.1" - "@babel/plugin-transform-member-expression-literals" "^7.27.1" - "@babel/plugin-transform-modules-amd" "^7.27.1" - "@babel/plugin-transform-modules-commonjs" "^7.27.1" - "@babel/plugin-transform-modules-systemjs" "^7.27.1" - "@babel/plugin-transform-modules-umd" "^7.27.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" - "@babel/plugin-transform-new-target" "^7.27.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" - "@babel/plugin-transform-numeric-separator" "^7.27.1" - "@babel/plugin-transform-object-rest-spread" "^7.28.0" - "@babel/plugin-transform-object-super" "^7.27.1" - "@babel/plugin-transform-optional-catch-binding" "^7.27.1" - "@babel/plugin-transform-optional-chaining" "^7.27.1" - "@babel/plugin-transform-parameters" "^7.27.7" - "@babel/plugin-transform-private-methods" "^7.27.1" - "@babel/plugin-transform-private-property-in-object" "^7.27.1" - "@babel/plugin-transform-property-literals" "^7.27.1" - "@babel/plugin-transform-regenerator" "^7.28.0" - "@babel/plugin-transform-regexp-modifiers" "^7.27.1" - "@babel/plugin-transform-reserved-words" "^7.27.1" - "@babel/plugin-transform-shorthand-properties" "^7.27.1" - "@babel/plugin-transform-spread" "^7.27.1" - "@babel/plugin-transform-sticky-regex" "^7.27.1" - "@babel/plugin-transform-template-literals" "^7.27.1" - "@babel/plugin-transform-typeof-symbol" "^7.27.1" - "@babel/plugin-transform-unicode-escapes" "^7.27.1" - "@babel/plugin-transform-unicode-property-regex" "^7.27.1" - "@babel/plugin-transform-unicode-regex" "^7.27.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.27.1" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.14" - babel-plugin-polyfill-corejs3 "^0.13.0" - babel-plugin-polyfill-regenerator "^0.6.5" - core-js-compat "^3.43.0" - semver "^6.3.1" - -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/template@^7.22.15", "@babel/template@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" - integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" - -"@babel/template@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.1.tgz#b9e4f55c17a92312774dfbdde1b3c01c547bbae2" - integrity sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/parser" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/template@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" - integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/parser" "^7.27.2" - "@babel/types" "^7.27.1" - -"@babel/traverse@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" - integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/traverse@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.1.tgz#4db772902b133bbddd1c4f7a7ee47761c1b9f291" - integrity sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.27.1" - "@babel/parser" "^7.27.1" - "@babel/template" "^7.27.1" - "@babel/types" "^7.27.1" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/traverse@^7.27.3", "@babel/traverse@^7.27.4": - version "7.27.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.4.tgz#b0045ac7023c8472c3d35effd7cc9ebd638da6ea" - integrity sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.27.3" - "@babel/parser" "^7.27.4" - "@babel/template" "^7.27.2" - "@babel/types" "^7.27.3" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/traverse@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.0.tgz#518aa113359b062042379e333db18380b537e34b" - integrity sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.0" - "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.28.0" - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.0" - debug "^4.3.1" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.4.4": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" - integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== - dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@babel/types@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.1.tgz#9defc53c16fc899e46941fc6901a9eea1c9d8560" - integrity sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q== - dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - -"@babel/types@^7.27.3", "@babel/types@^7.27.6": - version "7.27.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.6.tgz#a434ca7add514d4e646c80f7375c0aa2befc5535" - integrity sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q== - dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - -"@babel/types@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.0.tgz#2fd0159a6dc7353933920c43136335a9b264d950" - integrity sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg== - dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@emnapi/core@^1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.3.tgz#9ac52d2d5aea958f67e52c40a065f51de59b77d6" - integrity sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g== - dependencies: - "@emnapi/wasi-threads" "1.0.2" - tslib "^2.4.0" - -"@emnapi/runtime@^1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d" - integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ== - dependencies: - tslib "^2.4.0" - -"@emnapi/wasi-threads@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz#977f44f844eac7d6c138a415a123818c655f874c" - integrity sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA== - dependencies: - tslib "^2.4.0" - -"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.0", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" - integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== - -"@humanwhocodes/config-array@^0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" - integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== - dependencies: - "@humanwhocodes/object-schema" "^2.0.3" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@30.0.4": - version "30.0.4" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-30.0.4.tgz#943a62c3c8e3f495290f2e2c3749b7b4516c3e93" - integrity sha512-tMLCDvBJBwPqMm4OAiuKm2uF5y5Qe26KgcMn+nrDSWpEW+eeFmqA0iO4zJfL16GP7gE3bUUQ3hIuUJ22AqVRnw== - dependencies: - "@jest/types" "30.0.1" - "@types/node" "*" - chalk "^4.1.2" - jest-message-util "30.0.2" - jest-util "30.0.2" - slash "^3.0.0" - -"@jest/core@30.0.4": - version "30.0.4" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-30.0.4.tgz#a8fc7fcdc8a650f50f33dd585d774a1f683e9e59" - integrity sha512-MWScSO9GuU5/HoWjpXAOBs6F/iobvK1XlioelgOM9St7S0Z5WTI9kjCQLPeo4eQRRYusyLW25/J7J5lbFkrYXw== - dependencies: - "@jest/console" "30.0.4" - "@jest/pattern" "30.0.1" - "@jest/reporters" "30.0.4" - "@jest/test-result" "30.0.4" - "@jest/transform" "30.0.4" - "@jest/types" "30.0.1" - "@types/node" "*" - ansi-escapes "^4.3.2" - chalk "^4.1.2" - ci-info "^4.2.0" - exit-x "^0.2.2" - graceful-fs "^4.2.11" - jest-changed-files "30.0.2" - jest-config "30.0.4" - jest-haste-map "30.0.2" - jest-message-util "30.0.2" - jest-regex-util "30.0.1" - jest-resolve "30.0.2" - jest-resolve-dependencies "30.0.4" - jest-runner "30.0.4" - jest-runtime "30.0.4" - jest-snapshot "30.0.4" - jest-util "30.0.2" - jest-validate "30.0.2" - jest-watcher "30.0.4" - micromatch "^4.0.8" - pretty-format "30.0.2" - slash "^3.0.0" - -"@jest/diff-sequences@30.0.1": - version "30.0.1" - resolved "https://registry.yarnpkg.com/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz#0ededeae4d071f5c8ffe3678d15f3a1be09156be" - integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== - -"@jest/environment@30.0.4": - version "30.0.4" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-30.0.4.tgz#fb0deafd8a3cbb06cd9ce0b52c6bcaf342778428" - integrity sha512-5NT+sr7ZOb8wW7C4r7wOKnRQ8zmRWQT2gW4j73IXAKp5/PX1Z8MCStBLQDYfIG3n1Sw0NRfYGdp0iIPVooBAFQ== - dependencies: - "@jest/fake-timers" "30.0.4" - "@jest/types" "30.0.1" - "@types/node" "*" - jest-mock "30.0.2" - -"@jest/expect-utils@30.0.4": - version "30.0.4" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.0.4.tgz#0512fb2588c7fc463ce26fb38c0d47814266d965" - integrity sha512-EgXecHDNfANeqOkcak0DxsoVI4qkDUsR7n/Lr2vtmTBjwLPBnnPOF71S11Q8IObWzxm2QgQoY6f9hzrRD3gHRA== - dependencies: - "@jest/get-type" "30.0.1" - -"@jest/expect@30.0.4": - version "30.0.4" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-30.0.4.tgz#de25549873ccc0302faeef96044acae464f50997" - integrity sha512-Z/DL7t67LBHSX4UzDyeYKqOxE/n7lbrrgEwWM3dGiH5Dgn35nk+YtgzKudmfIrBI8DRRrKYY5BCo3317HZV1Fw== - dependencies: - expect "30.0.4" - jest-snapshot "30.0.4" - -"@jest/fake-timers@30.0.4": - version "30.0.4" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-30.0.4.tgz#fdd4552541a99826e488fc01afdb7626d6ad46cd" - integrity sha512-qZ7nxOcL5+gwBO6LErvwVy5k06VsX/deqo2XnVUSTV0TNC9lrg8FC3dARbi+5lmrr5VyX5drragK+xLcOjvjYw== - dependencies: - "@jest/types" "30.0.1" - "@sinonjs/fake-timers" "^13.0.0" - "@types/node" "*" - jest-message-util "30.0.2" - jest-mock "30.0.2" - jest-util "30.0.2" - -"@jest/get-type@30.0.1": - version "30.0.1" - resolved "https://registry.yarnpkg.com/@jest/get-type/-/get-type-30.0.1.tgz#0d32f1bbfba511948ad247ab01b9007724fc9f52" - integrity sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw== - -"@jest/globals@30.0.4": - version "30.0.4" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-30.0.4.tgz#8650aa24c587fae830915b5c3518e82bd2ac5e60" - integrity sha512-avyZuxEHF2EUhFF6NEWVdxkRRV6iXXcIES66DLhuLlU7lXhtFG/ySq/a8SRZmEJSsLkNAFX6z6mm8KWyXe9OEA== - dependencies: - "@jest/environment" "30.0.4" - "@jest/expect" "30.0.4" - "@jest/types" "30.0.1" - jest-mock "30.0.2" - -"@jest/pattern@30.0.1": - version "30.0.1" - resolved "https://registry.yarnpkg.com/@jest/pattern/-/pattern-30.0.1.tgz#d5304147f49a052900b4b853dedb111d080e199f" - integrity sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA== - dependencies: - "@types/node" "*" - jest-regex-util "30.0.1" - -"@jest/reporters@30.0.4": - version "30.0.4" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-30.0.4.tgz#8ff5939713f643f788b48d3edcf15f2c06a00a63" - integrity sha512-6ycNmP0JSJEEys1FbIzHtjl9BP0tOZ/KN6iMeAKrdvGmUsa1qfRdlQRUDKJ4P84hJ3xHw1yTqJt4fvPNHhyE+g== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "30.0.4" - "@jest/test-result" "30.0.4" - "@jest/transform" "30.0.4" - "@jest/types" "30.0.1" - "@jridgewell/trace-mapping" "^0.3.25" - "@types/node" "*" - chalk "^4.1.2" - collect-v8-coverage "^1.0.2" - exit-x "^0.2.2" - glob "^10.3.10" - graceful-fs "^4.2.11" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^5.0.0" - istanbul-reports "^3.1.3" - jest-message-util "30.0.2" - jest-util "30.0.2" - jest-worker "30.0.2" - slash "^3.0.0" - string-length "^4.0.2" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@30.0.1": - version "30.0.1" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.0.1.tgz#27c00d707d480ece0c19126af97081a1af3bc46e" - integrity sha512-+g/1TKjFuGrf1Hh0QPCv0gISwBxJ+MQSNXmG9zjHy7BmFhtoJ9fdNhWJp3qUKRi93AOZHXtdxZgJ1vAtz6z65w== - dependencies: - "@sinclair/typebox" "^0.34.0" - -"@jest/schemas@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.0.5.tgz#7bdf69fc5a368a5abdb49fd91036c55225846473" - integrity sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA== - dependencies: - "@sinclair/typebox" "^0.34.0" - -"@jest/snapshot-utils@30.0.4": - version "30.0.4" - resolved "https://registry.yarnpkg.com/@jest/snapshot-utils/-/snapshot-utils-30.0.4.tgz#cd5b3d21e19255106b12350d55c1b9bf613fbcfa" - integrity sha512-BEpX8M/Y5lG7MI3fmiO+xCnacOrVsnbqVrcDZIT8aSGkKV1w2WwvRQxSWw5SIS8ozg7+h8tSj5EO1Riqqxcdag== - dependencies: - "@jest/types" "30.0.1" - chalk "^4.1.2" - graceful-fs "^4.2.11" - natural-compare "^1.4.0" - -"@jest/source-map@30.0.1": - version "30.0.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-30.0.1.tgz#305ebec50468f13e658b3d5c26f85107a5620aaa" - integrity sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg== - dependencies: - "@jridgewell/trace-mapping" "^0.3.25" - callsites "^3.1.0" - graceful-fs "^4.2.11" - -"@jest/test-result@30.0.4": - version "30.0.4" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-30.0.4.tgz#0b1c4e8256e3f9ebb9452ede22d4b04b31ea54fe" - integrity sha512-Mfpv8kjyKTHqsuu9YugB6z1gcdB3TSSOaKlehtVaiNlClMkEHY+5ZqCY2CrEE3ntpBMlstX/ShDAf84HKWsyIw== - dependencies: - "@jest/console" "30.0.4" - "@jest/types" "30.0.1" - "@types/istanbul-lib-coverage" "^2.0.6" - collect-v8-coverage "^1.0.2" - -"@jest/test-sequencer@30.0.4": - version "30.0.4" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-30.0.4.tgz#4ef749c994beca340e274e67a4c90f0154482e5f" - integrity sha512-bj6ePmqi4uxAE8EHE0Slmk5uBYd9Vd/PcVt06CsBxzH4bbA8nGsI1YbXl/NH+eii4XRtyrRx+Cikub0x8H4vDg== - dependencies: - "@jest/test-result" "30.0.4" - graceful-fs "^4.2.11" - jest-haste-map "30.0.2" - slash "^3.0.0" - -"@jest/transform@30.0.4": - version "30.0.4" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-30.0.4.tgz#a06f8c6fc2a04985241b483096f821bafb99cc93" - integrity sha512-atvy4hRph/UxdCIBp+UB2jhEA/jJiUeGZ7QPgBi9jUUKNgi3WEoMXGNG7zbbELG2+88PMabUNCDchmqgJy3ELg== - dependencies: - "@babel/core" "^7.27.4" - "@jest/types" "30.0.1" - "@jridgewell/trace-mapping" "^0.3.25" - babel-plugin-istanbul "^7.0.0" - chalk "^4.1.2" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.11" - jest-haste-map "30.0.2" - jest-regex-util "30.0.1" - jest-util "30.0.2" - micromatch "^4.0.8" - pirates "^4.0.7" - slash "^3.0.0" - write-file-atomic "^5.0.1" - -"@jest/transform@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-30.0.5.tgz#f8ca2e9f7466b77b406807d3bef1f6790dd384e4" - integrity sha512-Vk8amLQCmuZyy6GbBht1Jfo9RSdBtg7Lks+B0PecnjI8J+PCLQPGh7uI8Q/2wwpW2gLdiAfiHNsmekKlywULqg== - dependencies: - "@babel/core" "^7.27.4" - "@jest/types" "30.0.5" - "@jridgewell/trace-mapping" "^0.3.25" - babel-plugin-istanbul "^7.0.0" - chalk "^4.1.2" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.11" - jest-haste-map "30.0.5" - jest-regex-util "30.0.1" - jest-util "30.0.5" - micromatch "^4.0.8" - pirates "^4.0.7" - slash "^3.0.0" - write-file-atomic "^5.0.1" - -"@jest/types@30.0.1": - version "30.0.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.0.1.tgz#a46df6a99a416fa685740ac4264b9f9cd7da1598" - integrity sha512-HGwoYRVF0QSKJu1ZQX0o5ZrUrrhj0aOOFA8hXrumD7SIzjouevhawbTjmXdwOmURdGluU9DM/XvGm3NyFoiQjw== - dependencies: - "@jest/pattern" "30.0.1" - "@jest/schemas" "30.0.1" - "@types/istanbul-lib-coverage" "^2.0.6" - "@types/istanbul-reports" "^3.0.4" - "@types/node" "*" - "@types/yargs" "^17.0.33" - chalk "^4.1.2" - -"@jest/types@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.0.5.tgz#29a33a4c036e3904f1cfd94f6fe77f89d2e1cc05" - integrity sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ== - dependencies: - "@jest/pattern" "30.0.1" - "@jest/schemas" "30.0.5" - "@types/istanbul-lib-coverage" "^2.0.6" - "@types/istanbul-reports" "^3.0.4" - "@types/node" "*" - "@types/yargs" "^17.0.33" - chalk "^4.1.2" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/gen-mapping@^0.3.12": - version "0.3.12" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz#2234ce26c62889f03db3d7fea43c1932ab3e927b" - integrity sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg== - dependencies: - "@jridgewell/sourcemap-codec" "^1.5.0" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/sourcemap-codec@^1.5.0": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz#7358043433b2e5da569aa02cbc4c121da3af27d7" - integrity sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw== - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.22" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" - integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.28": - version "0.3.29" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz#a58d31eaadaf92c6695680b2e1d464a9b8fbf7fc" - integrity sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@napi-rs/wasm-runtime@^0.2.11": - version "0.2.11" - resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz#192c1610e1625048089ab4e35bc0649ce478500e" - integrity sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA== - dependencies: - "@emnapi/core" "^1.4.3" - "@emnapi/runtime" "^1.4.3" - "@tybys/wasm-util" "^0.9.0" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@pkgr/core@^0.2.4": - version "0.2.7" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.7.tgz#eb5014dfd0b03e7f3ba2eeeff506eed89b028058" - integrity sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg== - -"@rtsao/scc@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" - integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== - -"@sinclair/typebox@^0.34.0": - version "0.34.36" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.36.tgz#cbf53a007afa34e5f442b75888f9719f2ab463bb" - integrity sha512-JFHFhF6MqqRE49JDAGX/EPlHwxIukrKMhNwlMoB/wIJBkvu3+ciO335yDYPP3soI01FkhVXWnyNPKEl+EsC4Zw== - -"@sinonjs/commons@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^13.0.0": - version "13.0.5" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz#36b9dbc21ad5546486ea9173d6bea063eb1717d5" - integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== - dependencies: - "@sinonjs/commons" "^3.0.1" - -"@tybys/wasm-util@^0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" - integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== - dependencies: - tslib "^2.4.0" - -"@types/babel__core@^7.20.5": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" - integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== - dependencies: - "@babel/types" "^7.20.7" - -"@types/estree@^1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.1", "@types/istanbul-lib-coverage@^2.0.6": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-30.0.0.tgz#5e85ae568006712e4ad66f25433e9bdac8801f1d" - integrity sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA== - dependencies: - expect "^30.0.0" - pretty-format "^30.0.0" - -"@types/json-schema@^7.0.12": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/node@*", "@types/node@^22.15.30": - version "22.15.30" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.30.tgz#3a20431783e28dd0b0326f84ab386a2ec81d921d" - integrity sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA== - dependencies: - undici-types "~6.21.0" - -"@types/semver@^7.5.0": - version "7.5.6" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" - integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== - -"@types/stack-utils@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.33": - version "17.0.33" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" - integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^6.4.0": - version "6.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.20.0.tgz#9cf31546d2d5e884602626d89b0e0d2168ac25ed" - integrity sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.20.0" - "@typescript-eslint/type-utils" "6.20.0" - "@typescript-eslint/utils" "6.20.0" - "@typescript-eslint/visitor-keys" "6.20.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@^6.4.0": - version "6.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.20.0.tgz#17e314177304bdf498527e3c4b112e41287b7416" - integrity sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w== - dependencies: - "@typescript-eslint/scope-manager" "6.20.0" - "@typescript-eslint/types" "6.20.0" - "@typescript-eslint/typescript-estree" "6.20.0" - "@typescript-eslint/visitor-keys" "6.20.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@6.20.0": - version "6.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz#8a926e60f6c47feb5bab878246dc2ae465730151" - integrity sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA== - dependencies: - "@typescript-eslint/types" "6.20.0" - "@typescript-eslint/visitor-keys" "6.20.0" - -"@typescript-eslint/type-utils@6.20.0": - version "6.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.20.0.tgz#d395475cd0f3610dd80c7d8716fa0db767da3831" - integrity sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g== - dependencies: - "@typescript-eslint/typescript-estree" "6.20.0" - "@typescript-eslint/utils" "6.20.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/types@6.20.0": - version "6.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.20.0.tgz#5ccd74c29011ae7714ae6973e4ec0c634708b448" - integrity sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ== - -"@typescript-eslint/typescript-estree@6.20.0": - version "6.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.20.0.tgz#5b2d0975949e6bdd8d45ee1471461ef5fadc5542" - integrity sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g== - dependencies: - "@typescript-eslint/types" "6.20.0" - "@typescript-eslint/visitor-keys" "6.20.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@6.20.0": - version "6.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.20.0.tgz#0e52afcfaa51af5656490ba4b7437cc3aa28633d" - integrity sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.20.0" - "@typescript-eslint/types" "6.20.0" - "@typescript-eslint/typescript-estree" "6.20.0" - semver "^7.5.4" - -"@typescript-eslint/visitor-keys@6.20.0": - version "6.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz#f7ada27f2803de89df0edd9fd7be22c05ce6a498" - integrity sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw== - dependencies: - "@typescript-eslint/types" "6.20.0" - eslint-visitor-keys "^3.4.1" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -"@ungap/structured-clone@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" - integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== - -"@unrs/resolver-binding-android-arm-eabi@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.10.1.tgz#e4000d463b73f3639b34501cfdf47d921d710c80" - integrity sha512-zohDKXT1Ok0yhbVGff4YAg9HUs5ietG5GpvJBPFSApZnGe7uf2cd26DRhKZbn0Be6xHUZrSzP+RAgMmzyc71EA== - -"@unrs/resolver-binding-android-arm64@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.10.1.tgz#11ac32abadfaa5b8f67cc1db66bf1a430dd2092c" - integrity sha512-tAN6k5UrTd4nicpA7s2PbjR/jagpDzAmvXFjbpTazUe5FRsFxVcBlS1F5Lzp5jtWU6bdiqRhSvd4X8rdpCffeA== - -"@unrs/resolver-binding-darwin-arm64@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.10.1.tgz#3760d9776eb83b1eaf3bd5f41e5df28ca323baa0" - integrity sha512-+FCsag8WkauI4dQ50XumCXdfvDCZEpMUnvZDsKMxfOisnEklpDFXc6ThY0WqybBYZbiwR5tWcFaZmI0G6b4vrg== - -"@unrs/resolver-binding-darwin-x64@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.10.1.tgz#4a5d259ea73f681599e11fbac25ca5b9b404cd21" - integrity sha512-qYKGGm5wk71ONcXTMZ0+J11qQeOAPz3nw6VtqrBUUELRyXFyvK8cHhHsLBFR4GHnilc2pgY1HTB2TvdW9wO26Q== - -"@unrs/resolver-binding-freebsd-x64@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.10.1.tgz#e6c5e055215224d263c9c872fd42c1a62557cb11" - integrity sha512-hOHMAhbvIQ63gkpgeNsXcWPSyvXH7ZEyeg254hY0Lp/hX8NdW+FsUWq73g9946Pc/BrcVI/I3C1cmZ4RCX9bNw== - -"@unrs/resolver-binding-linux-arm-gnueabihf@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.10.1.tgz#87a5fda969fb968587892dd4f0e7520ce7b9e5fb" - integrity sha512-6ds7+zzHJgTDmpe0gmFcOTvSUhG5oZukkt+cCsSb3k4Uiz2yEQB4iCRITX2hBwSW+p8gAieAfecITjgqCkswXw== - -"@unrs/resolver-binding-linux-arm-musleabihf@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.10.1.tgz#efbf67bd8a9d46cd148490376e07bd4b26623d3e" - integrity sha512-P7A0G2/jW00diNJyFeq4W9/nxovD62Ay8CMP4UK9OymC7qO7rG1a8Upad68/bdfpIOn7KSp7Aj/6lEW3yyznAA== - -"@unrs/resolver-binding-linux-arm64-gnu@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.10.1.tgz#0626170323584cafba535cb644a1985066d9fb56" - integrity sha512-Cg6xzdkrpltcTPO4At+A79zkC7gPDQIgosJmVV8M104ImB6KZi1MrNXgDYIAfkhUYjPzjNooEDFRAwwPadS7ZA== - -"@unrs/resolver-binding-linux-arm64-musl@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.10.1.tgz#08baaa2ce127d17edf7c9f77eaac8324b4277aa1" - integrity sha512-aNeg99bVkXa4lt+oZbjNRPC8ZpjJTKxijg/wILrJdzNyAymO2UC/HUK1UfDjt6T7U5p/mK24T3CYOi3/+YEQSA== - -"@unrs/resolver-binding-linux-ppc64-gnu@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.10.1.tgz#7c70221f400d7f924ee9cc97a5a980af92bea5ff" - integrity sha512-ylz5ojeXrkPrtnzVhpCO+YegG63/aKhkoTlY8PfMfBfLaUG8v6m6iqrL7sBUKdVBgOB4kSTUPt9efQdA/Y3Z/w== - -"@unrs/resolver-binding-linux-riscv64-gnu@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.10.1.tgz#77c655f92f44424051b69c48f5c766cd20fc20e3" - integrity sha512-xcWyhmJfXXOxK7lvE4+rLwBq+on83svlc0AIypfe6x4sMJR+S4oD7n9OynaQShfj2SufPw2KJAotnsNb+4nN2g== - -"@unrs/resolver-binding-linux-riscv64-musl@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.10.1.tgz#a58a9d09697622208cc9b63977ac47e92e3a7f6d" - integrity sha512-mW9JZAdOCyorgi1eLJr4gX7xS67WNG9XNPYj5P8VuttK72XNsmdw9yhOO4tDANMgiLXFiSFaiL1gEpoNtRPw/A== - -"@unrs/resolver-binding-linux-s390x-gnu@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.10.1.tgz#fee7203459be26d04395417c68dfc0bd75ab80c8" - integrity sha512-NZGKhBy6xkJ0k09cWNZz4DnhBcGlhDd3W+j7EYoNvf5TSwj2K6kbmfqTWITEgkvjsMUjm1wsrc4IJaH6VtjyHQ== - -"@unrs/resolver-binding-linux-x64-gnu@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.10.1.tgz#bafc702d0221955aa0b2d50be4df7f51221daa1b" - integrity sha512-VsjgckJ0gNMw7p0d8In6uPYr+s0p16yrT2rvG4v2jUpEMYkpnfnCiALa9SWshbvlGjKQ98Q2x19agm3iFk8w8Q== - -"@unrs/resolver-binding-linux-x64-musl@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.10.1.tgz#f528215c0a08c857bc9bdc20e90ec8969097d092" - integrity sha512-idMnajMeejnaFi0Mx9UTLSYFDAOTfAEP7VjXNgxKApso3Eu2Njs0p2V95nNIyFi4oQVGFmIuCkoznAXtF/Zbmw== - -"@unrs/resolver-binding-wasm32-wasi@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.10.1.tgz#cfe1b084998c7d0391af723b9d636ca7e0c5b234" - integrity sha512-7jyhjIRNFjzlr8x5pth6Oi9hv3a7ubcVYm2GBFinkBQKcFhw4nIs5BtauSNtDW1dPIGrxF0ciynCZqzxMrYMsg== - dependencies: - "@napi-rs/wasm-runtime" "^0.2.11" - -"@unrs/resolver-binding-win32-arm64-msvc@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.10.1.tgz#ffa11445ef1f55763febe29502a7fb4765d36728" - integrity sha512-TY79+N+Gkoo7E99K+zmsKNeiuNJYlclZJtKqsHSls8We2iGhgxtletVsiBYie93MSTDRDMI8pkBZJlIJSZPrdA== - -"@unrs/resolver-binding-win32-ia32-msvc@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.10.1.tgz#acee18c2f812ed1e77b3f25e02fd7cd69b3122f6" - integrity sha512-BAJN5PEPlEV+1m8+PCtFoKm3LQ1P57B4Z+0+efU0NzmCaGk7pUaOxuPgl+m3eufVeeNBKiPDltG0sSB9qEfCxw== - -"@unrs/resolver-binding-win32-x64-msvc@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.10.1.tgz#a8671852030a37d886d4faf81f06de1885df3271" - integrity sha512-2v3erKKmmCyIVvvhI2nF15qEbdBpISTq44m9pyd5gfIJB1PN94oePTLWEd82XUbIbvKhv76xTSeUQSCOGesLeg== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.3.4: - version "8.3.4" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== - dependencies: - acorn "^8.11.0" - -acorn@^8.11.0, acorn@^8.15.0, acorn@^8.9.0: - version "8.15.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" - integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" - integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -anymatch@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== - dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" - -array-buffer-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" - integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== - dependencies: - call-bind "^1.0.5" - is-array-buffer "^3.0.4" - -array-buffer-byte-length@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b" - integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== - dependencies: - call-bound "^1.0.3" - is-array-buffer "^3.0.5" - -array-includes@^3.1.9: - version "3.1.9" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a" - integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.4" - define-properties "^1.2.1" - es-abstract "^1.24.0" - es-object-atoms "^1.1.1" - get-intrinsic "^1.3.0" - is-string "^1.1.1" - math-intrinsics "^1.1.0" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.findlastindex@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564" - integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.4" - define-properties "^1.2.1" - es-abstract "^1.23.9" - es-errors "^1.3.0" - es-object-atoms "^1.1.1" - es-shim-unscopables "^1.1.0" - -array.prototype.flat@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5" - integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== - dependencies: - call-bind "^1.0.8" - define-properties "^1.2.1" - es-abstract "^1.23.5" - es-shim-unscopables "^1.0.2" - -array.prototype.flatmap@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#712cc792ae70370ae40586264629e33aab5dd38b" - integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== - dependencies: - call-bind "^1.0.8" - define-properties "^1.2.1" - es-abstract "^1.23.5" - es-shim-unscopables "^1.0.2" - -arraybuffer.prototype.slice@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" - integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-array-buffer "^3.0.2" - is-shared-array-buffer "^1.0.2" - -arraybuffer.prototype.slice@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" - integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== - dependencies: - array-buffer-byte-length "^1.0.1" - call-bind "^1.0.5" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.2.1" - get-intrinsic "^1.2.3" - is-array-buffer "^3.0.4" - is-shared-array-buffer "^1.0.2" - -arraybuffer.prototype.slice@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c" - integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== - dependencies: - array-buffer-byte-length "^1.0.1" - call-bind "^1.0.8" - define-properties "^1.2.1" - es-abstract "^1.23.5" - es-errors "^1.3.0" - get-intrinsic "^1.2.6" - is-array-buffer "^3.0.4" - -async-function@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-function/-/async-function-1.0.0.tgz#509c9fca60eaf85034c6829838188e4e4c8ffb2b" - integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA== - -async@^3.2.3: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - -available-typed-arrays@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz#ac812d8ce5a6b976d738e1c45f08d0b00bc7d725" - integrity sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg== - -available-typed-arrays@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" - integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== - dependencies: - possible-typed-array-names "^1.0.0" - -babel-jest@30.0.4: - version "30.0.4" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-30.0.4.tgz#63945c1b27227312fc687689073124dba5b28282" - integrity sha512-UjG2j7sAOqsp2Xua1mS/e+ekddkSu3wpf4nZUSvXNHuVWdaOUXQ77+uyjJLDE9i0atm5x4kds8K9yb5lRsRtcA== - dependencies: - "@jest/transform" "30.0.4" - "@types/babel__core" "^7.20.5" - babel-plugin-istanbul "^7.0.0" - babel-preset-jest "30.0.1" - chalk "^4.1.2" - graceful-fs "^4.2.11" - slash "^3.0.0" - -babel-jest@^30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-30.0.5.tgz#7cc7dd03d0d613125d458521f635b8c2361e89cc" - integrity sha512-mRijnKimhGDMsizTvBTWotwNpzrkHr+VvZUQBof2AufXKB8NXrL1W69TG20EvOz7aevx6FTJIaBuBkYxS8zolg== - dependencies: - "@jest/transform" "30.0.5" - "@types/babel__core" "^7.20.5" - babel-plugin-istanbul "^7.0.0" - babel-preset-jest "30.0.1" - chalk "^4.1.2" - graceful-fs "^4.2.11" - slash "^3.0.0" - -babel-plugin-istanbul@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.0.tgz#629a178f63b83dc9ecee46fd20266283b1f11280" - integrity sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.3" - istanbul-lib-instrument "^6.0.2" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@30.0.1: - version "30.0.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.0.1.tgz#f271b2066d2c1fb26a863adb8e13f85b06247125" - integrity sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ== - dependencies: - "@babel/template" "^7.27.2" - "@babel/types" "^7.27.3" - "@types/babel__core" "^7.20.5" - -babel-plugin-polyfill-corejs2@^0.4.14: - version "0.4.14" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz#8101b82b769c568835611542488d463395c2ef8f" - integrity sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg== - dependencies: - "@babel/compat-data" "^7.27.7" - "@babel/helper-define-polyfill-provider" "^0.6.5" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz#bb7f6aeef7addff17f7602a08a6d19a128c30164" - integrity sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.5" - core-js-compat "^3.43.0" - -babel-plugin-polyfill-regenerator@^0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz#32752e38ab6f6767b92650347bf26a31b16ae8c5" - integrity sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.5" - -babel-preset-current-node-syntax@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz#9a929eafece419612ef4ae4f60b1862ebad8ef30" - integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-import-attributes" "^7.24.7" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - -babel-preset-jest@30.0.1: - version "30.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-30.0.1.tgz#7d28db9531bce264e846c8483d54236244b8ae88" - integrity sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw== - dependencies: - babel-plugin-jest-hoist "30.0.1" - babel-preset-current-node-syntax "^1.1.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -browserslist@^4.24.0: - version "4.24.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4" - integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A== - dependencies: - caniuse-lite "^1.0.30001663" - electron-to-chromium "^1.5.28" - node-releases "^2.0.18" - update-browserslist-db "^1.1.0" - -browserslist@^4.25.1: - version "4.25.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111" - integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw== - dependencies: - caniuse-lite "^1.0.30001726" - electron-to-chromium "^1.5.173" - node-releases "^2.0.19" - update-browserslist-db "^1.1.3" - -bs-logger@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -builtin-modules@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -builtins@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" - integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== - dependencies: - semver "^7.0.0" - -call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" - integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" - integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== - dependencies: - function-bind "^1.1.2" - get-intrinsic "^1.2.1" - set-function-length "^1.1.1" - -call-bind@^1.0.6, call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" - -call-bind@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" - integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== - dependencies: - call-bind-apply-helpers "^1.0.0" - es-define-property "^1.0.0" - get-intrinsic "^1.2.4" - set-function-length "^1.2.2" - -call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" - integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== - dependencies: - call-bind-apply-helpers "^1.0.2" - get-intrinsic "^1.3.0" - -callsites@^3.0.0, callsites@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001663: - version "1.0.30001668" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001668.tgz#98e214455329f54bf7a4d70b49c9794f0fbedbed" - integrity sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw== - -caniuse-lite@^1.0.30001726: - version "1.0.30001727" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz#22e9706422ad37aa50556af8c10e40e2d93a8b85" - integrity sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q== - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -ci-info@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.2.0.tgz#cbd21386152ebfe1d56f280a3b5feccbd96764c7" - integrity sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg== - -cjs-module-lexer@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz#586e87d4341cb2661850ece5190232ccdebcff8b" - integrity sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA== - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -collect-v8-coverage@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -core-js-compat@^3.43.0: - version "3.44.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.44.0.tgz#62b9165b97e4cbdb8bca16b14818e67428b4a0f8" - integrity sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA== - dependencies: - browserslist "^4.25.1" - -cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: - version "7.0.6" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -data-view-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" - integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570" - integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== - dependencies: - call-bound "^1.0.3" - es-errors "^1.3.0" - is-data-view "^1.0.2" - -data-view-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" - integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-length@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735" - integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== - dependencies: - call-bound "^1.0.3" - es-errors "^1.3.0" - is-data-view "^1.0.2" - -data-view-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" - integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-offset@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191" - integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" - integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== - dependencies: - ms "^2.1.3" - -dedent@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.6.0.tgz#79d52d6389b1ffa67d2bcef59ba51847a9d503b2" - integrity sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -define-data-property@^1.0.1, define-data-property@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" - integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== - dependencies: - get-intrinsic "^1.2.1" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - -define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -detect-newline@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dunder-proto@^1.0.0, dunder-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" - integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== - dependencies: - call-bind-apply-helpers "^1.0.1" - es-errors "^1.3.0" - gopd "^1.2.0" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ejs@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" - integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== - dependencies: - jake "^10.8.5" - -electron-to-chromium@^1.5.173: - version "1.5.191" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.191.tgz#8ae49a471447b1ceaf1d4d183a9000082f52363c" - integrity sha512-xcwe9ELcuxYLUFqZZxL19Z6HVKcvNkIwhbHUz7L3us6u12yR+7uY89dSl570f/IqNthx8dAw3tojG7i4Ni4tDA== - -electron-to-chromium@^1.5.28: - version "1.5.37" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.37.tgz#1660fb87d2bc82a3f8a652ef78eed17cc0d3ef4f" - integrity sha512-u7000ZB/X0K78TaQqXZ5ktoR7J79B9US7IkE4zyvcILYwOGY2Tx9GRPYstn7HmuPcMxZ+BDGqIsyLpZQi9ufPw== - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.22.1: - version "1.22.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" - integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== - dependencies: - array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.2" - available-typed-arrays "^1.0.5" - call-bind "^1.0.5" - es-set-tostringtag "^2.0.1" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.2" - get-symbol-description "^1.0.0" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - 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.13.1" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.1" - safe-array-concat "^1.0.1" - safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.8" - string.prototype.trimend "^1.0.7" - string.prototype.trimstart "^1.0.7" - 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.13" - -es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2: - version "1.23.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" - integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== - dependencies: - array-buffer-byte-length "^1.0.1" - arraybuffer.prototype.slice "^1.0.3" - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - data-view-buffer "^1.0.1" - data-view-byte-length "^1.0.1" - data-view-byte-offset "^1.0.0" - es-define-property "^1.0.0" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-set-tostringtag "^2.0.3" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.4" - get-symbol-description "^1.0.2" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" - hasown "^2.0.2" - internal-slot "^1.0.7" - is-array-buffer "^3.0.4" - is-callable "^1.2.7" - is-data-view "^1.0.1" - is-negative-zero "^2.0.3" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.3" - is-string "^1.0.7" - is-typed-array "^1.1.13" - is-weakref "^1.0.2" - object-inspect "^1.13.1" - object-keys "^1.1.1" - object.assign "^4.1.5" - regexp.prototype.flags "^1.5.2" - safe-array-concat "^1.1.2" - safe-regex-test "^1.0.3" - string.prototype.trim "^1.2.9" - string.prototype.trimend "^1.0.8" - string.prototype.trimstart "^1.0.8" - typed-array-buffer "^1.0.2" - typed-array-byte-length "^1.0.1" - typed-array-byte-offset "^1.0.2" - typed-array-length "^1.0.6" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.15" - -es-abstract@^1.23.5, es-abstract@^1.23.9, es-abstract@^1.24.0: - version "1.24.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328" - integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg== - dependencies: - array-buffer-byte-length "^1.0.2" - arraybuffer.prototype.slice "^1.0.4" - available-typed-arrays "^1.0.7" - call-bind "^1.0.8" - call-bound "^1.0.4" - data-view-buffer "^1.0.2" - data-view-byte-length "^1.0.2" - data-view-byte-offset "^1.0.1" - es-define-property "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.1.1" - es-set-tostringtag "^2.1.0" - es-to-primitive "^1.3.0" - function.prototype.name "^1.1.8" - get-intrinsic "^1.3.0" - get-proto "^1.0.1" - get-symbol-description "^1.1.0" - globalthis "^1.0.4" - gopd "^1.2.0" - has-property-descriptors "^1.0.2" - has-proto "^1.2.0" - has-symbols "^1.1.0" - hasown "^2.0.2" - internal-slot "^1.1.0" - is-array-buffer "^3.0.5" - is-callable "^1.2.7" - is-data-view "^1.0.2" - is-negative-zero "^2.0.3" - is-regex "^1.2.1" - is-set "^2.0.3" - is-shared-array-buffer "^1.0.4" - is-string "^1.1.1" - is-typed-array "^1.1.15" - is-weakref "^1.1.1" - math-intrinsics "^1.1.0" - object-inspect "^1.13.4" - object-keys "^1.1.1" - object.assign "^4.1.7" - own-keys "^1.0.1" - regexp.prototype.flags "^1.5.4" - safe-array-concat "^1.1.3" - safe-push-apply "^1.0.0" - safe-regex-test "^1.1.0" - set-proto "^1.0.0" - stop-iteration-iterator "^1.1.0" - string.prototype.trim "^1.2.10" - string.prototype.trimend "^1.0.9" - string.prototype.trimstart "^1.0.8" - typed-array-buffer "^1.0.3" - typed-array-byte-length "^1.0.3" - typed-array-byte-offset "^1.0.4" - typed-array-length "^1.0.7" - unbox-primitive "^1.1.0" - which-typed-array "^1.1.19" - -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-define-property@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" - integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== - -es-errors@^1.2.1, es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-object-atoms@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" - integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== - dependencies: - es-errors "^1.3.0" - -es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" - integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== - dependencies: - get-intrinsic "^1.2.2" - has-tostringtag "^1.0.0" - hasown "^2.0.0" - -es-set-tostringtag@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" - integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== - dependencies: - get-intrinsic "^1.2.4" - has-tostringtag "^1.0.2" - hasown "^2.0.1" - -es-set-tostringtag@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" - integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== - dependencies: - es-errors "^1.3.0" - get-intrinsic "^1.2.6" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -es-shim-unscopables@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== - dependencies: - hasown "^2.0.0" - -es-shim-unscopables@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz#438df35520dac5d105f3943d927549ea3b00f4b5" - integrity sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw== - dependencies: - hasown "^2.0.2" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es-to-primitive@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18" - integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== - dependencies: - is-callable "^1.2.7" - is-date-object "^1.0.5" - is-symbol "^1.0.4" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escalade@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== - -escalade@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" - integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" - integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionalDependencies: - source-map "~0.6.1" - -eslint-compat-utils@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz#f45e3b5ced4c746c127cf724fb074cd4e730d653" - integrity sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg== - -eslint-config-standard-with-typescript@^43.0.1: - version "43.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-43.0.1.tgz#977862d7d41b0e1f27f399137bbf7b2e017037ff" - integrity sha512-WfZ986+qzIzX6dcr4yGUyVb/l9N3Z8wPXCc5z/70fljs3UbWhhV+WxrfgsqMToRzuuyX9MqZ974pq2UPhDTOcA== - dependencies: - "@typescript-eslint/parser" "^6.4.0" - eslint-config-standard "17.1.0" - -eslint-config-standard@17.1.0: - version "17.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#40ffb8595d47a6b242e07cbfd49dc211ed128975" - integrity sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q== - -eslint-import-resolver-node@^0.3.9: - version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" - integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - dependencies: - debug "^3.2.7" - is-core-module "^2.13.0" - resolve "^1.22.4" - -eslint-module-utils@^2.12.1: - version "2.12.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz#f76d3220bfb83c057651359295ab5854eaad75ff" - integrity sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw== - dependencies: - debug "^3.2.7" - -eslint-plugin-es-x@^7.5.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz#d08d9cd155383e35156c48f736eb06561d07ba92" - integrity sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ== - dependencies: - "@eslint-community/eslint-utils" "^4.1.2" - "@eslint-community/regexpp" "^4.6.0" - eslint-compat-utils "^0.1.2" - -eslint-plugin-import@^2.32.0: - version "2.32.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980" - integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA== - dependencies: - "@rtsao/scc" "^1.1.0" - array-includes "^3.1.9" - array.prototype.findlastindex "^1.2.6" - array.prototype.flat "^1.3.3" - array.prototype.flatmap "^1.3.3" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.12.1" - hasown "^2.0.2" - is-core-module "^2.16.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.8" - object.groupby "^1.0.3" - object.values "^1.2.1" - semver "^6.3.1" - string.prototype.trimend "^1.0.9" - tsconfig-paths "^3.15.0" - -"eslint-plugin-n@^15.0.0 || ^16.0.0 ": - version "16.6.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz#6a60a1a376870064c906742272074d5d0b412b0b" - integrity sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - builtins "^5.0.1" - eslint-plugin-es-x "^7.5.0" - get-tsconfig "^4.7.0" - globals "^13.24.0" - ignore "^5.2.4" - is-builtin-module "^3.2.1" - is-core-module "^2.12.1" - minimatch "^3.1.2" - resolve "^1.22.2" - semver "^7.5.3" - -eslint-plugin-promise@^6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz#acd3fd7d55cead7a10f92cf698f36c0aafcd717a" - integrity sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ== - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.57.1: - version "8.57.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" - integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.1" - "@humanwhocodes/config-array" "^0.13.0" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - 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.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - 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" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -execa@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit-x@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/exit-x/-/exit-x-0.2.2.tgz#1f9052de3b8d99a696b10dad5bced9bdd5c3aa64" - integrity sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ== - -expect@30.0.4, expect@^30.0.0: - version "30.0.4" - resolved "https://registry.yarnpkg.com/expect/-/expect-30.0.4.tgz#23ce0eaa9a1dcd72fcb78a228b9babdbcf9ddeca" - integrity sha512-dDLGjnP2cKbEppxVICxI/Uf4YemmGMPNy0QytCbfafbpYk9AFQsxb8Uyrxii0RPK7FWgLGlSem+07WirwS3cFQ== - dependencies: - "@jest/expect-utils" "30.0.4" - "@jest/get-type" "30.0.1" - jest-matcher-utils "30.0.4" - jest-message-util "30.0.2" - jest-mock "30.0.2" - jest-util "30.0.2" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.9: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.0.tgz#ca5e1a90b5e68f97fc8b61330d5819b82f5fab03" - integrity sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -filelist@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -for-each@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" - integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== - dependencies: - is-callable "^1.2.7" - -foreground-child@^3.1.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" - integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== - dependencies: - cross-spawn "^7.0.6" - signal-exit "^4.0.1" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - functions-have-names "^1.2.3" - -function.prototype.name@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78" - integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.3" - define-properties "^1.2.1" - functions-have-names "^1.2.3" - hasown "^2.0.2" - is-callable "^1.2.7" - -functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" - integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== - dependencies: - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" - integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== - dependencies: - call-bind-apply-helpers "^1.0.2" - es-define-property "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.1.1" - function-bind "^1.1.2" - get-proto "^1.0.1" - gopd "^1.2.0" - has-symbols "^1.1.0" - hasown "^2.0.2" - math-intrinsics "^1.1.0" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-proto@^1.0.0, get-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" - integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== - dependencies: - dunder-proto "^1.0.1" - es-object-atoms "^1.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-symbol-description@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" - integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== - dependencies: - call-bind "^1.0.5" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - -get-symbol-description@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee" - integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== - dependencies: - call-bound "^1.0.3" - es-errors "^1.3.0" - get-intrinsic "^1.2.6" - -get-tsconfig@^4.7.0: - version "4.7.2" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" - integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== - dependencies: - resolve-pkg-maps "^1.0.0" - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^10.3.10: - version "10.4.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" - integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - -glob@^7.1.3, glob@^7.1.4: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0, globals@^13.24.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -globalthis@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" - integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== - dependencies: - define-properties "^1.2.1" - gopd "^1.0.1" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -gopd@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" - integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - -graceful-fs@^4.2.11: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" - integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== - dependencies: - get-intrinsic "^1.2.2" - -has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - -has-proto@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - -has-proto@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5" - integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== - dependencies: - dunder-proto "^1.0.0" - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" - integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -husky@^9.1.7: - version "9.1.7" - resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d" - integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== - -ignore@^5.2.0, ignore@^5.2.4: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" - integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -internal-slot@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" - integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== - dependencies: - get-intrinsic "^1.2.2" - hasown "^2.0.0" - side-channel "^1.0.4" - -internal-slot@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" - integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== - dependencies: - es-errors "^1.3.0" - hasown "^2.0.0" - side-channel "^1.0.4" - -internal-slot@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961" - integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== - dependencies: - es-errors "^1.3.0" - hasown "^2.0.2" - side-channel "^1.1.0" - -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" - -is-array-buffer@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" - integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - -is-array-buffer@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280" - integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.3" - get-intrinsic "^1.2.6" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-async-function@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.1.1.tgz#3e69018c8e04e73b738793d020bfe884b9fd3523" - integrity sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ== - dependencies: - async-function "^1.0.0" - call-bound "^1.0.3" - get-proto "^1.0.1" - has-tostringtag "^1.0.2" - safe-regex-test "^1.1.0" - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-bigint@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672" - integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== - dependencies: - has-bigints "^1.0.2" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-boolean-object@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e" - integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== - dependencies: - call-bound "^1.0.3" - has-tostringtag "^1.0.2" - -is-builtin-module@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" - integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== - dependencies: - builtin-modules "^3.3.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-core-module@^2.12.1, is-core-module@^2.13.0, is-core-module@^2.16.0, is-core-module@^2.16.1: - version "2.16.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" - integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== - dependencies: - hasown "^2.0.2" - -is-data-view@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" - integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== - dependencies: - is-typed-array "^1.1.13" - -is-data-view@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.2.tgz#bae0a41b9688986c2188dda6657e56b8f9e63b8e" - integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw== - dependencies: - call-bound "^1.0.2" - get-intrinsic "^1.2.6" - is-typed-array "^1.1.13" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-date-object@^1.0.5, is-date-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7" - integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg== - dependencies: - call-bound "^1.0.2" - has-tostringtag "^1.0.2" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-finalizationregistry@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#eefdcdc6c94ddd0674d9c85887bf93f944a97c90" - integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== - dependencies: - call-bound "^1.0.3" - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-generator-function@^1.0.10: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" - integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== - dependencies: - call-bound "^1.0.3" - get-proto "^1.0.0" - has-tostringtag "^1.0.2" - safe-regex-test "^1.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-map@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" - integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-negative-zero@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" - integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number-object@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" - integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== - dependencies: - call-bound "^1.0.3" - has-tostringtag "^1.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-regex@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" - integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== - dependencies: - call-bound "^1.0.2" - gopd "^1.2.0" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -is-set@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" - integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-shared-array-buffer@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" - integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== - dependencies: - call-bind "^1.0.7" - -is-shared-array-buffer@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f" - integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== - dependencies: - call-bound "^1.0.3" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-string@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" - integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== - dependencies: - call-bound "^1.0.3" - has-tostringtag "^1.0.2" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-symbol@^1.0.4, is-symbol@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634" - integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w== - dependencies: - call-bound "^1.0.2" - has-symbols "^1.1.0" - safe-regex-test "^1.1.0" - -is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: - version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== - dependencies: - which-typed-array "^1.1.11" - -is-typed-array@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" - integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== - dependencies: - which-typed-array "^1.1.14" - -is-typed-array@^1.1.14, is-typed-array@^1.1.15: - version "1.1.15" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" - integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== - dependencies: - which-typed-array "^1.1.16" - -is-weakmap@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" - integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-weakref@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" - integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== - dependencies: - call-bound "^1.0.3" - -is-weakset@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.4.tgz#c9f5deb0bc1906c6d6f1027f284ddf459249daca" - integrity sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ== - dependencies: - call-bound "^1.0.3" - get-intrinsic "^1.2.6" - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-instrument@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz#71e87707e8041428732518c6fb5211761753fbdf" - integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-instrument@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" - integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== - dependencies: - "@babel/core" "^7.23.9" - "@babel/parser" "^7.23.9" - "@istanbuljs/schema" "^0.1.3" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^5.0.0: - version "5.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz#acaef948df7747c8eb5fbf1265cb980f6353a441" - integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== - dependencies: - "@jridgewell/trace-mapping" "^0.3.23" - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - -istanbul-reports@^3.1.3: - version "3.1.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" - integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jake@^10.8.5: - version "10.9.1" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.1.tgz#8dc96b7fcc41cb19aa502af506da4e1d56f5e62b" - integrity sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.4" - minimatch "^3.1.2" - -jest-changed-files@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-30.0.2.tgz#2c275263037f8f291b71cbb0a4f639c519ab7eb8" - integrity sha512-Ius/iRST9FKfJI+I+kpiDh8JuUlAISnRszF9ixZDIqJF17FckH5sOzKC8a0wd0+D+8em5ADRHA5V5MnfeDk2WA== - dependencies: - execa "^5.1.1" - jest-util "30.0.2" - p-limit "^3.1.0" - -jest-circus@30.0.4: - version "30.0.4" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-30.0.4.tgz#7bdfc5951eb883283bf0336cc4d624222f09851e" - integrity sha512-o6UNVfbXbmzjYgmVPtSQrr5xFZCtkDZGdTlptYvGFSN80RuOOlTe73djvMrs+QAuSERZWcHBNIOMH+OEqvjWuw== - dependencies: - "@jest/environment" "30.0.4" - "@jest/expect" "30.0.4" - "@jest/test-result" "30.0.4" - "@jest/types" "30.0.1" - "@types/node" "*" - chalk "^4.1.2" - co "^4.6.0" - dedent "^1.6.0" - is-generator-fn "^2.1.0" - jest-each "30.0.2" - jest-matcher-utils "30.0.4" - jest-message-util "30.0.2" - jest-runtime "30.0.4" - jest-snapshot "30.0.4" - jest-util "30.0.2" - p-limit "^3.1.0" - pretty-format "30.0.2" - pure-rand "^7.0.0" - slash "^3.0.0" - stack-utils "^2.0.6" - -jest-cli@30.0.4: - version "30.0.4" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-30.0.4.tgz#85510c5ebffc4ed31b571b3e166bca3febe7ba4a" - integrity sha512-3dOrP3zqCWBkjoVG1zjYJpD9143N9GUCbwaF2pFF5brnIgRLHmKcCIw+83BvF1LxggfMWBA0gxkn6RuQVuRhIQ== - dependencies: - "@jest/core" "30.0.4" - "@jest/test-result" "30.0.4" - "@jest/types" "30.0.1" - chalk "^4.1.2" - exit-x "^0.2.2" - import-local "^3.2.0" - jest-config "30.0.4" - jest-util "30.0.2" - jest-validate "30.0.2" - yargs "^17.7.2" - -jest-config@30.0.4: - version "30.0.4" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-30.0.4.tgz#a710897373ae2b0ad8db027cb7a06e6d4a903c41" - integrity sha512-3dzbO6sh34thAGEjJIW0fgT0GA0EVlkski6ZzMcbW6dzhenylXAE/Mj2MI4HonroWbkKc6wU6bLVQ8dvBSZ9lA== - dependencies: - "@babel/core" "^7.27.4" - "@jest/get-type" "30.0.1" - "@jest/pattern" "30.0.1" - "@jest/test-sequencer" "30.0.4" - "@jest/types" "30.0.1" - babel-jest "30.0.4" - chalk "^4.1.2" - ci-info "^4.2.0" - deepmerge "^4.3.1" - glob "^10.3.10" - graceful-fs "^4.2.11" - jest-circus "30.0.4" - jest-docblock "30.0.1" - jest-environment-node "30.0.4" - jest-regex-util "30.0.1" - jest-resolve "30.0.2" - jest-runner "30.0.4" - jest-util "30.0.2" - jest-validate "30.0.2" - micromatch "^4.0.8" - parse-json "^5.2.0" - pretty-format "30.0.2" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@30.0.4: - version "30.0.4" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.0.4.tgz#f6e71d19ed6e8f5c7f1bead9ac406c0dd6abce5a" - integrity sha512-TSjceIf6797jyd+R64NXqicttROD+Qf98fex7CowmlSn7f8+En0da1Dglwr1AXxDtVizoxXYZBlUQwNhoOXkNw== - dependencies: - "@jest/diff-sequences" "30.0.1" - "@jest/get-type" "30.0.1" - chalk "^4.1.2" - pretty-format "30.0.2" - -jest-docblock@30.0.1: - version "30.0.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-30.0.1.tgz#545ff59f2fa88996bd470dba7d3798a8421180b1" - integrity sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA== - dependencies: - detect-newline "^3.1.0" - -jest-each@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-30.0.2.tgz#402e189784715f5c76f1bb97c29842e79abe99a1" - integrity sha512-ZFRsTpe5FUWFQ9cWTMguCaiA6kkW5whccPy9JjD1ezxh+mJeqmz8naL8Fl/oSbNJv3rgB0x87WBIkA5CObIUZQ== - dependencies: - "@jest/get-type" "30.0.1" - "@jest/types" "30.0.1" - chalk "^4.1.2" - jest-util "30.0.2" - pretty-format "30.0.2" - -jest-environment-node@30.0.4: - version "30.0.4" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-30.0.4.tgz#080f2d6e438ef35a4701a09207fd2cfa030cd4a3" - integrity sha512-p+rLEzC2eThXqiNh9GHHTC0OW5Ca4ZfcURp7scPjYBcmgpR9HG6750716GuUipYf2AcThU3k20B31USuiaaIEg== - dependencies: - "@jest/environment" "30.0.4" - "@jest/fake-timers" "30.0.4" - "@jest/types" "30.0.1" - "@types/node" "*" - jest-mock "30.0.2" - jest-util "30.0.2" - jest-validate "30.0.2" - -jest-haste-map@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-30.0.2.tgz#83826e7e352fa139dc95100337aff4de58c99453" - integrity sha512-telJBKpNLeCb4MaX+I5k496556Y2FiKR/QLZc0+MGBYl4k3OO0472drlV2LUe7c1Glng5HuAu+5GLYp//GpdOQ== - dependencies: - "@jest/types" "30.0.1" - "@types/node" "*" - anymatch "^3.1.3" - fb-watchman "^2.0.2" - graceful-fs "^4.2.11" - jest-regex-util "30.0.1" - jest-util "30.0.2" - jest-worker "30.0.2" - micromatch "^4.0.8" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.3" - -jest-haste-map@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-30.0.5.tgz#fdd0daa322b02eb34267854cff2859fae21e92a6" - integrity sha512-dkmlWNlsTSR0nH3nRfW5BKbqHefLZv0/6LCccG0xFCTWcJu8TuEwG+5Cm75iBfjVoockmO6J35o5gxtFSn5xeg== - dependencies: - "@jest/types" "30.0.5" - "@types/node" "*" - anymatch "^3.1.3" - fb-watchman "^2.0.2" - graceful-fs "^4.2.11" - jest-regex-util "30.0.1" - jest-util "30.0.5" - jest-worker "30.0.5" - micromatch "^4.0.8" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.3" - -jest-leak-detector@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-30.0.2.tgz#da4df660615d170136d2b468af3bf1c9bff0137e" - integrity sha512-U66sRrAYdALq+2qtKffBLDWsQ/XoNNs2Lcr83sc9lvE/hEpNafJlq2lXCPUBMNqamMECNxSIekLfe69qg4KMIQ== - dependencies: - "@jest/get-type" "30.0.1" - pretty-format "30.0.2" - -jest-matcher-utils@30.0.4: - version "30.0.4" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.0.4.tgz#1aab71eb7ba401f81d9ef7231feb88392e4a6e54" - integrity sha512-ubCewJ54YzeAZ2JeHHGVoU+eDIpQFsfPQs0xURPWoNiO42LGJ+QGgfSf+hFIRplkZDkhH5MOvuxHKXRTUU3dUQ== - dependencies: - "@jest/get-type" "30.0.1" - chalk "^4.1.2" - jest-diff "30.0.4" - pretty-format "30.0.2" - -jest-message-util@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.0.2.tgz#9dfdc37570d172f0ffdc42a0318036ff4008837f" - integrity sha512-vXywcxmr0SsKXF/bAD7t7nMamRvPuJkras00gqYeB1V0WllxZrbZ0paRr3XqpFU2sYYjD0qAaG2fRyn/CGZ0aw== - dependencies: - "@babel/code-frame" "^7.27.1" - "@jest/types" "30.0.1" - "@types/stack-utils" "^2.0.3" - chalk "^4.1.2" - graceful-fs "^4.2.11" - micromatch "^4.0.8" - pretty-format "30.0.2" - slash "^3.0.0" - stack-utils "^2.0.6" - -jest-mock@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.0.2.tgz#5e4245f25f6f9532714906cab10a2b9e39eb2183" - integrity sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA== - dependencies: - "@jest/types" "30.0.1" - "@types/node" "*" - jest-util "30.0.2" - -jest-pnp-resolver@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@30.0.1: - version "30.0.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-30.0.1.tgz#f17c1de3958b67dfe485354f5a10093298f2a49b" - integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA== - -jest-resolve-dependencies@30.0.4: - version "30.0.4" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.4.tgz#54decdedec040ec0b5b717af43a0b538d638d395" - integrity sha512-EQBYow19B/hKr4gUTn+l8Z+YLlP2X0IoPyp0UydOtrcPbIOYzJ8LKdFd+yrbwztPQvmlBFUwGPPEzHH1bAvFAw== - dependencies: - jest-regex-util "30.0.1" - jest-snapshot "30.0.4" - -jest-resolve@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-30.0.2.tgz#4b7c826a35e9657189568e4dafc0ba5f05868cf2" - integrity sha512-q/XT0XQvRemykZsvRopbG6FQUT6/ra+XV6rPijyjT6D0msOyCvR2A5PlWZLd+fH0U8XWKZfDiAgrUNDNX2BkCw== - dependencies: - chalk "^4.1.2" - graceful-fs "^4.2.11" - jest-haste-map "30.0.2" - jest-pnp-resolver "^1.2.3" - jest-util "30.0.2" - jest-validate "30.0.2" - slash "^3.0.0" - unrs-resolver "^1.7.11" - -jest-runner@30.0.4: - version "30.0.4" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-30.0.4.tgz#3647eeb04f2d0b2c0a5769dd73cd861ebc5853f4" - integrity sha512-mxY0vTAEsowJwvFJo5pVivbCpuu6dgdXRmt3v3MXjBxFly7/lTk3Td0PaMyGOeNQUFmSuGEsGYqhbn7PA9OekQ== - dependencies: - "@jest/console" "30.0.4" - "@jest/environment" "30.0.4" - "@jest/test-result" "30.0.4" - "@jest/transform" "30.0.4" - "@jest/types" "30.0.1" - "@types/node" "*" - chalk "^4.1.2" - emittery "^0.13.1" - exit-x "^0.2.2" - graceful-fs "^4.2.11" - jest-docblock "30.0.1" - jest-environment-node "30.0.4" - jest-haste-map "30.0.2" - jest-leak-detector "30.0.2" - jest-message-util "30.0.2" - jest-resolve "30.0.2" - jest-runtime "30.0.4" - jest-util "30.0.2" - jest-watcher "30.0.4" - jest-worker "30.0.2" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@30.0.4: - version "30.0.4" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-30.0.4.tgz#100f31a5f6c4a6586c2ce91a936a10f1aca64749" - integrity sha512-tUQrZ8+IzoZYIHoPDQEB4jZoPyzBjLjq7sk0KVyd5UPRjRDOsN7o6UlvaGF8ddpGsjznl9PW+KRgWqCNO+Hn7w== - dependencies: - "@jest/environment" "30.0.4" - "@jest/fake-timers" "30.0.4" - "@jest/globals" "30.0.4" - "@jest/source-map" "30.0.1" - "@jest/test-result" "30.0.4" - "@jest/transform" "30.0.4" - "@jest/types" "30.0.1" - "@types/node" "*" - chalk "^4.1.2" - cjs-module-lexer "^2.1.0" - collect-v8-coverage "^1.0.2" - glob "^10.3.10" - graceful-fs "^4.2.11" - jest-haste-map "30.0.2" - jest-message-util "30.0.2" - jest-mock "30.0.2" - jest-regex-util "30.0.1" - jest-resolve "30.0.2" - jest-snapshot "30.0.4" - jest-util "30.0.2" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@30.0.4: - version "30.0.4" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-30.0.4.tgz#21fdc1d944bc077a58f5eda88ef77a26dee4c3ee" - integrity sha512-S/8hmSkeUib8WRUq9pWEb5zMfsOjiYWDWzFzKnjX7eDyKKgimsu9hcmsUEg8a7dPAw8s/FacxsXquq71pDgPjQ== - dependencies: - "@babel/core" "^7.27.4" - "@babel/generator" "^7.27.5" - "@babel/plugin-syntax-jsx" "^7.27.1" - "@babel/plugin-syntax-typescript" "^7.27.1" - "@babel/types" "^7.27.3" - "@jest/expect-utils" "30.0.4" - "@jest/get-type" "30.0.1" - "@jest/snapshot-utils" "30.0.4" - "@jest/transform" "30.0.4" - "@jest/types" "30.0.1" - babel-preset-current-node-syntax "^1.1.0" - chalk "^4.1.2" - expect "30.0.4" - graceful-fs "^4.2.11" - jest-diff "30.0.4" - jest-matcher-utils "30.0.4" - jest-message-util "30.0.2" - jest-util "30.0.2" - pretty-format "30.0.2" - semver "^7.7.2" - synckit "^0.11.8" - -jest-util@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.0.2.tgz#1bd8411f81e6f5e2ca8b31bb2534ebcd7cbac065" - integrity sha512-8IyqfKS4MqprBuUpZNlFB5l+WFehc8bfCe1HSZFHzft2mOuND8Cvi9r1musli+u6F3TqanCZ/Ik4H4pXUolZIg== - dependencies: - "@jest/types" "30.0.1" - "@types/node" "*" - chalk "^4.1.2" - ci-info "^4.2.0" - graceful-fs "^4.2.11" - picomatch "^4.0.2" - -jest-util@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.0.5.tgz#035d380c660ad5f1748dff71c4105338e05f8669" - integrity sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g== - dependencies: - "@jest/types" "30.0.5" - "@types/node" "*" - chalk "^4.1.2" - ci-info "^4.2.0" - graceful-fs "^4.2.11" - picomatch "^4.0.2" - -jest-validate@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-30.0.2.tgz#f62a2f0e014dac94747509ba8c2bcd5d48215b7f" - integrity sha512-noOvul+SFER4RIvNAwGn6nmV2fXqBq67j+hKGHKGFCmK4ks/Iy1FSrqQNBLGKlu4ZZIRL6Kg1U72N1nxuRCrGQ== - dependencies: - "@jest/get-type" "30.0.1" - "@jest/types" "30.0.1" - camelcase "^6.3.0" - chalk "^4.1.2" - leven "^3.1.0" - pretty-format "30.0.2" - -jest-watcher@30.0.4: - version "30.0.4" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-30.0.4.tgz#f51b9870760d917851bb5b871e95b3c5f021cb86" - integrity sha512-YESbdHDs7aQOCSSKffG8jXqOKFqw4q4YqR+wHYpR5GWEQioGvL0BfbcjvKIvPEM0XGfsfJrka7jJz3Cc3gI4VQ== - dependencies: - "@jest/test-result" "30.0.4" - "@jest/types" "30.0.1" - "@types/node" "*" - ansi-escapes "^4.3.2" - chalk "^4.1.2" - emittery "^0.13.1" - jest-util "30.0.2" - string-length "^4.0.2" - -jest-worker@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-30.0.2.tgz#e67bd7debbc9d8445907a17067a89359acedc8c5" - integrity sha512-RN1eQmx7qSLFA+o9pfJKlqViwL5wt+OL3Vff/A+/cPsmuw7NPwfgl33AP+/agRmHzPOFgXviRycR9kYwlcRQXg== - dependencies: - "@types/node" "*" - "@ungap/structured-clone" "^1.3.0" - jest-util "30.0.2" - merge-stream "^2.0.0" - supports-color "^8.1.1" - -jest-worker@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-30.0.5.tgz#0b85cbab10610303e8d84e214f94d8f052c3cd04" - integrity sha512-ojRXsWzEP16NdUuBw/4H/zkZdHOa7MMYCk4E430l+8fELeLg/mqmMlRhjL7UNZvQrDmnovWZV4DxX03fZF48fQ== - dependencies: - "@types/node" "*" - "@ungap/structured-clone" "^1.3.0" - jest-util "30.0.5" - merge-stream "^2.0.0" - supports-color "^8.1.1" - -jest@^30.0.4: - version "30.0.4" - resolved "https://registry.yarnpkg.com/jest/-/jest-30.0.4.tgz#4596879f2af0560d9b1e588b252531cf10148947" - integrity sha512-9QE0RS4WwTj/TtTC4h/eFVmFAhGNVerSB9XpJh8sqaXlP73ILcPcZ7JWjjEtJJe2m8QyBLKKfPQuK+3F+Xij/g== - dependencies: - "@jest/core" "30.0.4" - "@jest/types" "30.0.1" - import-local "^3.2.0" - jest-cli "30.0.4" - -js-base64@^3.7.7: - version "3.7.7" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.7.tgz#e51b84bf78fbf5702b9541e2cb7bfcb893b43e79" - integrity sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@^3.0.2, jsesc@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" - integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lru-cache@^10.2.0: - version "10.4.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -make-error@^1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -math-intrinsics@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" - integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4, micromatch@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.4: - version "9.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1, ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -napi-postinstall@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/napi-postinstall/-/napi-postinstall-0.3.0.tgz#888e51d1fb500e86dcf6ace1baccdbb377e654ce" - integrity sha512-M7NqKyhODKV1gRLdkwE7pDsZP2/SC2a2vHkOYh9MCpKMbWVfyVfUw5MaH83Fv6XMjxr5jryUp3IDDL9rlxsTeA== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.18: - version "2.0.18" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" - integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== - -node-releases@^2.0.19: - version "2.0.19" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" - integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -object-inspect@^1.13.1, object-inspect@^1.9.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - -object-inspect@^1.13.3, object-inspect@^1.13.4: - version "1.13.4" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" - integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.4, object.assign@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" - integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.assign@^4.1.7: - version "4.1.7" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" - integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.3" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - has-symbols "^1.1.0" - object-keys "^1.1.1" - -object.fromentries@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" - integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - -object.groupby@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" - integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - -object.values@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" - integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.3" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - -own-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358" - integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== - dependencies: - get-intrinsic "^1.2.6" - object-keys "^1.1.1" - safe-push-apply "^1.0.0" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-json-from-dist@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" - integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== - -picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - -picomatch@^2.0.4, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -picomatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" - integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== - -pirates@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" - integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -possible-typed-array-names@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" - integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier@^3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.2.tgz#ccda02a1003ebbb2bfda6f83a074978f608b9393" - integrity sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ== - -pretty-format@30.0.2, pretty-format@^30.0.0: - version "30.0.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.0.2.tgz#54717b6aa2b4357a2e6d83868e10a2ea8dd647c7" - integrity sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg== - dependencies: - "@jest/schemas" "30.0.1" - ansi-styles "^5.2.0" - react-is "^18.3.1" - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -pure-rand@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-7.0.1.tgz#6f53a5a9e3e4a47445822af96821ca509ed37566" - integrity sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -react-is@^18.3.1: - version "18.3.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9" - integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== - dependencies: - call-bind "^1.0.8" - define-properties "^1.2.1" - es-abstract "^1.23.9" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.7" - get-proto "^1.0.1" - which-builtin-type "^1.2.1" - -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== - dependencies: - regenerate "^1.4.2" - -regenerate-unicode-properties@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" - integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regexp.prototype.flags@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" - integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - set-function-name "^2.0.0" - -regexp.prototype.flags@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== - dependencies: - call-bind "^1.0.6" - define-properties "^1.2.1" - es-errors "^1.3.0" - set-function-name "^2.0.1" - -regexp.prototype.flags@^1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" - integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== - dependencies: - call-bind "^1.0.8" - define-properties "^1.2.1" - es-errors "^1.3.0" - get-proto "^1.0.1" - gopd "^1.2.0" - set-function-name "^2.0.2" - -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -regexpu-core@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826" - integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.2.0" - regjsgen "^0.8.0" - regjsparser "^0.12.0" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -regjsgen@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" - integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== - -regjsparser@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" - integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== - dependencies: - jsesc "~3.0.2" - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-pkg-maps@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" - integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== - -resolve@^1.22.10: - version "1.22.10" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== - dependencies: - is-core-module "^2.16.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.22.2, resolve@^1.22.4: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-array-concat@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" - integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== - dependencies: - call-bind "^1.0.5" - get-intrinsic "^1.2.2" - has-symbols "^1.0.3" - isarray "^2.0.5" - -safe-array-concat@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" - integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== - dependencies: - call-bind "^1.0.7" - get-intrinsic "^1.2.4" - has-symbols "^1.0.3" - isarray "^2.0.5" - -safe-array-concat@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3" - integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.2" - get-intrinsic "^1.2.6" - has-symbols "^1.1.0" - isarray "^2.0.5" - -safe-push-apply@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5" - integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== - dependencies: - es-errors "^1.3.0" - isarray "^2.0.5" - -safe-regex-test@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.2.tgz#3ba32bdb3ea35f940ee87e5087c60ee786c3f6c5" - integrity sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ== - dependencies: - call-bind "^1.0.5" - get-intrinsic "^1.2.2" - is-regex "^1.1.4" - -safe-regex-test@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" - integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-regex "^1.1.4" - -safe-regex-test@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" - integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - is-regex "^1.2.1" - -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.0.0, semver@^7.5.3, semver@^7.5.4, semver@^7.7.2: - version "7.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" - integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== - -set-function-length@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.0.tgz#2f81dc6c16c7059bda5ab7c82c11f03a515ed8e1" - integrity sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w== - dependencies: - define-data-property "^1.1.1" - function-bind "^1.1.2" - get-intrinsic "^1.2.2" - gopd "^1.0.1" - has-property-descriptors "^1.0.1" - -set-function-length@^1.2.1, set-function-length@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -set-function-name@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" - integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== - dependencies: - define-data-property "^1.0.1" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.0" - -set-function-name@^2.0.1, set-function-name@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" - integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.2" - -set-proto@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e" - integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== - dependencies: - dunder-proto "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel-list@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" - integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - -side-channel-map@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" - integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - -side-channel-weakmap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" - integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - side-channel-map "^1.0.1" - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -side-channel@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" - integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - side-channel-list "^1.0.0" - side-channel-map "^1.0.1" - side-channel-weakmap "^1.0.2" - -signal-exit@^3.0.3: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -stack-utils@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -stop-iteration-iterator@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad" - integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== - dependencies: - es-errors "^1.3.0" - internal-slot "^1.1.0" - -string-length@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string.prototype.trim@^1.2.10: - version "1.2.10" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81" - integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.2" - define-data-property "^1.1.4" - define-properties "^1.2.1" - es-abstract "^1.23.5" - es-object-atoms "^1.0.0" - has-property-descriptors "^1.0.2" - -string.prototype.trim@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" - integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string.prototype.trim@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" - integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.0" - es-object-atoms "^1.0.0" - -string.prototype.trimend@^1.0.7, string.prototype.trimend@^1.0.8, string.prototype.trimend@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" - integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.2" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string.prototype.trimstart@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" - integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string.prototype.trimstart@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" - integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -synckit@^0.11.8: - version "0.11.8" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.8.tgz#b2aaae998a4ef47ded60773ad06e7cb821f55457" - integrity sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A== - dependencies: - "@pkgr/core" "^0.2.4" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -ts-api-utils@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" - integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== - -ts-jest@^29.4.0: - version "29.4.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.4.0.tgz#bef0ee98d94c83670af7462a1617bf2367a83740" - integrity sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q== - dependencies: - bs-logger "^0.2.6" - ejs "^3.1.10" - fast-json-stable-stringify "^2.1.0" - json5 "^2.2.3" - lodash.memoize "^4.1.2" - make-error "^1.3.6" - semver "^7.7.2" - type-fest "^4.41.0" - yargs-parser "^21.1.1" - -tsconfig-paths@^3.15.0: - version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" - integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^2.4.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^4.41.0: - version "4.41.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" - integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== - -typed-array-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" - integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - is-typed-array "^1.1.10" - -typed-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" - integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-typed-array "^1.1.13" - -typed-array-buffer@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" - integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== - dependencies: - call-bound "^1.0.3" - es-errors "^1.3.0" - is-typed-array "^1.1.14" - -typed-array-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" - integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" - -typed-array-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" - integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - -typed-array-byte-length@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce" - integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== - dependencies: - call-bind "^1.0.8" - for-each "^0.3.3" - gopd "^1.2.0" - has-proto "^1.2.0" - is-typed-array "^1.1.14" - -typed-array-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" - integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== - 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.10" - -typed-array-byte-offset@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" - integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - -typed-array-byte-offset@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355" - integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.8" - for-each "^0.3.3" - gopd "^1.2.0" - has-proto "^1.2.0" - is-typed-array "^1.1.15" - reflect.getprototypeof "^1.0.9" - -typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - is-typed-array "^1.1.9" - -typed-array-length@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" - integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - possible-typed-array-names "^1.0.0" - -typed-array-length@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d" - integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - is-typed-array "^1.1.13" - possible-typed-array-names "^1.0.0" - reflect.getprototypeof "^1.0.6" - -typescript@*: - version "5.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" - integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - 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" - -unbox-primitive@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2" - integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== - dependencies: - call-bound "^1.0.3" - has-bigints "^1.0.2" - has-symbols "^1.1.0" - which-boxed-primitive "^1.1.1" - -undici-types@~6.21.0: - version "6.21.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" - integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -unrs-resolver@^1.7.11: - version "1.10.1" - resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.10.1.tgz#ac9a24c598cf43231f13db0ab8463430183b563f" - integrity sha512-EFrL7Hw4kmhZdwWO3dwwFJo6hO3FXuQ6Bg8BK/faHZ9m1YxqBS31BNSTxklIQkxK/4LlV8zTYnPsIRLBzTzjCA== - dependencies: - napi-postinstall "^0.3.0" - optionalDependencies: - "@unrs/resolver-binding-android-arm-eabi" "1.10.1" - "@unrs/resolver-binding-android-arm64" "1.10.1" - "@unrs/resolver-binding-darwin-arm64" "1.10.1" - "@unrs/resolver-binding-darwin-x64" "1.10.1" - "@unrs/resolver-binding-freebsd-x64" "1.10.1" - "@unrs/resolver-binding-linux-arm-gnueabihf" "1.10.1" - "@unrs/resolver-binding-linux-arm-musleabihf" "1.10.1" - "@unrs/resolver-binding-linux-arm64-gnu" "1.10.1" - "@unrs/resolver-binding-linux-arm64-musl" "1.10.1" - "@unrs/resolver-binding-linux-ppc64-gnu" "1.10.1" - "@unrs/resolver-binding-linux-riscv64-gnu" "1.10.1" - "@unrs/resolver-binding-linux-riscv64-musl" "1.10.1" - "@unrs/resolver-binding-linux-s390x-gnu" "1.10.1" - "@unrs/resolver-binding-linux-x64-gnu" "1.10.1" - "@unrs/resolver-binding-linux-x64-musl" "1.10.1" - "@unrs/resolver-binding-wasm32-wasi" "1.10.1" - "@unrs/resolver-binding-win32-arm64-msvc" "1.10.1" - "@unrs/resolver-binding-win32-ia32-msvc" "1.10.1" - "@unrs/resolver-binding-win32-x64-msvc" "1.10.1" - -update-browserslist-db@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" - integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== - dependencies: - escalade "^3.1.2" - picocolors "^1.0.1" - -update-browserslist-db@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" - integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== - dependencies: - escalade "^3.2.0" - picocolors "^1.1.1" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -v8-to-istanbul@^9.0.1: - version "9.2.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" - integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e" - integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== - dependencies: - is-bigint "^1.1.0" - is-boolean-object "^1.2.1" - is-number-object "^1.1.1" - is-string "^1.1.1" - is-symbol "^1.1.1" - -which-builtin-type@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e" - integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q== - dependencies: - call-bound "^1.0.2" - function.prototype.name "^1.1.6" - has-tostringtag "^1.0.2" - is-async-function "^2.0.0" - is-date-object "^1.1.0" - is-finalizationregistry "^1.1.0" - is-generator-function "^1.0.10" - is-regex "^1.2.1" - is-weakref "^1.0.2" - isarray "^2.0.5" - which-boxed-primitive "^1.1.0" - which-collection "^1.0.2" - which-typed-array "^1.1.16" - -which-collection@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" - integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== - dependencies: - is-map "^2.0.3" - is-set "^2.0.3" - is-weakmap "^2.0.2" - is-weakset "^2.0.3" - -which-typed-array@^1.1.11, which-typed-array@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" - integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.4" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - -which-typed-array@^1.1.14, which-typed-array@^1.1.15: - version "1.1.15" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" - integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.2" - -which-typed-array@^1.1.16, which-typed-array@^1.1.19: - version "1.1.19" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" - integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.8" - call-bound "^1.0.4" - for-each "^0.3.5" - get-proto "^1.0.1" - gopd "^1.2.0" - has-tostringtag "^1.0.2" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" - integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^4.0.1" - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - 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.5" - yargs-parser "^21.1.1" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@ampproject/remapping@npm:^2.2.0": + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/code-frame@npm:7.27.1" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.27.1" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/5dd9a18baa5fce4741ba729acc3a3272c49c25cb8736c4b18e113099520e7ef7b545a4096a26d600e4416157e63e87d66db46aa3fbf0a5f2286da2705c12da00 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.27.2, @babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/compat-data@npm:7.28.0" + checksum: 10c0/c4e527302bcd61052423f757355a71c3bc62362bac13f7f130de16e439716f66091ff5bdecda418e8fa0271d4c725f860f0ee23ab7bf6e769f7a8bb16dfcb531 + languageName: node + linkType: hard + +"@babel/core@npm:^7.23.9, @babel/core@npm:^7.27.4": + version: 7.28.0 + resolution: "@babel/core@npm:7.28.0" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.28.0" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-module-transforms": "npm:^7.27.3" + "@babel/helpers": "npm:^7.27.6" + "@babel/parser": "npm:^7.28.0" + "@babel/template": "npm:^7.27.2" + "@babel/traverse": "npm:^7.28.0" + "@babel/types": "npm:^7.28.0" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/423302e7c721e73b1c096217880272e02020dfb697a55ccca60ad01bba90037015f84d0c20c6ce297cf33a19bb704bc5c2b3d3095f5284dfa592bd1de0b9e8c3 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/generator@npm:7.28.0" + dependencies: + "@babel/parser": "npm:^7.28.0" + "@babel/types": "npm:^7.28.0" + "@jridgewell/gen-mapping": "npm:^0.3.12" + "@jridgewell/trace-mapping": "npm:^0.3.28" + jsesc: "npm:^3.0.2" + checksum: 10c0/1b3d122268ea3df50fde707ad864d9a55c72621357d5cebb972db3dd76859c45810c56e16ad23123f18f80cc2692f5a015d2858361300f0f224a05dc43d36a92 + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.27.1, @babel/helper-annotate-as-pure@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/helper-annotate-as-pure@npm:7.27.3" + dependencies: + "@babel/types": "npm:^7.27.3" + checksum: 10c0/94996ce0a05b7229f956033e6dcd69393db2b0886d0db6aff41e704390402b8cdcca11f61449cb4f86cfd9e61b5ad3a73e4fa661eeed7846b125bd1c33dbc633 + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/helper-compilation-targets@npm:7.27.2" + dependencies: + "@babel/compat-data": "npm:^7.27.2" + "@babel/helper-validator-option": "npm:^7.27.1" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/f338fa00dcfea931804a7c55d1a1c81b6f0a09787e528ec580d5c21b3ecb3913f6cb0f361368973ce953b824d910d3ac3e8a8ee15192710d3563826447193ad1 + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-create-class-features-plugin@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-member-expression-to-functions": "npm:^7.27.1" + "@babel/helper-optimise-call-expression": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/4ee199671d6b9bdd4988aa2eea4bdced9a73abfc831d81b00c7634f49a8fc271b3ceda01c067af58018eb720c6151322015d463abea7072a368ee13f35adbb4c + languageName: node + linkType: hard + +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + regexpu-core: "npm:^6.2.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/591fe8bd3bb39679cc49588889b83bd628d8c4b99c55bafa81e80b1e605a348b64da955e3fd891c4ba3f36fd015367ba2eadea22af6a7de1610fbb5bcc2d3df0 + languageName: node + linkType: hard + +"@babel/helper-define-polyfill-provider@npm:^0.6.5": + version: 0.6.5 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.5" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" + debug: "npm:^4.4.1" + lodash.debounce: "npm:^4.0.8" + resolve: "npm:^1.22.10" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/4886a068d9ca1e70af395340656a9dda33c50502c67eed39ff6451785f370bdfc6e57095b90cb92678adcd4a111ca60909af53d3a741120719c5604346ae409e + languageName: node + linkType: hard + +"@babel/helper-globals@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/helper-globals@npm:7.28.0" + checksum: 10c0/5a0cd0c0e8c764b5f27f2095e4243e8af6fa145daea2b41b53c0c1414fe6ff139e3640f4e2207ae2b3d2153a1abd346f901c26c290ee7cb3881dd922d4ee9232 + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-member-expression-to-functions@npm:7.27.1" + dependencies: + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/5762ad009b6a3d8b0e6e79ff6011b3b8fdda0fefad56cfa8bfbe6aa02d5a8a8a9680a45748fe3ac47e735a03d2d88c0a676e3f9f59f20ae9fadcc8d51ccd5a53 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-module-imports@npm:7.27.1" + dependencies: + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/e00aace096e4e29290ff8648455c2bc4ed982f0d61dbf2db1b5e750b9b98f318bf5788d75a4f974c151bd318fd549e81dbcab595f46b14b81c12eda3023f51e8 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/helper-module-transforms@npm:7.27.3" + dependencies: + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.3" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/fccb4f512a13b4c069af51e1b56b20f54024bcf1591e31e978a30f3502567f34f90a80da6a19a6148c249216292a8074a0121f9e52602510ef0f32dbce95ca01 + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-optimise-call-expression@npm:7.27.1" + dependencies: + "@babel/types": "npm:^7.27.1" + checksum: 10c0/6b861e7fcf6031b9c9fc2de3cd6c005e94a459d6caf3621d93346b52774925800ca29d4f64595a5ceacf4d161eb0d27649ae385110ed69491d9776686fa488e6 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.27.1 + resolution: "@babel/helper-plugin-utils@npm:7.27.1" + checksum: 10c0/94cf22c81a0c11a09b197b41ab488d416ff62254ce13c57e62912c85700dc2e99e555225787a4099ff6bae7a1812d622c80fbaeda824b79baa10a6c5ac4cf69b + languageName: node + linkType: hard + +"@babel/helper-remap-async-to-generator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-remap-async-to-generator@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-wrap-function": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/5ba6258f4bb57c7c9fa76b55f416b2d18c867b48c1af4f9f2f7cd7cc933fe6da7514811d08ceb4972f1493be46f4b69c40282b811d1397403febae13c2ec57b5 + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-replace-supers@npm:7.27.1" + dependencies: + "@babel/helper-member-expression-to-functions": "npm:^7.27.1" + "@babel/helper-optimise-call-expression": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/4f2eaaf5fcc196580221a7ccd0f8873447b5d52745ad4096418f6101a1d2e712e9f93722c9a32bc9769a1dc197e001f60d6f5438d4dfde4b9c6a9e4df719354c + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.27.1" + dependencies: + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/f625013bcdea422c470223a2614e90d2c1cc9d832e97f32ca1b4f82b34bb4aa67c3904cb4b116375d3b5b753acfb3951ed50835a1e832e7225295c7b0c24dff7 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-string-parser@npm:7.27.1" + checksum: 10c0/8bda3448e07b5583727c103560bcf9c4c24b3c1051a4c516d4050ef69df37bb9a4734a585fe12725b8c2763de0a265aa1e909b485a4e3270b7cfd3e4dbe4b602 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-identifier@npm:7.27.1" + checksum: 10c0/c558f11c4871d526498e49d07a84752d1800bf72ac0d3dad100309a2eaba24efbf56ea59af5137ff15e3a00280ebe588560534b0e894a4750f8b1411d8f78b84 + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-option@npm:7.27.1" + checksum: 10c0/6fec5f006eba40001a20f26b1ef5dbbda377b7b68c8ad518c05baa9af3f396e780bdfded24c4eef95d14bb7b8fd56192a6ed38d5d439b97d10efc5f1a191d148 + languageName: node + linkType: hard + +"@babel/helper-wrap-function@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-wrap-function@npm:7.27.1" + dependencies: + "@babel/template": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/c472f75c0951bc657ab0a117538c7c116566ae7579ed47ac3f572c42dc78bd6f1e18f52ebe80d38300c991c3fcaa06979e2f8864ee919369dabd59072288de30 + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.27.6": + version: 7.28.2 + resolution: "@babel/helpers@npm:7.28.2" + dependencies: + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.28.2" + checksum: 10c0/f3e7b21517e2699c4ca193663ecfb1bf1b2ae2762d8ba4a9f1786feaca0d6984537fc60bf2206e92c43640a6dada6b438f523cc1ad78610d0151aeb061b37f63 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/parser@npm:7.28.0" + dependencies: + "@babel/types": "npm:^7.28.0" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/c2ef81d598990fa949d1d388429df327420357cb5200271d0d0a2784f1e6d54afc8301eb8bdf96d8f6c77781e402da93c7dc07980fcc136ac5b9d5f1fce701b5 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/7dfffa978ae1cd179641a7c4b4ad688c6828c2c58ec96b118c2fb10bc3715223de6b88bff1ebff67056bb5fccc568ae773e3b83c592a1b843423319f80c99ebd + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/2cd7a55a856e5e59bbd9484247c092a41e0d9f966778e7019da324d9e0928892d26afc4fbb2ac3d76a3c5a631cd3cf0d72dd2653b44f634f6c663b9e6f80aacd + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/cf29835498c4a25bd470908528919729a0799b2ec94e89004929a5532c94a5e4b1a49bc5d6673a22e5afe05d08465873e14ee3b28c42eb3db489cdf5ca47c680 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + "@babel/plugin-transform-optional-chaining": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.13.0 + checksum: 10c0/eddcd056f76e198868cbff883eb148acfade8f0890973ab545295df0c08e39573a72e65372bcc0b0bfadba1b043fe1aea6b0907d0b4889453ac154c404194ebc + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/b94e6c3fc019e988b1499490829c327a1067b4ddea8ad402f6d0554793c9124148c2125338c723661b6dff040951abc1f092afbf3f2d234319cd580b68e52445 + languageName: node + linkType: hard + +"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": + version: 7.21.0-placeholder-for-preset-env.2 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 + languageName: node + linkType: hard + +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 + languageName: node + linkType: hard + +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/686891b81af2bc74c39013655da368a480f17dd237bf9fbc32048e5865cb706d5a8f65438030da535b332b1d6b22feba336da8fa931f663b6b34e13147d12dde + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.12.13" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/06a954ee672f7a7c44d52b6e55598da43a7064e80df219765c51c37a0692641277e90411028f7cae4f4d1dedeed084f0c453576fa421c35a81f1603c5e3e0146 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e66f7a761b8360419bbb93ab67d87c8a97465ef4637a985ff682ce7ba6918b34b29d81190204cf908d0933058ee7b42737423cd8a999546c21b3aabad4affa9a + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bc5afe6a458d5f0492c02a54ad98c5756a0c13bd6d20609aae65acd560a9e141b0876da5f358dce34ea136f271c1016df58b461184d7ae9c4321e0f98588bc84 + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/11589b4c89c66ef02d57bf56c6246267851ec0c361f58929327dc3e070b0dab644be625bbe7fb4c4df30c3634bfdfe31244e1f517be397d2def1487dbbe3c37d + languageName: node + linkType: hard + +"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/19abd7a7d11eef58c9340408a4c2594503f6c4eaea1baa7b0e5fbdda89df097e50663edb3448ad2300170b39efca98a75e5767af05cad3b0facb4944326896a3 + languageName: node + linkType: hard + +"@babel/plugin-transform-async-generator-functions@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.28.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-remap-async-to-generator": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/739d577e649d7d7b9845dc309e132964327ab3eaea43ad04d04a7dcb977c63f9aa9a423d1ca39baf10939128d02f52e6fda39c834fb9f1753785b1497e72c4dc + languageName: node + linkType: hard + +"@babel/plugin-transform-async-to-generator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.27.1" + dependencies: + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-remap-async-to-generator": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e76b1f6f9c3bbf72e17d7639406d47f09481806de4db99a8de375a0bb40957ea309b20aa705f0c25ab1d7c845e3f365af67eafa368034521151a0e352a03ef2f + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoped-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3313130ba3bf0699baad0e60da1c8c3c2f0c2c0a7039cd0063e54e72e739c33f1baadfc9d8c73b3fea8c85dd7250c3964fb09c8e1fa62ba0b24a9fefe0a8dbde + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-block-scoping@npm:7.28.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/787d85e72a92917e735aa54e23062fa777031f8a07046e67f5026eff3d91e64eb535575dd1df917b0011bee014ae51287478af14c1d4ba60bc81e326bc044cfc + languageName: node + linkType: hard + +"@babel/plugin-transform-class-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/cc0662633c0fe6df95819fef223506ddf26c369c8d64ab21a728d9007ec866bf9436a253909819216c24a82186b6ccbc1ec94d7aaf3f82df227c7c02fa6a704b + languageName: node + linkType: hard + +"@babel/plugin-transform-class-static-block@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-class-static-block@npm:7.27.1" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 10c0/396997dd81fc1cf242b921e337d25089d6b9dc3596e81322ff11a6359326dc44f2f8b82dcc279c2e514cafaf8964dc7ed39e9fab4b8af1308b57387d111f6a20 + languageName: node + linkType: hard + +"@babel/plugin-transform-classes@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-classes@npm:7.28.0" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3b213b43104fe99dd7e79401a86d09e545836e057a70ffe77e8196a87bf67ae167e502ae90afdf0d1a2be683be5652514aaeda743bd984e583523dd8ecfef887 + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-computed-properties@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/template": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e09a12f8c8ae0e6a6144c102956947b4ec05f6c844169121d0ec4529c2d30ad1dc59fee67736193b87a402f44552c888a519a680a31853bdb4d34788c28af3b0 + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-destructuring@npm:7.28.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/cc7ccafa952b3ff7888544d5688cfafaba78c69ce1e2f04f3233f4f78c9de5e46e9695f5ea42c085b0c0cfa39b10f366d362a2be245b6d35b66d3eb1d427ccb2 + languageName: node + linkType: hard + +"@babel/plugin-transform-dotall-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f9caddfad9a551b4dabe0dcb7c040f458fbaaa7bbb44200c20198b32c8259be8e050e58d2c853fdac901a4cfe490b86aa857036d8d461b192dd010d0e242dedb + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-keys@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/22a822e5342b7066f83eaedc4fd9bb044ac6bc68725484690b33ba04a7104980e43ea3229de439286cb8db8e7db4a865733a3f05123ab58a10f189f03553746f + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/121502a252b3206913e1e990a47fea34397b4cbf7804d4cd872d45961bc45b603423f60ca87f3a3023a62528f5feb475ac1c9ec76096899ec182fcb135eba375 + languageName: node + linkType: hard + +"@babel/plugin-transform-dynamic-import@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8dcd3087aca134b064fc361d2cc34eec1f900f6be039b6368104afcef10bb75dea726bb18cabd046716b89b0edaa771f50189fa16bc5c5914a38cbcf166350f7 + languageName: node + linkType: hard + +"@babel/plugin-transform-explicit-resource-management@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.28.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3baa706af3112adf2ae0c7ec0dc61b63dd02695eb5582f3c3a2b2d05399c6aa7756f55e7bbbd5412e613a6ba1dd6b6736904074b4d7ebd6b45a1e3f9145e4094 + languageName: node + linkType: hard + +"@babel/plugin-transform-exponentiation-operator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/953d21e01fed76da8e08fb5094cade7bf8927c1bb79301916bec2db0593b41dbcfbca1024ad5db886b72208a93ada8f57a219525aad048cf15814eeb65cf760d + languageName: node + linkType: hard + +"@babel/plugin-transform-export-namespace-from@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d7165cad11f571a54c8d9263d6c6bf2b817aff4874f747cb51e6e49efb32f2c9b37a6850cdb5e3b81e0b638141bb77dc782a6ec1a94128859fbdf7767581e07c + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-for-of@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4635763173a23aae24480681f2b0996b4f54a0cb2368880301a1801638242e263132d1e8adbe112ab272913d1d900ee0d6f7dea79443aef9d3325168cd88b3fb + languageName: node + linkType: hard + +"@babel/plugin-transform-function-name@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-function-name@npm:7.27.1" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5abdc7b5945fbd807269dcc6e76e52b69235056023b0b35d311e8f5dfd6c09d9f225839798998fc3b663f50cf701457ddb76517025a0d7a5474f3fe56e567a4c + languageName: node + linkType: hard + +"@babel/plugin-transform-json-strings@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-json-strings@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2379714aca025516452a7c1afa1ca42a22b9b51a5050a653cc6198a51665ab82bdecf36106d32d731512706a1e373c5637f5ff635737319aa42f3827da2326d6 + languageName: node + linkType: hard + +"@babel/plugin-transform-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c40dc3eb2f45a92ee476412314a40e471af51a0f51a24e91b85cef5fc59f4fe06758088f541643f07f949d2c67ee7bdce10e11c5ec56791ae09b15c3b451eeca + languageName: node + linkType: hard + +"@babel/plugin-transform-logical-assignment-operators@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5b0abc7c0d09d562bf555c646dce63a30288e5db46fd2ce809a61d064415da6efc3b2b3c59b8e4fe98accd072c89a2f7c3765b400e4bf488651735d314d9feeb + languageName: node + linkType: hard + +"@babel/plugin-transform-member-expression-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0874ccebbd1c6a155e5f6b3b29729fade1221b73152567c1af1e1a7c12848004dffecbd7eded6dc463955120040ae57c17cb586b53fb5a7a27fcd88177034c30 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-amd@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-amd@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/76e86cd278b6a3c5b8cca8dfb3428e9cd0c81a5df7096e04c783c506696b916a9561386d610a9d846ef64804640e0bd818ea47455fed0ee89b7f66c555b29537 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4def972dcd23375a266ea1189115a4ff61744b2c9366fc1de648b3fab2c650faf1a94092de93a33ff18858d2e6c4dddeeee5384cb42ba0129baeab01a5cdf1e2 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-systemjs@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f16fca62d144d9cbf558e7b5f83e13bb6d0f21fdeff3024b0cecd42ffdec0b4151461da42bd0963512783ece31aafa5ffe03446b4869220ddd095b24d414e2b5 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-umd@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-umd@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e5962a8874889da2ab1aa32eb93ec21d419c7423c766e4befb39b4bb512b9ad44b47837b6cd1c8f1065445cbbcc6dc2be10298ac6e734e5ca1059fc23698daed + languageName: node + linkType: hard + +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/8eaa8c9aee00a00f3bd8bd8b561d3f569644d98cb2cfe3026d7398aabf9b29afd62f24f142b4112fa1f572d9b0e1928291b099cde59f56d6b59f4d565e58abf2 + languageName: node + linkType: hard + +"@babel/plugin-transform-new-target@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-new-target@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9b0581412fcc5ab1b9a2d86a0c5407bd959391f0a1e77a46953fef9f7a57f3f4020d75f71098c5f9e5dcc680a87f9fd99b3205ab12e25ef8c19eed038c1e4b28 + languageName: node + linkType: hard + +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a435fc03aaa65c6ef8e99b2d61af0994eb5cdd4a28562d78c3b0b0228ca7e501aa255e1dff091a6996d7d3ea808eb5a65fd50ecd28dfb10687a8a1095dcadc7a + languageName: node + linkType: hard + +"@babel/plugin-transform-numeric-separator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b72cbebbfe46fcf319504edc1cf59f3f41c992dd6840db766367f6a1d232cd2c52143c5eaf57e0316710bee251cae94be97c6d646b5022fcd9274ccb131b470c + languageName: node + linkType: hard + +"@babel/plugin-transform-object-rest-spread@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.0" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.28.0" + "@babel/plugin-transform-parameters": "npm:^7.27.7" + "@babel/traverse": "npm:^7.28.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/360dc6fd5285ee5e1d3be8a1fb0decd120b2a1726800317b4ab48b7c91616247030239b7fa06ceaa1a8a586fde1e143c24d45f8d41956876099d97d664f8ef1e + languageName: node + linkType: hard + +"@babel/plugin-transform-object-super@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-object-super@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/efa2d092ef55105deb06d30aff4e460c57779b94861188128489b72378bf1f0ab0f06a4a4d68b9ae2a59a79719fbb2d148b9a3dca19ceff9c73b1f1a95e0527c + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-catch-binding@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/807a4330f1fac08e2682d57bc82e714868fc651c8876f9a8b3a3fd8f53c129e87371f8243e712ac7dae11e090b737a2219a02fe1b6459a29e664fa073c3277bb + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5b18ff5124e503f0a25d6b195be7351a028b3992d6f2a91fb4037e2a2c386400d66bc1df8f6df0a94c708524f318729e81a95c41906e5a7919a06a43e573a525 + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.27.7": + version: 7.27.7 + resolution: "@babel/plugin-transform-parameters@npm:7.27.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f2da3804e047d9f1cfb27be6c014e2c7f6cf5e1e38290d1cb3cb2607859e3d6facb4ee8c8c1e336e9fbb440091a174ce95ce156582d7e8bf9c0e735d11681f0f + languageName: node + linkType: hard + +"@babel/plugin-transform-private-methods@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-private-methods@npm:7.27.1" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/232bedfe9d28df215fb03cc7623bdde468b1246bdd6dc24465ff4bf9cc5f5a256ae33daea1fafa6cc59705e4d29da9024bb79baccaa5cd92811ac5db9b9244f2 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-property-in-object@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a8c4536273ca716dcc98e74ea25ca76431528554922f184392be3ddaf1761d4aa0e06f1311577755bd1613f7054fb51d29de2ada1130f743d329170a1aa1fe56 + languageName: node + linkType: hard + +"@babel/plugin-transform-property-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-property-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/15713a87edd6db620d6e66eb551b4fbfff5b8232c460c7c76cedf98efdc5cd21080c97040231e19e06594c6d7dfa66e1ab3d0951e29d5814fb25e813f6d6209c + languageName: node + linkType: hard + +"@babel/plugin-transform-regenerator@npm:^7.28.0": + version: 7.28.1 + resolution: "@babel/plugin-transform-regenerator@npm:7.28.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6c9e6eb80ce9c0bde0876c80979e078fbc85dc802272cba4ee72b5b1c858472e38167c418917e4f0d4384ce888706d95544a8d266880c0e199e167e078168b67 + languageName: node + linkType: hard + +"@babel/plugin-transform-regexp-modifiers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/31ae596ab56751cf43468a6c0a9d6bc3521d306d2bee9c6957cdb64bea53812ce24bd13a32f766150d62b737bca5b0650b2c62db379382fff0dccbf076055c33 + languageName: node + linkType: hard + +"@babel/plugin-transform-reserved-words@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-reserved-words@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e1a87691cce21a644a474d7c9a8107d4486c062957be32042d40f0a3d0cc66e00a3150989655019c255ff020d2640ac16aaf544792717d586f219f3bad295567 + languageName: node + linkType: hard + +"@babel/plugin-transform-shorthand-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bd5544b89520a22c41a6df5ddac9039821d3334c0ef364d18b0ba9674c5071c223bcc98be5867dc3865cb10796882b7594e2c40dedaff38e1b1273913fe353e1 + languageName: node + linkType: hard + +"@babel/plugin-transform-spread@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-spread@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b34fc58b33bd35b47d67416655c2cbc8578fbb3948b4592bc15eb6d8b4046986e25c06e3b9929460fa4ab08e9653582415e7ef8b87d265e1239251bdf5a4c162 + languageName: node + linkType: hard + +"@babel/plugin-transform-sticky-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5698df2d924f0b1b7bdb7ef370e83f99ed3f0964eb3b9c27d774d021bee7f6d45f9a73e2be369d90b4aff1603ce29827f8743f091789960e7669daf9c3cda850 + languageName: node + linkType: hard + +"@babel/plugin-transform-template-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-template-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c90f403e42ef062b60654d1c122c70f3ec6f00c2f304b0931ebe6d0b432498ef8a5ef9266ddf00debc535f8390842207e44d3900eff1d2bab0cc1a700f03e083 + languageName: node + linkType: hard + +"@babel/plugin-transform-typeof-symbol@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a13c68015311fefa06a51830bc69d5badd06c881b13d5cf9ba04bf7c73e3fc6311cc889e18d9645ce2a64a79456dc9c7be88476c0b6802f62a686cb6f662ecd6 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-escapes@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a6809e0ca69d77ee9804e0c1164e8a2dea5e40718f6dcf234aeddf7292e7414f7ee331d87f17eb6f160823a329d1d6751bd49b35b392ac4a6efc032e4d3038d8 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-property-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a332bc3cb3eeea67c47502bc52d13a0f8abae5a7bfcb08b93a8300ddaff8d9e1238f912969494c1b494c1898c6f19687054440706700b6d12cb0b90d88beb4d0 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6abda1bcffb79feba6f5c691859cdbe984cc96481ea65d5af5ba97c2e843154005f0886e25006a37a2d213c0243506a06eaeafd93a040dbe1f79539016a0d17a + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-sets-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/236645f4d0a1fba7c18dc8ffe3975933af93e478f2665650c2d91cf528cfa1587cde5cfe277e0e501fc03b5bf57638369575d6539cef478632fb93bd7d7d7178 + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.27.2": + version: 7.28.0 + resolution: "@babel/preset-env@npm:7.28.0" + dependencies: + "@babel/compat-data": "npm:^7.28.0" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-option": "npm:^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.27.1" + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.27.1" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.27.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.27.1" + "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions": "npm:^7.27.1" + "@babel/plugin-syntax-import-attributes": "npm:^7.27.1" + "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" + "@babel/plugin-transform-arrow-functions": "npm:^7.27.1" + "@babel/plugin-transform-async-generator-functions": "npm:^7.28.0" + "@babel/plugin-transform-async-to-generator": "npm:^7.27.1" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.27.1" + "@babel/plugin-transform-block-scoping": "npm:^7.28.0" + "@babel/plugin-transform-class-properties": "npm:^7.27.1" + "@babel/plugin-transform-class-static-block": "npm:^7.27.1" + "@babel/plugin-transform-classes": "npm:^7.28.0" + "@babel/plugin-transform-computed-properties": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.28.0" + "@babel/plugin-transform-dotall-regex": "npm:^7.27.1" + "@babel/plugin-transform-duplicate-keys": "npm:^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-dynamic-import": "npm:^7.27.1" + "@babel/plugin-transform-explicit-resource-management": "npm:^7.28.0" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.27.1" + "@babel/plugin-transform-export-namespace-from": "npm:^7.27.1" + "@babel/plugin-transform-for-of": "npm:^7.27.1" + "@babel/plugin-transform-function-name": "npm:^7.27.1" + "@babel/plugin-transform-json-strings": "npm:^7.27.1" + "@babel/plugin-transform-literals": "npm:^7.27.1" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.27.1" + "@babel/plugin-transform-member-expression-literals": "npm:^7.27.1" + "@babel/plugin-transform-modules-amd": "npm:^7.27.1" + "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" + "@babel/plugin-transform-modules-systemjs": "npm:^7.27.1" + "@babel/plugin-transform-modules-umd": "npm:^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-new-target": "npm:^7.27.1" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.27.1" + "@babel/plugin-transform-numeric-separator": "npm:^7.27.1" + "@babel/plugin-transform-object-rest-spread": "npm:^7.28.0" + "@babel/plugin-transform-object-super": "npm:^7.27.1" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.27.1" + "@babel/plugin-transform-optional-chaining": "npm:^7.27.1" + "@babel/plugin-transform-parameters": "npm:^7.27.7" + "@babel/plugin-transform-private-methods": "npm:^7.27.1" + "@babel/plugin-transform-private-property-in-object": "npm:^7.27.1" + "@babel/plugin-transform-property-literals": "npm:^7.27.1" + "@babel/plugin-transform-regenerator": "npm:^7.28.0" + "@babel/plugin-transform-regexp-modifiers": "npm:^7.27.1" + "@babel/plugin-transform-reserved-words": "npm:^7.27.1" + "@babel/plugin-transform-shorthand-properties": "npm:^7.27.1" + "@babel/plugin-transform-spread": "npm:^7.27.1" + "@babel/plugin-transform-sticky-regex": "npm:^7.27.1" + "@babel/plugin-transform-template-literals": "npm:^7.27.1" + "@babel/plugin-transform-typeof-symbol": "npm:^7.27.1" + "@babel/plugin-transform-unicode-escapes": "npm:^7.27.1" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.27.1" + "@babel/preset-modules": "npm:0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2: "npm:^0.4.14" + babel-plugin-polyfill-corejs3: "npm:^0.13.0" + babel-plugin-polyfill-regenerator: "npm:^0.6.5" + core-js-compat: "npm:^3.43.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f343103b8f0e8da5be4ae031aff8bf35da4764997af4af78ae9506f421b785dd45da1bc09f845b1fc308c8b7d134aead4a1f89e7fb6e213cd2f9fe1d2aa78bc9 + languageName: node + linkType: hard + +"@babel/preset-modules@npm:0.1.6-no-external-plugins": + version: 0.1.6-no-external-plugins + resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@babel/types": "npm:^7.4.4" + esutils: "npm:^2.0.2" + peerDependencies: + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/9d02f70d7052446c5f3a4fb39e6b632695fb6801e46d31d7f7c5001f7c18d31d1ea8369212331ca7ad4e7877b73231f470b0d559162624128f1b80fe591409e6 + languageName: node + linkType: hard + +"@babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/template@npm:7.27.2" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/parser": "npm:^7.27.2" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/ed9e9022651e463cc5f2cc21942f0e74544f1754d231add6348ff1b472985a3b3502041c0be62dc99ed2d12cfae0c51394bf827452b98a2f8769c03b87aadc81 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.27.3, @babel/traverse@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/traverse@npm:7.28.0" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.28.0" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/parser": "npm:^7.28.0" + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.28.0" + debug: "npm:^4.3.1" + checksum: 10c0/32794402457827ac558173bcebdcc0e3a18fa339b7c41ca35621f9f645f044534d91bb923ff385f5f960f2e495f56ce18d6c7b0d064d2f0ccb55b285fa6bc7b9 + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.0, @babel/types@npm:^7.28.2, @babel/types@npm:^7.4.4": + version: 7.28.2 + resolution: "@babel/types@npm:7.28.2" + dependencies: + "@babel/helper-string-parser": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + checksum: 10c0/24b11c9368e7e2c291fe3c1bcd1ed66f6593a3975f479cbb9dd7b8c8d8eab8a962b0d2fca616c043396ce82500ac7d23d594fbbbd013828182c01596370a0b10 + languageName: node + linkType: hard + +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 10c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 + languageName: node + linkType: hard + +"@emnapi/core@npm:^1.4.3": + version: 1.4.5 + resolution: "@emnapi/core@npm:1.4.5" + dependencies: + "@emnapi/wasi-threads": "npm:1.0.4" + tslib: "npm:^2.4.0" + checksum: 10c0/da4a57f65f325d720d0e0d1a9c6618b90c4c43a5027834a110476984e1d47c95ebaed4d316b5dddb9c0ed9a493ffeb97d1934f9677035f336d8a36c1f3b2818f + languageName: node + linkType: hard + +"@emnapi/runtime@npm:^1.4.3": + version: 1.4.5 + resolution: "@emnapi/runtime@npm:1.4.5" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/37a0278be5ac81e918efe36f1449875cbafba947039c53c65a1f8fc238001b866446fc66041513b286baaff5d6f9bec667f5164b3ca481373a8d9cb65bfc984b + languageName: node + linkType: hard + +"@emnapi/wasi-threads@npm:1.0.4": + version: 1.0.4 + resolution: "@emnapi/wasi-threads@npm:1.0.4" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/2c91a53e62f875800baf035c4d42c9c0d18e5afd9a31ca2aac8b435aeaeaeaac386b5b3d0d0e70aa7a5a9852bbe05106b1f680cd82cce03145c703b423d41313 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.1.2, @eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": + version: 4.7.0 + resolution: "@eslint-community/eslint-utils@npm:4.7.0" + dependencies: + eslint-visitor-keys: "npm:^3.4.3" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/c0f4f2bd73b7b7a9de74b716a664873d08ab71ab439e51befe77d61915af41a81ecec93b408778b3a7856185244c34c2c8ee28912072ec14def84ba2dec70adf + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.11.0, @eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^9.6.0" + globals: "npm:^13.19.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 + languageName: node + linkType: hard + +"@eslint/js@npm:8.57.1": + version: 8.57.1 + resolution: "@eslint/js@npm:8.57.1" + checksum: 10c0/b489c474a3b5b54381c62e82b3f7f65f4b8a5eaaed126546520bf2fede5532a8ed53212919fed1e9048dcf7f37167c8561d58d0ba4492a4244004e7793805223 + languageName: node + linkType: hard + +"@humanwhocodes/config-array@npm:^0.13.0": + version: 0.13.0 + resolution: "@humanwhocodes/config-array@npm:0.13.0" + dependencies: + "@humanwhocodes/object-schema": "npm:^2.0.3" + debug: "npm:^4.3.1" + minimatch: "npm:^3.0.5" + checksum: 10c0/205c99e756b759f92e1f44a3dc6292b37db199beacba8f26c2165d4051fe73a4ae52fdcfd08ffa93e7e5cb63da7c88648f0e84e197d154bbbbe137b2e0dd332e + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^2.0.3": + version: 2.0.3 + resolution: "@humanwhocodes/object-schema@npm:2.0.3" + checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: "npm:^7.0.4" + checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 + languageName: node + linkType: hard + +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: "npm:^5.3.1" + find-up: "npm:^4.1.0" + get-package-type: "npm:^0.1.0" + js-yaml: "npm:^3.13.1" + resolve-from: "npm:^5.0.0" + checksum: 10c0/dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a + languageName: node + linkType: hard + +"@jest/console@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/console@npm:30.0.5" + dependencies: + "@jest/types": "npm:30.0.5" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + jest-message-util: "npm:30.0.5" + jest-util: "npm:30.0.5" + slash: "npm:^3.0.0" + checksum: 10c0/1400e9ee281dd070f543f8f8696b9aca4ba1f81d5cbfb3cae030664012ff5961c76ac2c8ccee172e416e15f88af3b10840548adbee4de0ec63100d44416b17ef + languageName: node + linkType: hard + +"@jest/core@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/core@npm:30.0.5" + dependencies: + "@jest/console": "npm:30.0.5" + "@jest/pattern": "npm:30.0.1" + "@jest/reporters": "npm:30.0.5" + "@jest/test-result": "npm:30.0.5" + "@jest/transform": "npm:30.0.5" + "@jest/types": "npm:30.0.5" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.3.2" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + exit-x: "npm:^0.2.2" + graceful-fs: "npm:^4.2.11" + jest-changed-files: "npm:30.0.5" + jest-config: "npm:30.0.5" + jest-haste-map: "npm:30.0.5" + jest-message-util: "npm:30.0.5" + jest-regex-util: "npm:30.0.1" + jest-resolve: "npm:30.0.5" + jest-resolve-dependencies: "npm:30.0.5" + jest-runner: "npm:30.0.5" + jest-runtime: "npm:30.0.5" + jest-snapshot: "npm:30.0.5" + jest-util: "npm:30.0.5" + jest-validate: "npm:30.0.5" + jest-watcher: "npm:30.0.5" + micromatch: "npm:^4.0.8" + pretty-format: "npm:30.0.5" + slash: "npm:^3.0.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/d3437dca1fccbb44c6c8a327b93e510e10999745b7c7dae94ad88d4fa4ce6d3c823e49d17caf79560b69a7db91fc10c7443a8014f8178622a0b11514b5106aa6 + languageName: node + linkType: hard + +"@jest/diff-sequences@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/diff-sequences@npm:30.0.1" + checksum: 10c0/3a840404e6021725ef7f86b11f7b2d13dd02846481264db0e447ee33b7ee992134e402cdc8b8b0ac969d37c6c0183044e382dedee72001cdf50cfb3c8088de74 + languageName: node + linkType: hard + +"@jest/environment@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/environment@npm:30.0.5" + dependencies: + "@jest/fake-timers": "npm:30.0.5" + "@jest/types": "npm:30.0.5" + "@types/node": "npm:*" + jest-mock: "npm:30.0.5" + checksum: 10c0/e403b6f98fa3e39dd6462fa192e3bd55e9ac9c2322ca4471b9342495913a90ecaa5fc53238d4ad8a0dca7d53aa4b9de122721234e36f3a0445031c25757a3178 + languageName: node + linkType: hard + +"@jest/expect-utils@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/expect-utils@npm:30.0.5" + dependencies: + "@jest/get-type": "npm:30.0.1" + checksum: 10c0/d0ee162a1d1816724580bea53e7b422b891af073bdae439e78d04d5db09e6557e334f4c3d2892b9de750a59e79605f55d3ca8dbec9fb2ba33d8b803ed98463ad + languageName: node + linkType: hard + +"@jest/expect@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/expect@npm:30.0.5" + dependencies: + expect: "npm:30.0.5" + jest-snapshot: "npm:30.0.5" + checksum: 10c0/6ff40adf2f2cfa53f7a23bc2b85ae99d3264420e81202d45d1dc198009f4441ee575d910e79e589f69c2dd47e0ef9a3b66018f44760da02d98f474361f7c4d1c + languageName: node + linkType: hard + +"@jest/fake-timers@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/fake-timers@npm:30.0.5" + dependencies: + "@jest/types": "npm:30.0.5" + "@sinonjs/fake-timers": "npm:^13.0.0" + "@types/node": "npm:*" + jest-message-util: "npm:30.0.5" + jest-mock: "npm:30.0.5" + jest-util: "npm:30.0.5" + checksum: 10c0/4c403e624d758780016c2012b23112ff421efd601def289b201c4a5e03c46f995c7c3509d7b0b56dbe17cd5cbc66920734bd976ebe12125d6fd864d71888a50d + languageName: node + linkType: hard + +"@jest/get-type@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/get-type@npm:30.0.1" + checksum: 10c0/92437ae42d0df57e8acc2d067288151439db4752cde4f5e680c73c8a6e34568bbd8c1c81a2f2f9a637a619c2aac8bc87553fb80e31475b59e2ed789a71e5e540 + languageName: node + linkType: hard + +"@jest/globals@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/globals@npm:30.0.5" + dependencies: + "@jest/environment": "npm:30.0.5" + "@jest/expect": "npm:30.0.5" + "@jest/types": "npm:30.0.5" + jest-mock: "npm:30.0.5" + checksum: 10c0/abe8e4b11f30c2885e42afa9e01d4364db8c6de4c3221f411b00a9081d3cc67226f84775efbbd17735dedb391222253f945ee260714d78b2a7304b7afa61b6d8 + languageName: node + linkType: hard + +"@jest/pattern@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/pattern@npm:30.0.1" + dependencies: + "@types/node": "npm:*" + jest-regex-util: "npm:30.0.1" + checksum: 10c0/32c5a7bfb6c591f004dac0ed36d645002ed168971e4c89bd915d1577031672870032594767557b855c5bc330aa1e39a2f54bf150d2ee88a7a0886e9cb65318bc + languageName: node + linkType: hard + +"@jest/reporters@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/reporters@npm:30.0.5" + dependencies: + "@bcoe/v8-coverage": "npm:^0.2.3" + "@jest/console": "npm:30.0.5" + "@jest/test-result": "npm:30.0.5" + "@jest/transform": "npm:30.0.5" + "@jest/types": "npm:30.0.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + collect-v8-coverage: "npm:^1.0.2" + exit-x: "npm:^0.2.2" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.11" + istanbul-lib-coverage: "npm:^3.0.0" + istanbul-lib-instrument: "npm:^6.0.0" + istanbul-lib-report: "npm:^3.0.0" + istanbul-lib-source-maps: "npm:^5.0.0" + istanbul-reports: "npm:^3.1.3" + jest-message-util: "npm:30.0.5" + jest-util: "npm:30.0.5" + jest-worker: "npm:30.0.5" + slash: "npm:^3.0.0" + string-length: "npm:^4.0.2" + v8-to-istanbul: "npm:^9.0.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/9f8a214ff69427b644e26981fa92af49b77819d512ac17d0b4190d1dc110b0bebeb7791faa7548b8097f010b094c3b5e3244e18f3837a3fe8385ff60c7114539 + languageName: node + linkType: hard + +"@jest/schemas@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/schemas@npm:30.0.5" + dependencies: + "@sinclair/typebox": "npm:^0.34.0" + checksum: 10c0/449dcd7ec5c6505e9ac3169d1143937e67044ae3e66a729ce4baf31812dfd30535f2b3b2934393c97cfdf5984ff581120e6b38f62b8560c8b5b7cc07f4175f65 + languageName: node + linkType: hard + +"@jest/snapshot-utils@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/snapshot-utils@npm:30.0.5" + dependencies: + "@jest/types": "npm:30.0.5" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + natural-compare: "npm:^1.4.0" + checksum: 10c0/db270c2d6e216d132c5e0b05d8ff5bbe4fbd4e65b2de4cf94eacb44152e8f17fbbba8bdd2cb83b5fc2b1094db6424c7e1507b7eaade518dbc815cfacbdf6598b + languageName: node + linkType: hard + +"@jest/source-map@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/source-map@npm:30.0.1" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.25" + callsites: "npm:^3.1.0" + graceful-fs: "npm:^4.2.11" + checksum: 10c0/e7bda2786fc9f483d9dd7566c58c4bd948830997be862dfe80a3ae5550ff3f84753abb52e705d02ebe9db9f34ba7ebec4c2db11882048cdeef7a66f6332b3897 + languageName: node + linkType: hard + +"@jest/test-result@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/test-result@npm:30.0.5" + dependencies: + "@jest/console": "npm:30.0.5" + "@jest/types": "npm:30.0.5" + "@types/istanbul-lib-coverage": "npm:^2.0.6" + collect-v8-coverage: "npm:^1.0.2" + checksum: 10c0/2a43134ee28616a178b5a6379c837f2fb054a5e4a6ab411b9d15b85224e5d459d88902cdbf83edf5821c2c77fe13e67d078eff64c6871f3b08ebff0548a9a2e4 + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/test-sequencer@npm:30.0.5" + dependencies: + "@jest/test-result": "npm:30.0.5" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.0.5" + slash: "npm:^3.0.0" + checksum: 10c0/3caaea0558474764cd616f38acdc22ff4ce6ef806d931134ed366429fdea7110352b89d702e9cc1d71fa142d79e86f2f4e6eb0441a76a1896682e124ed8f42b4 + languageName: node + linkType: hard + +"@jest/transform@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/transform@npm:30.0.5" + dependencies: + "@babel/core": "npm:^7.27.4" + "@jest/types": "npm:30.0.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + babel-plugin-istanbul: "npm:^7.0.0" + chalk: "npm:^4.1.2" + convert-source-map: "npm:^2.0.0" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.0.5" + jest-regex-util: "npm:30.0.1" + jest-util: "npm:30.0.5" + micromatch: "npm:^4.0.8" + pirates: "npm:^4.0.7" + slash: "npm:^3.0.0" + write-file-atomic: "npm:^5.0.1" + checksum: 10c0/771f57b1bede66049de80dcbf984c74b7d3c072e905f2516ff3f86dc01abd2f79d821b9a6ae21f27cb26d484cd539c13b1a51f71c15e1aed0c62314203c5a186 + languageName: node + linkType: hard + +"@jest/types@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/types@npm:30.0.5" + dependencies: + "@jest/pattern": "npm:30.0.1" + "@jest/schemas": "npm:30.0.5" + "@types/istanbul-lib-coverage": "npm:^2.0.6" + "@types/istanbul-reports": "npm:^3.0.4" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.33" + chalk: "npm:^4.1.2" + checksum: 10c0/fd097a390e36edacbd2c92a8378ec0cd67abec5e234bab7a80aec6eb8625568052b0c32acf472388d04c4cf384b8fa2871d0d12a56b4b06eaea93f2c6df0ec6c + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.12, @jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.12 + resolution: "@jridgewell/gen-mapping@npm:0.3.12" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/32f771ae2467e4d440be609581f7338d786d3d621bac3469e943b9d6d116c23c4becb36f84898a92bbf2f3c0511365c54a945a3b86a83141547a2a360a5ec0c7 + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": + version: 1.5.4 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.4" + checksum: 10c0/c5aab3e6362a8dd94ad80ab90845730c825fc4c8d9cf07ebca7a2eb8a832d155d62558800fc41d42785f989ddbb21db6df004d1786e8ecb65e428ab8dff71309 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.28": + version: 0.3.29 + resolution: "@jridgewell/trace-mapping@npm:0.3.29" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/fb547ba31658c4d74eb17e7389f4908bf7c44cef47acb4c5baa57289daf68e6fe53c639f41f751b3923aca67010501264f70e7b49978ad1f040294b22c37b333 + languageName: node + linkType: hard + +"@napi-rs/wasm-runtime@npm:^0.2.11": + version: 0.2.12 + resolution: "@napi-rs/wasm-runtime@npm:0.2.12" + dependencies: + "@emnapi/core": "npm:^1.4.3" + "@emnapi/runtime": "npm:^1.4.3" + "@tybys/wasm-util": "npm:^0.10.0" + checksum: 10c0/6d07922c0613aab30c6a497f4df297ca7c54e5b480e00035e0209b872d5c6aab7162fc49477267556109c2c7ed1eb9c65a174e27e9b87568106a87b0a6e3ca7d + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/agent@npm:3.0.0" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/fs@npm:4.0.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@pkgr/core@npm:^0.2.9": + version: 0.2.9 + resolution: "@pkgr/core@npm:0.2.9" + checksum: 10c0/ac8e4e8138b1a7a4ac6282873aef7389c352f1f8b577b4850778f5182e4a39a5241facbe48361fec817f56d02b51691b383010843fb08b34a8e8ea3614688fd5 + languageName: node + linkType: hard + +"@rollup/plugin-commonjs@npm:^28.0.3": + version: 28.0.6 + resolution: "@rollup/plugin-commonjs@npm:28.0.6" + dependencies: + "@rollup/pluginutils": "npm:^5.0.1" + commondir: "npm:^1.0.1" + estree-walker: "npm:^2.0.2" + fdir: "npm:^6.2.0" + is-reference: "npm:1.2.1" + magic-string: "npm:^0.30.3" + picomatch: "npm:^4.0.2" + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 10c0/67fa297384c2494c8f85df102c030e7f8ed8f600cfccdd1143266112ee4037d37faa1bda44a571dab35b48297342024551e995ad2f8a4d86da0aa1f33ec61868 + languageName: node + linkType: hard + +"@rollup/plugin-node-resolve@npm:^16.0.1": + version: 16.0.1 + resolution: "@rollup/plugin-node-resolve@npm:16.0.1" + dependencies: + "@rollup/pluginutils": "npm:^5.0.1" + "@types/resolve": "npm:1.20.2" + deepmerge: "npm:^4.2.2" + is-module: "npm:^1.0.0" + resolve: "npm:^1.22.1" + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 10c0/54d33282321492fafec29b49c66dd1efd90c72a24f9d1569dcb57a72ab8de8a782810f39fdb917b96ec6a598c18f3416588b419bf7af331793a010de1fe28c60 + languageName: node + linkType: hard + +"@rollup/plugin-typescript@npm:^12.1.2": + version: 12.1.4 + resolution: "@rollup/plugin-typescript@npm:12.1.4" + dependencies: + "@rollup/pluginutils": "npm:^5.1.0" + resolve: "npm:^1.22.1" + peerDependencies: + rollup: ^2.14.0||^3.0.0||^4.0.0 + tslib: "*" + typescript: ">=3.7.0" + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + checksum: 10c0/b5bf7f54794d0b33ae5441c5aa202a95beb7068c206f40102f94997e888756c06c2bfe00517eb74a58771078432f94e8a34e99f5c6dbf89a22b49431b83c4798 + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.1.0": + version: 5.2.0 + resolution: "@rollup/pluginutils@npm:5.2.0" + dependencies: + "@types/estree": "npm:^1.0.0" + estree-walker: "npm:^2.0.2" + picomatch: "npm:^4.0.2" + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 10c0/794890d512751451bcc06aa112366ef47ea8f9125dac49b1abf72ff8b079518b09359de9c60a013b33266541634e765ae61839c749fae0edb59a463418665c55 + languageName: node + linkType: hard + +"@rollup/rollup-android-arm-eabi@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.46.2" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-android-arm64@npm:4.46.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-darwin-arm64@npm:4.46.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-darwin-x64@npm:4.46.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-arm64@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.46.2" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-x64@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-freebsd-x64@npm:4.46.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.46.2" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.46.2" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.46.2" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.46.2" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-loongarch64-gnu@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.46.2" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-ppc64-gnu@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.46.2" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.46.2" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-musl@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.46.2" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.46.2" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.46.2" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.46.2" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.46.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.46.2" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.46.2": + version: 4.46.2 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.46.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@rtsao/scc@npm:^1.1.0": + version: 1.1.0 + resolution: "@rtsao/scc@npm:1.1.0" + checksum: 10c0/b5bcfb0d87f7d1c1c7c0f7693f53b07866ed9fec4c34a97a8c948fb9a7c0082e416ce4d3b60beb4f5e167cbe04cdeefbf6771320f3ede059b9ce91188c409a5b + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.34.0": + version: 0.34.38 + resolution: "@sinclair/typebox@npm:0.34.38" + checksum: 10c0/c1b9a1547c64de01ff5c89351baf289d2d5f19cfef3ae30fe4748a103eb58d0842618318543cd3de964cb0370d5a859e24aba231ade9b43ee2ef4d0bb4db7084 + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.1": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" + dependencies: + type-detect: "npm:4.0.8" + checksum: 10c0/1227a7b5bd6c6f9584274db996d7f8cee2c8c350534b9d0141fc662eaf1f292ea0ae3ed19e5e5271c8fd390d27e492ca2803acd31a1978be2cdc6be0da711403 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^13.0.0": + version: 13.0.5 + resolution: "@sinonjs/fake-timers@npm:13.0.5" + dependencies: + "@sinonjs/commons": "npm:^3.0.1" + checksum: 10c0/a707476efd523d2138ef6bba916c83c4a377a8372ef04fad87499458af9f01afc58f4f245c5fd062793d6d70587309330c6f96947b5bd5697961c18004dc3e26 + languageName: node + linkType: hard + +"@tybys/wasm-util@npm:^0.10.0": + version: 0.10.0 + resolution: "@tybys/wasm-util@npm:0.10.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/044feba55c1e2af703aa4946139969badb183ce1a659a75ed60bc195a90e73a3f3fc53bcd643497c9954597763ddb051fec62f80962b2ca6fc716ba897dc696e + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.20.5": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.27.0 + resolution: "@types/babel__generator@npm:7.27.0" + dependencies: + "@babel/types": "npm:^7.0.0" + checksum: 10c0/9f9e959a8792df208a9d048092fda7e1858bddc95c6314857a8211a99e20e6830bdeb572e3587ae8be5429e37f2a96fcf222a9f53ad232f5537764c9e13a2bbd + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*": + version: 7.28.0 + resolution: "@types/babel__traverse@npm:7.28.0" + dependencies: + "@babel/types": "npm:^7.28.2" + checksum: 10c0/b52d7d4e8fc6a9018fe7361c4062c1c190f5778cf2466817cb9ed19d69fbbb54f9a85ffedeb748ed8062d2cf7d4cc088ee739848f47c57740de1c48cbf0d0994 + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:1.0.8, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": + version: 1.0.8 + resolution: "@types/estree@npm:1.0.8" + checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.1, @types/istanbul-lib-coverage@npm:^2.0.6": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "npm:*" + checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.4": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "npm:*" + checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee + languageName: node + linkType: hard + +"@types/jest@npm:^30.0.0": + version: 30.0.0 + resolution: "@types/jest@npm:30.0.0" + dependencies: + expect: "npm:^30.0.0" + pretty-format: "npm:^30.0.0" + checksum: 10c0/20c6ce574154bc16f8dd6a97afacca4b8c4921a819496a3970382031c509ebe87a1b37b152a1b8475089b82d8ca951a9e95beb4b9bf78fbf579b1536f0b65969 + languageName: node + linkType: hard + +"@types/json-schema@npm:^7.0.12": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db + languageName: node + linkType: hard + +"@types/json5@npm:^0.0.29": + version: 0.0.29 + resolution: "@types/json5@npm:0.0.29" + checksum: 10c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 24.2.1 + resolution: "@types/node@npm:24.2.1" + dependencies: + undici-types: "npm:~7.10.0" + checksum: 10c0/439a3c7edf88a298e0c92e46f670234070b892589c3b06e82cc86c47a7e1cf220f4a4b4736ec6ac7e4b9e1c40d7b6d443a1e22f99dd17f13f9dd15de3b32011b + languageName: node + linkType: hard + +"@types/node@npm:^22.15.30": + version: 22.17.1 + resolution: "@types/node@npm:22.17.1" + dependencies: + undici-types: "npm:~6.21.0" + checksum: 10c0/b04063bdabfc4146af05d14d4fd23ee68615194473d0ef971ddef549b80b791f52c8f93abdd8d1092ee0257f3dea862fa233519244fd051e79233cdce614de14 + languageName: node + linkType: hard + +"@types/resolve@npm:1.20.2": + version: 1.20.2 + resolution: "@types/resolve@npm:1.20.2" + checksum: 10c0/c5b7e1770feb5ccfb6802f6ad82a7b0d50874c99331e0c9b259e415e55a38d7a86ad0901c57665d93f75938be2a6a0bc9aa06c9749192cadb2e4512800bbc6e6 + languageName: node + linkType: hard + +"@types/semver@npm:^7.5.0": + version: 7.7.0 + resolution: "@types/semver@npm:7.7.0" + checksum: 10c0/6b5f65f647474338abbd6ee91a6bbab434662ddb8fe39464edcbcfc96484d388baad9eb506dff217b6fc1727a88894930eb1f308617161ac0f376fe06be4e1ee + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.3": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.33": + version: 17.0.33 + resolution: "@types/yargs@npm:17.0.33" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10c0/d16937d7ac30dff697801c3d6f235be2166df42e4a88bf730fa6dc09201de3727c0a9500c59a672122313341de5f24e45ee0ff579c08ce91928e519090b7906b + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:^6.4.0": + version: 6.21.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.5.1" + "@typescript-eslint/scope-manager": "npm:6.21.0" + "@typescript-eslint/type-utils": "npm:6.21.0" + "@typescript-eslint/utils": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + debug: "npm:^4.3.4" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.4" + natural-compare: "npm:^1.4.0" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependencies: + "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/f911a79ee64d642f814a3b6cdb0d324b5f45d9ef955c5033e78903f626b7239b4aa773e464a38c3e667519066169d983538f2bf8e5d00228af587c9d438fb344 + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:^6.4.0": + version: 6.21.0 + resolution: "@typescript-eslint/parser@npm:6.21.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:6.21.0" + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/typescript-estree": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/a8f99820679decd0d115c0af61903fb1de3b1b5bec412dc72b67670bf636de77ab07f2a68ee65d6da7976039bbf636907f9d5ca546db3f0b98a31ffbc225bc7d + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/scope-manager@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + checksum: 10c0/eaf868938d811cbbea33e97e44ba7050d2b6892202cea6a9622c486b85ab1cf801979edf78036179a8ba4ac26f1dfdf7fcc83a68c1ff66be0b3a8e9a9989b526 + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/type-utils@npm:6.21.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:6.21.0" + "@typescript-eslint/utils": "npm:6.21.0" + debug: "npm:^4.3.4" + ts-api-utils: "npm:^1.0.1" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/7409c97d1c4a4386b488962739c4f1b5b04dc60cf51f8cd88e6b12541f84d84c6b8b67e491a147a2c95f9ec486539bf4519fb9d418411aef6537b9c156468117 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/types@npm:6.21.0" + checksum: 10c0/020631d3223bbcff8a0da3efbdf058220a8f48a3de221563996ad1dcc30d6c08dadc3f7608cc08830d21c0d565efd2db19b557b9528921c78aabb605eef2d74d + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + minimatch: "npm:9.0.3" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/af1438c60f080045ebb330155a8c9bb90db345d5069cdd5d01b67de502abb7449d6c75500519df829f913a6b3f490ade3e8215279b6bdc63d0fb0ae61034df5f + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/utils@npm:6.21.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@types/json-schema": "npm:^7.0.12" + "@types/semver": "npm:^7.5.0" + "@typescript-eslint/scope-manager": "npm:6.21.0" + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/typescript-estree": "npm:6.21.0" + semver: "npm:^7.5.4" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + checksum: 10c0/ab2df3833b2582d4e5467a484d08942b4f2f7208f8e09d67de510008eb8001a9b7460f2f9ba11c12086fd3cdcac0c626761c7995c2c6b5657d5fa6b82030a32d + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/7395f69739cfa1cb83c1fb2fad30afa2a814756367302fb4facd5893eff66abc807e8d8f63eba94ed3b0fe0c1c996ac9a1680bcbf0f83717acedc3f2bb724fbf + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.2.0, @ungap/structured-clone@npm:^1.3.0": + version: 1.3.0 + resolution: "@ungap/structured-clone@npm:1.3.0" + checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a + languageName: node + linkType: hard + +"@unrs/resolver-binding-android-arm-eabi@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.11.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-android-arm64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-android-arm64@npm:1.11.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-arm64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.11.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-x64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.11.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-freebsd-x64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.11.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.11.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-wasm32-wasi@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.11.1" + dependencies: + "@napi-rs/wasm-runtime": "npm:^0.2.11" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"abbrev@npm:^3.0.0": + version: 3.0.1 + resolution: "abbrev@npm:3.0.1" + checksum: 10c0/21ba8f574ea57a3106d6d35623f2c4a9111d9ee3e9a5be47baed46ec2457d2eac46e07a5c4a60186f88cb98abbe3e24f2d4cca70bc2b12f1692523e2209a9ccf + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + languageName: node + linkType: hard + +"acorn-walk@npm:^8.3.4": + version: 8.3.4 + resolution: "acorn-walk@npm:8.3.4" + dependencies: + acorn: "npm:^8.11.0" + checksum: 10c0/76537ac5fb2c37a64560feaf3342023dadc086c46da57da363e64c6148dc21b57d49ace26f949e225063acb6fb441eabffd89f7a3066de5ad37ab3e328927c62 + languageName: node + linkType: hard + +"acorn@npm:^8.11.0, acorn@npm:^8.15.0, acorn@npm:^8.9.0": + version: 8.15.0 + resolution: "acorn@npm:8.15.0" + bin: + acorn: bin/acorn + checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec + languageName: node + linkType: hard + +"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": + version: 7.1.4 + resolution: "agent-base@npm:7.1.4" + checksum: 10c0/c2c9ab7599692d594b6a161559ada307b7a624fa4c7b03e3afdb5a5e31cd0e53269115b620fcab024c5ac6a6f37fa5eb2e004f076ad30f5f7e6b8b671f7b35fe + languageName: node + linkType: hard + +"ajv@npm:^6.12.4": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.3.2": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: "npm:^0.21.3" + checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^5.2.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + +"anymatch@npm:^3.1.3": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "array-buffer-byte-length@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + is-array-buffer: "npm:^3.0.5" + checksum: 10c0/74e1d2d996941c7a1badda9cabb7caab8c449db9086407cad8a1b71d2604cc8abf105db8ca4e02c04579ec58b7be40279ddb09aea4784832984485499f48432d + languageName: node + linkType: hard + +"array-includes@npm:^3.1.9": + version: 3.1.9 + resolution: "array-includes@npm:3.1.9" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.24.0" + es-object-atoms: "npm:^1.1.1" + get-intrinsic: "npm:^1.3.0" + is-string: "npm:^1.1.1" + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/0235fa69078abeac05ac4250699c44996bc6f774a9cbe45db48674ce6bd142f09b327d31482ff75cf03344db4ea03eae23edb862d59378b484b47ed842574856 + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + +"array.prototype.findlastindex@npm:^1.2.6": + version: 1.2.6 + resolution: "array.prototype.findlastindex@npm:1.2.6" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.9" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + es-shim-unscopables: "npm:^1.1.0" + checksum: 10c0/82559310d2e57ec5f8fc53d7df420e3abf0ba497935de0a5570586035478ba7d07618cb18e2d4ada2da514c8fb98a034aaf5c06caa0a57e2f7f4c4adedef5956 + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.3.3": + version: 1.3.3 + resolution: "array.prototype.flat@npm:1.3.3" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/d90e04dfbc43bb96b3d2248576753d1fb2298d2d972e29ca7ad5ec621f0d9e16ff8074dae647eac4f31f4fb7d3f561a7ac005fb01a71f51705a13b5af06a7d8a + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.3": + version: 1.3.3 + resolution: "array.prototype.flatmap@npm:1.3.3" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/ba899ea22b9dc9bf276e773e98ac84638ed5e0236de06f13d63a90b18ca9e0ec7c97d622d899796e3773930b946cd2413d098656c0c5d8cc58c6f25c21e6bd54 + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.4": + version: 1.0.4 + resolution: "arraybuffer.prototype.slice@npm:1.0.4" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + is-array-buffer: "npm:^3.0.4" + checksum: 10c0/2f2459caa06ae0f7f615003f9104b01f6435cc803e11bd2a655107d52a1781dc040532dc44d93026b694cc18793993246237423e13a5337e86b43ed604932c06 + languageName: node + linkType: hard + +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 + languageName: node + linkType: hard + +"babel-jest@npm:30.0.5, babel-jest@npm:^30.0.2": + version: 30.0.5 + resolution: "babel-jest@npm:30.0.5" + dependencies: + "@jest/transform": "npm:30.0.5" + "@types/babel__core": "npm:^7.20.5" + babel-plugin-istanbul: "npm:^7.0.0" + babel-preset-jest: "npm:30.0.1" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + slash: "npm:^3.0.0" + peerDependencies: + "@babel/core": ^7.11.0 + checksum: 10c0/48fcdbf97519216f8897c4d83c0d2a64dffd90e4876b386e4ea4530021aaedbd7253de65a71d554cb57fdeb7bd8509bed43a6c016eb150e49e1fbe1236248f0f + languageName: node + linkType: hard + +"babel-plugin-istanbul@npm:^7.0.0": + version: 7.0.0 + resolution: "babel-plugin-istanbul@npm:7.0.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@istanbuljs/load-nyc-config": "npm:^1.0.0" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-instrument: "npm:^6.0.2" + test-exclude: "npm:^6.0.0" + checksum: 10c0/79c37bd59ea9bcb16218e874993621e24048776fac7ee72eabe78f0909200851bdb93b32f6eba5b463206f15a1ee7ad40a725af8447952321ae1fdf14e740fe9 + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:30.0.1": + version: 30.0.1 + resolution: "babel-plugin-jest-hoist@npm:30.0.1" + dependencies: + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.27.3" + "@types/babel__core": "npm:^7.20.5" + checksum: 10c0/49087f45c8ac359d68c622f4bd471300376b0ca2b6bd6ecaa1bd254ea87eda8fa3ce6144848e3bbabad337d276474a47e2ac3f6272f82e1f2337924ff49a02bd + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs2@npm:^0.4.14": + version: 0.4.14 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.14" + dependencies: + "@babel/compat-data": "npm:^7.27.7" + "@babel/helper-define-polyfill-provider": "npm:^0.6.5" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/d74cba0600a6508e86d220bde7164eb528755d91be58020e5ea92ea7fbb12c9d8d2c29246525485adfe7f68ae02618ec428f9a589cac6cbedf53cc3972ad7fbe + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.13.0": + version: 0.13.0 + resolution: "babel-plugin-polyfill-corejs3@npm:0.13.0" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.5" + core-js-compat: "npm:^3.43.0" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/5d8e228da425edc040d8c868486fd01ba10b0440f841156a30d9f8986f330f723e2ee61553c180929519563ef5b64acce2caac36a5a847f095d708dda5d8206d + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.6.5": + version: 0.6.5 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.5" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.5" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/63aa8ed716df6a9277c6ab42b887858fa9f57a70cc1d0ae2b91bdf081e45d4502848cba306fb60b02f59f99b32fd02ff4753b373cac48ccdac9b7d19dd56f06d + languageName: node + linkType: hard + +"babel-preset-current-node-syntax@npm:^1.1.0": + version: 1.2.0 + resolution: "babel-preset-current-node-syntax@npm:1.2.0" + dependencies: + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-bigint": "npm:^7.8.3" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0 || ^8.0.0-0 + checksum: 10c0/94a4f81cddf9b051045d08489e4fff7336292016301664c138cfa3d9ffe3fe2ba10a24ad6ae589fd95af1ac72ba0216e1653555c187e694d7b17be0c002bea10 + languageName: node + linkType: hard + +"babel-preset-jest@npm:30.0.1": + version: 30.0.1 + resolution: "babel-preset-jest@npm:30.0.1" + dependencies: + babel-plugin-jest-hoist: "npm:30.0.1" + babel-preset-current-node-syntax: "npm:^1.1.0" + peerDependencies: + "@babel/core": ^7.11.0 + checksum: 10c0/33da0094965929b1742b02e55272b544f189cd487d55bbba60e68d96d62d48f466264fe51f65950454829d4f2271541f2433e1c1c5e6a7ff5b9e91f1303471b7 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.12 + resolution: "brace-expansion@npm:1.1.12" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/975fecac2bb7758c062c20d0b3b6288c7cc895219ee25f0a64a9de662dbac981ff0b6e89909c3897c1f84fa353113a721923afdec5f8b2350255b097f12b1f73 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.2 + resolution: "brace-expansion@npm:2.0.2" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/6d117a4c793488af86b83172deb6af143e94c17bc53b0b3cec259733923b4ca84679d506ac261f4ba3c7ed37c46018e2ff442f9ce453af8643ecd64f4a54e6cf + languageName: node + linkType: hard + +"braces@npm:^3.0.3": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 + languageName: node + linkType: hard + +"browserslist@npm:^4.24.0, browserslist@npm:^4.25.1": + version: 4.25.2 + resolution: "browserslist@npm:4.25.2" + dependencies: + caniuse-lite: "npm:^1.0.30001733" + electron-to-chromium: "npm:^1.5.199" + node-releases: "npm:^2.0.19" + update-browserslist-db: "npm:^1.1.3" + bin: + browserslist: cli.js + checksum: 10c0/3fd27c6d569125e08b476d0ded78232c756bffeb79f29cfa548961dfd62fa560f8bf60fdb52d496ba276aea0c843968dd38ed4138a724277715be3b41dac8861 + languageName: node + linkType: hard + +"bs-logger@npm:^0.2.6": + version: 0.2.6 + resolution: "bs-logger@npm:0.2.6" + dependencies: + fast-json-stable-stringify: "npm:2.x" + checksum: 10c0/80e89aaaed4b68e3374ce936f2eb097456a0dddbf11f75238dbd53140b1e39259f0d248a5089ed456f1158984f22191c3658d54a713982f676709fbe1a6fa5a0 + languageName: node + linkType: hard + +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: "npm:^0.4.0" + checksum: 10c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 + languageName: node + linkType: hard + +"buffer-from@npm:^1.0.0": + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 + languageName: node + linkType: hard + +"builtin-modules@npm:^3.3.0": + version: 3.3.0 + resolution: "builtin-modules@npm:3.3.0" + checksum: 10c0/2cb3448b4f7306dc853632a4fcddc95e8d4e4b9868c139400027b71938fc6806d4ff44007deffb362ac85724bd40c2c6452fb6a0aa4531650eeddb98d8e5ee8a + languageName: node + linkType: hard + +"builtins@npm:^5.0.1": + version: 5.1.0 + resolution: "builtins@npm:5.1.0" + dependencies: + semver: "npm:^7.0.0" + checksum: 10c0/3c32fe5bd7ed4ff7dbd6fb14bcb9d7eaa7e967327f1899cd336f8625d3f46fceead0a53528f1e332aeaee757034ebb307cb2f1a37af2b86a3c5ad4845d01c0c8 + languageName: node + linkType: hard + +"cacache@npm:^19.0.1": + version: 19.0.1 + resolution: "cacache@npm:19.0.1" + dependencies: + "@npmcli/fs": "npm:^4.0.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^7.0.2" + ssri: "npm:^12.0.0" + tar: "npm:^7.4.3" + unique-filename: "npm:^4.0.0" + checksum: 10c0/01f2134e1bd7d3ab68be851df96c8d63b492b1853b67f2eecb2c37bb682d37cb70bb858a16f2f0554d3c0071be6dfe21456a1ff6fa4b7eed996570d6a25ffe9c + languageName: node + linkType: hard + +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" + dependencies: + call-bind-apply-helpers: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.2" + checksum: 10c0/a13819be0681d915144467741b69875ae5f4eba8961eb0bf322aab63ec87f8250eb6d6b0dcbb2e1349876412a56129ca338592b3829ef4343527f5f18a0752d4 + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": + version: 1.0.4 + resolution: "call-bound@npm:1.0.4" + dependencies: + call-bind-apply-helpers: "npm:^1.0.2" + get-intrinsic: "npm:^1.3.0" + checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 + languageName: node + linkType: hard + +"callsites@npm:^3.0.0, callsites@npm:^3.1.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + languageName: node + linkType: hard + +"camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 + languageName: node + linkType: hard + +"camelcase@npm:^6.3.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001733": + version: 1.0.30001733 + resolution: "caniuse-lite@npm:1.0.30001733" + checksum: 10c0/2c03ad3362be7c93c09537f3853156ade5c70fb131888971dd538631971873ba27b83c5aad48dd06b6cde005fe57caae2db5d0f467d0c63a315391add70f01f5 + languageName: node + linkType: hard + +"chalk@npm:^4.0.0, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: 10c0/57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e + languageName: node + linkType: hard + +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 + languageName: node + linkType: hard + +"ci-info@npm:^4.2.0": + version: 4.3.0 + resolution: "ci-info@npm:4.3.0" + checksum: 10c0/60d3dfe95d75c01454ec1cfd5108617dd598a28a2a3e148bd7e1523c1c208b5f5a3007cafcbe293e6fd0a5a310cc32217c5dc54743eeabc0a2bec80072fc055c + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^2.1.0": + version: 2.1.0 + resolution: "cjs-module-lexer@npm:2.1.0" + checksum: 10c0/91cf28686dc3948e4a06dfa03a2fccb14b7a97471ffe7ae0124f62060ddf2de28e8e997f60007babe6e122b1b06a47c01a1b72cc015f185824d9cac3ccfa5533 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 10c0/c0e85ea0ca8bf0a50cbdca82efc5af0301240ca88ebe3644a6ffb8ffe911f34d40f8fbcf8f1d52c5ddd66706abd4d3bfcd64259f1e8e2371d4f47573b0dc8c28 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.2": + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: 10c0/ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"commondir@npm:^1.0.1": + version: 1.0.1 + resolution: "commondir@npm:1.0.1" + checksum: 10c0/33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6 + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + languageName: node + linkType: hard + +"core-js-compat@npm:^3.43.0": + version: 3.45.0 + resolution: "core-js-compat@npm:3.45.0" + dependencies: + browserslist: "npm:^4.25.1" + checksum: 10c0/3515955d2c83846f0bf8c4a0f96fc514a6b711e9b3ee19a8df3683a6b0720d762fef60a63bb5c07907f9d18aa00c5904ef690dd4150bc39e2d47e01f05154fda + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 + languageName: node + linkType: hard + +"data-view-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-buffer@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.2" + checksum: 10c0/7986d40fc7979e9e6241f85db8d17060dd9a71bd53c894fa29d126061715e322a4cd47a00b0b8c710394854183d4120462b980b8554012acc1c0fa49df7ad38c + languageName: node + linkType: hard + +"data-view-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-byte-length@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.2" + checksum: 10c0/f8a4534b5c69384d95ac18137d381f18a5cfae1f0fc1df0ef6feef51ef0d568606d970b69e02ea186c6c0f0eac77fe4e6ad96fec2569cc86c3afcc7475068c55 + languageName: node + linkType: hard + +"data-view-byte-offset@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-offset@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/fa7aa40078025b7810dcffc16df02c480573b7b53ef1205aa6a61533011005c1890e5ba17018c692ce7c900212b547262d33279fde801ad9843edc0863bf78c4 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.4.1": + version: 4.4.1 + resolution: "debug@npm:4.4.1" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55 + languageName: node + linkType: hard + +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: "npm:^2.1.1" + checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a + languageName: node + linkType: hard + +"dedent@npm:^1.6.0": + version: 1.6.0 + resolution: "dedent@npm:1.6.0" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 10c0/671b8f5e390dd2a560862c4511dd6d2638e71911486f78cb32116551f8f2aa6fcaf50579ffffb2f866d46b5b80fd72470659ca5760ede8f967619ef7df79e8a5 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + languageName: node + linkType: hard + +"deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.1": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 + languageName: node + linkType: hard + +"define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 + languageName: node + linkType: hard + +"detect-newline@npm:^3.1.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + +"doctrine@npm:^2.1.0": + version: 2.1.0 + resolution: "doctrine@npm:2.1.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 + languageName: node + linkType: hard + +"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.5.199": + version: 1.5.199 + resolution: "electron-to-chromium@npm:1.5.199" + checksum: 10c0/5586d20455407edc583e33422e370bbdc07913d8f5c73da2ae1c6adcc79c3be7384ecaf893978027cb26a410c1354f199a05edb99b1ab03dd0346e2201525148 + languageName: node + linkType: hard + +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 10c0/1573d0ae29ab34661b6c63251ff8f5facd24ccf6a823f19417ae8ba8c88ea450325788c67f16c99edec8de4b52ce93a10fe441ece389fd156e88ee7dab9bfa35 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: "npm:^0.2.1" + checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce + languageName: node + linkType: hard + +"es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0": + version: 1.24.0 + resolution: "es-abstract@npm:1.24.0" + dependencies: + array-buffer-byte-length: "npm:^1.0.2" + arraybuffer.prototype.slice: "npm:^1.0.4" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + data-view-buffer: "npm:^1.0.2" + data-view-byte-length: "npm:^1.0.2" + data-view-byte-offset: "npm:^1.0.1" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + es-set-tostringtag: "npm:^2.1.0" + es-to-primitive: "npm:^1.3.0" + function.prototype.name: "npm:^1.1.8" + get-intrinsic: "npm:^1.3.0" + get-proto: "npm:^1.0.1" + get-symbol-description: "npm:^1.1.0" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.2.0" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + internal-slot: "npm:^1.1.0" + is-array-buffer: "npm:^3.0.5" + is-callable: "npm:^1.2.7" + is-data-view: "npm:^1.0.2" + is-negative-zero: "npm:^2.0.3" + is-regex: "npm:^1.2.1" + is-set: "npm:^2.0.3" + is-shared-array-buffer: "npm:^1.0.4" + is-string: "npm:^1.1.1" + is-typed-array: "npm:^1.1.15" + is-weakref: "npm:^1.1.1" + math-intrinsics: "npm:^1.1.0" + object-inspect: "npm:^1.13.4" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.7" + own-keys: "npm:^1.0.1" + regexp.prototype.flags: "npm:^1.5.4" + safe-array-concat: "npm:^1.1.3" + safe-push-apply: "npm:^1.0.0" + safe-regex-test: "npm:^1.1.0" + set-proto: "npm:^1.0.0" + stop-iteration-iterator: "npm:^1.1.0" + string.prototype.trim: "npm:^1.2.10" + string.prototype.trimend: "npm:^1.0.9" + string.prototype.trimstart: "npm:^1.0.8" + typed-array-buffer: "npm:^1.0.3" + typed-array-byte-length: "npm:^1.0.3" + typed-array-byte-offset: "npm:^1.0.4" + typed-array-length: "npm:^1.0.7" + unbox-primitive: "npm:^1.1.0" + which-typed-array: "npm:^1.1.19" + checksum: 10c0/b256e897be32df5d382786ce8cce29a1dd8c97efbab77a26609bd70f2ed29fbcfc7a31758cb07488d532e7ccccdfca76c1118f2afe5a424cdc05ca007867c318 + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c + languageName: node + linkType: hard + +"es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.1 + resolution: "es-object-atoms@npm:1.1.1" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" + dependencies: + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.2, es-shim-unscopables@npm:^1.1.0": + version: 1.1.0 + resolution: "es-shim-unscopables@npm:1.1.0" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/1b9702c8a1823fc3ef39035a4e958802cf294dd21e917397c561d0b3e195f383b978359816b1732d02b255ccf63e1e4815da0065b95db8d7c992037be3bbbcdb + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.3.0": + version: 1.3.0 + resolution: "es-to-primitive@npm:1.3.0" + dependencies: + is-callable: "npm:^1.2.7" + is-date-object: "npm:^1.0.5" + is-symbol: "npm:^1.0.4" + checksum: 10c0/c7e87467abb0b438639baa8139f701a06537d2b9bc758f23e8622c3b42fd0fdb5bde0f535686119e446dd9d5e4c0f238af4e14960f4771877cf818d023f6730b + languageName: node + linkType: hard + +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + languageName: node + linkType: hard + +"escodegen@npm:^2.1.0": + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" + dependencies: + esprima: "npm:^4.0.1" + estraverse: "npm:^5.2.0" + esutils: "npm:^2.0.2" + source-map: "npm:~0.6.1" + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 10c0/e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 + languageName: node + linkType: hard + +"eslint-compat-utils@npm:^0.5.1": + version: 0.5.1 + resolution: "eslint-compat-utils@npm:0.5.1" + dependencies: + semver: "npm:^7.5.4" + peerDependencies: + eslint: ">=6.0.0" + checksum: 10c0/325e815205fab70ebcd379f6d4b5d44c7d791bb8dfe0c9888233f30ebabd9418422595b53a781b946c768d9244d858540e5e6129a6b3dd6d606f467d599edc6c + languageName: node + linkType: hard + +"eslint-config-standard-with-typescript@npm:^43.0.1": + version: 43.0.1 + resolution: "eslint-config-standard-with-typescript@npm:43.0.1" + dependencies: + "@typescript-eslint/parser": "npm:^6.4.0" + eslint-config-standard: "npm:17.1.0" + peerDependencies: + "@typescript-eslint/eslint-plugin": ^6.4.0 + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: "^15.0.0 || ^16.0.0 " + eslint-plugin-promise: ^6.0.0 + typescript: "*" + checksum: 10c0/e01d9fb0ee5b3a435417926f9356a572f9ba0393a2db4892421c383830aa29308fbe52ecc8395a2e5fc005acfba4465f470d23fcdf4f9c2060238e9907da0d28 + languageName: node + linkType: hard + +"eslint-config-standard@npm:17.1.0": + version: 17.1.0 + resolution: "eslint-config-standard@npm:17.1.0" + peerDependencies: + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: "^15.0.0 || ^16.0.0 " + eslint-plugin-promise: ^6.0.0 + checksum: 10c0/d32f37ec4bea541debd3a8c9e05227673a9b1a9977da078195ee55fb371813ddf1349c75f2c33d76699fe3412f1e303181795f146e8d0e546b94fa0dce2bfbf9 + languageName: node + linkType: hard + +"eslint-import-resolver-node@npm:^0.3.9": + version: 0.3.9 + resolution: "eslint-import-resolver-node@npm:0.3.9" + dependencies: + debug: "npm:^3.2.7" + is-core-module: "npm:^2.13.0" + resolve: "npm:^1.22.4" + checksum: 10c0/0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61 + languageName: node + linkType: hard + +"eslint-module-utils@npm:^2.12.1": + version: 2.12.1 + resolution: "eslint-module-utils@npm:2.12.1" + dependencies: + debug: "npm:^3.2.7" + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/6f4efbe7a91ae49bf67b4ab3644cb60bc5bd7db4cb5521de1b65be0847ffd3fb6bce0dd68f0995e1b312d137f768e2a1f842ee26fe73621afa05f850628fdc40 + languageName: node + linkType: hard + +"eslint-plugin-es-x@npm:^7.5.0": + version: 7.8.0 + resolution: "eslint-plugin-es-x@npm:7.8.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.1.2" + "@eslint-community/regexpp": "npm:^4.11.0" + eslint-compat-utils: "npm:^0.5.1" + peerDependencies: + eslint: ">=8" + checksum: 10c0/002fda8c029bc5da41e24e7ac11654062831d675fc4f5f20d0de460e24bf1e05cd559000678ef3e46c48641190f4fc07ae3d57aa5e8b085ef5f67e5f63742614 + languageName: node + linkType: hard + +"eslint-plugin-import@npm:^2.32.0": + version: 2.32.0 + resolution: "eslint-plugin-import@npm:2.32.0" + dependencies: + "@rtsao/scc": "npm:^1.1.0" + array-includes: "npm:^3.1.9" + array.prototype.findlastindex: "npm:^1.2.6" + array.prototype.flat: "npm:^1.3.3" + array.prototype.flatmap: "npm:^1.3.3" + debug: "npm:^3.2.7" + doctrine: "npm:^2.1.0" + eslint-import-resolver-node: "npm:^0.3.9" + eslint-module-utils: "npm:^2.12.1" + hasown: "npm:^2.0.2" + is-core-module: "npm:^2.16.1" + is-glob: "npm:^4.0.3" + minimatch: "npm:^3.1.2" + object.fromentries: "npm:^2.0.8" + object.groupby: "npm:^1.0.3" + object.values: "npm:^1.2.1" + semver: "npm:^6.3.1" + string.prototype.trimend: "npm:^1.0.9" + tsconfig-paths: "npm:^3.15.0" + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + checksum: 10c0/bfb1b8fc8800398e62ddfefbf3638d185286edfed26dfe00875cc2846d954491b4f5112457831588b757fa789384e1ae585f812614c4797f0499fa234fd4a48b + languageName: node + linkType: hard + +"eslint-plugin-n@npm:^15.0.0 || ^16.0.0 ": + version: 16.6.2 + resolution: "eslint-plugin-n@npm:16.6.2" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + builtins: "npm:^5.0.1" + eslint-plugin-es-x: "npm:^7.5.0" + get-tsconfig: "npm:^4.7.0" + globals: "npm:^13.24.0" + ignore: "npm:^5.2.4" + is-builtin-module: "npm:^3.2.1" + is-core-module: "npm:^2.12.1" + minimatch: "npm:^3.1.2" + resolve: "npm:^1.22.2" + semver: "npm:^7.5.3" + peerDependencies: + eslint: ">=7.0.0" + checksum: 10c0/6008493754b51c6b9ce18c17e7c3d455b69444d2c454dd399a5c2f1b833bb5a649992052f141a5dd695d22e3946a518063b2dd01e872c67dc0294eb143b80633 + languageName: node + linkType: hard + +"eslint-plugin-promise@npm:^6.6.0": + version: 6.6.0 + resolution: "eslint-plugin-promise@npm:6.6.0" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + checksum: 10c0/93a667dbc9ff15c4d586b0d40a31c7828314cbbb31b2b9a75802aa4ef536e9457bb3e1a89b384b07aa336dd61b315ae8b0aadc0870210378023dd018819b59b3 + languageName: node + linkType: hard + +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + languageName: node + linkType: hard + +"eslint@npm:^8.57.1": + version: 8.57.1 + resolution: "eslint@npm:8.57.1" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.6.1" + "@eslint/eslintrc": "npm:^2.1.4" + "@eslint/js": "npm:8.57.1" + "@humanwhocodes/config-array": "npm:^0.13.0" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@nodelib/fs.walk": "npm:^1.2.8" + "@ungap/structured-clone": "npm:^1.2.0" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.2" + debug: "npm:^4.3.2" + doctrine: "npm:^3.0.0" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^7.2.2" + eslint-visitor-keys: "npm:^3.4.3" + espree: "npm:^9.6.1" + esquery: "npm:^1.4.2" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^6.0.1" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + globals: "npm:^13.19.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + is-path-inside: "npm:^3.0.3" + js-yaml: "npm:^4.1.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + levn: "npm:^0.4.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + strip-ansi: "npm:^6.0.1" + text-table: "npm:^0.2.0" + bin: + eslint: bin/eslint.js + checksum: 10c0/1fd31533086c1b72f86770a4d9d7058ee8b4643fd1cfd10c7aac1ecb8725698e88352a87805cf4b2ce890aa35947df4b4da9655fb7fdfa60dbb448a43f6ebcf1 + languageName: node + linkType: hard + +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" + dependencies: + acorn: "npm:^8.9.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 + languageName: node + linkType: hard + +"esprima@npm:^4.0.0, esprima@npm:^4.0.1": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + languageName: node + linkType: hard + +"esquery@npm:^1.4.2": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: "npm:^5.2.0" + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + languageName: node + linkType: hard + +"estree-walker@npm:^2.0.2": + version: 2.0.2 + resolution: "estree-walker@npm:2.0.2" + checksum: 10c0/53a6c54e2019b8c914dc395890153ffdc2322781acf4bd7d1a32d7aedc1710807bdcd866ac133903d5629ec601fbb50abe8c2e5553c7f5a0afdd9b6af6c945af + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + languageName: node + linkType: hard + +"execa@npm:^5.1.1": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.0" + human-signals: "npm:^2.1.0" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.1" + onetime: "npm:^5.1.2" + signal-exit: "npm:^3.0.3" + strip-final-newline: "npm:^2.0.0" + checksum: 10c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f + languageName: node + linkType: hard + +"exit-x@npm:^0.2.2": + version: 0.2.2 + resolution: "exit-x@npm:0.2.2" + checksum: 10c0/212a7a095ca5540e9581f1ef2d1d6a40df7a6027c8cc96e78ce1d16b86d1a88326d4a0eff8dff2b5ec1e68bb0c1edd5d0dfdde87df1869bf7514d4bc6a5cbd72 + languageName: node + linkType: hard + +"expect@npm:30.0.5, expect@npm:^30.0.0": + version: 30.0.5 + resolution: "expect@npm:30.0.5" + dependencies: + "@jest/expect-utils": "npm:30.0.5" + "@jest/get-type": "npm:30.0.1" + jest-matcher-utils: "npm:30.0.5" + jest-message-util: "npm:30.0.5" + jest-mock: "npm:30.0.5" + jest-util: "npm:30.0.5" + checksum: 10c0/e08e4ced2856a0898b3a4e8d09aab7f8e2212cde701e41a560c3ab7e9053517947ff1a762fc425dbe0c48ed54e131aa7190de67a402f98b4e5ada23eb21c0a9f + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.2 + resolution: "exponential-backoff@npm:3.1.2" + checksum: 10c0/d9d3e1eafa21b78464297df91f1776f7fbaa3d5e3f7f0995648ca5b89c069d17055033817348d9f4a43d1c20b0eab84f75af6991751e839df53e4dfd6f22e844 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + +"fast-glob@npm:^3.2.9": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.8" + checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.19.1 + resolution: "fastq@npm:1.19.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/ebc6e50ac7048daaeb8e64522a1ea7a26e92b3cee5cd1c7f2316cdca81ba543aa40a136b53891446ea5c3a67ec215fbaca87ad405f102dd97012f62916905630 + languageName: node + linkType: hard + +"fb-watchman@npm:^2.0.2": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: "npm:2.1.1" + checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 + languageName: node + linkType: hard + +"fdir@npm:^6.2.0, fdir@npm:^6.4.4": + version: 6.4.6 + resolution: "fdir@npm:6.4.6" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10c0/45b559cff889934ebb8bc498351e5acba40750ada7e7d6bde197768d2fa67c149be8ae7f8ff34d03f4e1eb20f2764116e56440aaa2f6689e9a4aa7ef06acafe9 + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: "npm:^3.0.4" + checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 + languageName: node + linkType: hard + +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: "npm:^5.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.3" + rimraf: "npm:^3.0.2" + checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.3.3 + resolution: "flatted@npm:3.3.3" + checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538 + languageName: node + linkType: hard + +"for-each@npm:^0.3.3, for-each@npm:^0.3.5": + version: 0.3.5 + resolution: "for-each@npm:0.3.5" + dependencies: + is-callable: "npm:^1.2.7" + checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.3.1 + resolution: "foreground-child@npm:3.3.1" + dependencies: + cross-spawn: "npm:^7.0.6" + signal-exit: "npm:^4.0.1" + checksum: 10c0/8986e4af2430896e65bc2788d6679067294d6aee9545daefc84923a0a4b399ad9c7a3ea7bd8c0b2b80fdf4a92de4c69df3f628233ff3224260e9c1541a9e9ed3 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + languageName: node + linkType: hard + +"fsevents@npm:^2.3.3, fsevents@npm:~2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A^2.3.3#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": + version: 1.1.8 + resolution: "function.prototype.name@npm:1.1.8" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + functions-have-names: "npm:^1.2.3" + hasown: "npm:^2.0.2" + is-callable: "npm:^1.2.7" + checksum: 10c0/e920a2ab52663005f3cbe7ee3373e3c71c1fb5558b0b0548648cdf3e51961085032458e26c71ff1a8c8c20e7ee7caeb03d43a5d1fa8610c459333323a2e71253 + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": + version: 1.3.0 + resolution: "get-intrinsic@npm:1.3.0" + dependencies: + call-bind-apply-helpers: "npm:^1.0.2" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + function-bind: "npm:^1.1.2" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/52c81808af9a8130f581e6a6a83e1ba4a9f703359e7a438d1369a5267a25412322f03dcbd7c549edaef0b6214a0630a28511d7df0130c93cfd380f4fa0b5b66a + languageName: node + linkType: hard + +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: 10c0/e34cdf447fdf1902a1f6d5af737eaadf606d2ee3518287abde8910e04159368c268568174b2e71102b87b26c2020486f126bfca9c4fb1ceb986ff99b52ecd1be + languageName: node + linkType: hard + +"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.1.0": + version: 1.1.0 + resolution: "get-symbol-description@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/d6a7d6afca375779a4b307738c9e80dbf7afc0bdbe5948768d54ab9653c865523d8920e670991a925936eb524b7cb6a6361d199a760b21d0ca7620194455aa4b + languageName: node + linkType: hard + +"get-tsconfig@npm:^4.7.0": + version: 4.10.1 + resolution: "get-tsconfig@npm:4.10.1" + dependencies: + resolve-pkg-maps: "npm:^1.0.0" + checksum: 10c0/7f8e3dabc6a49b747920a800fb88e1952fef871cdf51b79e98db48275a5de6cdaf499c55ee67df5fa6fe7ce65f0063e26de0f2e53049b408c585aa74d39ffa21 + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: "npm:^4.0.3" + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.3.10": + version: 10.4.5 + resolution: "glob@npm:10.4.5" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e + languageName: node + linkType: hard + +"glob@npm:^7.1.3, glob@npm:^7.1.4": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + languageName: node + linkType: hard + +"globals@npm:^13.19.0, globals@npm:^13.24.0": + version: 13.24.0 + resolution: "globals@npm:13.24.0" + dependencies: + type-fest: "npm:^0.20.2" + checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd + languageName: node + linkType: hard + +"globalthis@npm:^1.0.4": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" + dependencies: + define-properties: "npm:^1.2.1" + gopd: "npm:^1.0.1" + checksum: 10c0/9d156f313af79d80b1566b93e19285f481c591ad6d0d319b4be5e03750d004dde40a39a0f26f7e635f9007a3600802f53ecd85a759b86f109e80a5f705e01846 + languageName: node + linkType: hard + +"globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead + languageName: node + linkType: hard + +"graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.6": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 + languageName: node + linkType: hard + +"handlebars@npm:^4.7.8": + version: 4.7.8 + resolution: "handlebars@npm:4.7.8" + dependencies: + minimist: "npm:^1.2.5" + neo-async: "npm:^2.6.2" + source-map: "npm:^0.6.1" + uglify-js: "npm:^3.1.4" + wordwrap: "npm:^1.0.0" + dependenciesMeta: + uglify-js: + optional: true + bin: + handlebars: bin/handlebars + checksum: 10c0/7aff423ea38a14bb379316f3857fe0df3c5d66119270944247f155ba1f08e07a92b340c58edaa00cfe985c21508870ee5183e0634dcb53dd405f35c93ef7f10d + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.2": + version: 1.1.0 + resolution: "has-bigints@npm:1.1.0" + checksum: 10c0/2de0cdc4a1ccf7a1e75ffede1876994525ac03cc6f5ae7392d3415dd475cd9eee5bceec63669ab61aa997ff6cceebb50ef75561c7002bed8988de2b9d1b40788 + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: "npm:^1.0.0" + checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 + languageName: node + linkType: hard + +"has-proto@npm:^1.2.0": + version: 1.2.0 + resolution: "has-proto@npm:1.2.0" + dependencies: + dunder-proto: "npm:^1.0.0" + checksum: 10c0/46538dddab297ec2f43923c3d35237df45d8c55a6fc1067031e04c13ed8a9a8f94954460632fd4da84c31a1721eefee16d901cbb1ae9602bab93bb6e08f93b95 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c + languageName: node + linkType: hard + +"hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 + languageName: node + linkType: hard + +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: 10c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.2.0 + resolution: "http-cache-semantics@npm:4.2.0" + checksum: 10c0/45b66a945cf13ec2d1f29432277201313babf4a01d9e52f44b31ca923434083afeca03f18417f599c9ab3d0e7b618ceb21257542338b57c54b710463b4a53e37 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1": + version: 7.0.6 + resolution: "https-proxy-agent@npm:7.0.6" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:4" + checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac + languageName: node + linkType: hard + +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: 10c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a + languageName: node + linkType: hard + +"husky@npm:^9.1.7": + version: 9.1.7 + resolution: "husky@npm:9.1.7" + bin: + husky: bin.js + checksum: 10c0/35bb110a71086c48906aa7cd3ed4913fb913823715359d65e32e0b964cb1e255593b0ae8014a5005c66a68e6fa66c38dcfa8056dbbdfb8b0187c0ffe7ee3a58f + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"ignore@npm:^5.2.0, ignore@npm:^5.2.4": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1": + version: 3.3.1 + resolution: "import-fresh@npm:3.3.1" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec + languageName: node + linkType: hard + +"import-local@npm:^3.2.0": + version: 3.2.0 + resolution: "import-local@npm:3.2.0" + dependencies: + pkg-dir: "npm:^4.2.0" + resolve-cwd: "npm:^3.0.0" + bin: + import-local-fixture: fixtures/cli.js + checksum: 10c0/94cd6367a672b7e0cb026970c85b76902d2710a64896fa6de93bd5c571dd03b228c5759308959de205083e3b1c61e799f019c9e36ee8e9c523b993e1057f0433 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + languageName: node + linkType: hard + +"inherits@npm:2": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + languageName: node + linkType: hard + +"internal-slot@npm:^1.1.0": + version: 1.1.0 + resolution: "internal-slot@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10c0/03966f5e259b009a9bf1a78d60da920df198af4318ec004f57b8aef1dd3fe377fbc8cce63a96e8c810010302654de89f9e19de1cd8ad0061d15be28a695465c7 + languageName: node + linkType: hard + +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" + dependencies: + jsbn: "npm:1.1.0" + sprintf-js: "npm:^1.1.3" + checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/c5c9f25606e86dbb12e756694afbbff64bc8b348d1bc989324c037e1068695131930199d6ad381952715dad3a9569333817f0b1a72ce5af7f883ce802e49c83d + languageName: node + linkType: hard + +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 + languageName: node + linkType: hard + +"is-async-function@npm:^2.0.0": + version: 2.1.1 + resolution: "is-async-function@npm:2.1.1" + dependencies: + async-function: "npm:^1.0.0" + call-bound: "npm:^1.0.3" + get-proto: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/d70c236a5e82de6fc4d44368ffd0c2fee2b088b893511ce21e679da275a5ecc6015ff59a7d7e1bdd7ca39f71a8dbdd253cf8cce5c6b3c91cdd5b42b5ce677298 + languageName: node + linkType: hard + +"is-bigint@npm:^1.1.0": + version: 1.1.0 + resolution: "is-bigint@npm:1.1.0" + dependencies: + has-bigints: "npm:^1.0.2" + checksum: 10c0/f4f4b905ceb195be90a6ea7f34323bf1c18e3793f18922e3e9a73c684c29eeeeff5175605c3a3a74cc38185fe27758f07efba3dbae812e5c5afbc0d2316b40e4 + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.2.1": + version: 1.2.2 + resolution: "is-boolean-object@npm:1.2.2" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/36ff6baf6bd18b3130186990026f5a95c709345c39cd368468e6c1b6ab52201e9fd26d8e1f4c066357b4938b0f0401e1a5000e08257787c1a02f3a719457001e + languageName: node + linkType: hard + +"is-builtin-module@npm:^3.2.1": + version: 3.2.1 + resolution: "is-builtin-module@npm:3.2.1" + dependencies: + builtin-modules: "npm:^3.3.0" + checksum: 10c0/5a66937a03f3b18803381518f0ef679752ac18cdb7dd53b5e23ee8df8d440558737bd8dcc04d2aae555909d2ecb4a81b5c0d334d119402584b61e6a003e31af1 + languageName: node + linkType: hard + +"is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f + languageName: node + linkType: hard + +"is-core-module@npm:^2.12.1, is-core-module@npm:^2.13.0, is-core-module@npm:^2.16.0, is-core-module@npm:^2.16.1": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd + languageName: node + linkType: hard + +"is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": + version: 1.0.2 + resolution: "is-data-view@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/ef3548a99d7e7f1370ce21006baca6d40c73e9f15c941f89f0049c79714c873d03b02dae1c64b3f861f55163ecc16da06506c5b8a1d4f16650b3d9351c380153 + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": + version: 1.1.0 + resolution: "is-date-object@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/1a4d199c8e9e9cac5128d32e6626fa7805175af9df015620ac0d5d45854ccf348ba494679d872d37301032e35a54fc7978fba1687e8721b2139aea7870cafa2f + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + +"is-finalizationregistry@npm:^1.1.0": + version: 1.1.1 + resolution: "is-finalizationregistry@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/818dff679b64f19e228a8205a1e2d09989a98e98def3a817f889208cfcbf918d321b251aadf2c05918194803ebd2eb01b14fc9d0b2bea53d984f4137bfca5e97 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-generator-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.10": + version: 1.1.0 + resolution: "is-generator-function@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + get-proto: "npm:^1.0.0" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/fdfa96c8087bf36fc4cd514b474ba2ff404219a4dd4cfa6cf5426404a1eed259bdcdb98f082a71029a48d01f27733e3436ecc6690129a7ec09cb0434bee03a2a + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc + languageName: node + linkType: hard + +"is-module@npm:^1.0.0": + version: 1.0.0 + resolution: "is-module@npm:1.0.0" + checksum: 10c0/795a3914bcae7c26a1c23a1e5574c42eac13429625045737bf3e324ce865c0601d61aee7a5afbca1bee8cb300c7d9647e7dc98860c9bdbc3b7fdc51d8ac0bffc + languageName: node + linkType: hard + +"is-negative-zero@npm:^2.0.3": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e + languageName: node + linkType: hard + +"is-number-object@npm:^1.1.1": + version: 1.1.1 + resolution: "is-number-object@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/97b451b41f25135ff021d85c436ff0100d84a039bb87ffd799cbcdbea81ef30c464ced38258cdd34f080be08fc3b076ca1f472086286d2aa43521d6ec6a79f53 + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.3": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 + languageName: node + linkType: hard + +"is-reference@npm:1.2.1": + version: 1.2.1 + resolution: "is-reference@npm:1.2.1" + dependencies: + "@types/estree": "npm:*" + checksum: 10c0/7dc819fc8de7790264a0a5d531164f9f5b9ef5aa1cd05f35322d14db39c8a2ec78fd5d4bf57f9789f3ddd2b3abeea7728432b759636157a42db12a9e8c3b549b + languageName: node + linkType: hard + +"is-regex@npm:^1.2.1": + version: 1.2.1 + resolution: "is-regex@npm:1.2.1" + dependencies: + call-bound: "npm:^1.0.2" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/1d3715d2b7889932349241680032e85d0b492cfcb045acb75ffc2c3085e8d561184f1f7e84b6f8321935b4aea39bc9c6ba74ed595b57ce4881a51dfdbc214e04 + languageName: node + linkType: hard + +"is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.4": + version: 1.0.4 + resolution: "is-shared-array-buffer@npm:1.0.4" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/65158c2feb41ff1edd6bbd6fd8403a69861cf273ff36077982b5d4d68e1d59278c71691216a4a64632bd76d4792d4d1d2553901b6666d84ade13bba5ea7bc7db + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 + languageName: node + linkType: hard + +"is-string@npm:^1.1.1": + version: 1.1.1 + resolution: "is-string@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/2f518b4e47886bb81567faba6ffd0d8a8333cf84336e2e78bf160693972e32ad00fe84b0926491cc598dee576fdc55642c92e62d0cbe96bf36f643b6f956f94d + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": + version: 1.1.1 + resolution: "is-symbol@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/f08f3e255c12442e833f75a9e2b84b2d4882fdfd920513cf2a4a2324f0a5b076c8fd913778e3ea5d258d5183e9d92c0cd20e04b03ab3df05316b049b2670af1e + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" + dependencies: + which-typed-array: "npm:^1.1.16" + checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 + languageName: node + linkType: hard + +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.1": + version: 1.1.1 + resolution: "is-weakref@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/8e0a9c07b0c780949a100e2cab2b5560a48ecd4c61726923c1a9b77b6ab0aa0046c9e7fb2206042296817045376dee2c8ab1dabe08c7c3dfbf195b01275a085b + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.3": + version: 2.0.4 + resolution: "is-weakset@npm:2.0.4" + dependencies: + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/6491eba08acb8dc9532da23cb226b7d0192ede0b88f16199e592e4769db0a077119c1f5d2283d1e0d16d739115f70046e887e477eb0e66cd90e1bb29f28ba647 + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^6.0.0, istanbul-lib-instrument@npm:^6.0.2": + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" + dependencies: + "@babel/core": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 10c0/a1894e060dd2a3b9f046ffdc87b44c00a35516f5e6b7baf4910369acca79e506fc5323a816f811ae23d82334b38e3ddeb8b3b331bd2c860540793b59a8689128 + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" + dependencies: + istanbul-lib-coverage: "npm:^3.0.0" + make-dir: "npm:^4.0.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^5.0.0": + version: 5.0.6 + resolution: "istanbul-lib-source-maps@npm:5.0.6" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.23" + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + checksum: 10c0/ffe75d70b303a3621ee4671554f306e0831b16f39ab7f4ab52e54d356a5d33e534d97563e318f1333a6aae1d42f91ec49c76b6cd3f3fb378addcb5c81da0255f + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.3": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" + dependencies: + html-escaper: "npm:^2.0.0" + istanbul-lib-report: "npm:^3.0.0" + checksum: 10c0/a379fadf9cf8dc5dfe25568115721d4a7eb82fbd50b005a6672aff9c6989b20cc9312d7865814e0859cd8df58cbf664482e1d3604be0afde1f7fc3ccc1394a51 + languageName: node + linkType: hard + +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 + languageName: node + linkType: hard + +"jest-changed-files@npm:30.0.5": + version: 30.0.5 + resolution: "jest-changed-files@npm:30.0.5" + dependencies: + execa: "npm:^5.1.1" + jest-util: "npm:30.0.5" + p-limit: "npm:^3.1.0" + checksum: 10c0/41ce090f324e8450443327f19f772a9c3f225b4b1374ba9704358f0c8b8cd91fd134fa41df7db4d278428ab974c432abc3eca9484e67c8f18528974378fddef6 + languageName: node + linkType: hard + +"jest-circus@npm:30.0.5": + version: 30.0.5 + resolution: "jest-circus@npm:30.0.5" + dependencies: + "@jest/environment": "npm:30.0.5" + "@jest/expect": "npm:30.0.5" + "@jest/test-result": "npm:30.0.5" + "@jest/types": "npm:30.0.5" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + co: "npm:^4.6.0" + dedent: "npm:^1.6.0" + is-generator-fn: "npm:^2.1.0" + jest-each: "npm:30.0.5" + jest-matcher-utils: "npm:30.0.5" + jest-message-util: "npm:30.0.5" + jest-runtime: "npm:30.0.5" + jest-snapshot: "npm:30.0.5" + jest-util: "npm:30.0.5" + p-limit: "npm:^3.1.0" + pretty-format: "npm:30.0.5" + pure-rand: "npm:^7.0.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.6" + checksum: 10c0/028204897eee7bef2d04eea0216b48f94e3da77ff1d12b0e3a5e265e8e73bcd31192cec70282aa1ece91150c00fcb5662c2c68e86b3892cffbfbe7058fa7f4e5 + languageName: node + linkType: hard + +"jest-cli@npm:30.0.5": + version: 30.0.5 + resolution: "jest-cli@npm:30.0.5" + dependencies: + "@jest/core": "npm:30.0.5" + "@jest/test-result": "npm:30.0.5" + "@jest/types": "npm:30.0.5" + chalk: "npm:^4.1.2" + exit-x: "npm:^0.2.2" + import-local: "npm:^3.2.0" + jest-config: "npm:30.0.5" + jest-util: "npm:30.0.5" + jest-validate: "npm:30.0.5" + yargs: "npm:^17.7.2" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: ./bin/jest.js + checksum: 10c0/bfcd7212db7825d06afaf01c19bd7168190e22220d300b6db31b3885943a31361e98c4a1bde466146368ad503ae6257a9630bc35b4a43ff0631d7a3f95b63e45 + languageName: node + linkType: hard + +"jest-config@npm:30.0.5": + version: 30.0.5 + resolution: "jest-config@npm:30.0.5" + dependencies: + "@babel/core": "npm:^7.27.4" + "@jest/get-type": "npm:30.0.1" + "@jest/pattern": "npm:30.0.1" + "@jest/test-sequencer": "npm:30.0.5" + "@jest/types": "npm:30.0.5" + babel-jest: "npm:30.0.5" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + deepmerge: "npm:^4.3.1" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.11" + jest-circus: "npm:30.0.5" + jest-docblock: "npm:30.0.1" + jest-environment-node: "npm:30.0.5" + jest-regex-util: "npm:30.0.1" + jest-resolve: "npm:30.0.5" + jest-runner: "npm:30.0.5" + jest-util: "npm:30.0.5" + jest-validate: "npm:30.0.5" + micromatch: "npm:^4.0.8" + parse-json: "npm:^5.2.0" + pretty-format: "npm:30.0.5" + slash: "npm:^3.0.0" + strip-json-comments: "npm:^3.1.1" + peerDependencies: + "@types/node": "*" + esbuild-register: ">=3.4.0" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + esbuild-register: + optional: true + ts-node: + optional: true + checksum: 10c0/da68048801e6f6622bf6e9a361dcfb3859017bbd58fabcf53bade41157bdf31cc35a1bd3dab1e3cca86e69da23e2c27c7aa5e308efc04564a454e23de6f22062 + languageName: node + linkType: hard + +"jest-diff@npm:30.0.5": + version: 30.0.5 + resolution: "jest-diff@npm:30.0.5" + dependencies: + "@jest/diff-sequences": "npm:30.0.1" + "@jest/get-type": "npm:30.0.1" + chalk: "npm:^4.1.2" + pretty-format: "npm:30.0.5" + checksum: 10c0/b218ced37b7676f578ea866762f04caa74901bdcf3f593872aa9a4991a586302651a1d16bb0386772adacc7580a452ec621359af75d733c0b50ea947fe1881d3 + languageName: node + linkType: hard + +"jest-docblock@npm:30.0.1": + version: 30.0.1 + resolution: "jest-docblock@npm:30.0.1" + dependencies: + detect-newline: "npm:^3.1.0" + checksum: 10c0/f9bad2651db8afa029867ea7a40f422c9d73c67657360297371846a314a40c8786424be00483261df9137499f52c2af28cd458fbd15a7bf7fac8775b4bcd6ee1 + languageName: node + linkType: hard + +"jest-each@npm:30.0.5": + version: 30.0.5 + resolution: "jest-each@npm:30.0.5" + dependencies: + "@jest/get-type": "npm:30.0.1" + "@jest/types": "npm:30.0.5" + chalk: "npm:^4.1.2" + jest-util: "npm:30.0.5" + pretty-format: "npm:30.0.5" + checksum: 10c0/fe7509bfd8b0c8553bbdaffda5d3b674a4da870c5ce9fe69c1ca8111d9e0f21a8f265799eba0f927581d16f4810e5eb5bebfd7e51f5f137cbef08cc44d8fd9cd + languageName: node + linkType: hard + +"jest-environment-node@npm:30.0.5": + version: 30.0.5 + resolution: "jest-environment-node@npm:30.0.5" + dependencies: + "@jest/environment": "npm:30.0.5" + "@jest/fake-timers": "npm:30.0.5" + "@jest/types": "npm:30.0.5" + "@types/node": "npm:*" + jest-mock: "npm:30.0.5" + jest-util: "npm:30.0.5" + jest-validate: "npm:30.0.5" + checksum: 10c0/1b608597f0755814e7c24b9ed2a45abc2340cfd8f8d3691caf929f332facd9c62ac5092e7f01056708a0ca41ae0458b6d442fd1ae9f6d21b7b416b252e1ae210 + languageName: node + linkType: hard + +"jest-haste-map@npm:30.0.5": + version: 30.0.5 + resolution: "jest-haste-map@npm:30.0.5" + dependencies: + "@jest/types": "npm:30.0.5" + "@types/node": "npm:*" + anymatch: "npm:^3.1.3" + fb-watchman: "npm:^2.0.2" + fsevents: "npm:^2.3.3" + graceful-fs: "npm:^4.2.11" + jest-regex-util: "npm:30.0.1" + jest-util: "npm:30.0.5" + jest-worker: "npm:30.0.5" + micromatch: "npm:^4.0.8" + walker: "npm:^1.0.8" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/eab5d85d820f149bcf4bf4e0c49316f48973c85d39b4c3a2e08f57504f069afe9b0f1665e556330a98c6fc6bd5a6932767b466c1c96124fa0161aef017ab17b3 + languageName: node + linkType: hard + +"jest-leak-detector@npm:30.0.5": + version: 30.0.5 + resolution: "jest-leak-detector@npm:30.0.5" + dependencies: + "@jest/get-type": "npm:30.0.1" + pretty-format: "npm:30.0.5" + checksum: 10c0/04207ab6f44dec22d3d656b5f3b4f334440f4c01ccd21c55474f26706530244d34b8dc9922c9449e00e8649e5da1b8de4aca58c9895c9de19951d5ecdc0ff113 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:30.0.5": + version: 30.0.5 + resolution: "jest-matcher-utils@npm:30.0.5" + dependencies: + "@jest/get-type": "npm:30.0.1" + chalk: "npm:^4.1.2" + jest-diff: "npm:30.0.5" + pretty-format: "npm:30.0.5" + checksum: 10c0/231d891b29bfc218f2f5739c10873b6671426e31ad1c5538eed1531e62608fd3f60d32f41821332a6cf41f1614fd37361434c754fdd49c849b35ef2e5156c02e + languageName: node + linkType: hard + +"jest-message-util@npm:30.0.5": + version: 30.0.5 + resolution: "jest-message-util@npm:30.0.5" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@jest/types": "npm:30.0.5" + "@types/stack-utils": "npm:^2.0.3" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + micromatch: "npm:^4.0.8" + pretty-format: "npm:30.0.5" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.6" + checksum: 10c0/38b710c127db6c79c36d690377d9f9f1e3c2e4b2d2e60f3b82a5b4da70efb1f4783c6cf0cf1f6be6e3b7fb2d2aed889583d2430f65afc09e7e6d68aa5fa981dc + languageName: node + linkType: hard + +"jest-mock@npm:30.0.5": + version: 30.0.5 + resolution: "jest-mock@npm:30.0.5" + dependencies: + "@jest/types": "npm:30.0.5" + "@types/node": "npm:*" + jest-util: "npm:30.0.5" + checksum: 10c0/207fd79297f514a8e26ede9b4b5035e70212b8850a2f460b51d3cc58e8e7c9585bd2dbc5df2475a3321c4cd114b90e0b24190f00d6eeb88c8f088a8ed00416d5 + languageName: node + linkType: hard + +"jest-pnp-resolver@npm:^1.2.3": + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: 10c0/86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac + languageName: node + linkType: hard + +"jest-regex-util@npm:30.0.1": + version: 30.0.1 + resolution: "jest-regex-util@npm:30.0.1" + checksum: 10c0/f30c70524ebde2d1012afe5ffa5691d5d00f7d5ba9e43d588f6460ac6fe96f9e620f2f9b36a02d0d3e7e77bc8efb8b3450ae3b80ac53c8be5099e01bf54f6728 + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:30.0.5": + version: 30.0.5 + resolution: "jest-resolve-dependencies@npm:30.0.5" + dependencies: + jest-regex-util: "npm:30.0.1" + jest-snapshot: "npm:30.0.5" + checksum: 10c0/7c72ef30d2e2e5c9564c53f55679184a4fe460f4d5c48eb5edc476000f17ee392341ae0c21b3ce9e531a1bff00924ebcda4fcd5b1406071c6a7b2b109fd3cf33 + languageName: node + linkType: hard + +"jest-resolve@npm:30.0.5": + version: 30.0.5 + resolution: "jest-resolve@npm:30.0.5" + dependencies: + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.0.5" + jest-pnp-resolver: "npm:^1.2.3" + jest-util: "npm:30.0.5" + jest-validate: "npm:30.0.5" + slash: "npm:^3.0.0" + unrs-resolver: "npm:^1.7.11" + checksum: 10c0/6edea75db950131513cd642743d4c5dd36c209c94652e469eebc86fdf85eb579a7614c30262668fcd429e1c841f1d17a26831259db69c17dffd0718c37f69196 + languageName: node + linkType: hard + +"jest-runner@npm:30.0.5": + version: 30.0.5 + resolution: "jest-runner@npm:30.0.5" + dependencies: + "@jest/console": "npm:30.0.5" + "@jest/environment": "npm:30.0.5" + "@jest/test-result": "npm:30.0.5" + "@jest/transform": "npm:30.0.5" + "@jest/types": "npm:30.0.5" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + emittery: "npm:^0.13.1" + exit-x: "npm:^0.2.2" + graceful-fs: "npm:^4.2.11" + jest-docblock: "npm:30.0.1" + jest-environment-node: "npm:30.0.5" + jest-haste-map: "npm:30.0.5" + jest-leak-detector: "npm:30.0.5" + jest-message-util: "npm:30.0.5" + jest-resolve: "npm:30.0.5" + jest-runtime: "npm:30.0.5" + jest-util: "npm:30.0.5" + jest-watcher: "npm:30.0.5" + jest-worker: "npm:30.0.5" + p-limit: "npm:^3.1.0" + source-map-support: "npm:0.5.13" + checksum: 10c0/5da84e4f393cc4b0c2b86a7058c154e524bc91947867f892d252300d06c595058690a61ffdbfa74381498f4ebb9cc7d8d967a62f53cb5f5383ec59fb5ed21d91 + languageName: node + linkType: hard + +"jest-runtime@npm:30.0.5": + version: 30.0.5 + resolution: "jest-runtime@npm:30.0.5" + dependencies: + "@jest/environment": "npm:30.0.5" + "@jest/fake-timers": "npm:30.0.5" + "@jest/globals": "npm:30.0.5" + "@jest/source-map": "npm:30.0.1" + "@jest/test-result": "npm:30.0.5" + "@jest/transform": "npm:30.0.5" + "@jest/types": "npm:30.0.5" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + cjs-module-lexer: "npm:^2.1.0" + collect-v8-coverage: "npm:^1.0.2" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.0.5" + jest-message-util: "npm:30.0.5" + jest-mock: "npm:30.0.5" + jest-regex-util: "npm:30.0.1" + jest-resolve: "npm:30.0.5" + jest-snapshot: "npm:30.0.5" + jest-util: "npm:30.0.5" + slash: "npm:^3.0.0" + strip-bom: "npm:^4.0.0" + checksum: 10c0/c1afa36da0582172e9a73d69fcc23fd433efc8a7d0328ba5fee45858dc85cb01410b47ba53540bb3758277eb84bb5a42e872bc58d2e5a3cad533f4b33e3abe61 + languageName: node + linkType: hard + +"jest-snapshot@npm:30.0.5": + version: 30.0.5 + resolution: "jest-snapshot@npm:30.0.5" + dependencies: + "@babel/core": "npm:^7.27.4" + "@babel/generator": "npm:^7.27.5" + "@babel/plugin-syntax-jsx": "npm:^7.27.1" + "@babel/plugin-syntax-typescript": "npm:^7.27.1" + "@babel/types": "npm:^7.27.3" + "@jest/expect-utils": "npm:30.0.5" + "@jest/get-type": "npm:30.0.1" + "@jest/snapshot-utils": "npm:30.0.5" + "@jest/transform": "npm:30.0.5" + "@jest/types": "npm:30.0.5" + babel-preset-current-node-syntax: "npm:^1.1.0" + chalk: "npm:^4.1.2" + expect: "npm:30.0.5" + graceful-fs: "npm:^4.2.11" + jest-diff: "npm:30.0.5" + jest-matcher-utils: "npm:30.0.5" + jest-message-util: "npm:30.0.5" + jest-util: "npm:30.0.5" + pretty-format: "npm:30.0.5" + semver: "npm:^7.7.2" + synckit: "npm:^0.11.8" + checksum: 10c0/2bda246367373003abfbd66de261bfd355618926c28261d7ffcdfac0c4c7a7f575c9f598745b0b59eb2cfa8907889dcc07db3ad65d940061275d490c1eb3e1fe + languageName: node + linkType: hard + +"jest-util@npm:30.0.5, jest-util@npm:^30.0.5": + version: 30.0.5 + resolution: "jest-util@npm:30.0.5" + dependencies: + "@jest/types": "npm:30.0.5" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + graceful-fs: "npm:^4.2.11" + picomatch: "npm:^4.0.2" + checksum: 10c0/d3808b5f7720044d0464664c795e2b795ed82edf3b5871db74b8b603c3a0a38107668730348d26f92920ca3b8245a99cbbc2c93e77d0abb1f5e27524079a4ba8 + languageName: node + linkType: hard + +"jest-validate@npm:30.0.5": + version: 30.0.5 + resolution: "jest-validate@npm:30.0.5" + dependencies: + "@jest/get-type": "npm:30.0.1" + "@jest/types": "npm:30.0.5" + camelcase: "npm:^6.3.0" + chalk: "npm:^4.1.2" + leven: "npm:^3.1.0" + pretty-format: "npm:30.0.5" + checksum: 10c0/739a5df57befd763ba40693c9c1d7e93234af44ca21226a42272fbf87dea076a23848072b46871ce02cc0f2614f8ad41542e98965b405320276102b4de35b063 + languageName: node + linkType: hard + +"jest-watcher@npm:30.0.5": + version: 30.0.5 + resolution: "jest-watcher@npm:30.0.5" + dependencies: + "@jest/test-result": "npm:30.0.5" + "@jest/types": "npm:30.0.5" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.3.2" + chalk: "npm:^4.1.2" + emittery: "npm:^0.13.1" + jest-util: "npm:30.0.5" + string-length: "npm:^4.0.2" + checksum: 10c0/5c26617c53e6314e2143806cbc8c1cdca7100cc8de3241c7debf7b5feb0df17bdc9a92ee4a4efa953a261d8806ffd7f6c89e72d567236e62492dd554eaa91f97 + languageName: node + linkType: hard + +"jest-worker@npm:30.0.5": + version: 30.0.5 + resolution: "jest-worker@npm:30.0.5" + dependencies: + "@types/node": "npm:*" + "@ungap/structured-clone": "npm:^1.3.0" + jest-util: "npm:30.0.5" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.1.1" + checksum: 10c0/50a724b39b8691168a456544f32ef8e937c827cd6d326fa0bc27df786c80af1e1f16d9f2d9cc800af4baac85a0f9e9ed78fbd4a06f13eb32e72ec66d11b85f38 + languageName: node + linkType: hard + +"jest@npm:^30.0.4": + version: 30.0.5 + resolution: "jest@npm:30.0.5" + dependencies: + "@jest/core": "npm:30.0.5" + "@jest/types": "npm:30.0.5" + import-local: "npm:^3.2.0" + jest-cli: "npm:30.0.5" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: ./bin/jest.js + checksum: 10c0/eff3980ebe0257f1d5a0e94b0df27fc689563539138cc9220dadcb57543e30601cea6b79cbd68a5a5bcdc69501a8a670493495cf4b1d2076796697f8a7937d4c + languageName: node + linkType: hard + +"js-base64@npm:^3.7.7": + version: 3.7.7 + resolution: "js-base64@npm:3.7.7" + checksum: 10c0/3c905a7e78b601e4751b5e710edd0d6d045ce2d23eb84c9df03515371e1b291edc72808dc91e081cb9855aef6758292a2407006f4608ec3705373dd8baf2f80f + languageName: node + linkType: hard + +"js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b + languageName: node + linkType: hard + +"js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 + languageName: node + linkType: hard + +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 + languageName: node + linkType: hard + +"jsesc@npm:~3.0.2": + version: 3.0.2 + resolution: "jsesc@npm:3.0.2" + bin: + jsesc: bin/jsesc + checksum: 10c0/ef22148f9e793180b14d8a145ee6f9f60f301abf443288117b4b6c53d0ecd58354898dc506ccbb553a5f7827965cd38bc5fb726575aae93c5e8915e2de8290e1 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 + languageName: node + linkType: hard + +"json5@npm:^1.0.2": + version: 1.0.2 + resolution: "json5@npm:1.0.2" + dependencies: + minimist: "npm:^1.2.0" + bin: + json5: lib/cli.js + checksum: 10c0/9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f + languageName: node + linkType: hard + +"json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + +"keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e + languageName: node + linkType: hard + +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 10c0/cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + languageName: node + linkType: hard + +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d + languageName: node + linkType: hard + +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: "npm:^4.1.0" + checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: "npm:^5.0.0" + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + languageName: node + linkType: hard + +"lodash.debounce@npm:^4.0.8": + version: 4.0.8 + resolution: "lodash.debounce@npm:4.0.8" + checksum: 10c0/762998a63e095412b6099b8290903e0a8ddcb353ac6e2e0f2d7e7d03abd4275fe3c689d88960eb90b0dde4f177554d51a690f22a343932ecbc50a5d111849987 + languageName: node + linkType: hard + +"lodash.memoize@npm:^4.1.2": + version: 4.1.2 + resolution: "lodash.memoize@npm:4.1.2" + checksum: 10c0/c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8 + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + languageName: node + linkType: hard + +"magic-string@npm:^0.30.3": + version: 0.30.17 + resolution: "magic-string@npm:0.30.17" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + checksum: 10c0/16826e415d04b88378f200fe022b53e638e3838b9e496edda6c0e086d7753a44a6ed187adc72d19f3623810589bf139af1a315541cd6a26ae0771a0193eaf7b8 + languageName: node + linkType: hard + +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 + languageName: node + linkType: hard + +"make-error@npm:^1.3.6": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f + languageName: node + linkType: hard + +"make-fetch-happen@npm:^14.0.3": + version: 14.0.3 + resolution: "make-fetch-happen@npm:14.0.3" + dependencies: + "@npmcli/agent": "npm:^3.0.0" + cacache: "npm:^19.0.1" + http-cache-semantics: "npm:^4.1.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^4.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^1.0.0" + proc-log: "npm:^5.0.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^12.0.0" + checksum: 10c0/c40efb5e5296e7feb8e37155bde8eb70bc57d731b1f7d90e35a092fde403d7697c56fb49334d92d330d6f1ca29a98142036d6480a12681133a0a1453164cb2f0 + languageName: node + linkType: hard + +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" + dependencies: + tmpl: "npm:1.0.5" + checksum: 10c0/b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c + languageName: node + linkType: hard + +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + +"micromatch@npm:^4.0.8": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + languageName: node + linkType: hard + +"minimatch@npm:9.0.3": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac + languageName: node + linkType: hard + +"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + languageName: node + linkType: hard + +"minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed + languageName: node + linkType: hard + +"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^4.0.0": + version: 4.0.1 + resolution: "minipass-fetch@npm:4.0.1" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^3.0.1" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/a3147b2efe8e078c9bf9d024a0059339c5a09c5b1dded6900a219c218cc8b1b78510b62dae556b507304af226b18c3f1aeb1d48660283602d5b6586c399eed5c + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 + languageName: node + linkType: hard + +"minizlib@npm:^3.0.1": + version: 3.0.2 + resolution: "minizlib@npm:3.0.2" + dependencies: + minipass: "npm:^7.1.2" + checksum: 10c0/9f3bd35e41d40d02469cb30470c55ccc21cae0db40e08d1d0b1dff01cc8cc89a6f78e9c5d2b7c844e485ec0a8abc2238111213fdc5b2038e6d1012eacf316f78 + languageName: node + linkType: hard + +"mkdirp@npm:^3.0.1": + version: 3.0.1 + resolution: "mkdirp@npm:3.0.1" + bin: + mkdirp: dist/cjs/src/bin.js + checksum: 10c0/9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d + languageName: node + linkType: hard + +"ms@npm:^2.1.1, ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"napi-postinstall@npm:^0.3.0": + version: 0.3.3 + resolution: "napi-postinstall@npm:0.3.3" + bin: + napi-postinstall: lib/cli.js + checksum: 10c0/3f3297c002abd1f1c64730c442e9047e4b50335666bd2821e990e0546ab917f9cd000d3837930a81dbe89075495e884ed526918a85667abeef0654f659217cea + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + languageName: node + linkType: hard + +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b + languageName: node + linkType: hard + +"neo-async@npm:^2.6.2": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: 10c0/c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 11.3.0 + resolution: "node-gyp@npm:11.3.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^14.0.3" + nopt: "npm:^8.0.0" + proc-log: "npm:^5.0.0" + semver: "npm:^7.3.5" + tar: "npm:^7.4.3" + tinyglobby: "npm:^0.2.12" + which: "npm:^5.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/5f4ad5a729386f7b50096efd4934b06c071dbfbc7d7d541a66d6959a7dccd62f53ff3dc95fffb60bf99d8da1270e23769f82246fcaa6c5645a70c967ae9a3398 + languageName: node + linkType: hard + +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: 10c0/a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a + languageName: node + linkType: hard + +"node-releases@npm:^2.0.19": + version: 2.0.19 + resolution: "node-releases@npm:2.0.19" + checksum: 10c0/52a0dbd25ccf545892670d1551690fe0facb6a471e15f2cfa1b20142a5b255b3aa254af5f59d6ecb69c2bec7390bc643c43aa63b13bf5e64b6075952e716b1aa + languageName: node + linkType: hard + +"nopt@npm:^8.0.0": + version: 8.1.0 + resolution: "nopt@npm:8.1.0" + dependencies: + abbrev: "npm:^3.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/62e9ea70c7a3eb91d162d2c706b6606c041e4e7b547cbbb48f8b3695af457dd6479904d7ace600856bf923dd8d1ed0696f06195c8c20f02ac87c1da0e1d315ef + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: "npm:^3.0.0" + checksum: 10c0/6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac + languageName: node + linkType: hard + +"object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4": + version: 1.13.4 + resolution: "object-inspect@npm:1.13.4" + checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d + languageName: node + linkType: hard + +"object.assign@npm:^4.1.7": + version: 4.1.7 + resolution: "object.assign@npm:4.1.7" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/3b2732bd860567ea2579d1567525168de925a8d852638612846bd8082b3a1602b7b89b67b09913cbb5b9bd6e95923b2ae73580baa9d99cb4e990564e8cbf5ddc + languageName: node + linkType: hard + +"object.fromentries@npm:^2.0.8": + version: 2.0.8 + resolution: "object.fromentries@npm:2.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/cd4327e6c3369cfa805deb4cbbe919bfb7d3aeebf0bcaba291bb568ea7169f8f8cdbcabe2f00b40db0c20cd20f08e11b5f3a5a36fb7dd3fe04850c50db3bf83b + languageName: node + linkType: hard + +"object.groupby@npm:^1.0.3": + version: 1.0.3 + resolution: "object.groupby@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + checksum: 10c0/60d0455c85c736fbfeda0217d1a77525956f76f7b2495edeca9e9bbf8168a45783199e77b894d30638837c654d0cc410e0e02cbfcf445bc8de71c3da1ede6a9c + languageName: node + linkType: hard + +"object.values@npm:^1.2.1": + version: 1.2.1 + resolution: "object.values@npm:1.2.1" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/3c47814fdc64842ae3d5a74bc9d06bdd8d21563c04d9939bf6716a9c00596a4ebc342552f8934013d1ec991c74e3671b26710a0c51815f0b603795605ab6b2c9 + languageName: node + linkType: hard + +"once@npm:^1.3.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + +"onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + languageName: node + linkType: hard + +"optionator@npm:^0.9.3": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" + dependencies: + deep-is: "npm:^0.1.3" + fast-levenshtein: "npm:^2.0.6" + levn: "npm:^0.4.1" + prelude-ls: "npm:^1.2.1" + type-check: "npm:^0.4.0" + word-wrap: "npm:^1.2.5" + checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 + languageName: node + linkType: hard + +"own-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "own-keys@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.2.6" + object-keys: "npm:^1.1.1" + safe-push-apply: "npm:^1.0.0" + checksum: 10c0/6dfeb3455bff92ec3f16a982d4e3e65676345f6902d9f5ded1d8265a6318d0200ce461956d6d1c70053c7fe9f9fe65e552faac03f8140d37ef0fdd108e67013a + languageName: node + linkType: hard + +"p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: "npm:^2.2.0" + checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: "npm:^3.0.2" + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + languageName: node + linkType: hard + +"p-map@npm:^7.0.2": + version: 7.0.3 + resolution: "p-map@npm:7.0.3" + checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + languageName: node + linkType: hard + +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + languageName: node + linkType: hard + +"parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": "npm:^7.0.0" + error-ex: "npm:^1.3.1" + json-parse-even-better-errors: "npm:^2.3.0" + lines-and-columns: "npm:^1.1.6" + checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + languageName: node + linkType: hard + +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: "npm:^10.2.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + languageName: node + linkType: hard + +"picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + +"picomatch@npm:^4.0.2": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 + languageName: node + linkType: hard + +"pirates@npm:^4.0.7": + version: 4.0.7 + resolution: "pirates@npm:4.0.7" + checksum: 10c0/a51f108dd811beb779d58a76864bbd49e239fa40c7984cd11596c75a121a8cc789f1c8971d8bb15f0dbf9d48b76c05bb62fcbce840f89b688c0fa64b37e8478a + languageName: node + linkType: hard + +"pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: "npm:^4.0.0" + checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 + languageName: node + linkType: hard + +"possible-typed-array-names@npm:^1.0.0": + version: 1.1.0 + resolution: "possible-typed-array-names@npm:1.1.0" + checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196 + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd + languageName: node + linkType: hard + +"prettier@npm:^3.5.3": + version: 3.6.2 + resolution: "prettier@npm:3.6.2" + bin: + prettier: bin/prettier.cjs + checksum: 10c0/488cb2f2b99ec13da1e50074912870217c11edaddedeadc649b1244c749d15ba94e846423d062e2c4c9ae683e2d65f754de28889ba06e697ac4f988d44f45812 + languageName: node + linkType: hard + +"pretty-format@npm:30.0.5, pretty-format@npm:^30.0.0": + version: 30.0.5 + resolution: "pretty-format@npm:30.0.5" + dependencies: + "@jest/schemas": "npm:30.0.5" + ansi-styles: "npm:^5.2.0" + react-is: "npm:^18.3.1" + checksum: 10c0/9f6cf1af5c3169093866c80adbfdad32f69c692b62f24ba3ca8cdec8519336123323f896396f9fa40346a41b197c5f6be15aec4d8620819f12496afaaca93f81 + languageName: node + linkType: hard + +"proc-log@npm:^5.0.0": + version: 5.0.0 + resolution: "proc-log@npm:5.0.0" + checksum: 10c0/bbe5edb944b0ad63387a1d5b1911ae93e05ce8d0f60de1035b218cdcceedfe39dbd2c697853355b70f1a090f8f58fe90da487c85216bf9671f9499d1a897e9e3 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"punycode@npm:^2.1.0": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 + languageName: node + linkType: hard + +"pure-rand@npm:^7.0.0": + version: 7.0.1 + resolution: "pure-rand@npm:7.0.1" + checksum: 10c0/9cade41030f5ec95f5d55a11a71404cd6f46b69becaad892097cd7f58e2c6248cd0a933349ca7d21336ab629f1da42ffe899699b671bc4651600eaf6e57f837e + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + +"react-is@npm:^18.3.1": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 + languageName: node + linkType: hard + +"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": + version: 1.0.10 + resolution: "reflect.getprototypeof@npm:1.0.10" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.9" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.7" + get-proto: "npm:^1.0.1" + which-builtin-type: "npm:^1.2.1" + checksum: 10c0/7facec28c8008876f8ab98e80b7b9cb4b1e9224353fd4756dda5f2a4ab0d30fa0a5074777c6df24e1e0af463a2697513b0a11e548d99cf52f21f7bc6ba48d3ac + languageName: node + linkType: hard + +"regenerate-unicode-properties@npm:^10.2.0": + version: 10.2.0 + resolution: "regenerate-unicode-properties@npm:10.2.0" + dependencies: + regenerate: "npm:^1.4.2" + checksum: 10c0/5510785eeaf56bbfdf4e663d6753f125c08d2a372d4107bc1b756b7bf142e2ed80c2733a8b54e68fb309ba37690e66a0362699b0e21d5c1f0255dea1b00e6460 + languageName: node + linkType: hard + +"regenerate@npm:^1.4.2": + version: 1.4.2 + resolution: "regenerate@npm:1.4.2" + checksum: 10c0/f73c9eba5d398c818edc71d1c6979eaa05af7a808682749dd079f8df2a6d91a9b913db216c2c9b03e0a8ba2bba8701244a93f45211afbff691c32c7b275db1b8 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.4": + version: 1.5.4 + resolution: "regexp.prototype.flags@npm:1.5.4" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + set-function-name: "npm:^2.0.2" + checksum: 10c0/83b88e6115b4af1c537f8dabf5c3744032cb875d63bc05c288b1b8c0ef37cbe55353f95d8ca817e8843806e3e150b118bc624e4279b24b4776b4198232735a77 + languageName: node + linkType: hard + +"regexpu-core@npm:^6.2.0": + version: 6.2.0 + resolution: "regexpu-core@npm:6.2.0" + dependencies: + regenerate: "npm:^1.4.2" + regenerate-unicode-properties: "npm:^10.2.0" + regjsgen: "npm:^0.8.0" + regjsparser: "npm:^0.12.0" + unicode-match-property-ecmascript: "npm:^2.0.0" + unicode-match-property-value-ecmascript: "npm:^2.1.0" + checksum: 10c0/bbcb83a854bf96ce4005ee4e4618b71c889cda72674ce6092432f0039b47890c2d0dfeb9057d08d440999d9ea03879ebbb7f26ca005ccf94390e55c348859b98 + languageName: node + linkType: hard + +"regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "regjsgen@npm:0.8.0" + checksum: 10c0/44f526c4fdbf0b29286101a282189e4dbb303f4013cf3fea058668d96d113b9180d3d03d1e13f6d4cbde38b7728bf951aecd9dc199938c080093a9a6f0d7a6bd + languageName: node + linkType: hard + +"regjsparser@npm:^0.12.0": + version: 0.12.0 + resolution: "regjsparser@npm:0.12.0" + dependencies: + jsesc: "npm:~3.0.2" + bin: + regjsparser: bin/parser + checksum: 10c0/99d3e4e10c8c7732eb7aa843b8da2fd8b647fe144d3711b480e4647dc3bff4b1e96691ccf17f3ace24aa866a50b064236177cb25e6e4fbbb18285d99edaed83b + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: "npm:^5.0.0" + checksum: 10c0/e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + +"resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 + languageName: node + linkType: hard + +"resolve-pkg-maps@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-pkg-maps@npm:1.0.0" + checksum: 10c0/fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab + languageName: node + linkType: hard + +"resolve@npm:^1.22.1, resolve@npm:^1.22.10, resolve@npm:^1.22.2, resolve@npm:^1.22.4": + version: 1.22.10 + resolution: "resolve@npm:1.22.10" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/8967e1f4e2cc40f79b7e080b4582b9a8c5ee36ffb46041dccb20e6461161adf69f843b43067b4a375de926a2cd669157e29a29578191def399dd5ef89a1b5203 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.10#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": + version: 1.22.10 + resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/52a4e505bbfc7925ac8f4cd91fd8c4e096b6a89728b9f46861d3b405ac9a1ccf4dcbf8befb4e89a2e11370dacd0160918163885cbc669369590f2f31f4c58939 + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.1.0 + resolution: "reusify@npm:1.1.0" + checksum: 10c0/4eff0d4a5f9383566c7d7ec437b671cc51b25963bd61bf127c3f3d3f68e44a026d99b8d2f1ad344afff8d278a8fe70a8ea092650a716d22287e8bef7126bb2fa + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: bin.js + checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 + languageName: node + linkType: hard + +"rollup@npm:^4.38.0": + version: 4.46.2 + resolution: "rollup@npm:4.46.2" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.46.2" + "@rollup/rollup-android-arm64": "npm:4.46.2" + "@rollup/rollup-darwin-arm64": "npm:4.46.2" + "@rollup/rollup-darwin-x64": "npm:4.46.2" + "@rollup/rollup-freebsd-arm64": "npm:4.46.2" + "@rollup/rollup-freebsd-x64": "npm:4.46.2" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.46.2" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.46.2" + "@rollup/rollup-linux-arm64-gnu": "npm:4.46.2" + "@rollup/rollup-linux-arm64-musl": "npm:4.46.2" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.46.2" + "@rollup/rollup-linux-ppc64-gnu": "npm:4.46.2" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.46.2" + "@rollup/rollup-linux-riscv64-musl": "npm:4.46.2" + "@rollup/rollup-linux-s390x-gnu": "npm:4.46.2" + "@rollup/rollup-linux-x64-gnu": "npm:4.46.2" + "@rollup/rollup-linux-x64-musl": "npm:4.46.2" + "@rollup/rollup-win32-arm64-msvc": "npm:4.46.2" + "@rollup/rollup-win32-ia32-msvc": "npm:4.46.2" + "@rollup/rollup-win32-x64-msvc": "npm:4.46.2" + "@types/estree": "npm:1.0.8" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-loongarch64-gnu": + optional: true + "@rollup/rollup-linux-ppc64-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-riscv64-musl": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/f428497fe119fe7c4e34f1020d45ba13e99b94c9aa36958d88823d932b155c9df3d84f53166f3ee913ff68ea6c7599a9ab34861d88562ad9d8420f64ca5dad4c + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"safe-array-concat@npm:^1.1.3": + version: 1.1.3 + resolution: "safe-array-concat@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" + has-symbols: "npm:^1.1.0" + isarray: "npm:^2.0.5" + checksum: 10c0/43c86ffdddc461fb17ff8a17c5324f392f4868f3c7dd2c6a5d9f5971713bc5fd755667212c80eab9567595f9a7509cc2f83e590ddaebd1bd19b780f9c79f9a8d + languageName: node + linkType: hard + +"safe-push-apply@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-push-apply@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + isarray: "npm:^2.0.5" + checksum: 10c0/831f1c9aae7436429e7862c7e46f847dfe490afac20d0ee61bae06108dbf5c745a0de3568ada30ccdd3eeb0864ca8331b2eef703abd69bfea0745b21fd320750 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex-test@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.2.1" + checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"scm-slang@workspace:.": + version: 0.0.0-use.local + resolution: "scm-slang@workspace:." + dependencies: + "@babel/preset-env": "npm:^7.27.2" + "@rollup/plugin-commonjs": "npm:^28.0.3" + "@rollup/plugin-node-resolve": "npm:^16.0.1" + "@rollup/plugin-typescript": "npm:^12.1.2" + "@types/estree": "npm:^1.0.6" + "@types/jest": "npm:^30.0.0" + "@types/node": "npm:^22.15.30" + "@typescript-eslint/eslint-plugin": "npm:^6.4.0" + acorn: "npm:^8.15.0" + acorn-walk: "npm:^8.3.4" + babel-jest: "npm:^30.0.2" + escodegen: "npm:^2.1.0" + eslint: "npm:^8.57.1" + eslint-config-standard-with-typescript: "npm:^43.0.1" + eslint-plugin-import: "npm:^2.32.0" + eslint-plugin-n: "npm:^15.0.0 || ^16.0.0 " + eslint-plugin-promise: "npm:^6.6.0" + husky: "npm:^9.1.7" + jest: "npm:^30.0.4" + jest-util: "npm:^30.0.5" + js-base64: "npm:^3.7.7" + prettier: "npm:^3.5.3" + rollup: "npm:^4.38.0" + source-map: "npm:^0.7.4" + ts-jest: "npm:^29.4.0" + tslib: "npm:^2.8.1" + typescript: "npm:*" + languageName: unknown + linkType: soft + +"semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + languageName: node + linkType: hard + +"semver@npm:^7.0.0, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.7.2": + version: 7.7.2 + resolution: "semver@npm:7.7.2" + bin: + semver: bin/semver.js + checksum: 10c0/aca305edfbf2383c22571cb7714f48cadc7ac95371b4b52362fb8eeffdfbc0de0669368b82b2b15978f8848f01d7114da65697e56cd8c37b0dab8c58e543f9ea + languageName: node + linkType: hard + +"set-function-length@npm:^1.2.2": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c + languageName: node + linkType: hard + +"set-function-name@npm:^2.0.2": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 + languageName: node + linkType: hard + +"set-proto@npm:^1.0.0": + version: 1.0.0 + resolution: "set-proto@npm:1.0.0" + dependencies: + dunder-proto: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/ca5c3ccbba479d07c30460e367e66337cec825560b11e8ba9c5ebe13a2a0d6021ae34eddf94ff3dfe17a3104dc1f191519cb6c48378b503e5c3f36393938776a + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + side-channel-map: "npm:^1.0.1" + checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 + languageName: node + linkType: hard + +"side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + side-channel-list: "npm:^1.0.0" + side-channel-map: "npm:^1.0.1" + side-channel-weakmap: "npm:^1.0.2" + checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.3": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:^4.3.4" + socks: "npm:^2.8.3" + checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 + languageName: node + linkType: hard + +"socks@npm:^2.8.3": + version: 2.8.6 + resolution: "socks@npm:2.8.6" + dependencies: + ip-address: "npm:^9.0.5" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/15b95db4caa359c80bfa880ff3e58f3191b9ffa4313570e501a60ee7575f51e4be664a296f4ee5c2c40544da179db6140be53433ce41ec745f9d51f342557514 + languageName: node + linkType: hard + +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e + languageName: node + linkType: hard + +"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + languageName: node + linkType: hard + +"source-map@npm:^0.7.4": + version: 0.7.6 + resolution: "source-map@npm:0.7.6" + checksum: 10c0/59f6f05538539b274ba771d2e9e32f6c65451982510564438e048bc1352f019c6efcdc6dd07909b1968144941c14015c2c7d4369fb7c4d7d53ae769716dcc16c + languageName: node + linkType: hard + +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec + languageName: node + linkType: hard + +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb + languageName: node + linkType: hard + +"ssri@npm:^12.0.0": + version: 12.0.0 + resolution: "ssri@npm:12.0.0" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/caddd5f544b2006e88fa6b0124d8d7b28208b83c72d7672d5ade44d794525d23b540f3396108c4eb9280dcb7c01f0bef50682f5b4b2c34291f7c5e211fd1417d + languageName: node + linkType: hard + +"stack-utils@npm:^2.0.6": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + languageName: node + linkType: hard + +"stop-iteration-iterator@npm:^1.1.0": + version: 1.1.0 + resolution: "stop-iteration-iterator@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + internal-slot: "npm:^1.1.0" + checksum: 10c0/de4e45706bb4c0354a4b1122a2b8cc45a639e86206807ce0baf390ee9218d3ef181923fa4d2b67443367c491aa255c5fbaa64bb74648e3c5b48299928af86c09 + languageName: node + linkType: hard + +"string-length@npm:^4.0.2": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" + dependencies: + char-regex: "npm:^1.0.2" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"string.prototype.trim@npm:^1.2.10": + version: 1.2.10 + resolution: "string.prototype.trim@npm:1.2.10" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + define-data-property: "npm:^1.1.4" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-object-atoms: "npm:^1.0.0" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/8a8854241c4b54a948e992eb7dd6b8b3a97185112deb0037a134f5ba57541d8248dd610c966311887b6c2fd1181a3877bffb14d873ce937a344535dabcc648f8 + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.9": + version: 1.0.9 + resolution: "string.prototype.trimend@npm:1.0.9" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/59e1a70bf9414cb4c536a6e31bef5553c8ceb0cf44d8b4d0ed65c9653358d1c64dd0ec203b100df83d0413bbcde38b8c5d49e14bc4b86737d74adc593a0d35b6 + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimstart@npm:1.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/d53af1899959e53c83b64a5fd120be93e067da740e7e75acb433849aa640782fb6c7d4cd5b84c954c84413745a3764df135a8afeb22908b86a835290788d8366 + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 + languageName: node + linkType: hard + +"strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 10c0/26abad1172d6bc48985ab9a5f96c21e440f6e7e476686de49be813b5a59b3566dccb5c525b831ec54fe348283b47f3ffb8e080bc3f965fde12e84df23f6bb7ef + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 10c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + +"supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + languageName: node + linkType: hard + +"synckit@npm:^0.11.8": + version: 0.11.11 + resolution: "synckit@npm:0.11.11" + dependencies: + "@pkgr/core": "npm:^0.2.9" + checksum: 10c0/f0761495953d12d94a86edf6326b3a565496c72f9b94c02549b6961fb4d999f4ca316ce6b3eb8ed2e4bfc5056a8de65cda0bd03a233333a35221cd2fdc0e196b + languageName: node + linkType: hard + +"tar@npm:^7.4.3": + version: 7.4.3 + resolution: "tar@npm:7.4.3" + dependencies: + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.0.1" + mkdirp: "npm:^3.0.1" + yallist: "npm:^5.0.0" + checksum: 10c0/d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d + languageName: node + linkType: hard + +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^7.1.4" + minimatch: "npm:^3.0.4" + checksum: 10c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 + languageName: node + linkType: hard + +"text-table@npm:^0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c + languageName: node + linkType: hard + +"tinyglobby@npm:^0.2.12": + version: 0.2.14 + resolution: "tinyglobby@npm:0.2.14" + dependencies: + fdir: "npm:^6.4.4" + picomatch: "npm:^4.0.2" + checksum: 10c0/f789ed6c924287a9b7d3612056ed0cda67306cd2c80c249fd280cf1504742b12583a2089b61f4abbd24605f390809017240e250241f09938054c9b363e51c0a6 + languageName: node + linkType: hard + +"tmpl@npm:1.0.5": + version: 1.0.5 + resolution: "tmpl@npm:1.0.5" + checksum: 10c0/f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"ts-api-utils@npm:^1.0.1": + version: 1.4.3 + resolution: "ts-api-utils@npm:1.4.3" + peerDependencies: + typescript: ">=4.2.0" + checksum: 10c0/e65dc6e7e8141140c23e1dc94984bf995d4f6801919c71d6dc27cf0cd51b100a91ffcfe5217626193e5bea9d46831e8586febdc7e172df3f1091a7384299e23a + languageName: node + linkType: hard + +"ts-jest@npm:^29.4.0": + version: 29.4.1 + resolution: "ts-jest@npm:29.4.1" + dependencies: + bs-logger: "npm:^0.2.6" + fast-json-stable-stringify: "npm:^2.1.0" + handlebars: "npm:^4.7.8" + json5: "npm:^2.2.3" + lodash.memoize: "npm:^4.1.2" + make-error: "npm:^1.3.6" + semver: "npm:^7.7.2" + type-fest: "npm:^4.41.0" + yargs-parser: "npm:^21.1.1" + peerDependencies: + "@babel/core": ">=7.0.0-beta.0 <8" + "@jest/transform": ^29.0.0 || ^30.0.0 + "@jest/types": ^29.0.0 || ^30.0.0 + babel-jest: ^29.0.0 || ^30.0.0 + jest: ^29.0.0 || ^30.0.0 + jest-util: ^29.0.0 || ^30.0.0 + typescript: ">=4.3 <6" + peerDependenciesMeta: + "@babel/core": + optional: true + "@jest/transform": + optional: true + "@jest/types": + optional: true + babel-jest: + optional: true + esbuild: + optional: true + jest-util: + optional: true + bin: + ts-jest: cli.js + checksum: 10c0/e4881717323c9e03ba9ad2f8726872cd0bede7f3f34095754aa850688b319f50294211cfd330edad878005e70601cbbbb0bb489ed0949a9aa545491e1083e923 + languageName: node + linkType: hard + +"tsconfig-paths@npm:^3.15.0": + version: 3.15.0 + resolution: "tsconfig-paths@npm:3.15.0" + dependencies: + "@types/json5": "npm:^0.0.29" + json5: "npm:^1.0.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10c0/5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5 + languageName: node + linkType: hard + +"tslib@npm:^2.4.0, tslib@npm:^2.8.1": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: "npm:^1.2.1" + checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 + languageName: node + linkType: hard + +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd + languageName: node + linkType: hard + +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 + languageName: node + linkType: hard + +"type-fest@npm:^4.41.0": + version: 4.41.0 + resolution: "type-fest@npm:4.41.0" + checksum: 10c0/f5ca697797ed5e88d33ac8f1fec21921839871f808dc59345c9cf67345bfb958ce41bd821165dbf3ae591cedec2bf6fe8882098dfdd8dc54320b859711a2c1e4 + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-buffer@npm:1.0.3" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.14" + checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-byte-length@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.8" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.14" + checksum: 10c0/6ae083c6f0354f1fce18b90b243343b9982affd8d839c57bbd2c174a5d5dc71be9eb7019ffd12628a96a4815e7afa85d718d6f1e758615151d5f35df841ffb3e + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-byte-offset@npm:1.0.4" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.15" + reflect.getprototypeof: "npm:^1.0.9" + checksum: 10c0/3d805b050c0c33b51719ee52de17c1cd8e6a571abdf0fffb110e45e8dd87a657e8b56eee94b776b13006d3d347a0c18a730b903cf05293ab6d92e99ff8f77e53 + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.7": + version: 1.0.7 + resolution: "typed-array-length@npm:1.0.7" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + is-typed-array: "npm:^1.1.13" + possible-typed-array-names: "npm:^1.0.0" + reflect.getprototypeof: "npm:^1.0.6" + checksum: 10c0/e38f2ae3779584c138a2d8adfa8ecf749f494af3cd3cdafe4e688ce51418c7d2c5c88df1bd6be2bbea099c3f7cea58c02ca02ed438119e91f162a9de23f61295 + languageName: node + linkType: hard + +"typescript@npm:*": + version: 5.9.2 + resolution: "typescript@npm:5.9.2" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/cd635d50f02d6cf98ed42de2f76289701c1ec587a363369255f01ed15aaf22be0813226bff3c53e99d971f9b540e0b3cc7583dbe05faded49b1b0bed2f638a18 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A*#optional!builtin": + version: 5.9.2 + resolution: "typescript@patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/34d2a8e23eb8e0d1875072064d5e1d9c102e0bdce56a10a25c0b917b8aa9001a9cf5c225df12497e99da107dc379360bc138163c66b55b95f5b105b50578067e + languageName: node + linkType: hard + +"uglify-js@npm:^3.1.4": + version: 3.19.3 + resolution: "uglify-js@npm:3.19.3" + bin: + uglifyjs: bin/uglifyjs + checksum: 10c0/83b0a90eca35f778e07cad9622b80c448b6aad457c9ff8e568afed978212b42930a95f9e1be943a1ffa4258a3340fbb899f41461131c05bb1d0a9c303aed8479 + languageName: node + linkType: hard + +"unbox-primitive@npm:^1.1.0": + version: 1.1.0 + resolution: "unbox-primitive@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + which-boxed-primitive: "npm:^1.1.1" + checksum: 10c0/7dbd35ab02b0e05fe07136c72cb9355091242455473ec15057c11430129bab38b7b3624019b8778d02a881c13de44d63cd02d122ee782fb519e1de7775b5b982 + languageName: node + linkType: hard + +"undici-types@npm:~6.21.0": + version: 6.21.0 + resolution: "undici-types@npm:6.21.0" + checksum: 10c0/c01ed51829b10aa72fc3ce64b747f8e74ae9b60eafa19a7b46ef624403508a54c526ffab06a14a26b3120d055e1104d7abe7c9017e83ced038ea5cf52f8d5e04 + languageName: node + linkType: hard + +"undici-types@npm:~7.10.0": + version: 7.10.0 + resolution: "undici-types@npm:7.10.0" + checksum: 10c0/8b00ce50e235fe3cc601307f148b5e8fb427092ee3b23e8118ec0a5d7f68eca8cee468c8fc9f15cbb2cf2a3797945ebceb1cbd9732306a1d00e0a9b6afa0f635 + languageName: node + linkType: hard + +"unicode-canonical-property-names-ecmascript@npm:^2.0.0": + version: 2.0.1 + resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.1" + checksum: 10c0/f83bc492fdbe662860795ef37a85910944df7310cac91bd778f1c19ebc911e8b9cde84e703de631e5a2fcca3905e39896f8fc5fc6a44ddaf7f4aff1cda24f381 + languageName: node + linkType: hard + +"unicode-match-property-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-match-property-ecmascript@npm:2.0.0" + dependencies: + unicode-canonical-property-names-ecmascript: "npm:^2.0.0" + unicode-property-aliases-ecmascript: "npm:^2.0.0" + checksum: 10c0/4d05252cecaf5c8e36d78dc5332e03b334c6242faf7cf16b3658525441386c0a03b5f603d42cbec0f09bb63b9fd25c9b3b09667aee75463cac3efadae2cd17ec + languageName: node + linkType: hard + +"unicode-match-property-value-ecmascript@npm:^2.1.0": + version: 2.2.0 + resolution: "unicode-match-property-value-ecmascript@npm:2.2.0" + checksum: 10c0/1d0a2deefd97974ddff5b7cb84f9884177f4489928dfcebb4b2b091d6124f2739df51fc6ea15958e1b5637ac2a24cff9bf21ea81e45335086ac52c0b4c717d6d + languageName: node + linkType: hard + +"unicode-property-aliases-ecmascript@npm:^2.0.0": + version: 2.1.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" + checksum: 10c0/50ded3f8c963c7785e48c510a3b7c6bc4e08a579551489aa0349680a35b1ceceec122e33b2b6c1b579d0be2250f34bb163ac35f5f8695fe10bbc67fb757f0af8 + languageName: node + linkType: hard + +"unique-filename@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-filename@npm:4.0.0" + dependencies: + unique-slug: "npm:^5.0.0" + checksum: 10c0/38ae681cceb1408ea0587b6b01e29b00eee3c84baee1e41fd5c16b9ed443b80fba90c40e0ba69627e30855570a34ba8b06702d4a35035d4b5e198bf5a64c9ddc + languageName: node + linkType: hard + +"unique-slug@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-slug@npm:5.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293 + languageName: node + linkType: hard + +"unrs-resolver@npm:^1.7.11": + version: 1.11.1 + resolution: "unrs-resolver@npm:1.11.1" + dependencies: + "@unrs/resolver-binding-android-arm-eabi": "npm:1.11.1" + "@unrs/resolver-binding-android-arm64": "npm:1.11.1" + "@unrs/resolver-binding-darwin-arm64": "npm:1.11.1" + "@unrs/resolver-binding-darwin-x64": "npm:1.11.1" + "@unrs/resolver-binding-freebsd-x64": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm64-musl": "npm:1.11.1" + "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-riscv64-musl": "npm:1.11.1" + "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-x64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-x64-musl": "npm:1.11.1" + "@unrs/resolver-binding-wasm32-wasi": "npm:1.11.1" + "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.11.1" + "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.11.1" + "@unrs/resolver-binding-win32-x64-msvc": "npm:1.11.1" + napi-postinstall: "npm:^0.3.0" + dependenciesMeta: + "@unrs/resolver-binding-android-arm-eabi": + optional: true + "@unrs/resolver-binding-android-arm64": + optional: true + "@unrs/resolver-binding-darwin-arm64": + optional: true + "@unrs/resolver-binding-darwin-x64": + optional: true + "@unrs/resolver-binding-freebsd-x64": + optional: true + "@unrs/resolver-binding-linux-arm-gnueabihf": + optional: true + "@unrs/resolver-binding-linux-arm-musleabihf": + optional: true + "@unrs/resolver-binding-linux-arm64-gnu": + optional: true + "@unrs/resolver-binding-linux-arm64-musl": + optional: true + "@unrs/resolver-binding-linux-ppc64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-musl": + optional: true + "@unrs/resolver-binding-linux-s390x-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-musl": + optional: true + "@unrs/resolver-binding-wasm32-wasi": + optional: true + "@unrs/resolver-binding-win32-arm64-msvc": + optional: true + "@unrs/resolver-binding-win32-ia32-msvc": + optional: true + "@unrs/resolver-binding-win32-x64-msvc": + optional: true + checksum: 10c0/c91b112c71a33d6b24e5c708dab43ab80911f2df8ee65b87cd7a18fb5af446708e98c4b415ca262026ad8df326debcc7ca6a801b2935504d87fd6f0b9d70dce1 + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.1.3": + version: 1.1.3 + resolution: "update-browserslist-db@npm:1.1.3" + dependencies: + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.1" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/682e8ecbf9de474a626f6462aa85927936cdd256fe584c6df2508b0df9f7362c44c957e9970df55dfe44d3623807d26316ea2c7d26b80bb76a16c56c37233c32 + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + languageName: node + linkType: hard + +"v8-to-istanbul@npm:^9.0.1": + version: 9.3.0 + resolution: "v8-to-istanbul@npm:9.3.0" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.12" + "@types/istanbul-lib-coverage": "npm:^2.0.1" + convert-source-map: "npm:^2.0.0" + checksum: 10c0/968bcf1c7c88c04df1ffb463c179558a2ec17aa49e49376120504958239d9e9dad5281aa05f2a78542b8557f2be0b0b4c325710262f3b838b40d703d5ed30c23 + languageName: node + linkType: hard + +"walker@npm:^1.0.8": + version: 1.0.8 + resolution: "walker@npm:1.0.8" + dependencies: + makeerror: "npm:1.0.12" + checksum: 10c0/a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e + languageName: node + linkType: hard + +"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": + version: 1.1.1 + resolution: "which-boxed-primitive@npm:1.1.1" + dependencies: + is-bigint: "npm:^1.1.0" + is-boolean-object: "npm:^1.2.1" + is-number-object: "npm:^1.1.1" + is-string: "npm:^1.1.1" + is-symbol: "npm:^1.1.1" + checksum: 10c0/aceea8ede3b08dede7dce168f3883323f7c62272b49801716e8332ff750e7ae59a511ae088840bc6874f16c1b7fd296c05c949b0e5b357bfe3c431b98c417abe + languageName: node + linkType: hard + +"which-builtin-type@npm:^1.2.1": + version: 1.2.1 + resolution: "which-builtin-type@npm:1.2.1" + dependencies: + call-bound: "npm:^1.0.2" + function.prototype.name: "npm:^1.1.6" + has-tostringtag: "npm:^1.0.2" + is-async-function: "npm:^2.0.0" + is-date-object: "npm:^1.1.0" + is-finalizationregistry: "npm:^1.1.0" + is-generator-function: "npm:^1.0.10" + is-regex: "npm:^1.2.1" + is-weakref: "npm:^1.0.2" + isarray: "npm:^2.0.5" + which-boxed-primitive: "npm:^1.1.0" + which-collection: "npm:^1.0.2" + which-typed-array: "npm:^1.1.16" + checksum: 10c0/8dcf323c45e5c27887800df42fbe0431d0b66b1163849bb7d46b5a730ad6a96ee8bfe827d078303f825537844ebf20c02459de41239a0a9805e2fcb3cae0d471 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.2": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" + dependencies: + is-map: "npm:^2.0.3" + is-set: "npm:^2.0.3" + is-weakmap: "npm:^2.0.2" + is-weakset: "npm:^2.0.3" + checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19": + version: 1.1.19 + resolution: "which-typed-array@npm:1.1.19" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + for-each: "npm:^0.3.5" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/702b5dc878addafe6c6300c3d0af5983b175c75fcb4f2a72dfc3dd38d93cf9e89581e4b29c854b16ea37e50a7d7fca5ae42ece5c273d8060dcd603b2404bbb3f + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^5.0.0": + version: 5.0.0 + resolution: "which@npm:5.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b + languageName: node + linkType: hard + +"word-wrap@npm:^1.2.5": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 + languageName: node + linkType: hard + +"wordwrap@npm:^1.0.0": + version: 1.0.0 + resolution: "wordwrap@npm:1.0.0" + checksum: 10c0/7ed2e44f3c33c5c3e3771134d2b0aee4314c9e49c749e37f464bf69f2bcdf0cbf9419ca638098e2717cff4875c47f56a007532f6111c3319f557a2ca91278e92 + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + languageName: node + linkType: hard + +"write-file-atomic@npm:^5.0.1": + version: 5.0.1 + resolution: "write-file-atomic@npm:5.0.1" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^4.0.1" + checksum: 10c0/e8c850a8e3e74eeadadb8ad23c9d9d63e4e792bd10f4836ed74189ef6e996763959f1249c5650e232f3c77c11169d239cbfc8342fc70f3fe401407d23810505d + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 + languageName: node + linkType: hard + +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs@npm:^17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard