@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,17 +1,35 @@
1
- import { rest } from "msw";
1
+ import { HttpResponse, http } from "msw";
2
2
  import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
3
- const headObjectHandler = rest.head(`${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
- const versionId = url.searchParams.get("versionId");
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("NotFound", "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 (bucketName.includes("network-error-bucket")) return res.networkError("Failed to connect");
13
- return res(ctx.status(200), ctx.set("x-amz-meta-custom-key", "custom-value"), ctx.set("Content-Length", "12345"), ctx.set("Content-Type", "application/octet-stream"), ctx.set("ETag", '"some-etag"'), ctx.set("Last-Modified", new Date().toUTCString()), ctx.set("x-amz-version-id", versionId || "some-version-id"));
3
+ const headObjectHandler = http.head(`${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
+ const versionId = url.searchParams.get('versionId');
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('NotFound', '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 (bucketName.includes('network-error-bucket')) return HttpResponse.error();
19
+ return new Response(null, {
20
+ status: 200,
21
+ headers: {
22
+ 'x-amz-meta-custom-key': 'custom-value',
23
+ 'Content-Length': '12345',
24
+ 'Content-Type': 'application/octet-stream',
25
+ ETag: '"some-etag"',
26
+ 'Last-Modified': new Date().toUTCString(),
27
+ 'x-amz-version-id': versionId || 'some-version-id'
28
+ }
29
+ });
14
30
  }
15
- return res(ctx.status(400), ctx.xml(createS3ErrorXml("InvalidArgument", "Invalid request parameters")));
31
+ return HttpResponse.xml(createS3ErrorXml('InvalidArgument', 'Invalid request parameters'), {
32
+ status: 400
33
+ });
16
34
  });
17
35
  export { headObjectHandler };
@@ -1 +1 @@
1
- export declare const listBucketsHandler: import("msw").RestHandler<import("msw").MockedRequest<import("msw").DefaultRequestBody>>;
1
+ export declare const listBucketsHandler: import("msw").HttpHandler;
@@ -1,6 +1,6 @@
1
- import { rest } from "msw";
1
+ import { HttpResponse, http } from "msw";
2
2
  import { getS3BaseUrl } from "../utils.js";
3
- const listBucketsHandler = rest.get(`${getS3BaseUrl()}/`, (_req, res, ctx)=>res(ctx.status(200), ctx.xml(`<?xml version="1.0" encoding="UTF-8"?>
3
+ const listBucketsHandler = http.get(`${getS3BaseUrl()}/`, async ()=>HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
4
4
  <ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
5
5
  <Owner>
6
6
  <ID>owner-id-123</ID>
@@ -20,5 +20,7 @@ const listBucketsHandler = rest.get(`${getS3BaseUrl()}/`, (_req, res, ctx)=>res(
20
20
  <CreationDate>2023-10-10T17:50:00.000Z</CreationDate>
21
21
  </Bucket>
22
22
  </Buckets>
23
- </ListAllMyBucketsResult>`)));
23
+ </ListAllMyBucketsResult>`, {
24
+ status: 200
25
+ }));
24
26
  export { listBucketsHandler };
@@ -1 +1 @@
1
- export declare const listObjectVersionsHandler: import("msw").RestHandler<import("msw").MockedRequest<import("msw").DefaultRequestBody>>;
1
+ export declare const listObjectVersionsHandler: import("msw").HttpHandler;
@@ -1,28 +1,34 @@
1
- import { rest } from "msw";
1
+ import { HttpResponse, http } from "msw";
2
2
  import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
3
- const listObjectVersionsHandler = rest.get(`${getS3BaseUrl()}/:bucketName`, (req, res, ctx)=>{
4
- const { bucketName } = req.params;
5
- const url = new URL(req.url);
6
- if (!url.searchParams.has("versions")) 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 keyMarker = url.searchParams.get("key-marker");
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 listObjectVersionsHandler = http.get(`${getS3BaseUrl()}/:bucketName`, async ({ request, params })=>{
4
+ const { bucketName } = params;
5
+ const url = new URL(request.url);
6
+ if (!url.searchParams.has('versions')) 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 keyMarker = url.searchParams.get('key-marker');
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
  <ListVersionsResult 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
- </ListVersionsResult>`));
26
+ </ListVersionsResult>`, {
27
+ status: 200
28
+ });
23
29
  if (keyMarker) {
24
- const pageKey = prefix && "file.txt" !== prefix ? `${prefix.replace(/\/$/, "")}-v3.txt` : "file-v3.txt";
25
- return res(ctx.status(200), ctx.xml(`<?xml version="1.0" encoding="UTF-8"?>
30
+ const pageKey = prefix && 'file.txt' !== prefix ? `${prefix.replace(/\/$/, '')}-v3.txt` : 'file-v3.txt';
31
+ return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
26
32
  <ListVersionsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
