@aws-amplify/storage 6.0.17-unstable.e316a2e.0 → 6.0.17
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/providers/s3/apis/internal/getProperties.js +1 -1
- package/dist/cjs/providers/s3/apis/internal/getProperties.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/getUrl.js +6 -6
- package/dist/cjs/providers/s3/apis/internal/getUrl.js.map +1 -1
- package/dist/cjs/providers/s3/apis/internal/list.js +2 -2
- package/dist/cjs/providers/s3/apis/internal/list.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/uploadHandlers.js +25 -25
- package/dist/cjs/providers/s3/apis/uploadData/multipart/uploadHandlers.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/base.js +1 -1
- package/dist/cjs/providers/s3/utils/client/base.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/base64/index.native.js +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/base64/index.native.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/contentSha256middleware.js +3 -3
- package/dist/cjs/providers/s3/utils/client/runtime/contentSha256middleware.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/s3TransferHandler/fetch.js +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/s3TransferHandler/fetch.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/s3TransferHandler/xhr.js +4 -4
- package/dist/cjs/providers/s3/utils/client/runtime/s3TransferHandler/xhr.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/xhrTransferHandler.js +4 -4
- package/dist/cjs/providers/s3/utils/client/runtime/xhrTransferHandler.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/xmlParser/dom.js +4 -7
- package/dist/cjs/providers/s3/utils/client/runtime/xmlParser/dom.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/runtime/xmlParser/pureJs.js +6 -5
- package/dist/cjs/providers/s3/utils/client/runtime/xmlParser/pureJs.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/utils/deserializeHelpers.js +1 -1
- package/dist/cjs/providers/s3/utils/client/utils/deserializeHelpers.js.map +1 -1
- package/dist/cjs/providers/s3/utils/client/utils/parsePayload.js +2 -2
- package/dist/cjs/providers/s3/utils/client/utils/parsePayload.js.map +1 -1
- package/dist/cjs/providers/s3/utils/md5.js +8 -3
- package/dist/cjs/providers/s3/utils/md5.js.map +1 -1
- package/dist/cjs/providers/s3/utils/md5.native.js +6 -2
- package/dist/cjs/providers/s3/utils/md5.native.js.map +1 -1
- package/dist/cjs/providers/s3/utils/resolveS3ConfigAndInput.js +1 -1
- package/dist/cjs/providers/s3/utils/resolveS3ConfigAndInput.js.map +1 -1
- package/dist/cjs/providers/s3/utils/transferTask.js +10 -4
- package/dist/cjs/providers/s3/utils/transferTask.js.map +1 -1
- package/dist/esm/providers/s3/apis/getProperties.d.ts +1 -1
- package/dist/esm/providers/s3/apis/internal/getProperties.mjs +1 -1
- package/dist/esm/providers/s3/apis/internal/getProperties.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/getUrl.mjs +3 -3
- package/dist/esm/providers/s3/apis/internal/getUrl.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/internal/list.d.ts +1 -1
- package/dist/esm/providers/s3/apis/internal/list.mjs +2 -2
- package/dist/esm/providers/s3/apis/internal/list.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/list.d.ts +3 -3
- package/dist/esm/providers/s3/apis/server/list.d.ts +3 -3
- package/dist/esm/providers/s3/apis/uploadData/multipart/getDataChunker.d.ts +2 -2
- package/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.d.ts +4 -4
- 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/progressTracker.d.ts +3 -3
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.d.ts +6 -6
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.mjs +25 -25
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.mjs.map +1 -1
- package/dist/esm/providers/s3/apis/uploadData/multipart/uploadPartExecutor.d.ts +5 -5
- package/dist/esm/providers/s3/types/inputs.d.ts +2 -2
- package/dist/esm/providers/s3/types/options.d.ts +11 -11
- package/dist/esm/providers/s3/types/outputs.d.ts +1 -1
- package/dist/esm/providers/s3/utils/client/abortMultipartUpload.d.ts +2 -2
- package/dist/esm/providers/s3/utils/client/base.mjs +1 -1
- package/dist/esm/providers/s3/utils/client/base.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/completeMultipartUpload.d.ts +2 -2
- package/dist/esm/providers/s3/utils/client/copyObject.d.ts +2 -2
- package/dist/esm/providers/s3/utils/client/copyObject.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/createMultipartUpload.d.ts +3 -3
- package/dist/esm/providers/s3/utils/client/createMultipartUpload.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/deleteObject.d.ts +2 -2
- package/dist/esm/providers/s3/utils/client/getObject.d.ts +3 -3
- package/dist/esm/providers/s3/utils/client/getObject.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/headObject.d.ts +2 -2
- package/dist/esm/providers/s3/utils/client/listObjectsV2.d.ts +3 -3
- package/dist/esm/providers/s3/utils/client/listParts.d.ts +2 -2
- package/dist/esm/providers/s3/utils/client/listParts.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/putObject.d.ts +2 -2
- package/dist/esm/providers/s3/utils/client/putObject.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/base64/index.native.mjs +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/base64/index.native.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/contentSha256middleware.d.ts +2 -2
- package/dist/esm/providers/s3/utils/client/runtime/contentSha256middleware.mjs +2 -2
- package/dist/esm/providers/s3/utils/client/runtime/contentSha256middleware.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/s3TransferHandler/fetch.d.ts +2 -2
- package/dist/esm/providers/s3/utils/client/runtime/s3TransferHandler/fetch.mjs +2 -2
- package/dist/esm/providers/s3/utils/client/runtime/s3TransferHandler/fetch.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/s3TransferHandler/xhr.d.ts +2 -2
- package/dist/esm/providers/s3/utils/client/runtime/s3TransferHandler/xhr.mjs +6 -6
- package/dist/esm/providers/s3/utils/client/runtime/s3TransferHandler/xhr.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/xhrTransferHandler.d.ts +2 -2
- package/dist/esm/providers/s3/utils/client/runtime/xhrTransferHandler.mjs +4 -4
- package/dist/esm/providers/s3/utils/client/runtime/xhrTransferHandler.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/xmlParser/dom.mjs +4 -7
- package/dist/esm/providers/s3/utils/client/runtime/xmlParser/dom.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/runtime/xmlParser/pureJs.mjs +6 -5
- package/dist/esm/providers/s3/utils/client/runtime/xmlParser/pureJs.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/types.d.ts +11 -22
- package/dist/esm/providers/s3/utils/client/uploadPart.d.ts +2 -2
- package/dist/esm/providers/s3/utils/client/uploadPart.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.d.ts +1 -3
- package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.mjs +1 -1
- package/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs +2 -2
- package/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/client/utils/serializeHelpers.d.ts +1 -1
- package/dist/esm/providers/s3/utils/md5.mjs +8 -3
- package/dist/esm/providers/s3/utils/md5.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/md5.native.mjs +6 -2
- package/dist/esm/providers/s3/utils/md5.native.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.d.ts +4 -4
- package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs +1 -1
- package/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs.map +1 -1
- package/dist/esm/providers/s3/utils/transferTask.d.ts +10 -10
- package/dist/esm/providers/s3/utils/transferTask.mjs +10 -4
- package/dist/esm/providers/s3/utils/transferTask.mjs.map +1 -1
- package/dist/esm/types/common.d.ts +7 -7
- package/dist/esm/types/inputs.d.ts +9 -9
- package/dist/esm/types/options.d.ts +2 -2
- package/dist/esm/types/outputs.d.ts +6 -6
- package/dist/esm/utils/resolvePrefix.d.ts +2 -2
- package/package.json +107 -106
- package/src/errors/CanceledError.ts +1 -0
- package/src/errors/utils/assertValidationError.ts +1 -1
- package/src/providers/s3/apis/copy.ts +3 -1
- package/src/providers/s3/apis/downloadData.ts +5 -3
- package/src/providers/s3/apis/getProperties.ts +5 -2
- package/src/providers/s3/apis/getUrl.ts +3 -0
- package/src/providers/s3/apis/internal/copy.ts +5 -4
- package/src/providers/s3/apis/internal/getProperties.ts +8 -6
- package/src/providers/s3/apis/internal/getUrl.ts +11 -9
- package/src/providers/s3/apis/internal/list.ts +13 -10
- package/src/providers/s3/apis/internal/remove.ts +5 -3
- package/src/providers/s3/apis/list.ts +8 -4
- package/src/providers/s3/apis/remove.ts +4 -1
- package/src/providers/s3/apis/server/copy.ts +2 -1
- package/src/providers/s3/apis/server/getProperties.ts +3 -2
- package/src/providers/s3/apis/server/getUrl.ts +2 -1
- package/src/providers/s3/apis/server/list.ts +10 -7
- package/src/providers/s3/apis/server/remove.ts +2 -1
- package/src/providers/s3/apis/uploadData/byteLength.ts +1 -0
- package/src/providers/s3/apis/uploadData/index.ts +5 -2
- package/src/providers/s3/apis/uploadData/multipart/calculatePartSize.ts +1 -0
- package/src/providers/s3/apis/uploadData/multipart/getDataChunker.ts +6 -4
- package/src/providers/s3/apis/uploadData/multipart/initialUpload.ts +12 -9
- package/src/providers/s3/apis/uploadData/multipart/progressTracker.ts +5 -4
- package/src/providers/s3/apis/uploadData/multipart/uploadCache.ts +15 -12
- package/src/providers/s3/apis/uploadData/multipart/uploadHandlers.ts +42 -36
- package/src/providers/s3/apis/uploadData/multipart/uploadPartExecutor.ts +7 -6
- package/src/providers/s3/apis/uploadData/putObjectJob.ts +2 -2
- package/src/providers/s3/types/inputs.ts +4 -4
- package/src/providers/s3/types/options.ts +11 -11
- package/src/providers/s3/types/outputs.ts +1 -1
- package/src/providers/s3/utils/client/abortMultipartUpload.ts +5 -4
- package/src/providers/s3/utils/client/base.ts +8 -6
- package/src/providers/s3/utils/client/completeMultipartUpload.ts +14 -6
- package/src/providers/s3/utils/client/copyObject.ts +7 -4
- package/src/providers/s3/utils/client/createMultipartUpload.ts +7 -5
- package/src/providers/s3/utils/client/deleteObject.ts +6 -5
- package/src/providers/s3/utils/client/getObject.ts +14 -12
- package/src/providers/s3/utils/client/headObject.ts +6 -5
- package/src/providers/s3/utils/client/listObjectsV2.ts +6 -3
- package/src/providers/s3/utils/client/listParts.ts +9 -6
- package/src/providers/s3/utils/client/putObject.ts +6 -5
- package/src/providers/s3/utils/client/runtime/base64/index.browser.ts +2 -1
- package/src/providers/s3/utils/client/runtime/base64/index.native.ts +1 -1
- package/src/providers/s3/utils/client/runtime/contentSha256middleware.ts +6 -4
- package/src/providers/s3/utils/client/runtime/s3TransferHandler/fetch.ts +7 -5
- package/src/providers/s3/utils/client/runtime/s3TransferHandler/xhr.ts +11 -11
- package/src/providers/s3/utils/client/runtime/xhrTransferHandler.ts +21 -14
- package/src/providers/s3/utils/client/runtime/xmlParser/dom.ts +6 -7
- package/src/providers/s3/utils/client/runtime/xmlParser/pureJs.ts +10 -5
- package/src/providers/s3/utils/client/types.ts +12 -14
- package/src/providers/s3/utils/client/uploadPart.ts +6 -5
- package/src/providers/s3/utils/client/utils/deserializeHelpers.ts +13 -8
- package/src/providers/s3/utils/client/utils/parsePayload.ts +6 -4
- package/src/providers/s3/utils/client/utils/serializeHelpers.ts +8 -5
- package/src/providers/s3/utils/md5.native.ts +9 -3
- package/src/providers/s3/utils/md5.ts +12 -4
- package/src/providers/s3/utils/resolveS3ConfigAndInput.ts +10 -8
- package/src/providers/s3/utils/transferTask.ts +26 -14
- package/src/providers/s3/utils/userAgent.ts +1 -1
- package/src/types/common.ts +7 -7
- package/src/types/inputs.ts +11 -11
- package/src/types/options.ts +2 -2
- package/src/types/outputs.ts +6 -6
- package/src/utils/resolvePrefix.ts +7 -4
|
@@ -105,8 +105,7 @@ declare const TaggingDirective: {
|
|
|
105
105
|
*
|
|
106
106
|
* The input for {@link AbortMultipartUploadCommand}.
|
|
107
107
|
*/
|
|
108
|
-
export
|
|
109
|
-
}
|
|
108
|
+
export type AbortMultipartUploadCommandInput = AbortMultipartUploadRequest;
|
|
110
109
|
/**
|
|
111
110
|
* @public
|
|
112
111
|
*
|
|
@@ -175,8 +174,7 @@ export interface CommonPrefix {
|
|
|
175
174
|
*
|
|
176
175
|
* The input for {@link CompleteMultipartUploadCommand}.
|
|
177
176
|
*/
|
|
178
|
-
export
|
|
179
|
-
}
|
|
177
|
+
export type CompleteMultipartUploadCommandInput = CompleteMultipartUploadRequest;
|
|
180
178
|
/**
|
|
181
179
|
* @public
|
|
182
180
|
*
|
|
@@ -420,8 +418,7 @@ export interface CompletedPart {
|
|
|
420
418
|
*
|
|
421
419
|
* The input for {@link CopyObjectCommand}.
|
|
422
420
|
*/
|
|
423
|
-
export
|
|
424
|
-
}
|
|
421
|
+
export type CopyObjectCommandInput = CopyObjectRequest;
|
|
425
422
|
/**
|
|
426
423
|
* @public
|
|
427
424
|
*
|
|
@@ -778,8 +775,7 @@ export interface CopyObjectResult {
|
|
|
778
775
|
*
|
|
779
776
|
* The input for {@link CreateMultipartUploadCommand}.
|
|
780
777
|
*/
|
|
781
|
-
export
|
|
782
|
-
}
|
|
778
|
+
export type CreateMultipartUploadCommandInput = CreateMultipartUploadRequest;
|
|
783
779
|
/**
|
|
784
780
|
* @public
|
|
785
781
|
*
|
|
@@ -1035,8 +1031,7 @@ export interface CreateMultipartUploadRequest {
|
|
|
1035
1031
|
*
|
|
1036
1032
|
* The input for {@link DeleteObjectCommand}.
|
|
1037
1033
|
*/
|
|
1038
|
-
export
|
|
1039
|
-
}
|
|
1034
|
+
export type DeleteObjectCommandInput = DeleteObjectRequest;
|
|
1040
1035
|
/**
|
|
1041
1036
|
* @public
|
|
1042
1037
|
*
|
|
@@ -1114,8 +1109,7 @@ export interface DeleteObjectRequest {
|
|
|
1114
1109
|
*
|
|
1115
1110
|
* The input for {@link GetObjectCommand}.
|
|
1116
1111
|
*/
|
|
1117
|
-
export
|
|
1118
|
-
}
|
|
1112
|
+
export type GetObjectCommandInput = GetObjectRequest;
|
|
1119
1113
|
/**
|
|
1120
1114
|
* @public
|
|
1121
1115
|
*
|
|
@@ -1430,8 +1424,7 @@ export interface GetObjectRequest {
|
|
|
1430
1424
|
*
|
|
1431
1425
|
* The input for {@link HeadObjectCommand}.
|
|
1432
1426
|
*/
|
|
1433
|
-
export
|
|
1434
|
-
}
|
|
1427
|
+
export type HeadObjectCommandInput = HeadObjectRequest;
|
|
1435
1428
|
/**
|
|
1436
1429
|
* @public
|
|
1437
1430
|
*
|
|
@@ -1779,8 +1772,7 @@ export interface Initiator {
|
|
|
1779
1772
|
*
|
|
1780
1773
|
* The input for {@link ListObjectsV2Command}.
|
|
1781
1774
|
*/
|
|
1782
|
-
export
|
|
1783
|
-
}
|
|
1775
|
+
export type ListObjectsV2CommandInput = ListObjectsV2Request;
|
|
1784
1776
|
/**
|
|
1785
1777
|
* @public
|
|
1786
1778
|
*
|
|
@@ -1937,8 +1929,7 @@ export interface ListObjectsV2Request {
|
|
|
1937
1929
|
*
|
|
1938
1930
|
* The input for {@link ListPartsCommand}.
|
|
1939
1931
|
*/
|
|
1940
|
-
export
|
|
1941
|
-
}
|
|
1932
|
+
export type ListPartsCommandInput = ListPartsRequest;
|
|
1942
1933
|
/**
|
|
1943
1934
|
* @public
|
|
1944
1935
|
*
|
|
@@ -2191,8 +2182,7 @@ export interface Part {
|
|
|
2191
2182
|
/**
|
|
2192
2183
|
* This interface extends from `PutObjectRequest` interface. There are more parameters than `Body` defined in {@link PutObjectRequest}
|
|
2193
2184
|
*/
|
|
2194
|
-
export
|
|
2195
|
-
}
|
|
2185
|
+
export type PutObjectCommandInput = PutObjectCommandInputType;
|
|
2196
2186
|
/**
|
|
2197
2187
|
* @public
|
|
2198
2188
|
*
|
|
@@ -2529,8 +2519,7 @@ export interface PutObjectRequest {
|
|
|
2529
2519
|
/**
|
|
2530
2520
|
* This interface extends from `UploadPartRequest` interface. There are more parameters than `Body` defined in {@link UploadPartRequest}
|
|
2531
2521
|
*/
|
|
2532
|
-
export
|
|
2533
|
-
}
|
|
2522
|
+
export type UploadPartCommandInput = UploadPartCommandInputType;
|
|
2534
2523
|
/**
|
|
2535
2524
|
* @public
|
|
2536
2525
|
*
|
|
@@ -19,10 +19,10 @@ export declare const uploadPart: (config: {
|
|
|
19
19
|
onDownloadProgress?: ((event: import("../../../..").TransferProgressEvent) => void) | undefined;
|
|
20
20
|
onUploadProgress?: ((event: import("../../../..").TransferProgressEvent) => void) | undefined;
|
|
21
21
|
abortSignal?: AbortSignal | undefined;
|
|
22
|
-
userAgentHeader?: string | undefined;
|
|
23
|
-
maxAttempts?: number | undefined;
|
|
24
22
|
credentials: import("@aws-amplify/core/internals/aws-client-utils").Credentials | (() => Promise<import("@aws-amplify/core/internals/aws-client-utils").Credentials>);
|
|
25
23
|
region: string;
|
|
26
24
|
customEndpoint?: string | undefined;
|
|
27
25
|
forcePathStyle?: boolean | undefined;
|
|
26
|
+
userAgentHeader?: string | undefined;
|
|
27
|
+
maxAttempts?: number | undefined;
|
|
28
28
|
}, input: UploadPartInput) => Promise<UploadPartOutput>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadPart.mjs","sources":["../../../../../../src/providers/s3/utils/client/uploadPart.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 { AmplifyUrl, AmplifyUrlSearchParams, } from '@aws-amplify/core/internals/utils';\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { defaultConfig } from './base';\nimport {
|
|
1
|
+
{"version":3,"file":"uploadPart.mjs","sources":["../../../../../../src/providers/s3/utils/client/uploadPart.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 { AmplifyUrl, AmplifyUrlSearchParams, } from '@aws-amplify/core/internals/utils';\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { defaultConfig } from './base';\nimport { assignStringVariables, buildStorageServiceError, map, parseXmlError, s3TransferHandler, serializePathnameObjectKey, validateS3RequiredParameter, } from './utils';\nconst uploadPartSerializer = async (input, endpoint) => {\n const headers = {\n ...assignStringVariables({ 'content-md5': input.ContentMD5 }),\n };\n headers['content-type'] = 'application/octet-stream';\n const url = new AmplifyUrl(endpoint.url.toString());\n validateS3RequiredParameter(!!input.Key, 'Key');\n url.pathname = serializePathnameObjectKey(url, input.Key);\n validateS3RequiredParameter(!!input.PartNumber, 'PartNumber');\n validateS3RequiredParameter(!!input.UploadId, 'UploadId');\n url.search = new AmplifyUrlSearchParams({\n partNumber: input.PartNumber + '',\n uploadId: input.UploadId,\n }).toString();\n return {\n method: 'PUT',\n headers,\n url,\n body: input.Body,\n };\n};\nconst uploadPartDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n const error = (await parseXmlError(response));\n throw buildStorageServiceError(error, response.statusCode);\n }\n else {\n return {\n ...map(response.headers, {\n ETag: 'etag',\n }),\n $metadata: parseMetadata(response),\n };\n }\n};\nexport const uploadPart = composeServiceApi(s3TransferHandler, uploadPartSerializer, uploadPartDeserializer, { ...defaultConfig, responseType: 'text' });\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;AACA;AAMA,MAAM,oBAAoB,GAAG,OAAO,KAAK,EAAE,QAAQ,KAAK;AACxD,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,GAAG,qBAAqB,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;AACrE,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,0BAA0B,CAAC;AACzD,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxD,IAAI,2BAA2B,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACpD,IAAI,GAAG,CAAC,QAAQ,GAAG,0BAA0B,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9D,IAAI,2BAA2B,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAClE,IAAI,2BAA2B,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC9D,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,sBAAsB,CAAC;AAC5C,QAAQ,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,EAAE;AACzC,QAAQ,QAAQ,EAAE,KAAK,CAAC,QAAQ;AAChC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AAClB,IAAI,OAAO;AACX,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,OAAO;AACf,QAAQ,GAAG;AACX,QAAQ,IAAI,EAAE,KAAK,CAAC,IAAI;AACxB,KAAK,CAAC;AACN,CAAC,CAAC;AACF,MAAM,sBAAsB,GAAG,OAAO,QAAQ,KAAK;AACnD,IAAI,IAAI,QAAQ,CAAC,UAAU,IAAI,GAAG,EAAE;AACpC,QAAQ,MAAM,KAAK,IAAI,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtD,QAAQ,MAAM,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AACnE,KAAK;AACL,SAAS;AACT,QAAQ,OAAO;AACf,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE;AACrC,gBAAgB,IAAI,EAAE,MAAM;AAC5B,aAAa,CAAC;AACd,YAAY,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC;AAC9C,SAAS,CAAC;AACV,KAAK;AACL,CAAC,CAAC;AACU,MAAC,UAAU,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,EAAE,GAAG,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE;;;;"}
|
|
@@ -36,9 +36,7 @@ type InferInstructionResultType<T extends Instruction<any>> = (T extends Propert
|
|
|
36
36
|
*
|
|
37
37
|
* @internal
|
|
38
38
|
*/
|
|
39
|
-
export declare const map: <Instructions extends {
|
|
40
|
-
[key: string]: Instruction<any>;
|
|
41
|
-
}>(obj: Record<string, any>, instructions: Instructions) => { [K in keyof Instructions]: Instructions[K] extends infer T ? T extends Instructions[K] ? T extends PropertyNameWithSubsequentDeserializer<infer R> ? R : string : never : never; };
|
|
39
|
+
export declare const map: <Instructions extends Record<string, Instruction<any>>>(obj: Record<string, any>, instructions: Instructions) => { [K in keyof Instructions]: Instructions[K] extends infer T ? T extends Instructions[K] ? T extends PropertyNameWithSubsequentDeserializer<infer R> ? R : string : never : never; };
|
|
42
40
|
/**
|
|
43
41
|
* Deserializes a string to a number. Returns undefined if input is undefined.
|
|
44
42
|
*
|
|
@@ -40,7 +40,7 @@ const map = (obj, instructions) => {
|
|
|
40
40
|
const [accessor, deserializer] = Array.isArray(instruction)
|
|
41
41
|
? instruction
|
|
42
42
|
: [instruction];
|
|
43
|
-
if (
|
|
43
|
+
if (Object.prototype.hasOwnProperty.call(obj, accessor)) {
|
|
44
44
|
result[key] = deserializer
|
|
45
45
|
? deserializer(obj[accessor])
|
|
46
46
|
: String(obj[accessor]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializeHelpers.mjs","sources":["../../../../../../../src/providers/s3/utils/client/utils/deserializeHelpers.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { StorageError } from '../../../../../errors/StorageError';\n/**\n * Maps an object to a new object using the provided instructions.\n * The instructions are a map of the returning mapped object's property names to a single instruction of how to map the\n * value from the original object to the new object. There are two types of instructions:\n *\n * 1. A string representing the property name of the original object to map to the new object. The value mapped from\n * the original object will be the same as the value in the new object, and it can ONLY be string.\n *\n * 2. An array of two elements. The first element is the property name of the original object to map to the new object.\n * The second element is a function that takes the value from the original object and returns the value to be mapped to\n * the new object. The function can return any type.\n *\n * Example:\n * ```typescript\n * const input = {\n * Foo: 'foo',\n * BarList: [{value: 'bar1'}, {value: 'bar2'}]\n * }\n * const output = map(input, {\n * someFoo: 'Foo',\n * bar: ['BarList', (barList) => barList.map(bar => bar.value)]\n * baz: 'Baz' // Baz does not exist in input, so it will not be in the output.\n * });\n * // output = { someFoo: 'foo', bar: ['bar1', 'bar2'] }\n * ```\n *\n * @param obj The object containing the data to compose mapped object.\n * @param instructions The instructions mapping the object values to the new object.\n * @returns A new object with the mapped values.\n *\n * @internal\n */\nexport const map = (obj, instructions) => {\n const result = {};\n for (const [key, instruction] of Object.entries(instructions)) {\n const [accessor, deserializer] = Array.isArray(instruction)\n ? instruction\n : [instruction];\n if (
|
|
1
|
+
{"version":3,"file":"deserializeHelpers.mjs","sources":["../../../../../../../src/providers/s3/utils/client/utils/deserializeHelpers.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { StorageError } from '../../../../../errors/StorageError';\n/**\n * Maps an object to a new object using the provided instructions.\n * The instructions are a map of the returning mapped object's property names to a single instruction of how to map the\n * value from the original object to the new object. There are two types of instructions:\n *\n * 1. A string representing the property name of the original object to map to the new object. The value mapped from\n * the original object will be the same as the value in the new object, and it can ONLY be string.\n *\n * 2. An array of two elements. The first element is the property name of the original object to map to the new object.\n * The second element is a function that takes the value from the original object and returns the value to be mapped to\n * the new object. The function can return any type.\n *\n * Example:\n * ```typescript\n * const input = {\n * Foo: 'foo',\n * BarList: [{value: 'bar1'}, {value: 'bar2'}]\n * }\n * const output = map(input, {\n * someFoo: 'Foo',\n * bar: ['BarList', (barList) => barList.map(bar => bar.value)]\n * baz: 'Baz' // Baz does not exist in input, so it will not be in the output.\n * });\n * // output = { someFoo: 'foo', bar: ['bar1', 'bar2'] }\n * ```\n *\n * @param obj The object containing the data to compose mapped object.\n * @param instructions The instructions mapping the object values to the new object.\n * @returns A new object with the mapped values.\n *\n * @internal\n */\nexport const map = (obj, instructions) => {\n const result = {};\n for (const [key, instruction] of Object.entries(instructions)) {\n const [accessor, deserializer] = Array.isArray(instruction)\n ? instruction\n : [instruction];\n if (Object.prototype.hasOwnProperty.call(obj, accessor)) {\n result[key] = deserializer\n ? deserializer(obj[accessor])\n : String(obj[accessor]);\n }\n }\n return result;\n};\n/**\n * Deserializes a string to a number. Returns undefined if input is undefined.\n *\n * @internal\n */\nexport const deserializeNumber = (value) => value ? Number(value) : undefined;\n/**\n * Deserializes a string to a boolean. Returns undefined if input is undefined. Returns true if input is 'true',\n * otherwise false.\n *\n * @internal\n */\nexport const deserializeBoolean = (value) => {\n return value ? value === 'true' : undefined;\n};\n/**\n * Deserializes a string to a Date. Returns undefined if input is undefined.\n * It supports epoch timestamp; rfc3339(cannot have a UTC, fractional precision supported); rfc7231(section 7.1.1.1)\n *\n * @see https://www.epoch101.com/\n * @see https://datatracker.ietf.org/doc/html/rfc3339.html#section-5.6\n * @see https://datatracker.ietf.org/doc/html/rfc7231.html#section-7.1.1.1\n *\n * @note For bundle size consideration, we use Date constructor to parse the timestamp string. There might be slight\n * difference among browsers.\n *\n * @internal\n */\nexport const deserializeTimestamp = (value) => {\n return value ? new Date(value) : undefined;\n};\n/**\n * Function that makes sure the deserializer receives non-empty array.\n *\n * @internal\n */\nexport const emptyArrayGuard = (value, deserializer) => {\n if (value === '') {\n return [];\n }\n const valueArray = (Array.isArray(value) ? value : [value]).filter(e => e != null);\n return deserializer(valueArray);\n};\n/**\n * @internal\n */\nexport const deserializeMetadata = (headers) => {\n const objectMetadataHeaderPrefix = 'x-amz-meta-';\n const deserialized = Object.keys(headers)\n .filter(header => header.startsWith(objectMetadataHeaderPrefix))\n .reduce((acc, header) => {\n acc[header.replace(objectMetadataHeaderPrefix, '')] = headers[header];\n return acc;\n }, {});\n return Object.keys(deserialized).length > 0 ? deserialized : undefined;\n};\n/**\n * Internal-only method to create a new StorageError from a service error.\n *\n * @internal\n */\nexport const buildStorageServiceError = (error, statusCode) => {\n const storageError = new StorageError({\n name: error.name,\n message: error.message,\n });\n if (statusCode === 404) {\n storageError.recoverySuggestion =\n 'Please add the object with this key to the bucket as the key is not found.';\n }\n return storageError;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -12,12 +12,12 @@ const parseXmlError = async (response) => {
|
|
|
12
12
|
}
|
|
13
13
|
const { statusCode } = response;
|
|
14
14
|
const body = await parseXmlBody(response);
|
|
15
|
-
const code = body?.
|
|
15
|
+
const code = body?.Code
|
|
16
16
|
? body.Code
|
|
17
17
|
: statusCode === 404
|
|
18
18
|
? 'NotFound'
|
|
19
19
|
: statusCode.toString();
|
|
20
|
-
const message = body?.
|
|
20
|
+
const message = body?.message ?? body?.Message ?? code;
|
|
21
21
|
const error = new Error(message);
|
|
22
22
|
return Object.assign(error, {
|
|
23
23
|
name: code,
|
|
@@ -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?.
|
|
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.');\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,+BAA+B,CAAC,CAAC;AAC7D,SAAS;AACT,KAAK;AACL,IAAI,OAAO,EAAE,CAAC;AACd;;;;"}
|
|
@@ -33,12 +33,17 @@ const readFileToBase64 = (blob) => {
|
|
|
33
33
|
// response from readAsDataURL is always prepended with "data:*/*;base64,"
|
|
34
34
|
// reference: https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readyState
|
|
35
35
|
if (reader.readyState !== 2) {
|
|
36
|
-
|
|
36
|
+
reject(new Error('Reader aborted too early'));
|
|
37
|
+
return;
|
|
37
38
|
}
|
|
38
39
|
resolve(reader.result.split(',')[1]);
|
|
39
40
|
};
|
|
40
|
-
reader.onabort = () =>
|
|
41
|
-
|
|
41
|
+
reader.onabort = () => {
|
|
42
|
+
reject(new Error('Read aborted'));
|
|
43
|
+
};
|
|
44
|
+
reader.onerror = () => {
|
|
45
|
+
reject(reader.error);
|
|
46
|
+
};
|
|
42
47
|
// reader.readAsArrayBuffer is not available in RN
|
|
43
48
|
reader.readAsDataURL(blob);
|
|
44
49
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"md5.mjs","sources":["../../../../../src/providers/s3/utils/md5.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Md5 } from '@smithy/md5-js';\nimport { toBase64, utf8Encode } from './client/utils';\nexport const calculateContentMd5 = async (content) => {\n const hasher = new Md5();\n if (typeof content === 'string') {\n hasher.update(content);\n }\n else if (ArrayBuffer.isView(content) || content instanceof ArrayBuffer) {\n const blob = new Blob([content]);\n const buffer = await readFileToBase64(blob);\n hasher.update(buffer);\n }\n else {\n const buffer = await readFileToBase64(content);\n hasher.update(utf8Encode(buffer));\n }\n const digest = await hasher.digest();\n return toBase64(digest);\n};\nconst readFileToBase64 = (blob) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n // reference: https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL\n // response from readAsDataURL is always prepended with \"data:*/*;base64,\"\n // reference: https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readyState\n if (reader.readyState !== 2) {\n
|
|
1
|
+
{"version":3,"file":"md5.mjs","sources":["../../../../../src/providers/s3/utils/md5.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Md5 } from '@smithy/md5-js';\nimport { toBase64, utf8Encode } from './client/utils';\nexport const calculateContentMd5 = async (content) => {\n const hasher = new Md5();\n if (typeof content === 'string') {\n hasher.update(content);\n }\n else if (ArrayBuffer.isView(content) || content instanceof ArrayBuffer) {\n const blob = new Blob([content]);\n const buffer = await readFileToBase64(blob);\n hasher.update(buffer);\n }\n else {\n const buffer = await readFileToBase64(content);\n hasher.update(utf8Encode(buffer));\n }\n const digest = await hasher.digest();\n return toBase64(digest);\n};\nconst readFileToBase64 = (blob) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n // reference: https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL\n // response from readAsDataURL is always prepended with \"data:*/*;base64,\"\n // reference: https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readyState\n if (reader.readyState !== 2) {\n reject(new Error('Reader aborted too early'));\n return;\n }\n resolve(reader.result.split(',')[1]);\n };\n reader.onabort = () => {\n reject(new Error('Read aborted'));\n };\n reader.onerror = () => {\n reject(reader.error);\n };\n // reader.readAsArrayBuffer is not available in RN\n reader.readAsDataURL(blob);\n });\n};\n"],"names":[],"mappings":";;;;;;;;AAAA;AACA;AAGY,MAAC,mBAAmB,GAAG,OAAO,OAAO,KAAK;AACtD,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7B,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACrC,QAAQ,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/B,KAAK;AACL,SAAS,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,YAAY,WAAW,EAAE;AAC5E,QAAQ,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,QAAQ,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpD,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACvD,QAAQ,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;AACzC,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5B,EAAE;AACF,MAAM,gBAAgB,GAAG,CAAC,IAAI,KAAK;AACnC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQ,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AACxC,QAAQ,MAAM,CAAC,SAAS,GAAG,MAAM;AACjC;AACA;AACA;AACA,YAAY,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC,EAAE;AACzC,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;AAC9D,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,OAAO,GAAG,MAAM;AAC/B,YAAY,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AAC9C,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,OAAO,GAAG,MAAM;AAC/B,YAAY,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjC,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACnC,KAAK,CAAC,CAAC;AACP,CAAC;;;;"}
|
|
@@ -32,8 +32,12 @@ const readFile = (file) => {
|
|
|
32
32
|
if (reader.result) {
|
|
33
33
|
resolve(reader.result);
|
|
34
34
|
}
|
|
35
|
-
reader.onabort = () =>
|
|
36
|
-
|
|
35
|
+
reader.onabort = () => {
|
|
36
|
+
reject(new Error('Read aborted'));
|
|
37
|
+
};
|
|
38
|
+
reader.onerror = () => {
|
|
39
|
+
reject(reader.error);
|
|
40
|
+
};
|
|
37
41
|
};
|
|
38
42
|
if (file !== undefined)
|
|
39
43
|
reader.readAsArrayBuffer(file);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"md5.native.mjs","sources":["../../../../../src/providers/s3/utils/md5.native.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Md5 } from '@smithy/md5-js';\nimport { toBase64 } from './client/utils';\nexport const calculateContentMd5 = async (content) => {\n const hasher = new Md5();\n if (typeof content === 'string') {\n hasher.update(content);\n }\n else if (ArrayBuffer.isView(content) || content instanceof ArrayBuffer) {\n const blob = new Blob([content]);\n const buffer = await readFile(blob);\n hasher.update(buffer);\n }\n else {\n const buffer = await readFile(content);\n hasher.update(buffer);\n }\n const digest = await hasher.digest();\n return toBase64(digest);\n};\nconst readFile = (file) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n if (reader.result) {\n resolve(reader.result);\n }\n reader.onabort = () => reject(new Error('Read aborted'));\n reader.onerror = () => reject(reader.error);\n };\n if (file !== undefined)\n reader.readAsArrayBuffer(file);\n });\n};\n"],"names":[],"mappings":";;;;;;;;AAAA;AACA;AAGY,MAAC,mBAAmB,GAAG,OAAO,OAAO,KAAK;AACtD,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7B,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACrC,QAAQ,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/B,KAAK;AACL,SAAS,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,YAAY,WAAW,EAAE;AAC5E,QAAQ,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,QAAQ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/C,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;AACzC,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5B,EAAE;AACF,MAAM,QAAQ,GAAG,CAAC,IAAI,KAAK;AAC3B,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQ,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AACxC,QAAQ,MAAM,CAAC,SAAS,GAAG,MAAM;AACjC,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE;AAC/B,gBAAgB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvC,aAAa;AACb,YAAY,MAAM,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"md5.native.mjs","sources":["../../../../../src/providers/s3/utils/md5.native.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Md5 } from '@smithy/md5-js';\nimport { toBase64 } from './client/utils';\nexport const calculateContentMd5 = async (content) => {\n const hasher = new Md5();\n if (typeof content === 'string') {\n hasher.update(content);\n }\n else if (ArrayBuffer.isView(content) || content instanceof ArrayBuffer) {\n const blob = new Blob([content]);\n const buffer = await readFile(blob);\n hasher.update(buffer);\n }\n else {\n const buffer = await readFile(content);\n hasher.update(buffer);\n }\n const digest = await hasher.digest();\n return toBase64(digest);\n};\nconst readFile = (file) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n if (reader.result) {\n resolve(reader.result);\n }\n reader.onabort = () => {\n reject(new Error('Read aborted'));\n };\n reader.onerror = () => {\n reject(reader.error);\n };\n };\n if (file !== undefined)\n reader.readAsArrayBuffer(file);\n });\n};\n"],"names":[],"mappings":";;;;;;;;AAAA;AACA;AAGY,MAAC,mBAAmB,GAAG,OAAO,OAAO,KAAK;AACtD,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7B,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACrC,QAAQ,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/B,KAAK;AACL,SAAS,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,YAAY,WAAW,EAAE;AAC5E,QAAQ,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,QAAQ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/C,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;AACzC,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5B,EAAE;AACF,MAAM,QAAQ,GAAG,CAAC,IAAI,KAAK;AAC3B,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQ,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AACxC,QAAQ,MAAM,CAAC,SAAS,GAAG,MAAM;AACjC,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE;AAC/B,gBAAgB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvC,aAAa;AACb,YAAY,MAAM,CAAC,OAAO,GAAG,MAAM;AACnC,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AAClD,aAAa,CAAC;AACd,YAAY,MAAM,CAAC,OAAO,GAAG,MAAM;AACnC,gBAAgB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrC,aAAa,CAAC;AACd,SAAS,CAAC;AACV,QAAQ,IAAI,IAAI,KAAK,SAAS;AAC9B,YAAY,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC3C,KAAK,CAAC,CAAC;AACP,CAAC;;;;"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { AmplifyClassV6, StorageAccessLevel } from '@aws-amplify/core';
|
|
2
2
|
import { ResolvedS3Config } from '../types/options';
|
|
3
|
-
|
|
3
|
+
interface S3ApiOptions {
|
|
4
4
|
accessLevel?: StorageAccessLevel;
|
|
5
5
|
targetIdentityId?: string;
|
|
6
6
|
useAccelerateEndpoint?: boolean;
|
|
7
|
-
}
|
|
8
|
-
|
|
7
|
+
}
|
|
8
|
+
interface ResolvedS3ConfigAndInput {
|
|
9
9
|
s3Config: ResolvedS3Config;
|
|
10
10
|
bucket: string;
|
|
11
11
|
keyPrefix: string;
|
|
12
12
|
isObjectLockEnabled?: boolean;
|
|
13
|
-
}
|
|
13
|
+
}
|
|
14
14
|
/**
|
|
15
15
|
* resolve the common input options for S3 API handlers from Amplify configuration and library options.
|
|
16
16
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { assertValidationError } from '../../../errors/utils/assertValidationError.mjs';
|
|
2
2
|
import { StorageValidationErrorCode } from '../../../errors/types/validation.mjs';
|
|
3
|
-
import { DEFAULT_ACCESS_LEVEL, LOCAL_TESTING_S3_ENDPOINT } from './constants.mjs';
|
|
4
3
|
import { resolvePrefix } from '../../../utils/resolvePrefix.mjs';
|
|
4
|
+
import { DEFAULT_ACCESS_LEVEL, LOCAL_TESTING_S3_ENDPOINT } from './constants.mjs';
|
|
5
5
|
|
|
6
6
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
7
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveS3ConfigAndInput.mjs","sources":["../../../../../src/providers/s3/utils/resolveS3ConfigAndInput.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { StorageValidationErrorCode } from '../../../errors/types/validation';\nimport {
|
|
1
|
+
{"version":3,"file":"resolveS3ConfigAndInput.mjs","sources":["../../../../../src/providers/s3/utils/resolveS3ConfigAndInput.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { StorageValidationErrorCode } from '../../../errors/types/validation';\nimport { resolvePrefix as defaultPrefixResolver } from '../../../utils/resolvePrefix';\nimport { DEFAULT_ACCESS_LEVEL, LOCAL_TESTING_S3_ENDPOINT } from './constants';\n/**\n * resolve the common input options for S3 API handlers from Amplify configuration and library options.\n *\n * @param {AmplifyClassV6} amplify The Amplify instance.\n * @param {S3ApiOptions} apiOptions The input options for S3 provider.\n * @returns {Promise<ResolvedS3ConfigAndInput>} The resolved common input options for S3 API handlers.\n * @throws A {@link StorageError} with `error.name` from {@link StorageValidationErrorCode} indicating invalid\n * configurations or Amplify library options.\n *\n * @internal\n */\nexport const resolveS3ConfigAndInput = async (amplify, apiOptions) => {\n // identityId is always cached in memory if forceRefresh is not set. So we can safely make calls here.\n const { credentials, identityId } = await amplify.Auth.fetchAuthSession({\n forceRefresh: false,\n });\n assertValidationError(!!credentials, StorageValidationErrorCode.NoCredentials);\n assertValidationError(!!identityId, StorageValidationErrorCode.NoIdentityId);\n const { bucket, region, dangerouslyConnectToHttpEndpointForTesting } = amplify.getConfig()?.Storage?.S3 ?? {};\n assertValidationError(!!bucket, StorageValidationErrorCode.NoBucket);\n assertValidationError(!!region, StorageValidationErrorCode.NoRegion);\n const { defaultAccessLevel, prefixResolver = defaultPrefixResolver, isObjectLockEnabled, } = amplify.libraryOptions?.Storage?.S3 ?? {};\n const keyPrefix = await prefixResolver({\n accessLevel: apiOptions?.accessLevel ?? defaultAccessLevel ?? DEFAULT_ACCESS_LEVEL,\n // use conditional assign to make tsc happy because StorageOptions is a union type that may not have targetIdentityId\n targetIdentityId: apiOptions?.accessLevel === 'protected'\n ? apiOptions?.targetIdentityId ?? identityId\n : identityId,\n });\n return {\n s3Config: {\n credentials,\n region,\n useAccelerateEndpoint: apiOptions?.useAccelerateEndpoint,\n ...(dangerouslyConnectToHttpEndpointForTesting\n ? {\n customEndpoint: LOCAL_TESTING_S3_ENDPOINT,\n forcePathStyle: true,\n }\n : {}),\n },\n bucket,\n keyPrefix,\n isObjectLockEnabled,\n };\n};\n"],"names":["defaultPrefixResolver"],"mappings":";;;;;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,uBAAuB,GAAG,OAAO,OAAO,EAAE,UAAU,KAAK;AACtE;AACA,IAAI,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC5E,QAAQ,YAAY,EAAE,KAAK;AAC3B,KAAK,CAAC,CAAC;AACP,IAAI,qBAAqB,CAAC,CAAC,CAAC,WAAW,EAAE,0BAA0B,CAAC,aAAa,CAAC,CAAC;AACnF,IAAI,qBAAqB,CAAC,CAAC,CAAC,UAAU,EAAE,0BAA0B,CAAC,YAAY,CAAC,CAAC;AACjF,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,0CAA0C,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC;AAClH,IAAI,qBAAqB,CAAC,CAAC,CAAC,MAAM,EAAE,0BAA0B,CAAC,QAAQ,CAAC,CAAC;AACzE,IAAI,qBAAqB,CAAC,CAAC,CAAC,MAAM,EAAE,0BAA0B,CAAC,QAAQ,CAAC,CAAC;AACzE,IAAI,MAAM,EAAE,kBAAkB,EAAE,cAAc,GAAGA,aAAqB,EAAE,mBAAmB,GAAG,GAAG,OAAO,CAAC,cAAc,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC;AAC3I,IAAI,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC;AAC3C,QAAQ,WAAW,EAAE,UAAU,EAAE,WAAW,IAAI,kBAAkB,IAAI,oBAAoB;AAC1F;AACA,QAAQ,gBAAgB,EAAE,UAAU,EAAE,WAAW,KAAK,WAAW;AACjE,cAAc,UAAU,EAAE,gBAAgB,IAAI,UAAU;AACxD,cAAc,UAAU;AACxB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO;AACX,QAAQ,QAAQ,EAAE;AAClB,YAAY,WAAW;AACvB,YAAY,MAAM;AAClB,YAAY,qBAAqB,EAAE,UAAU,EAAE,qBAAqB;AACpE,YAAY,IAAI,0CAA0C;AAC1D,kBAAkB;AAClB,oBAAoB,cAAc,EAAE,yBAAyB;AAC7D,oBAAoB,cAAc,EAAE,IAAI;AACxC,iBAAiB;AACjB,kBAAkB,EAAE;AACpB,SAAS;AACT,QAAQ,MAAM;AACd,QAAQ,SAAS;AACjB,QAAQ,mBAAmB;AAC3B,KAAK,CAAC;AACN;;;;"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { DownloadTask, UploadTask } from '../../../types/common';
|
|
2
|
-
|
|
3
|
-
job
|
|
4
|
-
onCancel
|
|
5
|
-
}
|
|
2
|
+
interface CreateCancellableTaskOptions<Result> {
|
|
3
|
+
job(): Promise<Result>;
|
|
4
|
+
onCancel(message?: string): void;
|
|
5
|
+
}
|
|
6
6
|
type CancellableTask<Result> = DownloadTask<Result>;
|
|
7
7
|
export declare const createDownloadTask: <Result>({ job, onCancel, }: CreateCancellableTaskOptions<Result>) => CancellableTask<Result>;
|
|
8
|
-
|
|
9
|
-
job
|
|
10
|
-
onCancel
|
|
11
|
-
onResume
|
|
12
|
-
onPause
|
|
8
|
+
interface CreateUploadTaskOptions<Result> {
|
|
9
|
+
job(): Promise<Result>;
|
|
10
|
+
onCancel(message?: string): void;
|
|
11
|
+
onResume?(): void;
|
|
12
|
+
onPause?(): void;
|
|
13
13
|
isMultipartUpload?: boolean;
|
|
14
|
-
}
|
|
14
|
+
}
|
|
15
15
|
export declare const createUploadTask: <Result>({ job, onCancel, onResume, onPause, isMultipartUpload, }: CreateUploadTaskOptions<Result>) => UploadTask<Result>;
|
|
16
16
|
export {};
|
|
@@ -7,12 +7,14 @@ import { logger } from '../../../utils/logger.mjs';
|
|
|
7
7
|
// SPDX-License-Identifier: Apache-2.0
|
|
8
8
|
const createCancellableTask = ({ job, onCancel, }) => {
|
|
9
9
|
const state = 'IN_PROGRESS';
|
|
10
|
-
let canceledErrorMessage
|
|
10
|
+
let canceledErrorMessage;
|
|
11
11
|
const cancelableTask = {
|
|
12
12
|
cancel: (message) => {
|
|
13
|
-
const { state } = cancelableTask;
|
|
14
|
-
if (
|
|
15
|
-
|
|
13
|
+
const { state: taskState } = cancelableTask;
|
|
14
|
+
if (taskState === 'CANCELED' ||
|
|
15
|
+
taskState === 'ERROR' ||
|
|
16
|
+
taskState === 'SUCCESS') {
|
|
17
|
+
logger.debug(`This task cannot be canceled. State: ${taskState}`);
|
|
16
18
|
return;
|
|
17
19
|
}
|
|
18
20
|
cancelableTask.state = 'CANCELED';
|
|
@@ -53,6 +55,8 @@ const createUploadTask = ({ job, onCancel, onResume, onPause, isMultipartUpload,
|
|
|
53
55
|
logger.debug(`This task cannot be paused. State: ${state}`);
|
|
54
56
|
return;
|
|
55
57
|
}
|
|
58
|
+
// TODO(eslint): remove this linter suppression.
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
56
60
|
// @ts-ignore
|
|
57
61
|
uploadTask.state = 'PAUSED';
|
|
58
62
|
onPause?.();
|
|
@@ -63,6 +67,8 @@ const createUploadTask = ({ job, onCancel, onResume, onPause, isMultipartUpload,
|
|
|
63
67
|
logger.debug(`This task cannot be resumed. State: ${state}`);
|
|
64
68
|
return;
|
|
65
69
|
}
|
|
70
|
+
// TODO(eslint): remove this linter suppression.
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
66
72
|
// @ts-ignore
|
|
67
73
|
uploadTask.state = 'IN_PROGRESS';
|
|
68
74
|
onResume?.();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferTask.mjs","sources":["../../../../../src/providers/s3/utils/transferTask.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isCancelError } from '../../../errors/CanceledError';\nimport { logger } from '../../../utils';\nconst createCancellableTask = ({ job, onCancel, }) => {\n const state = 'IN_PROGRESS';\n let canceledErrorMessage
|
|
1
|
+
{"version":3,"file":"transferTask.mjs","sources":["../../../../../src/providers/s3/utils/transferTask.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isCancelError } from '../../../errors/CanceledError';\nimport { logger } from '../../../utils';\nconst createCancellableTask = ({ job, onCancel, }) => {\n const state = 'IN_PROGRESS';\n let canceledErrorMessage;\n const cancelableTask = {\n cancel: (message) => {\n const { state: taskState } = cancelableTask;\n if (taskState === 'CANCELED' ||\n taskState === 'ERROR' ||\n taskState === 'SUCCESS') {\n logger.debug(`This task cannot be canceled. State: ${taskState}`);\n return;\n }\n cancelableTask.state = 'CANCELED';\n canceledErrorMessage = message;\n onCancel(canceledErrorMessage);\n },\n state,\n };\n const wrappedJobPromise = (async () => {\n try {\n const result = await job();\n cancelableTask.state = 'SUCCESS';\n return result;\n }\n catch (e) {\n if (isCancelError(e)) {\n cancelableTask.state = 'CANCELED';\n e.message = canceledErrorMessage ?? e.message;\n }\n cancelableTask.state = 'ERROR';\n throw e;\n }\n })();\n return Object.assign(cancelableTask, {\n result: wrappedJobPromise,\n });\n};\nexport const createDownloadTask = createCancellableTask;\nexport const createUploadTask = ({ job, onCancel, onResume, onPause, isMultipartUpload, }) => {\n const cancellableTask = createCancellableTask({\n job,\n onCancel,\n });\n const uploadTask = Object.assign(cancellableTask, {\n pause: () => {\n const { state } = uploadTask;\n if (!isMultipartUpload || state !== 'IN_PROGRESS') {\n logger.debug(`This task cannot be paused. State: ${state}`);\n return;\n }\n // TODO(eslint): remove this linter suppression.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n uploadTask.state = 'PAUSED';\n onPause?.();\n },\n resume: () => {\n const { state } = uploadTask;\n if (!isMultipartUpload || state !== 'PAUSED') {\n logger.debug(`This task cannot be resumed. State: ${state}`);\n return;\n }\n // TODO(eslint): remove this linter suppression.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n uploadTask.state = 'IN_PROGRESS';\n onResume?.();\n },\n });\n return uploadTask;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export type TransferTaskState = 'IN_PROGRESS' | 'PAUSED' | 'CANCELED' | 'SUCCESS' | 'ERROR';
|
|
2
|
-
export
|
|
2
|
+
export interface TransferProgressEvent {
|
|
3
3
|
transferredBytes: number;
|
|
4
4
|
totalBytes?: number;
|
|
5
|
-
}
|
|
6
|
-
export
|
|
5
|
+
}
|
|
6
|
+
export interface TransferTask<Result> {
|
|
7
7
|
/**
|
|
8
8
|
* Cancel an ongoing transfer(upload/download) task. This will reject the `result` promise with an `AbortError` by
|
|
9
9
|
* default. You can use `isCancelError` to check if the error is caused by cancellation.
|
|
@@ -12,17 +12,17 @@ export type TransferTask<Result> = {
|
|
|
12
12
|
* canceled. If provided, the `result` promise will be rejected with a {@link CanceledError} with supplied error
|
|
13
13
|
* message instead.
|
|
14
14
|
*/
|
|
15
|
-
cancel
|
|
15
|
+
cancel(message?: string): void;
|
|
16
16
|
/**
|
|
17
17
|
* Pause an ongoing transfer(upload/download) task. This method does not support the following scenarios:
|
|
18
18
|
* * Downloading data or file from given key.
|
|
19
19
|
*/
|
|
20
|
-
pause
|
|
20
|
+
pause(): void;
|
|
21
21
|
/**
|
|
22
22
|
* Resume a paused transfer(upload/download) task. This method does not support the following scenarios:
|
|
23
23
|
* * Downloading data or file from given key.
|
|
24
24
|
*/
|
|
25
|
-
resume
|
|
25
|
+
resume(): void;
|
|
26
26
|
/**
|
|
27
27
|
* Current state of the transfer task.
|
|
28
28
|
*/
|
|
@@ -31,6 +31,6 @@ export type TransferTask<Result> = {
|
|
|
31
31
|
* Promise that resolves when the transfer task is completed. The promise will be rejected if the task is canceled.
|
|
32
32
|
*/
|
|
33
33
|
result: Promise<Result>;
|
|
34
|
-
}
|
|
34
|
+
}
|
|
35
35
|
export type DownloadTask<Result> = Omit<TransferTask<Result>, 'pause' | 'resume'>;
|
|
36
36
|
export type UploadTask<Result> = TransferTask<Result>;
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
1
|
+
import { StorageListAllOptions, StorageListPaginateOptions, StorageOptions } from './options';
|
|
2
|
+
export interface StorageOperationInput<Options extends StorageOptions> {
|
|
3
3
|
key: string;
|
|
4
4
|
options?: Options;
|
|
5
|
-
}
|
|
5
|
+
}
|
|
6
6
|
export type StorageGetPropertiesInput<Options extends StorageOptions> = StorageOperationInput<Options>;
|
|
7
|
-
export
|
|
7
|
+
export interface StorageRemoveInput<Options extends StorageOptions> {
|
|
8
8
|
key: string;
|
|
9
9
|
options?: Options;
|
|
10
|
-
}
|
|
11
|
-
export
|
|
10
|
+
}
|
|
11
|
+
export interface StorageListInput<Options extends StorageListAllOptions | StorageListPaginateOptions> {
|
|
12
12
|
prefix?: string;
|
|
13
13
|
options?: Options;
|
|
14
|
-
}
|
|
14
|
+
}
|
|
15
15
|
export type StorageGetUrlInput<Options extends StorageOptions> = StorageOperationInput<Options>;
|
|
16
16
|
export type StorageDownloadDataInput<Options extends StorageOptions> = StorageOperationInput<Options>;
|
|
17
17
|
export type StorageUploadDataInput<Options extends StorageOptions> = StorageOperationInput<Options> & {
|
|
18
18
|
data: StorageUploadDataPayload;
|
|
19
19
|
};
|
|
20
|
-
export
|
|
20
|
+
export interface StorageCopyInput<SourceOptions extends StorageOptions, DestinationOptions extends StorageOptions> {
|
|
21
21
|
source: SourceOptions;
|
|
22
22
|
destination: DestinationOptions;
|
|
23
|
-
}
|
|
23
|
+
}
|
|
24
24
|
/**
|
|
25
25
|
* The data payload type for upload operation.
|
|
26
26
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ResponseBodyMixin } from '@aws-amplify/core/internals/aws-client-utils';
|
|
2
|
-
export
|
|
2
|
+
export interface StorageItem {
|
|
3
3
|
/**
|
|
4
4
|
* Key of the object
|
|
5
5
|
*/
|
|
@@ -22,11 +22,11 @@ export type StorageItem = {
|
|
|
22
22
|
* @see https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html#UserMetadata
|
|
23
23
|
*/
|
|
24
24
|
metadata?: Record<string, string>;
|
|
25
|
-
}
|
|
25
|
+
}
|
|
26
26
|
export type StorageDownloadDataOutput<T extends StorageItem> = T & {
|
|
27
27
|
body: ResponseBodyMixin;
|
|
28
28
|
};
|
|
29
|
-
export
|
|
29
|
+
export interface StorageGetUrlOutput {
|
|
30
30
|
/**
|
|
31
31
|
* presigned URL of the given object.
|
|
32
32
|
*/
|
|
@@ -35,8 +35,8 @@ export type StorageGetUrlOutput = {
|
|
|
35
35
|
* expiresAt is date in which generated URL expires.
|
|
36
36
|
*/
|
|
37
37
|
expiresAt: Date;
|
|
38
|
-
}
|
|
38
|
+
}
|
|
39
39
|
export type StorageUploadOutput<Item extends StorageItem> = Item;
|
|
40
|
-
export
|
|
40
|
+
export interface StorageListOutput<Item extends StorageItem> {
|
|
41
41
|
items: Item[];
|
|
42
|
-
}
|
|
42
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { StorageAccessLevel } from '@aws-amplify/core';
|
|
2
|
-
|
|
2
|
+
interface ResolvePrefixOptions {
|
|
3
3
|
accessLevel: StorageAccessLevel;
|
|
4
4
|
targetIdentityId?: string;
|
|
5
|
-
}
|
|
5
|
+
}
|
|
6
6
|
export declare const resolvePrefix: ({ accessLevel, targetIdentityId, }: ResolvePrefixOptions) => string;
|
|
7
7
|
export {};
|