@cdklabs/cdk-ecs-codedeploy 0.0.445 → 0.0.446
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/.jsii +3 -3
- package/lib/api-canary/index.js +1 -1
- package/lib/ecs-appspec/index.js +1 -1
- package/lib/ecs-deployment/index.js +1 -1
- package/lib/ecs-patterns/application-load-balanced-codedeployed-fargate-service.js +1 -1
- package/node_modules/@aws-sdk/client-codedeploy/package.json +3 -3
- package/node_modules/@aws-sdk/core/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-http/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
- package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
- package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
- package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
- package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/package.json +2 -2
- package/node_modules/@aws-sdk/token-providers/package.json +3 -3
- package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.browser.js +1 -1
- package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js +233 -43
- package/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.browser.js +1 -1
- package/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js +233 -43
- package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.d.ts +1 -1
- package/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.d.ts +2 -1
- package/node_modules/@aws-sdk/xml-builder/package.json +4 -4
- package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.browser.js +355 -145
- package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.js +456 -142
- package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.native.js +355 -145
- package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +5 -2
- package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.browser.js +30 -36
- package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +54 -110
- package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.native.js +30 -36
- package/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Js.js +27 -0
- package/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Node.js +21 -0
- package/node_modules/@smithy/core/dist-es/submodules/checksum/index.browser.js +7 -1
- package/node_modules/@smithy/core/dist-es/submodules/checksum/index.js +7 -1
- package/node_modules/@smithy/core/dist-es/submodules/checksum/index.native.js +7 -1
- package/node_modules/@smithy/core/dist-es/submodules/checksum/md5/Md5Js.js +92 -0
- package/node_modules/@smithy/core/dist-es/submodules/checksum/md5/Md5Node.js +29 -0
- package/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Js.js +179 -0
- package/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Node.js +59 -0
- package/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256WebCrypto.js +71 -0
- package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +4 -1
- package/node_modules/@smithy/core/dist-es/submodules/serde/concatBytes.js +15 -0
- package/node_modules/@smithy/core/dist-es/submodules/serde/index.browser.js +2 -0
- package/node_modules/@smithy/core/dist-es/submodules/serde/index.js +2 -0
- package/node_modules/@smithy/core/dist-es/submodules/serde/index.native.js +2 -0
- package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/checksum/ChecksumStream.js +4 -0
- package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/headStream.js +2 -1
- package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.browser.js +12 -38
- package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.js +18 -33
- package/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUint8Array.browser.js +3 -0
- package/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUint8Array.js +3 -0
- package/node_modules/@smithy/core/dist-types/submodules/checksum/crc32/Crc32Js.d.ts +13 -0
- package/node_modules/@smithy/core/dist-types/submodules/checksum/crc32/Crc32Node.d.ts +13 -0
- package/node_modules/@smithy/core/dist-types/submodules/checksum/index.browser.d.ts +7 -1
- package/node_modules/@smithy/core/dist-types/submodules/checksum/index.d.ts +7 -1
- package/node_modules/@smithy/core/dist-types/submodules/checksum/index.native.d.ts +7 -1
- package/node_modules/@smithy/core/dist-types/submodules/checksum/md5/Md5Js.d.ts +19 -0
- package/node_modules/@smithy/core/dist-types/submodules/checksum/md5/Md5Node.d.ts +17 -0
- package/node_modules/@smithy/core/dist-types/submodules/checksum/sha256/Sha256Js.d.ts +28 -0
- package/node_modules/@smithy/core/dist-types/submodules/checksum/sha256/Sha256Node.d.ts +13 -0
- package/node_modules/@smithy/core/dist-types/submodules/checksum/sha256/Sha256WebCrypto.d.ts +22 -0
- package/node_modules/@smithy/core/dist-types/submodules/serde/concatBytes.d.ts +6 -0
- package/node_modules/@smithy/core/dist-types/submodules/serde/index.browser.d.ts +2 -0
- package/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts +2 -0
- package/node_modules/@smithy/core/dist-types/submodules/serde/index.native.d.ts +2 -0
- package/node_modules/@smithy/core/dist-types/submodules/serde/util-stream/checksum/ChecksumStream.d.ts +9 -0
- package/node_modules/@smithy/core/dist-types/submodules/serde/util-stream/stream-collector.browser.d.ts +8 -2
- package/node_modules/@smithy/core/dist-types/submodules/serde/util-stream/stream-collector.d.ts +4 -1
- package/node_modules/@smithy/core/package.json +4 -3
- package/node_modules/@smithy/credential-provider-imds/package.json +2 -2
- package/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js +2 -55
- package/node_modules/@smithy/fetch-http-handler/dist-es/index.js +2 -2
- package/node_modules/@smithy/fetch-http-handler/dist-types/index.d.ts +2 -2
- package/node_modules/@smithy/fetch-http-handler/package.json +2 -2
- package/node_modules/@smithy/node-http-handler/dist-cjs/index.js +3 -51
- package/node_modules/@smithy/node-http-handler/dist-es/index.js +3 -3
- package/node_modules/@smithy/node-http-handler/dist-types/index.d.ts +3 -3
- package/node_modules/@smithy/node-http-handler/package.json +2 -2
- package/node_modules/@smithy/signature-v4/package.json +2 -2
- package/package.json +2 -2
- package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-external/nodable_entities.js +0 -333
- package/node_modules/@aws-sdk/xml-builder/dist-es/xml-external/nodable_entities.js +0 -332
- package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-external/nodable_entities.d.ts +0 -66
- package/node_modules/@aws-sdk/xml-builder/dist-types/xml-external/nodable_entities.d.ts +0 -65
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/CHANGELOG.md +0 -827
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/LICENSE +0 -21
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/README.md +0 -202
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxbuilder.min.js +0 -2
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxbuilder.min.js.map +0 -1
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.cjs +0 -1
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.d.cts +0 -770
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js +0 -2
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js.map +0 -1
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js +0 -2
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js.map +0 -1
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxvalidator.min.js +0 -2
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxvalidator.min.js.map +0 -1
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/package.json +0 -93
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/cli/cli.js +0 -97
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/cli/man.js +0 -17
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/cli/read.js +0 -43
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/fxp.d.ts +0 -739
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/fxp.js +0 -14
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/ignoreAttributes.js +0 -18
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/util.js +0 -61
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/CharsSymbol.js +0 -16
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/EntitiesParser.js +0 -106
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OptionsBuilder.js +0 -61
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/BaseOutputBuilder.js +0 -69
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsArrBuilder.js +0 -103
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsMinArrBuilder.js +0 -100
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsObjBuilder.js +0 -154
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/ParserOptionsBuilder.js +0 -94
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/Report.js +0 -0
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/TagPath.js +0 -81
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/TagPathMatcher.js +0 -13
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/XMLParser.js +0 -83
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/Xml2JsParser.js +0 -235
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/XmlPartReader.js +0 -210
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/XmlSpecialTagsReader.js +0 -111
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/inputSource/BufferSource.js +0 -116
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/inputSource/StringSource.js +0 -121
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/EntitiesParser.js +0 -105
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParser.js +0 -22
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParserExt.js +0 -19
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/currency.js +0 -38
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/join.js +0 -13
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/number.js +0 -14
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/trim.js +0 -6
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/validator.js +0 -425
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js +0 -6
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js +0 -407
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js +0 -163
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js +0 -840
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js +0 -71
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/node2json.js +0 -177
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js +0 -40
- package/node_modules/@nodable/entities/README.md +0 -41
- package/node_modules/@nodable/entities/package.json +0 -57
- package/node_modules/@nodable/entities/src/EntityDecoder.js +0 -644
- package/node_modules/@nodable/entities/src/EntityEncoder.js +0 -194
- package/node_modules/@nodable/entities/src/entities.js +0 -1159
- package/node_modules/@nodable/entities/src/entityTries.js +0 -49
- package/node_modules/@nodable/entities/src/index.d.ts +0 -341
- package/node_modules/@nodable/entities/src/index.js +0 -29
- package/node_modules/@smithy/core/dist-es/submodules/checksum/md5-js/constants.js +0 -3
- package/node_modules/@smithy/core/dist-es/submodules/checksum/md5-js/md5.js +0 -168
- package/node_modules/@smithy/core/dist-types/submodules/checksum/md5-js/constants.d.ts +0 -12
- package/node_modules/@smithy/core/dist-types/submodules/checksum/md5-js/md5.d.ts +0 -16
- package/node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js +0 -53
- package/node_modules/@smithy/fetch-http-handler/dist-types/stream-collector.d.ts +0 -2
- package/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +0 -8
- package/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +0 -41
- package/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +0 -5
- package/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +0 -7
- package/node_modules/anynum/LICENSE +0 -21
- package/node_modules/anynum/README.md +0 -142
- package/node_modules/anynum/anynum.js +0 -135
- package/node_modules/anynum/digitTable.js +0 -116
- package/node_modules/anynum/package.json +0 -42
- package/node_modules/fast-xml-builder/CHANGELOG.md +0 -40
- package/node_modules/fast-xml-builder/LICENSE +0 -21
- package/node_modules/fast-xml-builder/README.md +0 -74
- package/node_modules/fast-xml-builder/lib/fxb.cjs +0 -1
- package/node_modules/fast-xml-builder/lib/fxb.d.cts +0 -270
- package/node_modules/fast-xml-builder/lib/fxb.min.js +0 -2
- package/node_modules/fast-xml-builder/lib/fxb.min.js.map +0 -1
- package/node_modules/fast-xml-builder/package.json +0 -81
- package/node_modules/fast-xml-builder/src/fxb.d.ts +0 -270
- package/node_modules/fast-xml-builder/src/fxb.js +0 -599
- package/node_modules/fast-xml-builder/src/ignoreAttributes.js +0 -18
- package/node_modules/fast-xml-builder/src/orderedJs2Xml.js +0 -359
- package/node_modules/fast-xml-builder/src/prettifyJs2Xml.js +0 -0
- package/node_modules/fast-xml-builder/src/util.js +0 -16
- package/node_modules/path-expression-matcher/LICENSE +0 -21
- package/node_modules/path-expression-matcher/README.md +0 -947
- package/node_modules/path-expression-matcher/lib/pem.cjs +0 -1
- package/node_modules/path-expression-matcher/lib/pem.d.cts +0 -715
- package/node_modules/path-expression-matcher/lib/pem.min.js +0 -2
- package/node_modules/path-expression-matcher/lib/pem.min.js.map +0 -1
- package/node_modules/path-expression-matcher/package.json +0 -79
- package/node_modules/path-expression-matcher/src/Expression.js +0 -232
- package/node_modules/path-expression-matcher/src/ExpressionSet.js +0 -225
- package/node_modules/path-expression-matcher/src/Matcher.js +0 -660
- package/node_modules/path-expression-matcher/src/index.d.ts +0 -589
- package/node_modules/path-expression-matcher/src/index.js +0 -29
- package/node_modules/strnum/CHANGELOG.md +0 -51
- package/node_modules/strnum/LICENSE +0 -21
- package/node_modules/strnum/README.md +0 -113
- package/node_modules/strnum/package.json +0 -36
- package/node_modules/strnum/strnum.js +0 -171
- package/node_modules/xml-naming/README.md +0 -189
- package/node_modules/xml-naming/package.json +0 -54
- package/node_modules/xml-naming/src/index.d.ts +0 -74
- package/node_modules/xml-naming/src/index.js +0 -270
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { toUint8Array } from "@smithy/core/serde";
|
|
2
|
+
const BLOCK = 64;
|
|
3
|
+
const DIGEST_LENGTH = 32;
|
|
4
|
+
const MAX_HASHABLE_LENGTH = 2 ** 53 - 1;
|
|
5
|
+
export class Sha256Js {
|
|
6
|
+
digestLength = DIGEST_LENGTH;
|
|
7
|
+
state = Int32Array.from(INIT);
|
|
8
|
+
w;
|
|
9
|
+
buffer = new Uint8Array(64);
|
|
10
|
+
bufferLength = 0;
|
|
11
|
+
bytesHashed = 0;
|
|
12
|
+
finished = false;
|
|
13
|
+
inner;
|
|
14
|
+
outer;
|
|
15
|
+
constructor(secret) {
|
|
16
|
+
if (secret) {
|
|
17
|
+
const key = Sha256Js.normalizeKey(secret);
|
|
18
|
+
this.inner = new Sha256Js();
|
|
19
|
+
this.outer = new Sha256Js();
|
|
20
|
+
const { inner, outer } = this;
|
|
21
|
+
const pad = new Uint8Array(BLOCK * 2);
|
|
22
|
+
for (let i = 0; i < BLOCK; ++i) {
|
|
23
|
+
pad[i] = 0x36 ^ key[i];
|
|
24
|
+
pad[i + BLOCK] = 0x5c ^ key[i];
|
|
25
|
+
}
|
|
26
|
+
inner.update(pad.subarray(0, BLOCK));
|
|
27
|
+
outer.update(pad.subarray(BLOCK));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
update(data) {
|
|
31
|
+
if (this.finished) {
|
|
32
|
+
throw new Error("Attempted to update an already finished HMAC.");
|
|
33
|
+
}
|
|
34
|
+
if (this.inner) {
|
|
35
|
+
this.inner.update(data);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const chunk = toUint8Array(data);
|
|
39
|
+
let position = 0;
|
|
40
|
+
let { byteLength } = chunk;
|
|
41
|
+
this.bytesHashed += byteLength;
|
|
42
|
+
if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {
|
|
43
|
+
throw new Error("Cannot hash more than 2^53 - 1 bits");
|
|
44
|
+
}
|
|
45
|
+
while (byteLength > 0) {
|
|
46
|
+
this.buffer[this.bufferLength++] = chunk[position++];
|
|
47
|
+
byteLength--;
|
|
48
|
+
if (this.bufferLength === BLOCK) {
|
|
49
|
+
this.hashBuffer();
|
|
50
|
+
this.bufferLength = 0;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async digest() {
|
|
55
|
+
const { inner, outer } = this;
|
|
56
|
+
if (inner && outer) {
|
|
57
|
+
if (this.finished) {
|
|
58
|
+
throw new Error("Attempted to digest an already finished HMAC.");
|
|
59
|
+
}
|
|
60
|
+
this.finished = true;
|
|
61
|
+
const innerDigest = inner.digestSync();
|
|
62
|
+
outer.update(innerDigest);
|
|
63
|
+
return outer.digestSync();
|
|
64
|
+
}
|
|
65
|
+
return this.digestSync();
|
|
66
|
+
}
|
|
67
|
+
reset() {
|
|
68
|
+
this.state = Int32Array.from(INIT);
|
|
69
|
+
this.buffer = new Uint8Array(64);
|
|
70
|
+
this.bufferLength = 0;
|
|
71
|
+
this.bytesHashed = 0;
|
|
72
|
+
}
|
|
73
|
+
digestSync() {
|
|
74
|
+
const state = this.state.slice();
|
|
75
|
+
const buffer = this.buffer.slice();
|
|
76
|
+
let bufferLength = this.bufferLength;
|
|
77
|
+
const bitsHashed = this.bytesHashed * 8;
|
|
78
|
+
const bufferView = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
79
|
+
bufferView.setUint8(bufferLength++, 0x80);
|
|
80
|
+
if ((bufferLength - 1) % BLOCK >= BLOCK - 8) {
|
|
81
|
+
for (let i = bufferLength; i < BLOCK; ++i) {
|
|
82
|
+
bufferView.setUint8(i, 0);
|
|
83
|
+
}
|
|
84
|
+
this.hashBufferWith(state, buffer);
|
|
85
|
+
bufferLength = 0;
|
|
86
|
+
}
|
|
87
|
+
for (let i = bufferLength; i < BLOCK - 8; ++i) {
|
|
88
|
+
bufferView.setUint8(i, 0);
|
|
89
|
+
}
|
|
90
|
+
bufferView.setUint32(BLOCK - 8, Math.floor(bitsHashed / 0x100000000), false);
|
|
91
|
+
bufferView.setUint32(BLOCK - 4, bitsHashed, false);
|
|
92
|
+
this.hashBufferWith(state, buffer);
|
|
93
|
+
const out = new Uint8Array(DIGEST_LENGTH);
|
|
94
|
+
for (let i = 0; i < 8; ++i) {
|
|
95
|
+
out[i * 4] = (state[i] >>> 24) & 0xff;
|
|
96
|
+
out[i * 4 + 1] = (state[i] >>> 16) & 0xff;
|
|
97
|
+
out[i * 4 + 2] = (state[i] >>> 8) & 0xff;
|
|
98
|
+
out[i * 4 + 3] = (state[i] >>> 0) & 0xff;
|
|
99
|
+
}
|
|
100
|
+
return out;
|
|
101
|
+
}
|
|
102
|
+
static normalizeKey(secret) {
|
|
103
|
+
const key = toUint8Array(secret);
|
|
104
|
+
if (key.byteLength > BLOCK) {
|
|
105
|
+
const h = new Sha256Js();
|
|
106
|
+
h.update(key);
|
|
107
|
+
const out = h.digestSync();
|
|
108
|
+
const padded = new Uint8Array(BLOCK);
|
|
109
|
+
padded.set(out);
|
|
110
|
+
return padded;
|
|
111
|
+
}
|
|
112
|
+
if (key.byteLength < BLOCK) {
|
|
113
|
+
const padded = new Uint8Array(BLOCK);
|
|
114
|
+
padded.set(key);
|
|
115
|
+
return padded;
|
|
116
|
+
}
|
|
117
|
+
return key;
|
|
118
|
+
}
|
|
119
|
+
hashBuffer() {
|
|
120
|
+
this.hashBufferWith(this.state, this.buffer);
|
|
121
|
+
}
|
|
122
|
+
hashBufferWith(state, buffer) {
|
|
123
|
+
const w = (this.w ??= new Int32Array(64));
|
|
124
|
+
let s0 = state[0], s1 = state[1], s2 = state[2], s3 = state[3], s4 = state[4], s5 = state[5], s6 = state[6], s7 = state[7];
|
|
125
|
+
for (let i = 0; i < BLOCK; ++i) {
|
|
126
|
+
if (i < 16) {
|
|
127
|
+
w[i] =
|
|
128
|
+
((buffer[i * 4] & 0xff) << 24) |
|
|
129
|
+
((buffer[i * 4 + 1] & 0xff) << 16) |
|
|
130
|
+
((buffer[i * 4 + 2] & 0xff) << 8) |
|
|
131
|
+
(buffer[i * 4 + 3] & 0xff);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
let u = w[i - 2];
|
|
135
|
+
const t1 = ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10);
|
|
136
|
+
u = w[i - 15];
|
|
137
|
+
const t2 = ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3);
|
|
138
|
+
w[i] = ((t1 + w[i - 7]) | 0) + ((t2 + w[i - 16]) | 0);
|
|
139
|
+
}
|
|
140
|
+
const t1 = ((((((s4 >>> 6) | (s4 << 26)) ^ ((s4 >>> 11) | (s4 << 21)) ^ ((s4 >>> 25) | (s4 << 7))) +
|
|
141
|
+
((s4 & s5) ^ (~s4 & s6))) |
|
|
142
|
+
0) +
|
|
143
|
+
((s7 + ((K[i] + w[i]) | 0)) | 0)) |
|
|
144
|
+
0;
|
|
145
|
+
const t2 = ((((s0 >>> 2) | (s0 << 30)) ^ ((s0 >>> 13) | (s0 << 19)) ^ ((s0 >>> 22) | (s0 << 10))) +
|
|
146
|
+
((s0 & s1) ^ (s0 & s2) ^ (s1 & s2))) |
|
|
147
|
+
0;
|
|
148
|
+
s7 = s6;
|
|
149
|
+
s6 = s5;
|
|
150
|
+
s5 = s4;
|
|
151
|
+
s4 = (s3 + t1) | 0;
|
|
152
|
+
s3 = s2;
|
|
153
|
+
s2 = s1;
|
|
154
|
+
s1 = s0;
|
|
155
|
+
s0 = (t1 + t2) | 0;
|
|
156
|
+
}
|
|
157
|
+
state[0] += s0;
|
|
158
|
+
state[1] += s1;
|
|
159
|
+
state[2] += s2;
|
|
160
|
+
state[3] += s3;
|
|
161
|
+
state[4] += s4;
|
|
162
|
+
state[5] += s5;
|
|
163
|
+
state[6] += s6;
|
|
164
|
+
state[7] += s7;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
const INIT = new Int32Array([
|
|
168
|
+
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,
|
|
169
|
+
]);
|
|
170
|
+
const K = new Int32Array([
|
|
171
|
+
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
|
172
|
+
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
|
|
173
|
+
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
|
174
|
+
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
|
|
175
|
+
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
|
|
176
|
+
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
|
177
|
+
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
|
|
178
|
+
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
|
|
179
|
+
]);
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { createHash, createHmac } from "node:crypto";
|
|
2
|
+
import { Sha256Js } from "./Sha256Js";
|
|
3
|
+
const hasNativeCrypto = (() => {
|
|
4
|
+
try {
|
|
5
|
+
createHash("sha256");
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
})();
|
|
12
|
+
export const Sha256Node = hasNativeCrypto ? buildNativeClass() : Sha256Js;
|
|
13
|
+
function buildNativeClass() {
|
|
14
|
+
return class Sha256Node {
|
|
15
|
+
digestLength = 32;
|
|
16
|
+
secret;
|
|
17
|
+
hash;
|
|
18
|
+
isHmac;
|
|
19
|
+
finished = false;
|
|
20
|
+
constructor(secret) {
|
|
21
|
+
this.secret = secret;
|
|
22
|
+
this.isHmac = !!secret;
|
|
23
|
+
this.hash = this.createHash();
|
|
24
|
+
}
|
|
25
|
+
update(data) {
|
|
26
|
+
if (this.finished) {
|
|
27
|
+
throw new Error("Attempted to update an already finished hash.");
|
|
28
|
+
}
|
|
29
|
+
this.hash.update(data);
|
|
30
|
+
}
|
|
31
|
+
async digest() {
|
|
32
|
+
let buf;
|
|
33
|
+
if (this.isHmac) {
|
|
34
|
+
this.finished = true;
|
|
35
|
+
buf = this.hash.digest();
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
buf = this.hash.copy().digest();
|
|
39
|
+
}
|
|
40
|
+
return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
|
|
41
|
+
}
|
|
42
|
+
reset() {
|
|
43
|
+
this.hash = this.createHash();
|
|
44
|
+
this.finished = false;
|
|
45
|
+
}
|
|
46
|
+
createHash() {
|
|
47
|
+
return this.secret ? createHmac("sha256", toBuffer(this.secret)) : createHash("sha256");
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function toBuffer(data) {
|
|
52
|
+
if (typeof data === "string") {
|
|
53
|
+
return data;
|
|
54
|
+
}
|
|
55
|
+
if (ArrayBuffer.isView(data)) {
|
|
56
|
+
return Buffer.from(data.buffer, data.byteOffset, data.byteLength);
|
|
57
|
+
}
|
|
58
|
+
return Buffer.from(data);
|
|
59
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { concatBytes, toUint8Array } from "@smithy/core/serde";
|
|
2
|
+
import { Sha256Js } from "./Sha256Js";
|
|
3
|
+
const { digest, sign, importKey } = globalThis?.crypto?.subtle ?? {};
|
|
4
|
+
const subtle = typeof digest === "function" && typeof sign === "function" && typeof importKey === "function"
|
|
5
|
+
? globalThis.crypto.subtle
|
|
6
|
+
: undefined;
|
|
7
|
+
const MAX_PENDING_BYTES = 8 * 1024 * 1024;
|
|
8
|
+
export class Sha256WebCrypto {
|
|
9
|
+
digestLength = 32;
|
|
10
|
+
secret;
|
|
11
|
+
pending = [];
|
|
12
|
+
pendingBytes = 0;
|
|
13
|
+
fallback;
|
|
14
|
+
finished = false;
|
|
15
|
+
constructor(secret) {
|
|
16
|
+
if (secret) {
|
|
17
|
+
this.secret = toUint8Array(secret);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
update(data) {
|
|
21
|
+
if (this.finished) {
|
|
22
|
+
throw new Error("Attempted to update an already finished HMAC.");
|
|
23
|
+
}
|
|
24
|
+
if (this.fallback) {
|
|
25
|
+
this.fallback.update(data);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
this.pending.push(data.slice());
|
|
29
|
+
this.pendingBytes += data.byteLength;
|
|
30
|
+
if (this.pendingBytes >= MAX_PENDING_BYTES) {
|
|
31
|
+
this.switchToFallback();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async digest() {
|
|
35
|
+
if (this.fallback) {
|
|
36
|
+
return this.fallback.digest();
|
|
37
|
+
}
|
|
38
|
+
if (this.secret && this.finished) {
|
|
39
|
+
throw new Error("Attempted to digest an already finished HMAC.");
|
|
40
|
+
}
|
|
41
|
+
const data = concatBytes(this.pending);
|
|
42
|
+
if (subtle) {
|
|
43
|
+
if (this.secret) {
|
|
44
|
+
this.finished = true;
|
|
45
|
+
const key = await subtle.importKey("raw", this.secret, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
|
|
46
|
+
const sig = await subtle.sign("HMAC", key, data);
|
|
47
|
+
return new Uint8Array(sig);
|
|
48
|
+
}
|
|
49
|
+
const hash = await subtle.digest("SHA-256", data);
|
|
50
|
+
return new Uint8Array(hash);
|
|
51
|
+
}
|
|
52
|
+
const sha256 = new Sha256Js(this.secret);
|
|
53
|
+
sha256.update(data);
|
|
54
|
+
return sha256.digest();
|
|
55
|
+
}
|
|
56
|
+
reset() {
|
|
57
|
+
this.pending = [];
|
|
58
|
+
this.pendingBytes = 0;
|
|
59
|
+
this.fallback = undefined;
|
|
60
|
+
this.finished = false;
|
|
61
|
+
}
|
|
62
|
+
switchToFallback() {
|
|
63
|
+
const sha256Js = new Sha256Js(this.secret);
|
|
64
|
+
for (const chunk of this.pending) {
|
|
65
|
+
sha256Js.update(chunk);
|
|
66
|
+
}
|
|
67
|
+
this.fallback = sha256Js;
|
|
68
|
+
this.pending = [];
|
|
69
|
+
this.pendingBytes = 0;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NormalizedSchema, TypeRegistry, translateTraits } from "@smithy/core/schema";
|
|
2
|
-
import { HttpRequest, HttpResponse } from "@smithy/core/transport";
|
|
2
|
+
import { HttpRequest, HttpResponse, isValidHostname } from "@smithy/core/transport";
|
|
3
3
|
import { SerdeContext } from "./SerdeContext";
|
|
4
4
|
export class HttpProtocol extends SerdeContext {
|
|
5
5
|
options;
|
|
@@ -84,6 +84,9 @@ export class HttpProtocol extends SerdeContext {
|
|
|
84
84
|
hostPrefix = hostPrefix.replace(`{${name}}`, replacement);
|
|
85
85
|
}
|
|
86
86
|
request.hostname = hostPrefix + request.hostname;
|
|
87
|
+
if (!isValidHostname(request.hostname)) {
|
|
88
|
+
throw new Error(`[${request.hostname}] is not a valid hostname.`);
|
|
89
|
+
}
|
|
87
90
|
}
|
|
88
91
|
}
|
|
89
92
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function concatBytes(arrays, length) {
|
|
2
|
+
if (length === undefined) {
|
|
3
|
+
length = 0;
|
|
4
|
+
for (const bytes of arrays) {
|
|
5
|
+
length += bytes.byteLength;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
const result = new Uint8Array(length);
|
|
9
|
+
let offset = 0;
|
|
10
|
+
for (const buf of arrays) {
|
|
11
|
+
result.set(buf, offset);
|
|
12
|
+
offset += buf.byteLength;
|
|
13
|
+
}
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
@@ -19,6 +19,7 @@ export { toBase64, fromBase64 };
|
|
|
19
19
|
export { calculateBodyLength } from "./util-body-length/calculateBodyLength.browser";
|
|
20
20
|
export { toUint8Array } from "./util-utf8/toUint8Array.browser";
|
|
21
21
|
export { toUtf8, fromUtf8 };
|
|
22
|
+
export { concatBytes } from "./concatBytes";
|
|
22
23
|
export const fromArrayBuffer = no;
|
|
23
24
|
export const fromString = no;
|
|
24
25
|
export { isArrayBuffer } from "./is-array-buffer/is-array-buffer";
|
|
@@ -36,6 +37,7 @@ export { headStream } from "./util-stream/headStream.browser";
|
|
|
36
37
|
export { sdkStreamMixin } from "./util-stream/sdk-stream-mixin.browser";
|
|
37
38
|
export { splitStream } from "./util-stream/splitStream.browser";
|
|
38
39
|
export { isReadableStream, isBlob } from "./util-stream/stream-type-check";
|
|
40
|
+
export { streamCollector } from "./util-stream/stream-collector.browser";
|
|
39
41
|
const _getRandomValues = (array) => crypto.getRandomValues(array);
|
|
40
42
|
export const v4 = bindV4(_getRandomValues);
|
|
41
43
|
export const generateIdempotencyToken = v4;
|
|
@@ -19,6 +19,7 @@ export { toBase64, fromBase64 };
|
|
|
19
19
|
export { calculateBodyLength } from "./util-body-length/calculateBodyLength";
|
|
20
20
|
export { toUint8Array } from "./util-utf8/toUint8Array";
|
|
21
21
|
export { toUtf8, fromUtf8 };
|
|
22
|
+
export { concatBytes } from "./concatBytes";
|
|
22
23
|
export { fromArrayBuffer, fromString } from "./util-buffer-from/buffer-from";
|
|
23
24
|
export { isArrayBuffer } from "./is-array-buffer/is-array-buffer";
|
|
24
25
|
export { deserializerMiddleware } from "./middleware-serde/deserializerMiddleware";
|
|
@@ -35,6 +36,7 @@ export { headStream } from "./util-stream/headStream";
|
|
|
35
36
|
export { sdkStreamMixin } from "./util-stream/sdk-stream-mixin";
|
|
36
37
|
export { splitStream } from "./util-stream/splitStream";
|
|
37
38
|
export { isReadableStream, isBlob } from "./util-stream/stream-type-check";
|
|
39
|
+
export { streamCollector } from "./util-stream/stream-collector";
|
|
38
40
|
const _getRandomValues = getRandomValues;
|
|
39
41
|
export const v4 = bindV4(_getRandomValues);
|
|
40
42
|
export const generateIdempotencyToken = v4;
|
|
@@ -21,6 +21,7 @@ export { calculateBodyLength } from "./util-body-length/calculateBodyLength.brow
|
|
|
21
21
|
export { fromUtf8 } from "./util-utf8/fromUtf8.browser";
|
|
22
22
|
export { toUint8Array } from "./util-utf8/toUint8Array.browser";
|
|
23
23
|
export { toUtf8 } from "./util-utf8/toUtf8.browser";
|
|
24
|
+
export { concatBytes } from "./concatBytes";
|
|
24
25
|
export const fromArrayBuffer = no;
|
|
25
26
|
export const fromString = no;
|
|
26
27
|
export { isArrayBuffer } from "./is-array-buffer/is-array-buffer";
|
|
@@ -38,6 +39,7 @@ export { headStream } from "./util-stream/headStream.browser";
|
|
|
38
39
|
export { sdkStreamMixin } from "./util-stream/sdk-stream-mixin.browser";
|
|
39
40
|
export { splitStream } from "./util-stream/splitStream.browser";
|
|
40
41
|
export { isReadableStream, isBlob } from "./util-stream/stream-type-check";
|
|
42
|
+
export { streamCollector } from "./util-stream/stream-collector.browser";
|
|
41
43
|
const _getRandomValues = (array) => crypto.getRandomValues(array);
|
|
42
44
|
export const v4 = bindV4(_getRandomValues);
|
|
43
45
|
export const generateIdempotencyToken = v4;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Writable } from "node:stream";
|
|
2
|
+
import { concatBytes } from "../concatBytes";
|
|
2
3
|
import { headStream as headWebStream } from "./headStream.browser";
|
|
3
4
|
import { isReadableStream } from "./stream-type-check";
|
|
4
5
|
export const headStream = (stream, bytes) => {
|
|
@@ -15,7 +16,7 @@ export const headStream = (stream, bytes) => {
|
|
|
15
16
|
});
|
|
16
17
|
collector.on("error", reject);
|
|
17
18
|
collector.on("finish", function () {
|
|
18
|
-
const bytes =
|
|
19
|
+
const bytes = concatBytes(this.buffers);
|
|
19
20
|
resolve(bytes);
|
|
20
21
|
});
|
|
21
22
|
});
|
package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.browser.js
CHANGED
|
@@ -1,53 +1,27 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { concatBytes } from "../concatBytes";
|
|
2
|
+
import { isBlob } from "./stream-type-check";
|
|
2
3
|
export const streamCollector = async (stream) => {
|
|
3
|
-
if ((
|
|
4
|
-
if (Blob.prototype.arrayBuffer !== undefined) {
|
|
5
|
-
return new Uint8Array(await stream.arrayBuffer());
|
|
6
|
-
}
|
|
4
|
+
if (isBlob(stream)) {
|
|
7
5
|
return collectBlob(stream);
|
|
8
6
|
}
|
|
9
|
-
return
|
|
7
|
+
return collectReadableStream(stream);
|
|
10
8
|
};
|
|
11
|
-
async function collectBlob(blob) {
|
|
12
|
-
|
|
13
|
-
const arrayBuffer = fromBase64(base64);
|
|
14
|
-
return new Uint8Array(arrayBuffer);
|
|
9
|
+
export async function collectBlob(blob) {
|
|
10
|
+
return blob.arrayBuffer().then((ab) => new Uint8Array(ab));
|
|
15
11
|
}
|
|
16
|
-
async function
|
|
12
|
+
export async function collectReadableStream(stream) {
|
|
17
13
|
const chunks = [];
|
|
18
14
|
const reader = stream.getReader();
|
|
19
|
-
let isDone = false;
|
|
20
15
|
let length = 0;
|
|
21
|
-
while (
|
|
16
|
+
while (true) {
|
|
22
17
|
const { done, value } = await reader.read();
|
|
23
18
|
if (value) {
|
|
24
19
|
chunks.push(value);
|
|
25
20
|
length += value.length;
|
|
26
21
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
let offset = 0;
|
|
31
|
-
for (const chunk of chunks) {
|
|
32
|
-
collected.set(chunk, offset);
|
|
33
|
-
offset += chunk.length;
|
|
22
|
+
if (done) {
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
34
25
|
}
|
|
35
|
-
return
|
|
36
|
-
}
|
|
37
|
-
function readToBase64(blob) {
|
|
38
|
-
return new Promise((resolve, reject) => {
|
|
39
|
-
const reader = new FileReader();
|
|
40
|
-
reader.onloadend = () => {
|
|
41
|
-
if (reader.readyState !== 2) {
|
|
42
|
-
return reject(new Error("Reader aborted too early"));
|
|
43
|
-
}
|
|
44
|
-
const result = (reader.result ?? "");
|
|
45
|
-
const commaIndex = result.indexOf(",");
|
|
46
|
-
const dataOffset = commaIndex > -1 ? commaIndex + 1 : result.length;
|
|
47
|
-
resolve(result.substring(dataOffset));
|
|
48
|
-
};
|
|
49
|
-
reader.onabort = () => reject(new Error("Read aborted"));
|
|
50
|
-
reader.onerror = () => reject(reader.error);
|
|
51
|
-
reader.readAsDataURL(blob);
|
|
52
|
-
});
|
|
26
|
+
return concatBytes(chunks, length);
|
|
53
27
|
}
|
|
@@ -1,48 +1,33 @@
|
|
|
1
1
|
import { Writable } from "node:stream";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
this.bufferedBytes.push(chunk);
|
|
6
|
-
callback();
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
const isReadableStreamInstance = (stream) => typeof ReadableStream === "function" && stream instanceof ReadableStream;
|
|
10
|
-
async function collectReadableStream(stream) {
|
|
11
|
-
const chunks = [];
|
|
12
|
-
const reader = stream.getReader();
|
|
13
|
-
let isDone = false;
|
|
14
|
-
let length = 0;
|
|
15
|
-
while (!isDone) {
|
|
16
|
-
const { done, value } = await reader.read();
|
|
17
|
-
if (value) {
|
|
18
|
-
chunks.push(value);
|
|
19
|
-
length += value.length;
|
|
20
|
-
}
|
|
21
|
-
isDone = done;
|
|
22
|
-
}
|
|
23
|
-
const collected = new Uint8Array(length);
|
|
24
|
-
let offset = 0;
|
|
25
|
-
for (const chunk of chunks) {
|
|
26
|
-
collected.set(chunk, offset);
|
|
27
|
-
offset += chunk.length;
|
|
28
|
-
}
|
|
29
|
-
return collected;
|
|
30
|
-
}
|
|
2
|
+
import { concatBytes } from "../concatBytes";
|
|
3
|
+
import { collectBlob, collectReadableStream } from "./stream-collector.browser";
|
|
4
|
+
import { isBlob, isReadableStream } from "./stream-type-check";
|
|
31
5
|
export const streamCollector = (stream) => {
|
|
32
|
-
if (
|
|
6
|
+
if (isBlob(stream)) {
|
|
7
|
+
return collectBlob(stream);
|
|
8
|
+
}
|
|
9
|
+
if (isReadableStream(stream)) {
|
|
33
10
|
return collectReadableStream(stream);
|
|
34
11
|
}
|
|
35
12
|
return new Promise((resolve, reject) => {
|
|
36
13
|
const collector = new Collector();
|
|
37
|
-
stream
|
|
38
|
-
|
|
14
|
+
const nodeStream = stream;
|
|
15
|
+
nodeStream.pipe(collector);
|
|
16
|
+
nodeStream.on("error", (err) => {
|
|
39
17
|
collector.end();
|
|
40
18
|
reject(err);
|
|
41
19
|
});
|
|
42
20
|
collector.on("error", reject);
|
|
43
21
|
collector.on("finish", function () {
|
|
44
|
-
const bytes =
|
|
22
|
+
const bytes = concatBytes(this.bufferedBytes);
|
|
45
23
|
resolve(bytes);
|
|
46
24
|
});
|
|
47
25
|
});
|
|
48
26
|
};
|
|
27
|
+
class Collector extends Writable {
|
|
28
|
+
bufferedBytes = [];
|
|
29
|
+
_write(chunk, encoding, callback) {
|
|
30
|
+
this.bufferedBytes.push(chunk);
|
|
31
|
+
callback();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Checksum } from "@smithy/types";
|
|
2
|
+
/**
|
|
3
|
+
* Pure JS CRC-32 implementation using the IEEE 802.3 polynomial.
|
|
4
|
+
* @see https://www.w3.org/TR/png/#D-CRCAppendix
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export declare class Crc32Js implements Checksum {
|
|
8
|
+
readonly digestLength = 4;
|
|
9
|
+
private checksum;
|
|
10
|
+
update(data: Uint8Array): void;
|
|
11
|
+
digest(): Promise<Uint8Array>;
|
|
12
|
+
reset(): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Checksum } from "@smithy/types";
|
|
2
|
+
/**
|
|
3
|
+
* CRC-32 using Node.js zlib native implementation when available,
|
|
4
|
+
* falling back to the pure JS implementation.
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export interface Crc32Node extends Checksum {
|
|
8
|
+
readonly digestLength: 4;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export declare const Crc32Node: new () => Crc32Node;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
export { blobHasher } from "./hash-blob-browser/blobHasher";
|
|
2
2
|
export declare const fileStreamHasher: symbol;
|
|
3
3
|
export declare const readableStreamHasher: symbol;
|
|
4
|
-
export { Md5 } from "./md5
|
|
4
|
+
export { Md5Js, Md5Js as Md5 } from "./md5/Md5Js";
|
|
5
|
+
export declare const Md5Node: symbol;
|
|
6
|
+
export { Crc32Js, Crc32Js as Crc32 } from "./crc32/Crc32Js";
|
|
7
|
+
export declare const Crc32Node: symbol;
|
|
8
|
+
export { Sha256Js } from "./sha256/Sha256Js";
|
|
9
|
+
export { Sha256WebCrypto, Sha256WebCrypto as Sha256 } from "./sha256/Sha256WebCrypto";
|
|
10
|
+
export declare const Sha256Node: symbol;
|
|
5
11
|
export { blobReader } from "./chunked-blob-reader/chunked-blob-reader";
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
export { blobHasher } from "./hash-blob-browser/blobHasher";
|
|
2
2
|
export { fileStreamHasher } from "./hash-stream-node/fileStreamHasher";
|
|
3
3
|
export { readableStreamHasher } from "./hash-stream-node/readableStreamHasher";
|
|
4
|
-
export {
|
|
4
|
+
export { Md5Js } from "./md5/Md5Js";
|
|
5
|
+
export { Md5Node, Md5Node as Md5 } from "./md5/Md5Node";
|
|
6
|
+
export { Crc32Js } from "./crc32/Crc32Js";
|
|
7
|
+
export { Crc32Node, Crc32Node as Crc32 } from "./crc32/Crc32Node";
|
|
8
|
+
export { Sha256Js } from "./sha256/Sha256Js";
|
|
9
|
+
export { Sha256Node, Sha256Node as Sha256 } from "./sha256/Sha256Node";
|
|
10
|
+
export { Sha256WebCrypto } from "./sha256/Sha256WebCrypto";
|
|
5
11
|
export { blobReader } from "./chunked-blob-reader/chunked-blob-reader";
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
export { blobHasher } from "./hash-blob-browser/blobHasher";
|
|
2
2
|
export declare const fileStreamHasher: symbol;
|
|
3
3
|
export declare const readableStreamHasher: symbol;
|
|
4
|
-
export { Md5 } from "./md5
|
|
4
|
+
export { Md5Js, Md5Js as Md5 } from "./md5/Md5Js";
|
|
5
|
+
export declare const Md5Node: symbol;
|
|
6
|
+
export { Crc32Js, Crc32Js as Crc32 } from "./crc32/Crc32Js";
|
|
7
|
+
export declare const Crc32Node: symbol;
|
|
8
|
+
export { Sha256Js } from "./sha256/Sha256Js";
|
|
9
|
+
export { Sha256WebCrypto, Sha256WebCrypto as Sha256 } from "./sha256/Sha256WebCrypto";
|
|
10
|
+
export declare const Sha256Node: symbol;
|
|
5
11
|
export { blobReader } from "./chunked-blob-reader/chunked-blob-reader.native";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Checksum, SourceData } from "@smithy/types";
|
|
2
|
+
/**
|
|
3
|
+
* Pure-JS MD5 implementation. Used as fallback where node:crypto is unavailable.
|
|
4
|
+
*
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export declare class Md5Js implements Checksum {
|
|
8
|
+
readonly digestLength = 16;
|
|
9
|
+
private state;
|
|
10
|
+
private writeBuffer;
|
|
11
|
+
private bufferLength;
|
|
12
|
+
private bytesHashed;
|
|
13
|
+
update(sourceData: SourceData): void;
|
|
14
|
+
/**
|
|
15
|
+
* Non-destructive: works on copies so update() may continue after digest().
|
|
16
|
+
*/
|
|
17
|
+
digest(): Promise<Uint8Array>;
|
|
18
|
+
reset(): void;
|
|
19
|
+
}
|