diff --git a/package-lock.json b/package-lock.json index 04462f650..685544ff6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,41 +9,431 @@ "version": "4.0.1", "license": "MIT", "dependencies": { - "axios": "^1.7.2", + "axios": "^1.7.4", "form-data": "^4.0.0", "tslib": "^2.6.3" }, "devDependencies": { - "@swc-node/register": "^1.9.2", - "@swc/helpers": "^0.5.11", - "@types/node": "^18.19.38", + "@types/node": "^18.19.44", "@types/sinon": "^17.0.3", - "@typescript-eslint/eslint-plugin": "^7.13.1", - "@typescript-eslint/parser": "^7.13.1", - "ava": "^6.1.3", + "@typescript-eslint/eslint-plugin": "^8.1.0", + "@typescript-eslint/parser": "^8.1.0", "dotenv": "^16.4.5", "eslint": "^8.57.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", - "prettier": "^3.3.2", + "prettier": "^3.3.3", "prettier-plugin-jsdoc": "^1.3.0", "sinon": "^18.0.0", - "ts-node": "^10.9.2", - "typedoc": "^0.25.13", - "typedoc-plugin-extras": "^3.0.0", - "typescript": "^5.4.5" + "typedoc": "^0.26.5", + "typedoc-plugin-extras": "^3.1.0", + "typescript": "^5.5.4", + "vite-tsconfig-paths": "^4.3.2", + "vitest": "^2.0.5" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">=12" } @@ -65,9 +455,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", - "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, "license": "MIT", "engines": { @@ -194,6 +584,21 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -204,43 +609,32 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", - "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@nodelib/fs.scandir": { @@ -258,446 +652,311 @@ } }, "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/@rollup/pluginutils/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@sindresorhus/merge-streams": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", - "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", - "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", - "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", - "dev": true, - "license": "(Unlicense OR Apache-2.0)" - }, - "node_modules/@swc-node/core": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/@swc-node/core/-/core-1.13.1.tgz", - "integrity": "sha512-emB5l2nZsXjUEAuusqjYvWnQMLWZp6K039Mv8aq5SX1rsNM/N7DNhw1i4/DX7AyzNZ0tT+ASWyTvqEURldp5HA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", "engines": { - "node": ">= 10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@swc/core": ">= 1.4.13", - "@swc/types": ">= 0.1" + "node": ">= 8" } }, - "node_modules/@swc-node/register": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@swc-node/register/-/register-1.9.2.tgz", - "integrity": "sha512-BBjg0QNuEEmJSoU/++JOXhrjWdu3PTyYeJWsvchsI0Aqtj8ICkz/DqlwtXbmZVZ5vuDPpTfFlwDBZe81zgShMA==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { - "@swc-node/core": "^1.13.1", - "@swc-node/sourcemap-support": "^0.5.0", - "colorette": "^2.0.20", - "debug": "^4.3.4", - "pirates": "^4.0.6", - "tslib": "^2.6.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, - "peerDependencies": { - "@swc/core": ">= 1.4.13", - "typescript": ">= 4.3" + "engines": { + "node": ">= 8" } }, - "node_modules/@swc-node/sourcemap-support": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@swc-node/sourcemap-support/-/sourcemap-support-0.5.0.tgz", - "integrity": "sha512-fbhjL5G0YvFoWwNhWleuBUfotiX+USiA9oJqu9STFw+Hb0Cgnddn+HVS/K5fI45mn92e8V+cHD2jgFjk4w2T9Q==", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz", + "integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "source-map-support": "^0.5.21", - "tslib": "^2.6.2" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@swc/core": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.6.3.tgz", - "integrity": "sha512-mZpei+LqE+AL+nwgERMQey9EJA9/yhHTN6nwbobH5GnSij/lhfTdGfAb1iumOrroqEcXbHUaK//7wOw7DjBGdA==", + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz", + "integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==", + "cpu": [ + "arm64" + ], "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.8" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.6.3", - "@swc/core-darwin-x64": "1.6.3", - "@swc/core-linux-arm-gnueabihf": "1.6.3", - "@swc/core-linux-arm64-gnu": "1.6.3", - "@swc/core-linux-arm64-musl": "1.6.3", - "@swc/core-linux-x64-gnu": "1.6.3", - "@swc/core-linux-x64-musl": "1.6.3", - "@swc/core-win32-arm64-msvc": "1.6.3", - "@swc/core-win32-ia32-msvc": "1.6.3", - "@swc/core-win32-x64-msvc": "1.6.3" - }, - "peerDependencies": { - "@swc/helpers": "*" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.6.3.tgz", - "integrity": "sha512-3r7cJf1BcE30iyF1rnOSKrEzIR+cqnyYSZvivrm62TZdXVsIjfXe1xulsKGxZgNeLY5erIu7ukvMvBvPhnQvqA==", + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz", + "integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==", "cpu": [ "arm64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "darwin" - ], - "peer": true, - "engines": { - "node": ">=10" - } + ] }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.6.3.tgz", - "integrity": "sha512-8GLZ23IgVpF5xh2SbS5ZW/12/EEBuRU1hFOLB5rKERJU0y1RJ6YhDMf/FuOWhfHQcFM7TeedBwHIzaF+tdKKlw==", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz", + "integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==", "cpu": [ "x64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "darwin" - ], - "peer": true, - "engines": { - "node": ">=10" - } + ] }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.6.3.tgz", - "integrity": "sha512-VQ/bduX7WhLOlGbJLMG7UH0LBehjjx43R4yuk55rjjJLqpvX5fQzMsWhQdIZ5vsc+4ORzdgtEAlpumTv6bsD1A==", + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz", + "integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==", "cpu": [ "arm" ], "dev": true, - "license": "Apache-2.0", + "license": "MIT", "optional": true, "os": [ "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz", + "integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==", + "cpu": [ + "arm" ], - "peer": true, - "engines": { - "node": ">=10" - } + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.6.3.tgz", - "integrity": "sha512-jHIQ/PCwtdDBIF/BiC5DochswuCAIW/T5skJ+eDMbta7+QtEnZCXTZWpT5ORoEY/gtsE2fjpOA4TS6fBBvXqUw==", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz", + "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==", "cpu": [ "arm64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } + ] }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.6.3.tgz", - "integrity": "sha512-gA6velEUD27Dwu0BlR9hCcFzkWq2YL2pDAU5qbgeuGhaMiUCBssfqTQB+2ctEnV+AZx+hSMJOHvtA+uFZjfRrw==", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz", + "integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==", "cpu": [ "arm64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz", + "integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==", + "cpu": [ + "ppc64" ], - "peer": true, - "engines": { - "node": ">=10" - } + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.6.3.tgz", - "integrity": "sha512-fy4qoBDr5I8r+ZNCZxs/oZcmu4j/8mtSud6Ka102DaSxEjNg0vfIdo9ITsVIPsofhUTmDKjQsPB2O7YUlJAioQ==", + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz", + "integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==", "cpu": [ - "x64" + "riscv64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz", + "integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==", + "cpu": [ + "s390x" ], - "peer": true, - "engines": { - "node": ">=10" - } + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.6.3.tgz", - "integrity": "sha512-c/twcMbq/Gpq47G+b3kWgoaCujpXO11aRgJx6am+CprvP4uNeBHEpQkxD+DQmdWFHisZd0i9GB8NG3e7L9Rz9Q==", + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz", + "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==", "cpu": [ "x64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz", + "integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==", + "cpu": [ + "x64" ], - "peer": true, - "engines": { - "node": ">=10" - } + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.6.3.tgz", - "integrity": "sha512-y6RxMtX45acReQmzkxcEfJscfBXce6QjuNgWQHHs9exA592BZzmolDUwgmAyjyvopz1lWX+KdymdZFKvuDSx4w==", + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz", + "integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==", "cpu": [ "arm64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "win32" - ], - "peer": true, - "engines": { - "node": ">=10" - } + ] }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.6.3.tgz", - "integrity": "sha512-41h7z3xgukl1HDDwhquaeOPSP1OWeHl+mWKnJVmmwd3ui/oowUDCO856qa6JagBgPSnAGfyXwv6vthuXwyCcWA==", + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz", + "integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==", "cpu": [ "ia32" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "win32" - ], - "peer": true, - "engines": { - "node": ">=10" - } + ] }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.6.3.tgz", - "integrity": "sha512-//bnwo9b8Vp1ED06eXCHyGZ5xIpdkQgg2fuFDdtd1FITl7r5bdQh2ryRzPiKiGwgXZwZQitUshI4JeEX9IuW+Q==", + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz", + "integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==", "cpu": [ "x64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "win32" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true + ] }, - "node_modules/@swc/helpers": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", - "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", + "node_modules/@shikijs/core": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.13.0.tgz", + "integrity": "sha512-Mj5NVfbAXcD1GnwOTSPl8hBn/T8UDpfFQTptp+p41n/CbUcJtOq98WaRD7Lz3hCglYotUTHUWtzu3JhK6XlkAA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "tslib": "^2.4.0" + "@types/hast": "^3.0.4" } }, - "node_modules/@swc/types": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.8.tgz", - "integrity": "sha512-RNFA3+7OJFNYY78x0FYwi1Ow+iF1eF5WvmfY1nXPOEH4R2p/D4Cr1vzje7dNAI2aLFqpv8Wyz4oKSWqIZArpQA==", + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, - "license": "Apache-2.0", - "peer": true, + "license": "BSD-3-Clause", "dependencies": { - "@swc/counter": "^0.1.3" + "type-detect": "4.0.8" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true, - "license": "MIT" + "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@types/debug": { "version": "4.1.12", @@ -709,6 +968,23 @@ "@types/ms": "*" } }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -734,9 +1010,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "18.19.38", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.38.tgz", - "integrity": "sha512-SApYXUF7si4JJ+lO2o6X60OPOnA6wPpbiB09GMCkQ+JAwpa9hxUVG8p7GzA08TKQn5OhzK57rj1wFj+185YsGg==", + "version": "18.19.44", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz", + "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==", "dev": true, "license": "MIT", "dependencies": { @@ -761,39 +1037,39 @@ "license": "MIT" }, "node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.13.1.tgz", - "integrity": "sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.1.0.tgz", + "integrity": "sha512-LlNBaHFCEBPHyD4pZXb35mzjGkuGKXU5eeCA1SxvHfiRES0E82dOounfVpL4DCqYvJEKab0bZIA0gCRpdLKkCw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.13.1", - "@typescript-eslint/type-utils": "7.13.1", - "@typescript-eslint/utils": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1", + "@typescript-eslint/scope-manager": "8.1.0", + "@typescript-eslint/type-utils": "8.1.0", + "@typescript-eslint/utils": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -802,27 +1078,27 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.1.tgz", - "integrity": "sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.1.0.tgz", + "integrity": "sha512-U7iTAtGgJk6DPX9wIWPPOlt1gO57097G06gIcl0N0EEnNw8RGD62c+2/DiP/zL7KrkqnnqF7gtFGR7YgzPllTA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "7.13.1", - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/typescript-estree": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1", + "@typescript-eslint/scope-manager": "8.1.0", + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/typescript-estree": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0", "debug": "^4.3.4" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -831,17 +1107,17 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.1.tgz", - "integrity": "sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.1.0.tgz", + "integrity": "sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1" + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -849,27 +1125,24 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.13.1.tgz", - "integrity": "sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.1.0.tgz", + "integrity": "sha512-oLYvTxljVvsMnldfl6jIKxTaU7ok7km0KDrwOt1RHYu6nxlhN3TIx8k5Q52L6wR33nOwDgM7VwW1fT1qMNfFIA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.13.1", - "@typescript-eslint/utils": "7.13.1", + "@typescript-eslint/typescript-estree": "8.1.0", + "@typescript-eslint/utils": "8.1.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^8.56.0" - }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -877,13 +1150,13 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.1.tgz", - "integrity": "sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.1.0.tgz", + "integrity": "sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==", "dev": true, "license": "MIT", "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -891,14 +1164,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.1.tgz", - "integrity": "sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.1.0.tgz", + "integrity": "sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/visitor-keys": "7.13.1", + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -907,7 +1180,7 @@ "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -919,92 +1192,145 @@ } } }, - "node_modules/@typescript-eslint/utils": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", - "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", + "node_modules/@typescript-eslint/utils": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.1.0.tgz", + "integrity": "sha512-ypRueFNKTIFwqPeJBfeIpxZ895PQhNyH4YID6js0UoBImWYoSjBsahUn9KMiJXh94uOjVBgHD9AmkyPsPnFwJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.1.0", + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/typescript-estree": "8.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.1.0.tgz", + "integrity": "sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.1.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vitest/expect": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz", + "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "2.0.5", + "@vitest/utils": "2.0.5", + "chai": "^5.1.1", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/pretty-format": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz", + "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.5.tgz", + "integrity": "sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "2.0.5", + "pathe": "^1.1.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.5.tgz", + "integrity": "sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.13.1", - "@typescript-eslint/types": "7.13.1", - "@typescript-eslint/typescript-estree": "7.13.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "@vitest/pretty-format": "2.0.5", + "magic-string": "^0.30.10", + "pathe": "^1.1.2" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.1.tgz", - "integrity": "sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==", + "node_modules/@vitest/spy": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz", + "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.13.1", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "tinyspy": "^3.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@vercel/nft": { - "version": "0.26.5", - "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.26.5.tgz", - "integrity": "sha512-NHxohEqad6Ra/r4lGknO52uc/GrWILXAMs1BB4401GTqww0fw1bAqzpG1XHuDO+dprg4GvsD9ZLLSsdo78p9hQ==", + "node_modules/@vitest/utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz", + "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==", "dev": true, "license": "MIT", "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.5", - "@rollup/pluginutils": "^4.0.0", - "acorn": "^8.6.0", - "acorn-import-attributes": "^1.9.2", - "async-sema": "^3.1.1", - "bindings": "^1.4.0", - "estree-walker": "2.0.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.2", - "node-gyp-build": "^4.2.2", - "resolve-from": "^5.0.0" - }, - "bin": { - "nft": "out/cli.js" + "@vitest/pretty-format": "2.0.5", + "estree-walker": "^3.0.3", + "loupe": "^3.1.1", + "tinyrainbow": "^1.2.0" }, - "engines": { - "node": ">=16" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true, - "license": "ISC" - }, "node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "license": "MIT", "bin": { @@ -1014,16 +1340,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -1034,32 +1350,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1078,67 +1368,31 @@ } }, "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=8" } }, - "node_modules/ansi-sequence-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", - "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", - "dev": true, - "license": "MIT" - }, "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "deprecated": "This package is no longer supported.", - "dev": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -1163,16 +1417,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-includes": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", @@ -1286,152 +1530,22 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arrgv": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arrgv/-/arrgv-1.0.2.tgz", - "integrity": "sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/arrify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", - "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "license": "MIT", "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/async-sema": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", - "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==", - "dev": true, - "license": "MIT" - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, - "node_modules/ava": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/ava/-/ava-6.1.3.tgz", - "integrity": "sha512-tkKbpF1pIiC+q09wNU9OfyTDYZa8yuWvU2up3+lFJ3lr1RmnYh2GBpPwzYUEB0wvTPIUysGjcZLNZr7STDviRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vercel/nft": "^0.26.2", - "acorn": "^8.11.3", - "acorn-walk": "^8.3.2", - "ansi-styles": "^6.2.1", - "arrgv": "^1.0.2", - "arrify": "^3.0.0", - "callsites": "^4.1.0", - "cbor": "^9.0.1", - "chalk": "^5.3.0", - "chunkd": "^2.0.1", - "ci-info": "^4.0.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.3.4", - "emittery": "^1.0.1", - "figures": "^6.0.1", - "globby": "^14.0.0", - "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.1", - "package-config": "^5.0.0", - "picomatch": "^3.0.1", - "plur": "^5.1.0", - "pretty-ms": "^9.0.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": "^5.0.1", - "yargs": "^17.7.2" - }, - "bin": { - "ava": "entrypoints/cli.mjs" - }, - "engines": { - "node": "^18.18 || ^20.8 || ^21 || ^22" - }, - "peerDependencies": { - "@ava/typescript": "*" - }, - "peerDependenciesMeta": { - "@ava/typescript": { - "optional": true - } - } - }, - "node_modules/ava/node_modules/globby": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", - "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.2", - "ignore": "^5.2.4", - "path-type": "^5.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ava/node_modules/path-type": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", - "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ava/node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -1449,9 +1563,9 @@ } }, "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", + "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -1473,23 +1587,6 @@ "dev": true, "license": "MIT" }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/blueimp-md5": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", - "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", - "dev": true, - "license": "MIT" - }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -1513,12 +1610,15 @@ "node": ">=8" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8" + } }, "node_modules/call-bind": { "version": "1.0.7", @@ -1540,194 +1640,69 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/callsites": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-4.1.0.tgz", - "integrity": "sha512-aBMbD1Xxay75ViYezwT40aQONfr+pSXTHwNKvIXhXD6+LY3F1dLIcceoC5OZKBVHbXcysz1hL9D2w0JJIMXpUw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cbor": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", - "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "nofilter": "^3.1.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/chunkd": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chunkd/-/chunkd-2.0.1.tgz", - "integrity": "sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/ci-info": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", - "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ci-parallel-vars": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz", - "integrity": "sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", - "dev": true, - "license": "MIT", - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/chai": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", + "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", "dev": true, "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/code-excerpt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz", - "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==", + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, "license": "MIT", - "dependencies": { - "convert-to-spaces": "^2.0.1" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 16" } }, "node_modules/color-convert": { @@ -1750,23 +1725,6 @@ "dev": true, "license": "MIT" }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -1789,13 +1747,6 @@ "node": ">= 12.0.0" } }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true, - "license": "ISC" - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1803,26 +1754,6 @@ "dev": true, "license": "MIT" }, - "node_modules/concordance": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", - "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", - "dev": true, - "license": "ISC", - "dependencies": { - "date-time": "^3.1.0", - "esutils": "^2.0.3", - "fast-diff": "^1.2.0", - "js-string-escape": "^1.0.1", - "lodash": "^4.17.15", - "md5-hex": "^3.0.1", - "semver": "^7.3.2", - "well-known-symbols": "^2.0.0" - }, - "engines": { - "node": ">=10.18.0 <11 || >=12.14.0 <13 || >=14" - } - }, "node_modules/confusing-browser-globals": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", @@ -1830,30 +1761,6 @@ "dev": true, "license": "MIT" }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/convert-to-spaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz", - "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1869,19 +1776,6 @@ "node": ">= 8" } }, - "node_modules/currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-find-index": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/data-view-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", @@ -1936,23 +1830,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/date-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", - "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "time-zone": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "license": "MIT", "dependencies": { @@ -1967,13 +1848,6 @@ } } }, - "node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "license": "MIT" - }, "node_modules/decode-named-character-reference": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", @@ -1988,6 +1862,16 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -2040,13 +1924,6 @@ "node": ">=0.4.0" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true, - "license": "MIT" - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -2057,16 +1934,6 @@ "node": ">=6" } }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -2130,30 +1997,10 @@ "url": "https://dotenvx.com" } }, - "node_modules/emittery": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.0.3.tgz", - "integrity": "sha512-tJdCJitoy2lrC2ldJcqN4vkqJ00lT+tOWNT1hBJjO/3FDMJa5TTIiYGCKGkn/WfCyOzUMObeohbVTj00fhiLiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", - "dev": true, - "license": "MIT" - }, "node_modules/enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "license": "MIT", "dependencies": { @@ -2164,6 +2011,19 @@ "node": ">=10.13.0" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/es-abstract": { "version": "1.23.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", @@ -2304,14 +2164,43 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, + "hasInstallScript": true, "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">=6" + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, "node_modules/escape-string-regexp": { @@ -2608,32 +2497,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2645,23 +2508,6 @@ "concat-map": "0.0.1" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2675,19 +2521,6 @@ "node": "*" } }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -2706,24 +2539,10 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -2757,11 +2576,14 @@ } }, "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } }, "node_modules/esutils": { "version": "2.0.3", @@ -2773,6 +2595,30 @@ "node": ">=0.10.0" } }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2780,13 +2626,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -2841,22 +2680,6 @@ "reusify": "^1.0.4" } }, - "node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-unicode-supported": "^2.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -2870,13 +2693,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "license": "MIT" - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -2901,20 +2717,7 @@ "path-exists": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up-simple": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", - "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2986,32 +2789,6 @@ "node": ">= 6" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3019,6 +2796,21 @@ "dev": true, "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -3058,104 +2850,14 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "deprecated": "This package is no longer supported.", - "dev": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gauge/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/gauge/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/gauge/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", - "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, "node_modules/get-intrinsic": { @@ -3178,6 +2880,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-symbol-description": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", @@ -3197,9 +2912,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", - "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", + "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", "dev": true, "license": "MIT", "dependencies": { @@ -3322,6 +3037,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true, + "license": "MIT" + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -3424,13 +3146,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true, - "license": "ISC" - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -3444,40 +3159,26 @@ "node": ">= 0.4" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, + "license": "Apache-2.0", "engines": { - "node": ">= 6" + "node": ">=16.17.0" } }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { "node": ">= 4" } }, - "node_modules/ignore-by-default": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-2.1.0.tgz", - "integrity": "sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10 <11 || >=12 <13 || >=14" - } - }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -3495,16 +3196,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -3515,19 +3206,6 @@ "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3562,16 +3240,6 @@ "node": ">= 0.4" } }, - "node_modules/irregular-plurals": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", - "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-array-buffer": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", @@ -3633,9 +3301,9 @@ } }, "node_modules/is-core-module": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", - "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", "dev": true, "license": "MIT", "dependencies": { @@ -3690,19 +3358,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3765,23 +3420,6 @@ "node": ">=8" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "dev": true, - "license": "MIT" - }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -3815,6 +3453,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -3863,19 +3514,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-unicode-supported": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", - "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -3903,16 +3541,6 @@ "dev": true, "license": "ISC" }, - "node_modules/js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -3960,13 +3588,6 @@ "json5": "lib/cli.js" } }, - "node_modules/jsonc-parser": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", - "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", - "dev": true, - "license": "MIT" - }, "node_modules/just-extend": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", @@ -3998,17 +3619,14 @@ "node": ">= 0.8.0" } }, - "node_modules/load-json-file": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-7.0.1.tgz", - "integrity": "sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==", + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "uc.micro": "^2.0.0" } }, "node_modules/locate-path": { @@ -4027,13 +3645,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", @@ -4048,99 +3659,49 @@ "dev": true, "license": "MIT" }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/loupe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", + "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", "dev": true, "license": "MIT", "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "dev": true, - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" + "get-func-name": "^2.0.1" } }, - "node_modules/matcher": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-5.0.0.tgz", - "integrity": "sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==", + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/matcher/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "node_modules/md5-hex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", - "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "dev": true, "license": "MIT", "dependencies": { - "blueimp-md5": "^2.10.0" + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" }, - "engines": { - "node": ">=8" + "bin": { + "markdown-it": "bin/markdown-it.mjs" } }, "node_modules/mdast-util-from-markdown": { @@ -4182,21 +3743,19 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/memoize": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/memoize/-/memoize-10.0.0.tgz", - "integrity": "sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA==", + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true, - "license": "MIT", - "dependencies": { - "mimic-function": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sindresorhus/memoize?sponsor=1" - } + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", @@ -4685,19 +4244,6 @@ "node": ">=8.6" } }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -4719,23 +4265,23 @@ "node": ">= 0.6" } }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { @@ -4758,63 +4304,32 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { + "node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "bin": { - "mkdirp": "bin/cmd.js" + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=10" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -4836,95 +4351,44 @@ "path-to-regexp": "^6.2.1" } }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "path-key": "^4.0.0" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", - "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", - "dev": true, - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nofilter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", - "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=12.19" - } - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" + "node": ">=12" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "deprecated": "This package is no longer supported.", - "dev": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5035,6 +4499,22 @@ "wrappy": "1" } }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -5085,36 +4565,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.2.tgz", - "integrity": "sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-config": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/package-config/-/package-config-5.0.0.tgz", - "integrity": "sha512-GYTTew2slBcYdvRHqjhwaaydVMvn/qrGC323+nKclYioNSLTDUM/lGgtGTgyHVtYcozb+XkE8CNhwcraOmZ9Mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up-simple": "^1.0.0", - "load-json-file": "^7.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -5128,29 +4578,6 @@ "node": ">=6" } }, - "node_modules/parent-module/node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", - "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -5205,43 +4632,41 @@ "node": ">=8" } }, - "node_modules/picomatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", - "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } + "license": "MIT" }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 6" + "node": ">= 14.16" } }, - "node_modules/plur": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-5.1.0.tgz", - "integrity": "sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==", + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", - "dependencies": { - "irregular-plurals": "^3.3.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/possible-typed-array-names": { @@ -5254,6 +4679,35 @@ "node": ">= 0.4" } }, + "node_modules/postcss": { + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -5265,9 +4719,9 @@ } }, "node_modules/prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "license": "MIT", "bin": { @@ -5298,22 +4752,6 @@ "prettier": "^3.0.0" } }, - "node_modules/pretty-ms": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.0.0.tgz", - "integrity": "sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==", - "dev": true, - "license": "MIT", - "dependencies": { - "parse-ms": "^4.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -5330,6 +4768,16 @@ "node": ">=6" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5351,21 +4799,6 @@ ], "license": "MIT" }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/regexp.prototype.flags": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", @@ -5385,16 +4818,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -5408,32 +4831,19 @@ }, "bin": { "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/resolve-pkg-maps": { @@ -5474,6 +4884,42 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rollup": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz", + "integrity": "sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.20.0", + "@rollup/rollup-android-arm64": "4.20.0", + "@rollup/rollup-darwin-arm64": "4.20.0", + "@rollup/rollup-darwin-x64": "4.20.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.20.0", + "@rollup/rollup-linux-arm-musleabihf": "4.20.0", + "@rollup/rollup-linux-arm64-gnu": "4.20.0", + "@rollup/rollup-linux-arm64-musl": "4.20.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.20.0", + "@rollup/rollup-linux-riscv64-gnu": "4.20.0", + "@rollup/rollup-linux-s390x-gnu": "4.20.0", + "@rollup/rollup-linux-x64-gnu": "4.20.0", + "@rollup/rollup-linux-x64-musl": "4.20.0", + "@rollup/rollup-win32-arm64-msvc": "4.20.0", + "@rollup/rollup-win32-ia32-msvc": "4.20.0", + "@rollup/rollup-win32-x64-msvc": "4.20.0", + "fsevents": "~2.3.2" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -5517,27 +4963,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/safe-regex-test": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", @@ -5557,9 +4982,9 @@ } }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "license": "ISC", "bin": { @@ -5569,42 +4994,6 @@ "node": ">=10" } }, - "node_modules/serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.13.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true, - "license": "ISC" - }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -5663,16 +5052,14 @@ } }, "node_modules/shiki": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", - "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.13.0.tgz", + "integrity": "sha512-e0dWfnONbEv6xl7FJy3XIhsVHQ/65XHDZl92+6H9+4xWjfdo7pmkqG7Kg47KWtDiEtzM5Z+oEfb4vtRvoZ/X9w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" + "@shikijs/core": "1.13.0", + "@types/hast": "^3.0.4" } }, "node_modules/side-channel": { @@ -5694,13 +5081,26 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true, "license": "ISC" }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/sinon": { "version": "18.0.0", "resolved": "https://registry.npmjs.org/sinon/-/sinon-18.0.0.tgz", @@ -5730,101 +5130,29 @@ "node": ">=8" } }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } + "license": "MIT" }, - "node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, "node_modules/string.prototype.trim": { "version": "1.2.9", @@ -5879,19 +5207,16 @@ } }, "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=8" } }, "node_modules/strip-bom": { @@ -5904,57 +5229,30 @@ "node": ">=4" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/supertap": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/supertap/-/supertap-3.0.1.tgz", - "integrity": "sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", - "dependencies": { - "indent-string": "^5.0.0", - "js-yaml": "^3.14.1", - "serialize-error": "^7.0.1", - "strip-ansi": "^7.0.1" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/supertap/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/supertap/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "node": ">=8" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/supports-color": { @@ -5993,49 +5291,48 @@ "node": ">=6" } }, - "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "node_modules/temp-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinypool": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.0.tgz", + "integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=14.16" + "node": "^18.0.0 || >=20.0.0" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "node_modules/tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/time-zone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", - "integrity": "sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==", + "node_modules/tinyspy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz", + "integrity": "sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=14.0.0" } }, "node_modules/to-regex-range": { @@ -6051,13 +5348,6 @@ "node": ">=8.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "license": "MIT" - }, "node_modules/ts-api-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", @@ -6071,60 +5361,27 @@ "typescript": ">=4.2.0" } }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "node_modules/tsconfck": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz", + "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", "dev": true, "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" }, "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" + "typescript": "^5.0.0" }, "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { + "typescript": { "optional": true } } }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -6258,41 +5515,42 @@ } }, "node_modules/typedoc": { - "version": "0.25.13", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.13.tgz", - "integrity": "sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==", + "version": "0.26.5", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.5.tgz", + "integrity": "sha512-Vn9YKdjKtDZqSk+by7beZ+xzkkr8T8CYoiasqyt4TTRFy5+UHzL/mF/o4wGBjRF+rlWQHDb0t6xCpA3JNL5phg==", "dev": true, "license": "Apache-2.0", "dependencies": { "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.3", - "shiki": "^0.14.7" + "markdown-it": "^14.1.0", + "minimatch": "^9.0.5", + "shiki": "^1.9.1", + "yaml": "^2.4.5" }, "bin": { "typedoc": "bin/typedoc" }, "engines": { - "node": ">= 16" + "node": ">= 18" }, "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x" + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x" } }, "node_modules/typedoc-plugin-extras": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/typedoc-plugin-extras/-/typedoc-plugin-extras-3.0.0.tgz", - "integrity": "sha512-eiAe3qtm2WbV5owdncpt0zHZPqsNZH2mzNGILPd4zqrvEZie3Et9es4cpGZ+8lHO/SI0pVKwsAj7IuMxPNOdYg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/typedoc-plugin-extras/-/typedoc-plugin-extras-3.1.0.tgz", + "integrity": "sha512-8tNeq2fgl2HCUZ6eZuAoLLKEvB/WrRS4He9MtTfo3X3Pa8Iw3TS5D0g8krDhUXUk1uHpXVAVHm8rSOMS2mdJRw==", "dev": true, "license": "MIT", "peerDependencies": { - "typedoc": "0.25.x" + "typedoc": "0.26.x" } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, "license": "Apache-2.0", "bin": { @@ -6303,6 +5561,13 @@ "node": ">=14.17" } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -6326,19 +5591,6 @@ "dev": true, "license": "MIT" }, - "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", @@ -6363,60 +5615,172 @@ "punycode": "^2.1.0" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" - }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true, - "license": "MIT" - }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "dev": true, - "license": "MIT" - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/well-known-symbols": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", - "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", + "node_modules/vite": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.1.tgz", + "integrity": "sha512-1oE6yuNXssjrZdblI9AfBbHCC41nnyoVoEZxQnID6yvQZAFBzxxkqoFLtHUMkYunL8hwOLEjgTuxpkRxvba3kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.41", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.5.tgz", + "integrity": "sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.5", + "pathe": "^1.1.2", + "tinyrainbow": "^1.2.0", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, "engines": { - "node": ">=6" + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "node_modules/vite-tsconfig-paths": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz", + "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", "dev": true, "license": "MIT", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "debug": "^4.1.1", + "globrex": "^0.1.2", + "tsconfck": "^3.0.3" + }, + "peerDependencies": { + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.5.tgz", + "integrity": "sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@vitest/expect": "2.0.5", + "@vitest/pretty-format": "^2.0.5", + "@vitest/runner": "2.0.5", + "@vitest/snapshot": "2.0.5", + "@vitest/spy": "2.0.5", + "@vitest/utils": "2.0.5", + "chai": "^5.1.1", + "debug": "^4.3.5", + "execa": "^8.0.1", + "magic-string": "^0.30.10", + "pathe": "^1.1.2", + "std-env": "^3.7.0", + "tinybench": "^2.8.0", + "tinypool": "^1.0.0", + "tinyrainbow": "^1.2.0", + "vite": "^5.0.0", + "vite-node": "2.0.5", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "2.0.5", + "@vitest/ui": "2.0.5", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } } }, "node_modules/which": { @@ -6472,66 +5836,18 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/wide-align/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wide-align/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wide-align/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wide-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "siginfo": "^2.0.0", + "stackback": "0.0.2" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wide-align/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" + "bin": { + "why-is-node-running": "cli.js" }, "engines": { "node": ">=8" @@ -6547,95 +5863,6 @@ "node": ">=0.10.0" } }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -6643,142 +5870,17 @@ "dev": true, "license": "ISC" }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "node_modules/yaml": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", "dev": true, "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" + "bin": { + "yaml": "bin.mjs" }, "engines": { - "node": ">=8" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "node": ">= 14" } }, "node_modules/yocto-queue": { diff --git a/package.json b/package.json index fd7df09f4..39b2b8cda 100644 --- a/package.json +++ b/package.json @@ -35,8 +35,8 @@ "lint:fix": "npm run lint:tests -- --fix && npm run lint:examples -- --fix && npm run lint:src:agile -- --fix && npm run lint:src:clients -- --fix && npm run lint:src:services -- --fix && npm run lint:src:version2 -- --fix && npm run lint:src:version3 -- --fix && npm run lint:src:serviceDesk -- --fix && npm run lint:src:files -- --fix", "doc": "typedoc --name \"Jira.js - Jira Cloud API library\" --out docs ./src/index.ts --plugin typedoc-plugin-extras --footerDate --footerTime --footerTypedocVersion --favicon https://svgshare.com/i/bHF.svg", "test": "npm run test:unit && npm run test:integration", - "test:unit": "ava tests/unit --timeout=2m -с 8", - "test:integration": "ava --timeout=2m --fail-fast --no-worker-threads -c 1 -s tests/integration/**/*.test.ts", + "test:unit": "vitest run tests/unit --maxWorkers=8 --sequence.concurrent", + "test:integration": "avitest --bail=1 --no-file-parallelism --max-concurrency 1 tests/integration", "replace:all": "npm run replace:permissions:version2 && npm run replace:permissions:version3 && npm run replace:pagination:version2 && npm run replace:pagination:version3 && npm run replace:async:version2 && npm run replace:async:version3 && npm run replace:expansion:version2 && npm run replace:expansion:version3 && npm run replace:ordering:version2 && npm run replace:ordering:version3 && npm run replace:groupMember:version2 && npm run replace:workflowPaginated:version2", "replace:permissions:version2": "grep -rl \"(#permissions)\" ./src/version2 | xargs sed -i '' 's/(#permissions)/(https:\\/\\/developer.atlassian.com\\/cloud\\/jira\\/platform\\/rest\\/v2\\/intro\\/#permissions)/g'", "replace:permissions:version3": "grep -rl \"(#permissions)\" ./src/version3 | xargs sed -i '' 's/(#permissions)/(https:\\/\\/developer.atlassian.com\\/cloud\\/jira\\/platform\\/rest\\/v3\\/intro\\/#permissions)/g'", @@ -52,41 +52,27 @@ "replace:workflowPaginated:version2": "grep -rl \"(#api-rest-api-2-workflow-search-get)\" ./src/version2 | xargs sed -i '' 's/(#api-rest-api-2-workflow-search-get)/(https:\\/\\/developer.atlassian.com\\/cloud\\/jira\\/platform\\/rest\\/v2\\/api-group-workflows\\/#api-rest-api-2-workflow-search-get)/g'", "code:formatting": "npm run replace:all && npm run prettier && npm run lint:fix" }, - "ava": { - "extensions": [ - "ts" - ], - "require": [ - "@swc-node/register", - "dotenv/config" - ], - "environmentVariables": { - "SWC_NODE_PROJECT": "./tsconfig.lint.json" - } - }, "devDependencies": { - "@swc-node/register": "^1.9.2", - "@swc/helpers": "^0.5.11", - "@types/node": "^18.19.38", + "@types/node": "^18.19.44", "@types/sinon": "^17.0.3", - "@typescript-eslint/eslint-plugin": "^7.13.1", - "@typescript-eslint/parser": "^7.13.1", - "ava": "^6.1.3", + "@typescript-eslint/eslint-plugin": "^8.1.0", + "@typescript-eslint/parser": "^8.1.0", "dotenv": "^16.4.5", "eslint": "^8.57.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", - "prettier": "^3.3.2", + "prettier": "^3.3.3", "prettier-plugin-jsdoc": "^1.3.0", "sinon": "^18.0.0", - "ts-node": "^10.9.2", - "typedoc": "^0.25.13", - "typedoc-plugin-extras": "^3.0.0", - "typescript": "^5.4.5" + "typedoc": "^0.26.5", + "typedoc-plugin-extras": "^3.1.0", + "typescript": "^5.5.4", + "vite-tsconfig-paths": "^4.3.2", + "vitest": "^2.0.5" }, "dependencies": { - "axios": "^1.7.2", + "axios": "^1.7.4", "form-data": "^4.0.0", "tslib": "^2.6.3" } diff --git a/tests/integration/agile/sprint.test.ts b/tests/integration/agile/sprint.test.ts index 163db8975..d1d62fa6e 100644 --- a/tests/integration/agile/sprint.test.ts +++ b/tests/integration/agile/sprint.test.ts @@ -1,27 +1,30 @@ -import test from 'ava'; -import { AgileModels } from '../../../src'; -import { Constants } from '../constants'; +import { afterAll, beforeAll, test } from 'vitest'; +import { AgileModels } from '@jirajs'; +import { Constants } from '@tests/constants'; import { - createAgileProject, deleteAgileProject, getAgileClient, getVersion3Client, -} from '../utils'; + createAgileProject, + deleteAgileProject, + getAgileClient, + getVersion3Client, +} from '@tests/utils'; const client = getAgileClient(); let board: any; let sprint: AgileModels.Sprint; -test.before(async () => { +beforeAll(async () => { await createAgileProject(); }); -test.after(async () => { +afterAll(async () => { await deleteAgileProject(); }); -test.serial('should create new sprint', async t => { +test.sequential('should create new sprint', async ({ expect }) => { const boards = await client.board.getAllBoards({ name: Constants.testAgileProjectKey }); - t.is(boards.total, 1); + expect(boards.total).toBe(1); [board] = boards.values; @@ -30,12 +33,12 @@ test.serial('should create new sprint', async t => { originBoardId: board.id, }); - t.truthy(!!sprint); - t.is(sprint.name, 'New sprint'); - t.is(sprint.state, 'future'); + expect(!!sprint).toBeTruthy(); + expect(sprint.name).toBe('New sprint'); + expect(sprint.state).toBe('future'); }); -test.serial('should create and move task to sprint', async t => { +test.sequential('should create and move task to sprint', async ({ expect }) => { const issue = await getVersion3Client().issues.createIssue({ fields: { summary: 'Test task', @@ -57,19 +60,19 @@ test.serial('should create and move task to sprint', async t => { issues: [issue.key], }); - t.truthy(!!issue); + expect(!!issue).toBeTruthy(); }); -test.serial('should return issues for sprint', async t => { +test.sequential('should return issues for sprint', async ({ expect }) => { const { issues } = await client.sprint.getIssuesForSprint({ sprintId: sprint.id, }); - t.truthy(!!issues); - t.is(issues[0].fields?.summary, 'Test task'); + expect(!!issues).toBeTruthy(); + expect(issues[0].fields?.summary).toBe('Test task'); }); -test.serial('should partially update sprint', async t => { +test.sequential('should partially update sprint', async ({ expect }) => { const newSprint = await client.sprint.partiallyUpdateSprint({ sprintId: sprint.id, state: 'active', @@ -77,13 +80,9 @@ test.serial('should partially update sprint', async t => { endDate: new Date(Date.now() + 1000), }); - t.is(newSprint.state, 'active'); + expect(newSprint.state).toBe('active'); }); -test.serial('should remove sprint', async t => { - await client.sprint.deleteSprint({ - sprintId: sprint.id, - }); - - t.pass(); +test.sequential('should remove sprint', async ({ expect }) => { + await client.sprint.deleteSprint({ sprintId: sprint.id }); }); diff --git a/tests/integration/index.ts b/tests/integration/index.ts index dcfc194d9..2b30a95c1 100644 --- a/tests/integration/index.ts +++ b/tests/integration/index.ts @@ -1,2 +1,2 @@ -export * from './constants'; -export * as Utils from './utils'; +export * from '@tests/constants'; +export * as Utils from '@tests/utils'; diff --git a/tests/integration/utils/createAgileProject.ts b/tests/integration/utils/createAgileProject.ts index 6c127a060..4fd3d836b 100644 --- a/tests/integration/utils/createAgileProject.ts +++ b/tests/integration/utils/createAgileProject.ts @@ -1,4 +1,4 @@ -import { Constants } from '../constants'; +import { Constants } from '@tests/constants'; import { getVersion3Client } from './getClient'; export const createAgileProject = async () => { diff --git a/tests/integration/utils/createIssue.ts b/tests/integration/utils/createIssue.ts index 9afe22057..c1691d81b 100644 --- a/tests/integration/utils/createIssue.ts +++ b/tests/integration/utils/createIssue.ts @@ -1,4 +1,4 @@ -import { Constants } from '../constants'; +import { Constants } from '@tests/constants'; import { getVersion2Client } from './getClient'; export const createIssue = async () => { diff --git a/tests/integration/utils/createSoftwareProject.ts b/tests/integration/utils/createSoftwareProject.ts index 86650af64..a02b1eac6 100644 --- a/tests/integration/utils/createSoftwareProject.ts +++ b/tests/integration/utils/createSoftwareProject.ts @@ -1,15 +1,18 @@ import { AxiosError } from 'axios'; -import { Constants } from '../constants'; +import { Constants } from '@tests/constants'; import { getVersion2Client } from './getClient'; export const createSoftwareProject = async () => { const client = getVersion2Client(); + const currentUser = await client.myself.getCurrentUser(); + + if (!currentUser.accountId) throw new Error("Couldn't get the current user's account ID", { cause: { currentUser } }); return client.projects .createProject({ key: Constants.testProjectKey, name: Constants.testProjectName, - leadAccountId: '5b6d7f20e6dba529eefdbad9', + leadAccountId: currentUser.accountId, projectTypeKey: 'software', }) .catch((error: AxiosError) => { diff --git a/tests/integration/utils/deleteAgileProject.ts b/tests/integration/utils/deleteAgileProject.ts index 8544b0935..8a4c4dd5f 100644 --- a/tests/integration/utils/deleteAgileProject.ts +++ b/tests/integration/utils/deleteAgileProject.ts @@ -1,4 +1,4 @@ -import { Constants } from '../constants'; +import { Constants } from '@tests/constants'; import { getVersion3Client } from './getClient'; export const deleteAgileProject = async () => { diff --git a/tests/integration/utils/deleteSoftwareProject.ts b/tests/integration/utils/deleteSoftwareProject.ts index ece2437f6..a67fcfef0 100644 --- a/tests/integration/utils/deleteSoftwareProject.ts +++ b/tests/integration/utils/deleteSoftwareProject.ts @@ -1,5 +1,5 @@ import { AxiosError } from 'axios'; -import { Constants } from '../constants'; +import { Constants } from '@tests/constants'; import { getVersion2Client } from './getClient'; export const deleteSoftwareProject = async () => { diff --git a/tests/integration/utils/getClient.ts b/tests/integration/utils/getClient.ts index 0f3dc13c0..1a9dfe5dc 100644 --- a/tests/integration/utils/getClient.ts +++ b/tests/integration/utils/getClient.ts @@ -1,4 +1,4 @@ -import { ClientType, Config, createClient } from '../../../src'; +import { ClientType, type Config, createClient } from '@jirajs'; const config = { host: process.env.HOST!, diff --git a/tests/integration/version2/avatars.test.ts b/tests/integration/version2/avatars.test.ts index b3ce10217..e5b874956 100644 --- a/tests/integration/version2/avatars.test.ts +++ b/tests/integration/version2/avatars.test.ts @@ -1,22 +1,22 @@ -import test from 'ava'; -import { Avatar } from '../../../src/version3/models'; +import { test } from 'vitest'; +import type { Avatar } from '@jirajs/version3/models'; import { getVersion2Client } from '../utils'; const client = getVersion2Client(); let avatar: Avatar | undefined; -test.serial('should get all system avatars', async t => { +test.sequential('should get all system avatars', async ({ expect }) => { const systemAvatars = await client.avatars.getAllSystemAvatars({ type: 'project' }); avatar = systemAvatars.system?.[0]; - t.truthy(!!avatar); + expect(!!avatar).toBeTruthy(); }); -test.serial('should return avatar image with contentType', async t => { +test.sequential('should return avatar image with contentType', async ({ expect }) => { const avatarWithDetails = await client.avatars.getAvatarImageByID({ id: avatar!.id, type: 'project' }); - t.is(avatarWithDetails.contentType, 'image/svg+xml'); - t.truthy(avatarWithDetails.avatar instanceof Uint8Array); + expect(avatarWithDetails.contentType).toBe('image/svg+xml'); + expect(avatarWithDetails.avatar instanceof Uint8Array).toBeTruthy(); }); diff --git a/tests/integration/version2/dashboards.test.ts b/tests/integration/version2/dashboards.test.ts index 4f606537b..005dc3637 100644 --- a/tests/integration/version2/dashboards.test.ts +++ b/tests/integration/version2/dashboards.test.ts @@ -1,27 +1,27 @@ -import test from 'ava'; -import { Constants } from '../constants'; -import { getVersion2Client } from '../utils'; -import { Version2Models } from '../../../src'; +import { test } from 'vitest'; +import { Version2Models } from '@jirajs'; +import { Constants } from '@tests/constants'; +import { getVersion2Client } from '@tests/utils'; let dashboard: Version2Models.Dashboard; const client = getVersion2Client(); -test.serial('should create dashboard', async t => { +test.sequential('should create dashboard', async ({ expect }) => { dashboard = await client.dashboards.createDashboard({ name: Constants.testDashboardName, sharePermissions: [], }); - t.truthy(!!dashboard); - t.is(dashboard.name, Constants.testDashboardName); - t.deepEqual(dashboard.sharePermissions, []); + expect(!!dashboard).toBeTruthy(); + expect(dashboard.name).toBe(Constants.testDashboardName); + expect(dashboard.sharePermissions).toStrictEqual([]); }); -test.serial('should remove dashboard', async t => { +test.sequential('should remove dashboard', async ({ expect }) => { const response = await client.dashboards.deleteDashboard({ id: dashboard.id, }); - t.is(typeof response, 'string'); - t.is(response, ''); + expect(typeof response).toBe('string'); + expect(response).toBe(''); }); diff --git a/tests/integration/version2/groups.test.ts b/tests/integration/version2/groups.test.ts index 0c560a129..ee464679b 100644 --- a/tests/integration/version2/groups.test.ts +++ b/tests/integration/version2/groups.test.ts @@ -1,23 +1,23 @@ -import test from 'ava'; -import { Constants } from '..'; -import { getVersion2Client } from '../utils'; +import { test } from 'vitest'; +import { Constants } from '@tests'; +import { getVersion2Client } from '@tests/utils'; const client = getVersion2Client(); -test.serial('should create a group', async t => { +test.sequential('should create a group', async ({ expect }) => { const group = await client.groups.createGroup({ name: Constants.testGroupName, }); - t.truthy(!!group); - t.is(group.name, Constants.testGroupName); + expect(!!group).toBeTruthy(); + expect(group.name).toBe(Constants.testGroupName); }); -test.serial('should remove a group', async t => { +test.sequential('should remove a group', async ({ expect }) => { const response = await client.groups.removeGroup({ groupname: Constants.testGroupName, }); - t.is(typeof response, 'string'); - t.is(response.trim(), ''); + expect(typeof response).toBe('string'); + expect(response.trim()).toBe(''); }); diff --git a/tests/integration/version2/issueAttachments.test.ts b/tests/integration/version2/issueAttachments.test.ts index 0aed343c3..34eb79ddc 100644 --- a/tests/integration/version2/issueAttachments.test.ts +++ b/tests/integration/version2/issueAttachments.test.ts @@ -1,23 +1,23 @@ import * as fs from 'fs'; -import test from 'ava'; -import { Constants } from '../constants'; -import { Attachment, Issue } from '../../../src/version2/models'; -import { cleanupEnvironment, getVersion2Client, prepareEnvironment } from '../utils'; +import { afterAll, beforeAll, test } from 'vitest'; +import type { Attachment, Issue } from '@jirajs/version2/models'; +import { Constants } from '@tests/constants'; +import { cleanupEnvironment, getVersion2Client, prepareEnvironment } from '@tests/utils'; const client = getVersion2Client({ noCheckAtlassianToken: true }); let issue: Issue; let attachments: Attachment[]; -test.before(async () => { +beforeAll(async () => { await prepareEnvironment(); }); -test.after(async () => { +afterAll(async () => { await cleanupEnvironment(); }); -test.skip('should add attachment', async t => { +test.sequential('should add attachment', async ({ expect }) => { issue = await client.issues.createIssue({ fields: { summary: 'Issue with attachment', @@ -30,7 +30,7 @@ test.skip('should add attachment', async t => { }, }); - t.truthy(!!issue); + expect(!!issue).toBeTruthy(); attachments = await client.issueAttachments.addAttachment({ issueIdOrKey: issue.key, @@ -40,21 +40,17 @@ test.skip('should add attachment', async t => { }, }); - t.truthy(!!attachments); - t.is(attachments[0].filename, 'issueAttachments.test.ts'); - t.is(attachments[0].mimeType, 'video/mp2t'); + expect(!!attachments).toBeTruthy(); + expect(attachments[0].filename).toBe('issueAttachments.test.ts'); + expect(attachments[0].mimeType).toBe('video/mp2t'); }); -test.skip('should getAttachmentContent', async t => { +test.sequential('should getAttachmentContent', async ({ expect }) => { const content = await client.issueAttachments.getAttachmentContent({ id: attachments[0].id }); - t.truthy(Buffer.isBuffer(content)); + expect(Buffer.isBuffer(content)).toBeTruthy(); }); -test.skip('should remove attachment', async t => { - await client.issues.deleteIssue({ - issueIdOrKey: issue.key, - }); - - t.pass(); +test.sequential('should remove attachment', async ({ expect }) => { + await client.issues.deleteIssue({ issueIdOrKey: issue.key }); }); diff --git a/tests/integration/version2/issueComments.test.ts b/tests/integration/version2/issueComments.test.ts index 7aea2800c..9ce854671 100644 --- a/tests/integration/version2/issueComments.test.ts +++ b/tests/integration/version2/issueComments.test.ts @@ -1,17 +1,17 @@ import { AxiosError } from 'axios'; -import test from 'ava'; -import { Constants } from '../constants'; -import { cleanupEnvironment, getVersion2Client, prepareEnvironment } from '../utils'; +import { afterAll, beforeAll, test } from 'vitest'; +import { Constants } from '@tests/constants'; +import { cleanupEnvironment, getVersion2Client, prepareEnvironment } from '@tests/utils'; -test.before(async () => { +beforeAll(async () => { await prepareEnvironment(); }); -test.after(async () => { +afterAll(async () => { await cleanupEnvironment(); }); -test.serial('should update comment', async t => { +test.sequential('should update comment', async ({ expect }) => { const client = getVersion2Client({ noCheckAtlassianToken: true }); const issue = await client.issues.createIssue({ @@ -26,7 +26,7 @@ test.serial('should update comment', async t => { }, }); - t.truthy(!!issue); + expect(!!issue).toBeTruthy(); const comment = await client.issueComments .addComment({ @@ -39,7 +39,7 @@ test.serial('should update comment', async t => { throw error; }); - t.truthy(!!comment); + expect(!!comment).toBeTruthy(); const updatedComment = await client.issueComments.updateComment({ issueIdOrKey: issue.key, @@ -47,8 +47,8 @@ test.serial('should update comment', async t => { comment: 'updated comment', }); - t.truthy(!!updatedComment); - t.is(updatedComment.id, comment.id); + expect(!!updatedComment).toBeTruthy(); + expect(updatedComment.id).toBe(comment.id); await client.issues.deleteIssue({ issueIdOrKey: issue.key, diff --git a/tests/integration/version2/issueSearch.test.ts b/tests/integration/version2/issueSearch.test.ts index 8eaddfd7b..0c3c932ac 100644 --- a/tests/integration/version2/issueSearch.test.ts +++ b/tests/integration/version2/issueSearch.test.ts @@ -1,22 +1,22 @@ -import test from 'ava'; -import { cleanupEnvironment, getVersion2Client, prepareEnvironment } from '../utils'; +import { afterAll, beforeAll, test } from 'vitest'; +import { cleanupEnvironment, getVersion2Client, prepareEnvironment } from '@tests/utils'; -test.before(async () => { +beforeAll(async () => { await prepareEnvironment(); }); -test.after(async () => { +afterAll(async () => { await cleanupEnvironment(); }); -test.serial('searchForIssuesUsingJql should correctly calls', async t => { +test.sequential('searchForIssuesUsingJql should correctly calls', async ({ expect }) => { const client = getVersion2Client({ noCheckAtlassianToken: true }); const issues = await client.issueSearch.searchForIssuesUsingJql({ jql: 'assignee=currentuser()', }); - t.is(issues.startAt, 0); - t.is(issues.maxResults, 50); - t.deepEqual(issues.issues, []); + expect(issues.startAt).toBe(0); + expect(issues.maxResults).toBe(50); + expect(issues.issues).toStrictEqual([]); }); diff --git a/tests/integration/version2/issueVotes.test.ts b/tests/integration/version2/issueVotes.test.ts index f459dbef3..617f37a4c 100644 --- a/tests/integration/version2/issueVotes.test.ts +++ b/tests/integration/version2/issueVotes.test.ts @@ -1,42 +1,42 @@ -import test from 'ava'; -import { CreatedIssue } from '../../../src/version2/models'; +import { afterAll, beforeAll, test } from 'vitest'; +import type { CreatedIssue } from '@jirajs/version2/models'; import { cleanupEnvironment, createIssue, getVersion2Client, prepareEnvironment, -} from '../utils'; +} from '@tests/utils'; const client = getVersion2Client(); let createdIssue: CreatedIssue; -test.before(async () => { +beforeAll(async () => { await prepareEnvironment(); createdIssue = await createIssue(); }); -test.after(async () => { +afterAll(async () => { await cleanupEnvironment(); }); -test.serial('should get zero votes on the issue', async t => { +test.sequential('should get zero votes on the issue', async ({ expect }) => { const { votes, hasVoted } = await client.issueVotes.getVotes({ issueIdOrKey: createdIssue.id }); - t.is(votes, 0); - t.falsy(hasVoted); + expect(votes).toBe(0); + expect(hasVoted).toBeFalsy(); }); -test.serial('should add vote to issue', async t => { +test.sequential('should add vote to issue', async ({ expect }) => { await client.issueVotes.addVote({ issueIdOrKey: createdIssue.key }); const { votes, hasVoted } = await client.issueVotes.getVotes({ issueIdOrKey: createdIssue.id }); - t.is(votes, 1); - t.truthy(hasVoted); + expect(votes).toBe(1); + expect(hasVoted).toBeTruthy(); }); -test.serial('should remove vote from issue', async t => { +test.sequential('should remove vote from issue', async ({ expect }) => { await client.issueVotes.removeVote({ issueIdOrKey: createdIssue.key }); const { votes, hasVoted } = await client.issueVotes.getVotes({ issueIdOrKey: createdIssue.id }); - t.is(votes, 0); - t.falsy(hasVoted); + expect(votes).toBe(0); + expect(hasVoted).toBeFalsy(); }); diff --git a/tests/integration/version2/issues.test.ts b/tests/integration/version2/issues.test.ts index 811e08aec..aea27cbed 100644 --- a/tests/integration/version2/issues.test.ts +++ b/tests/integration/version2/issues.test.ts @@ -1,20 +1,20 @@ -import test from 'ava'; -import { Constants } from '../constants'; -import { Version2Models } from '../../../src'; -import { cleanupEnvironment, getVersion2Client, prepareEnvironment } from '../utils'; +import { afterAll, beforeAll, test } from 'vitest'; +import { Version2Models } from '@jirajs'; +import { Constants } from '@tests/constants'; +import { cleanupEnvironment, getVersion2Client, prepareEnvironment } from '@tests/utils'; let createdIssue: Version2Models.CreatedIssue; const client = getVersion2Client(); -test.before(async () => { +beforeAll(async () => { await prepareEnvironment(); }); -test.after(async () => { +afterAll(async () => { await cleanupEnvironment(); }); -test.serial('should create issue', async t => { +test.sequential('should create issue', async ({ expect }) => { createdIssue = await client.issues.createIssue({ fields: { summary: Constants.testIssueSummary, @@ -28,41 +28,41 @@ test.serial('should create issue', async t => { }, }); - t.truthy(!!createdIssue); - t.truthy(!!createdIssue.id); - t.truthy(createdIssue.self); - t.is(createdIssue.key, `${Constants.testProjectKey}-1`); + expect(!!createdIssue).toBeTruthy(); + expect(!!createdIssue.id).toBeTruthy(); + expect(createdIssue.self).toBeTruthy(); + expect(createdIssue.key).toBe(`${Constants.testProjectKey}-1`); }); -test.serial('should get issue', async t => { +test.sequential('should get issue', async ({ expect }) => { const issue = await client.issues.getIssue({ issueIdOrKey: createdIssue.id }); - t.truthy(!!issue); + expect(!!issue).toBeTruthy(); // Fields section - t.is(issue.fields.summary, Constants.testIssueSummary); - t.is(issue.fields.description, Constants.testIssueDescription); - t.is(issue.fields.status.name, 'To Do'); - t.truthy(!!issue.fields.priority); - t.truthy(!!issue.fields.assignee); - t.truthy(!!issue.fields.timetracking); - t.truthy(!!issue.fields.issuetype); - t.truthy(!!issue.fields.watches); - t.truthy(!!issue.fields.created); - t.truthy(!!issue.fields.labels); - t.truthy(!!issue.fields.updated); - t.truthy(!!issue.fields.components); - t.truthy(!!issue.fields.attachment); - t.truthy(!!issue.fields.creator); - t.truthy(!!issue.fields.subtasks); - t.truthy(!!issue.fields.reporter); - t.truthy(!!issue.fields.comment); - t.truthy(!!issue.fields.votes); - t.truthy(!!issue.fields.worklog); + expect(issue.fields.summary).toBe(Constants.testIssueSummary); + expect(issue.fields.description).toBe(Constants.testIssueDescription); + expect(issue.fields.status.name).toBe('To Do'); + expect(!!issue.fields.priority).toBeTruthy(); + expect(!!issue.fields.assignee).toBeTruthy(); + expect(!!issue.fields.timetracking).toBeTruthy(); + expect(!!issue.fields.issuetype).toBeTruthy(); + expect(!!issue.fields.watches).toBeTruthy(); + expect(!!issue.fields.created).toBeTruthy(); + expect(!!issue.fields.labels).toBeTruthy(); + expect(!!issue.fields.updated).toBeTruthy(); + expect(!!issue.fields.components).toBeTruthy(); + expect(!!issue.fields.attachment).toBeTruthy(); + expect(!!issue.fields.creator).toBeTruthy(); + expect(!!issue.fields.subtasks).toBeTruthy(); + expect(!!issue.fields.reporter).toBeTruthy(); + expect(!!issue.fields.comment).toBeTruthy(); + expect(!!issue.fields.votes).toBeTruthy(); + expect(!!issue.fields.worklog).toBeTruthy(); }); -test.serial('should remove issue', async t => { +test.sequential('should remove issue', async ({ expect }) => { const removedIssue = await client.issues.deleteIssue({ issueIdOrKey: createdIssue.id }); - t.is(removedIssue, ''); + expect(removedIssue).toBe(''); }); diff --git a/tests/integration/version2/projectRoles.test.ts b/tests/integration/version2/projectRoles.test.ts index cca4d5102..6844052d5 100644 --- a/tests/integration/version2/projectRoles.test.ts +++ b/tests/integration/version2/projectRoles.test.ts @@ -1,22 +1,22 @@ -import test from 'ava'; -import { Constants } from '../constants'; -import { cleanupEnvironment, getVersion2Client, prepareEnvironment } from '../utils'; +import { afterAll, beforeAll, test } from 'vitest'; +import { Constants } from '@tests/constants'; +import { cleanupEnvironment, getVersion2Client, prepareEnvironment } from '@tests/utils'; const client = getVersion2Client(); -test.before(async () => { +beforeAll(async () => { await prepareEnvironment(); }); -test.after(async () => { +afterAll(async () => { await cleanupEnvironment(); }); -test.serial('should get project roles', async t => { +test.sequential('should get project roles', async ({ expect }) => { const projectRoles = await client.projectRoles.getProjectRoles({ projectIdOrKey: Constants.testProjectKey, }); - t.truthy(!!projectRoles.Administrators); - t.is(typeof projectRoles.Administrators, 'string'); + expect(!!projectRoles.Administrators).toBeTruthy(); + expect(typeof projectRoles.Administrators).toBe('string'); }); diff --git a/tests/integration/version2/projects.test.ts b/tests/integration/version2/projects.test.ts index 0f352a3f2..e521e0885 100644 --- a/tests/integration/version2/projects.test.ts +++ b/tests/integration/version2/projects.test.ts @@ -1,27 +1,27 @@ -import test from 'ava'; -import { Constants } from '../constants'; -import { cleanupEnvironment, getVersion2Client, prepareEnvironment } from '../utils'; +import { afterAll, beforeAll, test } from 'vitest'; +import { Constants } from '@tests/constants'; +import { cleanupEnvironment, getVersion2Client, prepareEnvironment } from '@tests/utils'; -test.before(async () => { +beforeAll(async () => { await prepareEnvironment(); }); -test.after(async () => { +afterAll(async () => { await cleanupEnvironment(); }); -test.serial(`should search ${Constants.testProjectKey} project`, async t => { +test.sequential(`should search ${Constants.testProjectKey} project`, async ({ expect }) => { const client = getVersion2Client(); const projects = await client.projects.searchProjects({ query: Constants.testProjectKey, }); - t.is(projects.total, 1); - t.truthy(projects.isLast); + expect(projects.total).toBe(1); + expect(projects.isLast).toBeTruthy(); const project = projects.values[0]; - t.is(project.key, Constants.testProjectKey); - t.is(project.name, Constants.testProjectName); + expect(project.key).toBe(Constants.testProjectKey); + expect(project.name).toBe(Constants.testProjectName); }); diff --git a/tests/integration/version3/avatars.test.ts b/tests/integration/version3/avatars.test.ts index 61e02326a..edafc993d 100644 --- a/tests/integration/version3/avatars.test.ts +++ b/tests/integration/version3/avatars.test.ts @@ -1,22 +1,22 @@ -import test from 'ava'; -import { Avatar } from '../../../src/version3/models'; -import { getVersion3Client } from '../utils'; +import { test } from 'vitest'; +import type { Avatar } from '@jirajs/version3/models'; +import { getVersion3Client } from '@tests/utils'; const client = getVersion3Client(); let avatar: Avatar | undefined; -test.serial('should get all system avatars', async t => { +test.sequential('should get all system avatars', async ({ expect }) => { const systemAvatars = await client.avatars.getAllSystemAvatars({ type: 'project' }); avatar = systemAvatars.system?.[0]; - t.truthy(!!avatar); + expect(!!avatar).toBeTruthy(); }); -test.serial('should return avatar image with contentType', async t => { +test.sequential('should return avatar image with contentType', async ({ expect }) => { const avatarWithDetails = await client.avatars.getAvatarImageByID({ id: avatar!.id, type: 'project' }); - t.is(avatarWithDetails.contentType, 'image/svg+xml'); - t.truthy(avatarWithDetails.avatar instanceof Uint8Array); + expect(avatarWithDetails.contentType).toBe('image/svg+xml'); + expect(avatarWithDetails.avatar instanceof Uint8Array).toBeTruthy(); }); diff --git a/tests/integration/version3/dashboards.test.ts b/tests/integration/version3/dashboards.test.ts index 5fc9df2d2..5c37fa48d 100644 --- a/tests/integration/version3/dashboards.test.ts +++ b/tests/integration/version3/dashboards.test.ts @@ -1,27 +1,27 @@ -import test from 'ava'; -import { Constants } from '../constants'; -import { getVersion3Client } from '../utils'; -import { Version3Models } from '../../../src'; +import { test } from 'vitest'; +import { Version3Models } from '@jirajs'; +import { Constants } from '@tests/constants'; +import { getVersion3Client } from '@tests/utils'; let dashboard: Version3Models.Dashboard; const client = getVersion3Client(); -test.serial('should create dashboard', async t => { +test.sequential('should create dashboard', async ({ expect }) => { dashboard = await client.dashboards.createDashboard({ name: Constants.testDashboardName, sharePermissions: [], }); - t.truthy(!!dashboard); - t.is(dashboard.name, Constants.testDashboardName); - t.deepEqual(dashboard.sharePermissions, []); + expect(!!dashboard).toBeTruthy(); + expect(dashboard.name).toBe(Constants.testDashboardName); + expect(dashboard.sharePermissions).toStrictEqual([]); }); -test.serial('should remove dashboard', async t => { +test.sequential('should remove dashboard', async ({ expect }) => { const response = await client.dashboards.deleteDashboard({ id: dashboard.id, }); - t.is(typeof response, 'string'); - t.is(response, ''); + expect(typeof response).toBe('string'); + expect(response).toBe(''); }); diff --git a/tests/integration/version3/groups.test.ts b/tests/integration/version3/groups.test.ts index c4e4eaae4..e56e30c00 100644 --- a/tests/integration/version3/groups.test.ts +++ b/tests/integration/version3/groups.test.ts @@ -1,23 +1,23 @@ -import test from 'ava'; -import { Constants } from '..'; -import { getVersion3Client } from '../utils'; +import { test } from 'vitest'; +import { Constants } from '@tests'; +import { getVersion3Client } from '@tests/utils'; const client = getVersion3Client(); -test.serial('should create a group', async t => { +test.sequential('should create a group', async ({ expect }) => { const group = await client.groups.createGroup({ name: Constants.testGroupName, }); - t.truthy(group); - t.is(group.name, Constants.testGroupName); + expect(group).toBeTruthy(); + expect(group.name).toBe(Constants.testGroupName); }); -test.serial('should remove a group', async t => { +test.sequential('should remove a group', async ({ expect }) => { const response = await client.groups.removeGroup({ groupname: Constants.testGroupName, }); - t.is(typeof response, 'string'); - t.is(response.trim(), ''); + expect(typeof response).toBe('string'); + expect(response.trim()).toBe(''); }); diff --git a/tests/integration/version3/issueAttachments.test.ts b/tests/integration/version3/issueAttachments.test.ts index c445ef99b..1e7dfae66 100644 --- a/tests/integration/version3/issueAttachments.test.ts +++ b/tests/integration/version3/issueAttachments.test.ts @@ -1,23 +1,23 @@ import * as fs from 'fs'; -import test from 'ava'; -import { Constants } from '../constants'; -import { Attachment, Issue } from '../../../src/version3/models'; -import { cleanupEnvironment, getVersion3Client, prepareEnvironment } from '../utils'; +import { afterAll, beforeAll, test } from 'vitest'; +import type { Attachment, Issue } from '@jirajs/version3/models'; +import { Constants } from '@tests/constants'; +import { cleanupEnvironment, getVersion3Client, prepareEnvironment } from '@tests/utils'; const client = getVersion3Client({ noCheckAtlassianToken: true }); let issue: Issue; let attachments: Attachment[]; -test.before(async () => { +beforeAll(async () => { await prepareEnvironment(); }); -test.after(async () => { +afterAll(async () => { await cleanupEnvironment(); }); -test.skip('should add attachment', async t => { +test.sequential('should add attachment', async ({ expect }) => { issue = await client.issues.createIssue({ fields: { summary: 'Issue with attachment', @@ -30,7 +30,7 @@ test.skip('should add attachment', async t => { }, }); - t.truthy(!!issue); + expect(!!issue).toBeTruthy(); attachments = await client.issueAttachments.addAttachment({ issueIdOrKey: issue.key, @@ -40,21 +40,17 @@ test.skip('should add attachment', async t => { }, }); - t.truthy(!!attachments); - t.is(attachments[0].filename, 'issueAttachments.test.ts'); - t.is(attachments[0].mimeType, 'video/mp2t'); + expect(!!attachments).toBeTruthy(); + expect(attachments[0].filename).toBe('issueAttachments.test.ts'); + expect(attachments[0].mimeType).toBe('video/mp2t'); }); -test.skip('should getAttachmentContent', async t => { +test.sequential('should getAttachmentContent', async ({ expect }) => { const content = await client.issueAttachments.getAttachmentContent({ id: attachments[0].id }); - t.truthy(Buffer.isBuffer(content)); + expect(Buffer.isBuffer(content)).toBeTruthy(); }); -test.skip('should remove attachment', async t => { - await client.issues.deleteIssue({ - issueIdOrKey: issue.key, - }); - - t.pass(); +test.sequential('should remove attachment', async ({ expect }) => { + await client.issues.deleteIssue({ issueIdOrKey: issue.key }); }); diff --git a/tests/integration/version3/issueComments.test.ts b/tests/integration/version3/issueComments.test.ts index c85629fa3..f8655e093 100644 --- a/tests/integration/version3/issueComments.test.ts +++ b/tests/integration/version3/issueComments.test.ts @@ -1,16 +1,16 @@ -import test from 'ava'; -import { Constants } from '../constants'; -import { cleanupEnvironment, getVersion3Client, prepareEnvironment } from '../utils'; +import { afterAll, beforeAll, test } from 'vitest'; +import { Constants } from '@tests/constants'; +import { cleanupEnvironment, getVersion3Client, prepareEnvironment } from '@tests/utils'; -test.before(async () => { +beforeAll(async () => { await prepareEnvironment(); }); -test.after(async () => { +afterAll(async () => { await cleanupEnvironment(); }); -test.serial('should update comment', async t => { +test.sequential('should update comment', async ({ expect }) => { const client = getVersion3Client({ noCheckAtlassianToken: true }); const issue = await client.issues.createIssue({ @@ -25,7 +25,7 @@ test.serial('should update comment', async t => { }, }); - t.truthy(!!issue); + expect(!!issue).toBeTruthy(); const comment = await client.issueComments.addComment({ issueIdOrKey: issue.key, @@ -46,7 +46,8 @@ test.serial('should update comment', async t => { }, }); - t.truthy(!!comment); + expect(!!comment).toBeTruthy(); + if (!comment.id) throw new Error('Comment ID is not defined'); const updatedComment = await client.issueComments.updateComment({ issueIdOrKey: issue.key, @@ -68,8 +69,8 @@ test.serial('should update comment', async t => { }, }); - t.truthy(!!updatedComment); - t.is(updatedComment.id, comment.id); + expect(!!updatedComment).toBeTruthy(); + expect(updatedComment.id).toBe(comment.id); await client.issues.deleteIssue({ issueIdOrKey: issue.key, diff --git a/tests/integration/version3/issueSearch.test.ts b/tests/integration/version3/issueSearch.test.ts index 4331a29cf..39b9659da 100644 --- a/tests/integration/version3/issueSearch.test.ts +++ b/tests/integration/version3/issueSearch.test.ts @@ -1,22 +1,22 @@ -import test from 'ava'; -import { cleanupEnvironment, getVersion3Client, prepareEnvironment } from '../utils'; +import { afterAll, beforeAll, test } from 'vitest'; +import { cleanupEnvironment, getVersion3Client, prepareEnvironment } from '@tests/utils'; -test.before(async () => { +beforeAll(async () => { await prepareEnvironment(); }); -test.after(async () => { +afterAll(async () => { await cleanupEnvironment(); }); -test.serial('searchForIssuesUsingJql should correctly calls', async t => { +test.sequential('searchForIssuesUsingJql should correctly calls', async ({ expect }) => { const client = getVersion3Client({ noCheckAtlassianToken: true }); const issues = await client.issueSearch.searchForIssuesUsingJql({ jql: 'assignee=currentuser()', }); - t.is(issues.startAt, 0); - t.is(issues.maxResults, 50); - t.deepEqual(issues.issues, []); + expect(issues.startAt).toBe(0); + expect(issues.maxResults).toBe(50); + expect(issues.issues).toStrictEqual([]); }); diff --git a/tests/integration/version3/issueVotes.test.ts b/tests/integration/version3/issueVotes.test.ts index 97c11f1dd..e450485a3 100644 --- a/tests/integration/version3/issueVotes.test.ts +++ b/tests/integration/version3/issueVotes.test.ts @@ -1,42 +1,45 @@ -import test from 'ava'; -import { CreatedIssue } from '../../../src/version3/models'; +import { afterAll, beforeAll, test } from 'vitest'; +import type { CreatedIssue } from '@jirajs/version3/models'; import { - cleanupEnvironment, createIssue, getVersion3Client, prepareEnvironment, -} from '../utils'; + cleanupEnvironment, + createIssue, + getVersion3Client, + prepareEnvironment, +} from '@tests/utils'; const client = getVersion3Client(); let createdIssue: CreatedIssue; -test.before(async () => { +beforeAll(async () => { await prepareEnvironment(); createdIssue = await createIssue(); }); -test.after(async () => { +afterAll(async () => { await cleanupEnvironment(); }); -test.serial('should get zero votes on the issue', async t => { +test.sequential('should get zero votes on the issue', async ({ expect }) => { const { votes, hasVoted } = await client.issueVotes.getVotes({ issueIdOrKey: createdIssue.id }); - t.is(votes, 0); - t.falsy(hasVoted); + expect(votes).toBe(0); + expect(hasVoted).toBeFalsy(); }); -test.serial('should add vote to issue', async t => { +test.sequential('should add vote to issue', async ({ expect }) => { await client.issueVotes.addVote({ issueIdOrKey: createdIssue.key }); const { votes, hasVoted } = await client.issueVotes.getVotes({ issueIdOrKey: createdIssue.id }); - t.is(votes, 1); - t.truthy(hasVoted); + expect(votes).toBe(1); + expect(hasVoted).toBeTruthy(); }); -test.serial('should remove vote from issue', async t => { +test.sequential('should remove vote from issue', async ({ expect }) => { await client.issueVotes.removeVote({ issueIdOrKey: createdIssue.key }); const { votes, hasVoted } = await client.issueVotes.getVotes({ issueIdOrKey: createdIssue.id }); - t.is(votes, 0); - t.falsy(hasVoted); + expect(votes).toBe(0); + expect(hasVoted).toBeFalsy(); }); diff --git a/tests/integration/version3/issues.test.ts b/tests/integration/version3/issues.test.ts index 0e1ac5236..c40f39f29 100644 --- a/tests/integration/version3/issues.test.ts +++ b/tests/integration/version3/issues.test.ts @@ -1,20 +1,20 @@ -import test from 'ava'; -import { Constants } from '../constants'; -import { Version3Models } from '../../../src'; -import { cleanupEnvironment, getVersion3Client, prepareEnvironment } from '../utils'; +import { afterAll, beforeAll, test } from 'vitest'; +import { Version3Models } from '@jirajs'; +import { Constants } from '@tests/constants'; +import { cleanupEnvironment, getVersion3Client, prepareEnvironment } from '@tests/utils'; let createdIssue: Version3Models.CreatedIssue; const client = getVersion3Client(); -test.before(async () => { +beforeAll(async () => { await prepareEnvironment(); }); -test.after(async () => { +afterAll(async () => { await cleanupEnvironment(); }); -test.serial('should create issue', async t => { +test.sequential('should create issue', async ({ expect }) => { createdIssue = await client.issues.createIssue({ fields: { summary: Constants.testIssueSummary, @@ -42,50 +42,54 @@ test.serial('should create issue', async t => { }, }); - t.truthy(!!createdIssue); - t.truthy(!!createdIssue.id); - t.truthy(!!createdIssue.self); - t.is(createdIssue.key, `${Constants.testProjectKey}-1`); + expect(!!createdIssue).toBeTruthy(); + expect(!!createdIssue.id).toBeTruthy(); + expect(!!createdIssue.self).toBeTruthy(); + expect(createdIssue.key).toBe(`${Constants.testProjectKey}-1`); }); -test.serial('should get issue', async t => { +test.sequential('should get issue', async ({ expect }) => { const issue = await client.issues.getIssue({ issueIdOrKey: createdIssue.id }); - t.truthy(!!issue); + expect(!!issue).toBeTruthy(); // Fields section - t.is(issue.fields.summary, Constants.testIssueSummary); - t.deepEqual(issue.fields.description, { - content: [{ - content: [{ - text: Constants.testIssueDescription, - type: 'text', - }], - type: 'paragraph', - }], + expect(issue.fields.summary).toBe(Constants.testIssueSummary); + expect(issue.fields.description).toStrictEqual({ + content: [ + { + content: [ + { + text: Constants.testIssueDescription, + type: 'text', + }, + ], + type: 'paragraph', + }, + ], type: 'doc', version: 1, }); - t.is(issue.fields.status.name, 'To Do'); - t.truthy(!!issue.fields.priority); - t.truthy(!!issue.fields.assignee); - t.truthy(!!issue.fields.timetracking); - t.truthy(!!issue.fields.issuetype); - t.truthy(!!issue.fields.watches); - t.truthy(!!issue.fields.created); - t.truthy(!!issue.fields.labels); - t.truthy(!!issue.fields.updated); - t.truthy(!!issue.fields.components); - t.truthy(!!issue.fields.attachment); - t.truthy(!!issue.fields.creator); - t.truthy(!!issue.fields.subtasks); - t.truthy(!!issue.fields.reporter); - t.truthy(!!issue.fields.comment); - t.truthy(!!issue.fields.votes); - t.truthy(!!issue.fields.worklog); + expect(issue.fields.status.name).toBe('To Do'); + expect(!!issue.fields.priority).toBeTruthy(); + expect(!!issue.fields.assignee).toBeTruthy(); + expect(!!issue.fields.timetracking).toBeTruthy(); + expect(!!issue.fields.issuetype).toBeTruthy(); + expect(!!issue.fields.watches).toBeTruthy(); + expect(!!issue.fields.created).toBeTruthy(); + expect(!!issue.fields.labels).toBeTruthy(); + expect(!!issue.fields.updated).toBeTruthy(); + expect(!!issue.fields.components).toBeTruthy(); + expect(!!issue.fields.attachment).toBeTruthy(); + expect(!!issue.fields.creator).toBeTruthy(); + expect(!!issue.fields.subtasks).toBeTruthy(); + expect(!!issue.fields.reporter).toBeTruthy(); + expect(!!issue.fields.comment).toBeTruthy(); + expect(!!issue.fields.votes).toBeTruthy(); + expect(!!issue.fields.worklog).toBeTruthy(); }); -test.serial('should update issue description', async t => { +test.sequential('should update issue description', async ({ expect }) => { await client.issues.editIssue({ issueIdOrKey: createdIssue.id, fields: { @@ -95,21 +99,25 @@ test.serial('should update issue description', async t => { const issue = await client.issues.getIssue({ issueIdOrKey: createdIssue.id }); - t.deepEqual(issue.fields.description, { - content: [{ - content: [{ - text: 'this is a new description', - type: 'text', - }], - type: 'paragraph', - }], + expect(issue.fields.description).toStrictEqual({ + content: [ + { + content: [ + { + text: 'this is a new description', + type: 'text', + }, + ], + type: 'paragraph', + }, + ], type: 'doc', version: 1, }); }); -test.serial('should remove issue', async t => { +test.sequential('should remove issue', async ({ expect }) => { const removedIssue = await client.issues.deleteIssue({ issueIdOrKey: createdIssue.id }); - t.is(removedIssue, ''); + expect(removedIssue).toBe(''); }); diff --git a/tests/integration/version3/projectRoles.test.ts b/tests/integration/version3/projectRoles.test.ts index e01d77b41..c67662b41 100644 --- a/tests/integration/version3/projectRoles.test.ts +++ b/tests/integration/version3/projectRoles.test.ts @@ -1,22 +1,22 @@ -import test from 'ava'; -import { Constants } from '../constants'; -import { cleanupEnvironment, getVersion3Client, prepareEnvironment } from '../utils'; +import { afterAll, beforeAll, test } from 'vitest'; +import { Constants } from '@tests/constants'; +import { cleanupEnvironment, getVersion3Client, prepareEnvironment } from '@tests/utils'; const client = getVersion3Client(); -test.before(async () => { +beforeAll(async () => { await prepareEnvironment(); }); -test.after(async () => { +afterAll(async () => { await cleanupEnvironment(); }); -test.serial('should get project roles', async t => { +test.sequential('should get project roles', async ({ expect }) => { const projectRoles = await client.projectRoles.getProjectRoles({ projectIdOrKey: Constants.testProjectKey, }); - t.truthy(!!projectRoles.Administrators); - t.is(typeof projectRoles.Administrators, 'string'); + expect(!!projectRoles.Administrators).toBeTruthy(); + expect(typeof projectRoles.Administrators).toBe('string'); }); diff --git a/tests/integration/version3/projects.test.ts b/tests/integration/version3/projects.test.ts index a9d38f479..11b44de97 100644 --- a/tests/integration/version3/projects.test.ts +++ b/tests/integration/version3/projects.test.ts @@ -1,27 +1,27 @@ -import test from 'ava'; -import { Constants } from '../constants'; -import { cleanupEnvironment, getVersion3Client, prepareEnvironment } from '../utils'; +import { afterAll, beforeAll, test } from 'vitest'; +import { Constants } from '@tests/constants'; +import { cleanupEnvironment, getVersion3Client, prepareEnvironment } from '@tests/utils'; -test.before(async () => { +beforeAll(async () => { await prepareEnvironment(); }); -test.after(async () => { +afterAll(async () => { await cleanupEnvironment(); }); -test.serial(`should search ${Constants.testProjectKey} project`, async t => { +test.sequential(`should search ${Constants.testProjectKey} project`, async ({ expect }) => { const client = getVersion3Client(); const projects = await client.projects.searchProjects({ query: Constants.testProjectKey, }); - t.is(projects.total, 1); - t.truthy(projects.isLast); + expect(projects.total).toBe(1); + expect(projects.isLast).toBeTruthy(); const project = projects.values[0]; - t.is(project.key, Constants.testProjectKey); - t.is(project.name, Constants.testProjectName); + expect(project.key).toBe(Constants.testProjectKey); + expect(project.name).toBe(Constants.testProjectName); }); diff --git a/tests/unit/agile/board.test.ts b/tests/unit/agile/board.test.ts index 4eaa3e6c5..e41fc890e 100644 --- a/tests/unit/agile/board.test.ts +++ b/tests/unit/agile/board.test.ts @@ -1,23 +1,23 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { AgileClient } from '../../../src'; +import { test } from 'vitest'; +import { AgileClient } from '@jirajs'; const config = { host: 'http://localhost' }; -test('getBoard should accept following parameters', t => { +test('getBoard should accept following parameters', ({ expect }) => { const client = new AgileClient(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); client.board.getBoard({ boardId: 10100 }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/agile/1.0/board/10100'); + expect(callArgument.url).toBe('/rest/agile/1.0/board/10100'); }); -test('getAllSprints should accept following parameters', t => { +test('getAllSprints should accept following parameters', ({ expect }) => { const client = new AgileClient(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -28,12 +28,12 @@ test('getAllSprints should accept following parameters', t => { state: 'testState', }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/agile/1.0/board/10111/sprint'); - t.like(callArgument.params, { + expect(callArgument.url).toBe('/rest/agile/1.0/board/10111/sprint'); + expect(callArgument.params).toMatchObject({ startAt: 0, maxResults: 100, state: 'testState', diff --git a/tests/unit/agile/issue.test.ts b/tests/unit/agile/issue.test.ts index 3c08b65fd..f641d6f59 100644 --- a/tests/unit/agile/issue.test.ts +++ b/tests/unit/agile/issue.test.ts @@ -1,16 +1,16 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { AgileClient } from '../../../src'; +import { test } from 'vitest'; +import { AgileClient } from '@jirajs'; -test('getIssue should accept follow parameters', t => { +test('getIssue should accept follow parameters', ({ expect }) => { const client = new AgileClient({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); client.issue.getIssue({ issueIdOrKey: 'key' }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/agile/1.0/issue/key'); + expect(callArgument.url).toBe('/rest/agile/1.0/issue/key'); }); diff --git a/tests/unit/agile/sprint.test.ts b/tests/unit/agile/sprint.test.ts index 9a771781b..f76dc51af 100644 --- a/tests/unit/agile/sprint.test.ts +++ b/tests/unit/agile/sprint.test.ts @@ -1,8 +1,8 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { AgileClient } from '../../../src'; +import { test } from 'vitest'; +import { AgileClient } from '@jirajs'; -test('moveIssuesToSprintAndRank should accept follow parameters', t => { +test('moveIssuesToSprintAndRank should accept follow parameters', ({ expect }) => { const client = new AgileClient({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -11,12 +11,12 @@ test('moveIssuesToSprintAndRank should accept follow parameters', t => { issues: ['first_issue', 'second_issue'], }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/agile/1.0/sprint/10100/issue'); - t.like(callArgument.data, { + expect(callArgument.url).toBe('/rest/agile/1.0/sprint/10100/issue'); + expect(callArgument.data).toMatchObject({ issues: ['first_issue', 'second_issue'], }); }); diff --git a/tests/unit/clients/baseClient.test.ts b/tests/unit/clients/baseClient.test.ts index 5d5d01f93..27e97e048 100644 --- a/tests/unit/clients/baseClient.test.ts +++ b/tests/unit/clients/baseClient.test.ts @@ -1,10 +1,10 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { BaseClient } from '../../../src'; +import { test } from 'vitest'; +import { BaseClient } from '@jirajs'; const XAtlassianToken = 'X-Atlassian-Token'; -test('should create X-Atlassian-Token: no-check header in requests', t => { +test('should create X-Atlassian-Token: no-check header in requests', ({ expect }) => { const client = new BaseClient({ host: 'http://localhost', noCheckAtlassianToken: true, @@ -13,44 +13,42 @@ test('should create X-Atlassian-Token: no-check header in requests', t => { // @ts-ignore const defaultHeaders: Record = client.instance.defaults.headers || {}; - t.is(defaultHeaders[XAtlassianToken], 'no-check'); + expect(defaultHeaders[XAtlassianToken]).toBe('no-check'); const sendRequestStub = sinon.stub(client, 'sendRequest'); // @ts-ignore client.sendRequest({}, undefined); // TODO problem with never type - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.headers?.[XAtlassianToken], undefined); + expect(callArgument.headers?.[XAtlassianToken]).toBe(undefined); }); -test('should not create X-Atlassian-Token: no-check header in requests case 1', t => { +test('should not create X-Atlassian-Token: no-check header in requests case 1', ({ expect }) => { const client = new BaseClient({ host: 'http://localhost', noCheckAtlassianToken: false, }); - // @ts-ignore const defaultHeaders: Record = client.instance.defaults.headers || {}; - t.is(defaultHeaders[XAtlassianToken], undefined); + expect(defaultHeaders[XAtlassianToken]).toBe(undefined); const sendRequestStub = sinon.stub(client, 'sendRequest'); // @ts-ignore client.sendRequest({}, undefined); // TODO problem with never type - - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.headers?.[XAtlassianToken], undefined); + expect(callArgument.headers?.[XAtlassianToken]).toBe(undefined); }); -test('should create X-Atlassian-Token: no-check header in requests case 2', t => { +test('should create X-Atlassian-Token: no-check header in requests case 2', ({ expect }) => { const client = new BaseClient({ host: 'http://localhost', }); @@ -58,38 +56,34 @@ test('should create X-Atlassian-Token: no-check header in requests case 2', t => // @ts-ignore const defaultHeaders: Record = client.instance.defaults.headers || {}; - t.is(defaultHeaders[XAtlassianToken], undefined); + expect(defaultHeaders[XAtlassianToken]).toBe(undefined); const sendRequestStub = sinon.stub(client, 'sendRequest'); // @ts-ignore client.sendRequest({}, undefined); // TODO problem with never type - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.headers?.[XAtlassianToken], undefined); + expect(callArgument.headers?.[XAtlassianToken]).toBe(undefined); }); -test('shouldn\'t display error message for correct host urls', t => { +test("shouldn't display error message for correct host urls", ({ expect }) => { // eslint-disable-next-line no-new new BaseClient({ host: 'http://localhost', }); // eslint-disable-next-line no-new - new BaseClient({ - host: 'https://localhost/', - }); - - t.pass(); + new BaseClient({ host: 'https://localhost/' }); }); -test('should display error message for incorrect host url', t => { - const errorMessage = 'Couldn\'t parse the host URL. Perhaps you forgot to add \'http://\' or \'https://\' at the beginning of the URL?'; +test('should display error message for incorrect host url', ({ expect }) => { + const errorMessage = "Couldn't parse the host URL. Perhaps you forgot to add 'http://' or 'https://' at the beginning of the URL?"; - t.throws(() => new BaseClient({ host: '' }), { message: errorMessage }); - t.throws(() => new BaseClient({ host: 'localhost' }), { message: errorMessage }); - t.throws(() => new BaseClient({ host: 'example.com' }), { message: errorMessage }); + expect(() => new BaseClient({ host: '' })).toThrowError(errorMessage); + expect(() => new BaseClient({ host: 'localhost' })).toThrowError(errorMessage); + expect(() => new BaseClient({ host: 'example.com' })).toThrowError(errorMessage); }); diff --git a/tests/unit/createClient.test.ts b/tests/unit/createClient.test.ts index 7005eb469..802189eae 100644 --- a/tests/unit/createClient.test.ts +++ b/tests/unit/createClient.test.ts @@ -1,42 +1,47 @@ -import test from 'ava'; +import { test } from 'vitest'; import { - AgileClient, BaseClient, ClientType, createClient, Version2Client, Version3Client, -} from '../../src'; + AgileClient, + BaseClient, + ClientType, + createClient, + Version2Client, + Version3Client, +} from '@jirajs'; const defaultConfig = { host: 'http://localhost' }; -test('should create Agile client', t => { +test('should create Agile client', ({ expect }) => { const client = createClient(ClientType.Agile, defaultConfig); - t.truthy(!!client); - t.truthy(client instanceof AgileClient); + expect(!!client).toBeTruthy(); + expect(client instanceof AgileClient).toBeTruthy(); }); -test('should create Version 2 client', t => { +test('should create Version 2 client', ({ expect }) => { const client = createClient(ClientType.Version2, defaultConfig); - t.truthy(!!client); - t.truthy(client instanceof Version2Client); + expect(!!client).toBeTruthy(); + expect(client instanceof Version2Client).toBeTruthy(); }); -test('should create Version 3 client', t => { +test('should create Version 3 client', ({ expect }) => { const client = createClient(ClientType.Version3, defaultConfig); - t.truthy(!!client); - t.truthy(client instanceof Version3Client); + expect(!!client).toBeTruthy(); + expect(client instanceof Version3Client).toBeTruthy(); }); -test('should create ServiceDesk client', t => { +test('should create ServiceDesk client', ({ expect }) => { const client = createClient(ClientType.Version2, defaultConfig); - t.truthy(!!client); - t.truthy(client instanceof Version2Client); + expect(!!client).toBeTruthy(); + expect(client instanceof Version2Client).toBeTruthy(); }); -test('should create Base client', t => { +test('should create Base client', ({ expect }) => { // @ts-ignore const client = createClient('baseClient', defaultConfig); - t.truthy(!!client); - t.truthy(client instanceof BaseClient); + expect(!!client).toBeTruthy(); + expect(client instanceof BaseClient).toBeTruthy(); }); diff --git a/tests/unit/index.test.ts b/tests/unit/index.test.ts index 5c314ad89..8ea9c38d5 100644 --- a/tests/unit/index.test.ts +++ b/tests/unit/index.test.ts @@ -1,10 +1,8 @@ -import test from 'ava'; +import { test } from 'vitest'; import { AgileClient, AgileModels, AgileParameters, - Callback, - Config, ServiceDeskClient, ServiceDeskModels, ServiceDeskParameters, @@ -14,68 +12,70 @@ import { Version3Client, Version3Models, Version3Parameters, -} from '../../src'; + type Callback, + type Config, +} from '@jirajs'; -test('Callback should be defined', t => { +test('Callback should be defined', ({ expect }) => { const callback: Callback = () => {}; - t.truthy(!!callback); + expect(!!callback).toBeTruthy(); }); -test('Config should be defined', t => { +test('Config should be defined', ({ expect }) => { const config: Config = { host: 'http://localhost', }; - t.truthy(!!config); - t.truthy(!!config.host); - t.is(typeof config.host, 'string'); + expect(!!config).toBeTruthy(); + expect(!!config.host).toBeTruthy(); + expect(typeof config.host).toBe('string'); }); -test('Agile client should be defined', t => { - t.truthy(!!AgileClient); +test('Agile client should be defined', ({ expect }) => { + expect(!!AgileClient).toBeTruthy(); }); -test('Agile models should be defined', t => { - t.truthy(!!AgileModels); +test('Agile models should be defined', ({ expect }) => { + expect(!!AgileModels).toBeTruthy(); }); -test('Agile parameters should be defined', t => { - t.truthy(!!AgileParameters); +test('Agile parameters should be defined', ({ expect }) => { + expect(!!AgileParameters).toBeTruthy(); }); -test('Version2 client should be defined', t => { - t.truthy(!!Version2Client); +test('Version2 client should be defined', ({ expect }) => { + expect(!!Version2Client).toBeTruthy(); }); -test('Version2 models should be defined', t => { - t.truthy(!!Version2Models); +test('Version2 models should be defined', ({ expect }) => { + expect(!!Version2Models).toBeTruthy(); }); -test('Version2 parameters should be defined', t => { - t.truthy(!!Version2Parameters); +test('Version2 parameters should be defined', ({ expect }) => { + expect(!!Version2Parameters).toBeTruthy(); }); -test('Version3 client should be defined', t => { - t.truthy(!!Version3Client); +test('Version3 client should be defined', ({ expect }) => { + expect(!!Version3Client).toBeTruthy(); }); -test('Version3 models should be defined', t => { - t.truthy(!!Version3Models); +test('Version3 models should be defined', ({ expect }) => { + expect(!!Version3Models).toBeTruthy(); }); -test('Version3 parameters should be defined', t => { - t.truthy(!!Version3Parameters); +test('Version3 parameters should be defined', ({ expect }) => { + expect(!!Version3Parameters).toBeTruthy(); }); -test('ServiceDesk client should be defined', t => { - t.truthy(!!ServiceDeskClient); +test('ServiceDesk client should be defined', ({ expect }) => { + expect(!!ServiceDeskClient).toBeTruthy(); }); -test('ServiceDesk models should be defined', t => { - t.truthy(!!ServiceDeskModels); +test('ServiceDesk models should be defined', ({ expect }) => { + expect(!!ServiceDeskModels).toBeTruthy(); }); -test('ServiceDesk parameters should be defined', t => { - t.truthy(!!ServiceDeskParameters); +test('ServiceDesk parameters should be defined', ({ expect }) => { + expect(!!ServiceDeskParameters).toBeTruthy(); }); diff --git a/tests/unit/services/authenticationService.test.ts b/tests/unit/services/authenticationService.test.ts index 5fe5f758e..769b704dc 100644 --- a/tests/unit/services/authenticationService.test.ts +++ b/tests/unit/services/authenticationService.test.ts @@ -1,16 +1,16 @@ -import test from 'ava'; -import { Config } from '../../../src'; -import { getAuthenticationToken } from '../../../src/services/authenticationService'; +import { test } from 'vitest'; +import type { Config } from '@jirajs'; +import { getAuthenticationToken } from '@jirajs/services/authenticationService'; -test('should return undefined when authentication does not used', async t => { +test('should return undefined when authentication does not used', async ({ expect }) => { const authentication = undefined; const token = await getAuthenticationToken(authentication); - t.is(token, undefined); + expect(token).toBe(undefined); }); -test('should return Basic authentication token for password case', async t => { +test('should return Basic authentication token for password case', async ({ expect }) => { const authentication: Config.Authentication = { basic: { username: 'test_username', @@ -20,10 +20,10 @@ test('should return Basic authentication token for password case', async t => { const token = await getAuthenticationToken(authentication); - t.is(token, 'Basic dGVzdF91c2VybmFtZTp0ZXN0X3Bhc3N3b3Jk'); + expect(token).toBe('Basic dGVzdF91c2VybmFtZTp0ZXN0X3Bhc3N3b3Jk'); }); -test('should return Basic authentication token for apiToken case', async t => { +test('should return Basic authentication token for apiToken case', async ({ expect }) => { const authentication: Config.Authentication = { basic: { email: 'test_email@test.qwe', @@ -33,15 +33,15 @@ test('should return Basic authentication token for apiToken case', async t => { const token = await getAuthenticationToken(authentication); - t.is(token, 'Basic dGVzdF9lbWFpbEB0ZXN0LnF3ZTp0ZXN0X2FwaVRva2Vu'); + expect(token).toBe('Basic dGVzdF9lbWFpbEB0ZXN0LnF3ZTp0ZXN0X2FwaVRva2Vu'); }); -test('should generate Bearer Header correctly for Personal Access Token', async t => { +test('should generate Bearer Header correctly for Personal Access Token', async ({ expect }) => { const authentication: Config.Authentication = { personalAccessToken: 'secretPAT', }; const token = await getAuthenticationToken(authentication); - t.is(token, 'Bearer secretPAT'); + expect(token).toBe('Bearer secretPAT'); }); diff --git a/tests/unit/version2/appMigration.test.ts b/tests/unit/version2/appMigration.test.ts index 65642c013..6933af1c3 100644 --- a/tests/unit/version2/appMigration.test.ts +++ b/tests/unit/version2/appMigration.test.ts @@ -1,6 +1,6 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { Version2Client } from '../../../src'; +import { test } from 'vitest'; +import { Version2Client } from '@jirajs'; const entity = { entityId: 1, @@ -10,7 +10,7 @@ const entity = { const config = { host: 'http://localhost' }; -test('updateEntityPropertiesValue should accept actual parameters', t => { +test('updateEntityPropertiesValue should accept actual parameters', ({ expect }) => { const client = new Version2Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -23,10 +23,10 @@ test('updateEntityPropertiesValue should accept actual parameters', t => { const callArgument = sendRequestStub.getCall(0).args[0]; - t.truthy(sendRequestStub.calledOnce); - t.truthy(callArgument.url!.endsWith('1')); - t.is(callArgument.headers!['Atlassian-Transfer-Id'], '2'); - t.is(callArgument.headers!['Atlassian-Account-Id'], '3'); - t.is(callArgument.headers!['Content-Type'], 'application/json'); - t.deepEqual(callArgument.data, [entity]); + expect(sendRequestStub.calledOnce).toBeTruthy(); + expect(callArgument.url!.endsWith('1')).toBeTruthy(); + expect(callArgument.headers!['Atlassian-Transfer-Id']).toBe('2'); + expect(callArgument.headers!['Atlassian-Account-Id']).toBe('3'); + expect(callArgument.headers!['Content-Type']).toBe('application/json'); + expect(callArgument.data).toStrictEqual([entity]); }); diff --git a/tests/unit/version2/issueComments.test.ts b/tests/unit/version2/issueComments.test.ts index e28b01f5b..9b6e25c70 100644 --- a/tests/unit/version2/issueComments.test.ts +++ b/tests/unit/version2/issueComments.test.ts @@ -1,23 +1,23 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { IssueComments, Version2Client } from '../../../src/version2'; +import { test } from 'vitest'; +import { IssueComments, Version2Client } from '@jirajs/version2'; const client = new Version2Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); const issueComments = new IssueComments(client); -test('addComment should accept follow parameters', t => { +test('addComment should accept follow parameters', ({ expect }) => { issueComments.addComment({ issueIdOrKey: 'key', comment: 'test comment', }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/2/issue/key/comment'); - t.deepEqual(callArgument.data, { + expect(callArgument.url).toBe('/rest/api/2/issue/key/comment'); + expect(callArgument.data).toStrictEqual({ body: 'test comment', author: undefined, created: undefined, diff --git a/tests/unit/version2/issueFields.test.ts b/tests/unit/version2/issueFields.test.ts index 9d3b264cc..c09b6cacc 100644 --- a/tests/unit/version2/issueFields.test.ts +++ b/tests/unit/version2/issueFields.test.ts @@ -1,12 +1,12 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { Version2Client } from '../../../src'; +import { test } from 'vitest'; +import { Version2Client } from '@jirajs'; -test('getFields should calls without parameters', t => { +test('getFields should calls without parameters', ({ expect }) => { const client = new Version2Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); client.issueFields.getFields(); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); }); diff --git a/tests/unit/version2/issueLinks.test.ts b/tests/unit/version2/issueLinks.test.ts index 77fd74d6f..5a901638f 100644 --- a/tests/unit/version2/issueLinks.test.ts +++ b/tests/unit/version2/issueLinks.test.ts @@ -1,23 +1,23 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { IssueLinks, Version2Client } from '../../../src/version2'; +import { test } from 'vitest'; +import { IssueLinks, Version2Client } from '@jirajs/version2'; const client = new Version2Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); const issueLinks = new IssueLinks(client); -test('linkIssues should calls without parameters', t => { +test('linkIssues should calls without parameters', ({ expect }) => { issueLinks.linkIssues({ type: {}, inwardIssue: {}, outwardIssue: {}, }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.deepEqual(callArgument.data, { + expect(callArgument.data).toStrictEqual({ comment: undefined, inwardIssue: {}, outwardIssue: {}, diff --git a/tests/unit/version2/issuePriorities.test.ts b/tests/unit/version2/issuePriorities.test.ts index 6322b75de..bcfec41cb 100644 --- a/tests/unit/version2/issuePriorities.test.ts +++ b/tests/unit/version2/issuePriorities.test.ts @@ -1,13 +1,13 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { IssuePriorities, Version2Client } from '../../../src/version2'; +import { test } from 'vitest'; +import { IssuePriorities, Version2Client } from '@jirajs/version2'; const client = new Version2Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); const issuePriorities = new IssuePriorities(client); -test('getPriorities should calls without parameters', t => { +test('getPriorities should calls without parameters', ({ expect }) => { issuePriorities.getPriorities(); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); }); diff --git a/tests/unit/version2/issueRemoteLinks.test.ts b/tests/unit/version2/issueRemoteLinks.test.ts index 8111d8e81..16d01f9ae 100644 --- a/tests/unit/version2/issueRemoteLinks.test.ts +++ b/tests/unit/version2/issueRemoteLinks.test.ts @@ -1,12 +1,12 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { IssueRemoteLinks, Version2Client } from '../../../src/version2'; +import { test } from 'vitest'; +import { IssueRemoteLinks, Version2Client } from '@jirajs/version2'; const client = new Version2Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); const issueRemoteLinks = new IssueRemoteLinks(client); -test('createOrUpdateRemoteIssueLink should accept follow parameters', t => { +test('createOrUpdateRemoteIssueLink should accept follow parameters', ({ expect }) => { issueRemoteLinks.createOrUpdateRemoteIssueLink({ issueIdOrKey: 'issue.key', object: { @@ -16,12 +16,12 @@ test('createOrUpdateRemoteIssueLink should accept follow parameters', t => { }, }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/2/issue/issue.key/remotelink'); - t.deepEqual(callArgument.data, { + expect(callArgument.url).toBe('/rest/api/2/issue/issue.key/remotelink'); + expect(callArgument.data).toStrictEqual({ application: undefined, globalId: undefined, relationship: undefined, diff --git a/tests/unit/version2/issueSearch.test.ts b/tests/unit/version2/issueSearch.test.ts index 4b85503a5..06079ad87 100644 --- a/tests/unit/version2/issueSearch.test.ts +++ b/tests/unit/version2/issueSearch.test.ts @@ -1,23 +1,23 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { IssueSearch, Version2Client } from '../../../src/version2'; +import { test } from 'vitest'; +import { IssueSearch, Version2Client } from '@jirajs/version2'; const config = { host: 'http://localhost' }; -test('should be defined', t => { - t.truthy(!!IssueSearch); +test('should be defined', ({ expect }) => { + expect(!!IssueSearch).toBeTruthy(); }); -test('searchForIssuesUsingJql should calls without parameters', t => { +test('searchForIssuesUsingJql should calls without parameters', ({ expect }) => { const client = new Version2Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); client.issueSearch.searchForIssuesUsingJql(); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); }); -test('searchForIssuesUsingJql should accept follow parameters', t => { +test('searchForIssuesUsingJql should accept follow parameters', ({ expect }) => { const client = new Version2Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -27,11 +27,11 @@ test('searchForIssuesUsingJql should accept follow parameters', t => { fields: ['key', 'summary'], }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.deepEqual(callArgument.params, { + expect(callArgument.params).toStrictEqual({ expand: undefined, fields: ['key', 'summary'], fieldsByKeys: undefined, @@ -43,7 +43,7 @@ test('searchForIssuesUsingJql should accept follow parameters', t => { }); }); -test('searchForIssuesUsingJqlPost should accept follow parameters', t => { +test('searchForIssuesUsingJqlPost should accept follow parameters', ({ expect }) => { const client = new Version2Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -52,11 +52,11 @@ test('searchForIssuesUsingJqlPost should accept follow parameters', t => { expand: ['changelog'], }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.deepEqual(callArgument.data, { + expect(callArgument.data).toStrictEqual({ expand: ['changelog'], fields: undefined, fieldsByKeys: undefined, diff --git a/tests/unit/version2/issueVotes.test.ts b/tests/unit/version2/issueVotes.test.ts index 371acb610..1c885b509 100644 --- a/tests/unit/version2/issueVotes.test.ts +++ b/tests/unit/version2/issueVotes.test.ts @@ -1,17 +1,17 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { IssueVotes } from '../../../src/version2'; -import { Version2Client } from '../../../src'; +import { test } from 'vitest'; +import { Version2Client } from '@jirajs'; +import { IssueVotes } from '@jirajs/version2'; const client = new Version2Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); const issueVote = new IssueVotes(client); -test("should contains 'Content-Type'", t => { +test("should contains 'Content-Type'", ({ expect }) => { issueVote.addVote({ issueIdOrKey: 'TEST-2' }); - t.truthy(sendRequestStub.calledOnce); - t.truthy( + expect(sendRequestStub.calledOnce).toBeTruthy(); + expect( sendRequestStub.lastCall.calledWith({ url: '/rest/api/2/issue/TEST-2/votes', method: 'POST', @@ -19,5 +19,5 @@ test("should contains 'Content-Type'", t => { 'Content-Type': 'application/json', }, }), - ); + ).toBeTruthy(); }); diff --git a/tests/unit/version2/issueWatcher.test.ts b/tests/unit/version2/issueWatcher.test.ts index a6111c524..c90bb5a0d 100644 --- a/tests/unit/version2/issueWatcher.test.ts +++ b/tests/unit/version2/issueWatcher.test.ts @@ -1,8 +1,8 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { Version2Client } from '../../../src'; +import { test } from 'vitest'; +import { Version2Client } from '@jirajs'; -test('addWatcher should accept accountId', t => { +test('addWatcher should accept accountId', ({ expect }) => { const client = new Version2Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -10,6 +10,6 @@ test('addWatcher should accept accountId', t => { const callArgument = sendRequestStub.lastCall.args[0]; - t.truthy(sendRequestStub.calledOnce); - t.is(callArgument.data, '101010'); + expect(sendRequestStub.calledOnce).toBeTruthy(); + expect(callArgument.data).toBe('101010'); }); diff --git a/tests/unit/version2/issues.test.ts b/tests/unit/version2/issues.test.ts index 1c6d07535..e9973a776 100644 --- a/tests/unit/version2/issues.test.ts +++ b/tests/unit/version2/issues.test.ts @@ -1,10 +1,10 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { Version2Client } from '../../../src'; +import { test } from 'vitest'; +import { Version2Client } from '@jirajs'; const config = { host: 'http://localhost' }; -test('createIssue should accept follow parameters', t => { +test('createIssue should accept follow parameters', ({ expect }) => { const client = new Version2Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -21,11 +21,11 @@ test('createIssue should accept follow parameters', t => { }, }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.deepEqual(callArgument.data, { + expect(callArgument.data).toStrictEqual({ fields: { summary: 'My issue name', project: { @@ -43,7 +43,7 @@ test('createIssue should accept follow parameters', t => { }); }); -test('editIssue should accept follow parameters', t => { +test('editIssue should accept follow parameters', ({ expect }) => { const client = new Version2Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -55,19 +55,19 @@ test('editIssue should accept follow parameters', t => { }, }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/2/issue/issueId'); - t.deepEqual(callArgument.params, { + expect(callArgument.url).toBe('/rest/api/2/issue/issueId'); + expect(callArgument.params).toStrictEqual({ expand: undefined, notifyUsers: false, overrideEditableFlag: undefined, overrideScreenSecurity: undefined, returnIssue: undefined, }); - t.deepEqual(callArgument.data, { + expect(callArgument.data).toStrictEqual({ fields: { description: 'desc' }, historyMetadata: undefined, properties: undefined, @@ -76,7 +76,7 @@ test('editIssue should accept follow parameters', t => { }); }); -test('doTransition should accept follow parameters', t => { +test('doTransition should accept follow parameters', ({ expect }) => { const client = new Version2Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -92,12 +92,12 @@ test('doTransition should accept follow parameters', t => { }, }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/2/issue/idOrKey/transitions'); - t.deepEqual(callArgument.data, { + expect(callArgument.url).toBe('/rest/api/2/issue/idOrKey/transitions'); + expect(callArgument.data).toStrictEqual({ fields: undefined, historyMetadata: undefined, properties: undefined, @@ -113,16 +113,16 @@ test('doTransition should accept follow parameters', t => { }); }); -test('deleteIssue should accept follow parameters', t => { +test('deleteIssue should accept follow parameters', ({ expect }) => { const client = new Version2Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); - client.issues.deleteIssue({ issueIdOrKey: 'issueKey', deleteSubtasks: 'true' }); + client.issues.deleteIssue({ issueIdOrKey: 'issueKey', deleteSubtasks: true }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/2/issue/issueKey'); - t.deepEqual(callArgument.params, { deleteSubtasks: 'true' }); + expect(callArgument.url).toBe('/rest/api/2/issue/issueKey'); + expect(callArgument.params).toStrictEqual({ deleteSubtasks: true }); }); diff --git a/tests/unit/version2/myself.test.ts b/tests/unit/version2/myself.test.ts index 127796600..5afa2b877 100644 --- a/tests/unit/version2/myself.test.ts +++ b/tests/unit/version2/myself.test.ts @@ -1,13 +1,13 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { Myself, Version2Client } from '../../../src/version2'; +import { test } from 'vitest'; +import { Myself, Version2Client } from '@jirajs/version2'; const client = new Version2Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); const myself = new Myself(client); -test('getCurrentUser should calls without parameters', t => { +test('getCurrentUser should calls without parameters', ({ expect }) => { myself.getCurrentUser(); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); }); diff --git a/tests/unit/version2/projectVersions.test.ts b/tests/unit/version2/projectVersions.test.ts index fe897d41e..b60f9201e 100644 --- a/tests/unit/version2/projectVersions.test.ts +++ b/tests/unit/version2/projectVersions.test.ts @@ -1,14 +1,14 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { ProjectVersions, Version2Client } from '../../../src/version2'; +import { test } from 'vitest'; +import { ProjectVersions, Version2Client } from '@jirajs/version2'; const config = { host: 'http://localhost' }; -test('should be defined', t => { - t.truthy(!!ProjectVersions); +test('should be defined', ({ expect }) => { + expect(!!ProjectVersions).toBeTruthy(); }); -test('getProjectVersionsPaginated should accept follow parameters', t => { +test('getProjectVersionsPaginated should accept follow parameters', ({ expect }) => { const client = new Version2Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -18,12 +18,12 @@ test('getProjectVersionsPaginated should accept follow parameters', t => { orderBy: '-sequence', }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/2/project/StubProjectId/version'); - t.deepEqual(callArgument.params, { + expect(callArgument.url).toBe('/rest/api/2/project/StubProjectId/version'); + expect(callArgument.params).toStrictEqual({ maxResults: 50, orderBy: '-sequence', expand: undefined, @@ -33,33 +33,33 @@ test('getProjectVersionsPaginated should accept follow parameters', t => { }); }); -test('getVersionRelatedIssues should accept follow parameters', t => { +test('getVersionRelatedIssues should accept follow parameters', ({ expect }) => { const client = new Version2Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); client.projectVersions.getVersionRelatedIssues({ id: 'RelatedIssueId' }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/2/version/RelatedIssueId/relatedIssueCounts'); + expect(callArgument.url).toBe('/rest/api/2/version/RelatedIssueId/relatedIssueCounts'); }); -test('getProjectVersions should accept follow parameters', t => { +test('getProjectVersions should accept follow parameters', ({ expect }) => { const client = new Version2Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); client.projectVersions.getProjectVersions({ projectIdOrKey: 'TEST' }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/2/project/TEST/versions'); + expect(callArgument.url).toBe('/rest/api/2/project/TEST/versions'); }); -test('createVersion should accept follow parameters', t => { +test('createVersion should accept follow parameters', ({ expect }) => { const client = new Version2Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -68,11 +68,11 @@ test('createVersion should accept follow parameters', t => { name: 'testName', }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.deepEqual(callArgument.data, { + expect(callArgument.data).toStrictEqual({ archived: undefined, description: undefined, expand: undefined, diff --git a/tests/unit/version2/workflowStatuses.test.ts b/tests/unit/version2/workflowStatuses.test.ts index 12a14299a..cb25037ae 100644 --- a/tests/unit/version2/workflowStatuses.test.ts +++ b/tests/unit/version2/workflowStatuses.test.ts @@ -1,13 +1,13 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { Version2Client, WorkflowStatuses } from '../../../src/version2'; +import { test } from 'vitest'; +import { Version2Client, WorkflowStatuses } from '@jirajs/version2'; const client = new Version2Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); const workflowStatuses = new WorkflowStatuses(client); -test('getStatuses should calls without parameters', t => { +test('getStatuses should calls without parameters', ({ expect }) => { workflowStatuses.getStatuses(); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); }); diff --git a/tests/unit/version3/appMigration.test.ts b/tests/unit/version3/appMigration.test.ts index 0d3a860ec..404e82a35 100644 --- a/tests/unit/version3/appMigration.test.ts +++ b/tests/unit/version3/appMigration.test.ts @@ -1,6 +1,6 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { Version3Client } from '../../../src'; +import { test } from 'vitest'; +import { Version3Client } from '@jirajs'; const entity = { entityId: 1, @@ -12,7 +12,7 @@ const config = { host: 'http://localhost', }; -test('updateEntityPropertiesValue should accept actual parameters', t => { +test('updateEntityPropertiesValue should accept actual parameters', ({ expect }) => { const client = new Version3Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -25,10 +25,10 @@ test('updateEntityPropertiesValue should accept actual parameters', t => { const callArgument = sendRequestStub.getCall(0).args[0]; - t.truthy(sendRequestStub.calledOnce); - t.truthy(callArgument.url!.endsWith('1')); - t.is(callArgument.headers!['Atlassian-Transfer-Id'], '2'); - t.is(callArgument.headers!['Atlassian-Account-Id'], '3'); - t.is(callArgument.headers!['Content-Type'], 'application/json'); - t.deepEqual(callArgument.data, [entity]); + expect(sendRequestStub.calledOnce).toBeTruthy(); + expect(callArgument.url!.endsWith('1')).toBeTruthy(); + expect(callArgument.headers!['Atlassian-Transfer-Id']).toBe('2'); + expect(callArgument.headers!['Atlassian-Account-Id']).toBe('3'); + expect(callArgument.headers!['Content-Type']).toBe('application/json'); + expect(callArgument.data).toStrictEqual([entity]); }); diff --git a/tests/unit/version3/issueComments.test.ts b/tests/unit/version3/issueComments.test.ts index d8d9b2440..ba517f367 100644 --- a/tests/unit/version3/issueComments.test.ts +++ b/tests/unit/version3/issueComments.test.ts @@ -1,8 +1,8 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { Version3Client } from '../../../src'; +import { test } from 'vitest'; +import { Version3Client } from '@jirajs'; -test('addComment should accept follow parameters', t => { +test('addComment should accept follow parameters', ({ expect }) => { const client = new Version3Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -15,12 +15,12 @@ test('addComment should accept follow parameters', t => { }, }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/3/issue/key/comment'); - t.deepEqual(callArgument.data, { + expect(callArgument.url).toBe('/rest/api/3/issue/key/comment'); + expect(callArgument.data).toStrictEqual({ author: undefined, body: { type: 'doc', @@ -40,7 +40,7 @@ test('addComment should accept follow parameters', t => { }); }); -test('addComment should accept body string and convert to simple Document', t => { +test('addComment should accept body string and convert to simple Document', ({ expect }) => { const client = new Version3Client({ host: 'http://localhost', }); @@ -51,12 +51,12 @@ test('addComment should accept body string and convert to simple Document', t => comment: 'Comment', }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/3/issue/key/comment'); - t.deepEqual(callArgument.data, { + expect(callArgument.url).toBe('/rest/api/3/issue/key/comment'); + expect(callArgument.data).toStrictEqual({ author: undefined, body: { type: 'doc', diff --git a/tests/unit/version3/issueFields.test.ts b/tests/unit/version3/issueFields.test.ts index 40bbff28b..10027e4b7 100644 --- a/tests/unit/version3/issueFields.test.ts +++ b/tests/unit/version3/issueFields.test.ts @@ -1,12 +1,12 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { Version3Client } from '../../../src'; +import { test } from 'vitest'; +import { Version3Client } from '@jirajs'; -test('getFields should calls without parameters', t => { +test('getFields should calls without parameters', ({ expect }) => { const client = new Version3Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); client.issueFields.getFields(); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); }); diff --git a/tests/unit/version3/issueLinks.test.ts b/tests/unit/version3/issueLinks.test.ts index 0da9540a1..1ed238d21 100644 --- a/tests/unit/version3/issueLinks.test.ts +++ b/tests/unit/version3/issueLinks.test.ts @@ -1,18 +1,18 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { Version3Client } from '../../../src'; +import { test } from 'vitest'; +import { Version3Client } from '@jirajs'; -test('linkIssues should calls without parameters', t => { +test('linkIssues should calls without parameters', ({ expect }) => { const client = new Version3Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); client.issueLinks.linkIssues(); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.deepEqual(callArgument.data, { + expect(callArgument.data).toStrictEqual({ comment: undefined, inwardIssue: undefined, outwardIssue: undefined, diff --git a/tests/unit/version3/issuePriorities.test.ts b/tests/unit/version3/issuePriorities.test.ts index 96d4f7246..cb10216b4 100644 --- a/tests/unit/version3/issuePriorities.test.ts +++ b/tests/unit/version3/issuePriorities.test.ts @@ -1,13 +1,13 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { IssuePriorities, Version3Client } from '../../../src/version3'; +import { test } from 'vitest'; +import { IssuePriorities, Version3Client } from '@jirajs/version3'; const client = new Version3Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); const issuePriorities = new IssuePriorities(client); -test('getPriorities should calls without parameters', t => { +test('getPriorities should calls without parameters', ({ expect }) => { issuePriorities.getPriorities(); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); }); diff --git a/tests/unit/version3/issueRemoteLinks.test.ts b/tests/unit/version3/issueRemoteLinks.test.ts index 98c22fe56..986449e0b 100644 --- a/tests/unit/version3/issueRemoteLinks.test.ts +++ b/tests/unit/version3/issueRemoteLinks.test.ts @@ -1,12 +1,12 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { IssueRemoteLinks, Version3Client } from '../../../src/version3'; +import { test } from 'vitest'; +import { IssueRemoteLinks, Version3Client } from '@jirajs/version3'; const client = new Version3Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); const issueRemoteLinks = new IssueRemoteLinks(client); -test('createOrUpdateRemoteIssueLink should accept following parameters', t => { +test('createOrUpdateRemoteIssueLink should accept following parameters', ({ expect }) => { issueRemoteLinks.createOrUpdateRemoteIssueLink({ issueIdOrKey: 'issue.key', object: { @@ -16,12 +16,12 @@ test('createOrUpdateRemoteIssueLink should accept following parameters', t => { }, }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/3/issue/issue.key/remotelink'); - t.deepEqual(callArgument.data, { + expect(callArgument.url).toBe('/rest/api/3/issue/issue.key/remotelink'); + expect(callArgument.data).toStrictEqual({ object: { url: 'http://localhost/', title: 'Title', diff --git a/tests/unit/version3/issueSearch.test.ts b/tests/unit/version3/issueSearch.test.ts index 8cbd79472..107fc7234 100644 --- a/tests/unit/version3/issueSearch.test.ts +++ b/tests/unit/version3/issueSearch.test.ts @@ -1,23 +1,23 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { IssueSearch, Version3Client } from '../../../src/version3'; +import { test } from 'vitest'; +import { IssueSearch, Version3Client } from '@jirajs/version3'; const config = { host: 'http://localhost' }; -test('should be defined', t => { - t.truthy(!!IssueSearch); +test('should be defined', ({ expect }) => { + expect(!!IssueSearch).toBeTruthy(); }); -test('searchForIssuesUsingJql should calls without parameters', t => { +test('searchForIssuesUsingJql should calls without parameters', ({ expect }) => { const client = new Version3Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); client.issueSearch.searchForIssuesUsingJql(); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); }); -test('searchForIssuesUsingJql should accept follow parameters', t => { +test('searchForIssuesUsingJql should accept follow parameters', ({ expect }) => { const client = new Version3Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -27,11 +27,11 @@ test('searchForIssuesUsingJql should accept follow parameters', t => { fields: ['key', 'summary'], }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.deepEqual(callArgument.params, { + expect(callArgument.params).toStrictEqual({ expand: undefined, fields: ['key', 'summary'], fieldsByKeys: undefined, @@ -43,7 +43,7 @@ test('searchForIssuesUsingJql should accept follow parameters', t => { }); }); -test('searchForIssuesUsingJqlPost should accept follow parameters', t => { +test('searchForIssuesUsingJqlPost should accept follow parameters', ({ expect }) => { const client = new Version3Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -52,11 +52,11 @@ test('searchForIssuesUsingJqlPost should accept follow parameters', t => { expand: ['changelog'], }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.deepEqual(callArgument.data, { + expect(callArgument.data).toStrictEqual({ expand: ['changelog'], fields: undefined, fieldsByKeys: undefined, diff --git a/tests/unit/version3/issueVotes.test.ts b/tests/unit/version3/issueVotes.test.ts index 837e84be4..1bd43b64e 100644 --- a/tests/unit/version3/issueVotes.test.ts +++ b/tests/unit/version3/issueVotes.test.ts @@ -1,17 +1,17 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { IssueVotes } from '../../../src/version3'; -import { Version3Client } from '../../../src'; +import { test } from 'vitest'; +import { Version3Client } from '@jirajs'; +import { IssueVotes } from '@jirajs/version3'; const client = new Version3Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); const issueVote = new IssueVotes(client); -test("should contains 'Content-Type'", t => { +test("should contains 'Content-Type'", ({ expect }) => { issueVote.addVote({ issueIdOrKey: 'TEST-2' }); - t.truthy(sendRequestStub.calledOnce); - t.truthy( + expect(sendRequestStub.calledOnce).toBeTruthy(); + expect( sendRequestStub.lastCall.calledWith({ url: '/rest/api/3/issue/TEST-2/votes', method: 'POST', @@ -19,5 +19,5 @@ test("should contains 'Content-Type'", t => { 'Content-Type': 'application/json', }, }), - ); + ).toBeTruthy(); }); diff --git a/tests/unit/version3/issueWatcher.test.ts b/tests/unit/version3/issueWatcher.test.ts index 3dec7113c..bff7a143a 100644 --- a/tests/unit/version3/issueWatcher.test.ts +++ b/tests/unit/version3/issueWatcher.test.ts @@ -1,8 +1,8 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { Version3Client } from '../../../src'; +import { test } from 'vitest'; +import { Version3Client } from '@jirajs'; -test('addWatcher should accept accountId', t => { +test('addWatcher should accept accountId', ({ expect }) => { const client = new Version3Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -10,6 +10,6 @@ test('addWatcher should accept accountId', t => { const callArgument = sendRequestStub.lastCall.args[0]; - t.truthy(sendRequestStub.calledOnce); - t.is(callArgument.data, '101010'); + expect(sendRequestStub.calledOnce).toBeTruthy(); + expect(callArgument.data).toBe('101010'); }); diff --git a/tests/unit/version3/issues.test.ts b/tests/unit/version3/issues.test.ts index 1852d8c87..f8f462644 100644 --- a/tests/unit/version3/issues.test.ts +++ b/tests/unit/version3/issues.test.ts @@ -1,10 +1,10 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { Version3Client } from '../../../src'; +import { test } from 'vitest'; +import { Version3Client } from '@jirajs'; const config = { host: 'http://localhost' }; -test('createIssue should accept follow parameters', t => { +test('createIssue should accept follow parameters', ({ expect }) => { const client = new Version3Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -22,11 +22,11 @@ test('createIssue should accept follow parameters', t => { }, }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.deepEqual(callArgument.data, { + expect(callArgument.data).toStrictEqual({ fields: { summary: 'gg', project: { @@ -59,7 +59,7 @@ test('createIssue should accept follow parameters', t => { }); }); -test('editIssue should accept follow parameters', t => { +test('editIssue should accept follow parameters', ({ expect }) => { const client = new Version3Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -85,19 +85,19 @@ test('editIssue should accept follow parameters', t => { }, }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/3/issue/issueId'); - t.deepEqual(callArgument.params, { + expect(callArgument.url).toBe('/rest/api/3/issue/issueId'); + expect(callArgument.params).toStrictEqual({ expand: undefined, notifyUsers: false, overrideEditableFlag: undefined, overrideScreenSecurity: undefined, returnIssue: undefined, }); - t.deepEqual(callArgument.data, { + expect(callArgument.data).toStrictEqual({ fields: { description: { content: [ @@ -122,7 +122,7 @@ test('editIssue should accept follow parameters', t => { }); }); -test('doTransition should accept follow parameters', t => { +test('doTransition should accept follow parameters', ({ expect }) => { const client = new Version3Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -138,12 +138,12 @@ test('doTransition should accept follow parameters', t => { }, }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/3/issue/idOrKey/transitions'); - t.deepEqual(callArgument.data, { + expect(callArgument.url).toBe('/rest/api/3/issue/idOrKey/transitions'); + expect(callArgument.data).toStrictEqual({ fields: undefined, historyMetadata: undefined, properties: undefined, @@ -159,16 +159,16 @@ test('doTransition should accept follow parameters', t => { }); }); -test('deleteIssue should accept follow parameters', t => { +test('deleteIssue should accept follow parameters', ({ expect }) => { const client = new Version3Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); - client.issues.deleteIssue({ issueIdOrKey: 'issueKey', deleteSubtasks: 'true' }); + client.issues.deleteIssue({ issueIdOrKey: 'issueKey', deleteSubtasks: true }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/3/issue/issueKey'); - t.deepEqual(callArgument.params, { deleteSubtasks: 'true' }); + expect(callArgument.url).toBe('/rest/api/3/issue/issueKey'); + expect(callArgument.params).toStrictEqual({ deleteSubtasks: true }); }); diff --git a/tests/unit/version3/myself.test.ts b/tests/unit/version3/myself.test.ts index fefe00df1..215f68f78 100644 --- a/tests/unit/version3/myself.test.ts +++ b/tests/unit/version3/myself.test.ts @@ -1,13 +1,13 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { Myself, Version3Client } from '../../../src/version3'; +import { test } from 'vitest'; +import { Myself, Version3Client } from '@jirajs/version3'; const client = new Version3Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); const myself = new Myself(client); -test('getCurrentUser should calls without parameters', t => { +test('getCurrentUser should calls without parameters', ({ expect }) => { myself.getCurrentUser(); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); }); diff --git a/tests/unit/version3/projectVersions.test.ts b/tests/unit/version3/projectVersions.test.ts index b74cde602..ca33b80ca 100644 --- a/tests/unit/version3/projectVersions.test.ts +++ b/tests/unit/version3/projectVersions.test.ts @@ -1,14 +1,14 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { ProjectVersions, Version3Client } from '../../../src/version3'; +import { test } from 'vitest'; +import { ProjectVersions, Version3Client } from '@jirajs/version3'; const config = { host: 'http://localhost' }; -test('should be defined', t => { - t.truthy(!!ProjectVersions); +test('should be defined', ({ expect }) => { + expect(!!ProjectVersions).toBeTruthy(); }); -test('getProjectVersionsPaginated should accept follow parameters', t => { +test('getProjectVersionsPaginated should accept follow parameters', ({ expect }) => { const client = new Version3Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -18,12 +18,12 @@ test('getProjectVersionsPaginated should accept follow parameters', t => { orderBy: '-sequence', }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/3/project/StubProjectId/version'); - t.deepEqual(callArgument.params, { + expect(callArgument.url).toBe('/rest/api/3/project/StubProjectId/version'); + expect(callArgument.params).toStrictEqual({ maxResults: 50, orderBy: '-sequence', expand: undefined, @@ -33,7 +33,7 @@ test('getProjectVersionsPaginated should accept follow parameters', t => { }); }); -test('getVersionRelatedIssues should accept follow parameters', t => { +test('getVersionRelatedIssues should accept follow parameters', ({ expect }) => { const client = new Version3Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -41,27 +41,27 @@ test('getVersionRelatedIssues should accept follow parameters', t => { id: 'RelatedIssueId', }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/3/version/RelatedIssueId/relatedIssueCounts'); + expect(callArgument.url).toBe('/rest/api/3/version/RelatedIssueId/relatedIssueCounts'); }); -test('getProjectVersions should accept follow parameters', t => { +test('getProjectVersions should accept follow parameters', ({ expect }) => { const client = new Version3Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); client.projectVersions.getProjectVersions({ projectIdOrKey: 'TEST' }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.is(callArgument.url, '/rest/api/3/project/TEST/versions'); + expect(callArgument.url).toBe('/rest/api/3/project/TEST/versions'); }); -test('createVersion should accept follow parameters', t => { +test('createVersion should accept follow parameters', ({ expect }) => { const client = new Version3Client(config); const sendRequestStub = sinon.stub(client, 'sendRequest'); @@ -70,11 +70,11 @@ test('createVersion should accept follow parameters', t => { name: 'testName', }); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); const callArgument = sendRequestStub.getCall(0).args[0]; - t.deepEqual(callArgument.data, { + expect(callArgument.data).toStrictEqual({ archived: undefined, description: undefined, expand: undefined, diff --git a/tests/unit/version3/workflowStatuses.test.ts b/tests/unit/version3/workflowStatuses.test.ts index 3e9a8ea72..e4d2e9252 100644 --- a/tests/unit/version3/workflowStatuses.test.ts +++ b/tests/unit/version3/workflowStatuses.test.ts @@ -1,13 +1,13 @@ import * as sinon from 'sinon'; -import test from 'ava'; -import { Version3Client, WorkflowStatuses } from '../../../src/version3'; +import { test } from 'vitest'; +import { Version3Client, WorkflowStatuses } from '@jirajs/version3'; const client = new Version3Client({ host: 'http://localhost' }); const sendRequestStub = sinon.stub(client, 'sendRequest'); const workflowStatuses = new WorkflowStatuses(client); -test('getStatuses should calls without parameters', t => { +test('getStatuses should calls without parameters', ({ expect }) => { workflowStatuses.getStatuses(); - t.truthy(sendRequestStub.calledOnce); + expect(sendRequestStub.calledOnce).toBeTruthy(); }); diff --git a/tsconfig.json b/tsconfig.json index 4b6ad2780..95c27df45 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,6 +7,13 @@ "ES2018", "DOM" ], + "baseUrl": ".", + "paths": { + "@jirajs": ["./src"], + "@jirajs/*": ["./src/*"], + "@tests": ["./tests"], + "@tests/*": ["./tests/*"] + }, "declaration": true, "importHelpers": true, "strict": true, diff --git a/tsconfig.lint.json b/tsconfig.lint.json index b957adc7d..3b3fba413 100644 --- a/tsconfig.lint.json +++ b/tsconfig.lint.json @@ -3,6 +3,7 @@ "include": [ "examples", "src", - "tests" + "tests", + "vitest.config.ts" ] } diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 000000000..8617bc993 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from 'vitest/config'; +import tsconfigPaths from 'vite-tsconfig-paths'; + +export default defineConfig({ + test: { + typecheck: { + enabled: true, + tsconfig: 'tsconfig.lint.json', + }, + setupFiles: ['dotenv/config'], + }, + resolve: { + alias: { + '@jirajs': new URL('./src', import.meta.url).pathname, + '@tests': new URL('./tests', import.meta.url).pathname, + }, + }, + plugins: [tsconfigPaths()], +});