diff --git a/examples/app/package.json b/examples/app/package.json index 307b33868d..7e20b53b89 100644 --- a/examples/app/package.json +++ b/examples/app/package.json @@ -35,7 +35,7 @@ "source-map-support": "^0.5.21", "tsx": "^4.19.2", "typescript": "^5.7.3", - "vitest": "^2.0.5" + "vitest": "^3.0.5" }, "dependencies": { "@aws-lambda-powertools/batch": "^2.13.1", diff --git a/layers/tests/unit/layer-publisher.test.ts b/layers/tests/unit/layer-publisher.test.ts index 83b92f3b7a..66a5dc3900 100644 --- a/layers/tests/unit/layer-publisher.test.ts +++ b/layers/tests/unit/layer-publisher.test.ts @@ -40,5 +40,5 @@ describe('Class: LayerPublisherStack', () => { Name: '/layers/powertools-layer-arn', Type: 'String', }); - }); + }, 120000); }); diff --git a/package-lock.json b/package-lock.json index af8218ab84..4ef5cef2f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "@biomejs/biome": "^1.9.4", "@types/aws-lambda": "^8.10.147", "@types/node": "^22.12.0", - "@vitest/coverage-v8": "^2.1.8", + "@vitest/coverage-v8": "^3.0.5", "husky": "^9.1.7", "lerna": "8.1.2", "lint-staged": "^15.4.3", @@ -40,7 +40,7 @@ "typedoc-plugin-missing-exports": "^3.1.0", "typedoc-plugin-zod": "^1.3.1", "typescript": "^5.7.3", - "vitest": "^2.0.5" + "vitest": "^3.0.5" }, "engines": { "node": ">=18" @@ -75,7 +75,7 @@ "source-map-support": "^0.5.21", "tsx": "^4.19.2", "typescript": "^5.7.3", - "vitest": "^2.0.5" + "vitest": "^3.0.5" } }, "examples/snippets": { @@ -1355,10 +1355,14 @@ } }, "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/@biomejs/biome": { "version": "1.9.4", @@ -2857,247 +2861,266 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.1.tgz", - "integrity": "sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.3.tgz", + "integrity": "sha512-8kq/NjMKkMTGKMPldWihncOl62kgnLYk7cW+/4NCUWfS70/wz4+gQ7rMxMMpZ3dIOP/xw7wKNzIuUnN/H2GfUg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.1.tgz", - "integrity": "sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.3.tgz", + "integrity": "sha512-1PqMHiuRochQ6++SDI7SaRDWJKr/NgAlezBi5nOne6Da6IWJo3hK0TdECBDwd92IUDPG4j/bZmWuwOnomNT8wA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.1.tgz", - "integrity": "sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.3.tgz", + "integrity": "sha512-fqbrykX4mGV3DlCDXhF4OaMGcchd2tmLYxVt3On5oOZWVDFfdEoYAV2alzNChl8OzNaeMAGqm1f7gk7eIw/uDg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.1.tgz", - "integrity": "sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.3.tgz", + "integrity": "sha512-8Wxrx/KRvMsTyLTbdrMXcVKfpW51cCNW8x7iQD72xSEbjvhCY3b+w83Bea3nQfysTMR7K28esc+ZFITThXm+1w==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.1.tgz", - "integrity": "sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.3.tgz", + "integrity": "sha512-lpBmV2qSiELh+ATQPTjQczt5hvbTLsE0c43Rx4bGxN2VpnAZWy77we7OO62LyOSZNY7CzjMoceRPc+Lt4e9J6A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.1.tgz", - "integrity": "sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.3.tgz", + "integrity": "sha512-sNPvBIXpgaYcI6mAeH13GZMXFrrw5mdZVI1M9YQPRG2LpjwL8DSxSIflZoh/B5NEuOi53kxsR/S2GKozK1vDXA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.1.tgz", - "integrity": "sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.3.tgz", + "integrity": "sha512-MW6N3AoC61OfE1VgnN5O1OW0gt8VTbhx9s/ZEPLBM11wEdHjeilPzOxVmmsrx5YmejpGPvez8QwGGvMU+pGxpw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.1.tgz", - "integrity": "sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.3.tgz", + "integrity": "sha512-2SQkhr5xvatYq0/+H6qyW0zvrQz9LM4lxGkpWURLoQX5+yP8MsERh4uWmxFohOvwCP6l/+wgiHZ1qVwLDc7Qmw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.1.tgz", - "integrity": "sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.3.tgz", + "integrity": "sha512-R3JLYt8YoRwKI5shJsovLpcR6pwIMui/MGG/MmxZ1DYI3iRSKI4qcYrvYgDf4Ss2oCR3RL3F3dYK7uAGQgMIuQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.1.tgz", - "integrity": "sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.3.tgz", + "integrity": "sha512-4XQhG8v/t3S7Rxs7rmFUuM6j09hVrTArzONS3fUZ6oBRSN/ps9IPQjVhp62P0W3KhqJdQADo/MRlYRMdgxr/3w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.28.1.tgz", - "integrity": "sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.3.tgz", + "integrity": "sha512-QlW1jCUZ1LHUIYCAK2FciVw1ptHsxzApYVi05q7bz2A8oNE8QxQ85NhM4arLxkAlcnS42t4avJbSfzSQwbIaKg==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.1.tgz", - "integrity": "sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.3.tgz", + "integrity": "sha512-kMbLToizVeCcN69+nnm20Dh0hrRIAjgaaL+Wh0gWZcNt8e542d2FUGtsyuNsHVNNF3gqTJrpzUGIdwMGLEUM7g==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.1.tgz", - "integrity": "sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.3.tgz", + "integrity": "sha512-YgD0DnZ3CHtvXRH8rzjVSxwI0kMTr0RQt3o1N92RwxGdx7YejzbBO0ELlSU48DP96u1gYYVWfUhDRyaGNqJqJg==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.1.tgz", - "integrity": "sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.3.tgz", + "integrity": "sha512-dIOoOz8altjp6UjAi3U9EW99s8nta4gzi52FeI45GlPyrUH4QixUoBMH9VsVjt+9A2RiZBWyjYNHlJ/HmJOBCQ==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.1.tgz", - "integrity": "sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.3.tgz", + "integrity": "sha512-lOyG3aF4FTKrhpzXfMmBXgeKUUXdAWmP2zSNf8HTAXPqZay6QYT26l64hVizBjq+hJx3pl0DTEyvPi9sTA6VGA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.1.tgz", - "integrity": "sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.3.tgz", + "integrity": "sha512-usztyYLu2i+mYzzOjqHZTaRXbUOqw3P6laNUh1zcqxbPH1P2Tz/QdJJCQSnGxCtsRQeuU2bCyraGMtMumC46rw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.1.tgz", - "integrity": "sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.3.tgz", + "integrity": "sha512-ojFOKaz/ZyalIrizdBq2vyc2f0kFbJahEznfZlxdB6pF9Do6++i1zS5Gy6QLf8D7/S57MHrmBLur6AeRYeQXSA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.1.tgz", - "integrity": "sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.3.tgz", + "integrity": "sha512-K/V97GMbNa+Da9mGcZqmSl+DlJmWfHXTuI9V8oB2evGsQUtszCl67+OxWjBKpeOnYwox9Jpmt/J6VhpeRCYqow==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.1.tgz", - "integrity": "sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.3.tgz", + "integrity": "sha512-CUypcYP31Q8O04myV6NKGzk9GVXslO5EJNfmARNSzLF2A+5rmZUlDJ4et6eoJaZgBT9wrC2p4JZH04Vkic8HdQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -4200,7 +4223,8 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/hast": { "version": "3.0.4", @@ -4310,30 +4334,31 @@ "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==" }, "node_modules/@vitest/coverage-v8": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.8.tgz", - "integrity": "sha512-2Y7BPlKH18mAZYAW1tYByudlCYrQyl5RGvnnDYJKW5tCiO5qg3KSAy3XAxcxKz900a0ZXxWtKrMuZLe3lKBpJw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.5.tgz", + "integrity": "sha512-zOOWIsj5fHh3jjGwQg+P+J1FW3s4jBu1Zqga0qW60yutsBtqEqNEJKWYh7cYn1yGD+1bdPsPdC/eL4eVK56xMg==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", - "@bcoe/v8-coverage": "^0.2.3", - "debug": "^4.3.7", + "@bcoe/v8-coverage": "^1.0.2", + "debug": "^4.4.0", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-lib-source-maps": "^5.0.6", "istanbul-reports": "^3.1.7", - "magic-string": "^0.30.12", + "magic-string": "^0.30.17", "magicast": "^0.3.5", "std-env": "^3.8.0", "test-exclude": "^7.0.1", - "tinyrainbow": "^1.2.0" + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "2.1.8", - "vitest": "2.1.8" + "@vitest/browser": "3.0.5", + "vitest": "3.0.5" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -4385,36 +4410,38 @@ } }, "node_modules/@vitest/expect": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.8.tgz", - "integrity": "sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.5.tgz", + "integrity": "sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/spy": "2.1.8", - "@vitest/utils": "2.1.8", + "@vitest/spy": "3.0.5", + "@vitest/utils": "3.0.5", "chai": "^5.1.2", - "tinyrainbow": "^1.2.0" + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/mocker": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.8.tgz", - "integrity": "sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.5.tgz", + "integrity": "sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/spy": "2.1.8", + "@vitest/spy": "3.0.5", "estree-walker": "^3.0.3", - "magic-string": "^0.30.12" + "magic-string": "^0.30.17" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^5.0.0" + "vite": "^5.0.0 || ^6.0.0" }, "peerDependenciesMeta": { "msw": { @@ -4426,49 +4453,24 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.8.tgz", - "integrity": "sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==", - "dev": true, - "dependencies": { - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.8.tgz", - "integrity": "sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==", - "dev": true, - "dependencies": { - "@vitest/utils": "2.1.8", - "pathe": "^1.1.2" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.8.tgz", - "integrity": "sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz", + "integrity": "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.8", - "magic-string": "^0.30.12", - "pathe": "^1.1.2" + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.8.tgz", - "integrity": "sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.5.tgz", + "integrity": "sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==", "dev": true, + "license": "MIT", "dependencies": { "tinyspy": "^3.0.2" }, @@ -4477,14 +4479,15 @@ } }, "node_modules/@vitest/utils": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.8.tgz", - "integrity": "sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.5.tgz", + "integrity": "sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.8", + "@vitest/pretty-format": "3.0.5", "loupe": "^3.1.2", - "tinyrainbow": "^1.2.0" + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -5174,73 +5177,6 @@ "aws-sdk-client-mock": ">=2.2.0" } }, - "node_modules/aws-sdk-client-mock-vitest/node_modules/@vitest/expect": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.4.tgz", - "integrity": "sha512-Nm5kJmYw6P2BxhJPkO3eKKhGYKRsnqJqf+r0yOGRKpEP+bSCBDsjXgiu1/5QFrnPMEgzfC38ZEjvCFgaNBC0Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "3.0.4", - "@vitest/utils": "3.0.4", - "chai": "^5.1.2", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/aws-sdk-client-mock-vitest/node_modules/@vitest/pretty-format": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.4.tgz", - "integrity": "sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/aws-sdk-client-mock-vitest/node_modules/@vitest/spy": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.4.tgz", - "integrity": "sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^3.0.2" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/aws-sdk-client-mock-vitest/node_modules/@vitest/utils": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.4.tgz", - "integrity": "sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.0.4", - "loupe": "^3.1.2", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/aws-sdk-client-mock-vitest/node_modules/tinyrainbow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", - "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/aws-sdk/node_modules/buffer": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", @@ -5439,6 +5375,7 @@ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6587,10 +6524,11 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "dev": true, + "license": "MIT" }, "node_modules/esbuild": { "version": "0.24.2", @@ -6668,6 +6606,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -6963,10 +6902,11 @@ "dev": true }, "node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -9255,10 +9195,11 @@ "dev": true }, "node_modules/magic-string": { - "version": "0.30.12", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", - "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -10554,6 +10495,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -11915,12 +11857,6 @@ "node": ">=8" } }, - "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 - }, "node_modules/pathval": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", @@ -11994,9 +11930,9 @@ } }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", + "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", "dev": true, "funding": [ { @@ -12012,8 +11948,9 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", + "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -12703,10 +12640,11 @@ } }, "node_modules/rollup": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.1.tgz", - "integrity": "sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==", + "version": "4.34.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.3.tgz", + "integrity": "sha512-ORCtU0UBJyiAIn9m0llUXJXAswG/68pZptCrqxHG7//Z2DDzAUeyyY5hqf4XrsGlUxscMr9GkQ2QI7KTLqeyPw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.6" }, @@ -12718,25 +12656,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.28.1", - "@rollup/rollup-android-arm64": "4.28.1", - "@rollup/rollup-darwin-arm64": "4.28.1", - "@rollup/rollup-darwin-x64": "4.28.1", - "@rollup/rollup-freebsd-arm64": "4.28.1", - "@rollup/rollup-freebsd-x64": "4.28.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.28.1", - "@rollup/rollup-linux-arm-musleabihf": "4.28.1", - "@rollup/rollup-linux-arm64-gnu": "4.28.1", - "@rollup/rollup-linux-arm64-musl": "4.28.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.28.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.28.1", - "@rollup/rollup-linux-riscv64-gnu": "4.28.1", - "@rollup/rollup-linux-s390x-gnu": "4.28.1", - "@rollup/rollup-linux-x64-gnu": "4.28.1", - "@rollup/rollup-linux-x64-musl": "4.28.1", - "@rollup/rollup-win32-arm64-msvc": "4.28.1", - "@rollup/rollup-win32-ia32-msvc": "4.28.1", - "@rollup/rollup-win32-x64-msvc": "4.28.1", + "@rollup/rollup-android-arm-eabi": "4.34.3", + "@rollup/rollup-android-arm64": "4.34.3", + "@rollup/rollup-darwin-arm64": "4.34.3", + "@rollup/rollup-darwin-x64": "4.34.3", + "@rollup/rollup-freebsd-arm64": "4.34.3", + "@rollup/rollup-freebsd-x64": "4.34.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.3", + "@rollup/rollup-linux-arm-musleabihf": "4.34.3", + "@rollup/rollup-linux-arm64-gnu": "4.34.3", + "@rollup/rollup-linux-arm64-musl": "4.34.3", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.3", + "@rollup/rollup-linux-riscv64-gnu": "4.34.3", + "@rollup/rollup-linux-s390x-gnu": "4.34.3", + "@rollup/rollup-linux-x64-gnu": "4.34.3", + "@rollup/rollup-linux-x64-musl": "4.34.3", + "@rollup/rollup-win32-arm64-msvc": "4.34.3", + "@rollup/rollup-win32-ia32-msvc": "4.34.3", + "@rollup/rollup-win32-x64-msvc": "4.34.3", "fsevents": "~2.3.2" } }, @@ -12814,9 +12752,10 @@ "dev": true }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -13626,25 +13565,28 @@ "dev": true }, "node_modules/tinyexec": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz", - "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==", - "dev": true + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" }, "node_modules/tinypool": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.1.tgz", - "integrity": "sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", + "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", "dev": true, + "license": "MIT", "engines": { "node": "^18.0.0 || >=20.0.0" } }, "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -14604,28 +14546,6 @@ } } }, - "node_modules/vite-node": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.8.tgz", - "integrity": "sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==", - "dev": true, - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.3.7", - "es-module-lexer": "^1.5.4", - "pathe": "^1.1.2", - "vite": "^5.0.0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, "node_modules/vite/node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -14634,6 +14554,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -14650,6 +14571,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -14666,6 +14588,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -14682,6 +14605,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -14698,6 +14622,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -14714,6 +14639,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -14730,6 +14656,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -14746,6 +14673,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -14762,6 +14690,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -14778,6 +14707,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -14794,6 +14724,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -14810,6 +14741,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -14826,6 +14758,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -14842,6 +14775,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -14858,6 +14792,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -14874,6 +14809,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -14890,6 +14826,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -14906,6 +14843,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -14922,6 +14860,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -14938,6 +14877,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -14954,6 +14894,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -14970,6 +14911,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -14986,6 +14928,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -15000,6 +14943,7 @@ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -15038,6 +14982,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -15047,46 +14992,48 @@ } }, "node_modules/vitest": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.8.tgz", - "integrity": "sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==", - "dev": true, - "dependencies": { - "@vitest/expect": "2.1.8", - "@vitest/mocker": "2.1.8", - "@vitest/pretty-format": "^2.1.8", - "@vitest/runner": "2.1.8", - "@vitest/snapshot": "2.1.8", - "@vitest/spy": "2.1.8", - "@vitest/utils": "2.1.8", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.5.tgz", + "integrity": "sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "3.0.5", + "@vitest/mocker": "3.0.5", + "@vitest/pretty-format": "^3.0.5", + "@vitest/runner": "3.0.5", + "@vitest/snapshot": "3.0.5", + "@vitest/spy": "3.0.5", + "@vitest/utils": "3.0.5", "chai": "^5.1.2", - "debug": "^4.3.7", + "debug": "^4.4.0", "expect-type": "^1.1.0", - "magic-string": "^0.30.12", - "pathe": "^1.1.2", + "magic-string": "^0.30.17", + "pathe": "^2.0.2", "std-env": "^3.8.0", "tinybench": "^2.9.0", - "tinyexec": "^0.3.1", - "tinypool": "^1.0.1", - "tinyrainbow": "^1.2.0", - "vite": "^5.0.0", - "vite-node": "2.1.8", + "tinyexec": "^0.3.2", + "tinypool": "^1.0.2", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0", + "vite-node": "3.0.5", "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "@edge-runtime/vm": "*", - "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.1.8", - "@vitest/ui": "2.1.8", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.0.5", + "@vitest/ui": "3.0.5", "happy-dom": "*", "jsdom": "*" }, @@ -15094,6 +15041,9 @@ "@edge-runtime/vm": { "optional": true }, + "@types/debug": { + "optional": true + }, "@types/node": { "optional": true }, @@ -15111,6 +15061,65 @@ } } }, + "node_modules/vitest/node_modules/@vitest/runner": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.5.tgz", + "integrity": "sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.0.5", + "pathe": "^2.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest/node_modules/@vitest/snapshot": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.5.tgz", + "integrity": "sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.0.5", + "magic-string": "^0.30.17", + "pathe": "^2.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest/node_modules/pathe": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz", + "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/vitest/node_modules/vite-node": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.5.tgz", + "integrity": "sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.0", + "es-module-lexer": "^1.6.0", + "pathe": "^2.0.2", + "vite": "^5.0.0 || ^6.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", diff --git a/package.json b/package.json index e14140e3fb..e6e99d2d0d 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@biomejs/biome": "^1.9.4", "@types/aws-lambda": "^8.10.147", "@types/node": "^22.12.0", - "@vitest/coverage-v8": "^2.1.8", + "@vitest/coverage-v8": "^3.0.5", "husky": "^9.1.7", "lerna": "8.1.2", "lint-staged": "^15.4.3", @@ -65,7 +65,7 @@ "typedoc-plugin-missing-exports": "^3.1.0", "typedoc-plugin-zod": "^1.3.1", "typescript": "^5.7.3", - "vitest": "^2.0.5" + "vitest": "^3.0.5" }, "lint-staged": { "*.{js,ts}": "biome check --write", diff --git a/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts b/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts index 0649305d56..51b893caab 100644 --- a/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts +++ b/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts @@ -50,7 +50,6 @@ describe('Class: DynamoDBPersistenceLayer', () => { afterEach(() => { vi.clearAllMocks(); - vi.resetAllMocks(); client.reset(); }); @@ -306,9 +305,9 @@ describe('Class: DynamoDBPersistenceLayer', () => { it('puts record in DynamoDB table when using payload validation', async () => { // Prepare - vi.spyOn(persistenceLayer, 'isPayloadValidationEnabled').mockReturnValue( - true - ); + const persistenceLayerSpy = vi + .spyOn(persistenceLayer, 'isPayloadValidationEnabled') + .mockReturnValue(true); const status = IdempotencyRecordStatus.EXPIRED; const expiryTimestamp = 0; const record = new IdempotencyRecord({ @@ -344,6 +343,7 @@ describe('Class: DynamoDBPersistenceLayer', () => { ConditionExpression: 'attribute_not_exists(#id) OR #expiry < :now OR (#status = :inprogress AND attribute_exists(#in_progress_expiry) AND #in_progress_expiry < :now_in_millis)', }); + persistenceLayerSpy.mockRestore(); }); it('throws when called with a record that fails any condition', async () => { @@ -353,6 +353,7 @@ describe('Class: DynamoDBPersistenceLayer', () => { status: IdempotencyRecordStatus.EXPIRED, expiryTimestamp: 0, }); + const expiration = Date.now(); client.on(PutItemCommand).rejects( new ConditionalCheckFailedException({ $metadata: { @@ -363,7 +364,7 @@ describe('Class: DynamoDBPersistenceLayer', () => { Item: { id: { S: 'test-key' }, status: { S: 'INPROGRESS' }, - expiration: { N: Date.now().toString() }, + expiration: { N: expiration.toString() }, }, }) ); @@ -373,9 +374,9 @@ describe('Class: DynamoDBPersistenceLayer', () => { new IdempotencyItemAlreadyExistsError( `Failed to put record for already existing idempotency key: ${record.idempotencyKey}`, new IdempotencyRecord({ - idempotencyKey: record.idempotencyKey, - status: IdempotencyRecordStatus.EXPIRED, - expiryTimestamp: Date.now() / 1000 - 1, + idempotencyKey: 'test-key', + status: IdempotencyRecordStatus.INPROGRESS, + expiryTimestamp: expiration, }) ) ); @@ -575,10 +576,9 @@ describe('Class: DynamoDBPersistenceLayer', () => { it('uses the payload hash in the expression when payload validation is enabled', async () => { // Prepare - vi.spyOn( - persistenceLayer, - 'isPayloadValidationEnabled' - ).mockImplementation(() => true); + const persistenceLayerSpy = vi + .spyOn(persistenceLayer, 'isPayloadValidationEnabled') + .mockImplementation(() => true); const expiryTimestamp = Date.now(); const record = new IdempotencyRecord({ idempotencyKey: dummyKey, @@ -612,6 +612,7 @@ describe('Class: DynamoDBPersistenceLayer', () => { ':validation_key': record.payloadHash, }), }); + persistenceLayerSpy.mockRestore(); }); }); diff --git a/packages/logger/tests/unit/formatters.test.ts b/packages/logger/tests/unit/formatters.test.ts index 1097d2d78b..e8900adffe 100644 --- a/packages/logger/tests/unit/formatters.test.ts +++ b/packages/logger/tests/unit/formatters.test.ts @@ -107,7 +107,7 @@ describe('Formatters', () => { process.env = { ...ENVIRONMENT_VARIABLES }; const mockDate = new Date(1466424490000); vi.useFakeTimers().setSystemTime(mockDate); - vi.resetAllMocks(); + vi.clearAllMocks(); unformattedAttributes.timestamp = mockDate; }); diff --git a/packages/logger/tests/unit/initializeLogger.test.ts b/packages/logger/tests/unit/initializeLogger.test.ts index 616382a1c6..689c954493 100644 --- a/packages/logger/tests/unit/initializeLogger.test.ts +++ b/packages/logger/tests/unit/initializeLogger.test.ts @@ -7,7 +7,7 @@ describe('Log levels', () => { beforeEach(() => { process.env = { ...ENVIRONMENT_VARIABLES, POWERTOOLS_DEV: 'true' }; - vi.resetAllMocks(); + vi.clearAllMocks(); }); it('uses the default service name when none is provided', () => { diff --git a/packages/logger/tests/unit/injectLambdaContext.test.ts b/packages/logger/tests/unit/injectLambdaContext.test.ts index 07a76e151d..e7107ad94a 100644 --- a/packages/logger/tests/unit/injectLambdaContext.test.ts +++ b/packages/logger/tests/unit/injectLambdaContext.test.ts @@ -26,7 +26,7 @@ describe('Inject Lambda Context', () => { ...ENVIRONMENT_VARIABLES, POWERTOOLS_DEV: 'true', }; - vi.resetAllMocks(); + vi.clearAllMocks(); }); it('adds the context to log messages when the feature is enabled', () => { diff --git a/packages/logger/tests/unit/logEvent.test.ts b/packages/logger/tests/unit/logEvent.test.ts index 17ed444534..17140c238c 100644 --- a/packages/logger/tests/unit/logEvent.test.ts +++ b/packages/logger/tests/unit/logEvent.test.ts @@ -18,7 +18,7 @@ describe('Log event', () => { POWERTOOLS_LOGGER_LOG_EVENT: 'true', POWERTOOLS_DEV: 'true', }; - vi.resetAllMocks(); + vi.clearAllMocks(); }); it('logs the event with the correct log level and message', () => { diff --git a/packages/logger/tests/unit/logLevels.test.ts b/packages/logger/tests/unit/logLevels.test.ts index 1e92f302d9..04aa73e192 100644 --- a/packages/logger/tests/unit/logLevels.test.ts +++ b/packages/logger/tests/unit/logLevels.test.ts @@ -34,7 +34,7 @@ describe('Log levels', () => { beforeEach(() => { process.env = { ...ENVIRONMENT_VARIABLES, POWERTOOLS_DEV: 'true' }; - vi.resetAllMocks(); + vi.clearAllMocks(); }); it('sets the correct log level when initialized with a log level', () => { diff --git a/packages/logger/tests/unit/workingWithkeys.test.ts b/packages/logger/tests/unit/workingWithkeys.test.ts index c2af93bcb9..b39c23c1f6 100644 --- a/packages/logger/tests/unit/workingWithkeys.test.ts +++ b/packages/logger/tests/unit/workingWithkeys.test.ts @@ -14,7 +14,7 @@ describe('Working with keys', () => { ...ENVIRONMENT_VARIABLES, POWERTOOLS_DEV: 'true', }; - vi.resetAllMocks(); + vi.clearAllMocks(); }); it.each([ diff --git a/packages/metrics/tests/unit/coldStartMetric.test.ts b/packages/metrics/tests/unit/coldStartMetric.test.ts index e73ff4ce7d..9a9cba37c9 100644 --- a/packages/metrics/tests/unit/coldStartMetric.test.ts +++ b/packages/metrics/tests/unit/coldStartMetric.test.ts @@ -11,7 +11,7 @@ describe('ColdStart metric', () => { POWERTOOLS_DEV: 'true', POWERTOOLS_METRICS_DISABLED: 'false', }; - vi.resetAllMocks(); + vi.clearAllMocks(); }); it('emits a cold start metric', () => { diff --git a/packages/metrics/tests/unit/creatingMetrics.test.ts b/packages/metrics/tests/unit/creatingMetrics.test.ts index 80705c9ef5..2b5a84aeaf 100644 --- a/packages/metrics/tests/unit/creatingMetrics.test.ts +++ b/packages/metrics/tests/unit/creatingMetrics.test.ts @@ -15,7 +15,7 @@ describe('Creating metrics', () => { POWERTOOLS_DEV: 'true', POWERTOOLS_METRICS_DISABLED: 'false', }; - vi.resetAllMocks(); + vi.clearAllMocks(); }); it('creates a compliant CloudWatch EMF metric', () => { diff --git a/packages/metrics/tests/unit/customTimestamp.test.ts b/packages/metrics/tests/unit/customTimestamp.test.ts index 4512e15c62..59ffd4159e 100644 --- a/packages/metrics/tests/unit/customTimestamp.test.ts +++ b/packages/metrics/tests/unit/customTimestamp.test.ts @@ -15,7 +15,7 @@ describe('Setting custom timestamp', () => { POWERTOOLS_DEV: 'true', POWERTOOLS_METRICS_DISABLED: 'false', }; - vi.resetAllMocks(); + vi.clearAllMocks(); vi.useFakeTimers().setSystemTime(new Date()); }); diff --git a/packages/metrics/tests/unit/dimensions.test.ts b/packages/metrics/tests/unit/dimensions.test.ts index 04f2aa0364..fd5fbdb7c3 100644 --- a/packages/metrics/tests/unit/dimensions.test.ts +++ b/packages/metrics/tests/unit/dimensions.test.ts @@ -11,7 +11,7 @@ describe('Working with dimensions', () => { POWERTOOLS_DEV: 'true', POWERTOOLS_METRICS_DISABLED: 'false', }; - vi.resetAllMocks(); + vi.clearAllMocks(); }); it('adds default dimensions to the metric via constructor', () => { diff --git a/packages/metrics/tests/unit/initializeMetrics.test.ts b/packages/metrics/tests/unit/initializeMetrics.test.ts index b76c4cb4e0..663328a294 100644 --- a/packages/metrics/tests/unit/initializeMetrics.test.ts +++ b/packages/metrics/tests/unit/initializeMetrics.test.ts @@ -12,7 +12,7 @@ describe('Initialize Metrics', () => { POWERTOOLS_DEV: 'true', POWERTOOLS_METRICS_DISABLED: 'false', }; - vi.resetAllMocks(); + vi.clearAllMocks(); }); it('uses the default service name when none is provided', () => { diff --git a/packages/metrics/tests/unit/logMetrics.test.ts b/packages/metrics/tests/unit/logMetrics.test.ts index 1d4f7d41e4..90234c1e60 100644 --- a/packages/metrics/tests/unit/logMetrics.test.ts +++ b/packages/metrics/tests/unit/logMetrics.test.ts @@ -15,7 +15,7 @@ describe('LogMetrics decorator & Middy.js middleware', () => { POWERTOOLS_DEV: 'true', POWERTOOLS_METRICS_DISABLED: 'false', }; - vi.resetAllMocks(); + vi.clearAllMocks(); }); it('captures the cold start metric on the first invocation', async () => { diff --git a/packages/metrics/tests/unit/metadata.test.ts b/packages/metrics/tests/unit/metadata.test.ts index ede6b82264..7af4074de6 100644 --- a/packages/metrics/tests/unit/metadata.test.ts +++ b/packages/metrics/tests/unit/metadata.test.ts @@ -10,7 +10,7 @@ describe('Working with metadata', () => { POWERTOOLS_DEV: 'true', POWERTOOLS_METRICS_DISABLED: 'false', }; - vi.resetAllMocks(); + vi.clearAllMocks(); }); it('adds metadata to the metric', () => { diff --git a/packages/parameters/tests/unit/AppConfigProvider.test.ts b/packages/parameters/tests/unit/AppConfigProvider.test.ts index c07eadf9b1..5bfb01ace3 100644 --- a/packages/parameters/tests/unit/AppConfigProvider.test.ts +++ b/packages/parameters/tests/unit/AppConfigProvider.test.ts @@ -60,7 +60,9 @@ describe('Class: AppConfigProvider', () => { const provider = new AppConfigProvider(options); // Assess - expect(provider.client.config.region()).resolves.toEqual('eu-south-2'); + await expect(provider.client.config.region()).resolves.toEqual( + 'eu-south-2' + ); expect(addUserAgentMiddleware).toHaveBeenCalled(); }); @@ -96,7 +98,6 @@ describe('Class: AppConfigProvider', () => { environment: 'MyAppProdEnv', awsSdkV3Client: awsSdkV3Client as AppConfigDataClient, }; - const consoleWarnSpy = vi.spyOn(console, 'warn'); // Act const provider = new AppConfigProvider(options); @@ -107,7 +108,7 @@ describe('Class: AppConfigProvider', () => { serviceId: 'AppConfigData', }) ); - expect(consoleWarnSpy).toHaveBeenNthCalledWith( + expect(console.warn).toHaveBeenNthCalledWith( 1, 'awsSdkV3Client is not an AWS SDK v3 client, using default client' ); diff --git a/packages/parameters/tests/unit/DynamoDBProvider.test.ts b/packages/parameters/tests/unit/DynamoDBProvider.test.ts index 6b20665e1a..50f89b93c1 100644 --- a/packages/parameters/tests/unit/DynamoDBProvider.test.ts +++ b/packages/parameters/tests/unit/DynamoDBProvider.test.ts @@ -58,7 +58,9 @@ describe('Class: DynamoDBProvider', () => { const provider = new DynamoDBProvider(options); // Assess - expect(provider.client.config.region()).resolves.toEqual('eu-south-2'); + await expect(provider.client.config.region()).resolves.toEqual( + 'eu-south-2' + ); expect(addUserAgentMiddleware).toHaveBeenCalled(); }); @@ -92,7 +94,6 @@ describe('Class: DynamoDBProvider', () => { tableName: 'test-table', awsSdkV3Client: awsSdkV3Client as DynamoDBClient, }; - const consoleWarnSpy = vi.spyOn(console, 'warn'); // Act const provider = new DynamoDBProvider(options); @@ -103,7 +104,7 @@ describe('Class: DynamoDBProvider', () => { serviceId: 'DynamoDB', }) ); - expect(consoleWarnSpy).toHaveBeenNthCalledWith( + expect(console.warn).toHaveBeenNthCalledWith( 1, 'awsSdkV3Client is not an AWS SDK v3 client, using default client' ); diff --git a/packages/parameters/tests/unit/SSMProvider.test.ts b/packages/parameters/tests/unit/SSMProvider.test.ts index 386c3bf739..b3d247c4f8 100644 --- a/packages/parameters/tests/unit/SSMProvider.test.ts +++ b/packages/parameters/tests/unit/SSMProvider.test.ts @@ -64,7 +64,9 @@ describe('Class: SSMProvider', () => { const provider = new SSMProvider(options); // Assess - expect(provider.client.config.region()).resolves.toEqual('eu-south-2'); + await expect(provider.client.config.region()).resolves.toEqual( + 'eu-south-2' + ); expect(addUserAgentMiddleware).toHaveBeenCalled(); }); @@ -96,7 +98,6 @@ describe('Class: SSMProvider', () => { const options: SSMProviderOptions = { awsSdkV3Client: awsSdkV3Client as SSMClient, }; - const consoleWarnSpy = vi.spyOn(console, 'warn'); // Act const provider = new SSMProvider(options); @@ -107,7 +108,7 @@ describe('Class: SSMProvider', () => { serviceId: 'SSM', }) ); - expect(consoleWarnSpy).toHaveBeenNthCalledWith( + expect(console.warn).toHaveBeenNthCalledWith( 1, 'awsSdkV3Client is not an AWS SDK v3 client, using default client' ); diff --git a/packages/parameters/tests/unit/SecretsProvider.test.ts b/packages/parameters/tests/unit/SecretsProvider.test.ts index e9eab5fe30..4635b67c75 100644 --- a/packages/parameters/tests/unit/SecretsProvider.test.ts +++ b/packages/parameters/tests/unit/SecretsProvider.test.ts @@ -51,7 +51,9 @@ describe('Class: SecretsProvider', () => { const provider = new SecretsProvider(options); // Assess - expect(provider.client.config.region()).resolves.toEqual('eu-south-2'); + await expect(provider.client.config.region()).resolves.toEqual( + 'eu-south-2' + ); expect(addUserAgentMiddleware).toHaveBeenCalled(); }); @@ -83,7 +85,6 @@ describe('Class: SecretsProvider', () => { const options: SecretsProviderOptions = { awsSdkV3Client: awsSdkV3Client as SecretsManagerClient, }; - const consoleWarnSpy = vi.spyOn(console, 'warn'); // Act const provider = new SecretsProvider(options); @@ -94,7 +95,7 @@ describe('Class: SecretsProvider', () => { serviceId: 'Secrets Manager', }) ); - expect(consoleWarnSpy).toHaveBeenNthCalledWith( + expect(console.warn).toHaveBeenNthCalledWith( 1, 'awsSdkV3Client is not an AWS SDK v3 client, using default client' ); diff --git a/packages/parser/tests/unit/envelopes/apigw.test.ts b/packages/parser/tests/unit/envelopes/apigw.test.ts index 07b554d8cc..275d9d7c1b 100644 --- a/packages/parser/tests/unit/envelopes/apigw.test.ts +++ b/packages/parser/tests/unit/envelopes/apigw.test.ts @@ -108,7 +108,7 @@ describe('Envelope: API Gateway REST', () => { const result = ApiGatewayEnvelope.safeParse(event, schema); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse API Gateway body', { cause: new ZodError([ diff --git a/packages/parser/tests/unit/envelopes/apigwv2.test.ts b/packages/parser/tests/unit/envelopes/apigwv2.test.ts index 0f25aa6d31..ffd2d890ef 100644 --- a/packages/parser/tests/unit/envelopes/apigwv2.test.ts +++ b/packages/parser/tests/unit/envelopes/apigwv2.test.ts @@ -109,7 +109,7 @@ describe('Envelope: API Gateway HTTP', () => { const result = ApiGatewayV2Envelope.safeParse(event, schema); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse API Gateway HTTP body', { cause: new ZodError([ diff --git a/packages/parser/tests/unit/envelopes/cloudwatch.test.ts b/packages/parser/tests/unit/envelopes/cloudwatch.test.ts index 42d4a9fdc2..98f907724c 100644 --- a/packages/parser/tests/unit/envelopes/cloudwatch.test.ts +++ b/packages/parser/tests/unit/envelopes/cloudwatch.test.ts @@ -203,7 +203,7 @@ describe('Envelope: CloudWatch', () => { ); // Assess - expect(result).toStrictEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError( 'Failed to parse CloudWatch Log message at index 0', @@ -234,7 +234,7 @@ describe('Envelope: CloudWatch', () => { ); // Assess - expect(result).toStrictEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError( 'Failed to parse CloudWatch Log messages at indexes 0, 1, 2', diff --git a/packages/parser/tests/unit/envelopes/dynamodb.test.ts b/packages/parser/tests/unit/envelopes/dynamodb.test.ts index dcc3c9d0aa..4c5a3dccaa 100644 --- a/packages/parser/tests/unit/envelopes/dynamodb.test.ts +++ b/packages/parser/tests/unit/envelopes/dynamodb.test.ts @@ -121,7 +121,7 @@ describe('Envelope: DynamoDB Stream', () => { const result = DynamoDBStreamEnvelope.safeParse(event, schema); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse DynamoDB Stream envelope', { cause: new ZodError([ @@ -150,7 +150,7 @@ describe('Envelope: DynamoDB Stream', () => { const result = DynamoDBStreamEnvelope.safeParse(event, schema); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse record at index 1', { cause: new ZodError([ @@ -180,7 +180,7 @@ describe('Envelope: DynamoDB Stream', () => { const result = DynamoDBStreamEnvelope.safeParse(event, schema); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse records at indexes 0, 1', { cause: new ZodError([ diff --git a/packages/parser/tests/unit/envelopes/eventbridge.test.ts b/packages/parser/tests/unit/envelopes/eventbridge.test.ts index 505ab80702..7dbd0c5ede 100644 --- a/packages/parser/tests/unit/envelopes/eventbridge.test.ts +++ b/packages/parser/tests/unit/envelopes/eventbridge.test.ts @@ -90,7 +90,7 @@ describe('Envelope: EventBridgeEnvelope', () => { const result = EventBridgeEnvelope.safeParse(event, schema); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse EventBridge envelope', { cause: new ZodError([ diff --git a/packages/parser/tests/unit/envelopes/kafka.test.ts b/packages/parser/tests/unit/envelopes/kafka.test.ts index f5a4a4a06a..5641eedbd6 100644 --- a/packages/parser/tests/unit/envelopes/kafka.test.ts +++ b/packages/parser/tests/unit/envelopes/kafka.test.ts @@ -84,7 +84,7 @@ describe('Envelope: Kafka', () => { const result = KafkaEnvelope.safeParse(event, z.string()); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse Kafka envelope', { cause: new ZodError([ @@ -111,7 +111,7 @@ describe('Envelope: Kafka', () => { const result = KafkaEnvelope.safeParse(event, z.number()); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse Kafka envelope', { cause: new ZodError([ diff --git a/packages/parser/tests/unit/envelopes/kinesis-firehose.test.ts b/packages/parser/tests/unit/envelopes/kinesis-firehose.test.ts index 911f974197..7d103d14a2 100644 --- a/packages/parser/tests/unit/envelopes/kinesis-firehose.test.ts +++ b/packages/parser/tests/unit/envelopes/kinesis-firehose.test.ts @@ -136,7 +136,7 @@ describe('Envelope: Kinesis Firehose', () => { const result = KinesisFirehoseEnvelope.safeParse(event, z.string()); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse Kinesis Firehose envelope', { cause: new ZodError([ @@ -169,7 +169,7 @@ describe('Envelope: Kinesis Firehose', () => { ); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError( 'Failed to parse Kinesis Firehose record at index 1', @@ -202,7 +202,7 @@ describe('Envelope: Kinesis Firehose', () => { ); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError( 'Failed to parse Kinesis Firehose records at indexes 0, 1', diff --git a/packages/parser/tests/unit/envelopes/kinesis.test.ts b/packages/parser/tests/unit/envelopes/kinesis.test.ts index ff2531d01f..b476c874ec 100644 --- a/packages/parser/tests/unit/envelopes/kinesis.test.ts +++ b/packages/parser/tests/unit/envelopes/kinesis.test.ts @@ -104,7 +104,7 @@ describe('Envelope: Kinesis', () => { const result = KinesisEnvelope.safeParse(event, z.string()); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse Kinesis Data Stream envelope', { cause: new ZodError([ @@ -137,7 +137,7 @@ describe('Envelope: Kinesis', () => { ); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError( 'Failed to parse Kinesis Data Stream record at index 1', @@ -170,7 +170,7 @@ describe('Envelope: Kinesis', () => { ); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError( 'Failed to parse Kinesis Data Stream records at indexes 0, 1', diff --git a/packages/parser/tests/unit/envelopes/lambda.test.ts b/packages/parser/tests/unit/envelopes/lambda.test.ts index fa8ff25227..2a200388ae 100644 --- a/packages/parser/tests/unit/envelopes/lambda.test.ts +++ b/packages/parser/tests/unit/envelopes/lambda.test.ts @@ -112,7 +112,7 @@ describe('Envelope: Lambda function URL', () => { const result = LambdaFunctionUrlEnvelope.safeParse(event, schema); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse Lambda function URL body', { cause: new ZodError([ diff --git a/packages/parser/tests/unit/envelopes/sns.test.ts b/packages/parser/tests/unit/envelopes/sns.test.ts index f189e9528c..ee0793fd0c 100644 --- a/packages/parser/tests/unit/envelopes/sns.test.ts +++ b/packages/parser/tests/unit/envelopes/sns.test.ts @@ -84,7 +84,7 @@ describe('Envelope: SnsEnvelope', () => { const result = SnsEnvelope.safeParse(event, z.string()); // Assess - expect(result).toStrictEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse SNS envelope', { cause: new ZodError([ @@ -119,7 +119,7 @@ describe('Envelope: SnsEnvelope', () => { ); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse SNS message at index 1', { cause: new ZodError([ @@ -152,7 +152,7 @@ describe('Envelope: SnsEnvelope', () => { ); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse SNS messages at indexes 0, 1', { cause: new ZodError([ diff --git a/packages/parser/tests/unit/envelopes/snssqs.test.ts b/packages/parser/tests/unit/envelopes/snssqs.test.ts index 7c15884c7a..3a65ed758b 100644 --- a/packages/parser/tests/unit/envelopes/snssqs.test.ts +++ b/packages/parser/tests/unit/envelopes/snssqs.test.ts @@ -170,7 +170,7 @@ describe('Envelope: SnsSqsEnvelope', () => { const result = SnsSqsEnvelope.safeParse(event, schema); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse SQS envelope', { cause: new ZodError([ @@ -198,7 +198,7 @@ describe('Envelope: SnsSqsEnvelope', () => { const result = SnsSqsEnvelope.safeParse(event, schema); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse SQS Record at index 0', { cause: new ZodError([ @@ -222,7 +222,7 @@ describe('Envelope: SnsSqsEnvelope', () => { const result = SnsSqsEnvelope.safeParse(event, schema); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse SQS Record at index 0', { cause: new ZodError([ @@ -282,7 +282,7 @@ describe('Envelope: SnsSqsEnvelope', () => { const result = SnsSqsEnvelope.safeParse(event, JSONStringified(schema)); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse SQS Record at index 1', { cause: new ZodError([ @@ -323,7 +323,7 @@ describe('Envelope: SnsSqsEnvelope', () => { const result = SnsSqsEnvelope.safeParse(event, z.number()); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse SQS Records at indexes 0, 1', { cause: new ZodError([ diff --git a/packages/parser/tests/unit/envelopes/sqs.test.ts b/packages/parser/tests/unit/envelopes/sqs.test.ts index ffe4e08bdb..97a0539709 100644 --- a/packages/parser/tests/unit/envelopes/sqs.test.ts +++ b/packages/parser/tests/unit/envelopes/sqs.test.ts @@ -78,7 +78,7 @@ describe('Envelope: SqsEnvelope', () => { const result = SqsEnvelope.safeParse(event, z.string()); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse SQS envelope', { cause: new ZodError([ @@ -105,7 +105,7 @@ describe('Envelope: SqsEnvelope', () => { const result = SqsEnvelope.safeParse(event, JSONStringified(schema)); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse SQS Record at index 0', { cause: new ZodError([ @@ -128,7 +128,7 @@ describe('Envelope: SqsEnvelope', () => { const result = SqsEnvelope.safeParse(event, z.number()); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse SQS Records at indexes 0, 1', { cause: new ZodError([ diff --git a/packages/parser/tests/unit/envelopes/vpc-lattice.test.ts b/packages/parser/tests/unit/envelopes/vpc-lattice.test.ts index 33bf6f3350..b99430d5c5 100644 --- a/packages/parser/tests/unit/envelopes/vpc-lattice.test.ts +++ b/packages/parser/tests/unit/envelopes/vpc-lattice.test.ts @@ -104,7 +104,7 @@ describe('Envelope: VPC Lattice', () => { const result = VpcLatticeEnvelope.safeParse(event, z.string()); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse VPC Lattice body', { cause: new ZodError([ diff --git a/packages/parser/tests/unit/envelopes/vpc-latticev2.test.ts b/packages/parser/tests/unit/envelopes/vpc-latticev2.test.ts index 34eed08816..a4c1b10f83 100644 --- a/packages/parser/tests/unit/envelopes/vpc-latticev2.test.ts +++ b/packages/parser/tests/unit/envelopes/vpc-latticev2.test.ts @@ -106,7 +106,7 @@ describe('Envelope: VPC Lattice v2', () => { const result = VpcLatticeV2Envelope.safeParse(event, z.string()); // Assess - expect(result).toEqual({ + expect(result).be.deep.equal({ success: false, error: new ParseError('Failed to parse VPC Lattice v2 body', { cause: new ZodError([ diff --git a/packages/testing/src/setupEnv.ts b/packages/testing/src/setupEnv.ts index 6ddf117cfe..0a0c83b84a 100644 --- a/packages/testing/src/setupEnv.ts +++ b/packages/testing/src/setupEnv.ts @@ -205,6 +205,33 @@ expect.extend({ }, }); +// Custom equality tester for ZodError +// see https://github.com/vitest-dev/vitest/issues/7315 & https://github.com/colinhacks/zod/issues/3950 + +class ZodErrorLike extends Error { + public issues: Array; + constructor() { + super(); + this.issues = []; + } +} + +function isZodError(value: unknown): value is ZodErrorLike { + return value instanceof Error && value.name === 'ZodError'; +} + +expect.addEqualityTesters([ + function (a, b) { + const aOk = isZodError(a); + const bOk = isZodError(b); + if (aOk && bOk) { + // or this.equals(a.message, b.message) + return this.equals(a.issues, b.issues); + } + return aOk !== bOk ? false : undefined; + }, +]); + declare module 'vitest' { // biome-ignore lint/suspicious/noExplicitAny: vitest typings expect an any type interface Assertion extends CustomMatcher {