@scality/data-browser-library 1.0.0-preview.8 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/dist/components/DataBrowserUI.d.ts +12 -0
  2. package/dist/components/DataBrowserUI.js +99 -0
  3. package/dist/components/Editor.d.ts +1 -1
  4. package/dist/components/Editor.js +3 -3
  5. package/dist/components/__tests__/BucketAccessor.test.js +214 -0
  6. package/dist/components/__tests__/BucketCorsPage.test.d.ts +1 -0
  7. package/dist/components/__tests__/BucketCorsPage.test.js +263 -0
  8. package/dist/components/__tests__/BucketCreate.test.d.ts +1 -0
  9. package/dist/components/__tests__/BucketCreate.test.js +574 -0
  10. package/dist/components/__tests__/BucketDetails.test.d.ts +1 -0
  11. package/dist/components/__tests__/BucketDetails.test.js +421 -0
  12. package/dist/components/__tests__/BucketLifecycleFormPage.test.d.ts +14 -0
  13. package/dist/components/__tests__/BucketLifecycleFormPage.test.js +618 -0
  14. package/dist/components/__tests__/BucketLifecycleList.test.d.ts +1 -0
  15. package/dist/components/__tests__/BucketLifecycleList.test.js +325 -0
  16. package/dist/components/__tests__/BucketList.test.js +495 -81
  17. package/dist/components/__tests__/BucketNotificationFormPage.test.d.ts +1 -0
  18. package/dist/components/__tests__/BucketNotificationFormPage.test.js +348 -0
  19. package/dist/components/__tests__/BucketNotificationList.test.d.ts +1 -0
  20. package/dist/components/__tests__/BucketNotificationList.test.js +379 -0
  21. package/dist/components/__tests__/BucketOverview.test.js +484 -179
  22. package/dist/components/__tests__/BucketPolicyPage.test.js +151 -99
  23. package/dist/components/__tests__/BucketReplicationFormPage.test.d.ts +16 -0
  24. package/dist/components/__tests__/BucketReplicationFormPage.test.js +1757 -0
  25. package/dist/components/__tests__/BucketReplicationList.test.d.ts +1 -0
  26. package/dist/components/__tests__/BucketReplicationList.test.js +344 -0
  27. package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
  28. package/dist/components/__tests__/DeleteBucketButton.test.js +64 -64
  29. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.d.ts +1 -0
  30. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +196 -0
  31. package/dist/components/__tests__/DeleteObjectButton.test.js +64 -64
  32. package/dist/components/__tests__/EmptyBucketButton.test.d.ts +1 -0
  33. package/dist/components/__tests__/EmptyBucketButton.test.js +302 -0
  34. package/dist/components/__tests__/MetadataSearch.test.js +65 -65
  35. package/dist/components/__tests__/ObjectList.test.js +741 -240
  36. package/dist/components/__tests__/UploadButton.test.js +45 -45
  37. package/dist/components/breadcrumb/Breadcrumb.d.ts +6 -0
  38. package/dist/components/breadcrumb/Breadcrumb.js +37 -0
  39. package/dist/components/breadcrumb/DataBrowserBreadcrumb.d.ts +1 -0
  40. package/dist/components/breadcrumb/DataBrowserBreadcrumb.js +10 -0
  41. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.d.ts +1 -0
  42. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.js +196 -0
  43. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.d.ts +1 -0
  44. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.js +153 -0
  45. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.d.ts +1 -0
  46. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.js +134 -0
  47. package/dist/components/breadcrumb/index.d.ts +8 -0
  48. package/dist/components/breadcrumb/index.js +4 -0
  49. package/dist/components/breadcrumb/useBreadcrumbPaths.d.ts +2 -0
  50. package/dist/components/breadcrumb/useBreadcrumbPaths.js +82 -0
  51. package/dist/components/buckets/BucketAccessor.d.ts +2 -0
  52. package/dist/components/buckets/BucketAccessor.js +125 -0
  53. package/dist/components/buckets/BucketConfigEditButton.d.ts +8 -0
  54. package/dist/components/buckets/{BucketPolicyButton.js → BucketConfigEditButton.js} +9 -5
  55. package/dist/components/buckets/BucketCorsPage.d.ts +1 -0
  56. package/dist/components/buckets/BucketCorsPage.js +234 -0
  57. package/dist/components/buckets/BucketCreate.d.ts +50 -0
  58. package/dist/components/buckets/BucketCreate.js +279 -0
  59. package/dist/components/buckets/BucketDetails.d.ts +42 -0
  60. package/dist/components/buckets/BucketDetails.js +256 -40
  61. package/dist/components/buckets/BucketLifecycleFormPage.d.ts +15 -0
  62. package/dist/components/buckets/BucketLifecycleFormPage.js +1086 -0
  63. package/dist/components/buckets/BucketLifecycleList.d.ts +10 -0
  64. package/dist/components/buckets/BucketLifecycleList.js +270 -0
  65. package/dist/components/buckets/BucketList.d.ts +6 -4
  66. package/dist/components/buckets/BucketList.js +161 -94
  67. package/dist/components/buckets/BucketLocation.js +4 -4
  68. package/dist/components/buckets/BucketOverview.d.ts +86 -5
  69. package/dist/components/buckets/BucketOverview.js +481 -192
  70. package/dist/components/buckets/BucketPage.js +44 -22
  71. package/dist/components/buckets/BucketPolicyPage.js +155 -127
  72. package/dist/components/buckets/BucketReplicationFormPage.d.ts +1 -0
  73. package/dist/components/buckets/BucketReplicationFormPage.js +835 -0
  74. package/dist/components/buckets/BucketReplicationList.d.ts +11 -0
  75. package/dist/components/buckets/BucketReplicationList.js +189 -0
  76. package/dist/components/buckets/BucketVersioning.d.ts +4 -0
  77. package/dist/components/buckets/BucketVersioning.js +76 -0
  78. package/dist/components/buckets/DeleteBucketButton.js +8 -8
  79. package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +18 -0
  80. package/dist/components/buckets/DeleteBucketConfigRuleButton.js +53 -0
  81. package/dist/components/buckets/EmptyBucketButton.d.ts +5 -0
  82. package/dist/components/buckets/EmptyBucketButton.js +232 -0
  83. package/dist/components/buckets/EmptyBucketSummary.d.ts +9 -0
  84. package/dist/components/buckets/EmptyBucketSummary.js +60 -0
  85. package/dist/components/buckets/EmptyBucketSummaryList.d.ts +13 -0
  86. package/dist/components/buckets/EmptyBucketSummaryList.js +140 -0
  87. package/dist/components/buckets/__tests__/BucketVersioning.test.d.ts +1 -0
  88. package/dist/components/buckets/__tests__/BucketVersioning.test.js +163 -0
  89. package/dist/components/buckets/notifications/BucketNotificationFormPage.d.ts +1 -0
  90. package/dist/components/buckets/notifications/BucketNotificationFormPage.js +316 -0
  91. package/dist/components/buckets/notifications/BucketNotificationList.d.ts +10 -0
  92. package/dist/components/buckets/notifications/BucketNotificationList.js +267 -0
  93. package/dist/components/buckets/notifications/EventsSection.js +145 -29
  94. package/dist/components/buckets/notifications/__tests__/events.test.d.ts +1 -0
  95. package/dist/components/buckets/notifications/__tests__/events.test.js +56 -0
  96. package/dist/components/buckets/notifications/events.d.ts +71 -7
  97. package/dist/components/buckets/notifications/events.js +98 -16
  98. package/dist/components/index.d.ts +27 -13
  99. package/dist/components/index.js +20 -6
  100. package/dist/components/layouts/ArrowNavigation.d.ts +3 -0
  101. package/dist/components/layouts/ArrowNavigation.js +28 -0
  102. package/dist/components/layouts/BrowserPageLayout.d.ts +5 -1
  103. package/dist/components/layouts/BrowserPageLayout.js +10 -5
  104. package/dist/components/objects/CreateFolderButton.d.ts +2 -2
  105. package/dist/components/objects/CreateFolderButton.js +12 -12
  106. package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
  107. package/dist/components/objects/DeleteObjectButton.js +19 -21
  108. package/dist/components/objects/GetPresignedUrlButton.d.ts +7 -0
  109. package/dist/components/objects/GetPresignedUrlButton.js +255 -0
  110. package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +2 -2
  111. package/dist/components/objects/ObjectDetails/ObjectMetadata.js +263 -230
  112. package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +2 -2
  113. package/dist/components/objects/ObjectDetails/ObjectSummary.js +540 -138
  114. package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +2 -2
  115. package/dist/components/objects/ObjectDetails/ObjectTags.js +95 -123
  116. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.d.ts +1 -0
  117. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +516 -0
  118. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.d.ts +1 -0
  119. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +1064 -0
  120. package/dist/components/objects/ObjectDetails/index.d.ts +18 -2
  121. package/dist/components/objects/ObjectDetails/index.js +152 -40
  122. package/dist/components/objects/ObjectList.d.ts +12 -10
  123. package/dist/components/objects/ObjectList.js +590 -263
  124. package/dist/components/objects/ObjectLock/EditRetentionButton.d.ts +4 -0
  125. package/dist/components/objects/ObjectLock/EditRetentionButton.js +32 -0
  126. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.d.ts +3 -0
  127. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +211 -0
  128. package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +9 -0
  129. package/dist/components/objects/ObjectLock/ObjectLockSettings.js +159 -0
  130. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +8 -0
  131. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +39 -0
  132. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.d.ts +1 -0
  133. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +204 -0
  134. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.d.ts +1 -0
  135. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +374 -0
  136. package/dist/components/objects/ObjectPage.js +12 -8
  137. package/dist/components/objects/UploadButton.d.ts +3 -3
  138. package/dist/components/objects/UploadButton.js +10 -10
  139. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.d.ts +1 -0
  140. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.js +531 -0
  141. package/dist/components/providers/DataBrowserProvider.d.ts +23 -12
  142. package/dist/components/providers/DataBrowserProvider.js +60 -38
  143. package/dist/components/providers/QueryProvider.d.ts +9 -0
  144. package/dist/components/providers/QueryProvider.js +21 -0
  145. package/dist/components/search/MetadataSearch.js +29 -28
  146. package/dist/components/search/SearchHints.js +1 -1
  147. package/dist/components/ui/ArrayFieldActions.d.ts +36 -0
  148. package/dist/components/ui/ArrayFieldActions.js +43 -0
  149. package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +16 -0
  150. package/dist/components/ui/ConfirmDeleteRuleModal.js +48 -0
  151. package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
  152. package/dist/components/ui/DeleteObjectModalContent.js +12 -12
  153. package/dist/components/ui/FilterFormSection.d.ts +44 -0
  154. package/dist/components/ui/FilterFormSection.js +159 -0
  155. package/dist/components/ui/Search.elements.d.ts +2 -2
  156. package/dist/components/ui/Search.elements.js +7 -7
  157. package/dist/components/ui/Table.elements.d.ts +2 -1
  158. package/dist/components/ui/Table.elements.js +18 -12
  159. package/dist/config/__tests__/factory.test.d.ts +1 -0
  160. package/dist/config/__tests__/factory.test.js +311 -0
  161. package/dist/config/factory.d.ts +14 -49
  162. package/dist/config/factory.js +23 -68
  163. package/dist/config/types.d.ts +212 -34
  164. package/dist/contexts/DataBrowserUICustomizationContext.d.ts +27 -0
  165. package/dist/contexts/DataBrowserUICustomizationContext.js +13 -0
  166. package/dist/hooks/__tests__/useAccessibleBuckets.test.d.ts +1 -0
  167. package/dist/hooks/__tests__/useAccessibleBuckets.test.js +145 -0
  168. package/dist/hooks/__tests__/useISVBucketDetection.test.d.ts +1 -0
  169. package/dist/hooks/__tests__/useISVBucketDetection.test.js +188 -0
  170. package/dist/hooks/__tests__/useIsBucketEmpty.test.js +27 -27
  171. package/dist/hooks/__tests__/useLoginMutation.test.d.ts +1 -0
  172. package/dist/hooks/__tests__/useLoginMutation.test.js +194 -0
  173. package/dist/hooks/bucketConfiguration.d.ts +8 -1
  174. package/dist/hooks/bucketConfiguration.js +52 -51
  175. package/dist/hooks/bucketOperations.d.ts +10 -1
  176. package/dist/hooks/bucketOperations.js +10 -9
  177. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +80 -80
  178. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +80 -80
  179. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +44 -44
  180. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +63 -63
  181. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +95 -52
  182. package/dist/hooks/factories/index.d.ts +4 -4
  183. package/dist/hooks/factories/index.js +2 -2
  184. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
  185. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +16 -13
  186. package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
  187. package/dist/hooks/factories/useCreateS3LoginHook.js +1 -1
  188. package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
  189. package/dist/hooks/factories/useCreateS3MutationHook.js +7 -2
  190. package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
  191. package/dist/hooks/factories/useCreateS3QueryHook.js +29 -3
  192. package/dist/hooks/index.d.ts +19 -8
  193. package/dist/hooks/index.js +16 -5
  194. package/dist/hooks/loginOperations.d.ts +1 -1
  195. package/dist/hooks/loginOperations.js +1 -1
  196. package/dist/hooks/objectOperations.d.ts +2 -2
  197. package/dist/hooks/objectOperations.js +50 -49
  198. package/dist/hooks/presignedOperations.d.ts +4 -4
  199. package/dist/hooks/presignedOperations.js +5 -5
  200. package/dist/hooks/useAccessibleBuckets.d.ts +11 -0
  201. package/dist/hooks/useAccessibleBuckets.js +115 -0
  202. package/dist/hooks/useBatchObjectLegalHold.d.ts +11 -0
  203. package/dist/hooks/useBatchObjectLegalHold.js +48 -0
  204. package/dist/hooks/useBucketConfigEditor.d.ts +31 -0
  205. package/dist/hooks/useBucketConfigEditor.js +82 -0
  206. package/dist/hooks/useDataBrowserNavigate.d.ts +28 -0
  207. package/dist/hooks/useDataBrowserNavigate.js +24 -0
  208. package/dist/hooks/useDeleteBucketConfigRule.d.ts +26 -0
  209. package/dist/hooks/useDeleteBucketConfigRule.js +46 -0
  210. package/dist/hooks/useEmptyBucket.d.ts +27 -0
  211. package/dist/hooks/useEmptyBucket.js +116 -0
  212. package/dist/hooks/useFeatures.d.ts +7 -0
  213. package/dist/hooks/useFeatures.js +8 -0
  214. package/dist/hooks/useISVBucketDetection.d.ts +15 -0
  215. package/dist/hooks/useISVBucketDetection.js +27 -0
  216. package/dist/hooks/useIsBucketEmpty.js +4 -4
  217. package/dist/hooks/useLimitedAccessFlow.d.ts +48 -0
  218. package/dist/hooks/useLimitedAccessFlow.js +23 -0
  219. package/dist/hooks/useS3Client.d.ts +6 -0
  220. package/dist/hooks/useS3Client.js +3 -2
  221. package/dist/hooks/useS3ConfigSwitch.d.ts +11 -0
  222. package/dist/hooks/useS3ConfigSwitch.js +37 -0
  223. package/dist/hooks/useSupportedNotificationEvents.d.ts +6 -0
  224. package/dist/hooks/useSupportedNotificationEvents.js +8 -0
  225. package/dist/hooks/useTableRowSelection.d.ts +9 -0
  226. package/dist/hooks/useTableRowSelection.js +45 -0
  227. package/dist/index.d.ts +6 -6
  228. package/dist/index.js +2 -2
  229. package/dist/schemas/bucketPolicySchema.json +3 -13
  230. package/dist/test/msw/handlers/deleteBucket.d.ts +1 -1
  231. package/dist/test/msw/handlers/deleteBucket.js +20 -10
  232. package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -1
  233. package/dist/test/msw/handlers/getBucketAcl.js +29 -17
  234. package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -1
  235. package/dist/test/msw/handlers/getBucketLocation.js +29 -15
  236. package/dist/test/msw/handlers/getBucketPolicy.d.ts +1 -1
  237. package/dist/test/msw/handlers/getBucketPolicy.js +52 -32
  238. package/dist/test/msw/handlers/headObject.d.ts +1 -1
  239. package/dist/test/msw/handlers/headObject.js +31 -13
  240. package/dist/test/msw/handlers/listBuckets.d.ts +1 -1
  241. package/dist/test/msw/handlers/listBuckets.js +5 -3
  242. package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -1
  243. package/dist/test/msw/handlers/listObjectVersions.js +38 -26
  244. package/dist/test/msw/handlers/listObjects.d.ts +1 -1
  245. package/dist/test/msw/handlers/listObjects.js +35 -23
  246. package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -1
  247. package/dist/test/msw/handlers/objectLegalHold.js +32 -17
  248. package/dist/test/msw/handlers/objectRetention.d.ts +1 -1
  249. package/dist/test/msw/handlers/objectRetention.js +31 -17
  250. package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -1
  251. package/dist/test/msw/handlers/putBucketAcl.js +29 -14
  252. package/dist/test/msw/handlers/putObject.d.ts +1 -1
  253. package/dist/test/msw/handlers/putObject.js +27 -12
  254. package/dist/test/msw/handlers.d.ts +3 -3
  255. package/dist/test/msw/handlers.js +77 -54
  256. package/dist/test/msw/index.d.ts +2 -2
  257. package/dist/test/msw/index.js +1 -1
  258. package/dist/test/msw/server.d.ts +1 -1
  259. package/dist/test/msw/server.js +1 -1
  260. package/dist/test/msw/utils.js +2 -2
  261. package/dist/test/setup.d.ts +1 -1
  262. package/dist/test/setup.js +13 -30
  263. package/dist/test/testUtils.d.ts +170 -36
  264. package/dist/test/testUtils.js +229 -116
  265. package/dist/test/utils/errorHandling.test.js +146 -108
  266. package/dist/types/index.d.ts +49 -36
  267. package/dist/types/monaco.d.ts +13 -0
  268. package/dist/types/monaco.js +0 -0
  269. package/dist/utils/__tests__/proxyMiddleware.test.d.ts +1 -0
  270. package/dist/utils/__tests__/proxyMiddleware.test.js +579 -0
  271. package/dist/utils/__tests__/s3Client.test.d.ts +1 -0
  272. package/dist/utils/__tests__/s3Client.test.js +340 -0
  273. package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
  274. package/dist/utils/__tests__/s3ConfigIdentifier.test.js +437 -0
  275. package/dist/utils/constants.d.ts +22 -0
  276. package/dist/utils/constants.js +19 -0
  277. package/dist/utils/deletion/index.d.ts +2 -2
  278. package/dist/utils/deletion/index.js +1 -1
  279. package/dist/utils/deletion/messages.d.ts +1 -1
  280. package/dist/utils/deletion/messages.js +4 -4
  281. package/dist/utils/errorHandling.d.ts +12 -3
  282. package/dist/utils/errorHandling.js +12 -7
  283. package/dist/utils/hooks.js +8 -8
  284. package/dist/utils/index.d.ts +5 -2
  285. package/dist/utils/index.js +5 -1
  286. package/dist/utils/proxyMiddleware.d.ts +32 -13
  287. package/dist/utils/proxyMiddleware.js +90 -36
  288. package/dist/utils/s3Client.d.ts +14 -4
  289. package/dist/utils/s3Client.js +5 -26
  290. package/dist/utils/s3ConfigIdentifier.d.ts +79 -0
  291. package/dist/utils/s3ConfigIdentifier.js +57 -0
  292. package/dist/utils/s3RuleUtils.d.ts +53 -0
  293. package/dist/utils/s3RuleUtils.js +101 -0
  294. package/package.json +10 -8
  295. package/dist/components/__tests__/BucketNotificationCreatePage.test.js +0 -316
  296. package/dist/components/buckets/BucketPolicyButton.d.ts +0 -7
  297. package/dist/components/buckets/notifications/BucketNotificationCreatePage.d.ts +0 -1
  298. package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +0 -234
  299. package/dist/hooks/useLoginMutation.d.ts +0 -21
  300. package/dist/hooks/useLoginMutation.js +0 -9
  301. package/dist/utils/useFeatures.d.ts +0 -1
  302. package/dist/utils/useFeatures.js +0 -7
  303. /package/dist/components/__tests__/{BucketNotificationCreatePage.test.d.ts → BucketAccessor.test.d.ts} +0 -0
