@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.
- package/dist/components/Editor.d.ts +12 -0
- package/dist/components/Editor.js +28 -0
- package/dist/components/__tests__/BucketCreate.test.d.ts +1 -0
- package/dist/components/__tests__/BucketCreate.test.js +408 -0
- package/dist/components/__tests__/BucketLifecycleFormPage.test.d.ts +1 -0
- package/dist/components/__tests__/BucketLifecycleFormPage.test.js +618 -0
- package/dist/components/__tests__/BucketLifecycleList.test.d.ts +1 -0
- package/dist/components/__tests__/BucketLifecycleList.test.js +325 -0
- package/dist/components/__tests__/BucketList.test.d.ts +1 -0
- package/dist/components/__tests__/BucketList.test.js +415 -0
- package/dist/components/__tests__/BucketNotificationCreatePage.test.d.ts +1 -0
- package/dist/components/__tests__/BucketNotificationCreatePage.test.js +316 -0
- package/dist/components/__tests__/BucketOverview.test.d.ts +1 -0
- package/dist/components/__tests__/BucketOverview.test.js +769 -0
- package/dist/components/__tests__/BucketPolicyPage.test.d.ts +1 -0
- package/dist/components/__tests__/BucketPolicyPage.test.js +268 -0
- package/dist/components/__tests__/BucketReplicationFormPage.test.d.ts +1 -0
- package/dist/components/__tests__/BucketReplicationFormPage.test.js +1757 -0
- package/dist/components/__tests__/BucketReplicationList.test.d.ts +1 -0
- package/dist/components/__tests__/BucketReplicationList.test.js +344 -0
- package/dist/components/__tests__/CreateFolderButton.test.d.ts +1 -0
- package/dist/components/__tests__/CreateFolderButton.test.js +147 -0
- package/dist/components/__tests__/DeleteBucketButton.test.d.ts +1 -0
- package/dist/components/__tests__/DeleteBucketButton.test.js +272 -0
- package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.d.ts +1 -0
- package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +196 -0
- package/dist/components/__tests__/DeleteObjectButton.test.d.ts +1 -0
- package/dist/components/__tests__/DeleteObjectButton.test.js +302 -0
- package/dist/components/__tests__/EmptyBucketButton.test.d.ts +1 -0
- package/dist/components/__tests__/EmptyBucketButton.test.js +302 -0
- package/dist/components/__tests__/MetadataSearch.test.d.ts +1 -0
- package/dist/components/__tests__/MetadataSearch.test.js +201 -0
- package/dist/components/__tests__/ObjectList.test.d.ts +1 -0
- package/dist/components/__tests__/ObjectList.test.js +283 -0
- package/dist/components/__tests__/UploadButton.test.d.ts +1 -0
- package/dist/components/__tests__/UploadButton.test.js +144 -0
- package/dist/components/buckets/BucketCreate.d.ts +49 -0
- package/dist/components/buckets/BucketCreate.js +237 -0
- package/dist/components/buckets/BucketDetails.d.ts +1 -0
- package/dist/components/buckets/BucketDetails.js +106 -0
- package/dist/components/buckets/BucketLifecycleFormPage.d.ts +15 -0
- package/dist/components/buckets/BucketLifecycleFormPage.js +1085 -0
- package/dist/components/buckets/BucketLifecycleList.d.ts +10 -0
- package/dist/components/buckets/BucketLifecycleList.js +270 -0
- package/dist/components/buckets/BucketList.d.ts +15 -0
- package/dist/components/buckets/BucketList.js +146 -0
- package/dist/components/buckets/BucketLocation.d.ts +3 -0
- package/dist/components/buckets/BucketLocation.js +16 -0
- package/dist/components/buckets/BucketOverview.d.ts +88 -0
- package/dist/components/buckets/BucketOverview.js +291 -0
- package/dist/components/buckets/BucketPage.d.ts +2 -0
- package/dist/components/buckets/BucketPage.js +47 -0
- package/dist/components/buckets/BucketPolicyButton.d.ts +7 -0
- package/dist/components/buckets/BucketPolicyButton.js +18 -0
- package/dist/components/buckets/BucketPolicyPage.d.ts +1 -0
- package/dist/components/buckets/BucketPolicyPage.js +236 -0
- package/dist/components/buckets/BucketReplicationFormPage.d.ts +1 -0
- package/dist/components/buckets/BucketReplicationFormPage.js +834 -0
- package/dist/components/buckets/BucketReplicationList.d.ts +11 -0
- package/dist/components/buckets/BucketReplicationList.js +189 -0
- package/dist/components/buckets/BucketVersioning.d.ts +4 -0
- package/dist/components/buckets/BucketVersioning.js +73 -0
- package/dist/components/buckets/DeleteBucketButton.d.ts +8 -0
- package/dist/components/buckets/DeleteBucketButton.js +78 -0
- package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +18 -0
- package/dist/components/buckets/DeleteBucketConfigRuleButton.js +53 -0
- package/dist/components/buckets/EmptyBucketButton.d.ts +5 -0
- package/dist/components/buckets/EmptyBucketButton.js +232 -0
- package/dist/components/buckets/EmptyBucketSummary.d.ts +9 -0
- package/dist/components/buckets/EmptyBucketSummary.js +60 -0
- package/dist/components/buckets/EmptyBucketSummaryList.d.ts +13 -0
- package/dist/components/buckets/EmptyBucketSummaryList.js +140 -0
- package/dist/components/buckets/__tests__/BucketVersioning.test.d.ts +1 -0
- package/dist/components/buckets/__tests__/BucketVersioning.test.js +163 -0
- package/dist/components/buckets/notifications/BucketNotificationCreatePage.d.ts +1 -0
- package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +234 -0
- package/dist/components/buckets/notifications/EventsSection.d.ts +1 -0
- package/dist/components/buckets/notifications/EventsSection.js +123 -0
- package/dist/components/buckets/notifications/events.d.ts +12 -0
- package/dist/components/buckets/notifications/events.js +27 -0
- package/dist/components/index.d.ts +21 -0
- package/dist/components/index.js +22 -0
- package/dist/components/layouts/ArrowNavigation.d.ts +4 -0
- package/dist/components/layouts/ArrowNavigation.js +16 -0
- package/dist/components/layouts/BrowserPageLayout.d.ts +12 -0
- package/dist/components/layouts/BrowserPageLayout.js +51 -0
- package/dist/components/objects/CreateFolderButton.d.ts +29 -0
- package/dist/components/objects/CreateFolderButton.js +118 -0
- package/dist/components/objects/DeleteObjectButton.d.ts +8 -0
- package/dist/components/objects/DeleteObjectButton.js +191 -0
- package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +2 -0
- package/dist/components/objects/ObjectDetails/ObjectMetadata.js +356 -0
- package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +3 -0
- package/dist/components/objects/ObjectDetails/ObjectSummary.js +241 -0
- package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +3 -0
- package/dist/components/objects/ObjectDetails/ObjectTags.js +272 -0
- package/dist/components/objects/ObjectDetails/index.d.ts +9 -0
- package/dist/components/objects/ObjectDetails/index.js +75 -0
- package/dist/components/objects/ObjectList.d.ts +40 -0
- package/dist/components/objects/ObjectList.js +453 -0
- package/dist/components/objects/ObjectLock/EditRetentionButton.d.ts +4 -0
- package/dist/components/objects/ObjectLock/EditRetentionButton.js +32 -0
- package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.d.ts +3 -0
- package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +211 -0
- package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +9 -0
- package/dist/components/objects/ObjectLock/ObjectLockSettings.js +158 -0
- package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +8 -0
- package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +39 -0
- package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.d.ts +1 -0
- package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +204 -0
- package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.d.ts +1 -0
- package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +374 -0
- package/dist/components/objects/ObjectPage.d.ts +1 -0
- package/dist/components/objects/ObjectPage.js +45 -0
- package/dist/components/objects/UploadButton.d.ts +34 -0
- package/dist/components/objects/UploadButton.js +229 -0
- package/dist/components/providers/DataBrowserProvider.d.ts +20 -0
- package/dist/components/providers/DataBrowserProvider.js +42 -0
- package/dist/components/search/MetadataSearch.d.ts +5 -0
- package/dist/components/search/MetadataSearch.js +162 -0
- package/dist/components/search/SearchHints.d.ts +8 -0
- package/dist/components/search/SearchHints.js +21 -0
- package/dist/components/ui/ArrayFieldActions.d.ts +36 -0
- package/dist/components/ui/ArrayFieldActions.js +43 -0
- package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +16 -0
- package/dist/components/ui/ConfirmDeleteRuleModal.js +43 -0
- package/dist/components/ui/DeleteObjectModalContent.d.ts +5 -0
- package/dist/components/ui/DeleteObjectModalContent.js +71 -0
- package/dist/components/ui/FilterFormSection.d.ts +44 -0
- package/dist/components/ui/FilterFormSection.js +159 -0
- package/dist/components/ui/Search.elements.d.ts +17 -0
- package/dist/components/ui/Search.elements.js +59 -0
- package/dist/components/ui/Table.elements.d.ts +36 -0
- package/dist/components/ui/Table.elements.js +87 -0
- package/dist/config/factory.d.ts +63 -0
- package/dist/config/factory.js +74 -0
- package/dist/config/types.d.ts +46 -0
- package/dist/config/types.js +0 -0
- package/dist/hooks/__tests__/useISVBucketDetection.test.d.ts +1 -0
- package/dist/hooks/__tests__/useISVBucketDetection.test.js +188 -0
- package/dist/hooks/__tests__/useIsBucketEmpty.test.d.ts +1 -0
- package/dist/hooks/__tests__/useIsBucketEmpty.test.js +122 -0
- package/dist/hooks/bucketConfiguration.d.ts +168 -0
- package/dist/hooks/bucketConfiguration.js +67 -0
- package/dist/hooks/bucketOperations.d.ts +36 -0
- package/dist/hooks/bucketOperations.js +12 -0
- package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.d.ts +1 -0
- package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +276 -0
- package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.d.ts +1 -0
- package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +259 -0
- package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.d.ts +1 -0
- package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +166 -0
- package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.d.ts +1 -0
- package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +200 -0
- package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.d.ts +1 -0
- package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +179 -0
- package/dist/hooks/factories/index.d.ts +18 -0
- package/dist/hooks/factories/index.js +5 -0
- package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +13 -0
- package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +76 -0
- package/dist/hooks/factories/useCreateS3LoginHook.d.ts +8 -0
- package/dist/hooks/factories/useCreateS3LoginHook.js +22 -0
- package/dist/hooks/factories/useCreateS3MutationHook.d.ts +5 -0
- package/dist/hooks/factories/useCreateS3MutationHook.js +50 -0
- package/dist/hooks/factories/useCreateS3QueryHook.d.ts +3 -0
- package/dist/hooks/factories/useCreateS3QueryHook.js +51 -0
- package/dist/hooks/index.d.ts +13 -0
- package/dist/hooks/index.js +13 -0
- package/dist/hooks/loginOperations.d.ts +21 -0
- package/dist/hooks/loginOperations.js +9 -0
- package/dist/hooks/objectOperations.d.ts +190 -0
- package/dist/hooks/objectOperations.js +67 -0
- package/dist/hooks/presignedOperations.d.ts +73 -0
- package/dist/hooks/presignedOperations.js +72 -0
- package/dist/hooks/useBatchObjectLegalHold.d.ts +11 -0
- package/dist/hooks/useBatchObjectLegalHold.js +45 -0
- package/dist/hooks/useDeleteBucketConfigRule.d.ts +26 -0
- package/dist/hooks/useDeleteBucketConfigRule.js +46 -0
- package/dist/hooks/useEmptyBucket.d.ts +27 -0
- package/dist/hooks/useEmptyBucket.js +116 -0
- package/dist/hooks/useISVBucketDetection.d.ts +15 -0
- package/dist/hooks/useISVBucketDetection.js +27 -0
- package/dist/hooks/useIsBucketEmpty.d.ts +7 -0
- package/dist/hooks/useIsBucketEmpty.js +36 -0
- package/dist/hooks/useLoginMutation.d.ts +21 -0
- package/dist/hooks/useLoginMutation.js +9 -0
- package/dist/hooks/useS3Client.d.ts +1 -0
- package/dist/hooks/useS3Client.js +13 -0
- package/dist/hooks/useTableRowSelection.d.ts +9 -0
- package/dist/hooks/useTableRowSelection.js +45 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +6 -0
- package/dist/schemas/bucketPolicySchema.json +321 -0
- package/dist/test/msw/handlers/deleteBucket.d.ts +1 -0
- package/dist/test/msw/handlers/deleteBucket.js +14 -0
- package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -0
- package/dist/test/msw/handlers/getBucketAcl.js +96 -0
- package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -0
- package/dist/test/msw/handlers/getBucketLocation.js +23 -0
- package/dist/test/msw/handlers/getBucketPolicy.d.ts +11 -0
- package/dist/test/msw/handlers/getBucketPolicy.js +72 -0
- package/dist/test/msw/handlers/headObject.d.ts +1 -0
- package/dist/test/msw/handlers/headObject.js +17 -0
- package/dist/test/msw/handlers/listBuckets.d.ts +1 -0
- package/dist/test/msw/handlers/listBuckets.js +24 -0
- package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -0
- package/dist/test/msw/handlers/listObjectVersions.js +83 -0
- package/dist/test/msw/handlers/listObjects.d.ts +1 -0
- package/dist/test/msw/handlers/listObjects.js +66 -0
- package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -0
- package/dist/test/msw/handlers/objectLegalHold.js +24 -0
- package/dist/test/msw/handlers/objectRetention.d.ts +1 -0
- package/dist/test/msw/handlers/objectRetention.js +27 -0
- package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -0
- package/dist/test/msw/handlers/putBucketAcl.js +18 -0
- package/dist/test/msw/handlers/putObject.d.ts +1 -0
- package/dist/test/msw/handlers/putObject.js +16 -0
- package/dist/test/msw/handlers.d.ts +4 -0
- package/dist/test/msw/handlers.js +109 -0
- package/dist/test/msw/index.d.ts +2 -0
- package/dist/test/msw/index.js +3 -0
- package/dist/test/msw/server.d.ts +4 -0
- package/dist/test/msw/server.js +20 -0
- package/dist/test/msw/utils.d.ts +2 -0
- package/dist/test/msw/utils.js +13 -0
- package/dist/test/setup.d.ts +1 -0
- package/dist/test/setup.js +90 -0
- package/dist/test/testUtils.d.ts +181 -0
- package/dist/test/testUtils.js +310 -0
- package/dist/test/utils/errorHandling.test.d.ts +1 -0
- package/dist/test/utils/errorHandling.test.js +423 -0
- package/dist/types/index.d.ts +51 -0
- package/dist/types/index.js +0 -0
- package/dist/utils/constants.d.ts +12 -0
- package/dist/utils/constants.js +9 -0
- package/dist/utils/deletion/index.d.ts +2 -0
- package/dist/utils/deletion/index.js +2 -0
- package/dist/utils/deletion/messages.d.ts +5 -0
- package/dist/utils/deletion/messages.js +29 -0
- package/dist/utils/deletion/types.d.ts +11 -0
- package/dist/utils/deletion/types.js +0 -0
- package/dist/utils/errorHandling.d.ts +63 -0
- package/dist/utils/errorHandling.js +84 -0
- package/dist/utils/hooks.d.ts +2 -0
- package/dist/utils/hooks.js +26 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/proxyMiddleware.d.ts +18 -0
- package/dist/utils/proxyMiddleware.js +56 -0
- package/dist/utils/s3Client.d.ts +5 -0
- package/dist/utils/s3Client.js +36 -0
- package/dist/utils/s3RuleUtils.d.ts +53 -0
- package/dist/utils/s3RuleUtils.js +101 -0
- package/dist/utils/useFeatures.d.ts +1 -0
- package/dist/utils/useFeatures.js +7 -0
- 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 {};
|