diff --git a/coral/package.json b/coral/package.json
index 9df7b1291..dccd7566e 100644
--- a/coral/package.json
+++ b/coral/package.json
@@ -51,7 +51,7 @@
"react-hook-form": "^7.53.2",
"react-markdown": "^9.0.1",
"react-router-dom": "^6.27.0",
- "react-syntax-highlighter": "^15.5.0",
+ "react-syntax-highlighter": "^15.6.1",
"rehype-parse": "^9.0.1",
"rehype-remark": "^10.0.0",
"rehype-sanitize": "^6.0.0",
@@ -96,7 +96,7 @@
"openapi-typescript": "^7.4.3",
"prettier": "^3.3.3",
"prop-types": "^15.8.1",
- "react-aria": "^3.34.3",
+ "react-aria": "^3.36.0",
"react-test-renderer": "^18.3.1",
"rollup-plugin-visualizer": "^5.12.0",
"ts-jest": "^29.2.5",
diff --git a/coral/pnpm-lock.yaml b/coral/pnpm-lock.yaml
index 4d3e2ef9a..5d7f9b8a5 100644
--- a/coral/pnpm-lock.yaml
+++ b/coral/pnpm-lock.yaml
@@ -45,8 +45,8 @@ importers:
specifier: ^6.27.0
version: 6.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-syntax-highlighter:
- specifier: ^15.5.0
- version: 15.5.0(react@18.3.1)
+ specifier: ^15.6.1
+ version: 15.6.1(react@18.3.1)
rehype-parse:
specifier: ^9.0.1
version: 9.0.1
@@ -178,8 +178,8 @@ importers:
specifier: ^15.8.1
version: 15.8.1
react-aria:
- specifier: ^3.34.3
- version: 3.34.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: ^3.36.0
+ version: 3.36.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-test-renderer:
specifier: ^18.3.1
version: 18.3.1(react@18.3.1)
@@ -624,30 +624,30 @@ packages:
peerDependencies:
'@types/node': '>=18'
- '@internationalized/date@3.5.5':
- resolution: {integrity: sha512-H+CfYvOZ0LTJeeLOqm19E3uj/4YjrmOFtBufDHPfvtI80hFAMqtrp7oCACpe4Cil5l8S0Qu/9dYfZc/5lY8WQQ==}
-
'@internationalized/date@3.5.6':
resolution: {integrity: sha512-jLxQjefH9VI5P9UQuqB6qNKnvFt1Ky1TPIzHGsIlCi7sZZoMR8SdYbBGRvM0y+Jtb+ez4ieBzmiAUcpmPYpyOw==}
- '@internationalized/message@3.1.4':
- resolution: {integrity: sha512-Dygi9hH1s7V9nha07pggCkvmRfDd3q2lWnMGvrJyrOwYMe1yj4D2T9BoH9I6MGR7xz0biQrtLPsqUkqXzIrBOw==}
+ '@internationalized/date@3.6.0':
+ resolution: {integrity: sha512-+z6ti+CcJnRlLHok/emGEsWQhe7kfSmEW+/6qCzvKY67YPh7YOBfvc7+/+NXq+zJlbArg30tYpqLjNgcAYv2YQ==}
'@internationalized/message@3.1.5':
resolution: {integrity: sha512-hjEpLKFlYA3m5apldLqzHqw531qqfOEq0HlTWdfyZmcloWiUbWsYXD6YTiUmQmOtarthzhdjCAwMVrB8a4E7uA==}
- '@internationalized/number@3.5.3':
- resolution: {integrity: sha512-rd1wA3ebzlp0Mehj5YTuTI50AQEx80gWFyHcQu+u91/5NgdwBecO8BH6ipPfE+lmQ9d63vpB3H9SHoIUiupllw==}
+ '@internationalized/message@3.1.6':
+ resolution: {integrity: sha512-JxbK3iAcTIeNr1p0WIFg/wQJjIzJt9l/2KNY/48vXV7GRGZSv3zMxJsce008fZclk2cDC8y0Ig3odceHO7EfNQ==}
'@internationalized/number@3.5.4':
resolution: {integrity: sha512-h9huwWjNqYyE2FXZZewWqmCdkw1HeFds5q4Siuoms3hUQC5iPJK3aBmkFZoDSLN4UD0Bl8G22L/NdHpeOr+/7A==}
- '@internationalized/string@3.2.3':
- resolution: {integrity: sha512-9kpfLoA8HegiWTeCbR2livhdVeKobCnVv8tlJ6M2jF+4tcMqDo94ezwlnrUANBWPgd8U7OXIHCk2Ov2qhk4KXw==}
+ '@internationalized/number@3.6.0':
+ resolution: {integrity: sha512-PtrRcJVy7nw++wn4W2OuePQQfTqDzfusSuY1QTtui4wa7r+rGVtR75pO8CyKvHvzyQYi3Q1uO5sY0AsB4e65Bw==}
'@internationalized/string@3.2.4':
resolution: {integrity: sha512-BcyadXPn89Ae190QGZGDUZPqxLj/xsP4U1Br1oSy8yfIjmpJ8cJtGYleaodqW/EmzFjwELtwDojLkf3FhV6SjA==}
+ '@internationalized/string@3.2.5':
+ resolution: {integrity: sha512-rKs71Zvl2OKOHM+mzAFMIyqR5hI1d1O6BBkMK2/lkfg3fkmVh9Eeg0awcA8W2WqYqDOv6a86DIOlFpggwLtbuw==}
+
'@isaacs/cliui@8.0.2':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
@@ -804,47 +804,31 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/breadcrumbs@3.5.16':
- resolution: {integrity: sha512-OXLKKu4SmjnSaSHkk4kow5/aH/SzlHWPJt+Uq3xec9TwDOr/Ob8aeFVGFoY0HxfGozuQlUz+4e+d29vfA0jNWg==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/breadcrumbs@3.5.17':
- resolution: {integrity: sha512-LJQ+u3TbPmtAWZ3/qC6VfLCzXiwVoB6GmI+HJ2pbjs6H9L8MoiLHsA4mgcz+P0rvx7SCs0Rhvy4JurV6R/R4xw==}
+ '@react-aria/breadcrumbs@3.5.19':
+ resolution: {integrity: sha512-mVngOPFYVVhec89rf/CiYQGTfaLRfHFtX+JQwY7sNYNqSA+gO8p4lNARe3Be6bJPgH+LUQuruIY9/ZDL6LT3HA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/button@3.10.0':
resolution: {integrity: sha512-mhbn2tEsr991sjG6YMH6oN3ELWb4YvZZ8mnZHMNLa3l8T00PV0ClvQBsUndo6uSvuTHhpFzmMMkJFhYYUwCKlw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/button@3.9.8':
- resolution: {integrity: sha512-MdbMQ3t5KSCkvKtwYd/Z6sgw0v+r1VQFRYOZ4L53xOkn+u140z8vBpNeWKZh/45gxGv7SJn9s2KstLPdCWmIxw==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/calendar@3.5.11':
- resolution: {integrity: sha512-VLhBovLVu3uJXBkHbgEippmo/K58QLcc/tSJQ0aJUNyHsrvPgHEcj484cb+Uj/yOirXEIzaoW6WEvhcdKrb49Q==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/calendar@3.5.12':
- resolution: {integrity: sha512-C8VRjRwEVPaGoCtjOlC0lb3mVSz4ajbal8jfvcbp7LOqCcmOVTUbiM7EPTy60EfZRanFNSp2D1ZstEZDU+cqsg==}
+ '@react-aria/button@3.11.0':
+ resolution: {integrity: sha512-b37eIV6IW11KmNIAm65F3SEl2/mgj5BrHIysW6smZX3KoKWTGYsYfcQkmtNgY0GOSFfDxMCoolsZ6mxC00nSDA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/checkbox@3.14.6':
- resolution: {integrity: sha512-LICY1PR3WsW/VbuLMjZbxo75+poeo3XCXGcUnk6hxMlWfp/Iy/XHVsHlGu9stRPKRF8BSuOGteaHWVn6IXfwtA==}
+ '@react-aria/calendar@3.6.0':
+ resolution: {integrity: sha512-tZ3nd5DP8uxckbj83Pt+4RqgcTWDlGi7njzc7QqFOG2ApfnYDUXbIpb/Q4KY6JNlJskG8q33wo0XfOwNy8J+eg==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/checkbox@3.14.7':
- resolution: {integrity: sha512-aqVxXcr/8P7pQ7R34DlJX2SdBvWtHof9lLTVBY/9tgMplcKIoVBdlVUYPtqWxT3tGan+rruPQHbzTx8zJRFJyg==}
+ '@react-aria/checkbox@3.15.0':
+ resolution: {integrity: sha512-z/8xd4em7o0MroBXwkkwv7QRwiJaA1FwqMhRUb7iqtBGP2oSytBEDf0N7L09oci32a1P4ZPz2rMK5GlLh/PD6g==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/collections@3.0.0-alpha.5':
resolution: {integrity: sha512-8m8yZe1c5PYCylEN4lcG3ZL/1nyrON95nVsoknC8shY1uKP01oJd7w+f6hvVza0tJRQuVe4zW3gO4FVjv33a5g==}
@@ -858,41 +842,35 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/combobox@3.10.3':
- resolution: {integrity: sha512-EdDwr2Rp1xy7yWjOYHt2qF1IpAtUrkaNKZJzlIw1XSwcqizQY6E8orNPdZr6ZwD6/tgujxF1N71JTKyffrR0Xw==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/combobox@3.10.4':
- resolution: {integrity: sha512-jzLyRwpwH5SCfQl5giLSwLaw9EKlRiMG39kDZLRB4MQ1MN4sIdIP2TXBbdYcSLtYjduJm2JfRvs2ezI+QI+umA==}
+ '@react-aria/color@3.0.2':
+ resolution: {integrity: sha512-dSM5qQRcR1gRGYCBw0IGRmc29gjfoht3cQleKb8MMNcgHYa2oi5VdCs2yKXmYFwwVC6uPtnlNy9S6e0spqdr+w==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/datepicker@3.11.2':
- resolution: {integrity: sha512-6sbLln3VXSBcBRDgSACBzIzF/5KV5NlNOhZvXPFE6KqFw6GbevjZQTv5BNDXiwA3CQoawIRF7zgRvTANw8HkNA==}
+ '@react-aria/combobox@3.11.0':
+ resolution: {integrity: sha512-s88YMmPkMO1WSoiH1KIyZDLJqUwvM2wHXXakj3cYw1tBHGo4rOUFq+JWQIbM5EDO4HOR4AUUqzIUd0NO7t3zyg==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/datepicker@3.11.3':
- resolution: {integrity: sha512-HwGxDctFry5ew3Cu7gWpUVodaCg//V6NCihSRjLvnW/TWG+UFLzTafxTqqm8eRbicT3DJlXCLOUPk8Ek0txW6A==}
+ '@react-aria/datepicker@3.12.0':
+ resolution: {integrity: sha512-VYNXioLfddIHpwQx211+rTYuunDmI7VHWBRetCpH3loIsVFuhFSRchTQpclAzxolO3g0vO7pMVj9VYt7Swp6kg==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/dialog@3.5.17':
- resolution: {integrity: sha512-lvfEgaqg922J1hurscqCS600OZQVitGtdpo81kAefJaUzMnCxzrYviyT96aaW0simHOlimbYF5js8lxBLZJRaw==}
+ '@react-aria/dialog@3.5.20':
+ resolution: {integrity: sha512-l0GZVLgeOd3kL3Yj8xQW7wN3gn9WW3RLd/SGI9t7ciTq+I/FhftjXCWzXLlOCCTLMf+gv7eazecECtmoWUaZWQ==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/dialog@3.5.18':
- resolution: {integrity: sha512-j0x0OwDZKyW2GqBZl2Dw/pHl0uSCzhHOg5jNeulkZC8xQa8COuksQf5NFzPmgRPnzqpbgvSzCSs41ymS8spmFg==}
+ '@react-aria/disclosure@3.0.0':
+ resolution: {integrity: sha512-xO9QTQSvymujTjCs1iCQ4+dKZvtF/rVVaFZBKlUtqIqwTHMdqeZu4fh5miLEnTyVLNHMGzLrFggsd8Q+niC9Og==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/disclosure@3.0.0-alpha.0':
resolution: {integrity: sha512-/tleriRORdkRJf2JXjiRfhLfXA5WY0nPT3DoodZJgD5Fj/aCjrWXarVGUQuEk9vsH5pwinQiQB5So+cA+xF+UQ==}
@@ -900,43 +878,37 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/dnd@3.7.2':
- resolution: {integrity: sha512-NuE3EGqoBbe9aXAO9mDfbu4kMO7S4MCgkjkCqYi16TWfRUf38ajQbIlqodCx91b3LVN3SYvNbE3D4Tj5ebkljw==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
'@react-aria/dnd@3.7.3':
resolution: {integrity: sha512-SF7v1AzpXr4CSf98pSzjcSBCaezpP6rsSnSJTz0j2jrYfdQhX0MPA2lyxS+kgU1AEzkK19THQeHuj8hxQc0bVw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/focus@3.18.2':
- resolution: {integrity: sha512-Jc/IY+StjA3uqN73o6txKQ527RFU7gnG5crEl5Xy3V+gbYp2O5L3ezAo/E0Ipi2cyMbG6T5Iit1IDs7hcGu8aw==}
+ '@react-aria/dnd@3.8.0':
+ resolution: {integrity: sha512-JiqHY3E9fDU5Kb4gN22cuK6QNlpMCGe6ngR/BV+Q8mLEsdoWcoUAYOtYXVNNTRvCdVbEWI87FUU+ThyPpoDhNQ==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/focus@3.18.3':
resolution: {integrity: sha512-WKUElg+5zS0D3xlVn8MntNnkzJql2J6MuzAMP8Sv5WTgFDse/XGR842dsxPTIyKKdrWVCRegCuwa4m3n/GzgJw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/form@3.0.8':
- resolution: {integrity: sha512-8S2QiyUdAgK43M3flohI0R+2rTyzH088EmgeRArA8euvJTL16cj/oSOKMEgWVihjotJ9n6awPb43ZhKboyNsMg==}
+ '@react-aria/focus@3.19.0':
+ resolution: {integrity: sha512-hPF9EXoUQeQl1Y21/rbV2H4FdUR2v+4/I0/vB+8U3bT1CJ+1AFj1hc/rqx2DqEwDlEwOHN+E4+mRahQmlybq0A==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/form@3.0.9':
- resolution: {integrity: sha512-9M6IfC5t47G19c8roHWnkKd275BrECTzyTsc4rzf5OepJfHfG4evST6x+4gGOFYi8soC9XoQdJl4TRh/mft+gw==}
+ '@react-aria/form@3.0.11':
+ resolution: {integrity: sha512-oXzjTiwVuuWjZ8muU0hp3BrDH5qjVctLOF50mjPvqUbvXQTHhoDxWweyIXPQjGshaqBd2w4pWaE4A2rG2O/apw==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/grid@3.10.3':
- resolution: {integrity: sha512-l0r9mz05Gwjq3t6JOTNQOf+oAoWN0bXELPJtIr8m0XyXMPFCQe1xsTaX8igVQdrDmXyBc75RAWS0BJo2JF2fIA==}
+ '@react-aria/form@3.0.9':
+ resolution: {integrity: sha512-9M6IfC5t47G19c8roHWnkKd275BrECTzyTsc4rzf5OepJfHfG4evST6x+4gGOFYi8soC9XoQdJl4TRh/mft+gw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
'@react-aria/grid@3.10.4':
resolution: {integrity: sha512-3AjJ0hwRhOCIHThIZrGWrjAuKDpaZuBkODW3dvgLqtsNm3tL46DI6U9O3vfp8lNbrWMsXJgjRXwvXvdv0/gwCA==}
@@ -944,11 +916,17 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/gridlist@3.9.3':
- resolution: {integrity: sha512-bb9GnKKeuL6NljoVUcHxr9F0cy/2WDOXRYeMikTnviRw6cuX95oojrhFfCUvz2d6ID22Btrvh7LkE+oIPVuc+g==}
+ '@react-aria/grid@3.11.0':
+ resolution: {integrity: sha512-lN5FpQgu2Rq0CzTPWmzRpq6QHcMmzsXYeClsgO3108uVp1/genBNAObYVTxGOKe/jb9q99trz8EtIn05O6KN1g==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@react-aria/gridlist@3.10.0':
+ resolution: {integrity: sha512-UcblfSZ7kJBrjg9mQ5VbnRevN81UiYB4NuL5PwIpBpridO7tnl4ew6+96PYU7Wj1chHhPS3x0b0zmuSVN7A0LA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/gridlist@3.9.4':
resolution: {integrity: sha512-gGzS4ToSynn2KBycf9UCsWIJIbVl4RjoCjPF4NnukwzHmrXwbtZnlF0xsORQ5QxfqHH9UehTAHWFvOOHJSZZ2w==}
@@ -956,69 +934,52 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/i18n@3.12.2':
- resolution: {integrity: sha512-PvEyC6JWylTpe8dQEWqQwV6GiA+pbTxHQd//BxtMSapRW3JT9obObAnb/nFhj3HthkUvqHyj0oO1bfeN+mtD8A==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
'@react-aria/i18n@3.12.3':
resolution: {integrity: sha512-0Tp/4JwnCVNKDfuknPF+/xf3/woOc8gUjTU2nCjO3mCVb4FU7KFtjxQ2rrx+6hpIVG6g+N9qfMjRa/ggVH0CJg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/interactions@3.22.2':
- resolution: {integrity: sha512-xE/77fRVSlqHp2sfkrMeNLrqf2amF/RyuAS6T5oDJemRSgYM3UoxTbWjucPhfnoW7r32pFPHHgz4lbdX8xqD/g==}
+ '@react-aria/i18n@3.12.4':
+ resolution: {integrity: sha512-j9+UL3q0Ls8MhXV9gtnKlyozq4aM95YywXqnmJtzT1rYeBx7w28hooqrWkCYLfqr4OIryv1KUnPiCSLwC2OC7w==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/interactions@3.22.3':
resolution: {integrity: sha512-RRUb/aG+P0IKTIWikY/SylB6bIbLZeztnZY2vbe7RAG5MgVaCgn5HQ45SI15GlTmhsFG8CnF6slJsUFJiNHpbQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/label@3.7.11':
- resolution: {integrity: sha512-REgejE5Qr8cXG/b8H2GhzQmjQlII/0xQW/4eDzydskaTLvA7lF5HoJUE6biYTquH5va38d8XlH465RPk+bvHzA==}
+ '@react-aria/interactions@3.22.5':
+ resolution: {integrity: sha512-kMwiAD9E0TQp+XNnOs13yVJghiy8ET8L0cbkeuTgNI96sOAp/63EJ1FSrDf17iD8sdjt41LafwX/dKXW9nCcLQ==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/label@3.7.12':
resolution: {integrity: sha512-u9xT90lAlgb7xiv+p0md9QwCHz65XL7tjS5e29e88Rs3ptkv3aQubTqxVOUTEwzbNUT4A1QqTjUm1yfHewIRUw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/link@3.7.4':
- resolution: {integrity: sha512-E8SLDuS9ssm/d42+3sDFNthfMcNXMUrT2Tq1DIZt22EsMcuEzmJ9B0P7bDP5RgvIw05xVGqZ20nOpU4mKTxQtA==}
+ '@react-aria/label@3.7.13':
+ resolution: {integrity: sha512-brSAXZVTey5RG/Ex6mTrV/9IhGSQFU4Al34qmjEDho+Z2qT4oPwf8k7TRXWWqzOU0ugYxekYbsLd2zlN3XvWcg==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/link@3.7.5':
- resolution: {integrity: sha512-j0F1BIdNoE7Tl+0KzzjbrmYuxt4aWAmDZDHvJKiYg71Jb1BAPz71eE1O1ybMoO04+OG/6HrRZTragfSQLAJ58A==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/listbox@3.13.3':
- resolution: {integrity: sha512-htluPyDfFtn66OEYaJdIaFCYH9wGCNk30vOgZrQkPul9F9Cjce52tTyPVR0ERsf14oCUsjjS5qgeq3dGidRqEw==}
+ '@react-aria/link@3.7.7':
+ resolution: {integrity: sha512-eVBRcHKhNSsATYWv5wRnZXRqPVcKAWWakyvfrYePIKpC3s4BaHZyTGYdefk8ZwZdEOuQZBqLMnjW80q1uhtkuA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/listbox@3.13.4':
- resolution: {integrity: sha512-2aG4jzlB+srYBeM9ap/BNZe0E04yMjY2dPGXcigkaSJt6/yYAHCygXuouf2MzvBfkdV4QWyHIIgWZmAXXl6reg==}
+ '@react-aria/listbox@3.13.6':
+ resolution: {integrity: sha512-6hEXEXIZVau9lgBZ4VVjFR3JnGU+fJaPmV3HP0UZ2ucUptfG0MZo24cn+ZQJsWiuaCfNFv5b8qribiv+BcO+Kg==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/live-announcer@3.3.4':
- resolution: {integrity: sha512-w8lxs35QrRrn6pBNzVfyGOeqWdxeVKf9U6bXIVwhq7rrTqRULL8jqy8RJIMfIs1s8G5FpwWYjyBOjl2g5Cu1iA==}
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/live-announcer@3.4.0':
resolution: {integrity: sha512-VBxEdMq2SbtRbNTQNcDR2G6E3lEl5cJSBiHTTO8Ln1AL76LiazrylIXGgoktqzCfRQmyq0v8CHk1cNKDU9mvJg==}
- '@react-aria/menu@3.15.3':
- resolution: {integrity: sha512-vvUmVjJwIg3h2r+7isQXTwlmoDlPAFBckHkg94p3afrT1kNOTHveTsaVl17mStx/ymIioaAi3PrIXk/PZXp1jw==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-aria/live-announcer@3.4.1':
+ resolution: {integrity: sha512-4X2mcxgqLvvkqxv2l1n00jTzUxxe0kkLiapBGH1LHX/CxA1oQcHDqv8etJ2ZOwmS/MSBBiWnv3DwYHDOF6ubig==}
'@react-aria/menu@3.15.4':
resolution: {integrity: sha512-4wfq8Lb7AltgSzBHdtypiPOnsRm8hHv7PUuHhlq/VT9yAkEFk4Flc7vKVF6VSFqrnCfyCf66B5aeapjNInAONg==}
@@ -1026,21 +987,16 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/meter@3.4.16':
- resolution: {integrity: sha512-hJqKnEE6mmK2Psx5kcI7NZ44OfTg0Bp7DatQSQ4zZE4yhnykRRwxqSKjze37tPR63cCqgRXtQ5LISfBfG54c0Q==}
+ '@react-aria/menu@3.16.0':
+ resolution: {integrity: sha512-TNk+Vd3TbpBPUxEloAdHRTaRxf9JBK7YmkHYiq0Yj5Lc22KS0E2eTyhpPM9xJvEWN2TlC5TEvNfdyui2kYWFFQ==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/meter@3.4.17':
- resolution: {integrity: sha512-08wbQhfvVWzpWilhn/WD7cQ7TqafS/66umTk7+X6BW6TrS1//6loNNJV62IC3F7sskel4iEAtl2gW0WpW8zEdg==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/numberfield@3.11.6':
- resolution: {integrity: sha512-nvEWiQcWRwj6O2JXmkXEeWoBX/GVZT9zumFJcew3XknGTWJUr3h2AOymIQFt9g4mpag8IgOFEpSIlwhtZHdp1A==}
+ '@react-aria/meter@3.4.18':
+ resolution: {integrity: sha512-tTX3LLlmDIHqrC42dkdf+upb1c4UbhlpZ52gqB64lZD4OD4HE+vMTwNSe+7MRKMLvcdKPWCRC35PnxIHZ15kfQ==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/numberfield@3.11.7':
resolution: {integrity: sha512-9bqg4sKqc5XLppHzJFRhgtkoeMu0N6Zg0AuVSiE/3CxE5Ad+y8tKpFEx9zh4o5BItyOWy18w5ZXnKjJGjd7waQ==}
@@ -1048,11 +1004,11 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/overlays@3.23.2':
- resolution: {integrity: sha512-vjlplr953YAuJfHiP4O+CyrTlr6OaFgXAGrzWq4MVMjnpV/PT5VRJWYFHR0sUGlHTPqeKS4NZbi/xCSgl/3pGQ==}
+ '@react-aria/numberfield@3.11.9':
+ resolution: {integrity: sha512-3tiGPx2y4zyOV7PmdBASes99ZZsFTZAJTnU45Z+p1CW4131lw7y2ZhbojBl7U6DaXAJvi1z6zY6cq2UE9w5a0Q==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/overlays@3.23.3':
resolution: {integrity: sha512-vRW4DL466a27BBIP6dQqmmei4nX/nsur6DyF0Hmd46ygwOdvdA+5MwvXZUz9yUamB79UeS9BMQZuBVwhjoMwBQ==}
@@ -1060,53 +1016,32 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/progress@3.4.16':
- resolution: {integrity: sha512-RbDIFQg4+/LG+KYZeLAijt2zH7K2Gp0CY9RKWdho3nU5l3/w57Fa7NrfDGWtpImrt7bR2nRmXMA6ESfr7THfrg==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/progress@3.4.17':
- resolution: {integrity: sha512-5+01WNibLoNS5KcfU5p6vg7Lhz17plqqzv/uITx28zzj3saaj0VLR7n57Ig2fXe8ZEQoUS89BS3sIEsIf96S1A==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/radio@3.10.7':
- resolution: {integrity: sha512-o2tqIe7xd1y4HeCBQfz/sXIwLJuI6LQbVoCQ1hgk/5dGhQ0LiuXohRYitGRl9zvxW8jYdgLULmOEDt24IflE8A==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/radio@3.10.8':
- resolution: {integrity: sha512-/vKQhKqpoCB/VqHuc46OOU+31HFtg6svcYzHBbz0wN/DSVCygYeTfB/36kY7x2GWWkT0pCsB4OcHJ+/0G3EfkQ==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/searchfield@3.7.8':
- resolution: {integrity: sha512-SsF5xwH8Us548QgzivvbM7nhFbw7pu23xnRRIuhlP3MwOR3jRUFh17NKxf3Z0jvrDv/u0xfm3JKHIgaUN0KJ2A==}
+ '@react-aria/overlays@3.24.0':
+ resolution: {integrity: sha512-0kAXBsMNTc/a3M07tK9Cdt/ea8CxTAEJ223g8YgqImlmoBBYAL7dl5G01IOj67TM64uWPTmZrOklBchHWgEm3A==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/searchfield@3.7.9':
- resolution: {integrity: sha512-EHODG7HDFthwG5tx4fh+WP2hjNOp/rPAqdNScKBAN73nEf0F/qQpIwmdZF0EycCOzGSM5hhihjm0yMtTFYuzOQ==}
+ '@react-aria/progress@3.4.18':
+ resolution: {integrity: sha512-FOLgJ9t9i1u3oAAimybJG6r7/soNPBnJfWo4Yr6MmaUv90qVGa1h6kiuM5m9H/bm5JobAebhdfHit9lFlgsCmg==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/select@3.14.10':
- resolution: {integrity: sha512-xHkAJqvfKgnH5mVYwZj3ME7/Q3wUzgUZDK/iVuXUs3cAYap8ybM2d/2zOGcqv1keZHBUzwp9QtaN//FYK13jIA==}
+ '@react-aria/radio@3.10.10':
+ resolution: {integrity: sha512-NVdeOVrsrHgSfwL2jWCCXFsWZb+RMRZErj5vthHQW4nkHECGOzeX56VaLWTSvdoCPqi9wdIX8A6K9peeAIgxzA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/select@3.14.9':
- resolution: {integrity: sha512-tiNgMyA2G9nKnFn3pB/lMSgidNToxSFU7r6l4OcG+Vyr63J7B/3dF2lTXq8IYhlfOR3K3uQkjroSx52CmC3NDw==}
+ '@react-aria/searchfield@3.7.11':
+ resolution: {integrity: sha512-wFf6QxtBFfoxy0ANxI0+ftFEBGynVCY0+ce4H4Y9LpUTQsIKMp3sdc7LoUFORWw5Yee6Eid5cFPQX0Ymnk+ZJg==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/selection@3.19.3':
- resolution: {integrity: sha512-GYoObXCXlmGK08hp7Qfl6Bk0U+bKP5YDWSsX+MzNjJsqzQSLm4S06tRB9ACM7gIo9dDCvL4IRxdSYTJAlJc6bw==}
+ '@react-aria/select@3.15.0':
+ resolution: {integrity: sha512-zgBOUNy81aJplfc3NKDJMv8HkXjBGzaFF3XDzNfW8vJ7nD9rcTRUN5SQ1XCEnKMv12B/Euk9zt6kd+tX0wk1vQ==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/selection@3.20.0':
resolution: {integrity: sha512-h3giMcXo4SMZRL5HrqZvOLNTsdh5jCXwLUx0wpj/2EF0tcYQL6WDfn1iJ+rHARkUIs7X70fUV8iwlbUySZy1xg==}
@@ -1114,31 +1049,32 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/separator@3.4.2':
- resolution: {integrity: sha512-Xql9Kg3VlGesEUC7QheE+L5b3KgBv0yxiUU+/4JP8V2vfU/XSz4xmprHEeq7KVQVOetn38iiXU8gA5g26SEsUA==}
+ '@react-aria/selection@3.21.0':
+ resolution: {integrity: sha512-52JJ6hlPcM+gt0VV3DBmz6Kj1YAJr13TfutrKfGWcK36LvNCBm1j0N+TDqbdnlp8Nue6w0+5FIwZq44XPYiBGg==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/separator@3.4.3':
- resolution: {integrity: sha512-L+eCmSGfRJ9jScHZqBkmOkp44LBARisDjRdYbGrLlsAEcOiHUXufnfpxz2rgkUGBdUgnI9hIk12q5kdy0UxGjg==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/slider@3.7.11':
- resolution: {integrity: sha512-2WAwjANXPsA2LHJ5nxxV4c7ihFAzz2spaBz8+FJ7MDYE7WroYnE8uAXElea1aGo+Lk0DTiAdepLpBkggqPNanw==}
+ '@react-aria/separator@3.4.4':
+ resolution: {integrity: sha512-dH+qt0Mdh0nhKXCHW6AR4DF8DKLUBP26QYWaoThPdBwIpypH/JVKowpPtWms1P4b36U6XzHXHnTTEn/ZVoCqNA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/slider@3.7.12':
resolution: {integrity: sha512-yZWBGxDHBL5Gjjdnz+igdO7VfYND9iZsSqynadZthWtfy1jA+qBR25I+Soc0D9gkr/2/JUJkFgkllYF1RzWMUQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/spinbutton@3.6.8':
- resolution: {integrity: sha512-OJMAYRIZ0WrWE+5tZsywrSg4t+aOwl6vl/e1+J64YcGMM+p+AKd61KGG5T0OgNSORXjoVIZOmj6wZ6Od4xfPMw==}
+ '@react-aria/slider@3.7.14':
+ resolution: {integrity: sha512-7rOiKjLkEZ0j7mPMlwrqivc+K4OSfL14slaQp06GHRiJkhiWXh2/drPe15hgNq55HmBQBpA0umKMkJcqVgmXPA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@react-aria/spinbutton@3.6.10':
+ resolution: {integrity: sha512-nhYEYk7xUNOZDaqiQ5w/nHH9ouqjJbabTWXH+KK7UR1oVGfo4z1wG94l8KWF3Z6SGGnBxzLJyTBguZ4g9aYTSg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/spinbutton@3.6.9':
resolution: {integrity: sha512-m+uVJdiIc2LrLVDGjU7p8P2O2gUvTN26GR+NgH4rl+tUSuAB0+T1rjls/C+oXEqQjCpQihEB9Bt4M+VHpzmyjA==}
@@ -1146,98 +1082,70 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/ssr@3.9.5':
- resolution: {integrity: sha512-xEwGKoysu+oXulibNUSkXf8itW0npHHTa6c4AyYeZIJyRoegeteYuFpZUBPtIDE8RfHdNsSmE1ssOkxRnwbkuQ==}
- engines: {node: '>= 12'}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
'@react-aria/ssr@3.9.6':
resolution: {integrity: sha512-iLo82l82ilMiVGy342SELjshuWottlb5+VefO3jOQqQRNYnJBFpUSadswDPbRimSgJUZuFwIEYs6AabkP038fA==}
engines: {node: '>= 12'}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/switch@3.6.7':
- resolution: {integrity: sha512-yBNvKylhc3ZRQ0+7mD0mIenRRe+1yb8YaqMMZr8r3Bf87LaiFtQyhRFziq6ZitcwTJz5LEWjBihxbSVvUrf49w==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/switch@3.6.8':
- resolution: {integrity: sha512-6Q0w7o+liB0ztKPL9UaRfX+hPPuy71AL3SuVCMK7RKfPqZwcmlwUDp2gr3j5fvs8gLev0r42XtEBqmGwkHTkEw==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/table@3.15.3':
- resolution: {integrity: sha512-nQCLjlEvyJHyuijHw8ESqnA9fxNJfQHx0WPcl08VDEb8VxcE/MVzSAIedSWaqjG5k9Oflz6o/F/zHtzw4AFAow==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/table@3.15.4':
- resolution: {integrity: sha512-t4+vtUF63i6OrXmZ0AA/RmWyIt8cieUm7cSXhQMooAgUjkvVqTNkQQRsntVOb+UNI5KmiGSe4jB3H4GVXz2X9w==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-aria/tabs@3.9.5':
- resolution: {integrity: sha512-aQZGAoOIg1B16qlvXIy6+rHbNBNVcWkGjOjeyvqTTPMjXt/FmElkICnqckI7MRJ1lTqzyppCOBitYOHSXRo8Uw==}
+ '@react-aria/ssr@3.9.7':
+ resolution: {integrity: sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==}
+ engines: {node: '>= 12'}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/tabs@3.9.6':
- resolution: {integrity: sha512-iPQ2Im+srnSB06xIdVNHZZDJnZmUR0IG0MZAp6FXmbkCeLAd9tZQHgSFYwswBfgAStNnyFQHP5aSBJOJMRCACg==}
+ '@react-aria/switch@3.6.10':
+ resolution: {integrity: sha512-FtaI9WaEP1tAmra1sYlAkYXg9x75P5UtgY8pSbe9+1WRyWbuE1QZT+RNCTi3IU4fZ7iJQmXH6+VaMyzPlSUagw==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/tag@3.4.5':
- resolution: {integrity: sha512-iyJuATQ8t2cdLC7hiZm143eeZze/MtgxaMq0OewlI9TUje54bkw2Q+CjERdgisIo3Eemf55JJgylGrTcalEJAg==}
+ '@react-aria/table@3.16.0':
+ resolution: {integrity: sha512-9xF9S3CJ7XRiiK92hsIKxPedD0kgcQWwqTMtj3IBynpQ4vsnRiW3YNIzrn9C3apjknRZDTSta8O2QPYCUMmw2A==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/tag@3.4.6':
- resolution: {integrity: sha512-Uf1sPabwJx99diyXJTaVguiYozS49opjQxmK1PPbb87ipNN1YlSDVbP05IelVMbnbxXHudsRmzPOBmmblcj1GQ==}
+ '@react-aria/tabs@3.9.8':
+ resolution: {integrity: sha512-Nur/qRFBe+Zrt4xcCJV/ULXCS3Mlae+B89bp1Gl20vSDqk6uaPtGk+cS5k03eugOvas7AQapqNJsJgKd66TChw==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/textfield@3.14.8':
- resolution: {integrity: sha512-FHEvsHdE1cMR2B7rlf+HIneITrC40r201oLYbHAp3q26jH/HUujzFBB9I20qhXjyBohMWfQLqJhSwhs1VW1RJQ==}
+ '@react-aria/tag@3.4.8':
+ resolution: {integrity: sha512-exWl52bsFtJuzaqMYvSnLteUoPqb3Wf+uICru/yRtREJsWVqjJF38NCVlU73Yqd9qMPTctDrboSZFAWAWKDxoA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/textfield@3.14.9':
resolution: {integrity: sha512-LPwZhthDVLyvnzXWco4eyYCD2pFmQ4Vw9ha9tb3QkZUIP6j8E52y76j0c59Nq7XYus3IHatVe7yYQk7kbo8Zrg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/toggle@3.10.7':
- resolution: {integrity: sha512-/RJQU8QlPZXRElZ3Tt10F5K5STgUBUGPpfuFUGuwF3Kw3GpPxYsA1YAVjxXz2MMGwS0+y6+U/J1xIs1AF0Jwzg==}
+ '@react-aria/textfield@3.15.0':
+ resolution: {integrity: sha512-V5mg7y1OR6WXYHdhhm4FC7QyGc9TideVRDFij1SdOJrIo5IFB7lvwpOS0GmgwkVbtr71PTRMjZnNbrJUFU6VNA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/toggle@3.10.8':
- resolution: {integrity: sha512-N6WTgE8ByMYY+ZygUUPGON2vW5NrxwU91H98+Nozl+Rq6ZYR2fD9i8oRtLtrYPxjU2HmaFwDyQdWvmMJZuDxig==}
+ '@react-aria/toggle@3.10.10':
+ resolution: {integrity: sha512-QwMT/vTNrbrILxWVHfd9zVQ3mV2NdBwyRu+DphVQiFAXcmc808LEaIX2n0lI6FCsUDC9ZejCyvzd91/YemdZ1Q==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/toolbar@3.0.0-beta.9':
- resolution: {integrity: sha512-P80zgbPb0aIg22fHlgHRXXUSpNSAOnh1ljsLiSHAGdXPrC5nRijYwwKi7DNRsXqD+ljEJwF6ekZPo95dXXeYAA==}
+ '@react-aria/toolbar@3.0.0-beta.11':
+ resolution: {integrity: sha512-LM3jTRFNDgoEpoL568WaiuqiVM7eynSQLJis1hV0vlVnhTd7M7kzt7zoOjzxVb5Uapz02uCp1Fsm4wQMz09qwQ==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-aria/tooltip@3.7.7':
- resolution: {integrity: sha512-UOTTDbbUz7OaE48VjNSWl+XQbYCUs5Gss4I3Tv1pfRLXzVtGYXv3ur/vRayvZR0xd12ANY26fZPNkSmCFpmiXw==}
+ '@react-aria/toolbar@3.0.0-beta.9':
+ resolution: {integrity: sha512-P80zgbPb0aIg22fHlgHRXXUSpNSAOnh1ljsLiSHAGdXPrC5nRijYwwKi7DNRsXqD+ljEJwF6ekZPo95dXXeYAA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/tooltip@3.7.8':
- resolution: {integrity: sha512-dlWfS3w8E6dw5Xoist4cVX2GQE5oh3VQr88dRyLto7BAPLFrp3I+8c9mZCVUobLS/f5QcQzLkqw750s4ENCyiw==}
+ '@react-aria/tooltip@3.7.10':
+ resolution: {integrity: sha512-Udi3XOnrF/SYIz72jw9bgB74MG/yCOzF5pozHj2FH2HiJlchYv/b6rHByV/77IZemdlkmL/uugrv/7raPLSlnw==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/tree@3.0.0-beta.0':
resolution: {integrity: sha512-bF9sp7x+Ciy0N2KJwy8epmDoNblyVmeB4vR/KWLVIKMjANCpzTbvhWZUBpQxkpO0eupInU2uN+FMNr0WKMyd7Q==}
@@ -1245,32 +1153,32 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/utils@3.25.2':
- resolution: {integrity: sha512-GdIvG8GBJJZygB4L2QJP1Gabyn2mjFsha73I2wSe+o4DYeGWoJiMZRM06PyTIxLH4S7Sn7eVDtsSBfkc2VY/NA==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
'@react-aria/utils@3.25.3':
resolution: {integrity: sha512-PR5H/2vaD8fSq0H/UB9inNbc8KDcVmW6fYAfSWkkn+OAdhTTMVKqXXrZuZBWyFfSD5Ze7VN6acr4hrOQm2bmrA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-aria/utils@3.26.0':
+ resolution: {integrity: sha512-LkZouGSjjQ0rEqo4XJosS4L3YC/zzQkfRM3KoqK6fUOmUJ9t0jQ09WjiF+uOoG9u+p30AVg3TrZRUWmoTS+koQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-aria/virtualizer@4.0.3':
resolution: {integrity: sha512-neSf+EXtqmQiccHcp9CS2RbH3xA6FuZggLzGsM1NoqDdXIL7TLfc7lhaqi8VAZ03e1FCUSye08BCRk3DdpUiyA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-aria/visually-hidden@3.8.15':
- resolution: {integrity: sha512-l+sJ7xTdD5Sd6+rDNDaeJCSPnHOsI+BaJyApvb/YcVgHa7rB47lp6TXCWUCDItcPY4JqRGyeByRJVrtzBFTWCw==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
'@react-aria/visually-hidden@3.8.16':
resolution: {integrity: sha512-3zThVIzEprez4A/GajOut6/JQ4WCu2ROHGZ1xH1+2GFjBJQaTfPBIjg6UIwaT7sgHRQIik8QidogLqXHbp81yA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-aria/visually-hidden@3.8.18':
+ resolution: {integrity: sha512-l/0igp+uub/salP35SsNWq5mGmg3G5F5QMS1gDZ8p28n7CgjvzyiGhJbbca7Oxvaw1HRFzVl9ev+89I7moNnFQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-spring/animated@9.7.2':
resolution: {integrity: sha512-ipvleJ99ipqlnHkz5qhSsgf/ny5aW0ZG8Q+/2Oj9cI7LCc7COdnrSO6V/v8MAX3JOoQNzfz6dye2s5Pt5jGaIA==}
peerDependencies:
@@ -1308,6 +1216,16 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/calendar@3.6.0':
+ resolution: {integrity: sha512-GqUtOtGnwWjtNrJud8nY/ywI4VBP5byToNVRTnxbMl+gYO1Qe/uc5NG7zjwMxhb2kqSBHZFdkF0DXVqG2Ul+BA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@react-stately/checkbox@3.6.10':
+ resolution: {integrity: sha512-LHm7i4YI8A/RdgWAuADrnSAYIaYYpQeZqsp1a03Og0pJHAlZL0ymN3y2IFwbZueY0rnfM+yF+kWNXjJqbKrFEQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/checkbox@3.6.8':
resolution: {integrity: sha512-c8TWjU67XHHBCpqj6+FXXhQUWGr2Pil1IKggX81pkedhWiJl3/7+WHJuZI0ivGnRjp3aISNOG8UNVlBEjS9E8A==}
peerDependencies:
@@ -1328,16 +1246,31 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/collections@3.12.0':
+ resolution: {integrity: sha512-MfR9hwCxe5oXv4qrLUnjidwM50U35EFmInUeFf8i9mskYwWlRYS0O1/9PZ0oF1M0cKambaRHKEy98jczgb9ycA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/color@3.8.0':
resolution: {integrity: sha512-lBH91HEStZeayhE/FkDMt9WC0UISQiAn8DoD2hfpTGeeWscX/soyxZA7oVL7zBOG9RfDBMNzF+CybVROrWSKAQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/color@3.8.1':
+ resolution: {integrity: sha512-7eN7K+KJRu+rxK351eGrzoq2cG+yipr90i5b1cUu4lioYmcH4WdsfjmM5Ku6gypbafH+kTDfflvO6hiY1NZH+A==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/combobox@3.10.0':
resolution: {integrity: sha512-4W4HCCjjoddW/LZM3pSSeLoV7ncYXlaICKmqlBcbtLR5jY4U5Kx+pPpy3oJ1vCdjDHatIxZ0tVKEBP7vBQVeGQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/combobox@3.10.1':
+ resolution: {integrity: sha512-Rso+H+ZEDGFAhpKWbnRxRR/r7YNmYVtt+Rn0eNDNIUp3bYaxIBCdCySyAtALs4I8RZXZQ9zoUznP7YeVwG3cLg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/combobox@3.9.2':
resolution: {integrity: sha512-ZsbAcD58IvxZqwYxg9d2gOf8R/k5RUB2TPUiGKD6wgWfEKH6SDzY3bgRByHGOyMCyJB62cHjih/ZShizNTguqA==}
peerDependencies:
@@ -1363,6 +1296,16 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/datepicker@3.11.0':
+ resolution: {integrity: sha512-d9MJF34A0VrhL5y5S8mAISA8uwfNCQKmR2k4KoQJm3De1J8SQeNzSjLviAwh1faDow6FXGlA6tVbTrHyDcBgBg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@react-stately/disclosure@3.0.0':
+ resolution: {integrity: sha512-Z9+fi0/41ZXHjGopORQza7mk4lFEFslKhy65ehEo6O6j2GuIV0659ExIVDsmJoJSFjXCfGh0sX8oTSOlXi9gqg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/disclosure@3.0.0-alpha.0':
resolution: {integrity: sha512-CbFUrEwhsP5+44PMHipn/Cd61VTvqyKmx1yeNDyvj/4bYhmxYLgQp/Ma+iEqe23JkXJh2JO/ws3l9FnebScCJQ==}
peerDependencies:
@@ -1378,12 +1321,17 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-stately/flags@3.0.3':
- resolution: {integrity: sha512-/ha7XFA0RZTQsbzSPwu3KkbNMgbvuM0GuMTYLTBWpgBrovBNTM+QqI/PfZTdHg8PwCYF4H5Y8gjdSpdulCvJFw==}
+ '@react-stately/dnd@3.5.0':
+ resolution: {integrity: sha512-ZcWFw1npEDnATiy3TEdzA1skQ3UEIyfbNA6VhPNO8yiSVLxoxBOaEaq8VVS72fRGAtxud6dgOy8BnsP9JwDClQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-stately/flags@3.0.4':
resolution: {integrity: sha512-RNJEkOALwKg+JeYsfNlfPc4GXm7hiBLX0yuHOkRapWEyDOfi0cinkV/TZG4goOZdQ5tBpHmemf2qqiHAxqHlzQ==}
+ '@react-stately/flags@3.0.5':
+ resolution: {integrity: sha512-6wks4csxUwPCp23LgJSnkBRhrWpd9jGd64DjcCTNB2AHIFu7Ab1W59pJpUL6TW7uAxVxdNKjgn6D1hlBy8qWsA==}
+
'@react-stately/form@3.0.5':
resolution: {integrity: sha512-J3plwJ63HQz109OdmaTqTA8Qhvl3gcYYK7DtgKyNP6mc/Me2Q4tl2avkWoA+22NRuv5m+J8TpBk4AVHUEOwqeQ==}
peerDependencies:
@@ -1394,6 +1342,16 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/form@3.1.0':
+ resolution: {integrity: sha512-E2wxNQ0QaTyDHD0nJFtTSnEH9A3bpJurwxhS4vgcUmESHgjFEMLlC9irUSZKgvOgb42GAq+fHoWBsgKeTp9Big==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@react-stately/grid@3.10.0':
+ resolution: {integrity: sha512-ii+DdsOBvCnHMgL0JvUfFwO1kiAPP19Bpdpl6zn/oOltk6F5TmnoyNrzyz+2///1hCiySI3FE1O7ujsAQs7a6Q==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/grid@3.9.2':
resolution: {integrity: sha512-2gK//sqAqg2Xaq6UITTFQwFUJnBRgcW+cKBVbFt+F8d152xB6UwwTS/K79E5PUkOotwqZgTEpkrSFs/aVxCLpw==}
peerDependencies:
@@ -1419,6 +1377,11 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/list@3.11.1':
+ resolution: {integrity: sha512-UCOpIvqBOjwLtk7zVTYWuKU1m1Oe61Q5lNar/GwHaV1nAiSQ8/yYlhr40NkBEs9X3plEfsV28UIpzOrYnu1tPg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/menu@3.8.2':
resolution: {integrity: sha512-lt6hIHmSixMzkKx1rKJf3lbAf01EmEvvIlENL20GLiU9cRbpPnPJ1aJMZ5Ad5ygglA7wAemAx+daPhlTQfF2rg==}
peerDependencies:
@@ -1429,6 +1392,11 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/menu@3.9.0':
+ resolution: {integrity: sha512-++sm0fzZeUs9GvtRbj5RwrP+KL9KPANp9f4SvtI3s+MP+Y/X3X7LNNePeeccGeyikB5fzMsuyvd82bRRW9IhDQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/numberfield@3.9.6':
resolution: {integrity: sha512-p2R9admGLI439qZzB39dyANhkruprJJtZwuoGVtxW/VD0ficw6BrPVqAaKG25iwKPkmveleh9p8o+yRqjGedcQ==}
peerDependencies:
@@ -1439,6 +1407,11 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/numberfield@3.9.8':
+ resolution: {integrity: sha512-J6qGILxDNEtu7yvd3/y+FpbrxEaAeIODwlrFo6z1kvuDlLAm/KszXAc75yoDi0OtakFTCMP6/HR5VnHaQdMJ3w==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/overlays@3.6.10':
resolution: {integrity: sha512-XxZ2qScT5JPwGk9qiVJE4dtVh3AXTcYwGRA5RsHzC26oyVVsegPqY2PmNJGblAh6Q57VyodoVUyebE0Eo5CzRw==}
peerDependencies:
@@ -1449,6 +1422,11 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/overlays@3.6.12':
+ resolution: {integrity: sha512-QinvZhwZgj8obUyPIcyURSCjTZlqZYRRCS60TF8jH8ZpT0tEAuDb3wvhhSXuYA3Xo9EHLwvLjEf3tQKKdAQArw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/radio@3.10.7':
resolution: {integrity: sha512-ZwGzFR+sGd42DxRlDTp3G2vLZyhMVtgHkwv2BxazPHxPMvLO9yYl7+3PPNxAmhMB4tg2u9CrzffpGX2rmEJEXA==}
peerDependencies:
@@ -1459,6 +1437,11 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/radio@3.10.9':
+ resolution: {integrity: sha512-kUQ7VdqFke8SDRCatw2jW3rgzMWbvw+n2imN2THETynI47NmNLzNP11dlGO2OllRtTrsLhmBNlYHa3W62pFpAw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/searchfield@3.5.6':
resolution: {integrity: sha512-gVzU0FeWiLYD8VOYRgWlk79Qn7b2eirqOnWhtI5VNuGN8WyNaCIuBp6SkXTW2dY8hs2Hzn8HlMbgy1MIc7130Q==}
peerDependencies:
@@ -1469,6 +1452,11 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/searchfield@3.5.8':
+ resolution: {integrity: sha512-jtquvGadx1DmtQqPKaVO6Qg/xpBjNxsOd59ciig9xRxpxV+90i996EX1E2R6R+tGJdSM1pD++7PVOO4yE++HOg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/select@3.6.7':
resolution: {integrity: sha512-hCUIddw0mPxVy1OH6jhyaDwgNea9wESjf+MYdnnTG/abRB+OZv/dWScd87OjzVsHTHWcw7CN4ZzlJoXm0FJbKQ==}
peerDependencies:
@@ -1479,6 +1467,11 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/select@3.6.9':
+ resolution: {integrity: sha512-vASUDv7FhEYQURzM+JIwcusPv7/x/l3zHc/oKJPvoCl3aa9pwS8hZwS82SC00o2iFnrDscfDJju4IE/cd4hucg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/selection@3.16.2':
resolution: {integrity: sha512-C4eSKw7BIZHJLPzwqGqCnsyFHiUIEyryVQZTJDt6d0wYBOHU6k1pW+Q4VhrZuzSv+IMiI2RkiXeJKc55f0ZXrg==}
peerDependencies:
@@ -1489,6 +1482,11 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/selection@3.18.0':
+ resolution: {integrity: sha512-6EaNNP3exxBhW2LkcRR4a3pg+3oDguZlBSqIVVR7lyahv/D8xXHRC4dX+m0mgGHJpsgjs7664Xx6c8v193TFxg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/slider@3.5.7':
resolution: {integrity: sha512-gEIGTcpBLcXixd8LYiLc8HKrBiGQJltrrEGoOvvTP8KVItXQxmeL+JiSsh8qgOoUdRRpzmAoFNUKGEg2/gtN8A==}
peerDependencies:
@@ -1499,6 +1497,11 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/slider@3.6.0':
+ resolution: {integrity: sha512-w5vJxVh267pmD1X+Ppd9S3ZzV1hcg0cV8q5P4Egr160b9WMcWlUspZPtsthwUlN7qQe/C8y5IAhtde4s29eNag==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/table@3.12.2':
resolution: {integrity: sha512-dUcsrdALylhWz6exqIoqtR/dnrzjIAptMyAUPT378Y/mCYs4PxKkHSvtPEQrZhdQS1ALIIgfeg9KUVIempoXPw==}
peerDependencies:
@@ -1509,6 +1512,11 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/table@3.13.0':
+ resolution: {integrity: sha512-mRbNYrwQIE7xzVs09Lk3kPteEVFVyOc20vA8ph6EP54PiUf/RllJpxZe/WUYLf4eom9lUkRYej5sffuUBpxjCA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/tabs@3.6.10':
resolution: {integrity: sha512-F7wfoiNsrBy7c02AYHyE1USGgj05HQ0hp7uXmQjp2LEa+AA0NKKi3HdswTHHySxb0ZRuoEE7E7vp/gXQYx2/Ow==}
peerDependencies:
@@ -1519,6 +1527,11 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/tabs@3.7.0':
+ resolution: {integrity: sha512-ox4hTkfZCoR4Oyr3Op3rBlWNq2Wxie04vhEYpTZQ2hobR3l4fYaOkd7CPClILktJ3TC104j8wcb0knWxIBRx9w==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/toggle@3.7.7':
resolution: {integrity: sha512-AS+xB4+hHWa3wzYkbS6pwBkovPfIE02B9SnuYTe0stKcuejpWKo5L3QMptW0ftFYsW3ZPCXuneImfObEw2T01A==}
peerDependencies:
@@ -1529,6 +1542,11 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/toggle@3.8.0':
+ resolution: {integrity: sha512-pyt/k/J8BwE/2g6LL6Z6sMSWRx9HEJB83Sm/MtovXnI66sxJ2EfQ1OaXB7Su5PEL9OMdoQF6Mb+N1RcW3zAoPw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/tooltip@3.4.12':
resolution: {integrity: sha512-QKYT/cze7n9qaBsk7o5ais3jRfhYCzcVRfps+iys/W+/9FFbbhjfQG995Lwi6b+vGOHWfXxXpwmyIO2tzM1Iog==}
peerDependencies:
@@ -1539,6 +1557,11 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/tooltip@3.5.0':
+ resolution: {integrity: sha512-+xzPNztJDd2XJD0X3DgWKlrgOhMqZpSzsIssXeJgO7uCnP8/Z513ESaipJhJCFC8fxj5caO/DK4Uu8hEtlB8cQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/tree@3.8.4':
resolution: {integrity: sha512-HFNclIXJ/3QdGQWxXbj+tdlmIX/XwCfzAMB5m26xpJ6HtJhia6dtx3GLfcdyHNjmuRbAsTBsAAnnVKBmNRUdIQ==}
peerDependencies:
@@ -1549,16 +1572,21 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-stately/utils@3.10.3':
- resolution: {integrity: sha512-moClv7MlVSHpbYtQIkm0Cx+on8Pgt1XqtPx6fy9rQFb2DNc9u1G3AUVnqA17buOkH1vLxAtX4MedlxMWyRCYYA==}
+ '@react-stately/tree@3.8.6':
+ resolution: {integrity: sha512-lblUaxf1uAuIz5jm6PYtcJ+rXNNVkqyFWTIMx6g6gW/mYvm8GNx1G/0MLZE7E6CuDGaO9dkLSY2bB1uqyKHidA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-stately/utils@3.10.4':
resolution: {integrity: sha512-gBEQEIMRh5f60KCm7QKQ2WfvhB2gLUr9b72sqUdIZ2EG+xuPgaIlCBeSicvjmjBvYZwOjoOEnmIkcx2GHp/HWw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-stately/utils@3.10.5':
+ resolution: {integrity: sha512-iMQSGcpaecghDIh3mZEpZfoFH3ExBwTtuBEcvZ2XnGzCgQjeYXcMdIUwAfVQLXFTdHUHGF6Gu6/dFrYsCzySBQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-stately/virtualizer@4.1.0':
resolution: {integrity: sha512-MOaqpY3NloXrpCBvVUb3HL1p3Bh4YRtUq8D2ufC909u5vM6n6G5Swk1XPJ9KHfaftGhb5serwLkm2/Aha5CTbA==}
peerDependencies:
@@ -1569,188 +1597,158 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/breadcrumbs@3.7.7':
- resolution: {integrity: sha512-ZmhXwD2LLzfEA2OvOCp/QvXu8A/Edsrn5q0qUDGsmOZj9SCVeT82bIv8P+mQnATM13mi2gyoik6102Jc1OscJA==}
+ '@react-types/breadcrumbs@3.7.9':
+ resolution: {integrity: sha512-eARYJo8J+VfNV8vP4uw3L2Qliba9wLV2bx9YQCYf5Lc/OE5B/y4gaTLz+Y2P3Rtn6gBPLXY447zCs5i7gf+ICg==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-types/breadcrumbs@3.7.8':
- resolution: {integrity: sha512-+BW2a+PrY8ArZ+pKecz13oJFrUAhthvXx17o3x0BhWUhRpAdtmTYt2hjw8zNanm2j0Kvgo1HYKgvtskCRxYcOA==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/button@3.10.0':
resolution: {integrity: sha512-rAyU+N9VaHLBdZop4zasn8IDwf9I5Q1EzHUKMtzIFf5aUlMUW+K460zI/l8UESWRSWAXK9/WPSXGxfcoCEjvAA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/button@3.9.6':
- resolution: {integrity: sha512-8lA+D5JLbNyQikf8M/cPP2cji91aVTcqjrGpDqI7sQnaLFikM8eFR6l1ZWGtZS5MCcbfooko77ha35SYplSQvw==}
+ '@react-types/button@3.10.1':
+ resolution: {integrity: sha512-XTtap8o04+4QjPNAshFWOOAusUTxQlBjU2ai0BTVLShQEjHhRVDBIWsI2B2FKJ4KXT6AZ25llaxhNrreWGonmA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/calendar@3.4.10':
resolution: {integrity: sha512-PyjqxwJxSW2IpQx6y0D9O34fRCWn1gv9q0qFhgaIigIQrPg8zTE/CC7owHLxAtgCnnCt8exJ5rqi414csaHKlA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/calendar@3.4.9':
- resolution: {integrity: sha512-O/PS9c21HgO9qzxOyZ7/dTccxabFZdF6tj3UED4DrBw7AN3KZ7JMzwzYbwHinOcO7nUcklGgNoAIHk45UAKR9g==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-types/checkbox@3.8.3':
- resolution: {integrity: sha512-f4c1mnLEt0iS1NMkyZXgT3q3AgcxzDk7w6MSONOKydcnh0xG5L2oefY14DhVDLkAuQS7jThlUFwiAs+MxiO3MA==}
+ '@react-types/calendar@3.5.0':
+ resolution: {integrity: sha512-O3IRE7AGwAWYnvJIJ80cOy7WwoJ0m8GtX/qSmvXQAjC4qx00n+b5aFNBYAQtcyc3RM5QpW6obs9BfwGetFiI8w==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/checkbox@3.8.4':
resolution: {integrity: sha512-fvZrlQmlFNsYHZpl7GVmyYQlKdUtO5MczMSf8z3TlSiCb5Kl3ha9PsZgLhJqGuVnzB2ArIBz0eZrYa3k0PhcpA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-types/checkbox@3.9.0':
+ resolution: {integrity: sha512-9hbHx0Oo2Hp5a8nV8Q75LQR0DHtvOIJbFaeqESSopqmV9EZoYjtY/h0NS7cZetgahQgnqYWQi44XGooMDCsmxA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-types/color@3.0.0':
resolution: {integrity: sha512-VUH8CROAM69GsMBilrJ1xyAdVsWL01nXQYrkZJxAEApv1OrcpIGSdsXLcGrjsrhjjiNVXxWFnqYRMsKkLzIl7g==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/combobox@3.12.1':
- resolution: {integrity: sha512-bd5YwHZWtgnJx4jGbplWbYzXj7IbO5w3IY5suNR7r891rx6IktquZ8GQwyYH0pQ/x+X5LdK2xI59i6+QC2PmlA==}
+ '@react-types/color@3.0.1':
+ resolution: {integrity: sha512-KemFziO3GbmT3HEKrgOGdqNA6Gsmy9xrwFO3f8qXSG7gVz6M27Ic4R9HVQv4iAjap5uti6W13/pk2bc/jLVcEA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/combobox@3.13.0':
resolution: {integrity: sha512-kH/a+Fjpr54M2JbHg9RXwMjZ9O+XVsdOuE5JCpWRibJP1Mfl1md8gY6y6zstmVY8COrSqFvMZWB+PzwaTWjTGw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/datepicker@3.8.2':
- resolution: {integrity: sha512-Ih4F0bNVGrEuwCD8XmmBAspuuOBsj/Svn/pDFtC2RyAZjXfWh+sI+n4XLz/sYKjvARh5TUI8GNy9smYS4vYXug==}
+ '@react-types/combobox@3.13.1':
+ resolution: {integrity: sha512-7xr+HknfhReN4QPqKff5tbKTe2kGZvH+DGzPYskAtb51FAAiZsKo+WvnNAvLwg3kRoC9Rkn4TAiVBp/HgymRDw==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/datepicker@3.8.3':
resolution: {integrity: sha512-Y4qfPRBB6uzocosCOWSYMuwiZ3YXwLWQYiFB4KCglkvHyltbNz76LgoBEnclYA5HjwosIk4XywiXvHSYry8JnQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/dialog@3.5.12':
- resolution: {integrity: sha512-JmpQbSpXltqEyYfEwoqDolABIiojeExkqolHNdQlayIsfFuSxZxNwXZPOpz58Ri/iwv21JP7K3QF0Gb2Ohxl9w==}
+ '@react-types/datepicker@3.9.0':
+ resolution: {integrity: sha512-dbKL5Qsm2MQwOTtVQdOcKrrphcXAqDD80WLlSQrBLg+waDuuQ7H+TrvOT0thLKloNBlFUGnZZfXGRHINpih/0g==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-types/dialog@3.5.13':
- resolution: {integrity: sha512-9k8daVcAqQsySkzDY6NIVlyGxtpEip4TKuLyzAehthbv78GQardD5fHdjQ6eXPRS4I2qZrmytrFFrlOnwWVGHw==}
+ '@react-types/dialog@3.5.14':
+ resolution: {integrity: sha512-OXWMjrALwrlgw8aHD8SeRm/s3tbAssdaEh2h73KUSeFau3fU3n5mfKv+WnFqsEaOtN261o48l7hTlS6615H9AA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/form@3.7.7':
resolution: {integrity: sha512-CVRjCawPhYRHi/LuikOC2kz5vgvmjjKmF4/wUgR2QzD1Ok4wY1ZGSx9M9EZptCIZAt2mToR6woyLUdtzy+foeQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/grid@3.2.8':
- resolution: {integrity: sha512-6PJrpukwMqlv3IhJSDkJuVbhHM8Oe6hd2supWqd9adMXrlSP7QHt9a8SgFcFblCCTx8JzUaA0PvY5sTudcEtOQ==}
+ '@react-types/grid@3.2.10':
+ resolution: {integrity: sha512-Z5cG0ITwqjUE4kWyU5/7VqiPl4wqMJ7kG/ZP7poAnLmwRsR8Ai0ceVn+qzp5nTA19cgURi8t3LsXn3Ar1FBoog==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/grid@3.2.9':
resolution: {integrity: sha512-eMw0d2UIZ4QTzGgD1wGGPw0cv67KjAOCp4TcwWjgDV7Wa5SVV/UvOmpnIVDyfhkG/4KRI5OR9h+isy76B726qA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/link@3.5.7':
- resolution: {integrity: sha512-2WyaVmm1qr9UrSG3Dq6iz+2ziuVp+DH8CsYZ9CA6aNNb6U18Hxju3LTPb4a5gM0eC7W0mQGNBmrgGlAdDZEJOw==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-types/link@3.5.8':
- resolution: {integrity: sha512-l/YGXddgAbLnIT7ekftXrK1D4n8NlLQwx0d4usyZpaxP1KwPzuwng20DxynamLc1atoKBqbUtZAnz32pe7vYgw==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-types/listbox@3.5.1':
- resolution: {integrity: sha512-n5bOgD9lgfK1qaLtag9WPnu151SwXBCNn/OgGY/Br9mWRl+nPUEYtFcPX+2VCld7uThf54kwrTmzlFnaraIlcw==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-types/listbox@3.5.2':
- resolution: {integrity: sha512-ML/Bt/MeO0FiixcuFQ+smpu1WguxTOqHDjSnhc1vcNxVQFWQOhyVy01LAY2J/T9TjfjyYGD41vyMTI0f6fcLEQ==}
+ '@react-types/link@3.5.9':
+ resolution: {integrity: sha512-JcKDiDMqrq/5Vpn+BdWQEuXit4KN4HR/EgIi3yKnNbYkLzxBoeQZpQgvTaC7NEQeZnSqkyXQo3/vMUeX/ZNIKw==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-types/menu@3.9.11':
- resolution: {integrity: sha512-IguQVF70d7aHXgWB1Rd2a/PiIuLZ2Nt7lyayJshLcy/NLOYmgpTmTyn2WCtlA5lTfQwmQrNFf4EvnWkeljJXdA==}
+ '@react-types/listbox@3.5.3':
+ resolution: {integrity: sha512-v1QXd9/XU3CCKr2Vgs7WLcTr6VMBur7CrxHhWZQQFExsf9bgJ/3wbUdjy4aThY/GsYHiaS38EKucCZFr1QAfqA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/menu@3.9.12':
resolution: {integrity: sha512-1SPnkHKJdvOfwv9fEgK1DI6DYRs4D3hW2XcWlLhVXSjaC68CzOHGwFhKIKvZiDTW/11L770PRSEloIxHR09uFQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/meter@3.4.3':
- resolution: {integrity: sha512-Y2fX5CTAPGRKxVSeepbeyN6/K+wlF9pMRcNxTSU2qDwdoFqNCtTWMcWuCsU/Y2L/zU0jFWu4x0Vo7WkrcsgcMA==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-types/meter@3.4.4':
- resolution: {integrity: sha512-0SEmPkShByC1gYkW7l+iJPg8QfEe2VrgwTciAtTfC4KIqAYmJVQtq6L+4d72EMxOh8RpQHePaY/RFHEJXAh72A==}
+ '@react-types/menu@3.9.13':
+ resolution: {integrity: sha512-7SuX6E2tDsqQ+HQdSvIda1ji/+ujmR86dtS9CUu5yWX91P25ufRjZ72EvLRqClWNQsj1Xl4+2zBDLWlceznAjw==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-types/numberfield@3.8.5':
- resolution: {integrity: sha512-LVWggkxwd1nyVZomXBPfQA1E4I4/i4PBifjcDs2AfcV7q5RE9D+DVIDXsYucVOBxPlDOxiAq/T9ypobspWSwHw==}
+ '@react-types/meter@3.4.5':
+ resolution: {integrity: sha512-04w1lEtvP/c3Ep8ND8hhH2rwjz2MtQ8o8SNLhahen3u0rX3jKOgD4BvHujsyvXXTMjj1Djp74sGzNawb4Ppi9w==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/numberfield@3.8.6':
resolution: {integrity: sha512-VtWEMAXUO1S9EEZI8whc7xv6DVccxhbWsRthMCg/LxiwU3U5KAveadNc2c5rtXkRpd3cnD5xFzz3dExXdmHkAg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/overlays@3.8.10':
- resolution: {integrity: sha512-IcnB+VYfAJazRjWhBKZTmVMh3KTp/B1rRbcKkPx6t8djP9UQhKcohP7lAALxjJ56Jjz/GFC6rWyUcnYH0NFVRA==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-types/overlays@3.8.9':
- resolution: {integrity: sha512-9ni9upQgXPnR+K9cWmbYWvm3ll9gH8P/XsEZprqIV5zNLMF334jADK48h4jafb1X9RFnj0WbHo6BqcSObzjTig==}
+ '@react-types/numberfield@3.8.7':
+ resolution: {integrity: sha512-KccMPi39cLoVkB2T0V7HW6nsxQVAwt89WWCltPZJVGzsebv/k0xTQlPVAgrUake4kDLoE687e3Fr/Oe3+1bDhw==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-types/progress@3.5.6':
- resolution: {integrity: sha512-Nh43sjQ5adyN1bTHBPRaIPhXUdBqP0miYeJpeMY3V/KUl4qmouJLwDnccwFG4xLm6gBfYe22lgbbV7nAfNnuTQ==}
+ '@react-types/overlays@3.8.10':
+ resolution: {integrity: sha512-IcnB+VYfAJazRjWhBKZTmVMh3KTp/B1rRbcKkPx6t8djP9UQhKcohP7lAALxjJ56Jjz/GFC6rWyUcnYH0NFVRA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/progress@3.5.7':
- resolution: {integrity: sha512-EqMDHmlpoZUZzTjdejGIkSM0pS2LBI9NdadHf3bDNTycHv+5L1xpMHUg8RGOW8a3sRVLRvfN1aO9l75QZkyj+w==}
+ '@react-types/overlays@3.8.11':
+ resolution: {integrity: sha512-aw7T0rwVI3EuyG5AOaEIk8j7dZJQ9m34XAztXJVZ/W2+4pDDkLDbJ/EAPnuo2xGYRGhowuNDn4tDju01eHYi+w==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-types/radio@3.8.3':
- resolution: {integrity: sha512-fUVJt4Bb6jOReFqnhHVNxWXH7t6c60uSFfoPKuXt/xI9LL1i2jhpur0ggpTfIn3qLIAmNBU6bKBCWAdr4KjeVQ==}
+ '@react-types/progress@3.5.8':
+ resolution: {integrity: sha512-PR0rN5mWevfblR/zs30NdZr+82Gka/ba7UHmYOW9/lkKlWeD7PHgl1iacpd/3zl/jUF22evAQbBHmk1mS6Mpqw==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/radio@3.8.4':
resolution: {integrity: sha512-GCuOwQL19iwKa74NAIk9hv4ivyI8oW1+ZCuc2fzyDdeQjzTIlv3qrIyShwpVy1IoI7/4DYTMZm/YXPoKhu5TTA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/searchfield@3.5.8':
- resolution: {integrity: sha512-EcdqalHNIC6BJoRfmqUhAvXRd3aHkWlV1cFCz57JJKgUEFYyXPNrXd1b73TKLzTXEk+X/D6LKV15ILYpEaxu8w==}
+ '@react-types/radio@3.8.5':
+ resolution: {integrity: sha512-gSImTPid6rsbJmwCkTliBIU/npYgJHOFaI3PNJo7Y0QTAnFelCtYeFtBiWrFodSArSv7ASqpLLUEj9hZu/rxIg==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-types/searchfield@3.5.9':
- resolution: {integrity: sha512-c/x8BWpH1Zq+fWpeBtzw2AhQhGi7ahWPicV7PlnqwIGO0MrH/QCjX0dj+I+1xpcAh8Eq6ECa79HE74Rw6aJmFg==}
+ '@react-types/searchfield@3.5.10':
+ resolution: {integrity: sha512-7wW4pJzbReawoGPu8a4l+CODTCDN088EN/ysUzl622ewim57PjArjix+lpO4+aEtJqS9HKpq8UEbjwo9axpcUA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-types/select@3.9.6':
- resolution: {integrity: sha512-cVSFR0eJLup/ht1Uto+y8uyLmHO89J6wNh65SIHb3jeVz9oLBAedP3YNI2qB+F9qFMUcA8PBSLXIIuT6gXzLgQ==}
+ '@react-types/searchfield@3.5.9':
+ resolution: {integrity: sha512-c/x8BWpH1Zq+fWpeBtzw2AhQhGi7ahWPicV7PlnqwIGO0MrH/QCjX0dj+I+1xpcAh8Eq6ECa79HE74Rw6aJmFg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
@@ -1759,76 +1757,76 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/shared@3.24.1':
- resolution: {integrity: sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==}
+ '@react-types/select@3.9.8':
+ resolution: {integrity: sha512-RGsYj2oFjXpLnfcvWMBQnkcDuKkwT43xwYWZGI214/gp/B64tJiIUgTM5wFTRAeGDX23EePkhCQF+9ctnqFd6g==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/shared@3.25.0':
resolution: {integrity: sha512-OZSyhzU6vTdW3eV/mz5i6hQwQUhkRs7xwY2d1aqPvTdMe0+2cY7Fwp45PAiwYLEj73i9ro2FxF9qC4DvHGSCgQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/slider@3.7.5':
- resolution: {integrity: sha512-bRitwQRQjQoOcKEdPMljnvm474dwrmsc6pdsVQDh/qynzr+KO9IHuYc3qPW53WVE2hMQJDohlqtCAWQXWQ5Vcg==}
+ '@react-types/shared@3.26.0':
+ resolution: {integrity: sha512-6FuPqvhmjjlpEDLTiYx29IJCbCNWPlsyO+ZUmCUXzhUv2ttShOXfw8CmeHWHftT/b2KweAWuzqSlfeXPR76jpw==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/slider@3.7.6':
resolution: {integrity: sha512-z72wnEzSge6qTD9TUoUPp1A4j4jXk/MVii6rGE78XeE/Pq7HyyjU5bCagryMr9PC9MKa/oTiHcshKqWBDf57GA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/switch@3.5.5':
- resolution: {integrity: sha512-SZx1Bd+COhAOs/RTifbZG+uq/llwba7VAKx7XBeX4LeIz1dtguy5bigOBgFTMQi4qsIVCpybSWEEl+daj4XFPw==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- '@react-types/switch@3.5.6':
- resolution: {integrity: sha512-gJ8t2yTCgcitz4ON4ELcLLmtlDkn2MUjjfu3ez/cwA1X/NUluPYkhXj5Z6H+KOlnveqrKCZDRoTgK74cQ6Cvfg==}
+ '@react-types/slider@3.7.7':
+ resolution: {integrity: sha512-lYTR9zXQV2fSEm/G3gwDENWiki1IXd/oorsgf0zu1DBi2SQDbOsLsGUXiwvD24Xy6OkUuhAqjLPPexezo7+u9g==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-types/table@3.10.1':
- resolution: {integrity: sha512-xsNh0Gm4GtNeSknZqkMsfGvc94fycmfhspGO+FzQKim2hB5k4yILwd+lHYQ2UKW6New9GVH/zN2Pd3v67IeZ2g==}
+ '@react-types/switch@3.5.7':
+ resolution: {integrity: sha512-1IKiq510rPTHumEZuhxuazuXBa2Cuxz6wBIlwf3NCVmgWEvU+uk1ETG0sH2yymjwCqhtJDKXi+qi9HSgPEDwAg==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/table@3.10.2':
resolution: {integrity: sha512-YzA4hcsYfnFFpA2UyGb1KKhLpWgaj5daApqjp126tCIosl8k1KxZmhKD50cwH0Jm19lALJseqo5VdlcJtcr4qg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-types/table@3.10.3':
+ resolution: {integrity: sha512-Ac+W+m/zgRzlTU8Z2GEg26HkuJFswF9S6w26r+R3MHwr8z2duGPvv37XRtE1yf3dbpRBgHEAO141xqS2TqGwNg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@react-types/tabs@3.3.10':
resolution: {integrity: sha512-s/Bw/HCIdWJPBw4O703ghKqhjGsIerRMIDxA88hbQYzfTDD6bkFDjCnsP2Tyy1G8Dg2rSPFUEE+k+PpLzqeEfQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/tabs@3.3.9':
- resolution: {integrity: sha512-3Q9kRVvg/qDyeJR/W1+C2z2OyvDWQrSLvOCvAezX5UKzww4rBEAA8OqBlyDwn7q3fiwrh/m64l6p+dbln+RdxQ==}
+ '@react-types/tabs@3.3.11':
+ resolution: {integrity: sha512-BjF2TqBhZaIcC4lc82R5pDJd1F7kstj1K0Nokhz99AGYn8C0ITdp6lR+DPVY9JZRxKgP9R2EKfWGI90Lo7NQdA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@react-types/textfield@3.9.6':
- resolution: {integrity: sha512-0uPqjJh4lYp1aL1HL9IlV8Cgp8eT0PcsNfdoCktfkLytvvBPmox2Pfm57W/d0xTtzZu2CjxhYNTob+JtGAOeXA==}
+ '@react-types/textfield@3.10.0':
+ resolution: {integrity: sha512-ShU3d6kLJGQjPXccVFjM3KOXdj3uyhYROqH9YgSIEVxgA9W6LRflvk/IVBamD9pJYTPbwmVzuP0wQkTDupfZ1w==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/textfield@3.9.7':
resolution: {integrity: sha512-vU5+QCOF9HgWGjAmmy+cpJibVW5voFomC5POmYHokm7kivYcMMjlonsgWwg/0xXrqE2qosH3tpz4jFoEuig1NQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- '@react-types/tooltip@3.4.11':
- resolution: {integrity: sha512-WPikHQxeT5Lb09yJEaW6Ja3ecE0g1YM6ukWYS2v/iZLUPn5YlYrGytspuCYQNSh/u7suCz4zRLEHYCl7OCigjw==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
'@react-types/tooltip@3.4.12':
resolution: {integrity: sha512-FwsdSQ3UDIDORanQMGMLyzSUabw4AkKhwcRdPv4d5OT8GmJr7mBdZynfcsrKLJ0fzskIypMqspoutZidsI0MQg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ '@react-types/tooltip@3.4.13':
+ resolution: {integrity: sha512-KPekFC17RTT8kZlk7ZYubueZnfsGTDOpLw7itzolKOXGddTXsrJGBzSB4Bb060PBVllaDO0MOrhPap8OmrIl1Q==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@redocly/ajv@8.11.2':
resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==}
@@ -3361,6 +3359,9 @@ packages:
highlight.js@10.7.3:
resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==}
+ highlightjs-vue@1.0.0:
+ resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==}
+
html-encoding-sniffer@3.0.0:
resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
engines: {node: '>=12'}
@@ -4521,17 +4522,11 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-aria@3.34.3:
- resolution: {integrity: sha512-wSprEI5EojDFCm357MxnKAxJZN68OYIt6UH6N0KCo6MEUAVZMbhMSmGYjw/kLK4rI7KrbJDqGqUMQkwc93W9Ng==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
-
- react-aria@3.35.0:
- resolution: {integrity: sha512-cbbd3iIveLDRnpVrpc1iuz8OMlDdH6u8EjncW3MQuYOiEGaho9xcDtWMKiSEIZASEnd7LK4Rgm5iVPr2O+cssw==}
+ react-aria@3.36.0:
+ resolution: {integrity: sha512-AK5XyIhAN+e5HDlwlF+YwFrOrVI7RYmZ6kg/o7ZprQjkYqYKapXeUpWscmNm/3H2kDboE5Z4ymUnK6ZhobLqOw==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom@18.3.1:
resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
@@ -4607,8 +4602,8 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
- react-syntax-highlighter@15.5.0:
- resolution: {integrity: sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==}
+ react-syntax-highlighter@15.6.1:
+ resolution: {integrity: sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg==}
peerDependencies:
react: '>= 0.14.0'
@@ -5454,7 +5449,7 @@ snapshots:
lodash: 4.17.21
match-sorter: 6.3.1
react: 18.3.1
- react-aria: 3.34.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ react-aria: 3.36.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-aria-components: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-dom: 18.3.1(react@18.3.1)
react-stately: 3.32.2(react@18.3.1)
@@ -5853,33 +5848,29 @@ snapshots:
dependencies:
'@types/node': 20.12.12
- '@internationalized/date@3.5.5':
- dependencies:
- '@swc/helpers': 0.5.1
-
'@internationalized/date@3.5.6':
dependencies:
'@swc/helpers': 0.5.1
- '@internationalized/message@3.1.4':
+ '@internationalized/date@3.6.0':
dependencies:
'@swc/helpers': 0.5.1
- intl-messageformat: 10.2.5
'@internationalized/message@3.1.5':
dependencies:
'@swc/helpers': 0.5.1
intl-messageformat: 10.2.5
- '@internationalized/number@3.5.3':
+ '@internationalized/message@3.1.6':
dependencies:
'@swc/helpers': 0.5.1
+ intl-messageformat: 10.2.5
'@internationalized/number@3.5.4':
dependencies:
'@swc/helpers': 0.5.1
- '@internationalized/string@3.2.3':
+ '@internationalized/number@3.6.0':
dependencies:
'@swc/helpers': 0.5.1
@@ -5887,6 +5878,10 @@ snapshots:
dependencies:
'@swc/helpers': 0.5.1
+ '@internationalized/string@3.2.5':
+ dependencies:
+ '@swc/helpers': 0.5.1
+
'@isaacs/cliui@8.0.2':
dependencies:
string-width: 5.1.2
@@ -6160,23 +6155,13 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/breadcrumbs@3.5.16(react@18.3.1)':
+ '@react-aria/breadcrumbs@3.5.19(react@18.3.1)':
dependencies:
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/link': 3.7.4(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-types/breadcrumbs': 3.7.7(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
-
- '@react-aria/breadcrumbs@3.5.17(react@18.3.1)':
- dependencies:
- '@react-aria/i18n': 3.12.3(react@18.3.1)
- '@react-aria/link': 3.7.5(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-types/breadcrumbs': 3.7.8(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/link': 3.7.7(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-types/breadcrumbs': 3.7.9(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -6191,74 +6176,45 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/button@3.9.8(react@18.3.1)':
+ '@react-aria/button@3.11.0(react@18.3.1)':
dependencies:
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/toggle': 3.7.7(react@18.3.1)
- '@react-types/button': 3.9.6(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/toolbar': 3.0.0-beta.11(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/toggle': 3.8.0(react@18.3.1)
+ '@react-types/button': 3.10.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/calendar@3.5.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/calendar@3.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@internationalized/date': 3.5.5
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/live-announcer': 3.3.4
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/calendar': 3.5.4(react@18.3.1)
- '@react-types/button': 3.9.6(react@18.3.1)
- '@react-types/calendar': 3.4.9(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- '@react-aria/calendar@3.5.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@internationalized/date': 3.5.6
- '@react-aria/i18n': 3.12.3(react@18.3.1)
- '@react-aria/interactions': 3.22.3(react@18.3.1)
- '@react-aria/live-announcer': 3.4.0
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-stately/calendar': 3.5.5(react@18.3.1)
- '@react-types/button': 3.10.0(react@18.3.1)
- '@react-types/calendar': 3.4.10(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@internationalized/date': 3.6.0
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/live-announcer': 3.4.1
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/calendar': 3.6.0(react@18.3.1)
+ '@react-types/button': 3.10.1(react@18.3.1)
+ '@react-types/calendar': 3.5.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/checkbox@3.14.6(react@18.3.1)':
- dependencies:
- '@react-aria/form': 3.0.8(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/label': 3.7.11(react@18.3.1)
- '@react-aria/toggle': 3.10.7(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/checkbox': 3.6.8(react@18.3.1)
- '@react-stately/form': 3.0.5(react@18.3.1)
- '@react-stately/toggle': 3.7.7(react@18.3.1)
- '@react-types/checkbox': 3.8.3(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
-
- '@react-aria/checkbox@3.14.7(react@18.3.1)':
+ '@react-aria/checkbox@3.15.0(react@18.3.1)':
dependencies:
- '@react-aria/form': 3.0.9(react@18.3.1)
- '@react-aria/interactions': 3.22.3(react@18.3.1)
- '@react-aria/label': 3.7.12(react@18.3.1)
- '@react-aria/toggle': 3.10.8(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-stately/checkbox': 3.6.9(react@18.3.1)
- '@react-stately/form': 3.0.6(react@18.3.1)
- '@react-stately/toggle': 3.7.8(react@18.3.1)
- '@react-types/checkbox': 3.8.4(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-aria/form': 3.0.11(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/label': 3.7.13(react@18.3.1)
+ '@react-aria/toggle': 3.10.10(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/checkbox': 3.6.10(react@18.3.1)
+ '@react-stately/form': 3.1.0(react@18.3.1)
+ '@react-stately/toggle': 3.8.0(react@18.3.1)
+ '@react-types/checkbox': 3.9.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -6290,110 +6246,84 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/combobox@3.10.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/color@3.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/listbox': 3.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/live-announcer': 3.3.4
- '@react-aria/menu': 3.15.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/overlays': 3.23.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/selection': 3.19.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/textfield': 3.14.8(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/collections': 3.10.9(react@18.3.1)
- '@react-stately/combobox': 3.9.2(react@18.3.1)
- '@react-stately/form': 3.0.5(react@18.3.1)
- '@react-types/button': 3.9.6(react@18.3.1)
- '@react-types/combobox': 3.12.1(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/numberfield': 3.11.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/slider': 3.7.14(react@18.3.1)
+ '@react-aria/spinbutton': 3.6.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/textfield': 3.15.0(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-aria/visually-hidden': 3.8.18(react@18.3.1)
+ '@react-stately/color': 3.8.1(react@18.3.1)
+ '@react-stately/form': 3.1.0(react@18.3.1)
+ '@react-types/color': 3.0.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/combobox@3.10.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/combobox@3.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/i18n': 3.12.3(react@18.3.1)
- '@react-aria/listbox': 3.13.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/live-announcer': 3.4.0
- '@react-aria/menu': 3.15.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/overlays': 3.23.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/selection': 3.20.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/textfield': 3.14.9(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-stately/collections': 3.11.0(react@18.3.1)
- '@react-stately/combobox': 3.10.0(react@18.3.1)
- '@react-stately/form': 3.0.6(react@18.3.1)
- '@react-types/button': 3.10.0(react@18.3.1)
- '@react-types/combobox': 3.13.0(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- '@react-aria/datepicker@3.11.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@internationalized/date': 3.5.5
- '@internationalized/number': 3.5.3
- '@internationalized/string': 3.2.3
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/form': 3.0.8(react@18.3.1)
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/label': 3.7.11(react@18.3.1)
- '@react-aria/spinbutton': 3.6.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/datepicker': 3.10.2(react@18.3.1)
- '@react-stately/form': 3.0.5(react@18.3.1)
- '@react-types/button': 3.9.6(react@18.3.1)
- '@react-types/calendar': 3.4.9(react@18.3.1)
- '@react-types/datepicker': 3.8.2(react@18.3.1)
- '@react-types/dialog': 3.5.12(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/listbox': 3.13.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/live-announcer': 3.4.1
+ '@react-aria/menu': 3.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/overlays': 3.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/selection': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/textfield': 3.15.0(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/collections': 3.12.0(react@18.3.1)
+ '@react-stately/combobox': 3.10.1(react@18.3.1)
+ '@react-stately/form': 3.1.0(react@18.3.1)
+ '@react-types/button': 3.10.1(react@18.3.1)
+ '@react-types/combobox': 3.13.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/datepicker@3.11.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@internationalized/date': 3.5.6
- '@internationalized/number': 3.5.4
- '@internationalized/string': 3.2.4
- '@react-aria/focus': 3.18.3(react@18.3.1)
- '@react-aria/form': 3.0.9(react@18.3.1)
- '@react-aria/i18n': 3.12.3(react@18.3.1)
- '@react-aria/interactions': 3.22.3(react@18.3.1)
- '@react-aria/label': 3.7.12(react@18.3.1)
- '@react-aria/spinbutton': 3.6.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-stately/datepicker': 3.10.3(react@18.3.1)
- '@react-stately/form': 3.0.6(react@18.3.1)
- '@react-types/button': 3.10.0(react@18.3.1)
- '@react-types/calendar': 3.4.10(react@18.3.1)
- '@react-types/datepicker': 3.8.3(react@18.3.1)
- '@react-types/dialog': 3.5.13(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-aria/datepicker@3.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@internationalized/date': 3.6.0
+ '@internationalized/number': 3.6.0
+ '@internationalized/string': 3.2.5
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/form': 3.0.11(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/label': 3.7.13(react@18.3.1)
+ '@react-aria/spinbutton': 3.6.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/datepicker': 3.11.0(react@18.3.1)
+ '@react-stately/form': 3.1.0(react@18.3.1)
+ '@react-types/button': 3.10.1(react@18.3.1)
+ '@react-types/calendar': 3.5.0(react@18.3.1)
+ '@react-types/datepicker': 3.9.0(react@18.3.1)
+ '@react-types/dialog': 3.5.14(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/dialog@3.5.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/dialog@3.5.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/overlays': 3.23.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-types/dialog': 3.5.12(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/overlays': 3.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-types/dialog': 3.5.14(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/dialog@3.5.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/disclosure@3.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/focus': 3.18.3(react@18.3.1)
- '@react-aria/overlays': 3.23.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-types/dialog': 3.5.13(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-aria/ssr': 3.9.7(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/disclosure': 3.0.0(react@18.3.1)
+ '@react-types/button': 3.10.1(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -6413,21 +6343,6 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/dnd@3.7.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@internationalized/string': 3.2.3
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/live-announcer': 3.3.4
- '@react-aria/overlays': 3.23.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/dnd': 3.4.2(react@18.3.1)
- '@react-types/button': 3.9.6(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
'@react-aria/dnd@3.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@internationalized/string': 3.2.4
@@ -6443,14 +6358,20 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/focus@3.18.2(react@18.3.1)':
+ '@react-aria/dnd@3.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@internationalized/string': 3.2.5
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/live-announcer': 3.4.1
+ '@react-aria/overlays': 3.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/dnd': 3.5.0(react@18.3.1)
+ '@react-types/button': 3.10.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
- clsx: 2.1.0
react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
'@react-aria/focus@3.18.3(react@18.3.1)':
dependencies:
@@ -6461,12 +6382,21 @@ snapshots:
clsx: 2.1.0
react: 18.3.1
- '@react-aria/form@3.0.8(react@18.3.1)':
+ '@react-aria/focus@3.19.0(react@18.3.1)':
dependencies:
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/form': 3.0.5(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ clsx: 2.1.0
+ react: 18.3.1
+
+ '@react-aria/form@3.0.11(react@18.3.1)':
+ dependencies:
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/form': 3.1.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -6479,24 +6409,6 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/grid@3.10.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/live-announcer': 3.3.4
- '@react-aria/selection': 3.19.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/collections': 3.10.9(react@18.3.1)
- '@react-stately/grid': 3.9.2(react@18.3.1)
- '@react-stately/selection': 3.16.2(react@18.3.1)
- '@react-types/checkbox': 3.8.3(react@18.3.1)
- '@react-types/grid': 3.2.8(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
'@react-aria/grid@3.10.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/focus': 3.18.3(react@18.3.1)
@@ -6515,18 +6427,36 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/gridlist@3.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/grid@3.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/grid': 3.10.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/selection': 3.19.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/collections': 3.10.9(react@18.3.1)
- '@react-stately/list': 3.10.8(react@18.3.1)
- '@react-stately/tree': 3.8.4(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/live-announcer': 3.4.1
+ '@react-aria/selection': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/collections': 3.12.0(react@18.3.1)
+ '@react-stately/grid': 3.10.0(react@18.3.1)
+ '@react-stately/selection': 3.18.0(react@18.3.1)
+ '@react-types/checkbox': 3.9.0(react@18.3.1)
+ '@react-types/grid': 3.2.10(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
+ '@react-aria/gridlist@3.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/grid': 3.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/selection': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/collections': 3.12.0(react@18.3.1)
+ '@react-stately/list': 3.11.1(react@18.3.1)
+ '@react-stately/tree': 3.8.6(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -6547,18 +6477,6 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/i18n@3.12.2(react@18.3.1)':
- dependencies:
- '@internationalized/date': 3.5.5
- '@internationalized/message': 3.1.4
- '@internationalized/number': 3.5.3
- '@internationalized/string': 3.2.3
- '@react-aria/ssr': 3.9.5(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
-
'@react-aria/i18n@3.12.3(react@18.3.1)':
dependencies:
'@internationalized/date': 3.5.6
@@ -6571,11 +6489,15 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/interactions@3.22.2(react@18.3.1)':
+ '@react-aria/i18n@3.12.4(react@18.3.1)':
dependencies:
- '@react-aria/ssr': 3.9.5(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@internationalized/date': 3.6.0
+ '@internationalized/message': 3.1.6
+ '@internationalized/number': 3.6.0
+ '@internationalized/string': 3.2.5
+ '@react-aria/ssr': 3.9.7(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -6587,10 +6509,11 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/label@3.7.11(react@18.3.1)':
+ '@react-aria/interactions@3.22.5(react@18.3.1)':
dependencies:
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/ssr': 3.9.7(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -6601,79 +6524,44 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/link@3.7.4(react@18.3.1)':
+ '@react-aria/label@3.7.13(react@18.3.1)':
dependencies:
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-types/link': 3.5.7(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/link@3.7.5(react@18.3.1)':
+ '@react-aria/link@3.7.7(react@18.3.1)':
dependencies:
- '@react-aria/focus': 3.18.3(react@18.3.1)
- '@react-aria/interactions': 3.22.3(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-types/link': 3.5.8(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-types/link': 3.5.9(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/listbox@3.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/listbox@3.13.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/label': 3.7.11(react@18.3.1)
- '@react-aria/selection': 3.19.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/collections': 3.10.9(react@18.3.1)
- '@react-stately/list': 3.10.8(react@18.3.1)
- '@react-types/listbox': 3.5.1(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/label': 3.7.13(react@18.3.1)
+ '@react-aria/selection': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/collections': 3.12.0(react@18.3.1)
+ '@react-stately/list': 3.11.1(react@18.3.1)
+ '@react-types/listbox': 3.5.3(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/listbox@3.13.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@react-aria/interactions': 3.22.3(react@18.3.1)
- '@react-aria/label': 3.7.12(react@18.3.1)
- '@react-aria/selection': 3.20.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-stately/collections': 3.11.0(react@18.3.1)
- '@react-stately/list': 3.11.0(react@18.3.1)
- '@react-types/listbox': 3.5.2(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- '@react-aria/live-announcer@3.3.4':
- dependencies:
- '@swc/helpers': 0.5.1
-
'@react-aria/live-announcer@3.4.0':
dependencies:
'@swc/helpers': 0.5.1
- '@react-aria/menu@3.15.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/live-announcer@3.4.1':
dependencies:
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/overlays': 3.23.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/selection': 3.19.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/collections': 3.10.9(react@18.3.1)
- '@react-stately/menu': 3.8.2(react@18.3.1)
- '@react-stately/tree': 3.8.4(react@18.3.1)
- '@react-types/button': 3.9.6(react@18.3.1)
- '@react-types/menu': 3.9.11(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
'@swc/helpers': 0.5.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
'@react-aria/menu@3.15.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
@@ -6693,37 +6581,32 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/meter@3.4.16(react@18.3.1)':
+ '@react-aria/menu@3.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/progress': 3.4.16(react@18.3.1)
- '@react-types/meter': 3.4.3(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
-
- '@react-aria/meter@3.4.17(react@18.3.1)':
- dependencies:
- '@react-aria/progress': 3.4.17(react@18.3.1)
- '@react-types/meter': 3.4.4(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/overlays': 3.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/selection': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/collections': 3.12.0(react@18.3.1)
+ '@react-stately/menu': 3.9.0(react@18.3.1)
+ '@react-stately/selection': 3.18.0(react@18.3.1)
+ '@react-stately/tree': 3.8.6(react@18.3.1)
+ '@react-types/button': 3.10.1(react@18.3.1)
+ '@react-types/menu': 3.9.13(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
- '@react-aria/numberfield@3.11.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/meter@3.4.18(react@18.3.1)':
dependencies:
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/spinbutton': 3.6.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/textfield': 3.14.8(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/form': 3.0.5(react@18.3.1)
- '@react-stately/numberfield': 3.9.6(react@18.3.1)
- '@react-types/button': 3.9.6(react@18.3.1)
- '@react-types/numberfield': 3.8.5(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/progress': 3.4.18(react@18.3.1)
+ '@react-types/meter': 3.4.5(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
'@react-aria/numberfield@3.11.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
@@ -6741,18 +6624,18 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/overlays@3.23.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/numberfield@3.11.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/ssr': 3.9.5(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-aria/visually-hidden': 3.8.15(react@18.3.1)
- '@react-stately/overlays': 3.6.10(react@18.3.1)
- '@react-types/button': 3.9.6(react@18.3.1)
- '@react-types/overlays': 3.8.9(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/spinbutton': 3.6.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/textfield': 3.15.0(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/form': 3.1.0(react@18.3.1)
+ '@react-stately/numberfield': 3.9.8(react@18.3.1)
+ '@react-types/button': 3.10.1(react@18.3.1)
+ '@react-types/numberfield': 3.8.7(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -6773,124 +6656,73 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/progress@3.4.16(react@18.3.1)':
- dependencies:
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/label': 3.7.11(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-types/progress': 3.5.6(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
-
- '@react-aria/progress@3.4.17(react@18.3.1)':
- dependencies:
- '@react-aria/i18n': 3.12.3(react@18.3.1)
- '@react-aria/label': 3.7.12(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-types/progress': 3.5.7(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
-
- '@react-aria/radio@3.10.7(react@18.3.1)':
+ '@react-aria/overlays@3.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/form': 3.0.8(react@18.3.1)
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/label': 3.7.11(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/radio': 3.10.7(react@18.3.1)
- '@react-types/radio': 3.8.3(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/ssr': 3.9.7(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-aria/visually-hidden': 3.8.18(react@18.3.1)
+ '@react-stately/overlays': 3.6.12(react@18.3.1)
+ '@react-types/button': 3.10.1(react@18.3.1)
+ '@react-types/overlays': 3.8.11(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
- '@react-aria/radio@3.10.8(react@18.3.1)':
+ '@react-aria/progress@3.4.18(react@18.3.1)':
dependencies:
- '@react-aria/focus': 3.18.3(react@18.3.1)
- '@react-aria/form': 3.0.9(react@18.3.1)
- '@react-aria/i18n': 3.12.3(react@18.3.1)
- '@react-aria/interactions': 3.22.3(react@18.3.1)
- '@react-aria/label': 3.7.12(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-stately/radio': 3.10.8(react@18.3.1)
- '@react-types/radio': 3.8.4(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/label': 3.7.13(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-types/progress': 3.5.8(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/searchfield@3.7.8(react@18.3.1)':
+ '@react-aria/radio@3.10.10(react@18.3.1)':
dependencies:
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/textfield': 3.14.8(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/searchfield': 3.5.6(react@18.3.1)
- '@react-types/button': 3.9.6(react@18.3.1)
- '@react-types/searchfield': 3.5.8(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/form': 3.0.11(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/label': 3.7.13(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/radio': 3.10.9(react@18.3.1)
+ '@react-types/radio': 3.8.5(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/searchfield@3.7.9(react@18.3.1)':
+ '@react-aria/searchfield@3.7.11(react@18.3.1)':
dependencies:
- '@react-aria/i18n': 3.12.3(react@18.3.1)
- '@react-aria/textfield': 3.14.9(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-stately/searchfield': 3.5.7(react@18.3.1)
- '@react-types/button': 3.10.0(react@18.3.1)
- '@react-types/searchfield': 3.5.9(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/textfield': 3.15.0(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/searchfield': 3.5.8(react@18.3.1)
+ '@react-types/button': 3.10.1(react@18.3.1)
+ '@react-types/searchfield': 3.5.10(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/select@3.14.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/select@3.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/form': 3.0.9(react@18.3.1)
- '@react-aria/i18n': 3.12.3(react@18.3.1)
- '@react-aria/interactions': 3.22.3(react@18.3.1)
- '@react-aria/label': 3.7.12(react@18.3.1)
- '@react-aria/listbox': 3.13.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/menu': 3.15.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/selection': 3.20.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-aria/visually-hidden': 3.8.16(react@18.3.1)
- '@react-stately/select': 3.6.8(react@18.3.1)
- '@react-types/button': 3.10.0(react@18.3.1)
- '@react-types/select': 3.9.7(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- '@react-aria/select@3.14.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@react-aria/form': 3.0.8(react@18.3.1)
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/label': 3.7.11(react@18.3.1)
- '@react-aria/listbox': 3.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/menu': 3.15.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/selection': 3.19.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-aria/visually-hidden': 3.8.15(react@18.3.1)
- '@react-stately/select': 3.6.7(react@18.3.1)
- '@react-types/button': 3.9.6(react@18.3.1)
- '@react-types/select': 3.9.6(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- '@react-aria/selection@3.19.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/selection': 3.16.2(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/form': 3.0.11(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/label': 3.7.13(react@18.3.1)
+ '@react-aria/listbox': 3.13.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/menu': 3.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/selection': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-aria/visually-hidden': 3.8.18(react@18.3.1)
+ '@react-stately/select': 3.6.9(react@18.3.1)
+ '@react-types/button': 3.10.1(react@18.3.1)
+ '@react-types/select': 3.9.8(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -6907,30 +6739,22 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/separator@3.4.2(react@18.3.1)':
+ '@react-aria/selection@3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
-
- '@react-aria/separator@3.4.3(react@18.3.1)':
- dependencies:
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/selection': 3.18.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
- '@react-aria/slider@3.7.11(react@18.3.1)':
+ '@react-aria/separator@3.4.4(react@18.3.1)':
dependencies:
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/label': 3.7.11(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/slider': 3.5.7(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@react-types/slider': 3.7.5(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -6947,13 +6771,26 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/spinbutton@3.6.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/slider@3.7.14(react@18.3.1)':
+ dependencies:
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/label': 3.7.13(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/slider': 3.6.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@react-types/slider': 3.7.7(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
+ '@react-aria/spinbutton@3.6.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/live-announcer': 3.3.4
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-types/button': 3.9.6(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/live-announcer': 3.4.1
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-types/button': 3.10.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -6969,143 +6806,73 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/ssr@3.9.5(react@18.3.1)':
- dependencies:
- '@swc/helpers': 0.5.1
- react: 18.3.1
-
'@react-aria/ssr@3.9.6(react@18.3.1)':
dependencies:
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/switch@3.6.7(react@18.3.1)':
+ '@react-aria/ssr@3.9.7(react@18.3.1)':
dependencies:
- '@react-aria/toggle': 3.10.7(react@18.3.1)
- '@react-stately/toggle': 3.7.7(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@react-types/switch': 3.5.5(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
-
- '@react-aria/switch@3.6.8(react@18.3.1)':
- dependencies:
- '@react-aria/toggle': 3.10.8(react@18.3.1)
- '@react-stately/toggle': 3.7.8(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
- '@react-types/switch': 3.5.6(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
-
- '@react-aria/table@3.15.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/grid': 3.10.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/live-announcer': 3.3.4
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-aria/visually-hidden': 3.8.15(react@18.3.1)
- '@react-stately/collections': 3.10.9(react@18.3.1)
- '@react-stately/flags': 3.0.3
- '@react-stately/table': 3.12.2(react@18.3.1)
- '@react-types/checkbox': 3.8.3(react@18.3.1)
- '@react-types/grid': 3.2.8(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@react-types/table': 3.10.1(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- '@react-aria/table@3.15.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@react-aria/focus': 3.18.3(react@18.3.1)
- '@react-aria/grid': 3.10.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/i18n': 3.12.3(react@18.3.1)
- '@react-aria/interactions': 3.22.3(react@18.3.1)
- '@react-aria/live-announcer': 3.4.0
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-aria/visually-hidden': 3.8.16(react@18.3.1)
- '@react-stately/collections': 3.11.0(react@18.3.1)
- '@react-stately/flags': 3.0.4
- '@react-stately/table': 3.12.3(react@18.3.1)
- '@react-types/checkbox': 3.8.4(react@18.3.1)
- '@react-types/grid': 3.2.9(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
- '@react-types/table': 3.10.2(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- '@react-aria/tabs@3.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/switch@3.6.10(react@18.3.1)':
dependencies:
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/selection': 3.19.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/tabs': 3.6.9(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@react-types/tabs': 3.3.9(react@18.3.1)
+ '@react-aria/toggle': 3.10.10(react@18.3.1)
+ '@react-stately/toggle': 3.8.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@react-types/switch': 3.5.7(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- '@react-aria/tabs@3.9.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/table@3.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/focus': 3.18.3(react@18.3.1)
- '@react-aria/i18n': 3.12.3(react@18.3.1)
- '@react-aria/selection': 3.20.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-stately/tabs': 3.6.10(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
- '@react-types/tabs': 3.3.10(react@18.3.1)
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/grid': 3.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/live-announcer': 3.4.1
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-aria/visually-hidden': 3.8.18(react@18.3.1)
+ '@react-stately/collections': 3.12.0(react@18.3.1)
+ '@react-stately/flags': 3.0.5
+ '@react-stately/table': 3.13.0(react@18.3.1)
+ '@react-types/checkbox': 3.9.0(react@18.3.1)
+ '@react-types/grid': 3.2.10(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@react-types/table': 3.10.3(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/tag@3.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/tabs@3.9.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/gridlist': 3.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/label': 3.7.11(react@18.3.1)
- '@react-aria/selection': 3.19.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/list': 3.10.8(react@18.3.1)
- '@react-types/button': 3.9.6(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/selection': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/tabs': 3.7.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@react-types/tabs': 3.3.11(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/tag@3.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@react-aria/tag@3.4.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@react-aria/gridlist': 3.9.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/i18n': 3.12.3(react@18.3.1)
- '@react-aria/interactions': 3.22.3(react@18.3.1)
- '@react-aria/label': 3.7.12(react@18.3.1)
- '@react-aria/selection': 3.20.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-stately/list': 3.11.0(react@18.3.1)
- '@react-types/button': 3.10.0(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-aria/gridlist': 3.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/label': 3.7.13(react@18.3.1)
+ '@react-aria/selection': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/list': 3.11.1(react@18.3.1)
+ '@react-types/button': 3.10.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/textfield@3.14.8(react@18.3.1)':
- dependencies:
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/form': 3.0.8(react@18.3.1)
- '@react-aria/label': 3.7.11(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/form': 3.0.5(react@18.3.1)
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@react-types/textfield': 3.9.6(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
-
'@react-aria/textfield@3.14.9(react@18.3.1)':
dependencies:
'@react-aria/focus': 3.18.3(react@18.3.1)
@@ -7119,25 +6886,36 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/toggle@3.10.7(react@18.3.1)':
+ '@react-aria/textfield@3.15.0(react@18.3.1)':
dependencies:
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/toggle': 3.7.7(react@18.3.1)
- '@react-types/checkbox': 3.8.3(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/form': 3.0.11(react@18.3.1)
+ '@react-aria/label': 3.7.13(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/form': 3.1.0(react@18.3.1)
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@react-types/textfield': 3.10.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/toggle@3.10.8(react@18.3.1)':
+ '@react-aria/toggle@3.10.10(react@18.3.1)':
dependencies:
- '@react-aria/focus': 3.18.3(react@18.3.1)
- '@react-aria/interactions': 3.22.3(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-stately/toggle': 3.7.8(react@18.3.1)
- '@react-types/checkbox': 3.8.4(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/toggle': 3.8.0(react@18.3.1)
+ '@react-types/checkbox': 3.9.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
+ '@react-aria/toolbar@3.0.0-beta.11(react@18.3.1)':
+ dependencies:
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7150,25 +6928,14 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-aria/tooltip@3.7.7(react@18.3.1)':
+ '@react-aria/tooltip@3.7.10(react@18.3.1)':
dependencies:
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-stately/tooltip': 3.4.12(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@react-types/tooltip': 3.4.11(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
-
- '@react-aria/tooltip@3.7.8(react@18.3.1)':
- dependencies:
- '@react-aria/focus': 3.18.3(react@18.3.1)
- '@react-aria/interactions': 3.22.3(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-stately/tooltip': 3.4.13(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
- '@react-types/tooltip': 3.4.12(react@18.3.1)
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-stately/tooltip': 3.5.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@react-types/tooltip': 3.4.13(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7185,20 +6952,20 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/utils@3.25.2(react@18.3.1)':
+ '@react-aria/utils@3.25.3(react@18.3.1)':
dependencies:
- '@react-aria/ssr': 3.9.5(react@18.3.1)
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-aria/ssr': 3.9.6(react@18.3.1)
+ '@react-stately/utils': 3.10.4(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
clsx: 2.1.0
react: 18.3.1
- '@react-aria/utils@3.25.3(react@18.3.1)':
+ '@react-aria/utils@3.26.0(react@18.3.1)':
dependencies:
- '@react-aria/ssr': 3.9.6(react@18.3.1)
- '@react-stately/utils': 3.10.4(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-aria/ssr': 3.9.7(react@18.3.1)
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
clsx: 2.1.0
react: 18.3.1
@@ -7214,14 +6981,6 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@react-aria/visually-hidden@3.8.15(react@18.3.1)':
- dependencies:
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@swc/helpers': 0.5.1
- react: 18.3.1
-
'@react-aria/visually-hidden@3.8.16(react@18.3.1)':
dependencies:
'@react-aria/interactions': 3.22.3(react@18.3.1)
@@ -7230,6 +6989,14 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-aria/visually-hidden@3.8.18(react@18.3.1)':
+ dependencies:
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-spring/animated@9.7.2(react@18.3.1)':
dependencies:
'@react-spring/shared': 9.7.2(react@18.3.1)
@@ -7265,10 +7032,10 @@ snapshots:
'@react-stately/calendar@3.5.4(react@18.3.1)':
dependencies:
- '@internationalized/date': 3.5.5
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/calendar': 3.4.9(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@internationalized/date': 3.5.6
+ '@react-stately/utils': 3.10.4(react@18.3.1)
+ '@react-types/calendar': 3.4.10(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7281,12 +7048,30 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/calendar@3.6.0(react@18.3.1)':
+ dependencies:
+ '@internationalized/date': 3.6.0
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/calendar': 3.5.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
+ '@react-stately/checkbox@3.6.10(react@18.3.1)':
+ dependencies:
+ '@react-stately/form': 3.1.0(react@18.3.1)
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/checkbox': 3.9.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/checkbox@3.6.8(react@18.3.1)':
dependencies:
- '@react-stately/form': 3.0.5(react@18.3.1)
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/checkbox': 3.8.3(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-stately/form': 3.0.6(react@18.3.1)
+ '@react-stately/utils': 3.10.4(react@18.3.1)
+ '@react-types/checkbox': 3.8.4(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7301,13 +7086,19 @@ snapshots:
'@react-stately/collections@3.10.9(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
+ '@react-stately/collections@3.11.0(react@18.3.1)':
+ dependencies:
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-stately/collections@3.11.0(react@18.3.1)':
+ '@react-stately/collections@3.12.0(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7325,6 +7116,20 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/color@3.8.1(react@18.3.1)':
+ dependencies:
+ '@internationalized/number': 3.6.0
+ '@internationalized/string': 3.2.5
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-stately/form': 3.1.0(react@18.3.1)
+ '@react-stately/numberfield': 3.9.8(react@18.3.1)
+ '@react-stately/slider': 3.6.0(react@18.3.1)
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/color': 3.0.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/combobox@3.10.0(react@18.3.1)':
dependencies:
'@react-stately/collections': 3.11.0(react@18.3.1)
@@ -7338,22 +7143,35 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/combobox@3.10.1(react@18.3.1)':
+ dependencies:
+ '@react-stately/collections': 3.12.0(react@18.3.1)
+ '@react-stately/form': 3.1.0(react@18.3.1)
+ '@react-stately/list': 3.11.1(react@18.3.1)
+ '@react-stately/overlays': 3.6.12(react@18.3.1)
+ '@react-stately/select': 3.6.9(react@18.3.1)
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/combobox': 3.13.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/combobox@3.9.2(react@18.3.1)':
dependencies:
- '@react-stately/collections': 3.10.9(react@18.3.1)
- '@react-stately/form': 3.0.5(react@18.3.1)
- '@react-stately/list': 3.10.8(react@18.3.1)
- '@react-stately/overlays': 3.6.10(react@18.3.1)
- '@react-stately/select': 3.6.7(react@18.3.1)
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/combobox': 3.12.1(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-stately/collections': 3.11.0(react@18.3.1)
+ '@react-stately/form': 3.0.6(react@18.3.1)
+ '@react-stately/list': 3.11.0(react@18.3.1)
+ '@react-stately/overlays': 3.6.11(react@18.3.1)
+ '@react-stately/select': 3.6.8(react@18.3.1)
+ '@react-stately/utils': 3.10.4(react@18.3.1)
+ '@react-types/combobox': 3.13.0(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
'@react-stately/data@3.11.6(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7365,13 +7183,13 @@ snapshots:
'@react-stately/datepicker@3.10.2(react@18.3.1)':
dependencies:
- '@internationalized/date': 3.5.5
- '@internationalized/string': 3.2.3
- '@react-stately/form': 3.0.5(react@18.3.1)
- '@react-stately/overlays': 3.6.10(react@18.3.1)
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/datepicker': 3.8.2(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@internationalized/date': 3.5.6
+ '@internationalized/string': 3.2.4
+ '@react-stately/form': 3.0.6(react@18.3.1)
+ '@react-stately/overlays': 3.6.11(react@18.3.1)
+ '@react-stately/utils': 3.10.4(react@18.3.1)
+ '@react-types/datepicker': 3.8.3(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7387,6 +7205,25 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/datepicker@3.11.0(react@18.3.1)':
+ dependencies:
+ '@internationalized/date': 3.6.0
+ '@internationalized/string': 3.2.5
+ '@react-stately/form': 3.1.0(react@18.3.1)
+ '@react-stately/overlays': 3.6.12(react@18.3.1)
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/datepicker': 3.9.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
+ '@react-stately/disclosure@3.0.0(react@18.3.1)':
+ dependencies:
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/disclosure@3.0.0-alpha.0(react@18.3.1)':
dependencies:
'@react-stately/utils': 3.10.4(react@18.3.1)
@@ -7396,8 +7233,8 @@ snapshots:
'@react-stately/dnd@3.4.2(react@18.3.1)':
dependencies:
- '@react-stately/selection': 3.16.2(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-stately/selection': 3.17.0(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7408,17 +7245,24 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-stately/flags@3.0.3':
+ '@react-stately/dnd@3.5.0(react@18.3.1)':
dependencies:
+ '@react-stately/selection': 3.18.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
+ react: 18.3.1
'@react-stately/flags@3.0.4':
dependencies:
'@swc/helpers': 0.5.1
+ '@react-stately/flags@3.0.5':
+ dependencies:
+ '@swc/helpers': 0.5.1
+
'@react-stately/form@3.0.5(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7428,12 +7272,27 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/form@3.1.0(react@18.3.1)':
+ dependencies:
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
+ '@react-stately/grid@3.10.0(react@18.3.1)':
+ dependencies:
+ '@react-stately/collections': 3.12.0(react@18.3.1)
+ '@react-stately/selection': 3.18.0(react@18.3.1)
+ '@react-types/grid': 3.2.10(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/grid@3.9.2(react@18.3.1)':
dependencies:
- '@react-stately/collections': 3.10.9(react@18.3.1)
- '@react-stately/selection': 3.16.2(react@18.3.1)
- '@react-types/grid': 3.2.8(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-stately/collections': 3.11.0(react@18.3.1)
+ '@react-stately/selection': 3.17.0(react@18.3.1)
+ '@react-types/grid': 3.2.9(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7459,10 +7318,10 @@ snapshots:
'@react-stately/list@3.10.8(react@18.3.1)':
dependencies:
- '@react-stately/collections': 3.10.9(react@18.3.1)
- '@react-stately/selection': 3.16.2(react@18.3.1)
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-stately/collections': 3.11.0(react@18.3.1)
+ '@react-stately/selection': 3.17.0(react@18.3.1)
+ '@react-stately/utils': 3.10.4(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7475,11 +7334,20 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/list@3.11.1(react@18.3.1)':
+ dependencies:
+ '@react-stately/collections': 3.12.0(react@18.3.1)
+ '@react-stately/selection': 3.18.0(react@18.3.1)
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/menu@3.8.2(react@18.3.1)':
dependencies:
- '@react-stately/overlays': 3.6.10(react@18.3.1)
- '@react-types/menu': 3.9.11(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-stately/overlays': 3.6.11(react@18.3.1)
+ '@react-types/menu': 3.9.12(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7491,12 +7359,20 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/menu@3.9.0(react@18.3.1)':
+ dependencies:
+ '@react-stately/overlays': 3.6.12(react@18.3.1)
+ '@react-types/menu': 3.9.13(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/numberfield@3.9.6(react@18.3.1)':
dependencies:
- '@internationalized/number': 3.5.3
- '@react-stately/form': 3.0.5(react@18.3.1)
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/numberfield': 3.8.5(react@18.3.1)
+ '@internationalized/number': 3.5.4
+ '@react-stately/form': 3.0.6(react@18.3.1)
+ '@react-stately/utils': 3.10.4(react@18.3.1)
+ '@react-types/numberfield': 3.8.6(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7509,10 +7385,19 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/numberfield@3.9.8(react@18.3.1)':
+ dependencies:
+ '@internationalized/number': 3.6.0
+ '@react-stately/form': 3.1.0(react@18.3.1)
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/numberfield': 3.8.7(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/overlays@3.6.10(react@18.3.1)':
dependencies:
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/overlays': 3.8.9(react@18.3.1)
+ '@react-stately/utils': 3.10.4(react@18.3.1)
+ '@react-types/overlays': 3.8.10(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7523,12 +7408,19 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/overlays@3.6.12(react@18.3.1)':
+ dependencies:
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/overlays': 3.8.11(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/radio@3.10.7(react@18.3.1)':
dependencies:
- '@react-stately/form': 3.0.5(react@18.3.1)
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/radio': 3.8.3(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-stately/form': 3.0.6(react@18.3.1)
+ '@react-stately/utils': 3.10.4(react@18.3.1)
+ '@react-types/radio': 3.8.4(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7541,10 +7433,19 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/radio@3.10.9(react@18.3.1)':
+ dependencies:
+ '@react-stately/form': 3.1.0(react@18.3.1)
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/radio': 3.8.5(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/searchfield@3.5.6(react@18.3.1)':
dependencies:
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/searchfield': 3.5.8(react@18.3.1)
+ '@react-stately/utils': 3.10.4(react@18.3.1)
+ '@react-types/searchfield': 3.5.9(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7555,13 +7456,20 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/searchfield@3.5.8(react@18.3.1)':
+ dependencies:
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/searchfield': 3.5.10(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/select@3.6.7(react@18.3.1)':
dependencies:
- '@react-stately/form': 3.0.5(react@18.3.1)
- '@react-stately/list': 3.10.8(react@18.3.1)
- '@react-stately/overlays': 3.6.10(react@18.3.1)
- '@react-types/select': 3.9.6(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-stately/form': 3.0.6(react@18.3.1)
+ '@react-stately/list': 3.11.0(react@18.3.1)
+ '@react-stately/overlays': 3.6.11(react@18.3.1)
+ '@react-types/select': 3.9.7(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7575,11 +7483,21 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/select@3.6.9(react@18.3.1)':
+ dependencies:
+ '@react-stately/form': 3.1.0(react@18.3.1)
+ '@react-stately/list': 3.11.1(react@18.3.1)
+ '@react-stately/overlays': 3.6.12(react@18.3.1)
+ '@react-types/select': 3.9.8(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/selection@3.16.2(react@18.3.1)':
dependencies:
- '@react-stately/collections': 3.10.9(react@18.3.1)
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-stately/collections': 3.11.0(react@18.3.1)
+ '@react-stately/utils': 3.10.4(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7591,11 +7509,19 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/selection@3.18.0(react@18.3.1)':
+ dependencies:
+ '@react-stately/collections': 3.12.0(react@18.3.1)
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/slider@3.5.7(react@18.3.1)':
dependencies:
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@react-types/slider': 3.7.5(react@18.3.1)
+ '@react-stately/utils': 3.10.4(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-types/slider': 3.7.6(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7607,16 +7533,24 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/slider@3.6.0(react@18.3.1)':
+ dependencies:
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@react-types/slider': 3.7.7(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/table@3.12.2(react@18.3.1)':
dependencies:
- '@react-stately/collections': 3.10.9(react@18.3.1)
- '@react-stately/flags': 3.0.3
+ '@react-stately/collections': 3.11.0(react@18.3.1)
+ '@react-stately/flags': 3.0.4
'@react-stately/grid': 3.9.2(react@18.3.1)
- '@react-stately/selection': 3.16.2(react@18.3.1)
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/grid': 3.2.8(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@react-types/table': 3.10.1(react@18.3.1)
+ '@react-stately/selection': 3.17.0(react@18.3.1)
+ '@react-stately/utils': 3.10.4(react@18.3.1)
+ '@react-types/grid': 3.2.9(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-types/table': 3.10.2(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7633,6 +7567,19 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/table@3.13.0(react@18.3.1)':
+ dependencies:
+ '@react-stately/collections': 3.12.0(react@18.3.1)
+ '@react-stately/flags': 3.0.5
+ '@react-stately/grid': 3.10.0(react@18.3.1)
+ '@react-stately/selection': 3.18.0(react@18.3.1)
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/grid': 3.2.10(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@react-types/table': 3.10.3(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/tabs@3.6.10(react@18.3.1)':
dependencies:
'@react-stately/list': 3.11.0(react@18.3.1)
@@ -7643,16 +7590,24 @@ snapshots:
'@react-stately/tabs@3.6.9(react@18.3.1)':
dependencies:
- '@react-stately/list': 3.10.8(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@react-types/tabs': 3.3.9(react@18.3.1)
+ '@react-stately/list': 3.11.0(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-types/tabs': 3.3.10(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
+ '@react-stately/tabs@3.7.0(react@18.3.1)':
+ dependencies:
+ '@react-stately/list': 3.11.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@react-types/tabs': 3.3.11(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
'@react-stately/toggle@3.7.7(react@18.3.1)':
dependencies:
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/checkbox': 3.8.3(react@18.3.1)
+ '@react-stately/utils': 3.10.4(react@18.3.1)
+ '@react-types/checkbox': 3.8.4(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7663,10 +7618,18 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/toggle@3.8.0(react@18.3.1)':
+ dependencies:
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/checkbox': 3.9.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/tooltip@3.4.12(react@18.3.1)':
dependencies:
- '@react-stately/overlays': 3.6.10(react@18.3.1)
- '@react-types/tooltip': 3.4.11(react@18.3.1)
+ '@react-stately/overlays': 3.6.11(react@18.3.1)
+ '@react-types/tooltip': 3.4.12(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7677,12 +7640,19 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/tooltip@3.5.0(react@18.3.1)':
+ dependencies:
+ '@react-stately/overlays': 3.6.12(react@18.3.1)
+ '@react-types/tooltip': 3.4.13(react@18.3.1)
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/tree@3.8.4(react@18.3.1)':
dependencies:
- '@react-stately/collections': 3.10.9(react@18.3.1)
- '@react-stately/selection': 3.16.2(react@18.3.1)
- '@react-stately/utils': 3.10.3(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-stately/collections': 3.11.0(react@18.3.1)
+ '@react-stately/selection': 3.17.0(react@18.3.1)
+ '@react-stately/utils': 3.10.4(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7695,8 +7665,12 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
- '@react-stately/utils@3.10.3(react@18.3.1)':
+ '@react-stately/tree@3.8.6(react@18.3.1)':
dependencies:
+ '@react-stately/collections': 3.12.0(react@18.3.1)
+ '@react-stately/selection': 3.18.0(react@18.3.1)
+ '@react-stately/utils': 3.10.5(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
'@swc/helpers': 0.5.1
react: 18.3.1
@@ -7705,6 +7679,11 @@ snapshots:
'@swc/helpers': 0.5.1
react: 18.3.1
+ '@react-stately/utils@3.10.5(react@18.3.1)':
+ dependencies:
+ '@swc/helpers': 0.5.1
+ react: 18.3.1
+
'@react-stately/virtualizer@4.1.0(react@18.3.1)':
dependencies:
'@react-aria/utils': 3.25.3(react@18.3.1)
@@ -7717,16 +7696,10 @@ snapshots:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/breadcrumbs@3.7.7(react@18.3.1)':
- dependencies:
- '@react-types/link': 3.5.7(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- react: 18.3.1
-
- '@react-types/breadcrumbs@3.7.8(react@18.3.1)':
+ '@react-types/breadcrumbs@3.7.9(react@18.3.1)':
dependencies:
- '@react-types/link': 3.5.8(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-types/link': 3.5.9(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
'@react-types/button@3.10.0(react@18.3.1)':
@@ -7734,9 +7707,9 @@ snapshots:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/button@3.9.6(react@18.3.1)':
+ '@react-types/button@3.10.1(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
'@react-types/calendar@3.4.10(react@18.3.1)':
@@ -7745,20 +7718,20 @@ snapshots:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/calendar@3.4.9(react@18.3.1)':
+ '@react-types/calendar@3.5.0(react@18.3.1)':
dependencies:
- '@internationalized/date': 3.5.5
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@internationalized/date': 3.6.0
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
- '@react-types/checkbox@3.8.3(react@18.3.1)':
+ '@react-types/checkbox@3.8.4(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/checkbox@3.8.4(react@18.3.1)':
+ '@react-types/checkbox@3.9.0(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
'@react-types/color@3.0.0(react@18.3.1)':
@@ -7767,9 +7740,10 @@ snapshots:
'@react-types/slider': 3.7.6(react@18.3.1)
react: 18.3.1
- '@react-types/combobox@3.12.1(react@18.3.1)':
+ '@react-types/color@3.0.1(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@react-types/slider': 3.7.7(react@18.3.1)
react: 18.3.1
'@react-types/combobox@3.13.0(react@18.3.1)':
@@ -7777,12 +7751,9 @@ snapshots:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/datepicker@3.8.2(react@18.3.1)':
+ '@react-types/combobox@3.13.1(react@18.3.1)':
dependencies:
- '@internationalized/date': 3.5.5
- '@react-types/calendar': 3.4.9(react@18.3.1)
- '@react-types/overlays': 3.8.9(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
'@react-types/datepicker@3.8.3(react@18.3.1)':
@@ -7793,16 +7764,18 @@ snapshots:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/dialog@3.5.12(react@18.3.1)':
+ '@react-types/datepicker@3.9.0(react@18.3.1)':
dependencies:
- '@react-types/overlays': 3.8.9(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@internationalized/date': 3.6.0
+ '@react-types/calendar': 3.5.0(react@18.3.1)
+ '@react-types/overlays': 3.8.11(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
- '@react-types/dialog@3.5.13(react@18.3.1)':
+ '@react-types/dialog@3.5.14(react@18.3.1)':
dependencies:
- '@react-types/overlays': 3.8.10(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-types/overlays': 3.8.11(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
'@react-types/form@3.7.7(react@18.3.1)':
@@ -7810,9 +7783,9 @@ snapshots:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/grid@3.2.8(react@18.3.1)':
+ '@react-types/grid@3.2.10(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
'@react-types/grid@3.2.9(react@18.3.1)':
@@ -7820,30 +7793,14 @@ snapshots:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/link@3.5.7(react@18.3.1)':
+ '@react-types/link@3.5.9(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
- '@react-types/link@3.5.8(react@18.3.1)':
+ '@react-types/listbox@3.5.3(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.25.0(react@18.3.1)
- react: 18.3.1
-
- '@react-types/listbox@3.5.1(react@18.3.1)':
- dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
- react: 18.3.1
-
- '@react-types/listbox@3.5.2(react@18.3.1)':
- dependencies:
- '@react-types/shared': 3.25.0(react@18.3.1)
- react: 18.3.1
-
- '@react-types/menu@3.9.11(react@18.3.1)':
- dependencies:
- '@react-types/overlays': 3.8.9(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
'@react-types/menu@3.9.12(react@18.3.1)':
@@ -7852,24 +7809,25 @@ snapshots:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/meter@3.4.3(react@18.3.1)':
+ '@react-types/menu@3.9.13(react@18.3.1)':
dependencies:
- '@react-types/progress': 3.5.6(react@18.3.1)
+ '@react-types/overlays': 3.8.11(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
- '@react-types/meter@3.4.4(react@18.3.1)':
+ '@react-types/meter@3.4.5(react@18.3.1)':
dependencies:
- '@react-types/progress': 3.5.7(react@18.3.1)
+ '@react-types/progress': 3.5.8(react@18.3.1)
react: 18.3.1
- '@react-types/numberfield@3.8.5(react@18.3.1)':
+ '@react-types/numberfield@3.8.6(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/numberfield@3.8.6(react@18.3.1)':
+ '@react-types/numberfield@3.8.7(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.25.0(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
'@react-types/overlays@3.8.10(react@18.3.1)':
@@ -7877,35 +7835,30 @@ snapshots:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/overlays@3.8.9(react@18.3.1)':
+ '@react-types/overlays@3.8.11(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
- '@react-types/progress@3.5.6(react@18.3.1)':
+ '@react-types/progress@3.5.8(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
- '@react-types/progress@3.5.7(react@18.3.1)':
+ '@react-types/radio@3.8.4(react@18.3.1)':
dependencies:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/radio@3.8.3(react@18.3.1)':
+ '@react-types/radio@3.8.5(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
- '@react-types/radio@3.8.4(react@18.3.1)':
- dependencies:
- '@react-types/shared': 3.25.0(react@18.3.1)
- react: 18.3.1
-
- '@react-types/searchfield@3.5.8(react@18.3.1)':
+ '@react-types/searchfield@3.5.10(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
- '@react-types/textfield': 3.9.6(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ '@react-types/textfield': 3.10.0(react@18.3.1)
react: 18.3.1
'@react-types/searchfield@3.5.9(react@18.3.1)':
@@ -7914,27 +7867,22 @@ snapshots:
'@react-types/textfield': 3.9.7(react@18.3.1)
react: 18.3.1
- '@react-types/select@3.9.6(react@18.3.1)':
- dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
- react: 18.3.1
-
'@react-types/select@3.9.7(react@18.3.1)':
dependencies:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/shared@3.24.1(react@18.3.1)':
+ '@react-types/select@3.9.8(react@18.3.1)':
dependencies:
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
'@react-types/shared@3.25.0(react@18.3.1)':
dependencies:
react: 18.3.1
- '@react-types/slider@3.7.5(react@18.3.1)':
+ '@react-types/shared@3.26.0(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
react: 18.3.1
'@react-types/slider@3.7.6(react@18.3.1)':
@@ -7942,20 +7890,14 @@ snapshots:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/switch@3.5.5(react@18.3.1)':
+ '@react-types/slider@3.7.7(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
- '@react-types/switch@3.5.6(react@18.3.1)':
+ '@react-types/switch@3.5.7(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.25.0(react@18.3.1)
- react: 18.3.1
-
- '@react-types/table@3.10.1(react@18.3.1)':
- dependencies:
- '@react-types/grid': 3.2.8(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
'@react-types/table@3.10.2(react@18.3.1)':
@@ -7964,19 +7906,25 @@ snapshots:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
+ '@react-types/table@3.10.3(react@18.3.1)':
+ dependencies:
+ '@react-types/grid': 3.2.10(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ react: 18.3.1
+
'@react-types/tabs@3.3.10(react@18.3.1)':
dependencies:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/tabs@3.3.9(react@18.3.1)':
+ '@react-types/tabs@3.3.11(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
- '@react-types/textfield@3.9.6(react@18.3.1)':
+ '@react-types/textfield@3.10.0(react@18.3.1)':
dependencies:
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
'@react-types/textfield@3.9.7(react@18.3.1)':
@@ -7984,18 +7932,18 @@ snapshots:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- '@react-types/tooltip@3.4.11(react@18.3.1)':
- dependencies:
- '@react-types/overlays': 3.8.9(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- react: 18.3.1
-
'@react-types/tooltip@3.4.12(react@18.3.1)':
dependencies:
'@react-types/overlays': 3.8.10(react@18.3.1)
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
+ '@react-types/tooltip@3.4.13(react@18.3.1)':
+ dependencies:
+ '@react-types/overlays': 3.8.11(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
+ react: 18.3.1
+
'@redocly/ajv@8.11.2':
dependencies:
fast-deep-equal: 3.1.3
@@ -9221,7 +9169,7 @@ snapshots:
debug: 4.3.6(supports-color@9.4.0)
enhanced-resolve: 5.15.0
eslint: 8.57.0
- eslint-module-utils: 2.11.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0)
+ eslint-module-utils: 2.11.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
fast-glob: 3.3.2
get-tsconfig: 4.8.1
is-bun-module: 1.2.1
@@ -9234,7 +9182,7 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.11.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0):
+ eslint-module-utils@2.11.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0):
dependencies:
debug: 3.2.7
optionalDependencies:
@@ -9244,7 +9192,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0):
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0):
dependencies:
debug: 3.2.7
optionalDependencies:
@@ -9266,7 +9214,7 @@ snapshots:
doctrine: 2.1.0
eslint: 8.57.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0)
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3
@@ -9813,6 +9761,8 @@ snapshots:
highlight.js@10.7.3: {}
+ highlightjs-vue@1.0.0: {}
+
html-encoding-sniffer@3.0.0:
dependencies:
whatwg-encoding: 2.0.0
@@ -11334,93 +11284,52 @@ snapshots:
'@swc/helpers': 0.5.1
client-only: 0.0.1
react: 18.3.1
- react-aria: 3.35.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ react-aria: 3.36.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-dom: 18.3.1(react@18.3.1)
react-stately: 3.33.0(react@18.3.1)
use-sync-external-store: 1.2.0(react@18.3.1)
- react-aria@3.34.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@internationalized/string': 3.2.3
- '@react-aria/breadcrumbs': 3.5.16(react@18.3.1)
- '@react-aria/button': 3.9.8(react@18.3.1)
- '@react-aria/calendar': 3.5.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/checkbox': 3.14.6(react@18.3.1)
- '@react-aria/combobox': 3.10.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/datepicker': 3.11.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/dialog': 3.5.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/dnd': 3.7.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/focus': 3.18.2(react@18.3.1)
- '@react-aria/gridlist': 3.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/i18n': 3.12.2(react@18.3.1)
- '@react-aria/interactions': 3.22.2(react@18.3.1)
- '@react-aria/label': 3.7.11(react@18.3.1)
- '@react-aria/link': 3.7.4(react@18.3.1)
- '@react-aria/listbox': 3.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/menu': 3.15.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/meter': 3.4.16(react@18.3.1)
- '@react-aria/numberfield': 3.11.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/overlays': 3.23.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/progress': 3.4.16(react@18.3.1)
- '@react-aria/radio': 3.10.7(react@18.3.1)
- '@react-aria/searchfield': 3.7.8(react@18.3.1)
- '@react-aria/select': 3.14.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/selection': 3.19.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/separator': 3.4.2(react@18.3.1)
- '@react-aria/slider': 3.7.11(react@18.3.1)
- '@react-aria/ssr': 3.9.5(react@18.3.1)
- '@react-aria/switch': 3.6.7(react@18.3.1)
- '@react-aria/table': 3.15.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/tabs': 3.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/tag': 3.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/textfield': 3.14.8(react@18.3.1)
- '@react-aria/tooltip': 3.7.7(react@18.3.1)
- '@react-aria/utils': 3.25.2(react@18.3.1)
- '@react-aria/visually-hidden': 3.8.15(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- react-aria@3.35.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@internationalized/string': 3.2.4
- '@react-aria/breadcrumbs': 3.5.17(react@18.3.1)
- '@react-aria/button': 3.10.0(react@18.3.1)
- '@react-aria/calendar': 3.5.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/checkbox': 3.14.7(react@18.3.1)
- '@react-aria/color': 3.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/combobox': 3.10.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/datepicker': 3.11.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/dialog': 3.5.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/dnd': 3.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/focus': 3.18.3(react@18.3.1)
- '@react-aria/gridlist': 3.9.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/i18n': 3.12.3(react@18.3.1)
- '@react-aria/interactions': 3.22.3(react@18.3.1)
- '@react-aria/label': 3.7.12(react@18.3.1)
- '@react-aria/link': 3.7.5(react@18.3.1)
- '@react-aria/listbox': 3.13.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/menu': 3.15.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/meter': 3.4.17(react@18.3.1)
- '@react-aria/numberfield': 3.11.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/overlays': 3.23.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/progress': 3.4.17(react@18.3.1)
- '@react-aria/radio': 3.10.8(react@18.3.1)
- '@react-aria/searchfield': 3.7.9(react@18.3.1)
- '@react-aria/select': 3.14.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/selection': 3.20.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/separator': 3.4.3(react@18.3.1)
- '@react-aria/slider': 3.7.12(react@18.3.1)
- '@react-aria/ssr': 3.9.6(react@18.3.1)
- '@react-aria/switch': 3.6.8(react@18.3.1)
- '@react-aria/table': 3.15.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/tabs': 3.9.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/tag': 3.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-aria/textfield': 3.14.9(react@18.3.1)
- '@react-aria/tooltip': 3.7.8(react@18.3.1)
- '@react-aria/utils': 3.25.3(react@18.3.1)
- '@react-aria/visually-hidden': 3.8.16(react@18.3.1)
- '@react-types/shared': 3.25.0(react@18.3.1)
+ react-aria@3.36.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ dependencies:
+ '@internationalized/string': 3.2.5
+ '@react-aria/breadcrumbs': 3.5.19(react@18.3.1)
+ '@react-aria/button': 3.11.0(react@18.3.1)
+ '@react-aria/calendar': 3.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/checkbox': 3.15.0(react@18.3.1)
+ '@react-aria/color': 3.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/combobox': 3.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/datepicker': 3.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/dialog': 3.5.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/disclosure': 3.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/dnd': 3.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/focus': 3.19.0(react@18.3.1)
+ '@react-aria/gridlist': 3.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/i18n': 3.12.4(react@18.3.1)
+ '@react-aria/interactions': 3.22.5(react@18.3.1)
+ '@react-aria/label': 3.7.13(react@18.3.1)
+ '@react-aria/link': 3.7.7(react@18.3.1)
+ '@react-aria/listbox': 3.13.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/menu': 3.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/meter': 3.4.18(react@18.3.1)
+ '@react-aria/numberfield': 3.11.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/overlays': 3.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/progress': 3.4.18(react@18.3.1)
+ '@react-aria/radio': 3.10.10(react@18.3.1)
+ '@react-aria/searchfield': 3.7.11(react@18.3.1)
+ '@react-aria/select': 3.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/selection': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/separator': 3.4.4(react@18.3.1)
+ '@react-aria/slider': 3.7.14(react@18.3.1)
+ '@react-aria/ssr': 3.9.7(react@18.3.1)
+ '@react-aria/switch': 3.6.10(react@18.3.1)
+ '@react-aria/table': 3.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/tabs': 3.9.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/tag': 3.4.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@react-aria/textfield': 3.15.0(react@18.3.1)
+ '@react-aria/tooltip': 3.7.10(react@18.3.1)
+ '@react-aria/utils': 3.26.0(react@18.3.1)
+ '@react-aria/visually-hidden': 3.8.18(react@18.3.1)
+ '@react-types/shared': 3.26.0(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -11516,7 +11425,7 @@ snapshots:
'@react-stately/toggle': 3.7.7(react@18.3.1)
'@react-stately/tooltip': 3.4.12(react@18.3.1)
'@react-stately/tree': 3.8.4(react@18.3.1)
- '@react-types/shared': 3.24.1(react@18.3.1)
+ '@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
react-stately@3.33.0(react@18.3.1):
@@ -11547,10 +11456,11 @@ snapshots:
'@react-types/shared': 3.25.0(react@18.3.1)
react: 18.3.1
- react-syntax-highlighter@15.5.0(react@18.3.1):
+ react-syntax-highlighter@15.6.1(react@18.3.1):
dependencies:
- '@babel/runtime': 7.19.4
+ '@babel/runtime': 7.23.7
highlight.js: 10.7.3
+ highlightjs-vue: 1.0.0
lowlight: 1.20.0
prismjs: 1.29.0
react: 18.3.1
diff --git a/core/pom.xml b/core/pom.xml
index 822153042..1074530f1 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -24,7 +24,7 @@
2.16.1
5.3.0
1.12.0
- 3.4.1
+ 3.5.0
3.4.0
1.12.1
2.1.214
@@ -33,7 +33,7 @@
v18.12.1
8.19.2
8.7.1
- 5.16.0
+ 6.0.2
1.33
1.4
2.6.0
diff --git a/core/src/main/java/io/aiven/klaw/service/AclControllerService.java b/core/src/main/java/io/aiven/klaw/service/AclControllerService.java
index 1ca39ad63..9c2e264ae 100644
--- a/core/src/main/java/io/aiven/klaw/service/AclControllerService.java
+++ b/core/src/main/java/io/aiven/klaw/service/AclControllerService.java
@@ -60,7 +60,6 @@
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Service
@@ -100,7 +99,7 @@ public ApiResponse createAcl(AclRequestsModel aclRequestsModel) throws KlawExcep
aclRequestsModel.setRequestingteam(commonUtilsService.getTeamId(currentUserName));
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.REQUEST_CREATE_SUBSCRIPTIONS)) {
+ commonUtilsService.getPrincipal(), PermissionType.REQUEST_CREATE_SUBSCRIPTIONS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -454,7 +453,7 @@ public List getAclRequestsForApprover(
// get requests relevant to your teams or all teams
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.APPROVE_ALL_REQUESTS_TEAMS)) {
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_ALL_REQUESTS_TEAMS)) {
createdAclReqs =
manageDatabase
.getHandleDbRequests()
@@ -521,7 +520,7 @@ private List updateCreatAclReqsList(
public ApiResponse deleteAclRequests(String req_no) throws KlawException {
try {
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.REQUEST_CREATE_SUBSCRIPTIONS)) {
+ commonUtilsService.getPrincipal(), PermissionType.REQUEST_CREATE_SUBSCRIPTIONS)) {
return ApiResponse.NOT_AUTHORIZED;
}
String userName = getCurrentUserName();
@@ -544,7 +543,7 @@ public ApiResponse claimAcl(int aclId) throws KlawException {
log.info("claimAcl {}", aclId);
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.REQUEST_CREATE_SUBSCRIPTIONS)) {
+ commonUtilsService.getPrincipal(), PermissionType.REQUEST_CREATE_SUBSCRIPTIONS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -619,7 +618,7 @@ public ApiResponse createDeleteAclSubscriptionRequest(String req_no) throws Klaw
log.info("createDeleteAclSubscriptionRequest {}", req_no);
final String userName = getCurrentUserName();
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.REQUEST_DELETE_SUBSCRIPTIONS)) {
+ commonUtilsService.getPrincipal(), PermissionType.REQUEST_DELETE_SUBSCRIPTIONS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -677,7 +676,7 @@ public ApiResponse approveAclRequests(String req_no)
final String userDetails = getCurrentUserName();
int tenantId = commonUtilsService.getTenantId(userDetails);
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.APPROVE_SUBSCRIPTIONS)) {
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_SUBSCRIPTIONS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -1033,7 +1032,7 @@ public ApiResponse declineAclRequests(String req_no, String reasonToDecline)
String userDetails = getCurrentUserName();
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.APPROVE_SUBSCRIPTIONS)) {
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_SUBSCRIPTIONS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -1111,10 +1110,6 @@ public List getConsumerOffsets(
return consumerOffsetInfoList;
}
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- }
-
public ServiceAccountDetails getAivenServiceAccountDetails(
String envId, String topicName, String serviceAccount, String aclReqNo) {
String loggedInUser = getCurrentUserName();
diff --git a/core/src/main/java/io/aiven/klaw/service/AclSyncControllerService.java b/core/src/main/java/io/aiven/klaw/service/AclSyncControllerService.java
index b1a0b1953..1304e4803 100644
--- a/core/src/main/java/io/aiven/klaw/service/AclSyncControllerService.java
+++ b/core/src/main/java/io/aiven/klaw/service/AclSyncControllerService.java
@@ -43,7 +43,6 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Service
@@ -82,7 +81,8 @@ public ApiResponse updateSyncAcls(List syncAclUpdates) throws Kl
String userName = getUserName();
int tenantId = commonUtilsService.getTenantId(userName);
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.SYNC_SUBSCRIPTIONS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.SYNC_SUBSCRIPTIONS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -179,7 +179,7 @@ public ApiResponse updateSyncBackAcls(SyncBackAcls syncBackAcls) throws KlawExce
logArray.add("Type of Sync " + syncBackAcls.getTypeOfSync());
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.SYNC_BACK_SUBSCRIPTIONS)) {
+ commonUtilsService.getPrincipal(), PermissionType.SYNC_BACK_SUBSCRIPTIONS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -395,7 +395,8 @@ public List getSyncAcls(
topicNameSearch = topicNameSearch.trim();
}
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.SYNC_SUBSCRIPTIONS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.SYNC_SUBSCRIPTIONS)) {
return null;
}
@@ -440,7 +441,7 @@ public List getSyncBackAcls(
int tenantId = commonUtilsService.getTenantId(userName);
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.SYNC_BACK_SUBSCRIPTIONS)) {
+ commonUtilsService.getPrincipal(), PermissionType.SYNC_BACK_SUBSCRIPTIONS)) {
return null;
}
@@ -698,7 +699,7 @@ private boolean verifyIfTopicExists(
private List tenantFiltering(List teamList) {
if (!commonUtilsService.isNotAuthorizedUser(
- getPrincipal(),
+ commonUtilsService.getPrincipal(),
Set.of(
PermissionType.SYNC_BACK_SUBSCRIPTIONS,
PermissionType.SYNC_TOPICS,
@@ -726,7 +727,7 @@ private int counterIncrement() {
}
private String getUserName() {
- return mailService.getUserName(getPrincipal());
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
public Env getEnvDetails(String envId, int tenantId) {
@@ -737,8 +738,4 @@ public Env getEnvDetails(String envId, int tenantId) {
.findFirst();
return envFound.orElse(null);
}
-
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- }
}
diff --git a/core/src/main/java/io/aiven/klaw/service/AnalyticsControllerService.java b/core/src/main/java/io/aiven/klaw/service/AnalyticsControllerService.java
index 8015eed25..82870fe1c 100644
--- a/core/src/main/java/io/aiven/klaw/service/AnalyticsControllerService.java
+++ b/core/src/main/java/io/aiven/klaw/service/AnalyticsControllerService.java
@@ -36,7 +36,6 @@
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Service
@@ -343,7 +342,8 @@ public List getTeamsOverview(String forTeam, int numberOfDays) {
final String currentUserName = getCurrentUserName();
Integer userTeamId = commonUtilsService.getTeamId(currentUserName);
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.ALL_TEAMS_REPORTS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.ALL_TEAMS_REPORTS)) {
int tenantId = commonUtilsService.getTenantId(currentUserName);
teamOverview.setProducerAclsPerTeamsOverview(
@@ -593,7 +593,8 @@ private Map> getTopicNames(int tenantId) {
final Set allowedEnvIdSet = commonUtilsService.getEnvsFromUserId(getCurrentUserName());
Map> topicsPerEnv = new HashMap<>();
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.ALL_TEAMS_REPORTS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.ALL_TEAMS_REPORTS)) {
// normal user
Integer userTeamId = commonUtilsService.getTeamId(getCurrentUserName());
List topics =
@@ -630,7 +631,8 @@ private Map> getConsumerGroups(int tenantId) {
final Set allowedEnvIdSet = commonUtilsService.getEnvsFromUserId(getCurrentUserName());
Map> aclsPerEnv = new HashMap<>();
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.ALL_TEAMS_REPORTS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.ALL_TEAMS_REPORTS)) {
// normal user
Integer userTeamId = commonUtilsService.getTeamId(getCurrentUserName());
List acls =
@@ -665,8 +667,4 @@ private Map> getConsumerGroups(int tenantId) {
return aclsPerEnv;
}
-
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- }
}
diff --git a/core/src/main/java/io/aiven/klaw/service/BaseOverviewService.java b/core/src/main/java/io/aiven/klaw/service/BaseOverviewService.java
index 2ef97ff05..f2367ce4b 100644
--- a/core/src/main/java/io/aiven/klaw/service/BaseOverviewService.java
+++ b/core/src/main/java/io/aiven/klaw/service/BaseOverviewService.java
@@ -31,7 +31,6 @@
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Slf4j
@@ -333,11 +332,7 @@ protected void generatePromotionDetails(
}
protected String getUserName() {
- return mailService.getUserName(getPrincipal());
- }
-
- protected Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
protected Env getEnvDetails(String envId, int tenantId) {
diff --git a/core/src/main/java/io/aiven/klaw/service/EnvsClustersTenantsControllerService.java b/core/src/main/java/io/aiven/klaw/service/EnvsClustersTenantsControllerService.java
index 0f3e94673..ccf07e74d 100644
--- a/core/src/main/java/io/aiven/klaw/service/EnvsClustersTenantsControllerService.java
+++ b/core/src/main/java/io/aiven/klaw/service/EnvsClustersTenantsControllerService.java
@@ -107,7 +107,7 @@ public void setServices(ClusterApiService clusterApiService, MailUtils mailServi
}
private boolean isAuthorizedFor(PermissionType type) {
- return !commonUtilsService.isNotAuthorizedUser(getPrincipal(), type);
+ return !commonUtilsService.isNotAuthorizedUser(commonUtilsService.getPrincipal(), type);
}
public synchronized EnvModelResponse getEnvDetails(String envSelected, String clusterType) {
@@ -392,7 +392,8 @@ public List getKafkaConnectEnvs() {
int tenantId = getUserDetails(userName).getTenantId();
List listEnvs = manageDatabase.getKafkaConnectEnvList(tenantId);
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), ADD_EDIT_DELETE_ENVS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), ADD_EDIT_DELETE_ENVS)) {
final Set allowedEnvIdSet = commonUtilsService.getEnvsFromUserId(userName);
listEnvs =
listEnvs.stream().filter(env -> allowedEnvIdSet.contains(env.getId())).collect(toList());
@@ -730,7 +731,7 @@ private void associateWithKafkaEnv(EnvTag envTag, String envId, String envName,
}
private String getUserName() {
- return mailService.getUserName(getPrincipal());
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
private Boolean isUserSuperAdmin() {
@@ -858,10 +859,6 @@ public KwTenantModel getMyTenantInfo() {
return kwTenantModel;
}
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- }
-
public ApiResponse deleteTenant() throws KlawException {
if (!isAuthorizedFor(UPDATE_DELETE_MY_TENANT)) {
return ApiResponse.NOT_AUTHORIZED;
@@ -907,7 +904,7 @@ public ApiResponse deleteTenant() throws KlawException {
public ApiResponse updateTenant(KwTenantModel kwTenantModel) throws KlawException {
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.UPDATE_DELETE_MY_TENANT)) {
+ commonUtilsService.getPrincipal(), PermissionType.UPDATE_DELETE_MY_TENANT)) {
return ApiResponse.NOT_AUTHORIZED;
}
diff --git a/core/src/main/java/io/aiven/klaw/service/KafkaConnectControllerService.java b/core/src/main/java/io/aiven/klaw/service/KafkaConnectControllerService.java
index 69a5e3efc..a2441568d 100644
--- a/core/src/main/java/io/aiven/klaw/service/KafkaConnectControllerService.java
+++ b/core/src/main/java/io/aiven/klaw/service/KafkaConnectControllerService.java
@@ -72,7 +72,6 @@
import org.jasypt.util.text.BasicTextEncryptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.HttpServerErrorException;
@@ -111,7 +110,7 @@ public ApiResponse createConnectorRequest(KafkaConnectorRequestModel connectorRe
String userName = getUserName();
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.REQUEST_CREATE_CONNECTORS)) {
+ commonUtilsService.getPrincipal(), PermissionType.REQUEST_CREATE_CONNECTORS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -504,7 +503,7 @@ public ApiResponse restartConnector(KafkaConnectorRestartModel kafkaConnectorRes
int tenantId = commonUtilsService.getTenantId(getUserName());
try {
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.MANAGE_CONNECTORS)) {
+ commonUtilsService.getPrincipal(), PermissionType.MANAGE_CONNECTORS)) {
return ApiResponse.NOT_AUTHORIZED;
}
return clusterApiService.restartConnector(kafkaConnectorRestartModel, tenantId);
@@ -528,7 +527,7 @@ public List getCreatedConnectorRequests(
// get requests relevant to your teams or all teams
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.APPROVE_ALL_REQUESTS_TEAMS))
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_ALL_REQUESTS_TEAMS))
createdTopicReqList =
manageDatabase
.getHandleDbRequests()
@@ -637,7 +636,8 @@ public ApiResponse approveConnectorRequests(String connectorId)
String userDetails = getUserName();
int tenantId = commonUtilsService.getTenantId(getUserName());
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.APPROVE_CONNECTORS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_CONNECTORS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -788,7 +788,8 @@ public ApiResponse declineConnectorRequests(String connectorId, String reasonFor
throws KlawException {
log.info("declineConnectorRequests {} {}", connectorId, reasonForDecline);
String userDetails = getUserName();
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.APPROVE_CONNECTORS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_CONNECTORS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -837,7 +838,7 @@ public ApiResponse createConnectorDeleteRequest(String connectorName, String env
String userDetails = getUserName();
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.REQUEST_DELETE_CONNECTORS)) {
+ commonUtilsService.getPrincipal(), PermissionType.REQUEST_DELETE_CONNECTORS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -1553,11 +1554,7 @@ private List getFilteredConnectorsForTenant(
}
private String getUserName() {
- return mailService.getUserName(getPrincipal());
- }
-
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
public Env getKafkaConnectEnvDetails(String envId) {
diff --git a/core/src/main/java/io/aiven/klaw/service/KafkaConnectSyncControllerService.java b/core/src/main/java/io/aiven/klaw/service/KafkaConnectSyncControllerService.java
index f10013d26..b49edc159 100644
--- a/core/src/main/java/io/aiven/klaw/service/KafkaConnectSyncControllerService.java
+++ b/core/src/main/java/io/aiven/klaw/service/KafkaConnectSyncControllerService.java
@@ -34,7 +34,6 @@
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Service
@@ -81,7 +80,8 @@ public ApiResponse updateSyncConnectors(List updatedSyncTo
log.info("updateSyncConnectors {}", updatedSyncTopics);
String userName = getUserName();
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.SYNC_CONNECTORS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.SYNC_CONNECTORS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -477,7 +477,8 @@ private List getSyncConnectorsList(
}
private List tenantFilterTeams(List teamList) {
- if (!commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.SYNC_CONNECTORS)) {
+ if (!commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.SYNC_CONNECTORS)) {
// tenant filtering
int tenantId = commonUtilsService.getTenantId(getUserName());
List teams = manageDatabase.getHandleDbRequests().getAllTeams(tenantId);
@@ -492,11 +493,7 @@ private List tenantFilterTeams(List teamList) {
}
private String getUserName() {
- return mailService.getUserName(getPrincipal());
- }
-
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
public Env getKafkaConnectorEnvDetails(String envId) {
diff --git a/core/src/main/java/io/aiven/klaw/service/MetricsControllerService.java b/core/src/main/java/io/aiven/klaw/service/MetricsControllerService.java
index 04da96233..af6f6950c 100644
--- a/core/src/main/java/io/aiven/klaw/service/MetricsControllerService.java
+++ b/core/src/main/java/io/aiven/klaw/service/MetricsControllerService.java
@@ -11,7 +11,6 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Service
@@ -31,7 +30,7 @@ public class MetricsControllerService {
@Autowired private CommonUtilsService commonUtilsService;
private String getUserName() {
- return mailService.getUserName(getPrincipal());
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
// default 1 min
@@ -109,8 +108,4 @@ private ChartsJsOverview getBrokerTopMetricsOverview() {
"Messages",
commonUtilsService.getTenantId(getUserName()));
}
-
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- }
}
diff --git a/core/src/main/java/io/aiven/klaw/service/OperationalRequestsService.java b/core/src/main/java/io/aiven/klaw/service/OperationalRequestsService.java
index e29e203bb..0efe08c58 100644
--- a/core/src/main/java/io/aiven/klaw/service/OperationalRequestsService.java
+++ b/core/src/main/java/io/aiven/klaw/service/OperationalRequestsService.java
@@ -42,7 +42,6 @@
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.math.NumberUtils;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Service
@@ -264,7 +263,7 @@ public List getOperationalRequestsForApprover(
int tenantId = commonUtilsService.getTenantId(userName);
// get requests relevant to your teams or all teams
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.APPROVE_ALL_REQUESTS_TEAMS)) {
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_ALL_REQUESTS_TEAMS)) {
operationalRequestList =
manageDatabase
.getHandleDbRequests()
@@ -400,7 +399,7 @@ public ApiResponse approveOperationalRequests(String reqId) {
final String userName = getUserName();
int tenantId = commonUtilsService.getTenantId(userName);
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.APPROVE_OPERATIONAL_CHANGES)) {
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_OPERATIONAL_CHANGES)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -477,7 +476,7 @@ public ApiResponse approveOperationalRequests(String reqId) {
}
private void checkIsAuthorized(PermissionType permission) throws KlawNotAuthorizedException {
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), permission)) {
+ if (commonUtilsService.isNotAuthorizedUser(commonUtilsService.getPrincipal(), permission)) {
throw new KlawNotAuthorizedException(TOPICS_ERR_101);
}
}
@@ -486,10 +485,6 @@ private String getUserName() {
return mailService.getCurrentUserName();
}
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- }
-
public EnvIdInfo validateOffsetRequestDetails(
String envId, String topicName, String consumerGroup) {
log.debug("validateOffsetRequestDetails {} {} {}", envId, topicName, consumerGroup);
@@ -520,7 +515,7 @@ public ApiResponse deleteOperationalRequest(String operationalRequestId) throws
log.info("deleteOperationalRequest {}", operationalRequestId);
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.REQUEST_CREATE_OPERATIONAL_CHANGES)) {
+ commonUtilsService.getPrincipal(), PermissionType.REQUEST_CREATE_OPERATIONAL_CHANGES)) {
return ApiResponse.NOT_AUTHORIZED;
}
String userName = getUserName();
@@ -546,7 +541,7 @@ public ApiResponse declineOperationalRequest(String reqId, String reasonForDecli
throws KlawException {
log.debug("declineOperationalRequest {} {}", reqId, reasonForDecline);
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.APPROVE_OPERATIONAL_CHANGES)) {
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_OPERATIONAL_CHANGES)) {
return ApiResponse.NOT_AUTHORIZED;
}
diff --git a/core/src/main/java/io/aiven/klaw/service/RequestStatisticsService.java b/core/src/main/java/io/aiven/klaw/service/RequestStatisticsService.java
index 791992308..097a04f4e 100644
--- a/core/src/main/java/io/aiven/klaw/service/RequestStatisticsService.java
+++ b/core/src/main/java/io/aiven/klaw/service/RequestStatisticsService.java
@@ -14,7 +14,6 @@
import java.util.Set;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Service
@@ -118,10 +117,6 @@ private void updateRequestsCountOverview(
}
private String getUserName() {
- return mailService.getUserName(getPrincipal());
- }
-
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
}
diff --git a/core/src/main/java/io/aiven/klaw/service/RolesPermissionsControllerService.java b/core/src/main/java/io/aiven/klaw/service/RolesPermissionsControllerService.java
index d0e550a86..e7b660ff6 100644
--- a/core/src/main/java/io/aiven/klaw/service/RolesPermissionsControllerService.java
+++ b/core/src/main/java/io/aiven/klaw/service/RolesPermissionsControllerService.java
@@ -13,7 +13,6 @@
import java.util.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Slf4j
@@ -37,14 +36,14 @@ public RolesPermissionsControllerService(
}
private String getUserName() {
- return mailService.getUserName(getPrincipal());
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
public List getRoles() {
int tenantId = commonUtilsService.getTenantId(getUserName());
try {
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.FULL_ACCESS_USERS_TEAMS_ROLES))
+ commonUtilsService.getPrincipal(), PermissionType.FULL_ACCESS_USERS_TEAMS_ROLES))
return Arrays.asList(
manageDatabase.getKwPropertyValue("klaw.adduser.roles", tenantId).split(","));
else {
@@ -68,7 +67,7 @@ public Map>> getPermissions(boolean isExternal
if (isExternalCall
&& commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.UPDATE_PERMISSIONS)) {
+ commonUtilsService.getPrincipal(), PermissionType.UPDATE_PERMISSIONS)) {
return null;
}
@@ -110,7 +109,8 @@ public Map getPermissionDescriptions() {
public ApiResponse updatePermissions(KwRolesPermissionsModel[] permissionsSet)
throws KlawException {
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.UPDATE_PERMISSIONS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.UPDATE_PERMISSIONS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -166,7 +166,7 @@ public ApiResponse updatePermissions(KwRolesPermissionsModel[] permissionsSet)
public ApiResponse deleteRole(String roleId) throws KlawException {
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.ADD_EDIT_DELETE_ROLES)) {
+ commonUtilsService.getPrincipal(), PermissionType.ADD_EDIT_DELETE_ROLES)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -191,7 +191,7 @@ public ApiResponse deleteRole(String roleId) throws KlawException {
public ApiResponse addRoleId(String roleId) throws KlawException {
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.ADD_EDIT_DELETE_ROLES)) {
+ commonUtilsService.getPrincipal(), PermissionType.ADD_EDIT_DELETE_ROLES)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -216,10 +216,6 @@ public ApiResponse addRoleId(String roleId) throws KlawException {
}
}
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- }
-
protected Set getApproverRoles(String requestType, int tenantId) {
Map>> existingPermissions = getPermissions(false);
Set approverRoles = new HashSet<>();
diff --git a/core/src/main/java/io/aiven/klaw/service/SchemaRegistryControllerService.java b/core/src/main/java/io/aiven/klaw/service/SchemaRegistryControllerService.java
index 1577e69cd..779cf3c63 100644
--- a/core/src/main/java/io/aiven/klaw/service/SchemaRegistryControllerService.java
+++ b/core/src/main/java/io/aiven/klaw/service/SchemaRegistryControllerService.java
@@ -45,7 +45,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Service
@@ -102,7 +101,8 @@ public List getSchemaRequests(
search,
isApproval
&& !commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.APPROVE_ALL_REQUESTS_TEAMS),
+ commonUtilsService.getPrincipal(),
+ PermissionType.APPROVE_ALL_REQUESTS_TEAMS),
isMyRequest);
// tenant filtering
@@ -205,7 +205,7 @@ public ApiResponse deleteSchemaRequests(String avroSchemaId) throws KlawExceptio
log.info("deleteSchemaRequests {}", avroSchemaId);
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.REQUEST_DELETE_SCHEMAS)) {
+ commonUtilsService.getPrincipal(), PermissionType.REQUEST_DELETE_SCHEMAS)) {
return ApiResponse.NOT_AUTHORIZED;
}
String userName = getUserName();
@@ -231,7 +231,8 @@ public ApiResponse execSchemaRequests(String avroSchemaId) throws KlawException
log.info("execSchemaRequests {}", avroSchemaId);
String userDetails = getUserName();
int tenantId = commonUtilsService.getTenantId(getUserName());
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.APPROVE_SCHEMAS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_SCHEMAS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -415,7 +416,8 @@ public ApiResponse execSchemaRequestsDecline(String avroSchemaId, String reasonF
throws KlawException {
log.info("execSchemaRequestsDecline {}", avroSchemaId);
String userDetails = getUserName();
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.APPROVE_SCHEMAS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_SCHEMAS)) {
return ApiResponse.NOT_AUTHORIZED;
}
int tenantId = commonUtilsService.getTenantId(getUserName());
@@ -452,7 +454,7 @@ public ApiResponse promoteSchema(SchemaPromotion schemaPromotion) throws Excepti
String userDetails = getUserName();
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.REQUEST_CREATE_SCHEMAS)) {
+ commonUtilsService.getPrincipal(), PermissionType.REQUEST_CREATE_SCHEMAS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -542,7 +544,7 @@ public ApiResponse uploadSchema(
String userName = getUserName();
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.REQUEST_CREATE_SCHEMAS)) {
+ commonUtilsService.getPrincipal(), PermissionType.REQUEST_CREATE_SCHEMAS)) {
return ApiResponse.NOT_AUTHORIZED;
}
schemaRequest.setRequestor(userName);
@@ -732,10 +734,6 @@ private String prettyPrintUglyJsonString(String json) {
}
private String getUserName() {
- return mailService.getUserName(getPrincipal());
- }
-
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
}
diff --git a/core/src/main/java/io/aiven/klaw/service/SchemaRegistrySyncControllerService.java b/core/src/main/java/io/aiven/klaw/service/SchemaRegistrySyncControllerService.java
index 5175dc18c..6b96944cb 100644
--- a/core/src/main/java/io/aiven/klaw/service/SchemaRegistrySyncControllerService.java
+++ b/core/src/main/java/io/aiven/klaw/service/SchemaRegistrySyncControllerService.java
@@ -42,7 +42,6 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Service
@@ -106,7 +105,8 @@ public SyncSchemasList getSchemasOfEnvironmentFromMetadataDb(
Integer teamId) {
SyncSchemasList syncSchemasList = new SyncSchemasList();
List schemaInfoList;
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.SYNC_BACK_SCHEMAS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.SYNC_BACK_SCHEMAS)) {
return syncSchemasList;
}
@@ -229,7 +229,8 @@ private SyncSchemasList getSchemaOfEnvironmentFromCluster(
boolean showAllTopics)
throws KlawException {
SyncSchemasList syncSchemasList = new SyncSchemasList();
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.SYNC_SCHEMAS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.SYNC_SCHEMAS)) {
return syncSchemasList;
}
@@ -440,7 +441,8 @@ public ApiResponse updateSyncSchemas(SyncSchemaUpdates syncSchemaUpdates) throws
private ApiResponse updateSyncSchemasToCluster(SyncSchemaUpdates syncSchemaUpdates)
throws KlawException {
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.SYNC_BACK_SCHEMAS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.SYNC_BACK_SCHEMAS)) {
return ApiResponse.NOT_AUTHORIZED;
}
List logArray = new ArrayList<>();
@@ -546,7 +548,8 @@ private ApiResponse updateSyncSchemasToCluster(SyncSchemaUpdates syncSchemaUpdat
private ApiResponse updateSyncSchemasToMetadata(SyncSchemaUpdates syncSchemaUpdates)
throws Exception {
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.SYNC_SCHEMAS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.SYNC_SCHEMAS)) {
return ApiResponse.NOT_AUTHORIZED;
}
String userDetails = getUserName();
@@ -705,11 +708,7 @@ private Integer getTeamIdFromDb(int tenantId, SchemaSubjectInfoResponse mp) {
}
private String getUserName() {
- return mailService.getUserName(getPrincipal());
- }
-
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
public ApiResponse resetCacheClusterApi(SchemaResetCache schemaResetCache) throws KlawException {
diff --git a/core/src/main/java/io/aiven/klaw/service/ServerConfigService.java b/core/src/main/java/io/aiven/klaw/service/ServerConfigService.java
index 3da6ac2af..f594c5ecd 100644
--- a/core/src/main/java/io/aiven/klaw/service/ServerConfigService.java
+++ b/core/src/main/java/io/aiven/klaw/service/ServerConfigService.java
@@ -50,7 +50,6 @@
import org.springframework.core.env.EnumerablePropertySource;
import org.springframework.core.env.Environment;
import org.springframework.core.env.PropertySource;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Service
@@ -125,7 +124,7 @@ public void getAllProperties() {
public Collection getAllProps() {
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.UPDATE_SERVERCONFIG)) {
+ commonUtilsService.getPrincipal(), PermissionType.UPDATE_SERVERCONFIG)) {
return new ArrayList<>();
}
return key2Props.values();
@@ -136,7 +135,7 @@ public List getAllEditableProps() {
KwPropertiesResponse propertiesResponse = new KwPropertiesResponse();
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.UPDATE_SERVERCONFIG)) {
+ commonUtilsService.getPrincipal(), PermissionType.UPDATE_SERVERCONFIG)) {
propertiesResponse.setResult(ApiResultStatus.NOT_AUTHORIZED.value);
listMap.add(propertiesResponse);
return listMap;
@@ -194,7 +193,7 @@ public ApiResponse updateKwCustomProperty(KwPropertiesModel kwPropertiesModel)
String kwVal = kwPropertiesModel.getKwValue().trim();
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.UPDATE_SERVERCONFIG)) {
+ commonUtilsService.getPrincipal(), PermissionType.UPDATE_SERVERCONFIG)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -552,10 +551,6 @@ public ConnectivityStatus testClusterApiConnection(String clusterApiUrl) throws
return connectivityStatus;
}
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- }
-
private Integer getTenantIdFromName(String tenantName) {
return manageDatabase.getTenantMap().entrySet().stream()
.filter(obj -> Objects.equals(obj.getValue(), tenantName))
@@ -565,6 +560,6 @@ private Integer getTenantIdFromName(String tenantName) {
}
private String getUserName() {
- return mailService.getUserName(getPrincipal());
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
}
diff --git a/core/src/main/java/io/aiven/klaw/service/TopicControllerService.java b/core/src/main/java/io/aiven/klaw/service/TopicControllerService.java
index eaaa01550..caabfffdc 100644
--- a/core/src/main/java/io/aiven/klaw/service/TopicControllerService.java
+++ b/core/src/main/java/io/aiven/klaw/service/TopicControllerService.java
@@ -82,7 +82,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.http.ResponseEntity;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Service
@@ -525,7 +524,7 @@ public List getTopicRequestsForApprover(
int tenantId = commonUtilsService.getTenantId(userName);
// get requests relevant to your teams or all teams
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.APPROVE_ALL_REQUESTS_TEAMS)) {
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_ALL_REQUESTS_TEAMS)) {
createdTopicReqList =
manageDatabase
.getHandleDbRequests()
@@ -717,10 +716,10 @@ public ApiResponse approveTopicRequests(String topicId) throws KlawException {
if (topicRequest.getRequestOperationType().equals(RequestOperationType.CREATE.value)
&& Boolean.parseBoolean(isOptionalExtraPermissionForPromote)
&& commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.APPROVE_TOPICS_CREATE)) {
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_TOPICS_CREATE)) {
return ApiResponse.notOk(ApiResultStatus.NOT_AUTHORIZED.value + ". " + TOPICS_ERR_116);
} else if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.APPROVE_TOPICS)) {
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_TOPICS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -882,7 +881,8 @@ private ApiResponse validateTopicRequest(TopicRequest topicRequest, String userN
public ApiResponse declineTopicRequests(String topicId, String reasonForDecline)
throws KlawException {
log.info("declineTopicRequests {} {}", topicId, reasonForDecline);
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.APPROVE_TOPICS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_TOPICS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -1301,11 +1301,7 @@ private int counterIncrement() {
}
public String getUserName() {
- return mailService.getUserName(getPrincipal());
- }
-
- public Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
public Env getEnvDetails(String envId) {
diff --git a/core/src/main/java/io/aiven/klaw/service/TopicSyncControllerService.java b/core/src/main/java/io/aiven/klaw/service/TopicSyncControllerService.java
index 1a75b2a66..1a88dc7e4 100644
--- a/core/src/main/java/io/aiven/klaw/service/TopicSyncControllerService.java
+++ b/core/src/main/java/io/aiven/klaw/service/TopicSyncControllerService.java
@@ -68,7 +68,6 @@
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@EnableScheduling
@@ -287,7 +286,8 @@ public SyncTopicsList getSyncTopics(
log.info("getSyncTopics {} {} {}", env, pageNo, topicNameSearch);
if (!"-1".equals(pageNo)) { // ignore check for scheduler
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.SYNC_TOPICS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.SYNC_TOPICS)) {
return null;
}
}
@@ -586,7 +586,7 @@ private void updateClusterDeletedTopicsList(
private List tenantFilterTeams(Integer tenantId, boolean scheduledThread) {
if (!scheduledThread
&& (!commonUtilsService.isNotAuthorizedUser(
- getPrincipal(),
+ commonUtilsService.getPrincipal(),
Set.of(
PermissionType.SYNC_BACK_SUBSCRIPTIONS,
PermissionType.SYNC_TOPICS,
@@ -619,7 +619,8 @@ public ApiResponse updateSyncBackTopics(SyncBackTopics syncBackTopics) {
"Target Environment " + getEnvDetails(syncBackTopics.getTargetEnv(), tenantId).getName());
logArray.add("Type of Sync " + syncBackTopics.getTypeOfSync());
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.SYNC_BACK_TOPICS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.SYNC_BACK_TOPICS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -914,7 +915,8 @@ public ApiResponse updateSyncTopicsBulk(SyncTopicsBulk syncTopicsBulk) throws Kl
logArray.add("Assigned to Team " + syncTopicsBulk.getSelectedTeam());
logArray.add("Type of Sync " + syncTopicsBulk.getTypeOfSync());
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.SYNC_TOPICS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.SYNC_TOPICS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -1055,7 +1057,8 @@ public ApiResponse updateSyncTopics(List updatedSyncTopics)
log.info("updateSyncTopics {}", updatedSyncTopics);
String userDetails = getUserName();
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.SYNC_TOPICS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.SYNC_TOPICS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -1244,11 +1247,7 @@ private List handleTopicDeletes(
}
private String getUserName() {
- return mailService.getUserName(getPrincipal());
- }
-
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
public Env getEnvDetails(String envId, Integer tenantId) {
diff --git a/core/src/main/java/io/aiven/klaw/service/UiConfigControllerService.java b/core/src/main/java/io/aiven/klaw/service/UiConfigControllerService.java
index a3c559e26..3e8bb7224 100644
--- a/core/src/main/java/io/aiven/klaw/service/UiConfigControllerService.java
+++ b/core/src/main/java/io/aiven/klaw/service/UiConfigControllerService.java
@@ -18,7 +18,6 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Service
@@ -45,7 +44,7 @@ public DbAuthInfo getDbAuth() {
}
private String getUserName() {
- return mailService.getUserName(getPrincipal());
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
public List showActivityLog(
@@ -55,7 +54,8 @@ public List showActivityLog(
List origActivityList;
int tenantId = commonUtilsService.getTenantId(getUserName());
- if (commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.ALL_TEAMS_REPORTS)) {
+ if (commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.ALL_TEAMS_REPORTS)) {
origActivityList =
manageDatabase
.getHandleDbRequests()
@@ -124,8 +124,4 @@ public ApiResponse sendMessageToAdmin(String contactFormSubject, String contactF
public List getRequestTypeStatuses() {
return manageDatabase.getRequestStatusList();
}
-
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- }
}
diff --git a/core/src/main/java/io/aiven/klaw/service/UsersTeamsControllerService.java b/core/src/main/java/io/aiven/klaw/service/UsersTeamsControllerService.java
index 4abc46e62..19ee7f225 100644
--- a/core/src/main/java/io/aiven/klaw/service/UsersTeamsControllerService.java
+++ b/core/src/main/java/io/aiven/klaw/service/UsersTeamsControllerService.java
@@ -57,7 +57,6 @@
import org.jasypt.util.text.BasicTextEncryptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
@@ -425,7 +424,7 @@ public ApiResponse deleteTeam(Integer teamId) throws KlawException {
String userName = getUserName();
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.ADD_EDIT_DELETE_TEAMS)) {
+ commonUtilsService.getPrincipal(), PermissionType.ADD_EDIT_DELETE_TEAMS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -469,7 +468,7 @@ public ApiResponse deleteUser(String userIdToDelete, boolean isExternal) throws
int tenantId = commonUtilsService.getTenantId(getUserName());
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.ADD_EDIT_DELETE_USERS)) {
+ commonUtilsService.getPrincipal(), PermissionType.ADD_EDIT_DELETE_USERS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -484,7 +483,7 @@ public ApiResponse deleteUser(String userIdToDelete, boolean isExternal) throws
// user to be deleted has superuser permissions.
// check if you (logged in user who is deleting) have superuser permissions to delete user
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.FULL_ACCESS_USERS_TEAMS_ROLES)) {
+ commonUtilsService.getPrincipal(), PermissionType.FULL_ACCESS_USERS_TEAMS_ROLES)) {
return ApiResponse.notOk(TEAMS_ERR_106);
}
}
@@ -574,7 +573,7 @@ public ApiResponse addNewUser(UserInfoModel newUser, boolean isExternal) throws
if (isExternal
&& commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.ADD_EDIT_DELETE_USERS)) {
+ commonUtilsService.getPrincipal(), PermissionType.ADD_EDIT_DELETE_USERS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -662,7 +661,7 @@ public ApiResponse addNewTeam(TeamModel newTeam, boolean isExternal) throws Klaw
if (isExternal
&& commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.ADD_EDIT_DELETE_TEAMS)) {
+ commonUtilsService.getPrincipal(), PermissionType.ADD_EDIT_DELETE_TEAMS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -707,7 +706,7 @@ public ApiResponse updateTeam(TeamModel updatedTeam) throws KlawException {
log.info("updateTeam {}", updatedTeam);
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.ADD_EDIT_DELETE_TEAMS)) {
+ commonUtilsService.getPrincipal(), PermissionType.ADD_EDIT_DELETE_TEAMS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -836,7 +835,7 @@ public UserInfoModelResponse getMyProfileInfo() {
}
private String getUserName() {
- return mailService.getUserName(getPrincipal());
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
Map addTwoDefaultTeams(
@@ -977,7 +976,7 @@ public ApiResponse registerUser(RegisterUserInfoModel newUser, boolean isExterna
public List getNewUserRequests()
throws KlawNotAuthorizedException {
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.ADD_EDIT_DELETE_USERS)) {
+ commonUtilsService.getPrincipal(), PermissionType.ADD_EDIT_DELETE_USERS)) {
throw new KlawNotAuthorizedException("You are not authorized to view this information.");
}
int tenantId = commonUtilsService.getTenantId(getUserName());
@@ -1008,7 +1007,7 @@ public ApiResponse approveNewUserRequests(
if (isExternal
&& commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.ADD_EDIT_DELETE_USERS)) {
+ commonUtilsService.getPrincipal(), PermissionType.ADD_EDIT_DELETE_USERS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -1050,7 +1049,7 @@ public ApiResponse declineNewUserRequests(String username) throws KlawException
String userDetails = getUserName();
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.ADD_EDIT_DELETE_USERS)) {
+ commonUtilsService.getPrincipal(), PermissionType.ADD_EDIT_DELETE_USERS)) {
return ApiResponse.NOT_AUTHORIZED;
}
@@ -1086,10 +1085,6 @@ public Env getEnvDetailsFromId(String envId) {
return envFound.orElse(null);
}
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- }
-
private boolean userNamePatternValidation(String userName) {
Matcher m1 = emailUsernamePattern.matcher(userName);
Matcher m2 = defaultPattern.matcher(userName);
diff --git a/core/src/main/java/io/aiven/klaw/service/UtilControllerService.java b/core/src/main/java/io/aiven/klaw/service/UtilControllerService.java
index f6754bfab..95286255b 100644
--- a/core/src/main/java/io/aiven/klaw/service/UtilControllerService.java
+++ b/core/src/main/java/io/aiven/klaw/service/UtilControllerService.java
@@ -47,7 +47,6 @@
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
import org.springframework.stereotype.Service;
@@ -112,7 +111,7 @@ public DashboardStats getDashboardStats() {
}
private String getUserName() {
- return mailService.getUserName(getPrincipal());
+ return mailService.getUserName(commonUtilsService.getPrincipal());
}
public String getTenantNameFromUser(String userId, UserInfo userInfo) {
@@ -135,11 +134,11 @@ public Map getAllRequestsToBeApproved(String requestor, int tena
Map countList = new HashMap<>();
String roleToSet = "";
if (!commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.APPROVE_SUBSCRIPTIONS)) {
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_SUBSCRIPTIONS)) {
roleToSet = APPROVER_SUBSCRIPTIONS;
}
if (!commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.REQUEST_CREATE_SUBSCRIPTIONS)) {
+ commonUtilsService.getPrincipal(), PermissionType.REQUEST_CREATE_SUBSCRIPTIONS)) {
roleToSet = REQUESTOR_SUBSCRIPTIONS;
}
List allSchemaReqs =
@@ -153,7 +152,7 @@ public Map getAllRequestsToBeApproved(String requestor, int tena
null,
null,
!commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.APPROVE_ALL_REQUESTS_TEAMS),
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_ALL_REQUESTS_TEAMS),
false);
List allAclReqs;
@@ -161,7 +160,7 @@ public Map getAllRequestsToBeApproved(String requestor, int tena
List allConnectorReqs;
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.APPROVE_ALL_REQUESTS_TEAMS)) {
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_ALL_REQUESTS_TEAMS)) {
allAclReqs =
reqsHandle.getAllAclRequests(
true,
@@ -244,7 +243,7 @@ public Map getAllRequestsToBeApproved(String requestor, int tena
countList.put("connectors", allConnectorReqs.size() + "");
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.ADD_EDIT_DELETE_USERS)) {
+ commonUtilsService.getPrincipal(), PermissionType.ADD_EDIT_DELETE_USERS)) {
countList.put("users", "0");
} else {
countList.put("users", reqsHandle.getCountRegisterUsersInfoForTenant(tenantId) + "");
@@ -260,7 +259,7 @@ public AuthenticationInfo getAuth() {
if (userName != null) {
String teamName =
manageDatabase.getTeamNameFromTeamId(tenantId, commonUtilsService.getTeamId(userName));
- String authority = commonUtilsService.getAuthority(getPrincipal());
+ String authority = commonUtilsService.getAuthority(commonUtilsService.getPrincipal());
Map outstanding = getAllRequestsToBeApproved(userName, tenantId);
String outstandingTopicReqs = outstanding.get("topics");
@@ -318,7 +317,8 @@ public AuthenticationInfo getAuth() {
authenticationInfo.setKafkaconnect_clusters_count(
"" + manageDatabase.getKafkaConnectEnvList(tenantId).size());
- final Set permissions = commonUtilsService.getPermissions(getPrincipal());
+ final Set permissions =
+ commonUtilsService.getPermissions(commonUtilsService.getPrincipal());
final String canUpdatePermissions =
getPermission(permissions, PermissionType.UPDATE_PERMISSIONS);
final String addEditRoles = getPermission(permissions, PermissionType.ADD_EDIT_DELETE_ROLES);
@@ -464,7 +464,7 @@ public AuthenticationInfo getAuth() {
isOptionalExtraPermissionForTopicCreateEnabled);
if (commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.APPROVE_TOPICS_CREATE)) {
+ commonUtilsService.getPrincipal(), PermissionType.APPROVE_TOPICS_CREATE)) {
authenticationInfo.setKlawOptionalPermissionNewTopicCreation("false");
} else {
authenticationInfo.setKlawOptionalPermissionNewTopicCreation("true");
@@ -550,16 +550,13 @@ public void shutdownContext() {
return;
}
- if (!commonUtilsService.isNotAuthorizedUser(getPrincipal(), PermissionType.SHUTDOWN_KLAW)) {
+ if (!commonUtilsService.isNotAuthorizedUser(
+ commonUtilsService.getPrincipal(), PermissionType.SHUTDOWN_KLAW)) {
log.info("Klaw Shutdown requested by {}", getUserName());
context.close();
}
}
- private Object getPrincipal() {
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- }
-
public Map getBasicInfo() {
Map resultBasicInfo = new HashMap<>();
resultBasicInfo.put("contextPath", kwContextPath);
@@ -613,7 +610,7 @@ public ApiResponse resetCache(ResetEntityCache resetEntityCache) {
// resources
} else if (entityType.equals(EntityType.USERS.name())
&& commonUtilsService.isNotAuthorizedUser(
- getPrincipal(), PermissionType.ADD_EDIT_DELETE_USERS)) {
+ commonUtilsService.getPrincipal(), PermissionType.ADD_EDIT_DELETE_USERS)) {
return ApiResponse.NOT_AUTHORIZED;
}
log.debug("Reset cache triggered on the instance {}", resetEntityCache);
diff --git a/core/src/test/java/io/aiven/klaw/service/AclControllerServiceTest.java b/core/src/test/java/io/aiven/klaw/service/AclControllerServiceTest.java
index 2f669da1c..f2dfc193e 100644
--- a/core/src/test/java/io/aiven/klaw/service/AclControllerServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/AclControllerServiceTest.java
@@ -68,12 +68,8 @@
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
-import org.mockito.Mockito;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.util.ReflectionTestUtils;
@@ -119,7 +115,8 @@ public void setUp() throws Exception {
rolesPermissionsControllerService);
when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequests);
when(commonUtilsService.getEnvDetails(anyString(), anyInt())).thenReturn(env);
- loginMock();
+ when(commonUtilsService.getPrincipal()).thenReturn(userDetails);
+ when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
}
private void mockKafkaFlavor() {
@@ -146,14 +143,6 @@ private void mockKafkaFlavorAiven() {
when(manageDatabase.getKafkaEnvList(anyInt())).thenReturn(utilMethods.getEnvLists());
}
- private void loginMock() {
- Authentication authentication = Mockito.mock(Authentication.class);
- SecurityContext securityContext = Mockito.mock(SecurityContext.class);
- when(securityContext.getAuthentication()).thenReturn(authentication);
- when(authentication.getPrincipal()).thenReturn(userDetails);
- SecurityContextHolder.setContext(securityContext);
- }
-
@Test
@Order(1)
public void createAclProducer() throws KlawException {
@@ -168,6 +157,9 @@ public void createAclProducer() throws KlawException {
Env env = new Env();
env.setClusterId(1);
when(commonUtilsService.getEnvDetails(anyString(), anyInt())).thenReturn(env);
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(false);
stubUserInfo();
mockKafkaFlavor();
@@ -186,6 +178,9 @@ public void createAclConsumer() throws KlawException {
hashMap.put("result", ApiResultStatus.SUCCESS.value);
when(commonUtilsService.getTopicsForTopicName(anyString(), anyInt())).thenReturn(topicList);
when(handleDbRequests.requestForAcl(any())).thenReturn(hashMap);
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(false);
mockKafkaFlavor();
stubUserInfo();
@@ -206,6 +201,9 @@ public void createAclConsumerThrowError() {
.thenThrow(new RuntimeException("Failure in creating request"));
stubUserInfo();
mockKafkaFlavor();
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(false);
KlawException thrown =
Assertions.assertThrows(
@@ -219,7 +217,9 @@ public void createAclNotAuthorized() throws KlawException {
AclRequests aclRequestsDao = new AclRequests();
AclRequestsModel aclRequests = getAclRequestProducer();
copyProperties(aclRequests, aclRequestsDao);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(true);
stubUserInfo();
ApiResponse resultResp = aclControllerService.createAcl(aclRequests);
@@ -233,6 +233,9 @@ public void createAclTopicNotFound() throws KlawException {
AclRequestsModel aclRequests = getAclRequestProducer();
copyProperties(aclRequests, aclRequestsDao);
when(handleDbRequests.getTopics(anyString(), anyInt())).thenReturn(Collections.emptyList());
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(false);
stubUserInfo();
ApiResponse resultResp = aclControllerService.createAcl(aclRequests);
@@ -249,6 +252,9 @@ public void createAclInvalidPattern() throws KlawException {
List topicList = utilMethods.getTopics();
copyProperties(aclRequestsModel, aclRequestsDao);
when(handleDbRequests.getTopics(anyString(), anyInt())).thenReturn(topicList);
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(false);
stubUserInfo();
mockKafkaFlavor();
@@ -270,6 +276,9 @@ public void createAclConsumerFailure() throws KlawException {
when(commonUtilsService.getTopicsForTopicName(anyString(), anyInt())).thenReturn(topicList);
when(handleDbRequests.validateIfConsumerGroupUsedByAnotherTeam(anyInt(), anyInt(), anyString()))
.thenReturn(true);
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(false);
stubUserInfo();
mockKafkaFlavor();
@@ -293,6 +302,9 @@ public void createAclProducerEmptyTxnId() throws KlawException {
hashMap.put("result", ApiResultStatus.SUCCESS.value);
when(commonUtilsService.getTopicsForTopicName(anyString(), anyInt())).thenReturn(topicList);
when(handleDbRequests.requestForAcl(any())).thenReturn(hashMap);
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(false);
stubUserInfo();
mockKafkaFlavor();
@@ -438,7 +450,9 @@ public void getCreatedAclRequestsNotAuthorizedForAllTeams() {
any(),
anyInt()))
.thenReturn(getAclRequests("testtopic", 16));
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.APPROVE_ALL_REQUESTS_TEAMS))
+ .thenReturn(true);
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
when(manageDatabase.getTeamNameFromTeamId(anyInt(), anyInt())).thenReturn(teamName);
@@ -465,6 +479,9 @@ public void deleteAclRequests() throws KlawException {
when(commonUtilsService.getTenantId(userDetails.getUsername())).thenReturn(1);
when(handleDbRequests.deleteAclRequest(anyInt(), anyString(), anyInt()))
.thenReturn(ApiResultStatus.SUCCESS.value);
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse result = aclControllerService.deleteAclRequests(req_no);
assertThat(result.getMessage()).isEqualTo(ApiResultStatus.SUCCESS.value);
}
@@ -473,16 +490,6 @@ public void deleteAclRequests() throws KlawException {
@Order(14)
public void deleteAclRequestsNotAuthorized() throws KlawException {
String req_no = "1001";
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
- ApiResponse result = aclControllerService.deleteAclRequests(req_no);
- assertThat(result.getMessage()).isEqualTo(ApiResultStatus.NOT_AUTHORIZED.value);
- }
-
- @Test
- @Order(14)
- public void deleteAclRequestsNotRequestOwner() throws KlawException {
- String req_no = "1001";
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
ApiResponse result = aclControllerService.deleteAclRequests(req_no);
assertThat(result.getMessage()).isEqualTo(ApiResultStatus.NOT_AUTHORIZED.value);
}
@@ -494,6 +501,9 @@ public void deleteAclRequestsFailure() {
when(mailService.getCurrentUserName()).thenReturn("testuser");
when(handleDbRequests.deleteAclRequest(anyInt(), anyString(), anyInt()))
.thenThrow(new RuntimeException("failure in deleting request"));
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(false);
KlawException thrown =
Assertions.assertThrows(
KlawException.class, () -> aclControllerService.deleteAclRequests(req_no));
@@ -515,6 +525,8 @@ public void approveAclRequests() throws KlawException, KlawBadRequestException {
.thenReturn(ApiResultStatus.SUCCESS.value);
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SUBSCRIPTIONS))
+ .thenReturn(false);
Topic t1 = new Topic();
t1.setTopicname("testtopic");
t1.setEnvironment("1");
@@ -548,6 +560,8 @@ public void approveAclRequestsWithAivenAcl() throws KlawException, KlawBadReques
.thenReturn(ApiResultStatus.SUCCESS.value);
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SUBSCRIPTIONS))
+ .thenReturn(false);
Topic t1 = new Topic();
t1.setTopicname("testtopic");
t1.setEnvironment("1");
@@ -561,7 +575,6 @@ public void approveAclRequestsWithAivenAcl() throws KlawException, KlawBadReques
@Order(18)
public void approveAclRequestsNotAuthorized() throws KlawException, KlawBadRequestException {
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
ApiResponse apiResp = aclControllerService.approveAclRequests("112");
assertThat(apiResp.getMessage()).isEqualTo(ApiResultStatus.NOT_AUTHORIZED.value);
}
@@ -573,6 +586,8 @@ public void approveAclRequestsOwnRequest() throws KlawException, KlawBadRequestE
AclRequests aclReq = getAclRequestDao();
aclReq.setRequestor("kwusera");
when(handleDbRequests.getAclRequest(anyInt(), anyInt())).thenReturn(aclReq);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse apiResp = aclControllerService.approveAclRequests("112");
assertThat(apiResp.getMessage())
.isEqualTo("You are not allowed to approve your own subscription requests.");
@@ -591,6 +606,8 @@ public void approveAclRequestsFailure1() throws KlawException, KlawBadRequestExc
t1.setTopicname("testtopic");
t1.setEnvironment("1");
when(manageDatabase.getTopicsForTenant(anyInt())).thenReturn(List.of(t1));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse apiResponse = ApiResponse.notOk("failure");
when(clusterApiService.approveAclRequests(any(), anyInt()))
@@ -621,6 +638,8 @@ public void approveAclRequestsFailure2() throws KlawException, KlawBadRequestExc
.thenReturn(new ResponseEntity<>(apiResponse, HttpStatus.OK));
when(handleDbRequests.updateAclRequest(any(), any(), anyMap(), anyBoolean()))
.thenThrow(new RuntimeException("Error"));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse apiResp = aclControllerService.approveAclRequests(req_no);
assertThat(apiResp.getMessage()).isEqualTo("failure");
@@ -637,6 +656,8 @@ public void approveAclRequestsFailure3() throws KlawException, KlawBadRequestExc
when(handleDbRequests.getAclRequest(anyInt(), anyInt())).thenReturn(aclReq);
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
.thenReturn(Collections.singletonList("1"));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse apiResp = aclControllerService.approveAclRequests(req_no);
assertThat(apiResp.getMessage()).isEqualTo("This request does not exist anymore.");
@@ -654,6 +675,8 @@ public void declineAclRequests() throws KlawException {
.thenReturn(new HashSet<>(Collections.singletonList("1")));
when(handleDbRequests.declineAclRequest(any(), any()))
.thenReturn(ApiResultStatus.SUCCESS.value);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse resultResp = aclControllerService.declineAclRequests(req_no, "");
assertThat(resultResp.getMessage()).isEqualTo(ApiResultStatus.SUCCESS.value);
@@ -669,6 +692,8 @@ public void declineAclRequestsFailure() {
when(handleDbRequests.getAclRequest(anyInt(), anyInt())).thenReturn(aclReq);
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SUBSCRIPTIONS))
+ .thenReturn(false);
when(handleDbRequests.declineAclRequest(any(), anyString()))
.thenThrow(new RuntimeException("failure in declining request"));
@@ -693,6 +718,9 @@ public void createDeleteAclSubscriptionRequest() throws KlawException {
Map hashMap = new HashMap<>();
hashMap.put("result", ApiResultStatus.SUCCESS.value);
when(handleDbRequests.requestForAcl(any())).thenReturn(hashMap);
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_DELETE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse resultResp = aclControllerService.createDeleteAclSubscriptionRequest(reqNo);
assertThat(resultResp.getMessage()).isEqualTo(ApiResultStatus.SUCCESS.value);
@@ -1006,6 +1034,9 @@ public void getAclRequestsForApprover_RequestOperationType(RequestOperationType
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
when(manageDatabase.getTeamNameFromTeamId(anyInt(), anyInt())).thenReturn(teamName);
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.APPROVE_ALL_REQUESTS_TEAMS))
+ .thenReturn(false);
List listReqs =
aclControllerService.getAclRequestsForApprover(
@@ -1047,6 +1078,9 @@ public void createDeleteAclSubscriptionRequestFailure() throws KlawException {
Map hashMap = new HashMap<>();
hashMap.put("result", ApiResultStatus.SUCCESS.value);
when(handleDbRequests.requestForAcl(any())).thenReturn(hashMap);
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_DELETE_SUBSCRIPTIONS))
+ .thenReturn(false);
when(handleDbRequests.getAllAclRequests(
anyBoolean(),
@@ -1083,6 +1117,8 @@ public void approveAclRequestsFailure4() throws KlawException, KlawBadRequestExc
t1.setTopicname("testtopic1"); // non-existing topic
t1.setEnvironment("1");
when(manageDatabase.getTopicsForTenant(anyInt())).thenReturn(List.of(t1));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse apiResp = aclControllerService.approveAclRequests(req_no);
assertThat(apiResp.getMessage()).isEqualTo(ACL_ERR_101);
@@ -1095,10 +1131,6 @@ public void claimAcl_NotAuthorized() throws KlawException, KlawBadRequestExcepti
int aclId = 224;
stubUserInfo();
-
- when(commonUtilsService.isNotAuthorizedUser(
- any(), eq(PermissionType.REQUEST_CREATE_SUBSCRIPTIONS)))
- .thenReturn(true);
ApiResponse apiResp = aclControllerService.claimAcl(aclId);
assertThat(apiResp.getMessage()).isEqualTo(ApiResultStatus.NOT_AUTHORIZED.value);
@@ -1110,11 +1142,11 @@ public void claimAcl_NotAuthorized() throws KlawException, KlawBadRequestExcepti
public void claimAcl_AclDoesNotExist() throws KlawException {
int aclId = 224;
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(
- any(), eq(PermissionType.REQUEST_CREATE_SUBSCRIPTIONS)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
when(handleDbRequests.getAcl(eq(aclId), anyInt())).thenReturn(Optional.empty());
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse apiResp = aclControllerService.claimAcl(aclId);
assertThat(apiResp.getMessage()).isEqualTo("Acl does not exist.");
@@ -1127,13 +1159,13 @@ public void claimAcl_TopicDoesNotExistOnACL() throws KlawException {
int aclId = 224;
stubUserInfo();
Acl acl = createAcl();
- when(commonUtilsService.isNotAuthorizedUser(
- any(), eq(PermissionType.REQUEST_CREATE_SUBSCRIPTIONS)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
when(handleDbRequests.getAcl(eq(aclId), anyInt())).thenReturn(Optional.of(acl));
when(handleDbRequests.getTopics(eq(acl.getTopicname()), eq(TENANT_ID)))
.thenReturn(new ArrayList<>());
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse apiResp = aclControllerService.claimAcl(aclId);
assertThat(apiResp.getMessage()).isEqualTo("Unable to find the topic related to this ACL.");
@@ -1146,9 +1178,6 @@ public void claimAcl_claimAlreadyExists() throws KlawException {
int aclId = 224;
stubUserInfo();
Acl acl = createAcl();
- when(commonUtilsService.isNotAuthorizedUser(
- any(), eq(PermissionType.REQUEST_CREATE_SUBSCRIPTIONS)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
when(handleDbRequests.getAcl(eq(aclId), anyInt())).thenReturn(Optional.of(acl));
ArrayList topics = new ArrayList<>();
@@ -1163,6 +1192,9 @@ public void claimAcl_claimAlreadyExists() throws KlawException {
eq(TENANT_ID),
eq(aclId)))
.thenReturn(true);
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse apiResp = aclControllerService.claimAcl(aclId);
assertThat(apiResp.getMessage()).isEqualTo(ACL_ERR_108);
@@ -1175,9 +1207,6 @@ public void claimAcl_createClaimRequest() throws KlawException {
int aclId = 224;
stubUserInfo();
Acl acl = createAcl();
- when(commonUtilsService.isNotAuthorizedUser(
- any(), eq(PermissionType.REQUEST_CREATE_SUBSCRIPTIONS)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
when(handleDbRequests.getAcl(eq(aclId), anyInt())).thenReturn(Optional.of(acl));
ArrayList topics = new ArrayList<>();
@@ -1207,6 +1236,9 @@ public void claimAcl_createClaimRequest() throws KlawException {
put("result", ApiResultStatus.SUCCESS.value);
}
});
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse apiResp = aclControllerService.claimAcl(aclId);
verify(approvalService, times(1))
.sendEmailToApprovers(
@@ -1227,8 +1259,6 @@ public void claimAcl_createClaimRequest() throws KlawException {
public void claimAcl_approveClaim_NotAuthorized() throws KlawException, KlawBadRequestException {
String reqNum = "224";
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), eq(PermissionType.APPROVE_SUBSCRIPTIONS)))
- .thenReturn(true);
ApiResponse apiResp = aclControllerService.approveAclRequests(reqNum);
assertThat(apiResp.isSuccess()).isFalse();
@@ -1242,8 +1272,6 @@ public void claimAcl_approveClaim_transferOwnership()
int reqNum = 224;
stubUserInfo();
Acl acl = createAcl();
- when(commonUtilsService.isNotAuthorizedUser(any(), eq(PermissionType.APPROVE_SUBSCRIPTIONS)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
AclRequests aclReq = getAclClaimRequestDao(reqNum);
when(handleDbRequests.getAclRequest(eq(reqNum), eq(TENANT_ID)))
@@ -1261,6 +1289,8 @@ public void claimAcl_approveClaim_transferOwnership()
.thenReturn(false);
when(manageDatabase.getTeamObjForTenant(eq(TENANT_ID)))
.thenReturn(getTeamsListWithServiceAccounts(aclReq));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse apiResp = aclControllerService.approveAclRequests(String.valueOf(reqNum));
@@ -1299,8 +1329,6 @@ public void claimAcl_approveClaim_transferOwnership()
int reqNum = 224;
stubUserInfo();
Acl acl = createAcl();
- when(commonUtilsService.isNotAuthorizedUser(any(), eq(PermissionType.APPROVE_SUBSCRIPTIONS)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
AclRequests aclReq = getAclClaimRequestDao(reqNum);
when(handleDbRequests.getAclRequest(eq(reqNum), eq(TENANT_ID)))
@@ -1318,6 +1346,8 @@ public void claimAcl_approveClaim_transferOwnership()
.thenReturn(true);
when(manageDatabase.getTeamObjForTenant(eq(TENANT_ID)))
.thenReturn(getTeamsListWithServiceAccounts(aclReq));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse apiResp = aclControllerService.approveAclRequests(String.valueOf(reqNum));
@@ -1342,8 +1372,6 @@ public void claimAcl_approveClaim_Not_fullyApproved_doNot_transferOwnership()
int reqNum = 224;
stubUserInfo();
Acl acl = createAcl();
- when(commonUtilsService.isNotAuthorizedUser(any(), eq(PermissionType.APPROVE_SUBSCRIPTIONS)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
AclRequests aclReq = getAclClaimRequestDao(reqNum);
when(handleDbRequests.getAclRequest(eq(reqNum), eq(TENANT_ID)))
@@ -1354,6 +1382,8 @@ public void claimAcl_approveClaim_Not_fullyApproved_doNot_transferOwnership()
topics.add(createTopic());
when(manageDatabase.getTopicsForTenant(TENANT_ID)).thenReturn(topics);
when(approvalService.isRequestFullyApproved(any())).thenReturn(false);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse apiResp = aclControllerService.approveAclRequests(String.valueOf(reqNum));
@@ -1380,8 +1410,6 @@ public void claimAcl_approveClaim_Not_fullyApproved_doNot_transferOwnership()
int reqNum = 224;
stubUserInfo();
Acl acl = createAcl();
- when(commonUtilsService.isNotAuthorizedUser(any(), eq(PermissionType.APPROVE_SUBSCRIPTIONS)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
AclRequests aclReq = getAclClaimRequestDao(reqNum);
when(handleDbRequests.getAclRequest(eq(reqNum), eq(TENANT_ID)))
@@ -1404,6 +1432,8 @@ public void claimAcl_approveClaim_Not_fullyApproved_doNot_transferOwnership()
.existsAclSslInTeam(aclReq.getTeamId(), aclReq.getTenantId(), aclReq.getAcl_ssl()))
.thenReturn(false);
when(manageDatabase.getTeamObjForTenant(eq(TENANT_ID))).thenReturn(existingTeams);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse apiResp = aclControllerService.approveAclRequests(String.valueOf(reqNum));
@@ -1443,8 +1473,6 @@ public void claimAcl_approveClaim_Not_fullyApproved_doNot_transferOwnership()
int reqNum = 224;
stubUserInfo();
Acl acl = createAcl();
- when(commonUtilsService.isNotAuthorizedUser(any(), eq(PermissionType.APPROVE_SUBSCRIPTIONS)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
AclRequests aclReq = getAclClaimRequestDao(reqNum);
when(handleDbRequests.getAclRequest(eq(reqNum), eq(TENANT_ID)))
@@ -1466,6 +1494,8 @@ public void claimAcl_approveClaim_Not_fullyApproved_doNot_transferOwnership()
.existsAclSslInTeam(aclReq.getTeamId(), aclReq.getTenantId(), aclReq.getAcl_ssl()))
.thenReturn(false);
when(manageDatabase.getTeamObjForTenant(eq(TENANT_ID))).thenReturn(existingTeams);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse apiResp = aclControllerService.approveAclRequests(String.valueOf(reqNum));
@@ -1516,6 +1546,9 @@ public void createAclProducer_alreadyExists() throws KlawException {
.thenReturn(true);
stubUserInfo();
mockKafkaFlavor();
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(false);
ApiResponse resultResp = aclControllerService.createAcl(aclRequests);
assertThat(resultResp.getMessage()).isEqualTo("Subscription already exists.");
@@ -1542,6 +1575,10 @@ public void createAclConsumer_alreadyExists() throws KlawException {
mockKafkaFlavor();
stubUserInfo();
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
+ .thenReturn(false);
+
ApiResponse resultResp = aclControllerService.createAcl(aclRequests);
assertThat(resultResp.getMessage()).isEqualTo("Subscription already exists.");
}
diff --git a/core/src/test/java/io/aiven/klaw/service/AclSyncControllerServiceTest.java b/core/src/test/java/io/aiven/klaw/service/AclSyncControllerServiceTest.java
index 87bb8f90e..50306bbba 100644
--- a/core/src/test/java/io/aiven/klaw/service/AclSyncControllerServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/AclSyncControllerServiceTest.java
@@ -42,12 +42,8 @@
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
-import org.mockito.Mockito;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.util.ReflectionTestUtils;
@@ -80,15 +76,8 @@ public void setUp() throws Exception {
ReflectionTestUtils.setField(
aclSyncControllerService, "commonUtilsService", commonUtilsService);
when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequests);
- loginMock();
- }
-
- private void loginMock() {
- Authentication authentication = Mockito.mock(Authentication.class);
- SecurityContext securityContext = Mockito.mock(SecurityContext.class);
- when(securityContext.getAuthentication()).thenReturn(authentication);
- when(authentication.getPrincipal()).thenReturn(userDetails);
- SecurityContextHolder.setContext(securityContext);
+ when(commonUtilsService.getPrincipal()).thenReturn(userDetails);
+ when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
}
@Test
@@ -96,7 +85,7 @@ private void loginMock() {
public void updateSyncAcls() throws KlawException {
stubUserInfo();
when(handleDbRequests.addToSyncacls(anyList())).thenReturn(ApiResultStatus.SUCCESS.value);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SUBSCRIPTIONS))
.thenReturn(false);
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
@@ -110,7 +99,7 @@ public void updateSyncAcls() throws KlawException {
@Order(2)
public void updateSyncAclsFailure1() throws KlawException {
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SUBSCRIPTIONS))
.thenReturn(false);
ApiResponse resultResp =
@@ -122,7 +111,7 @@ public void updateSyncAclsFailure1() throws KlawException {
@Order(3)
public void updateSyncAclsFailure2() {
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SUBSCRIPTIONS))
.thenReturn(false);
when(handleDbRequests.addToSyncacls(anyList())).thenThrow(new RuntimeException("Error"));
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
@@ -140,7 +129,7 @@ public void updateSyncAclsFailure2() {
public void updateSyncAclsFailure3() throws KlawException {
List updates = new ArrayList<>();
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SUBSCRIPTIONS))
.thenReturn(false);
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
.thenReturn(Collections.singletonList("1"));
@@ -153,7 +142,7 @@ public void updateSyncAclsFailure3() throws KlawException {
public void updateSyncAclsFailure4() {
when(handleDbRequests.addToSyncacls(anyList())).thenThrow(new RuntimeException("Error"));
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SUBSCRIPTIONS))
.thenReturn(false);
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
.thenReturn(Collections.singletonList("1"));
@@ -187,6 +176,8 @@ public void getAclsSyncTrue1() throws KlawException {
.thenReturn(clustersHashMap);
when(clustersHashMap.get(any())).thenReturn(kwClusters);
when(kwClusters.getBootstrapServers()).thenReturn("clusters");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SUBSCRIPTIONS))
+ .thenReturn(false);
List aclList =
aclSyncControllerService.getSyncAcls(envSelected, pageNo, "1", topicNameSearch, "");
@@ -217,6 +208,8 @@ public void getAclsSyncTrueNonApacheKafka() throws KlawException {
.thenReturn(clustersHashMap);
when(clustersHashMap.get(any())).thenReturn(kwClusters);
when(kwClusters.getBootstrapServers()).thenReturn("clusters");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SUBSCRIPTIONS))
+ .thenReturn(false);
List aclList =
aclSyncControllerService.getSyncAcls(envSelected, pageNo, "1", topicNameSearch, "");
@@ -263,6 +256,8 @@ public void getAclsSyncTrueGetDeletedOnClusterNonApacheKafka() throws KlawExcept
.thenReturn(clustersHashMap);
when(clustersHashMap.get(any())).thenReturn(kwClusters);
when(kwClusters.getBootstrapServers()).thenReturn("clusters");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SUBSCRIPTIONS))
+ .thenReturn(false);
List aclList =
aclSyncControllerService.getSyncAcls(envSelected, pageNo, "1", topicNameSearch, "");
@@ -291,6 +286,8 @@ public void getAclsSyncTrue2() throws KlawException {
.thenReturn(clustersHashMap);
when(clustersHashMap.get(any())).thenReturn(kwClusters);
when(kwClusters.getBootstrapServers()).thenReturn("clusters");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SUBSCRIPTIONS))
+ .thenReturn(false);
List aclList =
aclSyncControllerService.getSyncAcls(envSelected, pageNo, "", topicNameSearch, "");
@@ -324,7 +321,8 @@ public void updateSyncBackAcls() throws KlawException {
.thenReturn(clustersHashMap);
when(clustersHashMap.get(any())).thenReturn(kwClusters);
when(kwClusters.getKafkaFlavor()).thenReturn(KafkaFlavors.AIVEN_FOR_APACHE_KAFKA.value);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.SYNC_BACK_SUBSCRIPTIONS))
.thenReturn(false);
when(handleDbRequests.getSyncAclsFromReqNo(anyInt(), anyInt()))
.thenReturn(getAclsSOT0().get(0));
@@ -407,6 +405,6 @@ private List getAclsSOT0NonApacheKafka() {
private void stubUserInfo() {
when(handleDbRequests.getUsersInfo(anyString())).thenReturn(userInfo);
when(userInfo.getTeamId()).thenReturn(101);
- when(mailService.getUserName(any())).thenReturn("kwusera");
+ when(mailService.getUserName(userDetails)).thenReturn("kwusera");
}
}
diff --git a/core/src/test/java/io/aiven/klaw/service/AnalyticsControllerServiceTest.java b/core/src/test/java/io/aiven/klaw/service/AnalyticsControllerServiceTest.java
index 8996e7081..65c23223a 100644
--- a/core/src/test/java/io/aiven/klaw/service/AnalyticsControllerServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/AnalyticsControllerServiceTest.java
@@ -7,7 +7,6 @@
import static org.mockito.ArgumentMatchers.anyList;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.when;
import io.aiven.klaw.UtilMethods;
import io.aiven.klaw.config.ManageDatabase;
@@ -30,19 +29,17 @@
import java.util.Map;
import java.util.Set;
import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.Spy;
-import org.mockito.junit.jupiter.MockitoExtension;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
-@ExtendWith(MockitoExtension.class)
+@ExtendWith(SpringExtension.class)
class AnalyticsControllerServiceTest {
public static final int NUMBER_OF_DAYS = 30;
@Mock private ManageDatabase manageDatabase;
@@ -52,12 +49,11 @@ class AnalyticsControllerServiceTest {
@Mock private HandleDbRequestsJdbc handleDbRequestsJdbc;
@Mock private UserDetails userDetails;
- private void loginMock() {
- Authentication authentication = Mockito.mock(Authentication.class);
- SecurityContext securityContext = Mockito.mock(SecurityContext.class);
- when(securityContext.getAuthentication()).thenReturn(authentication);
- when(authentication.getPrincipal()).thenReturn(userDetails);
- SecurityContextHolder.setContext(securityContext);
+ @BeforeEach
+ public void setUp() {
+ Mockito.when(commonUtilsService.getPrincipal()).thenReturn(userDetails);
+ Mockito.when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ .thenReturn(true);
}
@Test
@@ -460,13 +456,9 @@ public void getTeamsOverview_UnauthorizedUser() {
teamOverview.setTopicsPerTeamsOverview(chartsJsOverview);
List expected = List.of(teamOverview);
- loginMock();
Mockito.when(commonUtilsService.getCurrentUserName()).thenReturn(TestConstants.USERNAME);
Mockito.when(commonUtilsService.getTeamId(TestConstants.USERNAME))
.thenReturn(TestConstants.TEAM_ID);
- Mockito.when(
- commonUtilsService.isNotAuthorizedUser(any(), eq(PermissionType.ALL_TEAMS_REPORTS)))
- .thenReturn(true);
Mockito.when(commonUtilsService.getTenantId(TestConstants.USERNAME))
.thenReturn(TestConstants.TENANT_ID);
Mockito.doReturn(chartsJsOverview)
@@ -509,12 +501,11 @@ public void getTeamsOverview_AuthorizedUser() {
teamOverview.setTopicsPerTeamsOverview(chartsJsOverview);
List expected = List.of(teamOverview);
- loginMock();
Mockito.when(commonUtilsService.getCurrentUserName()).thenReturn(TestConstants.USERNAME);
Mockito.when(commonUtilsService.getTeamId(TestConstants.USERNAME))
.thenReturn(TestConstants.TEAM_ID);
Mockito.when(
- commonUtilsService.isNotAuthorizedUser(any(), eq(PermissionType.ALL_TEAMS_REPORTS)))
+ commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ALL_TEAMS_REPORTS))
.thenReturn(false);
Mockito.when(commonUtilsService.getTenantId(TestConstants.USERNAME))
.thenReturn(TestConstants.TENANT_ID);
@@ -577,7 +568,6 @@ public void generateReport_UnauthorizedUser() {
Topic topic = UtilMethods.getDummyTopic();
Acl acl = UtilMethods.getDummyAcl();
- loginMock();
Mockito.when(commonUtilsService.getCurrentUserName()).thenReturn(TestConstants.USERNAME);
Mockito.when(commonUtilsService.getTenantId(TestConstants.USERNAME))
.thenReturn(TestConstants.TENANT_ID);
@@ -593,9 +583,6 @@ public void generateReport_UnauthorizedUser() {
Mockito.doReturn(TestConstants.ENV_NAME)
.when(analyticsControllerService)
.getEnvName(TestConstants.ENV_ID);
- Mockito.when(
- commonUtilsService.isNotAuthorizedUser(any(), eq(PermissionType.ALL_TEAMS_REPORTS)))
- .thenReturn(true);
Mockito.when(commonUtilsService.getTeamId(TestConstants.USERNAME))
.thenReturn(TestConstants.TEAM_ID);
Mockito.when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequestsJdbc);
@@ -620,7 +607,6 @@ public void generateReport_AuthorizedUser() {
Topic topic = UtilMethods.getDummyTopic();
Acl acl = UtilMethods.getDummyAcl();
- loginMock();
Mockito.when(commonUtilsService.getCurrentUserName()).thenReturn(TestConstants.USERNAME);
Mockito.when(commonUtilsService.getTenantId(TestConstants.USERNAME))
.thenReturn(TestConstants.TENANT_ID);
@@ -637,7 +623,7 @@ public void generateReport_AuthorizedUser() {
.when(analyticsControllerService)
.getEnvName(TestConstants.ENV_ID);
Mockito.when(
- commonUtilsService.isNotAuthorizedUser(any(), eq(PermissionType.ALL_TEAMS_REPORTS)))
+ commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ALL_TEAMS_REPORTS))
.thenReturn(false);
Mockito.when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequestsJdbc);
Mockito.when(handleDbRequestsJdbc.getAllTopics(TestConstants.TENANT_ID))
diff --git a/core/src/test/java/io/aiven/klaw/service/EnvsClustersTenantsControllerServiceTest.java b/core/src/test/java/io/aiven/klaw/service/EnvsClustersTenantsControllerServiceTest.java
index 161000034..a74016632 100644
--- a/core/src/test/java/io/aiven/klaw/service/EnvsClustersTenantsControllerServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/EnvsClustersTenantsControllerServiceTest.java
@@ -69,6 +69,7 @@
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
+import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.util.ReflectionTestUtils;
@@ -79,6 +80,7 @@ class EnvsClustersTenantsControllerServiceTest {
private EnvsClustersTenantsControllerService service;
@Mock private MailUtils mailService;
+ @Mock private UserDetails userDetails;
@Mock private CommonUtilsService commonUtilsService;
@@ -102,10 +104,12 @@ public void setup() {
ReflectionTestUtils.setField(
service, "usersTeamsControllerService", usersTeamsControllerService);
ReflectionTestUtils.setField(service, "defaultDataService", defaultDataService);
- when(mailService.getUserName(any())).thenReturn("testuser");
+ when(mailService.getUserName(userDetails)).thenReturn("testuser");
when(handleDbRequestsJdbc.getUsersInfo(any())).thenReturn(buildUserInfo());
when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequestsJdbc);
when(commonUtilsService.getTenantId(any())).thenReturn(101);
+ when(commonUtilsService.getPrincipal()).thenReturn(userDetails);
+ when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
}
@Test
@@ -117,6 +121,8 @@ void addNewEnv() throws KlawException, KlawValidationException {
Env SchemaEnv = generateKafkaEnv("9", "Schema");
when(handleDbRequestsJdbc.addNewEnv(any())).thenReturn(ApiResultStatus.SUCCESS.value);
when(handleDbRequestsJdbc.getEnvDetails(anyString(), anyInt())).thenReturn(SchemaEnv);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
+ .thenReturn(false);
ApiResponse response = service.addNewEnv(env);
assertThat(response.getMessage()).contains("success");
}
@@ -134,6 +140,8 @@ void addNewEnvNameAlreadyInUse() throws KlawException, KlawValidationException {
buildEnv("5", 101, "TST", KafkaClustersType.SCHEMA_REGISTRY, 5)));
when(manageDatabase.getKafkaEnvList(anyInt()))
.thenReturn(List.of(buildEnv("4", 101, "DEV", KafkaClustersType.KAFKA, 4)));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
+ .thenReturn(false);
ApiResponse response = service.addNewEnv(env);
assertThat(response.getMessage())
.contains("Failure. Please choose a different name. This environment name already exists.");
@@ -150,6 +158,8 @@ void addNewEnvWithAssociatedEnv() throws KlawException, KlawValidationException
when(handleDbRequestsJdbc.getEnvDetails(eq("1"), eq(101)))
.thenReturn(kafkaEnv)
.thenReturn(null);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
+ .thenReturn(false);
ApiResponse response = service.addNewEnv(env);
kafkaEnv.setAssociatedEnv(env.getAssociatedEnv());
verify(handleDbRequestsJdbc, times(1)).addNewEnv(eq(kafkaEnv));
@@ -180,6 +190,8 @@ void updateEnvWithDifferentAssociatedEnv() throws KlawException, KlawValidationE
.thenReturn(generateKafkaEnv("2", "Kafka"));
when(handleDbRequestsJdbc.getNextSeqIdAndUpdate(eq(EntityType.ENVIRONMENT.name()), eq(101)))
.thenReturn(1);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
+ .thenReturn(false);
ApiResponse response = service.addNewEnv(env);
kafkaEnv.setAssociatedEnv(env.getAssociatedEnv());
verify(handleDbRequestsJdbc, times(1)).addNewEnv(eq(kafkaEnv));
@@ -203,6 +215,8 @@ void updateEnvWithKafkaEnvAlreadyAssociatedWithAnotherEnv() {
Env kafkaEnv = generateKafkaEnv("1", "Kafka");
kafkaEnv.setAssociatedEnv(new EnvTag("2", "TST_SCH"));
when(handleDbRequestsJdbc.getEnvDetails(eq("1"), eq(101))).thenReturn(kafkaEnv);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
+ .thenReturn(false);
assertThatExceptionOfType(KlawValidationException.class)
.isThrownBy(
@@ -222,6 +236,8 @@ void addEnvWithoutAssociatedEnv() throws KlawValidationException, KlawException
when(handleDbRequestsJdbc.getEnvDetails(eq("1"), eq(101))).thenReturn(env1).thenReturn(null);
when(handleDbRequestsJdbc.addNewEnv(any())).thenReturn(ApiResultStatus.SUCCESS.value);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
+ .thenReturn(false);
ApiResponse response = service.addNewEnv(env);
assertThat(response.getMessage()).contains("success");
@@ -243,6 +259,8 @@ void addEnvRemoveAssociatedEnv() throws KlawValidationException, KlawException {
when(handleDbRequestsJdbc.addNewEnv(any())).thenReturn(ApiResultStatus.SUCCESS.value);
when(handleDbRequestsJdbc.getNextSeqIdAndUpdate(eq(EntityType.ENVIRONMENT.name()), eq(101)))
.thenReturn(1);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
+ .thenReturn(false);
ApiResponse response = service.addNewEnv(env);
assertThat(response.getMessage()).contains("success");
@@ -264,6 +282,8 @@ void addEnvRemoveAssociatedEnvIncorrectIdSupplied()
when(handleDbRequestsJdbc.addNewEnv(any())).thenReturn(ApiResultStatus.SUCCESS.value);
when(handleDbRequestsJdbc.getNextSeqIdAndUpdate(eq(EntityType.ENVIRONMENT.name()), eq(101)))
.thenReturn(1);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
+ .thenReturn(false);
ApiResponse response = service.addNewEnv(env);
assertThat(response.getMessage()).contains("success");
@@ -308,7 +328,7 @@ void getEnvs(KafkaClustersType type, String searchBy, String pageNo, int expecte
put(101, "");
}
});
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
.thenReturn(false);
List response = service.getEnvsPaginated(type, "", pageNo, searchBy);
@@ -321,7 +341,6 @@ void getEnvs(KafkaClustersType type, String searchBy, String pageNo, int expecte
username = "james",
authorities = {"ADMIN", "USER"})
void deleteTenantUnauthorizedUser1() throws KlawException {
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
ApiResponse response = service.deleteTenant();
assertThat(response).isEqualTo(ApiResponse.NOT_AUTHORIZED);
@@ -332,7 +351,8 @@ void deleteTenantUnauthorizedUser1() throws KlawException {
username = "james",
authorities = {"ADMIN", "USER"})
void deleteTenantUnauthorizedUser2() throws KlawException {
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.UPDATE_DELETE_MY_TENANT))
.thenReturn(false);
ApiResponse response = service.deleteTenant();
@@ -345,7 +365,8 @@ void deleteTenantUnauthorizedUser2() throws KlawException {
authorities = {"ADMIN", "USER"})
void deleteTenantFailed() throws KlawException {
int tenantId = 102;
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.UPDATE_DELETE_MY_TENANT))
.thenReturn(false);
when(commonUtilsService.getTenantId(any())).thenReturn(tenantId);
when(manageDatabase.getTenantMap())
@@ -374,7 +395,8 @@ void deleteTenantFailed() throws KlawException {
authorities = {"ADMIN", "USER"})
void deleteTenant() throws KlawException {
int tenantId = 102;
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.UPDATE_DELETE_MY_TENANT))
.thenReturn(false);
when(commonUtilsService.getTenantId(any())).thenReturn(tenantId);
when(manageDatabase.getTenantMap())
@@ -425,7 +447,6 @@ void addTenantIdExceedMax() throws KlawException {
void addTenantIdUnauthorized() throws KlawException {
when(handleDbRequestsJdbc.getTenants()).thenReturn(List.of(new KwTenants(), new KwTenants()));
ReflectionTestUtils.setField(service, "maxNumberOfTenantsCanBeCreated", 100);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
ApiResponse response = service.addTenantId(new KwTenantModel(), true);
assertThat(response).isEqualTo(ApiResponse.NOT_AUTHORIZED);
@@ -446,7 +467,7 @@ void addTenantIdInternal() throws KlawException {
kwTenant2.setTenantId(102);
when(handleDbRequestsJdbc.getTenants()).thenReturn(List.of(kwTenant1, kwTenant2));
ReflectionTestUtils.setField(service, "maxNumberOfTenantsCanBeCreated", 100);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_TENANT))
.thenReturn(false);
when(handleDbRequestsJdbc.addNewTenant(any())).thenReturn("add new tenant");
ApiResponse response = service.addTenantId(kwTenantModel, false);
@@ -474,7 +495,7 @@ void addTenantIdExternal() throws KlawException {
when(handleDbRequestsJdbc.getTenants()).thenReturn(List.of(kwTenant1, kwTenant2));
ReflectionTestUtils.setField(service, "maxNumberOfTenantsCanBeCreated", 100);
ReflectionTestUtils.setField(service, "kwInstallationType", "kwInstallationType");
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_TENANT))
.thenReturn(false);
when(handleDbRequestsJdbc.addNewTenant(any())).thenReturn("add new tenant");
List kwProperties = List.of(new KwProperties());
@@ -552,7 +573,6 @@ void getUpdateEnvStatus() throws KlawBadRequestException {
username = "james",
authorities = {"ADMIN", "USER"})
void deleteEnvironmentUnauthorized() throws KlawException {
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
ApiResponse response = service.deleteEnvironment("envId", "envType");
assertThat(response).isEqualTo(ApiResponse.NOT_AUTHORIZED);
@@ -565,7 +585,7 @@ void deleteEnvironmentUnauthorized() throws KlawException {
void deleteEnvironmentExistKafkaComponents() throws KlawException {
int tenantId = 101;
String envId = "20";
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
.thenReturn(false);
when(handleDbRequestsJdbc.existsKafkaComponentsForEnv(envId, tenantId)).thenReturn(true);
@@ -581,7 +601,7 @@ void deleteEnvironmentExistKafkaComponents() throws KlawException {
void deleteEnvironmentExistKafkaConnectComponents() throws KlawException {
int tenantId = 101;
String envId = "20";
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
.thenReturn(false);
when(handleDbRequestsJdbc.existsConnectorComponentsForEnv(envId, tenantId)).thenReturn(true);
@@ -597,7 +617,7 @@ void deleteEnvironmentExistKafkaConnectComponents() throws KlawException {
void deleteEnvironmentExistSchemaRegistryComponents() throws KlawException {
int tenantId = 101;
String envId = "20";
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
.thenReturn(false);
when(handleDbRequestsJdbc.existsSchemaComponentsForEnv(envId, tenantId)).thenReturn(true);
@@ -614,7 +634,7 @@ void deleteEnvironmentExistSchemaRegistryComponents() throws KlawException {
void deleteEnvironmentWithAssociatedEnv() throws KlawException {
int tenantId = 101;
String envId = "20";
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
.thenReturn(false);
when(handleDbRequestsJdbc.existsKafkaComponentsForEnv(envId, tenantId)).thenReturn(false);
@@ -643,7 +663,7 @@ void deleteEnvironmentWithAssociatedEnv() throws KlawException {
void deleteEnvironmentFailed() throws KlawException {
int tenantId = 101;
String envId = "20";
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
.thenReturn(false);
when(handleDbRequestsJdbc.existsKafkaComponentsForEnv(envId, tenantId)).thenReturn(false);
@@ -662,7 +682,6 @@ void deleteEnvironmentFailed() throws KlawException {
username = "james",
authorities = {"ADMIN", "USER"})
void addNewClusterUnauthorized() {
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
ApiResponse response = service.addNewCluster(new KwClustersModel());
assertThat(response).isEqualTo(ApiResponse.NOT_AUTHORIZED);
@@ -674,7 +693,8 @@ void addNewClusterUnauthorized() {
authorities = {"ADMIN", "USER"})
void addNewCluster() {
int tenantId = 101;
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.ADD_EDIT_DELETE_CLUSTERS))
.thenReturn(false);
when(handleDbRequestsJdbc.addNewCluster(any(KwClusters.class)))
@@ -698,7 +718,8 @@ void addNewCluster() {
authorities = {"ADMIN", "USER"})
void addNewClusterFailed() {
int tenantId = 101;
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.ADD_EDIT_DELETE_CLUSTERS))
.thenReturn(false);
when(handleDbRequestsJdbc.addNewCluster(any(KwClusters.class)))
@@ -720,7 +741,8 @@ void addNewClusterFailed() {
authorities = {"ADMIN", "USER"})
void addNewClusterNameExists() {
int tenantId = 101;
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.ADD_EDIT_DELETE_CLUSTERS))
.thenReturn(false);
when(manageDatabase.getClusters(KafkaClustersType.ALL, tenantId))
@@ -805,7 +827,6 @@ void getSyncEnvs() {
username = "james",
authorities = {"ADMIN", "USER"})
void getEnvDetailsUnauthorized() {
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
when(commonUtilsService.getEnvsFromUserId(anyString())).thenReturn(new HashSet<>());
EnvModelResponse result = service.getEnvDetails("env id", "cluster type");
assertThat(result).isNull();
@@ -818,7 +839,7 @@ void getEnvDetailsUnauthorized() {
void getEnvDetails() {
int tenantId = 101;
String envId = "1";
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
.thenReturn(false);
when(handleDbRequestsJdbc.getEnvDetails(envId, tenantId))
@@ -857,7 +878,8 @@ void getClusters() {
List.of(
buildEnv("1", tenantId, "env1", KafkaClustersType.KAFKA, 1),
buildEnv("2", tenantId, "env2", KafkaClustersType.KAFKA, 2)));
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.ADD_EDIT_DELETE_CLUSTERS))
.thenReturn(false);
List result = service.getClusters(KafkaClustersType.KAFKA.value);
@@ -879,7 +901,6 @@ void getMyTenantInfo() {
KwTenants tenant = buildTenants(tenantId);
when(handleDbRequestsJdbc.getMyTenants(tenantId)).thenReturn(Optional.of(tenant));
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
KwTenantModel result = service.getMyTenantInfo();
assertThat(result.getTenantName()).isEqualTo(tenant.getTenantName());
assertThat(result.getContactPerson()).isEqualTo(tenant.getContactPerson());
@@ -980,7 +1001,6 @@ void getClusterDetails() {
username = "james",
authorities = {"ADMIN", "USER"})
void updateTenantUnauthorized() throws KlawException {
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
ApiResponse result = service.updateTenant(new KwTenantModel());
assertThat(result).isEqualTo(ApiResponse.NOT_AUTHORIZED);
}
@@ -992,7 +1012,8 @@ void updateTenantUnauthorized() throws KlawException {
void updateTenantFailed() throws KlawException {
int tenantId = 101;
when(commonUtilsService.getTenantId(any())).thenReturn(tenantId);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.UPDATE_DELETE_MY_TENANT))
.thenReturn(false);
when(handleDbRequestsJdbc.addNewTenant(any(KwTenants.class)))
.thenReturn("failed to add new tenant");
@@ -1008,7 +1029,8 @@ void updateTenantFailed() throws KlawException {
void updateTenant() throws KlawException {
int tenantId = 101;
when(commonUtilsService.getTenantId(any())).thenReturn(tenantId);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.UPDATE_DELETE_MY_TENANT))
.thenReturn(false);
when(handleDbRequestsJdbc.addNewTenant(any(KwTenants.class)))
.thenReturn(ApiResultStatus.SUCCESS.value);
@@ -1026,7 +1048,6 @@ void updateTenant() throws KlawException {
void getClusterInfoFromEnvUnauthorized() {
int tenantId = 101;
when(commonUtilsService.getTenantId(any())).thenReturn(tenantId);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
when(commonUtilsService.getEnvsFromUserId(anyString())).thenReturn(new HashSet<>());
ClusterInfo result = service.getClusterInfoFromEnv("1", KafkaClustersType.KAFKA.value);
assertThat(result).isNull();
@@ -1040,7 +1061,7 @@ void getClusterInfoFromEnv() {
int tenantId = 101;
String envId = "1";
when(commonUtilsService.getTenantId(any())).thenReturn(tenantId);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
.thenReturn(false);
when(handleDbRequestsJdbc.getEnvDetails(envId, tenantId))
.thenReturn(buildEnv(envId, tenantId, "env1", KafkaClustersType.KAFKA, 1));
@@ -1055,7 +1076,6 @@ void getClusterInfoFromEnv() {
username = "james",
authorities = {"ADMIN", "USER"})
void deleteClusterUnauthorized() throws KlawException {
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
ApiResponse result = service.deleteCluster("cluster id");
assertThat(result).isEqualTo(ApiResponse.NOT_AUTHORIZED);
}
@@ -1068,7 +1088,8 @@ void deleteClusterNotAllowed() throws KlawException {
int tenantId = 101;
String clusterId = "1";
when(commonUtilsService.getTenantId(any())).thenReturn(tenantId);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.ADD_EDIT_DELETE_CLUSTERS))
.thenReturn(false);
when(manageDatabase.getAllEnvList(tenantId))
.thenReturn(List.of(buildEnv("1", tenantId, "env1", KafkaClustersType.KAFKA, 1)));
@@ -1085,7 +1106,8 @@ void deleteClusterFailed() throws KlawException {
int tenantId = 101;
String clusterId = "2";
when(commonUtilsService.getTenantId(any())).thenReturn(tenantId);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.ADD_EDIT_DELETE_CLUSTERS))
.thenReturn(false);
when(manageDatabase.getAllEnvList(tenantId))
.thenReturn(List.of(buildEnv("1", tenantId, "env1", KafkaClustersType.KAFKA, 1)));
@@ -1103,7 +1125,8 @@ void deleteCluster() throws KlawException {
int tenantId = 101;
String clusterId = "2";
when(commonUtilsService.getTenantId(any())).thenReturn(tenantId);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.ADD_EDIT_DELETE_CLUSTERS))
.thenReturn(false);
when(manageDatabase.getAllEnvList(tenantId))
.thenReturn(List.of(buildEnv("1", tenantId, "env1", KafkaClustersType.KAFKA, 1)));
diff --git a/core/src/test/java/io/aiven/klaw/service/KafkaConnectControllerServiceTest.java b/core/src/test/java/io/aiven/klaw/service/KafkaConnectControllerServiceTest.java
index 8f5bfaaf2..7b834ed0f 100644
--- a/core/src/test/java/io/aiven/klaw/service/KafkaConnectControllerServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/KafkaConnectControllerServiceTest.java
@@ -51,10 +51,6 @@
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.util.ReflectionTestUtils;
@@ -109,15 +105,8 @@ public void setUp() throws Exception {
rolesPermissionsControllerService);
when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequests);
- loginMock();
- }
-
- private void loginMock() {
- Authentication authentication = Mockito.mock(Authentication.class);
- SecurityContext securityContext = Mockito.mock(SecurityContext.class);
- when(securityContext.getAuthentication()).thenReturn(authentication);
- when(authentication.getPrincipal()).thenReturn(userDetails);
- SecurityContextHolder.setContext(securityContext);
+ when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
+ when(commonUtilsService.getPrincipal()).thenReturn(userDetails);
}
@Test
@@ -127,7 +116,8 @@ public void createConnectorRequest() throws KlawException {
resultMap.put("result", ApiResultStatus.SUCCESS.value);
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_CONNECTORS))
.thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(TENANT_ID);
when(tenantConfig.get(anyInt())).thenReturn(tenantConfigModel);
@@ -155,7 +145,8 @@ public void createConnectorRequestInvalidJsonConfig() {
KafkaConnectorRequestModel kafkaConnectorRequestModel = getConnectRequestModel();
kafkaConnectorRequestModel.setConnectorConfig("plain string"); // Invalid json
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_CONNECTORS))
.thenReturn(false);
when(handleDbRequests.requestForConnector(any()))
.thenThrow(new RuntimeException("Unrecognized token"));
@@ -173,7 +164,8 @@ public void createConnectorRequestParameterTopicsDoesntExist() throws KlawExcept
KafkaConnectorRequestModel kafkaConnectorRequestModel = getConnectRequestModel();
kafkaConnectorRequestModel.setConnectorConfig(getInvalidValidConnConfig());
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_CONNECTORS))
.thenReturn(false);
ApiResponse apiResponse =
@@ -189,7 +181,8 @@ public void createConnectorRequestParameterTopicsTopicRegexExist() throws KlawEx
KafkaConnectorRequestModel kafkaConnectorRequestModel = getConnectRequestModel();
kafkaConnectorRequestModel.setConnectorConfig(getInvalidValidConnConfigTopicsTopicsRegex());
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_CONNECTORS))
.thenReturn(false);
ApiResponse apiResponse =
@@ -204,8 +197,6 @@ public void createClaimConnectorRequest() throws KlawException {
Set envListIds = new HashSet<>();
envListIds.add("1");
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
when(handleDbRequests.getConnectorsFromName(eq("ConnectorOne"), eq(TENANT_ID)))
.thenReturn(List.of(getKwKafkaConnector()));
@@ -227,8 +218,6 @@ public void createClaimConnectorRequestAlreadyExists() throws KlawException {
Set envListIds = new HashSet<>();
envListIds.add("DEV");
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
when(handleDbRequests.existsConnectorRequest(
"ConnectorOne", "1", RequestStatus.CREATED.value, TENANT_ID))
@@ -247,8 +236,6 @@ public void getRequests_OrderBy_NEWEST_FIRST() throws KlawException {
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(handleDbRequests.getAllConnectorRequests(
anyString(),
@@ -291,8 +278,6 @@ public void getRequests_OrderBy_OLDEST_FIRST() throws KlawException {
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(handleDbRequests.getAllConnectorRequests(
anyString(),
@@ -335,8 +320,6 @@ public void getRequests_IsOnlyMyRequests() throws KlawException {
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(handleDbRequests.getAllConnectorRequests(
anyString(),
@@ -380,8 +363,6 @@ public void getRequests_() throws KlawException {
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(handleDbRequests.getAllConnectorRequests(
anyString(),
@@ -425,8 +406,6 @@ public void getClaimRequests_WhereConnectorIsDeleted() throws KlawException {
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
List connectorRequests = generateKafkaConnectorRequests(9);
connectorRequests.addAll(generateKafkaConnectorRequests(1, 7, RequestOperationType.CLAIM));
when(handleDbRequests.getAllConnectorRequests(
@@ -473,8 +452,6 @@ public void getClaimRequests_WhereConnectorIsNotDeleted() throws KlawException {
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
List connectorRequests = generateKafkaConnectorRequests(9);
connectorRequests.addAll(generateKafkaConnectorRequests(1, 7, RequestOperationType.CLAIM));
when(handleDbRequests.getAllConnectorRequests(
@@ -524,8 +501,6 @@ public void getConnectorOverview_WithNoParams_returnsNull() throws KlawException
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTeamId(eq(USERNAME))).thenReturn(8);
when(handleDbRequests.getConnectors(eq(CONNECTOR_NAME), eq(TENANT_ID)))
.thenReturn(generateKafkaConnectors(3));
@@ -542,8 +517,6 @@ public void getConnectorOverview_WithAllEnvs_noPromotionOrderSet() throws KlawEx
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTeamId(eq(USERNAME))).thenReturn(8);
when(handleDbRequests.getConnectors(eq(CONNECTOR_NAME), eq(TENANT_ID)))
.thenReturn(generateKafkaConnectors(3));
@@ -588,8 +561,6 @@ public void getConnectorOverview_WithAllEnvs() throws KlawException {
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTeamId(eq(USERNAME))).thenReturn(8);
when(handleDbRequests.getConnectors(eq(CONNECTOR_NAME), eq(TENANT_ID)))
.thenReturn(generateKafkaConnectors(3));
@@ -621,8 +592,6 @@ public void getConnectorOverview_WithOneEnv() throws KlawException {
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTeamId(eq(USERNAME))).thenReturn(8);
when(handleDbRequests.getConnectors(eq(CONNECTOR_NAME), eq(TENANT_ID)))
.thenReturn(generateKafkaConnectors(3));
@@ -655,8 +624,6 @@ public void getConnectorOverview_WithOneEnvAndPromotion() throws KlawException {
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTeamId(eq(USERNAME))).thenReturn(8);
when(handleDbRequests.getConnectors(eq(CONNECTOR_NAME), eq(TENANT_ID)))
.thenReturn(generateKafkaConnectors(2));
@@ -690,8 +657,6 @@ public void getConnectorOverview_WithOneEnvAndNoPromotionForBaseEnv() throws Kla
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTeamId(eq(USERNAME))).thenReturn(8);
when(handleDbRequests.getConnectors(eq(CONNECTOR_NAME), eq(TENANT_ID)))
.thenReturn(generateKafkaConnectors(2));
@@ -775,8 +740,6 @@ public void getConnectorOverview_WithHighestEnvAndConnectorOwnerSet() throws Kla
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTeamId(eq(USERNAME))).thenReturn(8);
when(handleDbRequests.getConnectors(eq(CONNECTOR_NAME), eq(TENANT_ID)))
.thenReturn(generateKafkaConnectors(2));
@@ -810,8 +773,6 @@ public void getConnectorOverview_WithRequestsOpen() throws KlawException {
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTeamId(eq(USERNAME))).thenReturn(8);
when(handleDbRequests.getConnectors(eq(CONNECTOR_NAME), eq(TENANT_ID)))
.thenReturn(generateKafkaConnectors(2));
@@ -855,8 +816,6 @@ public void getConnectorOverview_WithNoRequestsOpen() throws KlawException {
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTeamId(eq(USERNAME))).thenReturn(8);
when(handleDbRequests.getConnectors(eq(CONNECTOR_NAME), eq(TENANT_ID)))
.thenReturn(generateKafkaConnectors(2));
@@ -897,8 +856,6 @@ public void getConnectorOverviewPerEnv_ConnectorDoesNotExist() {
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTeamId(eq(USERNAME))).thenReturn(8);
when(handleDbRequests.getConnectors(eq(CONNECTOR_NAME), eq(TENANT_ID)))
.thenReturn(generateKafkaConnectors(2));
@@ -923,8 +880,6 @@ public void getConnectorOverviewPerEnv_ConnectorOwnedByDifferentTeam() {
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTeamId(eq(USERNAME))).thenReturn(8);
when(handleDbRequests.getConnectors(eq(CONNECTOR_NAME), eq(TENANT_ID)))
.thenReturn(generateKafkaConnectors(2));
@@ -954,8 +909,6 @@ public void getConnectorOverview_WithClaimRequestsOpenAndNoOtherRequestOpen()
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTeamId(eq(USERNAME))).thenReturn(8);
when(handleDbRequests.getConnectors(eq(CONNECTOR_NAME), eq(TENANT_ID)))
.thenReturn(generateKafkaConnectors(2));
@@ -1005,8 +958,6 @@ public void getConnectorOverview_WithPromotionRequestsOpen() throws KlawExceptio
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(TENANT_ID);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTeamId(eq(USERNAME))).thenReturn(8);
when(handleDbRequests.getConnectors(eq(CONNECTOR_NAME), eq(TENANT_ID)))
.thenReturn(generateKafkaConnectors(2));
@@ -1158,7 +1109,7 @@ private String getInvalidValidConnConfigTopicsTopicsRegex() {
private void stubUserInfo() {
when(handleDbRequests.getUsersInfo(anyString())).thenReturn(userInfo);
when(userInfo.getTeamId()).thenReturn(TENANT_ID);
- when(mailService.getUserName(any())).thenReturn(USERNAME);
+ when(mailService.getUserName(userDetails)).thenReturn(USERNAME);
Env e = new Env();
e.setId("1");
e.setName("DEV");
diff --git a/core/src/test/java/io/aiven/klaw/service/KafkaConnectSyncControllerServiceTest.java b/core/src/test/java/io/aiven/klaw/service/KafkaConnectSyncControllerServiceTest.java
index efa5da0e2..a2ab46fe0 100644
--- a/core/src/test/java/io/aiven/klaw/service/KafkaConnectSyncControllerServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/KafkaConnectSyncControllerServiceTest.java
@@ -38,10 +38,6 @@
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.util.ReflectionTestUtils;
@@ -98,7 +94,8 @@ public void setUp() throws Exception {
kafkaConnectSyncControllerService, "clusterApiService", clusterApiService);
when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequests);
- loginMock();
+ when(commonUtilsService.getPrincipal()).thenReturn(userDetails);
+ when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
}
private void environmentSetUp() {
@@ -112,18 +109,10 @@ private void environmentSetUp() {
when(manageDatabase.getKafkaEnvList(anyInt())).thenReturn(List.of(env, test));
}
- private void loginMock() {
- Authentication authentication = Mockito.mock(Authentication.class);
- SecurityContext securityContext = Mockito.mock(SecurityContext.class);
- when(securityContext.getAuthentication()).thenReturn(authentication);
- when(authentication.getPrincipal()).thenReturn(userDetails);
- SecurityContextHolder.setContext(securityContext);
- }
-
private void stubUserInfo() {
when(handleDbRequests.getUsersInfo(anyString())).thenReturn(userInfo);
when(userInfo.getTeamId()).thenReturn(101);
- when(mailService.getUserName(any())).thenReturn(USERNAME);
+ when(mailService.getUserName(userDetails)).thenReturn(USERNAME);
when(commonUtilsService.getTenantId(eq(USERNAME))).thenReturn(TENANT_ID);
}
@@ -134,7 +123,7 @@ public void updateSyncConnectorsSuccess() throws KlawException {
when(manageDatabase.getTenantConfig()).thenReturn(tenantConfig);
when(tenantConfig.get(anyInt())).thenReturn(tenantConfigModel);
when(tenantConfigModel.getBaseSyncEnvironment()).thenReturn("1");
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_CONNECTORS))
.thenReturn(false);
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
diff --git a/core/src/test/java/io/aiven/klaw/service/OperationalRequestsServiceTest.java b/core/src/test/java/io/aiven/klaw/service/OperationalRequestsServiceTest.java
index 3c1abba10..85fda15b1 100644
--- a/core/src/test/java/io/aiven/klaw/service/OperationalRequestsServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/OperationalRequestsServiceTest.java
@@ -41,10 +41,6 @@
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -94,15 +90,8 @@ public void setUp() throws Exception {
env.setName("DEV");
when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequests);
- loginMock();
- }
-
- private void loginMock() {
- Authentication authentication = Mockito.mock(Authentication.class);
- SecurityContext securityContext = Mockito.mock(SecurityContext.class);
- when(securityContext.getAuthentication()).thenReturn(authentication);
- when(authentication.getPrincipal()).thenReturn(userDetails);
- SecurityContextHolder.setContext(securityContext);
+ when(commonUtilsService.getPrincipal()).thenReturn(userDetails);
+ when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
}
@Test
@@ -110,7 +99,8 @@ private void loginMock() {
public void createConsumerOffsetsResetRequestDoesNotOwnGroup() throws KlawNotAuthorizedException {
ConsumerOffsetResetRequestModel consumerOffsetResetRequestModel =
utilMethods.getConsumerOffsetResetRequest(1001);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
.thenReturn(false);
ApiResponse apiResponse =
@@ -125,7 +115,8 @@ public void createRequestEmptyResetTimeForDateTimeResetType() throws KlawNotAuth
ConsumerOffsetResetRequestModel consumerOffsetResetRequestModel =
utilMethods.getConsumerOffsetResetRequest(1001);
consumerOffsetResetRequestModel.setOffsetResetType(OffsetResetType.TO_DATE_TIME);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
.thenReturn(false);
when(handleDbRequests.getSyncAcls(anyString(), anyString(), anyInt(), anyString(), anyInt()))
.thenReturn(utilMethods.getAcls());
@@ -141,7 +132,8 @@ public void createRequestEmptyResetTimeForDateTimeResetType() throws KlawNotAuth
public void createRequestWhichAlreadyExists() throws KlawNotAuthorizedException {
ConsumerOffsetResetRequestModel consumerOffsetResetRequestModel =
utilMethods.getConsumerOffsetResetRequest(1001);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
.thenReturn(false);
when(handleDbRequests.getSyncAcls(anyString(), anyString(), anyInt(), anyString(), anyInt()))
.thenReturn(utilMethods.getAcls());
@@ -169,7 +161,8 @@ public void createRequestWhichAlreadyExists() throws KlawNotAuthorizedException
public void createRequestSuccess() throws KlawNotAuthorizedException {
ConsumerOffsetResetRequestModel consumerOffsetResetRequestModel =
utilMethods.getConsumerOffsetResetRequest(1001);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.REQUEST_CREATE_SUBSCRIPTIONS))
.thenReturn(false);
when(handleDbRequests.getSyncAcls(anyString(), anyString(), anyInt(), anyString(), anyInt()))
.thenReturn(utilMethods.getAcls());
@@ -203,7 +196,8 @@ public void approveOperationalRequestsSuccess() throws KlawException {
UtilMethods.getOffsetsTimingMapMap();
ApiResponse apiResponse =
ApiResponse.builder().success(true).data(offsetPositionsBeforeAndAfter).build();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.APPROVE_OPERATIONAL_CHANGES))
.thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
when(mailService.getCurrentUserName()).thenReturn("testuser");
@@ -220,7 +214,8 @@ public void approveOperationalRequestsSuccess() throws KlawException {
@Order(6)
public void approveOperationalRequestsFailure() throws KlawException {
ApiResponse apiResponse = ApiResponse.builder().success(false).build();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.APPROVE_OPERATIONAL_CHANGES))
.thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
when(mailService.getCurrentUserName()).thenReturn("testuser");
diff --git a/core/src/test/java/io/aiven/klaw/service/RequestStatisticsServiceTest.java b/core/src/test/java/io/aiven/klaw/service/RequestStatisticsServiceTest.java
index fcf371d3e..9f9555364 100644
--- a/core/src/test/java/io/aiven/klaw/service/RequestStatisticsServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/RequestStatisticsServiceTest.java
@@ -1,7 +1,6 @@
package io.aiven.klaw.service;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
@@ -24,10 +23,6 @@
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.util.ReflectionTestUtils;
@@ -56,7 +51,7 @@ void setUp() {
requestStatisticsService, "commonUtilsService", commonUtilsService);
ReflectionTestUtils.setField(requestStatisticsService, "mailService", mailService);
when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequests);
- loginMock();
+ when(commonUtilsService.getPrincipal()).thenReturn(userDetails);
}
@Test
@@ -124,18 +119,10 @@ public void getRequestsCountOverview() {
.hasSize(2);
}
- private void loginMock() {
- Authentication authentication = Mockito.mock(Authentication.class);
- SecurityContext securityContext = Mockito.mock(SecurityContext.class);
- when(securityContext.getAuthentication()).thenReturn(authentication);
- when(authentication.getPrincipal()).thenReturn(userDetails);
- SecurityContextHolder.setContext(securityContext);
- }
-
private void stubUserInfo() {
when(handleDbRequests.getUsersInfo(anyString())).thenReturn(userInfo);
when(userInfo.getTeamId()).thenReturn(101);
- when(mailService.getUserName(any())).thenReturn("kwusera");
+ when(mailService.getUserName(userDetails)).thenReturn("kwusera");
when(mailService.getCurrentUserName()).thenReturn("kwusera");
}
}
diff --git a/core/src/test/java/io/aiven/klaw/service/SchemaRegistryControllerServiceTest.java b/core/src/test/java/io/aiven/klaw/service/SchemaRegistryControllerServiceTest.java
index 13dc0e2fb..ddeb97005 100644
--- a/core/src/test/java/io/aiven/klaw/service/SchemaRegistryControllerServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/SchemaRegistryControllerServiceTest.java
@@ -45,12 +45,8 @@
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
-import org.mockito.Mockito;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -108,19 +104,12 @@ public void setUp() throws Exception {
rolesPermissionsControllerService);
when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequests);
- loginMock();
Boolean validateOnSave = true;
ReflectionTestUtils.setField(
schemaRegistryControllerService, "validateCompatiblityOnSave", validateOnSave);
utilMethods = new UtilMethods();
- }
-
- private void loginMock() {
- Authentication authentication = Mockito.mock(Authentication.class);
- SecurityContext securityContext = Mockito.mock(SecurityContext.class);
- when(securityContext.getAuthentication()).thenReturn(authentication);
- when(authentication.getPrincipal()).thenReturn(userDetails);
- SecurityContextHolder.setContext(securityContext);
+ when(commonUtilsService.getPrincipal()).thenReturn(userDetails);
+ when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
}
@Test
@@ -147,6 +136,9 @@ public void getSchemaRequests() {
when(handleDbRequests.getAllUsersInfoForTeam(anyInt(), anyInt())).thenReturn(List.of(userInfo));
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(this.env);
when(manageDatabase.getTeamNameFromTeamId(anyInt(), anyInt())).thenReturn("teamname");
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.APPROVE_ALL_REQUESTS_TEAMS))
+ .thenReturn(false);
List listReqs =
schemaRegistryControllerService.getSchemaRequests(
@@ -171,6 +163,8 @@ public void deleteSchemaRequestsSuccess() throws KlawException {
stubUserInfo();
when(handleDbRequests.deleteSchemaRequest(anyInt(), anyString(), anyInt()))
.thenReturn(ApiResultStatus.SUCCESS.value);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.REQUEST_DELETE_SCHEMAS))
+ .thenReturn(false);
ApiResponse resultResp = schemaRegistryControllerService.deleteSchemaRequests("" + schemaReqId);
assertThat(resultResp.getMessage()).isEqualTo(ApiResultStatus.SUCCESS.value);
}
@@ -183,11 +177,14 @@ public void deleteSchemaRequestsFailure() {
stubUserInfo();
when(handleDbRequests.deleteSchemaRequest(anyInt(), anyString(), anyInt()))
.thenThrow(new RuntimeException("Error from Schema upload"));
- try {
- schemaRegistryControllerService.deleteSchemaRequests("" + schemaReqId);
- } catch (KlawException e) {
- assertThat(e.getMessage()).contains("Error from Schema upload");
- }
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.REQUEST_DELETE_SCHEMAS))
+ .thenReturn(false);
+
+ KlawException ex =
+ assertThrows(
+ KlawException.class,
+ () -> schemaRegistryControllerService.deleteSchemaRequests("" + schemaReqId));
+ assertThat(ex.getMessage()).contains("Error from Schema upload");
}
@Test
@@ -223,7 +220,7 @@ public void execSchemaRequestsSuccess() throws KlawException {
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SCHEMAS))
.thenReturn(false);
ApiResponse resultResp = schemaRegistryControllerService.execSchemaRequests("" + schemaReqId);
@@ -252,7 +249,7 @@ public void execSchemaRequestsFailure1() throws KlawException {
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SCHEMAS))
.thenReturn(false);
ApiResponse resultResp = schemaRegistryControllerService.execSchemaRequests("" + schemaReqId);
@@ -286,7 +283,7 @@ public void execSchemaRequestsFailure2() {
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
.thenReturn(Collections.singletonList("1"));
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_SCHEMAS))
.thenReturn(false);
try {
@@ -310,7 +307,7 @@ public void uploadSchemaSuccess() throws KlawException {
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
mockGetEnvironment();
when(manageDatabase.getEnv(eq(101), eq(1))).thenReturn(Optional.of(createEnv(1)));
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.REQUEST_CREATE_SCHEMAS))
.thenReturn(false);
when(handleDbRequests.requestForSchema(any())).thenReturn(ApiResultStatus.SUCCESS.value);
when(commonUtilsService.getTopicsForTopicName(anyString(), anyInt()))
@@ -331,7 +328,7 @@ public void uploadSchemaFailure() throws KlawException {
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.REQUEST_CREATE_SCHEMAS))
.thenReturn(false);
when(handleDbRequests.requestForSchema(any()))
.thenThrow(new RuntimeException("Error from schema upload"));
@@ -351,7 +348,7 @@ public void uploadSchemaFailure() throws KlawException {
@Order(9)
public void promoteSchemaNotAuthorized() throws Exception {
// Make user unauthorized
- when(commonUtilsService.isNotAuthorizedUser(any(), eq(PermissionType.REQUEST_CREATE_SCHEMAS)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.REQUEST_CREATE_SCHEMAS))
.thenReturn(true);
ApiResponse returnedValue =
schemaRegistryControllerService.promoteSchema(buildPromoteSchemaRequest(false, "1"));
@@ -368,6 +365,8 @@ public void promoteSchemaCanNotFindSourceEnvironmentSchema() throws Exception {
when(commonUtilsService.getTopicsForTopicName(anyString(), anyInt()))
.thenReturn(List.of(createTopic()));
when(commonUtilsService.getTeamId(any())).thenReturn(101);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.REQUEST_CREATE_SCHEMAS))
+ .thenReturn(false);
ApiResponse returnedValue =
schemaRegistryControllerService.promoteSchema(buildPromoteSchemaRequest(false, "1"));
assertThat(returnedValue.getMessage())
@@ -384,6 +383,8 @@ public void promoteSchemaSuccess() throws Exception {
.thenReturn(buildValidationResponse(true));
mockSchemaCreation();
when(manageDatabase.getEnv(eq(101), eq(8))).thenReturn(Optional.of(createEnv(8)));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.REQUEST_CREATE_SCHEMAS))
+ .thenReturn(false);
ApiResponse returnedValue =
schemaRegistryControllerService.promoteSchema(buildPromoteSchemaRequest(false, "1"));
@@ -403,6 +404,8 @@ public void promoteSchemaEnsureCorrectSchemaSelectedV1Success() throws Exception
mockSchemaCreation();
when(manageDatabase.getEnv(eq(101), eq(8))).thenReturn(Optional.of(createEnv(8)));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.REQUEST_CREATE_SCHEMAS))
+ .thenReturn(false);
ApiResponse returnedValue =
schemaRegistryControllerService.promoteSchema(buildPromoteSchemaRequest(false, "1"));
@@ -425,6 +428,8 @@ public void promoteSchemaEnsureCorrectSchemaSelectedV2Success() throws Exception
.thenReturn(buildValidationResponse(true));
mockSchemaCreation();
when(manageDatabase.getEnv(eq(101), eq(8))).thenReturn(Optional.of(createEnv(8)));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.REQUEST_CREATE_SCHEMAS))
+ .thenReturn(false);
ApiResponse returnedValue =
schemaRegistryControllerService.promoteSchema(buildPromoteSchemaRequest(false, "2"));
@@ -447,6 +452,8 @@ public void promoteSchemaEnsureCorrectSchemaSelectedV3Success() throws Exception
.thenReturn(buildValidationResponse(true));
mockSchemaCreation();
when(manageDatabase.getEnv(eq(101), eq(8))).thenReturn(Optional.of(createEnv(8)));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.REQUEST_CREATE_SCHEMAS))
+ .thenReturn(false);
ApiResponse returnedValue =
schemaRegistryControllerService.promoteSchema(buildPromoteSchemaRequest(false, "3"));
@@ -470,6 +477,8 @@ public void promoteSchemaEnsureCorrectSchemaSelectedV4Success() throws Exception
.thenReturn(buildValidationResponse(true));
mockSchemaCreation();
when(manageDatabase.getEnv(eq(101), eq(8))).thenReturn(Optional.of(createEnv(8)));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.REQUEST_CREATE_SCHEMAS))
+ .thenReturn(false);
ApiResponse returnedValue =
schemaRegistryControllerService.promoteSchema(buildPromoteSchemaRequest(false, "4"));
@@ -492,6 +501,8 @@ public void promoteSchemaWithInCompatibleSchemaReturnFailure() throws Exception
.thenReturn(buildValidationResponse(false));
mockSchemaCreation();
when(manageDatabase.getEnv(eq(101), eq(8))).thenReturn(Optional.of(createEnv(8)));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.REQUEST_CREATE_SCHEMAS))
+ .thenReturn(false);
ApiResponse returnedValue =
schemaRegistryControllerService.promoteSchema(buildPromoteSchemaRequest(false, "4"));
@@ -514,7 +525,7 @@ public void uploadSchemaIncompatibleSchemaError() throws KlawException {
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.REQUEST_CREATE_SCHEMAS))
.thenReturn(false);
mockGetEnvironment();
when(manageDatabase.getEnv(eq(101), eq(1))).thenReturn(Optional.of(createEnv(1)));
@@ -619,7 +630,7 @@ public void uploadSchema_NoValidationOnSave() throws KlawException {
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.REQUEST_CREATE_SCHEMAS))
.thenReturn(false);
when(handleDbRequests.requestForSchema(any())).thenReturn(ApiResultStatus.SUCCESS.value);
when(commonUtilsService.getTopicsForTopicName(anyString(), anyInt()))
@@ -650,7 +661,7 @@ public void uploadSchema_ValidationPropertyNotSet() throws KlawException {
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.REQUEST_CREATE_SCHEMAS))
.thenReturn(false);
mockGetEnvironment();
when(manageDatabase.getEnv(eq(101), eq(1))).thenReturn(Optional.of(createEnv(1)));
@@ -689,6 +700,9 @@ public void getListofSchemaRequestsIn_NEWEST_FIRST_ORDER() {
when(handleDbRequests.getAllUsersInfoForTeam(anyInt(), anyInt())).thenReturn(List.of(userInfo));
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(this.env);
when(manageDatabase.getTeamNameFromTeamId(anyInt(), anyInt())).thenReturn("teamname");
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.APPROVE_ALL_REQUESTS_TEAMS))
+ .thenReturn(false);
List ordered_response =
schemaRegistryControllerService.getSchemaRequests(
@@ -736,6 +750,9 @@ public void getListofSchemaRequestsIn_OLDEST_FIRST_ORDER() {
when(handleDbRequests.getAllUsersInfoForTeam(anyInt(), anyInt())).thenReturn(List.of(userInfo));
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(this.env);
when(manageDatabase.getTeamNameFromTeamId(anyInt(), anyInt())).thenReturn("teamname");
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.APPROVE_ALL_REQUESTS_TEAMS))
+ .thenReturn(false);
List ordered_response =
schemaRegistryControllerService.getSchemaRequests(
@@ -969,6 +986,6 @@ private void stubUserInfo() {
when(handleDbRequests.getUsersInfo(anyString())).thenReturn(userInfo);
when(userInfo.getTeamId()).thenReturn(101);
when(userInfo.getRole()).thenReturn("USER");
- when(mailService.getUserName(any())).thenReturn("kwusera");
+ when(mailService.getUserName(userDetails)).thenReturn("kwusera");
}
}
diff --git a/core/src/test/java/io/aiven/klaw/service/SchemaRegistrySyncControllerServiceTest.java b/core/src/test/java/io/aiven/klaw/service/SchemaRegistrySyncControllerServiceTest.java
index 169747d9e..c2a277dbe 100644
--- a/core/src/test/java/io/aiven/klaw/service/SchemaRegistrySyncControllerServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/SchemaRegistrySyncControllerServiceTest.java
@@ -51,12 +51,8 @@
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.mockito.Mock;
-import org.mockito.Mockito;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.util.ReflectionTestUtils;
@@ -98,15 +94,8 @@ public void setUp() throws Exception {
schemaRegistrySyncControllerService, "commonUtilsService", commonUtilsService);
when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequests);
- loginMock();
- }
-
- private void loginMock() {
- Authentication authentication = Mockito.mock(Authentication.class);
- SecurityContext securityContext = Mockito.mock(SecurityContext.class);
- when(securityContext.getAuthentication()).thenReturn(authentication);
- when(authentication.getPrincipal()).thenReturn(userDetails);
- SecurityContextHolder.setContext(securityContext);
+ when(commonUtilsService.getPrincipal()).thenReturn(userDetails);
+ when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
}
@Test
@@ -124,7 +113,7 @@ public void getSchemasOfEnvironmentNotInSyncSourceCluster() throws Exception {
kwClustersMap.put(1, utilMethods.getKwClusters());
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(env);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SCHEMAS))
.thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
@@ -159,7 +148,7 @@ public void getSchemasOfEnvironmentInSyncAndNotInSyncSourceCluster() throws Exce
kwClustersMap.put(1, utilMethods.getKwClusters());
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(env);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SCHEMAS))
.thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
@@ -220,7 +209,7 @@ public void getSchemasOfEnvironmentSourceMetadata() throws Exception {
List topics = utilMethods.generateTopics(14);
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(env);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_BACK_SCHEMAS))
.thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
@@ -252,7 +241,7 @@ public void getSchemasOfEnvironmentNoSchemasSourceMetadata() throws Exception {
List topics = utilMethods.generateTopics(14);
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(env);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_BACK_SCHEMAS))
.thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
@@ -287,7 +276,7 @@ public void updateDbFromCluster() throws Exception {
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(env);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SCHEMAS))
.thenReturn(false);
when(manageDatabase.getClusters(any(), anyInt())).thenReturn(kwClustersMap);
@@ -330,7 +319,7 @@ public void updateClusterFromDb() throws Exception {
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(env);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_BACK_SCHEMAS))
.thenReturn(false);
when(manageDatabase.getClusters(any(), anyInt())).thenReturn(kwClustersMap);
@@ -388,7 +377,7 @@ public void getSchemaOfTopicFromSourceCluster() throws Exception {
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(env);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SCHEMAS))
.thenReturn(false);
when(manageDatabase.getClusters(any(), anyInt())).thenReturn(kwClustersMap);
when(clusterApiService.getAvroSchema(anyString(), any(), anyString(), anyString(), anyInt()))
@@ -416,7 +405,7 @@ public void getSchemaOfTopicFromSourceMetadata() throws Exception {
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(env);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_BACK_SCHEMAS))
.thenReturn(false);
MessageSchema schema = utilMethods.getMSchemas().get(0);
schema.setTopicname(topicName);
@@ -453,7 +442,7 @@ public void deleteOrphanedSchemaMetaDataFromDb(List schemasToBeDeleted)
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(env);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SCHEMAS))
.thenReturn(false);
when(manageDatabase.getClusters(any(), anyInt())).thenReturn(kwClustersMap);
@@ -492,7 +481,7 @@ public void getSchemaOfTopicFromSourceMetadataWithSchemasToBeDeleted() throws Ex
kwClustersMap.put(1, utilMethods.getKwClusters());
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(env);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SCHEMAS))
.thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
@@ -537,7 +526,7 @@ public void getSchemasOfEnvironmentFromMetadataWithTopicDeletedAndSchemaStillAva
kwClustersMap.put(1, utilMethods.getKwClusters());
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(env);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SCHEMAS))
.thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(3))).thenReturn("Team1");
@@ -589,7 +578,7 @@ public void getSchemasOfEnvironmentFromMetadataWithSchemaDeletedFromCluster() th
clusterResp.setSchemaInfoOfTopicList(new ArrayList<>());
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(3))).thenReturn("Team1");
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(env);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SCHEMAS))
.thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
@@ -642,7 +631,7 @@ public void getSchemasOfEnvironmentFromMetadataExceptonContactingCluster() throw
SchemasInfoOfClusterResponse clusterResp = new SchemasInfoOfClusterResponse();
clusterResp.setSchemaInfoOfTopicList(new ArrayList<>());
when(handleDbRequests.getEnvDetails(anyString(), anyInt())).thenReturn(env);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_SCHEMAS))
.thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
when(manageDatabase.getClusters(any(), anyInt())).thenReturn(kwClustersMap);
diff --git a/core/src/test/java/io/aiven/klaw/service/ServerConfigServiceTest.java b/core/src/test/java/io/aiven/klaw/service/ServerConfigServiceTest.java
index 42d8b0167..8dec5c755 100644
--- a/core/src/test/java/io/aiven/klaw/service/ServerConfigServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/ServerConfigServiceTest.java
@@ -38,12 +38,8 @@
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
-import org.mockito.Mockito;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.core.env.Environment;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -70,15 +66,15 @@ public class ServerConfigServiceTest {
public void setUp() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
this.env = context.getEnvironment();
- loginMock();
serverConfigService = new ServerConfigService(env, commonUtilsService, mailService, managedb);
+ when(commonUtilsService.getPrincipal()).thenReturn(userDetails);
+ when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
}
@Test
@Order(1)
public void getAllPropsNotAuthorized() {
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
serverConfigService.getAllProperties();
Collection collection = serverConfigService.getAllProps();
assertThat(collection).isEmpty(); // filtering for spring. and klaw.
@@ -87,21 +83,13 @@ public void getAllPropsNotAuthorized() {
@Test
@Order(2)
public void getAllProps() {
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.UPDATE_SERVERCONFIG))
.thenReturn(false);
serverConfigService.getAllProperties();
Collection collection = serverConfigService.getAllProps();
assertThat(collection).isEmpty(); // filtering for spring. and klaw.
}
- private void loginMock() {
- Authentication authentication = Mockito.mock(Authentication.class);
- SecurityContext securityContext = Mockito.mock(SecurityContext.class);
- when(securityContext.getAuthentication()).thenReturn(authentication);
- when(authentication.getPrincipal()).thenReturn(userDetails);
- SecurityContextHolder.setContext(securityContext);
- }
-
@Test
@Order(3)
public void givenValidTenantModelAllResources_returnSuccess()
@@ -129,6 +117,9 @@ public void givenValidTenantModelAllResources_returnSuccess()
config.setTenantModel(prop);
KwPropertiesModel request =
createKwPropertiesModel(KLAW_TENANT_CONFIG, mapper.writeValueAsString(config));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.UPDATE_SERVERCONFIG))
+ .thenReturn(false);
+
// Execute
ApiResponse response = serverConfigService.updateKwCustomProperty(request);
@@ -167,6 +158,9 @@ public void givenValidTenantModelTopicsOnly_returnSuccess()
config.setTenantModel(prop);
KwPropertiesModel request =
createKwPropertiesModel(KLAW_TENANT_CONFIG, mapper.writeValueAsString(config));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.UPDATE_SERVERCONFIG))
+ .thenReturn(false);
+
// Execute
ApiResponse response = serverConfigService.updateKwCustomProperty(request);
@@ -212,6 +206,9 @@ public void givenKafkaTopicThatDoesNotExist_returnFailure()
config.setTenantModel(prop);
KwPropertiesModel request =
createKwPropertiesModel(KLAW_TENANT_CONFIG, mapper.writeValueAsString(config));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.UPDATE_SERVERCONFIG))
+ .thenReturn(false);
+
// Execute
ApiResponse response = serverConfigService.updateKwCustomProperty(request);
@@ -246,6 +243,9 @@ public void givenSchemaThatDoesNotExist_returnFailure()
config.setTenantModel(prop);
KwPropertiesModel request =
createKwPropertiesModel(KLAW_TENANT_CONFIG, mapper.writeValueAsString(config));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.UPDATE_SERVERCONFIG))
+ .thenReturn(false);
+
// Execute
ApiResponse response = serverConfigService.updateKwCustomProperty(request);
@@ -261,6 +261,9 @@ public void givenSchemaThatDoesNotExist_returnFailure()
public void givenInvalidJson_returnFailure() throws KlawException {
stubValidateTests();
KwPropertiesModel request = createKwPropertiesModel(KLAW_TENANT_CONFIG, "{}");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.UPDATE_SERVERCONFIG))
+ .thenReturn(false);
+
// Execute
ApiResponse response = serverConfigService.updateKwCustomProperty(request);
@@ -289,6 +292,9 @@ public void givenValidTenantModelKafkaConnectOnly_returnSuccess()
config.setTenantModel(prop);
KwPropertiesModel request =
createKwPropertiesModel(KLAW_TENANT_CONFIG, mapper.writeValueAsString(config));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.UPDATE_SERVERCONFIG))
+ .thenReturn(false);
+
// Execute
ApiResponse response = serverConfigService.updateKwCustomProperty(request);
@@ -304,6 +310,8 @@ public void givenRequestForConfig_returnCorrectConfig()
stubValidateTests();
when(managedb.getKwPropertiesMap(101)).thenReturn(buildFullDbObject());
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.UPDATE_SERVERCONFIG))
+ .thenReturn(false);
// Execute
List response = serverConfigService.getAllEditableProps();
@@ -350,6 +358,8 @@ public void givenRequestForConfigWithNoneSet_returnCorrectConfig()
dbObject.put(KLAW_TENANT_CONFIG, map);
when(managedb.getKwPropertiesMap(101)).thenReturn(dbObject);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.UPDATE_SERVERCONFIG))
+ .thenReturn(false);
// Execute
List response = serverConfigService.getAllEditableProps();
@@ -373,6 +383,9 @@ public void givenValidTenantModelTopicsInvalidEnvsClustersOnly_returnFailure()
config.setTenantModel(prop);
KwPropertiesModel request =
createKwPropertiesModel(KLAW_TENANT_CONFIG, mapper.writeValueAsString(config));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.UPDATE_SERVERCONFIG))
+ .thenReturn(false);
+
// Execute
ApiResponse response = serverConfigService.updateKwCustomProperty(request);
diff --git a/core/src/test/java/io/aiven/klaw/service/TopicControllerServiceTest.java b/core/src/test/java/io/aiven/klaw/service/TopicControllerServiceTest.java
index 6e202b2dd..2144f335b 100644
--- a/core/src/test/java/io/aiven/klaw/service/TopicControllerServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/TopicControllerServiceTest.java
@@ -61,13 +61,9 @@
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
-import org.mockito.Mockito;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.util.ReflectionTestUtils;
@@ -122,15 +118,8 @@ public void setUp() throws Exception {
rolesPermissionsControllerService);
when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequests);
- loginMock();
- }
-
- private void loginMock() {
- Authentication authentication = Mockito.mock(Authentication.class);
- SecurityContext securityContext = Mockito.mock(SecurityContext.class);
- when(securityContext.getAuthentication()).thenReturn(authentication);
- when(authentication.getPrincipal()).thenReturn(userDetails);
- SecurityContextHolder.setContext(securityContext);
+ when(commonUtilsService.getPrincipal()).thenReturn(userDetails);
+ when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
}
@Test
@@ -144,8 +133,6 @@ public void createTopicsSuccessAdvancedTopicConfigs()
when(tenantConfig.get(anyInt())).thenReturn(tenantConfigModel);
when(tenantConfigModel.getBaseSyncEnvironment()).thenReturn("1");
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(manageDatabase.getKafkaEnvList(anyInt())).thenReturn(utilMethods.getEnvLists());
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
.thenReturn(Collections.singletonList("1"));
@@ -167,8 +154,6 @@ public void createTopicsSuccessDefaultValues() throws KlawException, KlawNotAuth
when(tenantConfig.get(anyInt())).thenReturn(tenantConfigModel);
when(tenantConfigModel.getBaseSyncEnvironment()).thenReturn("1");
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(manageDatabase.getKafkaEnvList(anyInt())).thenReturn(utilMethods.getEnvLists());
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
.thenReturn(Collections.singletonList("1"));
@@ -192,8 +177,6 @@ public void createTopicsFailureInvalidPartitions()
when(tenantConfig.get(anyInt())).thenReturn(tenantConfigModel);
when(tenantConfigModel.getBaseSyncEnvironment()).thenReturn("1");
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(manageDatabase.getKafkaEnvList(anyInt())).thenReturn(utilMethods.getEnvLists());
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
.thenReturn(Collections.singletonList("1"));
@@ -213,8 +196,6 @@ public void createTopicsFailureInvalidClusterTenantIds()
when(tenantConfig.get(anyInt())).thenReturn(tenantConfigModel);
when(tenantConfigModel.getBaseSyncEnvironment()).thenReturn("1");
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(manageDatabase.getKafkaEnvList(anyInt())).thenReturn(utilMethods.getEnvListsIncorrect1());
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
.thenReturn(Collections.singletonList("1"));
@@ -236,8 +217,6 @@ public void createTopicsFailureInvalidTopicDescriptionLength()
when(tenantConfig.get(anyInt())).thenReturn(tenantConfigModel);
when(tenantConfigModel.getBaseSyncEnvironment()).thenReturn("1");
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(manageDatabase.getKafkaEnvList(anyInt())).thenReturn(utilMethods.getEnvListsIncorrect1());
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
.thenReturn(Collections.singletonList("1"));
@@ -262,8 +241,6 @@ public void createTopicsFailureInvalidTopicDescriptionLength()
public void createTopicDeleteRequestFailureTopicAlreadyExists() {
String topicName = "testtopic1";
String envId = "1";
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
when(handleDbRequests.getTopicRequests(anyString(), anyString(), anyString(), anyInt()))
.thenReturn(getListTopicRequests());
@@ -285,8 +262,6 @@ public void createTopicDeleteRequestFailureNotOwnerTeamOfTopic() {
String topicName = "testtopic1";
String envId = "1";
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
when(handleDbRequests.getTopicRequests(anyString(), anyString(), anyString(), anyInt()))
.thenReturn(Collections.emptyList());
@@ -312,8 +287,6 @@ public void createTopicDeleteRequestFailureTopicWithSubscriptions() {
String envId = "1";
stubUserInfo();
when(commonUtilsService.getTeamId(anyString())).thenReturn(1);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
when(handleDbRequests.getTopicRequests(anyString(), anyString(), anyString(), anyInt()))
.thenReturn(Collections.emptyList());
@@ -339,8 +312,6 @@ public void createTopicDeleteRequestFailureTopicNotInCluster() {
String envId = "2";
stubUserInfo();
when(userInfo.getTeamId()).thenReturn(1);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
when(handleDbRequests.getTopicRequests(anyString(), anyString(), anyString(), anyInt()))
.thenReturn(Collections.emptyList());
@@ -366,8 +337,6 @@ public void createTopicDeleteRequestSuccessDefaultValues() {
String envId = "1";
stubUserInfo();
when(commonUtilsService.getTeamId(anyString())).thenReturn(1);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
when(handleDbRequests.getTopicRequests(anyString(), anyString(), anyString(), anyInt()))
.thenReturn(Collections.emptyList());
@@ -666,8 +635,6 @@ public void deleteTopicRequests() throws KlawException {
when(handleDbRequests.deleteTopicRequest(anyInt(), anyString(), anyInt()))
.thenReturn(ApiResultStatus.SUCCESS.value);
when(mailService.getUserName(any())).thenReturn("uiuser1");
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
ApiResponse resultResp = topicControllerService.deleteTopicRequests("1001");
assertThat(resultResp.getMessage()).isEqualTo(ApiResultStatus.SUCCESS.value);
}
@@ -681,6 +648,8 @@ public void approveTopicRequests() throws KlawException {
ApiResponse apiResponse = ApiResponse.SUCCESS;
stubUserInfo();
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_TOPICS))
+ .thenReturn(false);
when(handleDbRequests.getTopicRequestsForTopic(anyInt(), anyInt())).thenReturn(topicRequest);
when(handleDbRequests.updateTopicRequest(any(), anyString()))
.thenReturn(
@@ -718,6 +687,8 @@ public void approveTopicClaimRequests() throws KlawException {
CRUDResponse.builder().resultStatus(ApiResultStatus.SUCCESS.value).build());
when(commonUtilsService.getTopicsForTopicName(anyString(), anyInt()))
.thenReturn(List.of(getTopic(topicName)));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_TOPICS))
+ .thenReturn(false);
when(clusterApiService.approveTopicRequests(
anyString(),
anyString(),
@@ -756,6 +727,8 @@ public void approveTopicUpdateRequests() throws KlawException {
CRUDResponse.builder().resultStatus(ApiResultStatus.SUCCESS.value).build());
when(commonUtilsService.getTopicsForTopicName(anyString(), anyInt()))
.thenReturn(List.of(getTopic(topicName)));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_TOPICS))
+ .thenReturn(false);
when(clusterApiService.approveTopicRequests(
anyString(),
anyString(),
@@ -788,6 +761,8 @@ public void approveTopicRequestsFailureResponseFromCluster() throws KlawExceptio
when(handleDbRequests.updateTopicRequest(any(), anyString()))
.thenReturn(
CRUDResponse.builder().resultStatus(ApiResultStatus.SUCCESS.value).build());
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_TOPICS))
+ .thenReturn(false);
when(clusterApiService.approveTopicRequests(
anyString(),
anyString(),
@@ -815,6 +790,8 @@ public void approveTopicRequestsFailureNotAllowed() throws KlawException {
stubUserInfo();
when(handleDbRequests.getTopicRequestsForTopic(anyInt(), anyInt())).thenReturn(topicRequest);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_TOPICS))
+ .thenReturn(false);
ApiResponse apiResponse1 = topicControllerService.approveTopicRequests("" + topicId);
assertThat(apiResponse1.getMessage())
@@ -1050,7 +1027,7 @@ public void declineTopicRequests() throws KlawException {
stubUserInfo();
when(handleDbRequests.getTopicRequestsForTopic(anyInt(), anyInt())).thenReturn(topicRequest);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_TOPICS))
.thenReturn(false);
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
@@ -1071,7 +1048,7 @@ public void declineTopicRequestsFailureRequestDoesNotExist() throws KlawExceptio
stubUserInfo();
when(handleDbRequests.getTopicRequestsForTopic(anyInt(), anyInt())).thenReturn(topicRequest);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_TOPICS))
.thenReturn(false);
when(handleDbRequests.declineTopicRequest(any(), anyString()))
.thenReturn(ApiResultStatus.SUCCESS.value);
@@ -1136,8 +1113,6 @@ public void updateTopicsSuccessAdvancedTopicConfigs()
when(tenantConfig.get(anyInt())).thenReturn(tenantConfigModel);
when(tenantConfigModel.getBaseSyncEnvironment()).thenReturn("1");
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(manageDatabase.getKafkaEnvList(anyInt())).thenReturn(utilMethods.getEnvLists());
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
.thenReturn(Collections.singletonList("1"));
@@ -1159,8 +1134,6 @@ public void updateTopicsSuccessDefaultValues() throws KlawException, KlawNotAuth
when(tenantConfig.get(anyInt())).thenReturn(tenantConfigModel);
when(tenantConfigModel.getBaseSyncEnvironment()).thenReturn("1");
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(manageDatabase.getKafkaEnvList(anyInt())).thenReturn(utilMethods.getEnvLists());
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
.thenReturn(Collections.singletonList("1"));
@@ -1184,8 +1157,6 @@ public void updateTopicsFailureInvalidPartitions()
when(tenantConfig.get(anyInt())).thenReturn(tenantConfigModel);
when(tenantConfigModel.getBaseSyncEnvironment()).thenReturn("1");
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(manageDatabase.getKafkaEnvList(anyInt())).thenReturn(utilMethods.getEnvLists());
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
.thenReturn(Collections.singletonList("1"));
@@ -1205,8 +1176,6 @@ public void updateTopicsFailureInvalidClusterTenantIds()
when(tenantConfig.get(anyInt())).thenReturn(tenantConfigModel);
when(tenantConfigModel.getBaseSyncEnvironment()).thenReturn("1");
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(manageDatabase.getKafkaEnvList(anyInt())).thenReturn(utilMethods.getEnvListsIncorrect1());
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
.thenReturn(Collections.singletonList("1"));
@@ -1327,8 +1296,6 @@ public void getClaimRequests_WhereTopicIsDeleted() {
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(101);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
List topicRequests = generateRequests(9);
topicRequests.addAll(generateRequests(1, 7, RequestOperationType.CLAIM));
when(handleDbRequests.getAllTopicRequests(
@@ -1375,8 +1342,6 @@ public void getClaimRequests_WhereTopicIsNotDeleted() {
envListIds.add("DEV");
stubUserInfo();
when(commonUtilsService.getTenantId(any())).thenReturn(101);
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
List topicRequests = generateRequests(9);
topicRequests.addAll(generateRequests(1, 7, RequestOperationType.CLAIM));
when(handleDbRequests.getAllTopicRequests(
@@ -1440,6 +1405,8 @@ public void approveTopicClaimRequests_withAssocSchema_success() throws KlawExcep
.thenReturn(new ResponseEntity<>(apiResponse, HttpStatus.OK));
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_TOPICS))
+ .thenReturn(false);
when(handleDbRequests.addToSynctopics(any()))
.thenReturn(
CRUDResponse.builder().resultStatus(ApiResultStatus.SUCCESS.value).build());
@@ -1472,6 +1439,8 @@ public void approveTopicClaimRequests_withAssocSchema_failure() throws KlawExcep
CRUDResponse.builder().resultStatus(ApiResultStatus.SUCCESS.value).build());
when(commonUtilsService.getTopicsForTopicName(anyString(), anyInt()))
.thenReturn(List.of(getTopic(topicName)));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_TOPICS))
+ .thenReturn(false);
when(clusterApiService.approveTopicRequests(
anyString(),
anyString(),
@@ -1512,8 +1481,6 @@ public void editTopicRequestFailureRequestNotOwned()
when(tenantConfig.get(anyInt())).thenReturn(tenantConfigModel);
when(tenantConfigModel.getBaseSyncEnvironment()).thenReturn("1");
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false);
when(manageDatabase.getKafkaEnvList(anyInt())).thenReturn(utilMethods.getEnvLists());
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
.thenReturn(Collections.singletonList("1"));
@@ -1773,10 +1740,9 @@ public void approvePromoteTopicRequests() throws KlawException {
TopicRequest topicRequest = getTopicRequest(TOPIC_1);
topicRequest.setRequestOperationType(RequestOperationType.CREATE.value);
- when(commonUtilsService.isNotAuthorizedUser("userDetails", PermissionType.APPROVE_TOPICS))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_TOPICS))
.thenReturn(false);
- when(commonUtilsService.isNotAuthorizedUser(
- "userDetails", PermissionType.APPROVE_TOPICS_CREATE))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.APPROVE_TOPICS_CREATE))
.thenReturn(true);
when(handleDbRequests.getTopicRequestsForTopic(anyInt(), anyInt())).thenReturn(topicRequest);
when(manageDatabase.getKwPropertyValue(KLAW_OPTIONAL_PERMISSION_NEW_TOPIC_CREATION_KEY, 0))
diff --git a/core/src/test/java/io/aiven/klaw/service/TopicSyncControllerServiceTest.java b/core/src/test/java/io/aiven/klaw/service/TopicSyncControllerServiceTest.java
index 916b51973..88b29b027 100644
--- a/core/src/test/java/io/aiven/klaw/service/TopicSyncControllerServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/TopicSyncControllerServiceTest.java
@@ -55,12 +55,8 @@
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
-import org.mockito.Mockito;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.util.ReflectionTestUtils;
@@ -124,7 +120,8 @@ public void setUp() throws Exception {
topicSyncControllerService, "clusterApiService", clusterApiService);
when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequests);
- loginMock();
+ when(commonUtilsService.getPrincipal()).thenReturn(userDetails);
+ when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
}
private void environmentSetUp() {
@@ -184,14 +181,6 @@ private void validatedEnvironmentSetUp(String repFactor, String maxPartitions) {
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
}
- private void loginMock() {
- Authentication authentication = Mockito.mock(Authentication.class);
- SecurityContext securityContext = Mockito.mock(SecurityContext.class);
- when(securityContext.getAuthentication()).thenReturn(authentication);
- when(authentication.getPrincipal()).thenReturn(userDetails);
- SecurityContextHolder.setContext(securityContext);
- }
-
@Test
@Order(1)
public void updateSyncTopicsSuccess() throws KlawException {
@@ -199,7 +188,7 @@ public void updateSyncTopicsSuccess() throws KlawException {
when(manageDatabase.getTenantConfig()).thenReturn(tenantConfig);
when(tenantConfig.get(anyInt())).thenReturn(tenantConfigModel);
when(tenantConfigModel.getBaseSyncEnvironment()).thenReturn("1");
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_TOPICS))
.thenReturn(false);
when(commonUtilsService.getEnvsFromUserId(anyString()))
.thenReturn(new HashSet<>(Collections.singletonList("1")));
@@ -221,7 +210,7 @@ public void updateSyncTopicsNoUpdate() throws KlawException {
when(manageDatabase.getTenantConfig()).thenReturn(tenantConfig);
when(tenantConfig.get(anyInt())).thenReturn(tenantConfigModel);
when(tenantConfigModel.getBaseSyncEnvironment()).thenReturn("1");
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_TOPICS))
.thenReturn(false);
when(manageDatabase.getTeamsAndAllowedEnvs(anyInt(), anyInt()))
.thenReturn(Collections.singletonList("1"));
@@ -262,6 +251,8 @@ public void getSyncTopics() throws Exception {
when(kwClusters.getClusterName()).thenReturn("cluster");
when(kwClusters.getClusterId()).thenReturn(1);
when(kwClusters.getKafkaFlavor()).thenReturn("");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_TOPICS))
+ .thenReturn(false);
SyncTopicsList topicRequests =
topicSyncControllerService.getSyncTopics(
@@ -297,6 +288,9 @@ public void approveTopicRequestAllTopicsWhereOneTopicIsAlreadyCreated() throws K
.resultStatus(ApiResultStatus.SUCCESS.value)
.entities(List.of(new Topic()))
.build());
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_BACK_TOPICS))
+ .thenReturn(false);
+
// execute
ApiResponse retval =
topicSyncControllerService.updateSyncBackTopics(
@@ -347,6 +341,8 @@ public void approveTopicRequestAllTopicsCreateAll() throws KlawException {
.build());
when(commonUtilsService.getTopicsForTopicName(anyString(), anyInt()))
.thenReturn(List.of(createTopic(1, TOPIC_NAME_1, env.getId())));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_BACK_TOPICS))
+ .thenReturn(false);
// execute
ApiResponse retval =
@@ -401,6 +397,8 @@ public void approveTopicRequestSelectedWhereOneTopicIsAlreadyCreated() throws Kl
.build());
when(commonUtilsService.getTopicsForTopicName(anyString(), anyInt()))
.thenReturn(List.of(createTopic(1, TOPIC_NAME_1, env.getId())));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_BACK_TOPICS))
+ .thenReturn(false);
ApiResponse retval =
topicSyncControllerService.updateSyncBackTopics(
@@ -452,6 +450,8 @@ public void approveTopicRequestSelectedCreateAll() throws KlawException {
.build());
when(commonUtilsService.getTopicsForTopicName(anyString(), anyInt()))
.thenReturn(List.of(createTopic(1, TOPIC_NAME_1, env.getId())));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_BACK_TOPICS))
+ .thenReturn(false);
ApiResponse retval =
topicSyncControllerService.updateSyncBackTopics(
@@ -505,6 +505,8 @@ public void approveTopicRequestSelectedUnexpectedExceptionFromClusterApi() throw
.build());
when(commonUtilsService.getTopicsForTopicName(anyString(), anyInt()))
.thenReturn(List.of(createTopic(1, TOPIC_NAME_1, env.getId())));
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_BACK_TOPICS))
+ .thenReturn(false);
ApiResponse retval =
topicSyncControllerService.updateSyncBackTopics(
@@ -551,6 +553,8 @@ public void getSyncList_noValidationSet_base() throws Exception {
// from the DB
when(handleDbRequests.getSyncTopics(eq("1"), eq(null), eq(101))).thenReturn(topics);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_TOPICS))
+ .thenReturn(false);
SyncTopicsList syncTopics =
topicSyncControllerService.getSyncTopics(
@@ -587,6 +591,8 @@ public void getReconSyncList_noValidationSet_base() throws Exception {
// from the DB
when(handleDbRequests.getSyncTopics(eq("1"), eq(null), eq(101))).thenReturn(topics);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_TOPICS))
+ .thenReturn(false);
SyncTopicsList syncTopics =
topicSyncControllerService.getReconTopics(
@@ -619,6 +625,8 @@ public void getSyncList_noValidationSet_TwoNotSynchronized() throws Exception {
// from the DB
when(handleDbRequests.getSyncTopics(eq("1"), eq(null), eq(101))).thenReturn(topics);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_TOPICS))
+ .thenReturn(false);
SyncTopicsList syncTopics =
topicSyncControllerService.getSyncTopics(
@@ -656,6 +664,8 @@ public void getReconSyncList_noValidationSet_FiveNotSynched() throws Exception {
// from the DB
when(handleDbRequests.getSyncTopics(eq("1"), eq(null), eq(101))).thenReturn(topics);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_TOPICS))
+ .thenReturn(false);
SyncTopicsList syncTopics =
topicSyncControllerService.getReconTopics(
@@ -692,6 +702,8 @@ public void getSyncList_noValidationSet_ThreeDeletedFromCluster_allTopics() thro
// from the DB
when(handleDbRequests.getSyncTopics(eq("1"), eq(null), eq(101))).thenReturn(topics);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_TOPICS))
+ .thenReturn(false);
SyncTopicsList syncTopics =
topicSyncControllerService.getSyncTopics(
@@ -729,6 +741,8 @@ public void getReconSyncList_noValidationSet_FourDeletedFromCluster() throws Exc
// from the DB
when(handleDbRequests.getSyncTopics(eq("1"), eq(null), eq(101))).thenReturn(topics);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_TOPICS))
+ .thenReturn(false);
SyncTopicsList syncTopics =
topicSyncControllerService.getReconTopics(
@@ -765,6 +779,8 @@ public void getSyncList_noValidationSet_ThreeDeletedFromCluster() throws Excepti
// from the DB
when(handleDbRequests.getSyncTopics(eq("1"), eq(null), eq(101))).thenReturn(topics);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_TOPICS))
+ .thenReturn(false);
SyncTopicsList syncTopics =
topicSyncControllerService.getSyncTopics(
@@ -833,6 +849,8 @@ public void getSyncList_ValidationOn(
// from the DB
when(handleDbRequests.getSyncTopics(eq("1"), eq(null), eq(101))).thenReturn(topics);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_TOPICS))
+ .thenReturn(false);
Integer tenantId = 101;
SyncTopicsList syncTopics =
@@ -911,6 +929,8 @@ public void getReconSyncList_ValidationOn(
// from the DB
when(handleDbRequests.getSyncTopics(eq("1"), eq(null), eq(101))).thenReturn(topics);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_TOPICS))
+ .thenReturn(false);
SyncTopicsList syncTopics =
topicSyncControllerService.getReconTopics(
@@ -988,6 +1008,8 @@ public void getSyncList_ValidationOn_AllTopics(
// from the DB
when(handleDbRequests.getSyncTopics(eq("1"), eq(null), eq(101))).thenReturn(topics);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_TOPICS))
+ .thenReturn(false);
SyncTopicsList syncTopics =
topicSyncControllerService.getSyncTopics(
@@ -1067,6 +1089,8 @@ public void getSyncList_FailedValidationOn_ReplicationAndPartitions(
// from the DB
when(handleDbRequests.getSyncTopics(eq("1"), eq(null), eq(101))).thenReturn(topics);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_TOPICS))
+ .thenReturn(false);
SyncTopicsList syncTopics =
topicSyncControllerService.getSyncTopics(
@@ -1116,6 +1140,8 @@ public void getSyncList_FailedValidationOn_ReplicationAndPartitionsAreNull() thr
// from the DB
when(handleDbRequests.getSyncTopics(eq("1"), eq(null), eq(101))).thenReturn(topics);
when(manageDatabase.getTeamNameFromTeamId(eq(101), eq(10))).thenReturn("Team1");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.SYNC_TOPICS))
+ .thenReturn(false);
SyncTopicsList syncTopics =
topicSyncControllerService.getSyncTopics(
@@ -1202,7 +1228,7 @@ private List getAvailableTeams() {
private void stubUserInfo() {
when(handleDbRequests.getUsersInfo(anyString())).thenReturn(userInfo);
when(userInfo.getTeamId()).thenReturn(101);
- when(mailService.getUserName(any())).thenReturn(USERNAME);
+ when(mailService.getUserName(userDetails)).thenReturn(USERNAME);
when(commonUtilsService.getTenantId(eq(USERNAME))).thenReturn(TENANT_ID);
when(handleDbRequests.getAllTeams(eq(101))).thenReturn(getAvailableTeams());
/// added
diff --git a/core/src/test/java/io/aiven/klaw/service/UiConfigControllerServiceTest.java b/core/src/test/java/io/aiven/klaw/service/UiConfigControllerServiceTest.java
index e164161d5..325d2d2bc 100644
--- a/core/src/test/java/io/aiven/klaw/service/UiConfigControllerServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/UiConfigControllerServiceTest.java
@@ -25,10 +25,6 @@
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -81,15 +77,7 @@ public void setUp() throws Exception {
ReflectionTestUtils.setField(
envsClustersTenantsControllerService, "commonUtilsService", commonUtilsService);
when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequests);
- loginMock();
- }
-
- private void loginMock() {
- Authentication authentication = Mockito.mock(Authentication.class);
- SecurityContext securityContext = Mockito.mock(SecurityContext.class);
- when(securityContext.getAuthentication()).thenReturn(authentication);
- when(authentication.getPrincipal()).thenReturn(userDetails);
- SecurityContextHolder.setContext(securityContext);
+ when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
}
@Test
@@ -99,7 +87,7 @@ public void getEnvs1() {
stubUserInfo();
when(commonUtilsService.getEnvProperty(anyInt(), anyString())).thenReturn("1");
when(manageDatabase.getKafkaEnvList(anyInt())).thenReturn(getAllEnvs());
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
.thenReturn(false);
when(manageDatabase.getTenantMap()).thenReturn(tenantMap);
when(tenantMap.get(anyInt())).thenReturn("1");
@@ -117,7 +105,7 @@ public void getEnvs1() {
@Order(4)
public void getSchemaRegEnvs() {
stubUserInfo();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS))
.thenReturn(false);
when(handleDbRequests.getAllSchemaRegEnvs(1)).thenReturn(getAllSchemaEnvs());
diff --git a/core/src/test/java/io/aiven/klaw/service/UsersTeamsControllerServiceTest.java b/core/src/test/java/io/aiven/klaw/service/UsersTeamsControllerServiceTest.java
index 487a20e96..1b2705310 100644
--- a/core/src/test/java/io/aiven/klaw/service/UsersTeamsControllerServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/UsersTeamsControllerServiceTest.java
@@ -75,11 +75,7 @@
import org.junit.platform.commons.util.StringUtils;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
@@ -138,7 +134,8 @@ public void setUp() {
usersTeamsControllerService, "encryptorSecretKey", ENCRYPTOR_SECRET_KEY);
when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequests);
userInfo = utilMethods.getUserInfoMockDao();
- loginMock();
+ when(commonUtilsService.getPrincipal()).thenReturn(userDetails);
+ when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
}
@Test
@@ -178,19 +175,19 @@ public void updateProfileFailureDbUpdate() {
@Test
public void updateUserNotAuthorized() throws KlawException {
UserInfoModel userInfoModel = utilMethods.getUserInfoMock();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
ApiResponse apiResponse = usersTeamsControllerService.updateUser(userInfoModel);
assertThat(apiResponse.getMessage()).isEqualTo(ApiResultStatus.NOT_AUTHORIZED.value);
}
@Test
public void updateUserNotAuthorizedToUpdateSuperAdmin() throws KlawException {
+ final String userName = "testUser";
UserInfoModel userInfoModel = utilMethods.getUserInfoMock();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userName, PermissionType.ADD_EDIT_DELETE_USERS))
.thenReturn(false);
when(handleDbRequests.getUsersInfo(anyString())).thenReturn(userInfo);
when(commonUtilsService.getTenantId(anyString())).thenReturn(101);
- when(mailService.getUserName(any())).thenReturn("testuser");
+ when(mailService.getUserName(userDetails)).thenReturn(userName);
when(manageDatabase.getRolesPermissionsPerTenant(anyInt()))
.thenReturn(utilMethods.getRolesPermsMapForSuperuser());
ApiResponse apiResponse = usersTeamsControllerService.updateUser(userInfoModel);
@@ -643,11 +640,12 @@ public void deleteTeamFailureDbException() {
@Test
public void deleteUserFailureHasRequests() throws KlawException {
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ String userName = "testuser";
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_USERS))
.thenReturn(false);
when(handleDbRequests.getUsersInfo(anyString())).thenReturn(userInfo);
when(commonUtilsService.getTenantId(anyString())).thenReturn(TEST_TENANT_ID);
- when(mailService.getUserName(any())).thenReturn("testuser");
+ when(mailService.getUserName(userDetails)).thenReturn(userName);
when(manageDatabase.getRolesPermissionsPerTenant(anyInt())).thenReturn(new HashMap<>());
when(handleDbRequests.existsComponentsCountForUser("testuser", TEST_TENANT_ID))
.thenReturn(true);
@@ -659,7 +657,10 @@ public void deleteUserFailureHasRequests() throws KlawException {
@Test
public void deleteUserFailureisAdmin() throws KlawException {
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_USERS))
+ .thenReturn(false);
+ when(commonUtilsService.isNotAuthorizedUser(
+ userDetails, PermissionType.FULL_ACCESS_USERS_TEAMS_ROLES))
.thenReturn(false);
when(handleDbRequests.getUsersInfo(anyString())).thenReturn(userInfo);
when(commonUtilsService.getTenantId(anyString())).thenReturn(TEST_TENANT_ID);
@@ -673,7 +674,7 @@ public void deleteUserFailureisAdmin() throws KlawException {
@Test
public void deleteUserSuccessNormalUser() throws KlawException {
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_USERS))
.thenReturn(false);
when(handleDbRequests.getUsersInfo(anyString())).thenReturn(userInfo);
when(commonUtilsService.getTenantId(anyString())).thenReturn(TEST_TENANT_ID);
@@ -687,8 +688,8 @@ public void deleteUserSuccessNormalUser() throws KlawException {
@Test
public void deleteUserFailureNoSuperUserPermission() throws KlawException {
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class)))
- .thenReturn(false, true);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_USERS))
+ .thenReturn(false);
when(handleDbRequests.getUsersInfo(anyString())).thenReturn(userInfo);
when(commonUtilsService.getTenantId(anyString())).thenReturn(TEST_TENANT_ID);
when(mailService.getUserName(any())).thenReturn("testuser");
@@ -700,7 +701,6 @@ public void deleteUserFailureNoSuperUserPermission() throws KlawException {
@Test
public void deleteUserFailureNoDeletionPermission() throws KlawException {
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
when(handleDbRequests.getUsersInfo(anyString())).thenReturn(userInfo);
when(commonUtilsService.getTenantId(anyString())).thenReturn(TEST_TENANT_ID);
when(mailService.getUserName(any())).thenReturn("testuser");
@@ -805,8 +805,6 @@ public void addNewTeamFailureWithExistingTeamName() throws KlawException {
public void addNewTeamFailureWithUnAuthorizedUser() throws KlawException {
TeamModel teamModel = utilMethods.getTeamModelMock();
- when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
-
ApiResponse apiResponse = usersTeamsControllerService.addNewTeam(teamModel, true);
assertThat(apiResponse).isSameAs(ApiResponse.NOT_AUTHORIZED);
}
@@ -832,8 +830,6 @@ public void updateTeamSuccessWhenNoEnvList() throws KlawException {
@Test
public void updateTeamWhenUnAuthorizedUser() throws KlawException {
- when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_TEAMS))
- .thenReturn(true);
TeamModel teamModel = utilMethods.getTeamModelMock();
ApiResponse apiResponse = usersTeamsControllerService.updateTeam(teamModel);
@@ -1366,6 +1362,8 @@ public void getNewUserRequestsSuccess(int count) throws KlawNotAuthorizedExcepti
when(mailService.getUserName(userDetails)).thenReturn(TEST_AUTHENTICATED_USER_UNAME);
when(commonUtilsService.getTenantId(TEST_AUTHENTICATED_USER_UNAME))
.thenReturn(authenticatedUserTenantId);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_USERS))
+ .thenReturn(false);
when(handleDbRequests.getAllRegisterUsersInformation()).thenReturn(regUserList);
when(manageDatabase.getTenantMap()).thenReturn(tenantMapMock);
@@ -1397,6 +1395,8 @@ public static Stream getNewUserRequestsSuccess() {
@Test
public void getNewUserRequestsWithNoRequestsInDBNullPointerException() {
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_USERS))
+ .thenReturn(false);
when(mailService.getUserName(userDetails)).thenReturn(TEST_AUTHENTICATED_USER_UNAME);
when(commonUtilsService.getTenantId(TEST_AUTHENTICATED_USER_UNAME)).thenReturn(TEST_TENANT_ID);
when(handleDbRequests.getAllRegisterUsersInformation()).thenReturn(null);
@@ -1410,9 +1410,6 @@ public void getNewUserRequestsWithNoRequestsInDBNullPointerException() {
@Test
public void getNewUserRequestsWithUnAuthorizedUser() {
- when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_USERS))
- .thenReturn(true);
-
assertThatExceptionOfType(KlawNotAuthorizedException.class)
.isThrownBy(() -> usersTeamsControllerService.getNewUserRequests())
.withMessage("You are not authorized to view this information.");
@@ -1513,9 +1510,6 @@ public void approveNewUserRequestsFailureWithLDAPAuth() {
@Test
public void approveNewUserRequestsFailureWithUnAuthorizedUser() throws KlawException {
- when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_USERS))
- .thenReturn(true);
-
ApiResponse response =
usersTeamsControllerService.approveNewUserRequests(
testNewRegUser.getUsername(), true, Integer.MIN_VALUE, null);
@@ -1641,8 +1635,6 @@ public void declineNewUserRequestsDBFailure() {
@Test
public void declineNewUserRequestsAuthenticationFailure() throws KlawException {
when(mailService.getUserName(userDetails)).thenReturn(TEST_AUTHENTICATED_USER_UNAME);
- when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_USERS))
- .thenReturn(true);
ApiResponse response = usersTeamsControllerService.declineNewUserRequests(TEST_NEW_USER_UNAME);
@@ -1682,14 +1674,6 @@ public void getRegistrationInfoFromIdNoRegistrationInfo() {
assertThat(response).isNull();
}
- private void loginMock() {
- Authentication authentication = Mockito.mock(Authentication.class);
- SecurityContext securityContext = Mockito.mock(SecurityContext.class);
- when(securityContext.getAuthentication()).thenReturn(authentication);
- when(authentication.getPrincipal()).thenReturn(userDetails);
- SecurityContextHolder.setContext(securityContext);
- }
-
public UserDetails userDetails(String username, String password) {
return new UserDetails() {
@@ -1824,6 +1808,8 @@ private void addTwoDefaultTeamsVerifyCapturedTeams(
private void addNewTeamSetupTest(String userName, String existingTeamName) {
when(mailService.getUserName(any())).thenReturn(userName);
when(commonUtilsService.getTenantId(anyString())).thenReturn(TEST_TENANT_ID);
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_TEAMS))
+ .thenReturn(false);
when(manageDatabase.getTeamNamesForTenant(TEST_TENANT_ID))
.thenReturn(List.of(existingTeamName));
}
diff --git a/core/src/test/java/io/aiven/klaw/service/UtilControllerServiceTest.java b/core/src/test/java/io/aiven/klaw/service/UtilControllerServiceTest.java
index 343959ba1..06bd0c7f3 100644
--- a/core/src/test/java/io/aiven/klaw/service/UtilControllerServiceTest.java
+++ b/core/src/test/java/io/aiven/klaw/service/UtilControllerServiceTest.java
@@ -11,6 +11,7 @@
import io.aiven.klaw.helpers.db.rdbms.HandleDbRequestsJdbc;
import io.aiven.klaw.model.ApiResponse;
import io.aiven.klaw.model.enums.ApiResultStatus;
+import io.aiven.klaw.model.enums.PermissionType;
import io.aiven.klaw.model.requests.ResetEntityCache;
import java.util.Collection;
import org.junit.jupiter.api.BeforeEach;
@@ -19,11 +20,7 @@
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.util.ReflectionTestUtils;
@@ -49,7 +46,8 @@ void setUp() {
ReflectionTestUtils.setField(utilControllerService, "mailService", mailService);
userInfo = utilMethods.getUserInfoMockDao();
when(manageDatabase.getHandleDbRequests()).thenReturn(handleDbRequests);
- loginMock();
+ when(commonUtilsService.getPrincipal()).thenReturn(userDetails);
+ when(commonUtilsService.isNotAuthorizedUser(any(), any(PermissionType.class))).thenReturn(true);
}
@Test
@@ -57,6 +55,8 @@ public void resetCache() {
ResetEntityCache resetEntityCache = utilMethods.getResetEntityCache();
when(handleDbRequests.getUsersInfo(anyString())).thenReturn(userInfo);
when(mailService.getUserName(any())).thenReturn("anonymousUser");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_USERS))
+ .thenReturn(false);
ApiResponse apiResponse = utilControllerService.resetCache(resetEntityCache);
assertThat(apiResponse.getMessage()).isEqualTo(ApiResultStatus.SUCCESS.value);
}
@@ -66,18 +66,12 @@ public void resetCacheNotAuthorized() {
ResetEntityCache resetEntityCache = utilMethods.getResetEntityCache();
when(handleDbRequests.getUsersInfo(anyString())).thenReturn(userInfo);
when(mailService.getUserName(any())).thenReturn("testuser");
+ when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_USERS))
+ .thenReturn(false);
ApiResponse apiResponse = utilControllerService.resetCache(resetEntityCache);
assertThat(apiResponse.getMessage()).isEqualTo(ApiResultStatus.SUCCESS.value);
}
- private void loginMock() {
- Authentication authentication = Mockito.mock(Authentication.class);
- SecurityContext securityContext = Mockito.mock(SecurityContext.class);
- when(securityContext.getAuthentication()).thenReturn(authentication);
- when(authentication.getPrincipal()).thenReturn(userDetails);
- SecurityContextHolder.setContext(securityContext);
- }
-
public UserDetails userDetails(String username, String password) {
return new UserDetails() {
diff --git a/pom.xml b/pom.xml
index 7989ca796..fba83ac13 100644
--- a/pom.xml
+++ b/pom.xml
@@ -52,7 +52,7 @@
3.26.3
3.1.0
1.17.0
- 33.3.0-jre
+ 33.3.1-jre
5.3.1
0.8.12
0.12.6