@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,10 +1,10 @@
1
1
  import { renderHook, waitFor } from "@testing-library/react";
2
- import { useCreateS3MutationHook } from "../useCreateS3MutationHook.js";
3
- import { useS3Client } from "../../useS3Client.js";
2
+ import { createTestWrapper, validateFactoryHook, validateHookResult } from "../../../test/testUtils.js";
4
3
  import { createS3OperationError } from "../../../utils/errorHandling.js";
5
- import { createQueryWrapper, validateFactoryHook, validateHookResult } from "../../../test/testUtils.js";
6
- jest.mock("../../useS3Client");
7
- jest.mock("../../../utils/errorHandling");
4
+ import { useS3Client } from "../../useS3Client.js";
5
+ import { useCreateS3MutationHook } from "../useCreateS3MutationHook.js";
6
+ jest.mock('../../useS3Client');
7
+ jest.mock('../../../utils/errorHandling');
8
8
  const mockUseS3Client = useS3Client;
9
9
  const mockCreateS3OperationError = createS3OperationError;
10
10
  class MockCommand {
@@ -16,44 +16,44 @@ class MockCommand {
16
16
  const mockS3Client = {
17
17
  send: jest.fn()
18
18
  };
19
- describe("useCreateS3MutationHook - Factory Specific", ()=>{
19
+ describe('useCreateS3MutationHook - Factory Specific', ()=>{
20
20
  beforeEach(()=>{
21
21
  jest.clearAllMocks();
22
22
  mockUseS3Client.mockReturnValue(mockS3Client);
23
23
  });
24
- it("should create a functioning mutation hook", ()=>{
25
- const useMutation = useCreateS3MutationHook(MockCommand, "testMutation");
26
- validateFactoryHook(useMutation, "testMutation");
24
+ it('should create a functioning mutation hook', ()=>{
25
+ const useMutation = useCreateS3MutationHook(MockCommand, 'testMutation');
26
+ validateFactoryHook(useMutation, 'testMutation');
27
27
  const { result } = renderHook(()=>useMutation(), {
28
- wrapper: createQueryWrapper()
28
+ wrapper: createTestWrapper()
29
29
  });
30
- validateHookResult(result.current, "mutation");
30
+ validateHookResult(result.current, 'mutation');
31
31
  });
32
- it("should accept invalidation keys parameter", ()=>{
33
- const useMutation = useCreateS3MutationHook(MockCommand, "testMutation", [
34
- "ListObjects",
35
- "TestQuery"
32
+ it('should accept invalidation keys parameter', ()=>{
33
+ const useMutation = useCreateS3MutationHook(MockCommand, 'testMutation', [
34
+ 'ListObjects',
35
+ 'TestQuery'
36
36
  ]);
37
- validateFactoryHook(useMutation, "testMutation");
37
+ validateFactoryHook(useMutation, 'testMutation');
38
38
  const { result } = renderHook(()=>useMutation(), {
39
- wrapper: createQueryWrapper()
39
+ wrapper: createTestWrapper()
40
40
  });
41
- validateHookResult(result.current, "mutation");
41
+ validateHookResult(result.current, 'mutation');
42
42
  });
43
- it("should execute mutation successfully", async ()=>{
43
+ it('should execute mutation successfully', async ()=>{
44
44
  const mockResponse = {
45
45
  success: true,
46
- key: "uploaded-file.txt"
46
+ key: 'uploaded-file.txt'
47
47
  };
48
48
  mockS3Client.send.mockResolvedValue(mockResponse);
49
- const useMutation = useCreateS3MutationHook(MockCommand, "PutObject");
49
+ const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject');
50
50
  const { result } = renderHook(()=>useMutation(), {
51
- wrapper: createQueryWrapper()
51
+ wrapper: createTestWrapper()
52
52
  });
53
53
  result.current.mutate({
54
- Bucket: "test-bucket",
55
- Key: "test-file.txt",
56
- Body: "content"
54
+ Bucket: 'test-bucket',
55
+ Key: 'test-file.txt',
56
+ Body: 'content'
57
57
  });
58
58
  await waitFor(()=>{
59
59
  expect(result.current.isSuccess).toBe(true);
@@ -61,32 +61,32 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
61
61
  expect(result.current.data).toEqual(mockResponse);
62
62
  expect(mockS3Client.send).toHaveBeenCalledWith(expect.objectContaining({
63
63
  input: {
64
- Bucket: "test-bucket",
65
- Key: "test-file.txt",
66
- Body: "content"
64
+ Bucket: 'test-bucket',
65
+ Key: 'test-file.txt',
66
+ Body: 'content'
67
67
  }
68
68
  }));
69
69
  });
70
- it("should handle mutation errors with proper context", async ()=>{
71
- const mockError = new Error("Access Denied");
72
- const enhancedError = new Error("Enhanced Access Denied");
70
+ it('should handle mutation errors with proper context', async ()=>{
71
+ const mockError = new Error('Access Denied');
72
+ const enhancedError = new Error('Enhanced Access Denied');
73
73
  mockS3Client.send.mockRejectedValue(mockError);
74
74
  mockCreateS3OperationError.mockReturnValue(enhancedError);
75
- const useMutation = useCreateS3MutationHook(MockCommand, "PutObject");
75
+ const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject');
76
76
  const { result } = renderHook(()=>useMutation(), {
77
- wrapper: createQueryWrapper()
77
+ wrapper: createTestWrapper()
78
78
  });
79
79
  result.current.mutate({
80
- Bucket: "test-bucket",
81
- Key: "test-file.txt"
80
+ Bucket: 'test-bucket',
81
+ Key: 'test-file.txt'
82
82
  });
83
83
  await waitFor(()=>{
84
84
  expect(result.current.isError).toBe(true);
85
85
  });
86
86
  expect(result.current.error).toBe(enhancedError);
87
- expect(mockCreateS3OperationError).toHaveBeenCalledWith(mockError, "PutObject", "test-bucket");
87
+ expect(mockCreateS3OperationError).toHaveBeenCalledWith(mockError, 'PutObject', 'test-bucket');
88
88
  });
89
- it("should handle mutation callbacks correctly", async ()=>{
89
+ it('should handle mutation callbacks correctly', async ()=>{
90
90
  const mockResponse = {
91
91
  success: true
92
92
  };
@@ -94,17 +94,17 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
94
94
  const onError = jest.fn();
95
95
  const onSettled = jest.fn();
96
96
  mockS3Client.send.mockResolvedValue(mockResponse);
97
- const useMutation = useCreateS3MutationHook(MockCommand, "PutObject");
97
+ const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject');
98
98
  const { result } = renderHook(()=>useMutation({
99
99
  onSuccess,
100
100
  onError,
101
101
  onSettled
102
102
  }), {
103
- wrapper: createQueryWrapper()
103
+ wrapper: createTestWrapper()
104
104
  });
105
105
  const variables = {
106
- Bucket: "test-bucket",
107
- Key: "test-file.txt"
106
+ Bucket: 'test-bucket',
107
+ Key: 'test-file.txt'
108
108
  };
109
109
  result.current.mutate(variables);
110
110
  await waitFor(()=>{
@@ -114,28 +114,28 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
114
114
  expect(onError).not.toHaveBeenCalled();
115
115
  expect(onSettled).toHaveBeenCalledWith(mockResponse, null, variables, void 0, expect.any(Object));
116
116
  });
117
- it("should handle mutation with invalidation keys", async ()=>{
117
+ it('should handle mutation with invalidation keys', async ()=>{
118
118
  const mockResponse = {
119
119
  success: true
120
120
  };
121
121
  mockS3Client.send.mockResolvedValue(mockResponse);
122
- const useMutation = useCreateS3MutationHook(MockCommand, "PutObject", [
123
- "ListObjects",
124
- "TestQuery"
122
+ const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject', [
123
+ 'ListObjects',
124
+ 'TestQuery'
125
125
  ]);
126
126
  const { result } = renderHook(()=>useMutation(), {
127
- wrapper: createQueryWrapper()
127
+ wrapper: createTestWrapper()
128
128
  });
129
129
  result.current.mutate({
130
- Bucket: "test-bucket",
131
- Key: "test-file.txt"
130
+ Bucket: 'test-bucket',
131
+ Key: 'test-file.txt'
132
132
  });
133
133
  await waitFor(()=>{
134
134
  expect(result.current.isSuccess).toBe(true);
135
135
  });
136
136
  expect(result.current.data).toEqual(mockResponse);
137
137
  });
138
- it("should handle concurrent mutations correctly", async ()=>{
138
+ it('should handle concurrent mutations correctly', async ()=>{
139
139
  const mockResponse1 = {
140
140
  success: true,
141
141
  id: 1
@@ -149,20 +149,20 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
149
149
  callCount++;
150
150
  return Promise.resolve(1 === callCount ? mockResponse1 : mockResponse2);
151
151
  });
152
- const useMutation = useCreateS3MutationHook(MockCommand, "PutObject");
152
+ const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject');
153
153
  const { result: result1 } = renderHook(()=>useMutation(), {
154
- wrapper: createQueryWrapper()
154
+ wrapper: createTestWrapper()
155
155
  });
156
156
  const { result: result2 } = renderHook(()=>useMutation(), {
157
- wrapper: createQueryWrapper()
157
+ wrapper: createTestWrapper()
158
158
  });
159
159
  result1.current.mutate({
160
- Bucket: "test-bucket",
161
- Key: "file1.txt"
160
+ Bucket: 'test-bucket',
161
+ Key: 'file1.txt'
162
162
  });
163
163
  result2.current.mutate({
164
- Bucket: "test-bucket",
165
- Key: "file2.txt"
164
+ Bucket: 'test-bucket',
165
+ Key: 'file2.txt'
166
166
  });
167
167
  await waitFor(()=>{
168
168
  expect(result1.current.isSuccess).toBe(true);
@@ -172,7 +172,7 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
172
172
  expect(result2.current.data).toEqual(mockResponse2);
173
173
  expect(mockS3Client.send).toHaveBeenCalledTimes(2);
174
174
  });
175
- it("should pass command correctly for mutations", async ()=>{
175
+ it('should pass command correctly for mutations', async ()=>{
176
176
  let capturedCommand;
177
177
  mockS3Client.send.mockImplementation((command)=>{
178
178
  capturedCommand = command;
@@ -180,21 +180,21 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
180
180
  success: true
181
181
  });
182
182
  });
183
- const useMutation = useCreateS3MutationHook(MockCommand, "PutObject");
183
+ const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject');
184
184
  const { result } = renderHook(()=>useMutation(), {
185
- wrapper: createQueryWrapper()
185
+ wrapper: createTestWrapper()
186
186
  });
187
187
  result.current.mutate({
188
- Bucket: "test-bucket",
189
- Key: "test-file.txt"
188
+ Bucket: 'test-bucket',
189
+ Key: 'test-file.txt'
190
190
  });
191
191
  await waitFor(()=>{
192
192
  expect(result.current.isSuccess).toBe(true);
193
193
  });
194
194
  expect(capturedCommand).toBeInstanceOf(MockCommand);
195
195
  expect(capturedCommand.input).toEqual({
196
- Bucket: "test-bucket",
197
- Key: "test-file.txt"
196
+ Bucket: 'test-bucket',
197
+ Key: 'test-file.txt'
198
198
  });
199
199
  });
200
200
  });
@@ -1,12 +1,13 @@
1
1
  import { renderHook, waitFor } from "@testing-library/react";
2
- import { useCreateS3QueryHook } from "../useCreateS3QueryHook.js";
2
+ import { createTestWrapper, validateFactoryHook, validateHookResult } from "../../../test/testUtils.js";
3
+ import { createS3OperationError, isNotFoundError } from "../../../utils/errorHandling.js";
3
4
  import { useS3Client } from "../../useS3Client.js";
4
- import { createS3OperationError } from "../../../utils/errorHandling.js";
5
- import { createQueryWrapper, validateFactoryHook, validateHookResult } from "../../../test/testUtils.js";
6
- jest.mock("../../useS3Client");
7
- jest.mock("../../../utils/errorHandling");
5
+ import { useCreateS3QueryHook } from "../useCreateS3QueryHook.js";
6
+ jest.mock('../../useS3Client');
7
+ jest.mock('../../../utils/errorHandling');
8
8
  const mockUseS3Client = useS3Client;
9
9
  const mockCreateS3OperationError = createS3OperationError;
10
+ const mockIsNotFoundError = isNotFoundError;
10
11
  class MockCommand {
11
12
  input;
12
13
  constructor(input){
@@ -16,48 +17,48 @@ class MockCommand {
16
17
  const mockS3Client = {
17
18
  send: jest.fn()
18
19
  };
19
- describe("useCreateS3QueryHook - Factory Specific", ()=>{
20
+ describe('useCreateS3QueryHook - Factory Specific', ()=>{
20
21
  beforeEach(()=>{
21
22
  jest.clearAllMocks();
22
23
  mockUseS3Client.mockReturnValue(mockS3Client);
23
24
  });
24
- it("should create a functioning query hook", ()=>{
25
- const useTestQuery = useCreateS3QueryHook(MockCommand, "testOperation");
26
- validateFactoryHook(useTestQuery, "testOperation");
25
+ it('should create a functioning query hook', ()=>{
26
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'testOperation');
27
+ validateFactoryHook(useTestQuery, 'testOperation');
27
28
  const { result } = renderHook(()=>useTestQuery({
28
- testParam: "value"
29
+ testParam: 'value'
29
30
  }), {
30
- wrapper: createQueryWrapper()
31
+ wrapper: createTestWrapper()
31
32
  });
32
- validateHookResult(result.current, "query");
33
+ validateHookResult(result.current, 'query');
33
34
  });
34
- it("should accept and forward query options correctly", ()=>{
35
- const useTestQuery = useCreateS3QueryHook(MockCommand, "testOperation");
35
+ it('should accept and forward query options correctly', ()=>{
36
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'testOperation');
36
37
  const customOptions = {
37
38
  enabled: false,
38
39
  staleTime: 5000,
39
40
  refetchOnWindowFocus: false
40
41
  };
41
42
  const { result } = renderHook(()=>useTestQuery({
42
- testParam: "value"
43
+ testParam: 'value'
43
44
  }, customOptions), {
44
- wrapper: createQueryWrapper()
45
+ wrapper: createTestWrapper()
45
46
  });
46
- expect(result.current.fetchStatus).toBe("idle");
47
+ expect(result.current.fetchStatus).toBe('idle');
47
48
  expect(result.current.isLoading).toBe(false);
48
49
  });
49
- it("should handle successful query execution", async ()=>{
50
+ it('should handle successful query execution', async ()=>{
50
51
  const mockResponse = {
51
- data: "test-response",
52
- status: "success"
52
+ data: 'test-response',
53
+ status: 'success'
53
54
  };
54
55
  mockS3Client.send.mockResolvedValue(mockResponse);
55
- const useTestQuery = useCreateS3QueryHook(MockCommand, "testOperation");
56
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'testOperation');
56
57
  const { result } = renderHook(()=>useTestQuery({
57
- Bucket: "test-bucket",
58
- Key: "test-key"
58
+ Bucket: 'test-bucket',
59
+ Key: 'test-key'
59
60
  }), {
60
- wrapper: createQueryWrapper()
61
+ wrapper: createTestWrapper()
61
62
  });
62
63
  await waitFor(()=>{
63
64
  expect(result.current.isSuccess).toBe(true);
@@ -67,52 +68,52 @@ describe("useCreateS3QueryHook - Factory Specific", ()=>{
67
68
  abortSignal: expect.any(AbortSignal)
68
69
  }));
69
70
  });
70
- it("should handle query errors with proper context", async ()=>{
71
- const mockError = new Error("S3 Service Error");
72
- const enhancedError = new Error("Enhanced S3 Service Error");
71
+ it('should handle query errors with proper context', async ()=>{
72
+ const mockError = new Error('S3 Service Error');
73
+ const enhancedError = new Error('Enhanced S3 Service Error');
73
74
  mockS3Client.send.mockRejectedValue(mockError);
74
75
  mockCreateS3OperationError.mockReturnValue(enhancedError);
75
- const useTestQuery = useCreateS3QueryHook(MockCommand, "testOperation");
76
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'testOperation');
76
77
  const { result } = renderHook(()=>useTestQuery({
77
- Bucket: "test-bucket",
78
- Key: "test-key"
78
+ Bucket: 'test-bucket',
79
+ Key: 'test-key'
79
80
  }), {
80
- wrapper: createQueryWrapper()
81
+ wrapper: createTestWrapper()
81
82
  });
82
83
  await waitFor(()=>{
83
84
  expect(result.current.isError).toBe(true);
84
85
  });
85
86
  expect(result.current.error).toBe(enhancedError);
86
- expect(mockCreateS3OperationError).toHaveBeenCalledWith(mockError, "testOperation", "test-bucket");
87
+ expect(mockCreateS3OperationError).toHaveBeenCalledWith(mockError, 'testOperation', 'test-bucket');
87
88
  });
88
- it("should handle parameter validation correctly", ()=>{
89
- const useTestQuery = useCreateS3QueryHook(MockCommand, "testOperation");
89
+ it('should handle parameter validation correctly', ()=>{
90
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'testOperation');
90
91
  const { result: invalidResult } = renderHook(()=>useTestQuery({
91
- Bucket: "test",
92
+ Bucket: 'test',
92
93
  Key: void 0
93
94
  }), {
94
- wrapper: createQueryWrapper()
95
+ wrapper: createTestWrapper()
95
96
  });
96
- expect(invalidResult.current.fetchStatus).toBe("idle");
97
+ expect(invalidResult.current.fetchStatus).toBe('idle');
97
98
  const { result: validResult } = renderHook(()=>useTestQuery({
98
- Bucket: "test",
99
- Key: "valid-key"
99
+ Bucket: 'test',
100
+ Key: 'valid-key'
100
101
  }), {
101
- wrapper: createQueryWrapper()
102
+ wrapper: createTestWrapper()
102
103
  });
103
- expect(validResult.current.fetchStatus).not.toBe("idle");
104
+ expect(validResult.current.fetchStatus).not.toBe('idle');
104
105
  });
105
- it("should handle empty string parameters correctly", ()=>{
106
- const useTestQuery = useCreateS3QueryHook(MockCommand, "testOperation");
106
+ it('should handle empty string parameters correctly', ()=>{
107
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'testOperation');
107
108
  const { result: emptyResult } = renderHook(()=>useTestQuery({
108
- Bucket: "test",
109
- Key: ""
109
+ Bucket: 'test',
110
+ Key: ''
110
111
  }), {
111
- wrapper: createQueryWrapper()
112
+ wrapper: createTestWrapper()
112
113
  });
113
- expect(emptyResult.current.fetchStatus).not.toBe("idle");
114
+ expect(emptyResult.current.fetchStatus).not.toBe('idle');
114
115
  });
115
- it("should pass AbortSignal correctly to S3 client", async ()=>{
116
+ it('should pass AbortSignal correctly to S3 client', async ()=>{
116
117
  let capturedAbortSignal;
117
118
  mockS3Client.send.mockImplementation((_command, options)=>{
118
119
  capturedAbortSignal = options?.abortSignal;
@@ -120,12 +121,12 @@ describe("useCreateS3QueryHook - Factory Specific", ()=>{
120
121
  success: true
121
122
  });
122
123
  });
123
- const useTestQuery = useCreateS3QueryHook(MockCommand, "testOperation");
124
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'testOperation');
124
125
  const { result } = renderHook(()=>useTestQuery({
125
- Bucket: "test",
126
- Key: "test"
126
+ Bucket: 'test',
127
+ Key: 'test'
127
128
  }), {
128
- wrapper: createQueryWrapper()
129
+ wrapper: createTestWrapper()
129
130
  });
130
131
  await waitFor(()=>{
131
132
  expect(result.current.isSuccess).toBe(true);
@@ -133,4 +134,46 @@ describe("useCreateS3QueryHook - Factory Specific", ()=>{
133
134
  expect(capturedAbortSignal).toBeInstanceOf(AbortSignal);
134
135
  expect(capturedAbortSignal?.aborted).toBe(false);
135
136
  });
137
+ it('should return empty config for supported operations when NOT_FOUND error occurs', async ()=>{
138
+ const error = new Error('Configuration does not exist');
139
+ error.name = 'NoSuchConfiguration';
140
+ error.$metadata = {
141
+ httpStatusCode: 404
142
+ };
143
+ mockS3Client.send.mockRejectedValueOnce(error);
144
+ mockIsNotFoundError.mockReturnValueOnce(true);
145
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'GetBucketLifecycleConfiguration');
146
+ const { result } = renderHook(()=>useTestQuery({
147
+ Bucket: 'test-bucket'
148
+ }), {
149
+ wrapper: createTestWrapper()
150
+ });
151
+ await waitFor(()=>{
152
+ expect(result.current.isSuccess).toBe(true);
153
+ });
154
+ expect(result.current.data).toBeDefined();
155
+ expect(mockIsNotFoundError).toHaveBeenCalledWith(error);
156
+ });
157
+ it('should throw error when NOT_FOUND occurs for unsupported operations', async ()=>{
158
+ const error = new Error('Bucket not found');
159
+ error.name = 'NoSuchBucket';
160
+ error.$metadata = {
161
+ httpStatusCode: 404
162
+ };
163
+ const enhancedError = new Error('Enhanced error');
164
+ mockS3Client.send.mockRejectedValueOnce(error);
165
+ mockIsNotFoundError.mockReturnValueOnce(true);
166
+ mockCreateS3OperationError.mockReturnValueOnce(enhancedError);
167
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'GetBucketAcl');
168
+ const { result } = renderHook(()=>useTestQuery({
169
+ Bucket: 'test-bucket'
170
+ }), {
171
+ wrapper: createTestWrapper()
172
+ });
173
+ await waitFor(()=>{
174
+ expect(result.current.isError).toBe(true);
175
+ });
176
+ expect(result.current.error).toBe(enhancedError);
177
+ expect(mockIsNotFoundError).toHaveBeenCalledWith(error);
178
+ });
136
179
  });
@@ -12,7 +12,7 @@
12
12
  * - AbortSignal support for cancellation
13
13
  * - Bucket/object context extraction for errors
14
14
  */
15
- export { useCreateS3QueryHook } from "./useCreateS3QueryHook";
16
- export { useCreateS3MutationHook, useCreateS3FunctionMutationHook, } from "./useCreateS3MutationHook";
17
- export { useCreateS3InfiniteQueryHook } from "./useCreateS3InfiniteQueryHook";
18
- export { useCreateS3LoginHook } from "./useCreateS3LoginHook";
15
+ export { useCreateS3InfiniteQueryHook } from './useCreateS3InfiniteQueryHook';
16
+ export { useCreateS3LoginHook } from './useCreateS3LoginHook';
17
+ export { useCreateS3FunctionMutationHook, useCreateS3MutationHook, } from './useCreateS3MutationHook';
18
+ export { useCreateS3QueryHook } from './useCreateS3QueryHook';
@@ -1,5 +1,5 @@
1
- import { useCreateS3QueryHook } from "./useCreateS3QueryHook.js";
2
- import { useCreateS3FunctionMutationHook, useCreateS3MutationHook } from "./useCreateS3MutationHook.js";
3
1
  import { useCreateS3InfiniteQueryHook } from "./useCreateS3InfiniteQueryHook.js";
4
2
  import { useCreateS3LoginHook } from "./useCreateS3LoginHook.js";
3
+ import { useCreateS3FunctionMutationHook, useCreateS3MutationHook } from "./useCreateS3MutationHook.js";
4
+ import { useCreateS3QueryHook } from "./useCreateS3QueryHook.js";
5
5
  export { useCreateS3FunctionMutationHook, useCreateS3InfiniteQueryHook, useCreateS3LoginHook, useCreateS3MutationHook, useCreateS3QueryHook };
@@ -1,5 +1,5 @@
1
- import { UseInfiniteQueryOptions, UseInfiniteQueryResult } from "@tanstack/react-query";
2
- import { EnhancedS3Error } from "../../utils/errorHandling";
1
+ import { type UseInfiniteQueryOptions, type UseInfiniteQueryResult } from '@tanstack/react-query';
2
+ import { type EnhancedS3Error } from '../../utils/errorHandling';
3
3
  /**
4
4
  * Factory function for creating S3 infinite query hooks
5
5
  *
@@ -1,11 +1,14 @@
1
1
  import { useInfiniteQuery } from "@tanstack/react-query";
2
- import { useS3Client } from "../useS3Client.js";
2
+ import { useDataBrowserContext } from "../../components/providers/DataBrowserProvider.js";
3
3
  import { createS3OperationError, shouldRetryError } from "../../utils/errorHandling.js";
4
+ import { useS3Client } from "../useS3Client.js";
4
5
  function useCreateS3InfiniteQueryHook(Command, operationName) {
5
6
  return (params, options)=>{
7
+ const { s3ConfigIdentifier } = useDataBrowserContext();
6
8
  const s3Client = useS3Client();
7
9
  const queryOptions = {
8
10
  queryKey: [
11
+ s3ConfigIdentifier,
9
12
  operationName,
10
13
  params
11
14
  ],
@@ -20,7 +23,7 @@ function useCreateS3InfiniteQueryHook(Command, operationName) {
20
23
  });
21
24
  return response;
22
25
  } catch (error) {
23
- const bucketName = "Bucket" in params ? params.Bucket : void 0;
26
+ const bucketName = 'Bucket' in params ? params.Bucket : void 0;
24
27
  throw createS3OperationError(error, operationName, bucketName);
25
28
  }
26
29
  },
@@ -28,8 +31,8 @@ function useCreateS3InfiniteQueryHook(Command, operationName) {
28
31
  initialPageParam: void 0,
29
32
  getNextPageParam: (lastPage)=>getNextPageToken(operationName, lastPage),
30
33
  enabled: params ? Object.entries(params).every(([key, value])=>{
31
- if ("Prefix" === key) return void 0 !== value;
32
- return void 0 !== value && "" !== value;
34
+ if ('Prefix' === key) return void 0 !== value;
35
+ return void 0 !== value && '' !== value;
33
36
  }) : true,
34
37
  ...options
35
38
  };
@@ -38,18 +41,18 @@ function useCreateS3InfiniteQueryHook(Command, operationName) {
38
41
  }
39
42
  function getPaginationParams(operationName, pageParam) {
40
43
  switch(operationName){
41
- case "ListObjects":
44
+ case 'ListObjects':
42
45
  return {
43
46
  ContinuationToken: pageParam
44
47
  };
45
- case "ListObjectVersions":
46
- if (pageParam.includes("|")) {
47
- const [keyMarker, versionIdMarker] = pageParam.split("|");
48
+ case 'ListObjectVersions':
49
+ if (pageParam.includes('|')) {
50
+ const [keyMarker, versionIdMarker] = pageParam.split('|');
48
51
  return {
49
- ...keyMarker && "" !== keyMarker ? {
52
+ ...keyMarker && '' !== keyMarker ? {
50
53
  KeyMarker: keyMarker
51
54
  } : {},
52
- ...versionIdMarker && "" !== versionIdMarker ? {
55
+ ...versionIdMarker && '' !== versionIdMarker ? {
53
56
  VersionIdMarker: versionIdMarker
54
57
  } : {}
55
58
  };
@@ -65,10 +68,10 @@ function getPaginationParams(operationName, pageParam) {
65
68
  }
66
69
  function getNextPageToken(operationName, lastPage) {
67
70
  switch(operationName){
68
- case "ListObjects":
71
+ case 'ListObjects':
69
72
  return lastPage.IsTruncated ? lastPage.NextContinuationToken : void 0;
70
- case "ListObjectVersions":
71
- return lastPage.IsTruncated && (lastPage.NextKeyMarker || lastPage.NextVersionIdMarker) ? `${lastPage.NextKeyMarker || ""}|${lastPage.NextVersionIdMarker || ""}` : void 0;
73
+ case 'ListObjectVersions':
74
+ return lastPage.IsTruncated && (lastPage.NextKeyMarker || lastPage.NextVersionIdMarker) ? `${lastPage.NextKeyMarker || ''}|${lastPage.NextVersionIdMarker || ''}` : void 0;
72
75
  default:
73
76
  return lastPage.IsTruncated ? lastPage.NextContinuationToken : void 0;
74
77
  }
@@ -1,5 +1,5 @@
1
- import { UseMutationOptions, UseMutationResult } from "@tanstack/react-query";
2
- import { EnhancedS3Error } from "../../utils/errorHandling";
1
+ import { type UseMutationOptions, type UseMutationResult } from '@tanstack/react-query';
2
+ import { type EnhancedS3Error } from '../../utils/errorHandling';
3
3
  /**
4
4
  * Factory function for creating S3 login mutation hooks
5
5
  * This factory handles the special authentication case where we need
@@ -1,5 +1,5 @@
1
- import { useMutation } from "@tanstack/react-query";
2
1
  import { ListBucketsCommand } from "@aws-sdk/client-s3";
2
+ import { useMutation } from "@tanstack/react-query";
3
3
  import { createS3OperationError } from "../../utils/errorHandling.js";
4
4
  import { createS3Client } from "../../utils/s3Client.js";
5
5
  function useCreateS3LoginHook(_Command, operationName) {
@@ -1,5 +1,5 @@
1
- import { UseMutationOptions, UseMutationResult } from "@tanstack/react-query";
2
- import { EnhancedS3Error } from "../../utils/errorHandling";
3
- import { S3Client } from "@aws-sdk/client-s3";
1
+ import type { S3Client } from '@aws-sdk/client-s3';
2
+ import { type UseMutationOptions, type UseMutationResult } from '@tanstack/react-query';
3
+ import { type EnhancedS3Error } from '../../utils/errorHandling';
4
4
  export declare function useCreateS3MutationHook<TInput extends object, TOutput>(Command: new (input: TInput) => any, operationName: string, invalidationKeys?: string[]): (options?: Omit<UseMutationOptions<TOutput, EnhancedS3Error, TInput>, "mutationFn">) => UseMutationResult<TOutput, EnhancedS3Error, TInput>;
5
5
  export declare function useCreateS3FunctionMutationHook<TInput, TOutput>(operation: (s3Client: S3Client, input: TInput) => Promise<TOutput>, invalidationKeys?: string[]): (options?: Omit<UseMutationOptions<TOutput, EnhancedS3Error, TInput>, "mutationFn">) => UseMutationResult<TOutput, EnhancedS3Error, TInput>;