@aws-amplify/storage 6.0.28 → 6.0.29-gen2-storage.e54bfa9.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.
- package/dist/cjs/errors/types/validation.js +22 -2
- package/dist/cjs/errors/types/validation.js.map +1 -1
- package/dist/cjs/providers/s3/apis/copy.js +2 -12
- package/dist/cjs/providers/s3/apis/copy.js.map +1 -1
- package/dist/cjs/providers/s3/apis/downloadData.js +13 -38
- package/dist/cjs/providers/s3/apis/downloadData.js.map +1 -1
- package/dist/cjs/providers/s3/apis/getProperties.js +2 -11
- package/dist/cjs/providers/s3/apis/getProperties.js.map +1 -1
- package/dist/cjs/providers/s3/apis/getUrl.js +2 -18
- package/dist/cjs/providers/s3/apis/getUrl.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/copy.js +41 -7
- package/dist/cjs/providers/s3/apis/internal/copy.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/getProperties.js +10 -6
- package/dist/cjs/providers/s3/apis/internal/getProperties.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/getUrl.js +8 -6
- package/dist/cjs/providers/s3/apis/internal/getUrl.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/list.js +86 -16
- package/dist/cjs/providers/s3/apis/internal/list.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/remove.js +20 -7
- package/dist/cjs/providers/s3/apis/internal/remove.js.map +1 -1
- package/dist/cjs/providers/s3/apis/list.js +4 -4
- package/dist/cjs/providers/s3/apis/list.js.map +1 -1
- package/dist/cjs/providers/s3/apis/remove.js +2 -9
- package/dist/cjs/providers/s3/apis/remove.js.map +1 -1
- package/dist/cjs/providers/s3/apis/server/copy.js +4 -4
- package/dist/cjs/providers/s3/apis/server/copy.js.map +1 -1
- package/dist/cjs/providers/s3/apis/server/getProperties.js +2 -2
- package/dist/cjs/providers/s3/apis/server/getProperties.js.map +1 -1
- package/dist/cjs/providers/s3/apis/server/getUrl.js +2 -2
- package/dist/cjs/providers/s3/apis/server/getUrl.js.map +1 -1
- package/dist/cjs/providers/s3/apis/server/list.js +4 -4
- package/dist/cjs/providers/s3/apis/server/list.js.map +1 -1
- package/dist/cjs/providers/s3/apis/server/remove.js +2 -2
- package/dist/cjs/providers/s3/apis/server/remove.js.map +1 -1
- package/dist/cjs/providers/s3/apis/uploadData/index.js +4 -50
- package/dist/cjs/providers/s3/apis/uploadData/index.js.map +1 -1
- package/dist/cjs/providers/s3/apis/uploadData/multipart/initialUpload.js +1 -1
- package/dist/cjs/providers/s3/apis/uploadData/multipart/initialUpload.js.map +1 -1
- package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadCache.js +8 -1
- package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadCache.js.map +1 -1
- package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadHandlers.js +28 -13
- package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadHandlers.js.map +1 -1
- package/dist/cjs/providers/s3/apis/uploadData/putObjectJob.js +10 -5
- package/dist/cjs/providers/s3/apis/uploadData/putObjectJob.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/utils/parsePayload.js +1 -1
- package/dist/cjs/providers/s3/utils/client/utils/parsePayload.js.map +1 -1
- package/dist/cjs/providers/s3/utils/constants.js +4 -1
- package/dist/cjs/providers/s3/utils/constants.js.map +1 -1
- package/dist/cjs/providers/s3/utils/index.js +7 -1
- package/dist/cjs/providers/s3/utils/index.js.map +1 -1
- package/dist/cjs/providers/s3/utils/isInputWithPath.js +11 -0
- package/dist/cjs/providers/s3/utils/isInputWithPath.js.map +1 -0
- package/dist/cjs/providers/s3/utils/resolveS3ConfigAndInput.js +2 -1
- package/dist/cjs/providers/s3/utils/resolveS3ConfigAndInput.js.map +1 -1
- package/dist/cjs/providers/s3/utils/validateStorageOperationInput.js +31 -0
- package/dist/cjs/providers/s3/utils/validateStorageOperationInput.js.map +1 -0
- package/dist/cjs/providers/s3/utils/validateStorageOperationInputWithPrefix.js +32 -0
- package/dist/cjs/providers/s3/utils/validateStorageOperationInputWithPrefix.js.map +1 -0
- package/dist/esm/errors/types/validation.d.ts +7 -2
- package/dist/esm/errors/types/validation.mjs +22 -2
- package/dist/esm/errors/types/validation.mjs.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/providers/s3/apis/copy.d.ts +22 -9
- package/dist/esm/providers/s3/apis/copy.mjs +2 -12
- package/dist/esm/providers/s3/apis/copy.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/downloadData.d.ts +41 -7
- package/dist/esm/providers/s3/apis/downloadData.mjs +15 -39
- package/dist/esm/providers/s3/apis/downloadData.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/getProperties.d.ts +18 -5
- package/dist/esm/providers/s3/apis/getProperties.mjs +2 -11
- package/dist/esm/providers/s3/apis/getProperties.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/getUrl.d.ts +27 -7
- package/dist/esm/providers/s3/apis/getUrl.mjs +2 -18
- package/dist/esm/providers/s3/apis/getUrl.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/copy.d.ts +4 -2
- package/dist/esm/providers/s3/apis/internal/copy.mjs +41 -6
- package/dist/esm/providers/s3/apis/internal/copy.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/getProperties.d.ts +2 -2
- package/dist/esm/providers/s3/apis/internal/getProperties.mjs +11 -6
- package/dist/esm/providers/s3/apis/internal/getProperties.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/getUrl.d.ts +2 -2
- package/dist/esm/providers/s3/apis/internal/getUrl.mjs +10 -7
- package/dist/esm/providers/s3/apis/internal/getUrl.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/list.d.ts +2 -2
- package/dist/esm/providers/s3/apis/internal/list.mjs +87 -16
- package/dist/esm/providers/s3/apis/internal/list.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/remove.d.ts +2 -2
- package/dist/esm/providers/s3/apis/internal/remove.mjs +21 -7
- package/dist/esm/providers/s3/apis/internal/remove.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/list.d.ts +39 -22
- package/dist/esm/providers/s3/apis/list.mjs +2 -2
- package/dist/esm/providers/s3/apis/list.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/remove.d.ts +18 -5
- package/dist/esm/providers/s3/apis/remove.mjs +2 -9
- package/dist/esm/providers/s3/apis/remove.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/server/copy.d.ts +27 -2
- package/dist/esm/providers/s3/apis/server/copy.mjs +2 -2
- package/dist/esm/providers/s3/apis/server/copy.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/server/getProperties.d.ts +26 -2
- package/dist/esm/providers/s3/apis/server/getProperties.mjs +2 -2
- package/dist/esm/providers/s3/apis/server/getProperties.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/server/getUrl.d.ts +40 -2
- package/dist/esm/providers/s3/apis/server/getUrl.mjs +2 -2
- package/dist/esm/providers/s3/apis/server/getUrl.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/server/list.d.ts +41 -22
- package/dist/esm/providers/s3/apis/server/list.mjs +2 -2
- package/dist/esm/providers/s3/apis/server/list.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/server/remove.d.ts +24 -2
- package/dist/esm/providers/s3/apis/server/remove.mjs +2 -2
- package/dist/esm/providers/s3/apis/server/remove.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/uploadData/index.d.ts +64 -7
- package/dist/esm/providers/s3/apis/uploadData/index.mjs +4 -50
- package/dist/esm/providers/s3/apis/uploadData/index.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.d.ts +2 -2
- package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.mjs +1 -1
- package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.d.ts +1 -1
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.mjs +8 -1
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.d.ts +4 -4
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.mjs +30 -14
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/uploadData/putObjectJob.d.ts +3 -3
- package/dist/esm/providers/s3/apis/uploadData/putObjectJob.mjs +11 -5
- package/dist/esm/providers/s3/apis/uploadData/putObjectJob.mjs.map +1 -1
- package/dist/esm/providers/s3/index.d.ts +2 -2
- package/dist/esm/providers/s3/types/index.d.ts +3 -3
- package/dist/esm/providers/s3/types/inputs.d.ts +51 -11
- package/dist/esm/providers/s3/types/options.d.ts +41 -10
- package/dist/esm/providers/s3/types/outputs.d.ts +68 -13
- package/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs +1 -1
- package/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/constants.d.ts +3 -0
- package/dist/esm/providers/s3/utils/constants.mjs +4 -1
- package/dist/esm/providers/s3/utils/constants.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/index.d.ts +3 -0
- package/dist/esm/providers/s3/utils/index.mjs +3 -0
- package/dist/esm/providers/s3/utils/index.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/isInputWithPath.d.ts +2 -0
- package/dist/esm/providers/s3/utils/isInputWithPath.mjs +8 -0
- package/dist/esm/providers/s3/utils/isInputWithPath.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.d.ts +2 -1
- package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs +2 -1
- package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/validateStorageOperationInput.d.ts +5 -0
- package/dist/esm/providers/s3/utils/validateStorageOperationInput.mjs +29 -0
- package/dist/esm/providers/s3/utils/validateStorageOperationInput.mjs.map +1 -0
- package/dist/esm/providers/s3/utils/validateStorageOperationInputWithPrefix.d.ts +5 -0
- package/dist/esm/providers/s3/utils/validateStorageOperationInputWithPrefix.mjs +30 -0
- package/dist/esm/providers/s3/utils/validateStorageOperationInputWithPrefix.mjs.map +1 -0
- package/dist/esm/types/index.d.ts +2 -2
- package/dist/esm/types/inputs.d.ts +41 -13
- package/dist/esm/types/options.d.ts +1 -0
- package/dist/esm/types/outputs.d.ts +26 -6
- package/package.json +107 -107
- package/src/errors/types/validation.ts +23 -2
- package/src/index.ts +16 -0
- package/src/providers/s3/apis/copy.ts +30 -11
- package/src/providers/s3/apis/downloadData.ts +78 -19
- package/src/providers/s3/apis/getProperties.ts +31 -8
- package/src/providers/s3/apis/getUrl.ts +37 -10
- package/src/providers/s3/apis/internal/copy.ts +89 -8
- package/src/providers/s3/apis/internal/getProperties.ts +27 -12
- package/src/providers/s3/apis/internal/getUrl.ts +28 -14
- package/src/providers/s3/apis/internal/list.ts +135 -29
- package/src/providers/s3/apis/internal/remove.ts +36 -13
- package/src/providers/s3/apis/list.ts +54 -26
- package/src/providers/s3/apis/remove.ts +28 -7
- package/src/providers/s3/apis/server/copy.ts +42 -5
- package/src/providers/s3/apis/server/getProperties.ts +41 -4
- package/src/providers/s3/apis/server/getUrl.ts +55 -4
- package/src/providers/s3/apis/server/list.ts +64 -32
- package/src/providers/s3/apis/server/remove.ts +39 -4
- package/src/providers/s3/apis/uploadData/index.ts +77 -8
- package/src/providers/s3/apis/uploadData/multipart/initialUpload.ts +4 -3
- package/src/providers/s3/apis/uploadData/multipart/uploadCache.ts +11 -2
- package/src/providers/s3/apis/uploadData/multipart/uploadHandlers.ts +50 -20
- package/src/providers/s3/apis/uploadData/putObjectJob.ts +23 -9
- package/src/providers/s3/index.ts +16 -0
- package/src/providers/s3/types/index.ts +37 -14
- package/src/providers/s3/types/inputs.ts +95 -26
- package/src/providers/s3/types/options.ts +73 -27
- package/src/providers/s3/types/outputs.ts +80 -13
- package/src/providers/s3/utils/client/utils/parsePayload.ts +1 -1
- package/src/providers/s3/utils/constants.ts +4 -0
- package/src/providers/s3/utils/index.ts +3 -0
- package/src/providers/s3/utils/isInputWithPath.ts +13 -0
- package/src/providers/s3/utils/resolveS3ConfigAndInput.ts +3 -2
- package/src/providers/s3/utils/validateStorageOperationInput.ts +39 -0
- package/src/providers/s3/utils/validateStorageOperationInputWithPrefix.ts +46 -0
- package/src/types/index.ts +16 -8
- package/src/types/inputs.ts +73 -20
- package/src/types/options.ts +1 -0
- package/src/types/outputs.ts +29 -6
|
@@ -11,7 +11,8 @@ import { resolveS3ConfigAndInput } from '../../../utils/resolveS3ConfigAndInput.
|
|
|
11
11
|
import { CanceledError } from '../../../../../errors/CanceledError.mjs';
|
|
12
12
|
import '../../../../../errors/types/validation.mjs';
|
|
13
13
|
import { logger } from '../../../../../utils/logger.mjs';
|
|
14
|
-
import {
|
|
14
|
+
import { validateStorageOperationInput } from '../../../utils/validateStorageOperationInput.mjs';
|
|
15
|
+
import { STORAGE_INPUT_KEY, DEFAULT_QUEUE_SIZE, DEFAULT_ACCESS_LEVEL } from '../../../utils/constants.mjs';
|
|
15
16
|
import '../../../utils/client/base.mjs';
|
|
16
17
|
import '../../../utils/client/getObject.mjs';
|
|
17
18
|
import '../../../utils/client/listObjectsV2.mjs';
|
|
@@ -39,34 +40,48 @@ import { getDataChunker } from './getDataChunker.mjs';
|
|
|
39
40
|
*
|
|
40
41
|
* @internal
|
|
41
42
|
*/
|
|
42
|
-
const getMultipartUploadHandlers = (
|
|
43
|
+
const getMultipartUploadHandlers = (uploadDataInput, size) => {
|
|
43
44
|
let resolveCallback;
|
|
44
45
|
let rejectCallback;
|
|
45
46
|
let inProgressUpload;
|
|
46
47
|
let resolvedS3Config;
|
|
47
48
|
let abortController;
|
|
49
|
+
let resolvedAccessLevel;
|
|
48
50
|
let resolvedBucket;
|
|
49
51
|
let resolvedKeyPrefix;
|
|
52
|
+
let resolvedIdentityId;
|
|
50
53
|
let uploadCacheKey;
|
|
54
|
+
let finalKey;
|
|
51
55
|
// Special flag that differentiates HTTP requests abort error caused by pause() from ones caused by cancel().
|
|
52
56
|
// The former one should NOT cause the upload job to throw, but cancels any pending HTTP requests.
|
|
53
57
|
// This should be replaced by a special abort reason. However,the support of this API is lagged behind.
|
|
54
58
|
let isAbortSignalFromPause = false;
|
|
55
59
|
const startUpload = async () => {
|
|
60
|
+
const { options: uploadDataOptions, data } = uploadDataInput;
|
|
56
61
|
const resolvedS3Options = await resolveS3ConfigAndInput(Amplify, uploadDataOptions);
|
|
57
|
-
resolvedS3Config = resolvedS3Options.s3Config;
|
|
58
|
-
resolvedBucket = resolvedS3Options.bucket;
|
|
59
|
-
resolvedKeyPrefix = resolvedS3Options.keyPrefix;
|
|
60
62
|
abortController = new AbortController();
|
|
61
63
|
isAbortSignalFromPause = false;
|
|
62
|
-
|
|
64
|
+
resolvedS3Config = resolvedS3Options.s3Config;
|
|
65
|
+
resolvedBucket = resolvedS3Options.bucket;
|
|
66
|
+
resolvedIdentityId = resolvedS3Options.identityId;
|
|
67
|
+
const { inputType, objectKey } = validateStorageOperationInput(uploadDataInput, resolvedIdentityId);
|
|
68
|
+
const { contentDisposition, contentEncoding, contentType = 'application/octet-stream', metadata, onProgress, } = uploadDataOptions ?? {};
|
|
69
|
+
finalKey = objectKey;
|
|
70
|
+
// Resolve "key" specific options
|
|
71
|
+
if (inputType === STORAGE_INPUT_KEY) {
|
|
72
|
+
const accessLevel = uploadDataOptions
|
|
73
|
+
?.accessLevel;
|
|
74
|
+
resolvedKeyPrefix = resolvedS3Options.keyPrefix;
|
|
75
|
+
finalKey = resolvedKeyPrefix + objectKey;
|
|
76
|
+
resolvedAccessLevel = resolveAccessLevel(accessLevel);
|
|
77
|
+
}
|
|
63
78
|
if (!inProgressUpload) {
|
|
64
79
|
const { uploadId, cachedParts } = await loadOrCreateMultipartUpload({
|
|
65
80
|
s3Config: resolvedS3Config,
|
|
66
|
-
accessLevel:
|
|
81
|
+
accessLevel: resolvedAccessLevel,
|
|
67
82
|
bucket: resolvedBucket,
|
|
68
83
|
keyPrefix: resolvedKeyPrefix,
|
|
69
|
-
key,
|
|
84
|
+
key: objectKey,
|
|
70
85
|
contentType,
|
|
71
86
|
contentDisposition,
|
|
72
87
|
contentEncoding,
|
|
@@ -80,15 +95,14 @@ const getMultipartUploadHandlers = ({ options: uploadDataOptions, key, data }, s
|
|
|
80
95
|
completedParts: cachedParts,
|
|
81
96
|
};
|
|
82
97
|
}
|
|
83
|
-
const finalKey = resolvedKeyPrefix + key;
|
|
84
98
|
uploadCacheKey = size
|
|
85
99
|
? getUploadsCacheKey({
|
|
86
100
|
file: data instanceof File ? data : undefined,
|
|
87
|
-
accessLevel:
|
|
101
|
+
accessLevel: resolvedAccessLevel,
|
|
88
102
|
contentType: uploadDataOptions?.contentType,
|
|
89
103
|
bucket: resolvedBucket,
|
|
90
104
|
size,
|
|
91
|
-
key,
|
|
105
|
+
key: objectKey,
|
|
92
106
|
})
|
|
93
107
|
: undefined;
|
|
94
108
|
const dataChunker = getDataChunker(data, size);
|
|
@@ -146,12 +160,14 @@ const getMultipartUploadHandlers = ({ options: uploadDataOptions, key, data }, s
|
|
|
146
160
|
if (uploadCacheKey) {
|
|
147
161
|
await removeCachedUpload(uploadCacheKey);
|
|
148
162
|
}
|
|
149
|
-
|
|
150
|
-
key,
|
|
163
|
+
const result = {
|
|
151
164
|
eTag,
|
|
152
165
|
contentType,
|
|
153
166
|
metadata,
|
|
154
167
|
};
|
|
168
|
+
return inputType === STORAGE_INPUT_KEY
|
|
169
|
+
? { key: objectKey, ...result }
|
|
170
|
+
: { path: objectKey, ...result };
|
|
155
171
|
};
|
|
156
172
|
const startUploadWithResumability = () => startUpload()
|
|
157
173
|
.then(resolveCallback)
|
|
@@ -188,7 +204,7 @@ const getMultipartUploadHandlers = ({ options: uploadDataOptions, key, data }, s
|
|
|
188
204
|
// 3. clear multipart upload on server side.
|
|
189
205
|
await abortMultipartUpload(resolvedS3Config, {
|
|
190
206
|
Bucket: resolvedBucket,
|
|
191
|
-
Key:
|
|
207
|
+
Key: finalKey,
|
|
192
208
|
UploadId: inProgressUpload?.uploadId,
|
|
193
209
|
});
|
|
194
210
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadHandlers.mjs","sources":["../../../../../../../src/providers/s3/apis/uploadData/multipart/uploadHandlers.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';\nimport { DEFAULT_ACCESS_LEVEL, DEFAULT_QUEUE_SIZE, } from '../../../utils/constants';\nimport { StorageError } from '../../../../../errors/StorageError';\nimport { CanceledError } from '../../../../../errors/CanceledError';\nimport { abortMultipartUpload, completeMultipartUpload, headObject, } from '../../../utils/client';\nimport { getStorageUserAgentValue } from '../../../utils/userAgent';\nimport { logger } from '../../../../../utils';\nimport { uploadPartExecutor } from './uploadPartExecutor';\nimport { getUploadsCacheKey, removeCachedUpload } from './uploadCache';\nimport { getConcurrentUploadsProgressTracker } from './progressTracker';\nimport { loadOrCreateMultipartUpload } from './initialUpload';\nimport { getDataChunker } from './getDataChunker';\n/**\n * Create closure hiding the multipart upload implementation details and expose the upload job and control functions(\n * onPause, onResume, onCancel).\n *\n * @internal\n */\nexport const getMultipartUploadHandlers = ({ options: uploadDataOptions, key, data }, size) => {\n let resolveCallback;\n let rejectCallback;\n let inProgressUpload;\n let resolvedS3Config;\n let abortController;\n let resolvedBucket;\n let resolvedKeyPrefix;\n let uploadCacheKey;\n // Special flag that differentiates HTTP requests abort error caused by pause() from ones caused by cancel().\n // The former one should NOT cause the upload job to throw, but cancels any pending HTTP requests.\n // This should be replaced by a special abort reason. However,the support of this API is lagged behind.\n let isAbortSignalFromPause = false;\n const startUpload = async () => {\n const resolvedS3Options = await resolveS3ConfigAndInput(Amplify, uploadDataOptions);\n resolvedS3Config = resolvedS3Options.s3Config;\n resolvedBucket = resolvedS3Options.bucket;\n resolvedKeyPrefix = resolvedS3Options.keyPrefix;\n abortController = new AbortController();\n isAbortSignalFromPause = false;\n const { contentDisposition, contentEncoding, contentType = 'application/octet-stream', metadata, accessLevel, onProgress, } = uploadDataOptions ?? {};\n if (!inProgressUpload) {\n const { uploadId, cachedParts } = await loadOrCreateMultipartUpload({\n s3Config: resolvedS3Config,\n accessLevel: resolveAccessLevel(accessLevel),\n bucket: resolvedBucket,\n keyPrefix: resolvedKeyPrefix,\n key,\n contentType,\n contentDisposition,\n contentEncoding,\n metadata,\n data,\n size,\n abortSignal: abortController.signal,\n });\n inProgressUpload = {\n uploadId,\n completedParts: cachedParts,\n };\n }\n const finalKey = resolvedKeyPrefix + key;\n uploadCacheKey = size\n ? getUploadsCacheKey({\n file: data instanceof File ? data : undefined,\n accessLevel: resolveAccessLevel(uploadDataOptions?.accessLevel),\n contentType: uploadDataOptions?.contentType,\n bucket: resolvedBucket,\n size,\n key,\n })\n : undefined;\n const dataChunker = getDataChunker(data, size);\n const completedPartNumberSet = new Set(inProgressUpload.completedParts.map(({ PartNumber }) => PartNumber));\n const onPartUploadCompletion = (partNumber, eTag) => {\n inProgressUpload?.completedParts.push({\n PartNumber: partNumber,\n ETag: eTag,\n });\n };\n const concurrentUploadsProgressTracker = getConcurrentUploadsProgressTracker({\n size,\n onProgress,\n });\n const concurrentUploadPartExecutors = [];\n for (let index = 0; index < DEFAULT_QUEUE_SIZE; index++) {\n concurrentUploadPartExecutors.push(uploadPartExecutor({\n dataChunkerGenerator: dataChunker,\n completedPartNumberSet,\n s3Config: resolvedS3Config,\n abortSignal: abortController.signal,\n bucket: resolvedBucket,\n finalKey,\n uploadId: inProgressUpload.uploadId,\n onPartUploadCompletion,\n onProgress: concurrentUploadsProgressTracker.getOnProgressListener(),\n isObjectLockEnabled: resolvedS3Options.isObjectLockEnabled,\n }));\n }\n await Promise.all(concurrentUploadPartExecutors);\n const { ETag: eTag } = await completeMultipartUpload({\n ...resolvedS3Config,\n abortSignal: abortController.signal,\n userAgentValue: getStorageUserAgentValue(StorageAction.UploadData),\n }, {\n Bucket: resolvedBucket,\n Key: finalKey,\n UploadId: inProgressUpload.uploadId,\n MultipartUpload: {\n Parts: inProgressUpload.completedParts.sort((partA, partB) => partA.PartNumber - partB.PartNumber),\n },\n });\n if (size) {\n const { ContentLength: uploadedObjectSize } = await headObject(resolvedS3Config, {\n Bucket: resolvedBucket,\n Key: finalKey,\n });\n if (uploadedObjectSize && uploadedObjectSize !== size) {\n throw new StorageError({\n name: 'Error',\n message: `Upload failed. Expected object size ${size}, but got ${uploadedObjectSize}.`,\n });\n }\n }\n if (uploadCacheKey) {\n await removeCachedUpload(uploadCacheKey);\n }\n return {\n key,\n eTag,\n contentType,\n metadata,\n };\n };\n const startUploadWithResumability = () => startUpload()\n .then(resolveCallback)\n .catch(error => {\n const abortSignal = abortController?.signal;\n if (abortSignal?.aborted && isAbortSignalFromPause) {\n logger.debug('upload paused.');\n }\n else {\n // Uncaught errors should be exposed to the users.\n rejectCallback(error);\n }\n });\n const multipartUploadJob = () => new Promise((resolve, reject) => {\n resolveCallback = resolve;\n rejectCallback = reject;\n startUploadWithResumability();\n });\n const onPause = () => {\n isAbortSignalFromPause = true;\n abortController?.abort();\n };\n const onResume = () => {\n startUploadWithResumability();\n };\n const onCancel = (message) => {\n // 1. abort in-flight API requests\n abortController?.abort(message);\n const cancelUpload = async () => {\n // 2. clear upload cache.\n if (uploadCacheKey) {\n await removeCachedUpload(uploadCacheKey);\n }\n // 3. clear multipart upload on server side.\n await abortMultipartUpload(resolvedS3Config, {\n Bucket: resolvedBucket,\n Key: resolvedKeyPrefix + key,\n UploadId: inProgressUpload?.uploadId,\n });\n };\n cancelUpload().catch(e => {\n logger.debug('error when cancelling upload task.', e);\n });\n rejectCallback(\n // Internal error that should not be exposed to the users. They should use isCancelError() to check if\n // the error is caused by cancel().\n new CanceledError(message ? { message } : undefined));\n };\n return {\n multipartUploadJob,\n onPause,\n onResume,\n onCancel,\n };\n};\nconst resolveAccessLevel = (accessLevel) => accessLevel ??\n Amplify.libraryOptions.Storage?.S3?.defaultAccessLevel ??\n DEFAULT_ACCESS_LEVEL;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"uploadHandlers.mjs","sources":["../../../../../../../src/providers/s3/apis/uploadData/multipart/uploadHandlers.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, validateStorageOperationInput, } from '../../../utils';\nimport { DEFAULT_ACCESS_LEVEL, DEFAULT_QUEUE_SIZE, STORAGE_INPUT_KEY, } from '../../../utils/constants';\nimport { StorageError } from '../../../../../errors/StorageError';\nimport { CanceledError } from '../../../../../errors/CanceledError';\nimport { abortMultipartUpload, completeMultipartUpload, headObject, } from '../../../utils/client';\nimport { getStorageUserAgentValue } from '../../../utils/userAgent';\nimport { logger } from '../../../../../utils';\nimport { uploadPartExecutor } from './uploadPartExecutor';\nimport { getUploadsCacheKey, removeCachedUpload } from './uploadCache';\nimport { getConcurrentUploadsProgressTracker } from './progressTracker';\nimport { loadOrCreateMultipartUpload } from './initialUpload';\nimport { getDataChunker } from './getDataChunker';\n/**\n * Create closure hiding the multipart upload implementation details and expose the upload job and control functions(\n * onPause, onResume, onCancel).\n *\n * @internal\n */\nexport const getMultipartUploadHandlers = (uploadDataInput, size) => {\n let resolveCallback;\n let rejectCallback;\n let inProgressUpload;\n let resolvedS3Config;\n let abortController;\n let resolvedAccessLevel;\n let resolvedBucket;\n let resolvedKeyPrefix;\n let resolvedIdentityId;\n let uploadCacheKey;\n let finalKey;\n // Special flag that differentiates HTTP requests abort error caused by pause() from ones caused by cancel().\n // The former one should NOT cause the upload job to throw, but cancels any pending HTTP requests.\n // This should be replaced by a special abort reason. However,the support of this API is lagged behind.\n let isAbortSignalFromPause = false;\n const startUpload = async () => {\n const { options: uploadDataOptions, data } = uploadDataInput;\n const resolvedS3Options = await resolveS3ConfigAndInput(Amplify, uploadDataOptions);\n abortController = new AbortController();\n isAbortSignalFromPause = false;\n resolvedS3Config = resolvedS3Options.s3Config;\n resolvedBucket = resolvedS3Options.bucket;\n resolvedIdentityId = resolvedS3Options.identityId;\n const { inputType, objectKey } = validateStorageOperationInput(uploadDataInput, resolvedIdentityId);\n const { contentDisposition, contentEncoding, contentType = 'application/octet-stream', metadata, onProgress, } = uploadDataOptions ?? {};\n finalKey = objectKey;\n // Resolve \"key\" specific options\n if (inputType === STORAGE_INPUT_KEY) {\n const accessLevel = uploadDataOptions\n ?.accessLevel;\n resolvedKeyPrefix = resolvedS3Options.keyPrefix;\n finalKey = resolvedKeyPrefix + objectKey;\n resolvedAccessLevel = resolveAccessLevel(accessLevel);\n }\n if (!inProgressUpload) {\n const { uploadId, cachedParts } = await loadOrCreateMultipartUpload({\n s3Config: resolvedS3Config,\n accessLevel: resolvedAccessLevel,\n bucket: resolvedBucket,\n keyPrefix: resolvedKeyPrefix,\n key: objectKey,\n contentType,\n contentDisposition,\n contentEncoding,\n metadata,\n data,\n size,\n abortSignal: abortController.signal,\n });\n inProgressUpload = {\n uploadId,\n completedParts: cachedParts,\n };\n }\n uploadCacheKey = size\n ? getUploadsCacheKey({\n file: data instanceof File ? data : undefined,\n accessLevel: resolvedAccessLevel,\n contentType: uploadDataOptions?.contentType,\n bucket: resolvedBucket,\n size,\n key: objectKey,\n })\n : undefined;\n const dataChunker = getDataChunker(data, size);\n const completedPartNumberSet = new Set(inProgressUpload.completedParts.map(({ PartNumber }) => PartNumber));\n const onPartUploadCompletion = (partNumber, eTag) => {\n inProgressUpload?.completedParts.push({\n PartNumber: partNumber,\n ETag: eTag,\n });\n };\n const concurrentUploadsProgressTracker = getConcurrentUploadsProgressTracker({\n size,\n onProgress,\n });\n const concurrentUploadPartExecutors = [];\n for (let index = 0; index < DEFAULT_QUEUE_SIZE; index++) {\n concurrentUploadPartExecutors.push(uploadPartExecutor({\n dataChunkerGenerator: dataChunker,\n completedPartNumberSet,\n s3Config: resolvedS3Config,\n abortSignal: abortController.signal,\n bucket: resolvedBucket,\n finalKey,\n uploadId: inProgressUpload.uploadId,\n onPartUploadCompletion,\n onProgress: concurrentUploadsProgressTracker.getOnProgressListener(),\n isObjectLockEnabled: resolvedS3Options.isObjectLockEnabled,\n }));\n }\n await Promise.all(concurrentUploadPartExecutors);\n const { ETag: eTag } = await completeMultipartUpload({\n ...resolvedS3Config,\n abortSignal: abortController.signal,\n userAgentValue: getStorageUserAgentValue(StorageAction.UploadData),\n }, {\n Bucket: resolvedBucket,\n Key: finalKey,\n UploadId: inProgressUpload.uploadId,\n MultipartUpload: {\n Parts: inProgressUpload.completedParts.sort((partA, partB) => partA.PartNumber - partB.PartNumber),\n },\n });\n if (size) {\n const { ContentLength: uploadedObjectSize } = await headObject(resolvedS3Config, {\n Bucket: resolvedBucket,\n Key: finalKey,\n });\n if (uploadedObjectSize && uploadedObjectSize !== size) {\n throw new StorageError({\n name: 'Error',\n message: `Upload failed. Expected object size ${size}, but got ${uploadedObjectSize}.`,\n });\n }\n }\n if (uploadCacheKey) {\n await removeCachedUpload(uploadCacheKey);\n }\n const result = {\n eTag,\n contentType,\n metadata,\n };\n return inputType === STORAGE_INPUT_KEY\n ? { key: objectKey, ...result }\n : { path: objectKey, ...result };\n };\n const startUploadWithResumability = () => startUpload()\n .then(resolveCallback)\n .catch(error => {\n const abortSignal = abortController?.signal;\n if (abortSignal?.aborted && isAbortSignalFromPause) {\n logger.debug('upload paused.');\n }\n else {\n // Uncaught errors should be exposed to the users.\n rejectCallback(error);\n }\n });\n const multipartUploadJob = () => new Promise((resolve, reject) => {\n resolveCallback = resolve;\n rejectCallback = reject;\n startUploadWithResumability();\n });\n const onPause = () => {\n isAbortSignalFromPause = true;\n abortController?.abort();\n };\n const onResume = () => {\n startUploadWithResumability();\n };\n const onCancel = (message) => {\n // 1. abort in-flight API requests\n abortController?.abort(message);\n const cancelUpload = async () => {\n // 2. clear upload cache.\n if (uploadCacheKey) {\n await removeCachedUpload(uploadCacheKey);\n }\n // 3. clear multipart upload on server side.\n await abortMultipartUpload(resolvedS3Config, {\n Bucket: resolvedBucket,\n Key: finalKey,\n UploadId: inProgressUpload?.uploadId,\n });\n };\n cancelUpload().catch(e => {\n logger.debug('error when cancelling upload task.', e);\n });\n rejectCallback(\n // Internal error that should not be exposed to the users. They should use isCancelError() to check if\n // the error is caused by cancel().\n new CanceledError(message ? { message } : undefined));\n };\n return {\n multipartUploadJob,\n onPause,\n onResume,\n onCancel,\n };\n};\nconst resolveAccessLevel = (accessLevel) => accessLevel ??\n Amplify.libraryOptions.Storage?.S3?.defaultAccessLevel ??\n DEFAULT_ACCESS_LEVEL;\n"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { UploadDataInput } from '../../types';
|
|
2
|
-
import {
|
|
1
|
+
import { UploadDataInput, UploadDataWithPathInput } from '../../types';
|
|
2
|
+
import { ItemWithKey, ItemWithPath } from '../../types/outputs';
|
|
3
3
|
/**
|
|
4
4
|
* Get a function the returns a promise to call putObject API to S3.
|
|
5
5
|
*
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
8
|
-
export declare const putObjectJob: (
|
|
8
|
+
export declare const putObjectJob: (uploadDataInput: UploadDataInput | UploadDataWithPathInput, abortSignal: AbortSignal, totalLength?: number) => () => Promise<ItemWithKey | ItemWithPath>;
|
|
@@ -4,6 +4,8 @@ import { calculateContentMd5 } from '../../utils/md5.mjs';
|
|
|
4
4
|
import { resolveS3ConfigAndInput } from '../../utils/resolveS3ConfigAndInput.mjs';
|
|
5
5
|
import '../../../../errors/types/validation.mjs';
|
|
6
6
|
import '../../../../utils/logger.mjs';
|
|
7
|
+
import { validateStorageOperationInput } from '../../utils/validateStorageOperationInput.mjs';
|
|
8
|
+
import { STORAGE_INPUT_KEY } from '../../utils/constants.mjs';
|
|
7
9
|
import '../../utils/client/base.mjs';
|
|
8
10
|
import '../../utils/client/getObject.mjs';
|
|
9
11
|
import '../../utils/client/listObjectsV2.mjs';
|
|
@@ -25,9 +27,11 @@ import { getStorageUserAgentValue } from '../../utils/userAgent.mjs';
|
|
|
25
27
|
*
|
|
26
28
|
* @internal
|
|
27
29
|
*/
|
|
28
|
-
const putObjectJob = (
|
|
29
|
-
const {
|
|
30
|
-
const
|
|
30
|
+
const putObjectJob = (uploadDataInput, abortSignal, totalLength) => async () => {
|
|
31
|
+
const { options: uploadDataOptions, data } = uploadDataInput;
|
|
32
|
+
const { bucket, keyPrefix, s3Config, isObjectLockEnabled, identityId } = await resolveS3ConfigAndInput(Amplify, uploadDataOptions);
|
|
33
|
+
const { inputType, objectKey } = validateStorageOperationInput(uploadDataInput, identityId);
|
|
34
|
+
const finalKey = inputType === STORAGE_INPUT_KEY ? keyPrefix + objectKey : objectKey;
|
|
31
35
|
const { contentDisposition, contentEncoding, contentType = 'application/octet-stream', metadata, onProgress, } = uploadDataOptions ?? {};
|
|
32
36
|
const { ETag: eTag, VersionId: versionId } = await putObject({
|
|
33
37
|
...s3Config,
|
|
@@ -46,14 +50,16 @@ const putObjectJob = ({ options: uploadDataOptions, key, data }, abortSignal, to
|
|
|
46
50
|
? await calculateContentMd5(data)
|
|
47
51
|
: undefined,
|
|
48
52
|
});
|
|
49
|
-
|
|
50
|
-
key,
|
|
53
|
+
const result = {
|
|
51
54
|
eTag,
|
|
52
55
|
versionId,
|
|
53
56
|
contentType,
|
|
54
57
|
metadata,
|
|
55
58
|
size: totalLength,
|
|
56
59
|
};
|
|
60
|
+
return inputType === STORAGE_INPUT_KEY
|
|
61
|
+
? { key: objectKey, ...result }
|
|
62
|
+
: { path: objectKey, ...result };
|
|
57
63
|
};
|
|
58
64
|
|
|
59
65
|
export { putObjectJob };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"putObjectJob.mjs","sources":["../../../../../../src/providers/s3/apis/uploadData/putObjectJob.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 { calculateContentMd5, resolveS3ConfigAndInput } from '../../utils';\nimport { putObject } from '../../utils/client';\nimport { getStorageUserAgentValue } from '../../utils/userAgent';\n/**\n * Get a function the returns a promise to call putObject API to S3.\n *\n * @internal\n */\nexport const putObjectJob = (
|
|
1
|
+
{"version":3,"file":"putObjectJob.mjs","sources":["../../../../../../src/providers/s3/apis/uploadData/putObjectJob.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 { calculateContentMd5, resolveS3ConfigAndInput, validateStorageOperationInput, } from '../../utils';\nimport { putObject } from '../../utils/client';\nimport { getStorageUserAgentValue } from '../../utils/userAgent';\nimport { STORAGE_INPUT_KEY } from '../../utils/constants';\n/**\n * Get a function the returns a promise to call putObject API to S3.\n *\n * @internal\n */\nexport const putObjectJob = (uploadDataInput, abortSignal, totalLength) => async () => {\n const { options: uploadDataOptions, data } = uploadDataInput;\n const { bucket, keyPrefix, s3Config, isObjectLockEnabled, identityId } = await resolveS3ConfigAndInput(Amplify, uploadDataOptions);\n const { inputType, objectKey } = validateStorageOperationInput(uploadDataInput, identityId);\n const finalKey = inputType === STORAGE_INPUT_KEY ? keyPrefix + objectKey : objectKey;\n const { contentDisposition, contentEncoding, contentType = 'application/octet-stream', metadata, onProgress, } = uploadDataOptions ?? {};\n const { ETag: eTag, VersionId: versionId } = await putObject({\n ...s3Config,\n abortSignal,\n onUploadProgress: onProgress,\n userAgentValue: getStorageUserAgentValue(StorageAction.UploadData),\n }, {\n Bucket: bucket,\n Key: finalKey,\n Body: data,\n ContentType: contentType,\n ContentDisposition: contentDisposition,\n ContentEncoding: contentEncoding,\n Metadata: metadata,\n ContentMD5: isObjectLockEnabled\n ? await calculateContentMd5(data)\n : undefined,\n });\n const result = {\n eTag,\n versionId,\n contentType,\n metadata,\n size: totalLength,\n };\n return inputType === STORAGE_INPUT_KEY\n ? { key: objectKey, ...result }\n : { path: objectKey, ...result };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AAOA;AACA;AACA;AACA;AACA;AACY,MAAC,YAAY,GAAG,CAAC,eAAe,EAAE,WAAW,EAAE,WAAW,KAAK,YAAY;AACvF,IAAI,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;AACjE,IAAI,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AACvI,IAAI,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,6BAA6B,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAChG,IAAI,MAAM,QAAQ,GAAG,SAAS,KAAK,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AACzF,IAAI,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,WAAW,GAAG,0BAA0B,EAAE,QAAQ,EAAE,UAAU,GAAG,GAAG,iBAAiB,IAAI,EAAE,CAAC;AAC7I,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM,SAAS,CAAC;AACjE,QAAQ,GAAG,QAAQ;AACnB,QAAQ,WAAW;AACnB,QAAQ,gBAAgB,EAAE,UAAU;AACpC,QAAQ,cAAc,EAAE,wBAAwB,CAAC,aAAa,CAAC,UAAU,CAAC;AAC1E,KAAK,EAAE;AACP,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,GAAG,EAAE,QAAQ;AACrB,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,WAAW,EAAE,WAAW;AAChC,QAAQ,kBAAkB,EAAE,kBAAkB;AAC9C,QAAQ,eAAe,EAAE,eAAe;AACxC,QAAQ,QAAQ,EAAE,QAAQ;AAC1B,QAAQ,UAAU,EAAE,mBAAmB;AACvC,cAAc,MAAM,mBAAmB,CAAC,IAAI,CAAC;AAC7C,cAAc,SAAS;AACvB,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,IAAI;AACZ,QAAQ,SAAS;AACjB,QAAQ,WAAW;AACnB,QAAQ,QAAQ;AAChB,QAAQ,IAAI,EAAE,WAAW;AACzB,KAAK,CAAC;AACN,IAAI,OAAO,SAAS,KAAK,iBAAiB;AAC1C,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE;AACvC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC;AACzC;;;;"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { uploadData, downloadData, remove, list, getProperties, copy, getUrl, } from './apis';
|
|
2
|
-
export { UploadDataInput, DownloadDataInput, RemoveInput, ListAllInput, ListPaginateInput, GetPropertiesInput, CopyInput, GetUrlInput, } from './types/inputs';
|
|
3
|
-
export { UploadDataOutput, DownloadDataOutput, RemoveOutput, ListAllOutput, ListPaginateOutput, GetPropertiesOutput, CopyOutput, GetUrlOutput, } from './types/outputs';
|
|
2
|
+
export { UploadDataInput, UploadDataWithPathInput, DownloadDataInput, DownloadDataWithPathInput, RemoveInput, RemoveWithPathInput, ListAllInput, ListAllWithPathInput, ListPaginateInput, ListPaginateWithPathInput, GetPropertiesInput, GetPropertiesWithPathInput, CopyInput, CopyWithPathInput, GetUrlInput, GetUrlWithPathInput, } from './types/inputs';
|
|
3
|
+
export { UploadDataOutput, UploadDataWithPathOutput, DownloadDataOutput, DownloadDataWithPathOutput, RemoveOutput, RemoveWithPathOutput, ListAllOutput, ListAllWithPathOutput, ListPaginateOutput, ListPaginateWithPathOutput, GetPropertiesOutput, GetPropertiesWithPathOutput, CopyOutput, CopyWithPathOutput, GetUrlOutput, GetUrlWithPathOutput, } from './types/outputs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export { DownloadDataOutput,
|
|
3
|
-
export { CopyInput, GetPropertiesInput, GetUrlInput,
|
|
1
|
+
export { GetUrlOptionsWithKey, GetUrlOptionsWithPath, UploadDataOptionsWithPath, UploadDataOptionsWithKey, GetPropertiesOptionsWithKey, GetPropertiesOptionsWithPath, ListAllOptionsWithPrefix, ListPaginateOptionsWithPrefix, ListAllOptionsWithPath, ListPaginateOptionsWithPath, RemoveOptions, DownloadDataOptionsWithPath, DownloadDataOptionsWithKey, CopyDestinationOptionsWithKey, CopySourceOptionsWithKey, } from './options';
|
|
2
|
+
export { UploadDataOutput, UploadDataWithPathOutput, DownloadDataOutput, DownloadDataWithPathOutput, RemoveOutput, RemoveWithPathOutput, ListAllOutput, ListAllWithPathOutput, ListPaginateOutput, ListPaginateWithPathOutput, GetPropertiesOutput, GetPropertiesWithPathOutput, CopyOutput, CopyWithPathOutput, GetUrlOutput, GetUrlWithPathOutput, ListOutputItem, ListOutputItemWithPath, } from './outputs';
|
|
3
|
+
export { CopyInput, CopyWithPathInput, GetPropertiesInput, GetPropertiesWithPathInput, GetUrlInput, GetUrlWithPathInput, RemoveWithPathInput, RemoveInput, DownloadDataInput, DownloadDataWithPathInput, UploadDataInput, UploadDataWithPathInput, ListAllInput, ListPaginateInput, ListAllWithPathInput, ListPaginateWithPathInput, } from './inputs';
|
|
4
4
|
export { S3Exception } from './errors';
|
|
@@ -1,34 +1,74 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { StorageCopyInputWithKey, StorageCopyInputWithPath, StorageDownloadDataInputWithKey, StorageDownloadDataInputWithPath, StorageGetPropertiesInputWithKey, StorageGetPropertiesInputWithPath, StorageGetUrlInputWithKey, StorageGetUrlInputWithPath, StorageListInputWithPath, StorageListInputWithPrefix, StorageRemoveInputWithKey, StorageRemoveInputWithPath, StorageUploadDataInputWithKey, StorageUploadDataInputWithPath } from '../../../types';
|
|
2
|
+
import { CopyDestinationOptionsWithKey, CopySourceOptionsWithKey, DownloadDataOptionsWithKey, DownloadDataOptionsWithPath, GetPropertiesOptionsWithKey, GetPropertiesOptionsWithPath, GetUrlOptionsWithKey, GetUrlOptionsWithPath, ListAllOptionsWithPath, ListAllOptionsWithPrefix, ListPaginateOptionsWithPath, ListPaginateOptionsWithPrefix, RemoveOptions, UploadDataOptionsWithKey, UploadDataOptionsWithPath } from '../types';
|
|
3
3
|
/**
|
|
4
|
+
* @deprecated Use {@link CopyWithPathInput} instead.
|
|
4
5
|
* Input type for S3 copy API.
|
|
5
6
|
*/
|
|
6
|
-
export type CopyInput =
|
|
7
|
+
export type CopyInput = StorageCopyInputWithKey<CopySourceOptionsWithKey, CopyDestinationOptionsWithKey>;
|
|
7
8
|
/**
|
|
9
|
+
* Input type with path for S3 copy API.
|
|
10
|
+
*/
|
|
11
|
+
export type CopyWithPathInput = StorageCopyInputWithPath;
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated Use {@link GetPropertiesWithPathInput} instead.
|
|
8
14
|
* Input type for S3 getProperties API.
|
|
9
15
|
*/
|
|
10
|
-
export type GetPropertiesInput =
|
|
16
|
+
export type GetPropertiesInput = StorageGetPropertiesInputWithKey<GetPropertiesOptionsWithKey>;
|
|
17
|
+
/**
|
|
18
|
+
* Input type with for S3 getProperties API.
|
|
19
|
+
*/
|
|
20
|
+
export type GetPropertiesWithPathInput = StorageGetPropertiesInputWithPath<GetPropertiesOptionsWithPath>;
|
|
11
21
|
/**
|
|
22
|
+
* @deprecated Use {@link GetUrlWithPathInput} instead.
|
|
12
23
|
* Input type for S3 getUrl API.
|
|
13
24
|
*/
|
|
14
|
-
export type GetUrlInput =
|
|
25
|
+
export type GetUrlInput = StorageGetUrlInputWithKey<GetUrlOptionsWithKey>;
|
|
26
|
+
/**
|
|
27
|
+
* Input type with path for S3 getUrl API.
|
|
28
|
+
*/
|
|
29
|
+
export type GetUrlWithPathInput = StorageGetUrlInputWithPath<GetUrlOptionsWithPath>;
|
|
30
|
+
/**
|
|
31
|
+
* Input type with path for S3 list API. Lists all bucket objects.
|
|
32
|
+
*/
|
|
33
|
+
export type ListAllWithPathInput = StorageListInputWithPath<ListAllOptionsWithPath>;
|
|
15
34
|
/**
|
|
35
|
+
* Input type with path for S3 list API. Lists bucket objects with pagination.
|
|
36
|
+
*/
|
|
37
|
+
export type ListPaginateWithPathInput = StorageListInputWithPath<ListPaginateOptionsWithPath>;
|
|
38
|
+
/**
|
|
39
|
+
* @deprecated Use {@link ListAllWithPathInput} instead.
|
|
16
40
|
* Input type for S3 list API. Lists all bucket objects.
|
|
17
41
|
*/
|
|
18
|
-
export type ListAllInput =
|
|
42
|
+
export type ListAllInput = StorageListInputWithPrefix<ListAllOptionsWithPrefix>;
|
|
19
43
|
/**
|
|
44
|
+
* @deprecated Use {@link ListPaginateWithPathInput} instead.
|
|
20
45
|
* Input type for S3 list API. Lists bucket objects with pagination.
|
|
21
46
|
*/
|
|
22
|
-
export type ListPaginateInput =
|
|
47
|
+
export type ListPaginateInput = StorageListInputWithPrefix<ListPaginateOptionsWithPrefix>;
|
|
48
|
+
/**
|
|
49
|
+
* @deprecated Use {@link RemoveWithPathInput} instead.
|
|
50
|
+
* Input type with key for S3 remove API.
|
|
51
|
+
*/
|
|
52
|
+
export type RemoveInput = StorageRemoveInputWithKey<RemoveOptions>;
|
|
23
53
|
/**
|
|
24
|
-
* Input type for S3 remove API.
|
|
54
|
+
* Input type with path for S3 remove API.
|
|
25
55
|
*/
|
|
26
|
-
export type
|
|
56
|
+
export type RemoveWithPathInput = StorageRemoveInputWithPath<Omit<RemoveOptions, 'accessLevel'>>;
|
|
27
57
|
/**
|
|
58
|
+
* @deprecated Use {@link DownloadDataWithPathInput} instead.
|
|
28
59
|
* Input type for S3 downloadData API.
|
|
29
60
|
*/
|
|
30
|
-
export type DownloadDataInput =
|
|
61
|
+
export type DownloadDataInput = StorageDownloadDataInputWithKey<DownloadDataOptionsWithKey>;
|
|
31
62
|
/**
|
|
63
|
+
* Input type with path for S3 downloadData API.
|
|
64
|
+
*/
|
|
65
|
+
export type DownloadDataWithPathInput = StorageDownloadDataInputWithPath<DownloadDataOptionsWithPath>;
|
|
66
|
+
/**
|
|
67
|
+
* @deprecated Use {@link UploadDataWithPathInput} instead.
|
|
32
68
|
* Input type for S3 uploadData API.
|
|
33
69
|
*/
|
|
34
|
-
export type UploadDataInput =
|
|
70
|
+
export type UploadDataInput = StorageUploadDataInputWithKey<UploadDataOptionsWithKey>;
|
|
71
|
+
/**
|
|
72
|
+
* Input type with path for S3 uploadData API.
|
|
73
|
+
*/
|
|
74
|
+
export type UploadDataWithPathInput = StorageUploadDataInputWithPath<UploadDataOptionsWithPath>;
|
|
@@ -9,13 +9,19 @@ interface CommonOptions {
|
|
|
9
9
|
*/
|
|
10
10
|
useAccelerateEndpoint?: boolean;
|
|
11
11
|
}
|
|
12
|
+
/** @deprecated This may be removed in the next major version. */
|
|
12
13
|
type ReadOptions = {
|
|
14
|
+
/** @deprecated This may be removed in the next major version. */
|
|
13
15
|
accessLevel?: 'guest' | 'private';
|
|
14
16
|
} | {
|
|
17
|
+
/** @deprecated This may be removed in the next major version. */
|
|
15
18
|
accessLevel: 'protected';
|
|
19
|
+
/** @deprecated This may be removed in the next major version. */
|
|
16
20
|
targetIdentityId?: string;
|
|
17
21
|
};
|
|
22
|
+
/** @deprecated This may be removed in the next major version. */
|
|
18
23
|
interface WriteOptions {
|
|
24
|
+
/** @deprecated This may be removed in the next major version. */
|
|
19
25
|
accessLevel?: StorageAccessLevel;
|
|
20
26
|
}
|
|
21
27
|
interface BytesRangeOptions {
|
|
@@ -36,23 +42,35 @@ interface TransferOptions {
|
|
|
36
42
|
/**
|
|
37
43
|
* Input options type for S3 getProperties API.
|
|
38
44
|
*/
|
|
39
|
-
|
|
45
|
+
/** @deprecated Use {@link GetPropertiesOptionsWithPath} instead. */
|
|
46
|
+
export type GetPropertiesOptionsWithKey = ReadOptions & CommonOptions;
|
|
47
|
+
export type GetPropertiesOptionsWithPath = CommonOptions;
|
|
40
48
|
/**
|
|
41
49
|
* Input options type for S3 getProperties API.
|
|
42
50
|
*/
|
|
43
51
|
export type RemoveOptions = WriteOptions & CommonOptions;
|
|
44
52
|
/**
|
|
45
|
-
*
|
|
53
|
+
* @deprecated Use {@link ListAllOptionsWithPath} instead.
|
|
54
|
+
* Input options type with prefix for S3 list all API.
|
|
46
55
|
*/
|
|
47
|
-
export type
|
|
56
|
+
export type ListAllOptionsWithPrefix = StorageListAllOptions & ReadOptions & CommonOptions;
|
|
48
57
|
/**
|
|
49
|
-
*
|
|
58
|
+
* @deprecated Use {@link ListPaginateOptionsWithPath} instead.
|
|
59
|
+
* Input options type with prefix for S3 list API to paginate items.
|
|
50
60
|
*/
|
|
51
|
-
export type
|
|
61
|
+
export type ListPaginateOptionsWithPrefix = StorageListPaginateOptions & ReadOptions & CommonOptions;
|
|
62
|
+
/**
|
|
63
|
+
* Input options type with path for S3 list all API.
|
|
64
|
+
*/
|
|
65
|
+
export type ListAllOptionsWithPath = Omit<StorageListAllOptions, 'accessLevel'> & CommonOptions;
|
|
66
|
+
/**
|
|
67
|
+
* Input options type with path for S3 list API to paginate items.
|
|
68
|
+
*/
|
|
69
|
+
export type ListPaginateOptionsWithPath = Omit<StorageListPaginateOptions, 'accessLevel'> & CommonOptions;
|
|
52
70
|
/**
|
|
53
71
|
* Input options type for S3 getUrl API.
|
|
54
72
|
*/
|
|
55
|
-
export type GetUrlOptions =
|
|
73
|
+
export type GetUrlOptions = CommonOptions & {
|
|
56
74
|
/**
|
|
57
75
|
* Whether to head object to make sure the object existence before downloading.
|
|
58
76
|
* @default false
|
|
@@ -64,11 +82,17 @@ export type GetUrlOptions = ReadOptions & CommonOptions & {
|
|
|
64
82
|
*/
|
|
65
83
|
expiresIn?: number;
|
|
66
84
|
};
|
|
85
|
+
/** @deprecated Use {@link GetUrlOptionsWithPath} instead. */
|
|
86
|
+
export type GetUrlOptionsWithKey = ReadOptions & GetUrlOptions;
|
|
87
|
+
export type GetUrlOptionsWithPath = GetUrlOptions;
|
|
67
88
|
/**
|
|
68
89
|
* Input options type for S3 downloadData API.
|
|
69
90
|
*/
|
|
70
|
-
export type DownloadDataOptions =
|
|
71
|
-
|
|
91
|
+
export type DownloadDataOptions = CommonOptions & TransferOptions & BytesRangeOptions;
|
|
92
|
+
/** @deprecated Use {@link DownloadDataOptionsWithPath} instead. */
|
|
93
|
+
export type DownloadDataOptionsWithKey = ReadOptions & DownloadDataOptions;
|
|
94
|
+
export type DownloadDataOptionsWithPath = DownloadDataOptions;
|
|
95
|
+
export type UploadDataOptions = CommonOptions & TransferOptions & {
|
|
72
96
|
/**
|
|
73
97
|
* The default content-disposition header value of the file when downloading it.
|
|
74
98
|
* @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition
|
|
@@ -90,10 +114,17 @@ export type UploadDataOptions = WriteOptions & CommonOptions & TransferOptions &
|
|
|
90
114
|
*/
|
|
91
115
|
metadata?: Record<string, string>;
|
|
92
116
|
};
|
|
93
|
-
|
|
117
|
+
/** @deprecated Use {@link UploadDataOptionsWithPath} instead. */
|
|
118
|
+
export type UploadDataOptionsWithKey = WriteOptions & UploadDataOptions;
|
|
119
|
+
export type UploadDataOptionsWithPath = UploadDataOptions;
|
|
120
|
+
/** @deprecated This may be removed in the next major version. */
|
|
121
|
+
export type CopySourceOptionsWithKey = ReadOptions & {
|
|
122
|
+
/** @deprecated This may be removed in the next major version. */
|
|
94
123
|
key: string;
|
|
95
124
|
};
|
|
96
|
-
|
|
125
|
+
/** @deprecated This may be removed in the next major version. */
|
|
126
|
+
export type CopyDestinationOptionsWithKey = WriteOptions & {
|
|
127
|
+
/** @deprecated This may be removed in the next major version. */
|
|
97
128
|
key: string;
|
|
98
129
|
};
|
|
99
130
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { DownloadTask, StorageDownloadDataOutput, StorageGetUrlOutput,
|
|
1
|
+
import { DownloadTask, StorageDownloadDataOutput, StorageGetUrlOutput, StorageItemWithKey, StorageItemWithPath, StorageListOutput, UploadTask } from '../../../types';
|
|
2
2
|
/**
|
|
3
|
-
* type for S3 item.
|
|
3
|
+
* Base type for an S3 item.
|
|
4
4
|
*/
|
|
5
|
-
export interface
|
|
5
|
+
export interface ItemBase {
|
|
6
6
|
/**
|
|
7
7
|
* VersionId used to reference a specific version of the object.
|
|
8
8
|
*/
|
|
@@ -13,40 +13,95 @@ export interface Item extends StorageItem {
|
|
|
13
13
|
contentType?: string;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
16
|
+
* @deprecated Use {@link ListOutputItemWithPath} instead.
|
|
17
|
+
* type for S3 list item with key.
|
|
17
18
|
*/
|
|
18
|
-
export type ListOutputItem = Omit<
|
|
19
|
+
export type ListOutputItem = Omit<ItemWithKey, 'metadata'>;
|
|
20
|
+
/**
|
|
21
|
+
* type for S3 list item with path.
|
|
22
|
+
*/
|
|
23
|
+
export type ListOutputItemWithPath = Omit<ItemWithPath, 'metadata'>;
|
|
24
|
+
/**
|
|
25
|
+
* @deprecated Use {@link ItemWithPath} instead.
|
|
26
|
+
*/
|
|
27
|
+
export type ItemWithKey = ItemBase & StorageItemWithKey;
|
|
28
|
+
/**
|
|
29
|
+
* type for S3 list item with path.
|
|
30
|
+
*/
|
|
31
|
+
export type ItemWithPath = ItemBase & StorageItemWithPath;
|
|
19
32
|
/**
|
|
20
33
|
* Output type for S3 downloadData API.
|
|
34
|
+
* @deprecated Use {@link DownloadDataWithPathOutput} instead.
|
|
21
35
|
*/
|
|
22
|
-
export type DownloadDataOutput = DownloadTask<StorageDownloadDataOutput<
|
|
36
|
+
export type DownloadDataOutput = DownloadTask<StorageDownloadDataOutput<ItemWithKey>>;
|
|
37
|
+
/**
|
|
38
|
+
* Output type with path for S3 downloadData API.
|
|
39
|
+
*/
|
|
40
|
+
export type DownloadDataWithPathOutput = DownloadTask<StorageDownloadDataOutput<ItemWithPath>>;
|
|
23
41
|
/**
|
|
24
42
|
* Output type for S3 getUrl API.
|
|
43
|
+
* @deprecated Use {@link GetUrlWithPathOutput} instead.
|
|
25
44
|
*/
|
|
26
45
|
export type GetUrlOutput = StorageGetUrlOutput;
|
|
46
|
+
/**
|
|
47
|
+
* Output type with path for S3 getUrl API.
|
|
48
|
+
* */
|
|
49
|
+
export type GetUrlWithPathOutput = StorageGetUrlOutput;
|
|
27
50
|
/**
|
|
28
51
|
* Output type for S3 uploadData API.
|
|
52
|
+
* @deprecated Use {@link UploadDataWithPathOutput} instead.
|
|
29
53
|
*/
|
|
30
|
-
export type UploadDataOutput = UploadTask<
|
|
54
|
+
export type UploadDataOutput = UploadTask<ItemWithKey>;
|
|
55
|
+
/**
|
|
56
|
+
* Output type with path for S3 uploadData API.
|
|
57
|
+
* */
|
|
58
|
+
export type UploadDataWithPathOutput = UploadTask<ItemWithPath>;
|
|
31
59
|
/**
|
|
32
60
|
* Output type for S3 getProperties API.
|
|
33
|
-
|
|
34
|
-
|
|
61
|
+
* @deprecated Use {@link GetPropertiesWithPathOutput} instead.
|
|
62
|
+
* */
|
|
63
|
+
export type GetPropertiesOutput = ItemBase & StorageItemWithKey;
|
|
35
64
|
/**
|
|
65
|
+
* Output type with path for S3 getProperties API.
|
|
66
|
+
* */
|
|
67
|
+
export type GetPropertiesWithPathOutput = ItemBase & StorageItemWithPath;
|
|
68
|
+
/**
|
|
69
|
+
* @deprecated Use {@link ListAllWithPathOutput} instead.
|
|
36
70
|
* Output type for S3 list API. Lists all bucket objects.
|
|
37
71
|
*/
|
|
38
72
|
export type ListAllOutput = StorageListOutput<ListOutputItem>;
|
|
39
73
|
/**
|
|
74
|
+
* Output type with path for S3 list API. Lists all bucket objects.
|
|
75
|
+
*/
|
|
76
|
+
export type ListAllWithPathOutput = StorageListOutput<ListOutputItemWithPath>;
|
|
77
|
+
/**
|
|
78
|
+
* @deprecated Use {@link ListPaginateWithPathOutput} instead.
|
|
40
79
|
* Output type for S3 list API. Lists bucket objects with pagination.
|
|
41
80
|
*/
|
|
42
81
|
export type ListPaginateOutput = StorageListOutput<ListOutputItem> & {
|
|
43
82
|
nextToken?: string;
|
|
44
83
|
};
|
|
45
84
|
/**
|
|
46
|
-
* Output type for S3
|
|
85
|
+
* Output type with path for S3 list API. Lists bucket objects with pagination.
|
|
86
|
+
*/
|
|
87
|
+
export type ListPaginateWithPathOutput = StorageListOutput<ListOutputItemWithPath> & {
|
|
88
|
+
nextToken?: string;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Output type with path for S3 copy API.
|
|
92
|
+
* @deprecated Use {@link CopyWithPathOutput} instead.
|
|
93
|
+
*/
|
|
94
|
+
export type CopyOutput = Pick<ItemWithKey, 'key'>;
|
|
95
|
+
/**
|
|
96
|
+
* Output type with path for S3 copy API.
|
|
97
|
+
*/
|
|
98
|
+
export type CopyWithPathOutput = Pick<ItemWithPath, 'path'>;
|
|
99
|
+
/**
|
|
100
|
+
* @deprecated Use {@link RemoveWithPathOutput} instead.
|
|
101
|
+
* Output type with key for S3 remove API.
|
|
47
102
|
*/
|
|
48
|
-
export type
|
|
103
|
+
export type RemoveOutput = Pick<ItemWithKey, 'key'>;
|
|
49
104
|
/**
|
|
50
|
-
* Output type for S3 remove API.
|
|
105
|
+
* Output type with path for S3 remove API.
|
|
51
106
|
*/
|
|
52
|
-
export type
|
|
107
|
+
export type RemoveWithPathOutput = Pick<ItemWithPath, 'path'>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsePayload.mjs","sources":["../../../../../../../src/providers/s3/utils/client/utils/parsePayload.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { parseMetadata, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { parser } from '../runtime';\nexport const parseXmlError = async (response) => {\n if (!response || response.statusCode < 300) {\n return;\n }\n const { statusCode } = response;\n const body = await parseXmlBody(response);\n const code = body?.Code\n ? body.Code\n : statusCode === 404\n ? 'NotFound'\n : statusCode.toString();\n const message = body?.message ?? body?.Message ?? code;\n const error = new Error(message);\n return Object.assign(error, {\n name: code,\n $metadata: parseMetadata(response),\n });\n};\nexport const parseXmlBody = async (response) => {\n if (!response.body) {\n // S3 can return 200 without a body indicating failure.\n throw new Error('S3 aborted request.');\n }\n const data = await response.body.text();\n if (data?.length > 0) {\n try {\n return parser.parse(data);\n }\n catch (error) {\n throw new Error(
|
|
1
|
+
{"version":3,"file":"parsePayload.mjs","sources":["../../../../../../../src/providers/s3/utils/client/utils/parsePayload.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { parseMetadata, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { parser } from '../runtime';\nexport const parseXmlError = async (response) => {\n if (!response || response.statusCode < 300) {\n return;\n }\n const { statusCode } = response;\n const body = await parseXmlBody(response);\n const code = body?.Code\n ? body.Code\n : statusCode === 404\n ? 'NotFound'\n : statusCode.toString();\n const message = body?.message ?? body?.Message ?? code;\n const error = new Error(message);\n return Object.assign(error, {\n name: code,\n $metadata: parseMetadata(response),\n });\n};\nexport const parseXmlBody = async (response) => {\n if (!response.body) {\n // S3 can return 200 without a body indicating failure.\n throw new Error('S3 aborted request.');\n }\n const data = await response.body.text();\n if (data?.length > 0) {\n try {\n return parser.parse(data);\n }\n catch (error) {\n throw new Error(`Failed to parse XML response: ${error}`);\n }\n }\n return {};\n};\n"],"names":[],"mappings":";;;;;;AAAA;AACA;AAGY,MAAC,aAAa,GAAG,OAAO,QAAQ,KAAK;AACjD,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,GAAG,GAAG,EAAE;AAChD,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;AACpC,IAAI,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC9C,IAAI,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI;AAC3B,UAAU,IAAI,CAAC,IAAI;AACnB,UAAU,UAAU,KAAK,GAAG;AAC5B,cAAc,UAAU;AACxB,cAAc,UAAU,CAAC,QAAQ,EAAE,CAAC;AACpC,IAAI,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;AAC3D,IAAI,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AACrC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;AAChC,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC;AAC1C,KAAK,CAAC,CAAC;AACP,EAAE;AACU,MAAC,YAAY,GAAG,OAAO,QAAQ,KAAK;AAChD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACxB;AACA,QAAQ,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5C,IAAI,IAAI,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE;AAC1B,QAAQ,IAAI;AACZ,YAAY,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC,SAAS;AACT,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACtE,SAAS;AACT,KAAK;AACL,IAAI,OAAO,EAAE,CAAC;AACd;;;;"}
|
|
@@ -7,3 +7,6 @@ export declare const MAX_OBJECT_SIZE: number;
|
|
|
7
7
|
export declare const MAX_PARTS_COUNT = 10000;
|
|
8
8
|
export declare const DEFAULT_QUEUE_SIZE = 4;
|
|
9
9
|
export declare const UPLOADS_STORAGE_KEY = "__uploadInProgress";
|
|
10
|
+
export declare const STORAGE_INPUT_PREFIX = "prefix";
|
|
11
|
+
export declare const STORAGE_INPUT_KEY = "key";
|
|
12
|
+
export declare const STORAGE_INPUT_PATH = "path";
|
|
@@ -12,6 +12,9 @@ const MAX_OBJECT_SIZE = 5 * TiB;
|
|
|
12
12
|
const MAX_PARTS_COUNT = 10000;
|
|
13
13
|
const DEFAULT_QUEUE_SIZE = 4;
|
|
14
14
|
const UPLOADS_STORAGE_KEY = '__uploadInProgress';
|
|
15
|
+
const STORAGE_INPUT_PREFIX = 'prefix';
|
|
16
|
+
const STORAGE_INPUT_KEY = 'key';
|
|
17
|
+
const STORAGE_INPUT_PATH = 'path';
|
|
15
18
|
|
|
16
|
-
export { DEFAULT_ACCESS_LEVEL, DEFAULT_PART_SIZE, DEFAULT_PRESIGN_EXPIRATION, DEFAULT_QUEUE_SIZE, LOCAL_TESTING_S3_ENDPOINT, MAX_OBJECT_SIZE, MAX_PARTS_COUNT, MAX_URL_EXPIRATION, UPLOADS_STORAGE_KEY };
|
|
19
|
+
export { DEFAULT_ACCESS_LEVEL, DEFAULT_PART_SIZE, DEFAULT_PRESIGN_EXPIRATION, DEFAULT_QUEUE_SIZE, LOCAL_TESTING_S3_ENDPOINT, MAX_OBJECT_SIZE, MAX_PARTS_COUNT, MAX_URL_EXPIRATION, STORAGE_INPUT_KEY, STORAGE_INPUT_PATH, STORAGE_INPUT_PREFIX, UPLOADS_STORAGE_KEY };
|
|
17
20
|
//# sourceMappingURL=constants.mjs.map
|