@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
|
@@ -12,20 +12,21 @@ import {
|
|
|
12
12
|
AmplifyUrlSearchParams,
|
|
13
13
|
} from '@aws-amplify/core/internals/utils';
|
|
14
14
|
import { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';
|
|
15
|
+
|
|
15
16
|
import type {
|
|
17
|
+
CompletedPart,
|
|
16
18
|
ListPartsCommandInput,
|
|
17
19
|
ListPartsCommandOutput,
|
|
18
|
-
CompletedPart,
|
|
19
20
|
} from './types';
|
|
20
21
|
import { defaultConfig } from './base';
|
|
21
22
|
import {
|
|
22
23
|
buildStorageServiceError,
|
|
24
|
+
deserializeNumber,
|
|
23
25
|
emptyArrayGuard,
|
|
24
26
|
map,
|
|
25
27
|
parseXmlBody,
|
|
26
28
|
parseXmlError,
|
|
27
29
|
s3TransferHandler,
|
|
28
|
-
deserializeNumber,
|
|
29
30
|
serializePathnameObjectKey,
|
|
30
31
|
validateS3RequiredParameter,
|
|
31
32
|
} from './utils';
|
|
@@ -42,7 +43,7 @@ export type ListPartsOutput = Pick<
|
|
|
42
43
|
|
|
43
44
|
const listPartsSerializer = async (
|
|
44
45
|
input: ListPartsInput,
|
|
45
|
-
endpoint: Endpoint
|
|
46
|
+
endpoint: Endpoint,
|
|
46
47
|
): Promise<HttpRequest> => {
|
|
47
48
|
const headers = {};
|
|
48
49
|
const url = new AmplifyUrl(endpoint.url.toString());
|
|
@@ -52,6 +53,7 @@ const listPartsSerializer = async (
|
|
|
52
53
|
url.search = new AmplifyUrlSearchParams({
|
|
53
54
|
uploadId: input.UploadId,
|
|
54
55
|
}).toString();
|
|
56
|
+
|
|
55
57
|
return {
|
|
56
58
|
method: 'GET',
|
|
57
59
|
headers,
|
|
@@ -60,7 +62,7 @@ const listPartsSerializer = async (
|
|
|
60
62
|
};
|
|
61
63
|
|
|
62
64
|
const listPartsDeserializer = async (
|
|
63
|
-
response: HttpResponse
|
|
65
|
+
response: HttpResponse,
|
|
64
66
|
): Promise<ListPartsOutput> => {
|
|
65
67
|
if (response.statusCode >= 300) {
|
|
66
68
|
const error = (await parseXmlError(response)) as Error;
|
|
@@ -74,6 +76,7 @@ const listPartsDeserializer = async (
|
|
|
74
76
|
value => emptyArrayGuard(value, deserializeCompletedPartList),
|
|
75
77
|
],
|
|
76
78
|
});
|
|
79
|
+
|
|
77
80
|
return {
|
|
78
81
|
$metadata: parseMetadata(response),
|
|
79
82
|
...contents,
|
|
@@ -87,12 +90,12 @@ const deserializeCompletedPartList = (input: any[]): CompletedPart[] =>
|
|
|
87
90
|
PartNumber: ['PartNumber', deserializeNumber],
|
|
88
91
|
ETag: 'ETag',
|
|
89
92
|
Size: ['Size', deserializeNumber],
|
|
90
|
-
})
|
|
93
|
+
}),
|
|
91
94
|
);
|
|
92
95
|
|
|
93
96
|
export const listParts = composeServiceApi(
|
|
94
97
|
s3TransferHandler,
|
|
95
98
|
listPartsSerializer,
|
|
96
99
|
listPartsDeserializer,
|
|
97
|
-
{ ...defaultConfig, responseType: 'text' }
|
|
100
|
+
{ ...defaultConfig, responseType: 'text' },
|
|
98
101
|
);
|
|
@@ -13,14 +13,14 @@ import { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/
|
|
|
13
13
|
import { defaultConfig } from './base';
|
|
14
14
|
import type { PutObjectCommandInput, PutObjectCommandOutput } from './types';
|
|
15
15
|
import {
|
|
16
|
-
buildStorageServiceError,
|
|
17
|
-
validateS3RequiredParameter,
|
|
18
16
|
assignStringVariables,
|
|
17
|
+
buildStorageServiceError,
|
|
19
18
|
map,
|
|
20
19
|
parseXmlError,
|
|
21
20
|
s3TransferHandler,
|
|
22
21
|
serializeObjectConfigsToHeaders,
|
|
23
22
|
serializePathnameObjectKey,
|
|
23
|
+
validateS3RequiredParameter,
|
|
24
24
|
} from './utils';
|
|
25
25
|
|
|
26
26
|
export type PutObjectInput = Pick<
|
|
@@ -48,7 +48,7 @@ export type PutObjectOutput = Pick<
|
|
|
48
48
|
|
|
49
49
|
const putObjectSerializer = async (
|
|
50
50
|
input: PutObjectInput,
|
|
51
|
-
endpoint: Endpoint
|
|
51
|
+
endpoint: Endpoint,
|
|
52
52
|
): Promise<HttpRequest> => {
|
|
53
53
|
const headers = {
|
|
54
54
|
...(await serializeObjectConfigsToHeaders({
|
|
@@ -60,6 +60,7 @@ const putObjectSerializer = async (
|
|
|
60
60
|
const url = new AmplifyUrl(endpoint.url.toString());
|
|
61
61
|
validateS3RequiredParameter(!!input.Key, 'Key');
|
|
62
62
|
url.pathname = serializePathnameObjectKey(url, input.Key);
|
|
63
|
+
|
|
63
64
|
return {
|
|
64
65
|
method: 'PUT',
|
|
65
66
|
headers,
|
|
@@ -69,7 +70,7 @@ const putObjectSerializer = async (
|
|
|
69
70
|
};
|
|
70
71
|
|
|
71
72
|
const putObjectDeserializer = async (
|
|
72
|
-
response: HttpResponse
|
|
73
|
+
response: HttpResponse,
|
|
73
74
|
): Promise<PutObjectOutput> => {
|
|
74
75
|
if (response.statusCode >= 300) {
|
|
75
76
|
const error = (await parseXmlError(response)) as Error;
|
|
@@ -89,5 +90,5 @@ export const putObject = composeServiceApi(
|
|
|
89
90
|
s3TransferHandler,
|
|
90
91
|
putObjectSerializer,
|
|
91
92
|
putObjectDeserializer,
|
|
92
|
-
{ ...defaultConfig, responseType: 'text' }
|
|
93
|
+
{ ...defaultConfig, responseType: 'text' },
|
|
93
94
|
);
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
function bytesToBase64(bytes: Uint8Array): string {
|
|
5
5
|
const base64Str = Array.from(bytes, x => String.fromCodePoint(x)).join('');
|
|
6
|
+
|
|
6
7
|
return btoa(base64Str);
|
|
7
8
|
}
|
|
8
9
|
|
|
@@ -16,6 +17,6 @@ export function toBase64(input: string | ArrayBufferView): string {
|
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
return bytesToBase64(
|
|
19
|
-
new Uint8Array(input.buffer, input.byteOffset, input.byteLength)
|
|
20
|
+
new Uint8Array(input.buffer, input.byteOffset, input.byteLength),
|
|
20
21
|
);
|
|
21
22
|
}
|
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
HttpRequest,
|
|
6
|
-
getHashedPayload,
|
|
7
|
-
MiddlewareHandler,
|
|
8
6
|
HttpResponse,
|
|
7
|
+
MiddlewareHandler,
|
|
8
|
+
getHashedPayload,
|
|
9
9
|
} from '@aws-amplify/core/internals/aws-client-utils';
|
|
10
|
+
|
|
10
11
|
import { CONTENT_SHA256_HEADER } from './constants';
|
|
11
12
|
|
|
12
13
|
/**
|
|
@@ -16,14 +17,15 @@ import { CONTENT_SHA256_HEADER } from './constants';
|
|
|
16
17
|
*
|
|
17
18
|
* @internal
|
|
18
19
|
*/
|
|
19
|
-
export const
|
|
20
|
-
(
|
|
20
|
+
export const contentSha256MiddlewareFactory =
|
|
21
|
+
() => (next: MiddlewareHandler<HttpRequest, HttpResponse>) =>
|
|
21
22
|
async function contentSha256Middleware(request: HttpRequest) {
|
|
22
23
|
if (request.headers[CONTENT_SHA256_HEADER]) {
|
|
23
24
|
return next(request);
|
|
24
25
|
} else {
|
|
25
26
|
const hash = await getHashedPayload(request.body);
|
|
26
27
|
request.headers[CONTENT_SHA256_HEADER] = hash;
|
|
28
|
+
|
|
27
29
|
return next(request);
|
|
28
30
|
}
|
|
29
31
|
};
|
|
@@ -6,9 +6,11 @@ import {
|
|
|
6
6
|
HttpResponse,
|
|
7
7
|
authenticatedHandler,
|
|
8
8
|
} from '@aws-amplify/core/internals/aws-client-utils';
|
|
9
|
-
import type { s3TransferHandler as s3BrowserTransferhandler } from './xhr';
|
|
10
9
|
import { composeTransferHandler } from '@aws-amplify/core/internals/aws-client-utils/composers';
|
|
11
|
-
|
|
10
|
+
|
|
11
|
+
import { contentSha256MiddlewareFactory } from '../contentSha256middleware';
|
|
12
|
+
|
|
13
|
+
import type { s3TransferHandler as s3BrowserTransferHandler } from './xhr';
|
|
12
14
|
|
|
13
15
|
/**
|
|
14
16
|
* S3 transfer handler for node based on Node-fetch. On top of basic transfer handler, it also supports
|
|
@@ -16,10 +18,10 @@ import { contentSha256Middleware } from '../contentSha256middleware';
|
|
|
16
18
|
*
|
|
17
19
|
* @internal
|
|
18
20
|
*/
|
|
19
|
-
export const s3TransferHandler: typeof
|
|
21
|
+
export const s3TransferHandler: typeof s3BrowserTransferHandler =
|
|
20
22
|
composeTransferHandler<
|
|
21
|
-
[
|
|
23
|
+
[object],
|
|
22
24
|
HttpRequest,
|
|
23
25
|
HttpResponse,
|
|
24
26
|
typeof authenticatedHandler
|
|
25
|
-
>(authenticatedHandler, [
|
|
27
|
+
>(authenticatedHandler, [contentSha256MiddlewareFactory]);
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
|
-
|
|
5
|
+
HttpRequest,
|
|
6
|
+
HttpResponse,
|
|
6
7
|
RetryOptions,
|
|
7
|
-
signingMiddleware,
|
|
8
8
|
SigningOptions,
|
|
9
|
-
userAgentMiddleware,
|
|
10
9
|
UserAgentOptions,
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
retryMiddlewareFactory,
|
|
11
|
+
signingMiddlewareFactory,
|
|
12
|
+
userAgentMiddlewareFactory,
|
|
13
13
|
} from '@aws-amplify/core/internals/aws-client-utils';
|
|
14
14
|
import { composeTransferHandler } from '@aws-amplify/core/internals/aws-client-utils/composers';
|
|
15
15
|
|
|
16
|
-
import {
|
|
16
|
+
import { contentSha256MiddlewareFactory } from '../contentSha256middleware';
|
|
17
17
|
import { xhrTransferHandler } from '../xhrTransferHandler';
|
|
18
18
|
|
|
19
19
|
/**
|
|
@@ -23,13 +23,13 @@ import { xhrTransferHandler } from '../xhrTransferHandler';
|
|
|
23
23
|
* @internal
|
|
24
24
|
*/
|
|
25
25
|
export const s3TransferHandler = composeTransferHandler<
|
|
26
|
-
[
|
|
26
|
+
[object, UserAgentOptions, RetryOptions<HttpResponse>, SigningOptions],
|
|
27
27
|
HttpRequest,
|
|
28
28
|
HttpResponse,
|
|
29
29
|
typeof xhrTransferHandler
|
|
30
30
|
>(xhrTransferHandler, [
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
contentSha256MiddlewareFactory,
|
|
32
|
+
userAgentMiddlewareFactory,
|
|
33
|
+
retryMiddlewareFactory,
|
|
34
|
+
signingMiddlewareFactory,
|
|
35
35
|
]);
|
|
@@ -4,11 +4,15 @@
|
|
|
4
4
|
import {
|
|
5
5
|
HttpRequest,
|
|
6
6
|
HttpResponse,
|
|
7
|
-
TransferHandler,
|
|
8
7
|
ResponseBodyMixin,
|
|
8
|
+
TransferHandler,
|
|
9
9
|
withMemoization,
|
|
10
10
|
} from '@aws-amplify/core/internals/aws-client-utils';
|
|
11
11
|
import { ConsoleLogger } from '@aws-amplify/core';
|
|
12
|
+
|
|
13
|
+
import { TransferProgressEvent } from '../../../../../types/common';
|
|
14
|
+
import { CanceledError } from '../../../../../errors/CanceledError';
|
|
15
|
+
|
|
12
16
|
import {
|
|
13
17
|
ABORT_ERROR_CODE,
|
|
14
18
|
ABORT_ERROR_MESSAGE,
|
|
@@ -17,8 +21,6 @@ import {
|
|
|
17
21
|
NETWORK_ERROR_CODE,
|
|
18
22
|
NETWORK_ERROR_MESSAGE,
|
|
19
23
|
} from './constants';
|
|
20
|
-
import { TransferProgressEvent } from '../../../../../types/common';
|
|
21
|
-
import { CanceledError } from '../../../../../errors/CanceledError';
|
|
22
24
|
|
|
23
25
|
const logger = new ConsoleLogger('xhr-http-handler');
|
|
24
26
|
|
|
@@ -30,8 +32,8 @@ export interface XhrTransferHandlerOptions {
|
|
|
30
32
|
// download binary data. Otherwise, use `text` to return the response as a string.
|
|
31
33
|
responseType: 'text' | 'blob';
|
|
32
34
|
abortSignal?: AbortSignal;
|
|
33
|
-
onDownloadProgress
|
|
34
|
-
onUploadProgress
|
|
35
|
+
onDownloadProgress?(event: TransferProgressEvent): void;
|
|
36
|
+
onUploadProgress?(event: TransferProgressEvent): void;
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
/**
|
|
@@ -80,7 +82,7 @@ export const xhrTransferHandler: TransferHandler<
|
|
|
80
82
|
xhr.addEventListener('error', () => {
|
|
81
83
|
const networkError = buildHandlerError(
|
|
82
84
|
NETWORK_ERROR_MESSAGE,
|
|
83
|
-
NETWORK_ERROR_CODE
|
|
85
|
+
NETWORK_ERROR_CODE,
|
|
84
86
|
);
|
|
85
87
|
logger.error(NETWORK_ERROR_MESSAGE);
|
|
86
88
|
reject(networkError);
|
|
@@ -111,24 +113,25 @@ export const xhrTransferHandler: TransferHandler<
|
|
|
111
113
|
// The load event is triggered after the error/abort/load event. So we need to check if the xhr is null.
|
|
112
114
|
if (!xhr) return;
|
|
113
115
|
const responseHeaders = convertResponseHeaders(
|
|
114
|
-
xhr.getAllResponseHeaders()
|
|
116
|
+
xhr.getAllResponseHeaders(),
|
|
115
117
|
);
|
|
116
|
-
const responseType = xhr
|
|
118
|
+
const { responseType: loadEndResponseType } = xhr;
|
|
117
119
|
const responseBlob = xhr.response as Blob;
|
|
118
|
-
const responseText =
|
|
120
|
+
const responseText =
|
|
121
|
+
loadEndResponseType === 'text' ? xhr.responseText : '';
|
|
119
122
|
const bodyMixIn: ResponseBodyMixin = {
|
|
120
123
|
blob: () => Promise.resolve(responseBlob),
|
|
121
124
|
text: withMemoization(() =>
|
|
122
|
-
|
|
125
|
+
loadEndResponseType === 'blob'
|
|
123
126
|
? readBlobAsText(responseBlob)
|
|
124
|
-
: Promise.resolve(responseText)
|
|
127
|
+
: Promise.resolve(responseText),
|
|
125
128
|
),
|
|
126
129
|
json: () =>
|
|
127
130
|
Promise.reject(
|
|
128
131
|
// S3 does not support JSON response. So fail-fast here with nicer error message.
|
|
129
132
|
new Error(
|
|
130
|
-
'Parsing response to JSON is not implemented. Please use response.text() instead.'
|
|
131
|
-
)
|
|
133
|
+
'Parsing response to JSON is not implemented. Please use response.text() instead.',
|
|
134
|
+
),
|
|
132
135
|
),
|
|
133
136
|
};
|
|
134
137
|
const response: HttpResponse = {
|
|
@@ -184,7 +187,7 @@ export const xhrTransferHandler: TransferHandler<
|
|
|
184
187
|
};
|
|
185
188
|
|
|
186
189
|
const convertToTransferProgressEvent = (
|
|
187
|
-
event: ProgressEvent
|
|
190
|
+
event: ProgressEvent,
|
|
188
191
|
): TransferProgressEvent => ({
|
|
189
192
|
transferredBytes: event.loaded,
|
|
190
193
|
totalBytes: event.lengthComputable ? event.total : undefined,
|
|
@@ -193,6 +196,7 @@ const convertToTransferProgressEvent = (
|
|
|
193
196
|
const buildHandlerError = (message: string, name: string): Error => {
|
|
194
197
|
const error = new Error(message);
|
|
195
198
|
error.name = name;
|
|
199
|
+
|
|
196
200
|
return error;
|
|
197
201
|
};
|
|
198
202
|
|
|
@@ -205,6 +209,7 @@ const convertResponseHeaders = (xhrHeaders: string): Record<string, string> => {
|
|
|
205
209
|
if (!xhrHeaders) {
|
|
206
210
|
return {};
|
|
207
211
|
}
|
|
212
|
+
|
|
208
213
|
return xhrHeaders
|
|
209
214
|
.split('\r\n')
|
|
210
215
|
.reduce((headerMap: Record<string, string>, line: string) => {
|
|
@@ -212,12 +217,14 @@ const convertResponseHeaders = (xhrHeaders: string): Record<string, string> => {
|
|
|
212
217
|
const header = parts.shift()!;
|
|
213
218
|
const value = parts.join(': ');
|
|
214
219
|
headerMap[header.toLowerCase()] = value;
|
|
220
|
+
|
|
215
221
|
return headerMap;
|
|
216
222
|
}, {});
|
|
217
223
|
};
|
|
218
224
|
|
|
219
225
|
const readBlobAsText = (blob: Blob) => {
|
|
220
226
|
const reader = new FileReader();
|
|
227
|
+
|
|
221
228
|
return new Promise<string>((resolve, reject) => {
|
|
222
229
|
reader.onloadend = () => {
|
|
223
230
|
if (reader.readyState !== FileReader.DONE) {
|
|
@@ -12,6 +12,7 @@ export const parser = {
|
|
|
12
12
|
const xml = domParser.parseFromString(xmlStr, 'text/xml');
|
|
13
13
|
const parsedObj = parseXmlNode(xml);
|
|
14
14
|
const rootKey = Object.keys(parsedObj)[0];
|
|
15
|
+
|
|
15
16
|
return parsedObj[rootKey];
|
|
16
17
|
},
|
|
17
18
|
};
|
|
@@ -31,13 +32,12 @@ const parseXmlNode = (node: Node): any => {
|
|
|
31
32
|
// Node like <Location>foo</Location> will be converted to { Location: 'foo' }
|
|
32
33
|
// instead of { Location: { '#text': 'foo' } }.
|
|
33
34
|
if (isTextOnlyElementNode(node)) {
|
|
34
|
-
return node.childNodes[0]
|
|
35
|
+
return node.childNodes[0].nodeValue!;
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
const nodeValue: Record<string, any> = {};
|
|
38
39
|
// convert attributes
|
|
39
|
-
for (
|
|
40
|
-
const attr = node.attributes[i];
|
|
40
|
+
for (const attr of node.attributes) {
|
|
41
41
|
if (!isNamespaceAttributeName(attr.nodeName)) {
|
|
42
42
|
nodeValue[attr.nodeName] = attr.nodeValue!;
|
|
43
43
|
}
|
|
@@ -45,8 +45,7 @@ const parseXmlNode = (node: Node): any => {
|
|
|
45
45
|
|
|
46
46
|
// convert child nodes
|
|
47
47
|
if (node.children.length > 0) {
|
|
48
|
-
for (
|
|
49
|
-
const child = node.children[i];
|
|
48
|
+
for (const child of node.children) {
|
|
50
49
|
const childValue = parseXmlNode(child);
|
|
51
50
|
if (childValue === undefined) {
|
|
52
51
|
continue;
|
|
@@ -79,12 +78,12 @@ const isTextOnlyElementNode = (node: Element): boolean =>
|
|
|
79
78
|
node.firstChild?.nodeType === Node.TEXT_NODE;
|
|
80
79
|
|
|
81
80
|
const hasOnlyNamespaceAttributes = (node: Element): boolean => {
|
|
82
|
-
for (
|
|
83
|
-
const attr = node.attributes[i];
|
|
81
|
+
for (const attr of node.attributes) {
|
|
84
82
|
if (!isNamespaceAttributeName(attr.nodeName)) {
|
|
85
83
|
return false;
|
|
86
84
|
}
|
|
87
85
|
}
|
|
86
|
+
|
|
88
87
|
return true;
|
|
89
88
|
};
|
|
90
89
|
|
|
@@ -12,7 +12,7 @@ import { XMLParser } from 'fast-xml-parser';
|
|
|
12
12
|
*/
|
|
13
13
|
export const parser = {
|
|
14
14
|
parse: (xmlStr: string): any => {
|
|
15
|
-
const
|
|
15
|
+
const xmlParser = new XMLParser({
|
|
16
16
|
attributeNamePrefix: '',
|
|
17
17
|
htmlEntities: true,
|
|
18
18
|
ignoreAttributes: false,
|
|
@@ -23,9 +23,9 @@ export const parser = {
|
|
|
23
23
|
tagValueProcessor: (_, val) =>
|
|
24
24
|
val.trim() === '' && val.includes('\n') ? '' : undefined,
|
|
25
25
|
});
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const parsedObj: any =
|
|
26
|
+
xmlParser.addEntity('#xD', '\r');
|
|
27
|
+
xmlParser.addEntity('#10', '\n');
|
|
28
|
+
const parsedObj: any = xmlParser.parse(xmlStr);
|
|
29
29
|
const textNodeName = '#text';
|
|
30
30
|
const key = Object.keys(parsedObj)[0];
|
|
31
31
|
const parsedObjToReturn = parsedObj[key];
|
|
@@ -33,6 +33,7 @@ export const parser = {
|
|
|
33
33
|
parsedObjToReturn[key] = parsedObjToReturn[textNodeName];
|
|
34
34
|
delete parsedObjToReturn[textNodeName];
|
|
35
35
|
}
|
|
36
|
+
|
|
36
37
|
return getValueFromTextNode(parsedObjToReturn);
|
|
37
38
|
},
|
|
38
39
|
};
|
|
@@ -45,11 +46,15 @@ export const parser = {
|
|
|
45
46
|
const getValueFromTextNode = (obj: any) => {
|
|
46
47
|
const textNodeName = '#text';
|
|
47
48
|
for (const key in obj) {
|
|
48
|
-
if (
|
|
49
|
+
if (
|
|
50
|
+
Object.prototype.hasOwnProperty.call(obj, key) &&
|
|
51
|
+
obj[key][textNodeName] !== undefined
|
|
52
|
+
) {
|
|
49
53
|
obj[key] = obj[key][textNodeName];
|
|
50
54
|
} else if (typeof obj[key] === 'object' && obj[key] !== null) {
|
|
51
55
|
obj[key] = getValueFromTextNode(obj[key]);
|
|
52
56
|
}
|
|
53
57
|
}
|
|
58
|
+
|
|
54
59
|
return obj;
|
|
55
60
|
};
|
|
@@ -112,8 +112,7 @@ declare const TaggingDirective: {
|
|
|
112
112
|
*
|
|
113
113
|
* The input for {@link AbortMultipartUploadCommand}.
|
|
114
114
|
*/
|
|
115
|
-
export
|
|
116
|
-
extends AbortMultipartUploadRequest {}
|
|
115
|
+
export type AbortMultipartUploadCommandInput = AbortMultipartUploadRequest;
|
|
117
116
|
/**
|
|
118
117
|
* @public
|
|
119
118
|
*
|
|
@@ -183,8 +182,8 @@ export interface CommonPrefix {
|
|
|
183
182
|
*
|
|
184
183
|
* The input for {@link CompleteMultipartUploadCommand}.
|
|
185
184
|
*/
|
|
186
|
-
export
|
|
187
|
-
|
|
185
|
+
export type CompleteMultipartUploadCommandInput =
|
|
186
|
+
CompleteMultipartUploadRequest;
|
|
188
187
|
/**
|
|
189
188
|
* @public
|
|
190
189
|
*
|
|
@@ -429,7 +428,7 @@ export interface CompletedPart {
|
|
|
429
428
|
*
|
|
430
429
|
* The input for {@link CopyObjectCommand}.
|
|
431
430
|
*/
|
|
432
|
-
export
|
|
431
|
+
export type CopyObjectCommandInput = CopyObjectRequest;
|
|
433
432
|
/**
|
|
434
433
|
* @public
|
|
435
434
|
*
|
|
@@ -787,8 +786,7 @@ export interface CopyObjectResult {
|
|
|
787
786
|
*
|
|
788
787
|
* The input for {@link CreateMultipartUploadCommand}.
|
|
789
788
|
*/
|
|
790
|
-
export
|
|
791
|
-
extends CreateMultipartUploadRequest {}
|
|
789
|
+
export type CreateMultipartUploadCommandInput = CreateMultipartUploadRequest;
|
|
792
790
|
/**
|
|
793
791
|
* @public
|
|
794
792
|
*
|
|
@@ -1045,7 +1043,7 @@ export interface CreateMultipartUploadRequest {
|
|
|
1045
1043
|
*
|
|
1046
1044
|
* The input for {@link DeleteObjectCommand}.
|
|
1047
1045
|
*/
|
|
1048
|
-
export
|
|
1046
|
+
export type DeleteObjectCommandInput = DeleteObjectRequest;
|
|
1049
1047
|
/**
|
|
1050
1048
|
* @public
|
|
1051
1049
|
*
|
|
@@ -1124,7 +1122,7 @@ export interface DeleteObjectRequest {
|
|
|
1124
1122
|
*
|
|
1125
1123
|
* The input for {@link GetObjectCommand}.
|
|
1126
1124
|
*/
|
|
1127
|
-
export
|
|
1125
|
+
export type GetObjectCommandInput = GetObjectRequest;
|
|
1128
1126
|
/**
|
|
1129
1127
|
* @public
|
|
1130
1128
|
*
|
|
@@ -1441,7 +1439,7 @@ export interface GetObjectRequest {
|
|
|
1441
1439
|
*
|
|
1442
1440
|
* The input for {@link HeadObjectCommand}.
|
|
1443
1441
|
*/
|
|
1444
|
-
export
|
|
1442
|
+
export type HeadObjectCommandInput = HeadObjectRequest;
|
|
1445
1443
|
/**
|
|
1446
1444
|
* @public
|
|
1447
1445
|
*
|
|
@@ -1790,7 +1788,7 @@ export interface Initiator {
|
|
|
1790
1788
|
*
|
|
1791
1789
|
* The input for {@link ListObjectsV2Command}.
|
|
1792
1790
|
*/
|
|
1793
|
-
export
|
|
1791
|
+
export type ListObjectsV2CommandInput = ListObjectsV2Request;
|
|
1794
1792
|
/**
|
|
1795
1793
|
* @public
|
|
1796
1794
|
*
|
|
@@ -1948,7 +1946,7 @@ export interface ListObjectsV2Request {
|
|
|
1948
1946
|
*
|
|
1949
1947
|
* The input for {@link ListPartsCommand}.
|
|
1950
1948
|
*/
|
|
1951
|
-
export
|
|
1949
|
+
export type ListPartsCommandInput = ListPartsRequest;
|
|
1952
1950
|
/**
|
|
1953
1951
|
* @public
|
|
1954
1952
|
*
|
|
@@ -2202,7 +2200,7 @@ export interface Part {
|
|
|
2202
2200
|
/**
|
|
2203
2201
|
* This interface extends from `PutObjectRequest` interface. There are more parameters than `Body` defined in {@link PutObjectRequest}
|
|
2204
2202
|
*/
|
|
2205
|
-
export
|
|
2203
|
+
export type PutObjectCommandInput = PutObjectCommandInputType;
|
|
2206
2204
|
/**
|
|
2207
2205
|
* @public
|
|
2208
2206
|
*
|
|
@@ -2540,7 +2538,7 @@ export interface PutObjectRequest {
|
|
|
2540
2538
|
/**
|
|
2541
2539
|
* This interface extends from `UploadPartRequest` interface. There are more parameters than `Body` defined in {@link UploadPartRequest}
|
|
2542
2540
|
*/
|
|
2543
|
-
export
|
|
2541
|
+
export type UploadPartCommandInput = UploadPartCommandInputType;
|
|
2544
2542
|
/**
|
|
2545
2543
|
* @public
|
|
2546
2544
|
*
|
|
@@ -16,13 +16,13 @@ import { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/
|
|
|
16
16
|
import { defaultConfig } from './base';
|
|
17
17
|
import type { UploadPartCommandInput, UploadPartCommandOutput } from './types';
|
|
18
18
|
import {
|
|
19
|
-
buildStorageServiceError,
|
|
20
|
-
validateS3RequiredParameter,
|
|
21
19
|
assignStringVariables,
|
|
20
|
+
buildStorageServiceError,
|
|
22
21
|
map,
|
|
23
22
|
parseXmlError,
|
|
24
23
|
s3TransferHandler,
|
|
25
24
|
serializePathnameObjectKey,
|
|
25
|
+
validateS3RequiredParameter,
|
|
26
26
|
} from './utils';
|
|
27
27
|
|
|
28
28
|
// Content-length is ignored here because it's forbidden header
|
|
@@ -39,7 +39,7 @@ export type UploadPartOutput = Pick<
|
|
|
39
39
|
|
|
40
40
|
const uploadPartSerializer = async (
|
|
41
41
|
input: UploadPartInput,
|
|
42
|
-
endpoint: Endpoint
|
|
42
|
+
endpoint: Endpoint,
|
|
43
43
|
): Promise<HttpRequest> => {
|
|
44
44
|
const headers = {
|
|
45
45
|
...assignStringVariables({ 'content-md5': input.ContentMD5 }),
|
|
@@ -54,6 +54,7 @@ const uploadPartSerializer = async (
|
|
|
54
54
|
partNumber: input.PartNumber + '',
|
|
55
55
|
uploadId: input.UploadId,
|
|
56
56
|
}).toString();
|
|
57
|
+
|
|
57
58
|
return {
|
|
58
59
|
method: 'PUT',
|
|
59
60
|
headers,
|
|
@@ -63,7 +64,7 @@ const uploadPartSerializer = async (
|
|
|
63
64
|
};
|
|
64
65
|
|
|
65
66
|
const uploadPartDeserializer = async (
|
|
66
|
-
response: HttpResponse
|
|
67
|
+
response: HttpResponse,
|
|
67
68
|
): Promise<UploadPartOutput> => {
|
|
68
69
|
if (response.statusCode >= 300) {
|
|
69
70
|
const error = (await parseXmlError(response)) as Error;
|
|
@@ -82,5 +83,5 @@ export const uploadPart = composeServiceApi(
|
|
|
82
83
|
s3TransferHandler,
|
|
83
84
|
uploadPartSerializer,
|
|
84
85
|
uploadPartDeserializer,
|
|
85
|
-
{ ...defaultConfig, responseType: 'text' }
|
|
86
|
+
{ ...defaultConfig, responseType: 'text' },
|
|
86
87
|
);
|