@scality/data-browser-library 1.0.0-preview.11

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 (256) hide show
  1. package/dist/components/Editor.d.ts +12 -0
  2. package/dist/components/Editor.js +28 -0
  3. package/dist/components/__tests__/BucketCreate.test.d.ts +1 -0
  4. package/dist/components/__tests__/BucketCreate.test.js +408 -0
  5. package/dist/components/__tests__/BucketLifecycleFormPage.test.d.ts +1 -0
  6. package/dist/components/__tests__/BucketLifecycleFormPage.test.js +618 -0
  7. package/dist/components/__tests__/BucketLifecycleList.test.d.ts +1 -0
  8. package/dist/components/__tests__/BucketLifecycleList.test.js +325 -0
  9. package/dist/components/__tests__/BucketList.test.d.ts +1 -0
  10. package/dist/components/__tests__/BucketList.test.js +415 -0
  11. package/dist/components/__tests__/BucketNotificationCreatePage.test.d.ts +1 -0
  12. package/dist/components/__tests__/BucketNotificationCreatePage.test.js +316 -0
  13. package/dist/components/__tests__/BucketOverview.test.d.ts +1 -0
  14. package/dist/components/__tests__/BucketOverview.test.js +769 -0
  15. package/dist/components/__tests__/BucketPolicyPage.test.d.ts +1 -0
  16. package/dist/components/__tests__/BucketPolicyPage.test.js +268 -0
  17. package/dist/components/__tests__/BucketReplicationFormPage.test.d.ts +1 -0
  18. package/dist/components/__tests__/BucketReplicationFormPage.test.js +1757 -0
  19. package/dist/components/__tests__/BucketReplicationList.test.d.ts +1 -0
  20. package/dist/components/__tests__/BucketReplicationList.test.js +344 -0
  21. package/dist/components/__tests__/CreateFolderButton.test.d.ts +1 -0
  22. package/dist/components/__tests__/CreateFolderButton.test.js +147 -0
  23. package/dist/components/__tests__/DeleteBucketButton.test.d.ts +1 -0
  24. package/dist/components/__tests__/DeleteBucketButton.test.js +272 -0
  25. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.d.ts +1 -0
  26. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +196 -0
  27. package/dist/components/__tests__/DeleteObjectButton.test.d.ts +1 -0
  28. package/dist/components/__tests__/DeleteObjectButton.test.js +302 -0
  29. package/dist/components/__tests__/EmptyBucketButton.test.d.ts +1 -0
  30. package/dist/components/__tests__/EmptyBucketButton.test.js +302 -0
  31. package/dist/components/__tests__/MetadataSearch.test.d.ts +1 -0
  32. package/dist/components/__tests__/MetadataSearch.test.js +201 -0
  33. package/dist/components/__tests__/ObjectList.test.d.ts +1 -0
  34. package/dist/components/__tests__/ObjectList.test.js +283 -0
  35. package/dist/components/__tests__/UploadButton.test.d.ts +1 -0
  36. package/dist/components/__tests__/UploadButton.test.js +144 -0
  37. package/dist/components/buckets/BucketCreate.d.ts +49 -0
  38. package/dist/components/buckets/BucketCreate.js +237 -0
  39. package/dist/components/buckets/BucketDetails.d.ts +1 -0
  40. package/dist/components/buckets/BucketDetails.js +106 -0
  41. package/dist/components/buckets/BucketLifecycleFormPage.d.ts +15 -0
  42. package/dist/components/buckets/BucketLifecycleFormPage.js +1085 -0
  43. package/dist/components/buckets/BucketLifecycleList.d.ts +10 -0
  44. package/dist/components/buckets/BucketLifecycleList.js +270 -0
  45. package/dist/components/buckets/BucketList.d.ts +15 -0
  46. package/dist/components/buckets/BucketList.js +146 -0
  47. package/dist/components/buckets/BucketLocation.d.ts +3 -0
  48. package/dist/components/buckets/BucketLocation.js +16 -0
  49. package/dist/components/buckets/BucketOverview.d.ts +88 -0
  50. package/dist/components/buckets/BucketOverview.js +291 -0
  51. package/dist/components/buckets/BucketPage.d.ts +2 -0
  52. package/dist/components/buckets/BucketPage.js +47 -0
  53. package/dist/components/buckets/BucketPolicyButton.d.ts +7 -0
  54. package/dist/components/buckets/BucketPolicyButton.js +18 -0
  55. package/dist/components/buckets/BucketPolicyPage.d.ts +1 -0
  56. package/dist/components/buckets/BucketPolicyPage.js +236 -0
  57. package/dist/components/buckets/BucketReplicationFormPage.d.ts +1 -0
  58. package/dist/components/buckets/BucketReplicationFormPage.js +834 -0
  59. package/dist/components/buckets/BucketReplicationList.d.ts +11 -0
  60. package/dist/components/buckets/BucketReplicationList.js +189 -0
  61. package/dist/components/buckets/BucketVersioning.d.ts +4 -0
  62. package/dist/components/buckets/BucketVersioning.js +73 -0
  63. package/dist/components/buckets/DeleteBucketButton.d.ts +8 -0
  64. package/dist/components/buckets/DeleteBucketButton.js +78 -0
  65. package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +18 -0
  66. package/dist/components/buckets/DeleteBucketConfigRuleButton.js +53 -0
  67. package/dist/components/buckets/EmptyBucketButton.d.ts +5 -0
  68. package/dist/components/buckets/EmptyBucketButton.js +232 -0
  69. package/dist/components/buckets/EmptyBucketSummary.d.ts +9 -0
  70. package/dist/components/buckets/EmptyBucketSummary.js +60 -0
  71. package/dist/components/buckets/EmptyBucketSummaryList.d.ts +13 -0
  72. package/dist/components/buckets/EmptyBucketSummaryList.js +140 -0
  73. package/dist/components/buckets/__tests__/BucketVersioning.test.d.ts +1 -0
  74. package/dist/components/buckets/__tests__/BucketVersioning.test.js +163 -0
  75. package/dist/components/buckets/notifications/BucketNotificationCreatePage.d.ts +1 -0
  76. package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +234 -0
  77. package/dist/components/buckets/notifications/EventsSection.d.ts +1 -0
  78. package/dist/components/buckets/notifications/EventsSection.js +123 -0
  79. package/dist/components/buckets/notifications/events.d.ts +12 -0
  80. package/dist/components/buckets/notifications/events.js +27 -0
  81. package/dist/components/index.d.ts +21 -0
  82. package/dist/components/index.js +22 -0
  83. package/dist/components/layouts/ArrowNavigation.d.ts +4 -0
  84. package/dist/components/layouts/ArrowNavigation.js +16 -0
  85. package/dist/components/layouts/BrowserPageLayout.d.ts +12 -0
  86. package/dist/components/layouts/BrowserPageLayout.js +51 -0
  87. package/dist/components/objects/CreateFolderButton.d.ts +29 -0
  88. package/dist/components/objects/CreateFolderButton.js +118 -0
  89. package/dist/components/objects/DeleteObjectButton.d.ts +8 -0
  90. package/dist/components/objects/DeleteObjectButton.js +191 -0
  91. package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +2 -0
  92. package/dist/components/objects/ObjectDetails/ObjectMetadata.js +356 -0
  93. package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +3 -0
  94. package/dist/components/objects/ObjectDetails/ObjectSummary.js +241 -0
  95. package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +3 -0
  96. package/dist/components/objects/ObjectDetails/ObjectTags.js +272 -0
  97. package/dist/components/objects/ObjectDetails/index.d.ts +9 -0
  98. package/dist/components/objects/ObjectDetails/index.js +75 -0
  99. package/dist/components/objects/ObjectList.d.ts +40 -0
  100. package/dist/components/objects/ObjectList.js +453 -0
  101. package/dist/components/objects/ObjectLock/EditRetentionButton.d.ts +4 -0
  102. package/dist/components/objects/ObjectLock/EditRetentionButton.js +32 -0
  103. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.d.ts +3 -0
  104. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +211 -0
  105. package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +9 -0
  106. package/dist/components/objects/ObjectLock/ObjectLockSettings.js +158 -0
  107. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +8 -0
  108. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +39 -0
  109. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.d.ts +1 -0
  110. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +204 -0
  111. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.d.ts +1 -0
  112. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +374 -0
  113. package/dist/components/objects/ObjectPage.d.ts +1 -0
  114. package/dist/components/objects/ObjectPage.js +45 -0
  115. package/dist/components/objects/UploadButton.d.ts +34 -0
  116. package/dist/components/objects/UploadButton.js +229 -0
  117. package/dist/components/providers/DataBrowserProvider.d.ts +20 -0
  118. package/dist/components/providers/DataBrowserProvider.js +42 -0
  119. package/dist/components/search/MetadataSearch.d.ts +5 -0
  120. package/dist/components/search/MetadataSearch.js +162 -0
  121. package/dist/components/search/SearchHints.d.ts +8 -0
  122. package/dist/components/search/SearchHints.js +21 -0
  123. package/dist/components/ui/ArrayFieldActions.d.ts +36 -0
  124. package/dist/components/ui/ArrayFieldActions.js +43 -0
  125. package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +16 -0
  126. package/dist/components/ui/ConfirmDeleteRuleModal.js +43 -0
  127. package/dist/components/ui/DeleteObjectModalContent.d.ts +5 -0
  128. package/dist/components/ui/DeleteObjectModalContent.js +71 -0
  129. package/dist/components/ui/FilterFormSection.d.ts +44 -0
  130. package/dist/components/ui/FilterFormSection.js +159 -0
  131. package/dist/components/ui/Search.elements.d.ts +17 -0
  132. package/dist/components/ui/Search.elements.js +59 -0
  133. package/dist/components/ui/Table.elements.d.ts +36 -0
  134. package/dist/components/ui/Table.elements.js +87 -0
  135. package/dist/config/factory.d.ts +63 -0
  136. package/dist/config/factory.js +74 -0
  137. package/dist/config/types.d.ts +46 -0
  138. package/dist/config/types.js +0 -0
  139. package/dist/hooks/__tests__/useISVBucketDetection.test.d.ts +1 -0
  140. package/dist/hooks/__tests__/useISVBucketDetection.test.js +188 -0
  141. package/dist/hooks/__tests__/useIsBucketEmpty.test.d.ts +1 -0
  142. package/dist/hooks/__tests__/useIsBucketEmpty.test.js +122 -0
  143. package/dist/hooks/bucketConfiguration.d.ts +168 -0
  144. package/dist/hooks/bucketConfiguration.js +67 -0
  145. package/dist/hooks/bucketOperations.d.ts +36 -0
  146. package/dist/hooks/bucketOperations.js +12 -0
  147. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.d.ts +1 -0
  148. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +276 -0
  149. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.d.ts +1 -0
  150. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +259 -0
  151. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.d.ts +1 -0
  152. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +166 -0
  153. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.d.ts +1 -0
  154. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +200 -0
  155. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.d.ts +1 -0
  156. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +179 -0
  157. package/dist/hooks/factories/index.d.ts +18 -0
  158. package/dist/hooks/factories/index.js +5 -0
  159. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +13 -0
  160. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +76 -0
  161. package/dist/hooks/factories/useCreateS3LoginHook.d.ts +8 -0
  162. package/dist/hooks/factories/useCreateS3LoginHook.js +22 -0
  163. package/dist/hooks/factories/useCreateS3MutationHook.d.ts +5 -0
  164. package/dist/hooks/factories/useCreateS3MutationHook.js +50 -0
  165. package/dist/hooks/factories/useCreateS3QueryHook.d.ts +3 -0
  166. package/dist/hooks/factories/useCreateS3QueryHook.js +51 -0
  167. package/dist/hooks/index.d.ts +13 -0
  168. package/dist/hooks/index.js +13 -0
  169. package/dist/hooks/loginOperations.d.ts +21 -0
  170. package/dist/hooks/loginOperations.js +9 -0
  171. package/dist/hooks/objectOperations.d.ts +190 -0
  172. package/dist/hooks/objectOperations.js +67 -0
  173. package/dist/hooks/presignedOperations.d.ts +73 -0
  174. package/dist/hooks/presignedOperations.js +72 -0
  175. package/dist/hooks/useBatchObjectLegalHold.d.ts +11 -0
  176. package/dist/hooks/useBatchObjectLegalHold.js +45 -0
  177. package/dist/hooks/useDeleteBucketConfigRule.d.ts +26 -0
  178. package/dist/hooks/useDeleteBucketConfigRule.js +46 -0
  179. package/dist/hooks/useEmptyBucket.d.ts +27 -0
  180. package/dist/hooks/useEmptyBucket.js +116 -0
  181. package/dist/hooks/useISVBucketDetection.d.ts +15 -0
  182. package/dist/hooks/useISVBucketDetection.js +27 -0
  183. package/dist/hooks/useIsBucketEmpty.d.ts +7 -0
  184. package/dist/hooks/useIsBucketEmpty.js +36 -0
  185. package/dist/hooks/useLoginMutation.d.ts +21 -0
  186. package/dist/hooks/useLoginMutation.js +9 -0
  187. package/dist/hooks/useS3Client.d.ts +1 -0
  188. package/dist/hooks/useS3Client.js +13 -0
  189. package/dist/hooks/useTableRowSelection.d.ts +9 -0
  190. package/dist/hooks/useTableRowSelection.js +45 -0
  191. package/dist/index.d.ts +6 -0
  192. package/dist/index.js +6 -0
  193. package/dist/schemas/bucketPolicySchema.json +321 -0
  194. package/dist/test/msw/handlers/deleteBucket.d.ts +1 -0
  195. package/dist/test/msw/handlers/deleteBucket.js +14 -0
  196. package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -0
  197. package/dist/test/msw/handlers/getBucketAcl.js +96 -0
  198. package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -0
  199. package/dist/test/msw/handlers/getBucketLocation.js +23 -0
  200. package/dist/test/msw/handlers/getBucketPolicy.d.ts +11 -0
  201. package/dist/test/msw/handlers/getBucketPolicy.js +72 -0
  202. package/dist/test/msw/handlers/headObject.d.ts +1 -0
  203. package/dist/test/msw/handlers/headObject.js +17 -0
  204. package/dist/test/msw/handlers/listBuckets.d.ts +1 -0
  205. package/dist/test/msw/handlers/listBuckets.js +24 -0
  206. package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -0
  207. package/dist/test/msw/handlers/listObjectVersions.js +83 -0
  208. package/dist/test/msw/handlers/listObjects.d.ts +1 -0
  209. package/dist/test/msw/handlers/listObjects.js +66 -0
  210. package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -0
  211. package/dist/test/msw/handlers/objectLegalHold.js +24 -0
  212. package/dist/test/msw/handlers/objectRetention.d.ts +1 -0
  213. package/dist/test/msw/handlers/objectRetention.js +27 -0
  214. package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -0
  215. package/dist/test/msw/handlers/putBucketAcl.js +18 -0
  216. package/dist/test/msw/handlers/putObject.d.ts +1 -0
  217. package/dist/test/msw/handlers/putObject.js +16 -0
  218. package/dist/test/msw/handlers.d.ts +4 -0
  219. package/dist/test/msw/handlers.js +109 -0
  220. package/dist/test/msw/index.d.ts +2 -0
  221. package/dist/test/msw/index.js +3 -0
  222. package/dist/test/msw/server.d.ts +4 -0
  223. package/dist/test/msw/server.js +20 -0
  224. package/dist/test/msw/utils.d.ts +2 -0
  225. package/dist/test/msw/utils.js +13 -0
  226. package/dist/test/setup.d.ts +1 -0
  227. package/dist/test/setup.js +90 -0
  228. package/dist/test/testUtils.d.ts +181 -0
  229. package/dist/test/testUtils.js +310 -0
  230. package/dist/test/utils/errorHandling.test.d.ts +1 -0
  231. package/dist/test/utils/errorHandling.test.js +423 -0
  232. package/dist/types/index.d.ts +51 -0
  233. package/dist/types/index.js +0 -0
  234. package/dist/utils/constants.d.ts +12 -0
  235. package/dist/utils/constants.js +9 -0
  236. package/dist/utils/deletion/index.d.ts +2 -0
  237. package/dist/utils/deletion/index.js +2 -0
  238. package/dist/utils/deletion/messages.d.ts +5 -0
  239. package/dist/utils/deletion/messages.js +29 -0
  240. package/dist/utils/deletion/types.d.ts +11 -0
  241. package/dist/utils/deletion/types.js +0 -0
  242. package/dist/utils/errorHandling.d.ts +63 -0
  243. package/dist/utils/errorHandling.js +84 -0
  244. package/dist/utils/hooks.d.ts +2 -0
  245. package/dist/utils/hooks.js +26 -0
  246. package/dist/utils/index.d.ts +4 -0
  247. package/dist/utils/index.js +4 -0
  248. package/dist/utils/proxyMiddleware.d.ts +18 -0
  249. package/dist/utils/proxyMiddleware.js +56 -0
  250. package/dist/utils/s3Client.d.ts +5 -0
  251. package/dist/utils/s3Client.js +36 -0
  252. package/dist/utils/s3RuleUtils.d.ts +53 -0
  253. package/dist/utils/s3RuleUtils.js +101 -0
  254. package/dist/utils/useFeatures.d.ts +1 -0
  255. package/dist/utils/useFeatures.js +7 -0
  256. package/package.json +84 -0
