@scality/data-browser-library 1.0.0-preview.9 → 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 (285) 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.js +271 -105
  9. package/dist/components/__tests__/BucketDetails.test.d.ts +1 -0
  10. package/dist/components/__tests__/BucketDetails.test.js +421 -0
  11. package/dist/components/__tests__/BucketLifecycleFormPage.test.d.ts +13 -0
  12. package/dist/components/__tests__/BucketLifecycleFormPage.test.js +178 -178
  13. package/dist/components/__tests__/BucketLifecycleList.test.js +85 -85
  14. package/dist/components/__tests__/BucketList.test.js +463 -239
  15. package/dist/components/__tests__/BucketNotificationFormPage.test.d.ts +1 -0
  16. package/dist/components/__tests__/BucketNotificationFormPage.test.js +348 -0
  17. package/dist/components/__tests__/BucketNotificationList.test.d.ts +1 -0
  18. package/dist/components/__tests__/BucketNotificationList.test.js +379 -0
  19. package/dist/components/__tests__/BucketOverview.test.js +281 -266
  20. package/dist/components/__tests__/BucketPolicyPage.test.js +151 -99
  21. package/dist/components/__tests__/BucketReplicationFormPage.test.d.ts +15 -0
  22. package/dist/components/__tests__/BucketReplicationFormPage.test.js +544 -544
  23. package/dist/components/__tests__/BucketReplicationList.test.js +106 -106
  24. package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
  25. package/dist/components/__tests__/DeleteBucketButton.test.js +64 -64
  26. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +47 -47
  27. package/dist/components/__tests__/DeleteObjectButton.test.js +64 -64
  28. package/dist/components/__tests__/EmptyBucketButton.test.js +59 -59
  29. package/dist/components/__tests__/MetadataSearch.test.js +65 -65
  30. package/dist/components/__tests__/ObjectList.test.js +741 -240
  31. package/dist/components/__tests__/UploadButton.test.js +45 -45
  32. package/dist/components/breadcrumb/Breadcrumb.d.ts +6 -0
  33. package/dist/components/breadcrumb/Breadcrumb.js +37 -0
  34. package/dist/components/breadcrumb/DataBrowserBreadcrumb.d.ts +1 -0
  35. package/dist/components/breadcrumb/DataBrowserBreadcrumb.js +10 -0
  36. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.d.ts +1 -0
  37. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.js +196 -0
  38. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.d.ts +1 -0
  39. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.js +153 -0
  40. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.d.ts +1 -0
  41. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.js +134 -0
  42. package/dist/components/breadcrumb/index.d.ts +8 -0
  43. package/dist/components/breadcrumb/index.js +4 -0
  44. package/dist/components/breadcrumb/useBreadcrumbPaths.d.ts +2 -0
  45. package/dist/components/breadcrumb/useBreadcrumbPaths.js +82 -0
  46. package/dist/components/buckets/BucketAccessor.d.ts +2 -0
  47. package/dist/components/buckets/BucketAccessor.js +125 -0
  48. package/dist/components/buckets/BucketConfigEditButton.d.ts +8 -0
  49. package/dist/components/buckets/{BucketPolicyButton.js → BucketConfigEditButton.js} +9 -5
  50. package/dist/components/buckets/BucketCorsPage.d.ts +1 -0
  51. package/dist/components/buckets/BucketCorsPage.js +234 -0
  52. package/dist/components/buckets/BucketCreate.d.ts +3 -2
  53. package/dist/components/buckets/BucketCreate.js +89 -47
  54. package/dist/components/buckets/BucketDetails.d.ts +42 -0
  55. package/dist/components/buckets/BucketDetails.js +249 -85
  56. package/dist/components/buckets/BucketLifecycleFormPage.js +206 -190
  57. package/dist/components/buckets/BucketLifecycleList.d.ts +2 -2
  58. package/dist/components/buckets/BucketLifecycleList.js +47 -47
  59. package/dist/components/buckets/BucketList.d.ts +7 -8
  60. package/dist/components/buckets/BucketList.js +158 -101
  61. package/dist/components/buckets/BucketLocation.js +4 -4
  62. package/dist/components/buckets/BucketOverview.d.ts +22 -2
  63. package/dist/components/buckets/BucketOverview.js +394 -187
  64. package/dist/components/buckets/BucketPage.js +43 -21
  65. package/dist/components/buckets/BucketPolicyPage.js +155 -127
  66. package/dist/components/buckets/BucketReplicationFormPage.js +134 -133
  67. package/dist/components/buckets/BucketReplicationList.d.ts +2 -2
  68. package/dist/components/buckets/BucketReplicationList.js +42 -42
  69. package/dist/components/buckets/BucketVersioning.d.ts +4 -0
  70. package/dist/components/buckets/BucketVersioning.js +76 -0
  71. package/dist/components/buckets/DeleteBucketButton.js +8 -8
  72. package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +2 -2
  73. package/dist/components/buckets/DeleteBucketConfigRuleButton.js +2 -2
  74. package/dist/components/buckets/EmptyBucketButton.js +24 -24
  75. package/dist/components/buckets/EmptyBucketSummary.d.ts +2 -2
  76. package/dist/components/buckets/EmptyBucketSummary.js +1 -1
  77. package/dist/components/buckets/EmptyBucketSummaryList.d.ts +1 -1
  78. package/dist/components/buckets/EmptyBucketSummaryList.js +22 -22
  79. package/dist/components/buckets/__tests__/BucketVersioning.test.d.ts +1 -0
  80. package/dist/components/buckets/__tests__/BucketVersioning.test.js +163 -0
  81. package/dist/components/buckets/notifications/BucketNotificationFormPage.d.ts +1 -0
  82. package/dist/components/buckets/notifications/BucketNotificationFormPage.js +316 -0
  83. package/dist/components/buckets/notifications/BucketNotificationList.d.ts +10 -0
  84. package/dist/components/buckets/notifications/BucketNotificationList.js +267 -0
  85. package/dist/components/buckets/notifications/EventsSection.js +145 -29
  86. package/dist/components/buckets/notifications/__tests__/events.test.d.ts +1 -0
  87. package/dist/components/buckets/notifications/__tests__/events.test.js +56 -0
  88. package/dist/components/buckets/notifications/events.d.ts +71 -7
  89. package/dist/components/buckets/notifications/events.js +98 -16
  90. package/dist/components/index.d.ts +27 -20
  91. package/dist/components/index.js +17 -10
  92. package/dist/components/layouts/ArrowNavigation.d.ts +3 -0
  93. package/dist/components/layouts/ArrowNavigation.js +28 -0
  94. package/dist/components/layouts/BrowserPageLayout.d.ts +5 -1
  95. package/dist/components/layouts/BrowserPageLayout.js +10 -5
  96. package/dist/components/objects/CreateFolderButton.d.ts +2 -2
  97. package/dist/components/objects/CreateFolderButton.js +12 -12
  98. package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
  99. package/dist/components/objects/DeleteObjectButton.js +19 -21
  100. package/dist/components/objects/GetPresignedUrlButton.d.ts +7 -0
  101. package/dist/components/objects/GetPresignedUrlButton.js +255 -0
  102. package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +2 -2
  103. package/dist/components/objects/ObjectDetails/ObjectMetadata.js +263 -230
  104. package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +2 -2
  105. package/dist/components/objects/ObjectDetails/ObjectSummary.js +540 -138
  106. package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +2 -2
  107. package/dist/components/objects/ObjectDetails/ObjectTags.js +95 -123
  108. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.d.ts +1 -0
  109. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +516 -0
  110. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.d.ts +1 -0
  111. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +1064 -0
  112. package/dist/components/objects/ObjectDetails/index.d.ts +18 -2
  113. package/dist/components/objects/ObjectDetails/index.js +152 -40
  114. package/dist/components/objects/ObjectList.d.ts +12 -10
  115. package/dist/components/objects/ObjectList.js +590 -263
  116. package/dist/components/objects/ObjectLock/EditRetentionButton.js +4 -4
  117. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +15 -15
  118. package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +1 -1
  119. package/dist/components/objects/ObjectLock/ObjectLockSettings.js +32 -31
  120. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +1 -1
  121. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +6 -6
  122. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +51 -51
  123. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +78 -78
  124. package/dist/components/objects/ObjectPage.js +12 -8
  125. package/dist/components/objects/UploadButton.d.ts +3 -3
  126. package/dist/components/objects/UploadButton.js +10 -10
  127. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.d.ts +1 -0
  128. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.js +531 -0
  129. package/dist/components/providers/DataBrowserProvider.d.ts +23 -12
  130. package/dist/components/providers/DataBrowserProvider.js +60 -38
  131. package/dist/components/providers/QueryProvider.d.ts +9 -0
  132. package/dist/components/providers/QueryProvider.js +21 -0
  133. package/dist/components/search/MetadataSearch.js +29 -28
  134. package/dist/components/search/SearchHints.js +1 -1
  135. package/dist/components/ui/ArrayFieldActions.js +12 -7
  136. package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +2 -2
  137. package/dist/components/ui/ConfirmDeleteRuleModal.js +6 -1
  138. package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
  139. package/dist/components/ui/DeleteObjectModalContent.js +12 -12
  140. package/dist/components/ui/FilterFormSection.d.ts +2 -2
  141. package/dist/components/ui/FilterFormSection.js +29 -29
  142. package/dist/components/ui/Search.elements.d.ts +2 -2
  143. package/dist/components/ui/Search.elements.js +7 -7
  144. package/dist/components/ui/Table.elements.d.ts +2 -1
  145. package/dist/components/ui/Table.elements.js +18 -12
  146. package/dist/config/__tests__/factory.test.d.ts +1 -0
  147. package/dist/config/__tests__/factory.test.js +311 -0
  148. package/dist/config/factory.d.ts +10 -56
  149. package/dist/config/factory.js +23 -71
  150. package/dist/config/types.d.ts +212 -34
  151. package/dist/contexts/DataBrowserUICustomizationContext.d.ts +27 -0
  152. package/dist/contexts/DataBrowserUICustomizationContext.js +13 -0
  153. package/dist/hooks/__tests__/useAccessibleBuckets.test.d.ts +1 -0
  154. package/dist/hooks/__tests__/useAccessibleBuckets.test.js +145 -0
  155. package/dist/hooks/__tests__/useISVBucketDetection.test.js +45 -45
  156. package/dist/hooks/__tests__/useIsBucketEmpty.test.js +27 -27
  157. package/dist/hooks/__tests__/useLoginMutation.test.d.ts +1 -0
  158. package/dist/hooks/__tests__/useLoginMutation.test.js +194 -0
  159. package/dist/hooks/bucketConfiguration.d.ts +8 -1
  160. package/dist/hooks/bucketConfiguration.js +52 -51
  161. package/dist/hooks/bucketOperations.d.ts +10 -1
  162. package/dist/hooks/bucketOperations.js +10 -9
  163. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +80 -80
  164. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +80 -80
  165. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +44 -44
  166. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +63 -63
  167. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +65 -65
  168. package/dist/hooks/factories/index.d.ts +4 -4
  169. package/dist/hooks/factories/index.js +2 -2
  170. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
  171. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +16 -13
  172. package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
  173. package/dist/hooks/factories/useCreateS3LoginHook.js +1 -1
  174. package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
  175. package/dist/hooks/factories/useCreateS3MutationHook.js +7 -2
  176. package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
  177. package/dist/hooks/factories/useCreateS3QueryHook.js +11 -6
  178. package/dist/hooks/index.d.ts +19 -12
  179. package/dist/hooks/index.js +16 -9
  180. package/dist/hooks/loginOperations.d.ts +1 -1
  181. package/dist/hooks/loginOperations.js +1 -1
  182. package/dist/hooks/objectOperations.d.ts +2 -2
  183. package/dist/hooks/objectOperations.js +50 -49
  184. package/dist/hooks/presignedOperations.d.ts +4 -4
  185. package/dist/hooks/presignedOperations.js +5 -5
  186. package/dist/hooks/useAccessibleBuckets.d.ts +11 -0
  187. package/dist/hooks/useAccessibleBuckets.js +115 -0
  188. package/dist/hooks/useBatchObjectLegalHold.d.ts +11 -0
  189. package/dist/hooks/useBatchObjectLegalHold.js +48 -0
  190. package/dist/hooks/useBucketConfigEditor.d.ts +31 -0
  191. package/dist/hooks/useBucketConfigEditor.js +82 -0
  192. package/dist/hooks/useDataBrowserNavigate.d.ts +28 -0
  193. package/dist/hooks/useDataBrowserNavigate.js +24 -0
  194. package/dist/hooks/useDeleteBucketConfigRule.d.ts +2 -2
  195. package/dist/hooks/useDeleteBucketConfigRule.js +4 -4
  196. package/dist/hooks/useEmptyBucket.js +11 -11
  197. package/dist/hooks/useFeatures.d.ts +7 -0
  198. package/dist/hooks/useFeatures.js +8 -0
  199. package/dist/hooks/useISVBucketDetection.js +6 -6
  200. package/dist/hooks/useIsBucketEmpty.js +4 -4
  201. package/dist/hooks/useLimitedAccessFlow.d.ts +48 -0
  202. package/dist/hooks/useLimitedAccessFlow.js +23 -0
  203. package/dist/hooks/useS3Client.d.ts +6 -0
  204. package/dist/hooks/useS3Client.js +3 -2
  205. package/dist/hooks/useS3ConfigSwitch.d.ts +11 -0
  206. package/dist/hooks/useS3ConfigSwitch.js +37 -0
  207. package/dist/hooks/useSupportedNotificationEvents.d.ts +6 -0
  208. package/dist/hooks/useSupportedNotificationEvents.js +8 -0
  209. package/dist/index.d.ts +6 -6
  210. package/dist/index.js +2 -2
  211. package/dist/schemas/bucketPolicySchema.json +3 -13
  212. package/dist/test/msw/handlers/deleteBucket.d.ts +1 -1
  213. package/dist/test/msw/handlers/deleteBucket.js +20 -10
  214. package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -1
  215. package/dist/test/msw/handlers/getBucketAcl.js +29 -17
  216. package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -1
  217. package/dist/test/msw/handlers/getBucketLocation.js +29 -15
  218. package/dist/test/msw/handlers/getBucketPolicy.d.ts +1 -1
  219. package/dist/test/msw/handlers/getBucketPolicy.js +52 -32
  220. package/dist/test/msw/handlers/headObject.d.ts +1 -1
  221. package/dist/test/msw/handlers/headObject.js +31 -13
  222. package/dist/test/msw/handlers/listBuckets.d.ts +1 -1
  223. package/dist/test/msw/handlers/listBuckets.js +5 -3
  224. package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -1
  225. package/dist/test/msw/handlers/listObjectVersions.js +38 -26
  226. package/dist/test/msw/handlers/listObjects.d.ts +1 -1
  227. package/dist/test/msw/handlers/listObjects.js +35 -23
  228. package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -1
  229. package/dist/test/msw/handlers/objectLegalHold.js +32 -17
  230. package/dist/test/msw/handlers/objectRetention.d.ts +1 -1
  231. package/dist/test/msw/handlers/objectRetention.js +31 -17
  232. package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -1
  233. package/dist/test/msw/handlers/putBucketAcl.js +29 -14
  234. package/dist/test/msw/handlers/putObject.d.ts +1 -1
  235. package/dist/test/msw/handlers/putObject.js +27 -12
  236. package/dist/test/msw/handlers.d.ts +3 -3
  237. package/dist/test/msw/handlers.js +77 -54
  238. package/dist/test/msw/index.d.ts +2 -2
  239. package/dist/test/msw/index.js +1 -1
  240. package/dist/test/msw/server.d.ts +1 -1
  241. package/dist/test/msw/server.js +1 -1
  242. package/dist/test/msw/utils.js +2 -2
  243. package/dist/test/setup.d.ts +1 -1
  244. package/dist/test/setup.js +13 -30
  245. package/dist/test/testUtils.d.ts +85 -33
  246. package/dist/test/testUtils.js +176 -111
  247. package/dist/test/utils/errorHandling.test.js +119 -119
  248. package/dist/types/index.d.ts +49 -36
  249. package/dist/types/monaco.d.ts +13 -0
  250. package/dist/types/monaco.js +0 -0
  251. package/dist/utils/__tests__/proxyMiddleware.test.d.ts +1 -0
  252. package/dist/utils/__tests__/proxyMiddleware.test.js +579 -0
  253. package/dist/utils/__tests__/s3Client.test.d.ts +1 -0
  254. package/dist/utils/__tests__/s3Client.test.js +340 -0
  255. package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
  256. package/dist/utils/__tests__/s3ConfigIdentifier.test.js +437 -0
  257. package/dist/utils/constants.d.ts +10 -0
  258. package/dist/utils/constants.js +19 -9
  259. package/dist/utils/deletion/index.d.ts +2 -2
  260. package/dist/utils/deletion/index.js +1 -1
  261. package/dist/utils/deletion/messages.d.ts +1 -1
  262. package/dist/utils/deletion/messages.js +4 -4
  263. package/dist/utils/errorHandling.d.ts +3 -3
  264. package/dist/utils/errorHandling.js +6 -6
  265. package/dist/utils/hooks.js +8 -8
  266. package/dist/utils/index.d.ts +5 -4
  267. package/dist/utils/index.js +4 -2
  268. package/dist/utils/proxyMiddleware.d.ts +32 -13
  269. package/dist/utils/proxyMiddleware.js +90 -36
  270. package/dist/utils/s3Client.d.ts +14 -4
  271. package/dist/utils/s3Client.js +5 -26
  272. package/dist/utils/s3ConfigIdentifier.d.ts +79 -0
  273. package/dist/utils/s3ConfigIdentifier.js +57 -0
  274. package/dist/utils/s3RuleUtils.d.ts +5 -5
  275. package/dist/utils/s3RuleUtils.js +17 -17
  276. package/package.json +10 -8
  277. package/dist/components/__tests__/BucketNotificationCreatePage.test.js +0 -316
  278. package/dist/components/buckets/BucketPolicyButton.d.ts +0 -7
  279. package/dist/components/buckets/notifications/BucketNotificationCreatePage.d.ts +0 -1
  280. package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +0 -234
  281. package/dist/hooks/useLoginMutation.d.ts +0 -21
  282. package/dist/hooks/useLoginMutation.js +0 -9
  283. package/dist/utils/useFeatures.d.ts +0 -1
  284. package/dist/utils/useFeatures.js +0 -7
  285. /package/dist/components/__tests__/{BucketNotificationCreatePage.test.d.ts → BucketAccessor.test.d.ts} +0 -0
