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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/dist/components/DataBrowserUI.d.ts +12 -0
  2. package/dist/components/DataBrowserUI.js +99 -0
  3. package/dist/components/Editor.d.ts +1 -1
  4. package/dist/components/Editor.js +3 -3
  5. package/dist/components/__tests__/BucketAccessor.test.js +214 -0
  6. package/dist/components/__tests__/BucketCorsPage.test.d.ts +1 -0
  7. package/dist/components/__tests__/BucketCorsPage.test.js +263 -0
  8. package/dist/components/__tests__/BucketCreate.test.d.ts +1 -0
  9. package/dist/components/__tests__/BucketCreate.test.js +574 -0
  10. package/dist/components/__tests__/BucketDetails.test.d.ts +1 -0
  11. package/dist/components/__tests__/BucketDetails.test.js +421 -0
  12. package/dist/components/__tests__/BucketLifecycleFormPage.test.d.ts +14 -0
  13. package/dist/components/__tests__/BucketLifecycleFormPage.test.js +618 -0
  14. package/dist/components/__tests__/BucketLifecycleList.test.d.ts +1 -0
  15. package/dist/components/__tests__/BucketLifecycleList.test.js +325 -0
  16. package/dist/components/__tests__/BucketList.test.js +495 -81
  17. package/dist/components/__tests__/BucketNotificationFormPage.test.d.ts +1 -0
  18. package/dist/components/__tests__/BucketNotificationFormPage.test.js +348 -0
  19. package/dist/components/__tests__/BucketNotificationList.test.d.ts +1 -0
  20. package/dist/components/__tests__/BucketNotificationList.test.js +379 -0
  21. package/dist/components/__tests__/BucketOverview.test.js +484 -179
  22. package/dist/components/__tests__/BucketPolicyPage.test.js +151 -99
  23. package/dist/components/__tests__/BucketReplicationFormPage.test.d.ts +16 -0
  24. package/dist/components/__tests__/BucketReplicationFormPage.test.js +1757 -0
  25. package/dist/components/__tests__/BucketReplicationList.test.d.ts +1 -0
  26. package/dist/components/__tests__/BucketReplicationList.test.js +344 -0
  27. package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
  28. package/dist/components/__tests__/DeleteBucketButton.test.js +64 -64
  29. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.d.ts +1 -0
  30. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +196 -0
  31. package/dist/components/__tests__/DeleteObjectButton.test.js +64 -64
  32. package/dist/components/__tests__/EmptyBucketButton.test.d.ts +1 -0
  33. package/dist/components/__tests__/EmptyBucketButton.test.js +302 -0
  34. package/dist/components/__tests__/MetadataSearch.test.js +65 -65
  35. package/dist/components/__tests__/ObjectList.test.js +741 -240
  36. package/dist/components/__tests__/UploadButton.test.js +45 -45
  37. package/dist/components/breadcrumb/Breadcrumb.d.ts +6 -0
  38. package/dist/components/breadcrumb/Breadcrumb.js +37 -0
  39. package/dist/components/breadcrumb/DataBrowserBreadcrumb.d.ts +1 -0
  40. package/dist/components/breadcrumb/DataBrowserBreadcrumb.js +10 -0
  41. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.d.ts +1 -0
  42. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.js +196 -0
  43. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.d.ts +1 -0
  44. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.js +153 -0
  45. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.d.ts +1 -0
  46. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.js +134 -0
  47. package/dist/components/breadcrumb/index.d.ts +8 -0
  48. package/dist/components/breadcrumb/index.js +4 -0
  49. package/dist/components/breadcrumb/useBreadcrumbPaths.d.ts +2 -0
  50. package/dist/components/breadcrumb/useBreadcrumbPaths.js +82 -0
  51. package/dist/components/buckets/BucketAccessor.d.ts +2 -0
  52. package/dist/components/buckets/BucketAccessor.js +125 -0
  53. package/dist/components/buckets/BucketConfigEditButton.d.ts +8 -0
  54. package/dist/components/buckets/{BucketPolicyButton.js → BucketConfigEditButton.js} +9 -5
  55. package/dist/components/buckets/BucketCorsPage.d.ts +1 -0
  56. package/dist/components/buckets/BucketCorsPage.js +234 -0
  57. package/dist/components/buckets/BucketCreate.d.ts +50 -0
  58. package/dist/components/buckets/BucketCreate.js +279 -0
  59. package/dist/components/buckets/BucketDetails.d.ts +42 -0
  60. package/dist/components/buckets/BucketDetails.js +256 -40
  61. package/dist/components/buckets/BucketLifecycleFormPage.d.ts +15 -0
  62. package/dist/components/buckets/BucketLifecycleFormPage.js +1086 -0
  63. package/dist/components/buckets/BucketLifecycleList.d.ts +10 -0
  64. package/dist/components/buckets/BucketLifecycleList.js +270 -0
  65. package/dist/components/buckets/BucketList.d.ts +6 -4
  66. package/dist/components/buckets/BucketList.js +161 -94
  67. package/dist/components/buckets/BucketLocation.js +4 -4
  68. package/dist/components/buckets/BucketOverview.d.ts +86 -5
  69. package/dist/components/buckets/BucketOverview.js +481 -192
  70. package/dist/components/buckets/BucketPage.js +44 -22
  71. package/dist/components/buckets/BucketPolicyPage.js +155 -127
  72. package/dist/components/buckets/BucketReplicationFormPage.d.ts +1 -0
  73. package/dist/components/buckets/BucketReplicationFormPage.js +835 -0
  74. package/dist/components/buckets/BucketReplicationList.d.ts +11 -0
  75. package/dist/components/buckets/BucketReplicationList.js +189 -0
  76. package/dist/components/buckets/BucketVersioning.d.ts +4 -0
  77. package/dist/components/buckets/BucketVersioning.js +76 -0
  78. package/dist/components/buckets/DeleteBucketButton.js +8 -8
  79. package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +18 -0
  80. package/dist/components/buckets/DeleteBucketConfigRuleButton.js +53 -0
  81. package/dist/components/buckets/EmptyBucketButton.d.ts +5 -0
  82. package/dist/components/buckets/EmptyBucketButton.js +232 -0
  83. package/dist/components/buckets/EmptyBucketSummary.d.ts +9 -0
  84. package/dist/components/buckets/EmptyBucketSummary.js +60 -0
  85. package/dist/components/buckets/EmptyBucketSummaryList.d.ts +13 -0
  86. package/dist/components/buckets/EmptyBucketSummaryList.js +140 -0
  87. package/dist/components/buckets/__tests__/BucketVersioning.test.d.ts +1 -0
  88. package/dist/components/buckets/__tests__/BucketVersioning.test.js +163 -0
  89. package/dist/components/buckets/notifications/BucketNotificationFormPage.d.ts +1 -0
  90. package/dist/components/buckets/notifications/BucketNotificationFormPage.js +316 -0
  91. package/dist/components/buckets/notifications/BucketNotificationList.d.ts +10 -0
  92. package/dist/components/buckets/notifications/BucketNotificationList.js +267 -0
  93. package/dist/components/buckets/notifications/EventsSection.js +145 -29
  94. package/dist/components/buckets/notifications/__tests__/events.test.d.ts +1 -0
  95. package/dist/components/buckets/notifications/__tests__/events.test.js +56 -0
  96. package/dist/components/buckets/notifications/events.d.ts +71 -7
  97. package/dist/components/buckets/notifications/events.js +98 -16
  98. package/dist/components/index.d.ts +27 -13
  99. package/dist/components/index.js +20 -6
  100. package/dist/components/layouts/ArrowNavigation.d.ts +3 -0
  101. package/dist/components/layouts/ArrowNavigation.js +28 -0
  102. package/dist/components/layouts/BrowserPageLayout.d.ts +5 -1
  103. package/dist/components/layouts/BrowserPageLayout.js +10 -5
  104. package/dist/components/objects/CreateFolderButton.d.ts +2 -2
  105. package/dist/components/objects/CreateFolderButton.js +12 -12
  106. package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
  107. package/dist/components/objects/DeleteObjectButton.js +19 -21
  108. package/dist/components/objects/GetPresignedUrlButton.d.ts +7 -0
  109. package/dist/components/objects/GetPresignedUrlButton.js +255 -0
  110. package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +2 -2
  111. package/dist/components/objects/ObjectDetails/ObjectMetadata.js +263 -230
  112. package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +2 -2
  113. package/dist/components/objects/ObjectDetails/ObjectSummary.js +540 -138
  114. package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +2 -2
  115. package/dist/components/objects/ObjectDetails/ObjectTags.js +95 -123
  116. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.d.ts +1 -0
  117. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +516 -0
  118. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.d.ts +1 -0
  119. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +1064 -0
  120. package/dist/components/objects/ObjectDetails/index.d.ts +18 -2
  121. package/dist/components/objects/ObjectDetails/index.js +152 -40
  122. package/dist/components/objects/ObjectList.d.ts +12 -10
  123. package/dist/components/objects/ObjectList.js +590 -263
  124. package/dist/components/objects/ObjectLock/EditRetentionButton.d.ts +4 -0
  125. package/dist/components/objects/ObjectLock/EditRetentionButton.js +32 -0
  126. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.d.ts +3 -0
  127. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +211 -0
  128. package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +9 -0
  129. package/dist/components/objects/ObjectLock/ObjectLockSettings.js +159 -0
  130. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +8 -0
  131. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +39 -0
  132. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.d.ts +1 -0
  133. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +204 -0
  134. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.d.ts +1 -0
  135. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +374 -0
  136. package/dist/components/objects/ObjectPage.js +12 -8
  137. package/dist/components/objects/UploadButton.d.ts +3 -3
  138. package/dist/components/objects/UploadButton.js +10 -10
  139. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.d.ts +1 -0
  140. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.js +531 -0
  141. package/dist/components/providers/DataBrowserProvider.d.ts +23 -12
  142. package/dist/components/providers/DataBrowserProvider.js +60 -38
  143. package/dist/components/providers/QueryProvider.d.ts +9 -0
  144. package/dist/components/providers/QueryProvider.js +21 -0
  145. package/dist/components/search/MetadataSearch.js +29 -28
  146. package/dist/components/search/SearchHints.js +1 -1
  147. package/dist/components/ui/ArrayFieldActions.d.ts +36 -0
  148. package/dist/components/ui/ArrayFieldActions.js +43 -0
  149. package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +16 -0
  150. package/dist/components/ui/ConfirmDeleteRuleModal.js +48 -0
  151. package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
  152. package/dist/components/ui/DeleteObjectModalContent.js +12 -12
  153. package/dist/components/ui/FilterFormSection.d.ts +44 -0
  154. package/dist/components/ui/FilterFormSection.js +159 -0
  155. package/dist/components/ui/Search.elements.d.ts +2 -2
  156. package/dist/components/ui/Search.elements.js +7 -7
  157. package/dist/components/ui/Table.elements.d.ts +2 -1
  158. package/dist/components/ui/Table.elements.js +18 -12
  159. package/dist/config/__tests__/factory.test.d.ts +1 -0
  160. package/dist/config/__tests__/factory.test.js +311 -0
  161. package/dist/config/factory.d.ts +14 -49
  162. package/dist/config/factory.js +23 -68
  163. package/dist/config/types.d.ts +212 -34
  164. package/dist/contexts/DataBrowserUICustomizationContext.d.ts +27 -0
  165. package/dist/contexts/DataBrowserUICustomizationContext.js +13 -0
  166. package/dist/hooks/__tests__/useAccessibleBuckets.test.d.ts +1 -0
  167. package/dist/hooks/__tests__/useAccessibleBuckets.test.js +145 -0
  168. package/dist/hooks/__tests__/useISVBucketDetection.test.d.ts +1 -0
  169. package/dist/hooks/__tests__/useISVBucketDetection.test.js +188 -0
  170. package/dist/hooks/__tests__/useIsBucketEmpty.test.js +27 -27
  171. package/dist/hooks/__tests__/useLoginMutation.test.d.ts +1 -0
  172. package/dist/hooks/__tests__/useLoginMutation.test.js +194 -0
  173. package/dist/hooks/bucketConfiguration.d.ts +8 -1
  174. package/dist/hooks/bucketConfiguration.js +52 -51
  175. package/dist/hooks/bucketOperations.d.ts +10 -1
  176. package/dist/hooks/bucketOperations.js +10 -9
  177. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +80 -80
  178. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +80 -80
  179. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +44 -44
  180. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +63 -63
  181. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +95 -52
  182. package/dist/hooks/factories/index.d.ts +4 -4
  183. package/dist/hooks/factories/index.js +2 -2
  184. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
  185. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +16 -13
  186. package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
  187. package/dist/hooks/factories/useCreateS3LoginHook.js +1 -1
  188. package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
  189. package/dist/hooks/factories/useCreateS3MutationHook.js +7 -2
  190. package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
  191. package/dist/hooks/factories/useCreateS3QueryHook.js +29 -3
  192. package/dist/hooks/index.d.ts +19 -8
  193. package/dist/hooks/index.js +16 -5
  194. package/dist/hooks/loginOperations.d.ts +1 -1
  195. package/dist/hooks/loginOperations.js +1 -1
  196. package/dist/hooks/objectOperations.d.ts +2 -2
  197. package/dist/hooks/objectOperations.js +50 -49
  198. package/dist/hooks/presignedOperations.d.ts +4 -4
  199. package/dist/hooks/presignedOperations.js +5 -5
  200. package/dist/hooks/useAccessibleBuckets.d.ts +11 -0
  201. package/dist/hooks/useAccessibleBuckets.js +115 -0
  202. package/dist/hooks/useBatchObjectLegalHold.d.ts +11 -0
  203. package/dist/hooks/useBatchObjectLegalHold.js +48 -0
  204. package/dist/hooks/useBucketConfigEditor.d.ts +31 -0
  205. package/dist/hooks/useBucketConfigEditor.js +82 -0
  206. package/dist/hooks/useDataBrowserNavigate.d.ts +28 -0
  207. package/dist/hooks/useDataBrowserNavigate.js +24 -0
  208. package/dist/hooks/useDeleteBucketConfigRule.d.ts +26 -0
  209. package/dist/hooks/useDeleteBucketConfigRule.js +46 -0
  210. package/dist/hooks/useEmptyBucket.d.ts +27 -0
  211. package/dist/hooks/useEmptyBucket.js +116 -0
  212. package/dist/hooks/useFeatures.d.ts +7 -0
  213. package/dist/hooks/useFeatures.js +8 -0
  214. package/dist/hooks/useISVBucketDetection.d.ts +15 -0
  215. package/dist/hooks/useISVBucketDetection.js +27 -0
  216. package/dist/hooks/useIsBucketEmpty.js +4 -4
  217. package/dist/hooks/useLimitedAccessFlow.d.ts +48 -0
  218. package/dist/hooks/useLimitedAccessFlow.js +23 -0
  219. package/dist/hooks/useS3Client.d.ts +6 -0
  220. package/dist/hooks/useS3Client.js +3 -2
  221. package/dist/hooks/useS3ConfigSwitch.d.ts +11 -0
  222. package/dist/hooks/useS3ConfigSwitch.js +37 -0
  223. package/dist/hooks/useSupportedNotificationEvents.d.ts +6 -0
  224. package/dist/hooks/useSupportedNotificationEvents.js +8 -0
  225. package/dist/hooks/useTableRowSelection.d.ts +9 -0
  226. package/dist/hooks/useTableRowSelection.js +45 -0
  227. package/dist/index.d.ts +6 -6
  228. package/dist/index.js +2 -2
  229. package/dist/schemas/bucketPolicySchema.json +3 -13
  230. package/dist/test/msw/handlers/deleteBucket.d.ts +1 -1
  231. package/dist/test/msw/handlers/deleteBucket.js +20 -10
  232. package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -1
  233. package/dist/test/msw/handlers/getBucketAcl.js +29 -17
  234. package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -1
  235. package/dist/test/msw/handlers/getBucketLocation.js +29 -15
  236. package/dist/test/msw/handlers/getBucketPolicy.d.ts +1 -1
  237. package/dist/test/msw/handlers/getBucketPolicy.js +52 -32
  238. package/dist/test/msw/handlers/headObject.d.ts +1 -1
  239. package/dist/test/msw/handlers/headObject.js +31 -13
  240. package/dist/test/msw/handlers/listBuckets.d.ts +1 -1
  241. package/dist/test/msw/handlers/listBuckets.js +5 -3
  242. package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -1
  243. package/dist/test/msw/handlers/listObjectVersions.js +38 -26
  244. package/dist/test/msw/handlers/listObjects.d.ts +1 -1
  245. package/dist/test/msw/handlers/listObjects.js +35 -23
  246. package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -1
  247. package/dist/test/msw/handlers/objectLegalHold.js +32 -17
  248. package/dist/test/msw/handlers/objectRetention.d.ts +1 -1
  249. package/dist/test/msw/handlers/objectRetention.js +31 -17
  250. package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -1
  251. package/dist/test/msw/handlers/putBucketAcl.js +29 -14
  252. package/dist/test/msw/handlers/putObject.d.ts +1 -1
  253. package/dist/test/msw/handlers/putObject.js +27 -12
  254. package/dist/test/msw/handlers.d.ts +3 -3
  255. package/dist/test/msw/handlers.js +77 -54
  256. package/dist/test/msw/index.d.ts +2 -2
  257. package/dist/test/msw/index.js +1 -1
  258. package/dist/test/msw/server.d.ts +1 -1
  259. package/dist/test/msw/server.js +1 -1
  260. package/dist/test/msw/utils.js +2 -2
  261. package/dist/test/setup.d.ts +1 -1
  262. package/dist/test/setup.js +13 -30
  263. package/dist/test/testUtils.d.ts +170 -36
  264. package/dist/test/testUtils.js +229 -116
  265. package/dist/test/utils/errorHandling.test.js +146 -108
  266. package/dist/types/index.d.ts +49 -36
  267. package/dist/types/monaco.d.ts +13 -0
  268. package/dist/types/monaco.js +0 -0
  269. package/dist/utils/__tests__/proxyMiddleware.test.d.ts +1 -0
  270. package/dist/utils/__tests__/proxyMiddleware.test.js +579 -0
  271. package/dist/utils/__tests__/s3Client.test.d.ts +1 -0
  272. package/dist/utils/__tests__/s3Client.test.js +340 -0
  273. package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
  274. package/dist/utils/__tests__/s3ConfigIdentifier.test.js +437 -0
  275. package/dist/utils/constants.d.ts +22 -0
  276. package/dist/utils/constants.js +19 -0
  277. package/dist/utils/deletion/index.d.ts +2 -2
  278. package/dist/utils/deletion/index.js +1 -1
  279. package/dist/utils/deletion/messages.d.ts +1 -1
  280. package/dist/utils/deletion/messages.js +4 -4
  281. package/dist/utils/errorHandling.d.ts +12 -3
  282. package/dist/utils/errorHandling.js +12 -7
  283. package/dist/utils/hooks.js +8 -8
  284. package/dist/utils/index.d.ts +5 -2
  285. package/dist/utils/index.js +5 -1
  286. package/dist/utils/proxyMiddleware.d.ts +32 -13
  287. package/dist/utils/proxyMiddleware.js +90 -36
  288. package/dist/utils/s3Client.d.ts +14 -4
  289. package/dist/utils/s3Client.js +5 -26
  290. package/dist/utils/s3ConfigIdentifier.d.ts +79 -0
  291. package/dist/utils/s3ConfigIdentifier.js +57 -0
  292. package/dist/utils/s3RuleUtils.d.ts +53 -0
  293. package/dist/utils/s3RuleUtils.js +101 -0
  294. package/package.json +10 -8
  295. package/dist/components/__tests__/BucketNotificationCreatePage.test.js +0 -316
  296. package/dist/components/buckets/BucketPolicyButton.d.ts +0 -7
  297. package/dist/components/buckets/notifications/BucketNotificationCreatePage.d.ts +0 -1
  298. package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +0 -234
  299. package/dist/hooks/useLoginMutation.d.ts +0 -21
  300. package/dist/hooks/useLoginMutation.js +0 -9
  301. package/dist/utils/useFeatures.d.ts +0 -1
  302. package/dist/utils/useFeatures.js +0 -7
  303. /package/dist/components/__tests__/{BucketNotificationCreatePage.test.d.ts → BucketAccessor.test.d.ts} +0 -0
