diff --git a/clients/js/package.json b/clients/js/package.json index c808023..51a7ff9 100644 --- a/clients/js/package.json +++ b/clients/js/package.json @@ -25,7 +25,8 @@ "scripts": { "build": "rimraf dist && tsup && tsc -p ./tsconfig.declarations.json", "build:docs": "typedoc", - "test": "ava", + "dev": "vitest", + "test": "vitest run", "lint": "eslint --ext js,ts,tsx src", "lint:fix": "eslint --fix --ext js,ts,tsx src", "format": "prettier --check src test", @@ -58,7 +59,6 @@ "yaml": "^2.7.0" }, "devDependencies": { - "@ava/typescript": "^4.1.0", "@solana-config/eslint": "^0.2.3", "@solana/kit": "^6.9.0", "@solana/kit-plugin-rpc": "^0.11.1", @@ -67,26 +67,12 @@ "@types/pako": "^2.0.3", "@typescript-eslint/eslint-plugin": "^7.16.1", "@typescript-eslint/parser": "^7.16.1", - "ava": "^6.1.3", "eslint": "^9.39.2", "prettier": "^3.8.1", "rimraf": "^5.0.5", "tsup": "^8.1.2", "typedoc": "^0.25.12", - "typescript": "^5.9.3" - }, - "ava": { - "files": [ - "test/**/*.test.ts" - ], - "nodeArguments": [ - "--no-warnings" - ], - "typescript": { - "compile": false, - "rewritePaths": { - "test/": "dist/test/" - } - } + "typescript": "^5.9.3", + "vitest": "^4.0.15" } } diff --git a/clients/js/pnpm-lock.yaml b/clients/js/pnpm-lock.yaml index 0c184b5..fba021e 100644 --- a/clients/js/pnpm-lock.yaml +++ b/clients/js/pnpm-lock.yaml @@ -30,9 +30,6 @@ importers: specifier: ^2.7.0 version: 2.7.0 devDependencies: - '@ava/typescript': - specifier: ^4.1.0 - version: 4.1.0 '@solana-config/eslint': specifier: ^0.2.3 version: 0.2.3(@eslint/js@9.39.4)(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3))(eslint-plugin-react-hooks@4.6.2(eslint@9.39.4))(eslint-plugin-simple-import-sort@12.1.1(eslint@9.39.4))(eslint-plugin-sort-keys-fix@1.1.2)(eslint-plugin-typescript-sort-keys@3.3.0(@typescript-eslint/parser@7.18.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(globals@14.0.0)(typescript-eslint@8.58.2(eslint@9.39.4)(typescript@5.9.3))(typescript@5.9.3) @@ -57,9 +54,6 @@ importers: '@typescript-eslint/parser': specifier: ^7.16.1 version: 7.18.0(eslint@9.39.4)(typescript@5.9.3) - ava: - specifier: ^6.1.3 - version: 6.2.0(@ava/typescript@4.1.0)(rollup@4.30.1) eslint: specifier: ^9.39.2 version: 9.39.4 @@ -71,19 +65,27 @@ importers: version: 5.0.10 tsup: specifier: ^8.1.2 - version: 8.3.5(typescript@5.9.3)(yaml@2.7.0) + version: 8.3.5(postcss@8.5.14)(typescript@5.9.3)(yaml@2.7.0) typedoc: specifier: ^0.25.12 version: 0.25.13(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 + vitest: + specifier: ^4.0.15 + version: 4.1.6(@types/node@24.3.0)(vite@8.0.13(@types/node@24.3.0)(esbuild@0.24.2)(yaml@2.7.0)) packages: - '@ava/typescript@4.1.0': - resolution: {integrity: sha512-1iWZQ/nr9iflhLK9VN8H+1oDZqe93qxNnyYUz+jTzkYPAHc5fdZXBrqmNIgIfFhWYXK5OaQ5YtC7OmLeTNhVEg==} - engines: {node: ^14.19 || ^16.15 || ^18 || ^20} + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} '@esbuild/aix-ppc64@0.24.2': resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} @@ -310,10 +312,6 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@isaacs/fs-minipass@4.0.1': - resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} - engines: {node: '>=18.0.0'} - '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} @@ -329,13 +327,17 @@ packages: '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@mapbox/node-pre-gyp@2.0.0-rc.0': - resolution: {integrity: sha512-nhSMNprz3WmeRvd8iUs5JqkKr0Ncx46JtPxM3AhXes84XpSJfmIwKeWXRpsr53S7kqPkQfPhzrMFUxSNb23qSA==} - engines: {node: '>=18'} - hasBin: true + '@napi-rs/wasm-runtime@1.1.4': + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -349,18 +351,104 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@oxc-project/types@0.130.0': + resolution: {integrity: sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q==} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@rollup/pluginutils@5.1.4': - resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@rolldown/binding-android-arm64@1.0.1': + resolution: {integrity: sha512-fJI3I0r3C3Oj/zdBCpaCmBRZYf07xpaq4yCfDDoSFm+beWNzbIl26puW8RraUdugoJw/95zerNOn6jasAhzSmg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.1': + resolution: {integrity: sha512-cKnAhWEsV7TPcA/5EAteDp6KcJZBQ2G+BqE7zayMMi7kMvwRsbv7WT9aOnn0WNl4SKEIf43vjS31iUPu80nzXg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.1': + resolution: {integrity: sha512-YKrVwQjIRBPo+5G/u03wGjbdy4q7pyzCe93DK9VJ7zkVmeg8LJ7GbgsiHWdR4xSoe4CAXRD7Bcjgbtr64bkXNg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.1': + resolution: {integrity: sha512-z/oBsREo46SsFqBwYtFe0kpJeBijAT48O/WXLI4suiCLBkr03RTtTJMCzSdDd2znlh8VJizL09XVkQgk8IZonw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.1': + resolution: {integrity: sha512-ik8q7GM11zxvYxFc2PeDcT6TBvhCQMaUxfph/M5l9sKuTs/Sjg3L+Byw0F7w0ZVLBZmx30P+gG0ECzzN+MFcmQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.1': + resolution: {integrity: sha512-QoSx2EkyrrdZ6kcyE8stqZ62t0Yra8Fs5ia9lOxJrh6TMQJK7gQKmscdTHf7pOXKREKrVwOtJcQG3qVSfc866A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.0.1': + resolution: {integrity: sha512-uwNwFpwKeNiZawfAWBgg0VIztPTV3ihhh1vV334h9ivnNLorxnQMU6Fz8wG1Zb4Qh9LC1/MkcyT3YlDXG3Rsgg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-ppc64-gnu@1.0.1': + resolution: {integrity: sha512-zY1bul7OWr7DFBiJ++wofXvnr8B45ce3QsQUhKrIhXsygAh7bTkwyeM1bi1a2g5C/yC/N8TZyGDEoMfm/l9mpg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@rolldown/binding-linux-s390x-gnu@1.0.1': + resolution: {integrity: sha512-0frlsT/f4Ft6I7SMESTKnF3cZsdicQn1dCMkF/jT9wDLE+gGoiQfv1nmT9e+s7s/fekvvy6tZM2jHvI2tkbJDQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.0.1': + resolution: {integrity: sha512-XABVmGp9Tg0WspTVvwduTc4fpqy6JnAUrSQe6OuyqD/03nI7r0O9OWUkMIwFrjKAIqolvqoA4ZrJppgwE0Gxmw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.0.1': + resolution: {integrity: sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-openharmony-arm64@1.0.1': + resolution: {integrity: sha512-/Mh0Zhq3OP7fVs0kcQHZP6lZEthMGTaSf8UBQYSFEZDWGXXlEC+nJ6EqenaK2t4LBXMe3A+K/G2BVXXdtOr4PQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.1': + resolution: {integrity: sha512-+1xc9X45l8ufsBAm6Gjvx2qDRIY9lTVt0cgWNcJ+1gdhXvkbxePA60yRTwSTuXL09CMhyJmjpV7E3NoyxbqFQQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.1': + resolution: {integrity: sha512-1D+UqZdfnuR+Jy1GgMJwi85bD40H21uNmOPRWQhw4oRSuolZ/B5rixZ45DK2KXOTCvmVCecauWgEhbw8bI7tOw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.1': + resolution: {integrity: sha512-INAycaWuhlOK3wk4mRHGsdgwYWmd9cChdPdE9bwWmy6rn9VqVNYNFGhOdXrofXUxwHIncSiPNb8tNm8knDVIeQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} '@rollup/rollup-android-arm-eabi@4.30.1': resolution: {integrity: sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==} @@ -457,10 +545,6 @@ packages: cpu: [x64] os: [win32] - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - '@solana-config/eslint@0.2.3': resolution: {integrity: sha512-IXvDzqWgCF/5hGWXcNbRI9/eIGQg/o552BCtdph4JLI4LjUsQGh75JgQmIxxNv5dPaMxpwcf0BhrAenuya4Azw==} peerDependencies: @@ -882,6 +966,18 @@ packages: typescript: optional: true + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@tybys/wasm-util@0.10.2': + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} @@ -1047,48 +1143,50 @@ packages: resolution: {integrity: sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vercel/nft@0.27.10': - resolution: {integrity: sha512-zbaF9Wp/NsZtKLE4uVmL3FyfFwlpDyuymQM1kPbeT0mVOHKDQQNjnnfslB3REg3oZprmNFJuh3pkHBk2qAaizg==} - engines: {node: '>=16'} - hasBin: true - - abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + '@vitest/expect@4.1.6': + resolution: {integrity: sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==} - acorn-import-attributes@1.9.5: - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + '@vitest/mocker@4.1.6': + resolution: {integrity: sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==} peerDependencies: - acorn: ^8 + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.6': + resolution: {integrity: sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==} + + '@vitest/runner@4.1.6': + resolution: {integrity: sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==} + + '@vitest/snapshot@4.1.6': + resolution: {integrity: sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==} + + '@vitest/spy@4.1.6': + resolution: {integrity: sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==} + + '@vitest/utils@4.1.6': + resolution: {integrity: sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.16.0: resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} hasBin: true - agent-base@7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} - engines: {node: '>= 14'} - ajv@6.15.0: resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} @@ -1114,41 +1212,17 @@ packages: any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - array-find-index@1.0.2: - resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} - engines: {node: '>=0.10.0'} - array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - arrgv@1.0.2: - resolution: {integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==} - engines: {node: '>=8.0.0'} - - arrify@3.0.0: - resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - async-sema@3.1.1: - resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - - ava@6.2.0: - resolution: {integrity: sha512-+GZk5PbyepjiO/68hzCZCUepQOQauKfNnI7sA4JukBTg97jD7E+tDKEA7OhGOGr6EorNNMM9+jqvgHVOTOzG4w==} - engines: {node: ^18.18 || ^20.8 || ^22 || >=23} - hasBin: true - peerDependencies: - '@ava/typescript': '*' - peerDependenciesMeta: - '@ava/typescript': - optional: true - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1156,12 +1230,6 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - blueimp-md5@2.19.0: - resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} - brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -1190,22 +1258,14 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - callsites@4.2.0: - resolution: {integrity: sha512-kfzR4zzQtAE9PC7CzZsjl3aBNbXWuXiSeOCdLcPpBfGW8YuCqQHcRPFDbr/BPVmd3EEPVpuFzLyuT/cUhPr4OQ==} - engines: {node: '>=12.20'} - - cbor@9.0.2: - resolution: {integrity: sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==} - engines: {node: '>=16'} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - chalk@5.6.2: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} @@ -1214,32 +1274,6 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - chownr@3.0.0: - resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} - engines: {node: '>=18'} - - chunkd@2.0.1: - resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==} - - ci-info@4.1.0: - resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} - engines: {node: '>=8'} - - ci-parallel-vars@1.0.1: - resolution: {integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==} - - cli-truncate@4.0.0: - resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} - engines: {node: '>=18'} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - code-excerpt@4.0.0: - resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1259,36 +1293,20 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concordance@5.0.4: - resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} - engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} - consola@3.4.0: resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} engines: {node: ^14.18.0 || >=16.10.0} - convert-to-spaces@2.0.1: - resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - currently-unhandled@0.4.1: - resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} - engines: {node: '>=0.10.0'} - - date-time@3.1.0: - resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} - engines: {node: '>=6'} - debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -1321,40 +1339,24 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - emittery@1.0.3: - resolution: {integrity: sha512-tJdCJitoy2lrC2ldJcqN4vkqJ00lT+tOWNT1hBJjO/3FDMJa5TTIiYGCKGkn/WfCyOzUMObeohbVTj00fhiLiA==} - engines: {node: '>=14.16'} - - emoji-regex@10.4.0: - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} - emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + esbuild@0.24.2: resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} engines: {node: '>=18'} hasBin: true - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - eslint-plugin-jest@27.9.0: resolution: {integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1433,11 +1435,6 @@ packages: resolution: {integrity: sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==} engines: {node: '>=6.0.0'} - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} @@ -1454,23 +1451,20 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -1504,25 +1498,14 @@ packages: picomatch: optional: true - figures@6.1.0: - resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} - engines: {node: '>=18'} - file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - find-up-simple@1.0.0: - resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} - engines: {node: '>=18'} - find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -1538,26 +1521,11 @@ packages: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-east-asian-width@1.3.0: - resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} - engines: {node: '>=18'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1570,10 +1538,6 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -1582,13 +1546,6 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globby@14.0.2: - resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} - engines: {node: '>=18'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -1596,18 +1553,6 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - - human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - - ignore-by-default@2.1.0: - resolution: {integrity: sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==} - engines: {node: '>=10 <11 || >=12 <13 || >=14'} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -1624,21 +1569,6 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} - - 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. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - irregular-plurals@3.5.0: - resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==} - engines: {node: '>=8'} - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1647,10 +1577,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -1659,21 +1585,6 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - - is-promise@4.0.0: - resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} - engines: {node: '>=18'} - isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -1684,14 +1595,6 @@ packages: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} - js-string-escape@1.0.1: - resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} - engines: {node: '>= 0.8'} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true @@ -1718,6 +1621,76 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} @@ -1725,10 +1698,6 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - load-json-file@7.0.1: - resolution: {integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1743,35 +1712,20 @@ packages: lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + marked@4.3.0: resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} hasBin: true - matcher@5.0.0: - resolution: {integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - md5-hex@3.0.1: - resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} - engines: {node: '>=8'} - - memoize@10.0.0: - resolution: {integrity: sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA==} - engines: {node: '>=18'} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -1780,21 +1734,10 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} - minimatch@10.2.5: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@3.1.5: resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} @@ -1806,63 +1749,29 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@3.0.1: - resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} - engines: {node: '>= 18'} - - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.4: - resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} - hasBin: true - - nofilter@3.1.0: - resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} - engines: {node: '>=12.19'} - - nopt@8.0.0: - resolution: {integrity: sha512-1L/fTJ4UmV/lUxT2Uf006pfZKTvAgCF+chz+0OgBHO8u2Z67pE7AaAUUj7CJy0lXqHmymUvGFt6NE9R3HER0yw==} - engines: {node: ^18.17.0 || >=20.5.0} - hasBin: true - - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} @@ -1876,14 +1785,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@7.0.3: - resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} - engines: {node: '>=18'} - - package-config@5.0.0: - resolution: {integrity: sha512-GYTTew2slBcYdvRHqjhwaaydVMvn/qrGC323+nKclYioNSLTDUM/lGgtGTgyHVtYcozb+XkE8CNhwcraOmZ9Mg==} - engines: {node: '>=18'} - package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -1894,26 +1795,14 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-ms@4.0.0: - resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} - engines: {node: '>=18'} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - path-scurry@1.11.1: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} @@ -1922,9 +1811,8 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1945,10 +1833,6 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - plur@5.1.0: - resolution: {integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - postcss-load-config@6.0.1: resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} engines: {node: '>= 18'} @@ -1967,6 +1851,10 @@ packages: yaml: optional: true + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} + engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -1976,10 +1864,6 @@ packages: engines: {node: '>=14'} hasBin: true - pretty-ms@9.2.0: - resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} - engines: {node: '>=18'} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -1991,18 +1875,10 @@ packages: resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} engines: {node: '>= 14.18.0'} - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - requireindex@1.2.0: resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} engines: {node: '>=0.10.5'} - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -2019,6 +1895,11 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true + rolldown@1.0.1: + resolution: {integrity: sha512-X0KQHljNnEkWNqqiz9zJrGunh1B0HgOxLXvnFpCOcadzcy5qohZ3tqMEUg00vncoRovXuK3ZqCT9KnnKzoInFQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup@4.30.1: resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -2037,10 +1918,6 @@ packages: engines: {node: '>=10'} hasBin: true - serialize-error@7.0.1: - resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} - engines: {node: '>=10'} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -2052,8 +1929,8 @@ packages: shiki@0.14.7: resolution: {integrity: sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==} - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} @@ -2063,24 +1940,19 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} source-map@0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} engines: {node: '>= 8'} - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -2090,10 +1962,6 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} - strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -2102,10 +1970,6 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -2115,22 +1979,10 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true - supertap@3.0.1: - resolution: {integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - tar@7.4.3: - resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} - engines: {node: '>=18'} - - temp-dir@3.0.0: - resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} - engines: {node: '>=14.16'} - thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -2138,13 +1990,16 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - time-zone@1.0.0: - resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} - engines: {node: '>=4'} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.1.2: + resolution: {integrity: sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==} + engines: {node: '>=18'} + tinyglobby@0.2.10: resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} engines: {node: '>=12.0.0'} @@ -2153,13 +2008,14 @@ packages: resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} @@ -2185,6 +2041,9 @@ packages: tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsup@8.3.5: resolution: {integrity: sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==} engines: {node: '>=18'} @@ -2214,10 +2073,6 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - typedoc@0.25.13: resolution: {integrity: sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==} engines: {node: '>= 16'} @@ -2243,32 +2098,102 @@ packages: undici-types@8.3.0: resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + vite@8.0.13: + resolution: {integrity: sha512-MFtjBYgzmSxmgA4RAfjIyXWpGe1oALnjgUTzzV7QLx/TKxCzjtMH6Fd9/eVK+5Fg1qNoz5VAwsmMs/NofrmJvw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.18 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.1.6: + resolution: {integrity: sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.6 + '@vitest/browser-preview': 4.1.6 + '@vitest/browser-webdriverio': 4.1.6 + '@vitest/coverage-istanbul': 4.1.6 + '@vitest/coverage-v8': 4.1.6 + '@vitest/ui': 4.1.6 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} vscode-textmate@8.0.0: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - well-known-symbols@2.0.0: - resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} - engines: {node: '>=6'} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} @@ -2277,6 +2202,11 @@ packages: engines: {node: '>= 8'} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -2289,13 +2219,6 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - write-file-atomic@6.0.0: - resolution: {integrity: sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ==} - engines: {node: ^18.17.0 || >=20.5.0} - ws@8.19.0: resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} engines: {node: '>=10.0.0'} @@ -2308,37 +2231,32 @@ packages: utf-8-validate: optional: true - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@5.0.0: - resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} - engines: {node: '>=18'} - yaml@2.7.0: resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} engines: {node: '>= 14'} hasBin: true - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} snapshots: - '@ava/typescript@4.1.0': + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.1': dependencies: - escape-string-regexp: 5.0.0 - execa: 7.2.0 + tslib: 2.8.1 + optional: true '@esbuild/aix-ppc64@0.24.2': optional: true @@ -2495,10 +2413,6 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@isaacs/fs-minipass@4.0.1': - dependencies: - minipass: 7.1.2 - '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 @@ -2511,23 +2425,19 @@ snapshots: '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@mapbox/node-pre-gyp@2.0.0-rc.0': + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: - consola: 3.4.0 - detect-libc: 2.0.3 - https-proxy-agent: 7.0.6 - node-fetch: 2.7.0 - nopt: 8.0.0 - semver: 7.6.3 - tar: 7.4.3 - transitivePeerDependencies: - - encoding - - supports-color + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.2 + optional: true '@nodelib/fs.scandir@2.1.5': dependencies: @@ -2541,16 +2451,61 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.18.0 - '@pkgjs/parseargs@0.11.0': + '@oxc-project/types@0.130.0': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@rolldown/binding-android-arm64@1.0.1': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.1': + optional: true + + '@rolldown/binding-darwin-x64@1.0.1': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.1': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.1': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.1': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.1': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.1': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.1': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.1': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.1': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.1': optional: true - '@rollup/pluginutils@5.1.4(rollup@4.30.1)': + '@rolldown/binding-wasm32-wasi@1.0.1': dependencies: - '@types/estree': 1.0.6 - estree-walker: 2.0.2 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.30.1 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.1': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.1': + optional: true + + '@rolldown/pluginutils@1.0.1': {} '@rollup/rollup-android-arm-eabi@4.30.1': optional: true @@ -2609,8 +2564,6 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.30.1': optional: true - '@sindresorhus/merge-streams@2.3.0': {} - '@solana-config/eslint@0.2.3(@eslint/js@9.39.4)(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3))(eslint-plugin-react-hooks@4.6.2(eslint@9.39.4))(eslint-plugin-simple-import-sort@12.1.1(eslint@9.39.4))(eslint-plugin-sort-keys-fix@1.1.2)(eslint-plugin-typescript-sort-keys@3.3.0(@typescript-eslint/parser@7.18.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(globals@14.0.0)(typescript-eslint@8.58.2(eslint@9.39.4)(typescript@5.9.3))(typescript@5.9.3)': dependencies: '@eslint/js': 9.39.4 @@ -3115,6 +3068,20 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@standard-schema/spec@1.1.0': {} + + '@tybys/wasm-util@0.10.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + '@types/estree@1.0.6': {} '@types/json-schema@7.0.15': {} @@ -3348,30 +3315,46 @@ snapshots: '@typescript-eslint/types': 8.58.2 eslint-visitor-keys: 5.0.1 - '@vercel/nft@0.27.10(rollup@4.30.1)': - dependencies: - '@mapbox/node-pre-gyp': 2.0.0-rc.0 - '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - acorn: 8.14.0 - acorn-import-attributes: 1.9.5(acorn@8.14.0) - async-sema: 3.1.1 - bindings: 1.5.0 - estree-walker: 2.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - node-gyp-build: 4.8.4 - picomatch: 4.0.2 - resolve-from: 5.0.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color + '@vitest/expect@4.1.6': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.6 + '@vitest/utils': 4.1.6 + chai: 6.2.2 + tinyrainbow: 3.1.0 + + '@vitest/mocker@4.1.6(vite@8.0.13(@types/node@24.3.0)(esbuild@0.24.2)(yaml@2.7.0))': + dependencies: + '@vitest/spy': 4.1.6 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.13(@types/node@24.3.0)(esbuild@0.24.2)(yaml@2.7.0) + + '@vitest/pretty-format@4.1.6': + dependencies: + tinyrainbow: 3.1.0 + + '@vitest/runner@4.1.6': + dependencies: + '@vitest/utils': 4.1.6 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.6': + dependencies: + '@vitest/pretty-format': 4.1.6 + '@vitest/utils': 4.1.6 + magic-string: 0.30.21 + pathe: 2.0.3 - abbrev@2.0.0: {} + '@vitest/spy@4.1.6': {} - acorn-import-attributes@1.9.5(acorn@8.14.0): + '@vitest/utils@4.1.6': dependencies: - acorn: 8.14.0 + '@vitest/pretty-format': 4.1.6 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 acorn-jsx@5.3.2(acorn@7.4.1): dependencies: @@ -3381,18 +3364,10 @@ snapshots: dependencies: acorn: 8.16.0 - acorn-walk@8.3.4: - dependencies: - acorn: 8.14.0 - acorn@7.4.1: {} - acorn@8.14.0: {} - acorn@8.16.0: {} - agent-base@7.1.3: {} - ajv@6.15.0: dependencies: fast-deep-equal: 3.1.3 @@ -3414,81 +3389,16 @@ snapshots: any-promise@1.3.0: {} - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - argparse@2.0.1: {} - array-find-index@1.0.2: {} - array-union@2.1.0: {} - arrgv@1.0.2: {} - - arrify@3.0.0: {} - - async-sema@3.1.1: {} - - ava@6.2.0(@ava/typescript@4.1.0)(rollup@4.30.1): - dependencies: - '@vercel/nft': 0.27.10(rollup@4.30.1) - acorn: 8.14.0 - acorn-walk: 8.3.4 - ansi-styles: 6.2.1 - arrgv: 1.0.2 - arrify: 3.0.0 - callsites: 4.2.0 - cbor: 9.0.2 - chalk: 5.4.1 - chunkd: 2.0.1 - ci-info: 4.1.0 - ci-parallel-vars: 1.0.1 - cli-truncate: 4.0.0 - code-excerpt: 4.0.0 - common-path-prefix: 3.0.0 - concordance: 5.0.4 - currently-unhandled: 0.4.1 - debug: 4.4.0 - emittery: 1.0.3 - figures: 6.1.0 - globby: 14.0.2 - ignore-by-default: 2.1.0 - indent-string: 5.0.0 - is-plain-object: 5.0.0 - is-promise: 4.0.0 - matcher: 5.0.0 - memoize: 10.0.0 - ms: 2.1.3 - p-map: 7.0.3 - package-config: 5.0.0 - picomatch: 4.0.2 - plur: 5.1.0 - pretty-ms: 9.2.0 - resolve-cwd: 3.0.0 - stack-utils: 2.0.6 - strip-ansi: 7.1.0 - supertap: 3.0.1 - temp-dir: 3.0.0 - write-file-atomic: 6.0.0 - yargs: 17.7.2 - optionalDependencies: - '@ava/typescript': 4.1.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color + assertion-error@2.0.1: {} balanced-match@1.0.2: {} balanced-match@4.0.4: {} - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - blueimp-md5@2.19.0: {} - brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -3515,48 +3425,19 @@ snapshots: callsites@3.1.0: {} - callsites@4.2.0: {} - - cbor@9.0.2: - dependencies: - nofilter: 3.1.0 + chai@6.2.2: {} chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.4.1: {} - chalk@5.6.2: {} chokidar@4.0.3: dependencies: readdirp: 4.1.1 - chownr@3.0.0: {} - - chunkd@2.0.1: {} - - ci-info@4.1.0: {} - - ci-parallel-vars@1.0.1: {} - - cli-truncate@4.0.0: - dependencies: - slice-ansi: 5.0.0 - string-width: 7.2.0 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - code-excerpt@4.0.0: - dependencies: - convert-to-spaces: 2.0.1 - color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -3569,24 +3450,11 @@ snapshots: commander@4.1.1: {} - common-path-prefix@3.0.0: {} - concat-map@0.0.1: {} - concordance@5.0.4: - dependencies: - date-time: 3.1.0 - esutils: 2.0.3 - fast-diff: 1.3.0 - js-string-escape: 1.0.1 - lodash: 4.17.21 - md5-hex: 3.0.1 - semver: 7.6.3 - well-known-symbols: 2.0.0 - consola@3.4.0: {} - convert-to-spaces@2.0.1: {} + convert-source-map@2.0.0: {} cross-spawn@7.0.6: dependencies: @@ -3594,14 +3462,6 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - currently-unhandled@0.4.1: - dependencies: - array-find-index: 1.0.2 - - date-time@3.1.0: - dependencies: - time-zone: 1.0.0 - debug@4.4.0: dependencies: ms: 2.1.3 @@ -3620,14 +3480,12 @@ snapshots: eastasianwidth@0.2.0: {} - emittery@1.0.3: {} - - emoji-regex@10.4.0: {} - emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} + es-module-lexer@2.1.0: {} + esbuild@0.24.2: optionalDependencies: '@esbuild/aix-ppc64': 0.24.2 @@ -3656,14 +3514,8 @@ snapshots: '@esbuild/win32-ia32': 0.24.2 '@esbuild/win32-x64': 0.24.2 - escalade@3.2.0: {} - - escape-string-regexp@2.0.0: {} - escape-string-regexp@4.0.0: {} - escape-string-regexp@5.0.0: {} - eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3): dependencies: '@typescript-eslint/utils': 5.62.0(eslint@9.39.4)(typescript@5.9.3) @@ -3769,8 +3621,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@7.4.1) eslint-visitor-keys: 1.3.0 - esprima@4.0.1: {} - esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -3783,26 +3633,16 @@ snapshots: estraverse@5.3.0: {} - estree-walker@2.0.2: {} + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 esutils@2.0.3: {} - execa@7.2.0: - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 + expect-type@1.3.0: {} fast-deep-equal@3.1.3: {} - fast-diff@1.3.0: {} - fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3830,22 +3670,14 @@ snapshots: optionalDependencies: picomatch: 4.0.4 - figures@6.1.0: - dependencies: - is-unicode-supported: 2.1.0 - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 - file-uri-to-path@1.0.0: {} - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - find-up-simple@1.0.0: {} - find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -3863,17 +3695,9 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - fs.realpath@1.0.0: {} - fsevents@2.3.3: optional: true - get-caller-file@2.0.5: {} - - get-east-asian-width@1.3.0: {} - - get-stream@6.0.1: {} - glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -3891,15 +3715,6 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.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 - globals@14.0.0: {} globby@11.1.0: @@ -3911,32 +3726,10 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@14.0.2: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.3 - ignore: 5.3.2 - path-type: 5.0.0 - slash: 5.1.0 - unicorn-magic: 0.1.0 - - graceful-fs@4.2.11: {} - graphemer@1.4.0: {} has-flag@4.0.0: {} - https-proxy-agent@7.0.6: - dependencies: - agent-base: 7.1.3 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - - human-signals@4.3.1: {} - - ignore-by-default@2.1.0: {} - ignore@5.3.2: {} ignore@7.0.5: {} @@ -3948,37 +3741,16 @@ snapshots: imurmurhash@0.1.4: {} - indent-string@5.0.0: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - irregular-plurals@3.5.0: {} - is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} - is-fullwidth-code-point@4.0.0: {} - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 is-number@7.0.0: {} - is-plain-object@5.0.0: {} - - is-promise@4.0.0: {} - - is-stream@3.0.0: {} - - is-unicode-supported@2.1.0: {} - isexe@2.0.0: {} jackspeak@3.4.3: @@ -3989,13 +3761,6 @@ snapshots: joycon@3.1.1: {} - js-string-escape@1.0.1: {} - - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -4019,12 +3784,59 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.0.3 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} - load-json-file@7.0.1: {} - load-tsconfig@0.2.5: {} locate-path@6.0.0: @@ -4035,27 +3847,15 @@ snapshots: lodash.sortby@4.7.0: {} - lodash@4.17.21: {} - lru-cache@10.4.3: {} lunr@2.3.9: {} - marked@4.3.0: {} - - matcher@5.0.0: - dependencies: - escape-string-regexp: 5.0.0 - - md5-hex@3.0.1: - dependencies: - blueimp-md5: 2.19.0 - - memoize@10.0.0: + magic-string@0.30.21: dependencies: - mimic-function: 5.0.1 + '@jridgewell/sourcemap-codec': 1.5.5 - merge-stream@2.0.0: {} + marked@4.3.0: {} merge2@1.4.1: {} @@ -4064,18 +3864,10 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - mimic-fn@4.0.0: {} - - mimic-function@5.0.1: {} - minimatch@10.2.5: dependencies: brace-expansion: 5.0.6 - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - minimatch@3.1.5: dependencies: brace-expansion: 1.1.11 @@ -4086,13 +3878,6 @@ snapshots: minipass@7.1.2: {} - minizlib@3.0.1: - dependencies: - minipass: 7.1.2 - rimraf: 5.0.10 - - mkdirp@3.0.1: {} - ms@2.1.3: {} mz@2.7.0: @@ -4101,35 +3886,15 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 + nanoid@3.3.12: {} + natural-compare-lite@1.4.0: {} natural-compare@1.4.0: {} - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.4: {} - - nofilter@3.1.0: {} - - nopt@8.0.0: - dependencies: - abbrev: 2.0.0 - - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - object-assign@4.1.1: {} - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 + obug@2.1.1: {} optionator@0.9.4: dependencies: @@ -4148,13 +3913,6 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@7.0.3: {} - - package-config@5.0.0: - dependencies: - find-up-simple: 1.0.0 - load-json-file: 7.0.1 - package-json-from-dist@1.0.1: {} pako@2.1.0: {} @@ -4163,16 +3921,10 @@ snapshots: dependencies: callsites: 3.1.0 - parse-ms@4.0.0: {} - path-exists@4.0.0: {} - path-is-absolute@1.0.1: {} - path-key@3.1.1: {} - path-key@4.0.0: {} - path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 @@ -4180,7 +3932,7 @@ snapshots: path-type@4.0.0: {} - path-type@5.0.0: {} + pathe@2.0.3: {} picocolors@1.1.1: {} @@ -4192,38 +3944,31 @@ snapshots: pirates@4.0.6: {} - plur@5.1.0: - dependencies: - irregular-plurals: 3.5.0 - - postcss-load-config@6.0.1(yaml@2.7.0): + postcss-load-config@6.0.1(postcss@8.5.14)(yaml@2.7.0): dependencies: lilconfig: 3.1.3 optionalDependencies: + postcss: 8.5.14 yaml: 2.7.0 + postcss@8.5.14: + dependencies: + nanoid: 3.3.12 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prelude-ls@1.2.1: {} prettier@3.8.1: {} - pretty-ms@9.2.0: - dependencies: - parse-ms: 4.0.0 - punycode@2.3.1: {} queue-microtask@1.2.3: {} readdirp@4.1.1: {} - require-directory@2.1.1: {} - requireindex@1.2.0: {} - resolve-cwd@3.0.0: - dependencies: - resolve-from: 5.0.0 - resolve-from@4.0.0: {} resolve-from@5.0.0: {} @@ -4234,6 +3979,27 @@ snapshots: dependencies: glob: 10.4.5 + rolldown@1.0.1: + dependencies: + '@oxc-project/types': 0.130.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.1 + '@rolldown/binding-darwin-arm64': 1.0.1 + '@rolldown/binding-darwin-x64': 1.0.1 + '@rolldown/binding-freebsd-x64': 1.0.1 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.1 + '@rolldown/binding-linux-arm64-gnu': 1.0.1 + '@rolldown/binding-linux-arm64-musl': 1.0.1 + '@rolldown/binding-linux-ppc64-gnu': 1.0.1 + '@rolldown/binding-linux-s390x-gnu': 1.0.1 + '@rolldown/binding-linux-x64-gnu': 1.0.1 + '@rolldown/binding-linux-x64-musl': 1.0.1 + '@rolldown/binding-openharmony-arm64': 1.0.1 + '@rolldown/binding-wasm32-wasi': 1.0.1 + '@rolldown/binding-win32-arm64-msvc': 1.0.1 + '@rolldown/binding-win32-x64-msvc': 1.0.1 + rollup@4.30.1: dependencies: '@types/estree': 1.0.6 @@ -4267,10 +4033,6 @@ snapshots: semver@7.8.0: {} - serialize-error@7.0.1: - dependencies: - type-fest: 0.13.1 - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -4284,28 +4046,21 @@ snapshots: vscode-oniguruma: 1.7.0 vscode-textmate: 8.0.0 - signal-exit@3.0.7: {} + siginfo@2.0.0: {} signal-exit@4.1.0: {} slash@3.0.0: {} - slash@5.1.0: {} - - slice-ansi@5.0.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 + source-map-js@1.2.1: {} source-map@0.8.0-beta.0: dependencies: whatwg-url: 7.1.0 - sprintf-js@1.0.3: {} + stackback@0.0.2: {} - stack-utils@2.0.6: - dependencies: - escape-string-regexp: 2.0.0 + std-env@4.1.0: {} string-width@4.2.3: dependencies: @@ -4319,12 +4074,6 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string-width@7.2.0: - dependencies: - emoji-regex: 10.4.0 - get-east-asian-width: 1.3.0 - strip-ansi: 7.1.0 - strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -4333,8 +4082,6 @@ snapshots: dependencies: ansi-regex: 6.1.0 - strip-final-newline@3.0.0: {} - strip-json-comments@3.1.1: {} sucrase@3.35.0: @@ -4347,28 +4094,10 @@ snapshots: pirates: 4.0.6 ts-interface-checker: 0.1.13 - supertap@3.0.1: - dependencies: - indent-string: 5.0.0 - js-yaml: 3.14.1 - serialize-error: 7.0.1 - strip-ansi: 7.1.0 - supports-color@7.2.0: dependencies: has-flag: 4.0.0 - tar@7.4.3: - dependencies: - '@isaacs/fs-minipass': 4.0.1 - chownr: 3.0.0 - minipass: 7.1.2 - minizlib: 3.0.1 - mkdirp: 3.0.1 - yallist: 5.0.0 - - temp-dir@3.0.0: {} - thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -4377,10 +4106,12 @@ snapshots: dependencies: any-promise: 1.3.0 - time-zone@1.0.0: {} + tinybench@2.9.0: {} tinyexec@0.3.2: {} + tinyexec@1.1.2: {} + tinyglobby@0.2.10: dependencies: fdir: 6.4.2(picomatch@4.0.2) @@ -4391,12 +4122,12 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 + tinyrainbow@3.1.0: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - tr46@0.0.3: {} - tr46@1.0.1: dependencies: punycode: 2.3.1 @@ -4415,7 +4146,10 @@ snapshots: tslib@1.14.1: {} - tsup@8.3.5(typescript@5.9.3)(yaml@2.7.0): + tslib@2.8.1: + optional: true + + tsup@8.3.5(postcss@8.5.14)(typescript@5.9.3)(yaml@2.7.0): dependencies: bundle-require: 5.1.0(esbuild@0.24.2) cac: 6.7.14 @@ -4425,7 +4159,7 @@ snapshots: esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(yaml@2.7.0) + postcss-load-config: 6.0.1(postcss@8.5.14)(yaml@2.7.0) resolve-from: 5.0.0 rollup: 4.30.1 source-map: 0.8.0-beta.0 @@ -4434,6 +4168,7 @@ snapshots: tinyglobby: 0.2.10 tree-kill: 1.2.2 optionalDependencies: + postcss: 8.5.14 typescript: 5.9.3 transitivePeerDependencies: - jiti @@ -4450,8 +4185,6 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-fest@0.13.1: {} - typedoc@0.25.13(typescript@5.9.3): dependencies: lunr: 2.3.9 @@ -4477,27 +4210,56 @@ snapshots: undici-types@8.3.0: {} - unicorn-magic@0.1.0: {} - uri-js@4.4.1: dependencies: punycode: 2.3.1 + vite@8.0.13(@types/node@24.3.0)(esbuild@0.24.2)(yaml@2.7.0): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.14 + rolldown: 1.0.1 + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 24.3.0 + esbuild: 0.24.2 + fsevents: 2.3.3 + yaml: 2.7.0 + + vitest@4.1.6(@types/node@24.3.0)(vite@8.0.13(@types/node@24.3.0)(esbuild@0.24.2)(yaml@2.7.0)): + dependencies: + '@vitest/expect': 4.1.6 + '@vitest/mocker': 4.1.6(vite@8.0.13(@types/node@24.3.0)(esbuild@0.24.2)(yaml@2.7.0)) + '@vitest/pretty-format': 4.1.6 + '@vitest/runner': 4.1.6 + '@vitest/snapshot': 4.1.6 + '@vitest/spy': 4.1.6 + '@vitest/utils': 4.1.6 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.1.2 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 8.0.13(@types/node@24.3.0)(esbuild@0.24.2)(yaml@2.7.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.3.0 + transitivePeerDependencies: + - msw + vscode-oniguruma@1.7.0: {} vscode-textmate@8.0.0: {} - webidl-conversions@3.0.1: {} - webidl-conversions@4.0.2: {} - well-known-symbols@2.0.0: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - whatwg-url@7.1.0: dependencies: lodash.sortby: 4.7.0 @@ -4508,6 +4270,11 @@ snapshots: dependencies: isexe: 2.0.0 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + word-wrap@1.2.5: {} wrap-ansi@7.0.0: @@ -4522,31 +4289,8 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 - wrappy@1.0.2: {} - - write-file-atomic@6.0.0: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 4.1.0 - ws@8.19.0: {} - y18n@5.0.8: {} - - yallist@5.0.0: {} - yaml@2.7.0: {} - 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/clients/js/test/allocate.test.ts b/clients/js/test/allocate.test.ts index 36bbbfd..0ca65d9 100644 --- a/clients/js/test/allocate.test.ts +++ b/clients/js/test/allocate.test.ts @@ -1,9 +1,9 @@ import { address, generateKeyPairSigner, none, some } from '@solana/kit'; -import test from 'ava'; +import { expect, it } from 'vitest'; import { ACCOUNT_HEADER_LENGTH, AccountDiscriminator, Buffer, findCanonicalPda, findNonCanonicalPda } from '../src'; import { createDeployedProgram, createTestClient, generateKeyPairSignerWithSol } from './_setup'; -test('it allocates a canonical PDA buffer', async t => { +it('allocates a canonical PDA buffer', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -25,7 +25,7 @@ test('it allocates a canonical PDA buffer', async t => { // Then we expect the following buffer account to be created. const bufferAccount = await client.programMetadata.accounts.buffer.fetch(buffer); - t.like(bufferAccount.data, { + expect(bufferAccount.data).toMatchObject({ discriminator: AccountDiscriminator.Buffer, program: some(program), authority: some(authority.address), @@ -35,7 +35,7 @@ test('it allocates a canonical PDA buffer', async t => { }); }); -test('it allocates a non-canonical PDA buffer', async t => { +it('allocates a non-canonical PDA buffer', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -57,7 +57,7 @@ test('it allocates a non-canonical PDA buffer', async t => { // Then we expect the following buffer account to be created. const bufferAccount = await client.programMetadata.accounts.buffer.fetch(buffer); - t.like(bufferAccount.data, { + expect(bufferAccount.data).toMatchObject({ discriminator: AccountDiscriminator.Buffer, program: some(program), authority: some(authority.address), @@ -67,7 +67,7 @@ test('it allocates a non-canonical PDA buffer', async t => { }); }); -test('it allocates a keypair buffer', async t => { +it('allocates a keypair buffer', async () => { // Given the following payer and buffer keypairs. const client = await createTestClient(); const [payer, buffer] = await Promise.all([generateKeyPairSignerWithSol(client), generateKeyPairSigner()]); @@ -84,7 +84,7 @@ test('it allocates a keypair buffer', async t => { // Then we expect the following buffer account to be created. const bufferAccount = await client.programMetadata.accounts.buffer.fetch(buffer.address); - t.like(bufferAccount.data, { + expect(bufferAccount.data).toMatchObject({ discriminator: AccountDiscriminator.Buffer, program: none(), authority: some(buffer.address), diff --git a/clients/js/test/close.test.ts b/clients/js/test/close.test.ts index b590542..6b10743 100644 --- a/clients/js/test/close.test.ts +++ b/clients/js/test/close.test.ts @@ -5,11 +5,11 @@ import { isSolanaError, SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY, } from '@solana/kit'; -import test from 'ava'; +import { expect, it, test } from 'vitest'; import { Compression, DataSource, Encoding, findCanonicalPda, findNonCanonicalPda, Format } from '../src'; import { createDeployedProgram, createTestClient, generateKeyPairSignerWithSol } from './_setup'; -test('it can close canonical metadata accounts', async t => { +it('can close canonical metadata accounts', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -36,10 +36,10 @@ test('it can close canonical metadata accounts', async t => { // Then we expect the metadata account to no longer exist. const account = await client.programMetadata.accounts.metadata.fetchMaybe(metadata); - t.false(account.exists); + expect(account.exists).toBe(false); }); -test('the set authority of a canonical metadata can close the account', async t => { +test('the set authority of a canonical metadata can close the account', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const [authority, explicitAuthority] = await Promise.all([ @@ -81,10 +81,10 @@ test('the set authority of a canonical metadata can close the account', async t // Then we expect the metadata account to no longer exist. const account = await client.programMetadata.accounts.metadata.fetchMaybe(metadata); - t.false(account.exists); + expect(account.exists).toBe(false); }); -test('the current upgrade authority of program can close its canonical metadata account even when an authority is set on the account', async t => { +test('the current upgrade authority of program can close its canonical metadata account even when an authority is set on the account', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const [authority, explicitAuthority] = await Promise.all([ @@ -128,10 +128,10 @@ test('the current upgrade authority of program can close its canonical metadata // Then we expect the metadata account to no longer exist. const account = await client.programMetadata.accounts.metadata.fetchMaybe(metadata); - t.false(account.exists); + expect(account.exists).toBe(false); }); -test('it can close non-canonical metadata accounts', async t => { +it('can close non-canonical metadata accounts', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -157,10 +157,10 @@ test('it can close non-canonical metadata accounts', async t => { // Then we expect the metadata account to no longer exist. const account = await client.programMetadata.accounts.metadata.fetchMaybe(metadata); - t.false(account.exists); + expect(account.exists).toBe(false); }); -test('it can close canonical buffers', async t => { +it('can close canonical buffers', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -185,10 +185,10 @@ test('it can close canonical buffers', async t => { // Then we expect the buffer account to no longer exist. const account = await client.programMetadata.accounts.buffer.fetchMaybe(buffer); - t.false(account.exists); + expect(account.exists).toBe(false); }); -test('it can close non-canonical buffers', async t => { +it('can close non-canonical buffers', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -212,10 +212,10 @@ test('it can close non-canonical buffers', async t => { // Then we expect the buffer account to no longer exist. const account = await client.programMetadata.accounts.buffer.fetchMaybe(buffer); - t.false(account.exists); + expect(account.exists).toBe(false); }); -test('it can close keypair buffers', async t => { +it('can close keypair buffers', async () => { // Given the following payer. const client = await createTestClient(); const payer = await generateKeyPairSignerWithSol(client); @@ -233,10 +233,10 @@ test('it can close keypair buffers', async t => { // Then we expect the buffer account to no longer exist. const account = await client.programMetadata.accounts.buffer.fetchMaybe(buffer.address); - t.false(account.exists); + expect(account.exists).toBe(false); }); -test('it cannot close a keypair buffer with a different authority set using the buffer keypair', async t => { +it('cannot close a keypair buffer with a different authority set using the buffer keypair', async () => { // Given the following payer. const client = await createTestClient(); const payer = await generateKeyPairSignerWithSol(client); @@ -259,12 +259,13 @@ test('it cannot close a keypair buffer with a different authority set using the .sendTransaction(); // Then we expect a program error. - const error = await t.throwsAsync(promise); - t.true(isSolanaError(error)); - t.true(isSolanaError(error.cause, SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY)); + const error = await promise.catch((e: unknown) => e); + expect(isSolanaError(error)).toBe(true); + if (!isSolanaError(error)) return; + expect(isSolanaError(error.cause, SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY)).toBe(true); }); -test('it can close a keypair buffer with its authority', async t => { +it('can close a keypair buffer with its authority', async () => { // Given the following payer. const client = await createTestClient(); const payer = await generateKeyPairSignerWithSol(client); @@ -288,5 +289,5 @@ test('it can close a keypair buffer with its authority', async t => { // Then we expect the buffer account to no longer exist. const account = await client.programMetadata.accounts.buffer.fetchMaybe(buffer.address); - t.false(account.exists); + expect(account.exists).toBe(false); }); diff --git a/clients/js/test/createMetadata.test.ts b/clients/js/test/createMetadata.test.ts index dca9a08..31db6ff 100644 --- a/clients/js/test/createMetadata.test.ts +++ b/clients/js/test/createMetadata.test.ts @@ -1,5 +1,5 @@ import { address, generateKeyPairSigner, getUtf8Encoder, none, some } from '@solana/kit'; -import test from 'ava'; +import { expect, it } from 'vitest'; import { AccountDiscriminator, Compression, @@ -12,7 +12,7 @@ import { } from '../src'; import { createDeployedProgram, createTestClient, generateKeyPairSignerWithSol } from './_setup'; -test('it creates a canonical metadata account', async t => { +it('creates a canonical metadata account', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -35,7 +35,7 @@ test('it creates a canonical metadata account', async t => { // Then we expect the following metadata account to be created. const [metadata] = await findCanonicalPda({ program, seed: 'idl' }); const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: none(), @@ -51,7 +51,7 @@ test('it creates a canonical metadata account', async t => { }); }); -test('it creates a canonical metadata account with data larger than a transaction size', async t => { +it('creates a canonical metadata account with data larger than a transaction size', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -74,7 +74,7 @@ test('it creates a canonical metadata account with data larger than a transactio // Then we expect the following metadata account to be created. const [metadata] = await findCanonicalPda({ program, seed: 'idl' }); const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: none(), @@ -90,7 +90,7 @@ test('it creates a canonical metadata account with data larger than a transactio }); }); -test('it creates a canonical metadata account using an existing buffer', async t => { +it('creates a canonical metadata account using an existing buffer', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -119,7 +119,7 @@ test('it creates a canonical metadata account using an existing buffer', async t // Then we expect the following metadata account to be created. const [metadata] = await findCanonicalPda({ program, seed: 'idl' }); const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: none(), @@ -135,7 +135,7 @@ test('it creates a canonical metadata account using an existing buffer', async t }); }); -test('it creates a non-canonical metadata account', async t => { +it('creates a non-canonical metadata account', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -157,7 +157,7 @@ test('it creates a non-canonical metadata account', async t => { // Then we expect the following metadata account to be created. const [metadata] = await findNonCanonicalPda({ program, authority: authority.address, seed: 'idl' }); const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: some(authority.address), @@ -173,7 +173,7 @@ test('it creates a non-canonical metadata account', async t => { }); }); -test('it creates a non-canonical metadata account with data larger than a transaction size', async t => { +it('creates a non-canonical metadata account with data larger than a transaction size', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -195,7 +195,7 @@ test('it creates a non-canonical metadata account with data larger than a transa // Then we expect the following metadata account to be created. const [metadata] = await findNonCanonicalPda({ program, authority: authority.address, seed: 'idl' }); const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: some(authority.address), @@ -211,7 +211,7 @@ test('it creates a non-canonical metadata account with data larger than a transa }); }); -test('it creates a non-canonical metadata account using an existing buffer', async t => { +it('creates a non-canonical metadata account using an existing buffer', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -239,7 +239,7 @@ test('it creates a non-canonical metadata account using an existing buffer', asy // Then we expect the following metadata account to be created. const [metadata] = await findNonCanonicalPda({ program, authority: authority.address, seed: 'idl' }); const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: some(authority.address), @@ -255,7 +255,7 @@ test('it creates a non-canonical metadata account using an existing buffer', asy }); }); -test('it cannot create a metadata account if no data or buffer is provided', async t => { +it('cannot create a metadata account if no data or buffer is provided', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -273,12 +273,12 @@ test('it cannot create a metadata account if no data or buffer is provided', asy }); // Then we expect the following error to be thrown. - await t.throwsAsync(promise, { - message: 'Either `buffer` or `data` must be provided to create a new metadata account.', - }); + await expect(promise).rejects.toThrow( + 'Either `buffer` or `data` must be provided to create a new metadata account.', + ); }); -test('it can close an existing buffer after using it to create a new metadata account', async t => { +it('can close an existing buffer after using it to create a new metadata account', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -306,5 +306,5 @@ test('it can close an existing buffer after using it to create a new metadata ac // Then we expect the buffer account to no longer exist. const bufferAccount = await client.programMetadata.accounts.buffer.fetchMaybe(buffer.address); - t.false(bufferAccount.exists); + expect(bufferAccount.exists).toBe(false); }); diff --git a/clients/js/test/extend.test.ts b/clients/js/test/extend.test.ts index 4fd6292..19b87de 100644 --- a/clients/js/test/extend.test.ts +++ b/clients/js/test/extend.test.ts @@ -1,5 +1,5 @@ import { address, assertAccountExists, fetchEncodedAccount, generateKeyPairSigner, getUtf8Encoder } from '@solana/kit'; -import test from 'ava'; +import { expect, test } from 'vitest'; import { ACCOUNT_HEADER_LENGTH, Compression, @@ -11,7 +11,7 @@ import { } from '../src'; import { createDeployedProgram, createTestClient, generateKeyPairSignerWithSol } from './_setup'; -test('the program authority of a canonical metadata account can extend it', async t => { +test('the program authority of a canonical metadata account can extend it', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -52,10 +52,10 @@ test('the program authority of a canonical metadata account can extend it', asyn // Then we expect the metadata account to be extended. const metadataAccount = await fetchEncodedAccount(client.rpc, metadata); assertAccountExists(metadataAccount); - t.is(metadataAccount.data.length, ACCOUNT_HEADER_LENGTH + 300); + expect(metadataAccount.data.length).toBe(ACCOUNT_HEADER_LENGTH + 300); }); -test('the explicit authority of a canonical metadata account can extend it', async t => { +test('the explicit authority of a canonical metadata account can extend it', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const [programAuthority, authority] = await Promise.all([ @@ -106,10 +106,10 @@ test('the explicit authority of a canonical metadata account can extend it', asy // Then we expect the metadata account to be extended. const metadataAccount = await fetchEncodedAccount(client.rpc, metadata); assertAccountExists(metadataAccount); - t.is(metadataAccount.data.length, ACCOUNT_HEADER_LENGTH + 300); + expect(metadataAccount.data.length).toBe(ACCOUNT_HEADER_LENGTH + 300); }); -test('the metadata authority of a non-canonical metadata account can extend it', async t => { +test('the metadata authority of a non-canonical metadata account can extend it', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -147,5 +147,5 @@ test('the metadata authority of a non-canonical metadata account can extend it', // Then we expect the metadata account to be extended. const metadataAccount = await fetchEncodedAccount(client.rpc, metadata); assertAccountExists(metadataAccount); - t.is(metadataAccount.data.length, ACCOUNT_HEADER_LENGTH + 300); + expect(metadataAccount.data.length).toBe(ACCOUNT_HEADER_LENGTH + 300); }); diff --git a/clients/js/test/fetchMetadataContent.test.ts b/clients/js/test/fetchMetadataContent.test.ts index 86bc59f..344e586 100644 --- a/clients/js/test/fetchMetadataContent.test.ts +++ b/clients/js/test/fetchMetadataContent.test.ts @@ -1,5 +1,5 @@ import { address, generateKeyPairSigner, getUtf8Encoder } from '@solana/kit'; -import test from 'ava'; +import { expect, it } from 'vitest'; import { Compression, Encoding, @@ -11,7 +11,7 @@ import { } from '../src'; import { createDeployedProgram, createTestClient, generateKeyPairSignerWithSol } from './_setup'; -test('it fetches and parses direct IDLs from canonical metadata accounts', async t => { +it('fetches and parses direct IDLs from canonical metadata accounts', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -32,14 +32,14 @@ test('it fetches and parses direct IDLs from canonical metadata accounts', async const result = await fetchAndParseMetadataContent(client.rpc, program, 'idl'); // Then we expect the following IDL to be fetched and parsed. - t.deepEqual(result, { + expect(result).toEqual({ kind: 'rootNode', standard: 'codama', version: '1.0.0', }); }); -test('it fetches and parses direct IDLs from non-canonical metadata accounts', async t => { +it('fetches and parses direct IDLs from non-canonical metadata accounts', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -59,15 +59,14 @@ test('it fetches and parses direct IDLs from non-canonical metadata accounts', a const result = await fetchAndParseMetadataContent(client.rpc, program, 'idl', authority.address); // Then we expect the following IDL to be fetched and parsed. - t.deepEqual(result, { + expect(result).toEqual({ kind: 'rootNode', standard: 'codama', version: '1.0.0', }); }); -test('it fetches and parses multiple direct IDLs from metadata accounts', async t => { - t.timeout(30_000); +it('fetches and parses multiple direct IDLs from metadata accounts', async () => { // Given the following deployed program. const client = await createTestClient(); const program = address('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'); @@ -124,7 +123,7 @@ test('it fetches and parses multiple direct IDLs from metadata accounts', async ]); // Then we expect the following IDLs to be fetched and parsed. - t.deepEqual(result, [ + expect(result).toEqual([ { kind: 'rootNode', standard: 'codama', @@ -136,4 +135,4 @@ test('it fetches and parses multiple direct IDLs from metadata accounts', async version: '1.0.1', }, ]); -}); +}, 30_000); diff --git a/clients/js/test/initialize.test.ts b/clients/js/test/initialize.test.ts index fe493ab..00f4a33 100644 --- a/clients/js/test/initialize.test.ts +++ b/clients/js/test/initialize.test.ts @@ -1,5 +1,5 @@ import { address, getUtf8Encoder, none, some } from '@solana/kit'; -import test from 'ava'; +import { expect, it } from 'vitest'; import { ACCOUNT_HEADER_LENGTH, AccountDiscriminator, @@ -14,7 +14,7 @@ import { } from '../src'; import { createDeployedProgram, createTestClient, generateKeyPairSignerWithSol } from './_setup'; -test('it initializes a non canonical PDA with direct data from instruction data', async t => { +it('initializes a non canonical PDA with direct data from instruction data', async () => { // Given the following authority and program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -46,7 +46,7 @@ test('it initializes a non canonical PDA with direct data from instruction data' // Then we expect the following metadata account to be created. const metadataAccount = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(metadataAccount.data, { + expect(metadataAccount.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: some(authority.address), @@ -62,7 +62,7 @@ test('it initializes a non canonical PDA with direct data from instruction data' }); }); -test('it initializes a non canonical PDA with url data from instruction data', async t => { +it('initializes a non canonical PDA with url data from instruction data', async () => { // Given the following authority and program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -94,7 +94,7 @@ test('it initializes a non canonical PDA with url data from instruction data', a // Then we expect a URL metadata account to be created. const metadataAccount = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(metadataAccount.data, { + expect(metadataAccount.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: some(authority.address), @@ -110,7 +110,7 @@ test('it initializes a non canonical PDA with url data from instruction data', a }); }); -test('it initializes a non canonical PDA with external data from instruction data', async t => { +it('initializes a non canonical PDA with external data from instruction data', async () => { // Given the following authority and program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -147,7 +147,7 @@ test('it initializes a non canonical PDA with external data from instruction dat // Then we expect an external metadata account to be created. const metadataAccount = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(metadataAccount.data, { + expect(metadataAccount.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: some(authority.address), @@ -163,7 +163,7 @@ test('it initializes a non canonical PDA with external data from instruction dat }); }); -test('it initializes a canonical PDA from instruction data', async t => { +it('initializes a canonical PDA from instruction data', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -196,7 +196,7 @@ test('it initializes a canonical PDA from instruction data', async t => { // Then we expect the following metadata account to be created. const metadataAccount = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(metadataAccount.data, { + expect(metadataAccount.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: none(), @@ -212,7 +212,7 @@ test('it initializes a canonical PDA from instruction data', async t => { }); }); -test('it initializes a canonical PDA from a pre-allocated buffer', async t => { +it('initializes a canonical PDA from a pre-allocated buffer', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -243,7 +243,7 @@ test('it initializes a canonical PDA from a pre-allocated buffer', async t => { // Then we expect the buffer account to now be a metadata account. const metadataAccount = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(metadataAccount.data, { + expect(metadataAccount.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: none(), @@ -259,7 +259,7 @@ test('it initializes a canonical PDA from a pre-allocated buffer', async t => { }); }); -test('it initializes a non-canonical PDA from a pre-allocated buffer', async t => { +it('initializes a non-canonical PDA from a pre-allocated buffer', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -289,7 +289,7 @@ test('it initializes a non-canonical PDA from a pre-allocated buffer', async t = // Then we expect the buffer account to now be a metadata account. const metadataAccount = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(metadataAccount.data, { + expect(metadataAccount.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: some(authority.address), diff --git a/clients/js/test/setAuthority.test.ts b/clients/js/test/setAuthority.test.ts index 24f9c5d..d7edb13 100644 --- a/clients/js/test/setAuthority.test.ts +++ b/clients/js/test/setAuthority.test.ts @@ -9,7 +9,7 @@ import { SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT, some, } from '@solana/kit'; -import test from 'ava'; +import { expect, test } from 'vitest'; import { ACCOUNT_HEADER_LENGTH, Compression, @@ -23,7 +23,7 @@ import { } from '../src'; import { createDeployedProgram, createTestClient, generateKeyPairSignerWithSol } from './_setup'; -test('the program authority can set another authority on canonical metadata accounts', async t => { +test('the program authority can set another authority on canonical metadata accounts', async () => { // Given the following authorities and deployed program. const client = await createTestClient(); const [authority, newAuthority] = await Promise.all([ @@ -53,10 +53,10 @@ test('the program authority can set another authority on canonical metadata acco // Then we expect the metadata account to record the new authority. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.deepEqual(account.data.authority, some(newAuthority.address)); + expect(account.data.authority).toEqual(some(newAuthority.address)); }); -test('the program authority can update an existing authority on canonical metadata accounts', async t => { +test('the program authority can update an existing authority on canonical metadata accounts', async () => { // Given the following authorities and deployed program. const client = await createTestClient(); const [authority, explicitAuthorityA, explicitAuthorityB] = await Promise.all([ @@ -101,10 +101,10 @@ test('the program authority can update an existing authority on canonical metada // Then we expect the metadata account to record the latest explicit authority. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.deepEqual(account.data.authority, some(explicitAuthorityB.address)); + expect(account.data.authority).toEqual(some(explicitAuthorityB.address)); }); -test('the program authority can remove an existing authority on canonical metadata accounts', async t => { +test('the program authority can remove an existing authority on canonical metadata accounts', async () => { // Given the following authorities and deployed program. const client = await createTestClient(); const [authority, explicitAuthority] = await Promise.all([ @@ -148,10 +148,10 @@ test('the program authority can remove an existing authority on canonical metada // Then we expect the metadata account to have no explicit authority. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.deepEqual(account.data.authority, none()); + expect(account.data.authority).toEqual(none()); }); -test('an explicitly set authority can update itself on canonical metadata accounts', async t => { +test('an explicitly set authority can update itself on canonical metadata accounts', async () => { // Given the following authorities and deployed program. const client = await createTestClient(); const [authority, explicitAuthorityA, explicitAuthorityB] = await Promise.all([ @@ -196,10 +196,10 @@ test('an explicitly set authority can update itself on canonical metadata accoun // Then we expect the metadata account to record the latest explicit authority. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.deepEqual(account.data.authority, some(explicitAuthorityB.address)); + expect(account.data.authority).toEqual(some(explicitAuthorityB.address)); }); -test('an explicitly set authority can remove itself on canonical metadata accounts', async t => { +test('an explicitly set authority can remove itself on canonical metadata accounts', async () => { // Given the following authorities and deployed program. const client = await createTestClient(); const [authority, explicitAuthority] = await Promise.all([ @@ -243,10 +243,10 @@ test('an explicitly set authority can remove itself on canonical metadata accoun // Then we expect the metadata account to have no explicit authority. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.deepEqual(account.data.authority, none()); + expect(account.data.authority).toEqual(none()); }); -test('the authority of a non-canonical metadata account cannot set another authority on the account', async t => { +test('the authority of a non-canonical metadata account cannot set another authority on the account', async () => { // Given the following authorities and deployed program. const client = await createTestClient(); const [authority, newAuthority] = await Promise.all([ @@ -274,11 +274,13 @@ test('the authority of a non-canonical metadata account cannot set another autho .sendTransaction(); // Then we expect the transaction to fail. - const error = await t.throwsAsync(promise); - t.true(isSolanaError(error.cause, SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA)); + const error = await promise.catch((e: unknown) => e); + expect(isSolanaError(error)).toBe(true); + if (!isSolanaError(error)) return; + expect(isSolanaError(error.cause, SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA)).toBe(true); }); -test('the authority of a non-canonical metadata account cannot remove itself on the account', async t => { +test('the authority of a non-canonical metadata account cannot remove itself on the account', async () => { // Given the following authorities and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -303,11 +305,13 @@ test('the authority of a non-canonical metadata account cannot remove itself on .sendTransaction(); // Then we expect the transaction to fail. - const error = await t.throwsAsync(promise); - t.true(isSolanaError(error.cause, SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA)); + const error = await promise.catch((e: unknown) => e); + expect(isSolanaError(error)).toBe(true); + if (!isSolanaError(error)) return; + expect(isSolanaError(error.cause, SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA)).toBe(true); }); -test('the authority can update itself on buffer accounts', async t => { +test('the authority can update itself on buffer accounts', async () => { // Given the following buffer and authorities. const client = await createTestClient(); const [payer, buffer, newAuthority] = await Promise.all([ @@ -337,10 +341,10 @@ test('the authority can update itself on buffer accounts', async t => { // Then we expect the buffer account to record the new authority. const account = await client.programMetadata.accounts.buffer.fetch(buffer.address); - t.deepEqual(account.data.authority, some(newAuthority.address)); + expect(account.data.authority).toEqual(some(newAuthority.address)); }); -test('the authority cannot remove itself on buffer accounts', async t => { +test('the authority cannot remove itself on buffer accounts', async () => { // Given the following buffer and authorities. const client = await createTestClient(); const [payer, buffer] = await Promise.all([generateKeyPairSignerWithSol(client), generateKeyPairSigner()]); @@ -365,11 +369,13 @@ test('the authority cannot remove itself on buffer accounts', async t => { ]); // Then we expect the transaction to fail. - const error = await t.throwsAsync(promise); - t.true(isSolanaError(error.cause, SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT)); + const error = await promise.catch((e: unknown) => e); + expect(isSolanaError(error)).toBe(true); + if (!isSolanaError(error)) return; + expect(isSolanaError(error.cause, SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT)).toBe(true); }); -test('the authority cannot be changed on immutable metadata accounts', async t => { +test('the authority cannot be changed on immutable metadata accounts', async () => { // Given the following authorities and deployed program. const client = await createTestClient(); const [authority, explicitAuthority, anotherAuthority] = await Promise.all([ @@ -420,11 +426,11 @@ test('the authority cannot be changed on immutable metadata accounts', async t = ]); // Then we expect the transaction to fail with the IMMUTABLE_METADATA_ACCOUNT program error. - const error = await t.throwsAsync(promise); - t.true(isSolanaError(error, SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION)); + const error = await promise.catch((e: unknown) => e); + expect(isSolanaError(error, SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION)).toBe(true); if (!isSolanaError(error, SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION)) return; const result = error.context.transactionPlanResult as SingleTransactionPlanResult; - t.true( + expect( isProgramMetadataError(error.cause, result.plannedMessage, PROGRAM_METADATA_ERROR__IMMUTABLE_METADATA_ACCOUNT), - ); + ).toBe(true); }); diff --git a/clients/js/test/setData.test.ts b/clients/js/test/setData.test.ts index 9d1725f..f6902d3 100644 --- a/clients/js/test/setData.test.ts +++ b/clients/js/test/setData.test.ts @@ -7,7 +7,7 @@ import { SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION, SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC, } from '@solana/kit'; -import test from 'ava'; +import { expect, test } from 'vitest'; import { Compression, DataSource, @@ -21,7 +21,7 @@ import { } from '../src'; import { createDeployedProgram, createTestClient, generateKeyPairSignerWithSol, REALLOC_LIMIT } from './_setup'; -test('the program authority of a canonical metadata account can update its data using instruction data', async t => { +test('the program authority of a canonical metadata account can update its data using instruction data', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -66,7 +66,7 @@ test('the program authority of a canonical metadata account can update its data // Then we expect the metadata account have the new data. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ encoding: Encoding.Utf8, compression: Compression.Gzip, format: Format.Json, @@ -75,7 +75,7 @@ test('the program authority of a canonical metadata account can update its data }); }); -test('the explicit authority of a canonical metadata account can update its data using instruction data', async t => { +test('the explicit authority of a canonical metadata account can update its data using instruction data', async () => { // Given the following authorities and deployed program. const client = await createTestClient(); const [authority, explicitAuthority] = await Promise.all([ @@ -131,7 +131,7 @@ test('the explicit authority of a canonical metadata account can update its data // Then we expect the metadata account have the new data. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ encoding: Encoding.Utf8, compression: Compression.Gzip, format: Format.Json, @@ -140,7 +140,7 @@ test('the explicit authority of a canonical metadata account can update its data }); }); -test('the authority of a non-canonical metadata account can update its data using instruction data', async t => { +test('the authority of a non-canonical metadata account can update its data using instruction data', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -183,7 +183,7 @@ test('the authority of a non-canonical metadata account can update its data usin // Then we expect the metadata account have the new data. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ encoding: Encoding.Utf8, compression: Compression.Gzip, format: Format.Json, @@ -192,7 +192,7 @@ test('the authority of a non-canonical metadata account can update its data usin }); }); -test('the program authority of a canonical metadata account can update its data using a pre-allocated buffer', async t => { +test('the program authority of a canonical metadata account can update its data using a pre-allocated buffer', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -243,7 +243,7 @@ test('the program authority of a canonical metadata account can update its data // Then we expect the metadata account have the new data. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ encoding: Encoding.Utf8, compression: Compression.Gzip, format: Format.Json, @@ -252,7 +252,7 @@ test('the program authority of a canonical metadata account can update its data }); }); -test('the explicit authority of a canonical metadata account can update its data using a pre-allocated buffer', async t => { +test('the explicit authority of a canonical metadata account can update its data using a pre-allocated buffer', async () => { // Given the following authorities and deployed program. const client = await createTestClient(); const [authority, explicitAuthority] = await Promise.all([ @@ -314,7 +314,7 @@ test('the explicit authority of a canonical metadata account can update its data // Then we expect the metadata account have the new data. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ encoding: Encoding.Utf8, compression: Compression.Gzip, format: Format.Json, @@ -323,7 +323,7 @@ test('the explicit authority of a canonical metadata account can update its data }); }); -test('the authority of a non-canonical metadata account can update its data using a pre-allocated buffer', async t => { +test('the authority of a non-canonical metadata account can update its data using a pre-allocated buffer', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -372,7 +372,7 @@ test('the authority of a non-canonical metadata account can update its data usin // Then we expect the metadata account have the new data. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ encoding: Encoding.Utf8, compression: Compression.Gzip, format: Format.Json, @@ -381,7 +381,7 @@ test('the authority of a non-canonical metadata account can update its data usin }); }); -test('an immutable canonical metadata account cannot be updated', async t => { +test('an immutable canonical metadata account cannot be updated', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -424,16 +424,16 @@ test('an immutable canonical metadata account cannot be updated', async t => { ]); // Then we expect the transaction to fail with the IMMUTABLE_METADATA_ACCOUNT program error. - const error = await t.throwsAsync(promise); - t.true(isSolanaError(error, SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION)); + const error = await promise.catch((e: unknown) => e); + expect(isSolanaError(error, SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION)).toBe(true); if (!isSolanaError(error, SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION)) return; const result = error.context.transactionPlanResult as SingleTransactionPlanResult; - t.true( + expect( isProgramMetadataError(error.cause, result.plannedMessage, PROGRAM_METADATA_ERROR__IMMUTABLE_METADATA_ACCOUNT), - ); + ).toBe(true); }); -test('an immutable non-canonical metadata account cannot be updated', async t => { +test('an immutable non-canonical metadata account cannot be updated', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -473,16 +473,16 @@ test('an immutable non-canonical metadata account cannot be updated', async t => ]); // Then we expect the transaction to fail with the IMMUTABLE_METADATA_ACCOUNT program error. - const error = await t.throwsAsync(promise); - t.true(isSolanaError(error, SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION)); + const error = await promise.catch((e: unknown) => e); + expect(isSolanaError(error, SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION)).toBe(true); if (!isSolanaError(error, SOLANA_ERROR__FAILED_TO_SEND_TRANSACTION)) return; const result = error.context.transactionPlanResult as SingleTransactionPlanResult; - t.true( + expect( isProgramMetadataError(error.cause, result.plannedMessage, PROGRAM_METADATA_ERROR__IMMUTABLE_METADATA_ACCOUNT), - ); + ).toBe(true); }); -test('The metadata account needs to be extended for data changes that add more than 1KB', async t => { +test('The metadata account needs to be extended for data changes that add more than 1KB', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -536,16 +536,17 @@ test('The metadata account needs to be extended for data changes that add more t const promise = client.sendTransaction([transferIx, setDataIx]); // Then we expect a program error. - const error = await t.throwsAsync(promise); - t.true(isSolanaError(error)); - t.true(isSolanaError(error.cause, SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC)); + const error = await promise.catch((e: unknown) => e); + expect(isSolanaError(error)).toBe(true); + if (!isSolanaError(error)) return; + expect(isSolanaError(error.cause, SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC)).toBe(true); // But when we extend the account and try again. await client.sendTransaction([transferIx, extendIx, setDataIx]); // Then we expect the metadata account have the new data. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ encoding: Encoding.Utf8, compression: Compression.Gzip, format: Format.Json, diff --git a/clients/js/test/setImmutable.test.ts b/clients/js/test/setImmutable.test.ts index 14ad048..dd7faf9 100644 --- a/clients/js/test/setImmutable.test.ts +++ b/clients/js/test/setImmutable.test.ts @@ -1,9 +1,9 @@ import { address, generateKeyPairSigner, getUtf8Encoder } from '@solana/kit'; -import test from 'ava'; +import { expect, test } from 'vitest'; import { Compression, DataSource, Encoding, findCanonicalPda, findNonCanonicalPda, Format } from '../src'; import { createDeployedProgram, createTestClient, generateKeyPairSignerWithSol } from './_setup'; -test('the program authority can of a canonical metadata account can make it immutable', async t => { +test('the program authority can of a canonical metadata account can make it immutable', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -30,10 +30,10 @@ test('the program authority can of a canonical metadata account can make it immu // Then we expect the metadata account to be immutable. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.deepEqual(account.data.mutable, false); + expect(account.data.mutable).toEqual(false); }); -test('the explicit authority of a canonical metadata account can make it immutable', async t => { +test('the explicit authority of a canonical metadata account can make it immutable', async () => { // Given the following authorities and deployed program. const client = await createTestClient(); const [authority, explicitAuthority] = await Promise.all([ @@ -76,10 +76,10 @@ test('the explicit authority of a canonical metadata account can make it immutab // Then we expect the metadata account to be immutable. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.deepEqual(account.data.mutable, false); + expect(account.data.mutable).toEqual(false); }); -test('the authority of a non-canonical metadata account can make it immutable', async t => { +test('the authority of a non-canonical metadata account can make it immutable', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -103,5 +103,5 @@ test('the authority of a non-canonical metadata account can make it immutable', // Then we expect the metadata account to be immutable. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.deepEqual(account.data.mutable, false); + expect(account.data.mutable).toEqual(false); }); diff --git a/clients/js/test/trim.test.ts b/clients/js/test/trim.test.ts index ac729b9..a1dcc99 100644 --- a/clients/js/test/trim.test.ts +++ b/clients/js/test/trim.test.ts @@ -1,5 +1,5 @@ import { address, generateKeyPairSigner, getUtf8Encoder, lamports } from '@solana/kit'; -import test from 'ava'; +import { expect, test } from 'vitest'; import { AccountDiscriminator, Compression, @@ -12,7 +12,7 @@ import { } from '../src'; import { createDeployedProgram, createTestClient, generateKeyPairSignerWithSol, getBalance } from './_setup'; -test('the program authority of a canonical metadata account can trim it', async t => { +test('the program authority of a canonical metadata account can trim it', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const rentForAccountHeader = await client.getMinimumBalance(0); @@ -62,7 +62,7 @@ test('the program authority of a canonical metadata account can trim it', async // Then we expect the metadata account to be trimmed. const metadataAccount = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(metadataAccount.data, { + expect(metadataAccount.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, data: reducedData, }); @@ -70,10 +70,10 @@ test('the program authority of a canonical metadata account can trim it', async // And we expect the destination account to have the rent difference. const rentDifference = await client.getMinimumBalance(100, { withoutHeader: true }); const destinationBalance = await getBalance(client, destination.address); - t.is(destinationBalance, lamports(rentForAccountHeader + rentDifference)); + expect(destinationBalance).toBe(lamports(rentForAccountHeader + rentDifference)); }); -test('the explicit authority of a canonical metadata account can trim it', async t => { +test('the explicit authority of a canonical metadata account can trim it', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const rentForAccountHeader = await client.getMinimumBalance(0); @@ -127,7 +127,7 @@ test('the explicit authority of a canonical metadata account can trim it', async // Then we expect the metadata account to be trimmed. const metadataAccount = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(metadataAccount.data, { + expect(metadataAccount.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, data: reducedData, }); @@ -135,10 +135,10 @@ test('the explicit authority of a canonical metadata account can trim it', async // And we expect the destination account to have the rent difference. const rentDifference = await client.getMinimumBalance(100, { withoutHeader: true }); const destinationBalance = await getBalance(client, destination.address); - t.is(destinationBalance, lamports(rentForAccountHeader + rentDifference)); + expect(destinationBalance).toBe(lamports(rentForAccountHeader + rentDifference)); }); -test('the metadata authority of a non-canonical metadata account can trim it', async t => { +test('the metadata authority of a non-canonical metadata account can trim it', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const rentForAccountHeader = await client.getMinimumBalance(0); @@ -183,7 +183,7 @@ test('the metadata authority of a non-canonical metadata account can trim it', a // Then we expect the metadata account to be trimmed. const metadataAccount = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(metadataAccount.data, { + expect(metadataAccount.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, data: reducedData, }); @@ -191,5 +191,5 @@ test('the metadata authority of a non-canonical metadata account can trim it', a // And we expect the destination account to have the rent difference. const rentDifference = await client.getMinimumBalance(100, { withoutHeader: true }); const destinationBalance = await getBalance(client, destination.address); - t.is(destinationBalance, lamports(rentForAccountHeader + rentDifference)); + expect(destinationBalance).toBe(lamports(rentForAccountHeader + rentDifference)); }); diff --git a/clients/js/test/updateMetadata.test.ts b/clients/js/test/updateMetadata.test.ts index 604c542..7ffeaa6 100644 --- a/clients/js/test/updateMetadata.test.ts +++ b/clients/js/test/updateMetadata.test.ts @@ -1,5 +1,5 @@ import { address, generateKeyPairSigner, getUtf8Encoder, none, some } from '@solana/kit'; -import test from 'ava'; +import { expect, it } from 'vitest'; import { AccountDiscriminator, Compression, @@ -12,7 +12,7 @@ import { } from '../src'; import { createDeployedProgram, createTestClient, generateKeyPairSignerWithSol } from './_setup'; -test('it updates a canonical metadata account', async t => { +it('updates a canonical metadata account', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -48,7 +48,7 @@ test('it updates a canonical metadata account', async t => { // Then we expect the metadata account to be updated. const [metadata] = await findCanonicalPda({ program, seed: 'idl' }); const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: none(), @@ -64,7 +64,7 @@ test('it updates a canonical metadata account', async t => { }); }); -test('it updates a canonical metadata account with data larger than a transaction size', async t => { +it('updates a canonical metadata account with data larger than a transaction size', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -100,7 +100,7 @@ test('it updates a canonical metadata account with data larger than a transactio // Then we expect the metadata account to be updated. const [metadata] = await findCanonicalPda({ program, seed: 'idl' }); const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: none(), @@ -116,7 +116,7 @@ test('it updates a canonical metadata account with data larger than a transactio }); }); -test('it updates a canonical metadata account using an existing buffer', async t => { +it('updates a canonical metadata account using an existing buffer', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -158,7 +158,7 @@ test('it updates a canonical metadata account using an existing buffer', async t // Then we expect the metadata account to be updated. const [metadata] = await findCanonicalPda({ program, seed: 'idl' }); const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: none(), @@ -174,7 +174,7 @@ test('it updates a canonical metadata account using an existing buffer', async t }); }); -test('it updates a non-canonical metadata account', async t => { +it('updates a non-canonical metadata account', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -208,7 +208,7 @@ test('it updates a non-canonical metadata account', async t => { // Then we expect the metadata account to be updated. const [metadata] = await findNonCanonicalPda({ program, authority: authority.address, seed: 'idl' }); const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: some(authority.address), @@ -224,7 +224,7 @@ test('it updates a non-canonical metadata account', async t => { }); }); -test('it updates a non-canonical metadata account with data larger than a transaction size', async t => { +it('updates a non-canonical metadata account with data larger than a transaction size', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -258,7 +258,7 @@ test('it updates a non-canonical metadata account with data larger than a transa // Then we expect the metadata account to be updated. const [metadata] = await findNonCanonicalPda({ program, authority: authority.address, seed: 'idl' }); const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: some(authority.address), @@ -274,7 +274,7 @@ test('it updates a non-canonical metadata account with data larger than a transa }); }); -test('it updates a non-canonical metadata account using an existing buffer', async t => { +it('updates a non-canonical metadata account using an existing buffer', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -314,7 +314,7 @@ test('it updates a non-canonical metadata account using an existing buffer', asy // Then we expect the metadata account to be updated. const [metadata] = await findNonCanonicalPda({ program, authority: authority.address, seed: 'idl' }); const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: some(authority.address), @@ -330,7 +330,7 @@ test('it updates a non-canonical metadata account using an existing buffer', asy }); }); -test('it cannot update a metadata account if no data or buffer is provided', async t => { +it('cannot update a metadata account if no data or buffer is provided', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -360,12 +360,10 @@ test('it cannot update a metadata account if no data or buffer is provided', asy }); // Then we expect the following error to be thrown. - await t.throwsAsync(promise, { - message: 'Either `buffer` or `data` must be provided to update a metadata account.', - }); + await expect(promise).rejects.toThrow('Either `buffer` or `data` must be provided to update a metadata account.'); }); -test('it can close a new buffer after using it to update a new metadata account', async t => { +it('can close a new buffer after using it to update a new metadata account', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -402,7 +400,7 @@ test('it can close a new buffer after using it to update a new metadata account' // Then we expect the metadata account to be updated. const [metadata] = await findCanonicalPda({ program, seed: 'idl' }); const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: none(), @@ -418,7 +416,7 @@ test('it can close a new buffer after using it to update a new metadata account' }); }); -test('it can close an existing buffer after using it to update a new metadata account', async t => { +it('can close an existing buffer after using it to update a new metadata account', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -461,5 +459,5 @@ test('it can close an existing buffer after using it to update a new metadata ac // Then we expect the buffer account to no longer exist. const bufferAccount = await client.programMetadata.accounts.buffer.fetchMaybe(buffer.address); - t.false(bufferAccount.exists); + expect(bufferAccount.exists).toBe(false); }); diff --git a/clients/js/test/write.test.ts b/clients/js/test/write.test.ts index 5bbd55b..2aafdf7 100644 --- a/clients/js/test/write.test.ts +++ b/clients/js/test/write.test.ts @@ -1,9 +1,9 @@ import { address, generateKeyPairSigner, getUtf8Encoder } from '@solana/kit'; -import test from 'ava'; +import { expect, it } from 'vitest'; import { AccountDiscriminator, Buffer, findCanonicalPda, findNonCanonicalPda } from '../src'; import { createDeployedProgram, createTestClient, generateKeyPairSignerWithSol } from './_setup'; -test('it writes to canonical PDA buffers', async t => { +it('writes to canonical PDA buffers', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -22,10 +22,14 @@ test('it writes to canonical PDA buffers', async t => { // Then we expect the buffer account to contain the written data. const bufferAccount = await client.programMetadata.accounts.buffer.fetch(buffer); - t.like(bufferAccount.data, >{ discriminator: AccountDiscriminator.Buffer, canonical: true, data }); + expect(bufferAccount.data).toMatchObject(>{ + discriminator: AccountDiscriminator.Buffer, + canonical: true, + data, + }); }); -test('it writes to non-canonical PDA buffers', async t => { +it('writes to non-canonical PDA buffers', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -44,10 +48,14 @@ test('it writes to non-canonical PDA buffers', async t => { // Then we expect the buffer account to contain the written data. const bufferAccount = await client.programMetadata.accounts.buffer.fetch(buffer); - t.like(bufferAccount.data, >{ discriminator: AccountDiscriminator.Buffer, canonical: false, data }); + expect(bufferAccount.data).toMatchObject(>{ + discriminator: AccountDiscriminator.Buffer, + canonical: false, + data, + }); }); -test('it writes to keypair buffers', async t => { +it('writes to keypair buffers', async () => { // Given the following payer. const client = await createTestClient(); const payer = await generateKeyPairSignerWithSol(client); @@ -66,10 +74,10 @@ test('it writes to keypair buffers', async t => { // Then we expect the buffer account to contain the written data. const bufferAccount = await client.programMetadata.accounts.buffer.fetch(buffer.address); - t.like(bufferAccount.data, >{ discriminator: AccountDiscriminator.Buffer, data }); + expect(bufferAccount.data).toMatchObject(>{ discriminator: AccountDiscriminator.Buffer, data }); }); -test('it appends to the end of buffers when doing multiple writes', async t => { +it('appends to the end of buffers when doing multiple writes', async () => { // Given the following payer. const client = await createTestClient(); const payer = await generateKeyPairSignerWithSol(client); @@ -105,13 +113,13 @@ test('it appends to the end of buffers when doing multiple writes', async t => { // Then we expect the buffer account to contain the written data. const bufferAccount = await client.programMetadata.accounts.buffer.fetch(buffer.address); - t.like(bufferAccount.data, >{ + expect(bufferAccount.data).toMatchObject(>{ discriminator: AccountDiscriminator.Buffer, data: new Uint8Array([...dataChunk1, ...dataChunk2]), }); }); -test('it writes to buffers using other buffers', async t => { +it('writes to buffers using other buffers', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -139,5 +147,9 @@ test('it writes to buffers using other buffers', async t => { // Then we expect the buffer account to contain the data from the source buffer. const bufferAccount = await client.programMetadata.accounts.buffer.fetch(buffer); - t.like(bufferAccount.data, >{ discriminator: AccountDiscriminator.Buffer, canonical: true, data }); + expect(bufferAccount.data).toMatchObject(>{ + discriminator: AccountDiscriminator.Buffer, + canonical: true, + data, + }); }); diff --git a/clients/js/test/writeMetadata.test.ts b/clients/js/test/writeMetadata.test.ts index 14261fe..eb91409 100644 --- a/clients/js/test/writeMetadata.test.ts +++ b/clients/js/test/writeMetadata.test.ts @@ -1,9 +1,9 @@ import { getUtf8Encoder, none } from '@solana/kit'; -import test from 'ava'; +import { expect, it } from 'vitest'; import { AccountDiscriminator, Compression, DataSource, Encoding, findCanonicalPda, Format, Metadata } from '../src'; import { createDeployedProgram, createTestClient, generateKeyPairSignerWithSol } from './_setup'; -test('it creates a new metadata account if it does not exist', async t => { +it('creates a new metadata account if it does not exist', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -12,7 +12,7 @@ test('it creates a new metadata account if it does not exist', async t => { // And given the following canonical metadata account does not exist. const [metadata] = await findCanonicalPda({ program, seed: 'idl' }); const initialAccount = await client.programMetadata.accounts.metadata.fetchMaybe(metadata); - t.false(initialAccount.exists); + expect(initialAccount.exists).toBe(false); // When we upload this canonical metadata account. const data = getUtf8Encoder().encode('Some data'); @@ -30,7 +30,7 @@ test('it creates a new metadata account if it does not exist', async t => { // Then we expect the metadata account to be created. const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: none(), @@ -46,7 +46,7 @@ test('it creates a new metadata account if it does not exist', async t => { }); }); -test('it updates a metadata account if it exists', async t => { +it('updates a metadata account if it exists', async () => { // Given the following authority and deployed program. const client = await createTestClient(); const authority = await generateKeyPairSignerWithSol(client); @@ -82,7 +82,7 @@ test('it updates a metadata account if it exists', async t => { // Then we expect the metadata account to be updated. const [metadata] = await findCanonicalPda({ program, seed: 'idl' }); const account = await client.programMetadata.accounts.metadata.fetch(metadata); - t.like(account.data, { + expect(account.data).toMatchObject({ discriminator: AccountDiscriminator.Metadata, program, authority: none(), diff --git a/clients/js/tsup.config.ts b/clients/js/tsup.config.ts index 8bcc7a0..cad63db 100644 --- a/clients/js/tsup.config.ts +++ b/clients/js/tsup.config.ts @@ -17,13 +17,4 @@ export default defineConfig(() => [ // CLI. { ...SHARED_OPTIONS, format: 'cjs', entry: { cli: './src/cli/index.ts' } }, - - // Tests. - { - ...SHARED_OPTIONS, - bundle: false, - entry: ['./test/**/*.ts'], - format: 'cjs', - outDir: './dist/test', - }, ]); diff --git a/clients/js/vitest.config.ts b/clients/js/vitest.config.ts new file mode 100644 index 0000000..9fcaecd --- /dev/null +++ b/clients/js/vitest.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + environment: 'node', + testTimeout: 15000, + }, +});