@@ -1,24 +1,24 @@
1
- import { useIsBucketEmpty } from "../useIsBucketEmpty.js";
2
- import { useListObjects } from "../objectOperations.js";
3
1
  import { renderHookWithWrapper } from "../../test/testUtils.js";
4
- jest.mock("../objectOperations");
2
+ import { useListObjects } from "../objectOperations.js";
3
+ import { useIsBucketEmpty } from "../useIsBucketEmpty.js";
4
+ jest.mock('../objectOperations');
5
5
  const mockUseListObjects = jest.mocked(useListObjects);
6
- describe("useIsBucketEmpty", ()=>{
6
+ describe('useIsBucketEmpty', ()=>{
7
7
  beforeEach(()=>{
8
8
  jest.clearAllMocks();
9
9
  });
10
- it("returns loading state when checking bucket", ()=>{
10
+ it('returns loading state when checking bucket', ()=>{
11
11
  mockUseListObjects.mockReturnValue({
12
12
  data: void 0,
13
- status: "pending",
13
+ status: 'pending',
14
14
  error: null
15
15
  });
16
- const { result } = renderHookWithWrapper(()=>useIsBucketEmpty("test-bucket"));
16
+ const { result } = renderHookWithWrapper(()=>useIsBucketEmpty('test-bucket'));
17
17
  expect(result.current.isEmpty).toBe(null);
18
18
  expect(result.current.isLoading).toBe(true);
19
19
  expect(result.current.error).toBe(null);
20
20
  });
21
- it("returns true when bucket is empty", ()=>{
21
+ it('returns true when bucket is empty', ()=>{
22
22
  mockUseListObjects.mockReturnValue({
23
23
  data: {
24
24
  pages: [
@@ -28,35 +28,35 @@ describe("useIsBucketEmpty", ()=>{
28
28
  }
29
29
  ]
30
30
  },
31
- status: "success",
31
+ status: 'success',
32
32
  error: null
33
33
  });
34
- const { result } = renderHookWithWrapper(()=>useIsBucketEmpty("test-bucket"));
34
+ const { result } = renderHookWithWrapper(()=>useIsBucketEmpty('test-bucket'));
35
35
  expect(result.current.isEmpty).toBe(true);
36
36
  expect(result.current.isLoading).toBe(false);
37
37
  });
38
- it("returns false when bucket has objects", ()=>{
38
+ it('returns false when bucket has objects', ()=>{
39
39
  mockUseListObjects.mockReturnValue({
40
40
  data: {
41
41
  pages: [
42
42
  {
43
43
  Contents: [
44
44
  {
45
- Key: "file.txt"
45
+ Key: 'file.txt'
46
46
  }
47
47
  ],
48
48
  CommonPrefixes: []
49
49
  }
50
50
  ]
51
51
  },
52
- status: "success",
52
+ status: 'success',
53
53
  error: null
54
54
  });
55
- const { result } = renderHookWithWrapper(()=>useIsBucketEmpty("test-bucket"));
55
+ const { result } = renderHookWithWrapper(()=>useIsBucketEmpty('test-bucket'));
56
56
  expect(result.current.isEmpty).toBe(false);
57
57
  expect(result.current.isLoading).toBe(false);
58
58
  });
59
- it("returns false when bucket has folders", ()=>{
59
+ it('returns false when bucket has folders', ()=>{
60
60
  mockUseListObjects.mockReturnValue({
61
61
  data: {
62
62
  pages: [
@@ -64,32 +64,32 @@ describe("useIsBucketEmpty", ()=>{
64
64
  Contents: [],
65
65
  CommonPrefixes: [
66
66
  {
67
- Prefix: "folder/"
67
+ Prefix: 'folder/'
68
68
  }
69
69
  ]
70
70
  }
71
71
  ]
72
72
  },
73
- status: "success",
73
+ status: 'success',
74
74
  error: null
75
75
  });
76
- const { result } = renderHookWithWrapper(()=>useIsBucketEmpty("test-bucket"));
76
+ const { result } = renderHookWithWrapper(()=>useIsBucketEmpty('test-bucket'));
77
77
  expect(result.current.isEmpty).toBe(false);
78
78
  expect(result.current.isLoading).toBe(false);
79
79
  });
80
- it("handles error state", ()=>{
81
- const testError = new Error("Access denied");
80
+ it('handles error state', ()=>{
81
+ const testError = new Error('Access denied');
82
82
  mockUseListObjects.mockReturnValue({
83
83
  data: void 0,
84
- status: "error",
84
+ status: 'error',
85
85
  error: testError
86
86
  });
87
- const { result } = renderHookWithWrapper(()=>useIsBucketEmpty("test-bucket"));
87
+ const { result } = renderHookWithWrapper(()=>useIsBucketEmpty('test-bucket'));
88
88
  expect(result.current.isEmpty).toBe(null);
89
89
  expect(result.current.isLoading).toBe(false);
90
90
  expect(result.current.error).toBe(testError);
91
91
  });
92
- it("ignores invalid objects and prefixes", ()=>{
92
+ it('ignores invalid objects and prefixes', ()=>{
93
93
  mockUseListObjects.mockReturnValue({
94
94
  data: {
95
95
  pages: [
@@ -99,7 +99,7 @@ describe("useIsBucketEmpty", ()=>{
99
99
  Key: void 0
100
100
  },
101
101
  {
102
- Key: ""
102
+ Key: ''
103
103
  }
104
104
  ],
105
105
  CommonPrefixes: [
@@ -107,16 +107,16 @@ describe("useIsBucketEmpty", ()=>{
107
107
  Prefix: null
108
108
  },
109
109
  {
110
- Prefix: ""
110
+ Prefix: ''
111
111
  }
112
112
  ]
113
113
  }
114
114
  ]
115
115
  },
116
- status: "success",
116
+ status: 'success',
117
117
  error: null
118
118
  });
119
- const { result } = renderHookWithWrapper(()=>useIsBucketEmpty("test-bucket"));
119
+ const { result } = renderHookWithWrapper(()=>useIsBucketEmpty('test-bucket'));
120
120
  expect(result.current.isEmpty).toBe(true);
121
121
  });
122
122
  });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,194 @@
1
+ import { waitFor } from "@testing-library/react";
2
+ import { mockS3Client, renderHookWithWrapper, setupCommonMocks } from "../../test/testUtils.js";
3
+ import { useLoginMutation } from "../loginOperations.js";
4
+ jest.mock('@aws-sdk/client-s3');
5
+ describe('useLoginMutation', ()=>{
6
+ beforeEach(()=>{
7
+ setupCommonMocks();
8
+ jest.clearAllMocks();
9
+ });
10
+ it('calls onSuccess when login is successful', async ()=>{
11
+ const onSuccess = jest.fn();
12
+ mockS3Client.send.mockResolvedValue({
13
+ Buckets: []
14
+ });
15
+ const { result } = renderHookWithWrapper(()=>useLoginMutation({
16
+ onSuccess
17
+ }));
18
+ const config = {
19
+ endpoint: 'https://s3.amazonaws.com',
20
+ region: 'us-east-1',
21
+ forcePathStyle: true,
22
+ credentials: {
23
+ accessKeyId: 'test-key',
24
+ secretAccessKey: 'test-secret'
25
+ }
26
+ };
27
+ result.current.mutate(config);
28
+ await waitFor(()=>{
29
+ expect(result.current.isSuccess).toBe(true);
30
+ });
31
+ expect(onSuccess).toHaveBeenCalled();
32
+ expect(result.current.data).toEqual({
33
+ authenticated: true,
34
+ config
35
+ });
36
+ });
37
+ it('calls onError when user lacks ListBuckets permission', async ()=>{
38
+ const onError = jest.fn();
39
+ class AccessDeniedError extends Error {
40
+ constructor(message){
41
+ super(message);
42
+ this.name = 'AccessDenied';
43
+ }
44
+ $metadata = {
45
+ httpStatusCode: 403
46
+ };
47
+ }
48
+ const accessDeniedError = new AccessDeniedError('Access Denied');
49
+ mockS3Client.send.mockRejectedValue(accessDeniedError);
50
+ const { result } = renderHookWithWrapper(()=>useLoginMutation({
51
+ onError
52
+ }));
53
+ const config = {
54
+ endpoint: 'https://s3.amazonaws.com',
55
+ region: 'us-east-1',
56
+ forcePathStyle: true,
57
+ credentials: {
58
+ accessKeyId: 'test-key',
59
+ secretAccessKey: 'test-secret'
60
+ }
61
+ };
62
+ result.current.mutate(config);
63
+ await waitFor(()=>{
64
+ expect(result.current.isError).toBe(true);
65
+ });
66
+ expect(onError).toHaveBeenCalled();
67
+ expect(result.current.error?.name).toBe('AccessDenied');
68
+ });
69
+ it('calls onError for other errors', async ()=>{
70
+ const onError = jest.fn();
71
+ class InvalidAccessKeyIdError extends Error {
72
+ constructor(message){
73
+ super(message);
74
+ this.name = 'InvalidAccessKeyId';
75
+ }
76
+ $metadata = {
77
+ httpStatusCode: 403
78
+ };
79
+ }
80
+ const invalidCredentialsError = new InvalidAccessKeyIdError('The access key ID you provided does not exist');
81
+ mockS3Client.send.mockRejectedValue(invalidCredentialsError);
82
+ const { result } = renderHookWithWrapper(()=>useLoginMutation({
83
+ onError
84
+ }));
85
+ const config = {
86
+ endpoint: 'https://s3.amazonaws.com',
87
+ region: 'us-east-1',
88
+ forcePathStyle: true,
89
+ credentials: {
90
+ accessKeyId: 'invalid-key',
91
+ secretAccessKey: 'invalid-secret'
92
+ }
93
+ };
94
+ result.current.mutate(config);
95
+ await waitFor(()=>{
96
+ expect(result.current.isError).toBe(true);
97
+ });
98
+ expect(onError).toHaveBeenCalled();
99
+ expect(result.current.error?.name).toBe('InvalidAccessKeyId');
100
+ });
101
+ it('works without onError callback', async ()=>{
102
+ class AccessDeniedError extends Error {
103
+ constructor(message){
104
+ super(message);
105
+ this.name = 'AccessDenied';
106
+ }
107
+ $metadata = {
108
+ httpStatusCode: 403
109
+ };
110
+ }
111
+ const accessDeniedError = new AccessDeniedError('Access Denied');
112
+ mockS3Client.send.mockRejectedValue(accessDeniedError);
113
+ const { result } = renderHookWithWrapper(()=>useLoginMutation());
114
+ const config = {
115
+ endpoint: 'https://s3.amazonaws.com',
116
+ region: 'us-east-1',
117
+ forcePathStyle: true,
118
+ credentials: {
119
+ accessKeyId: 'test-key',
120
+ secretAccessKey: 'test-secret'
121
+ }
122
+ };
123
+ result.current.mutate(config);
124
+ await waitFor(()=>{
125
+ expect(result.current.isError).toBe(true);
126
+ });
127
+ expect(result.current.error?.name).toBe('AccessDenied');
128
+ });
129
+ it('returns authenticated config on successful login', async ()=>{
130
+ mockS3Client.send.mockResolvedValue({
131
+ Buckets: []
132
+ });
133
+ const { result } = renderHookWithWrapper(()=>useLoginMutation());
134
+ const config = {
135
+ endpoint: 'https://s3.amazonaws.com',
136
+ region: 'us-east-1',
137
+ forcePathStyle: true,
138
+ credentials: {
139
+ accessKeyId: 'test-key',
140
+ secretAccessKey: 'test-secret'
141
+ }
142
+ };
143
+ result.current.mutate(config);
144
+ await waitFor(()=>{
145
+ expect(result.current.isSuccess).toBe(true);
146
+ });
147
+ expect(result.current.data).toEqual({
148
+ authenticated: true,
149
+ config
150
+ });
151
+ });
152
+ it('handles network errors appropriately', async ()=>{
153
+ const onError = jest.fn();
154
+ const networkError = new Error('Network request failed');
155
+ mockS3Client.send.mockRejectedValue(networkError);
156
+ const { result } = renderHookWithWrapper(()=>useLoginMutation({
157
+ onError
158
+ }));
159
+ const config = {
160
+ endpoint: 'https://s3.amazonaws.com',
161
+ region: 'us-east-1',
162
+ forcePathStyle: true,
163
+ credentials: {
164
+ accessKeyId: 'test-key',
165
+ secretAccessKey: 'test-secret'
166
+ }
167
+ };
168
+ result.current.mutate(config);
169
+ await waitFor(()=>{
170
+ expect(result.current.isError).toBe(true);
171
+ });
172
+ expect(onError).toHaveBeenCalled();
173
+ });
174
+ it('validates credentials by calling ListBuckets command', async ()=>{
175
+ mockS3Client.send.mockResolvedValue({
176
+ Buckets: []
177
+ });
178
+ const { result } = renderHookWithWrapper(()=>useLoginMutation());
179
+ const config = {
180
+ endpoint: 'https://s3.amazonaws.com',
181
+ region: 'us-east-1',
182
+ forcePathStyle: true,
183
+ credentials: {
184
+ accessKeyId: 'test-key',
185
+ secretAccessKey: 'test-secret'
186
+ }
187
+ };
188
+ result.current.mutate(config);
189
+ await waitFor(()=>{
190
+ expect(result.current.isSuccess).toBe(true);
191
+ });
192
+ expect(mockS3Client.send).toHaveBeenCalled();
193
+ });
194
+ });
@@ -4,7 +4,7 @@
4
4
  * This file contains hooks for managing bucket configuration settings
5
5
  * like ACL, policies, versioning, CORS, lifecycle, etc.
6
6
  */
7
- import { GetBucketAclCommandInput, GetBucketAclCommandOutput, PutBucketAclCommandInput, PutBucketAclCommandOutput, GetBucketPolicyCommandInput, GetBucketPolicyCommandOutput, PutBucketPolicyCommandInput, PutBucketPolicyCommandOutput, DeleteBucketPolicyCommandInput, DeleteBucketPolicyCommandOutput, GetBucketVersioningCommandInput, GetBucketVersioningCommandOutput, PutBucketVersioningCommandInput, PutBucketVersioningCommandOutput, GetBucketCorsCommandInput, GetBucketCorsCommandOutput, PutBucketCorsCommandInput, PutBucketCorsCommandOutput, DeleteBucketCorsCommandInput, DeleteBucketCorsCommandOutput, GetBucketLifecycleConfigurationCommandInput, GetBucketLifecycleConfigurationCommandOutput, PutBucketLifecycleConfigurationCommandInput, PutBucketLifecycleConfigurationCommandOutput, DeleteBucketLifecycleCommandInput, DeleteBucketLifecycleCommandOutput, GetBucketNotificationConfigurationCommandInput, GetBucketNotificationConfigurationCommandOutput, PutBucketNotificationConfigurationCommandInput, PutBucketNotificationConfigurationCommandOutput, GetBucketEncryptionCommandInput, GetBucketEncryptionCommandOutput, PutBucketEncryptionCommandInput, PutBucketEncryptionCommandOutput, GetBucketTaggingCommandInput, GetBucketTaggingCommandOutput, PutBucketTaggingCommandInput, PutBucketTaggingCommandOutput, DeleteBucketTaggingCommandInput, DeleteBucketTaggingCommandOutput, GetObjectLockConfigurationCommandInput, GetObjectLockConfigurationCommandOutput, PutObjectLockConfigurationCommandInput, PutObjectLockConfigurationCommandOutput, GetBucketReplicationCommandInput, GetBucketReplicationCommandOutput, PutBucketReplicationCommandInput, PutBucketReplicationCommandOutput, DeleteBucketReplicationCommandInput, DeleteBucketReplicationCommandOutput } from "@aws-sdk/client-s3";
7
+ import { type DeleteBucketCorsCommandInput, type DeleteBucketCorsCommandOutput, type DeleteBucketLifecycleCommandInput, type DeleteBucketLifecycleCommandOutput, type DeleteBucketPolicyCommandInput, type DeleteBucketPolicyCommandOutput, type DeleteBucketReplicationCommandInput, type DeleteBucketReplicationCommandOutput, type DeleteBucketTaggingCommandInput, type DeleteBucketTaggingCommandOutput, type GetBucketAclCommandInput, type GetBucketAclCommandOutput, type GetBucketCorsCommandInput, type GetBucketCorsCommandOutput, type GetBucketEncryptionCommandInput, type GetBucketEncryptionCommandOutput, type GetBucketLifecycleConfigurationCommandInput, type GetBucketLifecycleConfigurationCommandOutput, type GetBucketNotificationConfigurationCommandInput, type GetBucketNotificationConfigurationCommandOutput, type GetBucketPolicyCommandInput, type GetBucketPolicyCommandOutput, type GetBucketReplicationCommandInput, type GetBucketReplicationCommandOutput, type GetBucketTaggingCommandInput, type GetBucketTaggingCommandOutput, type GetBucketVersioningCommandInput, type GetBucketVersioningCommandOutput, type GetObjectLockConfigurationCommandInput, type GetObjectLockConfigurationCommandOutput, type GetPublicAccessBlockCommandInput, type GetPublicAccessBlockCommandOutput, type PutBucketAclCommandInput, type PutBucketAclCommandOutput, type PutBucketCorsCommandInput, type PutBucketCorsCommandOutput, type PutBucketEncryptionCommandInput, type PutBucketEncryptionCommandOutput, type PutBucketLifecycleConfigurationCommandInput, type PutBucketLifecycleConfigurationCommandOutput, type PutBucketNotificationConfigurationCommandInput, type PutBucketNotificationConfigurationCommandOutput, type PutBucketPolicyCommandInput, type PutBucketPolicyCommandOutput, type PutBucketReplicationCommandInput, type PutBucketReplicationCommandOutput, type PutBucketTaggingCommandInput, type PutBucketTaggingCommandOutput, type PutBucketVersioningCommandInput, type PutBucketVersioningCommandOutput, type PutObjectLockConfigurationCommandInput, type PutObjectLockConfigurationCommandOutput } from '@aws-sdk/client-s3';
8
8
  /**
9
9
  * Hook for retrieving S3 bucket access control list (ACL) settings
10
10
  *
@@ -166,3 +166,10 @@ export declare const useSetBucketReplication: (options?: Omit<import("@tanstack/
166
166
  * been replicated remain in the destination bucket.
167
167
  */
168
168
  export declare const useDeleteBucketReplication: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<DeleteBucketReplicationCommandOutput, import("..").EnhancedS3Error, DeleteBucketReplicationCommandInput, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<DeleteBucketReplicationCommandOutput, import("..").EnhancedS3Error, DeleteBucketReplicationCommandInput>;
169
+ /**
170
+ * Hook for retrieving S3 bucket public access block configuration
171
+ *
172
+ * Fetches the public access block configuration for an S3 bucket.
173
+ * This configuration determines whether public access is blocked at the bucket level.
174
+ */
175
+ export declare const useGetPublicAccessBlock: (params?: GetPublicAccessBlockCommandInput | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<GetPublicAccessBlockCommandOutput, import("..").EnhancedS3Error, GetPublicAccessBlockCommandOutput, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<GetPublicAccessBlockCommandOutput, import("..").EnhancedS3Error>;
@@ -1,67 +1,68 @@
1
- import { DeleteBucketCorsCommand, DeleteBucketLifecycleCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, GetBucketAclCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketNotificationConfigurationCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetObjectLockConfigurationCommand, PutBucketAclCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketLifecycleConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutObjectLockConfigurationCommand } from "@aws-sdk/client-s3";
2
- import { useCreateS3QueryHook } from "./factories/useCreateS3QueryHook.js";
1
+ import { DeleteBucketCorsCommand, DeleteBucketLifecycleCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, GetBucketAclCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketNotificationConfigurationCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, PutBucketAclCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketLifecycleConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutObjectLockConfigurationCommand } from "@aws-sdk/client-s3";
3
2
  import { useCreateS3MutationHook } from "./factories/useCreateS3MutationHook.js";
4
- const useGetBucketAcl = useCreateS3QueryHook(GetBucketAclCommand, "GetBucketAcl");
5
- const useSetBucketAcl = useCreateS3MutationHook(PutBucketAclCommand, "PutBucketAcl", [
6
- "GetBucketAcl",
7
- "ListBuckets"
3
+ import { useCreateS3QueryHook } from "./factories/useCreateS3QueryHook.js";
4
+ const useGetBucketAcl = useCreateS3QueryHook(GetBucketAclCommand, 'GetBucketAcl');
5
+ const useSetBucketAcl = useCreateS3MutationHook(PutBucketAclCommand, 'PutBucketAcl', [
6
+ 'GetBucketAcl',
7
+ 'ListBuckets'
8
8
  ]);
9
- const useGetBucketPolicy = useCreateS3QueryHook(GetBucketPolicyCommand, "GetBucketPolicy");
10
- const useSetBucketPolicy = useCreateS3MutationHook(PutBucketPolicyCommand, "PutBucketPolicy", [
11
- "GetBucketPolicy",
12
- "ListBuckets"
9
+ const useGetBucketPolicy = useCreateS3QueryHook(GetBucketPolicyCommand, 'GetBucketPolicy');
10
+ const useSetBucketPolicy = useCreateS3MutationHook(PutBucketPolicyCommand, 'PutBucketPolicy', [
11
+ 'GetBucketPolicy',
12
+ 'ListBuckets'
13
13
  ]);
14
- const useDeleteBucketPolicy = useCreateS3MutationHook(DeleteBucketPolicyCommand, "DeleteBucketPolicy", [
15
- "GetBucketPolicy"
14
+ const useDeleteBucketPolicy = useCreateS3MutationHook(DeleteBucketPolicyCommand, 'DeleteBucketPolicy', [
15
+ 'GetBucketPolicy'
16
16
  ]);
17
- const useGetBucketVersioning = useCreateS3QueryHook(GetBucketVersioningCommand, "GetBucketVersioning");
18
- const useSetBucketVersioning = useCreateS3MutationHook(PutBucketVersioningCommand, "PutBucketVersioning", [
19
- "GetBucketVersioning"
17
+ const useGetBucketVersioning = useCreateS3QueryHook(GetBucketVersioningCommand, 'GetBucketVersioning');
18
+ const useSetBucketVersioning = useCreateS3MutationHook(PutBucketVersioningCommand, 'PutBucketVersioning', [
19
+ 'GetBucketVersioning'
20
20
  ]);
21
- const useGetBucketCors = useCreateS3QueryHook(GetBucketCorsCommand, "GetBucketCors");
22
- const useSetBucketCors = useCreateS3MutationHook(PutBucketCorsCommand, "PutBucketCors", [
23
- "GetBucketCors",
24
- "ListBuckets"
21
+ const useGetBucketCors = useCreateS3QueryHook(GetBucketCorsCommand, 'GetBucketCors');
22
+ const useSetBucketCors = useCreateS3MutationHook(PutBucketCorsCommand, 'PutBucketCors', [
23
+ 'GetBucketCors',
24
+ 'ListBuckets'
25
25
  ]);
26
- const useDeleteBucketCors = useCreateS3MutationHook(DeleteBucketCorsCommand, "DeleteBucketCors", [
27
- "GetBucketCors"
26
+ const useDeleteBucketCors = useCreateS3MutationHook(DeleteBucketCorsCommand, 'DeleteBucketCors', [
27
+ 'GetBucketCors'
28
28
  ]);
29
- const useGetBucketLifecycle = useCreateS3QueryHook(GetBucketLifecycleConfigurationCommand, "GetBucketLifecycleConfiguration");
30
- const useSetBucketLifecycle = useCreateS3MutationHook(PutBucketLifecycleConfigurationCommand, "PutBucketLifecycleConfiguration", [
31
- "GetBucketLifecycleConfiguration",
32
- "ListBuckets"
29
+ const useGetBucketLifecycle = useCreateS3QueryHook(GetBucketLifecycleConfigurationCommand, 'GetBucketLifecycleConfiguration');
30
+ const useSetBucketLifecycle = useCreateS3MutationHook(PutBucketLifecycleConfigurationCommand, 'PutBucketLifecycleConfiguration', [
31
+ 'GetBucketLifecycleConfiguration',
32
+ 'ListBuckets'
33
33
  ]);
34
- const useDeleteBucketLifecycle = useCreateS3MutationHook(DeleteBucketLifecycleCommand, "DeleteBucketLifecycle", [
35
- "GetBucketLifecycleConfiguration"
34
+ const useDeleteBucketLifecycle = useCreateS3MutationHook(DeleteBucketLifecycleCommand, 'DeleteBucketLifecycle', [
35
+ 'GetBucketLifecycleConfiguration'
36
36
  ]);
37
- const useGetBucketNotification = useCreateS3QueryHook(GetBucketNotificationConfigurationCommand, "GetBucketNotificationConfiguration");
38
- const useSetBucketNotification = useCreateS3MutationHook(PutBucketNotificationConfigurationCommand, "PutBucketNotificationConfiguration", [
39
- "GetBucketNotificationConfiguration",
40
- "ListBuckets"
37
+ const useGetBucketNotification = useCreateS3QueryHook(GetBucketNotificationConfigurationCommand, 'GetBucketNotificationConfiguration');
38
+ const useSetBucketNotification = useCreateS3MutationHook(PutBucketNotificationConfigurationCommand, 'PutBucketNotificationConfiguration', [
39
+ 'GetBucketNotificationConfiguration',
40
+ 'ListBuckets'
41
41
  ]);
42
- const useGetBucketEncryption = useCreateS3QueryHook(GetBucketEncryptionCommand, "GetBucketEncryption");
43
- const useSetBucketEncryption = useCreateS3MutationHook(PutBucketEncryptionCommand, "PutBucketEncryption", [
44
- "GetBucketEncryption",
45
- "ListBuckets"
42
+ const useGetBucketEncryption = useCreateS3QueryHook(GetBucketEncryptionCommand, 'GetBucketEncryption');
43
+ const useSetBucketEncryption = useCreateS3MutationHook(PutBucketEncryptionCommand, 'PutBucketEncryption', [
44
+ 'GetBucketEncryption',
45
+ 'ListBuckets'
46
46
  ]);
47
- const useGetBucketTagging = useCreateS3QueryHook(GetBucketTaggingCommand, "GetBucketTagging");
48
- const useSetBucketTagging = useCreateS3MutationHook(PutBucketTaggingCommand, "PutBucketTagging", [
49
- "GetBucketTagging",
50
- "ListBuckets"
47
+ const useGetBucketTagging = useCreateS3QueryHook(GetBucketTaggingCommand, 'GetBucketTagging');
48
+ const useSetBucketTagging = useCreateS3MutationHook(PutBucketTaggingCommand, 'PutBucketTagging', [
49
+ 'GetBucketTagging',
50
+ 'ListBuckets'
51
51
  ]);
52
- const useDeleteBucketTagging = useCreateS3MutationHook(DeleteBucketTaggingCommand, "DeleteBucketTagging", [
53
- "GetBucketTagging"
52
+ const useDeleteBucketTagging = useCreateS3MutationHook(DeleteBucketTaggingCommand, 'DeleteBucketTagging', [
53
+ 'GetBucketTagging'
54
54
  ]);
55
- const useGetBucketObjectLockConfiguration = useCreateS3QueryHook(GetObjectLockConfigurationCommand, "GetObjectLockConfiguration");
56
- const useSetBucketObjectLockConfiguration = useCreateS3MutationHook(PutObjectLockConfigurationCommand, "PutObjectLockConfiguration", [
57
- "GetObjectLockConfiguration"
55
+ const useGetBucketObjectLockConfiguration = useCreateS3QueryHook(GetObjectLockConfigurationCommand, 'GetObjectLockConfiguration');
56
+ const useSetBucketObjectLockConfiguration = useCreateS3MutationHook(PutObjectLockConfigurationCommand, 'PutObjectLockConfiguration', [
57
+ 'GetObjectLockConfiguration'
58
58
  ]);
59
- const useGetBucketReplication = useCreateS3QueryHook(GetBucketReplicationCommand, "GetBucketReplication");
60
- const useSetBucketReplication = useCreateS3MutationHook(PutBucketReplicationCommand, "PutBucketReplication", [
61
- "GetBucketReplication",
62
- "ListBuckets"
59
+ const useGetBucketReplication = useCreateS3QueryHook(GetBucketReplicationCommand, 'GetBucketReplication');
60
+ const useSetBucketReplication = useCreateS3MutationHook(PutBucketReplicationCommand, 'PutBucketReplication', [
61
+ 'GetBucketReplication',
62
+ 'ListBuckets'
63
63
  ]);
64
- const useDeleteBucketReplication = useCreateS3MutationHook(DeleteBucketReplicationCommand, "DeleteBucketReplication", [
65
- "GetBucketReplication"
64
+ const useDeleteBucketReplication = useCreateS3MutationHook(DeleteBucketReplicationCommand, 'DeleteBucketReplication', [
65
+ 'GetBucketReplication'
66
66
  ]);
67
- export { 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 };
67
+ const useGetPublicAccessBlock = useCreateS3QueryHook(GetPublicAccessBlockCommand, 'GetPublicAccessBlock');
68
+ 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 };
@@ -4,7 +4,7 @@
4
4
  * This file contains hooks for fundamental bucket operations like
5
5
  * listing, creating, and deleting buckets.
6
6
  */
7
- import { ListBucketsCommandInput, ListBucketsCommandOutput, CreateBucketCommandInput, CreateBucketCommandOutput, DeleteBucketCommandInput, DeleteBucketCommandOutput, GetBucketLocationCommandInput, GetBucketLocationCommandOutput } from "@aws-sdk/client-s3";
7
+ import { type CreateBucketCommandInput, type CreateBucketCommandOutput, type DeleteBucketCommandInput, type DeleteBucketCommandOutput, type GetBucketLocationCommandInput, type GetBucketLocationCommandOutput, type ListBucketsCommandInput, type ListBucketsCommandOutput, type ListObjectsV2CommandInput, type ListObjectsV2CommandOutput } from '@aws-sdk/client-s3';
8
8
  /**
9
9
  * Hook for listing all S3 buckets
10
10
  *
@@ -34,3 +34,12 @@ export declare const useCreateBucket: (options?: Omit<import("@tanstack/react-qu
34
34
  * Automatically invalidates the buckets list after successful deletion.
35
35
  */
36
36
  export declare const useDeleteBucket: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<DeleteBucketCommandOutput, import("..").EnhancedS3Error, DeleteBucketCommandInput, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<DeleteBucketCommandOutput, import("..").EnhancedS3Error, DeleteBucketCommandInput>;
37
+ /**
38
+ * Hook for validating access to a specific S3 bucket.
39
+ *
40
+ * Attempts to list objects in a given bucket to verify user permissions.
41
+ * Used for users with limited permissions who cannot use ListBuckets.
42
+ *
43
+ * The hook is disabled by default and must be manually triggered via refetch().
44
+ */
45
+ export declare const useValidateBucketAccess: (params?: ListObjectsV2CommandInput | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<ListObjectsV2CommandOutput, import("..").EnhancedS3Error, ListObjectsV2CommandOutput, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<ListObjectsV2CommandOutput, import("..").EnhancedS3Error>;
@@ -1,12 +1,13 @@
1
- import { CreateBucketCommand, DeleteBucketCommand, GetBucketLocationCommand, ListBucketsCommand } from "@aws-sdk/client-s3";
2
- import { useCreateS3QueryHook } from "./factories/useCreateS3QueryHook.js";
1
+ import { CreateBucketCommand, DeleteBucketCommand, GetBucketLocationCommand, ListBucketsCommand, ListObjectsV2Command } from "@aws-sdk/client-s3";
3
2
  import { useCreateS3MutationHook } from "./factories/useCreateS3MutationHook.js";
4
- const useBuckets = useCreateS3QueryHook(ListBucketsCommand, "ListBuckets");
5
- const useGetBucketLocation = useCreateS3QueryHook(GetBucketLocationCommand, "GetBucketLocation");
6
- const useCreateBucket = useCreateS3MutationHook(CreateBucketCommand, "CreateBucket", [
7
- "ListBuckets"
3
+ import { useCreateS3QueryHook } from "./factories/useCreateS3QueryHook.js";
4
+ const useBuckets = useCreateS3QueryHook(ListBucketsCommand, 'ListBuckets');
5
+ const useGetBucketLocation = useCreateS3QueryHook(GetBucketLocationCommand, 'GetBucketLocation');
6
+ const useCreateBucket = useCreateS3MutationHook(CreateBucketCommand, 'CreateBucket', [
7
+ 'ListBuckets'
8
8
  ]);
9
- const useDeleteBucket = useCreateS3MutationHook(DeleteBucketCommand, "DeleteBucket", [
10
- "ListBuckets"
9
+ const useDeleteBucket = useCreateS3MutationHook(DeleteBucketCommand, 'DeleteBucket', [
10
+ 'ListBuckets'
11
11
  ]);
12
- export { useBuckets, useCreateBucket, useDeleteBucket, useGetBucketLocation };
12
+ const useValidateBucketAccess = useCreateS3QueryHook(ListObjectsV2Command, 'ValidateBucketAccess');
13
+ export { useBuckets, useCreateBucket, useDeleteBucket, useGetBucketLocation, useValidateBucketAccess };