@scality/data-browser-library 1.0.0-preview.9 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/dist/components/DataBrowserUI.d.ts +12 -0
  2. package/dist/components/DataBrowserUI.js +99 -0
  3. package/dist/components/Editor.d.ts +1 -1
  4. package/dist/components/Editor.js +3 -3
  5. package/dist/components/__tests__/BucketAccessor.test.js +214 -0
  6. package/dist/components/__tests__/BucketCorsPage.test.d.ts +1 -0
  7. package/dist/components/__tests__/BucketCorsPage.test.js +263 -0
  8. package/dist/components/__tests__/BucketCreate.test.js +271 -105
  9. package/dist/components/__tests__/BucketDetails.test.d.ts +1 -0
  10. package/dist/components/__tests__/BucketDetails.test.js +421 -0
  11. package/dist/components/__tests__/BucketLifecycleFormPage.test.d.ts +13 -0
  12. package/dist/components/__tests__/BucketLifecycleFormPage.test.js +178 -178
  13. package/dist/components/__tests__/BucketLifecycleList.test.js +85 -85
  14. package/dist/components/__tests__/BucketList.test.js +463 -239
  15. package/dist/components/__tests__/BucketNotificationFormPage.test.d.ts +1 -0
  16. package/dist/components/__tests__/BucketNotificationFormPage.test.js +348 -0
  17. package/dist/components/__tests__/BucketNotificationList.test.d.ts +1 -0
  18. package/dist/components/__tests__/BucketNotificationList.test.js +379 -0
  19. package/dist/components/__tests__/BucketOverview.test.js +281 -266
  20. package/dist/components/__tests__/BucketPolicyPage.test.js +151 -99
  21. package/dist/components/__tests__/BucketReplicationFormPage.test.d.ts +15 -0
  22. package/dist/components/__tests__/BucketReplicationFormPage.test.js +544 -544
  23. package/dist/components/__tests__/BucketReplicationList.test.js +106 -106
  24. package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
  25. package/dist/components/__tests__/DeleteBucketButton.test.js +64 -64
  26. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +47 -47
  27. package/dist/components/__tests__/DeleteObjectButton.test.js +64 -64
  28. package/dist/components/__tests__/EmptyBucketButton.test.js +59 -59
  29. package/dist/components/__tests__/MetadataSearch.test.js +65 -65
  30. package/dist/components/__tests__/ObjectList.test.js +741 -240
  31. package/dist/components/__tests__/UploadButton.test.js +45 -45
  32. package/dist/components/breadcrumb/Breadcrumb.d.ts +6 -0
  33. package/dist/components/breadcrumb/Breadcrumb.js +37 -0
  34. package/dist/components/breadcrumb/DataBrowserBreadcrumb.d.ts +1 -0
  35. package/dist/components/breadcrumb/DataBrowserBreadcrumb.js +10 -0
  36. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.d.ts +1 -0
  37. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.js +196 -0
  38. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.d.ts +1 -0
  39. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.js +153 -0
  40. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.d.ts +1 -0
  41. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.js +134 -0
  42. package/dist/components/breadcrumb/index.d.ts +8 -0
  43. package/dist/components/breadcrumb/index.js +4 -0
  44. package/dist/components/breadcrumb/useBreadcrumbPaths.d.ts +2 -0
  45. package/dist/components/breadcrumb/useBreadcrumbPaths.js +82 -0
  46. package/dist/components/buckets/BucketAccessor.d.ts +2 -0
  47. package/dist/components/buckets/BucketAccessor.js +125 -0
  48. package/dist/components/buckets/BucketConfigEditButton.d.ts +8 -0
  49. package/dist/components/buckets/{BucketPolicyButton.js → BucketConfigEditButton.js} +9 -5
  50. package/dist/components/buckets/BucketCorsPage.d.ts +1 -0
  51. package/dist/components/buckets/BucketCorsPage.js +234 -0
  52. package/dist/components/buckets/BucketCreate.d.ts +3 -2
  53. package/dist/components/buckets/BucketCreate.js +89 -47
  54. package/dist/components/buckets/BucketDetails.d.ts +42 -0
  55. package/dist/components/buckets/BucketDetails.js +249 -85
  56. package/dist/components/buckets/BucketLifecycleFormPage.js +206 -190
  57. package/dist/components/buckets/BucketLifecycleList.d.ts +2 -2
  58. package/dist/components/buckets/BucketLifecycleList.js +47 -47
  59. package/dist/components/buckets/BucketList.d.ts +7 -8
  60. package/dist/components/buckets/BucketList.js +158 -101
  61. package/dist/components/buckets/BucketLocation.js +4 -4
  62. package/dist/components/buckets/BucketOverview.d.ts +22 -2
  63. package/dist/components/buckets/BucketOverview.js +394 -187
  64. package/dist/components/buckets/BucketPage.js +43 -21
  65. package/dist/components/buckets/BucketPolicyPage.js +155 -127
  66. package/dist/components/buckets/BucketReplicationFormPage.js +134 -133
  67. package/dist/components/buckets/BucketReplicationList.d.ts +2 -2
  68. package/dist/components/buckets/BucketReplicationList.js +42 -42
  69. package/dist/components/buckets/BucketVersioning.d.ts +4 -0
  70. package/dist/components/buckets/BucketVersioning.js +76 -0
  71. package/dist/components/buckets/DeleteBucketButton.js +8 -8
  72. package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +2 -2
  73. package/dist/components/buckets/DeleteBucketConfigRuleButton.js +2 -2
  74. package/dist/components/buckets/EmptyBucketButton.js +24 -24
  75. package/dist/components/buckets/EmptyBucketSummary.d.ts +2 -2
  76. package/dist/components/buckets/EmptyBucketSummary.js +1 -1
  77. package/dist/components/buckets/EmptyBucketSummaryList.d.ts +1 -1
  78. package/dist/components/buckets/EmptyBucketSummaryList.js +22 -22
  79. package/dist/components/buckets/__tests__/BucketVersioning.test.d.ts +1 -0
  80. package/dist/components/buckets/__tests__/BucketVersioning.test.js +163 -0
  81. package/dist/components/buckets/notifications/BucketNotificationFormPage.d.ts +1 -0
  82. package/dist/components/buckets/notifications/BucketNotificationFormPage.js +316 -0
  83. package/dist/components/buckets/notifications/BucketNotificationList.d.ts +10 -0
  84. package/dist/components/buckets/notifications/BucketNotificationList.js +267 -0
  85. package/dist/components/buckets/notifications/EventsSection.js +145 -29
  86. package/dist/components/buckets/notifications/__tests__/events.test.d.ts +1 -0
  87. package/dist/components/buckets/notifications/__tests__/events.test.js +56 -0
  88. package/dist/components/buckets/notifications/events.d.ts +71 -7
  89. package/dist/components/buckets/notifications/events.js +98 -16
  90. package/dist/components/index.d.ts +27 -20
  91. package/dist/components/index.js +17 -10
  92. package/dist/components/layouts/ArrowNavigation.d.ts +3 -0
  93. package/dist/components/layouts/ArrowNavigation.js +28 -0
  94. package/dist/components/layouts/BrowserPageLayout.d.ts +5 -1
  95. package/dist/components/layouts/BrowserPageLayout.js +10 -5
  96. package/dist/components/objects/CreateFolderButton.d.ts +2 -2
  97. package/dist/components/objects/CreateFolderButton.js +12 -12
  98. package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
  99. package/dist/components/objects/DeleteObjectButton.js +19 -21
  100. package/dist/components/objects/GetPresignedUrlButton.d.ts +7 -0
  101. package/dist/components/objects/GetPresignedUrlButton.js +255 -0
  102. package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +2 -2
  103. package/dist/components/objects/ObjectDetails/ObjectMetadata.js +263 -230
  104. package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +2 -2
  105. package/dist/components/objects/ObjectDetails/ObjectSummary.js +540 -138
  106. package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +2 -2
  107. package/dist/components/objects/ObjectDetails/ObjectTags.js +95 -123
  108. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.d.ts +1 -0
  109. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +516 -0
  110. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.d.ts +1 -0
  111. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +1064 -0
  112. package/dist/components/objects/ObjectDetails/index.d.ts +18 -2
  113. package/dist/components/objects/ObjectDetails/index.js +152 -40
  114. package/dist/components/objects/ObjectList.d.ts +12 -10
  115. package/dist/components/objects/ObjectList.js +590 -263
  116. package/dist/components/objects/ObjectLock/EditRetentionButton.js +4 -4
  117. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +15 -15
  118. package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +1 -1
  119. package/dist/components/objects/ObjectLock/ObjectLockSettings.js +32 -31
  120. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +1 -1
  121. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +6 -6
  122. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +51 -51
  123. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +78 -78
  124. package/dist/components/objects/ObjectPage.js +12 -8
  125. package/dist/components/objects/UploadButton.d.ts +3 -3
  126. package/dist/components/objects/UploadButton.js +10 -10
  127. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.d.ts +1 -0
  128. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.js +531 -0
  129. package/dist/components/providers/DataBrowserProvider.d.ts +23 -12
  130. package/dist/components/providers/DataBrowserProvider.js +60 -38
  131. package/dist/components/providers/QueryProvider.d.ts +9 -0
  132. package/dist/components/providers/QueryProvider.js +21 -0
  133. package/dist/components/search/MetadataSearch.js +29 -28
  134. package/dist/components/search/SearchHints.js +1 -1
  135. package/dist/components/ui/ArrayFieldActions.js +12 -7
  136. package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +2 -2
  137. package/dist/components/ui/ConfirmDeleteRuleModal.js +6 -1
  138. package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
  139. package/dist/components/ui/DeleteObjectModalContent.js +12 -12
  140. package/dist/components/ui/FilterFormSection.d.ts +2 -2
  141. package/dist/components/ui/FilterFormSection.js +29 -29
  142. package/dist/components/ui/Search.elements.d.ts +2 -2
  143. package/dist/components/ui/Search.elements.js +7 -7
  144. package/dist/components/ui/Table.elements.d.ts +2 -1
  145. package/dist/components/ui/Table.elements.js +18 -12
  146. package/dist/config/__tests__/factory.test.d.ts +1 -0
  147. package/dist/config/__tests__/factory.test.js +311 -0
  148. package/dist/config/factory.d.ts +10 -56
  149. package/dist/config/factory.js +23 -71
  150. package/dist/config/types.d.ts +212 -34
  151. package/dist/contexts/DataBrowserUICustomizationContext.d.ts +27 -0
  152. package/dist/contexts/DataBrowserUICustomizationContext.js +13 -0
  153. package/dist/hooks/__tests__/useAccessibleBuckets.test.d.ts +1 -0
  154. package/dist/hooks/__tests__/useAccessibleBuckets.test.js +145 -0
  155. package/dist/hooks/__tests__/useISVBucketDetection.test.js +45 -45
  156. package/dist/hooks/__tests__/useIsBucketEmpty.test.js +27 -27
  157. package/dist/hooks/__tests__/useLoginMutation.test.d.ts +1 -0
  158. package/dist/hooks/__tests__/useLoginMutation.test.js +194 -0
  159. package/dist/hooks/bucketConfiguration.d.ts +8 -1
  160. package/dist/hooks/bucketConfiguration.js +52 -51
  161. package/dist/hooks/bucketOperations.d.ts +10 -1
  162. package/dist/hooks/bucketOperations.js +10 -9
  163. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +80 -80
  164. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +80 -80
  165. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +44 -44
  166. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +63 -63
  167. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +65 -65
  168. package/dist/hooks/factories/index.d.ts +4 -4
  169. package/dist/hooks/factories/index.js +2 -2
  170. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
  171. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +16 -13
  172. package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
  173. package/dist/hooks/factories/useCreateS3LoginHook.js +1 -1
  174. package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
  175. package/dist/hooks/factories/useCreateS3MutationHook.js +7 -2
  176. package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
  177. package/dist/hooks/factories/useCreateS3QueryHook.js +11 -6
  178. package/dist/hooks/index.d.ts +19 -12
  179. package/dist/hooks/index.js +16 -9
  180. package/dist/hooks/loginOperations.d.ts +1 -1
  181. package/dist/hooks/loginOperations.js +1 -1
  182. package/dist/hooks/objectOperations.d.ts +2 -2
  183. package/dist/hooks/objectOperations.js +50 -49
  184. package/dist/hooks/presignedOperations.d.ts +4 -4
  185. package/dist/hooks/presignedOperations.js +5 -5
  186. package/dist/hooks/useAccessibleBuckets.d.ts +11 -0
  187. package/dist/hooks/useAccessibleBuckets.js +115 -0
  188. package/dist/hooks/useBatchObjectLegalHold.d.ts +11 -0
  189. package/dist/hooks/useBatchObjectLegalHold.js +48 -0
  190. package/dist/hooks/useBucketConfigEditor.d.ts +31 -0
  191. package/dist/hooks/useBucketConfigEditor.js +82 -0
  192. package/dist/hooks/useDataBrowserNavigate.d.ts +28 -0
  193. package/dist/hooks/useDataBrowserNavigate.js +24 -0
  194. package/dist/hooks/useDeleteBucketConfigRule.d.ts +2 -2
  195. package/dist/hooks/useDeleteBucketConfigRule.js +4 -4
  196. package/dist/hooks/useEmptyBucket.js +11 -11
  197. package/dist/hooks/useFeatures.d.ts +7 -0
  198. package/dist/hooks/useFeatures.js +8 -0
  199. package/dist/hooks/useISVBucketDetection.js +6 -6
  200. package/dist/hooks/useIsBucketEmpty.js +4 -4
  201. package/dist/hooks/useLimitedAccessFlow.d.ts +48 -0
  202. package/dist/hooks/useLimitedAccessFlow.js +23 -0
  203. package/dist/hooks/useS3Client.d.ts +6 -0
  204. package/dist/hooks/useS3Client.js +3 -2
  205. package/dist/hooks/useS3ConfigSwitch.d.ts +11 -0
  206. package/dist/hooks/useS3ConfigSwitch.js +37 -0
  207. package/dist/hooks/useSupportedNotificationEvents.d.ts +6 -0
  208. package/dist/hooks/useSupportedNotificationEvents.js +8 -0
  209. package/dist/index.d.ts +6 -6
  210. package/dist/index.js +2 -2
  211. package/dist/schemas/bucketPolicySchema.json +3 -13
  212. package/dist/test/msw/handlers/deleteBucket.d.ts +1 -1
  213. package/dist/test/msw/handlers/deleteBucket.js +20 -10
  214. package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -1
  215. package/dist/test/msw/handlers/getBucketAcl.js +29 -17
  216. package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -1
  217. package/dist/test/msw/handlers/getBucketLocation.js +29 -15
  218. package/dist/test/msw/handlers/getBucketPolicy.d.ts +1 -1
  219. package/dist/test/msw/handlers/getBucketPolicy.js +52 -32
  220. package/dist/test/msw/handlers/headObject.d.ts +1 -1
  221. package/dist/test/msw/handlers/headObject.js +31 -13
  222. package/dist/test/msw/handlers/listBuckets.d.ts +1 -1
  223. package/dist/test/msw/handlers/listBuckets.js +5 -3
  224. package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -1
  225. package/dist/test/msw/handlers/listObjectVersions.js +38 -26
  226. package/dist/test/msw/handlers/listObjects.d.ts +1 -1
  227. package/dist/test/msw/handlers/listObjects.js +35 -23
  228. package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -1
  229. package/dist/test/msw/handlers/objectLegalHold.js +32 -17
  230. package/dist/test/msw/handlers/objectRetention.d.ts +1 -1
  231. package/dist/test/msw/handlers/objectRetention.js +31 -17
  232. package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -1
  233. package/dist/test/msw/handlers/putBucketAcl.js +29 -14
  234. package/dist/test/msw/handlers/putObject.d.ts +1 -1
  235. package/dist/test/msw/handlers/putObject.js +27 -12
  236. package/dist/test/msw/handlers.d.ts +3 -3
  237. package/dist/test/msw/handlers.js +77 -54
  238. package/dist/test/msw/index.d.ts +2 -2
  239. package/dist/test/msw/index.js +1 -1
  240. package/dist/test/msw/server.d.ts +1 -1
  241. package/dist/test/msw/server.js +1 -1
  242. package/dist/test/msw/utils.js +2 -2
  243. package/dist/test/setup.d.ts +1 -1
  244. package/dist/test/setup.js +13 -30
  245. package/dist/test/testUtils.d.ts +85 -33
  246. package/dist/test/testUtils.js +176 -111
  247. package/dist/test/utils/errorHandling.test.js +119 -119
  248. package/dist/types/index.d.ts +49 -36
  249. package/dist/types/monaco.d.ts +13 -0
  250. package/dist/types/monaco.js +0 -0
  251. package/dist/utils/__tests__/proxyMiddleware.test.d.ts +1 -0
  252. package/dist/utils/__tests__/proxyMiddleware.test.js +579 -0
  253. package/dist/utils/__tests__/s3Client.test.d.ts +1 -0
  254. package/dist/utils/__tests__/s3Client.test.js +340 -0
  255. package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
  256. package/dist/utils/__tests__/s3ConfigIdentifier.test.js +437 -0
  257. package/dist/utils/constants.d.ts +10 -0
  258. package/dist/utils/constants.js +19 -9
  259. package/dist/utils/deletion/index.d.ts +2 -2
  260. package/dist/utils/deletion/index.js +1 -1
  261. package/dist/utils/deletion/messages.d.ts +1 -1
  262. package/dist/utils/deletion/messages.js +4 -4
  263. package/dist/utils/errorHandling.d.ts +3 -3
  264. package/dist/utils/errorHandling.js +6 -6
  265. package/dist/utils/hooks.js +8 -8
  266. package/dist/utils/index.d.ts +5 -4
  267. package/dist/utils/index.js +4 -2
  268. package/dist/utils/proxyMiddleware.d.ts +32 -13
  269. package/dist/utils/proxyMiddleware.js +90 -36
  270. package/dist/utils/s3Client.d.ts +14 -4
  271. package/dist/utils/s3Client.js +5 -26
  272. package/dist/utils/s3ConfigIdentifier.d.ts +79 -0
  273. package/dist/utils/s3ConfigIdentifier.js +57 -0
  274. package/dist/utils/s3RuleUtils.d.ts +5 -5
  275. package/dist/utils/s3RuleUtils.js +17 -17
  276. package/package.json +10 -8
  277. package/dist/components/__tests__/BucketNotificationCreatePage.test.js +0 -316
  278. package/dist/components/buckets/BucketPolicyButton.d.ts +0 -7
  279. package/dist/components/buckets/notifications/BucketNotificationCreatePage.d.ts +0 -1
  280. package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +0 -234
  281. package/dist/hooks/useLoginMutation.d.ts +0 -21
  282. package/dist/hooks/useLoginMutation.js +0 -9
  283. package/dist/utils/useFeatures.d.ts +0 -1
  284. package/dist/utils/useFeatures.js +0 -7
  285. /package/dist/components/__tests__/{BucketNotificationCreatePage.test.d.ts → BucketAccessor.test.d.ts} +0 -0
