From f104540e864d4aade94364eb4db4e04ff146b06d Mon Sep 17 00:00:00 2001 From: MDCT GitHub Service Account <125407418+mdct-github-service-account@users.noreply.github.com> Date: Thu, 19 Sep 2024 12:55:14 -0400 Subject: [PATCH 01/35] [Snyk] Security upgrade vite from 5.3.5 to 5.3.6 (#11861) Co-authored-by: snyk-bot --- services/ui-src/package.json | 2 +- services/ui-src/yarn.lock | 235 ++++++++++++++++++----------------- 2 files changed, 121 insertions(+), 116 deletions(-) diff --git a/services/ui-src/package.json b/services/ui-src/package.json index ce5e3b02f..75b5e9c4b 100644 --- a/services/ui-src/package.json +++ b/services/ui-src/package.json @@ -42,7 +42,7 @@ "react-router-dom": "6.25.1", "react-uuid": "^1.0.3", "sass": "^1.77.6", - "vite": "^5.3.3", + "vite": "^5.3.6", "vite-tsconfig-paths": "^4.3.2", "yup": "^0.32.11", "zustand": "^4.5.3" diff --git a/services/ui-src/yarn.lock b/services/ui-src/yarn.lock index 9873e835c..b6e56e75d 100644 --- a/services/ui-src/yarn.lock +++ b/services/ui-src/yarn.lock @@ -4501,85 +4501,85 @@ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.18.0.tgz#20b033d1f542a100c1d57cfd18ecf442d1784732" integrity sha512-L3jkqmqoSVBVKHfpGZmLrex0lxR5SucGA0sUfFzGctehw+S/ggL9L/0NnC5mw6P8HUWpFZ3nQw3cRApjjWx9Sw== -"@rollup/rollup-android-arm-eabi@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz#1a32112822660ee104c5dd3a7c595e26100d4c2d" - integrity sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ== - -"@rollup/rollup-android-arm64@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz#5aeef206d65ff4db423f3a93f71af91b28662c5b" - integrity sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw== - -"@rollup/rollup-darwin-arm64@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz#6b66aaf003c70454c292cd5f0236ebdc6ffbdf1a" - integrity sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw== - -"@rollup/rollup-darwin-x64@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz#f64fc51ed12b19f883131ccbcea59fc68cbd6c0b" - integrity sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ== - -"@rollup/rollup-linux-arm-gnueabihf@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz#1a7641111be67c10111f7122d1e375d1226cbf14" - integrity sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A== - -"@rollup/rollup-linux-arm-musleabihf@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz#c93fd632923e0fee25aacd2ae414288d0b7455bb" - integrity sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg== - -"@rollup/rollup-linux-arm64-gnu@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz#fa531425dd21d058a630947527b4612d9d0b4a4a" - integrity sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A== - -"@rollup/rollup-linux-arm64-musl@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz#8acc16f095ceea5854caf7b07e73f7d1802ac5af" - integrity sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA== - -"@rollup/rollup-linux-powerpc64le-gnu@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz#94e69a8499b5cf368911b83a44bb230782aeb571" - integrity sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ== - -"@rollup/rollup-linux-riscv64-gnu@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz#7ef1c781c7e59e85a6ce261cc95d7f1e0b56db0f" - integrity sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg== - -"@rollup/rollup-linux-s390x-gnu@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz#f15775841c3232fca9b78cd25a7a0512c694b354" - integrity sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g== - -"@rollup/rollup-linux-x64-gnu@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz#b521d271798d037ad70c9f85dd97d25f8a52e811" - integrity sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ== - -"@rollup/rollup-linux-x64-musl@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz#9254019cc4baac35800991315d133cc9fd1bf385" - integrity sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q== - -"@rollup/rollup-win32-arm64-msvc@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz#27f65a89f6f52ee9426ec11e3571038e4671790f" - integrity sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA== - -"@rollup/rollup-win32-ia32-msvc@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz#a2fbf8246ed0bb014f078ca34ae6b377a90cb411" - integrity sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ== - -"@rollup/rollup-win32-x64-msvc@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz#5a2d08b81e8064b34242d5cc9973ef8dd1e60503" - integrity sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w== +"@rollup/rollup-android-arm-eabi@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.0.tgz#e8c16c336f060b4cb592f62eb4f0e543d79d51fe" + integrity sha512-/IZQvg6ZR0tAkEi4tdXOraQoWeJy9gbQ/cx4I7k9dJaCk9qrXEcdouxRVz5kZXt5C2bQ9pILoAA+KB4C/d3pfw== + +"@rollup/rollup-android-arm64@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.0.tgz#7a44160a14017fa744912d7037c7d81d6f8a46e7" + integrity sha512-ETHi4bxrYnvOtXeM7d4V4kZWixib2jddFacJjsOjwbgYSRsyXYtZHC4ht134OsslPIcnkqT+TKV4eU8rNBKyyQ== + +"@rollup/rollup-darwin-arm64@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.0.tgz#6122dc37d4a09521d8abe18925956d3b46cfbac9" + integrity sha512-ZWgARzhSKE+gVUX7QWaECoRQsPwaD8ZR0Oxb3aUpzdErTvlEadfQpORPXkKSdKbFci9v8MJfkTtoEHnnW9Ulng== + +"@rollup/rollup-darwin-x64@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.0.tgz#453f345899cbf544aa0d6f5808d24d2e42f605b7" + integrity sha512-h0ZAtOfHyio8Az6cwIGS+nHUfRMWBDO5jXB8PQCARVF6Na/G6XS2SFxDl8Oem+S5ZsHQgtsI7RT4JQnI1qrlaw== + +"@rollup/rollup-linux-arm-gnueabihf@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.0.tgz#3a32fa4e80a62a6d733014838b1123fe76b060fe" + integrity sha512-9pxQJSPwFsVi0ttOmqLY4JJ9pg9t1gKhK0JDbV1yUEETSx55fdyCjt39eBQ54OQCzAF0nVGO6LfEH1KnCPvelA== + +"@rollup/rollup-linux-arm-musleabihf@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.0.tgz#55d3953c54419e93efe124882a3103c8a2f65641" + integrity sha512-YJ5Ku5BmNJZb58A4qSEo3JlIG4d3G2lWyBi13ABlXzO41SsdnUKi3HQHe83VpwBVG4jHFTW65jOQb8qyoR+qzg== + +"@rollup/rollup-linux-arm64-gnu@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.0.tgz#cd626963b9962baf8e09d792e67b87269a5bcfff" + integrity sha512-U4G4u7f+QCqHlVg1Nlx+qapZy+QoG+NV6ux+upo/T7arNGwKvKP2kmGM4W5QTbdewWFgudQxi3kDNST9GT1/mg== + +"@rollup/rollup-linux-arm64-musl@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.0.tgz#ad209270c9937a27346fce5b0670cbdfb1e6a0a6" + integrity sha512-aQpNlKmx3amwkA3a5J6nlXSahE1ijl0L9KuIjVOUhfOh7uw2S4piR3mtpxpRtbnK809SBtyPsM9q15CPTsY7HQ== + +"@rollup/rollup-linux-powerpc64le-gnu@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.0.tgz#fdd173929a5bba8b7e8b37314380213d9604088f" + integrity sha512-9fx6Zj/7vve/Fp4iexUFRKb5+RjLCff6YTRQl4CoDhdMfDoobWmhAxQWV3NfShMzQk1Q/iCnageFyGfqnsmeqQ== + +"@rollup/rollup-linux-riscv64-gnu@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.0.tgz#90b11314fbf45d04083f658e08dc3b32fd713061" + integrity sha512-VWQiCcN7zBgZYLjndIEh5tamtnKg5TGxyZPWcN9zBtXBwfcGSZ5cHSdQZfQH/GB4uRxk0D3VYbOEe/chJhPGLQ== + +"@rollup/rollup-linux-s390x-gnu@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.0.tgz#46bb2f1135aeec646b720d6032d7c86915f8b2ec" + integrity sha512-EHmPnPWvyYqncObwqrosb/CpH3GOjE76vWVs0g4hWsDRUVhg61hBmlVg5TPXqF+g+PvIbqkC7i3h8wbn4Gp2Fg== + +"@rollup/rollup-linux-x64-gnu@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.0.tgz#d731a19af5f05eabcba871bda2eeb2fa8c8adb67" + integrity sha512-tsSWy3YQzmpjDKnQ1Vcpy3p9Z+kMFbSIesCdMNgLizDWFhrLZIoN21JSq01g+MZMDFF+Y1+4zxgrlqPjid5ohg== + +"@rollup/rollup-linux-x64-musl@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.0.tgz#5438b2dc38fe467444cf769146098be083022d0f" + integrity sha512-anr1Y11uPOQrpuU8XOikY5lH4Qu94oS6j0xrulHk3NkLDq19MlX8Ng/pVipjxBJ9a2l3+F39REZYyWQFkZ4/fw== + +"@rollup/rollup-win32-arm64-msvc@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.0.tgz#6bd66c198f80c8e7050cfd901701cfb9555d768a" + integrity sha512-7LB+Bh+Ut7cfmO0m244/asvtIGQr5pG5Rvjz/l1Rnz1kDzM02pSX9jPaS0p+90H5I1x4d1FkCew+B7MOnoatNw== + +"@rollup/rollup-win32-ia32-msvc@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.0.tgz#58daea1f1e65143c44c8f3311f30ff8eefa62bae" + integrity sha512-+3qZ4rer7t/QsC5JwMpcvCVPRcJt1cJrYS/TMJZzXIJbxWFQEVhrIc26IhB+5Z9fT9umfVc+Es2mOZgl+7jdJQ== + +"@rollup/rollup-win32-x64-msvc@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.0.tgz#956948629f6b87de0bdf526b28d940221540bbb6" + integrity sha512-YdicNOSJONVx/vuPkgPTyRoAPx3GbknBZRCOUkK84FJ/YTfs/F0vl/YsMscrB6Y177d+yDRcj+JWMPMCgshwrA== "@sinclair/typebox@^0.24.1": version "0.24.51" @@ -8385,6 +8385,11 @@ picocolors@^1.0.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== +picocolors@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -8427,14 +8432,14 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss@^8.4.39: - version "8.4.40" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.40.tgz#eb81f2a4dd7668ed869a6db25999e02e9ad909d8" - integrity sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q== +postcss@^8.4.43: + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== dependencies: nanoid "^3.3.7" - picocolors "^1.0.1" - source-map-js "^1.2.0" + picocolors "^1.1.0" + source-map-js "^1.2.1" postinstall-postinstall@^2.1.0: version "2.1.0" @@ -8936,29 +8941,29 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -rollup@^4.13.0: - version "4.17.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.17.2.tgz#26d1785d0144122277fdb20ab3a24729ae68301f" - integrity sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ== +rollup@^4.20.0: + version "4.22.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.22.0.tgz#23cd9e4565a458587683accc34a054660c01f351" + integrity sha512-W21MUIFPZ4+O2Je/EU+GP3iz7PH4pVPUXSbEZdatQnxo29+3rsUjgrJmzuAZU24z7yRAnFN6ukxeAhZh/c7hzg== dependencies: "@types/estree" "1.0.5" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.17.2" - "@rollup/rollup-android-arm64" "4.17.2" - "@rollup/rollup-darwin-arm64" "4.17.2" - "@rollup/rollup-darwin-x64" "4.17.2" - "@rollup/rollup-linux-arm-gnueabihf" "4.17.2" - "@rollup/rollup-linux-arm-musleabihf" "4.17.2" - "@rollup/rollup-linux-arm64-gnu" "4.17.2" - "@rollup/rollup-linux-arm64-musl" "4.17.2" - "@rollup/rollup-linux-powerpc64le-gnu" "4.17.2" - "@rollup/rollup-linux-riscv64-gnu" "4.17.2" - "@rollup/rollup-linux-s390x-gnu" "4.17.2" - "@rollup/rollup-linux-x64-gnu" "4.17.2" - "@rollup/rollup-linux-x64-musl" "4.17.2" - "@rollup/rollup-win32-arm64-msvc" "4.17.2" - "@rollup/rollup-win32-ia32-msvc" "4.17.2" - "@rollup/rollup-win32-x64-msvc" "4.17.2" + "@rollup/rollup-android-arm-eabi" "4.22.0" + "@rollup/rollup-android-arm64" "4.22.0" + "@rollup/rollup-darwin-arm64" "4.22.0" + "@rollup/rollup-darwin-x64" "4.22.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.22.0" + "@rollup/rollup-linux-arm-musleabihf" "4.22.0" + "@rollup/rollup-linux-arm64-gnu" "4.22.0" + "@rollup/rollup-linux-arm64-musl" "4.22.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.22.0" + "@rollup/rollup-linux-riscv64-gnu" "4.22.0" + "@rollup/rollup-linux-s390x-gnu" "4.22.0" + "@rollup/rollup-linux-x64-gnu" "4.22.0" + "@rollup/rollup-linux-x64-musl" "4.22.0" + "@rollup/rollup-win32-arm64-msvc" "4.22.0" + "@rollup/rollup-win32-ia32-msvc" "4.22.0" + "@rollup/rollup-win32-x64-msvc" "4.22.0" fsevents "~2.3.2" rsvp@^4.8.4: @@ -9170,10 +9175,10 @@ socks@^2.7.1: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== source-map-resolve@^0.5.0: version "0.5.3" @@ -9723,14 +9728,14 @@ vite-tsconfig-paths@^4.3.2: globrex "^0.1.2" tsconfck "^3.0.3" -vite@^5.3.3: - version "5.3.5" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.3.5.tgz#b847f846fb2b6cb6f6f4ed50a830186138cb83d8" - integrity sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA== +vite@^5.3.6: + version "5.4.6" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.6.tgz#85a93a1228a7fb5a723ca1743e337a2588ed008f" + integrity sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q== dependencies: esbuild "^0.21.3" - postcss "^8.4.39" - rollup "^4.13.0" + postcss "^8.4.43" + rollup "^4.20.0" optionalDependencies: fsevents "~2.3.3" From 5d6d76aeec0c4686af7a4ec046730d6544bcfc9c Mon Sep 17 00:00:00 2001 From: Garrett Rabian <57802560+gmrabian@users.noreply.github.com> Date: Fri, 20 Sep 2024 09:24:53 -0400 Subject: [PATCH 02/35] update macfc security hub github action (#11862) --- .github/workflows/scan_security-hub-jira-integration.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/scan_security-hub-jira-integration.yml b/.github/workflows/scan_security-hub-jira-integration.yml index 1600af819..c3d88076e 100644 --- a/.github/workflows/scan_security-hub-jira-integration.yml +++ b/.github/workflows/scan_security-hub-jira-integration.yml @@ -21,13 +21,12 @@ jobs: aws-region: ${{ secrets.AWS_DEFAULT_REGION }} role-to-assume: ${{ secrets.PRODUCTION_SYNC_OIDC_ROLE }} - name: Sync Security Hub and Jira - uses: Enterprise-CMCS/mac-fc-security-hub-visibility@v1.0.7 + uses: Enterprise-CMCS/mac-fc-security-hub-visibility@v2.0.9 with: jira-username: "mdct_github_service_account" jira-token: ${{ secrets.JIRA_ENT_USER_TOKEN }} - jira-host: jiraent.cms.gov jira-project-key: CMDCT jira-ignore-statuses: Done, Closed, Canceled jira-custom-fields: '{ "customfield_10100": "CMDCT-2280", "customfield_26700" : [{"id": "40104", "value": "MCR"}] }' aws-severities: CRITICAL, HIGH, MEDIUM - assign-jira-ticket-to: "MWTW" + jira-assignee: "MWTW" From e5127f3a537dfd072fa48d69182a0c5f79f1f283 Mon Sep 17 00:00:00 2001 From: Garrett Rabian <57802560+gmrabian@users.noreply.github.com> Date: Fri, 20 Sep 2024 14:44:13 -0400 Subject: [PATCH 03/35] fix scss deprecation warning (#11863) --- services/ui-src/src/styles/index.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/ui-src/src/styles/index.scss b/services/ui-src/src/styles/index.scss index c896ab73c..4a7322314 100644 --- a/services/ui-src/src/styles/index.scss +++ b/services/ui-src/src/styles/index.scss @@ -36,13 +36,13 @@ li::marker { a { color: var(--chakra-colors-palette-white); + transition: all 0.3s ease !important; &:hover { color: var(--chakra-colors-palette-gray_light); } &:visited { color: inherit; } - transition: all 0.3s ease !important; } // USA BANNER STYLES From 114b4512f5a02d7eb5ae6356f47514334b312a17 Mon Sep 17 00:00:00 2001 From: Garrett Rabian <57802560+gmrabian@users.noreply.github.com> Date: Mon, 23 Sep 2024 09:18:02 -0400 Subject: [PATCH 04/35] upgrade aws sdk versions (#11864) --- services/app-api/package.json | 12 +- services/app-api/yarn.lock | 1514 ++++++++++++++++---------------- services/database/package.json | 6 +- services/database/yarn.lock | 1380 +++++++++++++++-------------- services/ui-auth/package.json | 2 +- services/ui-auth/yarn.lock | 1015 ++++++++++----------- 6 files changed, 1962 insertions(+), 1967 deletions(-) diff --git a/services/app-api/package.json b/services/app-api/package.json index dab31d17a..b63ba12f6 100644 --- a/services/app-api/package.json +++ b/services/app-api/package.json @@ -31,12 +31,12 @@ "typescript": "^4.5.4" }, "dependencies": { - "@aws-sdk/client-dynamodb": "^3.621.0", - "@aws-sdk/client-s3": "^3.621.0", - "@aws-sdk/client-ssm": "^3.621.0", - "@aws-sdk/lib-dynamodb": "^3.621.0", - "@aws-sdk/s3-request-presigner": "^3.621.0", - "@aws-sdk/util-dynamodb": "^3.621.0", + "@aws-sdk/client-dynamodb": "^3.654.0", + "@aws-sdk/client-s3": "^3.654.0", + "@aws-sdk/client-ssm": "^3.654.0", + "@aws-sdk/lib-dynamodb": "^3.654.0", + "@aws-sdk/s3-request-presigner": "^3.654.0", + "@aws-sdk/util-dynamodb": "^3.654.0", "aws-jwt-verify": "^3.1.0", "date-fns": "^2.26.0", "date-fns-tz": "^1.2.2", diff --git a/services/app-api/yarn.lock b/services/app-api/yarn.lock index eb0298328..ad9edc14a 100644 --- a/services/app-api/yarn.lock +++ b/services/app-api/yarn.lock @@ -78,411 +78,412 @@ "@smithy/util-utf8" "^2.0.0" tslib "^2.6.2" -"@aws-sdk/client-dynamodb@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-dynamodb/-/client-dynamodb-3.621.0.tgz#de0a23830a742f42ed031abb745d3787b0d4e759" - integrity sha512-aczOoVyufYwBCc/zZKJOP/xwbnojKQJ6Y8O7ZAZnxMPRyZXKXpoAxmlxLfOU6GUzXqzXdvj+Ir3VBd7MWB4KuQ== +"@aws-sdk/client-dynamodb@^3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-dynamodb/-/client-dynamodb-3.654.0.tgz#2adbe26b67808850c0e44eea51029c0c97829528" + integrity sha512-QG7n2WJ4ZycoYnq04K7bYgai11in93XJgGJXeQM2jAszbMxrlFfczwhWDciHDz7hXWMhNvpKWuhvrXyxj9Irlg== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/client-sts" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-endpoint-discovery" "3.620.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.654.0" + "@aws-sdk/client-sts" "3.654.0" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-endpoint-discovery" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" + "@smithy/util-waiter" "^3.1.5" tslib "^2.6.2" uuid "^9.0.1" -"@aws-sdk/client-s3@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.621.0.tgz#86a0e77913cd1e82308299835431887fe306c3a0" - integrity sha512-YhGkd2HQTM4HCYJIAVWvfbUMpOF7XUr1W/e2LN3CFP0WTF4zcCJKesJ2iNHrExqC0Ek1+qarMxiXBK95itfjYQ== +"@aws-sdk/client-s3@^3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.654.0.tgz#a4a5a341959a4bab71b4a3326a76e59fb0d50ecd" + integrity sha512-EsyeZJhkZD2VMdZpNt4NhlQ3QUAF24gMC+5w2wpGg6Yw+Bv7VLdg1t3PkTQovriJX1KTJAYHcGAuy92OFmWIng== dependencies: "@aws-crypto/sha1-browser" "5.2.0" "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/client-sts" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-bucket-endpoint" "3.620.0" - "@aws-sdk/middleware-expect-continue" "3.620.0" - "@aws-sdk/middleware-flexible-checksums" "3.620.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-location-constraint" "3.609.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-sdk-s3" "3.621.0" - "@aws-sdk/middleware-signing" "3.620.0" - "@aws-sdk/middleware-ssec" "3.609.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/signature-v4-multi-region" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@aws-sdk/xml-builder" "3.609.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/eventstream-serde-browser" "^3.0.5" - "@smithy/eventstream-serde-config-resolver" "^3.0.3" - "@smithy/eventstream-serde-node" "^3.0.4" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-blob-browser" "^3.1.2" - "@smithy/hash-node" "^3.0.3" - "@smithy/hash-stream-node" "^3.1.2" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/md5-js" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.654.0" + "@aws-sdk/client-sts" "3.654.0" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-bucket-endpoint" "3.654.0" + "@aws-sdk/middleware-expect-continue" "3.654.0" + "@aws-sdk/middleware-flexible-checksums" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-location-constraint" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-sdk-s3" "3.654.0" + "@aws-sdk/middleware-ssec" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/signature-v4-multi-region" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@aws-sdk/xml-builder" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/eventstream-serde-browser" "^3.0.9" + "@smithy/eventstream-serde-config-resolver" "^3.0.6" + "@smithy/eventstream-serde-node" "^3.0.8" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-blob-browser" "^3.1.5" + "@smithy/hash-node" "^3.0.6" + "@smithy/hash-stream-node" "^3.1.5" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/md5-js" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-stream" "^3.1.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" + "@smithy/util-stream" "^3.1.6" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" + "@smithy/util-waiter" "^3.1.5" tslib "^2.6.2" -"@aws-sdk/client-ssm@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-ssm/-/client-ssm-3.621.0.tgz#d5928d86c65c2cb072f8d3bdaa739d3ff06cd1e5" - integrity sha512-E4OM7HH9qU2TZGDrX2MlBlBr9gVgDm573Qa1CTFih58dUZyaPEOiZSYLUNOyw4nMyVLyDMR/5zQ4wAorNwKVPw== +"@aws-sdk/client-ssm@^3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-ssm/-/client-ssm-3.654.0.tgz#ee76ab1b277a89c85cdc974971bc72a7a374d4ea" + integrity sha512-Lg+BvIcD+fol1Jke8GcPLofwJAs6gzLeXvHijI9lEIeTvtIJYG8QANG435StEEGHMsAeSVrmoVT9UHOwLnM/KA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/client-sts" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.654.0" + "@aws-sdk/client-sts" "3.654.0" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" + "@smithy/util-waiter" "^3.1.5" tslib "^2.6.2" uuid "^9.0.1" -"@aws-sdk/client-sso-oidc@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.621.0.tgz#3fa3d468fbebbd93a5f75c1d51b63cc7af3ef17b" - integrity sha512-mMjk3mFUwV2Y68POf1BQMTF+F6qxt5tPu6daEUCNGC9Cenk3h2YXQQoS4/eSyYzuBiYk3vx49VgleRvdvkg8rg== +"@aws-sdk/client-sso-oidc@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz#9c02ce49f95203e8b99e896cf0dca6e4858e2da7" + integrity sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sso@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.621.0.tgz#c0eefeb9adcbc6bb7c91c32070404c8c91846825" - integrity sha512-xpKfikN4u0BaUYZA9FGUMkkDmfoIP0Q03+A86WjqDWhcOoqNA1DkHsE4kZ+r064ifkPUfcNuUvlkVTEoBZoFjA== +"@aws-sdk/client-sso@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.654.0.tgz#6d800f0cfca97f8acf1fbf46cdac46169201267b" + integrity sha512-4kBxs2IzCDtj6a6lRXa/lXK5wWpMGzwKtb+HMXf/rJYVM6x7wYRzc1hYrOd3DYkFQ/sR3dUFj+0mTP0os3aAbA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sts@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.621.0.tgz#2994f601790893901704c5df56c837e89f279952" - integrity sha512-707uiuReSt+nAx6d0c21xLjLm2lxeKc7padxjv92CIrIocnQSlJPxSCM7r5zBhwiahJA6MNQwmTl2xznU67KgA== +"@aws-sdk/client-sts@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz#574194804834f6158cc06d44ab517ec6e4c1c1c2" + integrity sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.654.0" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/core@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.621.0.tgz#e38c56c3ce0c819ca1185eaabcb98412429aaca3" - integrity sha512-CtOwWmDdEiINkGXD93iGfXjN0WmCp9l45cDWHHGa8lRgEDyhuL7bwd/pH5aSzj0j8SiQBG2k0S7DHbd5RaqvbQ== - dependencies: - "@smithy/core" "^2.3.1" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" +"@aws-sdk/core@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.654.0.tgz#9ccc3618af04b4ff198433a22e27d7db14890917" + integrity sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w== + dependencies: + "@smithy/core" "^2.4.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/property-provider" "^3.1.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/signature-v4" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/util-middleware" "^3.0.6" fast-xml-parser "4.4.1" tslib "^2.6.2" -"@aws-sdk/credential-provider-env@3.620.1": - version "3.620.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz#d4692c49a65ebc11dae3f7f8b053fee9268a953c" - integrity sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg== +"@aws-sdk/credential-provider-env@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.654.0.tgz#5773a9d969ede7e30059472b26c9e39b3992cc0a" + integrity sha512-kogsx3Ql81JouHS7DkheCDU9MYAvK0AokxjcshDveGmf7BbgbWCA8Fnb9wjQyNDaOXNvkZu8Z8rgkX91z324/w== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-http@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.621.0.tgz#5f944bf548f203d842cf71a5792f73c205544627" - integrity sha512-/jc2tEsdkT1QQAI5Dvoci50DbSxtJrevemwFsm0B73pwCcOQZ5ZwwSdVqGsPutzYzUVx3bcXg3LRL7jLACqRIg== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-stream" "^3.1.3" +"@aws-sdk/credential-provider-http@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.654.0.tgz#72ce2ff0136eb87ef0c90d435bf1dd61558fe96d" + integrity sha512-tgmAH4MBi/aDR882lfw48+tDV95ZH3GWc1Eoe6DpNLiM3GN2VfU/cZwuHmi6aq+vAbdIlswBHJ/+va0fOvlyjw== + dependencies: + "@aws-sdk/types" "3.654.0" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/property-provider" "^3.1.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/util-stream" "^3.1.6" tslib "^2.6.2" -"@aws-sdk/credential-provider-ini@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.621.0.tgz#bda2365f88fee40e3ae067b08bf484106c339222" - integrity sha512-0EWVnSc+JQn5HLnF5Xv405M8n4zfdx9gyGdpnCmAmFqEDHA8LmBdxJdpUk1Ovp/I5oPANhjojxabIW5f1uU0RA== - dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.621.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.621.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" +"@aws-sdk/credential-provider-ini@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.654.0.tgz#557b3774d4ab3d127f96cb2cd29419b2a8569796" + integrity sha512-DKSdaNu2hwdmuvnm9KnA0NLqMWxxmxSOLWjSUSoFIm++wGXUjPrRMFYKvMktaXnPuyf5my8gF/yGbwzPZ8wlTg== + dependencies: + "@aws-sdk/credential-provider-env" "3.654.0" + "@aws-sdk/credential-provider-http" "3.654.0" + "@aws-sdk/credential-provider-process" "3.654.0" + "@aws-sdk/credential-provider-sso" "3.654.0" + "@aws-sdk/credential-provider-web-identity" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@smithy/credential-provider-imds" "^3.2.3" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-node@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.621.0.tgz#9cc5052760a9f9d70d70f12ddbdbf0d59bf13a47" - integrity sha512-4JqpccUgz5Snanpt2+53hbOBbJQrSFq7E1sAAbgY6BKVQUsW5qyXqnjvSF32kDeKa5JpBl3bBWLZl04IadcPHw== - dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.621.0" - "@aws-sdk/credential-provider-ini" "3.621.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.621.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" +"@aws-sdk/credential-provider-node@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.654.0.tgz#a701dda47eea2a3d5996d97672c058949ef41d3b" + integrity sha512-wPV7CNYaXDEc+SS+3R0v8SZwkHRUE1z2k2j1d49tH5QBDT4tb/k2V/biXWkwSk3hbR+IMWXmuhJDv/5lybhIvg== + dependencies: + "@aws-sdk/credential-provider-env" "3.654.0" + "@aws-sdk/credential-provider-http" "3.654.0" + "@aws-sdk/credential-provider-ini" "3.654.0" + "@aws-sdk/credential-provider-process" "3.654.0" + "@aws-sdk/credential-provider-sso" "3.654.0" + "@aws-sdk/credential-provider-web-identity" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@smithy/credential-provider-imds" "^3.2.3" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-process@3.620.1": - version "3.620.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz#10387cf85400420bb4bbda9cc56937dcc6d6d0ee" - integrity sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg== +"@aws-sdk/credential-provider-process@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.654.0.tgz#2c526d0d059eddfe4176933fadbbf8bd59480642" + integrity sha512-PmQoo8sZ9Q2Ow8OMzK++Z9lI7MsRUG7sNq3E72DVA215dhtTICTDQwGlXH2AAmIp7n+G9LLRds+4wo2ehG4mkg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-sso@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.621.0.tgz#710f413708cb372f9f94e8eb9726cf263ffd83e3" - integrity sha512-Kza0jcFeA/GEL6xJlzR2KFf1PfZKMFnxfGzJzl5yN7EjoGdMijl34KaRyVnfRjnCWcsUpBWKNIDk9WZVMY9yiw== - dependencies: - "@aws-sdk/client-sso" "3.621.0" - "@aws-sdk/token-providers" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" +"@aws-sdk/credential-provider-sso@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.654.0.tgz#cb6cd05a8279c6ffe7e7399c03ba2db5ef2534f5" + integrity sha512-7GFme6fWEdA/XYKzZPOAdj/jS6fMBy1NdSIZsDXikS0v9jU+ZzHrAaWt13YLzHyjgxB9Sg9id9ncdY1IiubQXQ== + dependencies: + "@aws-sdk/client-sso" "3.654.0" + "@aws-sdk/token-providers" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-web-identity@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz#b25878c0a05dad60cd5f91e7e5a31a145c2f14be" - integrity sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w== +"@aws-sdk/credential-provider-web-identity@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.654.0.tgz#67dc0463d20f801c8577276e2066f9151b2d5eb1" + integrity sha512-6a2g9gMtZToqSu+CusjNK5zvbLJahQ9di7buO3iXgbizXpLXU1rnawCpWxwslMpT5fLgMSKDnKDrr6wdEk7jSw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/endpoint-cache@3.572.0": @@ -493,208 +494,201 @@ mnemonist "0.38.3" tslib "^2.6.2" -"@aws-sdk/lib-dynamodb@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.621.0.tgz#f8c320af1b286f2827d3be97aaffc571fa4bbfeb" - integrity sha512-RJJwaR15BLSTtegf2kgJjlJofvxeR+0Jm0rnEbJmRZ/HZhjow1LawrMbCR0YxfcWKUMsDw9tp8BDkLlrH1+RJQ== +"@aws-sdk/lib-dynamodb@^3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.654.0.tgz#9527dafb98380876fc58abb1486911675ab17fc9" + integrity sha512-/mi11SFhw3LQN+MUOtn3Dsu3gUd3oX1viSx37E/yU9oh6debP+zQSBC2RX4crDuJ5dNpdsvmTSMbbvkbZQ88hA== dependencies: - "@aws-sdk/util-dynamodb" "3.621.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@aws-sdk/util-dynamodb" "3.654.0" + "@smithy/core" "^2.4.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-bucket-endpoint@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz#c5dc0e98b6209a91479cad6c2c74fbc5a3429fab" - integrity sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg== +"@aws-sdk/middleware-bucket-endpoint@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.654.0.tgz#f8241db792eb951e1aaa127911e9d35ae11f45f2" + integrity sha512-/lWkyeLESiK+rAB4+NCw1cVPle9RN7RW/v7B4b8ORiCn1FwZLUPmEiZSYzyh4in5oa3Mri+W/g+KafZDH6LCbA== dependencies: - "@aws-sdk/types" "3.609.0" + "@aws-sdk/types" "3.654.0" "@aws-sdk/util-arn-parser" "3.568.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" "@smithy/util-config-provider" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/middleware-endpoint-discovery@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.620.0.tgz#45acd6cf2a77ceaf736f2758274c383838c8584a" - integrity sha512-T6kuydHBF4BPP5CVH53Fze7c2b9rqxWP88XrGtmNMXXdY4sXur1v/itGdS2l3gqRjxKo0LsmjmuQm9zL4vGneQ== +"@aws-sdk/middleware-endpoint-discovery@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.654.0.tgz#1f21663b21d2277da27771471b3d411836cba2e2" + integrity sha512-oHmSZYWsoGSYTjrohu/EFbtthGZOr9qIU8ewDzzhI2ceCEvCy6w7Vd/Ov1pG6C3faNEGAGNZynOmYJBeF2XIOA== dependencies: "@aws-sdk/endpoint-cache" "3.572.0" - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-expect-continue@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz#6a362c0f0696dc6749108a33de9998e0fa6b50ec" - integrity sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A== +"@aws-sdk/middleware-expect-continue@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.654.0.tgz#ccf64bd5dbde3266181a00052bad8f78fcc1914e" + integrity sha512-S7fSlo8vdjkQTy9DmdF54ZsPwc+aA4z5Y9JVqAlGL9QiZe/fPtRE3GZ8BBbMICjBfMEa12tWjzhDz9su2c6PIA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-flexible-checksums@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz#42cd48cdc0ad9639545be000bf537969210ce8c5" - integrity sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA== +"@aws-sdk/middleware-flexible-checksums@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.654.0.tgz#2868528c66c1f0094811668e2e89b246ca94352a" + integrity sha512-ZSRC+Lf9WxyoDLuTkd7JrFRrBLPLXcTOZzX6tDsnHc6tgdneBNwV3/ZOYUwQ8bdwLLnzSaQUU+X5B2BkEFKIhQ== dependencies: "@aws-crypto/crc32" "5.2.0" "@aws-crypto/crc32c" "5.2.0" - "@aws-sdk/types" "3.609.0" + "@aws-sdk/types" "3.654.0" "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" + "@smithy/util-middleware" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/middleware-host-header@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz#b561d419a08a984ba364c193376b482ff5224d74" - integrity sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg== +"@aws-sdk/middleware-host-header@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz#8b02dcc28467d5b48c32cec22fd6e10ffd2a0549" + integrity sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-location-constraint@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz#7ed82d71e5ddcd50683ef2bbde10d1cc2492057e" - integrity sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A== +"@aws-sdk/middleware-location-constraint@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.654.0.tgz#a64ab011c390e4c7be75a08e0e104e06ccb4d961" + integrity sha512-Duvv5c4DEQ7P6c0YlcvEUW3xCJi6X2uktafNGjILhVDMQwShSF/aFqNv/ikWU/luQcmWHZ9DtDjTR9UKLh6eTA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-logger@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz#ed44d201f091b8bac908cbf14724c7a4d492553f" - integrity sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ== +"@aws-sdk/middleware-logger@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz#510495302fb134e1ef2163205f8eaedd46ffe05f" + integrity sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-recursion-detection@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz#f8270dfff843fd756be971e5673f89c6a24c6513" - integrity sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w== +"@aws-sdk/middleware-recursion-detection@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz#4ade897efb6cbbfd72dd62a66999f28fd1552f9a" + integrity sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-sdk-s3@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.621.0.tgz#da9cc709fffa4d269bb472e8ca42f2a4d80a842b" - integrity sha512-CJrQrtKylcqvyPkRR16JmPZkHroCkWwLErQrg30ZcBPNNok8xbfX6cYqG16XDTnu4lSYzv2Yqc4w4oOBv8xerQ== +"@aws-sdk/middleware-sdk-s3@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.654.0.tgz#53c87e64e745b45b6ff30ba8f06ed27b1fa7c761" + integrity sha512-6prq+GK6hLMAbxEb83tBMb1YiTWWK196fJhFO/7gE5TUPL1v756RhQZzKV/njbwB1fIBjRBTuhYLh5Bn98HhdA== dependencies: - "@aws-sdk/types" "3.609.0" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/types" "3.654.0" "@aws-sdk/util-arn-parser" "3.568.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@smithy/core" "^2.4.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.3" + "@smithy/signature-v4" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-stream" "^3.1.3" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-stream" "^3.1.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/middleware-signing@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.620.0.tgz#8aface959d610732b0a5ede6f2c48119b33c4f3f" - integrity sha512-gxI7rubiaanUXaLfJ4NybERa9MGPNg2Ycl/OqANsozrBnR3Pw8vqy3EuVImQOyn2pJ2IFvl8ZPoSMHf4pX56FQ== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" - tslib "^2.6.2" - -"@aws-sdk/middleware-ssec@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz#b87a8bc6133f3f6bdc6801183d0f9dad3f93cf9f" - integrity sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg== +"@aws-sdk/middleware-ssec@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.654.0.tgz#025cddb3317e5ab8cfdb1f449c4135441810119b" + integrity sha512-k7hkQDJh4hcRJC7YojQ11kc37SY4foryen26Eafj5qYjeG2OGMW0oZTJDl1TVFJ7AcCjqIuMIo0Ho2US/2JspQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-user-agent@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz#1fe3104f04f576a942cf0469bfbd73c38eef3d9e" - integrity sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A== +"@aws-sdk/middleware-user-agent@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz#5fa56514b97ced923fefe2653429d7b2bfb102bb" + integrity sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg== dependencies: - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/region-config-resolver@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz#9cebb31a5bcfea2a41891fff7f28d0164cde179a" - integrity sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g== +"@aws-sdk/region-config-resolver@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz#f98e25a6669fde3d747db23eb589732384e213ef" + integrity sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.6" tslib "^2.6.2" -"@aws-sdk/s3-request-presigner@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.621.0.tgz#0c6d033dd3b3ae17061407766466ce66362c6d92" - integrity sha512-7XCH5wy1guywSa4PHKrSiAqm/mYpuKURQWD9nGN9tl2DWec6OK7z+TTTCOml8lBX8Mg5Hx2GUdO3V8uRVYnEmw== - dependencies: - "@aws-sdk/signature-v4-multi-region" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-format-url" "3.609.0" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" +"@aws-sdk/s3-request-presigner@^3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.654.0.tgz#0795c22a85263b1a24c8374da2f175f675db851c" + integrity sha512-se1DllTTkaB85RSB60U/VUq5rCzwhqYZudxrf1zlWD0YjZpwKqifWgBomd3AyPZtQRQOcQooBcmZCVfGfdAuJQ== + dependencies: + "@aws-sdk/signature-v4-multi-region" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-format-url" "3.654.0" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/signature-v4-multi-region@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.621.0.tgz#d8bd2e8bab970acaecfaca3de85c6924b43f07ff" - integrity sha512-u+ulCaHFveqHaTxgiYrEAyfBVP6GRKjnmDut67CtjhjslshPWYpo/ndtlCW1zc0RDne3uUeK13Pqp7dp7p1d6g== +"@aws-sdk/signature-v4-multi-region@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.654.0.tgz#717ec39af4ec371ee463d0e51fa3985a2fb784ac" + integrity sha512-f8kyvbzgD3lSK1kFc3jsDCYjdutcqGO3tOzYO/QIK7BTl5lxc4rm6IKTcF2UYJsn8jiNqih7tVK8aVIGi8IF/w== dependencies: - "@aws-sdk/middleware-sdk-s3" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/middleware-sdk-s3" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/signature-v4" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/token-providers@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz#88da04f6d4ce916b0b0f6e045676d04201fb47fd" - integrity sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw== +"@aws-sdk/token-providers@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.654.0.tgz#1aba36d510d471ccac43f90b59e2a354399ed069" + integrity sha512-D8GeJYmvbfWkQDtTB4owmIobSMexZel0fOoetwvgCQ/7L8VPph3Q2bn1TRRIXvH7wdt6DcDxA3tKMHPBkT3GlA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/types@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.609.0.tgz#06b39d799c9f197a7b43670243e8e78a3bf7d6a5" - integrity sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q== +"@aws-sdk/types@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.654.0.tgz#d368dda5e8aff9e7b6575985bb425bbbaf67aa97" + integrity sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/types@^3.222.0": @@ -712,31 +706,31 @@ dependencies: tslib "^2.6.2" -"@aws-sdk/util-dynamodb@3.621.0", "@aws-sdk/util-dynamodb@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-dynamodb/-/util-dynamodb-3.621.0.tgz#a0d6501e5ab9aca695dc794963adf46a475ee5f3" - integrity sha512-/3qEmZ52FdP4+3AUsUX0/wKcCF3jvAG+avVKuSCUYIdKgSIYKSeYfH8F3/r6DE3czaFevBwHRiuKHEihCMApGw== +"@aws-sdk/util-dynamodb@3.654.0", "@aws-sdk/util-dynamodb@^3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-dynamodb/-/util-dynamodb-3.654.0.tgz#9d120ced0f65ccec0a12574f84c7357eb9293227" + integrity sha512-Jzl/1TR41VwtlBOBv3xfMHUErK6oLxkhTPmlUpwK0uY5XhKi17mr/JimYMjhOce3z3KNlkEpFLDmxUElw04p+w== dependencies: tslib "^2.6.2" -"@aws-sdk/util-endpoints@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz#6564b0ffd7dc3728221e9f9821f5aab1cc58468e" - integrity sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw== +"@aws-sdk/util-endpoints@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz#ae8ac05c8afe73cf1428942c3a6d0ab8765f3911" + integrity sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" - "@smithy/util-endpoints" "^2.0.5" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" + "@smithy/util-endpoints" "^2.1.2" tslib "^2.6.2" -"@aws-sdk/util-format-url@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-format-url/-/util-format-url-3.609.0.tgz#f53907193bb636b52b61c81bbe6d7bd5ddc76c68" - integrity sha512-fuk29BI/oLQlJ7pfm6iJ4gkEpHdavffAALZwXh9eaY1vQ0ip0aKfRTiNudPoJjyyahnz5yJ1HkmlcDitlzsOrQ== +"@aws-sdk/util-format-url@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-format-url/-/util-format-url-3.654.0.tgz#f48818a14fc8f892335792bbb8cbe3fb34a8bffc" + integrity sha512-2yAlJ/l1uTJhS52iu4+/EvdIyQhDBL+nATY8rEjFI0H+BHGVrJIH2CL4DByhvi2yvYwsqQX0HYah6pF/yoXukA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/querystring-builder" "^3.0.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/util-locate-window@^3.0.0": @@ -746,32 +740,32 @@ dependencies: tslib "^2.6.2" -"@aws-sdk/util-user-agent-browser@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz#aa15421b2e32ae8bc589dac2bd6e8969832ce588" - integrity sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA== +"@aws-sdk/util-user-agent-browser@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz#caa5e5d6d502aad1fe5a436cffbabfff1ec3b92c" + integrity sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" bowser "^2.11.0" tslib "^2.6.2" -"@aws-sdk/util-user-agent-node@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz#1e3f49a80f841a3f21647baed2adce01aac5beb5" - integrity sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA== +"@aws-sdk/util-user-agent-node@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz#d4b88fa9f3fce2fd70118d2c01abd941d30cffa7" + integrity sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/xml-builder@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz#eeb3d5cde000a23cfeeefe0354b6193440dc7d87" - integrity sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA== +"@aws-sdk/xml-builder@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.654.0.tgz#28d295a1a9bbe6313ba240ce9cf851e894fcd449" + integrity sha512-qA2diK3d/ztC8HUb7NwPKbJRV01NpzTzxFn+L5G3HzJBNeKbjLcprQ/9uG9gp2UEx2Go782FI1ddrMNa0qBICA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7": @@ -1359,12 +1353,12 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== -"@smithy/abort-controller@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.1.tgz#291210611ff6afecfc198d0ca72d5771d8461d16" - integrity sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ== +"@smithy/abort-controller@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.4.tgz#7cb22871f7392319c565d1d9ab3cb04e635c4dd9" + integrity sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/chunked-blob-reader-native@^3.0.0": @@ -1382,133 +1376,135 @@ dependencies: tslib "^2.6.2" -"@smithy/config-resolver@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.5.tgz#727978bba7ace754c741c259486a19d3083431fd" - integrity sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA== +"@smithy/config-resolver@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.8.tgz#8717ea934f1d72474a709fc3535d7b8a11de2e33" + integrity sha512-Tv1obAC18XOd2OnDAjSWmmthzx6Pdeh63FbLin8MlPiuJ2ATpKkq0NcNOJFr0dO+JmZXnwu8FQxKJ3TKJ3Hulw== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.6" tslib "^2.6.2" -"@smithy/core@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.3.1.tgz#99cb8eda23009fd7df736c82072dafcf4eb4ff5d" - integrity sha512-BC7VMXx/1BCmRPCVzzn4HGWAtsrb7/0758EtwOGFJQrlSwJBEjCcDLNZLFoL/68JexYa2s+KmgL/UfmXdG6v1w== - dependencies: - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" +"@smithy/core@^2.4.3": + version "2.4.4" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.4.4.tgz#fad2e7c9a702fd701ba2811814b8b4be9f467acd" + integrity sha512-Vco+Q8Xela6tpBOvYHClkeei9z1+uChBClvv3XIJUstEjbpgbSZAvTlw3TEk3wIeEeLQwYgkZjCWfAQfnYQtIQ== + dependencies: + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.19" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.3" + "@smithy/types" "^3.4.2" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/credential-provider-imds@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz#0e0e7ddaff1a8633cb927aee1056c0ab506b7ecf" - integrity sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA== +"@smithy/credential-provider-imds@^3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.3.tgz#93314e58e4f81f2b641de6efac037c7a3250c050" + integrity sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/property-provider" "^3.1.6" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" tslib "^2.6.2" -"@smithy/eventstream-codec@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz#4a1c72b34400631b829241151984a1ad8c4f963c" - integrity sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw== +"@smithy/eventstream-codec@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.5.tgz#2b0d65818425d60e043b8e9d8dee9c6744de0e7b" + integrity sha512-6pu+PT2r+5ZnWEV3vLV1DzyrpJ0TmehQlniIDCSpZg6+Ji2SfOI38EqUyQ+O8lotVElCrfVc9chKtSMe9cmCZQ== dependencies: "@aws-crypto/crc32" "5.2.0" - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-hex-encoding" "^3.0.0" tslib "^2.6.2" -"@smithy/eventstream-serde-browser@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.5.tgz#3e971afd2b8a02a098af8decc4b9e3f35296d6a2" - integrity sha512-dEyiUYL/ekDfk+2Ra4GxV+xNnFoCmk1nuIXg+fMChFTrM2uI/1r9AdiTYzPqgb72yIv/NtAj6C3dG//1wwgakQ== +"@smithy/eventstream-serde-browser@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.9.tgz#bb71b836a8755dd5d5fed85ac2fa500702f60544" + integrity sha512-PiQLo6OQmZAotJweIcObL1H44gkvuJACKMNqpBBe5Rf2Ax1DOcGi/28+feZI7yTe1ERHlQQaGnm8sSkyDUgsMg== dependencies: - "@smithy/eventstream-serde-universal" "^3.0.4" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-serde-universal" "^3.0.8" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/eventstream-serde-config-resolver@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz#f852e096d0ad112363b4685e1d441088d1fce67a" - integrity sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ== +"@smithy/eventstream-serde-config-resolver@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.6.tgz#538862ef05e549c0ef97b060100a5ffbb5d7adfb" + integrity sha512-iew15It+c7WfnVowWkt2a7cdPp533LFJnpjDQgfZQcxv2QiOcyEcea31mnrk5PVbgo0nNH3VbYGq7myw2q/F6A== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/eventstream-serde-node@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.4.tgz#6301752ca51b3ebabcd2dec112f1dacd990de4c1" - integrity sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg== +"@smithy/eventstream-serde-node@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.8.tgz#0221c555f2851fd847b041f27a6231945822018f" + integrity sha512-6m+wI+fT0na+6oao6UqALVA38fsScCpoG5UO/A8ZSyGLnPM2i4MS1cFUhpuALgvLMxfYoTCh7qSeJa0aG4IWpQ== dependencies: - "@smithy/eventstream-serde-universal" "^3.0.4" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-serde-universal" "^3.0.8" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/eventstream-serde-universal@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.4.tgz#6754de5b94bdc286d8ef1d6bcf22d80f6ab68f30" - integrity sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A== +"@smithy/eventstream-serde-universal@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.8.tgz#0dac5365e3bb349960999b10a4a3c66b77b79dc3" + integrity sha512-09tqzIQ6e+7jLqGvRji1yJoDbL/zob0OFhq75edgStWErGLf16+yI5hRc/o9/YAybOhUZs/swpW2SPn892G5Gg== dependencies: - "@smithy/eventstream-codec" "^3.1.2" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-codec" "^3.1.5" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/fetch-http-handler@^3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz#c754de7e0ff2541b73ac9ba7cc955940114b3d62" - integrity sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg== +"@smithy/fetch-http-handler@^3.2.7": + version "3.2.7" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.7.tgz#30520ca939fb817d3eb3ab9445ddc0f6c1df2960" + integrity sha512-Ra6IPI1spYLO+t62/3jQbodjOwAbto9wlpJdHZwkycm0Kit+GVpzHW/NMmSgY4rK1bjJ4qLAmCnaBzePO5Nkkg== dependencies: - "@smithy/protocol-http" "^4.1.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/querystring-builder" "^3.0.6" + "@smithy/types" "^3.4.2" "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" -"@smithy/hash-blob-browser@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.2.tgz#90281c1f183d93686fb4f26107f1819644d68829" - integrity sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg== +"@smithy/hash-blob-browser@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.5.tgz#db1cf756647f8f39b4214403482750afbb8f2236" + integrity sha512-Vi3eoNCmao4iKglS80ktYnBOIqZhjbDDwa1IIbF/VaJ8PsHnZTQ5wSicicPrU7nTI4JPFn92/txzWkh4GlK18Q== dependencies: "@smithy/chunked-blob-reader" "^3.0.0" "@smithy/chunked-blob-reader-native" "^3.0.0" - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/hash-node@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.3.tgz#82c5cb7b0f1a29ee7319081853d2d158c07dff24" - integrity sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw== +"@smithy/hash-node@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.6.tgz#7c1a869afcbd411eac04c4777dd193ea7ac4e588" + integrity sha512-c/FHEdKK/7DU2z6ZE91L36ahyXWayR3B+FzELjnYq7wH5YqIseM24V+pWCS9kFn1Ln8OFGTf+pyYPiHZuX0s/Q== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/hash-stream-node@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.2.tgz#89f0290ae44b113863878e75b10c484ff48af71c" - integrity sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g== +"@smithy/hash-stream-node@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.5.tgz#4c8d290f6e4d55fdb143d65d645031da12af7fc1" + integrity sha512-61CyFCzqN3VBfcnGX7mof/rkzLb8oHjm4Lr6ZwBIRpBssBb8d09ChrZAqinP2rUrA915BRNkq9NpJz18N7+3hQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/invalid-dependency@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz#8d9fd70e3a94b565a4eba4ffbdc95238e1930528" - integrity sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw== +"@smithy/invalid-dependency@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.6.tgz#3b3e30a55b92341412626b412fe919929871eeb1" + integrity sha512-czM7Ioq3s8pIXht7oD+vmgy4Wfb4XavU/k/irO8NdXFFOx7YAlsCCcKOh/lJD1mJSYQqiR7NmpZ9JviryD/7AQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/is-array-buffer@^2.2.0": @@ -1525,161 +1521,161 @@ dependencies: tslib "^2.6.2" -"@smithy/md5-js@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.3.tgz#55ee40aa24075b096c39f7910590c18ff7660c98" - integrity sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q== +"@smithy/md5-js@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.6.tgz#cb8881ffef4ffbf68b0daf52d8add30dc57e3a7a" + integrity sha512-Ze690T8O3M5SVbb70WormwrKzVf9QQRtIuxtJDgpUQDkmt+PtdYDetBbyCbF9ryupxLw6tgzWKgwffAShhVIXQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/middleware-content-length@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz#1680aa4fb2a1c0505756103c9a5c2916307d9035" - integrity sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw== +"@smithy/middleware-content-length@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.8.tgz#4e1c1631718e4d6dfe9a06f37faa90de92e884ed" + integrity sha512-VuyszlSO49WKh3H9/kIO2kf07VUwGV80QRiaDxUfP8P8UKlokz381ETJvwLhwuypBYhLymCYyNhB3fLAGBX2og== dependencies: - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/middleware-endpoint@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz#9b8a496d87a68ec43f3f1a0139868d6765a88119" - integrity sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw== - dependencies: - "@smithy/middleware-serde" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-middleware" "^3.0.3" +"@smithy/middleware-endpoint@^3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.3.tgz#8c84d40c9d26b77e2bbb99721fd4a3d379828505" + integrity sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg== + dependencies: + "@smithy/middleware-serde" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" + "@smithy/util-middleware" "^3.0.6" tslib "^2.6.2" -"@smithy/middleware-retry@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.13.tgz#3bdd662aff01f360fcbaa166500bbc575dc9d1d0" - integrity sha512-zvCLfaRYCaUmjbF2yxShGZdolSHft7NNCTA28HVN9hKcEbOH+g5irr1X9s+in8EpambclGnevZY4A3lYpvDCFw== - dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/service-error-classification" "^3.0.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" +"@smithy/middleware-retry@^3.0.18", "@smithy/middleware-retry@^3.0.19": + version "3.0.19" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.19.tgz#89043eb46bd113e9011387a4f637b4c226fa44c3" + integrity sha512-ISpI7cyBxN2vZrBXpn2oDcSks7v6S27xH0DjmRXcmxMhn97+Iy9HT93/4lnQ4H2Gj0drKDT9klUqWjs6yZgtdA== + dependencies: + "@smithy/node-config-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.3" + "@smithy/service-error-classification" "^3.0.6" + "@smithy/smithy-client" "^3.3.3" + "@smithy/types" "^3.4.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" tslib "^2.6.2" uuid "^9.0.1" -"@smithy/middleware-serde@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz#74d974460f74d99f38c861e6862984543a880a66" - integrity sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA== +"@smithy/middleware-serde@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.6.tgz#9f7a9c152989b59c12865ef3a17acbdb7b6a1566" + integrity sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/middleware-stack@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz#91845c7e61e6f137fa912b623b6def719a4f6ce7" - integrity sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA== +"@smithy/middleware-stack@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.6.tgz#e63d09b3e292b7a46ac3b9eb482973701de15a6f" + integrity sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/node-config-provider@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz#05647bed666aa8036a1ad72323c1942e5d421be1" - integrity sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ== +"@smithy/node-config-provider@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz#6ae71aeff45e8c9792720986f0b1623cf6da671f" + integrity sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg== dependencies: - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/node-http-handler@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz#be4195e45639e690d522cd5f11513ea822ff9d5f" - integrity sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg== +"@smithy/node-http-handler@^3.2.2", "@smithy/node-http-handler@^3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.2.3.tgz#6d10ece149b441f5417d34db45ddb76407d5c186" + integrity sha512-/gcm5DJ3k1b1zEInzBGAZC8ntJ+jwrz1NcSIu+9dSXd1FfG0G6QgkDI40tt8/WYUbHtLyo8fEqtm2v29koWo/w== dependencies: - "@smithy/abort-controller" "^3.1.1" - "@smithy/protocol-http" "^4.1.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/abort-controller" "^3.1.4" + "@smithy/protocol-http" "^4.1.3" + "@smithy/querystring-builder" "^3.0.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/property-provider@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.3.tgz#afd57ea82a3f6c79fbda95e3cb85c0ee0a79f39a" - integrity sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g== +"@smithy/property-provider@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.6.tgz#141a245ad8cac074d29a836ec992ef7dc3363bf7" + integrity sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/protocol-http@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.0.tgz#23519d8f45bf4f33960ea5415847bc2b620a010b" - integrity sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA== +"@smithy/protocol-http@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.3.tgz#91d894ec7d82c012c5674cb3e209800852f05abd" + integrity sha512-GcbMmOYpH9iRqtC05RbRnc/0FssxSTHlmaNhYBTgSgNCYpdR3Kt88u5GAZTBmouzv+Zlj/VRv92J9ruuDeJuEw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/querystring-builder@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz#6b0e566f885bb84938d077c69e8f8555f686af13" - integrity sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw== +"@smithy/querystring-builder@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.6.tgz#bcb718b860697dca5257ca38dc8041a4696c486f" + integrity sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-uri-escape" "^3.0.0" tslib "^2.6.2" -"@smithy/querystring-parser@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz#272a6b83f88dfcbbec8283d72a6bde850cc00091" - integrity sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ== +"@smithy/querystring-parser@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz#f30e7e244fa674d77bdfd3c65481c5dc0aa083ef" + integrity sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/service-error-classification@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz#73484255060a094aa9372f6cd972dcaf97e3ce80" - integrity sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ== +"@smithy/service-error-classification@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.6.tgz#e0ca00b79d9ccf00795284e01cfdc48b43b81d76" + integrity sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" -"@smithy/shared-ini-file-loader@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz#7dceaf5a5307a2ee347ace8aba17312a1a3ede15" - integrity sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ== +"@smithy/shared-ini-file-loader@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz#bdcf3f0213c3c5779c3fbb41580e9a217ad52e8f" + integrity sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/signature-v4@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.1.0.tgz#251ff43dc1f4ad66776122732fea9e56efc56443" - integrity sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag== +"@smithy/signature-v4@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.1.3.tgz#1a5adc19563b8cf8f28ae1ada4d6cda7d351943d" + integrity sha512-YD2KYSCEEeFHcWZ1E3mLdAaHl8T/TANh6XwmocQ6nPcTdBfh4N5fusgnblnWDlnlU1/cUqEq3PiGi22GmT2Lkg== dependencies: "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" "@smithy/util-hex-encoding" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.6" "@smithy/util-uri-escape" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/smithy-client@^3.1.11": - version "3.1.11" - resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.1.11.tgz#f12a7a0acaa7db3ead488ddf12ef4681daec11a7" - integrity sha512-l0BpyYkciNyMaS+PnFFz4aO5sBcXvGLoJd7mX9xrMBIm2nIQBVvYgp2ZpPDMzwjKCavsXu06iuCm0F6ZJZc6yQ== +"@smithy/smithy-client@^3.3.2", "@smithy/smithy-client@^3.3.3": + version "3.3.3" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.3.3.tgz#f90340bba041ffcee3a96d7613c6c9afee6cc8c3" + integrity sha512-8IrpdOq7csW90+oXZ1tAw+g3sY/u+8ctEYjIlAvfYS2feZYorwNb/MH10+tG+b3MWRrLSiP4dz2vyxXV1Zll0g== dependencies: - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - "@smithy/util-stream" "^3.1.3" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" + "@smithy/util-stream" "^3.1.7" tslib "^2.6.2" "@smithy/types@^3.0.0": @@ -1689,20 +1685,20 @@ dependencies: tslib "^2.6.2" -"@smithy/types@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.3.0.tgz#fae037c733d09bc758946a01a3de0ef6e210b16b" - integrity sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA== +"@smithy/types@^3.4.2": + version "3.4.2" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.4.2.tgz#aa2d087922d57205dbad68df8a45c848699c551e" + integrity sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w== dependencies: tslib "^2.6.2" -"@smithy/url-parser@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.3.tgz#e8a060d9810b24b1870385fc2b02485b8a6c5955" - integrity sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A== +"@smithy/url-parser@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.6.tgz#98b426f9a492e0c992fcd5dceac35444c2632837" + integrity sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ== dependencies: - "@smithy/querystring-parser" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/querystring-parser" "^3.0.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/util-base64@^3.0.0": @@ -1751,37 +1747,37 @@ dependencies: tslib "^2.6.2" -"@smithy/util-defaults-mode-browser@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.13.tgz#f574bbb89d60f5dcc443f106087d317b370634d0" - integrity sha512-ZIRSUsnnMRStOP6OKtW+gCSiVFkwnfQF2xtf32QKAbHR6ACjhbAybDvry+3L5qQYdh3H6+7yD/AiUE45n8mTTw== +"@smithy/util-defaults-mode-browser@^3.0.18": + version "3.0.19" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.19.tgz#e14fedaba73204820dacca323df467f41ad112e1" + integrity sha512-ln1wFI+iUW2OlfILtinCfDfRtBHoZ0qIdCXGj225x5+vxhHpCsejLLdsrdKxgL6B0CljQSDtunmSfNmVDgQzhw== dependencies: - "@smithy/property-provider" "^3.1.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/smithy-client" "^3.3.3" + "@smithy/types" "^3.4.2" bowser "^2.11.0" tslib "^2.6.2" -"@smithy/util-defaults-mode-node@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.13.tgz#cdd3a08bb5af4d17c2b0a951af9936ce7f3bae93" - integrity sha512-voUa8TFJGfD+U12tlNNLCDlXibt9vRdNzRX45Onk/WxZe7TS+hTOZouEZRa7oARGicdgeXvt1A0W45qLGYdy+g== - dependencies: - "@smithy/config-resolver" "^3.0.5" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" +"@smithy/util-defaults-mode-node@^3.0.18": + version "3.0.19" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.19.tgz#f2d64646db1cc6baa9549fe6a45fed570375da84" + integrity sha512-lo6BehNZQnC1oo2Ps+cv0bEDC6XXhk6tK0X3B7+0NULPECBsd70b8uTlOlIjEux+VDmjNBYah+8EhjPJ4KbDIg== + dependencies: + "@smithy/config-resolver" "^3.0.8" + "@smithy/credential-provider-imds" "^3.2.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/property-provider" "^3.1.6" + "@smithy/smithy-client" "^3.3.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/util-endpoints@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz#e3a7a4d1c41250bfd2b2d890d591273a7d8934be" - integrity sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg== +"@smithy/util-endpoints@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.2.tgz#e1d789d598da9ab955b8cf3257ab2f263c35031a" + integrity sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/util-hex-encoding@^3.0.0": @@ -1791,31 +1787,31 @@ dependencies: tslib "^2.6.2" -"@smithy/util-middleware@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.3.tgz#07bf9602682f5a6c55bc2f0384303f85fc68c87e" - integrity sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw== +"@smithy/util-middleware@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.6.tgz#463c41e74d6e8d758f6cceba4dbed4dc5a4afe50" + integrity sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/util-retry@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.3.tgz#9b2ac0dbb1c81f69812a8affa4d772bebfc0e049" - integrity sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w== +"@smithy/util-retry@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.6.tgz#297de1cd5a836fb957ab2ad3439041e848815499" + integrity sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg== dependencies: - "@smithy/service-error-classification" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/service-error-classification" "^3.0.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/util-stream@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.3.tgz#699ee2397cc1d474e46d2034039d5263812dca64" - integrity sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw== +"@smithy/util-stream@^3.1.6", "@smithy/util-stream@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.7.tgz#5bc08383dc32319d7c3f1618f96d2267f1a82ed5" + integrity sha512-ytWnVBdSh2uFD/1MFk0N40IiLkY2BEqfimVr+mSm7hP9J0xw15pxiLmy73QUkfg45Y5GRbsD7LI56nKcAqjHbw== dependencies: - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/node-http-handler" "^3.2.3" + "@smithy/types" "^3.4.2" "@smithy/util-base64" "^3.0.0" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-hex-encoding" "^3.0.0" @@ -1845,13 +1841,13 @@ "@smithy/util-buffer-from" "^3.0.0" tslib "^2.6.2" -"@smithy/util-waiter@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.2.tgz#2d40c3312f3537feee763459a19acafab4c75cf3" - integrity sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw== +"@smithy/util-waiter@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.5.tgz#56b3a0fa6498ed22dfee7f40c64d13a54dd04fcc" + integrity sha512-jYOSvM3H6sZe3CHjzD2VQNCjWBJs+4DbtwBMvUp9y5EnnwNa7NQxTeYeQw0CKCAdGGZ3QvVkyJmvbvs5M/B10A== dependencies: - "@smithy/abort-controller" "^3.1.1" - "@smithy/types" "^3.3.0" + "@smithy/abort-controller" "^3.1.4" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@tootallnate/once@1": diff --git a/services/database/package.json b/services/database/package.json index 6828f28ac..bf3f0b803 100644 --- a/services/database/package.json +++ b/services/database/package.json @@ -13,8 +13,8 @@ "serverless-dynamodb": "^0.2.53" }, "dependencies": { - "@aws-sdk/client-dynamodb": "^3.621.0", - "@aws-sdk/client-s3": "^3.621.0", - "@aws-sdk/lib-dynamodb": "^3.621.0" + "@aws-sdk/client-dynamodb": "^3.654.0", + "@aws-sdk/client-s3": "^3.654.0", + "@aws-sdk/lib-dynamodb": "^3.654.0" } } diff --git a/services/database/yarn.lock b/services/database/yarn.lock index 3220409d0..7ed862b2d 100644 --- a/services/database/yarn.lock +++ b/services/database/yarn.lock @@ -166,118 +166,118 @@ tslib "^2.6.2" uuid "^9.0.1" -"@aws-sdk/client-dynamodb@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-dynamodb/-/client-dynamodb-3.621.0.tgz#de0a23830a742f42ed031abb745d3787b0d4e759" - integrity sha512-aczOoVyufYwBCc/zZKJOP/xwbnojKQJ6Y8O7ZAZnxMPRyZXKXpoAxmlxLfOU6GUzXqzXdvj+Ir3VBd7MWB4KuQ== +"@aws-sdk/client-dynamodb@^3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-dynamodb/-/client-dynamodb-3.654.0.tgz#2adbe26b67808850c0e44eea51029c0c97829528" + integrity sha512-QG7n2WJ4ZycoYnq04K7bYgai11in93XJgGJXeQM2jAszbMxrlFfczwhWDciHDz7hXWMhNvpKWuhvrXyxj9Irlg== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/client-sts" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-endpoint-discovery" "3.620.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.654.0" + "@aws-sdk/client-sts" "3.654.0" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-endpoint-discovery" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" + "@smithy/util-waiter" "^3.1.5" tslib "^2.6.2" uuid "^9.0.1" -"@aws-sdk/client-s3@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.621.0.tgz#86a0e77913cd1e82308299835431887fe306c3a0" - integrity sha512-YhGkd2HQTM4HCYJIAVWvfbUMpOF7XUr1W/e2LN3CFP0WTF4zcCJKesJ2iNHrExqC0Ek1+qarMxiXBK95itfjYQ== +"@aws-sdk/client-s3@^3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.654.0.tgz#a4a5a341959a4bab71b4a3326a76e59fb0d50ecd" + integrity sha512-EsyeZJhkZD2VMdZpNt4NhlQ3QUAF24gMC+5w2wpGg6Yw+Bv7VLdg1t3PkTQovriJX1KTJAYHcGAuy92OFmWIng== dependencies: "@aws-crypto/sha1-browser" "5.2.0" "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/client-sts" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-bucket-endpoint" "3.620.0" - "@aws-sdk/middleware-expect-continue" "3.620.0" - "@aws-sdk/middleware-flexible-checksums" "3.620.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-location-constraint" "3.609.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-sdk-s3" "3.621.0" - "@aws-sdk/middleware-signing" "3.620.0" - "@aws-sdk/middleware-ssec" "3.609.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/signature-v4-multi-region" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@aws-sdk/xml-builder" "3.609.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/eventstream-serde-browser" "^3.0.5" - "@smithy/eventstream-serde-config-resolver" "^3.0.3" - "@smithy/eventstream-serde-node" "^3.0.4" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-blob-browser" "^3.1.2" - "@smithy/hash-node" "^3.0.3" - "@smithy/hash-stream-node" "^3.1.2" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/md5-js" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.654.0" + "@aws-sdk/client-sts" "3.654.0" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-bucket-endpoint" "3.654.0" + "@aws-sdk/middleware-expect-continue" "3.654.0" + "@aws-sdk/middleware-flexible-checksums" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-location-constraint" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-sdk-s3" "3.654.0" + "@aws-sdk/middleware-ssec" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/signature-v4-multi-region" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@aws-sdk/xml-builder" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/eventstream-serde-browser" "^3.0.9" + "@smithy/eventstream-serde-config-resolver" "^3.0.6" + "@smithy/eventstream-serde-node" "^3.0.8" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-blob-browser" "^3.1.5" + "@smithy/hash-node" "^3.0.6" + "@smithy/hash-stream-node" "^3.1.5" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/md5-js" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-stream" "^3.1.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" + "@smithy/util-stream" "^3.1.6" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" + "@smithy/util-waiter" "^3.1.5" tslib "^2.6.2" "@aws-sdk/client-sso-oidc@3.569.0": @@ -326,48 +326,48 @@ "@smithy/util-utf8" "^2.3.0" tslib "^2.6.2" -"@aws-sdk/client-sso-oidc@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.621.0.tgz#3fa3d468fbebbd93a5f75c1d51b63cc7af3ef17b" - integrity sha512-mMjk3mFUwV2Y68POf1BQMTF+F6qxt5tPu6daEUCNGC9Cenk3h2YXQQoS4/eSyYzuBiYk3vx49VgleRvdvkg8rg== +"@aws-sdk/client-sso-oidc@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz#9c02ce49f95203e8b99e896cf0dca6e4858e2da7" + integrity sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" @@ -415,47 +415,47 @@ "@smithy/util-utf8" "^2.3.0" tslib "^2.6.2" -"@aws-sdk/client-sso@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.621.0.tgz#c0eefeb9adcbc6bb7c91c32070404c8c91846825" - integrity sha512-xpKfikN4u0BaUYZA9FGUMkkDmfoIP0Q03+A86WjqDWhcOoqNA1DkHsE4kZ+r064ifkPUfcNuUvlkVTEoBZoFjA== +"@aws-sdk/client-sso@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.654.0.tgz#6d800f0cfca97f8acf1fbf46cdac46169201267b" + integrity sha512-4kBxs2IzCDtj6a6lRXa/lXK5wWpMGzwKtb+HMXf/rJYVM6x7wYRzc1hYrOd3DYkFQ/sR3dUFj+0mTP0os3aAbA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" @@ -505,49 +505,49 @@ "@smithy/util-utf8" "^2.3.0" tslib "^2.6.2" -"@aws-sdk/client-sts@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.621.0.tgz#2994f601790893901704c5df56c837e89f279952" - integrity sha512-707uiuReSt+nAx6d0c21xLjLm2lxeKc7padxjv92CIrIocnQSlJPxSCM7r5zBhwiahJA6MNQwmTl2xznU67KgA== +"@aws-sdk/client-sts@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz#574194804834f6158cc06d44ab517ec6e4c1c1c2" + integrity sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.654.0" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" @@ -564,18 +564,19 @@ fast-xml-parser "4.2.5" tslib "^2.6.2" -"@aws-sdk/core@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.621.0.tgz#e38c56c3ce0c819ca1185eaabcb98412429aaca3" - integrity sha512-CtOwWmDdEiINkGXD93iGfXjN0WmCp9l45cDWHHGa8lRgEDyhuL7bwd/pH5aSzj0j8SiQBG2k0S7DHbd5RaqvbQ== +"@aws-sdk/core@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.654.0.tgz#9ccc3618af04b4ff198433a22e27d7db14890917" + integrity sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w== dependencies: - "@smithy/core" "^2.3.1" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/core" "^2.4.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/property-provider" "^3.1.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/signature-v4" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/util-middleware" "^3.0.6" fast-xml-parser "4.4.1" tslib "^2.6.2" @@ -589,14 +590,14 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-env@3.620.1": - version "3.620.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz#d4692c49a65ebc11dae3f7f8b053fee9268a953c" - integrity sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg== +"@aws-sdk/credential-provider-env@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.654.0.tgz#5773a9d969ede7e30059472b26c9e39b3992cc0a" + integrity sha512-kogsx3Ql81JouHS7DkheCDU9MYAvK0AokxjcshDveGmf7BbgbWCA8Fnb9wjQyNDaOXNvkZu8Z8rgkX91z324/w== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/credential-provider-http@3.568.0": @@ -614,19 +615,19 @@ "@smithy/util-stream" "^2.2.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-http@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.621.0.tgz#5f944bf548f203d842cf71a5792f73c205544627" - integrity sha512-/jc2tEsdkT1QQAI5Dvoci50DbSxtJrevemwFsm0B73pwCcOQZ5ZwwSdVqGsPutzYzUVx3bcXg3LRL7jLACqRIg== +"@aws-sdk/credential-provider-http@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.654.0.tgz#72ce2ff0136eb87ef0c90d435bf1dd61558fe96d" + integrity sha512-tgmAH4MBi/aDR882lfw48+tDV95ZH3GWc1Eoe6DpNLiM3GN2VfU/cZwuHmi6aq+vAbdIlswBHJ/+va0fOvlyjw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-stream" "^3.1.3" + "@aws-sdk/types" "3.654.0" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/property-provider" "^3.1.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/util-stream" "^3.1.6" tslib "^2.6.2" "@aws-sdk/credential-provider-ini@3.568.0": @@ -645,21 +646,21 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-ini@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.621.0.tgz#bda2365f88fee40e3ae067b08bf484106c339222" - integrity sha512-0EWVnSc+JQn5HLnF5Xv405M8n4zfdx9gyGdpnCmAmFqEDHA8LmBdxJdpUk1Ovp/I5oPANhjojxabIW5f1uU0RA== +"@aws-sdk/credential-provider-ini@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.654.0.tgz#557b3774d4ab3d127f96cb2cd29419b2a8569796" + integrity sha512-DKSdaNu2hwdmuvnm9KnA0NLqMWxxmxSOLWjSUSoFIm++wGXUjPrRMFYKvMktaXnPuyf5my8gF/yGbwzPZ8wlTg== dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.621.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.621.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/credential-provider-env" "3.654.0" + "@aws-sdk/credential-provider-http" "3.654.0" + "@aws-sdk/credential-provider-process" "3.654.0" + "@aws-sdk/credential-provider-sso" "3.654.0" + "@aws-sdk/credential-provider-web-identity" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@smithy/credential-provider-imds" "^3.2.3" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/credential-provider-node@3.569.0": @@ -680,22 +681,22 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-node@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.621.0.tgz#9cc5052760a9f9d70d70f12ddbdbf0d59bf13a47" - integrity sha512-4JqpccUgz5Snanpt2+53hbOBbJQrSFq7E1sAAbgY6BKVQUsW5qyXqnjvSF32kDeKa5JpBl3bBWLZl04IadcPHw== +"@aws-sdk/credential-provider-node@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.654.0.tgz#a701dda47eea2a3d5996d97672c058949ef41d3b" + integrity sha512-wPV7CNYaXDEc+SS+3R0v8SZwkHRUE1z2k2j1d49tH5QBDT4tb/k2V/biXWkwSk3hbR+IMWXmuhJDv/5lybhIvg== dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.621.0" - "@aws-sdk/credential-provider-ini" "3.621.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.621.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/credential-provider-env" "3.654.0" + "@aws-sdk/credential-provider-http" "3.654.0" + "@aws-sdk/credential-provider-ini" "3.654.0" + "@aws-sdk/credential-provider-process" "3.654.0" + "@aws-sdk/credential-provider-sso" "3.654.0" + "@aws-sdk/credential-provider-web-identity" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@smithy/credential-provider-imds" "^3.2.3" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/credential-provider-process@3.568.0": @@ -709,15 +710,15 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-process@3.620.1": - version "3.620.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz#10387cf85400420bb4bbda9cc56937dcc6d6d0ee" - integrity sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg== +"@aws-sdk/credential-provider-process@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.654.0.tgz#2c526d0d059eddfe4176933fadbbf8bd59480642" + integrity sha512-PmQoo8sZ9Q2Ow8OMzK++Z9lI7MsRUG7sNq3E72DVA215dhtTICTDQwGlXH2AAmIp7n+G9LLRds+4wo2ehG4mkg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/credential-provider-sso@3.568.0": @@ -733,17 +734,17 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-sso@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.621.0.tgz#710f413708cb372f9f94e8eb9726cf263ffd83e3" - integrity sha512-Kza0jcFeA/GEL6xJlzR2KFf1PfZKMFnxfGzJzl5yN7EjoGdMijl34KaRyVnfRjnCWcsUpBWKNIDk9WZVMY9yiw== +"@aws-sdk/credential-provider-sso@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.654.0.tgz#cb6cd05a8279c6ffe7e7399c03ba2db5ef2534f5" + integrity sha512-7GFme6fWEdA/XYKzZPOAdj/jS6fMBy1NdSIZsDXikS0v9jU+ZzHrAaWt13YLzHyjgxB9Sg9id9ncdY1IiubQXQ== dependencies: - "@aws-sdk/client-sso" "3.621.0" - "@aws-sdk/token-providers" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/client-sso" "3.654.0" + "@aws-sdk/token-providers" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/credential-provider-web-identity@3.568.0": @@ -756,14 +757,14 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-web-identity@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz#b25878c0a05dad60cd5f91e7e5a31a145c2f14be" - integrity sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w== +"@aws-sdk/credential-provider-web-identity@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.654.0.tgz#67dc0463d20f801c8577276e2066f9151b2d5eb1" + integrity sha512-6a2g9gMtZToqSu+CusjNK5zvbLJahQ9di7buO3iXgbizXpLXU1rnawCpWxwslMpT5fLgMSKDnKDrr6wdEk7jSw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/endpoint-cache@3.568.0": @@ -792,26 +793,27 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/lib-dynamodb@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.621.0.tgz#f8c320af1b286f2827d3be97aaffc571fa4bbfeb" - integrity sha512-RJJwaR15BLSTtegf2kgJjlJofvxeR+0Jm0rnEbJmRZ/HZhjow1LawrMbCR0YxfcWKUMsDw9tp8BDkLlrH1+RJQ== +"@aws-sdk/lib-dynamodb@^3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.654.0.tgz#9527dafb98380876fc58abb1486911675ab17fc9" + integrity sha512-/mi11SFhw3LQN+MUOtn3Dsu3gUd3oX1viSx37E/yU9oh6debP+zQSBC2RX4crDuJ5dNpdsvmTSMbbvkbZQ88hA== dependencies: - "@aws-sdk/util-dynamodb" "3.621.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@aws-sdk/util-dynamodb" "3.654.0" + "@smithy/core" "^2.4.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-bucket-endpoint@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz#c5dc0e98b6209a91479cad6c2c74fbc5a3429fab" - integrity sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg== +"@aws-sdk/middleware-bucket-endpoint@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.654.0.tgz#f8241db792eb951e1aaa127911e9d35ae11f45f2" + integrity sha512-/lWkyeLESiK+rAB4+NCw1cVPle9RN7RW/v7B4b8ORiCn1FwZLUPmEiZSYzyh4in5oa3Mri+W/g+KafZDH6LCbA== dependencies: - "@aws-sdk/types" "3.609.0" + "@aws-sdk/types" "3.654.0" "@aws-sdk/util-arn-parser" "3.568.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" "@smithy/util-config-provider" "^3.0.0" tslib "^2.6.2" @@ -827,39 +829,41 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/middleware-endpoint-discovery@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.620.0.tgz#45acd6cf2a77ceaf736f2758274c383838c8584a" - integrity sha512-T6kuydHBF4BPP5CVH53Fze7c2b9rqxWP88XrGtmNMXXdY4sXur1v/itGdS2l3gqRjxKo0LsmjmuQm9zL4vGneQ== +"@aws-sdk/middleware-endpoint-discovery@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.654.0.tgz#1f21663b21d2277da27771471b3d411836cba2e2" + integrity sha512-oHmSZYWsoGSYTjrohu/EFbtthGZOr9qIU8ewDzzhI2ceCEvCy6w7Vd/Ov1pG6C3faNEGAGNZynOmYJBeF2XIOA== dependencies: "@aws-sdk/endpoint-cache" "3.572.0" - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-expect-continue@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz#6a362c0f0696dc6749108a33de9998e0fa6b50ec" - integrity sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A== +"@aws-sdk/middleware-expect-continue@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.654.0.tgz#ccf64bd5dbde3266181a00052bad8f78fcc1914e" + integrity sha512-S7fSlo8vdjkQTy9DmdF54ZsPwc+aA4z5Y9JVqAlGL9QiZe/fPtRE3GZ8BBbMICjBfMEa12tWjzhDz9su2c6PIA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-flexible-checksums@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz#42cd48cdc0ad9639545be000bf537969210ce8c5" - integrity sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA== +"@aws-sdk/middleware-flexible-checksums@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.654.0.tgz#2868528c66c1f0094811668e2e89b246ca94352a" + integrity sha512-ZSRC+Lf9WxyoDLuTkd7JrFRrBLPLXcTOZzX6tDsnHc6tgdneBNwV3/ZOYUwQ8bdwLLnzSaQUU+X5B2BkEFKIhQ== dependencies: "@aws-crypto/crc32" "5.2.0" "@aws-crypto/crc32c" "5.2.0" - "@aws-sdk/types" "3.609.0" + "@aws-sdk/types" "3.654.0" "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" + "@smithy/util-middleware" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" @@ -873,23 +877,23 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/middleware-host-header@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz#b561d419a08a984ba364c193376b482ff5224d74" - integrity sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg== +"@aws-sdk/middleware-host-header@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz#8b02dcc28467d5b48c32cec22fd6e10ffd2a0549" + integrity sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-location-constraint@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz#7ed82d71e5ddcd50683ef2bbde10d1cc2492057e" - integrity sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A== +"@aws-sdk/middleware-location-constraint@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.654.0.tgz#a64ab011c390e4c7be75a08e0e104e06ccb4d961" + integrity sha512-Duvv5c4DEQ7P6c0YlcvEUW3xCJi6X2uktafNGjILhVDMQwShSF/aFqNv/ikWU/luQcmWHZ9DtDjTR9UKLh6eTA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/middleware-logger@3.568.0": @@ -901,13 +905,13 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/middleware-logger@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz#ed44d201f091b8bac908cbf14724c7a4d492553f" - integrity sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ== +"@aws-sdk/middleware-logger@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz#510495302fb134e1ef2163205f8eaedd46ffe05f" + integrity sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/middleware-recursion-detection@3.567.0": @@ -920,53 +924,43 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/middleware-recursion-detection@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz#f8270dfff843fd756be971e5673f89c6a24c6513" - integrity sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w== +"@aws-sdk/middleware-recursion-detection@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz#4ade897efb6cbbfd72dd62a66999f28fd1552f9a" + integrity sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-sdk-s3@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.621.0.tgz#da9cc709fffa4d269bb472e8ca42f2a4d80a842b" - integrity sha512-CJrQrtKylcqvyPkRR16JmPZkHroCkWwLErQrg30ZcBPNNok8xbfX6cYqG16XDTnu4lSYzv2Yqc4w4oOBv8xerQ== +"@aws-sdk/middleware-sdk-s3@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.654.0.tgz#53c87e64e745b45b6ff30ba8f06ed27b1fa7c761" + integrity sha512-6prq+GK6hLMAbxEb83tBMb1YiTWWK196fJhFO/7gE5TUPL1v756RhQZzKV/njbwB1fIBjRBTuhYLh5Bn98HhdA== dependencies: - "@aws-sdk/types" "3.609.0" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/types" "3.654.0" "@aws-sdk/util-arn-parser" "3.568.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@smithy/core" "^2.4.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.3" + "@smithy/signature-v4" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-stream" "^3.1.3" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-stream" "^3.1.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/middleware-signing@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.620.0.tgz#8aface959d610732b0a5ede6f2c48119b33c4f3f" - integrity sha512-gxI7rubiaanUXaLfJ4NybERa9MGPNg2Ycl/OqANsozrBnR3Pw8vqy3EuVImQOyn2pJ2IFvl8ZPoSMHf4pX56FQ== +"@aws-sdk/middleware-ssec@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.654.0.tgz#025cddb3317e5ab8cfdb1f449c4135441810119b" + integrity sha512-k7hkQDJh4hcRJC7YojQ11kc37SY4foryen26Eafj5qYjeG2OGMW0oZTJDl1TVFJ7AcCjqIuMIo0Ho2US/2JspQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" - tslib "^2.6.2" - -"@aws-sdk/middleware-ssec@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz#b87a8bc6133f3f6bdc6801183d0f9dad3f93cf9f" - integrity sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/middleware-user-agent@3.567.0": @@ -980,15 +974,15 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/middleware-user-agent@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz#1fe3104f04f576a942cf0469bfbd73c38eef3d9e" - integrity sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A== +"@aws-sdk/middleware-user-agent@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz#5fa56514b97ced923fefe2653429d7b2bfb102bb" + integrity sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg== dependencies: - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/region-config-resolver@3.567.0": @@ -1003,28 +997,28 @@ "@smithy/util-middleware" "^2.2.0" tslib "^2.6.2" -"@aws-sdk/region-config-resolver@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz#9cebb31a5bcfea2a41891fff7f28d0164cde179a" - integrity sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g== +"@aws-sdk/region-config-resolver@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz#f98e25a6669fde3d747db23eb589732384e213ef" + integrity sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.6" tslib "^2.6.2" -"@aws-sdk/signature-v4-multi-region@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.621.0.tgz#d8bd2e8bab970acaecfaca3de85c6924b43f07ff" - integrity sha512-u+ulCaHFveqHaTxgiYrEAyfBVP6GRKjnmDut67CtjhjslshPWYpo/ndtlCW1zc0RDne3uUeK13Pqp7dp7p1d6g== +"@aws-sdk/signature-v4-multi-region@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.654.0.tgz#717ec39af4ec371ee463d0e51fa3985a2fb784ac" + integrity sha512-f8kyvbzgD3lSK1kFc3jsDCYjdutcqGO3tOzYO/QIK7BTl5lxc4rm6IKTcF2UYJsn8jiNqih7tVK8aVIGi8IF/w== dependencies: - "@aws-sdk/middleware-sdk-s3" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/middleware-sdk-s3" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/signature-v4" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/token-providers@3.568.0": @@ -1038,15 +1032,15 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/token-providers@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz#88da04f6d4ce916b0b0f6e045676d04201fb47fd" - integrity sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw== +"@aws-sdk/token-providers@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.654.0.tgz#1aba36d510d471ccac43f90b59e2a354399ed069" + integrity sha512-D8GeJYmvbfWkQDtTB4owmIobSMexZel0fOoetwvgCQ/7L8VPph3Q2bn1TRRIXvH7wdt6DcDxA3tKMHPBkT3GlA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/types@3.567.0", "@aws-sdk/types@^3.222.0": @@ -1057,12 +1051,12 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/types@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.609.0.tgz#06b39d799c9f197a7b43670243e8e78a3bf7d6a5" - integrity sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q== +"@aws-sdk/types@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.654.0.tgz#d368dda5e8aff9e7b6575985bb425bbbaf67aa97" + integrity sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/util-arn-parser@3.568.0": @@ -1079,10 +1073,10 @@ dependencies: tslib "^2.6.2" -"@aws-sdk/util-dynamodb@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-dynamodb/-/util-dynamodb-3.621.0.tgz#a0d6501e5ab9aca695dc794963adf46a475ee5f3" - integrity sha512-/3qEmZ52FdP4+3AUsUX0/wKcCF3jvAG+avVKuSCUYIdKgSIYKSeYfH8F3/r6DE3czaFevBwHRiuKHEihCMApGw== +"@aws-sdk/util-dynamodb@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-dynamodb/-/util-dynamodb-3.654.0.tgz#9d120ced0f65ccec0a12574f84c7357eb9293227" + integrity sha512-Jzl/1TR41VwtlBOBv3xfMHUErK6oLxkhTPmlUpwK0uY5XhKi17mr/JimYMjhOce3z3KNlkEpFLDmxUElw04p+w== dependencies: tslib "^2.6.2" @@ -1096,14 +1090,14 @@ "@smithy/util-endpoints" "^1.2.0" tslib "^2.6.2" -"@aws-sdk/util-endpoints@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz#6564b0ffd7dc3728221e9f9821f5aab1cc58468e" - integrity sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw== +"@aws-sdk/util-endpoints@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz#ae8ac05c8afe73cf1428942c3a6d0ab8765f3911" + integrity sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" - "@smithy/util-endpoints" "^2.0.5" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" + "@smithy/util-endpoints" "^2.1.2" tslib "^2.6.2" "@aws-sdk/util-locate-window@^3.0.0": @@ -1123,13 +1117,13 @@ bowser "^2.11.0" tslib "^2.6.2" -"@aws-sdk/util-user-agent-browser@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz#aa15421b2e32ae8bc589dac2bd6e8969832ce588" - integrity sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA== +"@aws-sdk/util-user-agent-browser@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz#caa5e5d6d502aad1fe5a436cffbabfff1ec3b92c" + integrity sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" bowser "^2.11.0" tslib "^2.6.2" @@ -1143,14 +1137,14 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/util-user-agent-node@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz#1e3f49a80f841a3f21647baed2adce01aac5beb5" - integrity sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA== +"@aws-sdk/util-user-agent-node@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz#d4b88fa9f3fce2fd70118d2c01abd941d30cffa7" + integrity sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/util-utf8-browser@^3.0.0": @@ -1160,12 +1154,12 @@ dependencies: tslib "^2.3.1" -"@aws-sdk/xml-builder@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz#eeb3d5cde000a23cfeeefe0354b6193440dc7d87" - integrity sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA== +"@aws-sdk/xml-builder@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.654.0.tgz#28d295a1a9bbe6313ba240ce9cf851e894fcd449" + integrity sha512-qA2diK3d/ztC8HUb7NwPKbJRV01NpzTzxFn+L5G3HzJBNeKbjLcprQ/9uG9gp2UEx2Go782FI1ddrMNa0qBICA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/abort-controller@^2.2.0": @@ -1176,12 +1170,12 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/abort-controller@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.1.tgz#291210611ff6afecfc198d0ca72d5771d8461d16" - integrity sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ== +"@smithy/abort-controller@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.4.tgz#7cb22871f7392319c565d1d9ab3cb04e635c4dd9" + integrity sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/chunked-blob-reader-native@^3.0.0": @@ -1210,15 +1204,15 @@ "@smithy/util-middleware" "^2.2.0" tslib "^2.6.2" -"@smithy/config-resolver@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.5.tgz#727978bba7ace754c741c259486a19d3083431fd" - integrity sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA== +"@smithy/config-resolver@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.8.tgz#8717ea934f1d72474a709fc3535d7b8a11de2e33" + integrity sha512-Tv1obAC18XOd2OnDAjSWmmthzx6Pdeh63FbLin8MlPiuJ2ATpKkq0NcNOJFr0dO+JmZXnwu8FQxKJ3TKJ3Hulw== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.6" tslib "^2.6.2" "@smithy/core@^1.4.2": @@ -1235,18 +1229,20 @@ "@smithy/util-middleware" "^2.2.0" tslib "^2.6.2" -"@smithy/core@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.3.1.tgz#99cb8eda23009fd7df736c82072dafcf4eb4ff5d" - integrity sha512-BC7VMXx/1BCmRPCVzzn4HGWAtsrb7/0758EtwOGFJQrlSwJBEjCcDLNZLFoL/68JexYa2s+KmgL/UfmXdG6v1w== +"@smithy/core@^2.4.3": + version "2.4.4" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.4.4.tgz#fad2e7c9a702fd701ba2811814b8b4be9f467acd" + integrity sha512-Vco+Q8Xela6tpBOvYHClkeei9z1+uChBClvv3XIJUstEjbpgbSZAvTlw3TEk3wIeEeLQwYgkZjCWfAQfnYQtIQ== dependencies: - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.19" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.3" + "@smithy/types" "^3.4.2" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" "@smithy/credential-provider-imds@^2.3.0": @@ -1260,60 +1256,60 @@ "@smithy/url-parser" "^2.2.0" tslib "^2.6.2" -"@smithy/credential-provider-imds@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz#0e0e7ddaff1a8633cb927aee1056c0ab506b7ecf" - integrity sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA== +"@smithy/credential-provider-imds@^3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.3.tgz#93314e58e4f81f2b641de6efac037c7a3250c050" + integrity sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/property-provider" "^3.1.6" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" tslib "^2.6.2" -"@smithy/eventstream-codec@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz#4a1c72b34400631b829241151984a1ad8c4f963c" - integrity sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw== +"@smithy/eventstream-codec@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.5.tgz#2b0d65818425d60e043b8e9d8dee9c6744de0e7b" + integrity sha512-6pu+PT2r+5ZnWEV3vLV1DzyrpJ0TmehQlniIDCSpZg6+Ji2SfOI38EqUyQ+O8lotVElCrfVc9chKtSMe9cmCZQ== dependencies: "@aws-crypto/crc32" "5.2.0" - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-hex-encoding" "^3.0.0" tslib "^2.6.2" -"@smithy/eventstream-serde-browser@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.5.tgz#3e971afd2b8a02a098af8decc4b9e3f35296d6a2" - integrity sha512-dEyiUYL/ekDfk+2Ra4GxV+xNnFoCmk1nuIXg+fMChFTrM2uI/1r9AdiTYzPqgb72yIv/NtAj6C3dG//1wwgakQ== +"@smithy/eventstream-serde-browser@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.9.tgz#bb71b836a8755dd5d5fed85ac2fa500702f60544" + integrity sha512-PiQLo6OQmZAotJweIcObL1H44gkvuJACKMNqpBBe5Rf2Ax1DOcGi/28+feZI7yTe1ERHlQQaGnm8sSkyDUgsMg== dependencies: - "@smithy/eventstream-serde-universal" "^3.0.4" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-serde-universal" "^3.0.8" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/eventstream-serde-config-resolver@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz#f852e096d0ad112363b4685e1d441088d1fce67a" - integrity sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ== +"@smithy/eventstream-serde-config-resolver@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.6.tgz#538862ef05e549c0ef97b060100a5ffbb5d7adfb" + integrity sha512-iew15It+c7WfnVowWkt2a7cdPp533LFJnpjDQgfZQcxv2QiOcyEcea31mnrk5PVbgo0nNH3VbYGq7myw2q/F6A== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/eventstream-serde-node@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.4.tgz#6301752ca51b3ebabcd2dec112f1dacd990de4c1" - integrity sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg== +"@smithy/eventstream-serde-node@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.8.tgz#0221c555f2851fd847b041f27a6231945822018f" + integrity sha512-6m+wI+fT0na+6oao6UqALVA38fsScCpoG5UO/A8ZSyGLnPM2i4MS1cFUhpuALgvLMxfYoTCh7qSeJa0aG4IWpQ== dependencies: - "@smithy/eventstream-serde-universal" "^3.0.4" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-serde-universal" "^3.0.8" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/eventstream-serde-universal@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.4.tgz#6754de5b94bdc286d8ef1d6bcf22d80f6ab68f30" - integrity sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A== +"@smithy/eventstream-serde-universal@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.8.tgz#0dac5365e3bb349960999b10a4a3c66b77b79dc3" + integrity sha512-09tqzIQ6e+7jLqGvRji1yJoDbL/zob0OFhq75edgStWErGLf16+yI5hRc/o9/YAybOhUZs/swpW2SPn892G5Gg== dependencies: - "@smithy/eventstream-codec" "^3.1.2" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-codec" "^3.1.5" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/fetch-http-handler@^2.5.0": @@ -1327,25 +1323,25 @@ "@smithy/util-base64" "^2.3.0" tslib "^2.6.2" -"@smithy/fetch-http-handler@^3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz#c754de7e0ff2541b73ac9ba7cc955940114b3d62" - integrity sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg== +"@smithy/fetch-http-handler@^3.2.7": + version "3.2.7" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.7.tgz#30520ca939fb817d3eb3ab9445ddc0f6c1df2960" + integrity sha512-Ra6IPI1spYLO+t62/3jQbodjOwAbto9wlpJdHZwkycm0Kit+GVpzHW/NMmSgY4rK1bjJ4qLAmCnaBzePO5Nkkg== dependencies: - "@smithy/protocol-http" "^4.1.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/querystring-builder" "^3.0.6" + "@smithy/types" "^3.4.2" "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" -"@smithy/hash-blob-browser@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.2.tgz#90281c1f183d93686fb4f26107f1819644d68829" - integrity sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg== +"@smithy/hash-blob-browser@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.5.tgz#db1cf756647f8f39b4214403482750afbb8f2236" + integrity sha512-Vi3eoNCmao4iKglS80ktYnBOIqZhjbDDwa1IIbF/VaJ8PsHnZTQ5wSicicPrU7nTI4JPFn92/txzWkh4GlK18Q== dependencies: "@smithy/chunked-blob-reader" "^3.0.0" "@smithy/chunked-blob-reader-native" "^3.0.0" - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/hash-node@^2.2.0": @@ -1358,22 +1354,22 @@ "@smithy/util-utf8" "^2.3.0" tslib "^2.6.2" -"@smithy/hash-node@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.3.tgz#82c5cb7b0f1a29ee7319081853d2d158c07dff24" - integrity sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw== +"@smithy/hash-node@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.6.tgz#7c1a869afcbd411eac04c4777dd193ea7ac4e588" + integrity sha512-c/FHEdKK/7DU2z6ZE91L36ahyXWayR3B+FzELjnYq7wH5YqIseM24V+pWCS9kFn1Ln8OFGTf+pyYPiHZuX0s/Q== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/hash-stream-node@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.2.tgz#89f0290ae44b113863878e75b10c484ff48af71c" - integrity sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g== +"@smithy/hash-stream-node@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.5.tgz#4c8d290f6e4d55fdb143d65d645031da12af7fc1" + integrity sha512-61CyFCzqN3VBfcnGX7mof/rkzLb8oHjm4Lr6ZwBIRpBssBb8d09ChrZAqinP2rUrA915BRNkq9NpJz18N7+3hQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" @@ -1385,12 +1381,12 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/invalid-dependency@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz#8d9fd70e3a94b565a4eba4ffbdc95238e1930528" - integrity sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw== +"@smithy/invalid-dependency@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.6.tgz#3b3e30a55b92341412626b412fe919929871eeb1" + integrity sha512-czM7Ioq3s8pIXht7oD+vmgy4Wfb4XavU/k/irO8NdXFFOx7YAlsCCcKOh/lJD1mJSYQqiR7NmpZ9JviryD/7AQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/is-array-buffer@^2.2.0": @@ -1407,12 +1403,12 @@ dependencies: tslib "^2.6.2" -"@smithy/md5-js@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.3.tgz#55ee40aa24075b096c39f7910590c18ff7660c98" - integrity sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q== +"@smithy/md5-js@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.6.tgz#cb8881ffef4ffbf68b0daf52d8add30dc57e3a7a" + integrity sha512-Ze690T8O3M5SVbb70WormwrKzVf9QQRtIuxtJDgpUQDkmt+PtdYDetBbyCbF9ryupxLw6tgzWKgwffAShhVIXQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" @@ -1425,13 +1421,13 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/middleware-content-length@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz#1680aa4fb2a1c0505756103c9a5c2916307d9035" - integrity sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw== +"@smithy/middleware-content-length@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.8.tgz#4e1c1631718e4d6dfe9a06f37faa90de92e884ed" + integrity sha512-VuyszlSO49WKh3H9/kIO2kf07VUwGV80QRiaDxUfP8P8UKlokz381ETJvwLhwuypBYhLymCYyNhB3fLAGBX2og== dependencies: - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/middleware-endpoint@^2.5.1": @@ -1447,17 +1443,17 @@ "@smithy/util-middleware" "^2.2.0" tslib "^2.6.2" -"@smithy/middleware-endpoint@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz#9b8a496d87a68ec43f3f1a0139868d6765a88119" - integrity sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw== +"@smithy/middleware-endpoint@^3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.3.tgz#8c84d40c9d26b77e2bbb99721fd4a3d379828505" + integrity sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg== dependencies: - "@smithy/middleware-serde" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-middleware" "^3.0.3" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" + "@smithy/util-middleware" "^3.0.6" tslib "^2.6.2" "@smithy/middleware-retry@^2.3.1": @@ -1475,18 +1471,18 @@ tslib "^2.6.2" uuid "^9.0.1" -"@smithy/middleware-retry@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.13.tgz#3bdd662aff01f360fcbaa166500bbc575dc9d1d0" - integrity sha512-zvCLfaRYCaUmjbF2yxShGZdolSHft7NNCTA28HVN9hKcEbOH+g5irr1X9s+in8EpambclGnevZY4A3lYpvDCFw== +"@smithy/middleware-retry@^3.0.18", "@smithy/middleware-retry@^3.0.19": + version "3.0.19" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.19.tgz#89043eb46bd113e9011387a4f637b4c226fa44c3" + integrity sha512-ISpI7cyBxN2vZrBXpn2oDcSks7v6S27xH0DjmRXcmxMhn97+Iy9HT93/4lnQ4H2Gj0drKDT9klUqWjs6yZgtdA== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/service-error-classification" "^3.0.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.3" + "@smithy/service-error-classification" "^3.0.6" + "@smithy/smithy-client" "^3.3.3" + "@smithy/types" "^3.4.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" tslib "^2.6.2" uuid "^9.0.1" @@ -1498,12 +1494,12 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/middleware-serde@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz#74d974460f74d99f38c861e6862984543a880a66" - integrity sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA== +"@smithy/middleware-serde@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.6.tgz#9f7a9c152989b59c12865ef3a17acbdb7b6a1566" + integrity sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/middleware-stack@^2.2.0": @@ -1514,12 +1510,12 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/middleware-stack@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz#91845c7e61e6f137fa912b623b6def719a4f6ce7" - integrity sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA== +"@smithy/middleware-stack@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.6.tgz#e63d09b3e292b7a46ac3b9eb482973701de15a6f" + integrity sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/node-config-provider@^2.3.0": @@ -1532,14 +1528,14 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/node-config-provider@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz#05647bed666aa8036a1ad72323c1942e5d421be1" - integrity sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ== +"@smithy/node-config-provider@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz#6ae71aeff45e8c9792720986f0b1623cf6da671f" + integrity sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg== dependencies: - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/node-http-handler@^2.5.0": @@ -1553,15 +1549,15 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/node-http-handler@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz#be4195e45639e690d522cd5f11513ea822ff9d5f" - integrity sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg== +"@smithy/node-http-handler@^3.2.2", "@smithy/node-http-handler@^3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.2.3.tgz#6d10ece149b441f5417d34db45ddb76407d5c186" + integrity sha512-/gcm5DJ3k1b1zEInzBGAZC8ntJ+jwrz1NcSIu+9dSXd1FfG0G6QgkDI40tt8/WYUbHtLyo8fEqtm2v29koWo/w== dependencies: - "@smithy/abort-controller" "^3.1.1" - "@smithy/protocol-http" "^4.1.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/abort-controller" "^3.1.4" + "@smithy/protocol-http" "^4.1.3" + "@smithy/querystring-builder" "^3.0.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/property-provider@^2.2.0": @@ -1572,12 +1568,12 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/property-provider@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.3.tgz#afd57ea82a3f6c79fbda95e3cb85c0ee0a79f39a" - integrity sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g== +"@smithy/property-provider@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.6.tgz#141a245ad8cac074d29a836ec992ef7dc3363bf7" + integrity sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/protocol-http@^3.3.0": @@ -1588,12 +1584,12 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/protocol-http@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.0.tgz#23519d8f45bf4f33960ea5415847bc2b620a010b" - integrity sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA== +"@smithy/protocol-http@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.3.tgz#91d894ec7d82c012c5674cb3e209800852f05abd" + integrity sha512-GcbMmOYpH9iRqtC05RbRnc/0FssxSTHlmaNhYBTgSgNCYpdR3Kt88u5GAZTBmouzv+Zlj/VRv92J9ruuDeJuEw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/querystring-builder@^2.2.0": @@ -1605,12 +1601,12 @@ "@smithy/util-uri-escape" "^2.2.0" tslib "^2.6.2" -"@smithy/querystring-builder@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz#6b0e566f885bb84938d077c69e8f8555f686af13" - integrity sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw== +"@smithy/querystring-builder@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.6.tgz#bcb718b860697dca5257ca38dc8041a4696c486f" + integrity sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-uri-escape" "^3.0.0" tslib "^2.6.2" @@ -1622,12 +1618,12 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/querystring-parser@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz#272a6b83f88dfcbbec8283d72a6bde850cc00091" - integrity sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ== +"@smithy/querystring-parser@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz#f30e7e244fa674d77bdfd3c65481c5dc0aa083ef" + integrity sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/service-error-classification@^2.1.5": @@ -1637,12 +1633,12 @@ dependencies: "@smithy/types" "^2.12.0" -"@smithy/service-error-classification@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz#73484255060a094aa9372f6cd972dcaf97e3ce80" - integrity sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ== +"@smithy/service-error-classification@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.6.tgz#e0ca00b79d9ccf00795284e01cfdc48b43b81d76" + integrity sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/shared-ini-file-loader@^2.4.0": version "2.4.0" @@ -1652,12 +1648,12 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/shared-ini-file-loader@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz#7dceaf5a5307a2ee347ace8aba17312a1a3ede15" - integrity sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ== +"@smithy/shared-ini-file-loader@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz#bdcf3f0213c3c5779c3fbb41580e9a217ad52e8f" + integrity sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/signature-v4@^2.3.0": @@ -1673,16 +1669,16 @@ "@smithy/util-utf8" "^2.3.0" tslib "^2.6.2" -"@smithy/signature-v4@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.1.0.tgz#251ff43dc1f4ad66776122732fea9e56efc56443" - integrity sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag== +"@smithy/signature-v4@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.1.3.tgz#1a5adc19563b8cf8f28ae1ada4d6cda7d351943d" + integrity sha512-YD2KYSCEEeFHcWZ1E3mLdAaHl8T/TANh6XwmocQ6nPcTdBfh4N5fusgnblnWDlnlU1/cUqEq3PiGi22GmT2Lkg== dependencies: "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" "@smithy/util-hex-encoding" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.6" "@smithy/util-uri-escape" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" @@ -1699,16 +1695,16 @@ "@smithy/util-stream" "^2.2.0" tslib "^2.6.2" -"@smithy/smithy-client@^3.1.11": - version "3.1.11" - resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.1.11.tgz#f12a7a0acaa7db3ead488ddf12ef4681daec11a7" - integrity sha512-l0BpyYkciNyMaS+PnFFz4aO5sBcXvGLoJd7mX9xrMBIm2nIQBVvYgp2ZpPDMzwjKCavsXu06iuCm0F6ZJZc6yQ== +"@smithy/smithy-client@^3.3.2", "@smithy/smithy-client@^3.3.3": + version "3.3.3" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.3.3.tgz#f90340bba041ffcee3a96d7613c6c9afee6cc8c3" + integrity sha512-8IrpdOq7csW90+oXZ1tAw+g3sY/u+8ctEYjIlAvfYS2feZYorwNb/MH10+tG+b3MWRrLSiP4dz2vyxXV1Zll0g== dependencies: - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - "@smithy/util-stream" "^3.1.3" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" + "@smithy/util-stream" "^3.1.7" tslib "^2.6.2" "@smithy/types@^2.12.0": @@ -1718,10 +1714,10 @@ dependencies: tslib "^2.6.2" -"@smithy/types@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.3.0.tgz#fae037c733d09bc758946a01a3de0ef6e210b16b" - integrity sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA== +"@smithy/types@^3.4.2": + version "3.4.2" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.4.2.tgz#aa2d087922d57205dbad68df8a45c848699c551e" + integrity sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w== dependencies: tslib "^2.6.2" @@ -1734,13 +1730,13 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/url-parser@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.3.tgz#e8a060d9810b24b1870385fc2b02485b8a6c5955" - integrity sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A== +"@smithy/url-parser@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.6.tgz#98b426f9a492e0c992fcd5dceac35444c2632837" + integrity sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ== dependencies: - "@smithy/querystring-parser" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/querystring-parser" "^3.0.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/util-base64@^2.3.0": @@ -1830,14 +1826,14 @@ bowser "^2.11.0" tslib "^2.6.2" -"@smithy/util-defaults-mode-browser@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.13.tgz#f574bbb89d60f5dcc443f106087d317b370634d0" - integrity sha512-ZIRSUsnnMRStOP6OKtW+gCSiVFkwnfQF2xtf32QKAbHR6ACjhbAybDvry+3L5qQYdh3H6+7yD/AiUE45n8mTTw== +"@smithy/util-defaults-mode-browser@^3.0.18": + version "3.0.19" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.19.tgz#e14fedaba73204820dacca323df467f41ad112e1" + integrity sha512-ln1wFI+iUW2OlfILtinCfDfRtBHoZ0qIdCXGj225x5+vxhHpCsejLLdsrdKxgL6B0CljQSDtunmSfNmVDgQzhw== dependencies: - "@smithy/property-provider" "^3.1.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/smithy-client" "^3.3.3" + "@smithy/types" "^3.4.2" bowser "^2.11.0" tslib "^2.6.2" @@ -1854,17 +1850,17 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/util-defaults-mode-node@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.13.tgz#cdd3a08bb5af4d17c2b0a951af9936ce7f3bae93" - integrity sha512-voUa8TFJGfD+U12tlNNLCDlXibt9vRdNzRX45Onk/WxZe7TS+hTOZouEZRa7oARGicdgeXvt1A0W45qLGYdy+g== +"@smithy/util-defaults-mode-node@^3.0.18": + version "3.0.19" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.19.tgz#f2d64646db1cc6baa9549fe6a45fed570375da84" + integrity sha512-lo6BehNZQnC1oo2Ps+cv0bEDC6XXhk6tK0X3B7+0NULPECBsd70b8uTlOlIjEux+VDmjNBYah+8EhjPJ4KbDIg== dependencies: - "@smithy/config-resolver" "^3.0.5" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/credential-provider-imds" "^3.2.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/property-provider" "^3.1.6" + "@smithy/smithy-client" "^3.3.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/util-endpoints@^1.2.0": @@ -1876,13 +1872,13 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/util-endpoints@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz#e3a7a4d1c41250bfd2b2d890d591273a7d8934be" - integrity sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg== +"@smithy/util-endpoints@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.2.tgz#e1d789d598da9ab955b8cf3257ab2f263c35031a" + integrity sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/util-hex-encoding@^2.2.0": @@ -1907,12 +1903,12 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/util-middleware@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.3.tgz#07bf9602682f5a6c55bc2f0384303f85fc68c87e" - integrity sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw== +"@smithy/util-middleware@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.6.tgz#463c41e74d6e8d758f6cceba4dbed4dc5a4afe50" + integrity sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/util-retry@^2.2.0": @@ -1924,13 +1920,13 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/util-retry@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.3.tgz#9b2ac0dbb1c81f69812a8affa4d772bebfc0e049" - integrity sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w== +"@smithy/util-retry@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.6.tgz#297de1cd5a836fb957ab2ad3439041e848815499" + integrity sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg== dependencies: - "@smithy/service-error-classification" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/service-error-classification" "^3.0.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/util-stream@^2.2.0": @@ -1947,14 +1943,14 @@ "@smithy/util-utf8" "^2.3.0" tslib "^2.6.2" -"@smithy/util-stream@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.3.tgz#699ee2397cc1d474e46d2034039d5263812dca64" - integrity sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw== +"@smithy/util-stream@^3.1.6", "@smithy/util-stream@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.7.tgz#5bc08383dc32319d7c3f1618f96d2267f1a82ed5" + integrity sha512-ytWnVBdSh2uFD/1MFk0N40IiLkY2BEqfimVr+mSm7hP9J0xw15pxiLmy73QUkfg45Y5GRbsD7LI56nKcAqjHbw== dependencies: - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/node-http-handler" "^3.2.3" + "@smithy/types" "^3.4.2" "@smithy/util-base64" "^3.0.0" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-hex-encoding" "^3.0.0" @@ -2000,13 +1996,13 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@smithy/util-waiter@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.2.tgz#2d40c3312f3537feee763459a19acafab4c75cf3" - integrity sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw== +"@smithy/util-waiter@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.5.tgz#56b3a0fa6498ed22dfee7f40c64d13a54dd04fcc" + integrity sha512-jYOSvM3H6sZe3CHjzD2VQNCjWBJs+4DbtwBMvUp9y5EnnwNa7NQxTeYeQw0CKCAdGGZ3QvVkyJmvbvs5M/B10A== dependencies: - "@smithy/abort-controller" "^3.1.1" - "@smithy/types" "^3.3.0" + "@smithy/abort-controller" "^3.1.4" + "@smithy/types" "^3.4.2" tslib "^2.6.2" ansi-colors@4.1.1: diff --git a/services/ui-auth/package.json b/services/ui-auth/package.json index 25af5d11d..c8a7a4e3e 100644 --- a/services/ui-auth/package.json +++ b/services/ui-auth/package.json @@ -9,7 +9,7 @@ "author": "", "license": "CC0-1.0", "dependencies": { - "@aws-sdk/client-cognito-identity-provider": "^3.606.0" + "@aws-sdk/client-cognito-identity-provider": "^3.654.0" }, "devDependencies": { "serverless-plugin-common-excludes": "^4.0.0", diff --git a/services/ui-auth/yarn.lock b/services/ui-auth/yarn.lock index 44833d174..bcb3f0979 100644 --- a/services/ui-auth/yarn.lock +++ b/services/ui-auth/yarn.lock @@ -40,366 +40,367 @@ "@smithy/util-utf8" "^2.0.0" tslib "^2.6.2" -"@aws-sdk/client-cognito-identity-provider@^3.606.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity-provider/-/client-cognito-identity-provider-3.621.0.tgz#7e5d85943fff1cfb0379866c2c3b3c91fd3f4ffa" - integrity sha512-Tu2m18zW87gJwme6J74p/ZrfC5eJ3kv4yXpCAkfOz1JBO0vfxdoZIkkZ94G5tuCpiS5kljwS6GXpsKOojpVXcg== +"@aws-sdk/client-cognito-identity-provider@^3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity-provider/-/client-cognito-identity-provider-3.654.0.tgz#67cfc4f5f5bec684300ad6601307359f7704a0ed" + integrity sha512-uJ92MxiqeNVdC0FUYhorPYpvOcxd1WnRThGxyunDU2ypoh6IyAU4mIjs9Wg94bzwbR2demhRg6B8E5F32BtSAw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/client-sts" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.654.0" + "@aws-sdk/client-sts" "3.654.0" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sso-oidc@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.621.0.tgz#3fa3d468fbebbd93a5f75c1d51b63cc7af3ef17b" - integrity sha512-mMjk3mFUwV2Y68POf1BQMTF+F6qxt5tPu6daEUCNGC9Cenk3h2YXQQoS4/eSyYzuBiYk3vx49VgleRvdvkg8rg== +"@aws-sdk/client-sso-oidc@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz#9c02ce49f95203e8b99e896cf0dca6e4858e2da7" + integrity sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sso@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.621.0.tgz#c0eefeb9adcbc6bb7c91c32070404c8c91846825" - integrity sha512-xpKfikN4u0BaUYZA9FGUMkkDmfoIP0Q03+A86WjqDWhcOoqNA1DkHsE4kZ+r064ifkPUfcNuUvlkVTEoBZoFjA== +"@aws-sdk/client-sso@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.654.0.tgz#6d800f0cfca97f8acf1fbf46cdac46169201267b" + integrity sha512-4kBxs2IzCDtj6a6lRXa/lXK5wWpMGzwKtb+HMXf/rJYVM6x7wYRzc1hYrOd3DYkFQ/sR3dUFj+0mTP0os3aAbA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sts@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.621.0.tgz#2994f601790893901704c5df56c837e89f279952" - integrity sha512-707uiuReSt+nAx6d0c21xLjLm2lxeKc7padxjv92CIrIocnQSlJPxSCM7r5zBhwiahJA6MNQwmTl2xznU67KgA== +"@aws-sdk/client-sts@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz#574194804834f6158cc06d44ab517ec6e4c1c1c2" + integrity sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.654.0" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/core@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.621.0.tgz#e38c56c3ce0c819ca1185eaabcb98412429aaca3" - integrity sha512-CtOwWmDdEiINkGXD93iGfXjN0WmCp9l45cDWHHGa8lRgEDyhuL7bwd/pH5aSzj0j8SiQBG2k0S7DHbd5RaqvbQ== +"@aws-sdk/core@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.654.0.tgz#9ccc3618af04b4ff198433a22e27d7db14890917" + integrity sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w== dependencies: - "@smithy/core" "^2.3.1" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/core" "^2.4.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/property-provider" "^3.1.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/signature-v4" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/util-middleware" "^3.0.6" fast-xml-parser "4.4.1" tslib "^2.6.2" -"@aws-sdk/credential-provider-env@3.620.1": - version "3.620.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz#d4692c49a65ebc11dae3f7f8b053fee9268a953c" - integrity sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg== +"@aws-sdk/credential-provider-env@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.654.0.tgz#5773a9d969ede7e30059472b26c9e39b3992cc0a" + integrity sha512-kogsx3Ql81JouHS7DkheCDU9MYAvK0AokxjcshDveGmf7BbgbWCA8Fnb9wjQyNDaOXNvkZu8Z8rgkX91z324/w== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" - -"@aws-sdk/credential-provider-http@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.621.0.tgz#5f944bf548f203d842cf71a5792f73c205544627" - integrity sha512-/jc2tEsdkT1QQAI5Dvoci50DbSxtJrevemwFsm0B73pwCcOQZ5ZwwSdVqGsPutzYzUVx3bcXg3LRL7jLACqRIg== + +"@aws-sdk/credential-provider-http@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.654.0.tgz#72ce2ff0136eb87ef0c90d435bf1dd61558fe96d" + integrity sha512-tgmAH4MBi/aDR882lfw48+tDV95ZH3GWc1Eoe6DpNLiM3GN2VfU/cZwuHmi6aq+vAbdIlswBHJ/+va0fOvlyjw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-stream" "^3.1.3" + "@aws-sdk/types" "3.654.0" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/property-provider" "^3.1.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/util-stream" "^3.1.6" tslib "^2.6.2" -"@aws-sdk/credential-provider-ini@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.621.0.tgz#bda2365f88fee40e3ae067b08bf484106c339222" - integrity sha512-0EWVnSc+JQn5HLnF5Xv405M8n4zfdx9gyGdpnCmAmFqEDHA8LmBdxJdpUk1Ovp/I5oPANhjojxabIW5f1uU0RA== +"@aws-sdk/credential-provider-ini@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.654.0.tgz#557b3774d4ab3d127f96cb2cd29419b2a8569796" + integrity sha512-DKSdaNu2hwdmuvnm9KnA0NLqMWxxmxSOLWjSUSoFIm++wGXUjPrRMFYKvMktaXnPuyf5my8gF/yGbwzPZ8wlTg== dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.621.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.621.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/credential-provider-env" "3.654.0" + "@aws-sdk/credential-provider-http" "3.654.0" + "@aws-sdk/credential-provider-process" "3.654.0" + "@aws-sdk/credential-provider-sso" "3.654.0" + "@aws-sdk/credential-provider-web-identity" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@smithy/credential-provider-imds" "^3.2.3" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-node@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.621.0.tgz#9cc5052760a9f9d70d70f12ddbdbf0d59bf13a47" - integrity sha512-4JqpccUgz5Snanpt2+53hbOBbJQrSFq7E1sAAbgY6BKVQUsW5qyXqnjvSF32kDeKa5JpBl3bBWLZl04IadcPHw== +"@aws-sdk/credential-provider-node@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.654.0.tgz#a701dda47eea2a3d5996d97672c058949ef41d3b" + integrity sha512-wPV7CNYaXDEc+SS+3R0v8SZwkHRUE1z2k2j1d49tH5QBDT4tb/k2V/biXWkwSk3hbR+IMWXmuhJDv/5lybhIvg== dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.621.0" - "@aws-sdk/credential-provider-ini" "3.621.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.621.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/credential-provider-env" "3.654.0" + "@aws-sdk/credential-provider-http" "3.654.0" + "@aws-sdk/credential-provider-ini" "3.654.0" + "@aws-sdk/credential-provider-process" "3.654.0" + "@aws-sdk/credential-provider-sso" "3.654.0" + "@aws-sdk/credential-provider-web-identity" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@smithy/credential-provider-imds" "^3.2.3" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-process@3.620.1": - version "3.620.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz#10387cf85400420bb4bbda9cc56937dcc6d6d0ee" - integrity sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg== +"@aws-sdk/credential-provider-process@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.654.0.tgz#2c526d0d059eddfe4176933fadbbf8bd59480642" + integrity sha512-PmQoo8sZ9Q2Ow8OMzK++Z9lI7MsRUG7sNq3E72DVA215dhtTICTDQwGlXH2AAmIp7n+G9LLRds+4wo2ehG4mkg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-sso@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.621.0.tgz#710f413708cb372f9f94e8eb9726cf263ffd83e3" - integrity sha512-Kza0jcFeA/GEL6xJlzR2KFf1PfZKMFnxfGzJzl5yN7EjoGdMijl34KaRyVnfRjnCWcsUpBWKNIDk9WZVMY9yiw== +"@aws-sdk/credential-provider-sso@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.654.0.tgz#cb6cd05a8279c6ffe7e7399c03ba2db5ef2534f5" + integrity sha512-7GFme6fWEdA/XYKzZPOAdj/jS6fMBy1NdSIZsDXikS0v9jU+ZzHrAaWt13YLzHyjgxB9Sg9id9ncdY1IiubQXQ== dependencies: - "@aws-sdk/client-sso" "3.621.0" - "@aws-sdk/token-providers" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/client-sso" "3.654.0" + "@aws-sdk/token-providers" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-web-identity@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz#b25878c0a05dad60cd5f91e7e5a31a145c2f14be" - integrity sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w== +"@aws-sdk/credential-provider-web-identity@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.654.0.tgz#67dc0463d20f801c8577276e2066f9151b2d5eb1" + integrity sha512-6a2g9gMtZToqSu+CusjNK5zvbLJahQ9di7buO3iXgbizXpLXU1rnawCpWxwslMpT5fLgMSKDnKDrr6wdEk7jSw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-host-header@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz#b561d419a08a984ba364c193376b482ff5224d74" - integrity sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg== +"@aws-sdk/middleware-host-header@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz#8b02dcc28467d5b48c32cec22fd6e10ffd2a0549" + integrity sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" + "@aws-sdk/types" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" + tslib "^2.6.2" -"@aws-sdk/middleware-logger@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz#ed44d201f091b8bac908cbf14724c7a4d492553f" - integrity sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ== +"@aws-sdk/middleware-logger@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz#510495302fb134e1ef2163205f8eaedd46ffe05f" + integrity sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-recursion-detection@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz#f8270dfff843fd756be971e5673f89c6a24c6513" - integrity sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" + tslib "^2.6.2" + +"@aws-sdk/middleware-recursion-detection@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz#4ade897efb6cbbfd72dd62a66999f28fd1552f9a" + integrity sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg== + dependencies: + "@aws-sdk/types" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-user-agent@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz#1fe3104f04f576a942cf0469bfbd73c38eef3d9e" - integrity sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A== +"@aws-sdk/middleware-user-agent@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz#5fa56514b97ced923fefe2653429d7b2bfb102bb" + integrity sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg== dependencies: - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/region-config-resolver@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz#9cebb31a5bcfea2a41891fff7f28d0164cde179a" - integrity sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g== +"@aws-sdk/region-config-resolver@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz#f98e25a6669fde3d747db23eb589732384e213ef" + integrity sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.6" tslib "^2.6.2" -"@aws-sdk/token-providers@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz#88da04f6d4ce916b0b0f6e045676d04201fb47fd" - integrity sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw== +"@aws-sdk/token-providers@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.654.0.tgz#1aba36d510d471ccac43f90b59e2a354399ed069" + integrity sha512-D8GeJYmvbfWkQDtTB4owmIobSMexZel0fOoetwvgCQ/7L8VPph3Q2bn1TRRIXvH7wdt6DcDxA3tKMHPBkT3GlA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/types@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.609.0.tgz#06b39d799c9f197a7b43670243e8e78a3bf7d6a5" - integrity sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q== +"@aws-sdk/types@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.654.0.tgz#d368dda5e8aff9e7b6575985bb425bbbaf67aa97" + integrity sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/types@^3.222.0": @@ -409,14 +410,14 @@ dependencies: tslib "^2.3.1" -"@aws-sdk/util-endpoints@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz#6564b0ffd7dc3728221e9f9821f5aab1cc58468e" - integrity sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw== +"@aws-sdk/util-endpoints@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz#ae8ac05c8afe73cf1428942c3a6d0ab8765f3911" + integrity sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" - "@smithy/util-endpoints" "^2.0.5" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" + "@smithy/util-endpoints" "^2.1.2" tslib "^2.6.2" "@aws-sdk/util-locate-window@^3.0.0": @@ -426,24 +427,24 @@ dependencies: tslib "^2.3.1" -"@aws-sdk/util-user-agent-browser@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz#aa15421b2e32ae8bc589dac2bd6e8969832ce588" - integrity sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA== +"@aws-sdk/util-user-agent-browser@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz#caa5e5d6d502aad1fe5a436cffbabfff1ec3b92c" + integrity sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" bowser "^2.11.0" tslib "^2.6.2" -"@aws-sdk/util-user-agent-node@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz#1e3f49a80f841a3f21647baed2adce01aac5beb5" - integrity sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA== +"@aws-sdk/util-user-agent-node@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz#d4b88fa9f3fce2fd70118d2c01abd941d30cffa7" + integrity sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@babel/code-frame@^7.0.0": @@ -494,77 +495,79 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@smithy/abort-controller@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.1.tgz#291210611ff6afecfc198d0ca72d5771d8461d16" - integrity sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ== +"@smithy/abort-controller@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.4.tgz#7cb22871f7392319c565d1d9ab3cb04e635c4dd9" + integrity sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/config-resolver@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.5.tgz#727978bba7ace754c741c259486a19d3083431fd" - integrity sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA== +"@smithy/config-resolver@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.8.tgz#8717ea934f1d72474a709fc3535d7b8a11de2e33" + integrity sha512-Tv1obAC18XOd2OnDAjSWmmthzx6Pdeh63FbLin8MlPiuJ2ATpKkq0NcNOJFr0dO+JmZXnwu8FQxKJ3TKJ3Hulw== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.6" tslib "^2.6.2" -"@smithy/core@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.3.1.tgz#99cb8eda23009fd7df736c82072dafcf4eb4ff5d" - integrity sha512-BC7VMXx/1BCmRPCVzzn4HGWAtsrb7/0758EtwOGFJQrlSwJBEjCcDLNZLFoL/68JexYa2s+KmgL/UfmXdG6v1w== - dependencies: - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" +"@smithy/core@^2.4.3": + version "2.4.4" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.4.4.tgz#fad2e7c9a702fd701ba2811814b8b4be9f467acd" + integrity sha512-Vco+Q8Xela6tpBOvYHClkeei9z1+uChBClvv3XIJUstEjbpgbSZAvTlw3TEk3wIeEeLQwYgkZjCWfAQfnYQtIQ== + dependencies: + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.19" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.3" + "@smithy/types" "^3.4.2" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/credential-provider-imds@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz#0e0e7ddaff1a8633cb927aee1056c0ab506b7ecf" - integrity sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA== +"@smithy/credential-provider-imds@^3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.3.tgz#93314e58e4f81f2b641de6efac037c7a3250c050" + integrity sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/property-provider" "^3.1.6" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" tslib "^2.6.2" -"@smithy/fetch-http-handler@^3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz#c754de7e0ff2541b73ac9ba7cc955940114b3d62" - integrity sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg== +"@smithy/fetch-http-handler@^3.2.7": + version "3.2.7" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.7.tgz#30520ca939fb817d3eb3ab9445ddc0f6c1df2960" + integrity sha512-Ra6IPI1spYLO+t62/3jQbodjOwAbto9wlpJdHZwkycm0Kit+GVpzHW/NMmSgY4rK1bjJ4qLAmCnaBzePO5Nkkg== dependencies: - "@smithy/protocol-http" "^4.1.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/querystring-builder" "^3.0.6" + "@smithy/types" "^3.4.2" "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" -"@smithy/hash-node@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.3.tgz#82c5cb7b0f1a29ee7319081853d2d158c07dff24" - integrity sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw== +"@smithy/hash-node@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.6.tgz#7c1a869afcbd411eac04c4777dd193ea7ac4e588" + integrity sha512-c/FHEdKK/7DU2z6ZE91L36ahyXWayR3B+FzELjnYq7wH5YqIseM24V+pWCS9kFn1Ln8OFGTf+pyYPiHZuX0s/Q== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/invalid-dependency@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz#8d9fd70e3a94b565a4eba4ffbdc95238e1930528" - integrity sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw== +"@smithy/invalid-dependency@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.6.tgz#3b3e30a55b92341412626b412fe919929871eeb1" + integrity sha512-czM7Ioq3s8pIXht7oD+vmgy4Wfb4XavU/k/irO8NdXFFOx7YAlsCCcKOh/lJD1mJSYQqiR7NmpZ9JviryD/7AQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/is-array-buffer@^2.2.0": @@ -581,168 +584,168 @@ dependencies: tslib "^2.6.2" -"@smithy/middleware-content-length@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz#1680aa4fb2a1c0505756103c9a5c2916307d9035" - integrity sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw== +"@smithy/middleware-content-length@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.8.tgz#4e1c1631718e4d6dfe9a06f37faa90de92e884ed" + integrity sha512-VuyszlSO49WKh3H9/kIO2kf07VUwGV80QRiaDxUfP8P8UKlokz381ETJvwLhwuypBYhLymCYyNhB3fLAGBX2og== dependencies: - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/middleware-endpoint@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz#9b8a496d87a68ec43f3f1a0139868d6765a88119" - integrity sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw== - dependencies: - "@smithy/middleware-serde" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-middleware" "^3.0.3" - tslib "^2.6.2" - -"@smithy/middleware-retry@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.13.tgz#3bdd662aff01f360fcbaa166500bbc575dc9d1d0" - integrity sha512-zvCLfaRYCaUmjbF2yxShGZdolSHft7NNCTA28HVN9hKcEbOH+g5irr1X9s+in8EpambclGnevZY4A3lYpvDCFw== - dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/service-error-classification" "^3.0.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" +"@smithy/middleware-endpoint@^3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.3.tgz#8c84d40c9d26b77e2bbb99721fd4a3d379828505" + integrity sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg== + dependencies: + "@smithy/middleware-serde" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" + "@smithy/util-middleware" "^3.0.6" + tslib "^2.6.2" + +"@smithy/middleware-retry@^3.0.18", "@smithy/middleware-retry@^3.0.19": + version "3.0.19" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.19.tgz#89043eb46bd113e9011387a4f637b4c226fa44c3" + integrity sha512-ISpI7cyBxN2vZrBXpn2oDcSks7v6S27xH0DjmRXcmxMhn97+Iy9HT93/4lnQ4H2Gj0drKDT9klUqWjs6yZgtdA== + dependencies: + "@smithy/node-config-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.3" + "@smithy/service-error-classification" "^3.0.6" + "@smithy/smithy-client" "^3.3.3" + "@smithy/types" "^3.4.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" tslib "^2.6.2" uuid "^9.0.1" -"@smithy/middleware-serde@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz#74d974460f74d99f38c861e6862984543a880a66" - integrity sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA== +"@smithy/middleware-serde@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.6.tgz#9f7a9c152989b59c12865ef3a17acbdb7b6a1566" + integrity sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/middleware-stack@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz#91845c7e61e6f137fa912b623b6def719a4f6ce7" - integrity sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA== +"@smithy/middleware-stack@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.6.tgz#e63d09b3e292b7a46ac3b9eb482973701de15a6f" + integrity sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/node-config-provider@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz#05647bed666aa8036a1ad72323c1942e5d421be1" - integrity sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ== +"@smithy/node-config-provider@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz#6ae71aeff45e8c9792720986f0b1623cf6da671f" + integrity sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg== dependencies: - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/node-http-handler@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz#be4195e45639e690d522cd5f11513ea822ff9d5f" - integrity sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg== +"@smithy/node-http-handler@^3.2.2", "@smithy/node-http-handler@^3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.2.3.tgz#6d10ece149b441f5417d34db45ddb76407d5c186" + integrity sha512-/gcm5DJ3k1b1zEInzBGAZC8ntJ+jwrz1NcSIu+9dSXd1FfG0G6QgkDI40tt8/WYUbHtLyo8fEqtm2v29koWo/w== dependencies: - "@smithy/abort-controller" "^3.1.1" - "@smithy/protocol-http" "^4.1.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/abort-controller" "^3.1.4" + "@smithy/protocol-http" "^4.1.3" + "@smithy/querystring-builder" "^3.0.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/property-provider@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.3.tgz#afd57ea82a3f6c79fbda95e3cb85c0ee0a79f39a" - integrity sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g== +"@smithy/property-provider@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.6.tgz#141a245ad8cac074d29a836ec992ef7dc3363bf7" + integrity sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/protocol-http@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.0.tgz#23519d8f45bf4f33960ea5415847bc2b620a010b" - integrity sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA== +"@smithy/protocol-http@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.3.tgz#91d894ec7d82c012c5674cb3e209800852f05abd" + integrity sha512-GcbMmOYpH9iRqtC05RbRnc/0FssxSTHlmaNhYBTgSgNCYpdR3Kt88u5GAZTBmouzv+Zlj/VRv92J9ruuDeJuEw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/querystring-builder@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz#6b0e566f885bb84938d077c69e8f8555f686af13" - integrity sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw== +"@smithy/querystring-builder@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.6.tgz#bcb718b860697dca5257ca38dc8041a4696c486f" + integrity sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-uri-escape" "^3.0.0" tslib "^2.6.2" -"@smithy/querystring-parser@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz#272a6b83f88dfcbbec8283d72a6bde850cc00091" - integrity sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ== +"@smithy/querystring-parser@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz#f30e7e244fa674d77bdfd3c65481c5dc0aa083ef" + integrity sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/service-error-classification@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz#73484255060a094aa9372f6cd972dcaf97e3ce80" - integrity sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ== +"@smithy/service-error-classification@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.6.tgz#e0ca00b79d9ccf00795284e01cfdc48b43b81d76" + integrity sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" -"@smithy/shared-ini-file-loader@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz#7dceaf5a5307a2ee347ace8aba17312a1a3ede15" - integrity sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ== +"@smithy/shared-ini-file-loader@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz#bdcf3f0213c3c5779c3fbb41580e9a217ad52e8f" + integrity sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/signature-v4@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.1.0.tgz#251ff43dc1f4ad66776122732fea9e56efc56443" - integrity sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag== +"@smithy/signature-v4@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.1.3.tgz#1a5adc19563b8cf8f28ae1ada4d6cda7d351943d" + integrity sha512-YD2KYSCEEeFHcWZ1E3mLdAaHl8T/TANh6XwmocQ6nPcTdBfh4N5fusgnblnWDlnlU1/cUqEq3PiGi22GmT2Lkg== dependencies: "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" "@smithy/util-hex-encoding" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.6" "@smithy/util-uri-escape" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/smithy-client@^3.1.11": - version "3.1.11" - resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.1.11.tgz#f12a7a0acaa7db3ead488ddf12ef4681daec11a7" - integrity sha512-l0BpyYkciNyMaS+PnFFz4aO5sBcXvGLoJd7mX9xrMBIm2nIQBVvYgp2ZpPDMzwjKCavsXu06iuCm0F6ZJZc6yQ== +"@smithy/smithy-client@^3.3.2", "@smithy/smithy-client@^3.3.3": + version "3.3.3" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.3.3.tgz#f90340bba041ffcee3a96d7613c6c9afee6cc8c3" + integrity sha512-8IrpdOq7csW90+oXZ1tAw+g3sY/u+8ctEYjIlAvfYS2feZYorwNb/MH10+tG+b3MWRrLSiP4dz2vyxXV1Zll0g== dependencies: - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - "@smithy/util-stream" "^3.1.3" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" + "@smithy/util-stream" "^3.1.7" tslib "^2.6.2" -"@smithy/types@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.3.0.tgz#fae037c733d09bc758946a01a3de0ef6e210b16b" - integrity sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA== +"@smithy/types@^3.4.2": + version "3.4.2" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.4.2.tgz#aa2d087922d57205dbad68df8a45c848699c551e" + integrity sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w== dependencies: tslib "^2.6.2" -"@smithy/url-parser@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.3.tgz#e8a060d9810b24b1870385fc2b02485b8a6c5955" - integrity sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A== +"@smithy/url-parser@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.6.tgz#98b426f9a492e0c992fcd5dceac35444c2632837" + integrity sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ== dependencies: - "@smithy/querystring-parser" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/querystring-parser" "^3.0.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/util-base64@^3.0.0": @@ -791,37 +794,37 @@ dependencies: tslib "^2.6.2" -"@smithy/util-defaults-mode-browser@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.13.tgz#f574bbb89d60f5dcc443f106087d317b370634d0" - integrity sha512-ZIRSUsnnMRStOP6OKtW+gCSiVFkwnfQF2xtf32QKAbHR6ACjhbAybDvry+3L5qQYdh3H6+7yD/AiUE45n8mTTw== +"@smithy/util-defaults-mode-browser@^3.0.18": + version "3.0.19" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.19.tgz#e14fedaba73204820dacca323df467f41ad112e1" + integrity sha512-ln1wFI+iUW2OlfILtinCfDfRtBHoZ0qIdCXGj225x5+vxhHpCsejLLdsrdKxgL6B0CljQSDtunmSfNmVDgQzhw== dependencies: - "@smithy/property-provider" "^3.1.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/smithy-client" "^3.3.3" + "@smithy/types" "^3.4.2" bowser "^2.11.0" tslib "^2.6.2" -"@smithy/util-defaults-mode-node@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.13.tgz#cdd3a08bb5af4d17c2b0a951af9936ce7f3bae93" - integrity sha512-voUa8TFJGfD+U12tlNNLCDlXibt9vRdNzRX45Onk/WxZe7TS+hTOZouEZRa7oARGicdgeXvt1A0W45qLGYdy+g== +"@smithy/util-defaults-mode-node@^3.0.18": + version "3.0.19" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.19.tgz#f2d64646db1cc6baa9549fe6a45fed570375da84" + integrity sha512-lo6BehNZQnC1oo2Ps+cv0bEDC6XXhk6tK0X3B7+0NULPECBsd70b8uTlOlIjEux+VDmjNBYah+8EhjPJ4KbDIg== dependencies: - "@smithy/config-resolver" "^3.0.5" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/credential-provider-imds" "^3.2.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/property-provider" "^3.1.6" + "@smithy/smithy-client" "^3.3.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/util-endpoints@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz#e3a7a4d1c41250bfd2b2d890d591273a7d8934be" - integrity sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg== +"@smithy/util-endpoints@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.2.tgz#e1d789d598da9ab955b8cf3257ab2f263c35031a" + integrity sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/util-hex-encoding@^3.0.0": @@ -831,31 +834,31 @@ dependencies: tslib "^2.6.2" -"@smithy/util-middleware@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.3.tgz#07bf9602682f5a6c55bc2f0384303f85fc68c87e" - integrity sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw== +"@smithy/util-middleware@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.6.tgz#463c41e74d6e8d758f6cceba4dbed4dc5a4afe50" + integrity sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/util-retry@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.3.tgz#9b2ac0dbb1c81f69812a8affa4d772bebfc0e049" - integrity sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w== +"@smithy/util-retry@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.6.tgz#297de1cd5a836fb957ab2ad3439041e848815499" + integrity sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg== dependencies: - "@smithy/service-error-classification" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/service-error-classification" "^3.0.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/util-stream@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.3.tgz#699ee2397cc1d474e46d2034039d5263812dca64" - integrity sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw== +"@smithy/util-stream@^3.1.6", "@smithy/util-stream@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.7.tgz#5bc08383dc32319d7c3f1618f96d2267f1a82ed5" + integrity sha512-ytWnVBdSh2uFD/1MFk0N40IiLkY2BEqfimVr+mSm7hP9J0xw15pxiLmy73QUkfg45Y5GRbsD7LI56nKcAqjHbw== dependencies: - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/node-http-handler" "^3.2.3" + "@smithy/types" "^3.4.2" "@smithy/util-base64" "^3.0.0" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-hex-encoding" "^3.0.0" From a3b85d0e362c39d47377580962f59b4aecf2ae54 Mon Sep 17 00:00:00 2001 From: MDCT GitHub Service Account <125407418+mdct-github-service-account@users.noreply.github.com> Date: Tue, 24 Sep 2024 09:16:25 -0400 Subject: [PATCH 05/35] [Snyk] Upgrade react-router-dom from 6.25.1 to 6.26.1 (#11866) Co-authored-by: snyk-bot --- services/ui-src/package.json | 2 +- services/ui-src/yarn.lock | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/services/ui-src/package.json b/services/ui-src/package.json index 75b5e9c4b..d0f556edd 100644 --- a/services/ui-src/package.json +++ b/services/ui-src/package.json @@ -39,7 +39,7 @@ "react-error-boundary": "^3.1.4", "react-hook-form": "^7.52.0", "react-icons": "^4.3.1", - "react-router-dom": "6.25.1", + "react-router-dom": "6.26.1", "react-uuid": "^1.0.3", "sass": "^1.77.6", "vite": "^5.3.6", diff --git a/services/ui-src/yarn.lock b/services/ui-src/yarn.lock index b6e56e75d..c1e472a17 100644 --- a/services/ui-src/yarn.lock +++ b/services/ui-src/yarn.lock @@ -4496,10 +4496,10 @@ prop-types "^15.7.2" tslib "^2.1.0" -"@remix-run/router@1.18.0": - version "1.18.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.18.0.tgz#20b033d1f542a100c1d57cfd18ecf442d1784732" - integrity sha512-L3jkqmqoSVBVKHfpGZmLrex0lxR5SucGA0sUfFzGctehw+S/ggL9L/0NnC5mw6P8HUWpFZ3nQw3cRApjjWx9Sw== +"@remix-run/router@1.19.1": + version "1.19.1" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.19.1.tgz#984771bfd1de2715f42394c87fb716c1349e014f" + integrity sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg== "@rollup/rollup-android-arm-eabi@4.22.0": version "4.22.0" @@ -8715,20 +8715,20 @@ react-remove-scroll@2.4.1: use-callback-ref "^1.2.3" use-sidecar "^1.0.1" -react-router-dom@6.25.1: - version "6.25.1" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.25.1.tgz#b89f8d63fc8383ea4e89c44bf31c5843e1f7afa0" - integrity sha512-0tUDpbFvk35iv+N89dWNrJp+afLgd+y4VtorJZuOCXK0kkCWjEvb3vTJM++SYvMEpbVwXKf3FjeVveVEb6JpDQ== +react-router-dom@6.26.1: + version "6.26.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.26.1.tgz#a408892b41767a49dc94b3564b0e7d8e3959f623" + integrity sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw== dependencies: - "@remix-run/router" "1.18.0" - react-router "6.25.1" + "@remix-run/router" "1.19.1" + react-router "6.26.1" -react-router@6.25.1: - version "6.25.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.25.1.tgz#70b4f1af79954cfcfd23f6ddf5c883e8c904203e" - integrity sha512-u8ELFr5Z6g02nUtpPAggP73Jigj1mRePSwhS/2nkTrlPU5yEkH1vYzWNyvSnSzeeE2DNqWdH+P8OhIh9wuXhTw== +react-router@6.26.1: + version "6.26.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.26.1.tgz#88c64837e05ffab6899a49df2a1484a22471e4ce" + integrity sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ== dependencies: - "@remix-run/router" "1.18.0" + "@remix-run/router" "1.19.1" react-side-effect@^2.1.0: version "2.1.2" From b0484447f3b05ac0193d23d6efef70d8b6f49b0a Mon Sep 17 00:00:00 2001 From: Garrett Rabian <57802560+gmrabian@users.noreply.github.com> Date: Wed, 25 Sep 2024 09:09:11 -0400 Subject: [PATCH 06/35] refactor api response pattern (#11865) --- .../app-api/handlers/banners/create.test.ts | 36 ++- services/app-api/handlers/banners/create.ts | 88 +++--- .../app-api/handlers/banners/delete.test.ts | 24 +- services/app-api/handlers/banners/delete.ts | 30 +-- .../app-api/handlers/banners/fetch.test.ts | 19 +- services/app-api/handlers/banners/fetch.ts | 10 +- services/app-api/handlers/handler-lib.test.ts | 23 +- services/app-api/handlers/handler-lib.ts | 19 +- .../app-api/handlers/reports/archive.test.ts | 42 ++- services/app-api/handlers/reports/archive.ts | 82 +++--- .../app-api/handlers/reports/create.test.ts | 80 ++++-- services/app-api/handlers/reports/create.ts | 109 +++----- .../app-api/handlers/reports/fetch.test.ts | 75 ++++-- services/app-api/handlers/reports/fetch.ts | 71 ++--- .../app-api/handlers/reports/release.test.ts | 156 ++++++++++- services/app-api/handlers/reports/release.ts | 61 ++--- .../app-api/handlers/reports/submit.test.ts | 91 ++++++- services/app-api/handlers/reports/submit.ts | 254 ++++++++---------- .../app-api/handlers/reports/update.test.ts | 136 ++++++++-- services/app-api/handlers/reports/update.ts | 160 +++++------ .../app-api/handlers/templates/fetch.test.ts | 17 +- services/app-api/handlers/templates/fetch.ts | 9 +- .../app-api/utils/auth/authorization.test.ts | 22 +- services/app-api/utils/auth/authorization.ts | 18 +- services/app-api/utils/constants/constants.ts | 4 +- .../utils/responses/response-lib.test.ts | 56 ++-- .../app-api/utils/responses/response-lib.ts | 101 ++++++- services/app-api/utils/types/other.ts | 9 - 28 files changed, 1078 insertions(+), 724 deletions(-) diff --git a/services/app-api/handlers/banners/create.test.ts b/services/app-api/handlers/banners/create.test.ts index 48cbdf296..9a98bd070 100644 --- a/services/app-api/handlers/banners/create.test.ts +++ b/services/app-api/handlers/banners/create.test.ts @@ -2,16 +2,18 @@ import { createBanner } from "./create"; import { DynamoDBDocumentClient, PutCommand } from "@aws-sdk/lib-dynamodb"; import { mockClient } from "aws-sdk-client-mock"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; // utils import { error } from "../../utils/constants/constants"; import { proxyEvent } from "../../utils/testing/proxyEvent"; +import { StatusCodes } from "../../utils/responses/response-lib"; +import { hasPermissions } from "../../utils/auth/authorization"; const dynamoClientMock = mockClient(DynamoDBDocumentClient); jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockReturnValue(true), - hasPermissions: jest.fn().mockReturnValueOnce(false).mockReturnValue(true), + isAuthenticated: jest.fn().mockReturnValue(true), + hasPermissions: jest.fn().mockReturnValue(true), })); const testEvent: APIGatewayProxyEvent = { @@ -37,10 +39,14 @@ const consoleSpy: { }; describe("Test createBanner API method", () => { + beforeEach(() => { + dynamoClientMock.reset(); + }); test("Test unauthorized banner creation throws 403 error", async () => { + (hasPermissions as jest.Mock).mockReturnValueOnce(false); const res = await createBanner(testEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(403); + expect(res.statusCode).toBe(StatusCodes.Forbidden); expect(res.body).toContain(error.UNAUTHORIZED); }); @@ -49,37 +55,41 @@ describe("Test createBanner API method", () => { dynamoClientMock.on(PutCommand).callsFake(mockPut); const res = await createBanner(testEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.CREATED); + expect(res.statusCode).toBe(StatusCodes.Created); expect(res.body).toContain("test banner"); expect(res.body).toContain("test description"); expect(mockPut).toHaveBeenCalled(); }); + test("Test dynamo issue throws error", async () => { + dynamoClientMock.on(PutCommand).rejectsOnce("error with dynamo"); + const res = await createBanner(testEvent, null); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); + expect(res.body).toContain(error.DYNAMO_CREATION_ERROR); + }); + test("Test invalid data causes failure", async () => { const res = await createBanner(testEventWithInvalidData, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SERVER_ERROR); + expect(res.statusCode).toBe(StatusCodes.BadRequest); }); - test("Test bannerKey not provided throws 500 error", async () => { + test("Test bannerKey not provided throws 400 error", async () => { const noKeyEvent: APIGatewayProxyEvent = { ...testEvent, pathParameters: {}, }; const res = await createBanner(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(500); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); - test("Test bannerKey empty throws 500 error", async () => { + test("Test bannerKey empty throws 400 error", async () => { const noKeyEvent: APIGatewayProxyEvent = { ...testEvent, pathParameters: { bannerId: "" }, }; const res = await createBanner(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(500); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); }); diff --git a/services/app-api/handlers/banners/create.ts b/services/app-api/handlers/banners/create.ts index eff5ca446..3fcc5b967 100644 --- a/services/app-api/handlers/banners/create.ts +++ b/services/app-api/handlers/banners/create.ts @@ -5,51 +5,61 @@ import dynamoDb from "../../utils/dynamo/dynamodb-lib"; import { hasPermissions } from "../../utils/auth/authorization"; import { validateData } from "../../utils/validation/validation"; import { error } from "../../utils/constants/constants"; +import { + badRequest, + created, + forbidden, + internalServerError, +} from "../../utils/responses/response-lib"; // types -import { StatusCodes, UserRoles } from "../../utils/types"; +import { UserRoles } from "../../utils/types"; + +const validationSchema = yup.object().shape({ + key: yup.string().required(), + title: yup.string().required(), + description: yup.string().required(), + link: yup.string().url().notRequired(), + startDate: yup.number().required(), + endDate: yup.number().required(), +}); export const createBanner = handler(async (event, _context) => { if (!hasPermissions(event, [UserRoles.ADMIN])) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; - } else if (!event?.pathParameters?.bannerId!) { - throw new Error(error.NO_KEY); - } else { - const unvalidatedPayload = JSON.parse(event!.body!); + return forbidden(error.UNAUTHORIZED); + } + if (!event?.pathParameters?.bannerId!) { + return badRequest(error.NO_KEY); + } + const unvalidatedPayload = JSON.parse(event.body!); - const validationSchema = yup.object().shape({ - key: yup.string().required(), - title: yup.string().required(), - description: yup.string().required(), - link: yup.string().url().notRequired(), - startDate: yup.number().required(), - endDate: yup.number().required(), - }); + let validatedPayload; + try { + validatedPayload = await validateData(validationSchema, unvalidatedPayload); + } catch { + return badRequest(error.INVALID_DATA); + } - const validatedPayload = await validateData( - validationSchema, - unvalidatedPayload - ); + const { title, description, link, startDate, endDate } = validatedPayload; + const currentTime = Date.now(); - if (validatedPayload) { - const params = { - TableName: process.env.BANNER_TABLE_NAME!, - Item: { - key: event.pathParameters.bannerId, - createdAt: Date.now(), - lastAltered: Date.now(), - lastAlteredBy: event?.headers["cognito-identity-id"], - title: validatedPayload.title, - description: validatedPayload.description, - link: validatedPayload.link, - startDate: validatedPayload.startDate, - endDate: validatedPayload.endDate, - }, - }; - await dynamoDb.put(params); - return { status: StatusCodes.CREATED, body: params }; - } + const params = { + TableName: process.env.BANNER_TABLE_NAME!, + Item: { + key: event.pathParameters.bannerId, + createdAt: currentTime, + lastAltered: currentTime, + lastAlteredBy: event?.headers["cognito-identity-id"], + title, + description, + link, + startDate, + endDate, + }, + }; + try { + await dynamoDb.put(params); + } catch { + return internalServerError(error.DYNAMO_CREATION_ERROR); } + return created(params); }); diff --git a/services/app-api/handlers/banners/delete.test.ts b/services/app-api/handlers/banners/delete.test.ts index c82aad559..ba2b9a6a4 100644 --- a/services/app-api/handlers/banners/delete.test.ts +++ b/services/app-api/handlers/banners/delete.test.ts @@ -4,14 +4,16 @@ import { mockClient } from "aws-sdk-client-mock"; // utils import { proxyEvent } from "../../utils/testing/proxyEvent"; import { error } from "../../utils/constants/constants"; +import { hasPermissions } from "../../utils/auth/authorization"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; +import { StatusCodes } from "../../utils/responses/response-lib"; const dynamoClientMock = mockClient(DynamoDBDocumentClient); jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockReturnValue(true), - hasPermissions: jest.fn().mockReturnValueOnce(false).mockReturnValue(true), + isAuthenticated: jest.fn().mockReturnValue(true), + hasPermissions: jest.fn().mockReturnValue(true), })); const testEvent: APIGatewayProxyEvent = { @@ -30,10 +32,11 @@ const consoleSpy: { describe("Test deleteBanner API method", () => { test("Test not authorized to delete banner throws 403 error", async () => { + (hasPermissions as jest.Mock).mockReturnValueOnce(false); const res = await deleteBanner(testEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(403); + expect(res.statusCode).toBe(StatusCodes.Forbidden); expect(res.body).toContain(error.UNAUTHORIZED); }); @@ -43,32 +46,29 @@ describe("Test deleteBanner API method", () => { const res = await deleteBanner(testEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); - expect(res.body).toContain("testKey"); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(mockDelete).toHaveBeenCalled(); }); - test("Test bannerKey not provided throws 500 error", async () => { + test("Test bannerKey not provided throws 400 error", async () => { const noKeyEvent: APIGatewayProxyEvent = { ...testEvent, pathParameters: {}, }; const res = await deleteBanner(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(500); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); - test("Test bannerKey empty throws 500 error", async () => { + test("Test bannerKey empty throws 400 error", async () => { const noKeyEvent: APIGatewayProxyEvent = { ...testEvent, pathParameters: { bannerId: "" }, }; const res = await deleteBanner(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(500); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); }); diff --git a/services/app-api/handlers/banners/delete.ts b/services/app-api/handlers/banners/delete.ts index be7a68e78..bc8c6021a 100644 --- a/services/app-api/handlers/banners/delete.ts +++ b/services/app-api/handlers/banners/delete.ts @@ -3,25 +3,23 @@ import handler from "../handler-lib"; import dynamoDb from "../../utils/dynamo/dynamodb-lib"; import { hasPermissions } from "../../utils/auth/authorization"; import { error } from "../../utils/constants/constants"; +import { badRequest, forbidden, ok } from "../../utils/responses/response-lib"; // types -import { StatusCodes, UserRoles } from "../../utils/types"; +import { UserRoles } from "../../utils/types"; export const deleteBanner = handler(async (event, _context) => { if (!hasPermissions(event, [UserRoles.ADMIN])) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; - } else if (!event?.pathParameters?.bannerId!) { - throw new Error(error.NO_KEY); - } else { - const params = { - TableName: process.env.BANNER_TABLE_NAME!, - Key: { - key: event?.pathParameters?.bannerId!, - }, - }; - await dynamoDb.delete(params); - return { status: StatusCodes.SUCCESS, body: params }; + return forbidden(error.UNAUTHORIZED); } + if (!event?.pathParameters?.bannerId!) { + return badRequest(error.NO_KEY); + } + const params = { + TableName: process.env.BANNER_TABLE_NAME!, + Key: { + key: event.pathParameters.bannerId, + }, + }; + await dynamoDb.delete(params); + return ok(); }); diff --git a/services/app-api/handlers/banners/fetch.test.ts b/services/app-api/handlers/banners/fetch.test.ts index d6a4f8d31..60f66d983 100644 --- a/services/app-api/handlers/banners/fetch.test.ts +++ b/services/app-api/handlers/banners/fetch.test.ts @@ -6,12 +6,13 @@ import { proxyEvent } from "../../utils/testing/proxyEvent"; import { error } from "../../utils/constants/constants"; import { mockBannerResponse } from "../../utils/testing/setupJest"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; +import { StatusCodes } from "../../utils/responses/response-lib"; const dynamoClientMock = mockClient(DynamoDBDocumentClient); jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockReturnValue(true), + isAuthenticated: jest.fn().mockReturnValue(true), hasPermissions: jest.fn().mockReturnValue(true), })); @@ -43,7 +44,7 @@ describe("Test fetchBanner API method", () => { }); const res = await fetchBanner(testEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); }); test("Test Successful Banner Fetch", async () => { @@ -53,32 +54,30 @@ describe("Test fetchBanner API method", () => { const res = await fetchBanner(testEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(res.body).toContain("testDesc"); expect(res.body).toContain("testTitle"); }); - test("Test bannerKey not provided throws 500 error", async () => { + test("Test bannerKey not provided throws 400 error", async () => { const noKeyEvent: APIGatewayProxyEvent = { ...testEvent, pathParameters: {}, }; const res = await fetchBanner(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SERVER_ERROR); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); - test("Test bannerKey empty throws 500 error", async () => { + test("Test bannerKey empty throws 400 error", async () => { const noKeyEvent: APIGatewayProxyEvent = { ...testEvent, pathParameters: { bannerId: "" }, }; const res = await fetchBanner(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SERVER_ERROR); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); }); diff --git a/services/app-api/handlers/banners/fetch.ts b/services/app-api/handlers/banners/fetch.ts index 3afb8e01d..c22e95a16 100644 --- a/services/app-api/handlers/banners/fetch.ts +++ b/services/app-api/handlers/banners/fetch.ts @@ -1,22 +1,20 @@ import handler from "../handler-lib"; import dynamoDb from "../../utils/dynamo/dynamodb-lib"; -// types -import { StatusCodes } from "../../utils/types"; // utils import { error } from "../../utils/constants/constants"; +import { badRequest, ok } from "../../utils/responses/response-lib"; export const fetchBanner = handler(async (event, _context) => { if (!event?.pathParameters?.bannerId!) { - throw new Error(error.NO_KEY); + return badRequest(error.NO_KEY); } const params = { TableName: process.env.BANNER_TABLE_NAME!, Key: { - key: event?.pathParameters?.bannerId!, + key: event.pathParameters.bannerId, }, }; const response = await dynamoDb.get(params); - const status = StatusCodes.SUCCESS; - return { status: status, body: response }; + return ok(response); }); diff --git a/services/app-api/handlers/handler-lib.test.ts b/services/app-api/handlers/handler-lib.test.ts index 3f69e2ab4..5d685148e 100644 --- a/services/app-api/handlers/handler-lib.test.ts +++ b/services/app-api/handlers/handler-lib.test.ts @@ -1,8 +1,9 @@ import handlerLib from "./handler-lib"; // utils import { proxyEvent } from "../utils/testing/proxyEvent"; -import { isAuthorized } from "../utils/auth/authorization"; +import { isAuthenticated } from "../utils/auth/authorization"; import * as logger from "../utils/debugging/debug-lib"; +import { ok, StatusCodes } from "../utils/responses/response-lib"; jest.mock("../utils/debugging/debug-lib", () => ({ init: jest.fn(), @@ -12,18 +13,18 @@ jest.mock("../utils/debugging/debug-lib", () => ({ })); jest.mock("../utils/auth/authorization", () => ({ - isAuthorized: jest.fn(), + isAuthenticated: jest.fn(), })); describe("Test Lambda Handler Lib", () => { test("Test successful authorized lambda workflow", async () => { - const testFunc = jest.fn().mockReturnValue({ status: 200, body: "test" }); + const testFunc = jest.fn().mockReturnValue(ok("test")); const handler = handlerLib(testFunc); - (isAuthorized as jest.Mock).mockReturnValue(true); + (isAuthenticated as jest.Mock).mockReturnValue(true); const res = await handler(proxyEvent, null); - expect(res.statusCode).toBe(200); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(res.body).toContain("test"); expect(logger.init).toHaveBeenCalled(); expect(logger.debug).toHaveBeenCalledWith( @@ -42,14 +43,12 @@ describe("Test Lambda Handler Lib", () => { const testFunc = jest.fn(); const handler = handlerLib(testFunc); - (isAuthorized as jest.Mock).mockReturnValue(false); + (isAuthenticated as jest.Mock).mockReturnValue(false); const res = await handler(proxyEvent, null); - expect(res.statusCode).toBe(403); + expect(res.statusCode).toBe(StatusCodes.Unauthenticated); expect(res.body).toStrictEqual( - JSON.stringify({ - error: "User is not authorized to access this resource.", - }) + JSON.stringify("User is not authorized to access this resource.") ); }); @@ -60,13 +59,13 @@ describe("Test Lambda Handler Lib", () => { }); const handler = handlerLib(testFunc); - (isAuthorized as jest.Mock).mockReturnValue(true); + (isAuthenticated as jest.Mock).mockReturnValue(true); const res = await handler(proxyEvent, null); expect(testFunc).toHaveBeenCalledWith(proxyEvent, null); expect(logger.error).toHaveBeenCalledWith("Error: %O", err); expect(logger.flush).toHaveBeenCalled(); - expect(res.statusCode).toBe(500); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); expect(res.body).toStrictEqual(JSON.stringify({ error: "Test Error" })); expect(testFunc).toHaveBeenCalledWith(proxyEvent, null); }); diff --git a/services/app-api/handlers/handler-lib.ts b/services/app-api/handlers/handler-lib.ts index 65d77597c..5dcc1fd64 100644 --- a/services/app-api/handlers/handler-lib.ts +++ b/services/app-api/handlers/handler-lib.ts @@ -1,19 +1,20 @@ // utils import * as logger from "../utils/debugging/debug-lib"; -import { isAuthorized } from "../utils/auth/authorization"; +import { isAuthenticated } from "../utils/auth/authorization"; import { + HttpResponse, internalServerError, - buildResponse, + unauthenticated, } from "../utils/responses/response-lib"; import { error } from "../utils/constants/constants"; import { sanitizeObject } from "../utils/sanitize/sanitize"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../utils/types"; +import { APIGatewayProxyEvent } from "../utils/types"; type LambdaFunction = ( event: APIGatewayProxyEvent, // eslint-disable-line no-unused-vars context: any // eslint-disable-line no-unused-vars -) => Promise; +) => Promise; export default function handler(lambda: LambdaFunction) { return async function (event: APIGatewayProxyEvent, context: any) { @@ -25,17 +26,14 @@ export default function handler(lambda: LambdaFunction) { queryStringParameters: event.queryStringParameters, }); - if (await isAuthorized(event)) { + if (await isAuthenticated(event)) { try { if (event.body) { const newEventBody = sanitizeObject(JSON.parse(event.body)); event.body = JSON.stringify(newEventBody); } - // Run the Lambda - const { status, body } = await lambda(event, context); - return buildResponse(status, body); + return await lambda(event, context); } catch (error: any) { - // Print debug messages logger.error("Error: %O", error); const body = { error: error.message }; @@ -44,8 +42,7 @@ export default function handler(lambda: LambdaFunction) { logger.flush(); } } else { - const body = { error: error.UNAUTHORIZED }; - return buildResponse(StatusCodes.UNAUTHORIZED, body); + return unauthenticated(error.UNAUTHORIZED); } }; } diff --git a/services/app-api/handlers/reports/archive.test.ts b/services/app-api/handlers/reports/archive.test.ts index a373c4eaa..b6871117e 100644 --- a/services/app-api/handlers/reports/archive.test.ts +++ b/services/app-api/handlers/reports/archive.test.ts @@ -8,11 +8,12 @@ import { } from "../../utils/testing/setupJest"; import { error } from "../../utils/constants/constants"; import dynamodbLib from "../../utils/dynamo/dynamodb-lib"; +import { StatusCodes } from "../../utils/responses/response-lib"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockResolvedValue(true), + isAuthenticated: jest.fn().mockResolvedValue(true), hasPermissions: jest.fn(() => {}), })); @@ -65,10 +66,24 @@ describe("Test archiveReport method", () => { const body = JSON.parse(res.body); expect(consoleSpy.debug).toHaveBeenCalled(); expect(dynamoPutSpy).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(body.archived).toBe(true); }); + test("Test archive report with missing parameters returns 400", async () => { + const event = { + ...archiveEvent, + pathParameters: { + ...archiveEvent.pathParameters, + state: undefined, + }, + }; + const res = await archiveReport(event, null); + expect(consoleSpy.debug).toHaveBeenCalled(); + expect(res.statusCode).toBe(StatusCodes.BadRequest); + expect(res.body).toContain(error.NO_KEY); + }); + test("Test archive report with no existing record throws 404", async () => { mockAuthUtil.hasPermissions.mockReturnValue(true); mockedFetchReport.mockResolvedValue({ @@ -81,7 +96,7 @@ describe("Test archiveReport method", () => { }); const res = await archiveReport(archiveEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); expect(res.body).toContain(error.NO_MATCHING_RECORD); }); @@ -97,7 +112,24 @@ describe("Test archiveReport method", () => { }); const res = await archiveReport(archiveEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.UNAUTHORIZED); + expect(res.statusCode).toBe(StatusCodes.Forbidden); expect(res.body).toContain(error.UNAUTHORIZED); }); + + test("Test dynamo put issue throws error", async () => { + mockAuthUtil.hasPermissions.mockReturnValue(true); + mockedFetchReport.mockResolvedValue({ + statusCode: 200, + headers: { + "Access-Control-Allow-Origin": "string", + "Access-Control-Allow-Credentials": true, + }, + body: JSON.stringify(mockMcparReport), + }); + const dynamoPutSpy = jest.spyOn(dynamodbLib, "put"); + dynamoPutSpy.mockRejectedValueOnce("error"); + const res: any = await archiveReport(archiveEvent, null); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); + expect(res.body).toContain(error.DYNAMO_UPDATE_ERROR); + }); }); diff --git a/services/app-api/handlers/reports/archive.ts b/services/app-api/handlers/reports/archive.ts index 6e8d3f478..ce5cb50d8 100644 --- a/services/app-api/handlers/reports/archive.ts +++ b/services/app-api/handlers/reports/archive.ts @@ -4,62 +4,64 @@ import { fetchReport } from "./fetch"; import dynamoDb from "../../utils/dynamo/dynamodb-lib"; import { error, reportTables } from "../../utils/constants/constants"; import { hasPermissions } from "../../utils/auth/authorization"; +import { + badRequest, + forbidden, + internalServerError, + notFound, + ok, +} from "../../utils/responses/response-lib"; +import { hasReportPathParams } from "../../utils/dynamo/hasReportPathParams"; // types -import { StatusCodes, UserRoles } from "../../utils/types"; +import { UserRoles } from "../../utils/types"; export const archiveReport = handler(async (event, context) => { + const requiredParams = ["reportType", "state", "id"]; + // Return bad request if missing required parameters + if ( + !event.pathParameters || + !hasReportPathParams(event.pathParameters, requiredParams) + ) { + return badRequest(error.NO_KEY); + } // Return a 403 status if the user is not an admin. if (!hasPermissions(event, [UserRoles.ADMIN, UserRoles.APPROVER])) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } // Get current report const reportEvent = { ...event, body: "" }; const getCurrentReport = await fetchReport(reportEvent, context); - if (!getCurrentReport.body) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + if (!getCurrentReport?.body) { + return notFound(error.NO_MATCHING_RECORD); } - // if current report exists, parse for archived status - if (getCurrentReport?.body) { - const currentReport = JSON.parse(getCurrentReport.body); - const currentArchivedStatus = currentReport?.archived; - const reportType = currentReport?.reportType; - - const reportTable = reportTables[reportType as keyof typeof reportTables]; + // parse for archived status + const currentReport = JSON.parse(getCurrentReport.body); + const currentArchivedStatus = currentReport?.archived; + const reportType = currentReport?.reportType; - // Delete raw data prior to updating - delete currentReport.fieldData; - delete currentReport.formTemplate; + const reportTable = reportTables[reportType as keyof typeof reportTables]; - // toggle archived status in report metadata table - const reportMetadataParams = { - TableName: reportTable, - Item: { - ...currentReport, - archived: !currentArchivedStatus, - }, - }; + // Delete raw data prior to updating + delete currentReport.fieldData; + delete currentReport.formTemplate; - try { - await dynamoDb.put(reportMetadataParams); - } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.DYNAMO_UPDATE_ERROR, - }; - } + // toggle archived status in report metadata table + const reportMetadataParams = { + TableName: reportTable, + Item: { + ...currentReport, + archived: !currentArchivedStatus, + }, + }; - return { - status: StatusCodes.SUCCESS, - body: reportMetadataParams.Item, - }; + try { + await dynamoDb.put(reportMetadataParams); + } catch { + return internalServerError(error.DYNAMO_UPDATE_ERROR); } + + return ok(reportMetadataParams.Item); }); diff --git a/services/app-api/handlers/reports/create.test.ts b/services/app-api/handlers/reports/create.test.ts index babeaf434..751287c92 100644 --- a/services/app-api/handlers/reports/create.test.ts +++ b/services/app-api/handlers/reports/create.test.ts @@ -1,5 +1,9 @@ import { createReport } from "./create"; -import { DynamoDBDocumentClient, QueryCommand } from "@aws-sdk/lib-dynamodb"; +import { + DynamoDBDocumentClient, + PutCommand, + QueryCommand, +} from "@aws-sdk/lib-dynamodb"; import { mockClient } from "aws-sdk-client-mock"; // utils import * as reportUtils from "../../utils/reports/reports"; @@ -11,13 +15,14 @@ import { import { error } from "../../utils/constants/constants"; import * as authFunctions from "../../utils/auth/authorization"; import s3Lib from "../../utils/s3/s3-lib"; +import { StatusCodes } from "../../utils/responses/response-lib"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; const dynamoClientMock = mockClient(DynamoDBDocumentClient); jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockResolvedValue(true), + isAuthenticated: jest.fn().mockResolvedValue(true), hasPermissions: jest.fn().mockReturnValue(true), })); @@ -199,10 +204,10 @@ describe("Test createReport API method", () => { consoleSpy.debug = jest.spyOn(console, "debug").mockImplementation(); }); - test("Test unauthorized report creation throws 403 error", async () => { - jest.spyOn(authFunctions, "isAuthorized").mockResolvedValueOnce(false); + test("Test unauthorized report creation throws 401 error", async () => { + jest.spyOn(authFunctions, "isAuthenticated").mockResolvedValueOnce(false); const res = await createReport(creationEvent, null); - expect(res.statusCode).toBe(403); + expect(res.statusCode).toBe(StatusCodes.Unauthenticated); expect(res.body).toContain(error.UNAUTHORIZED); }); @@ -210,7 +215,7 @@ describe("Test createReport API method", () => { jest.spyOn(authFunctions, "hasPermissions").mockReturnValueOnce(false); const res = await createReport(creationEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(403); + expect(res.statusCode).toBe(StatusCodes.Forbidden); expect(res.body).toContain(error.UNAUTHORIZED); }); @@ -222,9 +227,9 @@ describe("Test createReport API method", () => { s3PutSpy.mockResolvedValue(mockS3PutObjectCommandOutput); const res = await createReport(creationEvent, null); - const body = JSON.parse(res.body); + const body = JSON.parse(res.body!); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.CREATED); + expect(res.statusCode).toBe(StatusCodes.Created); expect(body.status).toContain("Not started"); expect(body.fieldDataId).toBeDefined; expect(body.formTemplateId).toBeDefined; @@ -255,9 +260,9 @@ describe("Test createReport API method", () => { s3PutSpy.mockResolvedValue(mockS3PutObjectCommandOutput); const res = await createReport(createPccmEvent, null); - const body = JSON.parse(res.body); + const body = JSON.parse(res.body!); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.CREATED); + expect(res.statusCode).toBe(StatusCodes.Created); expect(body.status).toContain("Not started"); expect(body.fieldDataId).toBeDefined; expect(body.formTemplateId).toBeDefined; @@ -285,6 +290,35 @@ describe("Test createReport API method", () => { expect(s3PutSpy).toHaveBeenCalled(); }); + test("Test dynamo issue throws error", async () => { + dynamoClientMock + .on(PutCommand) + .resolvesOnce({}) + .rejectsOnce("error with dynamo") + .on(QueryCommand) + .resolves({ + Items: [], + }); + const s3PutSpy = jest.spyOn(s3Lib, "put"); + s3PutSpy.mockResolvedValue(mockS3PutObjectCommandOutput); + const res = await createReport(creationEvent, null); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); + expect(res.body).toContain(error.DYNAMO_CREATION_ERROR); + }); + + test("Test s3 issue throws error", async () => { + dynamoClientMock.on(QueryCommand).resolves({ + Items: [], + }); + const s3PutSpy = jest.spyOn(s3Lib, "put"); + s3PutSpy + .mockResolvedValueOnce(mockS3PutObjectCommandOutput) + .mockRejectedValueOnce("error"); + const res = await createReport(creationEvent, null); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); + expect(res.body).toContain(error.S3_OBJECT_CREATION_ERROR); + }); + test("Test attempted report creation with invalid data fails", async () => { dynamoClientMock.on(QueryCommand).resolves({ Items: [], @@ -293,7 +327,7 @@ describe("Test createReport API method", () => { s3PutSpy.mockResolvedValue(mockS3PutObjectCommandOutput); const res = await createReport(creationEventWithInvalidData, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SERVER_ERROR); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); expect(res.body).toContain(error.INVALID_DATA); expect(s3PutSpy).toHaveBeenCalled(); }); @@ -306,7 +340,7 @@ describe("Test createReport API method", () => { s3PutSpy.mockResolvedValue(mockS3PutObjectCommandOutput); const res = await createReport(creationEventWithNoFieldData, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.BAD_REQUEST); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.MISSING_DATA); expect(s3PutSpy).toHaveBeenCalled(); }); @@ -319,7 +353,7 @@ describe("Test createReport API method", () => { const res = await createReport(noKeyEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.BAD_REQUEST); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); @@ -331,7 +365,7 @@ describe("Test createReport API method", () => { const res = await createReport(noKeyEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.BAD_REQUEST); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); @@ -349,9 +383,9 @@ describe("Test createReport API method", () => { }); const copyFieldDataSpy = jest.spyOn(reportUtils, "copyFieldDataFromSource"); const res = await createReport(creationEventWithCopySource, null); - const body = JSON.parse(res.body); + const body = JSON.parse(res.body!); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.CREATED); + expect(res.statusCode).toBe(StatusCodes.Created); expect(copyFieldDataSpy).toBeCalled(); expect(body.fieldDataId).not.toEqual("mockReportFieldData"); expect(body.fieldData.plans).toBeDefined(); @@ -369,7 +403,7 @@ describe("Test createReport API method", () => { const copyFieldDataSpy = jest.spyOn(reportUtils, "copyFieldDataFromSource"); const res = await createReport(creationEventInvalidState, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.BAD_REQUEST); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(copyFieldDataSpy).not.toBeCalled(); }); @@ -377,7 +411,7 @@ describe("Test createReport API method", () => { const copyFieldDataSpy = jest.spyOn(reportUtils, "copyFieldDataFromSource"); const res = await createReport(creationEventMlrReport, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.BAD_REQUEST); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(copyFieldDataSpy).not.toBeCalled(); }); @@ -393,9 +427,9 @@ describe("Test createReport API method", () => { }); const copyFieldDataSpy = jest.spyOn(reportUtils, "copyFieldDataFromSource"); const res = await createReport(creationEventWithCopySource, null); - const body = JSON.parse(res.body); + const body = JSON.parse(res.body!); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.CREATED); + expect(res.statusCode).toBe(StatusCodes.Created); expect(copyFieldDataSpy).toBeCalled(); expect(body.fieldDataId).not.toEqual("mockReportFieldData"); expect(body.fieldData).toMatchObject({ stateName: "Alabama" }); @@ -420,9 +454,9 @@ describe("Test createReport API method", () => { }); const copyFieldDataSpy = jest.spyOn(reportUtils, "copyFieldDataFromSource"); const res = await createReport(creationEventWithCopySource, null); - const body = JSON.parse(res.body); + const body = JSON.parse(res.body!); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.CREATED); + expect(res.statusCode).toBe(StatusCodes.Created); expect(copyFieldDataSpy).toBeCalled(); expect(body.fieldDataId).not.toEqual("mockReportFieldData"); expect(body.fieldData).toMatchObject({ stateName: "Alabama" }); diff --git a/services/app-api/handlers/reports/create.ts b/services/app-api/handlers/reports/create.ts index f1e202537..f75e1ef39 100644 --- a/services/app-api/handlers/reports/create.ts +++ b/services/app-api/handlers/reports/create.ts @@ -22,13 +22,14 @@ import { copyFieldDataFromSource, makePCCMModifications, } from "../../utils/reports/reports"; -// types import { - isReportType, - isState, - StatusCodes, - UserRoles, -} from "../../utils/types"; + badRequest, + created, + forbidden, + internalServerError, +} from "../../utils/responses/response-lib"; +// types +import { isReportType, isState, UserRoles } from "../../utils/types"; export const createReport = handler(async (event, _context) => { const requiredParams = ["reportType", "state"]; @@ -37,34 +38,22 @@ export const createReport = handler(async (event, _context) => { !event.pathParameters || !hasReportPathParams(event.pathParameters, requiredParams) ) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } const { state, reportType } = event.pathParameters; if (!isState(state)) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } if (!hasPermissions(event, [UserRoles.STATE_USER], state)) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } const unvalidatedPayload = JSON.parse(event.body!); const { metadata: unvalidatedMetadata, fieldData: unvalidatedFieldData } = unvalidatedPayload; if (!isReportType(reportType)) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } const reportBucket = reportBuckets[reportType]; @@ -88,10 +77,7 @@ export const createReport = handler(async (event, _context) => { // Return MISSING_DATA error if missing unvalidated data or validators. if (!unvalidatedFieldData || !formTemplate.validationJson) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.MISSING_DATA, - }; + return badRequest(error.MISSING_DATA); } // Create report and field ids. @@ -100,17 +86,19 @@ export const createReport = handler(async (event, _context) => { const formTemplateId: string = formTemplateVersion?.id; // Validate field data - const validatedFieldData = await validateFieldData( - formTemplate.validationJson, - unvalidatedFieldData - ); - - // Return INVALID_DATA error if field data is not valid. - if (!validatedFieldData || Object.keys(validatedFieldData).length === 0) { - return { - status: StatusCodes.SERVER_ERROR, - body: error.INVALID_DATA, - }; + let validatedFieldData; + try { + validatedFieldData = await validateFieldData( + formTemplate.validationJson, + unvalidatedFieldData + ); + } catch { + return badRequest(error.INVALID_DATA); + } + + // Return INVALID_DATA error field data has no valid entries + if (validatedFieldData && Object.keys(validatedFieldData).length === 0) { + return internalServerError(error.INVALID_DATA); } // If the `copyFieldDataSourceId` parameter is passed, merge the validated field data with the source ids data. @@ -123,7 +111,7 @@ export const createReport = handler(async (event, _context) => { state, unvalidatedMetadata.copyFieldDataSourceId, formTemplate, - validatedFieldData, + validatedFieldData!, reportType ); } else { @@ -145,25 +133,20 @@ export const createReport = handler(async (event, _context) => { try { await s3Lib.put(fieldDataParams); } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.S3_OBJECT_CREATION_ERROR, - }; + return internalServerError(error.S3_OBJECT_CREATION_ERROR); } - const validatedMetadata = await validateData(metadataValidationSchema, { - ...unvalidatedMetadata, - }); - - // Return INVALID_DATA error if metadata is not valid. - if (!validatedMetadata) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.INVALID_DATA, - }; + let validatedMetadata; + try { + validatedMetadata = await validateData(metadataValidationSchema, { + ...unvalidatedMetadata, + }); + } catch { + // Return INVALID_DATA error if metadata is not valid. + return badRequest(error.INVALID_DATA); } - // Create DyanmoDB record. + // Create DynamoDB record. const reportMetadataParams: PutCommandInput = { TableName: reportTable, Item: { @@ -182,19 +165,13 @@ export const createReport = handler(async (event, _context) => { try { await dynamoDb.put(reportMetadataParams); } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.DYNAMO_CREATION_ERROR, - }; + return internalServerError(error.DYNAMO_CREATION_ERROR); } - return { - status: StatusCodes.CREATED, - body: { - ...reportMetadataParams.Item, - fieldData: validatedFieldData, - formTemplate, - formTemplateVersion: formTemplateVersion?.versionNumber, - }, - }; + return created({ + ...reportMetadataParams.Item, + fieldData: validatedFieldData, + formTemplate, + formTemplateVersion: formTemplateVersion?.versionNumber, + }); }); diff --git a/services/app-api/handlers/reports/fetch.test.ts b/services/app-api/handlers/reports/fetch.test.ts index b21c5ead7..7827363c9 100644 --- a/services/app-api/handlers/reports/fetch.test.ts +++ b/services/app-api/handlers/reports/fetch.test.ts @@ -12,18 +12,18 @@ import { } from "../../utils/testing/setupJest"; import dynamodbLib from "../../utils/dynamo/dynamodb-lib"; import s3Lib from "../../utils/s3/s3-lib"; +import { StatusCodes } from "../../utils/responses/response-lib"; +import { isAuthorizedToFetchState } from "../../utils/auth/authorization"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; const dynamoClientMock = mockClient(DynamoDBDocumentClient); jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockReturnValue(true), - isAuthorizedToFetchState: jest.fn(() => {}), + isAuthenticated: jest.fn().mockReturnValue(true), + isAuthorizedToFetchState: jest.fn().mockReturnValue(true), })); -const mockAuthUtil = require("../../utils/auth/authorization"); - const testReadEvent: APIGatewayProxyEvent = { ...proxyEvent, headers: { "cognito-identity-id": "test" }, @@ -50,9 +50,8 @@ let consoleSpy: { describe("handlers/reports/fetch", () => { beforeEach(() => { - jest.restoreAllMocks(); + jest.clearAllMocks(); dynamoClientMock.reset(); - mockAuthUtil.isAuthorizedToFetchState.mockReturnValueOnce(true); consoleSpy.debug = jest.spyOn(console, "debug").mockImplementation(); consoleSpy.error = jest.spyOn(console, "error").mockImplementation(); }); @@ -64,7 +63,7 @@ describe("handlers/reports/fetch", () => { }); const res = await fetchReport(testReadEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); }); test("Test Report Form not found in S3", async () => { @@ -73,7 +72,7 @@ describe("handlers/reports/fetch", () => { }); const res = await fetchReport(testReadEvent, "null"); expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); }); test("Test Field Data not found in S3", async () => { @@ -82,7 +81,7 @@ describe("handlers/reports/fetch", () => { }); const res = await fetchReport(testReadEvent, "badId"); expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); }); test("Test Successful Report Fetch w/ Incomplete Report", async () => { @@ -95,8 +94,8 @@ describe("handlers/reports/fetch", () => { }); const res = await fetchReport(testReadEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); - const body = JSON.parse(res.body); + expect(res.statusCode).toBe(StatusCodes.Ok); + const body = JSON.parse(res.body!); expect(body.lastAlteredBy).toContain("Thelonious States"); expect(body.programName).toContain("testProgram"); expect(body.completionStatus).toMatchObject( @@ -118,8 +117,8 @@ describe("handlers/reports/fetch", () => { }); const res = await fetchReport(testReadEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); - const body = JSON.parse(res.body); + expect(res.statusCode).toBe(StatusCodes.Ok); + const body = JSON.parse(res.body!); expect(body.lastAlteredBy).toContain("Thelonious States"); expect(body.programName).toContain("testProgram"); expect(body.completionStatus).toMatchObject({ @@ -131,6 +130,28 @@ describe("handlers/reports/fetch", () => { expect(s3GetSpy).toHaveBeenCalledTimes(2); }); + test("Test Successful Report Fetch, creating completionStatus", async () => { + const metadataWithNoCompletionStatus = { + ...mockDynamoData, + completionStatus: undefined, + }; + dynamoClientMock.on(GetCommand).resolves({ + Item: metadataWithNoCompletionStatus, + }); + const s3GetSpy = jest.spyOn(s3Lib, "get"); + s3GetSpy + .mockResolvedValueOnce(mockReportJson) + .mockResolvedValueOnce(mockReportFieldData); + const res = await fetchReport(testReadEvent, null); + expect(res.statusCode).toBe(StatusCodes.Ok); + const body = JSON.parse(res.body!); + expect(body.completionStatus).toEqual({ + "/mock/mock-route-1": true, + "/mock/mock-route-2": {}, + }); + expect(body.isComplete).toEqual(true); + }); + test("Test reportKeys not provided throws 400 error", async () => { const noKeyEvent: APIGatewayProxyEvent = { ...testReadEvent, @@ -138,7 +159,7 @@ describe("handlers/reports/fetch", () => { }; const res = await fetchReport(noKeyEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); @@ -149,9 +170,16 @@ describe("handlers/reports/fetch", () => { }; const res = await fetchReport(noKeyEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); + + test("Test unauthorized returns 403", async () => { + (isAuthorizedToFetchState as jest.Mock).mockReturnValueOnce(false); + const res = await fetchReport(testReadEvent, null); + expect(res.statusCode).toBe(StatusCodes.Forbidden); + expect(res.body).toContain(error.UNAUTHORIZED); + }); }); describe("Test fetchReportsByState API method", () => { @@ -160,8 +188,8 @@ describe("handlers/reports/fetch", () => { dynamoQueryAllSpy.mockResolvedValue([mockDynamoData]); const res = await fetchReportsByState(testReadEventByState, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); - const body = JSON.parse(res.body); + expect(res.statusCode).toBe(StatusCodes.Ok); + const body = JSON.parse(res.body!); expect(body[0].lastAlteredBy).toContain("Thelonious States"); expect(body[0].programName).toContain("testProgram"); }); @@ -173,7 +201,7 @@ describe("handlers/reports/fetch", () => { }; const res = await fetchReportsByState(noKeyEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); @@ -184,8 +212,15 @@ describe("handlers/reports/fetch", () => { }; const res = await fetchReportsByState(noKeyEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); + + test("Test unauthorized returns 403", async () => { + (isAuthorizedToFetchState as jest.Mock).mockReturnValueOnce(false); + const res = await fetchReportsByState(testReadEventByState, null); + expect(res.statusCode).toBe(StatusCodes.Forbidden); + expect(res.body).toContain(error.UNAUTHORIZED); + }); }); }); diff --git a/services/app-api/handlers/reports/fetch.ts b/services/app-api/handlers/reports/fetch.ts index b79c719d0..d6753fa9a 100644 --- a/services/app-api/handlers/reports/fetch.ts +++ b/services/app-api/handlers/reports/fetch.ts @@ -18,31 +18,28 @@ import { isComplete, } from "../../utils/validation/completionStatus"; import { isAuthorizedToFetchState } from "../../utils/auth/authorization"; +import { + badRequest, + forbidden, + notFound, + ok, +} from "../../utils/responses/response-lib"; // types -import { AnyObject, isState, StatusCodes } from "../../utils/types"; +import { AnyObject, isState } from "../../utils/types"; export const fetchReport = handler(async (event, _context) => { const requiredParams = ["reportType", "id", "state"]; if (!hasReportPathParams(event.pathParameters!, requiredParams)) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } const { reportType, state, id } = event.pathParameters!; if (!isState(state)) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } if (!isAuthorizedToFetchState(event, state)) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } const reportTable = reportTables[reportType as keyof typeof reportTables]; @@ -57,10 +54,7 @@ export const fetchReport = handler(async (event, _context) => { try { const response = await dynamoDb.get(reportMetadataParams); if (!response?.Item) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NOT_IN_DATABASE, - }; + return notFound(error.NO_MATCHING_RECORD); } const reportMetadata = response.Item as Record; @@ -74,10 +68,7 @@ export const fetchReport = handler(async (event, _context) => { const formTemplate = (await s3Lib.get(formTemplateParams)) as AnyObject; // TODO: strict typing if (!formTemplate) { - return { - status: StatusCodes.NOT_FOUND, - body: error.MISSING_FORM_TEMPLATE, - }; + return notFound(error.NO_MATCHING_RECORD); } // Get field data from S3 @@ -89,10 +80,7 @@ export const fetchReport = handler(async (event, _context) => { const fieldData = (await s3Lib.get(fieldDataParams)) as AnyObject; // TODO: strict typing if (!fieldData) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return notFound(error.NO_MATCHING_RECORD); } if (!reportMetadata.completionStatus) { @@ -103,19 +91,13 @@ export const fetchReport = handler(async (event, _context) => { reportMetadata.isComplete = isComplete(reportMetadata.completionStatus); } - return { - status: StatusCodes.SUCCESS, - body: { - ...reportMetadata, - formTemplate, - fieldData, - }, - }; + return ok({ + ...reportMetadata, + formTemplate, + fieldData, + }); } catch { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return notFound(error.NO_MATCHING_RECORD); } }); @@ -123,19 +105,13 @@ export const fetchReportsByState = handler(async (event, _context) => { const requiredParams = ["reportType", "state"]; if (!hasReportPathParams(event.pathParameters!, requiredParams)) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } const { reportType, state } = event.pathParameters!; if (!isAuthorizedToFetchState(event, state!)) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } const reportTable = reportTables[reportType as keyof typeof reportTables]; @@ -153,8 +129,5 @@ export const fetchReportsByState = handler(async (event, _context) => { const reportsByState = await dynamoDb.queryAll(queryParams); - return { - status: StatusCodes.SUCCESS, - body: reportsByState, - }; + return ok(reportsByState); }); diff --git a/services/app-api/handlers/reports/release.test.ts b/services/app-api/handlers/reports/release.test.ts index dda601d8d..c9fadd5ab 100644 --- a/services/app-api/handlers/reports/release.test.ts +++ b/services/app-api/handlers/reports/release.test.ts @@ -1,6 +1,10 @@ import { releaseReport } from "./release"; import KSUID from "ksuid"; -import { DynamoDBDocumentClient, GetCommand } from "@aws-sdk/lib-dynamodb"; +import { + DynamoDBDocumentClient, + GetCommand, + PutCommand, +} from "@aws-sdk/lib-dynamodb"; import { mockClient } from "aws-sdk-client-mock"; // utils import { proxyEvent } from "../../utils/testing/proxyEvent"; @@ -14,13 +18,14 @@ import { import { error } from "../../utils/constants/constants"; import s3Lib from "../../utils/s3/s3-lib"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; +import { StatusCodes } from "../../utils/responses/response-lib"; const dynamoClientMock = mockClient(DynamoDBDocumentClient); jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockResolvedValue(true), - hasPermissions: jest.fn(() => {}), + isAuthenticated: jest.fn().mockResolvedValue(true), + hasPermissions: jest.fn().mockReturnValue(true), })); const mockAuthUtil = require("../../utils/auth/authorization"); @@ -67,9 +72,9 @@ describe("Test releaseReport method", () => { }); const res = await releaseReport(releaseEvent, null); - const body = JSON.parse(res.body); + const body = JSON.parse(res.body!); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(body.locked).toBe(false); expect(body.previousRevisions).toEqual([ mockDynamoDataMLRLocked.fieldDataId, @@ -99,9 +104,9 @@ describe("Test releaseReport method", () => { }); const res = await releaseReport(releaseEvent, null); - const body = JSON.parse(res.body); + const body = JSON.parse(res.body!); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(body.locked).toBe(false); expect(body.submissionCount).toBe(1); expect(body.previousRevisions.length).toBe(2); @@ -112,6 +117,52 @@ describe("Test releaseReport method", () => { expect(body.fieldDataId).not.toBe(mockDynamoDataMLRLocked.fieldDataId); }); + const newPreviousId = KSUID.randomSync().string; + test("Test release report on already-released report", async () => { + dynamoClientMock.on(GetCommand).resolves({ + Item: { + ...mockDynamoDataMLRLocked, + previousRevisions: [newPreviousId], + submissionCount: 1, + locked: false, + }, + }); + + const res = await releaseReport(releaseEvent, null); + const body = JSON.parse(res.body!); + + expect(res.statusCode).toBe(StatusCodes.Ok); + expect(body.locked).toBe(false); + }); + + test("Test release report on archived report", async () => { + dynamoClientMock.on(GetCommand).resolves({ + Item: { + ...mockDynamoDataMLRLocked, + previousRevisions: [newPreviousId], + archived: true, + }, + }); + + const res = await releaseReport(releaseEvent, null); + + expect(res.statusCode).toBe(StatusCodes.Conflict); + expect(res.body).toContain(error.ALREADY_ARCHIVED); + }); + + test("Test release report with no parameters returns 400", async () => { + const event = { + ...releaseEvent, + pathParameters: { + ...releaseEvent.pathParameters, + state: undefined, + }, + }; + const res = await releaseReport(event, null); + expect(res.statusCode).toBe(StatusCodes.BadRequest); + expect(res.body).toContain(error.NO_KEY); + }); + test("Test release report with no existing record throws 404", async () => { mockAuthUtil.hasPermissions.mockReturnValue(true); dynamoClientMock.on(GetCommand).resolves({ @@ -119,7 +170,25 @@ describe("Test releaseReport method", () => { }); const res = await releaseReport(releaseEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); + expect(res.body).toContain(error.NO_MATCHING_RECORD); + }); + + test("Test release report with no field data returns 404", async () => { + dynamoClientMock.on(GetCommand).resolves({ + Item: undefined, + }); + const res = await releaseReport(releaseEvent, null); + expect(res.statusCode).toBe(StatusCodes.NotFound); + expect(res.body).toContain(error.NO_MATCHING_RECORD); + }); + + test("Test release report with no form template returns 404", async () => { + dynamoClientMock.on(GetCommand).resolves({ + Item: undefined, + }); + const res = await releaseReport(releaseEvent, null); + expect(res.statusCode).toBe(StatusCodes.NotFound); expect(res.body).toContain(error.NO_MATCHING_RECORD); }); @@ -130,7 +199,74 @@ describe("Test releaseReport method", () => { }); const res = await releaseReport(releaseEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.UNAUTHORIZED); + expect(res.statusCode).toBe(StatusCodes.Forbidden); expect(res.body).toContain(error.UNAUTHORIZED); }); + + test("Test dynamo get metadata issue throws error", async () => { + mockAuthUtil.hasPermissions.mockReturnValue(true); + // dynamodb mocks + dynamoClientMock.on(GetCommand).rejectsOnce("error"); + + const res = await releaseReport(releaseEvent, null); + expect(res.statusCode).toBe(StatusCodes.NotFound); + expect(res.body).toContain(error.NO_MATCHING_RECORD); + }); + + test("Test dynamo put issue throws error", async () => { + mockAuthUtil.hasPermissions.mockReturnValue(true); + // s3 mocks + const s3GetSpy = jest.spyOn(s3Lib, "get"); + s3GetSpy + .mockResolvedValueOnce(mockReportJson) + .mockResolvedValueOnce(mockReportFieldData); + // dynamodb mocks + dynamoClientMock + .on(GetCommand) + .resolves({ + Item: mockDynamoDataMLRLocked, + }) + .on(PutCommand) + .rejectsOnce("error"); + + const res = await releaseReport(releaseEvent, null); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); + expect(res.body).toContain(error.DYNAMO_UPDATE_ERROR); + }); + + test("Test s3 get issue throws error", async () => { + mockAuthUtil.hasPermissions.mockReturnValue(true); + // s3 mocks + const s3GetSpy = jest.spyOn(s3Lib, "get"); + s3GetSpy + .mockRejectedValueOnce("error") + .mockResolvedValueOnce(mockReportFieldData); + // dynamodb mocks + dynamoClientMock.on(GetCommand).resolves({ + Item: mockDynamoDataMLRLocked, + }); + + const res = await releaseReport(releaseEvent, null); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); + expect(res.body).toContain(error.S3_OBJECT_GET_ERROR); + }); + + test("Test s3 put issue throws error", async () => { + mockAuthUtil.hasPermissions.mockReturnValue(true); + // s3 mocks + const s3GetSpy = jest.spyOn(s3Lib, "get"); + s3GetSpy + .mockResolvedValueOnce(mockReportJson) + .mockResolvedValueOnce(mockReportFieldData); + const s3PutSpy = jest.spyOn(s3Lib, "put"); + s3PutSpy.mockRejectedValueOnce("error"); + // dynamodb mocks + dynamoClientMock.on(GetCommand).resolves({ + Item: mockDynamoDataMLRLocked, + }); + + const res = await releaseReport(releaseEvent, null); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); + expect(res.body).toContain(error.S3_OBJECT_CREATION_ERROR); + }); }); diff --git a/services/app-api/handlers/reports/release.ts b/services/app-api/handlers/reports/release.ts index 866b06a56..5db1eeb3e 100644 --- a/services/app-api/handlers/reports/release.ts +++ b/services/app-api/handlers/reports/release.ts @@ -18,12 +18,19 @@ import s3Lib, { getFormTemplateKey, } from "../../utils/s3/s3-lib"; import { calculateCompletionStatus } from "../../utils/validation/completionStatus"; +import { + badRequest, + conflict, + forbidden, + internalServerError, + notFound, + ok, +} from "../../utils/responses/response-lib"; // types import { FormJson, ReportMetadata, ReportType, - StatusCodes, UserRoles, } from "../../utils/types"; @@ -41,10 +48,7 @@ import { export const releaseReport = handler(async (event) => { // Return a 403 status if the user is not an admin. if (!hasPermissions(event, [UserRoles.ADMIN, UserRoles.APPROVER])) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } if ( @@ -52,10 +56,7 @@ export const releaseReport = handler(async (event) => { !event.pathParameters?.state || !event.pathParameters?.reportType ) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return badRequest(error.NO_KEY); } const { id, state, reportType } = event.pathParameters; @@ -73,17 +74,11 @@ export const releaseReport = handler(async (event) => { try { reportMetadata = await dynamoDb.get(reportMetadataParams); } catch { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return notFound(error.NO_MATCHING_RECORD); } if (!reportMetadata.Item) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return notFound(error.NO_MATCHING_RECORD); } const metadata = reportMetadata.Item as ReportMetadata; @@ -93,22 +88,14 @@ export const releaseReport = handler(async (event) => { // Report is not locked. if (!isLocked) { - return { - status: StatusCodes.SUCCESS, - body: { - ...metadata, - }, - }; + return ok(metadata); } // check if report is archived const isArchived = metadata.archived; if (isArchived) { - return { - status: StatusCodes.SERVER_ERROR, - body: error.ALREADY_ARCHIVED, - }; + return conflict(error.ALREADY_ARCHIVED); } const newFieldDataId = KSUID.randomSync().string; @@ -138,10 +125,7 @@ export const releaseReport = handler(async (event) => { >; formTemplate = (await s3Lib.get(getFormTemplateParameters)) as FormJson; } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.DYNAMO_UPDATE_ERROR, - }; + return internalServerError(error.S3_OBJECT_GET_ERROR); } const updatedFieldData = { @@ -180,10 +164,7 @@ export const releaseReport = handler(async (event) => { try { await dynamoDb.put(putReportMetadataParams); } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.DYNAMO_UPDATE_ERROR, - }; + return internalServerError(error.DYNAMO_UPDATE_ERROR); } // Copy the original field data to a new location. @@ -199,14 +180,8 @@ export const releaseReport = handler(async (event) => { await s3Lib.put(putObjectParameters); } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.S3_OBJECT_CREATION_ERROR, - }; + return internalServerError(error.S3_OBJECT_CREATION_ERROR); } - return { - status: StatusCodes.SUCCESS, - body: putReportMetadataParams.Item, - }; + return ok(putReportMetadataParams.Item); }); diff --git a/services/app-api/handlers/reports/submit.test.ts b/services/app-api/handlers/reports/submit.test.ts index 5059e38df..6c9e0b399 100644 --- a/services/app-api/handlers/reports/submit.test.ts +++ b/services/app-api/handlers/reports/submit.test.ts @@ -1,5 +1,9 @@ import { submitReport } from "./submit"; -import { DynamoDBDocumentClient, GetCommand } from "@aws-sdk/lib-dynamodb"; +import { + DynamoDBDocumentClient, + GetCommand, + PutCommand, +} from "@aws-sdk/lib-dynamodb"; import { mockClient } from "aws-sdk-client-mock"; // utils import { proxyEvent } from "../../utils/testing/proxyEvent"; @@ -14,13 +18,15 @@ import { mockS3PutObjectCommandOutput, } from "../../utils/testing/setupJest"; import s3Lib from "../../utils/s3/s3-lib"; +import { hasPermissions } from "../../utils/auth/authorization"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; +import { StatusCodes } from "../../utils/responses/response-lib"; const dynamoClientMock = mockClient(DynamoDBDocumentClient); jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockReturnValue(true), + isAuthenticated: jest.fn().mockReturnValue(true), hasPermissions: jest.fn().mockReturnValue(true), })); @@ -53,7 +59,7 @@ describe("Test submitReport API method", () => { }); const res = await submitReport(testSubmitEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); }); test("Test Successful Report Submittal", async () => { @@ -71,8 +77,8 @@ describe("Test submitReport API method", () => { const res = await submitReport(testSubmitEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); - const body = JSON.parse(res.body); + expect(res.statusCode).toBe(StatusCodes.Ok); + const body = JSON.parse(res.body!); expect(body.lastAlteredBy).toContain("Thelonious States"); expect(body.programName).toContain("testProgram"); expect(body.isComplete).toStrictEqual(true); @@ -102,8 +108,8 @@ describe("Test submitReport API method", () => { const res = await submitReport(testSubmitEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); - const body = JSON.parse(res.body); + expect(res.statusCode).toBe(StatusCodes.Ok); + const body = JSON.parse(res.body!); expect(body.lastAlteredBy).toContain("Thelonious States"); expect(body.submissionName).toContain("testProgram"); expect(body.isComplete).toStrictEqual(true); @@ -120,8 +126,8 @@ describe("Test submitReport API method", () => { }); const res = await submitReport(testSubmitEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SERVER_ERROR); - const body = JSON.parse(res.body); + expect(res.statusCode).toBe(StatusCodes.Conflict); + const body = JSON.parse(res.body!); expect(body).toStrictEqual(error.REPORT_INCOMPLETE); }); @@ -132,7 +138,7 @@ describe("Test submitReport API method", () => { }; const res = await submitReport(noKeyEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); @@ -143,7 +149,68 @@ describe("Test submitReport API method", () => { }; const res = await submitReport(noKeyEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); + + test("Test attempted report submit without permissions returns 403", async () => { + (hasPermissions as jest.Mock).mockReturnValueOnce(false); + const res = await submitReport(testSubmitEvent, null); + expect(res.statusCode).toBe(StatusCodes.Forbidden); + expect(res.body).toContain(error.UNAUTHORIZED); + }); + + test("Test dynamo issue throws error", async () => { + dynamoClientMock + .on(GetCommand) + .resolves({ + Item: mockDynamoDataCompleted, + }) + .on(PutCommand) + .rejectsOnce("error with dynamo"); + const res = await submitReport(testSubmitEvent, null); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); + expect(res.body).toContain(error.DYNAMO_UPDATE_ERROR); + }); + + test("Test s3 form template get issue throws error", async () => { + dynamoClientMock.on(GetCommand).resolves({ + Item: mockDynamoDataCompleted, + }); + const s3GetSpy = jest.spyOn(s3Lib, "get"); + s3GetSpy + .mockResolvedValueOnce(mockS3PutObjectCommandOutput) + .mockRejectedValueOnce("error"); + const res = await submitReport(testSubmitEvent, null); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); + expect(res.body).toContain(error.S3_OBJECT_GET_ERROR); + }); + + test("Test s3 field data get issue throws error", async () => { + dynamoClientMock.on(GetCommand).resolves({ + Item: mockDynamoDataCompleted, + }); + const s3GetSpy = jest.spyOn(s3Lib, "get"); + s3GetSpy + .mockRejectedValueOnce("error") + .mockResolvedValueOnce(mockS3PutObjectCommandOutput); + const res = await submitReport(testSubmitEvent, null); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); + expect(res.body).toContain(error.S3_OBJECT_GET_ERROR); + }); + + test("Test s3 put field data issue throws error", async () => { + dynamoClientMock.on(GetCommand).resolves({ + Item: mockDynamoDataCompleted, + }); + const s3GetSpy = jest.spyOn(s3Lib, "get"); + s3GetSpy + .mockResolvedValueOnce(mockReportJson) + .mockResolvedValueOnce(mockReportFieldData); + const s3PutSpy = jest.spyOn(s3Lib, "put"); + s3PutSpy.mockRejectedValueOnce("error"); + const res = await submitReport(testSubmitEvent, null); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); + expect(res.body).toContain(error.S3_OBJECT_UPDATE_ERROR); + }); }); diff --git a/services/app-api/handlers/reports/submit.ts b/services/app-api/handlers/reports/submit.ts index cc9088e3e..b2542814d 100644 --- a/services/app-api/handlers/reports/submit.ts +++ b/services/app-api/handlers/reports/submit.ts @@ -14,12 +14,20 @@ import s3Lib, { } from "../../utils/s3/s3-lib"; import { convertDateUtcToEt } from "../../utils/time/time"; import { hasReportPathParams } from "../../utils/dynamo/hasReportPathParams"; +import { + badRequest, + conflict, + forbidden, + internalServerError, + notFound, + ok, +} from "../../utils/responses/response-lib"; // types import { + ReportStatus, isState, MCPARReportMetadata, MLRReportMetadata, - StatusCodes, UserRoles, } from "../../utils/types"; @@ -29,25 +37,16 @@ export const submitReport = handler(async (event, _context) => { !event.pathParameters || !hasReportPathParams(event.pathParameters, requiredParams) ) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } const { id, state, reportType } = event.pathParameters; if (!isState(state)) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } if (!hasPermissions(event, [UserRoles.STATE_USER], state)) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } const reportTable = reportTables[reportType as keyof typeof reportTables]; @@ -59,141 +58,108 @@ export const submitReport = handler(async (event, _context) => { Key: { id, state }, }; + const response = await dynamodbLib.get(reportMetadataParams); + if (!response?.Item) { + return notFound(error.NOT_IN_DATABASE); + } + + const reportMetadata = response.Item as + | MLRReportMetadata + | MCPARReportMetadata; + const { status, isComplete, fieldDataId, formTemplateId } = reportMetadata; + + if (status === "Submitted") { + return ok(reportMetadata); + } + + if (!isComplete) { + return conflict(error.REPORT_INCOMPLETE); + } + + const jwt = jwtDecode(event.headers["x-api-key"]!) as Record< + string, + string | boolean + >; + + const date = Date.now(); + const fullName = `${jwt.given_name} ${jwt.family_name}`; + const submittedReportMetadata = { + ...reportMetadata, + submittedBy: fullName, + submittedOnDate: date, + status: ReportStatus.SUBMITTED, + locked: true, + submissionCount: reportMetadata.submissionCount + 1, + }; + + const submitReportParams = { + TableName: reportTable, + Item: submittedReportMetadata, + }; + try { + await dynamodbLib.put(submitReportParams); + } catch { + return internalServerError(error.DYNAMO_UPDATE_ERROR); + } + + // Get field data + const fieldDataParams = { + Bucket: reportBucket, + Key: getFieldDataKey(state, fieldDataId), + }; + + let existingFieldData; + + try { + existingFieldData = (await s3Lib.get(fieldDataParams)) as Record< + string, + any + >; + } catch { + return internalServerError(error.S3_OBJECT_GET_ERROR); + } + + const fieldData = { + ...existingFieldData, + submitterName: fullName, + submitterEmailAddress: jwt.email, + reportSubmissionDate: convertDateUtcToEt(date), + }; + + const updateFieldDataParams = { + Bucket: reportBucket, + Key: getFieldDataKey(state, fieldDataId), + Body: JSON.stringify(fieldData), + ContentType: "application/json", + }; + + const getFormTemplateParams = { + Bucket: reportBucket, + Key: getFormTemplateKey(formTemplateId), + }; + + let formTemplate; + try { - const response = await dynamodbLib.get(reportMetadataParams); - if (!response?.Item) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NOT_IN_DATABASE, - }; - } - - const reportMetadata = response.Item as - | MLRReportMetadata - | MCPARReportMetadata; - const { status, isComplete, fieldDataId, formTemplateId } = reportMetadata; - - if (status === "Submitted") { - return { - status: StatusCodes.SUCCESS, - body: { - ...reportMetadata, - }, - }; - } - - if (!isComplete) { - return { - status: StatusCodes.SERVER_ERROR, - body: error.REPORT_INCOMPLETE, - }; - } - - const jwt = jwtDecode(event.headers["x-api-key"]!) as Record< + formTemplate = (await s3Lib.get(getFormTemplateParams)) as Record< string, - string | boolean + any >; + } catch { + return internalServerError(error.S3_OBJECT_GET_ERROR); + } - const date = Date.now(); - const fullName = `${jwt.given_name} ${jwt.family_name}`; - const newItem = { - ...reportMetadata, - submittedBy: fullName, - submittedOnDate: date, - status: "Submitted", - locked: true, - submissionCount: reportMetadata.submissionCount + 1, - }; - - const submitReportParams = { - TableName: reportTable, - Item: newItem, - }; - try { - await dynamodbLib.put(submitReportParams); - } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.DYNAMO_UPDATE_ERROR, - }; - } - - // Get field data - const fieldDataParams = { - Bucket: reportBucket, - Key: getFieldDataKey(state, fieldDataId), - }; - - let existingFieldData; - - try { - existingFieldData = (await s3Lib.get(fieldDataParams)) as Record< - string, - any - >; - } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.NOT_IN_DATABASE, - }; - } - - const fieldData = { - ...existingFieldData, - submitterName: fullName, - submitterEmailAddress: jwt.email, - reportSubmissionDate: convertDateUtcToEt(date), - }; - - const updateFieldDataParams = { - Bucket: reportBucket, - Key: getFieldDataKey(state, fieldDataId), - Body: JSON.stringify(fieldData), - ContentType: "application/json", - }; - - const getFormTemplateParams = { - Bucket: reportBucket, - Key: getFormTemplateKey(formTemplateId), - }; - - let formTemplate; - - try { - formTemplate = (await s3Lib.get(getFormTemplateParams)) as Record< - string, - any - >; - } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.NOT_IN_DATABASE, - }; - } - - try { - await s3Lib.put(updateFieldDataParams); - } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.S3_OBJECT_UPDATE_ERROR, - }; - } - - return { - status: StatusCodes.SUCCESS, - body: { - ...newItem, - fieldData: { ...fieldData }, - formTemplate: { - ...formTemplate, - }, - }, - }; + try { + await s3Lib.put(updateFieldDataParams); } catch { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return internalServerError(error.S3_OBJECT_UPDATE_ERROR); } + + return ok({ + ...submittedReportMetadata, + fieldData: { ...fieldData }, + formTemplate: { + ...formTemplate, + }, + }); }); diff --git a/services/app-api/handlers/reports/update.test.ts b/services/app-api/handlers/reports/update.test.ts index e92186fde..51b228c8f 100644 --- a/services/app-api/handlers/reports/update.test.ts +++ b/services/app-api/handlers/reports/update.test.ts @@ -14,12 +14,13 @@ import { import { error } from "../../utils/constants/constants"; import s3Lib from "../../utils/s3/s3-lib"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; +import { StatusCodes } from "../../utils/responses/response-lib"; const dynamoClientMock = mockClient(DynamoDBDocumentClient); jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockResolvedValue(true), + isAuthenticated: jest.fn().mockResolvedValue(true), hasPermissions: jest.fn(() => {}), })); const mockAuthUtil = require("../../utils/auth/authorization"); @@ -90,13 +91,11 @@ describe("handlers/reports/update", () => { beforeEach(() => { consoleSpy.debug = jest.spyOn(console, "debug").mockImplementation(); consoleSpy.error = jest.spyOn(console, "error").mockImplementation(); + dynamoClientMock.reset(); + jest.clearAllMocks(); }); describe("Test updateReport and archiveReport unauthorized calls", () => { - afterAll(() => { - jest.clearAllMocks(); - }); - test("Test unauthorized report update throws 403 error", async () => { // fail both state and admin auth checks mockAuthUtil.hasPermissions.mockReturnValue(false); @@ -114,10 +113,6 @@ describe("handlers/reports/update", () => { mockAuthUtil.hasPermissions.mockReturnValue(true); }); - afterEach(() => { - jest.clearAllMocks(); - }); - test("Test report update submission succeeds", async () => { // s3 mocks const s3GetSpy = jest.spyOn(s3Lib, "get"); @@ -140,14 +135,24 @@ describe("handlers/reports/update", () => { }); const response = await updateReport(submissionEvent, null); - const body = JSON.parse(response.body); + const body = JSON.parse(response.body!); expect(body.status).toContain("submitted"); expect(body.fieldData["mock-number-field"]).toBe("2"); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(response.statusCode).toBe(StatusCodes.SUCCESS); + expect(response.statusCode).toBe(StatusCodes.Ok); expect(mockPut).toHaveBeenCalled(); }); + test("Test attempted report update with no data returns 400", async () => { + const noBodyEvent = { + ...submissionEvent, + body: null, + }; + const res = await updateReport(noBodyEvent, null); + expect(res.statusCode).toBe(StatusCodes.BadRequest); + expect(res.body).toContain(error.MISSING_DATA); + }); + test("Test report update with invalid fieldData fails", async () => { // s3 mocks const s3GetSpy = jest.spyOn(s3Lib, "get"); @@ -173,8 +178,7 @@ describe("handlers/reports/update", () => { invalidFieldDataSubmissionEvent, null ); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(response.statusCode).toBe(StatusCodes.SERVER_ERROR); + expect(response.statusCode).toBe(StatusCodes.BadRequest); expect(response.body).toContain(error.INVALID_DATA); }); @@ -189,10 +193,36 @@ describe("handlers/reports/update", () => { }); const res = await updateReport(updateEventWithInvalidData, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.BAD_REQUEST); + expect(res.statusCode).toBe(StatusCodes.NotFound); expect(res.body).toContain(error.MISSING_DATA); }); + test("Test attempted report update with disallowed metadata properties returns 400", async () => { + const eventWritingToReadonlyMetadataFields = { + ...submissionEvent, + body: `{"metadata":{"locked":true}}`, + }; + const res = await updateReport( + eventWritingToReadonlyMetadataFields, + null + ); + expect(res.statusCode).toBe(StatusCodes.BadRequest); + expect(res.body).toContain(error.INVALID_DATA); + }); + + test("Test attempted report update with disallowed fieldData properties returns 400", async () => { + const eventWritingToReadonlyFieldDataFields = { + ...submissionEvent, + body: `{"fieldData":{"submitterName":"Abaraham Lincoln"}}`, + }; + const res = await updateReport( + eventWritingToReadonlyFieldDataFields, + null + ); + expect(res.statusCode).toBe(StatusCodes.BadRequest); + expect(res.body).toContain(error.INVALID_DATA); + }); + test("Test attempted report update with no existing record throws 404", async () => { mockedFetchReport.mockResolvedValue({ statusCode: 200, @@ -204,7 +234,7 @@ describe("handlers/reports/update", () => { }); const res = await updateReport(updateEventWithInvalidData, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); expect(res.body).toContain(error.NO_MATCHING_RECORD); }); @@ -220,7 +250,7 @@ describe("handlers/reports/update", () => { const res = await updateReport(updateEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.UNAUTHORIZED); + expect(res.statusCode).toBe(StatusCodes.Forbidden); expect(res.body).toContain(error.UNAUTHORIZED); }); @@ -232,7 +262,7 @@ describe("handlers/reports/update", () => { const res = await updateReport(noKeyEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); @@ -244,8 +274,76 @@ describe("handlers/reports/update", () => { const res = await updateReport(noKeyEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); + + test("Test dynamo put issue throws error", async () => { + // s3 mocks + const s3GetSpy = jest.spyOn(s3Lib, "get"); + s3GetSpy + .mockResolvedValueOnce(mockReportJson) + .mockResolvedValueOnce(mockReportFieldData); + const s3PutSpy = jest.spyOn(s3Lib, "put"); + s3PutSpy.mockResolvedValue(mockS3PutObjectCommandOutput); + // fetch mock + mockedFetchReport.mockResolvedValue({ + statusCode: 200, + headers: { + "Access-Control-Allow-Origin": "string", + "Access-Control-Allow-Credentials": true, + }, + body: JSON.stringify(mockDynamoData), + }); + // dynamodb mock error + dynamoClientMock.on(PutCommand).rejectsOnce("error"); + + const response = await updateReport(submissionEvent, null); + expect(response.statusCode).toBe(StatusCodes.InternalServerError); + expect(response.body).toContain(error.DYNAMO_UPDATE_ERROR); + }); + + test("Test s3 put issue throws error", async () => { + // s3 mocks + const s3GetSpy = jest.spyOn(s3Lib, "get"); + s3GetSpy + .mockResolvedValueOnce(mockReportJson) + .mockResolvedValueOnce(mockReportFieldData); + const s3PutSpy = jest.spyOn(s3Lib, "put"); + s3PutSpy.mockRejectedValueOnce("error"); + // fetch mock + mockedFetchReport.mockResolvedValue({ + statusCode: 200, + headers: { + "Access-Control-Allow-Origin": "string", + "Access-Control-Allow-Credentials": true, + }, + body: JSON.stringify(mockDynamoData), + }); + + const response = await updateReport(submissionEvent, null); + expect(response.statusCode).toBe(StatusCodes.InternalServerError); + expect(response.body).toContain(error.S3_OBJECT_UPDATE_ERROR); + }); + + test("Test missing form template returns 404", async () => { + const s3GetSpy = jest.spyOn(s3Lib, "get"); + s3GetSpy + .mockResolvedValueOnce(undefined) + .mockResolvedValueOnce(mockReportFieldData); + mockedFetchReport.mockResolvedValue({ + statusCode: 200, + headers: { + "Access-Control-Allow-Origin": "string", + "Access-Control-Allow-Credentials": true, + }, + body: JSON.stringify(mockDynamoData), + }); + + const response = await updateReport(submissionEvent, null); + + expect(response.statusCode).toBe(StatusCodes.NotFound); + expect(response.body).toContain(error.MISSING_DATA); + }); }); }); diff --git a/services/app-api/handlers/reports/update.ts b/services/app-api/handlers/reports/update.ts index b459cc2d7..fd0a49294 100644 --- a/services/app-api/handlers/reports/update.ts +++ b/services/app-api/handlers/reports/update.ts @@ -22,8 +22,15 @@ import { calculateCompletionStatus, isComplete, } from "../../utils/validation/completionStatus"; +import { + badRequest, + forbidden, + internalServerError, + notFound, + ok, +} from "../../utils/responses/response-lib"; // types -import { isState, ReportJson, StatusCodes, UserRoles } from "../../utils/types"; +import { isState, ReportJson, UserRoles } from "../../utils/types"; export const updateReport = handler(async (event, context) => { const requiredParams = ["reportType", "id", "state"]; @@ -31,72 +38,51 @@ export const updateReport = handler(async (event, context) => { !event.pathParameters || !hasReportPathParams(event.pathParameters!, requiredParams) ) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } const { state } = event.pathParameters!; if (!isState(state)) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } // If request body is missing, return a 400 error. if (!event?.body) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.MISSING_DATA, - }; + return badRequest(error.MISSING_DATA); } // Blacklisted keys - const metadataBlacklist = [ + const metadataBlocklist = [ "submittedBy", "submittedOnDate", "locked", "archive", ]; - const fieldDataBlacklist = [ + const fieldDataBlocklist = [ "submitterName", "submitterEmailAddress", "reportSubmissionDate", ]; - try { - const eventBody = JSON.parse(event.body); - if ( - (eventBody.metadata && - Object.keys(eventBody.metadata).some((_) => - metadataBlacklist.includes(_) - )) || - (eventBody.fieldData && - Object.keys(eventBody.fieldData).some((_) => - fieldDataBlacklist.includes(_) - )) - ) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.INVALID_DATA, - }; - } - } catch { - return { - status: StatusCodes.BAD_REQUEST, - body: error.INVALID_DATA, - }; + // This parse is guaranteed to succeed, because handler-lib already did it. + const eventBody = JSON.parse(event.body); + if ( + (eventBody.metadata && + Object.keys(eventBody.metadata).some((_) => + metadataBlocklist.includes(_) + )) || + (eventBody.fieldData && + Object.keys(eventBody.fieldData).some((_) => + fieldDataBlocklist.includes(_) + )) + ) { + return badRequest(error.INVALID_DATA); } // Ensure user has correct permissions to update a report. if (!hasPermissions(event, [UserRoles.STATE_USER], state)) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } // Get current report @@ -104,20 +90,14 @@ export const updateReport = handler(async (event, context) => { const fetchReportRequest = await fetchReport(reportEvent, context); if (!fetchReportRequest?.body || fetchReportRequest.statusCode !== 200) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return notFound(error.NO_MATCHING_RECORD); } // If current report exists, get formTemplateId and fieldDataId const currentReport = JSON.parse(fetchReportRequest.body); if (currentReport.archived || currentReport.locked) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } const { formTemplateId, fieldDataId, reportType } = currentReport; @@ -126,10 +106,7 @@ export const updateReport = handler(async (event, context) => { const reportTable = reportTables[reportType as keyof typeof reportTables]; if (!formTemplateId || !fieldDataId) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.MISSING_DATA, - }; + return notFound(error.MISSING_DATA); } const formTemplateParams = { @@ -137,6 +114,9 @@ export const updateReport = handler(async (event, context) => { Key: getFormTemplateKey(formTemplateId), }; const formTemplate = (await s3Lib.get(formTemplateParams)) as ReportJson; + if (!formTemplate) { + return notFound(error.MISSING_DATA); + } // Get existing fieldData from s3 bucket (for patching with passed data) const fieldDataParams = { @@ -147,6 +127,9 @@ export const updateReport = handler(async (event, context) => { string, any >; + if (!existingFieldData) { + return notFound(error.MISSING_DATA); + } // Parse the passed payload. const unvalidatedPayload = JSON.parse(event.body); @@ -155,31 +138,23 @@ export const updateReport = handler(async (event, context) => { unvalidatedPayload; if (!unvalidatedFieldData) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.MISSING_DATA, - }; + return badRequest(error.MISSING_DATA); } // Validation JSON should be there—if it's not, there's an issue. if (!formTemplate.validationJson) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.MISSING_FORM_TEMPLATE, - }; + return internalServerError(error.MISSING_FORM_TEMPLATE); } // Validate passed field data - const validatedFieldData = await validateFieldData( - formTemplate.validationJson, - unvalidatedFieldData - ); - - if (!validatedFieldData) { - return { - status: StatusCodes.SERVER_ERROR, - body: error.INVALID_DATA, - }; + let validatedFieldData; + try { + validatedFieldData = await validateFieldData( + formTemplate.validationJson, + unvalidatedFieldData + ); + } catch { + return badRequest(error.INVALID_DATA); } // Post validated field data to s3 bucket @@ -198,10 +173,7 @@ export const updateReport = handler(async (event, context) => { try { await s3Lib.put(updateFieldDataParams); } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.S3_OBJECT_UPDATE_ERROR, - }; + return internalServerError(error.S3_OBJECT_UPDATE_ERROR); } const completionStatus = await calculateCompletionStatus( @@ -210,17 +182,15 @@ export const updateReport = handler(async (event, context) => { ); // validate report metadata - const validatedMetadata = await validateData(metadataValidationSchema, { - ...unvalidatedMetadata, - completionStatus, - }); - - // If metadata fails validation, return 400 - if (!validatedMetadata) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.INVALID_DATA, - }; + let validatedMetadata; + try { + validatedMetadata = await validateData(metadataValidationSchema, { + ...unvalidatedMetadata, + completionStatus, + }); + } catch { + // If metadata fails validation, return 400 + return badRequest(error.INVALID_DATA); } /* @@ -244,18 +214,12 @@ export const updateReport = handler(async (event, context) => { try { await dynamoDb.put(reportMetadataParams); } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.DYNAMO_UPDATE_ERROR, - }; + return internalServerError(error.DYNAMO_UPDATE_ERROR); } - return { - status: StatusCodes.SUCCESS, - body: { - ...reportMetadataParams.Item, - fieldData, - formTemplate, - }, - }; + return ok({ + ...reportMetadataParams.Item, + fieldData, + formTemplate, + }); }); diff --git a/services/app-api/handlers/templates/fetch.test.ts b/services/app-api/handlers/templates/fetch.test.ts index 3607334f0..40d0dae40 100644 --- a/services/app-api/handlers/templates/fetch.test.ts +++ b/services/app-api/handlers/templates/fetch.test.ts @@ -3,10 +3,11 @@ import { fetchTemplate } from "./fetch"; import { proxyEvent } from "../../utils/testing/proxyEvent"; import { error } from "../../utils/constants/constants"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; +import { StatusCodes } from "../../utils/responses/response-lib"; jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockReturnValue(true), + isAuthenticated: jest.fn().mockReturnValue(true), })); jest.mock("../../utils/s3/s3-lib", () => ({ @@ -39,7 +40,7 @@ describe("Test fetchTemplate API method", () => { const res = await fetchTemplate(mcparEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(res.body).toContain("s3://fakeurl.bucket.here"); }); @@ -51,7 +52,7 @@ describe("Test fetchTemplate API method", () => { const res = await fetchTemplate(mlrEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(res.body).toContain("s3://fakeurl.bucket.here"); }); @@ -63,7 +64,7 @@ describe("Test fetchTemplate API method", () => { const res = await fetchTemplate(naaarEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(res.body).toContain("s3://fakeurl.bucket.here"); }); @@ -74,8 +75,7 @@ describe("Test fetchTemplate API method", () => { }; const res = await fetchTemplate(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(500); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_TEMPLATE_NAME); }); @@ -86,8 +86,7 @@ describe("Test fetchTemplate API method", () => { }; const res = await fetchTemplate(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(500); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.INVALID_TEMPLATE_NAME); }); }); diff --git a/services/app-api/handlers/templates/fetch.ts b/services/app-api/handlers/templates/fetch.ts index 6a7c69c72..46e9b91c5 100644 --- a/services/app-api/handlers/templates/fetch.ts +++ b/services/app-api/handlers/templates/fetch.ts @@ -2,12 +2,13 @@ import handler from "../handler-lib"; // utils import { error } from "../../utils/constants/constants"; import s3Lib from "../../utils/s3/s3-lib"; +import { badRequest, ok } from "../../utils/responses/response-lib"; // types -import { StatusCodes, TemplateKeys } from "../../utils/types"; +import { TemplateKeys } from "../../utils/types"; export const fetchTemplate = handler(async (event, _context) => { if (!event?.pathParameters?.templateName!) { - throw new Error(error.NO_TEMPLATE_NAME); + return badRequest(error.NO_TEMPLATE_NAME); } let key; if (event.pathParameters.templateName === "MCPAR") { @@ -17,7 +18,7 @@ export const fetchTemplate = handler(async (event, _context) => { } else if (event.pathParameters.templateName === "NAAAR") { key = TemplateKeys.NAAAR; } else { - throw new Error(error.INVALID_TEMPLATE_NAME); + return badRequest(error.INVALID_TEMPLATE_NAME); } // get the signed URL string const params = { @@ -26,5 +27,5 @@ export const fetchTemplate = handler(async (event, _context) => { Key: key, }; const url = await s3Lib.getSignedDownloadUrl(params); - return { status: StatusCodes.SUCCESS, body: url }; + return ok(url); }); diff --git a/services/app-api/utils/auth/authorization.test.ts b/services/app-api/utils/auth/authorization.test.ts index 5f9b21a8e..a83594ced 100644 --- a/services/app-api/utils/auth/authorization.test.ts +++ b/services/app-api/utils/auth/authorization.test.ts @@ -3,7 +3,7 @@ import { mockClient } from "aws-sdk-client-mock"; import { proxyEvent } from "../testing/proxyEvent"; import { hasPermissions, - isAuthorized, + isAuthenticated, isAuthorizedToFetchState, } from "./authorization"; import { UserRoles } from "../types"; @@ -45,20 +45,22 @@ describe("Test authorization with api key and environment variables", () => { jest.clearAllMocks(); }); test("is not authorized when no api key is passed", async () => { - mockVerifier.mockReturnValue(true); - const authStatus = await isAuthorized(noApiKeyEvent); + mockVerifier.mockImplementation(() => { + throw new Error("no key provided"); + }); + const authStatus = await isAuthenticated(noApiKeyEvent); expect(authStatus).toBeFalsy(); }); test("is not authorized when token is invalid", async () => { mockVerifier.mockImplementation(() => { throw new Error("could not verify"); }); - const authStatus = await isAuthorized(apiKeyEvent); + const authStatus = await isAuthenticated(apiKeyEvent); expect(authStatus).toBeFalsy(); }); test("is authorized when api key is passed and environment variables are set", async () => { mockVerifier.mockReturnValue(true); - const authStatus = await isAuthorized(apiKeyEvent); + const authStatus = await isAuthenticated(apiKeyEvent); expect(authStatus).toBeTruthy(); }); }); @@ -75,14 +77,16 @@ describe("Test authorization with api key and ssm parameters", () => { throw new Error("failed in test"); }); ssmClientMock.on(GetParameterCommand).callsFake(mockGetSsmParameter); - await expect(isAuthorized(apiKeyEvent)).rejects.toThrow("failed in test"); + await expect(isAuthenticated(apiKeyEvent)).rejects.toThrow( + "failed in test" + ); }); test("is authorized when api key is passed and ssm parameters exist", async () => { const mockGetSsmParameter = jest .fn() .mockResolvedValue({ Parameter: { Value: "VALUE" } }); ssmClientMock.on(GetParameterCommand).callsFake(mockGetSsmParameter); - const authStatus = await isAuthorized(apiKeyEvent); + const authStatus = await isAuthenticated(apiKeyEvent); expect(authStatus).toBeTruthy(); }); @@ -92,7 +96,7 @@ describe("Test authorization with api key and ssm parameters", () => { const mockGetSsmParameter = jest.fn().mockResolvedValue(mockSsmResponse); ssmClientMock.on(GetParameterCommand).callsFake(mockGetSsmParameter); - await isAuthorized(apiKeyEvent); + await isAuthenticated(apiKeyEvent); expect(mockGetSsmParameter).toHaveBeenCalled(); }); @@ -101,7 +105,7 @@ describe("Test authorization with api key and ssm parameters", () => { delete process.env["COGNITO_USER_POOL_CLIENT_ID"]; ssmClientMock.on(GetParameterCommand).resolves({}); - await expect(isAuthorized(apiKeyEvent)).rejects.toThrow(Error); + await expect(isAuthenticated(apiKeyEvent)).rejects.toThrow(Error); }); }); diff --git a/services/app-api/utils/auth/authorization.ts b/services/app-api/utils/auth/authorization.ts index df27cf561..2fc419653 100644 --- a/services/app-api/utils/auth/authorization.ts +++ b/services/app-api/utils/auth/authorization.ts @@ -41,7 +41,7 @@ const loadCognitoValues = async () => { } }; -export const isAuthorized = async (event: APIGatewayProxyEvent) => { +export const isAuthenticated = async (event: APIGatewayProxyEvent) => { const cognitoValues = await loadCognitoValues(); // Verifier that expects valid access tokens: const verifier = CognitoJwtVerifier.create({ @@ -50,18 +50,12 @@ export const isAuthorized = async (event: APIGatewayProxyEvent) => { clientId: cognitoValues.userPoolClientId, }); - let isAuthorized; - - if (event?.headers?.["x-api-key"]) { - try { - isAuthorized = await verifier.verify(event.headers["x-api-key"]); - } catch { - // verification failed - unauthorized - isAuthorized = false; - } + try { + await verifier.verify(event?.headers?.["x-api-key"]!); + return true; + } catch { + return false; } - - return !!isAuthorized; }; export const hasPermissions = ( diff --git a/services/app-api/utils/constants/constants.ts b/services/app-api/utils/constants/constants.ts index f7c211bee..2f0d4ac65 100644 --- a/services/app-api/utils/constants/constants.ts +++ b/services/app-api/utils/constants/constants.ts @@ -5,7 +5,7 @@ export const error = { MISSING_DATA: "Missing required data.", INVALID_DATA: "Provided data is not valid.", NO_MATCHING_RECORD: "No matching record found.", - SERVER_ERROR: "An unspecified server error occured.", + SERVER_ERROR: "An unspecified server error occurred.", // bucket errors S3_OBJECT_CREATION_ERROR: "Report could not be created due to an S3 error.", S3_OBJECT_GET_ERROR: "Error while fetching report.", @@ -23,7 +23,7 @@ export const error = { ALREADY_ARCHIVED: "Cannot update archived report.", ALREADY_LOCKED: "Cannot update locked report.", REPORT_INCOMPLETE: "Cannot submit incomplete form.", -}; +} as const; export const buckets = { FORM_TEMPLATE: "formTemplates", diff --git a/services/app-api/utils/responses/response-lib.test.ts b/services/app-api/utils/responses/response-lib.test.ts index 6cae5e812..3c24cb5eb 100644 --- a/services/app-api/utils/responses/response-lib.test.ts +++ b/services/app-api/utils/responses/response-lib.test.ts @@ -1,25 +1,39 @@ -import { buildResponse, internalServerError } from "./response-lib"; +import { + ok, + created, + badRequest, + unauthenticated, + forbidden, + notFound, + conflict, + internalServerError, +} from "./response-lib"; -test("Internal Server Error should give a 500 status", () => { - const res = internalServerError("internal error"); - expect(res.body).toBe(JSON.stringify("internal error")); - expect(res.statusCode).toBe(500); - expect(res.headers["Access-Control-Allow-Origin"]).toBe("*"); - expect(res.headers["Access-Control-Allow-Credentials"]).toBe(true); -}); +describe("HTTP Response helper functions", () => { + test("Responses should have correct status codes", () => { + expect(ok({}).statusCode).toBe(200); + expect(created({}).statusCode).toBe(201); + expect(badRequest({}).statusCode).toBe(400); + expect(unauthenticated({}).statusCode).toBe(401); + expect(forbidden({}).statusCode).toBe(403); + expect(notFound({}).statusCode).toBe(404); + expect(conflict({}).statusCode).toBe(409); + expect(internalServerError({}).statusCode).toBe(500); + }); -test("Build Response should create an object with a status code 420 and message", () => { - const res = buildResponse(400, "status is 400"); - expect(res.body).toBe(JSON.stringify("status is 400")); - expect(res.statusCode).toBe(400); - expect(res.headers["Access-Control-Allow-Origin"]).toBe("*"); - expect(res.headers["Access-Control-Allow-Credentials"]).toBe(true); -}); + test("Responses should exclude a body if not provided", () => { + const response = badRequest(); + expect(response.body).toBeUndefined(); + }); + + test("Responses should include a body if provided", () => { + const res = badRequest("try again"); + expect(res.body).toBe('"try again"'); + }); -test("Build Response should create an object with a status code 403 and message", () => { - const res = buildResponse(403, "Unauthorized"); - expect(res.body).toBe(JSON.stringify("Unauthorized")); - expect(res.statusCode).toBe(403); - expect(res.headers["Access-Control-Allow-Origin"]).toBe("*"); - expect(res.headers["Access-Control-Allow-Credentials"]).toBe(true); + test("Responses should have the correct headers", () => { + const response = ok({}); + expect(response.headers["Access-Control-Allow-Origin"]).toBe("*"); + expect(response.headers["Access-Control-Allow-Credentials"]).toBe(true); + }); }); diff --git a/services/app-api/utils/responses/response-lib.ts b/services/app-api/utils/responses/response-lib.ts index 76dc7e0c0..ea0222c9e 100644 --- a/services/app-api/utils/responses/response-lib.ts +++ b/services/app-api/utils/responses/response-lib.ts @@ -1,14 +1,95 @@ -export function internalServerError(body: any) { - return buildResponse(500, body); +/** + * The response for a successful request. + * Should include a body for GET, PUT, or POST. + * Need not include a body for DELETE + */ +export const ok = (body?: Object) => new HttpResponse(StatusCodes.Ok, body); + +/** + * The response for a successful POST or PUT request, + * which resulted in the creation of a new resource. + */ +export const created = (body: Object) => + new HttpResponse(StatusCodes.Created, body); + +/** + * The response for a failed request, due to client-side issues. + * Typically indicates a missing parameter or malformed body. + */ +export const badRequest = (body?: Object) => + new HttpResponse(StatusCodes.BadRequest, body); + +/** + * The response for a client without any authorization. + * Typically indicates an issue with the request's headers or token. + * + * Note: The usual name for HTTP 401 is "Unauthorized", but that's misleading. + * Authentication is for identity; authorization is for permissions. + */ +export const unauthenticated = (body?: Object) => + new HttpResponse(StatusCodes.Unauthenticated, body); + +/** + * The response for a client without sufficient permissions. + * This is specific to the requested operation. + * For example, a regular user requesting an admin-only endpoint. + */ +export const forbidden = (body?: Object) => + new HttpResponse(StatusCodes.Forbidden, body); + +/** + * The response for a request that assumes the existence of a missing resource. + * For example, attempting to submit a report that isn't in the database. + */ +export const notFound = (body?: Object) => + new HttpResponse(StatusCodes.NotFound, body); + +/** + * The response for a request that assumes the server is in a different state. + * For example, attempting to submit a report that's already submitted. + */ +export const conflict = (body?: Object) => + new HttpResponse(StatusCodes.Conflict, body); + +/** + * The response for a request that errored out on the server side. + * Typically indicates there is nothing the client can do to resolve the issue. + */ +export const internalServerError = (body?: Object) => + new HttpResponse(StatusCodes.InternalServerError, body); + +/** + * Note: Production code shouldn't need to reference this directly. + * Use a helper method instead. + * + * This enum is listed mainly for the purpose of unit testing. + */ +export enum StatusCodes { + Ok = 200, + Created = 201, + BadRequest = 400, + Unauthenticated = 401, + Forbidden = 403, + NotFound = 404, + Conflict = 409, + InternalServerError = 500, } -export function buildResponse(statusCode: number, body: any) { - return { - statusCode: statusCode, - headers: { - "Access-Control-Allow-Origin": "*", - "Access-Control-Allow-Credentials": true, - }, - body: JSON.stringify(body), +/** + * Note: Production code shouldn't need to reference this directly. + * Use a helper method instead. + */ +export class HttpResponse { + readonly statusCode: number; + readonly body: string | undefined; + readonly headers = { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Credentials": true, }; + constructor(statusCode: number, body?: Object | undefined) { + this.statusCode = statusCode; + if (body !== undefined) { + this.body = JSON.stringify(body); + } + } } diff --git a/services/app-api/utils/types/other.ts b/services/app-api/utils/types/other.ts index 05bebd695..1b77000c5 100644 --- a/services/app-api/utils/types/other.ts +++ b/services/app-api/utils/types/other.ts @@ -4,15 +4,6 @@ export interface AnyObject { [key: string]: any; } -export const enum StatusCodes { - SUCCESS = 200, - CREATED = 201, - BAD_REQUEST = 400, - UNAUTHORIZED = 403, - NOT_FOUND = 404, - SERVER_ERROR = 500, -} - /** * Abridged copy of the type used by `aws-lambda@1.0.7` (from `@types/aws-lambda@8.10.88`) * We only this package for these types, and we use only a subset of the From c4bf725378cf09eb7b2fbb19e17c5772d4233e2c Mon Sep 17 00:00:00 2001 From: MDCT GitHub Service Account <125407418+mdct-github-service-account@users.noreply.github.com> Date: Thu, 26 Sep 2024 10:26:29 -0400 Subject: [PATCH 07/35] [Snyk] Upgrade @emotion/react from 11.11.4 to 11.13.3 (#11868) Co-authored-by: snyk-bot --- services/ui-src/package.json | 2 +- services/ui-src/yarn.lock | 124 +++++++++++++---------------------- 2 files changed, 47 insertions(+), 79 deletions(-) diff --git a/services/ui-src/package.json b/services/ui-src/package.json index d0f556edd..fccb785aa 100644 --- a/services/ui-src/package.json +++ b/services/ui-src/package.json @@ -16,7 +16,7 @@ "dependencies": { "@chakra-ui/react": "^1.8.9", "@cmsgov/design-system": "^3.8.0", - "@emotion/react": "^11.11.4", + "@emotion/react": "^11.13.3", "@emotion/styled": "^11.12.0", "@hookform/resolvers": "^2.8.4", "@vitejs/plugin-react": "^4.3.0", diff --git a/services/ui-src/yarn.lock b/services/ui-src/yarn.lock index c1e472a17..c5a94d9a2 100644 --- a/services/ui-src/yarn.lock +++ b/services/ui-src/yarn.lock @@ -3830,23 +3830,6 @@ resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz#75b4c27948c81e88ccd3a8902047bcd797f38d32" integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw== -"@emotion/babel-plugin@^11.11.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" - integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/runtime" "^7.18.3" - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/serialize" "^1.1.2" - babel-plugin-macros "^3.1.0" - convert-source-map "^1.5.0" - escape-string-regexp "^4.0.0" - find-root "^1.1.0" - source-map "^0.5.7" - stylis "4.2.0" - "@emotion/babel-plugin@^11.12.0": version "11.12.0" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz#7b43debb250c313101b3f885eba634f1d723fcc2" @@ -3864,22 +3847,17 @@ source-map "^0.5.7" stylis "4.2.0" -"@emotion/cache@^11.11.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" - integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== +"@emotion/cache@^11.13.0": + version "11.13.1" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.13.1.tgz#fecfc54d51810beebf05bf2a161271a1a91895d7" + integrity sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw== dependencies: - "@emotion/memoize" "^0.8.1" - "@emotion/sheet" "^1.2.2" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" + "@emotion/memoize" "^0.9.0" + "@emotion/sheet" "^1.4.0" + "@emotion/utils" "^1.4.0" + "@emotion/weak-memoize" "^0.4.0" stylis "4.2.0" -"@emotion/hash@^0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" - integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== - "@emotion/hash@^0.9.2": version "0.9.2" resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.2.tgz#ff9221b9f58b4dfe61e619a7788734bd63f6898b" @@ -3904,41 +3882,25 @@ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== -"@emotion/memoize@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" - integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== - "@emotion/memoize@^0.9.0": version "0.9.0" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102" integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== -"@emotion/react@^11.11.4": - version "11.11.4" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.4.tgz#3a829cac25c1f00e126408fab7f891f00ecc3c1d" - integrity sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw== +"@emotion/react@^11.13.3": + version "11.13.3" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.13.3.tgz#a69d0de2a23f5b48e0acf210416638010e4bd2e4" + integrity sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg== dependencies: "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.11.0" - "@emotion/cache" "^11.11.0" - "@emotion/serialize" "^1.1.3" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" + "@emotion/babel-plugin" "^11.12.0" + "@emotion/cache" "^11.13.0" + "@emotion/serialize" "^1.3.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.1.0" + "@emotion/utils" "^1.4.0" + "@emotion/weak-memoize" "^0.4.0" hoist-non-react-statics "^3.3.1" -"@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.4.tgz#fc8f6d80c492cfa08801d544a05331d1cc7cd451" - integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== - dependencies: - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/unitless" "^0.8.1" - "@emotion/utils" "^1.2.1" - csstype "^3.0.2" - "@emotion/serialize@^1.2.0", "@emotion/serialize@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.0.tgz#e07cadfc967a4e7816e0c3ffaff4c6ce05cb598d" @@ -3950,10 +3912,21 @@ "@emotion/utils" "^1.4.0" csstype "^3.0.2" -"@emotion/sheet@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" - integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== +"@emotion/serialize@^1.3.1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.2.tgz#e1c1a2e90708d5d85d81ccaee2dfeb3cc0cccf7a" + integrity sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA== + dependencies: + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/unitless" "^0.10.0" + "@emotion/utils" "^1.4.1" + csstype "^3.0.2" + +"@emotion/sheet@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.4.0.tgz#c9299c34d248bc26e82563735f78953d2efca83c" + integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== "@emotion/styled@^11.12.0": version "11.13.0" @@ -3967,40 +3940,35 @@ "@emotion/use-insertion-effect-with-fallbacks" "^1.1.0" "@emotion/utils" "^1.4.0" -"@emotion/unitless@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" - integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== +"@emotion/unitless@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.10.0.tgz#2af2f7c7e5150f497bdabd848ce7b218a27cf745" + integrity sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg== "@emotion/unitless@^0.9.0": version "0.9.0" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.9.0.tgz#8e5548f072bd67b8271877e51c0f95c76a66cbe2" integrity sha512-TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZQ== -"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" - integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== - "@emotion/use-insertion-effect-with-fallbacks@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz#1a818a0b2c481efba0cf34e5ab1e0cb2dcb9dfaf" integrity sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw== -"@emotion/utils@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" - integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== - "@emotion/utils@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.0.tgz#262f1d02aaedb2ec91c83a0955dd47822ad5fbdd" integrity sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ== -"@emotion/weak-memoize@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" - integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== +"@emotion/utils@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.1.tgz#b3adbb43de12ee2149541c4f1337d2eb7774f0ad" + integrity sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA== + +"@emotion/weak-memoize@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6" + integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== "@esbuild/aix-ppc64@0.21.5": version "0.21.5" From 438d80f7485657f016071015c933b15860a624d1 Mon Sep 17 00:00:00 2001 From: MDCT GitHub Service Account <125407418+mdct-github-service-account@users.noreply.github.com> Date: Wed, 2 Oct 2024 15:23:35 -0400 Subject: [PATCH 08/35] [Snyk] Upgrade jsdom from 24.1.0 to 24.1.3 (#11869) Co-authored-by: snyk-bot --- services/app-api/package.json | 2 +- services/app-api/yarn.lock | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/services/app-api/package.json b/services/app-api/package.json index b63ba12f6..2e3f442f1 100644 --- a/services/app-api/package.json +++ b/services/app-api/package.json @@ -41,7 +41,7 @@ "date-fns": "^2.26.0", "date-fns-tz": "^1.2.2", "dompurify": "^2.5.6", - "jsdom": "^24.1.0", + "jsdom": "^24.1.3", "jwt-decode": "^3.1.2", "jwt-encode": "^1.0.1", "kafkajs": "^2.2.3", diff --git a/services/app-api/yarn.lock b/services/app-api/yarn.lock index ad9edc14a..21a4d57c6 100644 --- a/services/app-api/yarn.lock +++ b/services/app-api/yarn.lock @@ -2973,7 +2973,7 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" -https-proxy-agent@^7.0.4: +https-proxy-agent@^7.0.5: version "7.0.5" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== @@ -3593,10 +3593,10 @@ jsdom@^16.6.0: ws "^7.4.6" xml-name-validator "^3.0.0" -jsdom@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-24.1.0.tgz#0cffdabd42c506788bfecd160e8ac22d4387f971" - integrity sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA== +jsdom@^24.1.3: + version "24.1.3" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-24.1.3.tgz#88e4a07cb9dd21067514a619e9f17b090a394a9f" + integrity sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ== dependencies: cssstyle "^4.0.1" data-urls "^5.0.0" @@ -3604,11 +3604,11 @@ jsdom@^24.1.0: form-data "^4.0.0" html-encoding-sniffer "^4.0.0" http-proxy-agent "^7.0.2" - https-proxy-agent "^7.0.4" + https-proxy-agent "^7.0.5" is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.10" + nwsapi "^2.2.12" parse5 "^7.1.2" - rrweb-cssom "^0.7.0" + rrweb-cssom "^0.7.1" saxes "^6.0.0" symbol-tree "^3.2.4" tough-cookie "^4.1.4" @@ -3617,7 +3617,7 @@ jsdom@^24.1.0: whatwg-encoding "^3.1.1" whatwg-mimetype "^4.0.0" whatwg-url "^14.0.0" - ws "^8.17.0" + ws "^8.18.0" xml-name-validator "^5.0.0" jsesc@^2.5.1: @@ -3871,7 +3871,7 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -nwsapi@^2.2.0, nwsapi@^2.2.10, nwsapi@^2.2.5: +nwsapi@^2.2.0, nwsapi@^2.2.12, nwsapi@^2.2.5: version "2.2.10" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.10.tgz#0b77a68e21a0b483db70b11fad055906e867cda8" integrity sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ== @@ -4154,7 +4154,7 @@ rrweb-cssom@^0.6.0: resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#ed298055b97cbddcdeb278f904857629dec5e0e1" integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== -rrweb-cssom@^0.7.0: +rrweb-cssom@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz#c73451a484b86dd7cfb1e0b2898df4b703183e4b" integrity sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg== @@ -4737,7 +4737,7 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^7.4.6, ws@^8.17.0, ws@^8.18.0: +ws@^7.4.6, ws@^8.18.0: version "8.18.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== From 32dd4a72936c4cbe06ad947f055f3d4d22b7c7f7 Mon Sep 17 00:00:00 2001 From: MDCT GitHub Service Account <125407418+mdct-github-service-account@users.noreply.github.com> Date: Thu, 3 Oct 2024 09:49:02 -0400 Subject: [PATCH 09/35] [Snyk] Upgrade react-hook-form from 7.52.1 to 7.53.0 (#11870) Co-authored-by: snyk-bot --- services/ui-src/package.json | 2 +- services/ui-src/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/services/ui-src/package.json b/services/ui-src/package.json index fccb785aa..a56f0a4d2 100644 --- a/services/ui-src/package.json +++ b/services/ui-src/package.json @@ -37,7 +37,7 @@ "react-dom": "^17.0.1", "react-dropzone": "^11.4.2", "react-error-boundary": "^3.1.4", - "react-hook-form": "^7.52.0", + "react-hook-form": "^7.53.0", "react-icons": "^4.3.1", "react-router-dom": "6.26.1", "react-uuid": "^1.0.3", diff --git a/services/ui-src/yarn.lock b/services/ui-src/yarn.lock index c5a94d9a2..850c00f8e 100644 --- a/services/ui-src/yarn.lock +++ b/services/ui-src/yarn.lock @@ -8615,10 +8615,10 @@ react-helmet@^6.1.0: react-fast-compare "^3.1.1" react-side-effect "^2.1.0" -react-hook-form@^7.52.0: - version "7.52.1" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.52.1.tgz#ec2c96437b977f8b89ae2d541a70736c66284852" - integrity sha512-uNKIhaoICJ5KQALYZ4TOaOLElyM+xipord+Ha3crEFhTntdLvWZqVY49Wqd/0GiVCA/f9NjemLeiNPjG7Hpurg== +react-hook-form@^7.53.0: + version "7.53.0" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.53.0.tgz#3cf70951bf41fa95207b34486203ebefbd3a05ab" + integrity sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ== react-icons@^4.3.1: version "4.3.1" From 41a7cef85c60328691637223612f77b03f391573 Mon Sep 17 00:00:00 2001 From: MDCT GitHub Service Account <125407418+mdct-github-service-account@users.noreply.github.com> Date: Tue, 8 Oct 2024 09:41:54 -0400 Subject: [PATCH 10/35] [Snyk] Upgrade react-router-dom from 6.26.1 to 6.26.2 (#11871) Co-authored-by: snyk-bot --- services/ui-src/package.json | 2 +- services/ui-src/yarn.lock | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/services/ui-src/package.json b/services/ui-src/package.json index a56f0a4d2..2febdd551 100644 --- a/services/ui-src/package.json +++ b/services/ui-src/package.json @@ -39,7 +39,7 @@ "react-error-boundary": "^3.1.4", "react-hook-form": "^7.53.0", "react-icons": "^4.3.1", - "react-router-dom": "6.26.1", + "react-router-dom": "6.26.2", "react-uuid": "^1.0.3", "sass": "^1.77.6", "vite": "^5.3.6", diff --git a/services/ui-src/yarn.lock b/services/ui-src/yarn.lock index 850c00f8e..fd79f327c 100644 --- a/services/ui-src/yarn.lock +++ b/services/ui-src/yarn.lock @@ -4464,10 +4464,10 @@ prop-types "^15.7.2" tslib "^2.1.0" -"@remix-run/router@1.19.1": - version "1.19.1" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.19.1.tgz#984771bfd1de2715f42394c87fb716c1349e014f" - integrity sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg== +"@remix-run/router@1.19.2": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.19.2.tgz#0c896535473291cb41f152c180bedd5680a3b273" + integrity sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA== "@rollup/rollup-android-arm-eabi@4.22.0": version "4.22.0" @@ -8683,20 +8683,20 @@ react-remove-scroll@2.4.1: use-callback-ref "^1.2.3" use-sidecar "^1.0.1" -react-router-dom@6.26.1: - version "6.26.1" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.26.1.tgz#a408892b41767a49dc94b3564b0e7d8e3959f623" - integrity sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw== +react-router-dom@6.26.2: + version "6.26.2" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.26.2.tgz#a6e3b0cbd6bfd508e42b9342099d015a0ac59680" + integrity sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ== dependencies: - "@remix-run/router" "1.19.1" - react-router "6.26.1" + "@remix-run/router" "1.19.2" + react-router "6.26.2" -react-router@6.26.1: - version "6.26.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.26.1.tgz#88c64837e05ffab6899a49df2a1484a22471e4ce" - integrity sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ== +react-router@6.26.2: + version "6.26.2" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.26.2.tgz#2f0a68999168954431cdc29dd36cec3b6fa44a7e" + integrity sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A== dependencies: - "@remix-run/router" "1.19.1" + "@remix-run/router" "1.19.2" react-side-effect@^2.1.0: version "2.1.2" From 5b5647c8735fdeaed542b197342ba67bff95f5b0 Mon Sep 17 00:00:00 2001 From: Britt Date: Tue, 8 Oct 2024 10:07:31 -0600 Subject: [PATCH 11/35] Cmdct 4026 - Prior Authorization Section B (#11872) --- services/app-api/forms/mcpar.json | 164 ++++++++++++++++++ services/app-api/handlers/reports/create.ts | 5 +- .../utils/formTemplates/formTemplates.test.ts | 24 ++- .../utils/formTemplates/formTemplates.ts | 22 ++- services/app-api/utils/testing/setupJest.ts | 1 + services/app-api/utils/types/formFields.ts | 1 + services/app-api/utils/types/reportContext.ts | 1 + services/app-api/utils/types/reports.ts | 1 + .../components/modals/AddEditReportModal.tsx | 4 + services/ui-src/src/types/reportContext.ts | 1 + services/ui-src/src/types/reports.ts | 1 + 11 files changed, 215 insertions(+), 10 deletions(-) diff --git a/services/app-api/forms/mcpar.json b/services/app-api/forms/mcpar.json index 1999a6e8f..b548951a8 100644 --- a/services/app-api/forms/mcpar.json +++ b/services/app-api/forms/mcpar.json @@ -630,6 +630,170 @@ } ] } + }, + { + "name": "XIII: Prior Authorization", + "path": "/mcpar/state-level-indicators/prior-authorization", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section B: State-Level Indicators", + "subsection": "Topic XIII: Prior Authorization", + "spreadsheet": "B_State", + "alert": "Beginning June 2026, Indicators B.XIII.1a-b-2a-b must be completed. Submission of this data before June 2026 is optional; if you choose not to respond prior to June 2026, select “Not reporting data”." + } + }, + "form": { + "id": "bpi", + "fields": [ + { + "id": "plan_independentTimeframeForResponseToStandardRequests", + "type": "radio", + "validation": "radio", + "props": { + "label": "B.XIII.1a Does the state have an independent timeframe standard for plans to respond to standard PA requests?", + "hint": "If you choose not to respond prior to June 2026, select “Not reporting data”.", + "choices": [ + { + "id": "2mwADJVRdZoOfIaf6kGxoQIgNMm", + "label": "Not reporting data" + }, + { + "id": "2mwADLVa7emn5nMcosPVO2IMgZ8", + "label": "No" + }, + { + "id": "2mwADGTgdOXaD87gn2PO5BWPKU4", + "label": "Yes", + "children": [ + { + "id": "plan_daysAndHoursForPlansToRespondStandardRequests", + "type": "radio", + "validation": { + "type": "radio", + "nested": true, + "parentFieldName": "plan_independentTimeframeForResponseToStandardRequests" + }, + "props": { + "label": "B.XIII.1b State timeframe for plans to respond to standard PA requests", + "choices": [ + { + "id": "2mwADFxQVwjgYKMq5rEMPF8nryi", + "label": "Number of days", + "children": [ + { + "id": "numberOfDays", + "type": "number", + "validation": { + "type": "number", + "nested": true, + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0, + "parentFieldName": "plan_daysAndHoursForPlansToRespondStandardRequests" + } + } + ] + }, + { + "id": "2mwADIT0tTFJTHwbuB9lcuVdkei", + "label": "Number of hours", + "children": [ + { + "id": "plan_numberOfHours", + "type": "number", + "validation": { + "type": "number", + "nested": true, + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0, + "parentFieldName": "plan_daysAndHoursForPlansToRespondStandardRequests" + } + } + ] + } + ] + } + } + ] + } + ] + } + }, + { + "id": "plan_independentTimeframeForResponseToExpeditedRequests", + "type": "radio", + "validation": "radio", + "props": { + "label": "B.XIII.2a Does the state have an independent timeframe standard for plans to respond to expedited PA requests?", + "hint": "If you choose not to respond prior to June 2026, select “Not reporting data”.", + "choices": [ + { + "id": "UG7uunqq5UCtUq1is3iyiw", + "label": "Not reporting data" + }, + { + "id": "3DGAqqnOBE2kwKVFMxUt3A", + "label": "No" + }, + { + "id": "jlIZKSPaf0GSVGmJbRUBzg", + "label": "Yes", + "children": [ + { + "id": "plan_daysAndHoursForPlansToRespondExpeditedRequests", + "type": "radio", + "validation": { + "type": "radio", + "nested": true, + "parentFieldName": "plan_independentTimeframeForResponseToExpeditedRequests" + }, + "props": { + "label": "B.XIII.1b State timeframe for plans to respond to expedited PA requests", + "choices": [ + { + "id": "2mwADFxQVwjgYKMq5rEMPF8nryi", + "label": "Number of days", + "children": [ + { + "id": "plan_numberOfDaysExpedited", + "type": "number", + "validation": { + "type": "number", + "nested": true, + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0, + "parentFieldName": "plan_daysAndHoursForPlansToRespondExpeditedRequests" + } + } + ] + }, + { + "id": "2mwADIT0tTFJTHwbuB9lcuVdkei", + "label": "Number of hours", + "children": [ + { + "id": "numberOfHours", + "type": "number", + "validation": { + "type": "number", + "nested": true, + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0, + "parentFieldName": "plan_daysAndHoursForPlansToRespondExpeditedRequests" + } + } + ] + } + ] + } + } + ] + } + ] + } + } + ] + } } ] }, diff --git a/services/app-api/handlers/reports/create.ts b/services/app-api/handlers/reports/create.ts index f75e1ef39..64a58a095 100644 --- a/services/app-api/handlers/reports/create.ts +++ b/services/app-api/handlers/reports/create.ts @@ -64,12 +64,15 @@ export const createReport = handler(async (event, _context) => { const isProgramPCCM = unvalidatedMetadata?.programIsPCCM?.[0]?.value === "Yes"; + const novMcparRelease = unvalidatedMetadata?.novMcparRelease || false; + // eslint-disable-next-line no-useless-catch try { ({ formTemplate, formTemplateVersion } = await getOrCreateFormTemplate( reportBucket, reportType, - isProgramPCCM + isProgramPCCM, + novMcparRelease )); } catch (e) { throw e; diff --git a/services/app-api/utils/formTemplates/formTemplates.test.ts b/services/app-api/utils/formTemplates/formTemplates.test.ts index 28aa57b46..7bf572a1b 100644 --- a/services/app-api/utils/formTemplates/formTemplates.test.ts +++ b/services/app-api/utils/formTemplates/formTemplates.test.ts @@ -71,7 +71,8 @@ describe("Test getOrCreateFormTemplate MCPAR", () => { const result = await getOrCreateFormTemplate( "local-mcpar-reports", ReportType.MCPAR, - programIsNotPCCM + programIsNotPCCM, + true ); expect(dynamoPutSpy).toHaveBeenCalled(); @@ -101,7 +102,8 @@ describe("Test getOrCreateFormTemplate MCPAR", () => { const result = await getOrCreateFormTemplate( "local-mcpar-reports", ReportType.MCPAR, - programIsPCCM + programIsPCCM, + false ); expect(dynamoPutSpy).toHaveBeenCalled(); expect(s3PutSpy).toHaveBeenCalled(); @@ -132,7 +134,8 @@ describe("Test getOrCreateFormTemplate MCPAR", () => { const result = await getOrCreateFormTemplate( "local-mcpar-reports", ReportType.MCPAR, - programIsNotPCCM + programIsNotPCCM, + false ); expect(dynamoPutSpy).not.toHaveBeenCalled(); expect(s3PutSpy).not.toHaveBeenCalled(); @@ -171,7 +174,8 @@ describe("Test getOrCreateFormTemplate MCPAR", () => { const result = await getOrCreateFormTemplate( "local-mcpar-reports", ReportType.MCPAR, - programIsNotPCCM + programIsNotPCCM, + true ); expect(dynamoPutSpy).toHaveBeenCalled(); expect(s3PutSpy).toHaveBeenCalled(); @@ -196,7 +200,8 @@ describe("Test getOrCreateFormTemplate MCPAR", () => { const result = await getOrCreateFormTemplate( "local-mcpar-reports", ReportType.MCPAR, - programIsNotPCCM + programIsNotPCCM, + true ); expect(dynamoPutSpy).toHaveBeenCalled(); @@ -236,7 +241,8 @@ describe("Test getOrCreateFormTemplate MLR", () => { const result = await getOrCreateFormTemplate( "local-mlr-reports", ReportType.MLR, - programIsNotPCCM + programIsNotPCCM, + true ); expect(dynamoPutSpy).toHaveBeenCalled(); expect(s3PutSpy).toHaveBeenCalled(); @@ -267,7 +273,8 @@ describe("Test getOrCreateFormTemplate MLR", () => { const result = await getOrCreateFormTemplate( "local-mlr-reports", ReportType.MLR, - programIsNotPCCM + programIsNotPCCM, + false ); expect(dynamoPutSpy).not.toHaveBeenCalled(); expect(s3PutSpy).not.toHaveBeenCalled(); @@ -306,7 +313,8 @@ describe("Test getOrCreateFormTemplate MLR", () => { const result = await getOrCreateFormTemplate( "local-mlr-reports", ReportType.MLR, - programIsNotPCCM + programIsNotPCCM, + true ); expect(dynamoPutSpy).toHaveBeenCalled(); expect(s3PutSpy).toHaveBeenCalled(); diff --git a/services/app-api/utils/formTemplates/formTemplates.ts b/services/app-api/utils/formTemplates/formTemplates.ts index d9c2b7c27..210f8d04d 100644 --- a/services/app-api/utils/formTemplates/formTemplates.ts +++ b/services/app-api/utils/formTemplates/formTemplates.ts @@ -76,7 +76,8 @@ export const formTemplateForReportType = (reportType: ReportType) => { export async function getOrCreateFormTemplate( reportBucket: string, reportType: ReportType, - isProgramPCCM: boolean + isProgramPCCM: boolean, + novMcparRelease: boolean ) { let currentFormTemplate = formTemplateForReportType(reportType); @@ -84,6 +85,11 @@ export async function getOrCreateFormTemplate( currentFormTemplate = generatePCCMTemplate(currentFormTemplate); } + // if Nov MCPAR Release is not enabled, remove the fields from form template + if (!novMcparRelease) { + currentFormTemplate = handleTemplateForNovMcparRelease(currentFormTemplate); + } + const stringifiedTemplate = JSON.stringify(currentFormTemplate); const currentTemplateHash = createHash("md5") .update(stringifiedTemplate) @@ -317,3 +323,17 @@ const makePCCMTemplateModifications = (reportTemplate: ReportJson) => { } programTypeQuestion.props!.disabled = true; }; + +const handleTemplateForNovMcparRelease = (originalReportTemplate: any) => { + const reportTemplate = structuredClone(originalReportTemplate); + for (let route of reportTemplate.routes) { + if (route?.children) { + route.children = route.children.filter( + (childRoute: ReportRoute) => + childRoute.path !== + "/mcpar/state-level-indicators/prior-authorization" + ); + } + } + return reportTemplate; +}; diff --git a/services/app-api/utils/testing/setupJest.ts b/services/app-api/utils/testing/setupJest.ts index e9f47d0d1..6f6e733ac 100644 --- a/services/app-api/utils/testing/setupJest.ts +++ b/services/app-api/utils/testing/setupJest.ts @@ -86,6 +86,7 @@ export const mockDynamoDataCompleted: MCPARReportMetadata = { submissionCount: 0, locked: false, previousRevisions: [], + novMcparRelease: false, }; export const mockDynamoDataMLRComplete: MLRReportMetadata = { diff --git a/services/app-api/utils/types/formFields.ts b/services/app-api/utils/types/formFields.ts index 7ede450af..28122b2af 100644 --- a/services/app-api/utils/types/formFields.ts +++ b/services/app-api/utils/types/formFields.ts @@ -14,6 +14,7 @@ export const entityTypes = [ "sanctions", "program", "ilos", + "priorAuthorization", ] as const; /** diff --git a/services/app-api/utils/types/reportContext.ts b/services/app-api/utils/types/reportContext.ts index 6ee06bcce..fdaaf96ad 100644 --- a/services/app-api/utils/types/reportContext.ts +++ b/services/app-api/utils/types/reportContext.ts @@ -30,6 +30,7 @@ export interface ReportMetadataShape extends ReportKeys { copyFieldDataSourceId?: string; programIsPCCM?: Choice[]; previousRevisions: string[]; + novMcparRelease: boolean; } export interface ReportShape extends ReportMetadataShape { diff --git a/services/app-api/utils/types/reports.ts b/services/app-api/utils/types/reports.ts index 5a089db9d..090e74599 100644 --- a/services/app-api/utils/types/reports.ts +++ b/services/app-api/utils/types/reports.ts @@ -181,6 +181,7 @@ export interface MCPARReportMetadata extends ReportMetadata { dueDate: number; combinedData: boolean; programIsPCCM: Choice[]; + novMcparRelease: boolean; } // HELPER FUNCTIONS diff --git a/services/ui-src/src/components/modals/AddEditReportModal.tsx b/services/ui-src/src/components/modals/AddEditReportModal.tsx index 6ffaec712..fb9850e22 100644 --- a/services/ui-src/src/components/modals/AddEditReportModal.tsx +++ b/services/ui-src/src/components/modals/AddEditReportModal.tsx @@ -22,6 +22,7 @@ import { useStore, } from "utils"; import { States } from "../../constants"; +import { useFlags } from "launchdarkly-react-client-sdk"; export const AddEditReportModal = ({ activeState, @@ -38,6 +39,8 @@ export const AddEditReportModal = ({ const [submitting, setSubmitting] = useState(false); + const novMcparRelease = useFlags()?.novMcparRelease; + // get correct form const modalFormJsonMap: any = { MCPAR: mcparFormJson, @@ -104,6 +107,7 @@ export const AddEditReportModal = ({ locked: false, submissionCount: 0, previousRevisions: [], + novMcparRelease, }, fieldData: { reportingPeriodStartDate: convertDateUtcToEt(reportingPeriodStartDate), diff --git a/services/ui-src/src/types/reportContext.ts b/services/ui-src/src/types/reportContext.ts index a676cfa9c..23b77a0a1 100644 --- a/services/ui-src/src/types/reportContext.ts +++ b/services/ui-src/src/types/reportContext.ts @@ -30,6 +30,7 @@ export interface ReportMetadataShape extends ReportKeys { copyFieldDataSourceId?: string; programIsPCCM?: Choice[]; previousRevisions: string[]; + novMcparRelease?: boolean; } export interface ReportShape extends ReportMetadataShape { diff --git a/services/ui-src/src/types/reports.ts b/services/ui-src/src/types/reports.ts index 73baa396f..d09fd21de 100644 --- a/services/ui-src/src/types/reports.ts +++ b/services/ui-src/src/types/reports.ts @@ -182,6 +182,7 @@ export interface MCPARReportMetadata extends ReportMetadata { dueDate: number; combinedData: boolean; programIsPCCM: Choice[]; + novMcparRelease: boolean; } // HELPER FUNCTIONS From 8955a5601f0ca9511abd95a86145cf1c488055f7 Mon Sep 17 00:00:00 2001 From: Britt Date: Wed, 9 Oct 2024 08:48:04 -0600 Subject: [PATCH 12/35] Cmdct 4027 - patient access section under nov macpar release flag (#11874) --- services/app-api/forms/mcpar.json | 40 +++++++++++++++++++ .../utils/formTemplates/formTemplates.ts | 8 +++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/services/app-api/forms/mcpar.json b/services/app-api/forms/mcpar.json index b548951a8..1924521dd 100644 --- a/services/app-api/forms/mcpar.json +++ b/services/app-api/forms/mcpar.json @@ -2061,6 +2061,46 @@ } ] } + }, + { + "name": "XIV: Patient Access / API Usage", + "path": "/mcpar/program-level-indicators/patient-access-api-usage", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section C: Program-Level Indicators", + "subsection": "Topic XIV: Patient Access / API Usage", + "spreadsheet": "C1_Program_Set", + "alert": "Beginning June 2026, Indicators C1.XIV.1-2 must be completed. Submission of this data before June 2026 is optional; if you choose not to respond prior to June 2026, enter “N/A”." + } + }, + "form": { + "id": "cpaau", + "fields": [ + { + "id": "state_patientAccessNumberOfBeneficiariesOneDataTransfer", + "type": "number", + "validation": "number", + "props": { + "label": "C1.XIV.1 Number of unique beneficiaries with at least one data transfer", + "hint": "Indicate total number of unique beneficiaries covered by this contract (program) whose data were transferred via the Patient Access API to a health app designated by the beneficiary. Enter the numbers for this program for the previous calendar year. If you choose not to respond prior to June 2026, enter “N/A”.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "state_patientAcessNumberOfBeneficiariesMultipleDataTransfers", + "type": "number", + "validation": "number", + "props": { + "label": "C1.XIV.2 Number of unique beneficiaries with multiple data transfers", + "hint": "Indicate total number of unique beneficiaries covered by this contract (program) whose data are transferred more than once via the Patient Access API to a health application designated by the beneficiary. Enter the numbers for this program for the previous calendar year. If you choose not to respond prior to June 2026, enter “N/A”.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + } + ] + } } ] }, diff --git a/services/app-api/utils/formTemplates/formTemplates.ts b/services/app-api/utils/formTemplates/formTemplates.ts index 210f8d04d..5437b19ea 100644 --- a/services/app-api/utils/formTemplates/formTemplates.ts +++ b/services/app-api/utils/formTemplates/formTemplates.ts @@ -326,12 +326,16 @@ const makePCCMTemplateModifications = (reportTemplate: ReportJson) => { const handleTemplateForNovMcparRelease = (originalReportTemplate: any) => { const reportTemplate = structuredClone(originalReportTemplate); + const routesToIncludeInNovMcparRelease = [ + "/mcpar/state-level-indicators/prior-authorization", + "/mcpar/program-level-indicators/patient-access-api-usage", + ]; + // remove paths associated with the nov release flag for (let route of reportTemplate.routes) { if (route?.children) { route.children = route.children.filter( (childRoute: ReportRoute) => - childRoute.path !== - "/mcpar/state-level-indicators/prior-authorization" + !routesToIncludeInNovMcparRelease.includes(childRoute.path) ); } } From 2e145d7b89e7651b43787914daafa3d4397616e2 Mon Sep 17 00:00:00 2001 From: Britt Date: Wed, 16 Oct 2024 09:56:06 -0600 Subject: [PATCH 13/35] Section b updates (#11875) --- services/app-api/forms/mcpar.json | 121 +++++++++++------------------- 1 file changed, 42 insertions(+), 79 deletions(-) diff --git a/services/app-api/forms/mcpar.json b/services/app-api/forms/mcpar.json index 1924521dd..3477e282e 100644 --- a/services/app-api/forms/mcpar.json +++ b/services/app-api/forms/mcpar.json @@ -640,146 +640,109 @@ "section": "Section B: State-Level Indicators", "subsection": "Topic XIII: Prior Authorization", "spreadsheet": "B_State", - "alert": "Beginning June 2026, Indicators B.XIII.1a-b-2a-b must be completed. Submission of this data before June 2026 is optional; if you choose not to respond prior to June 2026, select “Not reporting data”." + "alert": "Beginning June 2026, Indicators B.XIII.1a-b–2a-b must be completed. Submission of this data before June 2026 is optional.", + "info": "If the state sets timeframes for plans to respond to Prior Authorization (PA) requests that are different than timeframes specified by Federal regulation at 42 CFR §438.210(d), please respond “Yes” to the following questions." } }, "form": { "id": "bpi", "fields": [ { - "id": "plan_independentTimeframeForResponseToStandardRequests", + "id": "plan_priorAuthorizationReporting", "type": "radio", "validation": "radio", "props": { - "label": "B.XIII.1a Does the state have an independent timeframe standard for plans to respond to standard PA requests?", - "hint": "If you choose not to respond prior to June 2026, select “Not reporting data”.", + "label": "Are you reporting data prior to June 2026?", "choices": [ { - "id": "2mwADJVRdZoOfIaf6kGxoQIgNMm", + "id": "2nAidHmpZ9aJQMy0Gk0Zmldri84", "label": "Not reporting data" }, { - "id": "2mwADLVa7emn5nMcosPVO2IMgZ8", - "label": "No" - }, - { - "id": "2mwADGTgdOXaD87gn2PO5BWPKU4", + "id": "2nAidDjXBvvkzLtaeYyE2RymW4G", "label": "Yes", "children": [ { - "id": "plan_daysAndHoursForPlansToRespondStandardRequests", + "id": "plan_daysForStateToRespondStandardRequests", "type": "radio", "validation": { "type": "radio", "nested": true, - "parentFieldName": "plan_independentTimeframeForResponseToStandardRequests" + "parentFieldName": "plan_priorAuthorizationReporting" }, "props": { - "label": "B.XIII.1b State timeframe for plans to respond to standard PA requests", + "label": "B.XIII.1a Different timeframe standard for the State’s standard PA requests", + "hint": "The federal timeframe standard for plans to respond to standard PA requests is not to exceed 14 days before 1/1/2026 and not to exceed 7 days on or after 1/1/2026. Does the state set a timeframe standard different from these federal standard?", "choices": [ + { + "id": "2nDBqTh66xki2Nr1qwb5VsDLNX2", + "label": "Not reporting data" + }, { "id": "2mwADFxQVwjgYKMq5rEMPF8nryi", - "label": "Number of days", - "children": [ - { - "id": "numberOfDays", - "type": "number", - "validation": { - "type": "number", - "nested": true, - "mask": "comma-separated", - "decimalPlacesToRoundTo": 0, - "parentFieldName": "plan_daysAndHoursForPlansToRespondStandardRequests" - } - } - ] + "label": "No" }, { - "id": "2mwADIT0tTFJTHwbuB9lcuVdkei", - "label": "Number of hours", + "id": "2nAidFCWvENhYZvzLt3DxJWOqtx", + "label": "Yes", "children": [ { - "id": "plan_numberOfHours", + "id": "standardResponseTimeNumberOfDays", "type": "number", "validation": { "type": "number", "nested": true, "mask": "comma-separated", "decimalPlacesToRoundTo": 0, - "parentFieldName": "plan_daysAndHoursForPlansToRespondStandardRequests" + "parentFieldName": "plan_daysForStateToRespondStandardRequests" + }, + "props": { + "label": "B.XIII.1b Timeframe for State’s standard PA requests", + "hint": "Describe the state timeframe for plans to respond to standard PA requests in number of days." } } ] } ] } - } - ] - } - ] - } - }, - { - "id": "plan_independentTimeframeForResponseToExpeditedRequests", - "type": "radio", - "validation": "radio", - "props": { - "label": "B.XIII.2a Does the state have an independent timeframe standard for plans to respond to expedited PA requests?", - "hint": "If you choose not to respond prior to June 2026, select “Not reporting data”.", - "choices": [ - { - "id": "UG7uunqq5UCtUq1is3iyiw", - "label": "Not reporting data" - }, - { - "id": "3DGAqqnOBE2kwKVFMxUt3A", - "label": "No" - }, - { - "id": "jlIZKSPaf0GSVGmJbRUBzg", - "label": "Yes", - "children": [ + }, { - "id": "plan_daysAndHoursForPlansToRespondExpeditedRequests", + "id": "plan_hoursForStateToRespondExpeditedRequests", "type": "radio", "validation": { "type": "radio", "nested": true, - "parentFieldName": "plan_independentTimeframeForResponseToExpeditedRequests" + "parentFieldName": "plan_priorAuthorizationReporting" }, "props": { - "label": "B.XIII.1b State timeframe for plans to respond to expedited PA requests", + "label": "B.XIII.2a Different timeframe standard for the State’s expedited PA requests", + "hint": "The federal timeframe standard for expedited PA requests is not to exceed 72 hours. Does the state set a timeframe standard different from this? If you choose not to respond prior to June 2026, select “Not reporting data.”", "choices": [ { - "id": "2mwADFxQVwjgYKMq5rEMPF8nryi", - "label": "Number of days", - "children": [ - { - "id": "plan_numberOfDaysExpedited", - "type": "number", - "validation": { - "type": "number", - "nested": true, - "mask": "comma-separated", - "decimalPlacesToRoundTo": 0, - "parentFieldName": "plan_daysAndHoursForPlansToRespondExpeditedRequests" - } - } - ] + "id": "2nDBqU3GnljuoCyLDVyoXwqZSZO", + "label": "Not reporting data" + }, + { + "id": "2nAidGQyKBhG1gxK1SuXbBjJh0V", + "label": "No" }, { - "id": "2mwADIT0tTFJTHwbuB9lcuVdkei", - "label": "Number of hours", + "id": "2nAidJFG47lnFfJsNJS2tU7d4pp", + "label": "Yes", "children": [ { - "id": "numberOfHours", + "id": "expeditedNumberOfHours", "type": "number", "validation": { "type": "number", "nested": true, "mask": "comma-separated", "decimalPlacesToRoundTo": 0, - "parentFieldName": "plan_daysAndHoursForPlansToRespondExpeditedRequests" + "parentFieldName": "plan_hoursForStateToRespondExpeditedRequests" + }, + "props": { + "label": "B.XIII.2b Timeframe for State’s expedited PA requests", + "hint": "Describe the state timeframe for plans to respond to expedited PA requests, in hours." } } ] From 31fc9f7291f6013873d05bb0ee12e28a8a56f63b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karla=20Valc=C3=A1rcel=20Mart=C3=ADnez?= <99458559+karla-vm@users.noreply.github.com> Date: Wed, 16 Oct 2024 15:04:54 -0400 Subject: [PATCH 14/35] CMDCT-4028: Prior Authorization Section D (#11867) --- services/app-api/forms/mcpar.json | 223 +- .../utils/formTemplates/formTemplates.ts | 10 +- .../mcpar-complete.result.test.json | 3 +- .../completionStatus/mcpar-template.test.json | 474 +- services/app-api/utils/types/reportContext.ts | 2 +- .../utils/validation/completionStatus.test.ts | 63 + .../utils/validation/completionStatus.ts | 11 +- .../src/components/fields/ChoiceListField.tsx | 4 + .../components/modals/AddEditReportModal.tsx | 2 +- .../reports/DrawerReportPage.test.tsx | 4 +- .../components/reports/DrawerReportPage.tsx | 87 +- services/ui-src/src/types/reports.ts | 2 +- .../src/utils/autosave/autosave.test.ts | 44 + .../ui-src/src/utils/autosave/autosave.ts | 32 +- .../utils/forms/priorAuthorization.test.ts | 32 + .../src/utils/forms/priorAuthorization.ts | 34 + services/ui-src/src/utils/index.ts | 1 + .../ui-src/src/utils/testing/mockReport.tsx | 6 + tests/cypress/e2e/mcpar/form.cy.js | 2 +- tests/cypress/e2e/mcpar/mcpar-copy.json | 4330 +++++++++++++++++ 20 files changed, 5274 insertions(+), 92 deletions(-) create mode 100644 services/ui-src/src/utils/forms/priorAuthorization.test.ts create mode 100644 services/ui-src/src/utils/forms/priorAuthorization.ts create mode 100644 tests/cypress/e2e/mcpar/mcpar-copy.json diff --git a/services/app-api/forms/mcpar.json b/services/app-api/forms/mcpar.json index 3477e282e..5880b6ac2 100644 --- a/services/app-api/forms/mcpar.json +++ b/services/app-api/forms/mcpar.json @@ -638,7 +638,7 @@ "verbiage": { "intro": { "section": "Section B: State-Level Indicators", - "subsection": "Topic XIII: Prior Authorization", + "subsection": "Topic XIII. Prior Authorization", "spreadsheet": "B_State", "alert": "Beginning June 2026, Indicators B.XIII.1a-b–2a-b must be completed. Submission of this data before June 2026 is optional.", "info": "If the state sets timeframes for plans to respond to Prior Authorization (PA) requests that are different than timeframes specified by Federal regulation at 42 CFR §438.210(d), please respond “Yes” to the following questions." @@ -4301,6 +4301,227 @@ } ] } + }, + { + "name": "XIII: Prior Authorization", + "path": "/mcpar/plan-level-indicators/prior-authorization", + "pageType": "drawer", + "entityType": "plans", + "verbiage": { + "intro": { + "section": "Section D: Plan-Level Indicators", + "subsection": "Topic XIII: Prior Authorization", + "spreadsheet": "D1_Plan_Set", + "alert": "Beginning June 2026, Indicators D1.XIII.1-14 must be completed. Submission of this data before June 2026 is optional; if you choose not to response prior to June 2026, select \"Not reporting data\"." + }, + "dashboardTitle": "Report on prior authorization for each plan", + "drawerTitle": "Prior authorization (PA) for ", + "missingEntityMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing plans. You won't be able to complete this section until you've added all the managed care plans that serve enrollees in the program. " + }, + { + "type": "internalLink", + "content": "Add Plans", + "props": { + "to": "/mcpar/program-information/add-plans" + } + }, + { + "type": "html", + "content": "." + } + ] + } + ] + }, + "form": { + "id": "pa", + "fields": [ + { + "id": "reportingDataPriorToJune2026", + "type": "radio", + "validation": "radio", + "props": { + "label": "Are you reporting data prior to June 2026?", + "hint": "If \"Yes\", please complete the following questions under each plan.", + "choices": [ + { + "id": "IELJsTZxQkFDkTMzWQkKocwb", + "label": "Not reporting data" + }, + { + "id": "bByTWRIwTSTBncyZRUiibagB", + "label": "Yes" + } + ] + } + } + ] + }, + "drawerForm": { + "id": "dpa", + "fields": [ + { + "id": "D1.XIII.1Header", + "type": "sectionHeader", + "props": { + "content": "Total count of PA requests logged in by the plan during the prior calendar year" + } + }, + { + "id": "plan_totalStandardPARequests", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.1 Total standard PA requests", + "hint": "Enter the total number of standard PA requests logged by the plan during the prior calendar year. If you choose not to respond prior to June 2026, enter \"NR\" for not reporting." + } + }, + { + "id": "plan_totalExpeditedPARequests", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.2 Total expedited PA requests", + "hint": "Enter the total number of expedited PA requests logged by the plan during the prior calendar year. If you choose not to respond prior to June 2026, enter \"NR\" for not reporting." + } + }, + { + "id": "plan_totalStandardAndExpeditedPARequests", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.3 Total standard and expedited PA requests", + "hint": "Enter the total number of standard and expedited PA requests logged by the plan during the prior calendar year. If you choose not to respond prior to June 2026, enter \"NR\" for not reporting." + } + }, + { + "id": "D1.XIII.4Header", + "type": "sectionHeader", + "props": { + "divider": "top", + "content": "Of the total standard PA requests" + } + }, + { + "id": "plan_percentageOfStandardPARequestsApproved", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.4 Percentage of standard PA requests that were approved", + "hint": "Enter the percentage of the total standard PA requests, as reported in D1.XIII.1, that were approved. If you choose not to respond prior to June 2026, enter \"NR\" for not reporting.", + "mask": "percentage" + } + }, + { + "id": "plan_percentageOfStandardPARequestsDenied", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.5 Percentage of standard PA requests that were denied", + "hint": "Enter the percentage of the total standard PA requests, as reported in D1.XIII.1, that were denied. If you choose not to respond prior to June 2026, enter \"NR\" for not reporting.", + "mask": "percentage" + } + }, + { + "id": "plan_percentageOfStandardPARequestsApprovedAfterAppeal", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.6 Percentage of standard PA requests that were approved after appeal", + "hint": "Enter the percentage of the total standard PA requests, as reported in D1.XIII.1, that were approved after appeal, aggregated for all items and services as defined in § 438.210(f)(4). If you choose not to respond prior to June 2026, enter \"NR\" for not reporting.", + "mask": "percentage" + } + }, + { + "id": "plan_averageTimeToDecisionForStandardPAs", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.7 Average time to decision for standard PAs", + "hint": "For standard PAs, as reported in D1.XIII.1, enter the average number of days that elapsed between submission of request and determination by the MCO, PIHP or PAHP. If you choose not to respond prior to June 2026, enter \"NR\" for not reporting." + } + }, + { + "id": "plan_medianTimeThatElapsedForDecisionOnStandardPAs", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.8 Median time that elapsed for decision on standard PAs", + "hint": "For standard PAs, as reported in D1.XIII.1, enter the median number of days that elapsed between submission of request and decision by the MCO, PIHP or PAHP. If you choose not to respond prior to June 2026, enter \"NR\" for not reporting." + } + }, + { + "id": "D1.XIII.9Header", + "type": "sectionHeader", + "props": { + "divider": "top", + "content": "Of the total expedited PA requests" + } + }, + { + "id": "plan_percentageOfExpeditedPARequestsApproved", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.9 Percentage of expedited PA requests that were approved", + "hint": "Of the total expedited PA requests, as reported in D1.XIII.2, enter the percentage that were approved. If you choose not to respond prior to June 2026, enter \"NR\" for not reporting.", + "mask": "percentage" + } + }, + { + "id": "plan_percentageOfExpeditedPARequestsDenied", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.10 Percentage of expedited PA requests that were denied", + "hint": "Of the total expedited PA requests, as reported in D1.XIII.2, enter the percentage that were denied. If you choose not to respond prior to June 2026, enter \"NR\" for not reporting.", + "mask": "percentage" + } + }, + { + "id": "plan_averageTimeToDecisionForExpeditedPAs", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.11 Average time to decision for expedited PAs", + "hint": "Of the total expedited PA requests, as reported in D1.XIII.2, enter the average number of hours elapsed between submission of request and decision by MCO, PIHP or PAHP. If you choose not to respond prior to June 2026, enter \"NR\" for not reporting." + } + }, + { + "id": "plan_medianTimeThatElapsedForDecisionOnExpeditedPAs", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.12 Median time that elapsed for decision on expedited PAs", + "hint": "Of the total expedited PA requests, as reported in D1.XIII.2, enter the median number of hours elapsed between submission of request and decision bt MCO, PIHP or PAHP, as defined in § 438.210(f)(9). If you choose not to respond prior to June 2026, enter \"NR\" for not reporting." + } + }, + { + "id": "D1.XIII.13Header", + "type": "sectionHeader", + "props": { + "divider": "top", + "content": "Of total PA requests" + } + }, + { + "id": "plan_percentageOfTotalPARequestsApprovedWithExtendedTimeframe", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.13 Percentage of total PA requests approved with extended timeframe", + "hint": "Of the total PA requests, as reported in D1.XIII.3, enter the percentage of requests for which the timeframe for review was extended and the request was approved. If you choose not to respond prior to June 2026, enter \"NR\" for not reporting.", + "mask": "percentage" + } + } + ] + } } ] }, diff --git a/services/app-api/utils/formTemplates/formTemplates.ts b/services/app-api/utils/formTemplates/formTemplates.ts index 5437b19ea..7894da4ca 100644 --- a/services/app-api/utils/formTemplates/formTemplates.ts +++ b/services/app-api/utils/formTemplates/formTemplates.ts @@ -77,7 +77,7 @@ export async function getOrCreateFormTemplate( reportBucket: string, reportType: ReportType, isProgramPCCM: boolean, - novMcparRelease: boolean + novMcparRelease?: boolean ) { let currentFormTemplate = formTemplateForReportType(reportType); @@ -326,16 +326,16 @@ const makePCCMTemplateModifications = (reportTemplate: ReportJson) => { const handleTemplateForNovMcparRelease = (originalReportTemplate: any) => { const reportTemplate = structuredClone(originalReportTemplate); - const routesToIncludeInNovMcparRelease = [ + const routesToFilter = [ "/mcpar/state-level-indicators/prior-authorization", + "/mcpar/plan-level-indicators/prior-authorization", "/mcpar/program-level-indicators/patient-access-api-usage", ]; - // remove paths associated with the nov release flag + for (let route of reportTemplate.routes) { if (route?.children) { route.children = route.children.filter( - (childRoute: ReportRoute) => - !routesToIncludeInNovMcparRelease.includes(childRoute.path) + (childRoute: ReportRoute) => !routesToFilter.includes(childRoute.path) ); } } diff --git a/services/app-api/utils/testing/fixtures/completionStatus/mcpar-complete.result.test.json b/services/app-api/utils/testing/fixtures/completionStatus/mcpar-complete.result.test.json index faffcf8c1..a6368ed37 100644 --- a/services/app-api/utils/testing/fixtures/completionStatus/mcpar-complete.result.test.json +++ b/services/app-api/utils/testing/fixtures/completionStatus/mcpar-complete.result.test.json @@ -35,8 +35,7 @@ }, "/mcpar/plan-level-indicators/quality-measures": true, "/mcpar/plan-level-indicators/sanctions": true, - "/mcpar/plan-level-indicators/program-integrity": true, - "/mcpar/plan-level-indicators/ilos": true + "/mcpar/plan-level-indicators/program-integrity": true }, "/mcpar/bss-entity-indicators": true } diff --git a/services/app-api/utils/testing/fixtures/completionStatus/mcpar-template.test.json b/services/app-api/utils/testing/fixtures/completionStatus/mcpar-template.test.json index 36956d4a4..4659fb402 100644 --- a/services/app-api/utils/testing/fixtures/completionStatus/mcpar-template.test.json +++ b/services/app-api/utils/testing/fixtures/completionStatus/mcpar-template.test.json @@ -230,7 +230,7 @@ "verbiage": { "intro": { "section": "Section A: Program Information", - "subsection": "Add In Lieu of Services and Settings", + "subsection": "Add In Lieu of Services and Settings (A.9)", "info": [ { "type": "p", @@ -1761,68 +1761,64 @@ "props": { "label": "C1.XII.10b In the last analysis(es) conducted, describe all deficiencies identified." } - } - ] - }, - { - "id": "id5YVp8cXSTlUNX3dKXSqxqa", - "label": "No" - } - ] - } - }, - { - "id": "program_haveTheseDeficienciesBeenResolvedForAllPlans", - "type": "radio", - "validation": { - "type": "radio", - "nested": true, - "parentFieldName": "program_doesThisProgramIncludeMCOs", - "parentOptionId": "A4uFU0YyU9useo3DsWjnH264" - }, - "props": { - "label": "C1.XII.11a As of the end of this reporting period, have these deficiencies been resolved for all plans?", - "choices": [ - { - "id": "sLd8M1tgf9dpVIZWRYEXvdBe", - "label": "Yes" - }, - { - "id": "DCDJH4S1JHF7G5bZUMxOVMTe", - "label": "No", - "children": [ + }, { - "id": "reasonsForNoDeficiencyResolutionsForAllPlans", - "type": "checkbox", + "id": "program_haveTheseDeficienciesBeenResolvedForAllPlans", + "type": "radio", "validation": { - "type": "checkbox", + "type": "radio", "nested": true, - "parentFieldName": "program_haveTheseDeficienciesBeenResolvedForAllPlans", - "parentOptionId": "DCDJH4S1JHF7G5bZUMxOVMTe" + "parentFieldName": "program_doesThisProgramIncludeMCOs", + "parentOptionId": "A4uFU0YyU9useo3DsWjnH264" }, "props": { - "label": "C1.XII.11b If deficiencies have not been resolved, select all that apply.", + "label": "C1.XII.11a As of the end of this reporting period, have these deficiencies been resolved for all plans?", "choices": [ { - "id": "bEJDkUR6l4zwIgj3aLDd7TZ9", - "label": "Noncompliant limits are still being applied in operations, affecting some providers and/or enrollees." + "id": "sLd8M1tgf9dpVIZWRYEXvdBe", + "label": "Yes" }, { - "id": "E63ZYRXBmOocAEUS9JA1PkNB", - "label": "Non-compliance is related to updated parity documentation not yet submitted to CMS." - }, - { - "id": "NXbySoHbH3AvbOIvIUREAPsC", - "label": "Other, specify", + "id": "DCDJH4S1JHF7G5bZUMxOVMTe", + "label": "No", "children": [ { - "id": "reasonsForNoDeficiencyResolutionsForAllPlans-otherText", - "type": "textarea", + "id": "reasonsForNoDeficiencyResolutionsForAllPlans", + "type": "checkbox", "validation": { - "type": "text", + "type": "checkbox", "nested": true, - "parentFieldName": "reasonsForNoDeficiencyResolutionsForAllPlans", - "parentOptionId": "NXbySoHbH3AvbOIvIUREAPsC" + "parentFieldName": "program_haveTheseDeficienciesBeenResolvedForAllPlans", + "parentOptionId": "DCDJH4S1JHF7G5bZUMxOVMTe" + }, + "props": { + "label": "C1.XII.11b If deficiencies have not been resolved, select all that apply.", + "choices": [ + { + "id": "bEJDkUR6l4zwIgj3aLDd7TZ9", + "label": "Noncompliant limits are still being applied in operations, affecting some providers and/or enrollees." + }, + { + "id": "E63ZYRXBmOocAEUS9JA1PkNB", + "label": "Non-compliance is related to updated parity documentation not yet submitted to CMS." + }, + { + "id": "NXbySoHbH3AvbOIvIUREAPsC", + "label": "Other, specify", + "children": [ + { + "id": "reasonsForNoDeficiencyResolutionsForAllPlans-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "reasonsForNoDeficiencyResolutionsForAllPlans", + "parentOptionId": "NXbySoHbH3AvbOIvIUREAPsC" + } + } + ] + } + ] } } ] @@ -1831,6 +1827,10 @@ } } ] + }, + { + "id": "id5YVp8cXSTlUNX3dKXSqxqa", + "label": "No" } ] } @@ -3974,7 +3974,7 @@ "info": [ { "type": "p", - "content": "If ILOSs are authorized for this program, report for each plan: if the plan offered any ILOS; if “Yes”, which ILOS the plan offered; and utilization data for each ILOS offered. If the plan offered an ILOS during the reporting period but there was no utilization, check \"Yes\" that the ILOS was offered but enter \"0\" for utilization." + "content": "If ILOSs are authorized for this program, report for each plan: if the plan offered any ILOS; if “Yes”, which ILOS the plan offered; and utilization data for each ILOS offered. If the plan offered an ILOS during the reporting period but there was no utilization, check that the ILOS was offered but enter \"0\" for utilization." } ] }, @@ -4134,6 +4134,378 @@ } ] } + }, + { + "name": "XIII: Prior Authorization", + "path": "/mcpar/plan-level-indicators/prior-authorization", + "pageType": "drawer", + "entityType": "plans", + "verbiage": { + "intro": { + "section": "Section D: Plan-Level Indicators", + "subsection": "Topic XIII: Prior Authorization", + "spreadsheet": "D1_Plan_Set", + "alert": "Beginning June 2026, Indicators D1.XIII.1-14 must be completed. Submission of this data before June 2026 is optional; if you choose not to response prior to June 2026, enter \"N/A\"." + }, + "dashboardTitle": "Report on prior authorization for each plan", + "drawerTitle": "Prior authorization (PA) for ", + "missingEntityMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing plans. You won't be able to complete this section until you've added all the managed care plans that serve enrollees in the program. " + }, + { + "type": "internalLink", + "content": "Add Plans", + "props": { + "to": "/mcpar/program-information/add-plans" + } + }, + { + "type": "html", + "content": "." + } + ] + } + ] + }, + "form": { + "id": "pa", + "fields": [ + { + "id": "reportingDataPriorToJune2026", + "type": "radio", + "validation": "radio", + "props": { + "label": "Are you reporting data prior to June 2026?", + "hint": "If \"Yes\", please complete the following questions under each plan.", + "choices": [ + { + "id": "IELJsTZxQkFDkTMzWQkKocwb", + "label": "Not reporting data" + }, + { + "id": "bByTWRIwTSTBncyZRUiibagB", + "label": "Yes" + } + ] + } + } + ] + }, + "drawerForm": { + "id": "dpa", + "fields": [ + { + "id": "D1.XIII.1Header", + "type": "sectionHeader", + "props": { + "content": "Total count of PA requests logged in by the plan during the prior calendar year" + } + }, + { + "id": "plan_totalNumberOfStandardPARequests", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.1 Total number of standard PA requests", + "hint": "Logged by the plan during prior calendar year." + } + }, + { + "id": "plan_totalNumberOfExpeditedPARequests", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.2 Total number of expedited PA requests", + "hint": "Logged by the plan during prior calendar year." + } + }, + { + "id": "plan_totalNumberOfStandardAndExpeditedPARequests", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.3 Total number of standard and expedited PA requests", + "hint": "Logged by the plan during prior calendar year." + } + }, + { + "id": "D1.XIII.4Header", + "type": "sectionHeader", + "props": { + "divider": "top", + "content": "Of the total standard PA requests" + } + }, + { + "id": "plan_percentageOfStandardPARequestsApproved", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.4 Percentage of standard PA requests that were approved", + "hint": "Of the total standard PA requests, aggregated for all items and services. As defined in § 438.210(f)(2).", + "mask": "percentage" + } + }, + { + "id": "plan_percentageOfStandardPARequestsDenied", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.5 Percentage of standard PA requests that were denied", + "hint": "Of the total standard PA requests, aggregated for all items and services. As defined in § 438.210(f)(3).", + "mask": "percentage" + } + }, + { + "id": "plan_percentageOfStandardPARequestsApprovedAfterAppeal", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.6 Percentage of standard PA requests that were approved after appeal", + "hint": "Of the total standard PA requests, aggregated for all items and services. As defined in § 438.210(f)(4).", + "mask": "percentage" + } + }, + { + "id": "plan_averageTimeElapsedBetweenSubmissionOfRequestAndDeterminationForStandardPAs", + "type": "radio", + "validation": "radio", + "props": { + "label": "D1.XIII.7 Average time elapsed between submission of request and determination by the MCO, PIHP or PAHP, for standard PAs", + "hint": "Enter a number of days or hours, aggregated. As defined in § 438.210(f)(8).", + "choices": [ + { + "id": "Sw6yO5BMWLjWNFGWHjaPOyvk", + "label": "Not reporting data" + }, + { + "id": "oGf7z8KzqDhWEOaNxOsCP0N9", + "label": "Number of days", + "children": [ + { + "id": "plan_averageTimeElapsedBetweenSubmissionOfRequestAndDeterminationForStandardPAs_oGf7z8KzqDhWEOaNxOsCP0N9", + "type": "text", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "plan_averageTimeElapsedBetweenSubmissionOfRequestAndDeterminationForStandardPAs", + "parentOptionId": "oGf7z8KzqDhWEOaNxOsCP0N9" + } + } + ] + }, + { + "id": "XWUBmmjb4PNscoGGfZCkQtGx", + "label": "Number of hours", + "children": [ + { + "id": "plan_averageTimeElapsedBetweenSubmissionOfRequestAndDeterminationForStandardPAs_XWUBmmjb4PNscoGGfZCkQtGx", + "type": "text", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "plan_averageTimeElapsedBetweenSubmissionOfRequestAndDeterminationForStandardPAs", + "parentOptionId": "XWUBmmjb4PNscoGGfZCkQtGx" + } + } + ] + } + ] + } + }, + { + "id": "plan_medianTimeElapsedBetweenSubmissionOfRequestAndDeterminationForStandardPAs", + "type": "radio", + "validation": "radio", + "props": { + "label": "D1.XIII.8 Median time elapsed between submission of request and determination by the MCO, PIHP or PAHP, for standard PAs", + "hint": "Enter a number of days or hours, aggregated. As defined in § 438.210(f)(8).", + "choices": [ + { + "id": "dUxvTGk5UfoXkcaHJ5V8h4Ow", + "label": "Not reporting data" + }, + { + "id": "CeAnSBAH4kBsybe2kkyS6oFj", + "label": "Number of days", + "children": [ + { + "id": "plan_medianTimeElapsedBetweenSubmissionOfRequestAndDeterminationForStandardPAs_CeAnSBAH4kBsybe2kkyS6oFj", + "type": "text", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "plan_medianTimeElapsedBetweenSubmissionOfRequestAndDeterminationForStandardPAs", + "parentOptionId": "CeAnSBAH4kBsybe2kkyS6oFj" + } + } + ] + }, + { + "id": "K0RcySVSGrlITMpnLfRiqAJj", + "label": "Number of hours", + "children": [ + { + "id": "plan_medianTimeElapsedBetweenSubmissionOfRequestAndDeterminationForStandardPAs_K0RcySVSGrlITMpnLfRiqAJj", + "type": "text", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "plan_medianTimeElapsedBetweenSubmissionOfRequestAndDeterminationForStandardPAs", + "parentOptionId": "K0RcySVSGrlITMpnLfRiqAJj" + } + } + ] + } + ] + } + }, + { + "id": "D1.XIII.9Header", + "type": "sectionHeader", + "props": { + "divider": "top", + "content": "Of the total expedited PA requests" + } + }, + { + "id": "plan_percentageOfExpeditedPARequestsApproved", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.9 Percentage of expedited PA requests that were approved", + "hint": "Of the total expedited PA requests, aggregated for all items and services. As defined in § 438.210(f)(6).", + "mask": "percentage" + } + }, + { + "id": "plan_percentageOfExpeditedPARequestsDenied", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.10 Percentage of expedited PA requests that were denied", + "hint": "Of the total expedited PA requests, aggregated for all items and services. As defined in § 438.210(f)(7).", + "mask": "percentage" + } + }, + { + "id": "plan_averageTimeElapsedBetweenSubmissionOfRequestAndDeterminationForExpeditedPAs", + "type": "radio", + "validation": "radio", + "props": { + "label": "D1.XIII.11 Average time elapsed between submission of request and determination by the MCO, PIHP or PAHP, for expedited PAs", + "hint": "Enter a number of days or hours, aggregated. As defined in § 438.210(f)(9).", + "choices": [ + { + "id": "R5MHFOJ2dFebuCUsaYpDW30l", + "label": "Not reporting data" + }, + { + "id": "2dYVC0NQuDRrjBoH0GTX93fi", + "label": "Number of days", + "children": [ + { + "id": "plan_averageTimeElapsedBetweenSubmissionOfRequestAndDeterminationForExpeditedPAs_2dYVC0NQuDRrjBoH0GTX93fi", + "type": "text", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "plan_averageTimeElapsedBetweenSubmissionOfRequestAndDeterminationForExpeditedPAs", + "parentOptionId": "2dYVC0NQuDRrjBoH0GTX93fi" + } + } + ] + }, + { + "id": "kGfRc6M6HYMpC62cqoR2Vtpi", + "label": "Number of hours", + "children": [ + { + "id": "plan_averageTimeElapsedBetweenSubmissionOfRequestAndDeterminationForExpeditedPAs_kGfRc6M6HYMpC62cqoR2Vtpi", + "type": "text", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "plan_averageTimeElapsedBetweenSubmissionOfRequestAndDeterminationForExpeditedPAs", + "parentOptionId": "kGfRc6M6HYMpC62cqoR2Vtpi" + } + } + ] + } + ] + } + }, + { + "id": "plan_medianTimeElapsedBetweenSubmissionOfRequestAndDeterminationForExpeditedPAs", + "type": "radio", + "validation": "radio", + "props": { + "label": "D1.XIII.12 Median time elapsed between submission of request and determination by the MCO, PIHP or PAHP, for expedited PAs", + "hint": "Enter a number of days or hours, aggregated. As defined in § 438.210(f)(9).", + "choices": [ + { + "id": "n6p5HvVjxjBFvYW03v52PwsY", + "label": "Not reporting data" + }, + { + "id": "8voYlfTx4ICkdQei5ng5QODK", + "label": "Number of days", + "children": [ + { + "id": "plan_medianTimeElapsedBetweenSubmissionOfRequestAndDeterminationForExpeditedPAs_8voYlfTx4ICkdQei5ng5QODK", + "type": "text", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "plan_medianTimeElapsedBetweenSubmissionOfRequestAndDeterminationForExpeditedPAs", + "parentOptionId": "8voYlfTx4ICkdQei5ng5QODK" + } + } + ] + }, + { + "id": "pNaOYMKwZtpLLU6DRxTtXOv7", + "label": "Number of hours", + "children": [ + { + "id": "plan_medianTimeElapsedBetweenSubmissionOfRequestAndDeterminationForExpeditedPAs_pNaOYMKwZtpLLU6DRxTtXOv7", + "type": "text", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "plan_medianTimeElapsedBetweenSubmissionOfRequestAndDeterminationForExpeditedPAs", + "parentOptionId": "pNaOYMKwZtpLLU6DRxTtXOv7" + } + } + ] + } + ] + } + }, + { + "id": "D1.XIII.13Header", + "type": "sectionHeader", + "props": { + "divider": "top", + "content": "Of the total PA requests" + } + }, + { + "id": "plan_percentageOfPARequestsExtendedReviewTimeframeAndApproved", + "type": "number", + "validation": "number", + "props": { + "label": "D1.XIII.13 Percentage of prior authorization requests for which the timeframe for review was extended, and the request was approved", + "mask": "percentage" + } + } + ] + } } ] }, diff --git a/services/app-api/utils/types/reportContext.ts b/services/app-api/utils/types/reportContext.ts index fdaaf96ad..69dd52e41 100644 --- a/services/app-api/utils/types/reportContext.ts +++ b/services/app-api/utils/types/reportContext.ts @@ -30,7 +30,7 @@ export interface ReportMetadataShape extends ReportKeys { copyFieldDataSourceId?: string; programIsPCCM?: Choice[]; previousRevisions: string[]; - novMcparRelease: boolean; + novMcparRelease?: boolean; } export interface ReportShape extends ReportMetadataShape { diff --git a/services/app-api/utils/validation/completionStatus.test.ts b/services/app-api/utils/validation/completionStatus.test.ts index fe438db90..881b3b98b 100644 --- a/services/app-api/utils/validation/completionStatus.test.ts +++ b/services/app-api/utils/validation/completionStatus.test.ts @@ -174,6 +174,69 @@ describe("Completion Status Tests", () => { ); expect(result).toMatchObject({}); }); + + test("If user has not added an ILOS, they're not required to complete that section", async () => { + const testData = {}; + const formTemplate = { + routes: [ + { + name: "D: Plan-Level Indicators", + path: "/mcpar/plan-level-indicators", + children: [ + { + name: "ILOS", + path: "/mcpar/plan-level-indicators/ilos", + entityType: "plans", + pageType: "drawer", + drawerForm: { + id: "dpa", + fields: [], + }, + }, + ], + }, + ], + }; + const result = await calculateCompletionStatus(testData, formTemplate); + expect(result).toMatchObject({}); + }); + + test("If user is not reporting Prior Authorization data, they're not required to complete that section", async () => { + const testData = { + reportingDataPriorToJune2026: [ + { + key: "mock-key", + value: "Not reporting data", + }, + ], + }; + const formTemplate = { + routes: [ + { + name: "D: Plan-Level Indicators", + path: "/mcpar/plan-level-indicators", + children: [ + { + name: "Prior Authorization", + path: "/mcpar/plan-level-indicators/prior-authorization", + entityType: "plans", + pageType: "drawer", + form: { + id: "pa", + fields: [], + }, + drawerForm: { + id: "dpa", + fields: [], + }, + }, + ], + }, + ], + }; + const result = await calculateCompletionStatus(testData, formTemplate); + expect(result).toMatchObject({}); + }); }); describe("Fixture Testing", () => { diff --git a/services/app-api/utils/validation/completionStatus.ts b/services/app-api/utils/validation/completionStatus.ts index 4e8a15c65..3d6dc6603 100644 --- a/services/app-api/utils/validation/completionStatus.ts +++ b/services/app-api/utils/validation/completionStatus.ts @@ -176,7 +176,16 @@ export const calculateCompletionStatus = async ( !fieldData["ilos"]?.length ) { routeCompletion = { [route.path]: true }; - break; + return; + } + // handle Prior Authorization case: if the user is not reporting prior to June 2026, this section is not required + if ( + route.path === "/mcpar/plan-level-indicators/prior-authorization" && + fieldData["reportingDataPriorToJune2026"]?.[0].value === + "Not reporting data" + ) { + routeCompletion = { [route.path]: true }; + return; } routeCompletion = { [route.path]: await calculateEntityCompletion( diff --git a/services/ui-src/src/components/fields/ChoiceListField.tsx b/services/ui-src/src/components/fields/ChoiceListField.tsx index af06e900f..6843e3dce 100644 --- a/services/ui-src/src/components/fields/ChoiceListField.tsx +++ b/services/ui-src/src/components/fields/ChoiceListField.tsx @@ -1,5 +1,6 @@ import { useContext, useEffect, useState } from "react"; import { FieldValues, useFormContext, UseFormReturn } from "react-hook-form"; + // components import { ChoiceList as CmsdsChoiceList } from "@cmsgov/design-system"; import { Box } from "@chakra-ui/react"; @@ -41,6 +42,7 @@ export const ChoiceListField = ({ const defaultValue: Choice[] = []; const [displayValue, setDisplayValue] = useState(defaultValue); + // context const { updateReport } = useContext(ReportContext); const { updateEntities } = useContext(EntityContext); @@ -233,9 +235,11 @@ export const ChoiceListField = ({ ...fields, ...getNestedChildFields(choicesWithNestedEnabledFields, form), ]; + const reportArgs = { id: report?.id, reportType: report?.reportType, + fieldData: report?.fieldData, updateReport, }; const user = { userName: full_name, state }; diff --git a/services/ui-src/src/components/modals/AddEditReportModal.tsx b/services/ui-src/src/components/modals/AddEditReportModal.tsx index fb9850e22..1f340d4d5 100644 --- a/services/ui-src/src/components/modals/AddEditReportModal.tsx +++ b/services/ui-src/src/components/modals/AddEditReportModal.tsx @@ -1,4 +1,5 @@ import { useContext, useState, useEffect } from "react"; +import { useFlags } from "launchdarkly-react-client-sdk"; // components import { Form, Modal, ReportContext } from "components"; import { Spinner } from "@chakra-ui/react"; @@ -22,7 +23,6 @@ import { useStore, } from "utils"; import { States } from "../../constants"; -import { useFlags } from "launchdarkly-react-client-sdk"; export const AddEditReportModal = ({ activeState, diff --git a/services/ui-src/src/components/reports/DrawerReportPage.test.tsx b/services/ui-src/src/components/reports/DrawerReportPage.test.tsx index 10c466b8e..7d1292a37 100644 --- a/services/ui-src/src/components/reports/DrawerReportPage.test.tsx +++ b/services/ui-src/src/components/reports/DrawerReportPage.test.tsx @@ -13,6 +13,7 @@ import { mockStateUserStore, RouterWrappedComponent, mockMcparReportStore, + mockEntityStore, } from "utils/testing/setupJest"; // constants import { saveAndCloseText } from "../../constants"; @@ -82,6 +83,7 @@ describe("Test DrawerReportPage with entities", () => { mockedUseStore.mockReturnValue({ ...mockStateUserStore, ...mockMcparReportStore, + ...mockEntityStore, }); render(drawerReportPageWithEntities); }); @@ -98,7 +100,7 @@ describe("Test DrawerReportPage with entities", () => { it("Opens the sidedrawer correctly", async () => { const visibleEntityText = - mockMcparReportContext.report.fieldData.plans[0].name; + mockMcparReportContext.report.fieldData.plans[1].name; expect(screen.getByText(visibleEntityText)).toBeVisible(); const launchDrawerButton = screen.getAllByText("Enter")[0]; await userEvent.click(launchDrawerButton); diff --git a/services/ui-src/src/components/reports/DrawerReportPage.tsx b/services/ui-src/src/components/reports/DrawerReportPage.tsx index 9539eb512..c24bb25b4 100644 --- a/services/ui-src/src/components/reports/DrawerReportPage.tsx +++ b/services/ui-src/src/components/reports/DrawerReportPage.tsx @@ -13,6 +13,7 @@ import { ReportContext, ReportPageFooter, ReportPageIntro, + Form, } from "components"; // utils import { @@ -33,6 +34,7 @@ import { ReportStatus, FormField, isFieldElement, + InputChangeEvent, } from "types"; // assets import completedIcon from "assets/icons/icon_check_circle.png"; @@ -44,19 +46,13 @@ export const DrawerReportPage = ({ route, validateOnRender }: Props) => { // state management const { full_name, state, userIsEndUser } = useStore().user ?? {}; - const { report } = useStore(); + const { report, selectedEntity, setSelectedEntity } = useStore(); - // make state - const [selectedEntity, setSelectedEntity] = useState( - undefined - ); - - const { entityType, verbiage, drawerForm } = route; + const { entityType, verbiage, drawerForm, form: standardForm } = route; const entities = report?.fieldData?.[entityType]; - const reportingOnIlos = route.path === "/mcpar/plan-level-indicators/ilos"; - // check if there are ILOS and associated plans + const reportingOnIlos = route.path === "/mcpar/plan-level-indicators/ilos"; const ilos = report?.fieldData?.["ilos"]; const hasIlos = ilos?.length; const hasPlans = report?.fieldData?.["plans"]?.length > 0; @@ -65,9 +61,15 @@ export const DrawerReportPage = ({ route, validateOnRender }: Props) => { const form = ilos && reportingOnIlos ? generateIlosFields(drawerForm, ilos) : drawerForm; - const openRowDrawer = (entity: EntityShape) => { - setSelectedEntity(entity); - onOpen(); + // on load, get reporting status from store + const priorAuthStatus = + report?.fieldData?.["reportingDataPriorToJune2026"]?.[0].value; + const [isDisabled, setDisabled] = useState( + priorAuthStatus === "Yes" ? false : true + ); + + const onChange = (e: InputChangeEvent) => { + setDisabled(e.target.value !== "Yes"); }; const onSubmit = async (enteredData: AnyObject) => { @@ -121,8 +123,37 @@ export const DrawerReportPage = ({ route, validateOnRender }: Props) => { onClose(); }; + const openRowDrawer = (entity: EntityShape) => { + setSelectedEntity(entity); + onOpen(); + }; + + const enterButton = (entity: EntityShape, isEntityCompleted: boolean) => { + let disabled = false; + let style = sx.enterButton; + + if ( + (route.path === "/mcpar/plan-level-indicators/ilos" && !hasIlos) || + (route.path === "/mcpar/plan-level-indicators/prior-authorization" && + isDisabled) + ) { + style = sx.disabledButton; + disabled = true; + } + + return ( + + ); + }; + const entityRows = (entities: EntityShape[]) => { - const disabled = reportingOnIlos && !hasIlos; return entities?.map((entity) => { const calculateEntityCompletion = () => { return form.fields @@ -151,14 +182,7 @@ export const DrawerReportPage = ({ route, validateOnRender }: Props) => { {entity.name} - + {enterButton(entity, isEntityCompleted)} ); }); @@ -170,12 +194,24 @@ export const DrawerReportPage = ({ route, validateOnRender }: Props) => { )} {/* if there are no ILOS but there are plans added, display this message */} - {!hasIlos && entities?.length ? ( + {!hasIlos && entities?.length && ( {parseCustomHtml(verbiage.missingIlosMessage || "")} - ) : ( - <> + )} + {standardForm && ( + +
+ )} @@ -290,4 +326,7 @@ const sx = { borderColor: "palette.gray_lighter", }, }, + standardForm: { + paddingBottom: "1rem", + }, }; diff --git a/services/ui-src/src/types/reports.ts b/services/ui-src/src/types/reports.ts index d09fd21de..48930bba2 100644 --- a/services/ui-src/src/types/reports.ts +++ b/services/ui-src/src/types/reports.ts @@ -65,7 +65,7 @@ export interface DrawerReportPageShape extends ReportPageShapeBase { drawerForm: FormJson; modalForm?: never; overlayForm?: never; - form?: never; + form?: FormJson; } export interface ModalDrawerReportPageShape extends ReportPageShapeBase { diff --git a/services/ui-src/src/utils/autosave/autosave.test.ts b/services/ui-src/src/utils/autosave/autosave.test.ts index c29dd9a7b..45508586a 100644 --- a/services/ui-src/src/utils/autosave/autosave.test.ts +++ b/services/ui-src/src/utils/autosave/autosave.test.ts @@ -137,6 +137,50 @@ describe("autosaveFieldData", () => { } ); }); + + it("should handle Prior Authorization use case", async () => { + const priorAuthFields = [ + { + name: "reportingDataPriorToJune2026", + type: "radio", + value: "Not reporting on data", + hydrationValue: "Yes", + defaultValue: "", + overrideCheck: false, + }, + ]; + const reportWithPlans = { + id: "reportId", + reportType: "MCPAR", + fieldData: { + plans: [], + }, + updateReport: jest.fn().mockResolvedValue(true), + }; + mockTrigger.mockResolvedValue(true); + await autosaveFieldData({ + form: mockForm, + fields: priorAuthFields, + report: reportWithPlans, + user, + }); + expect(mockForm.trigger).toHaveBeenCalledWith( + "reportingDataPriorToJune2026" + ); + expect(reportWithPlans.updateReport).toHaveBeenCalledWith( + { reportType: "MCPAR", id: "reportId", state: "MN" }, + { + metadata: { + status: "In progress", + lastAlteredBy: "stateuser@test.com", + }, + fieldData: { + plans: [], + reportingDataPriorToJune2026: "Not reporting on data", + }, + } + ); + }); }); describe("ifFieldWasUpdated", () => { diff --git a/services/ui-src/src/utils/autosave/autosave.ts b/services/ui-src/src/utils/autosave/autosave.ts index 281038c2e..94b8345c7 100644 --- a/services/ui-src/src/utils/autosave/autosave.ts +++ b/services/ui-src/src/utils/autosave/autosave.ts @@ -1,5 +1,12 @@ import { FieldValues, UseFormReturn } from "react-hook-form"; -import { AutosaveField, EntityShape, EntityType, ReportStatus } from "types"; +import { + AnyObject, + AutosaveField, + EntityShape, + EntityType, + ReportStatus, +} from "types"; +import { deletePlanData } from "utils/forms/priorAuthorization"; type FieldValue = any; @@ -21,6 +28,7 @@ interface Props { id: string | undefined; reportType: string | undefined; updateReport: Function; + fieldData?: AnyObject | undefined; }; user: { userName: string | undefined; @@ -82,7 +90,7 @@ export const autosaveFieldData = async ({ user, entityContext, }: Props) => { - const { id, reportType, updateReport } = report; + const { id, reportType, updateReport, fieldData: reportFieldData } = report; const { userName, state } = user; // for each passed field, format for autosave payload (if changed) const fieldsToSave: FieldDataTuple[] = await Promise.all( @@ -128,10 +136,28 @@ export const autosaveFieldData = async ({ }, // create field data object }; } else { + // create field data object + const fieldData = Object.fromEntries(fieldsToSave); dataToWrite = { metadata: { status: ReportStatus.IN_PROGRESS, lastAlteredBy: userName }, - fieldData: Object.fromEntries(fieldsToSave), // create field data object + fieldData: fieldData, }; + + // handle Prior Authorization case + let reportingOnPriorAuthorization: boolean = true; + if ( + fieldsToSave[0][0] === "reportingDataPriorToJune2026" && + fieldsToSave[0][1][0].value !== "Yes" + ) { + reportingOnPriorAuthorization = false; + } + if (!reportingOnPriorAuthorization) { + const filteredFieldData = deletePlanData(reportFieldData!["plans"]); + dataToWrite = { + ...dataToWrite, + fieldData: { ...fieldData, plans: filteredFieldData }, + }; + } } await updateReport(reportKeys, dataToWrite); diff --git a/services/ui-src/src/utils/forms/priorAuthorization.test.ts b/services/ui-src/src/utils/forms/priorAuthorization.test.ts new file mode 100644 index 000000000..22c7fe1ec --- /dev/null +++ b/services/ui-src/src/utils/forms/priorAuthorization.test.ts @@ -0,0 +1,32 @@ +import { deletePlanData } from "./priorAuthorization"; + +const mockPlanData = [ + { + id: "mock-id", + plan_totalNumberOfStandardPARequests: 1, + plan_totalNumberOfExpeditedPARequests: 2, + plan_totalNumberOfStandardAndExpeditedPARequests: 3, + plan_percentageOfStandardPARequestsApproved: "1%", + plan_percentageOfStandardPARequestsDenied: "5%", + plan_percentageOfStandardPARequestsApprovedAfterAppeal: "43%", + plan_averageTimeElapsedBetweenSubmissionOfRequestAndDeterminationForStandardPAs: + { key: "mock-key-1", value: "24" }, + plan_medianTimeElapsedBetweenSubmissionOfRequestAndDeterminationForStandardPAs: + { key: "mock-key-2", value: "132" }, + plan_percentageOfExpeditedPARequestsApproved: "0%", + plan_percentageOfExpeditedPARequestsDenied: "100%", + plan_averageTimeElapsedBetweenSubmissionOfRequestAndDeterminationForExpeditedPAs: + { key: "mock-key-3", value: "57" }, + plan_medianTimeElapsedBetweenSubmissionOfRequestAndDeterminationForExpeditedPAs: + { key: "mock-key-4", value: "24" }, + plan_percentageOfPARequestsExtendedReviewTimeframeAndApproved: "50%", + }, +]; + +describe("deletePlanData", () => { + const result = deletePlanData(mockPlanData); + it("should remove all prior authorization data from the plan, leaving only the plan ID", () => { + expect(result.length).toBe(1); + expect(result[0]).toStrictEqual({ id: "mock-id" }); + }); +}); diff --git a/services/ui-src/src/utils/forms/priorAuthorization.ts b/services/ui-src/src/utils/forms/priorAuthorization.ts new file mode 100644 index 000000000..56c6978be --- /dev/null +++ b/services/ui-src/src/utils/forms/priorAuthorization.ts @@ -0,0 +1,34 @@ +// types +import { AnyObject } from "types"; + +const priorAuthorizationFields = [ + "plan_totalNumberOfStandardPARequests", + "plan_totalNumberOfExpeditedPARequests", + "plan_totalNumberOfStandardAndExpeditedPARequests", + "plan_percentageOfStandardPARequestsApproved", + "plan_percentageOfStandardPARequestsDenied", + "plan_percentageOfStandardPARequestsApprovedAfterAppeal", + "plan_averageTimeElapsedBetweenSubmissionOfRequestAndDeterminationForStandardPAs", + "plan_medianTimeElapsedBetweenSubmissionOfRequestAndDeterminationForStandardPAs", + "plan_percentageOfExpeditedPARequestsApproved", + "plan_percentageOfExpeditedPARequestsDenied", + "plan_averageTimeElapsedBetweenSubmissionOfRequestAndDeterminationForExpeditedPAs", + "plan_medianTimeElapsedBetweenSubmissionOfRequestAndDeterminationForExpeditedPAs", + "plan_percentageOfPARequestsExtendedReviewTimeframeAndApproved", +]; + +export const deletePlanData = (planData: AnyObject) => { + // delete Prior Authorization plan data if selecting "Not reporting data" + const filteredPlanData = planData?.map((plan: AnyObject) => { + let planKeys = Object.keys(plan); + for (let i = 0; i < priorAuthorizationFields.length; i++) { + for (let j = 0; j < planKeys.length; j++) { + if (planKeys[j].startsWith(priorAuthorizationFields[i])) { + delete plan[planKeys[j]]; + } + } + } + return plan; + }); + return filteredPlanData; +}; diff --git a/services/ui-src/src/utils/index.ts b/services/ui-src/src/utils/index.ts index bdbee02ec..6c293bb54 100644 --- a/services/ui-src/src/utils/index.ts +++ b/services/ui-src/src/utils/index.ts @@ -12,6 +12,7 @@ export * from "./autosave/autosave"; // forms export * from "./forms/forms"; export * from "./forms/ilosFields"; +export * from "./forms/priorAuthorization"; // reports export * from "./reports/entities"; export * from "./reports/reports"; diff --git a/services/ui-src/src/utils/testing/mockReport.tsx b/services/ui-src/src/utils/testing/mockReport.tsx index 9dcce2387..04031b348 100644 --- a/services/ui-src/src/utils/testing/mockReport.tsx +++ b/services/ui-src/src/utils/testing/mockReport.tsx @@ -216,6 +216,12 @@ export const mockReportFieldData = { name: "mock-ilos-name-1", }, ], + reportingDataPriorToJune2026: [ + { + key: "mock-key", + value: "Yes", + }, + ], text: "text-input", number: 0, radio: ["option1"], diff --git a/tests/cypress/e2e/mcpar/form.cy.js b/tests/cypress/e2e/mcpar/form.cy.js index bcab514c0..417fad418 100644 --- a/tests/cypress/e2e/mcpar/form.cy.js +++ b/tests/cypress/e2e/mcpar/form.cy.js @@ -1,4 +1,4 @@ -import mcparTemplate from "../../../../services/app-api/forms/mcpar.json"; +import mcparTemplate from "../mcpar/mcpar-copy.json"; const templateMap = { MCPAR: mcparTemplate }; diff --git a/tests/cypress/e2e/mcpar/mcpar-copy.json b/tests/cypress/e2e/mcpar/mcpar-copy.json new file mode 100644 index 000000000..1999a6e8f --- /dev/null +++ b/tests/cypress/e2e/mcpar/mcpar-copy.json @@ -0,0 +1,4330 @@ +{ + "type": "MCPAR", + "name": "MCPAR Report Submission Form", + "basePath": "/mcpar", + "version": "MCPAR_2023-03-17", + "entities": { + "sanctions": { "required": false }, + "accessMeasures": { "required": true }, + "qualityMeasures": { "required": true }, + "plans": { "required": true }, + "bssEntities": { "required": true }, + "ilos": { "required": false } + }, + "routes": [ + { + "name": "A: Program Information", + "path": "/mcpar/program-information", + "children": [ + { + "name": "Point of Contact", + "path": "/mcpar/program-information/point-of-contact", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section A: Program Information", + "subsection": "Point of Contact", + "spreadsheet": "A_Program_Info" + }, + "praDisclosure": [ + { + "type": "span", + "content": "PRA Disclosure Statement
According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-0920 (Expires: June 30, 2024). The time required to complete this information collection is estimated to average 6 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850" + } + ] + }, + "form": { + "id": "apoc", + "fields": [ + { + "id": "stateName", + "type": "text", + "validation": "text", + "props": { + "label": "A.1 State name", + "hint": "Auto-populated from your account profile.", + "disabled": true + } + }, + { + "id": "contactName", + "type": "text", + "validation": "text", + "props": { + "label": "A.2a Contact name", + "hint": "First and last name of the contact person.
States that do not wish to list a specific individual on the report are encouraged to use a department or program-wide email address that will allow anyone with questions to quickly reach someone who can provide answers." + } + }, + { + "id": "contactEmailAddress", + "type": "text", + "validation": "email", + "props": { + "label": "A.2b Contact email address", + "hint": "Enter email address. Department or program-wide email addresses ok." + } + }, + { + "id": "submitterName", + "type": "text", + "validation": "textOptional", + "props": { + "label": "A.3a Submitter name", + "hint": "CMS receives this data upon submission of this MCPAR report.", + "disabled": true + } + }, + { + "id": "submitterEmailAddress", + "type": "text", + "validation": "emailOptional", + "props": { + "label": "A.3b Submitter email address", + "hint": "CMS receives this data upon submission of this MCPAR report.", + "disabled": true + } + }, + { + "id": "reportSubmissionDate", + "type": "date", + "validation": "textOptional", + "props": { + "label": "A.4 Date of report submission", + "hint": "CMS receives this date upon submission of this MCPAR report.", + "disabled": true + } + } + ] + } + }, + { + "name": "Reporting Period", + "path": "/mcpar/program-information/reporting-period", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section A: Program Information", + "subsection": "Reporting Period", + "spreadsheet": "A_Program_Info" + } + }, + "form": { + "id": "arp", + "fields": [ + { + "id": "reportingPeriodStartDate", + "type": "date", + "validation": "date", + "props": { + "label": "A.5a Reporting period start date", + "hint": "Auto-populated from report dashboard.", + "disabled": true + } + }, + { + "id": "reportingPeriodEndDate", + "type": "date", + "validation": "date", + "props": { + "label": "A.5b Reporting period end date", + "hint": "Auto-populated from report dashboard.", + "disabled": true + } + }, + { + "id": "programName", + "type": "text", + "validation": "text", + "props": { + "label": "A.6 Program name", + "hint": "Auto-populated from report dashboard.", + "disabled": true + } + } + ] + } + }, + { + "name": "Add Plans", + "path": "/mcpar/program-information/add-plans", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section A: Program Information", + "subsection": "Add plans (A.7)", + "info": "Enter the name of each plan that participates in the program for which the state is reporting data.", + "spreadsheet": "A_Program_Info" + } + }, + "form": { + "id": "aap", + "fields": [ + { + "id": "plans", + "type": "dynamic", + "validation": "dynamic", + "props": { + "label": "Plan name" + } + } + ] + } + }, + { + "name": "Add BSS Entities", + "path": "/mcpar/program-information/add-bss-entities", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section A: Program Information", + "subsection": "Add BSS entities (A.8)", + "spreadsheet": "A_Program_Info", + "info": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "Enter the names of Beneficiary Support System (BSS) entities that support enrollees in the program for which the state is reporting data. Learn more about BSS entities at " + }, + { + "type": "externalLink", + "content": "42 CFR 438.71", + "props": { + "href": "https://www.ecfr.gov/current/title-42/chapter-IV/subchapter-C/part-438/subpart-B/section-438.71", + "target": "_blank", + "aria-label": "42 CFR 438.71 (link opens in new tab)." + } + }, + { + "type": "html", + "content": "See Glossary in Excel Workbook for the definition of BSS entities." + } + ] + }, + { + "type": "p", + "content": "Examples of BSS entity types include a: State or Local Government Entity, Ombudsman Program, State Health Insurance Program (SHIP), Aging and Disability Resource Network (ADRN), Center for Indepedent Living (CIL), Legal Assistance Organization, Community-based Organization, Subcontractor, Enrollment Broker, Consultant, or Academic/Research Organization." + } + ] + } + }, + "form": { + "id": "absse", + "fields": [ + { + "id": "bssEntities", + "type": "dynamic", + "validation": "dynamic", + "props": { + "label": "BSS entity name" + } + } + ] + } + }, + { + "name": "Add In Lieu of Services and Settings", + "path": "/mcpar/program-information/add-in-lieu-of-services-and-settings", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section A: Program Information", + "subsection": "Add In Lieu of Services and Settings (A.9)", + "info": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This section must be completed if any ILOSs other than short term stays in an Institution for Mental Diseases (IMD) are authorized for this managed care program. Enter the name of each ILOS offered as it is identified in the managed care plan contract(s). " + }, + { + "type": "externalLink", + "content": "Guidance on In Lieu of Services on Medicaid.gov", + "props": { + "href": "https://www.medicaid.gov/medicaid/managed-care/guidance/lieu-of-services-and-settings/index.html", + "target": "_blank", + "aria-label": "Guidance on ILOS on Medicaid.gov." + } + }, + { + "type": "html", + "content": "." + } + ] + } + ], + "spreadsheet": "A_Program_Info", + "alert": "Beginning December 2025, this section must be completed by states that authorize ILOS. Submission of this data before December 2025 is optional." + } + }, + "form": { + "id": "aailos", + "fields": [ + { + "id": "ilos", + "type": "dynamic", + "validation": "dynamicOptional", + "props": { + "label": "ILOS name" + } + } + ] + } + } + ] + }, + { + "name": "B: State-Level Indicators", + "path": "/mcpar/state-level-indicators", + "children": [ + { + "name": "I: Program Characteristics", + "path": "/mcpar/state-level-indicators/program-characteristics", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section B: State-Level Indicators", + "subsection": "Topic I. Program Characteristics and Enrollment", + "spreadsheet": "B_State" + } + }, + "form": { + "id": "bpc", + "fields": [ + { + "id": "state_statewideMedicaidEnrollment", + "type": "number", + "validation": "number", + "props": { + "label": "B.I.1 Statewide Medicaid enrollment", + "hint": "Enter the average number of individuals enrolled in Medicaid per month during the reporting year (i.e., average member months).
Include all FFS and managed care enrollees and count each person only once, regardless of the delivery system(s) in which they are enrolled.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "state_statewideMedicaidManagedCareEnrollment", + "type": "number", + "validation": "number", + "props": { + "label": "B.I.2 Statewide Medicaid managed care enrollment", + "hint": "Enter the average number of individuals enrolled in any type of Medicaid managed care per month during the reporting year (i.e., average member months).
Include all managed care programs and count each person only once, even if they are enrolled in multiple managed care programs or plans.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + } + ] + } + }, + { + "name": "III: Encounter Data Report", + "path": "/mcpar/state-level-indicators/encounter-data-report", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section B: State-Level Indicators", + "subsection": "Topic III. Encounter Data Report", + "spreadsheet": "B_State" + } + }, + "form": { + "id": "bedr", + "fields": [ + { + "id": "state_encounterDataValidationEntity", + "type": "checkbox", + "validation": "checkbox", + "props": { + "label": "B.III.1 Data validation entity", + "hint": "Select the state agency/division or contractor tasked with evaluating the validity of encounter data submitted by MCPs.
Encounter data validation includes verifying the accuracy, completeness, timeliness, and/or consistency of encounter data records submitted to the state by Medicaid managed care plans. Validation steps may include pre-acceptance edits and post-acceptance analyses. See Glossary in Excel Workbook for more information.", + "choices": [ + { + "id": "2iuXO7C6nk6cuP9JXbdd2w", + "label": "State Medicaid agency staff" + }, + { + "id": "vmlIjQAe9kyz4FbtxBZINA", + "label": "Other state agency staff" + }, + { + "id": "Vg8erh64Tk2nKd5olVwM9w", + "label": "State actuaries" + }, + { + "id": "azz5rhd8V0GK27fIXaYSmw", + "label": "EQRO" + }, + { + "id": "OLmKdPAEI0WnbSV1sVccVw", + "label": "Other third-party vendor" + }, + { + "id": "SyQu5rtdV06hEaUBCLZsYw", + "label": "Proprietary system(s)", + "children": [ + { + "id": "state_encounterDataValidationSystemHipaaCompliance", + "type": "radio", + "validation": { + "type": "radio", + "nested": true, + "parentFieldName": "state_encounterDataValidationEntity" + }, + "props": { + "label": "B.III.2 HIPAA compliance of proprietary system(s) for encounter data validation", + "hint": "Were the system(s) utilized fully HIPAA compliant? Select one.", + "choices": [ + { + "id": "DeRYxSPAg0aZpPgqHfUcGA", + "label": "Yes" + }, + { + "id": "CJVUudlBrEGWZAv7CVqKrQ", + "label": "No" + } + ] + } + } + ] + }, + { + "id": "Gxk89QOgQkmMTaNHH9WznQ", + "label": "Other, specify", + "children": [ + { + "id": "state_encounterDataValidationEntity-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "state_encounterDataValidationEntity" + } + } + ] + } + ] + } + } + ] + } + }, + { + "name": "X: Program Integrity", + "path": "/mcpar/state-level-indicators/program-integrity", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section B: State-Level Indicators", + "subsection": "Topic X: Program Integrity", + "spreadsheet": "B_State" + } + }, + "form": { + "id": "bpi", + "fields": [ + { + "id": "state_focusedProgramIntegrityActivitiesConducted", + "type": "textarea", + "validation": "text", + "props": { + "label": "B.X.1 Payment risks between the state and plans", + "hint": "Describe service-specific or other focused PI activities that the state conducted during the past year in this managed care program.
Examples include analyses focused on use of long-term services and supports (LTSS) or prescription drugs or activities that focused on specific payment issues to identify, address, and prevent fraud, waste or abuse. Consider data analytics, reviews of under/overutilization, and other activities. If no PI activities were performed, enter 'No PI activities were performed during the reporting period' as your response. 'N/A' is not an acceptable response." + } + }, + { + "id": "state_overpaymentStandard", + "type": "radio", + "validation": "radio", + "props": { + "label": "B.X.2 Contract standard for overpayments", + "hint": "Does the state allow plans to retain overpayments, require the return of overpayments, or has established a hybrid system? Select one.", + "choices": [ + { + "id": "UG7uunqq5UCtUq1is3iyiw", + "label": "Allow plans to retain overpayments" + }, + { + "id": "3DGAqqnOBE2kwKVFMxUt3A", + "label": "State requires the return of overpayments" + }, + { + "id": "jlIZKSPaf0GSVGmJbRUBzg", + "label": "State has established a hybrid system" + } + ] + } + }, + { + "id": "state_overpaymentStandardContractLanguageLocation", + "type": "textarea", + "validation": "text", + "props": { + "label": "B.X.3 Location of contract provision stating overpayment standard", + "hint": "Describe where the overpayment standard in the previous indicator is located in plan contracts, as required by 42 CFR 438.608(d)(1)(i)." + } + }, + { + "id": "state_overpaymentStandardDescription", + "type": "textarea", + "validation": "text", + "props": { + "label": "B.X.4 Description of overpayment contract standard", + "hint": "Briefly describe the overpayment standard (for example, details on whether the state allows plans to retain overpayments, requires the plans to return overpayments, or administers a hybrid system) selected in indicator B.X.2." + } + }, + { + "id": "state_overpaymentReportingMonitoringEfforts", + "type": "textarea", + "validation": "text", + "props": { + "label": "B.X.5 State overpayment reporting monitoring", + "hint": "Describe how the state monitors plan performance in reporting overpayments to the state, e.g. does the state track compliance with this requirement and/or timeliness of reporting?
The regulations at 438.604(a)(7), 608(a)(2) and 608(a)(3) require plan reporting to the state on various overpayment topics (whether annually or promptly). This indicator is asking the state how it monitors that reporting." + } + }, + { + "id": "state_beneficiaryCircumstanceChangeReconciliationEfforts", + "type": "textarea", + "validation": "text", + "props": { + "label": "B.X.6 Changes in beneficiary circumstances", + "hint": "Describe how the state ensures timely and accurate reconciliation of enrollment files between the state and plans to ensure appropriate payments for enrollees experiencing a change in status (e.g., incarcerated, deceased, switching plans)." + } + }, + { + "id": "state_providerTerminationReportingMonitoringEfforts", + "type": "radio", + "validation": "radio", + "props": { + "label": "B.X.7a Changes in provider circumstances: Monitoring plans", + "hint": "Does the state monitor whether plans report provider \"for cause\" terminations in a timely manner under 42 CFR 438.608(a)(4)? Select one.", + "choices": [ + { + "id": "WFrdLUutmEujEZkS7rWVqQ", + "label": "Yes", + "children": [ + { + "id": "state_providerTerminationReportingMonitoringMetrics", + "type": "radio", + "validation": { + "type": "radio", + "nested": true, + "parentFieldName": "state_providerTerminationReportingMonitoringEfforts" + }, + "props": { + "label": "B.X.7b Changes in provider circumstances: Metrics", + "hint": "Does the state use a metric or indicator to assess plan reporting performance? Select one.", + "choices": [ + { + "id": "SPqyExyg8UioX6Od1IWvlg", + "label": "Yes", + "children": [ + { + "id": "state_providerTerminationReportingMonitoringMetricsDescription", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "state_providerTerminationReportingMonitoringMetrics" + }, + "props": { + "label": "B.X.7c Changes in provider circumstances: Describe metric", + "hint": "Describe the metric or indicator that the state uses." + } + } + ] + }, + { + "id": "XPflE27BV0G3RJFYxuw8QA", + "label": "No" + } + ] + } + } + ] + }, + { + "id": "3tIhiqQxhEiSIhM7UW1DKQ", + "label": "No" + } + ] + } + }, + { + "id": "state_excludedEntityIdentifiedInFederalDatabaseCheck", + "type": "radio", + "validation": "radio", + "props": { + "label": "B.X.8a Federal database checks: Excluded person or entities", + "hint": "During the state's federal database checks, did the state find any person or entity excluded? Select one.
Consistent with the requirements at 42 CFR 455.436 and 438.602, the State must confirm the identity and determine the exclusion status of the MCO, PIHP, PAHP, PCCM or PCCM entity, any subcontractor, as well as any person with an ownership or control interest, or who is an agent or managing employee of the MCO, PIHP, PAHP, PCCM or PCCM entity through routine checks of Federal databases.", + "choices": [ + { + "id": "zrrv4vmXRkGhSkaS2V2d3A", + "label": "Yes", + "children": [ + { + "id": "state_excludedEntityIdentificationInstancesSummary", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "state_excludedEntityIdentifiedInFederalDatabaseCheck" + }, + "props": { + "label": "B.X.8b Federal database checks: Summarize instances of exclusion", + "hint": "Summarize the instances and whether the entity was notified as required in 438.602(d). Report actions taken, such as plan-level sanctions and corrective actions." + } + } + ] + }, + { + "id": "ed1vyv6qB0a4aDLSeHOGPQ", + "label": "No" + } + ] + } + }, + { + "id": "state_ownershipControlDisclosureWebsite", + "type": "radio", + "validation": "radio", + "props": { + "label": "B.X.9a Website posting of 5 percent or more ownership control", + "hint": "Does the state post on its website the names of individuals and entities with 5% or more ownership or control interest in MCOs, PIHPs, PAHPs, PCCMs and PCCM entities and subcontractors? Refer to §455.104 and required by 42 CFR 438.602(g)(3).", + "choices": [ + { + "id": "fNiPtEub20Soo1W5FcdU3A", + "label": "Yes", + "children": [ + { + "id": "state_ownershipControlDisclosureWebsiteLink", + "type": "text", + "validation": { + "type": "url", + "nested": true, + "parentFieldName": "state_ownershipControlDisclosureWebsite" + }, + "props": { + "label": "B.X.9b Website posting of 5 percent or more ownership control: Link", + "hint": "What is the link to the website? Refer to 42 CFR 602(g)(3)." + } + } + ] + }, + { + "id": "qhyidi0w4UiiBvCsoTgFOg", + "label": "No" + } + ] + } + }, + { + "id": "state_submittedDataAuditResults", + "type": "textarea", + "validation": "text", + "props": { + "label": "B.X.10 Periodic audits", + "hint": "If the state conducted any audits during the contract year to determine the accuracy, truthfulness, and completeness of the encounter and financial data submitted by the plans, provide the link(s) to the audit results. Refer to 42 CFR 438.602(e). If no audits were conducted, please enter 'No such audits were conducted during the reporting year' as your response. 'N/A' is not an acceptable response." + } + } + ] + } + } + ] + }, + { + "name": "C: Program-Level Indicators", + "path": "/mcpar/program-level-indicators", + "children": [ + { + "name": "I: Program Characteristics", + "path": "/mcpar/program-level-indicators/program-characteristics", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section C: Program-Level Indicators", + "subsection": "Topic I: Program Characteristics", + "spreadsheet": "C1_Program_Set" + } + }, + "form": { + "id": "cpc", + "fields": [ + { + "id": "program_contractTitle", + "type": "text", + "validation": "text", + "props": { + "label": "C1.I.1 Program contract", + "hint": "Enter the title of the contract between the state and plans participating in the managed care program." + } + }, + { + "id": "program_contractDate", + "type": "date", + "validation": "date", + "props": { + "hint": "Enter the date of the contract between the state and plans participating in the managed care program." + } + }, + { + "id": "program_contractUrl", + "type": "text", + "validation": "url", + "props": { + "label": "C1.I.2 Contract URL", + "hint": "Provide the hyperlink to the model contract or landing page for executed contracts for the program reported in this program." + } + }, + { + "id": "program_type", + "type": "radio", + "validation": "radio", + "props": { + "label": "C1.I.3 Program type", + "hint": "What is the type of MCPs that contract with the state to provide the services covered under the program? Select one.", + "choices": [ + { + "id": "rP1NWfC2jEGDwLSnSZVWDg", + "label": "Managed Care Organization (MCO)" + }, + { + "id": "rJHLjCGMa0CW2YIX0HOC6w", + "label": "Prepaid Inpatient Health Plan (PIHP)" + }, + { + "id": "MaaUjgQ8sk6egWLalC6h7w", + "label": "Prepaid Ambulatory Health Plan (PAHP)" + }, + { + "id": "atiwcA9QUE2eoTchV2ZLtw", + "label": "Primary Care Case Management (PCCM) Entity" + }, + { + "id": "oaiOvxrN6EqfTqV1lAc9kQ", + "label": "Other, specify", + "children": [ + { + "id": "program_type-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "program_type" + } + } + ] + } + ] + } + }, + { + "id": "program_coveredSpecialBenefits", + "type": "checkbox", + "validation": "checkbox", + "props": { + "label": "C1.I.4a Special program benefits", + "hint": "Are any of the four special benefit types covered by the managed care program: (1) behavioral health, (2) long-term services and supports, (3) dental, and (4) transportation, or (5) none of the above? Select one or more.
Only list the benefit type if it is a covered service as specified in a contract between the state and managed care plans participating in the program. Benefits available to eligible program enrollees via fee-for-service should not be listed here.", + "choices": [ + { + "id": "TXvFpzmNqkCgpLcDckL5QQ", + "label": "Behavioral health" + }, + { + "id": "87et9SaCr0uSt4vqFercBw", + "label": "Long-term services and supports (LTSS)" + }, + { + "id": "I1FxuAG3U0WbV5KSNGXXug", + "label": "Dental" + }, + { + "id": "4hRianKm4Ui74nk0WqTA0A", + "label": "Transportation" + }, + { + "id": "WDiUOKx9LUSmspPjMMZ1Qg", + "label": "None of the above", + "children": [ + { + "id": "program_coveredSpecialBenefits-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "program_coveredSpecialBenefits" + } + } + ] + } + ] + } + }, + { + "id": "program_specialBenefitsAvailabilityVariation", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.I.4b Variation in special benefits", + "hint": "What are any variations in the availability of special benefits within the program (e.g. by service area or population)? Enter \"N/A\" if not applicable." + } + }, + { + "id": "program_enrollment", + "type": "number", + "validation": "number", + "props": { + "label": "C1.I.5 Program enrollment", + "hint": "Enter the average number of individuals enrolled in this managed care program per month during the reporting year (i.e., average member months).", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "program_enrollmentBenefitChanges", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.I.6 Changes to enrollment or benefits", + "hint": "Briefly explain any major changes to the population enrolled in or benefits provided by the managed care program during the reporting year. If there were no major changes, please enter 'There were no major changes to the population or benefits during the reporting year' as your response. 'N/A' is not an acceptable response." + } + } + ] + } + }, + { + "name": "III: Encounter Data Report", + "path": "/mcpar/program-level-indicators/encounter-data-report", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section C: Program-Level Indicators", + "subsection": "Topic III: Encounter Data Report", + "spreadsheet": "C1_Program_Set" + } + }, + "form": { + "id": "cedr", + "fields": [ + { + "id": "program_encounterDataUses", + "type": "checkbox", + "validation": "checkbox", + "props": { + "label": "C1.III.1 Uses of encounter data", + "hint": "For what purposes does the state use encounter data collected from managed care plans (MCPs)? Select one or more.
Federal regulations require that states, through their contracts with MCPs, collect and maintain sufficient enrollee encounter data to identify the provider who delivers any item(s) or service(s) to enrollees (42 CFR 438.242(c)(1)).", + "choices": [ + { + "id": "eSrOkLMTyEmmixeqNXV1ZA", + "label": "Rate setting" + }, + { + "id": "Ga9PZEVDBEOZULWeJdJznw", + "label": "Quality/performance measurement" + }, + { + "id": "OF4juaUqz0GrUVVzvHjuEA", + "label": "Monitoring and reporting" + }, + { + "id": "n8IjGT6b60qpp5KCHAJeyA", + "label": "Contract oversight" + }, + { + "id": "6JVi42VKSEO39fJSma8BzA", + "label": "Program integrity" + }, + { + "id": "RuBQRzexDUeq9St0E6sJdw", + "label": "Policy making and decision support" + }, + { + "id": "Lxb161V64E27MlzL7boAFw", + "label": "Other, specify", + "children": [ + { + "id": "program_encounterDataUses-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "program_encounterDataUses" + } + } + ] + }, + { + "id": "WeIIplvIUEiCMdD2qKNz9w", + "label": "Encounter data not used for any purpose" + } + ] + } + }, + { + "id": "program_encounterDataSubmissionCorrectionPerformanceEvaluationCriteria", + "type": "checkbox", + "validation": "checkbox", + "props": { + "label": "C1.III.2 Criteria/measures to evaluate MCP performance", + "hint": "What types of measures are used by the state to evaluate managed care plan performance in encounter data submission and correction? Select one or more.
Federal regulations also require that states validate that submitted enrollee encounter data they receive is a complete and accurate representation of the services provided to enrollees under the contract between the state and the MCO, PIHP, or PAHP. 42 CFR 438.242(d).", + "choices": [ + { + "id": "kP5W9deIb06jK7SXX8dnRA", + "label": "Timeliness of initial data submissions" + }, + { + "id": "rsqVEBVarkij4Ks9vmgE3g", + "label": "Timeliness of data corrections" + }, + { + "id": "Lo4seplZ3UGTktvCFuAtqw", + "label": "Timeliness of data certifications" + }, + { + "id": "448Z26i8ikOhiFzqbdkeNg", + "label": "Use of correct file formats" + }, + { + "id": "auYEK7okWkSc1hSwsYaAVQ", + "label": "Provider ID field complete" + }, + { + "id": "mmtZcSBPUkGPCpQqc9wkyg", + "label": "Overall data accuracy (as determined through data validation)" + }, + { + "id": "J8l0u9V4VEeQmiZCB5Djrg", + "label": "Other, specify", + "children": [ + { + "id": "program_encounterDataSubmissionCorrectionPerformanceEvaluationCriteria-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "program_encounterDataSubmissionCorrectionPerformanceEvaluationCriteria" + } + } + ] + }, + { + "id": "FrCigNtArkCCqdkxU8fjlA", + "label": "None of the above" + } + ] + } + }, + { + "id": "program_encounterDataSubmissionCorrectionPerformanceEvaluationCriteriaContractLanguageLocation", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.III.3 Encounter data performance criteria contract language", + "hint": "Provide reference(s) to the contract section(s) that describe the criteria by which managed care plan performance on encounter data submission and correction will be measured. Use contract section references, not page numbers." + } + }, + { + "id": "program_encounterDataSubmissionQualityFinancialPenaltiesContractLanguageLocation", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.III.4 Financial penalties contract language", + "hint": "Provide reference(s) to the contract section(s) that describes any financial penalties the state may impose on plans for the types of failures to meet encounter data submission and quality standards. Use contract section references, not page numbers." + } + }, + { + "id": "program_encounterDataQualityIncentives", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.III.5 Incentives for encounter data quality", + "hint": "Describe the types of incentives that may be awarded to managed care plans for encounter data quality. Reply with \"N/A\" if the plan does not use incentives to award encounter data quality." + } + }, + { + "id": "program_encounterDataCollectionValidationBarriers", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.III.6 Barriers to collecting/validating encounter data", + "hint": "Describe any barriers to collecting and/or validating managed care plan encounter data that the state has experienced during the reporting year. If there were no barriers, please enter 'The state did not experience any barriers to collecting or validating encounter data during the reporting year' as your response. 'N/A' is not an acceptable response." + } + } + ] + } + }, + { + "name": "IV: Appeals, State Fair Hearings & Grievances", + "path": "/mcpar/program-level-indicators/appeals-state-fair-hearings-and-grievances", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section C: Program-Level Indicators", + "subsection": "Topic IV. Appeals, State Fair Hearings & Grievances", + "spreadsheet": "C1_Program_Set" + } + }, + "form": { + "id": "casfhag", + "fields": [ + { + "id": "program_criticalIncidentDefinition", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.IV.1 State's definition of \"critical incident,\" as used for reporting purposes in its MLTSS program", + "hint": "If this report is being completed for a managed care program that covers LTSS, what is the definition that the state uses for \"critical incidents\" within the managed care program? Respond with \"N/A\" if the managed care program does not cover LTSS." + } + }, + { + "id": "program_standardAppealTimelyResolutionDefinition", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.IV.2 State definition of \"timely\" resolution for standard appeals", + "hint": "Provide the state's definition of timely resolution for standard appeals in the managed care program.
Per 42 CFR §438.408(b)(2), states must establish a timeframe for timely resolution of standard appeals that is no longer than 30 calendar days from the day the MCO, PIHP or PAHP receives the appeal." + } + }, + { + "id": "program_expeditedAppealTimelyResolutionDefinition", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.IV.3 State definition of \"timely\" resolution for expedited appeals", + "hint": "Provide the state's definition of timely resolution for expedited appeals in the managed care program.
Per 42 CFR §438.408(b)(3), states must establish a timeframe for timely resolution of expedited appeals that is no longer than 72 hours after the MCO, PIHP or PAHP receives the appeal." + } + }, + { + "id": "program_grievanceTimelyResolutionDefinition", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.IV.4 State definition of \"timely\" resolution for grievances", + "hint": "Provide the state's definition of timely resolution for grievances in the managed care program.
Per 42 CFR §438.408(b)(1), states must establish a timeframe for timely resolution of grievances that is no longer than 90 calendar days from the day the MCO, PIHP or PAHP receives the grievance." + } + } + ] + } + }, + { + "name": "V: Availability & Accessibility", + "path": "/mcpar/program-level-indicators/availability-and-accessibility", + "children": [ + { + "name": "Network Adequacy", + "path": "/mcpar/program-level-indicators/availability-and-accessibility/network-adequacy", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section C: Program-Level Indicators", + "subsection": "Topic V. Availability, Accessibility and Network Adequacy", + "spreadsheet": "C1_Program_Set", + "info": [ + { + "type": "heading", + "as": "h4", + "content": "Network Adequacy" + } + ] + } + }, + "form": { + "id": "cna", + "fields": [ + { + "id": "program_networkAdequacyChallenges", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.V.1 Gaps/challenges in network adequacy", + "hint": "What are the state's biggest challenges? Describe any challenges MCPs have maintaining adequate networks and meeting access standards. If the state and MCPs did not encounter any challenges, please enter 'No challenges were encountered' as your response. 'N/A' is not an acceptable response." + } + }, + { + "id": "program_networkAdequacyGapResponseEfforts", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.V.2 State response to gaps in network adequacy", + "hint": "How does the state work with MCPs to address gaps in network adequacy?" + } + } + ] + } + }, + { + "name": "Access Measures", + "path": "/mcpar/program-level-indicators/availability-and-accessibility/access-measures", + "pageType": "modalDrawer", + "entityType": "accessMeasures", + "verbiage": { + "intro": { + "section": "Section C: Program-Level Indicators", + "subsection": "Topic V. Availability, Accessibility and Network Adequacy", + "spreadsheet": "C2_Program_State", + "info": [ + { + "type": "heading", + "as": "h4", + "content": "Access Measures" + }, + { + "type": "p", + "content": "Describe the measures the state uses to monitor availability, accessibility, and network adequacy. Report at the program level." + }, + { + "type": "p", + "content": "Revisions to the Medicaid managed care regulations in 2016 and 2020 built on existing requirements that managed care plans maintain provider networks sufficient to ensure adequate access to covered services by: (1) requiring states to develop quantitative network adequacy standards for at least eight specified provider types if covered under the contract, and to make these standards available online; (2) strengthening network adequacy monitoring requirements; and (3) addressing the needs of people with long-term care service needs (42 CFR 438.66; 42 CFR 438.68)." + }, + { + "type": "p", + "content": "42 CFR 438.66(e) specifies that the MCPAR must provide information on and an assessment of the availability and accessibility of covered services within the MCO, PHIP, or PAHP contracts, including network adequacy standards for each managed care program." + } + ] + }, + "dashboardTitle": "Access measure total count:", + "countEntitiesInTitle": true, + "addEntityButtonText": "Add access measure", + "editEntityButtonText": "Edit measure", + "addEditModalAddTitle": "Add access measure", + "addEditModalEditTitle": "Edit access measure", + "addEditModalMessage": "Complete the remaining indicators for this access measure by saving the measure and selecting \"Enter measure details\".", + "deleteEntityButtonAltText": "Delete measure", + "deleteModalTitle": "Delete access measure?", + "deleteModalConfirmButtonText": "Yes, delete measure", + "deleteModalWarning": "You will lose all information entered for this measure. Are you sure you want to proceed?", + "entityUnfinishedMessage": "Complete the remaining indicators for this access measure by entering details.", + "enterEntityDetailsButtonText": "Enter details", + "editEntityDetailsButtonText": "Edit details", + "drawerTitle": "Add details for access measure" + }, + "modalForm": { + "id": "cam-modal", + "fields": [ + { + "id": "accessMeasure_generalCategory", + "type": "radio", + "validation": "radio", + "props": { + "label": "C2.V.1 General category", + "hint": "Select one.", + "choices": [ + { + "id": "XbR70C9iDU2yPtQXBuwZgA", + "label": "General quantitative availability and accessibility standard" + }, + { + "id": "shBE5icoJ0qQV6yYwhMePg", + "label": "LTSS-related standard: provider travels to the enrollee" + }, + { + "id": "L8WhTwcfDUqlXCb9kCLUcA", + "label": "LTSS-related standard: enrollee travels to the provider" + }, + { + "id": "aSzsso583qbijUdXJnz8CS", + "label": "Exception to quantitative standard" + } + ] + } + }, + { + "id": "accessMeasure_standardDescription", + "type": "textarea", + "validation": "text", + "props": { + "label": "C2.V.2 Measure standard", + "hint": "What is the standard for your program-level indicators? Add a description." + } + }, + { + "id": "accessMeasure_standardType", + "type": "radio", + "validation": "radio", + "props": { + "label": "C2.V.3 Standard type", + "hint": "What is the standard type? Select one or add free text if you select \"Other\".", + "choices": [ + { + "id": "kBady0XnCUG8nxXWSHHeBg", + "label": "Maximum time to travel" + }, + { + "id": "ZoChtaOBaUKbb5mc8J5Ttg", + "label": "Maximum distance to travel" + }, + { + "id": "ufmG7LliEkSNgUxRfb736A", + "label": "Maximum time or distance" + }, + { + "id": "5PhGxIGxvUGWyuJ8RGTABg", + "label": "Ease of getting a timely appointment" + }, + { + "id": "E90BE7ESr0aUT0TBvTGqpA", + "label": "Appointment wait time" + }, + { + "id": "c8ElWnGCxkeuR7Gf46G4Gw", + "label": "Hours of operation" + }, + { + "id": "EUkZ4TchV0qx9Ebvf6W8wg", + "label": "Provider to enrollee ratios" + }, + { + "id": "qsGpnAyE4EiGEyZweLmH3w", + "label": "Minimum number of network providers" + }, + { + "id": "NrjpuHSmZka4YV22wVM1Zw", + "label": "Service fulfillment" + }, + { + "id": "v7kDD0JjQUymHUGTlEwRfw", + "label": "Other, specify", + "children": [ + { + "id": "accessMeasure_standardType-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "accessMeasure_standardType" + } + } + ] + } + ] + } + } + ] + }, + "drawerForm": { + "id": "cam-drawer", + "fields": [ + { + "id": "accessMeasure_providerType", + "type": "radio", + "validation": "radio", + "props": { + "label": "C2.V.4 Provider type", + "hint": "What is the provider type? Select one or add free text if you select \"Other\"", + "choices": [ + { + "id": "7z1m6zajqUupPe89o3dAGQ", + "label": "Primary care" + }, + { + "id": "SxG3KStEU0SGAXtk6u9pCw", + "label": "Behavioral health" + }, + { + "id": "KQtY7LuWG02dXq3ECotrVw", + "label": "Hospital" + }, + { + "id": "DXiAww8WU0O6ULJMhUmo2w", + "label": "LTSS-personal care assistant" + }, + { + "id": "YjMjhj37OEaVb5GZvCjRdQ", + "label": "LTSS assistive technology" + }, + { + "id": "QHcE4coTX0GTAGP9HyZb4g", + "label": "LTSS-adult day care" + }, + { + "id": "RkTGG5vb1UaNcFkLG3OfHw", + "label": "LTSS-SNF" + }, + { + "id": "XfgRX33Ot02GGMoqcMVn4w", + "label": "Other, specify", + "children": [ + { + "id": "accessMeasure_providerType-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "accessMeasure_providerType" + } + } + ] + } + ] + } + }, + { + "id": "accessMeasure_applicableRegion", + "type": "radio", + "validation": "radio", + "props": { + "label": "C2.V.5 Applicable region(s)", + "hint": "What is the applicable region? Select one or add free text if you select \"Other\"", + "choices": [ + { + "id": "X47v2Ee5kkaBERBjXFWGXw", + "label": "Urban" + }, + { + "id": "H4Ldb3YGZ0OmBRYceGKDcA", + "label": "Rural" + }, + { + "id": "2fuO6QbLo06yGNAcrwVhCg", + "label": "Large counties" + }, + { + "id": "B1dVVXG9qUudAeuiVkzKrQ", + "label": "Small counties" + }, + { + "id": "XkGi9vuc506VhzDCR5oAkg", + "label": "Other, specify", + "children": [ + { + "id": "accessMeasure_applicableRegion-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "accessMeasure_applicableRegion" + } + } + ] + } + ] + } + }, + { + "id": "accessMeasure_population", + "type": "radio", + "validation": "radio", + "props": { + "label": "C2.V.6 Population", + "hint": "What is the population? Select one or add free text if you select \"Other\"", + "choices": [ + { + "id": "YtRX5yx7NEWkGfU9vDI03g", + "label": "Adult" + }, + { + "id": "gYaReXNXW0WCFNAn3m7Lkg", + "label": "Pediatric" + }, + { + "id": "ZRlpGJt4S0OoBWWSw4Z6mA", + "label": "Adult and pediatric" + }, + { + "id": "cMLq1Y2YKkuVRPecSTdkHg", + "label": "MLTSS" + }, + { + "id": "ENItdUNlUkGlvoBtAPH6Tw", + "label": "Other, specify", + "children": [ + { + "id": "accessMeasure_population-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "accessMeasure_population" + } + } + ] + } + ] + } + }, + { + "id": "accessMeasure_monitoringMethods", + "type": "checkbox", + "validation": "checkbox", + "props": { + "label": "C2.V.7 Monitoring methods", + "hint": "What are the monitoring methods? Check all that apply or add free text if you select \"Other\"", + "choices": [ + { + "id": "gbWqxtPWaUC1yUbmhWA0UA", + "label": "Geomapping" + }, + { + "id": "G7GxcYWmhEqjrEQDBWRl3w", + "label": "Plan provider roster review" + }, + { + "id": "e14gKX61FkqBjIBeFDO7oA", + "label": "Secret shopper calls" + }, + { + "id": "cMhP8Jp6SUS9XvezaPLvLg", + "label": "EVV data analysis" + }, + { + "id": "bmQ1FmFPGk6S1g70ntAEcw", + "label": "Review of grievances related to access" + }, + { + "id": "ozFC7ZVX7EWXZiNB2Ajj3g", + "label": "Other, specify", + "children": [ + { + "id": "accessMeasure_monitoringMethods-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "accessMeasure_monitoringMethods" + } + } + ] + } + ] + } + }, + { + "id": "accessMeasure_oversightMethodFrequency", + "type": "radio", + "validation": "radio", + "props": { + "label": "C2.V.8 Frequency of oversight methods", + "hint": "What is the frequency of oversight methods? Select one or add free text if you select \"Other\"", + "choices": [ + { + "id": "tOF04LLPa026mJlHmk0RaA", + "label": "At procurement" + }, + { + "id": "HrS3f4scOUCGvDQTc0ff8g", + "label": "Monthly" + }, + { + "id": "FA7SekH1aEO3pJtjugSGLA", + "label": "Quarterly" + }, + { + "id": "GiwsJsL2MUmmy735jGmGKA", + "label": "Annually" + }, + { + "id": "qrkmFNIPFkyuR1UcJ8vorA", + "label": "Less than annually" + }, + { + "id": "RpBmNYucH0ugYLa9RGbLdA", + "label": "Other, specify", + "children": [ + { + "id": "accessMeasure_oversightMethodFrequency-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "accessMeasure_oversightMethodFrequency" + } + } + ] + } + ] + } + } + ] + } + } + ] + }, + { + "name": "IX: BSS", + "path": "/mcpar/program-level-indicators/bss", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section C: Program-Level Indicators", + "subsection": "Topic IX: Beneficiary Support System (BSS)", + "spreadsheet": "C1_Program_Set" + } + }, + "form": { + "id": "cbss", + "fields": [ + { + "id": "state_bssWebsite", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.IX.1 BSS website", + "hint": "List the website(s) and/or email address(es) that beneficiaries use to seek assistance from the BSS through electronic means. Separate entries with commas." + } + }, + { + "id": "state_bssEntityServiceAccessibility", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.IX.2 BSS auxiliary aids and services", + "hint": "How do BSS entities offer services in a manner that is accessible to all beneficiaries who need their services, including beneficiaries with disabilities, as required by 42 CFR 438.71(b)(2))?
CFR 438.71 requires that the beneficiary support system be accessible in multiple ways including phone, Internet, in-person, and via auxiliary aids and services when requested." + } + }, + { + "id": "state_bssEntityLtssProgramDataIssueAssistance", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.IX.3 BSS LTSS program data", + "hint": "How do BSS entities assist the state with identifying, remediating, and resolving systemic issues based on a review of LTSS program data such as grievances and appeals or critical incident data? Refer to 42 CFR 438.71(d)(4)." + } + }, + { + "id": "state_bssEntityPerformanceEvaluationMethods", + "type": "textarea", + "validation": "text", + "props": { + "label": "C1.IX.4 State evaluation of BSS entity performance", + "hint": "What are steps taken by the state to evaluate the quality, effectiveness, and efficiency of the BSS entities' performance?" + } + } + ] + } + }, + { + "name": "X: Program Integrity", + "path": "/mcpar/program-level-indicators/program-integrity", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section C: Program-Level Indicators", + "subsection": "Topic X: Program Integrity", + "spreadsheet": "C1_Program_Set" + } + }, + "form": { + "id": "cpi", + "fields": [ + { + "id": "program_prohibitedAffiliationDisclosure", + "type": "radio", + "validation": "radio", + "props": { + "label": "C1.X.3 Prohibited affiliation disclosure", + "hint": "Did any plans disclose prohibited affiliations? If the state took action, enter those actions under D: Plan-level Indicators, Section VIII - Sanctions (Corresponds with Tab D3 in the Excel Workbook). Refer to 42 CFR 438.610(d).", + "choices": [ + { + "id": "7emiYPcs60GzXxKS5Pc9bg", + "label": "Yes" + }, + { + "id": "SCGdBlpSQU6OVWAf3mDlMQ", + "label": "No" + } + ] + } + } + ] + } + }, + { + "name": "XII: Mental Health and Substance Use Disorder Parity", + "path": "/mcpar/program-level-indicators/mental-health-and-substance-use-disorder-parity", + "pageType": "standard", + "verbiage": { + "intro": { + "section": "Section C: Program-Level Indicators", + "subsection": "Topic XII. Mental Health and Substance Use Disorder Parity", + "spreadsheet": "C1_Program_Set", + "alert": "Beginning December 2024, this section must be completed for programs that include MCOs" + } + }, + "form": { + "id": "cmhsudp", + "fields": [ + { + "id": "program_doesThisProgramIncludeMCOs", + "type": "radio", + "validation": "radio", + "props": { + "label": "C1.XII.4 Does this program include MCOs?", + "hint": "If \"Yes\", please complete the following questions.", + "choices": [ + { + "id": "WezgX4VYsCyGJ3w0ncCpsWkH", + "label": "No" + }, + { + "id": "A4uFU0YyU9useo3DsWjnH264", + "label": "Yes", + "children": [ + { + "id": "program_areServicesProvidedToMcEnrolleesByPihpPahpOrFfsDeliverySystem", + "type": "radio", + "validation": { + "type": "radio", + "nested": true, + "parentFieldName": "program_doesThisProgramIncludeMCOs", + "parentOptionId": "A4uFU0YyU9useo3DsWjnH264" + }, + "props": { + "label": "C1.XII.5 Are ANY services provided to MCO enrollees by a PIHP, PAHP, or FFS delivery system?", + "hint": "(i.e. some services are delivered via fee for service (FFS), prepaid inpatient health plan (PIHP), or prepaid ambulatory health plan (PAHP) delivery system)", + "choices": [ + { + "id": "FjCDK2ONpqtd0z2DTz8YaGjP", + "label": "Yes" + }, + { + "id": "wI8TMrw0hoJzYUjjH2mO7Om4", + "label": "No" + } + ] + } + }, + { + "id": "program_didStateOrMCOsCompleteAnalysis", + "type": "radio", + "validation": { + "type": "radio", + "nested": true, + "parentFieldName": "program_doesThisProgramIncludeMCOs", + "parentOptionId": "A4uFU0YyU9useo3DsWjnH264" + }, + "props": { + "label": "C1.XII.6 Did the State or MCOs complete the analysis(es)?", + "choices": [ + { + "id": "hzfe4WnueXTUDk0FoFcJcq1G", + "label": "MCO" + }, + { + "id": "v6woH8xYbE59VMs82VxJlisF", + "label": "State" + }, + { + "id": "vbuAOFC6DSx397ZoibATdonl", + "label": "Other, specify", + "children": [ + { + "id": "program_didStateOrMCOsCompleteAnalysis-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "program_didStateOrMCOsCompleteAnalysis", + "parentOptionId": "vbuAOFC6DSx397ZoibATdonl" + } + } + ] + } + ] + } + }, + { + "id": "program_triggeringEventsNecessitatingUpdatesToParityAnalysis", + "type": "radio", + "validation": { + "type": "radio", + "nested": true, + "parentFieldName": "program_doesThisProgramIncludeMCOs", + "parentOptionId": "A4uFU0YyU9useo3DsWjnH264" + }, + "props": { + "label": "C1.XII.7a Have there been any events in the reporting period that necessitated an update to the parity analysis(es)?", + "hint": "(e.g. changes in benefits, quantitative treatment limits (QTLs), non-quantitative treatment limits (NQTLs), or financial requirements; the addition of a new managed care plan (MCP) providing services to MCO enrollees; and/or deficiencies corrected)", + "choices": [ + { + "id": "q6F3AvbLimTiLUDN2xQvd2ip", + "label": "Yes", + "children": [ + { + "id": "descriptionOfEventsInReportingPeriodThatNecessitatedUpdateToParityAnalysis", + "type": "checkbox", + "validation": { + "type": "checkbox", + "nested": true, + "parentFieldName": "program_triggeringEventsNecessitatingUpdatesToParityAnalysis", + "parentOptionId": "q6F3AvbLimTiLUDN2xQvd2ip" + }, + "props": { + "label": "C1.XII.7b Describe the event(s) that necessitated an update to the parity analysis(es).", + "hint": "Select all that apply.", + "choices": [ + { + "id": "iLzELvKBsBoZxJ96fLU5wyDM", + "label": "Changes in benefits" + }, + { + "id": "Yw9kYLAE5zz12meBm4g2lnfR", + "label": "Changes in financial requirements (e.g., copays, coinsurance, deductibles, out-of-pocket maximums)" + }, + { + "id": "AQ0h7WeZm1nJ8Crr1BeOCCy0", + "label": "Changes in quantitative treatment limits (QTLs), (limits on the scope or duration of benefits that are represented numerically, such as day limits or visit limits)" + }, + { + "id": "KDjEgzfwI8WRVvS6cAwa27mH", + "label": "Changes in non-quantitative treatment limits (NQTLs), (which otherwise limit the scope or duration of benefits, e.g., utilization management, network admission standards)" + }, + { + "id": "3jrOpqW0YtFPDAgGcf7Ar9FS", + "label": "Addition of a new managed care plan (MCP) providing services to MCO enrollees" + }, + { + "id": "tsdVnIPFc9RitXWFNHC5MTP0", + "label": "Deficiencies corrected" + }, + { + "id": "SWvgQnZAENJ1sxe0Xf408AoE", + "label": "Other, specify", + "children": [ + { + "id": "descriptionOfEventsInReportingPeriodThatNecessitatedUpdateToParityAnalysis-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "descriptionOfEventsInReportingPeriodThatNecessitatedUpdateToParityAnalysis", + "parentOptionId": "SWvgQnZAENJ1sxe0Xf408AoE" + } + } + ] + } + ] + } + } + ] + }, + { + "id": "avJf3iStX8t0lI6Ck8t51ZHy", + "label": "No" + } + ] + } + }, + { + "id": "program_whenWasTheLastParityAnalysisCoveringThisProgramCompleted", + "type": "date", + "validation": { + "type": "date", + "nested": true, + "parentFieldName": "program_doesThisProgramIncludeMCOs", + "parentOptionId": "A4uFU0YyU9useo3DsWjnH264" + }, + "props": { + "label": "C1.XII.8 When was the last parity analysis(es) for this program completed?", + "hint": "States with ANY services provided to MCO enrollees by an entity other than an MCO should report the date the state completed its most recent summary parity analysis report. States with NO services provided to MCO enrollees by an entity other than an MCO should report the most recent date any MCO sent the state its parity analysis (the state may have multiple reports, one for each MCO)." + } + }, + { + "id": "program_whenWasTheLastParityAnalysisForThisProgramSubmittedToCMS", + "type": "date", + "validation": { + "type": "date", + "nested": true, + "parentFieldName": "program_doesThisProgramIncludeMCOs", + "parentOptionId": "A4uFU0YyU9useo3DsWjnH264" + }, + "props": { + "label": "C1.XII.9 When was the last parity analysis(es) for this program submitted to CMS?", + "hint": "States with ANY services provided to MCO enrollees by an entity other than an MCO should report the date the state's most recent summary parity analysis report was submitted to CMS. States with NO services provided to MCO enrollees by an entity other than an MCO should report the most recent date the state submitted any MCO's parity report to CMS (the state may have multiple parity reports, one for each MCO)." + } + }, + { + "id": "program_wereAnyDeficienciesIdentifiedDuringTheAnalysisConducted", + "type": "radio", + "validation": { + "type": "radio", + "nested": true, + "parentFieldName": "program_doesThisProgramIncludeMCOs", + "parentOptionId": "A4uFU0YyU9useo3DsWjnH264" + }, + "props": { + "label": "C1.XII.10a In the last analysis(es) conducted, were any deficiencies identified?", + "choices": [ + { + "id": "z3iOa69iV6mQVBWTqIJBl5Ck", + "label": "Yes", + "children": [ + { + "id": "descriptionOfDeficienciesInLastAnalysisConducted", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "program_wereAnyDeficienciesIdentifiedDuringTheAnalysisConducted", + "parentOptionId": "z3iOa69iV6mQVBWTqIJBl5Ck" + }, + "props": { + "label": "C1.XII.10b In the last analysis(es) conducted, describe all deficiencies identified." + } + }, + { + "id": "program_haveTheseDeficienciesBeenResolvedForAllPlans", + "type": "radio", + "validation": { + "type": "radio", + "nested": true, + "parentFieldName": "program_doesThisProgramIncludeMCOs", + "parentOptionId": "A4uFU0YyU9useo3DsWjnH264" + }, + "props": { + "label": "C1.XII.11a As of the end of this reporting period, have these deficiencies been resolved for all plans?", + "choices": [ + { + "id": "sLd8M1tgf9dpVIZWRYEXvdBe", + "label": "Yes" + }, + { + "id": "DCDJH4S1JHF7G5bZUMxOVMTe", + "label": "No", + "children": [ + { + "id": "reasonsForNoDeficiencyResolutionsForAllPlans", + "type": "checkbox", + "validation": { + "type": "checkbox", + "nested": true, + "parentFieldName": "program_haveTheseDeficienciesBeenResolvedForAllPlans", + "parentOptionId": "DCDJH4S1JHF7G5bZUMxOVMTe" + }, + "props": { + "label": "C1.XII.11b If deficiencies have not been resolved, select all that apply.", + "choices": [ + { + "id": "bEJDkUR6l4zwIgj3aLDd7TZ9", + "label": "Noncompliant limits are still being applied in operations, affecting some providers and/or enrollees." + }, + { + "id": "E63ZYRXBmOocAEUS9JA1PkNB", + "label": "Non-compliance is related to updated parity documentation not yet submitted to CMS." + }, + { + "id": "NXbySoHbH3AvbOIvIUREAPsC", + "label": "Other, specify", + "children": [ + { + "id": "reasonsForNoDeficiencyResolutionsForAllPlans-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "reasonsForNoDeficiencyResolutionsForAllPlans", + "parentOptionId": "NXbySoHbH3AvbOIvIUREAPsC" + } + } + ] + } + ] + } + } + ] + } + ] + } + } + ] + }, + { + "id": "id5YVp8cXSTlUNX3dKXSqxqa", + "label": "No" + } + ] + } + }, + { + "id": "program_hasStatePostedCurrentParityAnalysisCoveringThisProgram", + "type": "radio", + "validation": { + "type": "radio", + "nested": true, + "parentFieldName": "program_doesThisProgramIncludeMCOs", + "parentOptionId": "A4uFU0YyU9useo3DsWjnH264" + }, + "props": { + "label": "C1.XII.12a Has the state posted the current parity analysis(es) covering this program on its website?", + "hint": "

The current parity analysis/analyses must be posted on the state Medicaid program website. States with ANY services provided to MCO enrollees by an entity other than MCO should have a single state summary parity analysis report.

States with NO services provided to MCO enrollees by an entity other than the MCO may have multiple parity reports (by MCO), in which case all MCOs' separate analyses must be posted. A \"Yes\" response means that the parity analysis for either the state or for ALL MCOs has been posted.

", + "choices": [ + { + "id": "fncOB9LFBZd1nFJvLv9YM1Pb", + "label": "Yes", + "children": [ + { + "id": "websiteStatePostedCurrentParityAnalysisCoveringThisProgram", + "type": "text", + "validation": { + "type": "url", + "nested": true, + "parentFieldName": "program_hasStatePostedCurrentParityAnalysisCoveringThisProgram", + "parentOptionId": "fncOB9LFBZd1nFJvLv9YM1Pb" + }, + "props": { + "label": "C1.XII.12b Provide the URL link(s).", + "hint": "Response must be a valid hyperlink/URL beginning with \"http://\" or \"https://\". Separate links with commas." + } + } + ] + }, + { + "id": "fmEETS25bqmm0GIwg0CGRIn6", + "label": "No", + "children": [ + { + "id": "dateStateWillRemediateThisAreaOfNoncompliance", + "type": "date", + "validation": { + "type": "date", + "nested": true, + "parentFieldName": "program_hasStatePostedCurrentParityAnalysisCoveringThisProgram", + "parentOptionId": "fmEETS25bqmm0GIwg0CGRIn6" + }, + "props": { + "label": "C1.XII.12c When will the state post the current parity analysis(es) on its State Medicaid website in accordance with 42 CFR § 438.920(b)(1)?" + } + } + ] + } + ] + } + } + ] + } + ] + } + } + ] + } + } + ] + }, + { + "name": "D: Plan-Level Indicators", + "path": "/mcpar/plan-level-indicators", + "children": [ + { + "name": "I: Program Characteristics", + "path": "/mcpar/plan-level-indicators/program-characteristics", + "pageType": "drawer", + "entityType": "plans", + "verbiage": { + "intro": { + "section": "Section D: Plan-Level Indicators", + "subsection": "Topic I. Program Characteristics & Enrollment", + "spreadsheet": "D1_Plan_Set" + }, + "dashboardTitle": "Report program characteristics & enrollment for each plan", + "drawerTitle": "Report program characteristics & enrollment for", + "missingEntityMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing plans. You won't be able to complete this section until you've added all the plans that participate in this program in section A.7. " + }, + { + "type": "internalLink", + "content": "Add Plans", + "props": { + "to": "/mcpar/program-information/add-plans" + } + } + ] + } + ] + }, + "drawerForm": { + "id": "dpc", + "fields": [ + { + "id": "plan_enrollment", + "type": "number", + "validation": "number", + "props": { + "label": "D1.I.1 Plan enrollment", + "hint": "Enter the average number of individuals enrolled in the plan per month during the reporting year (i.e., average member months).", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_medicaidEnrollmentSharePercentage", + "type": "number", + "validation": "number", + "props": { + "label": "D1.I.2 Plan share of Medicaid", + "hint": "

What is the plan enrollment (within the specific program) as a percentage of the state's total Medicaid enrollment?

  • Numerator: Plan enrollment (D1.I.1)
  • Denominator: Statewide Medicaid enrollment (B.I.1)
", + "mask": "percentage" + } + }, + { + "id": "plan_medicaidManagedCareEnrollmentSharePercentage", + "type": "number", + "validation": "number", + "props": { + "label": "D1.I.3 Plan share of any Medicaid managed care", + "hint": "

What is the plan enrollment (regardless of program) as a percentage of total Medicaid enrollment in any type of managed care?

  • Numerator: Plan enrollment (D1.I.1)
  • Denominator: Statewide Medicaid managed care enrollment (B.I.2)
", + "mask": "percentage" + } + } + ] + } + }, + { + "name": "II: Financial Performance", + "path": "/mcpar/plan-level-indicators/financial-performance", + "pageType": "drawer", + "entityType": "plans", + "verbiage": { + "intro": { + "section": "Section D: Plan-Level Indicators", + "subsection": "Topic II. Financial Performance", + "spreadsheet": "D1_Plan_Set" + }, + "dashboardTitle": "Report financial performance for each plan", + "drawerTitle": "Report financial performance for", + "missingEntityMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing plans. You won't be able to complete this section until you've added all the plans that participate in this program in section A.7. " + }, + { + "type": "internalLink", + "content": "Add Plans", + "props": { + "to": "/mcpar/program-information/add-plans" + } + } + ] + } + ] + }, + "drawerForm": { + "id": "dfp", + "fields": [ + { + "id": "plan_medicalLossRatioPercentage", + "type": "number", + "validation": "number", + "props": { + "label": "D1.II.1a Medical Loss Ratio (MLR)", + "hint": "What is the MLR percentage? Per 42 CFR 438.66(e)(2)(i), the Managed Care Program Annual Report must provide information on the Financial performance of each MCO, PIHP, and PAHP, including MLR experience.
If MLR data are not available for this reporting period due to data lags, enter the MLR calculated for the most recently available reporting period and indicate the reporting period in item D1.II.3 below. See Glossary in Excel Workbook for the regulatory definition of MLR. Write MLR as a percentage: for example, write 92% rather than 0.92.", + "mask": "percentage", + "decimalPlacesToRoundTo": 2 + } + }, + { + "id": "plan_medicalLossRatioPercentageAggregationLevel", + "type": "radio", + "validation": "radio", + "props": { + "label": "D1.II.1b Level of aggregation", + "hint": "What is the aggregation level that best describes the MLR being reported in the previous indicator? Select one.
As permitted under 42 CFR 438.8(i), states are allowed to aggregate data for reporting purposes across programs and populations.", + "choices": [ + { + "id": "BSfARaemtUmbuMnZC11pog", + "label": "Program-specific statewide" + }, + { + "id": "Sk684CJrvE6vAefOKX6flA", + "label": "Program-specific regional" + }, + { + "id": "LRDviCXq5ESAYi3UhGhMBw", + "label": "Statewide all programs & populations" + }, + { + "id": "OQ0onGPAMUqDZgIxAjR3aQ", + "label": "Regional all programs & populations" + }, + { + "id": "ou7IxaZKnEeGLuqBSehl9g", + "label": "Other, specify", + "children": [ + { + "id": "plan_medicalLossRatioPercentageAggregationLevel-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "plan_medicalLossRatioPercentageAggregationLevel" + } + } + ] + } + ] + } + }, + { + "id": "plan_populationSpecificMedicalLossRatioDescription", + "type": "textarea", + "validation": "text", + "props": { + "label": "D1.II.2 Population specific MLR description", + "hint": "Does the state require plans to submit separate MLR calculations for specific populations served within this program, for example, MLTSS or Group VIII expansion enrollees? If so, describe the populations here. Enter \"N/A\" if not applicable.
See glossary for the regulatory definition of MLR." + } + }, + { + "id": "plan_medicalLossRatioReportingPeriod", + "type": "radio", + "validation": "radio", + "props": { + "label": "D1.II.3 MLR reporting period discrepancies", + "hint": "Does the data reported in item D1.II.1a cover a different time period than the MCPAR report?", + "choices": [ + { + "id": "UgEFak34A0e1hJaHXtXbrw", + "label": "Yes", + "children": [ + { + "id": "plan_medicalLossRatioReportingPeriodStartDate", + "type": "date", + "validation": { + "type": "date", + "nested": true, + "parentFieldName": "plan_medicalLossRatioReportingPeriod" + }, + "props": { + "hint": "Enter the start date.", + "timetype": "startDate" + } + }, + { + "id": "plan_medicalLossRatioReportingPeriodEndDate", + "type": "date", + "validation": { + "type": "endDate", + "dependentFieldName": "plan_medicalLossRatioReportingPeriodStartDate", + "nested": true, + "parentFieldName": "plan_medicalLossRatioReportingPeriod" + }, + "props": { + "hint": "Enter the end date.", + "timetype": "endDate" + } + } + ] + }, + { + "id": "Jt8dUZQO60OpeGvhe6KaOA", + "label": "No" + } + ] + } + } + ] + } + }, + { + "name": "III: Encounter Data Report", + "path": "/mcpar/plan-level-indicators/encounter-data-report", + "pageType": "drawer", + "entityType": "plans", + "verbiage": { + "intro": { + "section": "Section D: Plan-Level Indicators", + "subsection": "Topic III. Encounter Data", + "spreadsheet": "D1_Plan_Set" + }, + "dashboardTitle": "Report on encounter data for each plan", + "drawerTitle": "Report encounter data for", + "missingEntityMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing plans. You won't be able to complete this section until you've added all the plans that participate in this program in section A.7. " + }, + { + "type": "internalLink", + "content": "Add Plans", + "props": { + "to": "/mcpar/program-information/add-plans" + } + } + ] + } + ] + }, + "drawerForm": { + "id": "dedr", + "fields": [ + { + "id": "program_encounterDataSubmissionTimelinessStandardDefinition", + "type": "textarea", + "validation": "text", + "props": { + "label": "D1.III.1 Definition of timely encounter data submissions", + "hint": "Describe the state's standard for timely encounter data submissions used in this program.
If reporting frequencies and standards differ by type of encounter within this program, please explain." + } + }, + { + "id": "plan_encounterDataSubmissionTimelinessCompliancePercentage", + "type": "number", + "validation": "number", + "props": { + "label": "D1.III.2 Share of encounter data submissions that met state's timely submission requirements", + "hint": "What percent of the plan's encounter data file submissions (submitted during the reporting year) met state requirements for timely submission? If the state has not yet received any encounter data file submissions for the entire contract year when it submits this report, the state should enter here the percentage of encounter data submissions that were compliant out of the file submissions it has received from the managed care plan for the reporting year.", + "mask": "percentage" + } + }, + { + "id": "plan_encounterDataSubmissionHipaaCompliancePercentage", + "type": "number", + "validation": "number", + "props": { + "label": "D1.III.3 Share of encounter data submissions that were HIPAA compliant", + "hint": "What percent of the plan's encounter data submissions (submitted during the reporting year) met state requirements for HIPAA compliance?
If the state has not yet received encounter data submissions for the entire contract period when it submits this report, enter here percentage of encounter data submissions that were compliant out of the proportion received from the managed care plan for the reporting year.", + "mask": "percentage" + } + } + ] + } + }, + { + "name": "IV: Appeals, State Fair Hearings & Grievances", + "path": "/mcpar/plan-level-indicators/appeals-state-fair-hearings-and-grievances", + "children": [ + { + "name": "Appeals Overview", + "path": "/mcpar/plan-level-indicators/appeals-state-fair-hearings-and-grievances/appeals-overview", + "pageType": "drawer", + "entityType": "plans", + "verbiage": { + "intro": { + "section": "Section D: Plan-Level Indicators", + "subsection": "Topic IV. Appeals, State Fair Hearings & Grievances", + "spreadsheet": "D1_Plan_Set", + "alert": "Beginning June 2025, Indicators D1.IV.1a-c must be completed. Submission of this data before June 2025 is optional; if you choose not to respond prior to June 2025, enter \"N/A\".", + "info": [ + { + "type": "heading", + "as": "h4", + "content": "Appeals Overview" + } + ] + }, + "dashboardTitle": "Report on appeals for each plan", + "drawerTitle": "Report on appeals for", + "drawerInfo": [ + { + "type": "p", + "content": "Special Instructions: For MCOs that exclusively serve dually eligible members as applicable integrated plans (defined at 42 CFR 422.561), the MCO should not report Medicare-related appeals in the counts. Medicare-related appeals are those where Medicare is the primary payer." + } + ], + "missingEntityMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing plans. You won't be able to complete this section until you've added all the plans that participate in this program in section A.7. " + }, + { + "type": "internalLink", + "content": "Add Plans", + "props": { + "to": "/mcpar/program-information/add-plans" + } + } + ] + } + ] + }, + "drawerForm": { + "id": "dao", + "fields": [ + { + "id": "plan_resolvedAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.1 Appeals resolved (at the plan level)", + "hint": "

Enter the total number of appeals resolved during the reporting year.

An appeal is \"resolved\" at the plan level when the plan has issued a decision, regardless of whether the decision was wholly or partially favorable or adverse to the beneficiary, and regardless of whether the beneficiary (or the beneficiary's representative) chooses to file a request for a State Fair Hearing or External Medical Review.

", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_appealsDenied", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.1a Appeals denied", + "hint": "Enter the total number of appeals resolved during the reporting period (D1.IV.1) that were denied (adverse) to the enrollee. If you choose not to respond prior to June 2025, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_appealsResolvedInPartialFavorOfEnrollee", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.1b Appeals resolved in partial favor of enrollee", + "hint": "Enter the total number of appeals (D1.IV.1) resolved during the reporting period in partial favor of the enrollee. If you choose not to respond prior to June 2025, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_appealsResolvedInFavorOfEnrollee", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.1c Appeals resolved in favor of enrollee", + "hint": "Enter the total number of appeals (D1.IV.1) resolved during the reporting period in favor of the enrollee. If you choose not to respond prior to June 2025, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_activeAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.2 Active appeals", + "hint": "Enter the total number of appeals still pending or in process (not yet resolved) as of the end of the reporting year.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_ltssUserFiledAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.3 Appeals filed on behalf of LTSS users", + "hint": "Enter the total number of appeals filed during the reporting year by or on behalf of LTSS users. Enter \"N/A\" if not applicable.

An LTSS user is an enrollee who received at least one LTSS service at any point during the reporting year (regardless of whether the enrollee was actively receiving LTSS at the time that the appeal was filed).", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_ltssUserFiledCriticalIncidentsWhenPreviouslyFiledAppeal", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.4 Number of critical incidents filed during the reporting year by (or on behalf of) an LTSS user who previously filed an appeal", + "hint": "For managed care plans that cover LTSS, enter the number of critical incidents filed within the reporting year by (or on behalf of) LTSS users who previously filed appeals in the reporting year. If the managed care plan does not cover LTSS, enter \"N/A\".

Also, if the state already submitted this data for the reporting year via the CMS readiness review appeal and grievance report (because the managed care program or plan were new or serving new populations during the reporting year), and the readiness review tool was submitted for at least 6 months of the reporting year, enter \"N/A\".

The appeal and critical incident do not have to have been \"related\" to the same issue - they only need to have been filed by (or on behalf of) the same enrollee. Neither the critical incident nor the appeal need to have been filed in relation to delivery of LTSS — they may have been filed for any reason, related to any service received (or desired) by an LTSS user.

To calculate this number, states or managed care plans should first identify the LTSS users for whom critical incidents were filed during the reporting year, then determine whether those enrollees had filed an appeal during the reporting year, and whether the filing of the appeal preceded the filing of the critical incident.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_timelyResolvedStandardAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.5a Standard appeals for which timely resolution was provided", + "hint": "Enter the total number of standard appeals for which timely resolution was provided by plan within the reporting year.

See 42 CFR §438.408(b)(2) for requirements related to timely resolution of standard appeals.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_timelyResolvedExpeditedAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.5b Expedited appeals for which timely resolution was provided", + "hint": "Enter the total number of expedited appeals for which timely resolution was provided by plan within the reporting year.

See 42 CFR §438.408(b)(3) for requirements related to timely resolution of standard appeals.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "D1.IV.6Header", + "type": "sectionHeader", + "props": { + "divider": "top", + "content": "Number of appeals due to the following reasons resolved during the reporting period:" + } + }, + { + "id": "D1.IV.6Instructions", + "type": "sectionContent", + "props": { + "content": "The seven reasons for an appeal are mutually exclusive. Each appeal has one reason, and questions D1.IV.6a-g should sum to D1.IV.1." + } + }, + { + "id": "plan_resolvedPreServiceAuthorizationDenialAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.6a Resolved appeals related to denial of authorization or limited authorization of a service", + "hint": "Enter the total number of appeals resolved by the plan during the reporting year that were related to the plan's denial of authorization for a service not yet rendered or limited authorization of a service.

(Appeals related to denial of payment for a service already rendered should be counted in indicator D1.IV.6c).", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedReductionSuspensionTerminationOfPreviouslyAuthorizedServiceAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.6b Resolved appeals related to reduction, suspension, or termination of a previously authorized service", + "hint": "Enter the total number of appeals resolved by the plan during the reporting year that were related to the plan's reduction, suspension, or termination of a previously authorized service.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedPostServiceAuthorizationDenialAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.6c Resolved appeals related to payment denial", + "hint": "Enter the total number of appeals resolved by the plan during the reporting year that were related to the plan's denial, in whole or in part, of payment for a service that was already rendered.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedServiceTimelinessAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.6d Resolved appeals related to service timeliness", + "hint": "Enter the total number of appeals resolved by the plan during the reporting year that were related to the plan's failure to provide services in a timely manner (as defined by the state).", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedUntimelyResponseAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.6e Resolved appeals related to lack of timely plan response to an appeal or grievance", + "hint": "Enter the total number of appeals resolved by the plan during the reporting year that were related to the plan's failure to act within the timeframes provided at 42 CFR §438.408(b)(1) and (2) regarding the standard resolution of grievances and appeals.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedRightToRequestOutOfNetworkCareDenialAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.6f Resolved appeals related to plan denial of an enrollee's right to request out-of-network care", + "hint": "Enter the total number of appeals resolved by the plan during the reporting year that were related to the plan's denial of an enrollee's request to exercise their right, under 42 CFR §438.52(b)(2)(ii), to obtain services outside the network (only applicable to residents of rural areas with only one MCO).", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedRequestToDisputeFinancialLiabilityDenialAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.6g Resolved appeals related to denial of an enrollee's request to dispute financial liability", + "hint": "Enter the total number of appeals resolved by the plan during the reporting year that were related to the plan's denial of an enrollee's request to dispute a financial liability.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + } + ] + } + }, + { + "name": "Appeals by Service", + "path": "/mcpar/plan-level-indicators/appeals-state-fair-hearings-grievances/appeals-by-service", + "pageType": "drawer", + "entityType": "plans", + "verbiage": { + "intro": { + "section": "Section D: Plan-Level Indicators", + "subsection": "Topic IV. Appeals, State Fair Hearings & Grievances", + "spreadsheet": "D1_Plan_Set", + "info": [ + { + "type": "heading", + "as": "h4", + "content": "Appeals by Service" + }, + { + "type": "p", + "content": "Number of appeals resolved during the reporting period related to various services. Note: A single appeal may be related to multiple service types and may therefore be counted in multiple categories." + } + ] + }, + "dashboardTitle": "Report on appeals by service for each plan", + "drawerTitle": "Report appeals by service for", + "missingEntityMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing plans. You won't be able to complete this section until you've added all the plans that participate in this program in section A.7. " + }, + { + "type": "internalLink", + "content": "Add Plans", + "props": { + "to": "/mcpar/program-information/add-plans" + } + } + ] + } + ] + }, + "drawerForm": { + "id": "dabs", + "fields": [ + { + "id": "plan_resolvedGeneralInpatientServiceAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.7a Resolved appeals related to general inpatient services", + "hint": "

Enter the total number of appeals resolved by the plan during the reporting year that were related to general inpatient care, including diagnostic and laboratory services.

Do not include appeals related to inpatient behavioral health services – those should be included in indicator D1.IV.7c. If the managed care plan does not cover general inpatient services, enter \"N/A\".

", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedGeneralOutpatientServiceAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.7b Resolved appeals related to general outpatient services", + "hint": "Enter the total number of appeals resolved by the plan during the reporting year that were related to general outpatient care, including diagnostic and laboratory services. Please do not include appeals related to outpatient behavioral health services – those should be included in indicator D1.IV.7d. If the managed care plan does not cover general outpatient services, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedInpatientBehavioralHealthServiceAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.7c Resolved appeals related to inpatient behavioral health services", + "hint": "Enter the total number of appeals resolved by the plan during the reporting year that were related to inpatient mental health and/or substance use services. If the managed care plan does not cover inpatient behavioral health services, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedOutpatientBehavioralHealthServiceAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.7d Resolved appeals related to outpatient behavioral health services", + "hint": "Enter the total number of appeals resolved by the plan during the reporting year that were related to outpatient mental health and/or substance use services. If the managed care plan does not cover outpatient behavioral health services, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedCoveredOutpatientPrescriptionDrugAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.7e Resolved appeals related to covered outpatient prescription drugs", + "hint": "Enter the total number of appeals resolved by the plan during the reporting year that were related to outpatient prescription drugs covered by the managed care plan. If the managed care plan does not cover outpatient prescription drugs, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedSnfServiceAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.7f Resolved appeals related to skilled nursing facility (SNF) services", + "hint": "Enter the total number of appeals resolved by the plan during the reporting year that were related to SNF services. If the managed care plan does not cover skilled nursing services, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedLtssServiceAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.7g Resolved appeals related to long-term services and supports (LTSS)", + "hint": "

Enter the total number of appeals resolved by the plan during the reporting year that were related to institutional LTSS or LTSS provided through home and community-based (HCBS) services, including personal care and self-directed services. If the managed care plan does not cover LTSS services, enter \"N/A\".

", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedDentalServiceAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.7h Resolved appeals related to dental services", + "hint": "Enter the total number of appeals resolved by the plan during the reporting year that were related to dental services. If the managed care plan does not cover dental services, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedNemtAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.7i Resolved appeals related to non-emergency medical transportation (NEMT)", + "hint": "Enter the total number of appeals resolved by the plan during the reporting year that were related to NEMT. If the managed care plan does not cover NEMT, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedOtherServiceAppeals", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.7j Resolved appeals related to other service types", + "hint": "Enter the total number of appeals resolved by the plan during the reporting year that were related to services that do not fit into one of the categories listed above. If the managed care plan does not cover services other than those in items D1.IV.7a-i paid primarily by Medicaid, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + } + ] + } + }, + { + "name": "State Fair Hearings", + "path": "/mcpar/plan-level-indicators/appeals-state-fair-hearings-grievances/state-fair-hearings", + "pageType": "drawer", + "entityType": "plans", + "verbiage": { + "intro": { + "section": "Section D: Plan-Level Indicators", + "subsection": "Topic IV. Appeals, State Fair Hearings & Grievances", + "spreadsheet": "D1_Plan_Set", + "info": [ + { + "type": "heading", + "as": "h4", + "content": "State Fair Hearings" + } + ] + }, + "dashboardTitle": "Report state fair hearings and external medical reviews for each plan", + "drawerTitle": "Report state fair hearings and external medical reviews for", + "missingEntityMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing plans. You won't be able to complete this section until you've added all the plans that participate in this program in section A.7. " + }, + { + "type": "internalLink", + "content": "Add Plans", + "props": { + "to": "/mcpar/program-information/add-plans" + } + } + ] + } + ] + }, + "drawerForm": { + "id": "dsfh", + "fields": [ + { + "id": "plan_stateFairHearingRequestsFiled", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.8a State Fair Hearing requests", + "hint": "Enter the total number of State Fair Hearing requests filed during the reporting year with the plan that issued an adverse benefit determination.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_stateFairHearingRequestsWithFavorableDecision", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.8b State Fair Hearings resulting in a favorable decision for the enrollee", + "hint": "Enter the total number of State Fair Hearing decisions rendered during the reporting year that were partially or fully favorable to the enrollee.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_stateFairHearingRequestsWithAdverseDecision", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.8c State Fair Hearings resulting in an adverse decision for the enrollee", + "hint": "Enter the total number of State Fair Hearing decisions rendered during the reporting year that were adverse for the enrollee.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_stateFairHearingRequestsRetracted", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.8d State Fair Hearings retracted prior to reaching a decision", + "hint": "Enter the total number of State Fair Hearing decisions retracted (by the enrollee or the representative who filed a State Fair Hearing request on behalf of the enrollee) during the reporting year prior to reaching a decision.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_stateFairHearingRequestsWithExternalMedicalReviewWithFavorableDecision", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.9a External Medical Reviews resulting in a favorable decision for the enrollee", + "hint": "If your state does offer an external medical review process, enter the total number of external medical review decisions rendered during the reporting year that were partially or fully favorable to the enrollee. If your state does not offer an external medical review process, enter \"N/A\".

External medical review is defined and described at 42 CFR §438.402(c)(i)(B).", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_stateFairHearingRequestsWithExternalMedicalReviewWithAdverseDecision", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.9b External Medical Reviews resulting in an adverse decision for the enrollee", + "hint": "

If your state does offer an external medical review process, enter the total number of external medical review decisions rendered during the reporting year that were adverse to the enrollee. If your state does not offer an external medical review process, enter \"N/A\".

External medical review is defined and described at 42 CFR §438.402(c)(i)(B).

", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + } + ] + } + }, + { + "name": "Grievances Overview", + "path": "/mcpar/plan-level-indicators/appeals-state-fair-hearings-and-grievances/grievances-overview", + "pageType": "drawer", + "entityType": "plans", + "verbiage": { + "intro": { + "section": "Section D: Plan-Level Indicators", + "subsection": "Topic IV. Appeals, State Fair Hearings & Grievances", + "spreadsheet": "D1_Plan_Set", + "info": [ + { + "type": "heading", + "as": "h4", + "content": "Grievances Overview" + } + ] + }, + "dashboardTitle": "Report on grievances for each plan", + "drawerTitle": "Report on grievances for", + "missingEntityMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing plans. You won't be able to complete this section until you've added all the plans that participate in this program in section A.7. " + }, + { + "type": "internalLink", + "content": "Add Plans", + "props": { + "to": "/mcpar/program-information/add-plans" + } + } + ] + } + ] + }, + "drawerForm": { + "id": "dgo", + "fields": [ + { + "id": "plan_resolvedGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.10 Grievances resolved", + "hint": "

Enter the total number of grievances resolved by the plan during the reporting year.

A grievance is \"resolved\" when it has reached completion and been closed by the plan.

", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_activeGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.11 Active grievances", + "hint": "Enter the total number of grievances still pending or in process (not yet resolved) as of the end of the reporting year.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_ltssUserFieldGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.12 Grievances filed on behalf of LTSS users", + "hint": "

Enter the total number of grievances filed during the reporting year by or on behalf of LTSS users.

An LTSS user is an enrollee who received at least one LTSS service at any point during the reporting year (regardless of whether the enrollee was actively receiving LTSS at the time that the grievance was filed). If this does not apply, enter N/A.

", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_ltssUserFiledCriticalIncidentsWhenPreviouslyFiledGrievance", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.13 Number of critical incidents filed during the reporting period by (or on behalf of) an LTSS user who previously filed a grievance", + "hint": "

For managed care plans that cover LTSS, enter the number of critical incidents filed within the reporting year by (or on behalf of) LTSS users who previously filed grievances in the reporting year. The grievance and critical incident do not have to have been \"related\" to the same issue  - they only need to have been filed by (or on behalf of) the same enrollee. Neither the critical incident nor the grievance need to have been filed in relation to delivery of LTSS - they may have been filed for any reason, related to any service received (or desired) by an LTSS user.

If the managed care plan does not cover LTSS, the state should enter \"N/A\" in this field. Additionally, if the state already submitted this data for the reporting year via the CMS readiness review appeal and grievance report (because the managed care program or plan were new or serving new populations during the reporting year), and the readiness review tool was submitted for at least 6 months of the reporting year, the state can enter \"N/A\" in this field.

To calculate this number, states or managed care plans should first identify the LTSS users for whom critical incidents were filed during the reporting year, then determine whether those enrollees had filed a grievance during the reporting year, and whether the filing of the grievance preceded the filing of the critical incident.

", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_timyleResolvedGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.14 Number of grievances for which timely resolution was provided", + "hint": "

Enter the number of grievances for which timely resolution was provided by plan during the reporting year.

See 42 CFR §438.408(b)(1) for requirements related to the timely resolution of grievances.

", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + } + ] + } + }, + { + "name": "Grievances by Service", + "path": "/mcpar/plan-level-indicators/appeals-state-fair-hearings-grievances/grievances-by-service", + "pageType": "drawer", + "entityType": "plans", + "verbiage": { + "intro": { + "section": "Section D: Plan-Level Indicators", + "subsection": "Topic IV. Appeals, State Fair Hearings & Grievances", + "spreadsheet": "D1_Plan_Set", + "info": [ + { + "type": "heading", + "as": "h4", + "content": "Grievances by Service" + }, + { + "type": "p", + "content": "Report the number of grievances resolved by plan during the reporting period by service." + } + ] + }, + "dashboardTitle": "Report on grievances by service for each plan", + "drawerTitle": "Report on grievances by service for", + "drawerInfo": [ + { + "type": "p", + "content": "A single grievance may be related to multiple service types and may therefore be counted in multiple categories." + } + ], + "missingEntityMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing plans. You won't be able to complete this section until you've added all the plans that participate in this program in section A.7. " + }, + { + "type": "internalLink", + "content": "Add Plans", + "props": { + "to": "/mcpar/program-information/add-plans" + } + } + ] + } + ] + }, + "drawerForm": { + "id": "dgbs", + "fields": [ + { + "id": "plan_resolvedGeneralInpatientServiceGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.15a Resolved grievances related to general inpatient services", + "hint": "Enter the total number of grievances resolved by the plan during the reporting year that were related to general inpatient care, including diagnostic and laboratory services. Do not include grievances related to inpatient behavioral health services — those should be included in indicator D1.IV.15c. If the managed care plan does not cover this type of service, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedGeneralOutpatientServiceGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.15b Resolved grievances related to general outpatient services", + "hint": "Enter the total number of grievances resolved by the plan during the reporting year that were related to general outpatient care, including diagnostic and laboratory services. Do not include grievances related to outpatient behavioral health services — those should be included in indicator D1.IV.15d. If the managed care plan does not cover this type of service, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedInpatientBehavioralHealthServiceGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.15c Resolved grievances related to inpatient behavioral health services", + "hint": "Enter the total number of grievances resolved by the plan during the reporting year that were related to inpatient mental health and/or substance use services. If the managed care plan does not cover this type of service, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedOutpatientBehavioralHealthServiceGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.15d Resolved grievances related to outpatient behavioral health services", + "hint": "Enter the total number of grievances resolved by the plan during the reporting year that were related to outpatient mental health and/or substance use services. If the managed care plan does not cover this type of service, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedCoveredOutpatientPrescriptionDrugGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.15e Resolved grievances related to coverage of outpatient prescription drugs", + "hint": "Enter the total number of grievances resolved by the plan during the reporting year that were related to outpatient prescription drugs covered by the managed care plan. If the managed care plan does not cover this type of service, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedSnfServiceGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.15f Resolved grievances related to skilled nursing facility (SNF) services", + "hint": "Enter the total number of grievances resolved by the plan during the reporting year that were related to SNF services. If the managed care plan does not cover this type of service, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedLtssServiceGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.15g Resolved grievances related to long-term services and supports (LTSS)", + "hint": "Enter the total number of grievances resolved by the plan during the reporting year that were related to institutional LTSS or LTSS provided through home and community-based (HCBS) services, including personal care and self-directed services. If the managed care plan does not cover this type of service, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedDentalServiceGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.15h Resolved grievances related to dental services", + "hint": "Enter the total number of grievances resolved by the plan during the reporting year that were related to dental services. If the managed care plan does not cover this type of service, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedNemtGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.15i Resolved grievances related to non-emergency medical transportation (NEMT)", + "hint": "Enter the total number of grievances resolved by the plan during the reporting year that were related to NEMT. If the managed care plan does not cover this type of service, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedOtherServiceGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.15j Resolved grievances related to other service types", + "hint": "Enter the total number of grievances resolved by the plan during the reporting year that were related to services that do not fit into one of the categories listed above. If the managed care plan does not cover services other than those in items D1.IV.15a-i paid primarily by Medicaid, enter \"N/A\".", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + } + ] + } + }, + { + "name": "Grievances by Reason", + "path": "/mcpar/plan-level-indicators/appeals-state-fair-hearings-grievances/grievances-by-reason", + "pageType": "drawer", + "entityType": "plans", + "verbiage": { + "intro": { + "section": "Section D: Plan-Level Indicators", + "subsection": "Topic IV. Appeals, State Fair Hearings & Grievances", + "spreadsheet": "D1_Plan_Set", + "info": [ + { + "type": "heading", + "as": "h4", + "content": "Grievances by Reason" + }, + { + "type": "p", + "content": "Report the number of grievances resolved by plan during the reporting period by reason." + } + ] + }, + "dashboardTitle": "Report on grievances by reason for each plan", + "drawerTitle": "Report on grievances by reason for", + "drawerInfo": [ + { + "type": "p", + "content": "A single grievance may be related to multiple reasons and may therefore be counted in multiple categories." + } + ], + "missingEntityMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing plans. You won't be able to complete this section until you've added all the plans that participate in this program in section A.7. " + }, + { + "type": "internalLink", + "content": "Add Plans", + "props": { + "to": "/mcpar/program-information/add-plans" + } + } + ] + } + ] + }, + "drawerForm": { + "id": "dgbr", + "fields": [ + { + "id": "plan_resolvedCustomerServiceGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.16a Resolved grievances related to plan or provider customer service", + "hint": "

Enter the total number of grievances resolved by the plan during the reporting year that were related to plan or provider customer service.

Customer service grievances include complaints about interactions with the plan's Member Services department, provider offices or facilities, plan marketing agents, or any other plan or provider representatives.

", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedCareCaseManagementGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.16b Resolved grievances related to plan or provider care management/case management", + "hint": "

Enter the total number of grievances resolved by the plan during the reporting year that were related to plan or provider care management/case management.

Care management/case management grievances include complaints about the timeliness of an assessment or complaints about the plan or provider care or case management process.

", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedAccessToCareGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.16c Resolved grievances related to access to care/services from plan or provider", + "hint": "Enter the total number of grievances resolved by the plan during the reporting year that were related to access to care.

Access to care grievances include complaints about difficulties finding qualified in-network providers, excessive travel or wait times, or other access issues.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedQualityOfCareGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.16d Resolved grievances related to quality of care", + "hint": "Enter the total number of grievances resolved by the plan during the reporting year that were related to quality of care.

Quality of care grievances include complaints about the effectiveness, efficiency, equity, patient-centeredness, safety, and/or acceptability of care provided by a provider or the plan.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedPlanCommunicationGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.16e Resolved grievances related to plan communications", + "hint": "

Enter the total number of grievances resolved by the plan during the reporting year that were related to plan communications.

Plan communication grievances include grievances related to the clarity or accuracy of enrollee materials or other plan communications or to an enrollee's access to or the accessibility of enrollee materials or plan communications.

", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedPaymentBillingGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.16f Resolved grievances related to payment or billing issues", + "hint": "Enter the total number of grievances resolved by the plan during the reporting year that were filed for a reason related to payment or billing issues.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedSuspectedFraudGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.16g Resolved grievances related to suspected fraud", + "hint": "

Enter the total number of grievances resolved by the plan during the reporting year that were related to suspected fraud.

Suspected fraud grievances include suspected cases of financial/payment fraud perpetuated by a provider, payer, or other entity. Note: grievances reported in this row should only include grievances submitted to the managed care plan, not grievances submitted to another entity, such as a state Ombudsman or Office of the Inspector General.

", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedAbuseNeglectExploitationGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.16h Resolved grievances related to abuse, neglect or exploitation", + "hint": "

Enter the total number of grievances resolved by the plan during the reporting year that were related to abuse, neglect or exploitation.

Abuse/neglect/exploitation grievances include cases involving potential or actual patient harm.

", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedUntimelyResponseGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.16i Resolved grievances related to lack of timely plan response to a service authorization or appeal (including requests to expedite or extend appeals)", + "hint": "Enter the total number of grievances resolved by the plan during the reporting year that were filed due to a lack of timely plan response to a service authorization or appeal request (including requests to expedite or extend appeals).", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedDenialOfExpeditedAppealGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.16j Resolved grievances related to plan denial of expedited appeal", + "hint": "

Enter the total number of grievances resolved by the plan during the reporting year that were related to the plan's denial of an enrollee's request for an expedited appeal.

Per 42 CFR §438.408(b)(3), states must establish a timeframe for timely resolution of expedited appeals that is no longer than 72 hours after the MCO, PIHP or PAHP receives the appeal. If a plan denies a request for an expedited appeal, the enrollee or their representative have the right to file a grievance.

", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedOtherGrievances", + "type": "number", + "validation": "number", + "props": { + "label": "D1.IV.16k Resolved grievances filed for other reasons", + "hint": "Enter the total number of grievances resolved by the plan during the reporting year that were filed for a reason other than the reasons listed above.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + } + ] + } + } + ] + }, + { + "name": "VII: Quality Measures", + "path": "/mcpar/plan-level-indicators/quality-measures", + "pageType": "modalDrawer", + "entityType": "qualityMeasures", + "verbiage": { + "intro": { + "section": "Section D: Plan-Level Indicators", + "subsection": "Topic VII: Quality & Performance Measures", + "spreadsheet": "D2_Plan_Measures", + "info": [ + { + "type": "p", + "content": "Report on individual measures in each of the following eight domains: (1) Primary care access and preventive care, (2) Maternal and perinatal health, (3) Care of acute and chronic conditions, (4) Behavioral health care, (5) Dental and oral health services, (6) Health plan enrollee experience of care, (7) Long-term services and supports, and (8) Other. For composite measures, be sure to include each individual sub-measure component." + } + ] + }, + "dashboardTitle": "Quality & performance measure total count:", + "countEntitiesInTitle": true, + "addEntityButtonText": "Add quality & performance measure", + "missingReportingPeriodMessage": "Add the Measure Reporting Period for this quality and performance measure by editing the measure.", + "editEntityButtonText": "Edit measure", + "addEditModalAddTitle": "Add a quality & performance measure", + "addEditModalEditTitle": "Edit quality & performance measure", + "addEditModalMessage": "Complete the remaining indicators for this measure by saving the measure and selecting \"Enter measure results\".", + "deleteEntityButtonAltText": "Delete quality & performance measure", + "deleteModalTitle": "Delete quality measure?", + "deleteModalConfirmButtonText": "Yes, delete measure", + "deleteModalWarning": "You will lose all information entered for this measure. Are you sure you want to proceed?", + "entityMissingResponseMessage": "Missing measure results for one or more plans.", + "entityEmptyResponseMessage": "Error: no results entered", + "entityUnfinishedMessage": "Add the plan-level details for this quality and performance measure by entering measure results.", + "enterEntityDetailsButtonText": "Enter measure results", + "editEntityDetailsButtonText": "Edit measure results", + "drawerEyebrowTitle": "D2.VII.9a and D2.VII.9b", + "drawerTitle": "Add plan-level measure results", + "drawerNoFormMessage": "No plans added. To enter measure results, add all plans in A: Program Information - Add plans." + }, + "modalForm": { + "id": "dqm-modal", + "fields": [ + { + "id": "qualityMeasure_domain", + "type": "radio", + "validation": "radio", + "props": { + "label": "D2.VII.1 Measure domain", + "hint": "Select domain or add your own as needed.", + "choices": [ + { + "id": "Y3InqsLp4kSTgAUvTwq0CA", + "label": "Primary care access and preventative care" + }, + { + "id": "sS7VRlrnxka189jEhpdNaw", + "label": "Maternal and perinatal health" + }, + { + "id": "VkozZc87GUK2TB34Wbx4qQ", + "label": "Care of acute and chronic conditions" + }, + { + "id": "6GxkOAbVNkq3Z49YZ3coGQ", + "label": "Behavioral health care" + }, + { + "id": "bGXszezpLU2UGa4o9o3grw", + "label": "Dental and oral health services" + }, + { + "id": "A3XIBOzO2kiug971jxFoZw", + "label": "Health plan enrollee experience of care" + }, + { + "id": "yf7Lo8QK8kOPJqcXYgucMg", + "label": "Long-term services and supports" + }, + { + "id": "p7XrgO0am0uYpaks9bBXvg", + "label": "Other, specify", + "children": [ + { + "id": "qualityMeasure_domain-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "qualityMeasure_domain" + } + } + ] + } + ] + } + }, + { + "id": "qualityMeasure_name", + "type": "textarea", + "validation": "text", + "props": { + "label": "D2.VII.2 Measure name", + "hint": "What is the measure name?" + } + }, + { + "id": "qualityMeasure_nqfNumber", + "type": "text", + "validation": "text", + "props": { + "label": "D2.VII.3 National Quality Forum (NQF) number", + "hint": "What is the NQF number?" + } + }, + { + "id": "qualityMeasure_reportingRateType", + "type": "radio", + "validation": "radio", + "props": { + "label": "D2.VII.4 Measure reporting", + "hint": "Is measure reporting program-specific or cross-program? Select one.", + "choices": [ + { + "id": "lTIN7GiY2Ui2kJYrWzXqVw", + "label": "Program-specific rate" + }, + { + "id": "f58wKTe5tUGREFYDPnWRmg", + "label": "Cross-program rate", + "children": [ + { + "id": "qualityMeasure_crossProgramReportingRateProgramList", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "qualityMeasure_reportingRateType" + }, + "props": { + "label": "D2.VII.5 Measure reporting: List programs", + "hint": "What are the programs? Separate program names with a comma." + } + } + ] + } + ] + } + }, + { + "id": "qualityMeasure_set", + "type": "radio", + "validation": "radio", + "props": { + "label": "D2.VII.6 Measure set", + "hint": "What is the measure set? Select one.", + "choices": [ + { + "id": "tjSQLCDhgEy7H3VrhtUKxw", + "label": "Medicaid Child Core Set" + }, + { + "id": "XiXT7XWal0eko87XIgLpSg", + "label": "Medicaid Adult Core Set" + }, + { + "id": "beUZv1nYf0GA2JnGi5S8SQ", + "label": "State-specific" + }, + { + "id": "UFJDtz8jIUanZRXPqAUMCg", + "label": "HEDIS" + }, + { + "id": "70AlIcEQgEOofv0fqGqLpA", + "label": "Other, specify", + "children": [ + { + "id": "qualityMeasure_set-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "qualityMeasure_set" + } + } + ] + } + ] + } + }, + { + "id": "qualityMeasure_reportingPeriod", + "type": "radio", + "validation": "radio", + "props": { + "label": "D2.VII.7a Reporting period", + "hint": "Is the reporting period the same as what is requested in this report? Select yes or no.", + "choices": [ + { + "id": "XAalDWT7l0qPz676XFGSGQ", + "label": "Yes" + }, + { + "id": "keBGGlGpNkqkplwaviRuiA", + "label": "No", + "children": [ + { + "id": "qualityMeasure_reportingPeriodStartDate", + "type": "date", + "validation": { + "type": "date", + "nested": true, + "parentFieldName": "qualityMeasure_reportingPeriod" + }, + "props": { + "label": "D2.VII.7b Reporting period: Date range", + "hint": "What is the reporting period covered by the measure?

Start date", + "timetype": "startDate" + } + }, + { + "id": "qualityMeasure_reportingPeriodEndDate", + "type": "date", + "validation": { + "type": "endDate", + "dependentFieldName": "qualityMeasure_reportingPeriodStartDate", + "nested": true, + "parentFieldName": "qualityMeasure_reportingPeriod" + }, + "props": { + "hint": "End date", + "timetype": "endDate" + } + } + ] + } + ] + } + }, + { + "id": "qualityMeasure_description", + "type": "textarea", + "validation": "text", + "props": { + "label": "D2.VII.8 Measure description", + "hint": "For measures that are not part of standardized national measure sets (i.e. state-specific measures), states should provide a description of the measure (for example, numerator and denominator)." + } + } + ] + }, + "drawerForm": { + "id": "dqm-drawer", + "fields": [ + { + "id": "qualityMeasure_plan_measureResults", + "type": "text", + "validation": "text", + "repeat": "plans", + "props": { + "label": ": Measure Results", + "hint": "What are the measure results or values for this plan? Add free text or enter \"N/A\" if not applicable." + } + } + ] + } + }, + { + "name": "VIII: Sanctions", + "path": "/mcpar/plan-level-indicators/sanctions", + "pageType": "modalDrawer", + "entityType": "sanctions", + "verbiage": { + "intro": { + "section": "Section D: Plan-Level Indicators", + "subsection": "Topic VIII. Sanctions", + "spreadsheet": "D3_Plan_Sanctions", + "info": [ + { + "type": "p", + "content": "Describe sanctions that the state has issued for each plan. Report all known actions across the following domains: sanctions, administrative penalties, corrective action plans, other. Include any pending or unresolved actions." + }, + { + "type": "p", + "content": "42 CFR 438.66(e)(2)(viii) specifies that the MCPAR include the results of any sanctions or corrective action plans imposed by the State or other formal or informal intervention with a contracted MCO, PIHP, PAHP, or PCCM entity to improve performance." + } + ] + }, + "dashboardTitle": "Sanction total count:", + "countEntitiesInTitle": true, + "addEntityButtonText": "Add sanction", + "editEntityButtonText": "Edit sanction", + "addEditModalAddTitle": "Add sanction", + "addEditModalEditTitle": "Edit sanction", + "addEditModalMessage": "Complete the remaining indicators for this sanction by saving the sanction and selecting \"Enter sanction details\".", + "deleteEntityButtonAltText": "Delete sanction", + "deleteModalTitle": "Delete plan sanction?", + "deleteModalConfirmButtonText": "Yes, delete sanction", + "deleteModalWarning": "You will lose all information entered for this sanction. Are you sure you want to proceed?", + "entityUnfinishedMessage": "Complete the remaining indicators for this plan sanction by selecting \"Enter sanction details\".", + "enterEntityDetailsButtonText": "Enter sanction details", + "editEntityDetailsButtonText": "Edit sanction details", + "drawerTitle": "Add details for sanction", + "missingEntityMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing plans. You won't be able to complete this section until you've added all the plans that participate in this program in section A.7. " + }, + { + "type": "internalLink", + "content": "Add Plans", + "props": { + "to": "/mcpar/program-information/add-plans" + } + } + ] + } + ] + }, + "modalForm": { + "id": "ds-modal", + "fields": [ + { + "id": "sanction_interventionType", + "type": "radio", + "validation": "radio", + "props": { + "label": "D3.VIII.1 Intervention type", + "hint": "What type of intervention? Select one.", + "choices": [ + { + "id": "lF2t0ruXf0aPrT3EDd3IXA", + "label": "Civil monetary penalty" + }, + { + "id": "ZiV7GVUYRE6FUOsNACDZdg", + "label": "Suspension of new enrollment" + }, + { + "id": "Ie8Labh4MUOYeXjxLGdTOA", + "label": "Fine" + }, + { + "id": "U5kYTTiBwkSO9nkDBad6Gw", + "label": "Corrective action plan" + }, + { + "id": "AexbMuj1y0KnY6UqkW5o0Q", + "label": "Compliance letter" + }, + { + "id": "d45iDfmlk0S3u8AYTttYXA", + "label": "Liquidated damages" + }, + { + "id": "U4ALG08NZkOSEuTkOlf20w", + "label": "Other, specify", + "children": [ + { + "id": "sanction_interventionType-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "sanction_interventionType" + } + } + ] + } + ] + } + }, + { + "id": "sanction_interventionTopic", + "type": "radio", + "validation": "radio", + "props": { + "label": "D3.VIII.2 Plan performance issue", + "hint": "What area of plan performance was associated with the intervention? Select one.", + "choices": [ + { + "id": "x6Cwd4oSrki6De4SnpjrMQ", + "label": "Discrimination" + }, + { + "id": "HzVmv9UDIkKxZIogdJp7xQ", + "label": "False information" + }, + { + "id": "YBSfuKgdC0uEHGv4p0bi1g", + "label": "Financial issues" + }, + { + "id": "kB2nkoh27EG74eGG44pBrg", + "label": "Reporting" + }, + { + "id": "MXaon6GrskylPnGm2QHnJw", + "label": "Performance improvement" + }, + { + "id": "Ru46dEgst0eXi5s6bUA4Jg", + "label": "Timely access" + }, + { + "id": "GuYmG53wQ2sWmGlVnBIxnIof", + "label": "Mental Health and Substance Use Disorder Parity compliance" + }, + { + "id": "uFRKwEVzfE21KzEotYRkUw", + "label": "Other, specify", + "children": [ + { + "id": "sanction_interventionTopic-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "sanction_interventionTopic" + } + } + ] + } + ] + } + }, + { + "id": "sanction_planName", + "type": "dropdown", + "validation": "dropdown", + "props": { + "label": "D3.VIII.3 Plan name", + "hint": "What is the name of the plan attached to the sanction or corrective action plan? Select plan name.", + "options": "plans" + } + }, + { + "id": "sanction_interventionReason", + "type": "textarea", + "validation": "text", + "props": { + "label": "D3.VIII.4 Reason for intervention", + "hint": "What was the reason for intervention? Add a description." + } + } + ] + }, + "drawerForm": { + "id": "ds", + "fields": [ + { + "id": "sanction_noncomplianceInstances", + "type": "number", + "validation": "number", + "props": { + "label": "D3.VIII.5 Instances of non-compliance", + "hint": "How many instances were there of non-compliance in the reporting year? Add a number.", + "mask": "comma-separated" + } + }, + { + "id": "sanction_dollarAmount", + "type": "number", + "validation": "number", + "props": { + "label": "D3.VIII.6 Sanction amount", + "hint": "Add a dollar amount. Enter N/A for sanctions that do not carry financial penalties.", + "mask": "currency" + } + }, + { + "id": "sanction_assessmentDate", + "type": "date", + "validation": "date", + "props": { + "label": "D3.VIII.7 Date assessed", + "hint": "When was the plan sanctioned? Select a date." + } + }, + { + "id": "sanction_remediationCompleted", + "type": "radio", + "validation": "radio", + "props": { + "label": "D3.VIII.8 Remediation date non-compliance was corrected", + "hint": "Was the non-compliance remediated?", + "choices": [ + { + "id": "J9FTVN9fJpgXX6X2xJiAiP", + "label": "Yes, remediated", + "children": [ + { + "id": "sanction_remediationDate", + "type": "date", + "validation": { + "type": "date", + "nested": true, + "parentFieldName": "sanction_remediationCompleted" + }, + "props": { + "label": "D3.VIII.8a Remediation date non-compliance was corrected", + "hint": "What day was it remediated, i.e. When was the non-compliance corrected? Select a date." + } + } + ] + }, + { + "id": "uStbF2QLllAlyUvxU9CBWH", + "label": "Remediation in progress" + }, + { + "id": "oAcvChnL6FLUJorh8XfgyR", + "label": "No, no remediation" + } + ] + } + }, + { + "id": "sanction_correctiveActionPlan", + "type": "radio", + "validation": "radio", + "props": { + "label": "D3.VIII.9 Corrective action plan", + "hint": "Has the state sanctioned the plan within the previous two years, (e.g. corrective action plans or other informal interventions such as special outreach, focused technical assistance)?", + "choices": [ + { + "id": "doioZOW5CUmcCfO5TQXpbw", + "label": "Yes" + }, + { + "id": "E3KZlNwYTEGfvk5zuB426A", + "label": "No" + } + ] + } + } + ] + } + }, + { + "name": "X: Program Integrity", + "path": "/mcpar/plan-level-indicators/program-integrity", + "pageType": "drawer", + "entityType": "plans", + "verbiage": { + "intro": { + "section": "Section D: Plan-Level Indicators", + "subsection": "Topic X. Program Integrity", + "spreadsheet": "D1_Plan_Set" + }, + "dashboardTitle": "Report on program integrity for each plan", + "drawerTitle": "Program integrity for", + "missingEntityMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing plans. You won't be able to complete this section until you've added all the plans that participate in this program in section A.7. " + }, + { + "type": "internalLink", + "content": "Add Plans", + "props": { + "to": "/mcpar/program-information/add-plans" + } + } + ] + } + ] + }, + "drawerForm": { + "id": "dpi", + "fields": [ + { + "id": "plan_dedicatedProgramIntegrityStaff", + "type": "number", + "validation": "number", + "props": { + "label": "D1.X.1 Dedicated program integrity staff", + "hint": "Report or enter the number of dedicated program integrity staff for routine internal monitoring and compliance risks. Refer to 42 CFR 438.608(a)(1)(vii).", + "mask": "comma-separated" + } + }, + { + "id": "plan_openedProgramIntegrityInvestigations", + "type": "number", + "validation": "number", + "props": { + "label": "D1.X.2 Count of opened program integrity investigations", + "hint": "How many program integrity investigations were opened by the plan during the reporting year?", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_programIntegrityInvestigationsToEnrolleesRatio", + "type": "number", + "validation": "ratio", + "props": { + "label": "D1.X.3 Ratio of opened program integrity investigations to enrollees", + "hint": "What is the ratio of program integrity investigations opened by the plan in the past year to the average number of individuals enrolled in the plan per month during the reporting year (i.e., average member months)? Express this as a ratio per 1,000 beneficiaries.", + "mask": "ratio" + } + }, + { + "id": "plan_resolvedProgramIntegrityInvestigations", + "type": "number", + "validation": "number", + "props": { + "label": "D1.X.4 Count of resolved program integrity investigations", + "hint": "How many program integrity investigations were resolved by the plan during the reporting year?", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + }, + { + "id": "plan_resolvedProgramIntegrityInvestigationsToEnrolleesRatio", + "type": "number", + "validation": "ratio", + "props": { + "label": "D1.X.5 Ratio of resolved program integrity investigations to enrollees", + "hint": "What is the ratio of program integrity investigations resolved by the plan in the past year to the average number of individuals enrolled in the plan per month during the reporting year (i.e., average member months)? Express this as a ratio per 1,000 beneficiaries.", + "mask": "ratio" + } + }, + { + "id": "plan_programIntegrityReferralPath", + "type": "radio", + "validation": "radio", + "props": { + "label": "D1.X.6 Referral path for program integrity referrals to the state", + "hint": "What is the referral path that the plan uses to make program integrity referrals to the state? Select one.", + "choices": [ + { + "id": "1LOghpdQOkaOd76btMJ8qA", + "label": "Makes referrals to the Medicaid Fraud Control Unit (MFCU) only", + "children": [ + { + "id": "plan_mfcuProgramIntegrityReferrals", + "type": "number", + "validation": { + "type": "number", + "nested": true, + "parentFieldName": "plan_programIntegrityReferralPath" + }, + "props": { + "label": "D1.X.7 Count of program integrity referrals to the state", + "hint": "Enter the total number of program integrity referrals made during the reporting year.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + } + ] + }, + { + "id": "xkYWhuCMfYlT9MOWSLWk5JZb", + "label": "Makes referrals to the State Medicaid Agency (SMA) only", + "children": [ + { + "id": "plan_smaProgramIntegrityReferrals", + "type": "number", + "validation": { + "type": "number", + "nested": true, + "parentFieldName": "plan_programIntegrityReferralPath" + }, + "props": { + "label": "D1.X.7 Count of program integrity referrals to the state", + "hint": "Enter the count of program integrity referrals that the plan made to the state in the past year. Enter the count of referrals made.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + } + ] + }, + { + "id": "Urpmgw3wiUWyYfiFg8OTNQ", + "label": "Makes referrals to the SMA and MFCU concurrently", + "children": [ + { + "id": "plan_smaMfcuConcurrentProgramIntegrityReferrals", + "type": "number", + "validation": { + "type": "number", + "nested": true, + "parentFieldName": "plan_programIntegrityReferralPath" + }, + "props": { + "label": "D1.X.7 Count of program integrity referrals to the state", + "hint": "Enter the count of program integrity referrals that the plan made to the state in the past year. Enter the count of unduplicated referrals.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + } + ] + }, + { + "id": "ZGHlkg7EEkSb4gin6YSNlg", + "label": "Makes some referrals to the SMA and others directly to the MFCU", + "children": [ + { + "id": "plan_smaMfcuAggregateProgramIntegrityReferrals", + "type": "number", + "validation": { + "type": "number", + "nested": true, + "parentFieldName": "plan_programIntegrityReferralPath" + }, + "props": { + "label": "D1.X.7 Count of program integrity referrals to the state", + "hint": "Enter the count of program integrity referrals that the plan made to the state in the past year. Enter the count of referrals made to the SMA and the MFCU in aggregate.", + "mask": "comma-separated", + "decimalPlacesToRoundTo": 0 + } + } + ] + } + ] + } + }, + { + "id": "plan_programIntegrityReferralsPerThousandBeneficiaries", + "type": "number", + "validation": "ratio", + "props": { + "label": "D1.X.8 Ratio of program integrity referral to the state", + "hint": "What is the ratio of program integrity referrals listed in indicator D1.X.7 made to the state during the reporting year to the number of enrollees? For number of enrollees, use the average number of individuals enrolled in the plan per month during the reporting year (reported in indicator D1.I.1). Express this as a ratio per 1,000 beneficiaries.", + "mask": "ratio" + } + }, + { + "id": "plan_overpaymentReportingToStateStartDate", + "type": "date", + "validation": "date", + "props": { + "label": "D1.X.9a: Plan overpayment reporting to the state: Start Date", + "hint": "What is the start date of the reporting period covered by the plan's latest overpayment recovery report submitted to the state?" + } + }, + { + "id": "plan_overpaymentReportingToStateEndDate", + "type": "date", + "validation": "date", + "props": { + "label": "D1.X.9b: Plan overpayment reporting to the state: End Date", + "hint": "What is the end date of the reporting period covered by the plan's latest overpayment recovery report submitted to the state?" + } + }, + { + "id": "plan_overpaymentReportingToStateDollarAmount", + "type": "number", + "validation": "number", + "props": { + "label": "D1.X.9c: Plan overpayment reporting to the state: Dollar amount", + "hint": "From the plan's latest annual overpayment recovery report, what is the total amount of overpayments recovered?", + "mask": "currency" + } + }, + { + "id": "plan_overpaymentReportingToStateCorrespondingYearPremiumRevenue", + "type": "number", + "validation": "number", + "props": { + "label": "D1.X.9d: Plan overpayment reporting to the state: Corresponding premium revenue", + "hint": "What is the total amount of premium revenue for the corresponding reporting period (D1.X.9a-b)? (Premium revenue as defined in MLR reporting under 438.8(f)(2))", + "mask": "currency" + } + }, + { + "id": "plan_beneficiaryCircumstanceChangeReportingFrequency", + "type": "radio", + "validation": "radio", + "props": { + "label": "D1.X.10 Changes in beneficiary circumstances", + "hint": "Select the frequency the plan reports changes in beneficiary circumstances to the state.", + "choices": [ + { + "id": "D79APWVHmkGzLcmBQrRXOA", + "label": "Daily" + }, + { + "id": "MdxvXlRKGk2mK1n3L0JVhg", + "label": "Weekly" + }, + { + "id": "rhq0lLeGKUa0h8KDDmH0xw", + "label": "Bi-weekly" + }, + { + "id": "LPHYHUonAU6CDMPSmG5VhA", + "label": "Monthly" + }, + { + "id": "cuF3zAprGUGnP8KkSIVXow", + "label": "Bi-monthly" + }, + { + "id": "erownxjo30SA9PI9VdATTA", + "label": "Quarterly" + }, + { + "id": "2gx74mMf7Ou0BRI5Kyp2Ih", + "label": "Promptly when plan receives information about the change" + } + ] + } + } + ] + } + }, + { + "name": "XI: ILOS", + "path": "/mcpar/plan-level-indicators/ilos", + "pageType": "drawer", + "entityType": "plans", + "verbiage": { + "intro": { + "section": "Section D: Plan-Level Indicators", + "subsection": "Topic XI: ILOS", + "spreadsheet": "D4_Plan_ILOS", + "alert": "Beginning December 2025, this section must be completed by states that authorize ILOS. Submission of this data before December 2025 is optional.", + "info": [ + { + "type": "p", + "content": "If ILOSs are authorized for this program, report for each plan: if the plan offered any ILOS; if “Yes”, which ILOS the plan offered; and utilization data for each ILOS offered. If the plan offered an ILOS during the reporting period but there was no utilization, check that the ILOS was offered but enter \"0\" for utilization." + } + ] + }, + "dashboardTitle": "Report ILOS utilization for each managed care plan during the contract rating period.", + "drawerTitle": "", + "missingEntityMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing plans. You won't be able to complete this section until you've added all the managed care plans that serve enrollees in the program. " + }, + { + "type": "internalLink", + "content": "Add Plans", + "props": { + "to": "/mcpar/program-information/add-plans" + } + }, + { + "type": "html", + "content": "." + } + ] + } + ], + "missingIlosMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing ILOSs. You won't be able to complete this section until you've added all the names of authorized ILOSs for this program, if applicable. " + }, + { + "type": "internalLink", + "content": "Add ILOSs", + "props": { + "to": "/mcpar/program-information/add-in-lieu-of-services-and-settings" + } + }, + { + "type": "html", + "content": ". If ILOSs are not authorized for this program, proceed to the next section." + } + ] + } + ], + "missingPlansAndIlosMessage": [ + { + "type": "p", + "content": "This program is missing plans and ILOSs." + }, + { + "type": "p", + "children": [ + { + "type": "html", + "content": "If ILOSs are authorized for this program, you won't be able to complete this section until you've:" + }, + { + "type": "ol", + "children": [ + { + "type": "li", + "children": [ + { + "type": "html", + "content": "Added all the managed care plans that serve enrollees in the program by going to " + }, + { + "type": "internalLink", + "content": "Add Plans", + "props": { + "to": "/mcpar/program-information/add-plans" + } + }, + { + "type": "html", + "content": ", and" + } + ] + }, + { + "type": "li", + "children": [ + { + "type": "html", + "content": "Added all the names of authorized ILOSs for this program. " + }, + { + "type": "internalLink", + "content": "Add ILOSs", + "props": { + "to": "/mcpar/program-information/add-in-lieu-of-services-and-settings" + } + }, + { + "type": "html", + "content": "." + } + ] + } + ] + } + ] + }, + { + "type": "p", + "content": "If ILOSs are not authorized for this program, proceed to the next section." + } + ] + }, + "drawerForm": { + "id": "dilos", + "fields": [ + { + "id": "plan_ilosOfferedByPlan", + "type": "radio", + "validation": "radio", + "props": { + "label": "D4.XI.1 ILOSs offered by plan", + "hint": "Indicate whether this plan offered any ILOS to their enrollees.", + "choices": [ + { + "id": "lHVzkc6Zk12TvS6ocYXeS2n9", + "label": "No ILOSs were offered by this plan" + }, + { + "id": "1qdYiWh0SaO7IQ41NeOt0uJU", + "label": "Yes, at least 1 ILOS is offered by this plan", + "children": [ + { + "id": "plan_ilosUtilizationByPlan", + "type": "checkbox", + "validation": { + "type": "checkbox", + "nested": true, + "parentFieldName": "plan_ilosOfferedByPlan", + "parentOptionId": "plan_ilosOfferedByPlan-1qdYiWh0SaO7IQ41NeOt0uJU" + }, + "props": { + "label": "D4.XI.2a ILOSs utilization by plan", + "hint": "Select all ILOSs offered by this plan during the contract rating period. For each ILOS offered by the plan, enter the deduplicated number of enrollees that utilized this ILOS during the contract rating period. If the plan offered this ILOS during the contract rating period but there was no utilization, enter \"0\".", + "choices": [ + { + "label": "D4.XI.2b" + } + ] + } + } + ] + } + ] + } + } + ] + } + } + ] + }, + { + "name": "E: BSS Entity Indicators", + "path": "/mcpar/bss-entity-indicators", + "pageType": "drawer", + "entityType": "bssEntities", + "verbiage": { + "intro": { + "section": "Section E: BSS Entity Indicators", + "subsection": "Topic IX. Beneficiary Support System (BSS) Entities", + "spreadsheet": "E_BSS_Entities", + "info": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "Per 42 CFR 438.66(e)(2)(ix), the Managed Care Program Annual Report must provide information on and an assessment of the operation of the managed care program including activities and performance of the beneficiary support system. Information on how BSS entities support program-level functions is on the " + }, + { + "type": "internalLink", + "content": "Program-Level BSS", + "props": { + "to": "/mcpar/program-information/add-bss-entities" + } + }, + { + "type": "html", + "content": " page." + } + ] + } + ] + }, + "dashboardTitle": "Report on role and type for each BSS entity", + "drawerTitle": "Report on", + "missingEntityMessage": [ + { + "type": "p", + "children": [ + { + "type": "html", + "content": "This program is missing BSS entities. You won't be able to complete this section until you've added all the names of BSS entities that support enrollees in the program. " + }, + { + "type": "internalLink", + "content": "Add BSS entities", + "props": { + "to": "/mcpar/program-information/add-bss-entities" + } + } + ] + } + ] + }, + "drawerForm": { + "id": "ebssei", + "fields": [ + { + "id": "bssEntity_entityType", + "type": "checkbox", + "validation": "checkbox", + "props": { + "label": "E.IX.1 BSS entity type", + "hint": "What type of entity performed each BSS activity? Check all that apply. Refer to 42 CFR 438.71(b).", + "choices": [ + { + "id": "b8RT4wLcoU2yb0QgswyAfQ", + "label": "State Government Entity" + }, + { + "id": "n8Nje9xGS0SXCymALzc42g", + "label": "Local Government Entity" + }, + { + "id": "iDWw3TwoI0iHbO1V7XO1Nw", + "label": "Ombudsman Program" + }, + { + "id": "0l4OWGZg7keJKdoRr3rNNA", + "label": "State Health Insurance Assistance Program (SHIP)" + }, + { + "id": "9KfSY0XoS0Kn4AVEQWqYZw", + "label": "Aging and Disability Resource Network (ADRN)" + }, + { + "id": "TqLWs965B0e0EmYnaShjOQ", + "label": "Center for Independent Living (CIL)" + }, + { + "id": "XStmnayyVE6WDw2lhN682g", + "label": "Legal Assistance Organization" + }, + { + "id": "Zc6FUo3Ee0i3kbbcYa3G8Q", + "label": "Other Community-Based Organization" + }, + { + "id": "rXh51BskxUGvkWUaYtEVIA", + "label": "Subcontractor" + }, + { + "id": "vXL3hGQHSUazZCZzQyX3hw", + "label": "Enrollment Broker" + }, + { + "id": "xTEi7XgUvkGM4rU3FRaHDQ", + "label": "Consultant" + }, + { + "id": "9vVNL9HLokKe3c6h4WAiAg", + "label": "Academic/Research Organization" + }, + { + "id": "dgtCWe8drkivORajgmqYRw", + "label": "Other, specify", + "children": [ + { + "id": "bssEntity_entityType-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "bssEntity_entityType" + } + } + ] + } + ] + } + }, + { + "id": "bssEntity_entityRole", + "type": "checkbox", + "validation": "checkbox", + "props": { + "label": "E.IX.2 BSS entity role", + "hint": "What are the roles performed by the BSS entity? Check all that apply. Refer to 42 CFR 438.71(b).", + "choices": [ + { + "id": "aZ0uOjpYOE6zavUNXcZYrw", + "label": "Enrollment Broker/Choice Counseling" + }, + { + "id": "eU2xXBr95USN7KG6VuVs3w", + "label": "Beneficiary Outreach" + }, + { + "id": "GWTY3GEjGU2OhEOpqzm2AQ", + "label": "LTSS Complaint Access Point" + }, + { + "id": "aF6Gt3rcsEibKmYvlKUH2A", + "label": "LTSS Grievance/Appeals Education" + }, + { + "id": "gNJg0G5VXUmOk86B5pvyRg", + "label": "LTSS Grievance/Appeals Assistance" + }, + { + "id": "cCu7xtpMDEGeJwbuaiO5XQ", + "label": "Review/Oversight of LTSS Data" + }, + { + "id": "HcfrzcLqYU6faU0EBi9dfA", + "label": "Other, specify", + "children": [ + { + "id": "bssEntity_entityRole-otherText", + "type": "textarea", + "validation": { + "type": "text", + "nested": true, + "parentFieldName": "bssEntity_entityRole" + } + } + ] + } + ] + } + } + ] + } + }, + { + "name": "Review & Submit", + "path": "/mcpar/review-and-submit", + "pageType": "reviewSubmit" + } + ] +} From 1c7f1d1ea84d699ee5d4a08d0d80e39f37d3d98b Mon Sep 17 00:00:00 2001 From: Garrett Rabian <57802560+gmrabian@users.noreply.github.com> Date: Thu, 17 Oct 2024 16:03:55 -0400 Subject: [PATCH 15/35] Upgrade amplify to v6 (#11876) Co-authored-by: benmartin-coforma Co-authored-by: brittbujacich --- services/ui-src/index.html | 2 +- services/ui-src/package.json | 2 +- .../components/logins/LoginCognito.test.tsx | 41 +- .../src/components/logins/LoginCognito.tsx | 4 +- .../src/components/reports/ReportProvider.tsx | 1 + services/ui-src/src/index.tsx | 39 +- .../src/utils/api/providers/ApiProvider.tsx | 17 +- .../utils/api/requestMethods/banner.test.ts | 33 +- .../src/utils/api/requestMethods/banner.ts | 35 +- .../requestMethods/getRequestHeaders.test.ts | 19 +- .../api/requestMethods/getRequestHeaders.ts | 7 +- .../api/requestMethods/getTemplateUrl.test.ts | 8 +- .../api/requestMethods/getTemplateUrl.ts | 12 +- .../utils/api/requestMethods/report.test.ts | 47 +- .../src/utils/api/requestMethods/report.ts | 107 +- ...rovider.test.tsx => UserProvider.test.tsx} | 76 +- .../ui-src/src/utils/auth/UserProvider.tsx | 16 +- .../src/utils/auth/authLifecycle.test.tsx | 2 +- .../ui-src/src/utils/auth/authLifecycle.tsx | 7 +- .../ui-src/src/utils/testing/mockAsset.ts | 23 - .../ui-src/src/utils/testing/setupJest.tsx | 58 +- services/ui-src/yarn.lock | 3242 ++++++----------- 22 files changed, 1522 insertions(+), 2276 deletions(-) rename services/ui-src/src/utils/auth/{userProvider.test.tsx => UserProvider.test.tsx} (74%) diff --git a/services/ui-src/index.html b/services/ui-src/index.html index 636d5184a..8e7252ec8 100644 --- a/services/ui-src/index.html +++ b/services/ui-src/index.html @@ -12,7 +12,7 @@