@@ -1,8 +1,10 @@
1
1
  import { useMutation, useQueryClient } from "@tanstack/react-query";
2
- import { useS3Client } from "../useS3Client.js";
2
+ import { useDataBrowserContext } from "../../components/providers/DataBrowserProvider.js";
3
3
  import { createS3OperationError } from "../../utils/errorHandling.js";
4
+ import { useS3Client } from "../useS3Client.js";
4
5
  function useCreateS3MutationHook(Command, operationName, invalidationKeys) {
5
6
  return (options)=>{
7
+ const { s3ConfigIdentifier } = useDataBrowserContext();
6
8
  const s3Client = useS3Client();
7
9
  const queryClient = useQueryClient();
8
10
  return useMutation({
@@ -11,7 +13,7 @@ function useCreateS3MutationHook(Command, operationName, invalidationKeys) {
11
13
  const command = new Command(params);
12
14
  return await s3Client.send(command);
13
15
  } catch (error) {
14
- const bucketName = "Bucket" in params ? params.Bucket : void 0;
16
+ const bucketName = 'Bucket' in params ? params.Bucket : void 0;
15
17
  throw createS3OperationError(error, operationName, bucketName);
16
18
  }
17
19
  },
@@ -19,6 +21,7 @@ function useCreateS3MutationHook(Command, operationName, invalidationKeys) {
19
21
  if (invalidationKeys) invalidationKeys.forEach((key)=>{
20
22
  queryClient.invalidateQueries({
21
23
  queryKey: [
24
+ s3ConfigIdentifier,
22
25
  key
23
26
  ]
24
27
  });
@@ -30,6 +33,7 @@ function useCreateS3MutationHook(Command, operationName, invalidationKeys) {
30
33
  }
31
34
  function useCreateS3FunctionMutationHook(operation, invalidationKeys) {
32
35
  return (options)=>{
36
+ const { s3ConfigIdentifier } = useDataBrowserContext();
33
37
  const s3Client = useS3Client();
34
38
  const queryClient = useQueryClient();
35
39
  return useMutation({
@@ -38,6 +42,7 @@ function useCreateS3FunctionMutationHook(operation, invalidationKeys) {
38
42
  if (invalidationKeys) invalidationKeys.forEach((key)=>{
39
43
  queryClient.invalidateQueries({
40
44
  queryKey: [
45
+ s3ConfigIdentifier,
41
46
  key
42
47
  ]
43
48
  });
@@ -1,3 +1,3 @@
1
- import { QueryKey, UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
2
- import { EnhancedS3Error } from "../../utils/errorHandling";
1
+ import { type QueryKey, type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query';
2
+ import { type EnhancedS3Error } from '../../utils/errorHandling';
3
3
  export declare function useCreateS3QueryHook<TInput extends object, TOutput>(Command: new (input: TInput) => any, operationName: string): (params?: TInput, options?: Omit<UseQueryOptions<TOutput, EnhancedS3Error, TOutput, QueryKey>, "queryKey" | "queryFn">) => UseQueryResult<TOutput, EnhancedS3Error>;
@@ -1,13 +1,35 @@
1
1
  import { useQuery } from "@tanstack/react-query";
2
+ import { useDataBrowserContext } from "../../components/providers/DataBrowserProvider.js";
3
+ import { createS3OperationError, isNotFoundError, shouldRetryError } from "../../utils/errorHandling.js";
2
4
  import { useS3Client } from "../useS3Client.js";
3
- import { createS3OperationError, shouldRetryError } from "../../utils/errorHandling.js";
5
+ function getEmptyConfigForOperation(operationName) {
6
+ switch(operationName){
7
+ case 'GetBucketLifecycleConfiguration':
8
+ return {
9
+ Rules: []
10
+ };
11
+ case 'GetBucketReplication':
12
+ return {
13
+ ReplicationConfiguration: {
14
+ Rules: [],
15
+ Role: ''
16
+ }
17
+ };
18
+ case 'GetPublicAccessBlock':
19
+ return {};
20
+ default:
21
+ return null;
22
+ }
23
+ }
4
24
  function useCreateS3QueryHook(Command, operationName) {
5
25
  return (params, options)=>{
26
+ const { s3ConfigIdentifier } = useDataBrowserContext();
27
+ const s3Client = useS3Client();
6
28
  const queryKey = [
29
+ s3ConfigIdentifier,
7
30
  operationName,
8
31
  params
9
32
  ];
10
- const s3Client = useS3Client();
11
33
  return useQuery({
12
34
  queryKey,
13
35
  queryFn: async ({ signal })=>{
@@ -17,7 +39,11 @@ function useCreateS3QueryHook(Command, operationName) {
17
39
  abortSignal: signal
18
40
  });
19
41
  } catch (error) {
20
- const bucketName = params && "Bucket" in params ? params.Bucket : void 0;
42
+ const bucketName = params && 'Bucket' in params ? params.Bucket : void 0;
43
+ if (isNotFoundError(error)) {
44
+ const emptyConfig = getEmptyConfigForOperation(operationName);
45
+ if (null !== emptyConfig) return emptyConfig;
46
+ }
21
47
  throw createS3OperationError(error, operationName, bucketName);
22
48
  }
23
49
  },
@@ -1,8 +1,19 @@
1
- export { useS3Client } from "./useS3Client";
2
- export type { LoginConfig, LoginMutationResult } from "./useLoginMutation";
3
- export { useLoginMutation } from "./loginOperations";
4
- export { useIsBucketEmpty } from "./useIsBucketEmpty";
5
- export { useBuckets, useGetBucketLocation, useCreateBucket, useDeleteBucket, } from "./bucketOperations";
6
- export { useGetBucketAcl, useSetBucketAcl, useGetBucketPolicy, useSetBucketPolicy, useDeleteBucketPolicy, useGetBucketVersioning, useSetBucketVersioning, useGetBucketCors, useSetBucketCors, useDeleteBucketCors, useGetBucketLifecycle, useSetBucketLifecycle, useDeleteBucketLifecycle, useGetBucketNotification, useSetBucketNotification, useGetBucketEncryption, useSetBucketEncryption, useGetBucketTagging, useSetBucketTagging, useDeleteBucketTagging, useGetBucketObjectLockConfiguration, useSetBucketObjectLockConfiguration, useGetBucketReplication, useSetBucketReplication, useDeleteBucketReplication, } from "./bucketConfiguration";
7
- export { useListObjects, useListObjectVersions, useObjectMetadata, useObjectRetention, useGetObject, usePutObject, useCreateFolder, useUploadObjects, useDeleteObject, useDeleteObjects, useCopyObject, useSetObjectRetention, useObjectLegalHold, useSetObjectLegalHold, useObjectTagging, useSetObjectTagging, useDeleteObjectTagging, useObjectAcl, useSetObjectAcl, useGetObjectAttributes, useGetObjectTorrent, useRestoreObject, useSelectObjectContent, useListMultipartUploads, useSearchObjects, useSearchObjectsVersions, } from "./objectOperations";
8
- export { useGetPresignedDownload, useGetPresignedUpload, useGetPresignedPost, } from "./presignedOperations";
1
+ export { useDeleteBucketCors, useDeleteBucketLifecycle, useDeleteBucketPolicy, useDeleteBucketReplication, useDeleteBucketTagging, useGetBucketAcl, useGetBucketCors, useGetBucketEncryption, useGetBucketLifecycle, useGetBucketNotification, useGetBucketObjectLockConfiguration, useGetBucketPolicy, useGetBucketReplication, useGetBucketTagging, useGetBucketVersioning, useGetPublicAccessBlock, useSetBucketAcl, useSetBucketCors, useSetBucketEncryption, useSetBucketLifecycle, useSetBucketNotification, useSetBucketObjectLockConfiguration, useSetBucketPolicy, useSetBucketReplication, useSetBucketTagging, useSetBucketVersioning, } from './bucketConfiguration';
2
+ export { useBuckets, useCreateBucket, useDeleteBucket, useGetBucketLocation, useValidateBucketAccess, } from './bucketOperations';
3
+ export type { LoginConfig, LoginMutationResult } from './loginOperations';
4
+ export { useLoginMutation } from './loginOperations';
5
+ export { useCopyObject, useCreateFolder, useDeleteObject, useDeleteObjects, useDeleteObjectTagging, useGetObject, useGetObjectAttributes, useGetObjectTorrent, useListMultipartUploads, useListObjects, useListObjectVersions, useObjectAcl, useObjectLegalHold, useObjectMetadata, useObjectRetention, useObjectTagging, usePutObject, useRestoreObject, useSearchObjects, useSearchObjectsVersions, useSelectObjectContent, useSetObjectAcl, useSetObjectLegalHold, useSetObjectRetention, useSetObjectTagging, useUploadObjects, } from './objectOperations';
6
+ export { useGetPresignedDownload, useGetPresignedPost, useGetPresignedUpload, } from './presignedOperations';
7
+ export { getAccessibleBucketsStorageKey, getLimitedAccessFlagKey, setLimitedAccessFlag, useAccessibleBuckets, } from './useAccessibleBuckets';
8
+ export { useBatchObjectLegalHold } from './useBatchObjectLegalHold';
9
+ export { type BucketConfigEditorConfig, type BucketConfigEditorResult, useBucketConfigEditor, } from './useBucketConfigEditor';
10
+ export { useDeleteBucketConfigRule } from './useDeleteBucketConfigRule';
11
+ export { useEmptyBucket } from './useEmptyBucket';
12
+ export { useFeatures } from './useFeatures';
13
+ export { useISVBucketStatus } from './useISVBucketDetection';
14
+ export { useIsBucketEmpty } from './useIsBucketEmpty';
15
+ export { type LimitedAccessFlowHandlers, type UseLimitedAccessFlowOptions, useLimitedAccessFlow, } from './useLimitedAccessFlow';
16
+ export { useS3Client } from './useS3Client';
17
+ export { useS3ConfigSwitch } from './useS3ConfigSwitch';
18
+ export { useSupportedNotificationEvents } from './useSupportedNotificationEvents';
19
+ export { useTableRowSelection } from './useTableRowSelection';
@@ -1,8 +1,19 @@
1
- import { useS3Client } from "./useS3Client.js";
1
+ import { useDeleteBucketCors, useDeleteBucketLifecycle, useDeleteBucketPolicy, useDeleteBucketReplication, useDeleteBucketTagging, useGetBucketAcl, useGetBucketCors, useGetBucketEncryption, useGetBucketLifecycle, useGetBucketNotification, useGetBucketObjectLockConfiguration, useGetBucketPolicy, useGetBucketReplication, useGetBucketTagging, useGetBucketVersioning, useGetPublicAccessBlock, useSetBucketAcl, useSetBucketCors, useSetBucketEncryption, useSetBucketLifecycle, useSetBucketNotification, useSetBucketObjectLockConfiguration, useSetBucketPolicy, useSetBucketReplication, useSetBucketTagging, useSetBucketVersioning } from "./bucketConfiguration.js";
2
+ import { useBuckets, useCreateBucket, useDeleteBucket, useGetBucketLocation, useValidateBucketAccess } from "./bucketOperations.js";
2
3
  import { useLoginMutation } from "./loginOperations.js";
3
- import { useIsBucketEmpty } from "./useIsBucketEmpty.js";
4
- import { useBuckets, useCreateBucket, useDeleteBucket, useGetBucketLocation } from "./bucketOperations.js";
5
- import { useDeleteBucketCors, useDeleteBucketLifecycle, useDeleteBucketPolicy, useDeleteBucketReplication, useDeleteBucketTagging, useGetBucketAcl, useGetBucketCors, useGetBucketEncryption, useGetBucketLifecycle, useGetBucketNotification, useGetBucketObjectLockConfiguration, useGetBucketPolicy, useGetBucketReplication, useGetBucketTagging, useGetBucketVersioning, useSetBucketAcl, useSetBucketCors, useSetBucketEncryption, useSetBucketLifecycle, useSetBucketNotification, useSetBucketObjectLockConfiguration, useSetBucketPolicy, useSetBucketReplication, useSetBucketTagging, useSetBucketVersioning } from "./bucketConfiguration.js";
6
4
  import { useCopyObject, useCreateFolder, useDeleteObject, useDeleteObjectTagging, useDeleteObjects, useGetObject, useGetObjectAttributes, useGetObjectTorrent, useListMultipartUploads, useListObjectVersions, useListObjects, useObjectAcl, useObjectLegalHold, useObjectMetadata, useObjectRetention, useObjectTagging, usePutObject, useRestoreObject, useSearchObjects, useSearchObjectsVersions, useSelectObjectContent, useSetObjectAcl, useSetObjectLegalHold, useSetObjectRetention, useSetObjectTagging, useUploadObjects } from "./objectOperations.js";
7
5
  import { useGetPresignedDownload, useGetPresignedPost, useGetPresignedUpload } from "./presignedOperations.js";
8
- export { useBuckets, useCopyObject, useCreateBucket, useCreateFolder, useDeleteBucket, useDeleteBucketCors, useDeleteBucketLifecycle, useDeleteBucketPolicy, useDeleteBucketReplication, useDeleteBucketTagging, useDeleteObject, useDeleteObjectTagging, useDeleteObjects, useGetBucketAcl, useGetBucketCors, useGetBucketEncryption, useGetBucketLifecycle, useGetBucketLocation, useGetBucketNotification, useGetBucketObjectLockConfiguration, useGetBucketPolicy, useGetBucketReplication, useGetBucketTagging, useGetBucketVersioning, useGetObject, useGetObjectAttributes, useGetObjectTorrent, useGetPresignedDownload, useGetPresignedPost, useGetPresignedUpload, useIsBucketEmpty, useListMultipartUploads, useListObjectVersions, useListObjects, useLoginMutation, useObjectAcl, useObjectLegalHold, useObjectMetadata, useObjectRetention, useObjectTagging, usePutObject, useRestoreObject, useS3Client, useSearchObjects, useSearchObjectsVersions, useSelectObjectContent, useSetBucketAcl, useSetBucketCors, useSetBucketEncryption, useSetBucketLifecycle, useSetBucketNotification, useSetBucketObjectLockConfiguration, useSetBucketPolicy, useSetBucketReplication, useSetBucketTagging, useSetBucketVersioning, useSetObjectAcl, useSetObjectLegalHold, useSetObjectRetention, useSetObjectTagging, useUploadObjects };
6
+ import { getAccessibleBucketsStorageKey, getLimitedAccessFlagKey, setLimitedAccessFlag, useAccessibleBuckets } from "./useAccessibleBuckets.js";
7
+ import { useBatchObjectLegalHold } from "./useBatchObjectLegalHold.js";
8
+ import { useBucketConfigEditor } from "./useBucketConfigEditor.js";
9
+ import { useDeleteBucketConfigRule } from "./useDeleteBucketConfigRule.js";
10
+ import { useEmptyBucket } from "./useEmptyBucket.js";
11
+ import { useFeatures } from "./useFeatures.js";
12
+ import { useISVBucketStatus } from "./useISVBucketDetection.js";
13
+ import { useIsBucketEmpty } from "./useIsBucketEmpty.js";
14
+ import { useLimitedAccessFlow } from "./useLimitedAccessFlow.js";
15
+ import { useS3Client } from "./useS3Client.js";
16
+ import { useS3ConfigSwitch } from "./useS3ConfigSwitch.js";
17
+ import { useSupportedNotificationEvents } from "./useSupportedNotificationEvents.js";
18
+ import { useTableRowSelection } from "./useTableRowSelection.js";
19
+ export { getAccessibleBucketsStorageKey, getLimitedAccessFlagKey, setLimitedAccessFlag, useAccessibleBuckets, useBatchObjectLegalHold, useBucketConfigEditor, useBuckets, useCopyObject, useCreateBucket, useCreateFolder, useDeleteBucket, useDeleteBucketConfigRule, useDeleteBucketCors, useDeleteBucketLifecycle, useDeleteBucketPolicy, useDeleteBucketReplication, useDeleteBucketTagging, useDeleteObject, useDeleteObjectTagging, useDeleteObjects, useEmptyBucket, useFeatures, useGetBucketAcl, useGetBucketCors, useGetBucketEncryption, useGetBucketLifecycle, useGetBucketLocation, useGetBucketNotification, useGetBucketObjectLockConfiguration, useGetBucketPolicy, useGetBucketReplication, useGetBucketTagging, useGetBucketVersioning, useGetObject, useGetObjectAttributes, useGetObjectTorrent, useGetPresignedDownload, useGetPresignedPost, useGetPresignedUpload, useGetPublicAccessBlock, useISVBucketStatus, useIsBucketEmpty, useLimitedAccessFlow, useListMultipartUploads, useListObjectVersions, useListObjects, useLoginMutation, useObjectAcl, useObjectLegalHold, useObjectMetadata, useObjectRetention, useObjectTagging, usePutObject, useRestoreObject, useS3Client, useS3ConfigSwitch, useSearchObjects, useSearchObjectsVersions, useSelectObjectContent, useSetBucketAcl, useSetBucketCors, useSetBucketEncryption, useSetBucketLifecycle, useSetBucketNotification, useSetBucketObjectLockConfiguration, useSetBucketPolicy, useSetBucketReplication, useSetBucketTagging, useSetBucketVersioning, useSetObjectAcl, useSetObjectLegalHold, useSetObjectRetention, useSetObjectTagging, useSupportedNotificationEvents, useTableRowSelection, useUploadObjects, useValidateBucketAccess };
@@ -4,7 +4,7 @@
4
4
  * This file contains hooks for S3 authentication operations.
5
5
  * Uses the factory pattern for consistency with other S3 operations.
6
6
  */
7
- import { S3BrowserConfig, S3Credentials } from "../types";
7
+ import type { S3BrowserConfig, S3Credentials } from '../types';
8
8
  export type LoginConfig = S3BrowserConfig & {
9
9
  credentials: S3Credentials;
10
10
  };
@@ -5,5 +5,5 @@ class LoginAuthenticationCommand {
5
5
  this.input = input;
6
6
  }
7
7
  }
8
- const useLoginMutation = useCreateS3LoginHook(LoginAuthenticationCommand, "S3 Authentication");
8
+ const useLoginMutation = useCreateS3LoginHook(LoginAuthenticationCommand, 'S3 Authentication');
9
9
  export { useLoginMutation };
@@ -5,8 +5,8 @@
5
5
  * metadata retrieval, uploads, downloads, deletion, and object-level
6
6
  * configurations like retention and legal hold.
7
7
  */
8
- import { CopyObjectCommandInput, CopyObjectCommandOutput, DeleteObjectCommandInput, DeleteObjectCommandOutput, DeleteObjectsCommandInput, DeleteObjectsCommandOutput, DeleteObjectTaggingCommandInput, DeleteObjectTaggingCommandOutput, GetObjectAclCommandInput, GetObjectAclCommandOutput, GetObjectAttributesCommandInput, GetObjectAttributesCommandOutput, GetObjectCommandInput, GetObjectCommandOutput, GetObjectLegalHoldCommandInput, GetObjectLegalHoldCommandOutput, GetObjectRetentionCommandInput, GetObjectRetentionCommandOutput, GetObjectTaggingCommandInput, GetObjectTaggingCommandOutput, GetObjectTorrentCommandInput, GetObjectTorrentCommandOutput, HeadObjectCommandInput, HeadObjectCommandOutput, ListMultipartUploadsCommandInput, ListMultipartUploadsCommandOutput, ListObjectsV2CommandInput, ListObjectVersionsCommandInput, PutObjectAclCommandInput, PutObjectAclCommandOutput, PutObjectCommandInput, PutObjectCommandOutput, PutObjectLegalHoldCommandInput, PutObjectLegalHoldCommandOutput, PutObjectRetentionCommandInput, PutObjectRetentionCommandOutput, PutObjectTaggingCommandInput, PutObjectTaggingCommandOutput, RestoreObjectCommandInput, RestoreObjectCommandOutput, SelectObjectContentCommandInput, SelectObjectContentCommandOutput } from "@aws-sdk/client-s3";
9
- import { SearchObjectsV2CommandInput, SearchObjectsVersionCommandInput } from "@scality/zenkoclient";
8
+ import { type CopyObjectCommandInput, type CopyObjectCommandOutput, type DeleteObjectCommandInput, type DeleteObjectCommandOutput, type DeleteObjectsCommandInput, type DeleteObjectsCommandOutput, type DeleteObjectTaggingCommandInput, type DeleteObjectTaggingCommandOutput, type GetObjectAclCommandInput, type GetObjectAclCommandOutput, type GetObjectAttributesCommandInput, type GetObjectAttributesCommandOutput, type GetObjectCommandInput, type GetObjectCommandOutput, type GetObjectLegalHoldCommandInput, type GetObjectLegalHoldCommandOutput, type GetObjectRetentionCommandInput, type GetObjectRetentionCommandOutput, type GetObjectTaggingCommandInput, type GetObjectTaggingCommandOutput, type GetObjectTorrentCommandInput, type GetObjectTorrentCommandOutput, type HeadObjectCommandInput, type HeadObjectCommandOutput, type ListMultipartUploadsCommandInput, type ListMultipartUploadsCommandOutput, type ListObjectsV2CommandInput, type ListObjectVersionsCommandInput, type PutObjectAclCommandInput, type PutObjectAclCommandOutput, type PutObjectCommandInput, type PutObjectCommandOutput, type PutObjectLegalHoldCommandInput, type PutObjectLegalHoldCommandOutput, type PutObjectRetentionCommandInput, type PutObjectRetentionCommandOutput, type PutObjectTaggingCommandInput, type PutObjectTaggingCommandOutput, type RestoreObjectCommandInput, type RestoreObjectCommandOutput, type SelectObjectContentCommandInput, type SelectObjectContentCommandOutput } from '@aws-sdk/client-s3';
9
+ import { type SearchObjectsV2CommandInput, type SearchObjectsVersionCommandInput } from '@scality/zenkoclient';
10
10
  /**
11
11
  * Hook for listing S3 objects with infinite scroll support
12
12
  *
@@ -1,66 +1,67 @@
1
1
  import { CopyObjectCommand, DeleteObjectCommand, DeleteObjectTaggingCommand, DeleteObjectsCommand, GetObjectAclCommand, GetObjectAttributesCommand, GetObjectCommand, GetObjectLegalHoldCommand, GetObjectRetentionCommand, GetObjectTaggingCommand, GetObjectTorrentCommand, HeadObjectCommand, ListMultipartUploadsCommand, ListObjectVersionsCommand, ListObjectsV2Command, PutObjectAclCommand, PutObjectCommand, PutObjectLegalHoldCommand, PutObjectRetentionCommand, PutObjectTaggingCommand, RestoreObjectCommand, SelectObjectContentCommand } from "@aws-sdk/client-s3";
2
+ import { SearchObjectsV2Command, SearchObjectsVersionCommand } from "@scality/zenkoclient";
2
3
  import { useCreateS3InfiniteQueryHook } from "./factories/useCreateS3InfiniteQueryHook.js";
3
4
  import { useCreateS3MutationHook } from "./factories/useCreateS3MutationHook.js";
4
5
  import { useCreateS3QueryHook } from "./factories/useCreateS3QueryHook.js";
5
- import { SearchObjectsV2Command, SearchObjectsVersionCommand } from "@scality/zenkoclient";
6
- const useListObjects = useCreateS3InfiniteQueryHook(ListObjectsV2Command, "ListObjects");
7
- const useListObjectVersions = useCreateS3InfiniteQueryHook(ListObjectVersionsCommand, "ListObjectVersions");
8
- const useSearchObjects = useCreateS3InfiniteQueryHook(SearchObjectsV2Command, "SearchObjects");
9
- const useSearchObjectsVersions = useCreateS3InfiniteQueryHook(SearchObjectsVersionCommand, "SearchObjectsVersions");
10
- const useObjectMetadata = useCreateS3QueryHook(HeadObjectCommand, "HeadObject");
11
- const useGetObject = useCreateS3QueryHook(GetObjectCommand, "GetObject");
12
- const usePutObject = useCreateS3MutationHook(PutObjectCommand, "PutObject", [
13
- "ListObjects",
14
- "SearchObjects"
6
+ const useListObjects = useCreateS3InfiniteQueryHook(ListObjectsV2Command, 'ListObjects');
7
+ const useListObjectVersions = useCreateS3InfiniteQueryHook(ListObjectVersionsCommand, 'ListObjectVersions');
8
+ const useSearchObjects = useCreateS3InfiniteQueryHook(SearchObjectsV2Command, 'SearchObjects');
9
+ const useSearchObjectsVersions = useCreateS3InfiniteQueryHook(SearchObjectsVersionCommand, 'SearchObjectsVersions');
10
+ const useObjectMetadata = useCreateS3QueryHook(HeadObjectCommand, 'HeadObject');
11
+ const useGetObject = useCreateS3QueryHook(GetObjectCommand, 'GetObject');
12
+ const usePutObject = useCreateS3MutationHook(PutObjectCommand, 'PutObject', [
13
+ 'ListObjects',
14
+ 'SearchObjects'
15
15
  ]);
16
- const useCreateFolder = useCreateS3MutationHook(PutObjectCommand, "PutObject", [
17
- "ListObjects",
18
- "SearchObjects"
16
+ const useCreateFolder = useCreateS3MutationHook(PutObjectCommand, 'PutObject', [
17
+ 'ListObjects',
18
+ 'SearchObjects'
19
19
  ]);
20
- const useUploadObjects = useCreateS3MutationHook(PutObjectCommand, "PutObject", [
21
- "ListObjects",
22
- "SearchObjects"
20
+ const useUploadObjects = useCreateS3MutationHook(PutObjectCommand, 'PutObject', [
21
+ 'ListObjects',
22
+ 'SearchObjects'
23
23
  ]);
24
- const useDeleteObject = useCreateS3MutationHook(DeleteObjectCommand, "DeleteObject", [
25
- "ListObjects",
26
- "SearchObjects"
24
+ const useDeleteObject = useCreateS3MutationHook(DeleteObjectCommand, 'DeleteObject', [
25
+ 'ListObjects',
26
+ 'SearchObjects'
27
27
  ]);
28
- const useDeleteObjects = useCreateS3MutationHook(DeleteObjectsCommand, "DeleteObjects", [
29
- "ListObjects",
30
- "ListObjectVersions",
31
- "SearchObjects",
32
- "SearchObjectsVersions"
28
+ const useDeleteObjects = useCreateS3MutationHook(DeleteObjectsCommand, 'DeleteObjects', [
29
+ 'ListObjects',
30
+ 'ListObjectVersions',
31
+ 'SearchObjects',
32
+ 'SearchObjectsVersions'
33
33
  ]);
34
- const useCopyObject = useCreateS3MutationHook(CopyObjectCommand, "CopyObject", [
35
- "ListObjects",
36
- "SearchObjects",
37
- "HeadObject"
34
+ const useCopyObject = useCreateS3MutationHook(CopyObjectCommand, 'CopyObject', [
35
+ 'ListObjects',
36
+ 'SearchObjects',
37
+ 'HeadObject'
38
38
  ]);
39
- const useObjectRetention = useCreateS3QueryHook(GetObjectRetentionCommand, "GetObjectRetention");
40
- const useSetObjectRetention = useCreateS3MutationHook(PutObjectRetentionCommand, "PutObjectRetention", [
41
- "GetObjectRetention"
39
+ const useObjectRetention = useCreateS3QueryHook(GetObjectRetentionCommand, 'GetObjectRetention');
40
+ const useSetObjectRetention = useCreateS3MutationHook(PutObjectRetentionCommand, 'PutObjectRetention', [
41
+ 'GetObjectRetention'
42
42
  ]);
43
- const useObjectLegalHold = useCreateS3QueryHook(GetObjectLegalHoldCommand, "GetObjectLegalHold");
44
- const useSetObjectLegalHold = useCreateS3MutationHook(PutObjectLegalHoldCommand, "PutObjectLegalHold", [
45
- "GetObjectLegalHold"
43
+ const useObjectLegalHold = useCreateS3QueryHook(GetObjectLegalHoldCommand, 'GetObjectLegalHold');
44
+ const useSetObjectLegalHold = useCreateS3MutationHook(PutObjectLegalHoldCommand, 'PutObjectLegalHold', [
45
+ 'GetObjectLegalHold',
46
+ 'BatchObjectLegalHold'
46
47
  ]);
47
- const useObjectTagging = useCreateS3QueryHook(GetObjectTaggingCommand, "GetObjectTagging");
48
- const useSetObjectTagging = useCreateS3MutationHook(PutObjectTaggingCommand, "PutObjectTagging", [
49
- "GetObjectTagging"
48
+ const useObjectTagging = useCreateS3QueryHook(GetObjectTaggingCommand, 'GetObjectTagging');
49
+ const useSetObjectTagging = useCreateS3MutationHook(PutObjectTaggingCommand, 'PutObjectTagging', [
50
+ 'GetObjectTagging'
50
51
  ]);
51
- const useDeleteObjectTagging = useCreateS3MutationHook(DeleteObjectTaggingCommand, "DeleteObjectTagging", [
52
- "GetObjectTagging"
52
+ const useDeleteObjectTagging = useCreateS3MutationHook(DeleteObjectTaggingCommand, 'DeleteObjectTagging', [
53
+ 'GetObjectTagging'
53
54
  ]);
54
- const useObjectAcl = useCreateS3QueryHook(GetObjectAclCommand, "GetObjectAcl");
55
- const useSetObjectAcl = useCreateS3MutationHook(PutObjectAclCommand, "PutObjectAcl", [
56
- "GetObjectAcl"
55
+ const useObjectAcl = useCreateS3QueryHook(GetObjectAclCommand, 'GetObjectAcl');
56
+ const useSetObjectAcl = useCreateS3MutationHook(PutObjectAclCommand, 'PutObjectAcl', [
57
+ 'GetObjectAcl'
57
58
  ]);
58
- const useGetObjectAttributes = useCreateS3QueryHook(GetObjectAttributesCommand, "GetObjectAttributes");
59
- const useGetObjectTorrent = useCreateS3QueryHook(GetObjectTorrentCommand, "GetObjectTorrent");
60
- const useRestoreObject = useCreateS3MutationHook(RestoreObjectCommand, "RestoreObject", [
61
- "HeadObject",
62
- "ListObjects"
59
+ const useGetObjectAttributes = useCreateS3QueryHook(GetObjectAttributesCommand, 'GetObjectAttributes');
60
+ const useGetObjectTorrent = useCreateS3QueryHook(GetObjectTorrentCommand, 'GetObjectTorrent');
61
+ const useRestoreObject = useCreateS3MutationHook(RestoreObjectCommand, 'RestoreObject', [
62
+ 'HeadObject',
63
+ 'ListObjects'
63
64
  ]);
64
- const useSelectObjectContent = useCreateS3QueryHook(SelectObjectContentCommand, "SelectObjectContent");
65
- const useListMultipartUploads = useCreateS3InfiniteQueryHook(ListMultipartUploadsCommand, "ListMultipartUploads");
65
+ const useSelectObjectContent = useCreateS3QueryHook(SelectObjectContentCommand, 'SelectObjectContent');
66
+ const useListMultipartUploads = useCreateS3InfiniteQueryHook(ListMultipartUploadsCommand, 'ListMultipartUploads');
66
67
  export { useCopyObject, useCreateFolder, useDeleteObject, useDeleteObjectTagging, useDeleteObjects, useGetObject, useGetObjectAttributes, useGetObjectTorrent, useListMultipartUploads, useListObjectVersions, useListObjects, useObjectAcl, useObjectLegalHold, useObjectMetadata, useObjectRetention, useObjectTagging, usePutObject, useRestoreObject, useSearchObjects, useSearchObjectsVersions, useSelectObjectContent, useSetObjectAcl, useSetObjectLegalHold, useSetObjectRetention, useSetObjectTagging, useUploadObjects };
@@ -6,8 +6,8 @@
6
6
  * 2. Get Presigned POST
7
7
  * 3. Get Presigned Upload (PUT)
8
8
  */
9
- import { PresignedPostOptions, PresignedPost } from "@aws-sdk/s3-presigned-post";
10
- import { GetObjectCommandInput, PutObjectCommandInput } from "@aws-sdk/client-s3";
9
+ import { type GetObjectCommandInput, type PutObjectCommandInput } from '@aws-sdk/client-s3';
10
+ import { type PresignedPost, type PresignedPostOptions } from '@aws-sdk/s3-presigned-post';
11
11
  /**
12
12
  * Hook for getting presigned download URLs
13
13
  *
@@ -64,10 +64,10 @@ export declare const useGetPresignedPost: (options?: Omit<import("@tanstack/reac
64
64
  Bucket: string;
65
65
  Key: string;
66
66
  expiresIn?: number;
67
- } & Omit<PresignedPostOptions, "Expires" | "Bucket" | "Key">, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<PresignedPost & {
67
+ } & Omit<PresignedPostOptions, "Bucket" | "Expires" | "Key">, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<PresignedPost & {
68
68
  ExpiresAt: Date;
69
69
  }, import("../utils/errorHandling").EnhancedS3Error, {
70
70
  Bucket: string;
71
71
  Key: string;
72
72
  expiresIn?: number;
73
- } & Omit<PresignedPostOptions, "Expires" | "Bucket" | "Key">>;
73
+ } & Omit<PresignedPostOptions, "Bucket" | "Expires" | "Key">>;
@@ -1,6 +1,6 @@
1
- import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
2
- import { createPresignedPost } from "@aws-sdk/s3-presigned-post";
3
1
  import { GetObjectCommand, PutObjectCommand } from "@aws-sdk/client-s3";
2
+ import { createPresignedPost } from "@aws-sdk/s3-presigned-post";
3
+ import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
4
4
  import { createS3OperationError } from "../utils/errorHandling.js";
5
5
  import { useCreateS3FunctionMutationHook } from "./factories/index.js";
6
6
  const generatePresignedDownloadUrl = async (client, config)=>{
@@ -23,7 +23,7 @@ const generatePresignedDownloadUrl = async (client, config)=>{
23
23
  VersionId: config.VersionId
24
24
  };
25
25
  } catch (error) {
26
- throw createS3OperationError(error, "GeneratePresignedDownload", config.Bucket, config.Key);
26
+ throw createS3OperationError(error, 'GeneratePresignedDownload', config.Bucket, config.Key);
27
27
  }
28
28
  };
29
29
  const generatePresignedUploadUrl = async (client, config)=>{
@@ -45,7 +45,7 @@ const generatePresignedUploadUrl = async (client, config)=>{
45
45
  Key: Key
46
46
  };
47
47
  } catch (error) {
48
- throw createS3OperationError(error, "GeneratePresignedUpload", config.Bucket, config.Key);
48
+ throw createS3OperationError(error, 'GeneratePresignedUpload', config.Bucket, config.Key);
49
49
  }
50
50
  };
51
51
  const generatePresignedPost = async (client, config)=>{
@@ -63,7 +63,7 @@ const generatePresignedPost = async (client, config)=>{
63
63
  ExpiresAt: expiresAt
64
64
  };
65
65
  } catch (error) {
66
- throw createS3OperationError(error, "GeneratePresignedPost", config.Bucket, config.Key);
66
+ throw createS3OperationError(error, 'GeneratePresignedPost', config.Bucket, config.Key);
67
67
  }
68
68
  };
69
69
  const useGetPresignedDownload = useCreateS3FunctionMutationHook(generatePresignedDownloadUrl);
@@ -0,0 +1,11 @@
1
+ import type { Bucket } from '@aws-sdk/client-s3';
2
+ export declare const getAccessibleBucketsStorageKey: (s3ConfigIdentifier: string) => string;
3
+ export declare const getLimitedAccessFlagKey: (s3ConfigIdentifier: string) => string;
4
+ export declare const setLimitedAccessFlag: (s3ConfigIdentifier: string, value: boolean) => void;
5
+ export declare const useAccessibleBuckets: () => {
6
+ hasLimitedAccess: boolean;
7
+ setLimitedAccess: (value: boolean) => void;
8
+ accessibleBuckets: Bucket[];
9
+ addAccessibleBucket: (bucketName: string) => void;
10
+ clearAccessibleBuckets: () => void;
11
+ };
@@ -0,0 +1,115 @@
1
+ import { useCallback, useEffect, useMemo, useState } from "react";
2
+ import { useDataBrowserContext } from "../components/providers/DataBrowserProvider.js";
3
+ const STORAGE_KEY_PREFIX = 'data-browser-accessible-buckets';
4
+ const LIMITED_ACCESS_FLAG_PREFIX = 'data-browser-limited-access';
5
+ const getAccessibleBucketsStorageKey = (s3ConfigIdentifier)=>`${STORAGE_KEY_PREFIX}-${s3ConfigIdentifier}`;
6
+ const getLimitedAccessFlagKey = (s3ConfigIdentifier)=>`${LIMITED_ACCESS_FLAG_PREFIX}-${s3ConfigIdentifier}`;
7
+ const setLimitedAccessFlag = (s3ConfigIdentifier, value)=>{
8
+ try {
9
+ const flagKey = getLimitedAccessFlagKey(s3ConfigIdentifier);
10
+ if (value) sessionStorage.setItem(flagKey, 'true');
11
+ else sessionStorage.removeItem(flagKey);
12
+ } catch {}
13
+ };
14
+ const readBucketsFromStorage = (storageKey)=>{
15
+ try {
16
+ const stored = sessionStorage.getItem(storageKey);
17
+ if (!stored) return [];
18
+ const parsed = JSON.parse(stored);
19
+ if (Array.isArray(parsed) && parsed.length > 0) {
20
+ if ('string' == typeof parsed[0]) {
21
+ const now = new Date().toISOString();
22
+ const bucketData = parsed.map((name)=>({
23
+ name,
24
+ addedAt: now
25
+ }));
26
+ sessionStorage.setItem(storageKey, JSON.stringify(bucketData));
27
+ return bucketData.map((item)=>({
28
+ Name: item.name,
29
+ CreationDate: new Date(item.addedAt)
30
+ }));
31
+ }
32
+ const bucketData = parsed;
33
+ return bucketData.map((item)=>({
34
+ Name: item.name,
35
+ CreationDate: new Date(item.addedAt)
36
+ }));
37
+ }
38
+ return [];
39
+ } catch {
40
+ return [];
41
+ }
42
+ };
43
+ const readLimitedAccessFlag = (flagKey)=>{
44
+ try {
45
+ const flag = sessionStorage.getItem(flagKey);
46
+ return 'true' === flag;
47
+ } catch {
48
+ return false;
49
+ }
50
+ };
51
+ const useAccessibleBuckets = ()=>{
52
+ const { s3ConfigIdentifier } = useDataBrowserContext();
53
+ const storageKey = useMemo(()=>getAccessibleBucketsStorageKey(s3ConfigIdentifier), [
54
+ s3ConfigIdentifier
55
+ ]);
56
+ const flagKey = useMemo(()=>getLimitedAccessFlagKey(s3ConfigIdentifier), [
57
+ s3ConfigIdentifier
58
+ ]);
59
+ const [hasLimitedAccess, setHasLimitedAccessState] = useState(()=>readLimitedAccessFlag(flagKey));
60
+ const [accessibleBuckets, setAccessibleBucketsState] = useState(()=>readBucketsFromStorage(storageKey));
61
+ useEffect(()=>{
62
+ setHasLimitedAccessState(readLimitedAccessFlag(flagKey));
63
+ setAccessibleBucketsState(readBucketsFromStorage(storageKey));
64
+ }, [
65
+ storageKey,
66
+ flagKey
67
+ ]);
68
+ const setLimitedAccess = useCallback((value)=>{
69
+ setLimitedAccessFlag(s3ConfigIdentifier, value);
70
+ setHasLimitedAccessState(value);
71
+ }, [
72
+ s3ConfigIdentifier
73
+ ]);
74
+ const addAccessibleBucket = useCallback((bucketName)=>{
75
+ try {
76
+ const stored = sessionStorage.getItem(storageKey);
77
+ const bucketData = stored ? JSON.parse(stored) : [];
78
+ const existingBucket = bucketData.find((b)=>b.name === bucketName);
79
+ if (!existingBucket) {
80
+ const newBucket = {
81
+ name: bucketName,
82
+ addedAt: new Date().toISOString()
83
+ };
84
+ bucketData.push(newBucket);
85
+ sessionStorage.setItem(storageKey, JSON.stringify(bucketData));
86
+ const newBuckets = bucketData.map((item)=>({
87
+ Name: item.name,
88
+ CreationDate: new Date(item.addedAt)
89
+ }));
90
+ setAccessibleBucketsState(newBuckets);
91
+ }
92
+ } catch {}
93
+ }, [
94
+ storageKey
95
+ ]);
96
+ const clearAccessibleBuckets = useCallback(()=>{
97
+ try {
98
+ sessionStorage.removeItem(storageKey);
99
+ sessionStorage.removeItem(flagKey);
100
+ setAccessibleBucketsState([]);
101
+ setHasLimitedAccessState(false);
102
+ } catch {}
103
+ }, [
104
+ storageKey,
105
+ flagKey
106
+ ]);
107
+ return {
108
+ hasLimitedAccess,
109
+ setLimitedAccess,
110
+ accessibleBuckets,
111
+ addAccessibleBucket,
112
+ clearAccessibleBuckets
113
+ };
114
+ };
115
+ export { getAccessibleBucketsStorageKey, getLimitedAccessFlagKey, setLimitedAccessFlag, useAccessibleBuckets };
@@ -0,0 +1,11 @@
1
+ interface ObjectIdentifier {
2
+ Key: string;
3
+ VersionId?: string;
4
+ }
5
+ interface LegalHoldStatus {
6
+ key: string;
7
+ versionId?: string;
8
+ isLegalHoldEnabled: boolean;
9
+ }
10
+ export declare const useBatchObjectLegalHold: (bucketName: string, objects: ObjectIdentifier[], enabled?: boolean) => import("@tanstack/react-query").UseQueryResult<Record<string, LegalHoldStatus>, Error>;
11
+ export {};
@@ -0,0 +1,48 @@
1
+ import { GetObjectLegalHoldCommand } from "@aws-sdk/client-s3";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { useDataBrowserContext } from "../components/providers/DataBrowserProvider.js";
4
+ import { useS3Client } from "./useS3Client.js";
5
+ const useBatchObjectLegalHold = (bucketName, objects, enabled = true)=>{
6
+ const { s3ConfigIdentifier } = useDataBrowserContext();
7
+ const s3Client = useS3Client();
8
+ return useQuery({
9
+ queryKey: [
10
+ s3ConfigIdentifier,
11
+ 'BatchObjectLegalHold',
12
+ bucketName,
13
+ ...objects.map((obj)=>`${obj.Key}:${obj.VersionId || 'null'}`)
14
+ ],
15
+ queryFn: async ()=>{
16
+ const results = {};
17
+ await Promise.allSettled(objects.map(async (obj)=>{
18
+ const key = `${obj.Key}:${obj.VersionId || 'null'}`;
19
+ try {
20
+ const command = new GetObjectLegalHoldCommand({
21
+ Bucket: bucketName,
22
+ Key: obj.Key,
23
+ ...obj.VersionId && {
24
+ VersionId: obj.VersionId
25
+ }
26
+ });
27
+ const response = await s3Client.send(command);
28
+ results[key] = {
29
+ key: obj.Key,
30
+ versionId: obj.VersionId,
31
+ isLegalHoldEnabled: response.LegalHold?.Status === 'ON'
32
+ };
33
+ } catch (error) {
34
+ results[key] = {
35
+ key: obj.Key,
36
+ versionId: obj.VersionId,
37
+ isLegalHoldEnabled: false
38
+ };
39
+ }
40
+ }));
41
+ return results;
42
+ },
43
+ enabled: enabled && objects.length > 0,
44
+ staleTime: 30000,
45
+ refetchOnWindowFocus: false
46
+ });
47
+ };
48
+ export { useBatchObjectLegalHold };
@@ -0,0 +1,31 @@
1
+ import type { BeforeMount } from '@monaco-editor/react';
2
+ import { useForm } from 'react-hook-form';
3
+ type FormValues = {
4
+ content: string;
5
+ };
6
+ type ValidationResult = {
7
+ isValid: boolean;
8
+ parsed?: unknown;
9
+ error?: string;
10
+ };
11
+ export type BucketConfigEditorConfig = {
12
+ bucketName: string;
13
+ initialContent: string | undefined;
14
+ defaultTemplate: string;
15
+ isLoading: boolean;
16
+ notFoundErrorNames: string[];
17
+ errorInstance: Error | null;
18
+ validate: (content: string) => ValidationResult;
19
+ monacoSchema?: unknown;
20
+ };
21
+ export type BucketConfigEditorResult = {
22
+ bucketName: string;
23
+ form: ReturnType<typeof useForm<FormValues>>;
24
+ content: string;
25
+ isCreateMode: boolean;
26
+ isValidFormat: boolean;
27
+ handleBeforeMount: BeforeMount;
28
+ navigateToBucket: () => void;
29
+ };
30
+ export declare const useBucketConfigEditor: (config: BucketConfigEditorConfig) => BucketConfigEditorResult;
31
+ export {};