@@ -1,73 +1,76 @@
1
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { joiResolver } from "@hookform/resolvers/joi";
3
3
  import { Checkbox, Form, FormGroup, FormSection, Stack, useToast } from "@scality/core-ui";
4
4
  import { Button, Input } from "@scality/core-ui/dist/next";
5
5
  import { convertRemToPixels } from "@scality/core-ui/dist/utils";
6
6
  import joi from "joi";
7
7
  import { FormProvider, useForm } from "react-hook-form";
8
- import { useNavigate } from "react-router";
8
+ import { useCreateBucket, useSetBucketEncryption, useSetBucketObjectLockConfiguration, useSetBucketVersioning } from "../../hooks/index.js";
9
+ import { useDataBrowserNavigate } from "../../hooks/useDataBrowserNavigate.js";
9
10
  import ObjectLockRetentionSettings from "../objects/ObjectLock/ObjectLockRetentionSettings.js";
10
11
  import { objectLockRetentionSettingsValidationRules } from "../objects/ObjectLock/ObjectLockSettings.js";
11
- import { useCreateBucket, useSetBucketObjectLockConfiguration, useSetBucketVersioning } from "../../hooks/index.js";
12
- const bucketErrorMessage = "Bucket names can include only lowercase letters, numbers, dots (.), and hyphens (-)";
13
- const bucketNameValidationSchema = joi.string().label("Bucket Name").required().min(3).max(63).pattern(/^[a-z0-9]([a-z0-9.-]*[a-z0-9])?$/, {
14
- name: "bucketName",
12
+ import { useDataBrowserConfig } from "../providers/DataBrowserProvider.js";
13
+ const bucketErrorMessage = 'Bucket names can include only lowercase letters, numbers, dots (.), and hyphens (-)';
14
+ const bucketNameValidationSchema = joi.string().label('Bucket Name').required().min(3).max(63).pattern(/^[a-z0-9]([a-z0-9.-]*[a-z0-9])?$/, {
15
+ name: 'bucketName',
15
16
  invert: false
16
17
  }).messages({
17
- "string.pattern.name": bucketErrorMessage
18
+ 'string.pattern.name': bucketErrorMessage
18
19
  }).custom((value, helpers)=>{
19
- if (value.includes("..")) return helpers.message({
20
- custom: "Bucket names cannot contain two adjacent periods"
20
+ if (value.includes('..')) return helpers.message({
21
+ custom: 'Bucket names cannot contain two adjacent periods'
21
22
  });
22
23
  if (/^(\d{1,3}\.){3}\d{1,3}$/.test(value)) return helpers.message({
23
- custom: "Bucket names must not be formatted as an IP address"
24
+ custom: 'Bucket names must not be formatted as an IP address'
24
25
  });
25
26
  const forbiddenPrefixes = [
26
- "xn--",
27
- "sthree-",
28
- "amzn-s3-demo-"
27
+ 'xn--',
28
+ 'sthree-',
29
+ 'amzn-s3-demo-'
29
30
  ];
30
31
  if (forbiddenPrefixes.some((prefix)=>value.startsWith(prefix))) return helpers.message({
31
- custom: `Bucket names must not start with ${forbiddenPrefixes.join(", ")}`
32
+ custom: `Bucket names must not start with ${forbiddenPrefixes.join(', ')}`
32
33
  });
33
34
  const forbiddenSuffixes = [
34
- "-s3alias",
35
- "--ol-s3",
36
- "--x-s3",
37
- ".mrap"
35
+ '-s3alias',
36
+ '--ol-s3',
37
+ '--x-s3',
38
+ '.mrap'
38
39
  ];
39
40
  if (forbiddenSuffixes.some((suffix)=>value.endsWith(suffix))) return helpers.message({
40
- custom: `Bucket names must not end with ${forbiddenSuffixes.join(", ")}`
41
+ custom: `Bucket names must not end with ${forbiddenSuffixes.join(', ')}`
41
42
  });
42
43
  const existingBuckets = helpers.prefs.context?.existingBuckets;
43
44
  if (Array.isArray(existingBuckets)) {
44
45
  const isDuplicate = existingBuckets.some((bucketName)=>bucketName.toLowerCase() === value.toLowerCase());
45
46
  if (isDuplicate) return helpers.message({
46
- custom: "A bucket with this name already exists"
47
+ custom: 'A bucket with this name already exists'
47
48
  });
48
49
  }
49
50
  return value;
50
- }, "AWS S3 bucket naming rules");
51
+ }, 'AWS S3 bucket naming rules');
51
52
  const baseBucketCreateSchema = joi.object({
52
53
  name: bucketNameValidationSchema,
53
54
  isVersioning: joi.boolean(),
55
+ isEncryptionEnabled: joi.boolean(),
54
56
  ...objectLockRetentionSettingsValidationRules
55
57
  });
56
58
  const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultValues: customDefaultValues, children, onSubmit: onSubmitProp, onCancel: onCancelProp })=>{
57
- const navigate = useNavigate();
59
+ const navigate = useDataBrowserNavigate();
58
60
  const { showToast } = useToast();
59
61
  const baseDefaultValues = {
60
- name: "",
62
+ name: '',
61
63
  isVersioning: false,
64
+ isEncryptionEnabled: false,
62
65
  isObjectLockEnabled: false,
63
66
  isDefaultRetentionEnabled: false,
64
- retentionMode: "GOVERNANCE",
67
+ retentionMode: 'GOVERNANCE',
65
68
  retentionPeriod: 1,
66
- retentionPeriodFrequencyChoice: "DAYS",
69
+ retentionPeriodFrequencyChoice: 'DAYS',
67
70
  ...customDefaultValues
68
71
  };
69
72
  const useFormMethods = useForm({
70
- mode: "all",
73
+ mode: 'all',
71
74
  resolver: joiResolver(validationSchema || baseBucketCreateSchema, {
72
75
  context: validationContext || {}
73
76
  }),
@@ -76,19 +79,21 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
76
79
  });
77
80
  const { register, handleSubmit, formState, watch } = useFormMethods;
78
81
  const { isValid, errors } = formState;
79
- const isObjectLockEnabled = watch("isObjectLockEnabled");
82
+ const isObjectLockEnabled = watch('isObjectLockEnabled');
83
+ const { s3Capabilities } = useDataBrowserConfig();
80
84
  const { mutate: createBucket, isPending: isCreatingBucket } = useCreateBucket();
81
85
  const { mutate: setBucketVersioning } = useSetBucketVersioning();
82
86
  const { mutate: setObjectLockConfig } = useSetBucketObjectLockConfiguration();
87
+ const { mutate: setBucketEncryption } = useSetBucketEncryption();
83
88
  const handleCancel = ()=>{
84
89
  if (onCancelProp) onCancelProp();
85
- else navigate("/buckets");
90
+ else navigate('/buckets');
86
91
  };
87
92
  const handleSuccess = (bucketName)=>{
88
93
  showToast({
89
94
  open: true,
90
95
  message: `Bucket "${bucketName}" created successfully`,
91
- status: "success"
96
+ status: 'success'
92
97
  });
93
98
  navigate(`/buckets/${bucketName}`);
94
99
  };
@@ -96,7 +101,7 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
96
101
  showToast({
97
102
  open: true,
98
103
  message: error instanceof Error ? error.message : `Failed to ${operation}`,
99
- status: "error"
104
+ status: 'error'
100
105
  });
101
106
  };
