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

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 (212) hide show
  1. package/dist/components/DataBrowserUI.d.ts +27 -0
  2. package/dist/components/DataBrowserUI.js +88 -0
  3. package/dist/components/Editor.d.ts +1 -1
  4. package/dist/components/Editor.js +3 -3
  5. package/dist/components/__tests__/BucketCreate.test.js +102 -102
  6. package/dist/components/__tests__/BucketDetails.test.d.ts +1 -0
  7. package/dist/components/__tests__/BucketDetails.test.js +420 -0
  8. package/dist/components/__tests__/BucketLifecycleFormPage.test.js +177 -177
  9. package/dist/components/__tests__/BucketLifecycleList.test.js +85 -85
  10. package/dist/components/__tests__/BucketList.test.js +463 -239
  11. package/dist/components/__tests__/BucketNotificationCreatePage.test.js +84 -84
  12. package/dist/components/__tests__/BucketOverview.test.js +273 -261
  13. package/dist/components/__tests__/BucketPolicyPage.test.js +62 -62
  14. package/dist/components/__tests__/BucketReplicationFormPage.test.js +542 -542
  15. package/dist/components/__tests__/BucketReplicationList.test.js +106 -106
  16. package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
  17. package/dist/components/__tests__/DeleteBucketButton.test.js +62 -62
  18. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +47 -47
  19. package/dist/components/__tests__/DeleteObjectButton.test.js +63 -63
  20. package/dist/components/__tests__/EmptyBucketButton.test.js +56 -56
  21. package/dist/components/__tests__/MetadataSearch.test.js +65 -65
  22. package/dist/components/__tests__/ObjectList.test.js +739 -238
  23. package/dist/components/__tests__/UploadButton.test.js +45 -45
  24. package/dist/components/buckets/BucketCreate.d.ts +2 -2
  25. package/dist/components/buckets/BucketCreate.js +41 -41
  26. package/dist/components/buckets/BucketDetails.d.ts +40 -0
  27. package/dist/components/buckets/BucketDetails.js +208 -88
  28. package/dist/components/buckets/BucketLifecycleFormPage.js +161 -160
  29. package/dist/components/buckets/BucketLifecycleList.d.ts +2 -2
  30. package/dist/components/buckets/BucketLifecycleList.js +46 -46
  31. package/dist/components/buckets/BucketList.d.ts +7 -8
  32. package/dist/components/buckets/BucketList.js +156 -100
  33. package/dist/components/buckets/BucketLocation.js +3 -3
  34. package/dist/components/buckets/BucketOverview.d.ts +7 -1
  35. package/dist/components/buckets/BucketOverview.js +366 -182
  36. package/dist/components/buckets/BucketPage.js +20 -16
  37. package/dist/components/buckets/BucketPolicyButton.js +2 -2
  38. package/dist/components/buckets/BucketPolicyPage.js +27 -25
  39. package/dist/components/buckets/BucketReplicationFormPage.js +133 -132
  40. package/dist/components/buckets/BucketReplicationList.d.ts +2 -2
  41. package/dist/components/buckets/BucketReplicationList.js +41 -41
  42. package/dist/components/buckets/BucketVersioning.js +13 -10
  43. package/dist/components/buckets/DeleteBucketButton.js +5 -5
  44. package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +2 -2
  45. package/dist/components/buckets/DeleteBucketConfigRuleButton.js +1 -1
  46. package/dist/components/buckets/EmptyBucketButton.js +20 -20
  47. package/dist/components/buckets/EmptyBucketSummary.d.ts +1 -1
  48. package/dist/components/buckets/EmptyBucketSummary.js +1 -1
  49. package/dist/components/buckets/EmptyBucketSummaryList.js +22 -22
  50. package/dist/components/buckets/__tests__/BucketVersioning.test.js +45 -45
  51. package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +34 -33
  52. package/dist/components/buckets/notifications/EventsSection.js +144 -28
  53. package/dist/components/buckets/notifications/__tests__/events.test.d.ts +1 -0
  54. package/dist/components/buckets/notifications/__tests__/events.test.js +56 -0
  55. package/dist/components/buckets/notifications/events.d.ts +71 -7
  56. package/dist/components/buckets/notifications/events.js +98 -16
  57. package/dist/components/index.d.ts +23 -21
  58. package/dist/components/index.js +4 -2
  59. package/dist/components/layouts/ArrowNavigation.d.ts +1 -2
  60. package/dist/components/layouts/ArrowNavigation.js +22 -10
  61. package/dist/components/layouts/BrowserPageLayout.d.ts +2 -3
  62. package/dist/components/layouts/BrowserPageLayout.js +1 -1
  63. package/dist/components/objects/CreateFolderButton.d.ts +2 -2
  64. package/dist/components/objects/CreateFolderButton.js +10 -10
  65. package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
  66. package/dist/components/objects/DeleteObjectButton.js +20 -20
  67. package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +1 -1
  68. package/dist/components/objects/ObjectDetails/ObjectMetadata.js +56 -56
  69. package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +1 -1
  70. package/dist/components/objects/ObjectDetails/ObjectSummary.js +294 -164
  71. package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +1 -1
  72. package/dist/components/objects/ObjectDetails/ObjectTags.js +25 -25
  73. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.d.ts +1 -0
  74. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +516 -0
  75. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.d.ts +1 -0
  76. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +813 -0
  77. package/dist/components/objects/ObjectDetails/index.d.ts +17 -1
  78. package/dist/components/objects/ObjectDetails/index.js +136 -50
  79. package/dist/components/objects/ObjectList.d.ts +11 -9
  80. package/dist/components/objects/ObjectList.js +576 -295
  81. package/dist/components/objects/ObjectLock/EditRetentionButton.js +3 -3
  82. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +14 -14
  83. package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +1 -1
  84. package/dist/components/objects/ObjectLock/ObjectLockSettings.js +29 -28
  85. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +1 -1
  86. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +6 -6
  87. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +50 -50
  88. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +77 -77
  89. package/dist/components/objects/ObjectPage.js +5 -4
  90. package/dist/components/objects/UploadButton.d.ts +3 -3
  91. package/dist/components/objects/UploadButton.js +6 -6
  92. package/dist/components/providers/DataBrowserProvider.d.ts +15 -4
  93. package/dist/components/providers/DataBrowserProvider.js +33 -11
  94. package/dist/components/search/MetadataSearch.js +26 -25
  95. package/dist/components/search/SearchHints.js +1 -1
  96. package/dist/components/ui/ArrayFieldActions.js +4 -4
  97. package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +1 -1
  98. package/dist/components/ui/ConfirmDeleteRuleModal.js +1 -1
  99. package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
  100. package/dist/components/ui/DeleteObjectModalContent.js +12 -12
  101. package/dist/components/ui/FilterFormSection.d.ts +2 -2
  102. package/dist/components/ui/FilterFormSection.js +29 -29
  103. package/dist/components/ui/Search.elements.d.ts +1 -1
  104. package/dist/components/ui/Search.elements.js +7 -7
  105. package/dist/components/ui/Table.elements.js +5 -5
  106. package/dist/config/factory.d.ts +23 -10
  107. package/dist/config/factory.js +22 -7
  108. package/dist/config/types.d.ts +134 -0
  109. package/dist/contexts/DataBrowserUICustomizationContext.d.ts +27 -0
  110. package/dist/contexts/DataBrowserUICustomizationContext.js +13 -0
  111. package/dist/hooks/__tests__/useISVBucketDetection.test.js +41 -41
  112. package/dist/hooks/__tests__/useIsBucketEmpty.test.js +25 -25
  113. package/dist/hooks/bucketConfiguration.d.ts +1 -1
  114. package/dist/hooks/bucketConfiguration.js +48 -48
  115. package/dist/hooks/bucketOperations.d.ts +1 -1
  116. package/dist/hooks/bucketOperations.js +6 -6
  117. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +78 -78
  118. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +78 -78
  119. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +42 -42
  120. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +61 -61
  121. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +63 -63
  122. package/dist/hooks/factories/index.d.ts +4 -4
  123. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
  124. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +15 -12
  125. package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
  126. package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
  127. package/dist/hooks/factories/useCreateS3MutationHook.js +6 -1
  128. package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
  129. package/dist/hooks/factories/useCreateS3QueryHook.js +8 -5
  130. package/dist/hooks/index.d.ts +14 -13
  131. package/dist/hooks/index.js +2 -1
  132. package/dist/hooks/loginOperations.d.ts +1 -1
  133. package/dist/hooks/loginOperations.js +1 -1
  134. package/dist/hooks/objectOperations.d.ts +2 -2
  135. package/dist/hooks/objectOperations.js +49 -49
  136. package/dist/hooks/presignedOperations.d.ts +2 -2
  137. package/dist/hooks/presignedOperations.js +3 -3
  138. package/dist/hooks/useBatchObjectLegalHold.js +7 -4
  139. package/dist/hooks/useDataBrowserNavigate.d.ts +14 -0
  140. package/dist/hooks/useDataBrowserNavigate.js +24 -0
  141. package/dist/hooks/useDeleteBucketConfigRule.d.ts +2 -2
  142. package/dist/hooks/useDeleteBucketConfigRule.js +4 -4
  143. package/dist/hooks/useEmptyBucket.js +10 -10
  144. package/dist/hooks/useISVBucketDetection.js +3 -3
  145. package/dist/hooks/useIsBucketEmpty.js +4 -4
  146. package/dist/hooks/useLoginMutation.d.ts +1 -1
  147. package/dist/hooks/useLoginMutation.js +1 -1
  148. package/dist/hooks/useS3Client.d.ts +5 -0
  149. package/dist/hooks/useS3Client.js +3 -2
  150. package/dist/hooks/useS3ConfigSwitch.d.ts +11 -0
  151. package/dist/hooks/useS3ConfigSwitch.js +37 -0
  152. package/dist/index.d.ts +6 -6
  153. package/dist/test/msw/handlers/deleteBucket.d.ts +1 -1
  154. package/dist/test/msw/handlers/deleteBucket.js +20 -10
  155. package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -1
  156. package/dist/test/msw/handlers/getBucketAcl.js +29 -17
  157. package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -1
  158. package/dist/test/msw/handlers/getBucketLocation.js +29 -15
  159. package/dist/test/msw/handlers/getBucketPolicy.d.ts +1 -1
  160. package/dist/test/msw/handlers/getBucketPolicy.js +52 -32
  161. package/dist/test/msw/handlers/headObject.d.ts +1 -1
  162. package/dist/test/msw/handlers/headObject.js +31 -13
  163. package/dist/test/msw/handlers/listBuckets.d.ts +1 -1
  164. package/dist/test/msw/handlers/listBuckets.js +5 -3
  165. package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -1
  166. package/dist/test/msw/handlers/listObjectVersions.js +38 -26
  167. package/dist/test/msw/handlers/listObjects.d.ts +1 -1
  168. package/dist/test/msw/handlers/listObjects.js +35 -23
  169. package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -1
  170. package/dist/test/msw/handlers/objectLegalHold.js +31 -16
  171. package/dist/test/msw/handlers/objectRetention.d.ts +1 -1
  172. package/dist/test/msw/handlers/objectRetention.js +31 -17
  173. package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -1
  174. package/dist/test/msw/handlers/putBucketAcl.js +29 -14
  175. package/dist/test/msw/handlers/putObject.d.ts +1 -1
  176. package/dist/test/msw/handlers/putObject.js +27 -12
  177. package/dist/test/msw/handlers.d.ts +3 -3
  178. package/dist/test/msw/handlers.js +72 -49
  179. package/dist/test/msw/index.d.ts +2 -2
  180. package/dist/test/msw/server.d.ts +1 -1
  181. package/dist/test/msw/server.js +1 -1
  182. package/dist/test/msw/utils.js +2 -2
  183. package/dist/test/setup.d.ts +1 -1
  184. package/dist/test/setup.js +19 -19
  185. package/dist/test/testUtils.d.ts +70 -12
  186. package/dist/test/testUtils.js +160 -75
  187. package/dist/test/utils/errorHandling.test.js +119 -119
  188. package/dist/types/index.d.ts +8 -31
  189. package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
  190. package/dist/utils/__tests__/s3ConfigIdentifier.test.js +429 -0
  191. package/dist/utils/constants.d.ts +7 -0
  192. package/dist/utils/constants.js +16 -9
  193. package/dist/utils/deletion/index.d.ts +2 -2
  194. package/dist/utils/deletion/messages.d.ts +1 -1
  195. package/dist/utils/deletion/messages.js +4 -4
  196. package/dist/utils/errorHandling.d.ts +3 -3
  197. package/dist/utils/errorHandling.js +6 -6
  198. package/dist/utils/hooks.js +8 -8
  199. package/dist/utils/index.d.ts +5 -4
  200. package/dist/utils/index.js +2 -0
  201. package/dist/utils/proxyMiddleware.d.ts +1 -1
  202. package/dist/utils/proxyMiddleware.js +6 -11
  203. package/dist/utils/s3Client.d.ts +2 -2
  204. package/dist/utils/s3Client.js +1 -1
  205. package/dist/utils/s3ConfigIdentifier.d.ts +68 -0
  206. package/dist/utils/s3ConfigIdentifier.js +55 -0
  207. package/dist/utils/s3RuleUtils.d.ts +5 -5
  208. package/dist/utils/s3RuleUtils.js +17 -17
  209. package/dist/utils/useFeatures.js +1 -1
  210. package/dist/utils/useSupportedNotificationEvents.d.ts +6 -0
  211. package/dist/utils/useSupportedNotificationEvents.js +7 -0
  212. package/package.json +3 -3