@@ -1,26 +1,32 @@
1
- import { rest } from "msw";
1
+ import { HttpResponse, http } from "msw";
2
2
  import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
3
- const listObjectsHandler = rest.get(`${getS3BaseUrl()}/:bucketName`, (req, res, ctx)=>{
4
- const { bucketName } = req.params;
5
- const url = new URL(req.url);
6
- if ("2" !== url.searchParams.get("list-type")) return;
7
- const prefix = url.searchParams.get("prefix") || "";
8
- const delimiter = url.searchParams.get("delimiter") || "";
9
- const maxKeys = parseInt(url.searchParams.get("max-keys") || "1000", 10);
10
- const continuationToken = url.searchParams.get("continuation-token");
11
- if ("string" == typeof bucketName) {
12
- if (bucketName.includes("non-existent-bucket")) return res(ctx.status(404), ctx.xml(createS3ErrorXml("NoSuchBucket", "The specified bucket does not exist", bucketName)));
13
- if (bucketName.includes("access-denied-bucket")) return res(ctx.status(403), ctx.xml(createS3ErrorXml("AccessDenied", "Access Denied")));
14
- if (bucketName.includes("network-error-bucket")) return res.networkError("Failed to connect");
15
- if (bucketName.includes("empty-bucket")) return res(ctx.status(200), ctx.xml(`<?xml version="1.0" encoding="UTF-8"?>
3
+ const listObjectsHandler = http.get(`${getS3BaseUrl()}/:bucketName`, async ({ request, params })=>{
4
+ const { bucketName } = params;
5
+ const url = new URL(request.url);
6
+ if ('2' !== url.searchParams.get('list-type')) return;
7
+ const prefix = url.searchParams.get('prefix') || '';
8
+ const delimiter = url.searchParams.get('delimiter') || '';
9
+ const maxKeys = parseInt(url.searchParams.get('max-keys') || '1000', 10);
10
+ const continuationToken = url.searchParams.get('continuation-token');
11
+ if ('string' == typeof bucketName) {
12
+ if (bucketName.includes('non-existent-bucket')) return HttpResponse.xml(createS3ErrorXml('NoSuchBucket', 'The specified bucket does not exist', bucketName), {
13
+ status: 404
14
+ });
15
+ if (bucketName.includes('access-denied-bucket')) return HttpResponse.xml(createS3ErrorXml('AccessDenied', 'Access Denied'), {
16
+ status: 403
17
+ });
18
+ if (bucketName.includes('network-error-bucket')) return HttpResponse.error();
19
+ if (bucketName.includes('empty-bucket')) return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
16
20
  <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
17
21
  <Name>${bucketName}</Name>
18
22
  <Prefix>${prefix}</Prefix>
19
23
  <Delimiter>${delimiter}</Delimiter>
20
24
  <MaxKeys>${maxKeys}</MaxKeys>
21
25
  <IsTruncated>false</IsTruncated>
22
- </ListBucketResult>`));
23
- if (continuationToken) return res(ctx.status(200), ctx.xml(`<?xml version="1.0" encoding="UTF-8"?>
26
+ </ListBucketResult>`, {
27
+ status: 200
28
+ });
29
+ if (continuationToken) return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
24
30
  <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
25
31
  <Name>${bucketName}</Name>
26
32
  <Prefix>${prefix}</Prefix>
@@ -34,16 +40,18 @@ const listObjectsHandler = rest.get(`${getS3BaseUrl()}/:bucketName`, (req, res,
34
40
  <Size>2048</Size>
35
41
  <StorageClass>STANDARD</StorageClass>
36
42
  </Contents>
37
- </ListBucketResult>`));
38
- const hasMorePages = bucketName.includes("paginated-bucket");
39
- return res(ctx.status(200), ctx.xml(`<?xml version="1.0" encoding="UTF-8"?>
43
+ </ListBucketResult>`, {
44
+ status: 200
45
+ });
46
+ const hasMorePages = bucketName.includes('paginated-bucket');
47
+ return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
40
48
  <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
41
49
  <Name>${bucketName}</Name>
42
50
  <Prefix>${prefix}</Prefix>
43
51
  <Delimiter>${delimiter}</Delimiter>
44
52
  <MaxKeys>${maxKeys}</MaxKeys>
45
53
  <IsTruncated>${hasMorePages}</IsTruncated>
46
- ${hasMorePages ? "<NextContinuationToken>token-123</NextContinuationToken>" : ""}
54
+ ${hasMorePages ? '<NextContinuationToken>token-123</NextContinuationToken>' : ''}
47
55
  <Contents>
48
56
  <Key>${prefix}file1.txt</Key>
49
57
  <LastModified>2023-10-12T17:50:00.000Z</LastModified>
@@ -58,9 +66,13 @@ const listObjectsHandler = rest.get(`${getS3BaseUrl()}/:bucketName`, (req, res,
58
66
  <Size>512</Size>
59
67
  <StorageClass>STANDARD</StorageClass>
60
68
  </Contents>
61
- ${delimiter ? `<CommonPrefixes><Prefix>${prefix}folder1/</Prefix></CommonPrefixes>` : ""}
62
- </ListBucketResult>`));
69
+ ${delimiter ? `<CommonPrefixes><Prefix>${prefix}folder1/</Prefix></CommonPrefixes>` : ''}
70
+ </ListBucketResult>`, {
71
+ status: 200
72
+ });
63
73
  }
64
- return res(ctx.status(200));
74
+ return new Response(null, {
75
+ status: 200
76
+ });
65
77
  });
66
78
  export { listObjectsHandler };
@@ -1 +1 @@
1
- export declare const getObjectLegalHoldHandler: import("msw").RestHandler<import("msw").MockedRequest<import("msw").DefaultRequestBody>>;
1
+ export declare const getObjectLegalHoldHandler: import("msw").HttpHandler;
@@ -1,24 +1,39 @@
1
- import { rest } from "msw";
2
- import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
3
1
  import { ObjectLockLegalHoldStatus } from "@aws-sdk/client-s3";
4
- const getObjectLegalHoldHandler = rest.get(`${getS3BaseUrl()}/:bucketName/*`, (req, res, ctx)=>{
5
- const { bucketName } = req.params;
6
- const url = new URL(req.url);
7
- const objectKey = url.pathname.substring(url.pathname.indexOf("/", 1) + 1);
8
- if (!url.searchParams.has("legal-hold")) return;
9
- if ("string" == typeof bucketName) {
10
- if ("no-such-bucket" === bucketName || "non-existent-bucket" === bucketName) return res(ctx.status(404), ctx.xml(createS3ErrorXml("NoSuchBucket", "The specified bucket does not exist", bucketName)));
11
- if ("access-denied-bucket" === bucketName || "restricted-bucket" === bucketName) return res(ctx.status(403), ctx.xml(createS3ErrorXml("AccessDenied", "Access Denied", bucketName, objectKey)));
12
- if ("network-error-bucket" === bucketName) return res.networkError("Failed to connect");
13
- if ("non-existent-object.txt" === objectKey) return res(ctx.status(404), ctx.xml(createS3ErrorXml("NoSuchKey", "The specified key does not exist.", bucketName, objectKey)));
14
- if ("no-legal-hold-object.txt" === objectKey) return res(ctx.status(404), ctx.xml(createS3ErrorXml("NoSuchObjectLockConfiguration", "The specified object does not have a ObjectLock configuration", bucketName, objectKey)));
2
+ import { HttpResponse, http } from "msw";
3
+ import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
4
+ const getObjectLegalHoldHandler = http.get(`${getS3BaseUrl()}/:bucketName/*`, async ({ request, params })=>{
5
+ const { bucketName } = params;
6
+ const url = new URL(request.url);
7
+ const objectKey = url.pathname.substring(url.pathname.indexOf('/', 1) + 1);
8
+ if (!url.searchParams.has('legal-hold')) return;
9
+ if ('string' == typeof bucketName) {
10
+ if ('no-such-bucket' === bucketName || 'non-existent-bucket' === bucketName) return HttpResponse.xml(createS3ErrorXml('NoSuchBucket', 'The specified bucket does not exist', bucketName), {
11
+ status: 404
12
+ });
13
+ if ('access-denied-bucket' === bucketName || 'restricted-bucket' === bucketName) return HttpResponse.xml(createS3ErrorXml('AccessDenied', 'Access Denied', bucketName, objectKey), {
14
+ status: 403
15
+ });
16
+ if ('network-error-bucket' === bucketName) return HttpResponse.error();
17
+ if ('non-existent-object.txt' === objectKey) return HttpResponse.xml(createS3ErrorXml('NoSuchKey', 'The specified key does not exist.', bucketName, objectKey), {
18
+ status: 404
19
+ });
20
+ if ('no-legal-hold-object.txt' === objectKey) return HttpResponse.xml(createS3ErrorXml('NoSuchObjectLockConfiguration', 'The specified object does not have a ObjectLock configuration', bucketName, objectKey), {
21
+ status: 404
22
+ });
15
23
  let status = ObjectLockLegalHoldStatus.ON;
16
- if ("legal-hold-off-object.txt" === objectKey) status = ObjectLockLegalHoldStatus.OFF;
17
- return res(ctx.status(200), ctx.set("Content-Type", "application/xml"), ctx.body(`<?xml version="1.0" encoding="UTF-8"?>
24
+ if ('legal-hold-off-object.txt' === objectKey) status = ObjectLockLegalHoldStatus.OFF;
25
+ return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
18
26
  <LegalHold xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
19
27
  <Status>${status}</Status>
20
- </LegalHold>`));
28
+ </LegalHold>`, {
29
+ status: 200,
30
+ headers: {
31
+ 'Content-Type': 'application/xml'
32
+ }
33
+ });
21
34
  }
22
- return res(ctx.status(400), ctx.xml(createS3ErrorXml("InvalidArgument", "Invalid request parameters")));
35
+ return HttpResponse.xml(createS3ErrorXml('InvalidArgument', 'Invalid request parameters'), {
36
+ status: 400
37
+ });
23
38
  });
24
39
  export { getObjectLegalHoldHandler };
@@ -1 +1 @@
1
- export declare const getObjectRetentionHandler: import("msw").RestHandler<import("msw").MockedRequest<import("msw").DefaultRequestBody>>;
1
+ export declare const getObjectRetentionHandler: import("msw").HttpHandler;
@@ -1,27 +1,41 @@
1
- import { rest } from "msw";
1
+ import { HttpResponse, http } from "msw";
2
2
  import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
3
- const getObjectRetentionHandler = rest.get(`${getS3BaseUrl()}/:bucketName/*`, (req, res, ctx)=>{
4
- const { bucketName } = req.params;
5
- const url = new URL(req.url);
6
- const objectKey = url.pathname.substring(url.pathname.indexOf("/", 1) + 1);
7
- if (!url.searchParams.has("retention")) return;
8
- if ("string" == typeof bucketName) {
9
- if (bucketName.includes("non-existent-bucket")) return res(ctx.status(404), ctx.xml(createS3ErrorXml("NoSuchBucket", "The specified bucket does not exist", bucketName)));
10
- if (objectKey.includes("non-existent-object")) return res(ctx.status(404), ctx.xml(createS3ErrorXml("NoSuchKey", "The specified key does not exist.", bucketName, objectKey)));
11
- if (bucketName.includes("restricted-bucket")) return res(ctx.status(403), ctx.xml(createS3ErrorXml("AccessDenied", "Access Denied")));
12
- if (objectKey.includes("no-retention-object")) return res(ctx.status(404), ctx.xml(createS3ErrorXml("NoSuchObjectLockConfiguration", "The specified object does not have a ObjectLock configuration", bucketName, objectKey)));
13
- if (bucketName.includes("network-error-bucket")) return res.networkError("Failed to connect");
14
- if (objectKey.includes("compliance-retention")) return res(ctx.status(200), ctx.xml(`<?xml version="1.0" encoding="UTF-8"?>
3
+ const getObjectRetentionHandler = http.get(`${getS3BaseUrl()}/:bucketName/*`, async ({ request, params })=>{
4
+ const { bucketName } = params;
5
+ const url = new URL(request.url);
6
+ const objectKey = url.pathname.substring(url.pathname.indexOf('/', 1) + 1);
7
+ if (!url.searchParams.has('retention')) return;
8
+ if ('string' == typeof bucketName) {
9
+ if (bucketName.includes('non-existent-bucket')) return HttpResponse.xml(createS3ErrorXml('NoSuchBucket', 'The specified bucket does not exist', bucketName), {
10
+ status: 404
11
+ });
12
+ if (objectKey.includes('non-existent-object')) return HttpResponse.xml(createS3ErrorXml('NoSuchKey', 'The specified key does not exist.', bucketName, objectKey), {
13
+ status: 404
14
+ });
15
+ if (bucketName.includes('restricted-bucket')) return HttpResponse.xml(createS3ErrorXml('AccessDenied', 'Access Denied'), {
16
+ status: 403
17
+ });
18
+ if (objectKey.includes('no-retention-object')) return HttpResponse.xml(createS3ErrorXml('NoSuchObjectLockConfiguration', 'The specified object does not have a ObjectLock configuration', bucketName, objectKey), {
19
+ status: 404
20
+ });
21
+ if (bucketName.includes('network-error-bucket')) return HttpResponse.error();
22
+ if (objectKey.includes('compliance-retention')) return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
15
23
  <Retention xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
16
24
  <Mode>COMPLIANCE</Mode>
17
25
  <RetainUntilDate>2024-12-31T23:59:59.000Z</RetainUntilDate>
18
- </Retention>`));
19
- return res(ctx.status(200), ctx.xml(`<?xml version="1.0" encoding="UTF-8"?>
26
+ </Retention>`, {
27
+ status: 200
28
+ });
29
+ return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
20
30
  <Retention xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
21
31
  <Mode>GOVERNANCE</Mode>
22
32
  <RetainUntilDate>2024-06-30T23:59:59.000Z</RetainUntilDate>
23
- </Retention>`));
33
+ </Retention>`, {
34
+ status: 200
35
+ });
24
36
  }
25
- return res(ctx.status(400), ctx.xml(createS3ErrorXml("InvalidArgument", "Invalid request parameters")));
37
+ return HttpResponse.xml(createS3ErrorXml('InvalidArgument', 'Invalid request parameters'), {
38
+ status: 400
39
+ });
26
40
  });
27
41
  export { getObjectRetentionHandler };
@@ -1 +1 @@
1
- export declare const putBucketAclHandler: import("msw").RestHandler<import("msw").MockedRequest<import("msw").DefaultRequestBody>>;
1
+ export declare const putBucketAclHandler: import("msw").HttpHandler;
@@ -1,18 +1,33 @@
1
- import { rest } from "msw";
1
+ import { HttpResponse, http } from "msw";
2
2
  import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
3
- const putBucketAclHandler = rest.put(`${getS3BaseUrl()}/:bucketName`, (req, res, ctx)=>{
4
- const { bucketName } = req.params;
5
- const url = new URL(req.url);
6
- if (!url.searchParams.has("acl")) return;
7
- if ("string" == typeof bucketName) {
8
- if (bucketName.includes("non-existent-bucket")) return res(ctx.status(404), ctx.xml(createS3ErrorXml("NoSuchBucket", "The specified bucket does not exist", bucketName)));
9
- if (bucketName.includes("access-denied-bucket")) return res(ctx.status(403), ctx.xml(createS3ErrorXml("AccessDenied", "Access Denied")));
10
- if (bucketName.includes("invalid-acl-bucket")) return res(ctx.status(400), ctx.xml(createS3ErrorXml("InvalidRequest", "The ACL configuration is invalid")));
11
- if (bucketName.includes("malformed-acl-bucket")) return res(ctx.status(400), ctx.xml(createS3ErrorXml("MalformedACLError", "The XML provided does not match the expected format")));
12
- if (bucketName.includes("network-error-bucket")) return res.networkError("Failed to connect");
13
- const aclParam = url.searchParams.get("acl");
14
- if ("invalid-acl-type" === aclParam) return res(ctx.status(400), ctx.xml(createS3ErrorXml("InvalidArgument", "Invalid canned ACL value")));
3
+ const putBucketAclHandler = http.put(`${getS3BaseUrl()}/:bucketName`, async ({ request, params })=>{
4
+ const { bucketName } = params;
5
+ const url = new URL(request.url);
6
+ if (!url.searchParams.has('acl')) return;
7
+ if ('string' == typeof bucketName) {
8
+ if (bucketName.includes('non-existent-bucket')) return HttpResponse.xml(createS3ErrorXml('NoSuchBucket', 'The specified bucket does not exist', bucketName), {
9
+ status: 404
10
+ });
11
+ if (bucketName.includes('access-denied-bucket')) return HttpResponse.xml(createS3ErrorXml('AccessDenied', 'Access Denied'), {
12
+ status: 403
13
+ });
14
+ if (bucketName.includes('invalid-acl-bucket')) return HttpResponse.xml(createS3ErrorXml('InvalidRequest', 'The ACL configuration is invalid'), {
15
+ status: 400
16
+ });
17
+ if (bucketName.includes('malformed-acl-bucket')) return HttpResponse.xml(createS3ErrorXml('MalformedACLError', 'The XML provided does not match the expected format'), {
18
+ status: 400
19
+ });
20
+ if (bucketName.includes('network-error-bucket')) return HttpResponse.error();
21
+ const aclParam = url.searchParams.get('acl');
22
+ if ('invalid-acl-type' === aclParam) return HttpResponse.xml(createS3ErrorXml('InvalidArgument', 'Invalid canned ACL value'), {
23
+ status: 400
24
+ });
15
25
  }
16
- return res(ctx.status(200), ctx.set("Content-Type", "application/xml"), ctx.body(""));
26
+ return new Response('', {
27
+ status: 200,
28
+ headers: {
29
+ 'Content-Type': 'application/xml'
30
+ }
31
+ });
17
32
  });
18
33
  export { putBucketAclHandler };
@@ -1 +1 @@
1
- export declare const putObjectHandler: import("msw").RestHandler<import("msw").MockedRequest<import("msw").DefaultRequestBody>>;
1
+ export declare const putObjectHandler: import("msw").HttpHandler;
@@ -1,16 +1,31 @@
1
- import { rest } from "msw";
1
+ import { HttpResponse, http } from "msw";
2
2
  import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
3
- const putObjectHandler = rest.put(`${getS3BaseUrl()}/:bucketName/*`, (req, res, ctx)=>{
4
- const { bucketName } = req.params;
5
- const url = new URL(req.url);
6
- const objectKey = url.pathname.substring(url.pathname.indexOf("/", 1) + 1);
7
- if ("string" == typeof bucketName) {
8
- if (bucketName.includes("non-existent-bucket")) return res(ctx.status(404), ctx.xml(createS3ErrorXml("NoSuchBucket", "The specified bucket does not exist", bucketName)));
9
- if (bucketName.includes("access-denied-bucket")) return res(ctx.status(403), ctx.xml(createS3ErrorXml("AccessDenied", "Access Denied")));
10
- if (bucketName.includes("network-error-bucket")) return res.networkError("Failed to connect");
11
- if (objectKey.includes("invalid-key")) return res(ctx.status(400), ctx.xml(createS3ErrorXml("InvalidRequest", "The specified key is not valid")));
12
- return res(ctx.status(200), ctx.set("ETag", '"mock-etag-123"'), ctx.set("x-amz-version-id", "mock-version-id"), ctx.set("x-amz-server-side-encryption", "AES256"), ctx.body(""));
3
+ const putObjectHandler = http.put(`${getS3BaseUrl()}/:bucketName/*`, async ({ request, params })=>{
4
+ const { bucketName } = params;
5
+ const url = new URL(request.url);
6
+ const objectKey = url.pathname.substring(url.pathname.indexOf('/', 1) + 1);
7
+ if ('string' == typeof bucketName) {
8
+ if (bucketName.includes('non-existent-bucket')) return HttpResponse.xml(createS3ErrorXml('NoSuchBucket', 'The specified bucket does not exist', bucketName), {
9
+ status: 404
10
+ });
11
+ if (bucketName.includes('access-denied-bucket')) return HttpResponse.xml(createS3ErrorXml('AccessDenied', 'Access Denied'), {
12
+ status: 403
13
+ });
14
+ if (bucketName.includes('network-error-bucket')) return HttpResponse.error();
15
+ if (objectKey.includes('invalid-key')) return HttpResponse.xml(createS3ErrorXml('InvalidRequest', 'The specified key is not valid'), {
16
+ status: 400
17
+ });
18
+ return new Response('', {
19
+ status: 200,
20
+ headers: {
21
+ ETag: '"mock-etag-123"',
22
+ 'x-amz-version-id': 'mock-version-id',
23
+ 'x-amz-server-side-encryption': 'AES256'
24
+ }
25
+ });
13
26
  }
14
- return res(ctx.status(400), ctx.xml(createS3ErrorXml("InvalidArgument", "Invalid request parameters")));
27
+ return HttpResponse.xml(createS3ErrorXml('InvalidArgument', 'Invalid request parameters'), {
28
+ status: 400
29
+ });
15
30
  });
16
31
  export { putObjectHandler };
@@ -1,4 +1,4 @@
1
- export declare const createBucketHandler: import("msw").RestHandler<import("msw").MockedRequest<import("msw").DefaultRequestBody>>;
2
- export declare const getBucketVersioningHandler: import("msw").RestHandler<import("msw").MockedRequest<import("msw").DefaultRequestBody>>;
3
- export declare const s3Handlers: import("msw").RestHandler<import("msw").MockedRequest<import("msw").DefaultRequestBody>>[];
1
+ export declare const createBucketHandler: import("msw").HttpHandler;
2
+ export declare const getBucketVersioningHandler: import("msw").HttpHandler;
3
+ export declare const s3Handlers: import("msw").HttpHandler[];
4
4
  export default s3Handlers;
@@ -1,93 +1,116 @@
1
- import { rest } from "msw";
2
- import { listBucketsHandler } from "./handlers/listBuckets.js";
1
+ import { HttpResponse, http } from "msw";
3
2
  import { deleteBucketHandler } from "./handlers/deleteBucket.js";
4
- import { getBucketLocationHandler } from "./handlers/getBucketLocation.js";
5
3
  import { getBucketAclHandler } from "./handlers/getBucketAcl.js";
4
+ import { getBucketLocationHandler } from "./handlers/getBucketLocation.js";
6
5
  import { getBucketPolicyHandler } from "./handlers/getBucketPolicy.js";
6
+ import { headObjectHandler } from "./handlers/headObject.js";
7
+ import { listBucketsHandler } from "./handlers/listBuckets.js";
7
8
  import { listObjectsHandler } from "./handlers/listObjects.js";
8
9
  import { listObjectVersionsHandler } from "./handlers/listObjectVersions.js";
9
- import { headObjectHandler } from "./handlers/headObject.js";
10
- import { getObjectRetentionHandler } from "./handlers/objectRetention.js";
11
10
  import { getObjectLegalHoldHandler } from "./handlers/objectLegalHold.js";
12
- import { putObjectHandler } from "./handlers/putObject.js";
11
+ import { getObjectRetentionHandler } from "./handlers/objectRetention.js";
13
12
  import { putBucketAclHandler } from "./handlers/putBucketAcl.js";
13
+ import { putObjectHandler } from "./handlers/putObject.js";
14
14
  import { createS3ErrorXml, getS3BaseUrl } from "./utils.js";
15
15
  const isBucketConfigurationRequest = (url)=>{
16
16
  const configParams = [
17
- "acl",
18
- "policy",
19
- "versioning",
20
- "lifecycle",
21
- "cors",
22
- "website",
23
- "tagging",
24
- "encryption",
25
- "notification",
26
- "replication",
27
- "requestPayment",
28
- "accelerate",
29
- "metrics",
30
- "inventory",
31
- "analytics",
32
- "intelligentTiering",
33
- "ownershipControls",
34
- "publicAccessBlock",
35
- "logging",
36
- "location"
17
+ 'acl',
18
+ 'policy',
19
+ 'versioning',
20
+ 'lifecycle',
21
+ 'cors',
22
+ 'website',
23
+ 'tagging',
24
+ 'encryption',
25
+ 'notification',
26
+ 'replication',
27
+ 'requestPayment',
28
+ 'accelerate',
29
+ 'metrics',
30
+ 'inventory',
31
+ 'analytics',
32
+ 'intelligentTiering',
33
+ 'ownershipControls',
34
+ 'publicAccessBlock',
35
+ 'logging',
36
+ 'location'
37
37
  ];
38
38
  return configParams.some((param)=>url.searchParams.has(param));
39
39
  };
40
- const createBucketHandler = rest.put(`${getS3BaseUrl()}/:bucketName`, (req, res, ctx)=>{
41
- const { bucketName } = req.params;
42
- const url = new URL(req.url);
40
+ const createBucketHandler = http.put(`${getS3BaseUrl()}/:bucketName`, async ({ request, params })=>{
41
+ const { bucketName } = params;
42
+ const url = new URL(request.url);
43
43
  if (isBucketConfigurationRequest(url)) return;
44
- if ("string" == typeof bucketName) {
45
- if (bucketName.includes("existing-bucket")) return res(ctx.status(409), ctx.xml(createS3ErrorXml("BucketAlreadyExists", "The requested bucket name is not available", bucketName)));
46
- if (bucketName.includes("restricted-bucket")) return res(ctx.status(403), ctx.xml(createS3ErrorXml("AccessDenied", "Access Denied")));
47
- if (bucketName.includes("invalid-bucket-name")) return res(ctx.status(400), ctx.xml(createS3ErrorXml("InvalidBucketName", "Invalid bucket name")));
48
- if (bucketName.includes("network-test-bucket")) return res.networkError("Network connection failed");
44
+ if ('string' == typeof bucketName) {
45
+ if (bucketName.includes('existing-bucket')) return HttpResponse.xml(createS3ErrorXml('BucketAlreadyExists', 'The requested bucket name is not available', bucketName), {
46
+ status: 409
47
+ });
48
+ if (bucketName.includes('restricted-bucket')) return HttpResponse.xml(createS3ErrorXml('AccessDenied', 'Access Denied'), {
49
+ status: 403
50
+ });
51
+ if (bucketName.includes('invalid-bucket-name')) return HttpResponse.xml(createS3ErrorXml('InvalidBucketName', 'Invalid bucket name'), {
52
+ status: 400
53
+ });
54
+ if (bucketName.includes('network-test-bucket')) return HttpResponse.error();
49
55
  }
50
- return res(ctx.status(200), ctx.set("Location", `/${bucketName}`), ctx.xml(`<?xml version="1.0" encoding="UTF-8"?>
56
+ return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
51
57
  <CreateBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
52
58
  <Location>/${bucketName}</Location>
53
- </CreateBucketResult>`));
59
+ </CreateBucketResult>`, {
60
+ status: 200,
61
+ headers: {
62
+ Location: `/${bucketName}`
63
+ }
64
+ });
54
65
  });
55
- const getBucketVersioningHandler = rest.get(`${getS3BaseUrl()}/:bucketName`, (req, res, ctx)=>{
56
- const { bucketName } = req.params;
57
- const url = new URL(req.url);
58
- if (!url.searchParams.has("versioning")) return;
59
- if ("string" == typeof bucketName) {
60
- if (bucketName.includes("nonexistent-bucket")) return res(ctx.status(404), ctx.xml(`<?xml version="1.0" encoding="UTF-8"?>
66
+ const getBucketVersioningHandler = http.get(`${getS3BaseUrl()}/:bucketName`, async ({ request, params })=>{
67
+ const { bucketName } = params;
68
+ const url = new URL(request.url);
69
+ if (!url.searchParams.has('versioning')) return;
70
+ if ('string' == typeof bucketName) {
71
+ if (bucketName.includes('nonexistent-bucket')) return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
61
72
  <Error>
62
73
  <Code>NoSuchBucket</Code>
63
74
  <Message>The specified bucket does not exist</Message>
64
75
  <BucketName>${bucketName}</BucketName>
65
- </Error>`));
66
- if (bucketName.includes("access-denied-bucket")) return res(ctx.status(403), ctx.xml(`<?xml version="1.0" encoding="UTF-8"?>
76
+ </Error>`, {
77
+ status: 404
78
+ });
79
+ if (bucketName.includes('access-denied-bucket')) return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
67
80
  <Error>
68
81
  <Code>AccessDenied</Code>
69
82
  <Message>Access Denied</Message>
70
- </Error>`));
71
- if (bucketName.includes("network-error-bucket")) return res.networkError("Network connection failed");
72
- if (bucketName.includes("enabled-versioning-bucket")) return res(ctx.status(200), ctx.xml(`<?xml version="1.0" encoding="UTF-8"?>
83
+ </Error>`, {
84
+ status: 403
85
+ });
86
+ if (bucketName.includes('network-error-bucket')) return HttpResponse.error();
87
+ if (bucketName.includes('enabled-versioning-bucket')) return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
73
88
  <VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
74
89
  <Status>Enabled</Status>
75
90
  <MfaDelete>Disabled</MfaDelete>
76
- </VersioningConfiguration>`));
77
- if (bucketName.includes("suspended-versioning-bucket")) return res(ctx.status(200), ctx.xml(`<?xml version="1.0" encoding="UTF-8"?>
91
+ </VersioningConfiguration>`, {
92
+ status: 200
93
+ });
94
+ if (bucketName.includes('suspended-versioning-bucket')) return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
78
95
  <VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
79
96
  <Status>Suspended</Status>
80
97
  <MfaDelete>Disabled</MfaDelete>
81
- </VersioningConfiguration>`));
82
- if (bucketName.includes("mfa-enabled-bucket")) return res(ctx.status(200), ctx.xml(`<?xml version="1.0" encoding="UTF-8"?>
98
+ </VersioningConfiguration>`, {
99
+ status: 200
100
+ });
101
+ if (bucketName.includes('mfa-enabled-bucket')) return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
83
102
  <VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
84
103
  <Status>Enabled</Status>
85
104
  <MfaDelete>Enabled</MfaDelete>
86
- </VersioningConfiguration>`));
105
+ </VersioningConfiguration>`, {
106
+ status: 200
107
+ });
87
108
  }
88
- return res(ctx.status(200), ctx.xml(`<?xml version="1.0" encoding="UTF-8"?>
109
+ return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
89
110
  <VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
90
- </VersioningConfiguration>`));
111
+ </VersioningConfiguration>`, {
112
+ status: 200
113
+ });
91
114
  });
92
115
  const s3Handlers = [
93
116
  listBucketsHandler,
@@ -1,2 +1,2 @@
1
- export { server, setupMswServer, overrideHandlers } from "./server";
2
- export { s3Handlers, createBucketHandler, getBucketVersioningHandler, } from "./handlers";
1
+ export { createBucketHandler, getBucketVersioningHandler, s3Handlers, } from './handlers';
2
+ export { overrideHandlers, server, setupMswServer } from './server';
@@ -1,3 +1,3 @@
1
- import { overrideHandlers, server, setupMswServer } from "./server.js";
2
1
  import { createBucketHandler, getBucketVersioningHandler, s3Handlers } from "./handlers.js";
2
+ import { overrideHandlers, server, setupMswServer } from "./server.js";
3
3
  export { createBucketHandler, getBucketVersioningHandler, overrideHandlers, s3Handlers, server, setupMswServer };
@@ -1,4 +1,4 @@
1
1
  export declare const server: import("msw/node").SetupServerApi;
2
2
  export declare const setupMswServer: () => void;
3
3
  export declare const overrideHandlers: (...handlers: Parameters<typeof server.use>) => void;
4
- export { s3Handlers } from "./handlers";
4
+ export { s3Handlers } from './handlers';
@@ -4,7 +4,7 @@ const server = setupServer(...s3Handlers);
4
4
  const setupMswServer = ()=>{
5
5
  beforeAll(()=>{
6
6
  server.listen({
7
- onUnhandledRequest: "warn"
7
+ onUnhandledRequest: 'warn'
8
8
  });
9
9
  });
10
10
  afterEach(()=>{
@@ -1,6 +1,6 @@
1
- const getS3BaseUrl = ()=>"https://s3.amazonaws.com";
1
+ const getS3BaseUrl = ()=>'https://s3.amazonaws.com';
2
2
  const createS3ErrorXml = (code, message, bucketName, key)=>{
3
- let resourceDetails = "";
3
+ let resourceDetails = '';
4
4
  if (bucketName) resourceDetails += `<BucketName>${bucketName}</BucketName>`;
5
5
  if (key) resourceDetails += `<Key>${key}</Key>`;
6
6
  return `<?xml version="1.0" encoding="UTF-8"?>
@@ -1 +1 @@
1
- import "@testing-library/jest-dom";
1
+ import '@testing-library/jest-dom';