@aws-amplify/storage 6.11.2-unstable.a361dd1.0 → 6.12.0

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 (110) hide show
  1. package/dist/cjs/internals/apis/remove.js +13 -12
  2. package/dist/cjs/internals/apis/remove.js.map +1 -1
  3. package/dist/cjs/providers/s3/apis/internal/remove.js +53 -29
  4. package/dist/cjs/providers/s3/apis/internal/remove.js.map +1 -1
  5. package/dist/cjs/providers/s3/apis/remove.js +6 -1
  6. package/dist/cjs/providers/s3/apis/remove.js.map +1 -1
  7. package/dist/cjs/providers/s3/apis/server/remove.js +6 -1
  8. package/dist/cjs/providers/s3/apis/server/remove.js.map +1 -1
  9. package/dist/cjs/providers/s3/utils/client/s3data/deleteObjects.js +70 -0
  10. package/dist/cjs/providers/s3/utils/client/s3data/deleteObjects.js.map +1 -0
  11. package/dist/cjs/providers/s3/utils/client/s3data/index.js +3 -1
  12. package/dist/cjs/providers/s3/utils/client/s3data/index.js.map +1 -1
  13. package/dist/cjs/providers/s3/utils/createAbortableTask.js +35 -0
  14. package/dist/cjs/providers/s3/utils/createAbortableTask.js.map +1 -0
  15. package/dist/cjs/providers/s3/utils/deleteFolderContents.js +80 -0
  16. package/dist/cjs/providers/s3/utils/deleteFolderContents.js.map +1 -0
  17. package/dist/cjs/providers/s3/utils/generateDeleteObjectsXml.js +38 -0
  18. package/dist/cjs/providers/s3/utils/generateDeleteObjectsXml.js.map +1 -0
  19. package/dist/cjs/providers/s3/utils/index.js +13 -1
  20. package/dist/cjs/providers/s3/utils/index.js.map +1 -1
  21. package/dist/cjs/providers/s3/utils/isPathFolder.js +38 -0
  22. package/dist/cjs/providers/s3/utils/isPathFolder.js.map +1 -0
  23. package/dist/cjs/providers/s3/utils/resolveFinalKey.js +22 -0
  24. package/dist/cjs/providers/s3/utils/resolveFinalKey.js.map +1 -0
  25. package/dist/cjs/providers/s3/utils/validateRemovePath.js +21 -0
  26. package/dist/cjs/providers/s3/utils/validateRemovePath.js.map +1 -0
  27. package/dist/esm/internals/apis/remove.d.ts +2 -1
  28. package/dist/esm/internals/apis/remove.mjs +13 -12
  29. package/dist/esm/internals/apis/remove.mjs.map +1 -1
  30. package/dist/esm/providers/s3/apis/internal/copy.mjs +8 -7
  31. package/dist/esm/providers/s3/apis/internal/copy.mjs.map +1 -1
  32. package/dist/esm/providers/s3/apis/internal/downloadData.d.ts +1 -1
  33. package/dist/esm/providers/s3/apis/internal/downloadData.mjs +6 -5
  34. package/dist/esm/providers/s3/apis/internal/downloadData.mjs.map +1 -1
  35. package/dist/esm/providers/s3/apis/internal/getProperties.mjs +7 -6
  36. package/dist/esm/providers/s3/apis/internal/getProperties.mjs.map +1 -1
  37. package/dist/esm/providers/s3/apis/internal/getUrl.mjs +2 -1
  38. package/dist/esm/providers/s3/apis/internal/getUrl.mjs.map +1 -1
  39. package/dist/esm/providers/s3/apis/internal/list.mjs +8 -7
  40. package/dist/esm/providers/s3/apis/internal/list.mjs.map +1 -1
  41. package/dist/esm/providers/s3/apis/internal/remove.d.ts +3 -2
  42. package/dist/esm/providers/s3/apis/internal/remove.mjs +58 -27
  43. package/dist/esm/providers/s3/apis/internal/remove.mjs.map +1 -1
  44. package/dist/esm/providers/s3/apis/internal/uploadData/index.mjs +13 -0
  45. package/dist/esm/providers/s3/apis/internal/uploadData/index.mjs.map +1 -1
  46. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/initialUpload.mjs +1 -0
  47. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/initialUpload.mjs.map +1 -1
  48. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/uploadCache.mjs +1 -0
  49. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/uploadCache.mjs.map +1 -1
  50. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/uploadHandlers.mjs +6 -5
  51. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/uploadHandlers.mjs.map +1 -1
  52. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/uploadPartExecutor.mjs +1 -0
  53. package/dist/esm/providers/s3/apis/internal/uploadData/multipart/uploadPartExecutor.mjs.map +1 -1
  54. package/dist/esm/providers/s3/apis/internal/uploadData/putObjectJob.mjs +7 -6
  55. package/dist/esm/providers/s3/apis/internal/uploadData/putObjectJob.mjs.map +1 -1
  56. package/dist/esm/providers/s3/apis/remove.d.ts +6 -6
  57. package/dist/esm/providers/s3/apis/remove.mjs +6 -1
  58. package/dist/esm/providers/s3/apis/remove.mjs.map +1 -1
  59. package/dist/esm/providers/s3/apis/server/remove.d.ts +6 -6
  60. package/dist/esm/providers/s3/apis/server/remove.mjs +6 -1
  61. package/dist/esm/providers/s3/apis/server/remove.mjs.map +1 -1
  62. package/dist/esm/providers/s3/types/index.d.ts +1 -1
  63. package/dist/esm/providers/s3/types/inputs.d.ts +24 -1
  64. package/dist/esm/providers/s3/utils/client/s3data/deleteObjects.d.ts +30 -0
  65. package/dist/esm/providers/s3/utils/client/s3data/deleteObjects.mjs +74 -0
  66. package/dist/esm/providers/s3/utils/client/s3data/deleteObjects.mjs.map +1 -0
  67. package/dist/esm/providers/s3/utils/client/s3data/index.d.ts +1 -0
  68. package/dist/esm/providers/s3/utils/client/s3data/index.mjs +1 -0
  69. package/dist/esm/providers/s3/utils/client/s3data/index.mjs.map +1 -1
  70. package/dist/esm/providers/s3/utils/client/s3data/types.d.ts +26 -0
  71. package/dist/esm/providers/s3/utils/createAbortableTask.d.ts +6 -0
  72. package/dist/esm/providers/s3/utils/createAbortableTask.mjs +33 -0
  73. package/dist/esm/providers/s3/utils/createAbortableTask.mjs.map +1 -0
  74. package/dist/esm/providers/s3/utils/deleteFolderContents.d.ts +16 -0
  75. package/dist/esm/providers/s3/utils/deleteFolderContents.mjs +90 -0
  76. package/dist/esm/providers/s3/utils/deleteFolderContents.mjs.map +1 -0
  77. package/dist/esm/providers/s3/utils/generateDeleteObjectsXml.d.ts +10 -0
  78. package/dist/esm/providers/s3/utils/generateDeleteObjectsXml.mjs +35 -0
  79. package/dist/esm/providers/s3/utils/generateDeleteObjectsXml.mjs.map +1 -0
  80. package/dist/esm/providers/s3/utils/index.d.ts +6 -0
  81. package/dist/esm/providers/s3/utils/index.mjs +6 -0
  82. package/dist/esm/providers/s3/utils/index.mjs.map +1 -1
  83. package/dist/esm/providers/s3/utils/isPathFolder.d.ts +13 -0
  84. package/dist/esm/providers/s3/utils/isPathFolder.mjs +48 -0
  85. package/dist/esm/providers/s3/utils/isPathFolder.mjs.map +1 -0
  86. package/dist/esm/providers/s3/utils/resolveFinalKey.d.ts +9 -0
  87. package/dist/esm/providers/s3/utils/resolveFinalKey.mjs +20 -0
  88. package/dist/esm/providers/s3/utils/resolveFinalKey.mjs.map +1 -0
  89. package/dist/esm/providers/s3/utils/validateRemovePath.d.ts +8 -0
  90. package/dist/esm/providers/s3/utils/validateRemovePath.mjs +18 -0
  91. package/dist/esm/providers/s3/utils/validateRemovePath.mjs.map +1 -0
  92. package/dist/esm/types/common.d.ts +3 -0
  93. package/package.json +117 -117
  94. package/src/internals/apis/remove.ts +17 -10
  95. package/src/providers/s3/apis/internal/remove.ts +96 -41
  96. package/src/providers/s3/apis/remove.ts +11 -6
  97. package/src/providers/s3/apis/server/remove.ts +11 -6
  98. package/src/providers/s3/types/index.ts +2 -0
  99. package/src/providers/s3/types/inputs.ts +24 -1
  100. package/src/providers/s3/utils/client/s3data/deleteObjects.ts +122 -0
  101. package/src/providers/s3/utils/client/s3data/index.ts +5 -0
  102. package/src/providers/s3/utils/client/s3data/types.ts +20 -0
  103. package/src/providers/s3/utils/createAbortableTask.ts +45 -0
  104. package/src/providers/s3/utils/deleteFolderContents.ts +118 -0
  105. package/src/providers/s3/utils/generateDeleteObjectsXml.ts +38 -0
  106. package/src/providers/s3/utils/index.ts +6 -0
  107. package/src/providers/s3/utils/isPathFolder.ts +50 -0
  108. package/src/providers/s3/utils/resolveFinalKey.ts +22 -0
  109. package/src/providers/s3/utils/validateRemovePath.ts +16 -0
  110. package/src/types/common.ts +5 -0
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ // SPDX-License-Identifier: Apache-2.0
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isPathFolder = void 0;
7
+ const utils_1 = require("@aws-amplify/core/internals/utils");
8
+ const s3data_1 = require("./client/s3data");
9
+ const userAgent_1 = require("./userAgent");
10
+ /**
11
+ * Determines if a given S3 key represents a folder by checking if objects exist with that prefix.
12
+ *
13
+ * @param params - Configuration object for the folder check
14
+ * @returns Promise that resolves to true if the key represents a folder, false otherwise
15
+ */
16
+ const isPathFolder = async (params) => {
17
+ const { s3Config, bucket, key, expectedBucketOwner } = params;
18
+ try {
19
+ const prefix = key.endsWith('/') ? key : `${key}/`;
20
+ const result = await (0, s3data_1.listObjectsV2)({
21
+ ...s3Config,
22
+ userAgentValue: (0, userAgent_1.getStorageUserAgentValue)(utils_1.StorageAction.Remove),
23
+ }, {
24
+ Bucket: bucket,
25
+ Prefix: prefix,
26
+ MaxKeys: 1,
27
+ ExpectedBucketOwner: expectedBucketOwner,
28
+ });
29
+ const isFolder = !!(result.Contents && result.Contents.length > 0) ||
30
+ !!(result.CommonPrefixes && result.CommonPrefixes.length > 0);
31
+ return isFolder;
32
+ }
33
+ catch (error) {
34
+ return false;
35
+ }
36
+ };
37
+ exports.isPathFolder = isPathFolder;
38
+ //# sourceMappingURL=isPathFolder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPathFolder.js","sources":["../../../../../src/providers/s3/utils/isPathFolder.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPathFolder = void 0;\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst s3data_1 = require(\"./client/s3data\");\nconst userAgent_1 = require(\"./userAgent\");\n/**\n * Determines if a given S3 key represents a folder by checking if objects exist with that prefix.\n *\n * @param params - Configuration object for the folder check\n * @returns Promise that resolves to true if the key represents a folder, false otherwise\n */\nconst isPathFolder = async (params) => {\n const { s3Config, bucket, key, expectedBucketOwner } = params;\n try {\n const prefix = key.endsWith('/') ? key : `${key}/`;\n const result = await (0, s3data_1.listObjectsV2)({\n ...s3Config,\n userAgentValue: (0, userAgent_1.getStorageUserAgentValue)(utils_1.StorageAction.Remove),\n }, {\n Bucket: bucket,\n Prefix: prefix,\n MaxKeys: 1,\n ExpectedBucketOwner: expectedBucketOwner,\n });\n const isFolder = !!(result.Contents && result.Contents.length > 0) ||\n !!(result.CommonPrefixes && result.CommonPrefixes.length > 0);\n return isFolder;\n }\n catch (error) {\n return false;\n }\n};\nexports.isPathFolder = isPathFolder;\n"],"names":[],"mappings":";;AACA;AACA;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,OAAO,CAAC,YAAY,GAAG,MAAM;AAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,mCAAmC,CAAC;AAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC;AAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,OAAO,MAAM,KAAK;AACvC,IAAI,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,MAAM;AACjE,IAAI,IAAI;AACR,QAAQ,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1D,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,aAAa,EAAE;AACzD,YAAY,GAAG,QAAQ;AACvB,YAAY,cAAc,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,wBAAwB,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC;AACnG,SAAS,EAAE;AACX,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,OAAO,EAAE,CAAC;AACtB,YAAY,mBAAmB,EAAE,mBAAmB;AACpD,SAAS,CAAC;AACV,QAAQ,MAAM,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1E,YAAY,CAAC,EAAE,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;AACzE,QAAQ,OAAO,QAAQ;AACvB,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,CAAC;AACD,OAAO,CAAC,YAAY,GAAG,YAAY;;"}
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ // SPDX-License-Identifier: Apache-2.0
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveFinalKey = void 0;
7
+ const constants_1 = require("./constants");
8
+ /**
9
+ * Resolves the final S3 key based on input type and key prefix.
10
+ *
11
+ * @param inputType - The type of input (key-based or path-based)
12
+ * @param objectKey - The object key from the input
13
+ * @param keyPrefix - The key prefix to prepend for key-based inputs
14
+ * @returns The final S3 key to use for the operation
15
+ */
16
+ const resolveFinalKey = (inputType, objectKey, keyPrefix) => {
17
+ return inputType === constants_1.STORAGE_INPUT_KEY
18
+ ? `${keyPrefix}${objectKey}`
19
+ : objectKey;
20
+ };
21
+ exports.resolveFinalKey = resolveFinalKey;
22
+ //# sourceMappingURL=resolveFinalKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveFinalKey.js","sources":["../../../../../src/providers/s3/utils/resolveFinalKey.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveFinalKey = void 0;\nconst constants_1 = require(\"./constants\");\n/**\n * Resolves the final S3 key based on input type and key prefix.\n *\n * @param inputType - The type of input (key-based or path-based)\n * @param objectKey - The object key from the input\n * @param keyPrefix - The key prefix to prepend for key-based inputs\n * @returns The final S3 key to use for the operation\n */\nconst resolveFinalKey = (inputType, objectKey, keyPrefix) => {\n return inputType === constants_1.STORAGE_INPUT_KEY\n ? `${keyPrefix}${objectKey}`\n : objectKey;\n};\nexports.resolveFinalKey = resolveFinalKey;\n"],"names":[],"mappings":";;AACA;AACA;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,OAAO,CAAC,eAAe,GAAG,MAAM;AAChC,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,KAAK;AAC7D,IAAI,OAAO,SAAS,KAAK,WAAW,CAAC;AACrC,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC;AACnC,UAAU,SAAS;AACnB,CAAC;AACD,OAAO,CAAC,eAAe,GAAG,eAAe;;"}
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ // SPDX-License-Identifier: Apache-2.0
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateRemovePath = void 0;
7
+ /**
8
+ * Validates that the path is safe for removal operations.
9
+ * Prevents deletion of dangerous paths that could affect entire buckets.
10
+ *
11
+ * @param path - The path to validate
12
+ * @throws Error if the path is considered dangerous
13
+ */
14
+ const validateRemovePath = (path) => {
15
+ const DANGEROUS_PATHS = ['', '/', '*'];
16
+ if (DANGEROUS_PATHS.includes(path.trim())) {
17
+ throw new Error('Cannot delete root or bucket-wide paths');
18
+ }
19
+ };
20
+ exports.validateRemovePath = validateRemovePath;
21
+ //# sourceMappingURL=validateRemovePath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateRemovePath.js","sources":["../../../../../src/providers/s3/utils/validateRemovePath.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateRemovePath = void 0;\n/**\n * Validates that the path is safe for removal operations.\n * Prevents deletion of dangerous paths that could affect entire buckets.\n *\n * @param path - The path to validate\n * @throws Error if the path is considered dangerous\n */\nconst validateRemovePath = (path) => {\n const DANGEROUS_PATHS = ['', '/', '*'];\n if (DANGEROUS_PATHS.includes(path.trim())) {\n throw new Error('Cannot delete root or bucket-wide paths');\n }\n};\nexports.validateRemovePath = validateRemovePath;\n"],"names":[],"mappings":";;AACA;AACA;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,OAAO,CAAC,kBAAkB,GAAG,MAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,kBAAkB,GAAG,CAAC,IAAI,KAAK;AACrC,IAAI,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1C,IAAI,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;AAC/C,QAAQ,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;AAClE,IAAI;AACJ,CAAC;AACD,OAAO,CAAC,kBAAkB,GAAG,kBAAkB;;"}
@@ -1,6 +1,7 @@
1
+ import { RemoveOperation } from '../../providers/s3/types';
1
2
  import { RemoveInput } from '../types/inputs';