27
33
  <Name>${bucketName}</Name>
28
34
  <Prefix>${prefix}</Prefix>
@@ -38,20 +44,22 @@ const listObjectVersionsHandler = rest.get(`${getS3BaseUrl()}/:bucketName`, (req
38
44
  <Size>1024</Size>
39
45
  <StorageClass>STANDARD</StorageClass>
40
46
  </Version>
41
- </ListVersionsResult>`));
47
+ </ListVersionsResult>`, {
48
+ status: 200
49
+ });
42
50
  }
43
- const hasMorePages = bucketName.includes("paginated-bucket");
44
- const baseKey = prefix && "file.txt" !== prefix ? prefix : "file.txt";
45
- const deletedKey = prefix && "file.txt" !== prefix ? `${prefix.replace(/\/$/, "")}-deleted.txt` : "deleted-file.txt";
46
- const nextKey = prefix && "file.txt" !== prefix ? `${prefix.replace(/\/$/, "")}-v2.txt` : "file-v2.txt";
47
- return res(ctx.status(200), ctx.xml(`<?xml version="1.0" encoding="UTF-8"?>
51
+ const hasMorePages = bucketName.includes('paginated-bucket');
52
+ const baseKey = prefix && 'file.txt' !== prefix ? prefix : 'file.txt';
53
+ const deletedKey = prefix && 'file.txt' !== prefix ? `${prefix.replace(/\/$/, '')}-deleted.txt` : 'deleted-file.txt';
54
+ const nextKey = prefix && 'file.txt' !== prefix ? `${prefix.replace(/\/$/, '')}-v2.txt` : 'file-v2.txt';
55
+ return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
48
56
  <ListVersionsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
49
57
  <Name>${bucketName}</Name>
50
58
  <Prefix>${prefix}</Prefix>
51
59
  <Delimiter>${delimiter}</Delimiter>
52
60
  <MaxKeys>${maxKeys}</MaxKeys>
53
61
  <IsTruncated>${hasMorePages}</IsTruncated>
54
- ${hasMorePages ? `<NextKeyMarker>${nextKey}</NextKeyMarker><NextVersionIdMarker>version-id-2</NextVersionIdMarker>` : ""}
62
+ ${hasMorePages ? `<NextKeyMarker>${nextKey}</NextKeyMarker><NextVersionIdMarker>version-id-2</NextVersionIdMarker>` : ''}
55
63
  <Version>
56
64
  <Key>${baseKey}</Key>
57
65
  <VersionId>version-id-1</VersionId>
@@ -76,8 +84,12 @@ const listObjectVersionsHandler = rest.get(`${getS3BaseUrl()}/:bucketName`, (req
76
84
  <IsLatest>true</IsLatest>
77
85
  <LastModified>2023-10-10T17:50:00.000Z</LastModified>
78
86
  </DeleteMarker>
79
- </ListVersionsResult>`));
87
+ </ListVersionsResult>`, {
88
+ status: 200
89
+ });
80
90
  }
81
- return res(ctx.status(200));
91
+ return new Response(null, {
92
+ status: 200
93
+ });
82
94
  });
83
95
  export { listObjectVersionsHandler };
@@ -1 +1 @@
1
- export declare const listObjectsHandler: import("msw").RestHandler<import("msw").MockedRequest<import("msw").DefaultRequestBody>>;
1
+ export declare const listObjectsHandler: import("msw").HttpHandler;
@@ -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;