@@ -0,0 +1,22 @@
1
+ import { useMutation } from "@tanstack/react-query";
2
+ import { ListBucketsCommand } from "@aws-sdk/client-s3";
3
+ import { createS3OperationError } from "../../utils/errorHandling.js";
4
+ import { createS3Client } from "../../utils/s3Client.js";
5
+ function useCreateS3LoginHook(_Command, operationName) {
6
+ return (options)=>useMutation({
7
+ mutationFn: async (params)=>{
8
+ try {
9
+ const loginS3Client = createS3Client(params);
10
+ await loginS3Client.send(new ListBucketsCommand({}));
11
+ return {
12
+ config: params,
13
+ authenticated: true
14
+ };
15
+ } catch (error) {
16
+ throw createS3OperationError(error, operationName);
17
+ }
18
+ },
19
+ ...options
20
+ });
21
+ }
22
+ export { useCreateS3LoginHook };
@@ -0,0 +1,5 @@
1
+ import { UseMutationOptions, UseMutationResult } from "@tanstack/react-query";
2
+ import { EnhancedS3Error } from "../../utils/errorHandling";
3
+ import { S3Client } from "@aws-sdk/client-s3";
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
+ 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>;
@@ -0,0 +1,50 @@
1
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
2
+ import { useS3Client } from "../useS3Client.js";
3
+ import { createS3OperationError } from "../../utils/errorHandling.js";
4
+ function useCreateS3MutationHook(Command, operationName, invalidationKeys) {
5
+ return (options)=>{
6
+ const s3Client = useS3Client();
7
+ const queryClient = useQueryClient();
8
+ return useMutation({
9
+ mutationFn: async (params)=>{
10
+ try {
11
+ const command = new Command(params);
12
+ return await s3Client.send(command);
13
+ } catch (error) {
14
+ const bucketName = "Bucket" in params ? params.Bucket : void 0;
15
+ throw createS3OperationError(error, operationName, bucketName);
16
+ }
17
+ },
18
+ onSuccess: (_data, _variables)=>{
19
+ if (invalidationKeys) invalidationKeys.forEach((key)=>{
20
+ queryClient.invalidateQueries({
21
+ queryKey: [
22
+ key
23
+ ]
24
+ });
25
+ });
26
+ },
27
+ ...options
28
+ });
29
+ };
30
+ }
31
+ function useCreateS3FunctionMutationHook(operation, invalidationKeys) {
32
+ return (options)=>{
33
+ const s3Client = useS3Client();
34
+ const queryClient = useQueryClient();
35
+ return useMutation({
36
+ mutationFn: async (params)=>operation(s3Client, params),
37
+ onSuccess: (_data, _variables)=>{
38
+ if (invalidationKeys) invalidationKeys.forEach((key)=>{
39
+ queryClient.invalidateQueries({
40
+ queryKey: [
41
+ key
42
+ ]
43
+ });
44
+ });
45
+ },
46
+ ...options
47
+ });
48
+ };
49
+ }
50
+ export { useCreateS3FunctionMutationHook, useCreateS3MutationHook };
@@ -0,0 +1,3 @@
1
+ import { QueryKey, UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
2
+ import { EnhancedS3Error } from "../../utils/errorHandling";
3
+ export declare function useCreateS3QueryHook<TInput extends object, TOutput>(Command: new (input: TInput) => any, operationName: string): (params?: TInput, options?: Omit<UseQueryOptions<TOutput, EnhancedS3Error, TOutput, QueryKey>, "queryKey" | "queryFn">) => UseQueryResult<TOutput, EnhancedS3Error>;
@@ -0,0 +1,51 @@
1
+ import { useQuery } from "@tanstack/react-query";
2
+ import { useS3Client } from "../useS3Client.js";
3
+ import { createS3OperationError, isNotFoundError, shouldRetryError } from "../../utils/errorHandling.js";
4
+ function getEmptyConfigForOperation(operationName) {
5
+ switch(operationName){
6
+ case "GetBucketLifecycleConfiguration":
7
+ return {
8
+ Rules: []
9
+ };
10
+ case "GetBucketReplication":
11
+ return {
12
+ ReplicationConfiguration: {
13
+ Rules: [],
14
+ Role: ""
15
+ }
16
+ };
17
+ default:
18
+ return null;
19
+ }
20
+ }
21
+ function useCreateS3QueryHook(Command, operationName) {
22
+ return (params, options)=>{
23
+ const queryKey = [
24
+ operationName,
25
+ params
26
+ ];
27
+ const s3Client = useS3Client();
28
+ return useQuery({
29
+ queryKey,
30
+ queryFn: async ({ signal })=>{
31
+ try {
32
+ const command = new Command(params || {});
33
+ return await s3Client.send(command, {
34
+ abortSignal: signal
35
+ });
36
+ } catch (error) {
37
+ const bucketName = params && "Bucket" in params ? params.Bucket : void 0;
38
+ if (isNotFoundError(error)) {
39
+ const emptyConfig = getEmptyConfigForOperation(operationName);
40
+ if (null !== emptyConfig) return emptyConfig;
41
+ }
42
+ throw createS3OperationError(error, operationName, bucketName);
43
+ }
44
+ },
45
+ retry: options?.retry ?? ((failureCount, error)=>shouldRetryError(error, failureCount)),
46
+ enabled: params ? Object.values(params).every((p)=>void 0 !== p) : true,
47
+ ...options
48
+ });
49
+ };
50
+ }
51
+ export { useCreateS3QueryHook };
@@ -0,0 +1,13 @@
1
+ export { useS3Client } from "./useS3Client";
2
+ export type { LoginConfig, LoginMutationResult } from "./useLoginMutation";
3
+ export { useLoginMutation } from "./loginOperations";
4
+ export { useIsBucketEmpty } from "./useIsBucketEmpty";
5
+ export { useEmptyBucket } from "./useEmptyBucket";
6
+ export { useDeleteBucketConfigRule } from "./useDeleteBucketConfigRule";
7
+ export { useTableRowSelection } from "./useTableRowSelection";
8
+ export { useISVBucketStatus } from "./useISVBucketDetection";
9
+ export { useBatchObjectLegalHold } from "./useBatchObjectLegalHold";
10
+ export { useBuckets, useGetBucketLocation, useCreateBucket, useDeleteBucket, } from "./bucketOperations";
11
+ export { useGetBucketAcl, useSetBucketAcl, useGetBucketPolicy, useSetBucketPolicy, useDeleteBucketPolicy, useGetBucketVersioning, useSetBucketVersioning, useGetBucketCors, useSetBucketCors, useDeleteBucketCors, useGetBucketLifecycle, useSetBucketLifecycle, useDeleteBucketLifecycle, useGetBucketNotification, useSetBucketNotification, useGetBucketEncryption, useSetBucketEncryption, useGetBucketTagging, useSetBucketTagging, useDeleteBucketTagging, useGetBucketObjectLockConfiguration, useSetBucketObjectLockConfiguration, useGetBucketReplication, useSetBucketReplication, useDeleteBucketReplication, } from "./bucketConfiguration";
12
+ export { useListObjects, useListObjectVersions, useObjectMetadata, useObjectRetention, useGetObject, usePutObject, useCreateFolder, useUploadObjects, useDeleteObject, useDeleteObjects, useCopyObject, useSetObjectRetention, useObjectLegalHold, useSetObjectLegalHold, useObjectTagging, useSetObjectTagging, useDeleteObjectTagging, useObjectAcl, useSetObjectAcl, useGetObjectAttributes, useGetObjectTorrent, useRestoreObject, useSelectObjectContent, useListMultipartUploads, useSearchObjects, useSearchObjectsVersions, } from "./objectOperations";
13
+ export { useGetPresignedDownload, useGetPresignedUpload, useGetPresignedPost, } from "./presignedOperations";
@@ -0,0 +1,13 @@
1
+ import { useS3Client } from "./useS3Client.js";
2
+ import { useLoginMutation } from "./loginOperations.js";
3
+ import { useIsBucketEmpty } from "./useIsBucketEmpty.js";
4
+ import { useEmptyBucket } from "./useEmptyBucket.js";
5
+ import { useDeleteBucketConfigRule } from "./useDeleteBucketConfigRule.js";
6
+ import { useTableRowSelection } from "./useTableRowSelection.js";
7
+ import { useISVBucketStatus } from "./useISVBucketDetection.js";
8
+ import { useBatchObjectLegalHold } from "./useBatchObjectLegalHold.js";
9
+ import { useBuckets, useCreateBucket, useDeleteBucket, useGetBucketLocation } from "./bucketOperations.js";
10
+ import { useDeleteBucketCors, useDeleteBucketLifecycle, useDeleteBucketPolicy, useDeleteBucketReplication, useDeleteBucketTagging, useGetBucketAcl, useGetBucketCors, useGetBucketEncryption, useGetBucketLifecycle, useGetBucketNotification, useGetBucketObjectLockConfiguration, useGetBucketPolicy, useGetBucketReplication, useGetBucketTagging, useGetBucketVersioning, useSetBucketAcl, useSetBucketCors, useSetBucketEncryption, useSetBucketLifecycle, useSetBucketNotification, useSetBucketObjectLockConfiguration, useSetBucketPolicy, useSetBucketReplication, useSetBucketTagging, useSetBucketVersioning } from "./bucketConfiguration.js";
11
+ import { useCopyObject, useCreateFolder, useDeleteObject, useDeleteObjectTagging, useDeleteObjects, useGetObject, useGetObjectAttributes, useGetObjectTorrent, useListMultipartUploads, useListObjectVersions, useListObjects, useObjectAcl, useObjectLegalHold, useObjectMetadata, useObjectRetention, useObjectTagging, usePutObject, useRestoreObject, useSearchObjects, useSearchObjectsVersions, useSelectObjectContent, useSetObjectAcl, useSetObjectLegalHold, useSetObjectRetention, useSetObjectTagging, useUploadObjects } from "./objectOperations.js";
12
+ import { useGetPresignedDownload, useGetPresignedPost, useGetPresignedUpload } from "./presignedOperations.js";
13
+ export { useBatchObjectLegalHold, useBuckets, useCopyObject, useCreateBucket, useCreateFolder, useDeleteBucket, useDeleteBucketConfigRule, useDeleteBucketCors, useDeleteBucketLifecycle, useDeleteBucketPolicy, useDeleteBucketReplication, useDeleteBucketTagging, useDeleteObject, useDeleteObjectTagging, useDeleteObjects, useEmptyBucket, useGetBucketAcl, useGetBucketCors, useGetBucketEncryption, useGetBucketLifecycle, useGetBucketLocation, useGetBucketNotification, useGetBucketObjectLockConfiguration, useGetBucketPolicy, useGetBucketReplication, useGetBucketTagging, useGetBucketVersioning, useGetObject, useGetObjectAttributes, useGetObjectTorrent, useGetPresignedDownload, useGetPresignedPost, useGetPresignedUpload, useISVBucketStatus, useIsBucketEmpty, useListMultipartUploads, useListObjectVersions, useListObjects, useLoginMutation, useObjectAcl, useObjectLegalHold, useObjectMetadata, useObjectRetention, useObjectTagging, usePutObject, useRestoreObject, useS3Client, useSearchObjects, useSearchObjectsVersions, useSelectObjectContent, useSetBucketAcl, useSetBucketCors, useSetBucketEncryption, useSetBucketLifecycle, useSetBucketNotification, useSetBucketObjectLockConfiguration, useSetBucketPolicy, useSetBucketReplication, useSetBucketTagging, useSetBucketVersioning, useSetObjectAcl, useSetObjectLegalHold, useSetObjectRetention, useSetObjectTagging, useTableRowSelection, useUploadObjects };
@@ -0,0 +1,21 @@
1
+ /**
2
+ * S3 Login Authentication Operations
3
+ *
4
+ * This file contains hooks for S3 authentication operations.
5
+ * Uses the factory pattern for consistency with other S3 operations.
6
+ */
7
+ import { S3BrowserConfig, S3Credentials } from "../types";
8
+ export type LoginConfig = S3BrowserConfig & {
9
+ credentials: S3Credentials;
10
+ };
11
+ export interface LoginMutationResult {
12
+ config: LoginConfig;
13
+ authenticated: boolean;
14
+ }
15
+ /**
16
+ * Hook for S3 authentication using react-query mutation.
17
+ *
18
+ * Validates credentials and establishes S3 session by attempting to list buckets.
19
+ * Creates its own S3 client with the provided credentials for authentication.
20
+ */
21
+ export declare const useLoginMutation: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<LoginMutationResult, import("..").EnhancedS3Error, LoginConfig, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<LoginMutationResult, import("..").EnhancedS3Error, LoginConfig>;
@@ -0,0 +1,9 @@
1
+ import { useCreateS3LoginHook } from "./factories/index.js";
2
+ class LoginAuthenticationCommand {
3
+ input;
4
+ constructor(input){
5
+ this.input = input;
6
+ }
7
+ }
8
+ const useLoginMutation = useCreateS3LoginHook(LoginAuthenticationCommand, "S3 Authentication");
9
+ export { useLoginMutation };
@@ -0,0 +1,190 @@
1
+ /**
2
+ * S3 Object Operations
3
+ *
4
+ * This file contains hooks for managing S3 objects including
5
+ * metadata retrieval, uploads, downloads, deletion, and object-level
6
+ * configurations like retention and legal hold.
7
+ */
8
+ import { CopyObjectCommandInput, CopyObjectCommandOutput, DeleteObjectCommandInput, DeleteObjectCommandOutput, DeleteObjectsCommandInput, DeleteObjectsCommandOutput, DeleteObjectTaggingCommandInput, DeleteObjectTaggingCommandOutput, GetObjectAclCommandInput, GetObjectAclCommandOutput, GetObjectAttributesCommandInput, GetObjectAttributesCommandOutput, GetObjectCommandInput, GetObjectCommandOutput, GetObjectLegalHoldCommandInput, GetObjectLegalHoldCommandOutput, GetObjectRetentionCommandInput, GetObjectRetentionCommandOutput, GetObjectTaggingCommandInput, GetObjectTaggingCommandOutput, GetObjectTorrentCommandInput, GetObjectTorrentCommandOutput, HeadObjectCommandInput, HeadObjectCommandOutput, ListMultipartUploadsCommandInput, ListMultipartUploadsCommandOutput, ListObjectsV2CommandInput, ListObjectVersionsCommandInput, PutObjectAclCommandInput, PutObjectAclCommandOutput, PutObjectCommandInput, PutObjectCommandOutput, PutObjectLegalHoldCommandInput, PutObjectLegalHoldCommandOutput, PutObjectRetentionCommandInput, PutObjectRetentionCommandOutput, PutObjectTaggingCommandInput, PutObjectTaggingCommandOutput, RestoreObjectCommandInput, RestoreObjectCommandOutput, SelectObjectContentCommandInput, SelectObjectContentCommandOutput } from "@aws-sdk/client-s3";
9
+ import { SearchObjectsV2CommandInput, SearchObjectsVersionCommandInput } from "@scality/zenkoclient";
10
+ /**
11
+ * Hook for listing S3 objects with infinite scroll support
12
+ *
13
+ * Provides paginated listing of objects in an S3 bucket with support for
14
+ * prefix filtering and infinite scroll. Returns both objects and common prefixes.
15
+ */
16
+ export declare const useListObjects: (params: ListObjectsV2CommandInput, options?: Partial<import("@tanstack/react-query").UseInfiniteQueryOptions<any, import("..").EnhancedS3Error, any, (string | ListObjectsV2CommandInput)[], string | undefined>> | undefined) => import("@tanstack/react-query").UseInfiniteQueryResult<any, import("..").EnhancedS3Error>;
17
+ /**
18
+ * Hook for listing S3 object versions with infinite scroll support
19
+ *
20
+ * Provides paginated listing of all versions for objects in an S3 bucket.
21
+ * Combines both object versions and delete markers in chronological order.
22
+ */
23
+ export declare const useListObjectVersions: (params: ListObjectVersionsCommandInput, options?: Partial<import("@tanstack/react-query").UseInfiniteQueryOptions<any, import("..").EnhancedS3Error, any, (string | ListObjectVersionsCommandInput)[], string | undefined>> | undefined) => import("@tanstack/react-query").UseInfiniteQueryResult<any, import("..").EnhancedS3Error>;
24
+ /**
25
+ * Hook for searching S3 objects with infinite scroll support
26
+ *
27
+ * Provides paginated search of objects in an S3 bucket using SQL-like query syntax.
28
+ * Supports advanced filtering and pattern matching on object keys and metadata.
29
+ */
30
+ export declare const useSearchObjects: (params: SearchObjectsV2CommandInput, options?: Partial<import("@tanstack/react-query").UseInfiniteQueryOptions<any, import("..").EnhancedS3Error, any, (string | SearchObjectsV2CommandInput)[], string | undefined>> | undefined) => import("@tanstack/react-query").UseInfiniteQueryResult<any, import("..").EnhancedS3Error>;
31
+ /**
32
+ * Hook for searching S3 object versions with infinite scroll support
33
+ *
34
+ * Provides paginated search of object versions in an S3 bucket using SQL-like query syntax.
35
+ * Supports advanced filtering and pattern matching on object keys and metadata across all versions.
36
+ */
37
+ export declare const useSearchObjectsVersions: (params: SearchObjectsVersionCommandInput, options?: Partial<import("@tanstack/react-query").UseInfiniteQueryOptions<any, import("..").EnhancedS3Error, any, (string | SearchObjectsVersionCommandInput)[], string | undefined>> | undefined) => import("@tanstack/react-query").UseInfiniteQueryResult<any, import("..").EnhancedS3Error>;
38
+ /**
39
+ * Hook for retrieving S3 object metadata
40
+ *
41
+ * Fetches metadata about an S3 object without downloading the object content.
42
+ * Returns information like content type, size, last modified date, etc.
43
+ */
44
+ export declare const useObjectMetadata: (params?: HeadObjectCommandInput | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<HeadObjectCommandOutput, import("..").EnhancedS3Error, HeadObjectCommandOutput, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<HeadObjectCommandOutput, import("..").EnhancedS3Error>;
45
+ /**
46
+ * Hook for downloading S3 object content
47
+ *
48
+ * Retrieves the full content of an S3 object. Use with caution for large files
49
+ * as it loads the entire object into memory.
50
+ */
51
+ export declare const useGetObject: (params?: GetObjectCommandInput | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<GetObjectCommandOutput, import("..").EnhancedS3Error, GetObjectCommandOutput, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<GetObjectCommandOutput, import("..").EnhancedS3Error>;
52
+ /**
53
+ * Hook for uploading objects to S3
54
+ *
55
+ * Uploads a new object or overwrites an existing object in S3.
56
+ * Automatically invalidates object listings after successful upload.
57
+ */
58
+ export declare const usePutObject: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<PutObjectCommandOutput, import("..").EnhancedS3Error, PutObjectCommandInput, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<PutObjectCommandOutput, import("..").EnhancedS3Error, PutObjectCommandInput>;
59
+ /**
60
+ * Hook for creating folders in S3
61
+ *
62
+ * Creates a folder (empty object with trailing slash) in S3.
63
+ * This is an alias for usePutObject with specific folder semantics.
64
+ */
65
+ export declare const useCreateFolder: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<PutObjectCommandOutput, import("..").EnhancedS3Error, PutObjectCommandInput, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<PutObjectCommandOutput, import("..").EnhancedS3Error, PutObjectCommandInput>;
66
+ /**
67
+ * Hook for uploading objects to S3
68
+ *
69
+ * Uploads a new object or overwrites an existing object in S3.
70
+ * This is an alias for usePutObject with upload semantics.
71
+ */
72
+ export declare const useUploadObjects: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<PutObjectCommandOutput, import("..").EnhancedS3Error, PutObjectCommandInput, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<PutObjectCommandOutput, import("..").EnhancedS3Error, PutObjectCommandInput>;
73
+ /**
74
+ * Hook for deleting a single S3 object
75
+ *
76
+ * Deletes a specific object from S3. For versioned buckets, this creates
77
+ * a delete marker unless a specific version is targeted.
78
+ */
79
+ export declare const useDeleteObject: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<DeleteObjectCommandOutput, import("..").EnhancedS3Error, DeleteObjectCommandInput, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<DeleteObjectCommandOutput, import("..").EnhancedS3Error, DeleteObjectCommandInput>;
80
+ /**
81
+ * Hook for deleting multiple S3 objects
82
+ *
83
+ * Efficiently deletes up to 1000 objects in a single request.
84
+ * Automatically invalidates object listings after successful deletion.
85
+ */
86
+ export declare const useDeleteObjects: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<DeleteObjectsCommandOutput, import("..").EnhancedS3Error, DeleteObjectsCommandInput, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<DeleteObjectsCommandOutput, import("..").EnhancedS3Error, DeleteObjectsCommandInput>;
87
+ /**
88
+ * Hook for copying S3 objects
89
+ *
90
+ * Copies an object from one location to another within S3.
91
+ * Can copy between buckets and modify metadata during copy.
92
+ */
93
+ export declare const useCopyObject: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<CopyObjectCommandOutput, import("..").EnhancedS3Error, CopyObjectCommandInput, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<CopyObjectCommandOutput, import("..").EnhancedS3Error, CopyObjectCommandInput>;
94
+ /**
95
+ * Hook for retrieving S3 object retention settings
96
+ *
97
+ * Fetches the retention configuration for an object in a bucket with
98
+ * Object Lock enabled. Returns retention mode and retain until date.
99
+ */
100
+ export declare const useObjectRetention: (params?: GetObjectRetentionCommandInput | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<GetObjectRetentionCommandOutput, import("..").EnhancedS3Error, GetObjectRetentionCommandOutput, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<GetObjectRetentionCommandOutput, import("..").EnhancedS3Error>;
101
+ /**
102
+ * Hook for setting S3 object retention
103
+ *
104
+ * Sets or updates the retention configuration for an object.
105
+ * Only works on buckets with Object Lock enabled.
106
+ */
107
+ export declare const useSetObjectRetention: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<PutObjectRetentionCommandOutput, import("..").EnhancedS3Error, PutObjectRetentionCommandInput, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<PutObjectRetentionCommandOutput, import("..").EnhancedS3Error, PutObjectRetentionCommandInput>;
108
+ /**
109
+ * Hook for retrieving S3 object legal hold status
110
+ *
111
+ * Fetches the legal hold status for an object in a bucket with
112
+ * Object Lock enabled. Returns whether legal hold is on or off.
113
+ */
114
+ export declare const useObjectLegalHold: (params?: GetObjectLegalHoldCommandInput | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<GetObjectLegalHoldCommandOutput, import("..").EnhancedS3Error, GetObjectLegalHoldCommandOutput, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<GetObjectLegalHoldCommandOutput, import("..").EnhancedS3Error>;
115
+ /**
116
+ * Hook for setting S3 object legal hold
117
+ *
118
+ * Enables or disables legal hold on an object. Legal hold prevents
119
+ * object deletion regardless of retention settings.
120
+ */
121
+ export declare const useSetObjectLegalHold: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<PutObjectLegalHoldCommandOutput, import("..").EnhancedS3Error, PutObjectLegalHoldCommandInput, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<PutObjectLegalHoldCommandOutput, import("..").EnhancedS3Error, PutObjectLegalHoldCommandInput>;
122
+ /**
123
+ * Hook for retrieving S3 object tags
124
+ *
125
+ * Fetches the tag set associated with an object. Tags are key-value
126
+ * pairs used for object categorization and management.
127
+ */
128
+ export declare const useObjectTagging: (params?: GetObjectTaggingCommandInput | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<GetObjectTaggingCommandOutput, import("..").EnhancedS3Error, GetObjectTaggingCommandOutput, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<GetObjectTaggingCommandOutput, import("..").EnhancedS3Error>;
129
+ /**
130
+ * Hook for setting S3 object tags
131
+ *
132
+ * Sets or replaces the tag set for an object. Existing tags are
133
+ * completely replaced by the new tag set.
134
+ */
135
+ export declare const useSetObjectTagging: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<PutObjectTaggingCommandOutput, import("..").EnhancedS3Error, PutObjectTaggingCommandInput, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<PutObjectTaggingCommandOutput, import("..").EnhancedS3Error, PutObjectTaggingCommandInput>;
136
+ /**
137
+ * Hook for deleting S3 object tags
138
+ *
139
+ * Removes all tags from an object. This operation cannot be undone.
140
+ */
141
+ export declare const useDeleteObjectTagging: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<DeleteObjectTaggingCommandOutput, import("..").EnhancedS3Error, DeleteObjectTaggingCommandInput, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<DeleteObjectTaggingCommandOutput, import("..").EnhancedS3Error, DeleteObjectTaggingCommandInput>;
142
+ /**
143
+ * Hook for retrieving S3 object ACL
144
+ *
145
+ * Fetches the access control list for a specific object.
146
+ * Returns information about object permissions and grantees.
147
+ */
148
+ export declare const useObjectAcl: (params?: GetObjectAclCommandInput | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<GetObjectAclCommandOutput, import("..").EnhancedS3Error, GetObjectAclCommandOutput, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<GetObjectAclCommandOutput, import("..").EnhancedS3Error>;
149
+ /**
150
+ * Hook for setting S3 object ACL
151
+ *
152
+ * Sets the access control list for a specific object.
153
+ * Can use predefined ACLs or specify custom grants.
154
+ */
155
+ export declare const useSetObjectAcl: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<PutObjectAclCommandOutput, import("..").EnhancedS3Error, PutObjectAclCommandInput, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<PutObjectAclCommandOutput, import("..").EnhancedS3Error, PutObjectAclCommandInput>;
156
+ /**
157
+ * Hook for retrieving S3 object attributes
158
+ *
159
+ * Fetches specific attributes of an object such as checksum, object parts,
160
+ * storage class, and object size without downloading the object content.
161
+ */
162
+ export declare const useGetObjectAttributes: (params?: GetObjectAttributesCommandInput | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<GetObjectAttributesCommandOutput, import("..").EnhancedS3Error, GetObjectAttributesCommandOutput, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<GetObjectAttributesCommandOutput, import("..").EnhancedS3Error>;
163
+ /**
164
+ * Hook for retrieving S3 object torrent
165
+ *
166
+ * Returns torrent files for an object in S3. This allows BitTorrent clients
167
+ * to retrieve the object using the BitTorrent protocol.
168
+ */
169
+ export declare const useGetObjectTorrent: (params?: GetObjectTorrentCommandInput | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<GetObjectTorrentCommandOutput, import("..").EnhancedS3Error, GetObjectTorrentCommandOutput, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<GetObjectTorrentCommandOutput, import("..").EnhancedS3Error>;
170
+ /**
171
+ * Hook for restoring archived S3 objects
172
+ *
173
+ * Initiates restoration of an archived object from Glacier or Deep Archive
174
+ * storage classes. Restored objects are temporarily available in S3.
175
+ */
176
+ export declare const useRestoreObject: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<RestoreObjectCommandOutput, import("..").EnhancedS3Error, RestoreObjectCommandInput, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<RestoreObjectCommandOutput, import("..").EnhancedS3Error, RestoreObjectCommandInput>;
177
+ /**
178
+ * Hook for selecting object content with SQL
179
+ *
180
+ * Enables SQL-like queries on S3 objects (CSV, JSON, Parquet) to retrieve
181
+ * only the subset of data that you need, reducing transfer costs.
182
+ */
183
+ export declare const useSelectObjectContent: (params?: SelectObjectContentCommandInput | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<SelectObjectContentCommandOutput, import("..").EnhancedS3Error, SelectObjectContentCommandOutput, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<SelectObjectContentCommandOutput, import("..").EnhancedS3Error>;
184
+ /**
185
+ * Hook for listing multipart uploads with infinite scroll support
186
+ *
187
+ * Provides paginated listing of incomplete multipart uploads in an S3 bucket.
188
+ * Useful for monitoring and managing ongoing uploads.
189
+ */
190
+ export declare const useListMultipartUploads: (params: ListMultipartUploadsCommandInput, options?: Partial<import("@tanstack/react-query").UseInfiniteQueryOptions<ListMultipartUploadsCommandOutput, import("..").EnhancedS3Error, ListMultipartUploadsCommandOutput, (string | ListMultipartUploadsCommandInput)[], string | undefined>> | undefined) => import("@tanstack/react-query").UseInfiniteQueryResult<ListMultipartUploadsCommandOutput, import("..").EnhancedS3Error>;
@@ -0,0 +1,67 @@
1
+ import { CopyObjectCommand, DeleteObjectCommand, DeleteObjectTaggingCommand, DeleteObjectsCommand, GetObjectAclCommand, GetObjectAttributesCommand, GetObjectCommand, GetObjectLegalHoldCommand, GetObjectRetentionCommand, GetObjectTaggingCommand, GetObjectTorrentCommand, HeadObjectCommand, ListMultipartUploadsCommand, ListObjectVersionsCommand, ListObjectsV2Command, PutObjectAclCommand, PutObjectCommand, PutObjectLegalHoldCommand, PutObjectRetentionCommand, PutObjectTaggingCommand, RestoreObjectCommand, SelectObjectContentCommand } from "@aws-sdk/client-s3";
2
+ import { useCreateS3InfiniteQueryHook } from "./factories/useCreateS3InfiniteQueryHook.js";
3
+ import { useCreateS3MutationHook } from "./factories/useCreateS3MutationHook.js";
4
+ import { useCreateS3QueryHook } from "./factories/useCreateS3QueryHook.js";
5
+ import { SearchObjectsV2Command, SearchObjectsVersionCommand } from "@scality/zenkoclient";
6
+ const useListObjects = useCreateS3InfiniteQueryHook(ListObjectsV2Command, "ListObjects");
7
+ const useListObjectVersions = useCreateS3InfiniteQueryHook(ListObjectVersionsCommand, "ListObjectVersions");
8
+ const useSearchObjects = useCreateS3InfiniteQueryHook(SearchObjectsV2Command, "SearchObjects");
9
+ const useSearchObjectsVersions = useCreateS3InfiniteQueryHook(SearchObjectsVersionCommand, "SearchObjectsVersions");
10
+ const useObjectMetadata = useCreateS3QueryHook(HeadObjectCommand, "HeadObject");
11
+ const useGetObject = useCreateS3QueryHook(GetObjectCommand, "GetObject");
12
+ const usePutObject = useCreateS3MutationHook(PutObjectCommand, "PutObject", [
13
+ "ListObjects",
14
+ "SearchObjects"
15
+ ]);
16
+ const useCreateFolder = useCreateS3MutationHook(PutObjectCommand, "PutObject", [
17
+ "ListObjects",
18
+ "SearchObjects"
19
+ ]);
20
+ const useUploadObjects = useCreateS3MutationHook(PutObjectCommand, "PutObject", [
21
+ "ListObjects",
22
+ "SearchObjects"
23
+ ]);
24
+ const useDeleteObject = useCreateS3MutationHook(DeleteObjectCommand, "DeleteObject", [
25
+ "ListObjects",
26
+ "SearchObjects"
27
+ ]);
28
+ const useDeleteObjects = useCreateS3MutationHook(DeleteObjectsCommand, "DeleteObjects", [
29
+ "ListObjects",
30
+ "ListObjectVersions",
31
+ "SearchObjects",
32
+ "SearchObjectsVersions"
33
+ ]);
34
+ const useCopyObject = useCreateS3MutationHook(CopyObjectCommand, "CopyObject", [
35
+ "ListObjects",
36
+ "SearchObjects",
37
+ "HeadObject"
38
+ ]);
39
+ const useObjectRetention = useCreateS3QueryHook(GetObjectRetentionCommand, "GetObjectRetention");
40
+ const useSetObjectRetention = useCreateS3MutationHook(PutObjectRetentionCommand, "PutObjectRetention", [
41
+ "GetObjectRetention"
42
+ ]);
43
+ const useObjectLegalHold = useCreateS3QueryHook(GetObjectLegalHoldCommand, "GetObjectLegalHold");
44
+ const useSetObjectLegalHold = useCreateS3MutationHook(PutObjectLegalHoldCommand, "PutObjectLegalHold", [
45
+ "GetObjectLegalHold",
46
+ "BatchObjectLegalHold"
47
+ ]);
48
+ const useObjectTagging = useCreateS3QueryHook(GetObjectTaggingCommand, "GetObjectTagging");
49
+ const useSetObjectTagging = useCreateS3MutationHook(PutObjectTaggingCommand, "PutObjectTagging", [
50
+ "GetObjectTagging"
51
+ ]);
52
+ const useDeleteObjectTagging = useCreateS3MutationHook(DeleteObjectTaggingCommand, "DeleteObjectTagging", [
53
+ "GetObjectTagging"
54
+ ]);
55
+ const useObjectAcl = useCreateS3QueryHook(GetObjectAclCommand, "GetObjectAcl");
56
+ const useSetObjectAcl = useCreateS3MutationHook(PutObjectAclCommand, "PutObjectAcl", [
57
+ "GetObjectAcl"
58
+ ]);
59
+ const useGetObjectAttributes = useCreateS3QueryHook(GetObjectAttributesCommand, "GetObjectAttributes");
60
+ const useGetObjectTorrent = useCreateS3QueryHook(GetObjectTorrentCommand, "GetObjectTorrent");
61
+ const useRestoreObject = useCreateS3MutationHook(RestoreObjectCommand, "RestoreObject", [
62
+ "HeadObject",
63
+ "ListObjects"
64
+ ]);
65
+ const useSelectObjectContent = useCreateS3QueryHook(SelectObjectContentCommand, "SelectObjectContent");
66
+ const useListMultipartUploads = useCreateS3InfiniteQueryHook(ListMultipartUploadsCommand, "ListMultipartUploads");
67
+ export { useCopyObject, useCreateFolder, useDeleteObject, useDeleteObjectTagging, useDeleteObjects, useGetObject, useGetObjectAttributes, useGetObjectTorrent, useListMultipartUploads, useListObjectVersions, useListObjects, useObjectAcl, useObjectLegalHold, useObjectMetadata, useObjectRetention, useObjectTagging, usePutObject, useRestoreObject, useSearchObjects, useSearchObjectsVersions, useSelectObjectContent, useSetObjectAcl, useSetObjectLegalHold, useSetObjectRetention, useSetObjectTagging, useUploadObjects };
@@ -0,0 +1,73 @@
1
+ /**
2
+ * S3 Presigned URL Operations
3
+ *
4
+ * This file contains hooks for the three core presigned URL operations:
5
+ * 1. Get Presigned URL (Download)
6
+ * 2. Get Presigned POST
7
+ * 3. Get Presigned Upload (PUT)
8
+ */
9
+ import { PresignedPostOptions, PresignedPost } from "@aws-sdk/s3-presigned-post";
10
+ import { GetObjectCommandInput, PutObjectCommandInput } from "@aws-sdk/client-s3";
11
+ /**
12
+ * Hook for getting presigned download URLs
13
+ *
14
+ * Generates presigned URLs for downloading S3 objects.
15
+ * Supports custom expiration times and response headers.
16
+ */
17
+ export declare const useGetPresignedDownload: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<{
18
+ Url: string;
19
+ ExpiresAt: Date;
20
+ Bucket: string;
21
+ Key: string;
22
+ VersionId?: string;
23
+ }, import("../utils/errorHandling").EnhancedS3Error, GetObjectCommandInput & {
24
+ expiresIn?: number;
25
+ }, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<{
26
+ Url: string;
27
+ ExpiresAt: Date;
28
+ Bucket: string;
29
+ Key: string;
30
+ VersionId?: string;
31
+ }, import("../utils/errorHandling").EnhancedS3Error, GetObjectCommandInput & {
32
+ expiresIn?: number;
33
+ }>;
34
+ /**
35
+ * Hook for getting presigned upload URLs
36
+ *
37
+ * Generates presigned URLs for uploading objects to S3 using PUT method.
38
+ * Supports content type specification, content length limits, and custom metadata.
39
+ */
40
+ export declare const useGetPresignedUpload: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<{
41
+ Url: string;
42
+ ExpiresAt: Date;
43
+ Bucket: string;
44
+ Key: string;
45
+ }, import("../utils/errorHandling").EnhancedS3Error, PutObjectCommandInput & {
46
+ expiresIn?: number;
47
+ }, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<{
48
+ Url: string;
49
+ ExpiresAt: Date;
50
+ Bucket: string;
51
+ Key: string;
52
+ }, import("../utils/errorHandling").EnhancedS3Error, PutObjectCommandInput & {
53
+ expiresIn?: number;
54
+ }>;
55
+ /**
56
+ * Hook for getting presigned POST configurations
57
+ *
58
+ * Generates presigned POST data for browser-based file uploads.
59
+ * Returns both the POST URL and form fields required for direct uploads to S3.
60
+ */
61
+ export declare const useGetPresignedPost: (options?: Omit<import("@tanstack/react-query").UseMutationOptions<PresignedPost & {
62
+ ExpiresAt: Date;
63
+ }, import("../utils/errorHandling").EnhancedS3Error, {
64
+ Bucket: string;
65
+ Key: string;
66
+ expiresIn?: number;
67
+ } & Omit<PresignedPostOptions, "Expires" | "Bucket" | "Key">, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<PresignedPost & {
68
+ ExpiresAt: Date;
69
+ }, import("../utils/errorHandling").EnhancedS3Error, {
70
+ Bucket: string;
71
+ Key: string;
72
+ expiresIn?: number;
73
+ } & Omit<PresignedPostOptions, "Expires" | "Bucket" | "Key">>;
@@ -0,0 +1,72 @@
1
+ import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
2
+ import { createPresignedPost } from "@aws-sdk/s3-presigned-post";
3
+ import { GetObjectCommand, PutObjectCommand } from "@aws-sdk/client-s3";
4
+ import { createS3OperationError } from "../utils/errorHandling.js";
5
+ import { useCreateS3FunctionMutationHook } from "./factories/index.js";
6
+ const generatePresignedDownloadUrl = async (client, config)=>{
7
+ try {
8
+ const { Bucket, Key, expiresIn = 3600, ...awsOptions } = config;
9
+ const command = new GetObjectCommand({
10
+ Bucket,
11
+ Key,
12
+ ...awsOptions
13
+ });
14
+ const url = await getSignedUrl(client, command, {
15
+ expiresIn
16
+ });
17
+ const expiresAt = new Date(Date.now() + 1000 * expiresIn);
18
+ return {
19
+ Url: url,
20
+ ExpiresAt: expiresAt,
21
+ Bucket: Bucket,
22
+ Key: Key,
23
+ VersionId: config.VersionId
24
+ };
25
+ } catch (error) {
26
+ throw createS3OperationError(error, "GeneratePresignedDownload", config.Bucket, config.Key);
27
+ }
28
+ };
29
+ const generatePresignedUploadUrl = async (client, config)=>{
30
+ try {
31
+ const { Bucket, Key, expiresIn = 3600, ...awsOptions } = config;
32
+ const command = new PutObjectCommand({
33
+ Bucket,
34
+ Key,
35
+ ...awsOptions
36
+ });
37
+ const url = await getSignedUrl(client, command, {
38
+ expiresIn
39
+ });
40
+ const expiresAt = new Date(Date.now() + 1000 * expiresIn);
41
+ return {
42
+ Url: url,
43
+ ExpiresAt: expiresAt,
44
+ Bucket: Bucket,
45
+ Key: Key
46
+ };
47
+ } catch (error) {
48
+ throw createS3OperationError(error, "GeneratePresignedUpload", config.Bucket, config.Key);
49
+ }
50
+ };
51
+ const generatePresignedPost = async (client, config)=>{
52
+ try {
53
+ const { Bucket, Key, expiresIn = 3600, ...awsOptions } = config;
54
+ const presignedPost = await createPresignedPost(client, {
55
+ Bucket,
56
+ Key,
57
+ Expires: expiresIn,
58
+ ...awsOptions
59
+ });
60
+ const expiresAt = new Date(Date.now() + 1000 * expiresIn);
61
+ return {
62
+ ...presignedPost,
63
+ ExpiresAt: expiresAt
64
+ };
65
+ } catch (error) {
66
+ throw createS3OperationError(error, "GeneratePresignedPost", config.Bucket, config.Key);
67
+ }
68
+ };
69
+ const useGetPresignedDownload = useCreateS3FunctionMutationHook(generatePresignedDownloadUrl);
70
+ const useGetPresignedUpload = useCreateS3FunctionMutationHook(generatePresignedUploadUrl);
71
+ const useGetPresignedPost = useCreateS3FunctionMutationHook(generatePresignedPost);
72
+ export { useGetPresignedDownload, useGetPresignedPost, useGetPresignedUpload };
@@ -0,0 +1,11 @@
1
+ interface ObjectIdentifier {
2
+ Key: string;
3
+ VersionId?: string;
4
+ }
5
+ interface LegalHoldStatus {
6
+ key: string;
7
+ versionId?: string;
8
+ isLegalHoldEnabled: boolean;
9
+ }
10
+ export declare const useBatchObjectLegalHold: (bucketName: string, objects: ObjectIdentifier[], enabled?: boolean) => import("@tanstack/react-query").UseQueryResult<Record<string, LegalHoldStatus>, Error>;
11
+ export {};