@@ -2,9 +2,9 @@ import { renderHook, waitFor } from "@testing-library/react";
2
2
  import { useCreateS3MutationHook } from "../useCreateS3MutationHook.js";
3
3
  import { useS3Client } from "../../useS3Client.js";
4
4
  import { createS3OperationError } from "../../../utils/errorHandling.js";
5
- import { createQueryWrapper, validateFactoryHook, validateHookResult } from "../../../test/testUtils.js";
6
- jest.mock("../../useS3Client");
7
- jest.mock("../../../utils/errorHandling");
5
+ import { createTestWrapper, validateFactoryHook, validateHookResult } from "../../../test/testUtils.js";
6
+ jest.mock('../../useS3Client');
7
+ jest.mock('../../../utils/errorHandling');
8
8
  const mockUseS3Client = useS3Client;
9
9
  const mockCreateS3OperationError = createS3OperationError;
10
10
  class MockCommand {
@@ -16,44 +16,44 @@ class MockCommand {
16
16
  const mockS3Client = {
17
17
  send: jest.fn()
18
18
  };
19
- describe("useCreateS3MutationHook - Factory Specific", ()=>{
19
+ describe('useCreateS3MutationHook - Factory Specific', ()=>{
20
20
  beforeEach(()=>{
21
21
  jest.clearAllMocks();
22
22
  mockUseS3Client.mockReturnValue(mockS3Client);
23
23
  });
24
- it("should create a functioning mutation hook", ()=>{
25
- const useMutation = useCreateS3MutationHook(MockCommand, "testMutation");
26
- validateFactoryHook(useMutation, "testMutation");
24
+ it('should create a functioning mutation hook', ()=>{
25
+ const useMutation = useCreateS3MutationHook(MockCommand, 'testMutation');
26
+ validateFactoryHook(useMutation, 'testMutation');
27
27
  const { result } = renderHook(()=>useMutation(), {
28
- wrapper: createQueryWrapper()
28
+ wrapper: createTestWrapper()
29
29
  });
30
- validateHookResult(result.current, "mutation");
30
+ validateHookResult(result.current, 'mutation');
31
31
  });
32
- it("should accept invalidation keys parameter", ()=>{
33
- const useMutation = useCreateS3MutationHook(MockCommand, "testMutation", [
34
- "ListObjects",
35
- "TestQuery"
32
+ it('should accept invalidation keys parameter', ()=>{
33
+ const useMutation = useCreateS3MutationHook(MockCommand, 'testMutation', [
34
+ 'ListObjects',
35
+ 'TestQuery'
36
36
  ]);
37
- validateFactoryHook(useMutation, "testMutation");
37
+ validateFactoryHook(useMutation, 'testMutation');
38
38
  const { result } = renderHook(()=>useMutation(), {
39
- wrapper: createQueryWrapper()
39
+ wrapper: createTestWrapper()
40
40
  });
41
- validateHookResult(result.current, "mutation");
41
+ validateHookResult(result.current, 'mutation');
42
42
  });
43
- it("should execute mutation successfully", async ()=>{
43
+ it('should execute mutation successfully', async ()=>{
44
44
  const mockResponse = {
45
45
  success: true,
46
- key: "uploaded-file.txt"
46
+ key: 'uploaded-file.txt'
47
47
  };
48
48
  mockS3Client.send.mockResolvedValue(mockResponse);
49
- const useMutation = useCreateS3MutationHook(MockCommand, "PutObject");
49
+ const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject');
50
50
  const { result } = renderHook(()=>useMutation(), {
51
- wrapper: createQueryWrapper()
51
+ wrapper: createTestWrapper()
52
52
  });
53
53
  result.current.mutate({
54
- Bucket: "test-bucket",
55
- Key: "test-file.txt",
56
- Body: "content"
54
+ Bucket: 'test-bucket',
55
+ Key: 'test-file.txt',
56
+ Body: 'content'
57
57
  });
58
58
  await waitFor(()=>{
59
59
  expect(result.current.isSuccess).toBe(true);
@@ -61,32 +61,32 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
61
61
  expect(result.current.data).toEqual(mockResponse);
62
62
  expect(mockS3Client.send).toHaveBeenCalledWith(expect.objectContaining({
63
63
  input: {
64
- Bucket: "test-bucket",
65
- Key: "test-file.txt",
66
- Body: "content"
64
+ Bucket: 'test-bucket',
65
+ Key: 'test-file.txt',
66
+ Body: 'content'
67
67
  }
68
68
  }));
69
69
  });
70
- it("should handle mutation errors with proper context", async ()=>{
71
- const mockError = new Error("Access Denied");
72
- const enhancedError = new Error("Enhanced Access Denied");
70
+ it('should handle mutation errors with proper context', async ()=>{
71
+ const mockError = new Error('Access Denied');
72
+ const enhancedError = new Error('Enhanced Access Denied');
73
73
  mockS3Client.send.mockRejectedValue(mockError);
74
74
  mockCreateS3OperationError.mockReturnValue(enhancedError);
75
- const useMutation = useCreateS3MutationHook(MockCommand, "PutObject");
75
+ const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject');
76
76
  const { result } = renderHook(()=>useMutation(), {
77
- wrapper: createQueryWrapper()
77
+ wrapper: createTestWrapper()
78
78
  });
79
79
  result.current.mutate({
80
- Bucket: "test-bucket",
81
- Key: "test-file.txt"
80
+ Bucket: 'test-bucket',
81
+ Key: 'test-file.txt'
82
82
  });
83
83
  await waitFor(()=>{
84
84
  expect(result.current.isError).toBe(true);
85
85
  });
86
86
  expect(result.current.error).toBe(enhancedError);
87
- expect(mockCreateS3OperationError).toHaveBeenCalledWith(mockError, "PutObject", "test-bucket");
87
+ expect(mockCreateS3OperationError).toHaveBeenCalledWith(mockError, 'PutObject', 'test-bucket');
88
88
  });
89
- it("should handle mutation callbacks correctly", async ()=>{
89
+ it('should handle mutation callbacks correctly', async ()=>{
90
90
  const mockResponse = {
91
91
  success: true
92
92
  };
@@ -94,17 +94,17 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
94
94
  const onError = jest.fn();
95
95
  const onSettled = jest.fn();
96
96
  mockS3Client.send.mockResolvedValue(mockResponse);
97
- const useMutation = useCreateS3MutationHook(MockCommand, "PutObject");
97
+ const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject');
98
98
  const { result } = renderHook(()=>useMutation({
99
99
  onSuccess,
100
100
  onError,
101
101
  onSettled
102
102
  }), {
103
- wrapper: createQueryWrapper()
103
+ wrapper: createTestWrapper()
104
104
  });
105
105
  const variables = {
106
- Bucket: "test-bucket",
107
- Key: "test-file.txt"
106
+ Bucket: 'test-bucket',
107
+ Key: 'test-file.txt'
108
108
  };
109
109
  result.current.mutate(variables);
110
110
  await waitFor(()=>{
@@ -114,28 +114,28 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
114
114
  expect(onError).not.toHaveBeenCalled();
115
115
  expect(onSettled).toHaveBeenCalledWith(mockResponse, null, variables, void 0, expect.any(Object));
116
116
  });
117
- it("should handle mutation with invalidation keys", async ()=>{
117
+ it('should handle mutation with invalidation keys', async ()=>{
118
118
  const mockResponse = {
119
119
  success: true
120
120
  };
121
121
  mockS3Client.send.mockResolvedValue(mockResponse);
122
- const useMutation = useCreateS3MutationHook(MockCommand, "PutObject", [
123
- "ListObjects",
124
- "TestQuery"
122
+ const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject', [
123
+ 'ListObjects',
124
+ 'TestQuery'
125
125
  ]);
126
126
  const { result } = renderHook(()=>useMutation(), {
127
- wrapper: createQueryWrapper()
127
+ wrapper: createTestWrapper()
128
128
  });
129
129
  result.current.mutate({
130
- Bucket: "test-bucket",
131
- Key: "test-file.txt"
130
+ Bucket: 'test-bucket',
131
+ Key: 'test-file.txt'
132
132
  });
133
133
  await waitFor(()=>{
134
134
  expect(result.current.isSuccess).toBe(true);
135
135
  });
136
136
  expect(result.current.data).toEqual(mockResponse);
137
137
  });
138
- it("should handle concurrent mutations correctly", async ()=>{
138
+ it('should handle concurrent mutations correctly', async ()=>{
139
139
  const mockResponse1 = {
140
140
  success: true,
141
141
  id: 1
@@ -149,20 +149,20 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
149
149
  callCount++;
150
150
  return Promise.resolve(1 === callCount ? mockResponse1 : mockResponse2);
151
151
  });
152
- const useMutation = useCreateS3MutationHook(MockCommand, "PutObject");
152
+ const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject');
153
153
  const { result: result1 } = renderHook(()=>useMutation(), {
154
- wrapper: createQueryWrapper()
154
+ wrapper: createTestWrapper()
155
155
  });
156
156
  const { result: result2 } = renderHook(()=>useMutation(), {
157
- wrapper: createQueryWrapper()
157
+ wrapper: createTestWrapper()
158
158
  });
159
159
  result1.current.mutate({
160
- Bucket: "test-bucket",
161
- Key: "file1.txt"
160
+ Bucket: 'test-bucket',
161
+ Key: 'file1.txt'
162
162
  });
163
163
  result2.current.mutate({
164
- Bucket: "test-bucket",
165
- Key: "file2.txt"
164
+ Bucket: 'test-bucket',
165
+ Key: 'file2.txt'
166
166
  });
167
167
  await waitFor(()=>{
168
168
  expect(result1.current.isSuccess).toBe(true);
@@ -172,7 +172,7 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
172
172
  expect(result2.current.data).toEqual(mockResponse2);
173
173
  expect(mockS3Client.send).toHaveBeenCalledTimes(2);
174
174
  });
175
- it("should pass command correctly for mutations", async ()=>{
175
+ it('should pass command correctly for mutations', async ()=>{
176
176
  let capturedCommand;
177
177
  mockS3Client.send.mockImplementation((command)=>{
178
178
  capturedCommand = command;
@@ -180,21 +180,21 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
180
180
  success: true
181
181
  });
182
182
  });
183
- const useMutation = useCreateS3MutationHook(MockCommand, "PutObject");
183
+ const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject');
184
184
  const { result } = renderHook(()=>useMutation(), {
185
- wrapper: createQueryWrapper()
185
+ wrapper: createTestWrapper()
186
186
  });
187
187
  result.current.mutate({
188
- Bucket: "test-bucket",
189
- Key: "test-file.txt"
188
+ Bucket: 'test-bucket',
189
+ Key: 'test-file.txt'
190
190
  });
191
191
  await waitFor(()=>{
192
192
  expect(result.current.isSuccess).toBe(true);
193
193
  });
194
194
  expect(capturedCommand).toBeInstanceOf(MockCommand);
195
195
  expect(capturedCommand.input).toEqual({
196
- Bucket: "test-bucket",
197
- Key: "test-file.txt"
196
+ Bucket: 'test-bucket',
197
+ Key: 'test-file.txt'
198
198
  });
199
199
  });
200
200
  });
@@ -2,9 +2,9 @@ import { renderHook, waitFor } from "@testing-library/react";
2
2
  import { useCreateS3QueryHook } from "../useCreateS3QueryHook.js";
3
3
  import { useS3Client } from "../../useS3Client.js";
4
4
  import { createS3OperationError, isNotFoundError } from "../../../utils/errorHandling.js";
5
- import { createQueryWrapper, validateFactoryHook, validateHookResult } from "../../../test/testUtils.js";
6
- jest.mock("../../useS3Client");
7
- jest.mock("../../../utils/errorHandling");
5
+ import { createTestWrapper, validateFactoryHook, validateHookResult } from "../../../test/testUtils.js";
6
+ jest.mock('../../useS3Client');
7
+ jest.mock('../../../utils/errorHandling');
8
8
  const mockUseS3Client = useS3Client;
9
9
  const mockCreateS3OperationError = createS3OperationError;
10
10
  const mockIsNotFoundError = isNotFoundError;
@@ -17,48 +17,48 @@ class MockCommand {
17
17
  const mockS3Client = {
18
18
  send: jest.fn()
19
19
  };
20
- describe("useCreateS3QueryHook - Factory Specific", ()=>{
20
+ describe('useCreateS3QueryHook - Factory Specific', ()=>{
21
21
  beforeEach(()=>{
22
22
  jest.clearAllMocks();
23
23
  mockUseS3Client.mockReturnValue(mockS3Client);
24
24
  });
25
- it("should create a functioning query hook", ()=>{
26
- const useTestQuery = useCreateS3QueryHook(MockCommand, "testOperation");
27
- validateFactoryHook(useTestQuery, "testOperation");
25
+ it('should create a functioning query hook', ()=>{
26
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'testOperation');
27
+ validateFactoryHook(useTestQuery, 'testOperation');
28
28
  const { result } = renderHook(()=>useTestQuery({
29
- testParam: "value"
29
+ testParam: 'value'
30
30
  }), {
31
- wrapper: createQueryWrapper()
31
+ wrapper: createTestWrapper()
32
32
  });
33
- validateHookResult(result.current, "query");
33
+ validateHookResult(result.current, 'query');
34
34
  });
35
- it("should accept and forward query options correctly", ()=>{
36
- const useTestQuery = useCreateS3QueryHook(MockCommand, "testOperation");
35
+ it('should accept and forward query options correctly', ()=>{
36
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'testOperation');
37
37
  const customOptions = {
38
38
  enabled: false,
39
39
  staleTime: 5000,
40
40
  refetchOnWindowFocus: false
41
41
  };
42
42
  const { result } = renderHook(()=>useTestQuery({
43
- testParam: "value"
43
+ testParam: 'value'
44
44
  }, customOptions), {
45
- wrapper: createQueryWrapper()
45
+ wrapper: createTestWrapper()
46
46
  });
47
- expect(result.current.fetchStatus).toBe("idle");
47
+ expect(result.current.fetchStatus).toBe('idle');
48
48
  expect(result.current.isLoading).toBe(false);
49
49
  });
50
- it("should handle successful query execution", async ()=>{
50
+ it('should handle successful query execution', async ()=>{
51
51
  const mockResponse = {
52
- data: "test-response",
53
- status: "success"
52
+ data: 'test-response',
53
+ status: 'success'
54
54
  };
55
55
  mockS3Client.send.mockResolvedValue(mockResponse);
56
- const useTestQuery = useCreateS3QueryHook(MockCommand, "testOperation");
56
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'testOperation');
57
57
  const { result } = renderHook(()=>useTestQuery({
58
- Bucket: "test-bucket",
59
- Key: "test-key"
58
+ Bucket: 'test-bucket',
59
+ Key: 'test-key'
60
60
  }), {
61
- wrapper: createQueryWrapper()
61
+ wrapper: createTestWrapper()
62
62
  });
63
63
  await waitFor(()=>{
64
64
  expect(result.current.isSuccess).toBe(true);
@@ -68,52 +68,52 @@ describe("useCreateS3QueryHook - Factory Specific", ()=>{
68
68
  abortSignal: expect.any(AbortSignal)
69
69
  }));
70
70
  });
71
- it("should handle query errors with proper context", async ()=>{
72
- const mockError = new Error("S3 Service Error");
73
- const enhancedError = new Error("Enhanced S3 Service Error");
71
+ it('should handle query errors with proper context', async ()=>{
72
+ const mockError = new Error('S3 Service Error');
73
+ const enhancedError = new Error('Enhanced S3 Service Error');
74
74
  mockS3Client.send.mockRejectedValue(mockError);
75
75
  mockCreateS3OperationError.mockReturnValue(enhancedError);
76
- const useTestQuery = useCreateS3QueryHook(MockCommand, "testOperation");
76
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'testOperation');
77
77
  const { result } = renderHook(()=>useTestQuery({
78
- Bucket: "test-bucket",
79
- Key: "test-key"
78
+ Bucket: 'test-bucket',
79
+ Key: 'test-key'
80
80
  }), {
81
- wrapper: createQueryWrapper()
81
+ wrapper: createTestWrapper()
82
82
  });
83
83
  await waitFor(()=>{
84
84
  expect(result.current.isError).toBe(true);
85
85
  });
86
86
  expect(result.current.error).toBe(enhancedError);
87
- expect(mockCreateS3OperationError).toHaveBeenCalledWith(mockError, "testOperation", "test-bucket");
87
+ expect(mockCreateS3OperationError).toHaveBeenCalledWith(mockError, 'testOperation', 'test-bucket');
88
88
  });
89
- it("should handle parameter validation correctly", ()=>{
90
- const useTestQuery = useCreateS3QueryHook(MockCommand, "testOperation");
89
+ it('should handle parameter validation correctly', ()=>{
90
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'testOperation');
91
91
  const { result: invalidResult } = renderHook(()=>useTestQuery({
92
- Bucket: "test",
92
+ Bucket: 'test',
93
93
  Key: void 0
94
94
  }), {
95
- wrapper: createQueryWrapper()
95
+ wrapper: createTestWrapper()
96
96
  });
97
- expect(invalidResult.current.fetchStatus).toBe("idle");
97
+ expect(invalidResult.current.fetchStatus).toBe('idle');
98
98
  const { result: validResult } = renderHook(()=>useTestQuery({
99
- Bucket: "test",
100
- Key: "valid-key"
99
+ Bucket: 'test',
100
+ Key: 'valid-key'
101
101
  }), {
102
- wrapper: createQueryWrapper()
102
+ wrapper: createTestWrapper()
103
103
  });
104
- expect(validResult.current.fetchStatus).not.toBe("idle");
104
+ expect(validResult.current.fetchStatus).not.toBe('idle');
105
105
  });
106
- it("should handle empty string parameters correctly", ()=>{
107
- const useTestQuery = useCreateS3QueryHook(MockCommand, "testOperation");
106
+ it('should handle empty string parameters correctly', ()=>{
107
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'testOperation');
108
108
  const { result: emptyResult } = renderHook(()=>useTestQuery({
109
- Bucket: "test",
110
- Key: ""
109
+ Bucket: 'test',
110
+ Key: ''
111
111
  }), {
112
- wrapper: createQueryWrapper()
112
+ wrapper: createTestWrapper()
113
113
  });
114
- expect(emptyResult.current.fetchStatus).not.toBe("idle");
114
+ expect(emptyResult.current.fetchStatus).not.toBe('idle');
115
115
  });
116
- it("should pass AbortSignal correctly to S3 client", async ()=>{
116
+ it('should pass AbortSignal correctly to S3 client', async ()=>{
117
117
  let capturedAbortSignal;
118
118
  mockS3Client.send.mockImplementation((_command, options)=>{
119
119
  capturedAbortSignal = options?.abortSignal;
@@ -121,12 +121,12 @@ describe("useCreateS3QueryHook - Factory Specific", ()=>{
121
121
  success: true
122
122
  });
123
123
  });
124
- const useTestQuery = useCreateS3QueryHook(MockCommand, "testOperation");
124
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'testOperation');
125
125
  const { result } = renderHook(()=>useTestQuery({
126
- Bucket: "test",
127
- Key: "test"
126
+ Bucket: 'test',
127
+ Key: 'test'
128
128
  }), {
129
- wrapper: createQueryWrapper()
129
+ wrapper: createTestWrapper()
130
130
  });
131
131
  await waitFor(()=>{
132
132
  expect(result.current.isSuccess).toBe(true);
@@ -134,19 +134,19 @@ describe("useCreateS3QueryHook - Factory Specific", ()=>{
134
134
  expect(capturedAbortSignal).toBeInstanceOf(AbortSignal);
135
135
  expect(capturedAbortSignal?.aborted).toBe(false);
136
136
  });
137
- it("should return empty config for supported operations when NOT_FOUND error occurs", async ()=>{
138
- const error = new Error("Configuration does not exist");
139
- error.name = "NoSuchConfiguration";
137
+ it('should return empty config for supported operations when NOT_FOUND error occurs', async ()=>{
138
+ const error = new Error('Configuration does not exist');
139
+ error.name = 'NoSuchConfiguration';
140
140
  error.$metadata = {
141
141
  httpStatusCode: 404
142
142
  };
143
143
  mockS3Client.send.mockRejectedValueOnce(error);
144
144
  mockIsNotFoundError.mockReturnValueOnce(true);
145
- const useTestQuery = useCreateS3QueryHook(MockCommand, "GetBucketLifecycleConfiguration");
145
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'GetBucketLifecycleConfiguration');
146
146
  const { result } = renderHook(()=>useTestQuery({
147
- Bucket: "test-bucket"
147
+ Bucket: 'test-bucket'
148
148
  }), {
149
- wrapper: createQueryWrapper()
149
+ wrapper: createTestWrapper()
150
150
  });
151
151
  await waitFor(()=>{
152
152
  expect(result.current.isSuccess).toBe(true);
@@ -154,21 +154,21 @@ describe("useCreateS3QueryHook - Factory Specific", ()=>{
154
154
  expect(result.current.data).toBeDefined();
155
155
  expect(mockIsNotFoundError).toHaveBeenCalledWith(error);
156
156
  });
157
- it("should throw error when NOT_FOUND occurs for unsupported operations", async ()=>{
158
- const error = new Error("Bucket not found");
159
- error.name = "NoSuchBucket";
157
+ it('should throw error when NOT_FOUND occurs for unsupported operations', async ()=>{
158
+ const error = new Error('Bucket not found');
159
+ error.name = 'NoSuchBucket';
160
160
  error.$metadata = {
161
161
  httpStatusCode: 404
162
162
  };
163
- const enhancedError = new Error("Enhanced error");
163
+ const enhancedError = new Error('Enhanced error');
164
164
  mockS3Client.send.mockRejectedValueOnce(error);
165
165
  mockIsNotFoundError.mockReturnValueOnce(true);
166
166
  mockCreateS3OperationError.mockReturnValueOnce(enhancedError);
167
- const useTestQuery = useCreateS3QueryHook(MockCommand, "GetBucketAcl");
167
+ const useTestQuery = useCreateS3QueryHook(MockCommand, 'GetBucketAcl');
168
168
  const { result } = renderHook(()=>useTestQuery({
169
- Bucket: "test-bucket"
169
+ Bucket: 'test-bucket'
170
170
  }), {
171
- wrapper: createQueryWrapper()
171
+ wrapper: createTestWrapper()
172
172
  });
173
173
  await waitFor(()=>{
174
174
  expect(result.current.isError).toBe(true);
@@ -12,7 +12,7 @@
12
12
  * - AbortSignal support for cancellation
13
13
  * - Bucket/object context extraction for errors
14
14
  */
15
- export { useCreateS3QueryHook } from "./useCreateS3QueryHook";
16
- export { useCreateS3MutationHook, useCreateS3FunctionMutationHook, } from "./useCreateS3MutationHook";
17
- export { useCreateS3InfiniteQueryHook } from "./useCreateS3InfiniteQueryHook";
18
- export { useCreateS3LoginHook } from "./useCreateS3LoginHook";
15
+ export { useCreateS3QueryHook } from './useCreateS3QueryHook';
16
+ export { useCreateS3MutationHook, useCreateS3FunctionMutationHook, } from './useCreateS3MutationHook';
17
+ export { useCreateS3InfiniteQueryHook } from './useCreateS3InfiniteQueryHook';
18
+ export { useCreateS3LoginHook } from './useCreateS3LoginHook';
@@ -1,5 +1,5 @@
1
- import { UseInfiniteQueryOptions, UseInfiniteQueryResult } from "@tanstack/react-query";
2
- import { EnhancedS3Error } from "../../utils/errorHandling";
1
+ import { UseInfiniteQueryOptions, UseInfiniteQueryResult } from '@tanstack/react-query';
2
+ import { EnhancedS3Error } from '../../utils/errorHandling';
3
3
  /**
4
4
  * Factory function for creating S3 infinite query hooks
5
5
  *
@@ -1,11 +1,14 @@
1
1
  import { useInfiniteQuery } from "@tanstack/react-query";
2
2
  import { useS3Client } from "../useS3Client.js";
3
+ import { useDataBrowserContext } from "../../components/providers/DataBrowserProvider.js";
3
4
  import { createS3OperationError, shouldRetryError } from "../../utils/errorHandling.js";
4
5
  function useCreateS3InfiniteQueryHook(Command, operationName) {
5
6
  return (params, options)=>{
7
+ const { s3ConfigIdentifier } = useDataBrowserContext();
6
8
  const s3Client = useS3Client();
7
9
  const queryOptions = {
8
10
  queryKey: [
11
+ s3ConfigIdentifier,
9
12
  operationName,
10
13
  params
11
14
  ],
@@ -20,7 +23,7 @@ function useCreateS3InfiniteQueryHook(Command, operationName) {
20
23
  });
21
24
  return response;
22
25
  } catch (error) {
23
- const bucketName = "Bucket" in params ? params.Bucket : void 0;
26
+ const bucketName = 'Bucket' in params ? params.Bucket : void 0;
24
27
  throw createS3OperationError(error, operationName, bucketName);
25
28
  }
26
29
  },
@@ -28,8 +31,8 @@ function useCreateS3InfiniteQueryHook(Command, operationName) {
28
31
  initialPageParam: void 0,
29
32
  getNextPageParam: (lastPage)=>getNextPageToken(operationName, lastPage),
30
33
  enabled: params ? Object.entries(params).every(([key, value])=>{
31
- if ("Prefix" === key) return void 0 !== value;
32
- return void 0 !== value && "" !== value;
34
+ if ('Prefix' === key) return void 0 !== value;
35
+ return void 0 !== value && '' !== value;
33
36
  }) : true,
34
37
  ...options
35
38
  };
@@ -38,18 +41,18 @@ function useCreateS3InfiniteQueryHook(Command, operationName) {
38
41
  }
39
42
  function getPaginationParams(operationName, pageParam) {
40
43
  switch(operationName){
41
- case "ListObjects":
44
+ case 'ListObjects':
42
45
  return {
43
46
  ContinuationToken: pageParam
44
47
  };
45
- case "ListObjectVersions":
46
- if (pageParam.includes("|")) {
47
- const [keyMarker, versionIdMarker] = pageParam.split("|");
48
+ case 'ListObjectVersions':
49
+ if (pageParam.includes('|')) {
50
+ const [keyMarker, versionIdMarker] = pageParam.split('|');
48
51
  return {
49
- ...keyMarker && "" !== keyMarker ? {
52
+ ...keyMarker && '' !== keyMarker ? {
50
53
  KeyMarker: keyMarker
51
54
  } : {},
52
- ...versionIdMarker && "" !== versionIdMarker ? {
55
+ ...versionIdMarker && '' !== versionIdMarker ? {
53
56
  VersionIdMarker: versionIdMarker
54
57
  } : {}
55
58
  };
@@ -65,10 +68,10 @@ function getPaginationParams(operationName, pageParam) {
65
68
  }
66
69
  function getNextPageToken(operationName, lastPage) {
67
70
  switch(operationName){
68
- case "ListObjects":
71
+ case 'ListObjects':
69
72
  return lastPage.IsTruncated ? lastPage.NextContinuationToken : void 0;
70
- case "ListObjectVersions":
71
- return lastPage.IsTruncated && (lastPage.NextKeyMarker || lastPage.NextVersionIdMarker) ? `${lastPage.NextKeyMarker || ""}|${lastPage.NextVersionIdMarker || ""}` : void 0;
73
+ case 'ListObjectVersions':
74
+ return lastPage.IsTruncated && (lastPage.NextKeyMarker || lastPage.NextVersionIdMarker) ? `${lastPage.NextKeyMarker || ''}|${lastPage.NextVersionIdMarker || ''}` : void 0;
72
75
  default:
73
76
  return lastPage.IsTruncated ? lastPage.NextContinuationToken : void 0;
74
77
  }
@@ -1,5 +1,5 @@
1
- import { UseMutationOptions, UseMutationResult } from "@tanstack/react-query";
2
- import { EnhancedS3Error } from "../../utils/errorHandling";
1
+ import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
2
+ import { EnhancedS3Error } from '../../utils/errorHandling';
3
3
  /**
4
4
  * Factory function for creating S3 login mutation hooks
5
5
  * This factory handles the special authentication case where we need
@@ -1,5 +1,5 @@
1
- import { UseMutationOptions, UseMutationResult } from "@tanstack/react-query";
2
- import { EnhancedS3Error } from "../../utils/errorHandling";
3
- import { S3Client } from "@aws-sdk/client-s3";
1
+ import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
2
+ import { EnhancedS3Error } from '../../utils/errorHandling';
3
+ import { S3Client } from '@aws-sdk/client-s3';
4
4
  export declare function useCreateS3MutationHook<TInput extends object, TOutput>(Command: new (input: TInput) => any, operationName: string, invalidationKeys?: string[]): (options?: Omit<UseMutationOptions<TOutput, EnhancedS3Error, TInput>, "mutationFn">) => UseMutationResult<TOutput, EnhancedS3Error, TInput>;
5
5
  export declare function useCreateS3FunctionMutationHook<TInput, TOutput>(operation: (s3Client: S3Client, input: TInput) => Promise<TOutput>, invalidationKeys?: string[]): (options?: Omit<UseMutationOptions<TOutput, EnhancedS3Error, TInput>, "mutationFn">) => UseMutationResult<TOutput, EnhancedS3Error, TInput>;
@@ -1,8 +1,10 @@
1
1
  import { useMutation, useQueryClient } from "@tanstack/react-query";
2
2
  import { useS3Client } from "../useS3Client.js";
3
+ import { useDataBrowserContext } from "../../components/providers/DataBrowserProvider.js";
3
4
  import { createS3OperationError } from "../../utils/errorHandling.js";
4
5
  function useCreateS3MutationHook(Command, operationName, invalidationKeys) {
5
6
  return (options)=>{
7
+ const { s3ConfigIdentifier } = useDataBrowserContext();
6
8
  const s3Client = useS3Client();
7
9
  const queryClient = useQueryClient();
8
10
  return useMutation({
@@ -11,7 +13,7 @@ function useCreateS3MutationHook(Command, operationName, invalidationKeys) {
11
13
  const command = new Command(params);
12
14
  return await s3Client.send(command);
13
15
  } catch (error) {
14
- const bucketName = "Bucket" in params ? params.Bucket : void 0;
16
+ const bucketName = 'Bucket' in params ? params.Bucket : void 0;
15
17
  throw createS3OperationError(error, operationName, bucketName);
16
18
  }
17
19
  },
@@ -19,6 +21,7 @@ function useCreateS3MutationHook(Command, operationName, invalidationKeys) {
19
21
  if (invalidationKeys) invalidationKeys.forEach((key)=>{
20
22
  queryClient.invalidateQueries({
21
23
  queryKey: [
24
+ s3ConfigIdentifier,
22
25
  key
23
26
  ]
24
27
  });
@@ -30,6 +33,7 @@ function useCreateS3MutationHook(Command, operationName, invalidationKeys) {
30
33
  }
31
34
  function useCreateS3FunctionMutationHook(operation, invalidationKeys) {
32
35
  return (options)=>{
36
+ const { s3ConfigIdentifier } = useDataBrowserContext();
33
37
  const s3Client = useS3Client();
34
38
  const queryClient = useQueryClient();
35
39
  return useMutation({
@@ -38,6 +42,7 @@ function useCreateS3FunctionMutationHook(operation, invalidationKeys) {
38
42
  if (invalidationKeys) invalidationKeys.forEach((key)=>{
39
43
  queryClient.invalidateQueries({
40
44
  queryKey: [
45
+ s3ConfigIdentifier,
41
46
  key
42
47
  ]
43
48
  });
@@ -1,3 +1,3 @@
1
- import { QueryKey, UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
2
- import { EnhancedS3Error } from "../../utils/errorHandling";
1
+ import { QueryKey, UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
2
+ import { EnhancedS3Error } from '../../utils/errorHandling';
3
3
  export declare function useCreateS3QueryHook<TInput extends object, TOutput>(Command: new (input: TInput) => any, operationName: string): (params?: TInput, options?: Omit<UseQueryOptions<TOutput, EnhancedS3Error, TOutput, QueryKey>, "queryKey" | "queryFn">) => UseQueryResult<TOutput, EnhancedS3Error>;