102
107
  const onSubmit = (data)=>{
@@ -104,6 +109,7 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
104
109
  const bucketName = data.name;
105
110
  const needsExplicitVersioning = data.isVersioning && !data.isObjectLockEnabled;
106
111
  const needsRetentionConfig = data.isObjectLockEnabled && data.isDefaultRetentionEnabled;
112
+ const needsEncryption = data.isEncryptionEnabled;
107
113
  createBucket({
108
114
  Bucket: bucketName,
109
115
  ObjectLockEnabledForBucket: data.isObjectLockEnabled || void 0
@@ -112,41 +118,65 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
112
118
  if (needsExplicitVersioning) setBucketVersioning({
113
119
  Bucket: bucketName,
114
120
  VersioningConfiguration: {
115
- Status: "Enabled"
121
+ Status: 'Enabled'
116
122
  }
117
123
  }, {
118
- onSuccess: ()=>handleSuccess(bucketName),
119
- onError: (error)=>handleError(error, "enable versioning")
124
+ onSuccess: ()=>{
125
+ if (needsEncryption) applyEncryption(bucketName);
126
+ else handleSuccess(bucketName);
127
+ },
128
+ onError: (error)=>handleError(error, 'enable versioning')
120
129
  });
121
130
  else if (needsRetentionConfig) {
122
131
  const retentionConfig = {
123
132
  Bucket: bucketName,
124
133
  ObjectLockConfiguration: {
125
- ObjectLockEnabled: "Enabled",
134
+ ObjectLockEnabled: 'Enabled',
126
135
  Rule: {
127
136
  DefaultRetention: {
128
137
  Mode: data.retentionMode,
129
- Days: "DAYS" === data.retentionPeriodFrequencyChoice ? data.retentionPeriod : void 0,
130
- Years: "YEARS" === data.retentionPeriodFrequencyChoice ? data.retentionPeriod : void 0
138
+ Days: 'DAYS' === data.retentionPeriodFrequencyChoice ? data.retentionPeriod : void 0,
139
+ Years: 'YEARS' === data.retentionPeriodFrequencyChoice ? data.retentionPeriod : void 0
131
140
  }
132
141
  }
133
142
  }
134
143
  };
135
144
  setObjectLockConfig(retentionConfig, {
136
- onSuccess: ()=>handleSuccess(bucketName),
137
- onError: (error)=>handleError(error, "configure object lock retention")
145
+ onSuccess: ()=>{
146
+ if (needsEncryption) applyEncryption(bucketName);
147
+ else handleSuccess(bucketName);
148
+ },
149
+ onError: (error)=>handleError(error, 'configure object lock retention')
138
150
  });
139
- } else handleSuccess(bucketName);
151
+ } else if (needsEncryption) applyEncryption(bucketName);
152
+ else handleSuccess(bucketName);
140
153
  },
141
- onError: (error)=>handleError(error, "create bucket")
154
+ onError: (error)=>handleError(error, 'create bucket')
155
+ });
156
+ };
157
+ const applyEncryption = (bucketName)=>{
158
+ setBucketEncryption({
159
+ Bucket: bucketName,
160
+ ServerSideEncryptionConfiguration: {
161
+ Rules: [
162
+ {
163
+ ApplyServerSideEncryptionByDefault: {
164
+ SSEAlgorithm: 'AES256'
165
+ }
166
+ }
167
+ ]
168
+ }
169
+ }, {
170
+ onSuccess: ()=>handleSuccess(bucketName),
171
+ onError: (error)=>handleError(error, 'enable bucket encryption')
142
172
  });
143
173
  };