2
3
  import { RemoveOutput } from '../types/outputs';
3
4
  /**
4
5
  * @internal
5
6
  */
6
- export declare const remove: (input: RemoveInput) => Promise<RemoveOutput>;
7
+ export declare const remove: (input: RemoveInput) => RemoveOperation<RemoveOutput>;
@@ -6,18 +6,19 @@ import { remove as remove$1 } from '../../providers/s3/apis/internal/remove.mjs'
6
6
  /**
7
7
  * @internal
8
8
  */
9
- const remove = (input) => remove$1(Amplify, {
10
- path: input.path,
11
- options: {
12
- useAccelerateEndpoint: input?.options?.useAccelerateEndpoint,
13
- bucket: input?.options?.bucket,
14
- expectedBucketOwner: input?.options?.expectedBucketOwner,
15
- locationCredentialsProvider: input?.options?.locationCredentialsProvider,
16
- customEndpoint: input?.options?.customEndpoint,
17
- },
18
- // Type casting is necessary because `removeInternal` supports both Gen1 and Gen2 signatures, but here
19
- // given in input can only be Gen2 signature, the return can only ben Gen2 signature.
20
- });
9
+ const remove = (input) => {
10
+ return remove$1(Amplify, {
11
+ path: input.path,
12
+ options: {
13
+ useAccelerateEndpoint: input?.options?.useAccelerateEndpoint,
14
+ bucket: input?.options?.bucket,
15
+ expectedBucketOwner: input?.options?.expectedBucketOwner,
16
+ locationCredentialsProvider: input?.options?.locationCredentialsProvider,
17
+ customEndpoint: input?.options?.customEndpoint,
18
+ onProgress: input?.options?.onProgress,
19
+ },
20
+ });
21
+ };
21
22
 
22
23
  export { remove };
23
24
  //# sourceMappingURL=remove.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"remove.mjs","sources":["../../../../src/internals/apis/remove.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { remove as removeInternal } from '../../providers/s3/apis/internal/remove';\n/**\n * @internal\n */\nexport const remove = (input) => removeInternal(Amplify, {\n path: input.path,\n options: {\n useAccelerateEndpoint: input?.options?.useAccelerateEndpoint,\n bucket: input?.options?.bucket,\n expectedBucketOwner: input?.options?.expectedBucketOwner,\n locationCredentialsProvider: input?.options?.locationCredentialsProvider,\n customEndpoint: input?.options?.customEndpoint,\n },\n // Type casting is necessary because `removeInternal` supports both Gen1 and Gen2 signatures, but here\n // given in input can only be Gen2 signature, the return can only ben Gen2 signature.\n});\n"],"names":["removeInternal"],"mappings":";;;AAAA;AACA;AAGA;AACA;AACA;AACY,MAAC,MAAM,GAAG,CAAC,KAAK,KAAKA,QAAc,CAAC,OAAO,EAAE;AACzD,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI;AACpB,IAAI,OAAO,EAAE;AACb,QAAQ,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB;AACpE,QAAQ,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM;AACtC,QAAQ,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB;AAChE,QAAQ,2BAA2B,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B;AAChF,QAAQ,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc;AACtD,KAAK;AACL;AACA;AACA,CAAC;;;;"}
1
+ {"version":3,"file":"remove.mjs","sources":["../../../../src/internals/apis/remove.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { remove as removeInternal } from '../../providers/s3/apis/internal/remove';\n/**\n * @internal\n */\nexport const remove = (input) => {\n return removeInternal(Amplify, {\n path: input.path,\n options: {\n useAccelerateEndpoint: input?.options?.useAccelerateEndpoint,\n bucket: input?.options?.bucket,\n expectedBucketOwner: input?.options?.expectedBucketOwner,\n locationCredentialsProvider: input?.options?.locationCredentialsProvider,\n customEndpoint: input?.options?.customEndpoint,\n onProgress: input?.options?.onProgress,\n },\n });\n};\n"],"names":["removeInternal"],"mappings":";;;AAAA;AACA;AAGA;AACA;AACA;AACY,MAAC,MAAM,GAAG,CAAC,KAAK,KAAK;AACjC,IAAI,OAAOA,QAAc,CAAC,OAAO,EAAE;AACnC,QAAQ,IAAI,EAAE,KAAK,CAAC,IAAI;AACxB,QAAQ,OAAO,EAAE;AACjB,YAAY,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB;AACxE,YAAY,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM;AAC1C,YAAY,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB;AACpE,YAAY,2BAA2B,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B;AACpF,YAAY,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc;AAC1D,YAAY,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU;AAClD,SAAS;AACT,KAAK,CAAC;AACN;;;;"}
@@ -5,13 +5,6 @@ import '../../utils/client/runtime/s3TransferHandler/fetch.mjs';
5
5
  import 'fast-xml-parser';
6
6
  import '../../utils/client/runtime/s3TransferHandler/xhr.mjs';
7
7
  import 'buffer';
8
- import { resolveS3ConfigAndInput } from '../../utils/resolveS3ConfigAndInput.mjs';
9
- import { assertValidationError } from '../../../../errors/utils/assertValidationError.mjs';
10
- import { StorageValidationErrorCode } from '../../../../errors/types/validation.mjs';
11
- import { logger } from '../../../../utils/logger.mjs';
12
- import { validateBucketOwnerID } from '../../utils/validateBucketOwnerID.mjs';
13
- import { validateStorageOperationInput } from '../../utils/validateStorageOperationInput.mjs';
14
- import { isInputWithPath } from '../../utils/isInputWithPath.mjs';
15
8
  import '../../utils/client/s3data/base.mjs';
16
9
  import '../../utils/client/s3data/getObject.mjs';
17
10
  import '../../utils/client/s3data/listObjectsV2.mjs';
