diff --git a/package-lock.json b/package-lock.json index 31444a48..273f4a73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "BSD-3-Clause", "devDependencies": { "@rollup/plugin-terser": "^0.4.4", + "cross-env": "^10.0.0", "http-server": "^14.1.1", "jest": "^28.1.0", "jest-environment-jsdom": "^28.1.0", @@ -575,6 +576,13 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@epic-web/invariant": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", + "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", + "dev": true, + "license": "MIT" + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -1704,11 +1712,30 @@ "node": ">= 0.4.0" } }, + "node_modules/cross-env": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.0.0.tgz", + "integrity": "sha512-aU8qlEK/nHYtVuN4p7UQgAwVljzMg8hB4YK5ThRqD2l/ziSnryncPNn7bMLt5cFYsKVKBh8HqLqyCoTupEUu7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@epic-web/invariant": "^1.0.0", + "cross-spawn": "^7.0.6" + }, + "bin": { + "cross-env": "dist/bin/cross-env.js", + "cross-env-shell": "dist/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d0048cb9..ee898e47 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,253 +1,170 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -devDependencies: - '@rollup/plugin-terser': - specifier: ^0.4.4 - version: 0.4.4(rollup@2.79.2) - http-server: - specifier: ^14.1.1 - version: 14.1.1 - jest: - specifier: ^28.1.0 - version: 28.1.3 - jest-environment-jsdom: - specifier: ^28.1.0 - version: 28.1.3 - prettier: - specifier: 2.6.2 - version: 2.6.2 - rollup: - specifier: 2.79.2 - version: 2.79.2 - rollup-plugin-cleanup: - specifier: ^3.2.1 - version: 3.2.1(rollup@2.79.2) - tsd-jsdoc: - specifier: ^2.5.0 - version: 2.5.0(jsdoc@3.6.11) - typescript: - specifier: ^5.9.2 - version: 5.9.2 +importers: + .: + devDependencies: + '@rollup/plugin-terser': + specifier: ^0.4.4 + version: 0.4.4(rollup@2.79.2) + cross-env: + specifier: ^10.0.0 + version: 10.0.0 + http-server: + specifier: ^14.1.1 + version: 14.1.1 + jest: + specifier: ^28.1.0 + version: 28.1.3(@types/node@24.3.1) + jest-environment-jsdom: + specifier: ^28.1.0 + version: 28.1.3 + prettier: + specifier: 2.6.2 + version: 2.6.2 + rollup: + specifier: 2.79.2 + version: 2.79.2 + rollup-plugin-cleanup: + specifier: ^3.2.1 + version: 3.2.1(rollup@2.79.2) + tsd-jsdoc: + specifier: ^2.5.0 + version: 2.5.0(jsdoc@3.6.11) + typescript: + specifier: ^5.9.2 + version: 5.9.2 packages: - /@ampproject/remapping@2.3.0: - resolution: - { - integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==, - } - engines: { node: '>=6.0.0' } - dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 - dev: true - - /@babel/code-frame@7.27.1: + '@babel/code-frame@7.27.1': resolution: { integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==, } engines: { node: '>=6.9.0' } - dependencies: - '@babel/helper-validator-identifier': 7.27.1 - js-tokens: 4.0.0 - picocolors: 1.1.1 - dev: true - /@babel/compat-data@7.28.0: + '@babel/compat-data@7.28.4': resolution: { - integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==, + integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==, } engines: { node: '>=6.9.0' } - dev: true - /@babel/core@7.28.0: + '@babel/core@7.28.4': resolution: { - integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==, + integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==, } engines: { node: '>=6.9.0' } - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helpers': 7.28.2 - '@babel/parser': 7.28.0 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 - convert-source-map: 2.0.0 - debug: 4.4.1 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/generator@7.28.0: + '@babel/generator@7.28.3': resolution: { - integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==, + integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==, } engines: { node: '>=6.9.0' } - dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 - jsesc: 3.1.0 - dev: true - /@babel/helper-compilation-targets@7.27.2: + '@babel/helper-compilation-targets@7.27.2': resolution: { integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==, } engines: { node: '>=6.9.0' } - dependencies: - '@babel/compat-data': 7.28.0 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.2 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - /@babel/helper-globals@7.28.0: + '@babel/helper-globals@7.28.0': resolution: { integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==, } engines: { node: '>=6.9.0' } - dev: true - /@babel/helper-module-imports@7.27.1: + '@babel/helper-module-imports@7.27.1': resolution: { integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==, } engines: { node: '>=6.9.0' } - dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0): + '@babel/helper-module-transforms@7.28.3': resolution: { - integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==, + integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==, } engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-plugin-utils@7.27.1: + '@babel/helper-plugin-utils@7.27.1': resolution: { integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==, } engines: { node: '>=6.9.0' } - dev: true - /@babel/helper-string-parser@7.27.1: + '@babel/helper-string-parser@7.27.1': resolution: { integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==, } engines: { node: '>=6.9.0' } - dev: true - /@babel/helper-validator-identifier@7.27.1: + '@babel/helper-validator-identifier@7.27.1': resolution: { integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==, } engines: { node: '>=6.9.0' } - dev: true - /@babel/helper-validator-option@7.27.1: + '@babel/helper-validator-option@7.27.1': resolution: { integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==, } engines: { node: '>=6.9.0' } - dev: true - /@babel/helpers@7.28.2: + '@babel/helpers@7.28.4': resolution: { - integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==, + integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==, } engines: { node: '>=6.9.0' } - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.2 - dev: true - /@babel/parser@7.28.0: + '@babel/parser@7.28.4': resolution: { - integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==, + integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==, } engines: { node: '>=6.0.0' } hasBin: true - dependencies: - '@babel/types': 7.28.2 - dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.0): + '@babel/plugin-syntax-async-generators@7.8.4': resolution: { integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==, } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.0): + '@babel/plugin-syntax-bigint@7.8.3': resolution: { integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==, } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.0): + '@babel/plugin-syntax-class-properties@7.12.13': resolution: { integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==, } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.0): + '@babel/plugin-syntax-class-static-block@7.14.5': resolution: { integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==, @@ -255,12 +172,8 @@ packages: engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.0): + '@babel/plugin-syntax-import-attributes@7.27.1': resolution: { integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==, @@ -268,108 +181,72 @@ packages: engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.0): + '@babel/plugin-syntax-import-meta@7.10.4': resolution: { integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==, } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.0): + '@babel/plugin-syntax-json-strings@7.8.3': resolution: { integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==, } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.0): + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': resolution: { integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==, } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.0): + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': resolution: { integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.0): + '@babel/plugin-syntax-numeric-separator@7.10.4': resolution: { integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==, } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.0): + '@babel/plugin-syntax-object-rest-spread@7.8.3': resolution: { integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==, } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.0): + '@babel/plugin-syntax-optional-catch-binding@7.8.3': resolution: { integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==, } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.0): + '@babel/plugin-syntax-optional-chaining@7.8.3': resolution: { integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.0): + '@babel/plugin-syntax-private-property-in-object@7.14.5': resolution: { integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==, @@ -377,12 +254,8 @@ packages: engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.0): + '@babel/plugin-syntax-top-level-await@7.14.5': resolution: { integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==, @@ -390,12 +263,8 @@ packages: engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.0): + '@babel/plugin-syntax-typescript@7.27.1': resolution: { integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==, @@ -403,97 +272,62 @@ packages: engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - dev: true - /@babel/template@7.27.2: + '@babel/template@7.27.2': resolution: { integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==, } engines: { node: '>=6.9.0' } - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 - dev: true - /@babel/traverse@7.28.0: + '@babel/traverse@7.28.4': resolution: { - integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==, + integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==, } engines: { node: '>=6.9.0' } - 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.2 - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/types@7.28.2: + '@babel/types@7.28.4': resolution: { - integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==, + integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==, } engines: { node: '>=6.9.0' } - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - dev: true - /@bcoe/v8-coverage@0.2.3: + '@bcoe/v8-coverage@0.2.3': resolution: { integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, } - dev: true - /@istanbuljs/load-nyc-config@1.1.0: + '@epic-web/invariant@1.0.0': + resolution: + { + integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==, + } + + '@istanbuljs/load-nyc-config@1.1.0': resolution: { integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==, } engines: { node: '>=8' } - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true - /@istanbuljs/schema@0.1.3: + '@istanbuljs/schema@0.1.3': resolution: { integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==, } engines: { node: '>=8' } - dev: true - /@jest/console@28.1.3: + '@jest/console@28.1.3': resolution: { integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/types': 28.1.3 - '@types/node': 24.2.1 - chalk: 4.1.2 - jest-message-util: 28.1.3 - jest-util: 28.1.3 - slash: 3.0.0 - dev: true - /@jest/core@28.1.3: + '@jest/core@28.1.3': resolution: { integrity: sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==, @@ -504,107 +338,43 @@ packages: peerDependenciesMeta: node-notifier: optional: true - dependencies: - '@jest/console': 28.1.3 - '@jest/reporters': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 24.2.1 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 28.1.3 - jest-config: 28.1.3(@types/node@24.2.1) - jest-haste-map: 28.1.3 - jest-message-util: 28.1.3 - jest-regex-util: 28.0.2 - jest-resolve: 28.1.3 - jest-resolve-dependencies: 28.1.3 - jest-runner: 28.1.3 - jest-runtime: 28.1.3 - jest-snapshot: 28.1.3 - jest-util: 28.1.3 - jest-validate: 28.1.3 - jest-watcher: 28.1.3 - micromatch: 4.0.8 - pretty-format: 28.1.3 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - /@jest/environment@28.1.3: + '@jest/environment@28.1.3': resolution: { integrity: sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/fake-timers': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 24.2.1 - jest-mock: 28.1.3 - dev: true - /@jest/expect-utils@28.1.3: + '@jest/expect-utils@28.1.3': resolution: { integrity: sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - jest-get-type: 28.0.2 - dev: true - /@jest/expect@28.1.3: + '@jest/expect@28.1.3': resolution: { integrity: sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - expect: 28.1.3 - jest-snapshot: 28.1.3 - transitivePeerDependencies: - - supports-color - dev: true - /@jest/fake-timers@28.1.3: + '@jest/fake-timers@28.1.3': resolution: { integrity: sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/types': 28.1.3 - '@sinonjs/fake-timers': 9.1.2 - '@types/node': 24.2.1 - jest-message-util: 28.1.3 - jest-mock: 28.1.3 - jest-util: 28.1.3 - dev: true - /@jest/globals@28.1.3: + '@jest/globals@28.1.3': resolution: { integrity: sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/environment': 28.1.3 - '@jest/expect': 28.1.3 - '@jest/types': 28.1.3 - transitivePeerDependencies: - - supports-color - dev: true - /@jest/reporters@28.1.3: + '@jest/reporters@28.1.3': resolution: { integrity: sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==, @@ -615,171 +385,87 @@ packages: peerDependenciesMeta: node-notifier: optional: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 - '@jridgewell/trace-mapping': 0.3.29 - '@types/node': 24.2.1 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - jest-message-util: 28.1.3 - jest-util: 28.1.3 - jest-worker: 28.1.3 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - terminal-link: 2.1.1 - v8-to-istanbul: 9.3.0 - transitivePeerDependencies: - - supports-color - dev: true - /@jest/schemas@28.1.3: + '@jest/schemas@28.1.3': resolution: { integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@sinclair/typebox': 0.24.51 - dev: true - /@jest/source-map@28.1.2: + '@jest/source-map@28.1.2': resolution: { integrity: sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jridgewell/trace-mapping': 0.3.29 - callsites: 3.1.0 - graceful-fs: 4.2.11 - dev: true - /@jest/test-result@28.1.3: + '@jest/test-result@28.1.3': resolution: { integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/console': 28.1.3 - '@jest/types': 28.1.3 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - dev: true - /@jest/test-sequencer@28.1.3: + '@jest/test-sequencer@28.1.3': resolution: { integrity: sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/test-result': 28.1.3 - graceful-fs: 4.2.11 - jest-haste-map: 28.1.3 - slash: 3.0.0 - dev: true - /@jest/transform@28.1.3: + '@jest/transform@28.1.3': resolution: { integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@babel/core': 7.28.0 - '@jest/types': 28.1.3 - '@jridgewell/trace-mapping': 0.3.29 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.9.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 28.1.3 - jest-regex-util: 28.0.2 - jest-util: 28.1.3 - micromatch: 4.0.8 - pirates: 4.0.7 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: true - /@jest/types@28.1.3: + '@jest/types@28.1.3': resolution: { integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/schemas': 28.1.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 24.2.1 - '@types/yargs': 17.0.33 - chalk: 4.1.2 - dev: true - /@jridgewell/gen-mapping@0.3.12: + '@jridgewell/gen-mapping@0.3.13': resolution: { - integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==, + integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, } - dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - '@jridgewell/trace-mapping': 0.3.29 - dev: true - /@jridgewell/resolve-uri@3.1.2: + '@jridgewell/remapping@2.3.5': + resolution: + { + integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==, + } + + '@jridgewell/resolve-uri@3.1.2': resolution: { integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, } engines: { node: '>=6.0.0' } - dev: true - /@jridgewell/source-map@0.3.10: + '@jridgewell/source-map@0.3.11': resolution: { - integrity: sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==, + integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==, } - dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 - dev: true - /@jridgewell/sourcemap-codec@1.5.4: + '@jridgewell/sourcemap-codec@1.5.5': resolution: { - integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==, + integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, } - dev: true - /@jridgewell/trace-mapping@0.3.29: + '@jridgewell/trace-mapping@0.3.31': resolution: { - integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==, + integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, } - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 - dev: true - /@rollup/plugin-terser@0.4.4(rollup@2.79.2): + '@rollup/plugin-terser@0.4.4': resolution: { integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==, @@ -790,343 +476,249 @@ packages: peerDependenciesMeta: rollup: optional: true - dependencies: - rollup: 2.79.2 - serialize-javascript: 6.0.2 - smob: 1.5.0 - terser: 5.43.1 - dev: true - /@sinclair/typebox@0.24.51: + '@sinclair/typebox@0.24.51': resolution: { integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==, } - dev: true - /@sinonjs/commons@1.8.6: + '@sinonjs/commons@1.8.6': resolution: { integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==, } - dependencies: - type-detect: 4.0.8 - dev: true - /@sinonjs/fake-timers@9.1.2: + '@sinonjs/fake-timers@9.1.2': resolution: { integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==, } - dependencies: - '@sinonjs/commons': 1.8.6 - dev: true - /@tootallnate/once@2.0.0: + '@tootallnate/once@2.0.0': resolution: { integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==, } engines: { node: '>= 10' } - dev: true - /@types/babel__core@7.20.5: + '@types/babel__core@7.20.5': resolution: { integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==, } - dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 - '@types/babel__generator': 7.27.0 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.28.0 - dev: true - /@types/babel__generator@7.27.0: + '@types/babel__generator@7.27.0': resolution: { integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==, } - dependencies: - '@babel/types': 7.28.2 - dev: true - /@types/babel__template@7.4.4: + '@types/babel__template@7.4.4': resolution: { integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==, } - dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 - dev: true - /@types/babel__traverse@7.28.0: + '@types/babel__traverse@7.28.0': resolution: { integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==, } - dependencies: - '@babel/types': 7.28.2 - dev: true - /@types/graceful-fs@4.1.9: + '@types/graceful-fs@4.1.9': resolution: { integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==, } - dependencies: - '@types/node': 24.2.1 - dev: true - /@types/istanbul-lib-coverage@2.0.6: + '@types/istanbul-lib-coverage@2.0.6': resolution: { integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==, } - dev: true - /@types/istanbul-lib-report@3.0.3: + '@types/istanbul-lib-report@3.0.3': resolution: { integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==, } - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - dev: true - /@types/istanbul-reports@3.0.4: + '@types/istanbul-reports@3.0.4': resolution: { integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==, } - dependencies: - '@types/istanbul-lib-report': 3.0.3 - dev: true - /@types/jsdom@16.2.15: + '@types/jsdom@16.2.15': resolution: { integrity: sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==, } - dependencies: - '@types/node': 24.2.1 - '@types/parse5': 6.0.3 - '@types/tough-cookie': 4.0.5 - dev: true - /@types/linkify-it@5.0.0: + '@types/linkify-it@5.0.0': resolution: { integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==, } - dev: true - /@types/markdown-it@12.2.3: + '@types/markdown-it@12.2.3': resolution: { integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==, } - dependencies: - '@types/linkify-it': 5.0.0 - '@types/mdurl': 2.0.0 - dev: true - /@types/mdurl@2.0.0: + '@types/mdurl@2.0.0': resolution: { integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==, } - dev: true - /@types/node@24.2.1: + '@types/node@24.3.1': resolution: { - integrity: sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==, + integrity: sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==, } - dependencies: - undici-types: 7.10.0 - dev: true - /@types/parse5@6.0.3: + '@types/parse5@6.0.3': resolution: { integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==, } - dev: true - /@types/prettier@2.7.3: + '@types/prettier@2.7.3': resolution: { integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==, } - dev: true - /@types/stack-utils@2.0.3: + '@types/stack-utils@2.0.3': resolution: { integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==, } - dev: true - /@types/tough-cookie@4.0.5: + '@types/tough-cookie@4.0.5': resolution: { integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==, } - dev: true - /@types/yargs-parser@21.0.3: + '@types/yargs-parser@21.0.3': resolution: { integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==, } - dev: true - /@types/yargs@17.0.33: + '@types/yargs@17.0.33': resolution: { integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==, } - dependencies: - '@types/yargs-parser': 21.0.3 - dev: true - /abab@2.0.6: + abab@2.0.6: resolution: { integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==, } deprecated: Use your platform's native atob() and btoa() methods instead - dev: true - /acorn-globals@6.0.0: + acorn-globals@6.0.0: resolution: { integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==, } - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - dev: true - /acorn-walk@7.2.0: + acorn-walk@7.2.0: resolution: { integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==, } engines: { node: '>=0.4.0' } - dev: true - /acorn@7.4.1: + acorn@7.4.1: resolution: { integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==, } engines: { node: '>=0.4.0' } hasBin: true - dev: true - /acorn@8.15.0: + acorn@8.15.0: resolution: { integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==, } engines: { node: '>=0.4.0' } hasBin: true - dev: true - /agent-base@6.0.2: + agent-base@6.0.2: resolution: { integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==, } engines: { node: '>= 6.0.0' } - dependencies: - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - dev: true - /ansi-escapes@4.3.2: + ansi-escapes@4.3.2: resolution: { integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, } engines: { node: '>=8' } - dependencies: - type-fest: 0.21.3 - dev: true - /ansi-regex@5.0.1: + ansi-regex@5.0.1: resolution: { integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, } engines: { node: '>=8' } - dev: true - /ansi-styles@4.3.0: + ansi-styles@4.3.0: resolution: { integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, } engines: { node: '>=8' } - dependencies: - color-convert: 2.0.1 - dev: true - /ansi-styles@5.2.0: + ansi-styles@5.2.0: resolution: { integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, } engines: { node: '>=10' } - dev: true - /anymatch@3.1.3: + anymatch@3.1.3: resolution: { integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, } engines: { node: '>= 8' } - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - /argparse@1.0.10: + argparse@1.0.10: resolution: { integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, } - dependencies: - sprintf-js: 1.0.3 - dev: true - /argparse@2.0.1: + argparse@2.0.1: resolution: { integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, } - dev: true - /async@3.2.6: + async@3.2.6: resolution: { integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==, } - dev: true - /asynckit@0.4.0: + asynckit@0.4.0: resolution: { integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, } - dev: true - /babel-jest@28.1.3(@babel/core@7.28.0): + babel-jest@28.1.3: resolution: { integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==, @@ -1134,75 +726,30 @@ packages: engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } peerDependencies: '@babel/core': ^7.8.0 - dependencies: - '@babel/core': 7.28.0 - '@jest/transform': 28.1.3 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 28.1.3(@babel/core@7.28.0) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - /babel-plugin-istanbul@6.1.1: + babel-plugin-istanbul@6.1.1: resolution: { integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==, } engines: { node: '>=8' } - dependencies: - '@babel/helper-plugin-utils': 7.27.1 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - dev: true - /babel-plugin-jest-hoist@28.1.3: + babel-plugin-jest-hoist@28.1.3: resolution: { integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.2 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.28.0 - dev: true - /babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.0): + babel-preset-current-node-syntax@1.2.0: resolution: { integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==, } peerDependencies: '@babel/core': ^7.0.0 || ^8.0.0-0 - dependencies: - '@babel/core': 7.28.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.0) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.0) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.0) - dev: true - - /babel-preset-jest@28.1.3(@babel/core@7.28.0): + + babel-preset-jest@28.1.3: resolution: { integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==, @@ -1210,329 +757,253 @@ packages: engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.28.0 - babel-plugin-jest-hoist: 28.1.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.0) - dev: true - /balanced-match@1.0.2: + balanced-match@1.0.2: resolution: { integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, } - dev: true - /basic-auth@2.0.1: + basic-auth@2.0.1: resolution: { integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==, } engines: { node: '>= 0.8' } - dependencies: - safe-buffer: 5.1.2 - dev: true - /bluebird@3.7.2: + bluebird@3.7.2: resolution: { integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==, } - dev: true - /brace-expansion@1.1.12: + brace-expansion@1.1.12: resolution: { integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==, } - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - /braces@3.0.3: + braces@3.0.3: resolution: { integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, } engines: { node: '>=8' } - dependencies: - fill-range: 7.1.1 - dev: true - /browser-process-hrtime@1.0.0: + browser-process-hrtime@1.0.0: resolution: { integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==, } - dev: true - /browserslist@4.25.2: + browserslist@4.25.4: resolution: { - integrity: sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==, + integrity: sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==, } engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true - dependencies: - caniuse-lite: 1.0.30001733 - electron-to-chromium: 1.5.199 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.2) - dev: true - /bser@2.1.1: + bser@2.1.1: resolution: { integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, } - dependencies: - node-int64: 0.4.0 - dev: true - /buffer-from@1.1.2: + buffer-from@1.1.2: resolution: { integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, } - dev: true - /call-bind-apply-helpers@1.0.2: + call-bind-apply-helpers@1.0.2: resolution: { integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==, } engines: { node: '>= 0.4' } - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - dev: true - /call-bound@1.0.4: + call-bound@1.0.4: resolution: { integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==, } engines: { node: '>= 0.4' } - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 - dev: true - /callsites@3.1.0: + callsites@3.1.0: resolution: { integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, } engines: { node: '>=6' } - dev: true - /camelcase@5.3.1: + camelcase@5.3.1: resolution: { integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, } engines: { node: '>=6' } - dev: true - /camelcase@6.3.0: + camelcase@6.3.0: resolution: { integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, } engines: { node: '>=10' } - dev: true - /caniuse-lite@1.0.30001733: + caniuse-lite@1.0.30001741: resolution: { - integrity: sha512-e4QKw/O2Kavj2VQTKZWrwzkt3IxOmIlU6ajRb6LP64LHpBo1J67k2Hi4Vu/TgJWsNtynurfS0uK3MaUTCPfu5Q==, + integrity: sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==, } - dev: true - /catharsis@0.9.0: + catharsis@0.9.0: resolution: { integrity: sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==, } engines: { node: '>= 10' } - dependencies: - lodash: 4.17.21 - dev: true - /chalk@4.1.2: + chalk@4.1.2: resolution: { integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, } engines: { node: '>=10' } - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - /char-regex@1.0.2: + char-regex@1.0.2: resolution: { integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==, } engines: { node: '>=10' } - dev: true - /ci-info@3.9.0: + ci-info@3.9.0: resolution: { integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==, } engines: { node: '>=8' } - dev: true - /cjs-module-lexer@1.4.3: + cjs-module-lexer@1.4.3: resolution: { integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==, } - dev: true - /cliui@8.0.1: + cliui@8.0.1: resolution: { integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, } engines: { node: '>=12' } - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - /co@4.6.0: + co@4.6.0: resolution: { integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==, } engines: { iojs: '>= 1.0.0', node: '>= 0.12.0' } - dev: true - /collect-v8-coverage@1.0.2: + collect-v8-coverage@1.0.2: resolution: { integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==, } - dev: true - /color-convert@2.0.1: + color-convert@2.0.1: resolution: { integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, } engines: { node: '>=7.0.0' } - dependencies: - color-name: 1.1.4 - dev: true - /color-name@1.1.4: + color-name@1.1.4: resolution: { integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, } - dev: true - /combined-stream@1.0.8: + combined-stream@1.0.8: resolution: { integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, } engines: { node: '>= 0.8' } - dependencies: - delayed-stream: 1.0.0 - dev: true - /commander@2.20.3: + commander@2.20.3: resolution: { integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, } - dev: true - /concat-map@0.0.1: + concat-map@0.0.1: resolution: { integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, } - dev: true - /convert-source-map@1.9.0: + convert-source-map@1.9.0: resolution: { integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==, } - dev: true - /convert-source-map@2.0.0: + convert-source-map@2.0.0: resolution: { integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, } - dev: true - /corser@2.0.1: + corser@2.0.1: resolution: { integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==, } engines: { node: '>= 0.4.0' } - dev: true - /cross-spawn@7.0.6: + cross-env@10.0.0: + resolution: + { + integrity: sha512-aU8qlEK/nHYtVuN4p7UQgAwVljzMg8hB4YK5ThRqD2l/ziSnryncPNn7bMLt5cFYsKVKBh8HqLqyCoTupEUu7Q==, + } + engines: { node: '>=20' } + hasBin: true + + cross-spawn@7.0.6: resolution: { integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, } engines: { node: '>= 8' } - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - /cssom@0.3.8: + cssom@0.3.8: resolution: { integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==, } - dev: true - /cssom@0.5.0: + cssom@0.5.0: resolution: { integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==, } - dev: true - /cssstyle@2.3.0: + cssstyle@2.3.0: resolution: { integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==, } engines: { node: '>=8' } - dependencies: - cssom: 0.3.8 - dev: true - /data-urls@3.0.2: + data-urls@3.0.2: resolution: { integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==, } engines: { node: '>=12' } - dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - dev: true - /debug@4.4.1: + debug@4.4.1: resolution: { integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==, @@ -1543,304 +1014,225 @@ packages: peerDependenciesMeta: supports-color: optional: true - dependencies: - ms: 2.1.3 - dev: true - /decimal.js@10.6.0: + decimal.js@10.6.0: resolution: { integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==, } - dev: true - /dedent@0.7.0: + dedent@0.7.0: resolution: { integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==, } - dev: true - /deepmerge@4.3.1: + deepmerge@4.3.1: resolution: { integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, } engines: { node: '>=0.10.0' } - dev: true - /delayed-stream@1.0.0: + delayed-stream@1.0.0: resolution: { integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, } engines: { node: '>=0.4.0' } - dev: true - /detect-newline@3.1.0: + detect-newline@3.1.0: resolution: { integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==, } engines: { node: '>=8' } - dev: true - /diff-sequences@28.1.1: + diff-sequences@28.1.1: resolution: { integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dev: true - /domexception@4.0.0: + domexception@4.0.0: resolution: { integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==, } engines: { node: '>=12' } deprecated: Use your platform's native DOMException instead - dependencies: - webidl-conversions: 7.0.0 - dev: true - /dunder-proto@1.0.1: + dunder-proto@1.0.1: resolution: { integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==, } engines: { node: '>= 0.4' } - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - dev: true - /electron-to-chromium@1.5.199: + electron-to-chromium@1.5.217: resolution: { - integrity: sha512-3gl0S7zQd88kCAZRO/DnxtBKuhMO4h0EaQIN3YgZfV6+pW+5+bf2AdQeHNESCoaQqo/gjGVYEf2YM4O5HJQqpQ==, + integrity: sha512-Pludfu5iBxp9XzNl0qq2G87hdD17ZV7h5T4n6rQXDi3nCyloBV3jreE9+8GC6g4X/5yxqVgXEURpcLtM0WS4jA==, } - dev: true - /emittery@0.10.2: + emittery@0.10.2: resolution: { integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==, } engines: { node: '>=12' } - dev: true - /emoji-regex@8.0.0: + emoji-regex@8.0.0: resolution: { integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, } - dev: true - /entities@2.1.0: + entities@2.1.0: resolution: { integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==, } - dev: true - /error-ex@1.3.2: + error-ex@1.3.2: resolution: { integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, } - dependencies: - is-arrayish: 0.2.1 - dev: true - /es-define-property@1.0.1: + es-define-property@1.0.1: resolution: { integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==, } engines: { node: '>= 0.4' } - dev: true - /es-errors@1.3.0: + es-errors@1.3.0: resolution: { integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, } engines: { node: '>= 0.4' } - dev: true - /es-object-atoms@1.1.1: + es-object-atoms@1.1.1: resolution: { integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==, } engines: { node: '>= 0.4' } - dependencies: - es-errors: 1.3.0 - dev: true - /es-set-tostringtag@2.1.0: + es-set-tostringtag@2.1.0: resolution: { integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==, } engines: { node: '>= 0.4' } - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - dev: true - /escalade@3.2.0: + escalade@3.2.0: resolution: { integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, } engines: { node: '>=6' } - dev: true - /escape-string-regexp@2.0.0: + escape-string-regexp@2.0.0: resolution: { integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==, } engines: { node: '>=8' } - dev: true - /escodegen@2.1.0: + escodegen@2.1.0: resolution: { integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==, } engines: { node: '>=6.0' } hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - dev: true - /esprima@4.0.1: + esprima@4.0.1: resolution: { integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, } engines: { node: '>=4' } hasBin: true - dev: true - /estraverse@5.3.0: + estraverse@5.3.0: resolution: { integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, } engines: { node: '>=4.0' } - dev: true - /estree-walker@0.6.1: + estree-walker@0.6.1: resolution: { integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==, } - dev: true - /esutils@2.0.3: + esutils@2.0.3: resolution: { integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, } engines: { node: '>=0.10.0' } - dev: true - /eventemitter3@4.0.7: + eventemitter3@4.0.7: resolution: { integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==, } - dev: true - /execa@5.1.1: + execa@5.1.1: resolution: { integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, } engines: { node: '>=10' } - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - /exit@0.1.2: + exit@0.1.2: resolution: { integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==, } engines: { node: '>= 0.8.0' } - dev: true - /expect@28.1.3: + expect@28.1.3: resolution: { integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/expect-utils': 28.1.3 - jest-get-type: 28.0.2 - jest-matcher-utils: 28.1.3 - jest-message-util: 28.1.3 - jest-util: 28.1.3 - dev: true - /fast-json-stable-stringify@2.1.0: + fast-json-stable-stringify@2.1.0: resolution: { integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, } - dev: true - /fb-watchman@2.0.2: + fb-watchman@2.0.2: resolution: { integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, } - dependencies: - bser: 2.1.1 - dev: true - /fill-range@7.1.1: + fill-range@7.1.1: resolution: { integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, } engines: { node: '>=8' } - dependencies: - to-regex-range: 5.0.1 - dev: true - /find-up@4.1.0: + find-up@4.1.0: resolution: { integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, } engines: { node: '>=8' } - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - /follow-redirects@1.15.11: + follow-redirects@1.15.11: resolution: { integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==, @@ -1851,489 +1243,318 @@ packages: peerDependenciesMeta: debug: optional: true - dev: true - /form-data@4.0.4: + form-data@4.0.4: resolution: { integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==, } engines: { node: '>= 6' } - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - hasown: 2.0.2 - mime-types: 2.1.35 - dev: true - /fs.realpath@1.0.0: + fs.realpath@1.0.0: resolution: { integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, } - dev: true - /fsevents@2.3.3: + fsevents@2.3.3: resolution: { integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, } engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } os: [darwin] - requiresBuild: true - dev: true - optional: true - /function-bind@1.1.2: + function-bind@1.1.2: resolution: { integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, } - dev: true - /gensync@1.0.0-beta.2: + gensync@1.0.0-beta.2: resolution: { integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, } engines: { node: '>=6.9.0' } - dev: true - /get-caller-file@2.0.5: + get-caller-file@2.0.5: resolution: { integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, } engines: { node: 6.* || 8.* || >= 10.* } - dev: true - /get-intrinsic@1.3.0: + get-intrinsic@1.3.0: resolution: { integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==, } engines: { node: '>= 0.4' } - 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 - dev: true - /get-package-type@0.1.0: + get-package-type@0.1.0: resolution: { integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==, } engines: { node: '>=8.0.0' } - dev: true - /get-proto@1.0.1: + get-proto@1.0.1: resolution: { integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==, } engines: { node: '>= 0.4' } - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 - dev: true - /get-stream@6.0.1: + get-stream@6.0.1: resolution: { integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, } engines: { node: '>=10' } - dev: true - /glob@7.2.3: + glob@7.2.3: resolution: { integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, } deprecated: Glob versions prior to v9 are no longer supported - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - /gopd@1.2.0: + gopd@1.2.0: resolution: { integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==, } engines: { node: '>= 0.4' } - dev: true - /graceful-fs@4.2.11: + graceful-fs@4.2.11: resolution: { integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, } - dev: true - /has-flag@4.0.0: + has-flag@4.0.0: resolution: { integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, } engines: { node: '>=8' } - dev: true - /has-symbols@1.1.0: + has-symbols@1.1.0: resolution: { integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==, } engines: { node: '>= 0.4' } - dev: true - /has-tostringtag@1.0.2: + has-tostringtag@1.0.2: resolution: { integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, } engines: { node: '>= 0.4' } - dependencies: - has-symbols: 1.1.0 - dev: true - /hasown@2.0.2: + hasown@2.0.2: resolution: { integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, } engines: { node: '>= 0.4' } - dependencies: - function-bind: 1.1.2 - dev: true - /he@1.2.0: + he@1.2.0: resolution: { integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, } hasBin: true - dev: true - /html-encoding-sniffer@3.0.0: + html-encoding-sniffer@3.0.0: resolution: { integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==, } engines: { node: '>=12' } - dependencies: - whatwg-encoding: 2.0.0 - dev: true - /html-escaper@2.0.2: + html-escaper@2.0.2: resolution: { integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, } - dev: true - /http-proxy-agent@5.0.0: + http-proxy-agent@5.0.0: resolution: { integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==, } engines: { node: '>= 6' } - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - dev: true - /http-proxy@1.18.1: + http-proxy@1.18.1: resolution: { integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==, } engines: { node: '>=8.0.0' } - dependencies: - eventemitter3: 4.0.7 - follow-redirects: 1.15.11 - requires-port: 1.0.0 - transitivePeerDependencies: - - debug - dev: true - /http-server@14.1.1: + http-server@14.1.1: resolution: { integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==, } engines: { node: '>=12' } hasBin: true - dependencies: - basic-auth: 2.0.1 - chalk: 4.1.2 - corser: 2.0.1 - he: 1.2.0 - html-encoding-sniffer: 3.0.0 - http-proxy: 1.18.1 - mime: 1.6.0 - minimist: 1.2.8 - opener: 1.5.2 - portfinder: 1.0.37 - secure-compare: 3.0.1 - union: 0.5.0 - url-join: 4.0.1 - transitivePeerDependencies: - - debug - - supports-color - dev: true - /https-proxy-agent@5.0.1: + https-proxy-agent@5.0.1: resolution: { integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==, } engines: { node: '>= 6' } - dependencies: - agent-base: 6.0.2 - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - dev: true - /human-signals@2.1.0: + human-signals@2.1.0: resolution: { integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, } engines: { node: '>=10.17.0' } - dev: true - /iconv-lite@0.6.3: + iconv-lite@0.6.3: resolution: { integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, } engines: { node: '>=0.10.0' } - dependencies: - safer-buffer: 2.1.2 - dev: true - /import-local@3.2.0: + import-local@3.2.0: resolution: { integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==, } engines: { node: '>=8' } hasBin: true - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true - /imurmurhash@0.1.4: + imurmurhash@0.1.4: resolution: { integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, } engines: { node: '>=0.8.19' } - dev: true - /inflight@1.0.6: + inflight@1.0.6: resolution: { integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, } deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true - /inherits@2.0.4: + inherits@2.0.4: resolution: { integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, } - dev: true - /is-arrayish@0.2.1: + is-arrayish@0.2.1: resolution: { integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, } - dev: true - /is-core-module@2.16.1: + is-core-module@2.16.1: resolution: { integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==, } engines: { node: '>= 0.4' } - dependencies: - hasown: 2.0.2 - dev: true - /is-fullwidth-code-point@3.0.0: + is-fullwidth-code-point@3.0.0: resolution: { integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, } engines: { node: '>=8' } - dev: true - /is-generator-fn@2.1.0: + is-generator-fn@2.1.0: resolution: { integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==, } engines: { node: '>=6' } - dev: true - /is-number@7.0.0: + is-number@7.0.0: resolution: { integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, } engines: { node: '>=0.12.0' } - dev: true - /is-potential-custom-element-name@1.0.1: + is-potential-custom-element-name@1.0.1: resolution: { integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==, } - dev: true - /is-stream@2.0.1: + is-stream@2.0.1: resolution: { integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, } engines: { node: '>=8' } - dev: true - /isexe@2.0.0: + isexe@2.0.0: resolution: { integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, } - dev: true - /istanbul-lib-coverage@3.2.2: + istanbul-lib-coverage@3.2.2: resolution: { integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==, } engines: { node: '>=8' } - dev: true - /istanbul-lib-instrument@5.2.1: + istanbul-lib-instrument@5.2.1: resolution: { integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==, } engines: { node: '>=8' } - dependencies: - '@babel/core': 7.28.0 - '@babel/parser': 7.28.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - /istanbul-lib-report@3.0.1: + istanbul-lib-report@3.0.1: resolution: { integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==, } engines: { node: '>=10' } - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - dev: true - /istanbul-lib-source-maps@4.0.1: + istanbul-lib-source-maps@4.0.1: resolution: { integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==, } engines: { node: '>=10' } - dependencies: - debug: 4.4.1 - istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - /istanbul-reports@3.1.7: + istanbul-reports@3.2.0: resolution: { - integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==, + integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==, } engines: { node: '>=8' } - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - dev: true - /jest-changed-files@28.1.3: + jest-changed-files@28.1.3: resolution: { integrity: sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - execa: 5.1.1 - p-limit: 3.1.0 - dev: true - /jest-circus@28.1.3: + jest-circus@28.1.3: resolution: { integrity: sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/environment': 28.1.3 - '@jest/expect': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 24.2.1 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - is-generator-fn: 2.1.0 - jest-each: 28.1.3 - jest-matcher-utils: 28.1.3 - jest-message-util: 28.1.3 - jest-runtime: 28.1.3 - jest-snapshot: 28.1.3 - jest-util: 28.1.3 - p-limit: 3.1.0 - pretty-format: 28.1.3 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - supports-color - dev: true - /jest-cli@28.1.3: + jest-cli@28.1.3: resolution: { integrity: sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==, @@ -2345,26 +1566,8 @@ packages: peerDependenciesMeta: node-notifier: optional: true - dependencies: - '@jest/core': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/types': 28.1.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.2.0 - jest-config: 28.1.3(@types/node@24.2.1) - jest-util: 28.1.3 - jest-validate: 28.1.3 - prompts: 2.4.2 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - /jest-config@28.1.3(@types/node@24.2.1): + jest-config@28.1.3: resolution: { integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==, @@ -2378,192 +1581,85 @@ packages: optional: true ts-node: optional: true - dependencies: - '@babel/core': 7.28.0 - '@jest/test-sequencer': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 24.2.1 - babel-jest: 28.1.3(@babel/core@7.28.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 28.1.3 - jest-environment-node: 28.1.3 - jest-get-type: 28.0.2 - jest-regex-util: 28.0.2 - jest-resolve: 28.1.3 - jest-runner: 28.1.3 - jest-util: 28.1.3 - jest-validate: 28.1.3 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 28.1.3 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /jest-diff@28.1.3: + jest-diff@28.1.3: resolution: { integrity: sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - chalk: 4.1.2 - diff-sequences: 28.1.1 - jest-get-type: 28.0.2 - pretty-format: 28.1.3 - dev: true - /jest-docblock@28.1.1: + jest-docblock@28.1.1: resolution: { integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - detect-newline: 3.1.0 - dev: true - /jest-each@28.1.3: + jest-each@28.1.3: resolution: { integrity: sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/types': 28.1.3 - chalk: 4.1.2 - jest-get-type: 28.0.2 - jest-util: 28.1.3 - pretty-format: 28.1.3 - dev: true - /jest-environment-jsdom@28.1.3: + jest-environment-jsdom@28.1.3: resolution: { integrity: sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/environment': 28.1.3 - '@jest/fake-timers': 28.1.3 - '@jest/types': 28.1.3 - '@types/jsdom': 16.2.15 - '@types/node': 24.2.1 - jest-mock: 28.1.3 - jest-util: 28.1.3 - jsdom: 19.0.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - dev: true - /jest-environment-node@28.1.3: + jest-environment-node@28.1.3: resolution: { integrity: sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/environment': 28.1.3 - '@jest/fake-timers': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 24.2.1 - jest-mock: 28.1.3 - jest-util: 28.1.3 - dev: true - /jest-get-type@28.0.2: + jest-get-type@28.0.2: resolution: { integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dev: true - /jest-haste-map@28.1.3: + jest-haste-map@28.1.3: resolution: { integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/types': 28.1.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 24.2.1 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 28.0.2 - jest-util: 28.1.3 - jest-worker: 28.1.3 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /jest-leak-detector@28.1.3: + jest-leak-detector@28.1.3: resolution: { integrity: sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - jest-get-type: 28.0.2 - pretty-format: 28.1.3 - dev: true - /jest-matcher-utils@28.1.3: + jest-matcher-utils@28.1.3: resolution: { integrity: sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - chalk: 4.1.2 - jest-diff: 28.1.3 - jest-get-type: 28.0.2 - pretty-format: 28.1.3 - dev: true - /jest-message-util@28.1.3: + jest-message-util@28.1.3: resolution: { integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@babel/code-frame': 7.27.1 - '@jest/types': 28.1.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 28.1.3 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: true - /jest-mock@28.1.3: + jest-mock@28.1.3: resolution: { integrity: sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/types': 28.1.3 - '@types/node': 24.2.1 - dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@28.1.3): + jest-pnp-resolver@1.2.3: resolution: { integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==, @@ -2574,208 +1670,78 @@ packages: peerDependenciesMeta: jest-resolve: optional: true - dependencies: - jest-resolve: 28.1.3 - dev: true - /jest-regex-util@28.0.2: + jest-regex-util@28.0.2: resolution: { integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dev: true - /jest-resolve-dependencies@28.1.3: + jest-resolve-dependencies@28.1.3: resolution: { integrity: sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - jest-regex-util: 28.0.2 - jest-snapshot: 28.1.3 - transitivePeerDependencies: - - supports-color - dev: true - /jest-resolve@28.1.3: + jest-resolve@28.1.3: resolution: { integrity: sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 28.1.3 - jest-pnp-resolver: 1.2.3(jest-resolve@28.1.3) - jest-util: 28.1.3 - jest-validate: 28.1.3 - resolve: 1.22.10 - resolve.exports: 1.1.1 - slash: 3.0.0 - dev: true - /jest-runner@28.1.3: + jest-runner@28.1.3: resolution: { integrity: sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/console': 28.1.3 - '@jest/environment': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 24.2.1 - chalk: 4.1.2 - emittery: 0.10.2 - graceful-fs: 4.2.11 - jest-docblock: 28.1.1 - jest-environment-node: 28.1.3 - jest-haste-map: 28.1.3 - jest-leak-detector: 28.1.3 - jest-message-util: 28.1.3 - jest-resolve: 28.1.3 - jest-runtime: 28.1.3 - jest-util: 28.1.3 - jest-watcher: 28.1.3 - jest-worker: 28.1.3 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - dev: true - /jest-runtime@28.1.3: + jest-runtime@28.1.3: resolution: { integrity: sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/environment': 28.1.3 - '@jest/fake-timers': 28.1.3 - '@jest/globals': 28.1.3 - '@jest/source-map': 28.1.2 - '@jest/test-result': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 - chalk: 4.1.2 - cjs-module-lexer: 1.4.3 - collect-v8-coverage: 1.0.2 - execa: 5.1.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 28.1.3 - jest-message-util: 28.1.3 - jest-mock: 28.1.3 - jest-regex-util: 28.0.2 - jest-resolve: 28.1.3 - jest-snapshot: 28.1.3 - jest-util: 28.1.3 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true - /jest-snapshot@28.1.3: + jest-snapshot@28.1.3: resolution: { integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@babel/core': 7.28.0 - '@babel/generator': 7.28.0 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 - '@jest/expect-utils': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 - '@types/babel__traverse': 7.28.0 - '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.0) - chalk: 4.1.2 - expect: 28.1.3 - graceful-fs: 4.2.11 - jest-diff: 28.1.3 - jest-get-type: 28.0.2 - jest-haste-map: 28.1.3 - jest-matcher-utils: 28.1.3 - jest-message-util: 28.1.3 - jest-util: 28.1.3 - natural-compare: 1.4.0 - pretty-format: 28.1.3 - semver: 7.7.2 - transitivePeerDependencies: - - supports-color - dev: true - /jest-util@28.1.3: + jest-util@28.1.3: resolution: { integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/types': 28.1.3 - '@types/node': 24.2.1 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - dev: true - /jest-validate@28.1.3: + jest-validate@28.1.3: resolution: { integrity: sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/types': 28.1.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 28.0.2 - leven: 3.1.0 - pretty-format: 28.1.3 - dev: true - /jest-watcher@28.1.3: + jest-watcher@28.1.3: resolution: { integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/test-result': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 24.2.1 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.10.2 - jest-util: 28.1.3 - string-length: 4.0.2 - dev: true - /jest-worker@28.1.3: + jest-worker@28.1.3: resolution: { integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@types/node': 24.2.1 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - /jest@28.1.3: + jest@28.1.3: resolution: { integrity: sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==, @@ -2787,82 +1753,42 @@ packages: peerDependenciesMeta: node-notifier: optional: true - dependencies: - '@jest/core': 28.1.3 - '@jest/types': 28.1.3 - import-local: 3.2.0 - jest-cli: 28.1.3 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - /js-cleanup@1.2.0: + js-cleanup@1.2.0: resolution: { integrity: sha512-JeDD0yiiSt80fXzAVa/crrS0JDPQljyBG/RpOtaSbyDq03VHa9szJWMaWOYU/bcTn412uMN2MxApXq8v79cUiQ==, } engines: { node: ^10.14.2 || >=12.0.0 } - dependencies: - magic-string: 0.25.9 - perf-regexes: 1.0.1 - skip-regex: 1.0.2 - dev: true - /js-tokens@4.0.0: + js-tokens@4.0.0: resolution: { integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, } - dev: true - /js-yaml@3.14.1: + js-yaml@3.14.1: resolution: { integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, } hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - /js2xmlparser@4.0.2: + js2xmlparser@4.0.2: resolution: { integrity: sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==, } - dependencies: - xmlcreate: 2.0.4 - dev: true - /jsdoc@3.6.11: + jsdoc@3.6.11: resolution: { integrity: sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==, } engines: { node: '>=12.0.0' } hasBin: true - dependencies: - '@babel/parser': 7.28.0 - '@types/markdown-it': 12.2.3 - bluebird: 3.7.2 - catharsis: 0.9.0 - escape-string-regexp: 2.0.0 - js2xmlparser: 4.0.2 - klaw: 3.0.0 - markdown-it: 12.3.2 - markdown-it-anchor: 8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2) - marked: 4.3.0 - mkdirp: 1.0.4 - requizzle: 0.2.4 - strip-json-comments: 3.1.1 - taffydb: 2.6.2 - underscore: 1.13.7 - dev: true - /jsdom@19.0.0: + jsdom@19.0.0: resolution: { integrity: sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==, @@ -2873,161 +1799,100 @@ packages: peerDependenciesMeta: canvas: optional: true - dependencies: - abab: 2.0.6 - acorn: 8.15.0 - acorn-globals: 6.0.0 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 - decimal.js: 10.6.0 - domexception: 4.0.0 - escodegen: 2.1.0 - form-data: 4.0.4 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.21 - parse5: 6.0.1 - saxes: 5.0.1 - symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-hr-time: 1.0.2 - w3c-xmlserializer: 3.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 10.0.0 - ws: 8.18.3 - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - /jsesc@3.1.0: + jsesc@3.1.0: resolution: { integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==, } engines: { node: '>=6' } hasBin: true - dev: true - /json-parse-even-better-errors@2.3.1: + json-parse-even-better-errors@2.3.1: resolution: { integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, } - dev: true - /json5@2.2.3: + json5@2.2.3: resolution: { integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, } engines: { node: '>=6' } hasBin: true - dev: true - /klaw@3.0.0: + klaw@3.0.0: resolution: { integrity: sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==, } - dependencies: - graceful-fs: 4.2.11 - dev: true - /kleur@3.0.3: + kleur@3.0.3: resolution: { integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, } engines: { node: '>=6' } - dev: true - /leven@3.1.0: + leven@3.1.0: resolution: { integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, } engines: { node: '>=6' } - dev: true - /lines-and-columns@1.2.4: + lines-and-columns@1.2.4: resolution: { integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, } - dev: true - /linkify-it@3.0.3: + linkify-it@3.0.3: resolution: { integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==, } - dependencies: - uc.micro: 1.0.6 - dev: true - /locate-path@5.0.0: + locate-path@5.0.0: resolution: { integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, } engines: { node: '>=8' } - dependencies: - p-locate: 4.1.0 - dev: true - /lodash@4.17.21: + lodash@4.17.21: resolution: { integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, } - dev: true - /lru-cache@5.1.1: + lru-cache@5.1.1: resolution: { integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, } - dependencies: - yallist: 3.1.1 - dev: true - /magic-string@0.25.9: + magic-string@0.25.9: resolution: { integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==, } - dependencies: - sourcemap-codec: 1.4.8 - dev: true - /make-dir@4.0.0: + make-dir@4.0.0: resolution: { integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==, } engines: { node: '>=10' } - dependencies: - semver: 7.7.2 - dev: true - /makeerror@1.0.12: + makeerror@1.0.12: resolution: { integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, } - dependencies: - tmpl: 1.0.5 - dev: true - /markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2): + markdown-it-anchor@8.6.7: resolution: { integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==, @@ -3035,516 +1900,394 @@ packages: peerDependencies: '@types/markdown-it': '*' markdown-it: '*' - dependencies: - '@types/markdown-it': 12.2.3 - markdown-it: 12.3.2 - dev: true - /markdown-it@12.3.2: + markdown-it@12.3.2: resolution: { integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==, } hasBin: true - dependencies: - argparse: 2.0.1 - entities: 2.1.0 - linkify-it: 3.0.3 - mdurl: 1.0.1 - uc.micro: 1.0.6 - dev: true - /marked@4.3.0: + marked@4.3.0: resolution: { integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==, } engines: { node: '>= 12' } hasBin: true - dev: true - /math-intrinsics@1.1.0: + math-intrinsics@1.1.0: resolution: { integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, } engines: { node: '>= 0.4' } - dev: true - /mdurl@1.0.1: + mdurl@1.0.1: resolution: { integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==, } - dev: true - /merge-stream@2.0.0: + merge-stream@2.0.0: resolution: { integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, } - dev: true - /micromatch@4.0.8: + micromatch@4.0.8: resolution: { integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, } engines: { node: '>=8.6' } - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - dev: true - /mime-db@1.52.0: + mime-db@1.52.0: resolution: { integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, } engines: { node: '>= 0.6' } - dev: true - /mime-types@2.1.35: + mime-types@2.1.35: resolution: { integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, } engines: { node: '>= 0.6' } - dependencies: - mime-db: 1.52.0 - dev: true - /mime@1.6.0: + mime@1.6.0: resolution: { integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, } engines: { node: '>=4' } hasBin: true - dev: true - /mimic-fn@2.1.0: + mimic-fn@2.1.0: resolution: { integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, } engines: { node: '>=6' } - dev: true - /minimatch@3.1.2: + minimatch@3.1.2: resolution: { integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, } - dependencies: - brace-expansion: 1.1.12 - dev: true - /minimist@1.2.8: + minimist@1.2.8: resolution: { integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, } - dev: true - /mkdirp@1.0.4: + mkdirp@1.0.4: resolution: { integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, } engines: { node: '>=10' } hasBin: true - dev: true - /ms@2.1.3: + ms@2.1.3: resolution: { integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, } - dev: true - /natural-compare@1.4.0: + natural-compare@1.4.0: resolution: { integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, } - dev: true - /node-int64@0.4.0: + node-int64@0.4.0: resolution: { integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, } - dev: true - /node-releases@2.0.19: + node-releases@2.0.20: resolution: { - integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==, + integrity: sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==, } - dev: true - /normalize-path@3.0.0: + normalize-path@3.0.0: resolution: { integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, } engines: { node: '>=0.10.0' } - dev: true - /npm-run-path@4.0.1: + npm-run-path@4.0.1: resolution: { integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, } engines: { node: '>=8' } - dependencies: - path-key: 3.1.1 - dev: true - /nwsapi@2.2.21: + nwsapi@2.2.22: resolution: { - integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==, + integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==, } - dev: true - /object-inspect@1.13.4: + object-inspect@1.13.4: resolution: { integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==, } engines: { node: '>= 0.4' } - dev: true - /once@1.4.0: + once@1.4.0: resolution: { integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, } - dependencies: - wrappy: 1.0.2 - dev: true - /onetime@5.1.2: + onetime@5.1.2: resolution: { integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, } engines: { node: '>=6' } - dependencies: - mimic-fn: 2.1.0 - dev: true - /opener@1.5.2: + opener@1.5.2: resolution: { integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==, } hasBin: true - dev: true - /p-limit@2.3.0: + p-limit@2.3.0: resolution: { integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, } engines: { node: '>=6' } - dependencies: - p-try: 2.2.0 - dev: true - /p-limit@3.1.0: + p-limit@3.1.0: resolution: { integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, } engines: { node: '>=10' } - dependencies: - yocto-queue: 0.1.0 - dev: true - /p-locate@4.1.0: + p-locate@4.1.0: resolution: { integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, } engines: { node: '>=8' } - dependencies: - p-limit: 2.3.0 - dev: true - /p-try@2.2.0: + p-try@2.2.0: resolution: { integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, } engines: { node: '>=6' } - dev: true - /parse-json@5.2.0: + parse-json@5.2.0: resolution: { integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, } engines: { node: '>=8' } - dependencies: - '@babel/code-frame': 7.27.1 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: true - /parse5@6.0.1: + parse5@6.0.1: resolution: { integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==, } - dev: true - /path-exists@4.0.0: + path-exists@4.0.0: resolution: { integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, } engines: { node: '>=8' } - dev: true - /path-is-absolute@1.0.1: + path-is-absolute@1.0.1: resolution: { integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, } engines: { node: '>=0.10.0' } - dev: true - /path-key@3.1.1: + path-key@3.1.1: resolution: { integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, } engines: { node: '>=8' } - dev: true - /path-parse@1.0.7: + path-parse@1.0.7: resolution: { integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, } - dev: true - /perf-regexes@1.0.1: + perf-regexes@1.0.1: resolution: { integrity: sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng==, } engines: { node: '>=6.14' } - dev: true - /picocolors@1.1.1: + picocolors@1.1.1: resolution: { integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, } - dev: true - /picomatch@2.3.1: + picomatch@2.3.1: resolution: { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, } engines: { node: '>=8.6' } - dev: true - /pirates@4.0.7: + pirates@4.0.7: resolution: { integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==, } engines: { node: '>= 6' } - dev: true - /pkg-dir@4.2.0: + pkg-dir@4.2.0: resolution: { integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, } engines: { node: '>=8' } - dependencies: - find-up: 4.1.0 - dev: true - /portfinder@1.0.37: + portfinder@1.0.37: resolution: { integrity: sha512-yuGIEjDAYnnOex9ddMnKZEMFE0CcGo6zbfzDklkmT1m5z734ss6JMzN9rNB3+RR7iS+F10D4/BVIaXOyh8PQKw==, } engines: { node: '>= 10.12' } - dependencies: - async: 3.2.6 - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - dev: true - /prettier@2.6.2: + prettier@2.6.2: resolution: { integrity: sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==, } engines: { node: '>=10.13.0' } hasBin: true - dev: true - /pretty-format@28.1.3: + pretty-format@28.1.3: resolution: { integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==, } engines: { node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0 } - dependencies: - '@jest/schemas': 28.1.3 - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 18.3.1 - dev: true - /prompts@2.4.2: + prompts@2.4.2: resolution: { integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, } engines: { node: '>= 6' } - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: true - /psl@1.15.0: + psl@1.15.0: resolution: { integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==, } - dependencies: - punycode: 2.3.1 - dev: true - /punycode@2.3.1: + punycode@2.3.1: resolution: { integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, } engines: { node: '>=6' } - dev: true - /qs@6.14.0: + qs@6.14.0: resolution: { integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==, } engines: { node: '>=0.6' } - dependencies: - side-channel: 1.1.0 - dev: true - /querystringify@2.2.0: + querystringify@2.2.0: resolution: { integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==, } - dev: true - /randombytes@2.1.0: + randombytes@2.1.0: resolution: { integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==, } - dependencies: - safe-buffer: 5.2.1 - dev: true - /react-is@18.3.1: + react-is@18.3.1: resolution: { integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==, } - dev: true - /require-directory@2.1.1: + require-directory@2.1.1: resolution: { integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, } engines: { node: '>=0.10.0' } - dev: true - /requires-port@1.0.0: + requires-port@1.0.0: resolution: { integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==, } - dev: true - /requizzle@0.2.4: + requizzle@0.2.4: resolution: { integrity: sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==, } - dependencies: - lodash: 4.17.21 - dev: true - /resolve-cwd@3.0.0: + resolve-cwd@3.0.0: resolution: { integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==, } engines: { node: '>=8' } - dependencies: - resolve-from: 5.0.0 - dev: true - /resolve-from@5.0.0: + resolve-from@5.0.0: resolution: { integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, } engines: { node: '>=8' } - dev: true - /resolve.exports@1.1.1: + resolve.exports@1.1.1: resolution: { integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==, } engines: { node: '>=10' } - dev: true - /resolve@1.22.10: + resolve@1.22.10: resolution: { integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==, } engines: { node: '>= 0.4' } hasBin: true - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - /rimraf@3.0.2: + rimraf@3.0.2: resolution: { integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, } deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - dependencies: - glob: 7.2.3 - dev: true - /rollup-plugin-cleanup@3.2.1(rollup@2.79.2): + rollup-plugin-cleanup@3.2.1: resolution: { integrity: sha512-zuv8EhoO3TpnrU8MX8W7YxSbO4gmOR0ny06Lm3nkFfq0IVKdBUtHwhVzY1OAJyNCIAdLiyPnOrU0KnO0Fri1GQ==, @@ -3552,529 +2295,388 @@ packages: engines: { node: ^10.14.2 || >=12.0.0 } peerDependencies: rollup: '>=2.0' - dependencies: - js-cleanup: 1.2.0 - rollup: 2.79.2 - rollup-pluginutils: 2.8.2 - dev: true - /rollup-pluginutils@2.8.2: + rollup-pluginutils@2.8.2: resolution: { integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==, } - dependencies: - estree-walker: 0.6.1 - dev: true - /rollup@2.79.2: + rollup@2.79.2: resolution: { integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==, } engines: { node: '>=10.0.0' } hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: true - /safe-buffer@5.1.2: + safe-buffer@5.1.2: resolution: { integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==, } - dev: true - /safe-buffer@5.2.1: + safe-buffer@5.2.1: resolution: { integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, } - dev: true - /safer-buffer@2.1.2: + safer-buffer@2.1.2: resolution: { integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, } - dev: true - /saxes@5.0.1: + saxes@5.0.1: resolution: { integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==, } engines: { node: '>=10' } - dependencies: - xmlchars: 2.2.0 - dev: true - /secure-compare@3.0.1: + secure-compare@3.0.1: resolution: { integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==, } - dev: true - /semver@6.3.1: + semver@6.3.1: resolution: { integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, } hasBin: true - dev: true - /semver@7.7.2: + semver@7.7.2: resolution: { integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==, } engines: { node: '>=10' } hasBin: true - dev: true - /serialize-javascript@6.0.2: + serialize-javascript@6.0.2: resolution: { integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==, } - dependencies: - randombytes: 2.1.0 - dev: true - /shebang-command@2.0.0: + shebang-command@2.0.0: resolution: { integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, } engines: { node: '>=8' } - dependencies: - shebang-regex: 3.0.0 - dev: true - /shebang-regex@3.0.0: + shebang-regex@3.0.0: resolution: { integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, } engines: { node: '>=8' } - dev: true - /side-channel-list@1.0.0: + side-channel-list@1.0.0: resolution: { integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==, } engines: { node: '>= 0.4' } - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - dev: true - /side-channel-map@1.0.1: + side-channel-map@1.0.1: resolution: { integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==, } engines: { node: '>= 0.4' } - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - dev: true - /side-channel-weakmap@1.0.2: + side-channel-weakmap@1.0.2: resolution: { integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==, } engines: { node: '>= 0.4' } - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - side-channel-map: 1.0.1 - dev: true - /side-channel@1.1.0: + side-channel@1.1.0: resolution: { integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==, } engines: { node: '>= 0.4' } - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - side-channel-list: 1.0.0 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - dev: true - /signal-exit@3.0.7: + signal-exit@3.0.7: resolution: { integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, } - dev: true - /sisteransi@1.0.5: + sisteransi@1.0.5: resolution: { integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, } - dev: true - /skip-regex@1.0.2: + skip-regex@1.0.2: resolution: { integrity: sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA==, } engines: { node: '>=4.2' } - dev: true - /slash@3.0.0: + slash@3.0.0: resolution: { integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, } engines: { node: '>=8' } - dev: true - /smob@1.5.0: + smob@1.5.0: resolution: { integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==, } - dev: true - /source-map-support@0.5.13: + source-map-support@0.5.13: resolution: { integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==, } - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - /source-map-support@0.5.21: + source-map-support@0.5.21: resolution: { integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, } - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - /source-map@0.6.1: + source-map@0.6.1: resolution: { integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, } engines: { node: '>=0.10.0' } - dev: true - /sourcemap-codec@1.4.8: + sourcemap-codec@1.4.8: resolution: { integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==, } deprecated: Please use @jridgewell/sourcemap-codec instead - dev: true - /sprintf-js@1.0.3: + sprintf-js@1.0.3: resolution: { integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, } - dev: true - /stack-utils@2.0.6: + stack-utils@2.0.6: resolution: { integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==, } engines: { node: '>=10' } - dependencies: - escape-string-regexp: 2.0.0 - dev: true - /string-length@4.0.2: + string-length@4.0.2: resolution: { integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==, } engines: { node: '>=10' } - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - dev: true - /string-width@4.2.3: + string-width@4.2.3: resolution: { integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, } engines: { node: '>=8' } - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: true - /strip-ansi@6.0.1: + strip-ansi@6.0.1: resolution: { integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, } engines: { node: '>=8' } - dependencies: - ansi-regex: 5.0.1 - dev: true - /strip-bom@4.0.0: + strip-bom@4.0.0: resolution: { integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==, } engines: { node: '>=8' } - dev: true - /strip-final-newline@2.0.0: + strip-final-newline@2.0.0: resolution: { integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, } engines: { node: '>=6' } - dev: true - /strip-json-comments@3.1.1: + strip-json-comments@3.1.1: resolution: { integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, } engines: { node: '>=8' } - dev: true - /supports-color@7.2.0: + supports-color@7.2.0: resolution: { integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, } engines: { node: '>=8' } - dependencies: - has-flag: 4.0.0 - dev: true - /supports-color@8.1.1: + supports-color@8.1.1: resolution: { integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, } engines: { node: '>=10' } - dependencies: - has-flag: 4.0.0 - dev: true - /supports-hyperlinks@2.3.0: + supports-hyperlinks@2.3.0: resolution: { integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==, } engines: { node: '>=8' } - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - dev: true - /supports-preserve-symlinks-flag@1.0.0: + supports-preserve-symlinks-flag@1.0.0: resolution: { integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, } engines: { node: '>= 0.4' } - dev: true - /symbol-tree@3.2.4: + symbol-tree@3.2.4: resolution: { integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==, } - dev: true - /taffydb@2.6.2: + taffydb@2.6.2: resolution: { integrity: sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==, } - dev: true - /terminal-link@2.1.1: + terminal-link@2.1.1: resolution: { integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==, } engines: { node: '>=8' } - dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.3.0 - dev: true - /terser@5.43.1: + terser@5.44.0: resolution: { - integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==, + integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==, } engines: { node: '>=10' } hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.10 - acorn: 8.15.0 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: true - /test-exclude@6.0.0: + test-exclude@6.0.0: resolution: { integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==, } engines: { node: '>=8' } - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - dev: true - /tmpl@1.0.5: + tmpl@1.0.5: resolution: { integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, } - dev: true - /to-regex-range@5.0.1: + to-regex-range@5.0.1: resolution: { integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, } engines: { node: '>=8.0' } - dependencies: - is-number: 7.0.0 - dev: true - /tough-cookie@4.1.4: + tough-cookie@4.1.4: resolution: { integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==, } engines: { node: '>=6' } - dependencies: - psl: 1.15.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - dev: true - /tr46@3.0.0: + tr46@3.0.0: resolution: { integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==, } engines: { node: '>=12' } - dependencies: - punycode: 2.3.1 - dev: true - /tsd-jsdoc@2.5.0(jsdoc@3.6.11): + tsd-jsdoc@2.5.0: resolution: { integrity: sha512-80fcJLAiUeerg4xPftp+iEEKWUjJjHk9AvcHwJqA8Zw0R4oASdu3kT/plE/Zj19QUTz8KupyOX25zStlNJjS9g==, } peerDependencies: jsdoc: ^3.6.3 - dependencies: - jsdoc: 3.6.11 - typescript: 3.9.10 - dev: true - /type-detect@4.0.8: + type-detect@4.0.8: resolution: { integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, } engines: { node: '>=4' } - dev: true - /type-fest@0.21.3: + type-fest@0.21.3: resolution: { integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, } engines: { node: '>=10' } - dev: true - /typescript@3.9.10: + typescript@3.9.10: resolution: { integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==, } engines: { node: '>=4.2.0' } hasBin: true - dev: true - /typescript@5.9.2: + typescript@5.9.2: resolution: { integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==, } engines: { node: '>=14.17' } hasBin: true - dev: true - /uc.micro@1.0.6: + uc.micro@1.0.6: resolution: { integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==, } - dev: true - /underscore@1.13.7: + underscore@1.13.7: resolution: { integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==, } - dev: true - /undici-types@7.10.0: + undici-types@7.10.0: resolution: { integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==, } - dev: true - /union@0.5.0: + union@0.5.0: resolution: { integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==, } engines: { node: '>= 0.8.0' } - dependencies: - qs: 6.14.0 - dev: true - /universalify@0.2.0: + universalify@0.2.0: resolution: { integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==, } engines: { node: '>= 4.0.0' } - dev: true - /update-browserslist-db@1.1.3(browserslist@4.25.2): + update-browserslist-db@1.1.3: resolution: { integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==, @@ -4082,160 +2684,110 @@ packages: hasBin: true peerDependencies: browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.25.2 - escalade: 3.2.0 - picocolors: 1.1.1 - dev: true - /url-join@4.0.1: + url-join@4.0.1: resolution: { integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==, } - dev: true - /url-parse@1.5.10: + url-parse@1.5.10: resolution: { integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==, } - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - dev: true - /v8-to-istanbul@9.3.0: + v8-to-istanbul@9.3.0: resolution: { integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==, } engines: { node: '>=10.12.0' } - dependencies: - '@jridgewell/trace-mapping': 0.3.29 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 - dev: true - /w3c-hr-time@1.0.2: + w3c-hr-time@1.0.2: resolution: { integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==, } deprecated: Use your platform's native performance.now() and performance.timeOrigin. - dependencies: - browser-process-hrtime: 1.0.0 - dev: true - /w3c-xmlserializer@3.0.0: + w3c-xmlserializer@3.0.0: resolution: { integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==, } engines: { node: '>=12' } - dependencies: - xml-name-validator: 4.0.0 - dev: true - /walker@1.0.8: + walker@1.0.8: resolution: { integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, } - dependencies: - makeerror: 1.0.12 - dev: true - /webidl-conversions@7.0.0: + webidl-conversions@7.0.0: resolution: { integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==, } engines: { node: '>=12' } - dev: true - /whatwg-encoding@2.0.0: + whatwg-encoding@2.0.0: resolution: { integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==, } engines: { node: '>=12' } - dependencies: - iconv-lite: 0.6.3 - dev: true - /whatwg-mimetype@3.0.0: + whatwg-mimetype@3.0.0: resolution: { integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==, } engines: { node: '>=12' } - dev: true - /whatwg-url@10.0.0: + whatwg-url@10.0.0: resolution: { integrity: sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==, } engines: { node: '>=12' } - dependencies: - tr46: 3.0.0 - webidl-conversions: 7.0.0 - dev: true - /whatwg-url@11.0.0: + whatwg-url@11.0.0: resolution: { integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==, } engines: { node: '>=12' } - dependencies: - tr46: 3.0.0 - webidl-conversions: 7.0.0 - dev: true - /which@2.0.2: + which@2.0.2: resolution: { integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, } engines: { node: '>= 8' } hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - /wrap-ansi@7.0.0: + wrap-ansi@7.0.0: resolution: { integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, } engines: { node: '>=10' } - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - /wrappy@1.0.2: + wrappy@1.0.2: resolution: { integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, } - dev: true - /write-file-atomic@4.0.2: + write-file-atomic@4.0.2: resolution: { integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==, } engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - dev: true - /ws@8.18.3: + ws@8.18.3: resolution: { integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==, @@ -4249,73 +2801,1948 @@ packages: optional: true utf-8-validate: optional: true - dev: true - /xml-name-validator@4.0.0: + xml-name-validator@4.0.0: resolution: { integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==, } engines: { node: '>=12' } - dev: true - /xmlchars@2.2.0: + xmlchars@2.2.0: resolution: { integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==, } - dev: true - /xmlcreate@2.0.4: + xmlcreate@2.0.4: resolution: { integrity: sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==, } - dev: true - /y18n@5.0.8: + y18n@5.0.8: resolution: { integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, } engines: { node: '>=10' } - dev: true - /yallist@3.1.1: + yallist@3.1.1: resolution: { integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, } - dev: true - /yargs-parser@21.1.1: + yargs-parser@21.1.1: resolution: { integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, } engines: { node: '>=12' } - dev: true - /yargs@17.7.2: + yargs@17.7.2: resolution: { integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, } engines: { node: '>=12' } - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: true - /yocto-queue@0.1.0: + yocto-queue@0.1.0: resolution: { integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, } engines: { node: '>=10' } - dev: true + +snapshots: + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.28.4': {} + + '@babel/core@7.28.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.1 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.28.3': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.28.4 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.25.4 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.28.4': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + + '@babel/parser@7.28.4': + dependencies: + '@babel/types': 7.28.4 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@babel/traverse@7.28.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.28.4': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@bcoe/v8-coverage@0.2.3': {} + + '@epic-web/invariant@1.0.0': {} + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@28.1.3': + dependencies: + '@jest/types': 28.1.3 + '@types/node': 24.3.1 + chalk: 4.1.2 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + slash: 3.0.0 + + '@jest/core@28.1.3': + dependencies: + '@jest/console': 28.1.3 + '@jest/reporters': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 24.3.1 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 28.1.3 + jest-config: 28.1.3(@types/node@24.3.1) + jest-haste-map: 28.1.3 + jest-message-util: 28.1.3 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-resolve-dependencies: 28.1.3 + jest-runner: 28.1.3 + jest-runtime: 28.1.3 + jest-snapshot: 28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 + jest-watcher: 28.1.3 + micromatch: 4.0.8 + pretty-format: 28.1.3 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + - ts-node + + '@jest/environment@28.1.3': + dependencies: + '@jest/fake-timers': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 24.3.1 + jest-mock: 28.1.3 + + '@jest/expect-utils@28.1.3': + dependencies: + jest-get-type: 28.0.2 + + '@jest/expect@28.1.3': + dependencies: + expect: 28.1.3 + jest-snapshot: 28.1.3 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@28.1.3': + dependencies: + '@jest/types': 28.1.3 + '@sinonjs/fake-timers': 9.1.2 + '@types/node': 24.3.1 + jest-message-util: 28.1.3 + jest-mock: 28.1.3 + jest-util: 28.1.3 + + '@jest/globals@28.1.3': + dependencies: + '@jest/environment': 28.1.3 + '@jest/expect': 28.1.3 + '@jest/types': 28.1.3 + transitivePeerDependencies: + - supports-color + + '@jest/reporters@28.1.3': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@jridgewell/trace-mapping': 0.3.31 + '@types/node': 24.3.1 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.2.0 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + jest-worker: 28.1.3 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + terminal-link: 2.1.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@28.1.3': + dependencies: + '@sinclair/typebox': 0.24.51 + + '@jest/source-map@28.1.2': + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/test-result@28.1.3': + dependencies: + '@jest/console': 28.1.3 + '@jest/types': 28.1.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@28.1.3': + dependencies: + '@jest/test-result': 28.1.3 + graceful-fs: 4.2.11 + jest-haste-map: 28.1.3 + slash: 3.0.0 + + '@jest/transform@28.1.3': + dependencies: + '@babel/core': 7.28.4 + '@jest/types': 28.1.3 + '@jridgewell/trace-mapping': 0.3.31 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 28.1.3 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@28.1.3': + dependencies: + '@jest/schemas': 28.1.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 24.3.1 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@rollup/plugin-terser@0.4.4(rollup@2.79.2)': + dependencies: + serialize-javascript: 6.0.2 + smob: 1.5.0 + terser: 5.44.0 + optionalDependencies: + rollup: 2.79.2 + + '@sinclair/typebox@0.24.51': {} + + '@sinonjs/commons@1.8.6': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@9.1.2': + dependencies: + '@sinonjs/commons': 1.8.6 + + '@tootallnate/once@2.0.0': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.28.4 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.28.4 + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 24.3.1 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jsdom@16.2.15': + dependencies: + '@types/node': 24.3.1 + '@types/parse5': 6.0.3 + '@types/tough-cookie': 4.0.5 + + '@types/linkify-it@5.0.0': {} + + '@types/markdown-it@12.2.3': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + + '@types/mdurl@2.0.0': {} + + '@types/node@24.3.1': + dependencies: + undici-types: 7.10.0 + + '@types/parse5@6.0.3': {} + + '@types/prettier@2.7.3': {} + + '@types/stack-utils@2.0.3': {} + + '@types/tough-cookie@4.0.5': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + abab@2.0.6: {} + + acorn-globals@6.0.0: + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + + acorn-walk@7.2.0: {} + + acorn@7.4.1: {} + + acorn@8.15.0: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + async@3.2.6: {} + + asynckit@0.4.0: {} + + babel-jest@28.1.3(@babel/core@7.28.4): + dependencies: + '@babel/core': 7.28.4 + '@jest/transform': 28.1.3 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 28.1.3(@babel/core@7.28.4) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@28.1.3: + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.28.0 + + babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.4): + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.4) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.4) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.4) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.4) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.4) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.4) + + babel-preset-jest@28.1.3(@babel/core@7.28.4): + dependencies: + '@babel/core': 7.28.4 + babel-plugin-jest-hoist: 28.1.3 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.4) + + balanced-match@1.0.2: {} + + basic-auth@2.0.1: + dependencies: + safe-buffer: 5.1.2 + + bluebird@3.7.2: {} + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browser-process-hrtime@1.0.0: {} + + browserslist@4.25.4: + dependencies: + caniuse-lite: 1.0.30001741 + electron-to-chromium: 1.5.217 + node-releases: 2.0.20 + update-browserslist-db: 1.1.3(browserslist@4.25.4) + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-from@1.1.2: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001741: {} + + catharsis@0.9.0: + dependencies: + lodash: 4.17.21 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + char-regex@1.0.2: {} + + ci-info@3.9.0: {} + + cjs-module-lexer@1.4.3: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@2.20.3: {} + + concat-map@0.0.1: {} + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + corser@2.0.1: {} + + cross-env@10.0.0: + dependencies: + '@epic-web/invariant': 1.0.0 + cross-spawn: 7.0.6 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + cssom@0.3.8: {} + + cssom@0.5.0: {} + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + + data-urls@3.0.2: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + + debug@4.4.1: + dependencies: + ms: 2.1.3 + + decimal.js@10.6.0: {} + + dedent@0.7.0: {} + + deepmerge@4.3.1: {} + + delayed-stream@1.0.0: {} + + detect-newline@3.1.0: {} + + diff-sequences@28.1.1: {} + + domexception@4.0.0: + dependencies: + webidl-conversions: 7.0.0 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + electron-to-chromium@1.5.217: {} + + emittery@0.10.2: {} + + emoji-regex@8.0.0: {} + + entities@2.1.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + escalade@3.2.0: {} + + escape-string-regexp@2.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + esprima@4.0.1: {} + + estraverse@5.3.0: {} + + estree-walker@0.6.1: {} + + esutils@2.0.3: {} + + eventemitter3@4.0.7: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exit@0.1.2: {} + + expect@28.1.3: + dependencies: + '@jest/expect-utils': 28.1.3 + jest-get-type: 28.0.2 + jest-matcher-utils: 28.1.3 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + + fast-json-stable-stringify@2.1.0: {} + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + follow-redirects@1.15.11: {} + + form-data@4.0.4: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + 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: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@6.0.1: {} + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + html-encoding-sniffer@3.0.0: + dependencies: + whatwg-encoding: 2.0.0 + + html-escaper@2.0.2: {} + + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.11 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + http-server@14.1.1: + dependencies: + basic-auth: 2.0.1 + chalk: 4.1.2 + corser: 2.0.1 + he: 1.2.0 + html-encoding-sniffer: 3.0.0 + http-proxy: 1.18.1 + mime: 1.6.0 + minimist: 1.2.8 + opener: 1.5.2 + portfinder: 1.0.37 + secure-compare: 3.0.1 + union: 0.5.0 + url-join: 4.0.1 + transitivePeerDependencies: + - debug + - supports-color + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + is-arrayish@0.2.1: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-fullwidth-code-point@3.0.0: {} + + is-generator-fn@2.1.0: {} + + is-number@7.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-stream@2.0.1: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.28.4 + '@babel/parser': 7.28.4 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.4.1 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.2.0: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jest-changed-files@28.1.3: + dependencies: + execa: 5.1.1 + p-limit: 3.1.0 + + jest-circus@28.1.3: + dependencies: + '@jest/environment': 28.1.3 + '@jest/expect': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 24.3.1 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + is-generator-fn: 2.1.0 + jest-each: 28.1.3 + jest-matcher-utils: 28.1.3 + jest-message-util: 28.1.3 + jest-runtime: 28.1.3 + jest-snapshot: 28.1.3 + jest-util: 28.1.3 + p-limit: 3.1.0 + pretty-format: 28.1.3 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - supports-color + + jest-cli@28.1.3(@types/node@24.3.1): + dependencies: + '@jest/core': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.2.0 + jest-config: 28.1.3(@types/node@24.3.1) + jest-util: 28.1.3 + jest-validate: 28.1.3 + prompts: 2.4.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + + jest-config@28.1.3(@types/node@24.3.1): + dependencies: + '@babel/core': 7.28.4 + '@jest/test-sequencer': 28.1.3 + '@jest/types': 28.1.3 + babel-jest: 28.1.3(@babel/core@7.28.4) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 28.1.3 + jest-environment-node: 28.1.3 + jest-get-type: 28.0.2 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-runner: 28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 28.1.3 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 24.3.1 + transitivePeerDependencies: + - supports-color + + jest-diff@28.1.3: + dependencies: + chalk: 4.1.2 + diff-sequences: 28.1.1 + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + + jest-docblock@28.1.1: + dependencies: + detect-newline: 3.1.0 + + jest-each@28.1.3: + dependencies: + '@jest/types': 28.1.3 + chalk: 4.1.2 + jest-get-type: 28.0.2 + jest-util: 28.1.3 + pretty-format: 28.1.3 + + jest-environment-jsdom@28.1.3: + dependencies: + '@jest/environment': 28.1.3 + '@jest/fake-timers': 28.1.3 + '@jest/types': 28.1.3 + '@types/jsdom': 16.2.15 + '@types/node': 24.3.1 + jest-mock: 28.1.3 + jest-util: 28.1.3 + jsdom: 19.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-environment-node@28.1.3: + dependencies: + '@jest/environment': 28.1.3 + '@jest/fake-timers': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 24.3.1 + jest-mock: 28.1.3 + jest-util: 28.1.3 + + jest-get-type@28.0.2: {} + + jest-haste-map@28.1.3: + dependencies: + '@jest/types': 28.1.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 24.3.1 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 + jest-worker: 28.1.3 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-leak-detector@28.1.3: + dependencies: + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + + jest-matcher-utils@28.1.3: + dependencies: + chalk: 4.1.2 + jest-diff: 28.1.3 + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + + jest-message-util@28.1.3: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 28.1.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 28.1.3 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@28.1.3: + dependencies: + '@jest/types': 28.1.3 + '@types/node': 24.3.1 + + jest-pnp-resolver@1.2.3(jest-resolve@28.1.3): + optionalDependencies: + jest-resolve: 28.1.3 + + jest-regex-util@28.0.2: {} + + jest-resolve-dependencies@28.1.3: + dependencies: + jest-regex-util: 28.0.2 + jest-snapshot: 28.1.3 + transitivePeerDependencies: + - supports-color + + jest-resolve@28.1.3: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 28.1.3 + jest-pnp-resolver: 1.2.3(jest-resolve@28.1.3) + jest-util: 28.1.3 + jest-validate: 28.1.3 + resolve: 1.22.10 + resolve.exports: 1.1.1 + slash: 3.0.0 + + jest-runner@28.1.3: + dependencies: + '@jest/console': 28.1.3 + '@jest/environment': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 24.3.1 + chalk: 4.1.2 + emittery: 0.10.2 + graceful-fs: 4.2.11 + jest-docblock: 28.1.1 + jest-environment-node: 28.1.3 + jest-haste-map: 28.1.3 + jest-leak-detector: 28.1.3 + jest-message-util: 28.1.3 + jest-resolve: 28.1.3 + jest-runtime: 28.1.3 + jest-util: 28.1.3 + jest-watcher: 28.1.3 + jest-worker: 28.1.3 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + + jest-runtime@28.1.3: + dependencies: + '@jest/environment': 28.1.3 + '@jest/fake-timers': 28.1.3 + '@jest/globals': 28.1.3 + '@jest/source-map': 28.1.2 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.2 + execa: 5.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 28.1.3 + jest-message-util: 28.1.3 + jest-mock: 28.1.3 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-snapshot: 28.1.3 + jest-util: 28.1.3 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-snapshot@28.1.3: + dependencies: + '@babel/core': 7.28.4 + '@babel/generator': 7.28.3 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@jest/expect-utils': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@types/babel__traverse': 7.28.0 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.4) + chalk: 4.1.2 + expect: 28.1.3 + graceful-fs: 4.2.11 + jest-diff: 28.1.3 + jest-get-type: 28.0.2 + jest-haste-map: 28.1.3 + jest-matcher-utils: 28.1.3 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + natural-compare: 1.4.0 + pretty-format: 28.1.3 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + jest-util@28.1.3: + dependencies: + '@jest/types': 28.1.3 + '@types/node': 24.3.1 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@28.1.3: + dependencies: + '@jest/types': 28.1.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 28.0.2 + leven: 3.1.0 + pretty-format: 28.1.3 + + jest-watcher@28.1.3: + dependencies: + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 24.3.1 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.10.2 + jest-util: 28.1.3 + string-length: 4.0.2 + + jest-worker@28.1.3: + dependencies: + '@types/node': 24.3.1 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@28.1.3(@types/node@24.3.1): + dependencies: + '@jest/core': 28.1.3 + '@jest/types': 28.1.3 + import-local: 3.2.0 + jest-cli: 28.1.3(@types/node@24.3.1) + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + + js-cleanup@1.2.0: + dependencies: + magic-string: 0.25.9 + perf-regexes: 1.0.1 + skip-regex: 1.0.2 + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js2xmlparser@4.0.2: + dependencies: + xmlcreate: 2.0.4 + + jsdoc@3.6.11: + dependencies: + '@babel/parser': 7.28.4 + '@types/markdown-it': 12.2.3 + bluebird: 3.7.2 + catharsis: 0.9.0 + escape-string-regexp: 2.0.0 + js2xmlparser: 4.0.2 + klaw: 3.0.0 + markdown-it: 12.3.2 + markdown-it-anchor: 8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2) + marked: 4.3.0 + mkdirp: 1.0.4 + requizzle: 0.2.4 + strip-json-comments: 3.1.1 + taffydb: 2.6.2 + underscore: 1.13.7 + + jsdom@19.0.0: + dependencies: + abab: 2.0.6 + acorn: 8.15.0 + acorn-globals: 6.0.0 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.6.0 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.4 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.22 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 3.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 10.0.0 + ws: 8.18.3 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@3.1.0: {} + + json-parse-even-better-errors@2.3.1: {} + + json5@2.2.3: {} + + klaw@3.0.0: + dependencies: + graceful-fs: 4.2.11 + + kleur@3.0.3: {} + + leven@3.1.0: {} + + lines-and-columns@1.2.4: {} + + linkify-it@3.0.3: + dependencies: + uc.micro: 1.0.6 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + lodash@4.17.21: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.25.9: + dependencies: + sourcemap-codec: 1.4.8 + + make-dir@4.0.0: + dependencies: + semver: 7.7.2 + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2): + dependencies: + '@types/markdown-it': 12.2.3 + markdown-it: 12.3.2 + + markdown-it@12.3.2: + dependencies: + argparse: 2.0.1 + entities: 2.1.0 + linkify-it: 3.0.3 + mdurl: 1.0.1 + uc.micro: 1.0.6 + + marked@4.3.0: {} + + math-intrinsics@1.1.0: {} + + mdurl@1.0.1: {} + + merge-stream@2.0.0: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mimic-fn@2.1.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimist@1.2.8: {} + + mkdirp@1.0.4: {} + + ms@2.1.3: {} + + natural-compare@1.4.0: {} + + node-int64@0.4.0: {} + + node-releases@2.0.20: {} + + normalize-path@3.0.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nwsapi@2.2.22: {} + + object-inspect@1.13.4: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + opener@1.5.2: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-try@2.2.0: {} + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse5@6.0.1: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + perf-regexes@1.0.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pirates@4.0.7: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + portfinder@1.0.37: + dependencies: + async: 3.2.6 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + prettier@2.6.2: {} + + pretty-format@28.1.3: + dependencies: + '@jest/schemas': 28.1.3 + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + punycode@2.3.1: {} + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + + querystringify@2.2.0: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + react-is@18.3.1: {} + + require-directory@2.1.1: {} + + requires-port@1.0.0: {} + + requizzle@0.2.4: + dependencies: + lodash: 4.17.21 + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@5.0.0: {} + + resolve.exports@1.1.1: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup-plugin-cleanup@3.2.1(rollup@2.79.2): + dependencies: + js-cleanup: 1.2.0 + rollup: 2.79.2 + rollup-pluginutils: 2.8.2 + + rollup-pluginutils@2.8.2: + dependencies: + estree-walker: 0.6.1 + + rollup@2.79.2: + optionalDependencies: + fsevents: 2.3.3 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + saxes@5.0.1: + dependencies: + xmlchars: 2.2.0 + + secure-compare@3.0.1: {} + + semver@6.3.1: {} + + semver@7.7.2: {} + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + sisteransi@1.0.5: {} + + skip-regex@1.0.2: {} + + slash@3.0.0: {} + + smob@1.5.0: {} + + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + sourcemap-codec@1.4.8: {} + + sprintf-js@1.0.3: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + symbol-tree@3.2.4: {} + + taffydb@2.6.2: {} + + terminal-link@2.1.1: + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + + terser@5.44.0: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + tmpl@1.0.5: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@3.0.0: + dependencies: + punycode: 2.3.1 + + tsd-jsdoc@2.5.0(jsdoc@3.6.11): + dependencies: + jsdoc: 3.6.11 + typescript: 3.9.10 + + type-detect@4.0.8: {} + + type-fest@0.21.3: {} + + typescript@3.9.10: {} + + typescript@5.9.2: {} + + uc.micro@1.0.6: {} + + underscore@1.13.7: {} + + undici-types@7.10.0: {} + + union@0.5.0: + dependencies: + qs: 6.14.0 + + universalify@0.2.0: {} + + update-browserslist-db@1.1.3(browserslist@4.25.4): + dependencies: + browserslist: 4.25.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + url-join@4.0.1: {} + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + + w3c-hr-time@1.0.2: + dependencies: + browser-process-hrtime: 1.0.0 + + w3c-xmlserializer@3.0.0: + dependencies: + xml-name-validator: 4.0.0 + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + webidl-conversions@7.0.0: {} + + whatwg-encoding@2.0.0: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@3.0.0: {} + + whatwg-url@10.0.0: + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + + whatwg-url@11.0.0: + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + ws@8.18.3: {} + + xml-name-validator@4.0.0: {} + + xmlchars@2.2.0: {} + + xmlcreate@2.0.4: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} diff --git a/src/jsmind.js b/src/jsmind.js index ec0794af..9420cc11 100644 --- a/src/jsmind.js +++ b/src/jsmind.js @@ -429,12 +429,22 @@ export default class jsMind { if (dir === undefined) { dir = this.layout.calculate_next_child_direction(parent_node); } + var node = this.mind.add_node(parent_node, node_id, topic, data, dir); - if (!!node) { + if (!node) { + return null; // Mind-level failure + } + + try { this.view.add_node(node); this.view.reset_node_custom_style(node); + return node; // Success + } catch (e) { + // View operations failed, rollback mind changes + logger.error('View operation failed, rolling back node:', e); + this.mind.remove_node(node); + return null; } - return node; } /** @@ -483,9 +493,10 @@ export default class jsMind { /** * Add multiple nodes to the mind map with optimized performance. + * Supports standard jsMind formats: node_tree, node_array, and freemind with nested children structure. * @param {string | import('./jsmind.node.js').Node} parent_node - Parent node for all new nodes - * @param {Array<{node_id: string, topic: string, data?: Record, direction?: ('left'|'center'|'right'|'-1'|'0'|'1'|number)}>} nodes_data - Array of node data objects - * @returns {Array} Array of created nodes + * @param {Array<{id: string, topic: string, data?: Record, direction?: ('left'|'center'|'right'|'-1'|'0'|'1'|number), children?: Array}>} nodes_data - Array of node data objects with same format as add_node + * @returns {Array} Array of created nodes (flattened from all levels) */ add_nodes(parent_node, nodes_data) { if (!this.get_editable()) { @@ -504,33 +515,125 @@ export default class jsMind { return []; } - var created_nodes = []; + let all_created_nodes = []; + const expected_count = this._count_expected_nodes(nodes_data); + + try { + // Process nodes and flatten results + for (const node_data of nodes_data) { + const created_nodes = this._add_nodes_recursive(the_parent_node, node_data); + all_created_nodes = all_created_nodes.concat(created_nodes); + } - // Batch create node data without triggering UI refresh - for (var i = 0; i < nodes_data.length; i++) { - var node_data = nodes_data[i]; - var node = this._add_node_data( - the_parent_node, - node_data.node_id, - node_data.topic, - node_data.data, - node_data.direction - ); - created_nodes.push(node); + // Filter null values + all_created_nodes = all_created_nodes.filter(node => node !== null); + } catch (e) { + logger.error('Failed to add nodes:', e); } - // Refresh UI once after all nodes are added - if (!!created_nodes.length) { + const actual_count = all_created_nodes.length; + + // Atomic operation: either all nodes succeed or cleanup all partial nodes + if (actual_count === expected_count) { + // All nodes created successfully, refresh UI this._refresh_node_ui(the_parent_node); this.invoke_event_handle(EventType.edit, { evt: 'add_nodes', data: [the_parent_node.id, nodes_data], - nodes: created_nodes.filter(node => node !== null).map(node => node.id), + nodes: all_created_nodes.map(node => node.id), }); + return all_created_nodes; + } else { + // Cleanup partially created nodes to ensure atomicity + if (all_created_nodes.length > 0) { + logger.warn( + `Expected ${expected_count} nodes, but only created ${actual_count}. Cleaning up...` + ); + this._cleanup_partial_nodes(all_created_nodes); + } + return []; + } + } + + /** + * Recursively add nodes using existing format processors. + * @private + * @param {import('./jsmind.node.js').Node} parent_node + * @param {object} node_data + * @returns {Array} + */ + _add_nodes_recursive(parent_node, node_data) { + var all_nodes = []; + + if (!node_data.id || !node_data.topic) { + logger.warn('invalid node data:', node_data); + return []; } - return created_nodes; + // Create the node + var new_node = this._add_node_data( + parent_node, + node_data.id, + node_data.topic, + node_data.data || {}, + node_data.direction + ); + + if (new_node) { + // Add the result only if node creation was successful + all_nodes.push(new_node); + + // Process children recursively only if parent node was created successfully + const children = + node_data && Array.isArray(node_data.children) ? node_data.children : null; + if (children && children.length > 0) { + // Use lambda to process children and flatten results + const child_nodes = children + .map(child => this._add_nodes_recursive(new_node, child)) + .flat(); + all_nodes = all_nodes.concat(child_nodes); + } + } + + return all_nodes; } + + /** + * Count expected nodes recursively. + * @private + * @param {Array} nodes_data + * @returns {number} + */ + _count_expected_nodes(nodes_data) { + if (!Array.isArray(nodes_data)) { + return 0; + } + return nodes_data.reduce((count, node_data) => { + count++; // Count current node + count += this._count_expected_nodes(node_data && node_data.children); + return count; + }, 0); + } + + /** + * Clean up partially created nodes without triggering UI refresh for each node. + * @private + * @param {Array} created_nodes + */ + _cleanup_partial_nodes(created_nodes) { + if (created_nodes.length === 0) return; + // Remove all created nodes in reverse order to avoid parent-child issues + // Use direct view and mind operations without triggering layout/show + [...created_nodes].reverse().forEach(node => { + if (node && !node.isroot) { + // Remove from view without triggering layout + this.view.remove_node(node); + // Remove from mind model without triggering layout + this.mind.remove_node(node); + } + }); + } + /** * Insert a node before target node. * @param {string | import('./jsmind.node.js').Node} node_before diff --git a/tests/unit/jsmind.test.js b/tests/unit/jsmind.test.js index 5d24dc1f..402b9025 100644 --- a/tests/unit/jsmind.test.js +++ b/tests/unit/jsmind.test.js @@ -545,7 +545,7 @@ test('event listener', () => { }); describe('add_nodes', () => { - // Error handling tests + // Basic error handling tests test('should return empty array when not editable', () => { const jsmind = new jm({ container: 'container', editable: false }); const result = jsmind.add_nodes('root', []); @@ -558,362 +558,155 @@ describe('add_nodes', () => { expect(result).toEqual([]); }); - test('should return empty array when nodes_data is not array', () => { + test('should return empty array for invalid input', () => { const jsmind = create_fake_mind({ editable: true }); - const result = jsmind.add_nodes('root', null); - expect(result).toEqual([]); - }); - - test('should return empty array when nodes_data is empty', () => { - const jsmind = create_fake_mind({ editable: true }); - const result = jsmind.add_nodes('root', []); - expect(result).toEqual([]); - }); - - test('should have add_nodes method', () => { - const jsmind = create_fake_mind({ editable: true }); - expect(typeof jsmind.add_nodes).toBe('function'); + expect(jsmind.add_nodes('root', null)).toEqual([]); + expect(jsmind.add_nodes('root', [])).toEqual([]); }); - // Core functionality tests - simplified to avoid DOM issues in test environment - test('should call _add_node_data for each node', () => { + // Core functionality tests + test('should successfully add multiple nodes', () => { const jsmind = create_fake_mind({ editable: true }); - jsmind._add_node_data = jest.fn().mockReturnValue({ id: 'test', topic: 'test' }); + jsmind._add_node_data = jest.fn().mockReturnValue(create_mock_node('test', 'test')); jsmind._refresh_node_ui = jest.fn(); jsmind.invoke_event_handle = jest.fn(); const nodes_data = [ - { node_id: 'test1', topic: 'Test Node 1' }, - { node_id: 'test2', topic: 'Test Node 2' }, + { id: 'test1', topic: 'Test Node 1' }, + { id: 'test2', topic: 'Test Node 2' }, ]; const result = jsmind.add_nodes('root', nodes_data); expect(jsmind._add_node_data).toHaveBeenCalledTimes(2); expect(result).toHaveLength(2); + expect(jsmind._refresh_node_ui).toHaveBeenCalledTimes(1); }); - test('should call _refresh_node_ui once after all nodes added', () => { + test('should pass correct parameters to _add_node_data', () => { const jsmind = create_fake_mind({ editable: true }); - jsmind._add_node_data = jest.fn().mockReturnValue({ id: 'test', topic: 'test' }); + jsmind._add_node_data = jest.fn().mockReturnValue(create_mock_node('test', 'test')); jsmind._refresh_node_ui = jest.fn(); jsmind.invoke_event_handle = jest.fn(); const nodes_data = [ - { node_id: 'test1', topic: 'Test Node 1' }, - { node_id: 'test2', topic: 'Test Node 2' }, - { node_id: 'test3', topic: 'Test Node 3' }, + { + id: 'test1', + topic: 'Test Node 1', + data: { color: 'red' }, + direction: 'right', + }, ]; jsmind.add_nodes('root', nodes_data); - expect(jsmind._refresh_node_ui).toHaveBeenCalledTimes(1); - expect(jsmind._refresh_node_ui).toHaveBeenCalledWith(jsmind.mind.root); + expect(jsmind._add_node_data).toHaveBeenCalledWith( + jsmind.mind.root, + 'test1', + 'Test Node 1', + { color: 'red' }, + 'right' + ); }); - test('should trigger add_nodes event with correct data', () => { + test('should trigger add_nodes event', () => { const jsmind = create_fake_mind({ editable: true }); - jsmind._add_node_data = jest.fn().mockReturnValue({ id: 'test', topic: 'test' }); + jsmind._add_node_data = jest.fn().mockReturnValue(create_mock_node('test', 'test')); jsmind._refresh_node_ui = jest.fn(); const eventHandler = jest.fn(); jsmind.invoke_event_handle = eventHandler; - const nodes_data = [ - { node_id: 'test1', topic: 'Test Node 1' }, - { node_id: 'test2', topic: 'Test Node 2' }, - ]; - + const nodes_data = [{ id: 'test1', topic: 'Test Node 1' }]; jsmind.add_nodes('root', nodes_data); expect(eventHandler).toHaveBeenCalledWith(EventType.edit, { evt: 'add_nodes', data: ['root', nodes_data], - nodes: ['test', 'test'], // Mock returns same object + nodes: ['test'], }); }); - test('should handle failed node creation', () => { + // Atomicity and rollback tests + test('should rollback when node creation fails (atomicity)', () => { const jsmind = create_fake_mind({ editable: true }); jsmind._add_node_data = jest .fn() - .mockReturnValueOnce({ id: 'test1', topic: 'Test Node 1' }) - .mockReturnValueOnce(null) // Second node fails - .mockReturnValueOnce({ id: 'test3', topic: 'Test Node 3' }); + .mockReturnValueOnce(create_mock_node('test1', 'Test Node 1')) + .mockReturnValueOnce(null); // Second node fails jsmind._refresh_node_ui = jest.fn(); jsmind.invoke_event_handle = jest.fn(); + jsmind._cleanup_partial_nodes = jest.fn(); const nodes_data = [ - { node_id: 'test1', topic: 'Test Node 1' }, - { node_id: 'test2', topic: 'Test Node 2' }, - { node_id: 'test3', topic: 'Test Node 3' }, + { id: 'test1', topic: 'Test Node 1' }, + { id: 'test2', topic: 'Test Node 2' }, ]; const result = jsmind.add_nodes('root', nodes_data); - expect(result).toHaveLength(3); - expect(result[0]).not.toBeNull(); - expect(result[1]).toBeNull(); - expect(result[2]).not.toBeNull(); - }); - - test('should pass correct parameters to _add_node_data', () => { - const jsmind = create_fake_mind({ editable: true }); - jsmind._add_node_data = jest.fn().mockReturnValue({ id: 'test', topic: 'test' }); - jsmind._refresh_node_ui = jest.fn(); - jsmind.invoke_event_handle = jest.fn(); - - const nodes_data = [ - { - node_id: 'test1', - topic: 'Test Node 1', - data: { color: 'red' }, - direction: 'right', - }, - ]; - - jsmind.add_nodes('root', nodes_data); - - expect(jsmind._add_node_data).toHaveBeenCalledWith( - jsmind.mind.root, - 'test1', - 'Test Node 1', - { color: 'red' }, - 'right' - ); - }); - - // Performance and scalability tests - test('should handle large number of nodes efficiently', () => { - const jsmind = create_fake_mind({ editable: true }); - jsmind._add_node_data = jest.fn().mockReturnValue({ id: 'test', topic: 'test' }); - jsmind._refresh_node_ui = jest.fn(); - jsmind.invoke_event_handle = jest.fn(); - - // Generate 1000 nodes - const nodes_data = []; - for (let i = 0; i < 1000; i++) { - nodes_data.push({ - node_id: `bulk_node_${i}`, - topic: `Bulk Node ${i}`, - data: { index: i }, - direction: i % 2 === 0 ? 'right' : 'left', - }); - } - - const start = performance.now(); - const result = jsmind.add_nodes('root', nodes_data); - const end = performance.now(); - - expect(result).toHaveLength(1000); - expect(jsmind._add_node_data).toHaveBeenCalledTimes(1000); - expect(jsmind._refresh_node_ui).toHaveBeenCalledTimes(1); // Key performance benefit - expect(end - start).toBeLessThan(100); // Should complete within 100ms + expect(result).toEqual([]); + expect(jsmind._cleanup_partial_nodes).toHaveBeenCalled(); + expect(jsmind._refresh_node_ui).not.toHaveBeenCalled(); + expect(jsmind.invoke_event_handle).not.toHaveBeenCalled(); }); - test('should handle complex node data structures', () => { + // Nested structure support + test('should support nested children structure', () => { const jsmind = create_fake_mind({ editable: true }); - jsmind._add_node_data = jest.fn().mockReturnValue({ id: 'test', topic: 'test' }); + jsmind._add_node_data = jest.fn().mockImplementation((parent, id, topic) => { + return { id, topic, parent, children: [] }; + }); jsmind._refresh_node_ui = jest.fn(); jsmind.invoke_event_handle = jest.fn(); - const complexData = { - 'background-color': '#ff6b6b', - 'font-size': '14px', - 'font-weight': 'bold', - 'border-radius': '8px', - 'padding': '10px', - 'custom-attribute': 'value', - 'nested-object': { - level1: { - level2: 'deep-value', - }, - }, - 'array-data': [1, 2, 3, 'string', { key: 'value' }], - 'boolean-flag': true, - 'numeric-value': 42.5, - 'null-value': null, - 'undefined-value': undefined, - }; - const nodes_data = [ { - node_id: 'complex1', - topic: 'Complex Node with Rich Data', - data: complexData, - direction: 'right', - }, - { - node_id: 'complex2', - topic: 'Node with Unicode: 🌟 测试 العربية', - data: { - 'unicode-support': '🎉🚀💡', - 'multilingual': { - chinese: '你好世界', - arabic: 'مرحبا بالعالم', - emoji: '😀🎈🌈', - }, - }, - direction: 'left', + id: 'parent1', + topic: 'Parent Node', + children: [ + { id: 'child1', topic: 'Child Node 1' }, + { id: 'child2', topic: 'Child Node 2' }, + ], }, ]; const result = jsmind.add_nodes('root', nodes_data); - expect(result).toHaveLength(2); - expect(jsmind._add_node_data).toHaveBeenCalledWith( - jsmind.mind.root, - 'complex1', - 'Complex Node with Rich Data', - complexData, - 'right' - ); - expect(jsmind._add_node_data).toHaveBeenCalledWith( - jsmind.mind.root, - 'complex2', - 'Node with Unicode: 🌟 测试 العربية', - expect.objectContaining({ - 'unicode-support': '🎉🚀💡', - 'multilingual': expect.any(Object), - }), - 'left' - ); + expect(result).toHaveLength(3); // 1 parent + 2 children + expect(jsmind._add_node_data).toHaveBeenCalledTimes(3); }); - test('should handle all direction types correctly', () => { + // Helper methods tests + test('_cleanup_partial_nodes should remove provided nodes', () => { const jsmind = create_fake_mind({ editable: true }); - jsmind._add_node_data = jest.fn().mockReturnValue({ id: 'test', topic: 'test' }); - jsmind._refresh_node_ui = jest.fn(); - jsmind.invoke_event_handle = jest.fn(); + const mockNodes = [{ id: 'node1' }, { id: 'node2' }]; - const nodes_data = [ - { node_id: 'dir1', topic: 'Left String', direction: 'left' }, - { node_id: 'dir2', topic: 'Right String', direction: 'right' }, - { node_id: 'dir3', topic: 'Center String', direction: 'center' }, - { node_id: 'dir4', topic: 'Left Numeric', direction: -1 }, - { node_id: 'dir5', topic: 'Right Numeric', direction: 1 }, - { node_id: 'dir6', topic: 'Center Numeric', direction: 0 }, - { node_id: 'dir7', topic: 'Auto Direction' }, // No direction specified - { node_id: 'dir8', topic: 'Null Direction', direction: null }, - { node_id: 'dir9', topic: 'Undefined Direction', direction: undefined }, - { node_id: 'dir10', topic: 'Invalid String', direction: 'invalid' }, - { node_id: 'dir11', topic: 'Invalid Number', direction: 999 }, - { node_id: 'dir12', topic: 'Boolean Direction', direction: true }, - { node_id: 'dir13', topic: 'Object Direction', direction: { side: 'right' } }, - ]; - - const result = jsmind.add_nodes('root', nodes_data); + jsmind.view.remove_node = jest.fn(); + jsmind.mind.remove_node = jest.fn(); + jsmind.layout.layout = jest.fn(); + jsmind.view.show = jest.fn(); - expect(result).toHaveLength(13); - expect(jsmind._add_node_data).toHaveBeenCalledTimes(13); + jsmind._cleanup_partial_nodes(mockNodes); - // Verify each direction type is passed correctly - expect(jsmind._add_node_data).toHaveBeenNthCalledWith( - 1, - jsmind.mind.root, - 'dir1', - 'Left String', - undefined, - 'left' - ); - expect(jsmind._add_node_data).toHaveBeenNthCalledWith( - 2, - jsmind.mind.root, - 'dir2', - 'Right String', - undefined, - 'right' - ); - expect(jsmind._add_node_data).toHaveBeenNthCalledWith( - 3, - jsmind.mind.root, - 'dir3', - 'Center String', - undefined, - 'center' - ); - expect(jsmind._add_node_data).toHaveBeenNthCalledWith( - 4, - jsmind.mind.root, - 'dir4', - 'Left Numeric', - undefined, - -1 - ); - expect(jsmind._add_node_data).toHaveBeenNthCalledWith( - 5, - jsmind.mind.root, - 'dir5', - 'Right Numeric', - undefined, - 1 - ); - expect(jsmind._add_node_data).toHaveBeenNthCalledWith( - 6, - jsmind.mind.root, - 'dir6', - 'Center Numeric', - undefined, - 0 - ); - expect(jsmind._add_node_data).toHaveBeenNthCalledWith( - 7, - jsmind.mind.root, - 'dir7', - 'Auto Direction', - undefined, - undefined - ); - expect(jsmind._add_node_data).toHaveBeenNthCalledWith( - 8, - jsmind.mind.root, - 'dir8', - 'Null Direction', - undefined, - null - ); - expect(jsmind._add_node_data).toHaveBeenNthCalledWith( - 9, - jsmind.mind.root, - 'dir9', - 'Undefined Direction', - undefined, - undefined - ); - expect(jsmind._add_node_data).toHaveBeenNthCalledWith( - 10, - jsmind.mind.root, - 'dir10', - 'Invalid String', - undefined, - 'invalid' - ); - expect(jsmind._add_node_data).toHaveBeenNthCalledWith( - 11, - jsmind.mind.root, - 'dir11', - 'Invalid Number', - undefined, - 999 - ); - expect(jsmind._add_node_data).toHaveBeenNthCalledWith( - 12, - jsmind.mind.root, - 'dir12', - 'Boolean Direction', - undefined, - true - ); - expect(jsmind._add_node_data).toHaveBeenNthCalledWith( - 13, - jsmind.mind.root, - 'dir13', - 'Object Direction', - undefined, - { side: 'right' } - ); + expect(jsmind.view.remove_node).toHaveBeenCalledTimes(2); + expect(jsmind.mind.remove_node).toHaveBeenCalledTimes(2); }); }); +function create_mock_node(id, topic, additionalProps = {}) { + return { + id: id, + topic: topic, + children: [], + isroot: false, + parent: null, + direction: 1, + expanded: true, + data: {}, + ...additionalProps, + }; +} + function create_fake_mind(options = {}) { const defaultOptions = { container: 'container' }; const mergedOptions = { ...defaultOptions, ...options }; @@ -922,5 +715,6 @@ function create_fake_mind(options = {}) { const root_node = mind.set_root('root', 'root'); mind.add_node(root_node, 'node1', 'node1'); jsmind.mind = mind; + return jsmind; }