144
174
  return /*#__PURE__*/ jsx(FormProvider, {
145
175
  ...useFormMethods,
146
176
  children: /*#__PURE__*/ jsxs(Form, {
147
177
  layout: {
148
- kind: "page",
149
- title: "Create a New Bucket",
178
+ kind: 'page',
179
+ title: 'Create a New Bucket',
150
180
  subTitle
151
181
  },
152
182
  requireMode: "partial",
@@ -174,7 +204,9 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
174
204
  children: [
175
205
  /*#__PURE__*/ jsx(FormSection, {
176
206
  forceLabelWidth: convertRemToPixels(17.5),
177
- children: /*#__PURE__*/ jsxs(Fragment, {
207
+ children: /*#__PURE__*/ jsxs(Stack, {
208
+ direction: "vertical",
209
+ gap: "r16",
178
210
  children: [
179
211
  /*#__PURE__*/ jsx(FormGroup, {
180
212
  id: "name",
@@ -184,7 +216,7 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
184
216
  content: /*#__PURE__*/ jsx(Input, {
185
217
  id: "name",
186
218
  autoFocus: true,
187
- ...register("name")
219
+ ...register('name')
188
220
  }),
189
221
  labelHelpTooltip: /*#__PURE__*/ jsxs("ul", {
190
222
  children: [
@@ -200,9 +232,19 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
200
232
  ]
201
233
  }),
202
234
  helpErrorPosition: "bottom",
203
- error: errors.name ? errors.name?.type === "string.pattern.base" ? bucketErrorMessage : errors.name?.message : void 0
235
+ error: errors.name ? errors.name?.type === 'string.pattern.base' ? bucketErrorMessage : errors.name?.message : void 0
204
236
  }),
205
237
  children,
238
+ s3Capabilities?.bucketEncryption && /*#__PURE__*/ jsx(FormGroup, {
239
+ id: "isEncryptionEnabled",
240
+ label: "Encryption",
241
+ labelHelpTooltip: "Objects stored in this bucket will be automatically encrypted.",
242
+ helpErrorPosition: "bottom",
243
+ content: /*#__PURE__*/ jsx(Checkbox, {
244
+ id: "isEncryptionEnabled",
245
+ ...register('isEncryptionEnabled')
246
+ })
247
+ }),
206
248
  /*#__PURE__*/ jsx(FormGroup, {
207
249
  id: "isVersioning",
208
250
  label: "Versioning",
@@ -217,12 +259,12 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
217
259
  })
218
260
  ]
219
261
  }),
220
- help: isObjectLockEnabled ? "Automatically activated when Object-lock is Enabled" : void 0,
262
+ help: isObjectLockEnabled ? 'Automatically activated when Object-lock is Enabled' : void 0,
221
263
  helpErrorPosition: "bottom",
222
264
  content: /*#__PURE__*/ jsx(Checkbox, {
223
265
  id: "isVersioning",
224
266
  disabled: isObjectLockEnabled,
225
- ...register("isVersioning")
267
+ ...register('isVersioning')
226
268
  })
227
269
  })
228
270
  ]
@@ -1 +1,43 @@
1
+ import { useDataBrowserNavigate } from '../../hooks/useDataBrowserNavigate';
2
+ interface BucketDetailsContextValue {
3
+ bucketName: string;
4
+ navigate: ReturnType<typeof useDataBrowserNavigate>;
5
+ }
6
+ /**
7
+ * Context for BucketDetails component.
8
+ *
9
+ * **Important**: Always use `useBucketDetailsContext()` hook instead of accessing this context directly.
10
+ * The hook provides proper error handling if the context is not available.
11
+ *
12
+ * This context is exported for testing purposes only.
13
+ */
14
+ export declare const BucketDetailsContext: import("react").Context<BucketDetailsContextValue | null>;
15
+ export declare function useBucketDetailsContext(): BucketDetailsContextValue;
16
+ declare const OverviewTab: React.FC;
17
+ declare const LifecycleTab: React.FC;
18
+ declare const ReplicationTab: React.FC;
19
+ declare const NotificationTab: React.FC;
20
+ interface CustomTabProps {
21
+ config: {
22
+ id: string;
23
+ title: string;
24
+ path?: string;
25
+ withoutPadding?: boolean;
26
+ render: () => React.ReactNode;
27
+ };
28
+ }
29
+ declare const CustomTab: React.FC<CustomTabProps>;
30
+ interface BucketDetailsProps {
31
+ children?: React.ReactNode;
32
+ }
33
+ declare const BucketDetailsRoot: React.FC<BucketDetailsProps>;
1
34
  export declare function BucketDetails(): import("react/jsx-runtime").JSX.Element;
35
+ type BucketDetailsComponent = typeof BucketDetailsRoot & {
36
+ OverviewTab: typeof OverviewTab;
37
+ LifecycleTab: typeof LifecycleTab;
38
+ ReplicationTab: typeof ReplicationTab;
39
+ NotificationTab: typeof NotificationTab;
40
+ CustomTab: typeof CustomTab;
41
+ };
42
+ declare const BucketDetailsCompound: BucketDetailsComponent;
43
+ export { BucketDetailsCompound };