@@ -24,7 +17,15 @@ import '../../utils/client/s3data/abortMultipartUpload.mjs';
24
17
  import { copyObject } from '../../utils/client/s3data/copyObject.mjs';
25
18
  import '../../utils/client/s3data/headObject.mjs';
26
19
  import '../../utils/client/s3data/deleteObject.mjs';
20
+ import '../../utils/client/s3data/deleteObjects.mjs';
27
21
  import { getStorageUserAgentValue } from '../../utils/userAgent.mjs';
22
+ import { resolveS3ConfigAndInput } from '../../utils/resolveS3ConfigAndInput.mjs';
23
+ import { assertValidationError } from '../../../../errors/utils/assertValidationError.mjs';
24
+ import { StorageValidationErrorCode } from '../../../../errors/types/validation.mjs';
25
+ import { logger } from '../../../../utils/logger.mjs';
26
+ import { validateBucketOwnerID } from '../../utils/validateBucketOwnerID.mjs';
27
+ import { validateStorageOperationInput } from '../../utils/validateStorageOperationInput.mjs';
28
+ import { isInputWithPath } from '../../utils/isInputWithPath.mjs';
28
29
 
29
30
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
30
31
  // SPDX-License-Identifier: Apache-2.0
@@ -1 +1 @@
1
- {"version":3,"file":"copy.mjs","sources":["../../../../../../src/providers/s3/apis/internal/copy.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { isInputWithPath, resolveS3ConfigAndInput, validateBucketOwnerID, validateStorageOperationInput, } from '../../utils';\nimport { StorageValidationErrorCode } from '../../../../errors/types/validation';\nimport { assertValidationError } from '../../../../errors/utils/assertValidationError';\nimport { copyObject } from '../../utils/client/s3data';\nimport { getStorageUserAgentValue } from '../../utils/userAgent';\nimport { logger } from '../../../../utils';\nconst isCopyInputWithPath = (input) => isInputWithPath(input.source);\nconst storageBucketAssertion = (sourceBucket, destBucket) => {\n /** For multi-bucket, both source and destination bucket needs to be passed in\n * or both can be undefined and we fallback to singleton's default value\n */\n assertValidationError(\n // Both src & dest bucket option is present is acceptable\n (sourceBucket !== undefined && destBucket !== undefined) ||\n // or both are undefined is also acceptable\n (!destBucket && !sourceBucket), StorageValidationErrorCode.InvalidCopyOperationStorageBucket);\n};\nexport const copy = async (amplify, input) => {\n return isCopyInputWithPath(input)\n ? copyWithPath(amplify, input)\n : copyWithKey(amplify, input);\n};\nconst copyWithPath = async (amplify, input) => {\n const { source, destination } = input;\n storageBucketAssertion(source.bucket, destination.bucket);\n const { bucket: sourceBucket } = await resolveS3ConfigAndInput(amplify, {\n path: input.source.path,\n options: {\n locationCredentialsProvider: input.options?.locationCredentialsProvider,\n ...input.source,\n },\n });\n // The bucket, region, credentials of s3 client are resolved from destination.\n // Whereas the source bucket and path are a input parameter of S3 copy operation.\n const { s3Config, bucket: destBucket, identityId, } = await resolveS3ConfigAndInput(amplify, {\n path: input.destination.path,\n options: {\n locationCredentialsProvider: input.options?.locationCredentialsProvider,\n customEndpoint: input.options?.customEndpoint,\n ...input.destination,\n },\n }); // resolveS3ConfigAndInput does not make extra API calls or storage access if called repeatedly.\n assertValidationError(!!source.path, StorageValidationErrorCode.NoSourcePath);\n assertValidationError(!!destination.path, StorageValidationErrorCode.NoDestinationPath);\n const { objectKey: sourcePath } = validateStorageOperationInput(source, identityId);\n const { objectKey: destinationPath } = validateStorageOperationInput(destination, identityId);\n validateBucketOwnerID(source.expectedBucketOwner);\n validateBucketOwnerID(destination.expectedBucketOwner);\n const finalCopySource = `${sourceBucket}/${sourcePath}`;\n const finalCopyDestination = destinationPath;\n logger.debug(`copying \"${finalCopySource}\" to \"${finalCopyDestination}\".`);\n await serviceCopy({\n source: finalCopySource,\n destination: finalCopyDestination,\n bucket: destBucket,\n s3Config,\n notModifiedSince: input.source.notModifiedSince,\n eTag: input.source.eTag,\n expectedSourceBucketOwner: input.source?.expectedBucketOwner,\n expectedBucketOwner: input.destination?.expectedBucketOwner,\n tagConfig: input.tagConfig,\n });\n return { path: finalCopyDestination };\n};\n/** @deprecated Use {@link copyWithPath} instead. */\nexport const copyWithKey = async (amplify, input) => {\n const { source, destination } = input;\n storageBucketAssertion(source.bucket, destination.bucket);\n assertValidationError(!!source.key, StorageValidationErrorCode.NoSourceKey);\n assertValidationError(!!destination.key, StorageValidationErrorCode.NoDestinationKey);\n validateBucketOwnerID(source.expectedBucketOwner);\n validateBucketOwnerID(destination.expectedBucketOwner);\n const { bucket: sourceBucket, keyPrefix: sourceKeyPrefix } = await resolveS3ConfigAndInput(amplify, {\n ...input,\n options: {\n // @ts-expect-error: 'options' does not exist on type 'CopyInput'. In case of JS users set the location\n // credentials provider option, resolveS3ConfigAndInput will throw validation error.\n locationCredentialsProvider: input.options?.locationCredentialsProvider,\n ...input.source,\n },\n });\n // The bucket, region, credentials of s3 client are resolved from destination.\n // Whereas the source bucket and path are a input parameter of S3 copy operation.\n const { s3Config, bucket: destBucket, keyPrefix: destinationKeyPrefix, } = await resolveS3ConfigAndInput(amplify, {\n ...input,\n options: {\n // @ts-expect-error: 'options' does not exist on type 'CopyInput'. In case of JS users set the location\n // credentials provider option, resolveS3ConfigAndInput will throw validation error.\n locationCredentialsProvider: input.options?.locationCredentialsProvider,\n ...input.destination,\n },\n }); // resolveS3ConfigAndInput does not make extra API calls or storage access if called repeatedly.\n // TODO(ashwinkumar6) V6-logger: warn `You may copy files from another user if the source level is \"protected\", currently it's ${srcLevel}`\n const finalCopySource = `${sourceBucket}/${sourceKeyPrefix}${source.key}`;\n const finalCopyDestination = `${destinationKeyPrefix}${destination.key}`;\n logger.debug(`copying \"${finalCopySource}\" to \"${finalCopyDestination}\".`);\n await serviceCopy({\n source: finalCopySource,\n destination: finalCopyDestination,\n bucket: destBucket,\n s3Config,\n notModifiedSince: input.source.notModifiedSince,\n eTag: input.source.eTag,\n expectedSourceBucketOwner: input.source?.expectedBucketOwner,\n expectedBucketOwner: input.destination?.expectedBucketOwner,\n });\n return {\n key: destination.key,\n };\n};\nconst serviceCopy = async ({ source, destination, bucket, s3Config, notModifiedSince, eTag, expectedSourceBucketOwner, expectedBucketOwner, tagConfig, }) => {\n await copyObject({\n ...s3Config,\n userAgentValue: getStorageUserAgentValue(StorageAction.Copy),\n }, {\n Bucket: bucket,\n CopySource: source,\n Key: destination,\n MetadataDirective: 'COPY', // Copies over metadata like contentType as well\n TaggingDirective: tagConfig?.mode === 'remove' ? 'REPLACE' : 'COPY',\n CopySourceIfMatch: eTag,\n CopySourceIfUnmodifiedSince: notModifiedSince,\n ExpectedSourceBucketOwner: expectedSourceBucketOwner,\n ExpectedBucketOwner: expectedBucketOwner,\n });\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"copy.mjs","sources":["../../../../../../src/providers/s3/apis/internal/copy.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { isInputWithPath, resolveS3ConfigAndInput, validateBucketOwnerID, validateStorageOperationInput, } from '../../utils';\nimport { StorageValidationErrorCode } from '../../../../errors/types/validation';\nimport { assertValidationError } from '../../../../errors/utils/assertValidationError';\nimport { copyObject } from '../../utils/client/s3data';\nimport { getStorageUserAgentValue } from '../../utils/userAgent';\nimport { logger } from '../../../../utils';\nconst isCopyInputWithPath = (input) => isInputWithPath(input.source);\nconst storageBucketAssertion = (sourceBucket, destBucket) => {\n /** For multi-bucket, both source and destination bucket needs to be passed in\n * or both can be undefined and we fallback to singleton's default value\n */\n assertValidationError(\n // Both src & dest bucket option is present is acceptable\n (sourceBucket !== undefined && destBucket !== undefined) ||\n // or both are undefined is also acceptable\n (!destBucket && !sourceBucket), StorageValidationErrorCode.InvalidCopyOperationStorageBucket);\n};\nexport const copy = async (amplify, input) => {\n return isCopyInputWithPath(input)\n ? copyWithPath(amplify, input)\n : copyWithKey(amplify, input);\n};\nconst copyWithPath = async (amplify, input) => {\n const { source, destination } = input;\n storageBucketAssertion(source.bucket, destination.bucket);\n const { bucket: sourceBucket } = await resolveS3ConfigAndInput(amplify, {\n path: input.source.path,\n options: {\n locationCredentialsProvider: input.options?.locationCredentialsProvider,\n ...input.source,\n },\n });\n // The bucket, region, credentials of s3 client are resolved from destination.\n // Whereas the source bucket and path are a input parameter of S3 copy operation.\n const { s3Config, bucket: destBucket, identityId, } = await resolveS3ConfigAndInput(amplify, {\n path: input.destination.path,\n options: {\n locationCredentialsProvider: input.options?.locationCredentialsProvider,\n customEndpoint: input.options?.customEndpoint,\n ...input.destination,\n },\n }); // resolveS3ConfigAndInput does not make extra API calls or storage access if called repeatedly.\n assertValidationError(!!source.path, StorageValidationErrorCode.NoSourcePath);\n assertValidationError(!!destination.path, StorageValidationErrorCode.NoDestinationPath);\n const { objectKey: sourcePath } = validateStorageOperationInput(source, identityId);\n const { objectKey: destinationPath } = validateStorageOperationInput(destination, identityId);\n validateBucketOwnerID(source.expectedBucketOwner);\n validateBucketOwnerID(destination.expectedBucketOwner);\n const finalCopySource = `${sourceBucket}/${sourcePath}`;\n const finalCopyDestination = destinationPath;\n logger.debug(`copying \"${finalCopySource}\" to \"${finalCopyDestination}\".`);\n await serviceCopy({\n source: finalCopySource,\n destination: finalCopyDestination,\n bucket: destBucket,\n s3Config,\n notModifiedSince: input.source.notModifiedSince,\n eTag: input.source.eTag,\n expectedSourceBucketOwner: input.source?.expectedBucketOwner,\n expectedBucketOwner: input.destination?.expectedBucketOwner,\n tagConfig: input.tagConfig,\n });\n return { path: finalCopyDestination };\n};\n/** @deprecated Use {@link copyWithPath} instead. */\nexport const copyWithKey = async (amplify, input) => {\n const { source, destination } = input;\n storageBucketAssertion(source.bucket, destination.bucket);\n assertValidationError(!!source.key, StorageValidationErrorCode.NoSourceKey);\n assertValidationError(!!destination.key, StorageValidationErrorCode.NoDestinationKey);\n validateBucketOwnerID(source.expectedBucketOwner);\n validateBucketOwnerID(destination.expectedBucketOwner);\n const { bucket: sourceBucket, keyPrefix: sourceKeyPrefix } = await resolveS3ConfigAndInput(amplify, {\n ...input,\n options: {\n // @ts-expect-error: 'options' does not exist on type 'CopyInput'. In case of JS users set the location\n // credentials provider option, resolveS3ConfigAndInput will throw validation error.\n locationCredentialsProvider: input.options?.locationCredentialsProvider,\n ...input.source,\n },\n });\n // The bucket, region, credentials of s3 client are resolved from destination.\n // Whereas the source bucket and path are a input parameter of S3 copy operation.\n const { s3Config, bucket: destBucket, keyPrefix: destinationKeyPrefix, } = await resolveS3ConfigAndInput(amplify, {\n ...input,\n options: {\n // @ts-expect-error: 'options' does not exist on type 'CopyInput'. In case of JS users set the location\n // credentials provider option, resolveS3ConfigAndInput will throw validation error.\n locationCredentialsProvider: input.options?.locationCredentialsProvider,\n ...input.destination,\n },\n }); // resolveS3ConfigAndInput does not make extra API calls or storage access if called repeatedly.\n // TODO(ashwinkumar6) V6-logger: warn `You may copy files from another user if the source level is \"protected\", currently it's ${srcLevel}`\n const finalCopySource = `${sourceBucket}/${sourceKeyPrefix}${source.key}`;\n const finalCopyDestination = `${destinationKeyPrefix}${destination.key}`;\n logger.debug(`copying \"${finalCopySource}\" to \"${finalCopyDestination}\".`);\n await serviceCopy({\n source: finalCopySource,\n destination: finalCopyDestination,\n bucket: destBucket,\n s3Config,\n notModifiedSince: input.source.notModifiedSince,\n eTag: input.source.eTag,\n expectedSourceBucketOwner: input.source?.expectedBucketOwner,\n expectedBucketOwner: input.destination?.expectedBucketOwner,\n });\n return {\n key: destination.key,\n };\n};\nconst serviceCopy = async ({ source, destination, bucket, s3Config, notModifiedSince, eTag, expectedSourceBucketOwner, expectedBucketOwner, tagConfig, }) => {\n await copyObject({\n ...s3Config,\n userAgentValue: getStorageUserAgentValue(StorageAction.Copy),\n }, {\n Bucket: bucket,\n CopySource: source,\n Key: destination,\n MetadataDirective: 'COPY', // Copies over metadata like contentType as well\n TaggingDirective: tagConfig?.mode === 'remove' ? 'REPLACE' : 'COPY',\n CopySourceIfMatch: eTag,\n CopySourceIfUnmodifiedSince: notModifiedSince,\n ExpectedSourceBucketOwner: expectedSourceBucketOwner,\n ExpectedBucketOwner: expectedBucketOwner,\n });\n};\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { DownloadDataInput } from '../../types';
2
2
  import { StorageDownloadDataOutput, StorageItemWithKey, StorageItemWithPath } from '../../../../types';
3
3
  import { DownloadDataInput as DownloadDataWithPathInputWithAdvancedOptions } from '../../../../internals/types/inputs';
4
4
  export declare const downloadData: (input: DownloadDataInput | DownloadDataWithPathInputWithAdvancedOptions) => {
5
- cancel: (message?: string) => void;
6
5
  readonly state: import("../../../../types").TransferTaskState;
6
+ cancel: (message?: string) => void;
7
7
  result: Promise<StorageDownloadDataOutput<StorageItemWithKey | StorageItemWithPath>>;
8
8
  };
@@ -7,11 +7,6 @@ import '../../utils/client/runtime/s3TransferHandler/fetch.mjs';
7
7
  import 'fast-xml-parser';
8
8
  import '../../utils/client/runtime/s3TransferHandler/xhr.mjs';
9
9
  import 'buffer';
10
- import { createDownloadTask } from '../../utils/transferTask.mjs';
11
- import { validateBucketOwnerID } from '../../utils/validateBucketOwnerID.mjs';
12
- import { validateStorageOperationInput } from '../../utils/validateStorageOperationInput.mjs';
13
- import '../../../../errors/types/validation.mjs';
14
- import { STORAGE_INPUT_KEY } from '../../utils/constants.mjs';
15
10
  import '../../utils/client/s3data/base.mjs';
16
11
  import { getObject } from '../../utils/client/s3data/getObject.mjs';
17
12
  import '../../utils/client/s3data/listObjectsV2.mjs';
@@ -24,7 +19,13 @@ import '../../utils/client/s3data/abortMultipartUpload.mjs';
24
19
  import '../../utils/client/s3data/copyObject.mjs';
25
20
  import '../../utils/client/s3data/headObject.mjs';
26
21
  import '../../utils/client/s3data/deleteObject.mjs';
22
+ import '../../utils/client/s3data/deleteObjects.mjs';
27
23
  import { getStorageUserAgentValue } from '../../utils/userAgent.mjs';
24
+ import { STORAGE_INPUT_KEY } from '../../utils/constants.mjs';
25
+ import { createDownloadTask } from '../../utils/transferTask.mjs';
26
+ import { validateBucketOwnerID } from '../../utils/validateBucketOwnerID.mjs';
27
+ import { validateStorageOperationInput } from '../../utils/validateStorageOperationInput.mjs';
28
+ import '../../../../errors/types/validation.mjs';
28
29
  import { logger } from '../../../../utils/logger.mjs';
29
30
 
30
31
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
@@ -1 +1 @@
1
- {"version":3,"file":"downloadData.mjs","sources":["../../../../../../src/providers/s3/apis/internal/downloadData.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { resolveS3ConfigAndInput } from '../../utils/resolveS3ConfigAndInput';\nimport { createDownloadTask, validateBucketOwnerID, validateStorageOperationInput, } from '../../utils';\nimport { getObject } from '../../utils/client/s3data';\nimport { getStorageUserAgentValue } from '../../utils/userAgent';\nimport { logger } from '../../../../utils';\nimport { STORAGE_INPUT_KEY } from '../../utils/constants';\nexport const downloadData = (input) => {\n const abortController = new AbortController();\n const downloadTask = createDownloadTask({\n job: downloadDataJob(input, abortController.signal),\n onCancel: (message) => {\n abortController.abort(message);\n },\n });\n return downloadTask;\n};\nconst downloadDataJob = (downloadDataInput, abortSignal) => async () => {\n const { options: downloadDataOptions } = downloadDataInput;\n const { bucket, keyPrefix, s3Config, identityId } = await resolveS3ConfigAndInput(Amplify, downloadDataInput);\n const { inputType, objectKey } = validateStorageOperationInput(downloadDataInput, identityId);\n validateBucketOwnerID(downloadDataOptions?.expectedBucketOwner);\n const finalKey = inputType === STORAGE_INPUT_KEY ? keyPrefix + objectKey : objectKey;\n logger.debug(`download ${objectKey} from ${finalKey}.`);\n const { Body: body, LastModified: lastModified, ContentLength: size, ETag: eTag, Metadata: metadata, VersionId: versionId, ContentType: contentType, } = await getObject({\n ...s3Config,\n abortSignal,\n onDownloadProgress: downloadDataOptions?.onProgress,\n userAgentValue: getStorageUserAgentValue(StorageAction.DownloadData),\n }, {\n Bucket: bucket,\n Key: finalKey,\n ...(downloadDataOptions?.bytesRange && {\n Range: `bytes=${downloadDataOptions.bytesRange.start}-${downloadDataOptions.bytesRange.end}`,\n }),\n ResponseCacheControl: downloadDataOptions?.cacheControl,\n ExpectedBucketOwner: downloadDataOptions?.expectedBucketOwner,\n });\n const result = {\n body,\n lastModified,\n size,\n contentType,\n eTag,\n metadata,\n versionId,\n };\n return inputType === STORAGE_INPUT_KEY\n ? { key: objectKey, ...result }\n : { path: objectKey, ...result };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AASY,MAAC,YAAY,GAAG,CAAC,KAAK,KAAK;AACvC,IAAI,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE;AACjD,IAAI,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAC5C,QAAQ,GAAG,EAAE,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC;AAC3D,QAAQ,QAAQ,EAAE,CAAC,OAAO,KAAK;AAC/B,YAAY,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC;AAC1C,QAAQ,CAAC;AACT,KAAK,CAAC;AACN,IAAI,OAAO,YAAY;AACvB;AACA,MAAM,eAAe,GAAG,CAAC,iBAAiB,EAAE,WAAW,KAAK,YAAY;AACxE,IAAI,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,iBAAiB;AAC9D,IAAI,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,CAAC;AACjH,IAAI,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,6BAA6B,CAAC,iBAAiB,EAAE,UAAU,CAAC;AACjG,IAAI,qBAAqB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;AACnE,IAAI,MAAM,QAAQ,GAAG,SAAS,KAAK,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS;AACxF,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC3D,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,GAAG,GAAG,MAAM,SAAS,CAAC;AAC7K,QAAQ,GAAG,QAAQ;AACnB,QAAQ,WAAW;AACnB,QAAQ,kBAAkB,EAAE,mBAAmB,EAAE,UAAU;AAC3D,QAAQ,cAAc,EAAE,wBAAwB,CAAC,aAAa,CAAC,YAAY,CAAC;AAC5E,KAAK,EAAE;AACP,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,GAAG,EAAE,QAAQ;AACrB,QAAQ,IAAI,mBAAmB,EAAE,UAAU,IAAI;AAC/C,YAAY,KAAK,EAAE,CAAC,MAAM,EAAE,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACxG,SAAS,CAAC;AACV,QAAQ,oBAAoB,EAAE,mBAAmB,EAAE,YAAY;AAC/D,QAAQ,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB;AACrE,KAAK,CAAC;AACN,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,IAAI;AACZ,QAAQ,YAAY;AACpB,QAAQ,IAAI;AACZ,QAAQ,WAAW;AACnB,QAAQ,IAAI;AACZ,QAAQ,QAAQ;AAChB,QAAQ,SAAS;AACjB,KAAK;AACL,IAAI,OAAO,SAAS,KAAK;AACzB,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM;AACrC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE;AACxC,CAAC;;;;"}
1
+ {"version":3,"file":"downloadData.mjs","sources":["../../../../../../src/providers/s3/apis/internal/downloadData.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { resolveS3ConfigAndInput } from '../../utils/resolveS3ConfigAndInput';\nimport { createDownloadTask, validateBucketOwnerID, validateStorageOperationInput, } from '../../utils';\nimport { getObject } from '../../utils/client/s3data';\nimport { getStorageUserAgentValue } from '../../utils/userAgent';\nimport { logger } from '../../../../utils';\nimport { STORAGE_INPUT_KEY } from '../../utils/constants';\nexport const downloadData = (input) => {\n const abortController = new AbortController();\n const downloadTask = createDownloadTask({\n job: downloadDataJob(input, abortController.signal),\n onCancel: (message) => {\n abortController.abort(message);\n },\n });\n return downloadTask;\n};\nconst downloadDataJob = (downloadDataInput, abortSignal) => async () => {\n const { options: downloadDataOptions } = downloadDataInput;\n const { bucket, keyPrefix, s3Config, identityId } = await resolveS3ConfigAndInput(Amplify, downloadDataInput);\n const { inputType, objectKey } = validateStorageOperationInput(downloadDataInput, identityId);\n validateBucketOwnerID(downloadDataOptions?.expectedBucketOwner);\n const finalKey = inputType === STORAGE_INPUT_KEY ? keyPrefix + objectKey : objectKey;\n logger.debug(`download ${objectKey} from ${finalKey}.`);\n const { Body: body, LastModified: lastModified, ContentLength: size, ETag: eTag, Metadata: metadata, VersionId: versionId, ContentType: contentType, } = await getObject({\n ...s3Config,\n abortSignal,\n onDownloadProgress: downloadDataOptions?.onProgress,\n userAgentValue: getStorageUserAgentValue(StorageAction.DownloadData),\n }, {\n Bucket: bucket,\n Key: finalKey,\n ...(downloadDataOptions?.bytesRange && {\n Range: `bytes=${downloadDataOptions.bytesRange.start}-${downloadDataOptions.bytesRange.end}`,\n }),\n ResponseCacheControl: downloadDataOptions?.cacheControl,\n ExpectedBucketOwner: downloadDataOptions?.expectedBucketOwner,\n });\n const result = {\n body,\n lastModified,\n size,\n contentType,\n eTag,\n metadata,\n versionId,\n };\n return inputType === STORAGE_INPUT_KEY\n ? { key: objectKey, ...result }\n : { path: objectKey, ...result };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AASY,MAAC,YAAY,GAAG,CAAC,KAAK,KAAK;AACvC,IAAI,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE;AACjD,IAAI,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAC5C,QAAQ,GAAG,EAAE,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC;AAC3D,QAAQ,QAAQ,EAAE,CAAC,OAAO,KAAK;AAC/B,YAAY,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC;AAC1C,QAAQ,CAAC;AACT,KAAK,CAAC;AACN,IAAI,OAAO,YAAY;AACvB;AACA,MAAM,eAAe,GAAG,CAAC,iBAAiB,EAAE,WAAW,KAAK,YAAY;AACxE,IAAI,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,iBAAiB;AAC9D,IAAI,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,CAAC;AACjH,IAAI,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,6BAA6B,CAAC,iBAAiB,EAAE,UAAU,CAAC;AACjG,IAAI,qBAAqB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;AACnE,IAAI,MAAM,QAAQ,GAAG,SAAS,KAAK,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS;AACxF,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC3D,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,GAAG,GAAG,MAAM,SAAS,CAAC;AAC7K,QAAQ,GAAG,QAAQ;AACnB,QAAQ,WAAW;AACnB,QAAQ,kBAAkB,EAAE,mBAAmB,EAAE,UAAU;AAC3D,QAAQ,cAAc,EAAE,wBAAwB,CAAC,aAAa,CAAC,YAAY,CAAC;AAC5E,KAAK,EAAE;AACP,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,GAAG,EAAE,QAAQ;AACrB,QAAQ,IAAI,mBAAmB,EAAE,UAAU,IAAI;AAC/C,YAAY,KAAK,EAAE,CAAC,MAAM,EAAE,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACxG,SAAS,CAAC;AACV,QAAQ,oBAAoB,EAAE,mBAAmB,EAAE,YAAY;AAC/D,QAAQ,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB;AACrE,KAAK,CAAC;AACN,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,IAAI;AACZ,QAAQ,YAAY;AACpB,QAAQ,IAAI;AACZ,QAAQ,WAAW;AACnB,QAAQ,IAAI;AACZ,QAAQ,QAAQ;AAChB,QAAQ,SAAS;AACjB,KAAK;AACL,IAAI,OAAO,SAAS,KAAK;AACzB,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM;AACrC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE;AACxC,CAAC;;;;"}
@@ -5,12 +5,6 @@ import '../../utils/client/runtime/s3TransferHandler/fetch.mjs';
5
5
  import 'fast-xml-parser';
6
6
  import '../../utils/client/runtime/s3TransferHandler/xhr.mjs';
7
7
  import 'buffer';
8
- import { resolveS3ConfigAndInput } from '../../utils/resolveS3ConfigAndInput.mjs';
9
- import '../../../../errors/types/validation.mjs';
10
- import { logger } from '../../../../utils/logger.mjs';
11
- import { validateBucketOwnerID } from '../../utils/validateBucketOwnerID.mjs';
12
- import { validateStorageOperationInput } from '../../utils/validateStorageOperationInput.mjs';
13
- import { STORAGE_INPUT_KEY } from '../../utils/constants.mjs';
14
8
  import '../../utils/client/s3data/base.mjs';
15
9
  import '../../utils/client/s3data/getObject.mjs';
16
10
  import '../../utils/client/s3data/listObjectsV2.mjs';
@@ -23,7 +17,14 @@ import '../../utils/client/s3data/abortMultipartUpload.mjs';
23
17
  import '../../utils/client/s3data/copyObject.mjs';
24
18
  import { headObject } from '../../utils/client/s3data/headObject.mjs';
25
19
  import '../../utils/client/s3data/deleteObject.mjs';
20
+ import '../../utils/client/s3data/deleteObjects.mjs';
26
21
  import { getStorageUserAgentValue } from '../../utils/userAgent.mjs';
22
+ import { resolveS3ConfigAndInput } from '../../utils/resolveS3ConfigAndInput.mjs';
23
+ import { STORAGE_INPUT_KEY } from '../../utils/constants.mjs';
24
+ import '../../../../errors/types/validation.mjs';
25
+ import { logger } from '../../../../utils/logger.mjs';
26
+ import { validateBucketOwnerID } from '../../utils/validateBucketOwnerID.mjs';
27
+ import { validateStorageOperationInput } from '../../utils/validateStorageOperationInput.mjs';
27
28
 
28
29
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
29
30
  // SPDX-License-Identifier: Apache-2.0
@@ -1 +1 @@
1
- {"version":3,"file":"getProperties.mjs","sources":["../../../../../../src/providers/s3/apis/internal/getProperties.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { resolveS3ConfigAndInput, validateBucketOwnerID, validateStorageOperationInput, } from '../../utils';\nimport { headObject } from '../../utils/client/s3data';\nimport { getStorageUserAgentValue } from '../../utils/userAgent';\nimport { logger } from '../../../../utils';\nimport { STORAGE_INPUT_KEY } from '../../utils/constants';\nexport const getProperties = async (amplify, input, action) => {\n const { s3Config, bucket, keyPrefix, identityId } = await resolveS3ConfigAndInput(amplify, input);\n const { inputType, objectKey } = validateStorageOperationInput(input, identityId);\n validateBucketOwnerID(input.options?.expectedBucketOwner);\n const finalKey = inputType === STORAGE_INPUT_KEY ? keyPrefix + objectKey : objectKey;\n logger.debug(`get properties of ${objectKey} from ${finalKey}`);\n const response = await headObject({\n ...s3Config,\n userAgentValue: getStorageUserAgentValue(action ?? StorageAction.GetProperties),\n }, {\n Bucket: bucket,\n Key: finalKey,\n ExpectedBucketOwner: input.options?.expectedBucketOwner,\n });\n const result = {\n contentType: response.ContentType,\n size: response.ContentLength,\n eTag: response.ETag,\n lastModified: response.LastModified,\n metadata: response.Metadata,\n versionId: response.VersionId,\n };\n return inputType === STORAGE_INPUT_KEY\n ? { key: objectKey, ...result }\n : { path: objectKey, ...result };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AAOY,MAAC,aAAa,GAAG,OAAO,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK;AAC/D,IAAI,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC;AACrG,IAAI,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,6BAA6B,CAAC,KAAK,EAAE,UAAU,CAAC;AACrF,IAAI,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC;AAC7D,IAAI,MAAM,QAAQ,GAAG,SAAS,KAAK,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS;AACxF,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AACnE,IAAI,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC;AACtC,QAAQ,GAAG,QAAQ;AACnB,QAAQ,cAAc,EAAE,wBAAwB,CAAC,MAAM,IAAI,aAAa,CAAC,aAAa,CAAC;AACvF,KAAK,EAAE;AACP,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,GAAG,EAAE,QAAQ;AACrB,QAAQ,mBAAmB,EAAE,KAAK,CAAC,OAAO,EAAE,mBAAmB;AAC/D,KAAK,CAAC;AACN,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,WAAW,EAAE,QAAQ,CAAC,WAAW;AACzC,QAAQ,IAAI,EAAE,QAAQ,CAAC,aAAa;AACpC,QAAQ,IAAI,EAAE,QAAQ,CAAC,IAAI;AAC3B,QAAQ,YAAY,EAAE,QAAQ,CAAC,YAAY;AAC3C,QAAQ,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AACnC,QAAQ,SAAS,EAAE,QAAQ,CAAC,SAAS;AACrC,KAAK;AACL,IAAI,OAAO,SAAS,KAAK;AACzB,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM;AACrC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE;AACxC;;;;"}
1
+ {"version":3,"file":"getProperties.mjs","sources":["../../../../../../src/providers/s3/apis/internal/getProperties.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { resolveS3ConfigAndInput, validateBucketOwnerID, validateStorageOperationInput, } from '../../utils';\nimport { headObject } from '../../utils/client/s3data';\nimport { getStorageUserAgentValue } from '../../utils/userAgent';\nimport { logger } from '../../../../utils';\nimport { STORAGE_INPUT_KEY } from '../../utils/constants';\nexport const getProperties = async (amplify, input, action) => {\n const { s3Config, bucket, keyPrefix, identityId } = await resolveS3ConfigAndInput(amplify, input);\n const { inputType, objectKey } = validateStorageOperationInput(input, identityId);\n validateBucketOwnerID(input.options?.expectedBucketOwner);\n const finalKey = inputType === STORAGE_INPUT_KEY ? keyPrefix + objectKey : objectKey;\n logger.debug(`get properties of ${objectKey} from ${finalKey}`);\n const response = await headObject({\n ...s3Config,\n userAgentValue: getStorageUserAgentValue(action ?? StorageAction.GetProperties),\n }, {\n Bucket: bucket,\n Key: finalKey,\n ExpectedBucketOwner: input.options?.expectedBucketOwner,\n });\n const result = {\n contentType: response.ContentType,\n size: response.ContentLength,\n eTag: response.ETag,\n lastModified: response.LastModified,\n metadata: response.Metadata,\n versionId: response.VersionId,\n };\n return inputType === STORAGE_INPUT_KEY\n ? { key: objectKey, ...result }\n : { path: objectKey, ...result };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AAOY,MAAC,aAAa,GAAG,OAAO,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK;AAC/D,IAAI,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC;AACrG,IAAI,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,6BAA6B,CAAC,KAAK,EAAE,UAAU,CAAC;AACrF,IAAI,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC;AAC7D,IAAI,MAAM,QAAQ,GAAG,SAAS,KAAK,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS;AACxF,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AACnE,IAAI,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC;AACtC,QAAQ,GAAG,QAAQ;AACnB,QAAQ,cAAc,EAAE,wBAAwB,CAAC,MAAM,IAAI,aAAa,CAAC,aAAa,CAAC;AACvF,KAAK,EAAE;AACP,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,GAAG,EAAE,QAAQ;AACrB,QAAQ,mBAAmB,EAAE,KAAK,CAAC,OAAO,EAAE,mBAAmB;AAC/D,KAAK,CAAC;AACN,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,WAAW,EAAE,QAAQ,CAAC,WAAW;AACzC,QAAQ,IAAI,EAAE,QAAQ,CAAC,aAAa;AACpC,QAAQ,IAAI,EAAE,QAAQ,CAAC,IAAI;AAC3B,QAAQ,YAAY,EAAE,QAAQ,CAAC,YAAY;AAC3C,QAAQ,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AACnC,QAAQ,SAAS,EAAE,QAAQ,CAAC,SAAS;AACrC,KAAK;AACL,IAAI,OAAO,SAAS,KAAK;AACzB,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM;AACrC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE;AACxC;;;;"}
@@ -12,6 +12,7 @@ import '../../utils/client/s3data/abortMultipartUpload.mjs';
12
12
  import '../../utils/client/s3data/copyObject.mjs';
13
13
  import '../../utils/client/s3data/headObject.mjs';
14
14
  import '../../utils/client/s3data/deleteObject.mjs';
15
+ import '../../utils/client/s3data/deleteObjects.mjs';
15
16
  import '@smithy/md5-js';
16
17
  import '@aws-amplify/core/internals/aws-client-utils';
17
18
  import '../../utils/client/runtime/s3TransferHandler/fetch.mjs';
@@ -19,11 +20,11 @@ import 'fast-xml-parser';
19
20
  import '../../utils/client/runtime/s3TransferHandler/xhr.mjs';
20
21
  import 'buffer';
21
22
  import { resolveS3ConfigAndInput } from '../../utils/resolveS3ConfigAndInput.mjs';
23
+ import { DEFAULT_PRESIGN_EXPIRATION, MAX_URL_EXPIRATION, STORAGE_INPUT_KEY } from '../../utils/constants.mjs';
22
24
  import { assertValidationError } from '../../../../errors/utils/assertValidationError.mjs';
23
25
  import '../../../../utils/logger.mjs';
24
26
  import { validateBucketOwnerID } from '../../utils/validateBucketOwnerID.mjs';
25
27
  import { validateStorageOperationInput } from '../../utils/validateStorageOperationInput.mjs';
26
- import { DEFAULT_PRESIGN_EXPIRATION, MAX_URL_EXPIRATION, STORAGE_INPUT_KEY } from '../../utils/constants.mjs';
27
28
  import { constructContentDisposition } from '../../utils/constructContentDisposition.mjs';
28
29
  import { getProperties } from './getProperties.mjs';
29
30
 
@@ -1 +1 @@
1
- {"version":3,"file":"getUrl.mjs","sources":["../../../../../../src/providers/s3/apis/internal/getUrl.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { StorageValidationErrorCode } from '../../../../errors/types/validation';\nimport { getPresignedGetObjectUrl } from '../../utils/client/s3data';\nimport { resolveS3ConfigAndInput, validateBucketOwnerID, validateStorageOperationInput, } from '../../utils';\nimport { assertValidationError } from '../../../../errors/utils/assertValidationError';\nimport { DEFAULT_PRESIGN_EXPIRATION, MAX_URL_EXPIRATION, STORAGE_INPUT_KEY, } from '../../utils/constants';\nimport { constructContentDisposition } from '../../utils/constructContentDisposition';\nimport { getProperties } from './getProperties';\nexport const getUrl = async (amplify, input) => {\n const { options: getUrlOptions } = input;\n const { s3Config, keyPrefix, bucket, identityId } = await resolveS3ConfigAndInput(amplify, input);\n const { inputType, objectKey } = validateStorageOperationInput(input, identityId);\n validateBucketOwnerID(getUrlOptions?.expectedBucketOwner);\n const finalKey = inputType === STORAGE_INPUT_KEY ? keyPrefix + objectKey : objectKey;\n if (getUrlOptions?.validateObjectExistence) {\n await getProperties(amplify, input, StorageAction.GetUrl);\n }\n let urlExpirationInSec = getUrlOptions?.expiresIn ?? DEFAULT_PRESIGN_EXPIRATION;\n const resolvedCredential = typeof s3Config.credentials === 'function'\n ? await s3Config.credentials()\n : s3Config.credentials;\n const awsCredExpiration = resolvedCredential.expiration;\n if (awsCredExpiration) {\n const awsCredExpirationInSec = Math.floor((awsCredExpiration.getTime() - Date.now()) / 1000);\n urlExpirationInSec = Math.min(awsCredExpirationInSec, urlExpirationInSec);\n }\n const maxUrlExpirationInSec = MAX_URL_EXPIRATION / 1000;\n assertValidationError(urlExpirationInSec <= maxUrlExpirationInSec, StorageValidationErrorCode.UrlExpirationMaxLimitExceed);\n // expiresAt is the minimum of credential expiration and url expiration\n return {\n url: await getPresignedGetObjectUrl({\n ...s3Config,\n credentials: resolvedCredential,\n expiration: urlExpirationInSec,\n }, {\n Bucket: bucket,\n Key: finalKey,\n ...(getUrlOptions?.contentDisposition && {\n ResponseContentDisposition: constructContentDisposition(getUrlOptions.contentDisposition),\n }),\n ...(getUrlOptions?.contentType && {\n ResponseContentType: getUrlOptions.contentType,\n }),\n ResponseCacheControl: getUrlOptions?.cacheControl,\n ExpectedBucketOwner: getUrlOptions?.expectedBucketOwner,\n }),\n expiresAt: new Date(Date.now() + urlExpirationInSec * 1000),\n };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AASY,MAAC,MAAM,GAAG,OAAO,OAAO,EAAE,KAAK,KAAK;AAChD,IAAI,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,KAAK;AAC5C,IAAI,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC;AACrG,IAAI,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,6BAA6B,CAAC,KAAK,EAAE,UAAU,CAAC;AACrF,IAAI,qBAAqB,CAAC,aAAa,EAAE,mBAAmB,CAAC;AAC7D,IAAI,MAAM,QAAQ,GAAG,SAAS,KAAK,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS;AACxF,IAAI,IAAI,aAAa,EAAE,uBAAuB,EAAE;AAChD,QAAQ,MAAM,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC;AACjE,IAAI;AACJ,IAAI,IAAI,kBAAkB,GAAG,aAAa,EAAE,SAAS,IAAI,0BAA0B;AACnF,IAAI,MAAM,kBAAkB,GAAG,OAAO,QAAQ,CAAC,WAAW,KAAK;AAC/D,UAAU,MAAM,QAAQ,CAAC,WAAW;AACpC,UAAU,QAAQ,CAAC,WAAW;AAC9B,IAAI,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,UAAU;AAC3D,IAAI,IAAI,iBAAiB,EAAE;AAC3B,QAAQ,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;AACpG,QAAQ,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;AACjF,IAAI;AACJ,IAAI,MAAM,qBAAqB,GAAG,kBAAkB,GAAG,IAAI;AAC3D,IAAI,qBAAqB,CAAC,kBAAkB,IAAI,qBAAqB,EAAE,0BAA0B,CAAC,2BAA2B,CAAC;AAC9H;AACA,IAAI,OAAO;AACX,QAAQ,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC5C,YAAY,GAAG,QAAQ;AACvB,YAAY,WAAW,EAAE,kBAAkB;AAC3C,YAAY,UAAU,EAAE,kBAAkB;AAC1C,SAAS,EAAE;AACX,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,GAAG,EAAE,QAAQ;AACzB,YAAY,IAAI,aAAa,EAAE,kBAAkB,IAAI;AACrD,gBAAgB,0BAA0B,EAAE,2BAA2B,CAAC,aAAa,CAAC,kBAAkB,CAAC;AACzG,aAAa,CAAC;AACd,YAAY,IAAI,aAAa,EAAE,WAAW,IAAI;AAC9C,gBAAgB,mBAAmB,EAAE,aAAa,CAAC,WAAW;AAC9D,aAAa,CAAC;AACd,YAAY,oBAAoB,EAAE,aAAa,EAAE,YAAY;AAC7D,YAAY,mBAAmB,EAAE,aAAa,EAAE,mBAAmB;AACnE,SAAS,CAAC;AACV,QAAQ,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,GAAG,IAAI,CAAC;AACnE,KAAK;AACL;;;;"}
1
+ {"version":3,"file":"getUrl.mjs","sources":["../../../../../../src/providers/s3/apis/internal/getUrl.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { StorageValidationErrorCode } from '../../../../errors/types/validation';\nimport { getPresignedGetObjectUrl } from '../../utils/client/s3data';\nimport { resolveS3ConfigAndInput, validateBucketOwnerID, validateStorageOperationInput, } from '../../utils';\nimport { assertValidationError } from '../../../../errors/utils/assertValidationError';\nimport { DEFAULT_PRESIGN_EXPIRATION, MAX_URL_EXPIRATION, STORAGE_INPUT_KEY, } from '../../utils/constants';\nimport { constructContentDisposition } from '../../utils/constructContentDisposition';\nimport { getProperties } from './getProperties';\nexport const getUrl = async (amplify, input) => {\n const { options: getUrlOptions } = input;\n const { s3Config, keyPrefix, bucket, identityId } = await resolveS3ConfigAndInput(amplify, input);\n const { inputType, objectKey } = validateStorageOperationInput(input, identityId);\n validateBucketOwnerID(getUrlOptions?.expectedBucketOwner);\n const finalKey = inputType === STORAGE_INPUT_KEY ? keyPrefix + objectKey : objectKey;\n if (getUrlOptions?.validateObjectExistence) {\n await getProperties(amplify, input, StorageAction.GetUrl);\n }\n let urlExpirationInSec = getUrlOptions?.expiresIn ?? DEFAULT_PRESIGN_EXPIRATION;\n const resolvedCredential = typeof s3Config.credentials === 'function'\n ? await s3Config.credentials()\n : s3Config.credentials;\n const awsCredExpiration = resolvedCredential.expiration;\n if (awsCredExpiration) {\n const awsCredExpirationInSec = Math.floor((awsCredExpiration.getTime() - Date.now()) / 1000);\n urlExpirationInSec = Math.min(awsCredExpirationInSec, urlExpirationInSec);\n }\n const maxUrlExpirationInSec = MAX_URL_EXPIRATION / 1000;\n assertValidationError(urlExpirationInSec <= maxUrlExpirationInSec, StorageValidationErrorCode.UrlExpirationMaxLimitExceed);\n // expiresAt is the minimum of credential expiration and url expiration\n return {\n url: await getPresignedGetObjectUrl({\n ...s3Config,\n credentials: resolvedCredential,\n expiration: urlExpirationInSec,\n }, {\n Bucket: bucket,\n Key: finalKey,\n ...(getUrlOptions?.contentDisposition && {\n ResponseContentDisposition: constructContentDisposition(getUrlOptions.contentDisposition),\n }),\n ...(getUrlOptions?.contentType && {\n ResponseContentType: getUrlOptions.contentType,\n }),\n ResponseCacheControl: getUrlOptions?.cacheControl,\n ExpectedBucketOwner: getUrlOptions?.expectedBucketOwner,\n }),\n expiresAt: new Date(Date.now() + urlExpirationInSec * 1000),\n };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AASY,MAAC,MAAM,GAAG,OAAO,OAAO,EAAE,KAAK,KAAK;AAChD,IAAI,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,KAAK;AAC5C,IAAI,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC;AACrG,IAAI,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,6BAA6B,CAAC,KAAK,EAAE,UAAU,CAAC;AACrF,IAAI,qBAAqB,CAAC,aAAa,EAAE,mBAAmB,CAAC;AAC7D,IAAI,MAAM,QAAQ,GAAG,SAAS,KAAK,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS;AACxF,IAAI,IAAI,aAAa,EAAE,uBAAuB,EAAE;AAChD,QAAQ,MAAM,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC;AACjE,IAAI;AACJ,IAAI,IAAI,kBAAkB,GAAG,aAAa,EAAE,SAAS,IAAI,0BAA0B;AACnF,IAAI,MAAM,kBAAkB,GAAG,OAAO,QAAQ,CAAC,WAAW,KAAK;AAC/D,UAAU,MAAM,QAAQ,CAAC,WAAW;AACpC,UAAU,QAAQ,CAAC,WAAW;AAC9B,IAAI,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,UAAU;AAC3D,IAAI,IAAI,iBAAiB,EAAE;AAC3B,QAAQ,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;AACpG,QAAQ,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;AACjF,IAAI;AACJ,IAAI,MAAM,qBAAqB,GAAG,kBAAkB,GAAG,IAAI;AAC3D,IAAI,qBAAqB,CAAC,kBAAkB,IAAI,qBAAqB,EAAE,0BAA0B,CAAC,2BAA2B,CAAC;AAC9H;AACA,IAAI,OAAO;AACX,QAAQ,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC5C,YAAY,GAAG,QAAQ;AACvB,YAAY,WAAW,EAAE,kBAAkB;AAC3C,YAAY,UAAU,EAAE,kBAAkB;AAC1C,SAAS,EAAE;AACX,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,GAAG,EAAE,QAAQ;AACzB,YAAY,IAAI,aAAa,EAAE,kBAAkB,IAAI;AACrD,gBAAgB,0BAA0B,EAAE,2BAA2B,CAAC,aAAa,CAAC,kBAAkB,CAAC;AACzG,aAAa,CAAC;AACd,YAAY,IAAI,aAAa,EAAE,WAAW,IAAI;AAC9C,gBAAgB,mBAAmB,EAAE,aAAa,CAAC,WAAW;AAC9D,aAAa,CAAC;AACd,YAAY,oBAAoB,EAAE,aAAa,EAAE,YAAY;AAC7D,YAAY,mBAAmB,EAAE,aAAa,EAAE,mBAAmB;AACnE,SAAS,CAAC;AACV,QAAQ,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,GAAG,IAAI,CAAC;AACnE,KAAK;AACL;;;;"}
@@ -5,13 +5,6 @@ import '../../utils/client/runtime/s3TransferHandler/fetch.mjs';
5
5
  import 'fast-xml-parser';
6
6
  import '../../utils/client/runtime/s3TransferHandler/xhr.mjs';
7
7
  import 'buffer';
8
- import { resolveS3ConfigAndInput } from '../../utils/resolveS3ConfigAndInput.mjs';
9
- import '../../../../errors/types/validation.mjs';
10
- import { logger } from '../../../../utils/logger.mjs';
11
- import { validateBucketOwnerID } from '../../utils/validateBucketOwnerID.mjs';
12
- import { DEFAULT_DELIMITER, STORAGE_INPUT_PREFIX } from '../../utils/constants.mjs';
13
- import { validateStorageOperationInputWithPrefix } from '../../utils/validateStorageOperationInputWithPrefix.mjs';
14
- import { urlDecode } from '../../utils/urlDecoder.mjs';
15
8
  import '../../utils/client/s3data/base.mjs';
16
9
  import '../../utils/client/s3data/getObject.mjs';
17
10
  import { listObjectsV2 } from '../../utils/client/s3data/listObjectsV2.mjs';
@@ -24,7 +17,15 @@ import '../../utils/client/s3data/abortMultipartUpload.mjs';
24
17
  import '../../utils/client/s3data/copyObject.mjs';
25
18
  import '../../utils/client/s3data/headObject.mjs';
26
19
  import '../../utils/client/s3data/deleteObject.mjs';
20
+ import '../../utils/client/s3data/deleteObjects.mjs';
27
21
  import { getStorageUserAgentValue } from '../../utils/userAgent.mjs';
22
+ import { resolveS3ConfigAndInput } from '../../utils/resolveS3ConfigAndInput.mjs';
23
+ import { DEFAULT_DELIMITER, STORAGE_INPUT_PREFIX } from '../../utils/constants.mjs';
24
+ import '../../../../errors/types/validation.mjs';
25
+ import { logger } from '../../../../utils/logger.mjs';
26
+ import { validateBucketOwnerID } from '../../utils/validateBucketOwnerID.mjs';
27
+ import { validateStorageOperationInputWithPrefix } from '../../utils/validateStorageOperationInputWithPrefix.mjs';
28
+ import { urlDecode } from '../../utils/urlDecoder.mjs';
28
29
  import { IntegrityError } from '../../../../errors/IntegrityError.mjs';
29
30
 
30
31
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
@@ -1 +1 @@
1
- {"version":3,"file":"list.mjs","sources":["../../../../../../src/providers/s3/apis/internal/list.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { resolveS3ConfigAndInput, urlDecode, validateBucketOwnerID, validateStorageOperationInputWithPrefix, } from '../../utils';\nimport { listObjectsV2, } from '../../utils/client/s3data';\nimport { getStorageUserAgentValue } from '../../utils/userAgent';\nimport { logger } from '../../../../utils';\nimport { DEFAULT_DELIMITER, STORAGE_INPUT_PREFIX } from '../../utils/constants';\nimport { IntegrityError } from '../../../../errors/IntegrityError';\nconst MAX_PAGE_SIZE = 1000;\nexport const list = async (amplify, input) => {\n const { options = {} } = input;\n const { s3Config, bucket, keyPrefix: generatedPrefix, identityId, } = await resolveS3ConfigAndInput(amplify, input);\n const { inputType, objectKey } = validateStorageOperationInputWithPrefix(input, identityId);\n validateBucketOwnerID(options.expectedBucketOwner);\n const isInputWithPrefix = inputType === STORAGE_INPUT_PREFIX;\n // @ts-expect-error pageSize and nextToken should not coexist with listAll\n if (options?.listAll && (options?.pageSize || options?.nextToken)) {\n const anyOptions = options;\n logger.debug(`listAll is set to true, ignoring ${anyOptions?.pageSize ? `pageSize: ${anyOptions?.pageSize}` : ''} ${anyOptions?.nextToken ? `nextToken: ${anyOptions?.nextToken}` : ''}.`);\n }\n const listParams = {\n Bucket: bucket,\n Prefix: isInputWithPrefix ? `${generatedPrefix}${objectKey}` : objectKey,\n MaxKeys: options?.listAll ? undefined : options?.pageSize,\n ContinuationToken: options?.listAll ? undefined : options?.nextToken,\n Delimiter: getDelimiter(options),\n ExpectedBucketOwner: options?.expectedBucketOwner,\n EncodingType: 'url',\n };\n logger.debug(`listing items from \"${listParams.Prefix}\"`);\n const listInputArgs = {\n s3Config,\n listParams,\n };\n if (options.listAll) {\n if (isInputWithPrefix) {\n return _listAllWithPrefix({\n ...listInputArgs,\n generatedPrefix,\n });\n }\n else {\n return _listAllWithPath(listInputArgs);\n }\n }\n else {\n if (isInputWithPrefix) {\n return _listWithPrefix({ ...listInputArgs, generatedPrefix });\n }\n else {\n return _listWithPath(listInputArgs);\n }\n }\n};\n/** @deprecated Use {@link _listAllWithPath} instead. */\nconst _listAllWithPrefix = async ({ s3Config, listParams, generatedPrefix, }) => {\n const listResult = [];\n let continuationToken = listParams.ContinuationToken;\n do {\n const { items: pageResults, nextToken: pageNextToken } = await _listWithPrefix({\n generatedPrefix,\n s3Config,\n listParams: {\n ...listParams,\n ContinuationToken: continuationToken,\n MaxKeys: MAX_PAGE_SIZE,\n },\n });\n listResult.push(...pageResults);\n continuationToken = pageNextToken;\n } while (continuationToken);\n return {\n items: listResult,\n };\n};\n/** @deprecated Use {@link _listWithPath} instead. */\nconst _listWithPrefix = async ({ s3Config, listParams, generatedPrefix, }) => {\n const listParamsClone = { ...listParams };\n if (!listParamsClone.MaxKeys || listParamsClone.MaxKeys > MAX_PAGE_SIZE) {\n logger.debug(`defaulting pageSize to ${MAX_PAGE_SIZE}.`);\n listParamsClone.MaxKeys = MAX_PAGE_SIZE;\n }\n const response = await listObjectsV2({\n ...s3Config,\n userAgentValue: getStorageUserAgentValue(StorageAction.List),\n }, listParamsClone);\n const listOutput = decodeEncodedElements(response);\n validateEchoedElements(listParamsClone, listOutput);\n if (!listOutput?.Contents) {\n return {\n items: [],\n };\n }\n return {\n items: listOutput.Contents.map(item => ({\n key: generatedPrefix\n ? item.Key.substring(generatedPrefix.length)\n : item.Key,\n eTag: item.ETag,\n lastModified: item.LastModified,\n size: item.Size,\n })),\n nextToken: listOutput.NextContinuationToken,\n };\n};\nconst _listAllWithPath = async ({ s3Config, listParams, }) => {\n const listResult = [];\n const excludedSubpaths = [];\n let continuationToken = listParams.ContinuationToken;\n do {\n const { items: pageResults, excludedSubpaths: pageExcludedSubpaths, nextToken: pageNextToken, } = await _listWithPath({\n s3Config,\n listParams: {\n ...listParams,\n ContinuationToken: continuationToken,\n MaxKeys: MAX_PAGE_SIZE,\n },\n });\n listResult.push(...pageResults);\n excludedSubpaths.push(...(pageExcludedSubpaths ?? []));\n continuationToken = pageNextToken;\n } while (continuationToken);\n return {\n items: listResult,\n excludedSubpaths,\n };\n};\nconst _listWithPath = async ({ s3Config, listParams, }) => {\n const listParamsClone = { ...listParams };\n if (!listParamsClone.MaxKeys || listParamsClone.MaxKeys > MAX_PAGE_SIZE) {\n logger.debug(`defaulting pageSize to ${MAX_PAGE_SIZE}.`);\n listParamsClone.MaxKeys = MAX_PAGE_SIZE;\n }\n const response = await listObjectsV2({\n ...s3Config,\n userAgentValue: getStorageUserAgentValue(StorageAction.List),\n }, listParamsClone);\n const listOutput = decodeEncodedElements(response);\n validateEchoedElements(listParamsClone, listOutput);\n const { Contents: contents, NextContinuationToken: nextContinuationToken, CommonPrefixes: commonPrefixes, } = listOutput;\n const excludedSubpaths = commonPrefixes && mapCommonPrefixesToExcludedSubpaths(commonPrefixes);\n if (!contents) {\n return {\n items: [],\n nextToken: nextContinuationToken,\n excludedSubpaths,\n };\n }\n return {\n items: contents.map(item => ({\n path: item.Key,\n eTag: item.ETag,\n lastModified: item.LastModified,\n size: item.Size,\n })),\n nextToken: nextContinuationToken,\n excludedSubpaths,\n };\n};\nconst mapCommonPrefixesToExcludedSubpaths = (commonPrefixes) => {\n return commonPrefixes.reduce((mappedSubpaths, { Prefix }) => {\n if (Prefix) {\n mappedSubpaths.push(Prefix);\n }\n return mappedSubpaths;\n }, []);\n};\nconst getDelimiter = (options) => {\n if (options?.subpathStrategy?.strategy === 'exclude') {\n return options?.subpathStrategy?.delimiter ?? DEFAULT_DELIMITER;\n }\n};\nconst validateEchoedElements = (listInput, listOutput) => {\n const validEchoedParameters = listInput.Bucket === listOutput.Name &&\n listInput.Delimiter === listOutput.Delimiter &&\n listInput.MaxKeys === listOutput.MaxKeys &&\n listInput.Prefix === listOutput.Prefix &&\n listInput.ContinuationToken === listOutput.ContinuationToken;\n if (!validEchoedParameters) {\n throw new IntegrityError({ metadata: listOutput.$metadata });\n }\n};\n/**\n * Decodes URL-encoded elements in the S3 `ListObjectsV2Output` response when `EncodingType` is `'url'`.\n * Applies to values for 'Delimiter', 'Prefix', 'StartAfter' and 'Key' in the response.\n */\nconst decodeEncodedElements = (listOutput) => {\n if (listOutput.EncodingType !== 'url') {\n return listOutput;\n }\n const decodedListOutput = { ...listOutput };\n // Decode top-level properties\n ['Delimiter', 'Prefix', 'StartAfter'].forEach(prop => {\n const value = listOutput[prop];\n if (typeof value === 'string') {\n decodedListOutput[prop] = urlDecode(value);\n }\n });\n // Decode 'Key' in each item of 'Contents', if it exists\n if (listOutput.Contents) {\n decodedListOutput.Contents = listOutput.Contents.map(content => ({\n ...content,\n Key: content.Key ? urlDecode(content.Key) : content.Key,\n }));\n }\n // Decode 'Prefix' in each item of 'CommonPrefixes', if it exists\n if (listOutput.CommonPrefixes) {\n decodedListOutput.CommonPrefixes = listOutput.CommonPrefixes.map(content => ({\n ...content,\n Prefix: content.Prefix ? urlDecode(content.Prefix) : content.Prefix,\n }));\n }\n return decodedListOutput;\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.mjs","sources":["../../../../../../src/providers/s3/apis/internal/list.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { resolveS3ConfigAndInput, urlDecode, validateBucketOwnerID, validateStorageOperationInputWithPrefix, } from '../../utils';\nimport { listObjectsV2, } from '../../utils/client/s3data';\nimport { getStorageUserAgentValue } from '../../utils/userAgent';\nimport { logger } from '../../../../utils';\nimport { DEFAULT_DELIMITER, STORAGE_INPUT_PREFIX } from '../../utils/constants';\nimport { IntegrityError } from '../../../../errors/IntegrityError';\nconst MAX_PAGE_SIZE = 1000;\nexport const list = async (amplify, input) => {\n const { options = {} } = input;\n const { s3Config, bucket, keyPrefix: generatedPrefix, identityId, } = await resolveS3ConfigAndInput(amplify, input);\n const { inputType, objectKey } = validateStorageOperationInputWithPrefix(input, identityId);\n validateBucketOwnerID(options.expectedBucketOwner);\n const isInputWithPrefix = inputType === STORAGE_INPUT_PREFIX;\n // @ts-expect-error pageSize and nextToken should not coexist with listAll\n if (options?.listAll && (options?.pageSize || options?.nextToken)) {\n const anyOptions = options;\n logger.debug(`listAll is set to true, ignoring ${anyOptions?.pageSize ? `pageSize: ${anyOptions?.pageSize}` : ''} ${anyOptions?.nextToken ? `nextToken: ${anyOptions?.nextToken}` : ''}.`);\n }\n const listParams = {\n Bucket: bucket,\n Prefix: isInputWithPrefix ? `${generatedPrefix}${objectKey}` : objectKey,\n MaxKeys: options?.listAll ? undefined : options?.pageSize,\n ContinuationToken: options?.listAll ? undefined : options?.nextToken,\n Delimiter: getDelimiter(options),\n ExpectedBucketOwner: options?.expectedBucketOwner,\n EncodingType: 'url',\n };\n logger.debug(`listing items from \"${listParams.Prefix}\"`);\n const listInputArgs = {\n s3Config,\n listParams,\n };\n if (options.listAll) {\n if (isInputWithPrefix) {\n return _listAllWithPrefix({\n ...listInputArgs,\n generatedPrefix,\n });\n }\n else {\n return _listAllWithPath(listInputArgs);\n }\n }\n else {\n if (isInputWithPrefix) {\n return _listWithPrefix({ ...listInputArgs, generatedPrefix });\n }\n else {\n return _listWithPath(listInputArgs);\n }\n }\n};\n/** @deprecated Use {@link _listAllWithPath} instead. */\nconst _listAllWithPrefix = async ({ s3Config, listParams, generatedPrefix, }) => {\n const listResult = [];\n let continuationToken = listParams.ContinuationToken;\n do {\n const { items: pageResults, nextToken: pageNextToken } = await _listWithPrefix({\n generatedPrefix,\n s3Config,\n listParams: {\n ...listParams,\n ContinuationToken: continuationToken,\n MaxKeys: MAX_PAGE_SIZE,\n },\n });\n listResult.push(...pageResults);\n continuationToken = pageNextToken;\n } while (continuationToken);\n return {\n items: listResult,\n };\n};\n/** @deprecated Use {@link _listWithPath} instead. */\nconst _listWithPrefix = async ({ s3Config, listParams, generatedPrefix, }) => {\n const listParamsClone = { ...listParams };\n if (!listParamsClone.MaxKeys || listParamsClone.MaxKeys > MAX_PAGE_SIZE) {\n logger.debug(`defaulting pageSize to ${MAX_PAGE_SIZE}.`);\n listParamsClone.MaxKeys = MAX_PAGE_SIZE;\n }\n const response = await listObjectsV2({\n ...s3Config,\n userAgentValue: getStorageUserAgentValue(StorageAction.List),\n }, listParamsClone);\n const listOutput = decodeEncodedElements(response);\n validateEchoedElements(listParamsClone, listOutput);\n if (!listOutput?.Contents) {\n return {\n items: [],\n };\n }\n return {\n items: listOutput.Contents.map(item => ({\n key: generatedPrefix\n ? item.Key.substring(generatedPrefix.length)\n : item.Key,\n eTag: item.ETag,\n lastModified: item.LastModified,\n size: item.Size,\n })),\n nextToken: listOutput.NextContinuationToken,\n };\n};\nconst _listAllWithPath = async ({ s3Config, listParams, }) => {\n const listResult = [];\n const excludedSubpaths = [];\n let continuationToken = listParams.ContinuationToken;\n do {\n const { items: pageResults, excludedSubpaths: pageExcludedSubpaths, nextToken: pageNextToken, } = await _listWithPath({\n s3Config,\n listParams: {\n ...listParams,\n ContinuationToken: continuationToken,\n MaxKeys: MAX_PAGE_SIZE,\n },\n });\n listResult.push(...pageResults);\n excludedSubpaths.push(...(pageExcludedSubpaths ?? []));\n continuationToken = pageNextToken;\n } while (continuationToken);\n return {\n items: listResult,\n excludedSubpaths,\n };\n};\nconst _listWithPath = async ({ s3Config, listParams, }) => {\n const listParamsClone = { ...listParams };\n if (!listParamsClone.MaxKeys || listParamsClone.MaxKeys > MAX_PAGE_SIZE) {\n logger.debug(`defaulting pageSize to ${MAX_PAGE_SIZE}.`);\n listParamsClone.MaxKeys = MAX_PAGE_SIZE;\n }\n const response = await listObjectsV2({\n ...s3Config,\n userAgentValue: getStorageUserAgentValue(StorageAction.List),\n }, listParamsClone);\n const listOutput = decodeEncodedElements(response);\n validateEchoedElements(listParamsClone, listOutput);\n const { Contents: contents, NextContinuationToken: nextContinuationToken, CommonPrefixes: commonPrefixes, } = listOutput;\n const excludedSubpaths = commonPrefixes && mapCommonPrefixesToExcludedSubpaths(commonPrefixes);\n if (!contents) {\n return {\n items: [],\n nextToken: nextContinuationToken,\n excludedSubpaths,\n };\n }\n return {\n items: contents.map(item => ({\n path: item.Key,\n eTag: item.ETag,\n lastModified: item.LastModified,\n size: item.Size,\n })),\n nextToken: nextContinuationToken,\n excludedSubpaths,\n };\n};\nconst mapCommonPrefixesToExcludedSubpaths = (commonPrefixes) => {\n return commonPrefixes.reduce((mappedSubpaths, { Prefix }) => {\n if (Prefix) {\n mappedSubpaths.push(Prefix);\n }\n return mappedSubpaths;\n }, []);\n};\nconst getDelimiter = (options) => {\n if (options?.subpathStrategy?.strategy === 'exclude') {\n return options?.subpathStrategy?.delimiter ?? DEFAULT_DELIMITER;\n }\n};\nconst validateEchoedElements = (listInput, listOutput) => {\n const validEchoedParameters = listInput.Bucket === listOutput.Name &&\n listInput.Delimiter === listOutput.Delimiter &&\n listInput.MaxKeys === listOutput.MaxKeys &&\n listInput.Prefix === listOutput.Prefix &&\n listInput.ContinuationToken === listOutput.ContinuationToken;\n if (!validEchoedParameters) {\n throw new IntegrityError({ metadata: listOutput.$metadata });\n }\n};\n/**\n * Decodes URL-encoded elements in the S3 `ListObjectsV2Output` response when `EncodingType` is `'url'`.\n * Applies to values for 'Delimiter', 'Prefix', 'StartAfter' and 'Key' in the response.\n */\nconst decodeEncodedElements = (listOutput) => {\n if (listOutput.EncodingType !== 'url') {\n return listOutput;\n }\n const decodedListOutput = { ...listOutput };\n // Decode top-level properties\n ['Delimiter', 'Prefix', 'StartAfter'].forEach(prop => {\n const value = listOutput[prop];\n if (typeof value === 'string') {\n decodedListOutput[prop] = urlDecode(value);\n }\n });\n // Decode 'Key' in each item of 'Contents', if it exists\n if (listOutput.Contents) {\n decodedListOutput.Contents = listOutput.Contents.map(content => ({\n ...content,\n Key: content.Key ? urlDecode(content.Key) : content.Key,\n }));\n }\n // Decode 'Prefix' in each item of 'CommonPrefixes', if it exists\n if (listOutput.CommonPrefixes) {\n decodedListOutput.CommonPrefixes = listOutput.CommonPrefixes.map(content => ({\n ...content,\n Prefix: content.Prefix ? urlDecode(content.Prefix) : content.Prefix,\n }));\n }\n return decodedListOutput;\n};\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { AmplifyClassV6 } from '@aws-amplify/core';
2
- import { RemoveInput, RemoveOutput, RemoveWithPathOutput } from '../../types';
2
+ import { RemoveInput, RemoveOperation, RemoveOutput, RemoveWithPathOutput } from '../../types';
3
3
  import { RemoveInput as RemoveWithPathInputWithAdvancedOptions } from '../../../../internals';
4
- export declare const remove: (amplify: AmplifyClassV6, input: RemoveInput | RemoveWithPathInputWithAdvancedOptions) => Promise<RemoveOutput | RemoveWithPathOutput>;
4
+ export declare function remove(amplify: AmplifyClassV6, input: RemoveInput): RemoveOperation<RemoveOutput>;
5
+ export declare function remove(amplify: AmplifyClassV6, input: RemoveWithPathInputWithAdvancedOptions): RemoveOperation<RemoveWithPathOutput>;