@smithy/chunked-blob-reader 3.0.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist-cjs/index.js CHANGED
@@ -23,29 +23,14 @@ __export(src_exports, {
23
23
  blobReader: () => blobReader
24
24
  });
25
25
  module.exports = __toCommonJS(src_exports);
26
- function blobReader(blob, onChunk, chunkSize = 1024 * 1024) {
27
- return new Promise((resolve, reject) => {
28
- const fileReader = new FileReader();
29
- fileReader.addEventListener("error", reject);
30
- fileReader.addEventListener("abort", reject);
31
- const size = blob.size;
32
- let totalBytesRead = 0;
33
- function read() {
34
- if (totalBytesRead >= size) {
35
- resolve();
36
- return;
37
- }
38
- fileReader.readAsArrayBuffer(blob.slice(totalBytesRead, Math.min(size, totalBytesRead + chunkSize)));
39
- }
40
- __name(read, "read");
41
- fileReader.addEventListener("load", (event) => {
42
- const result = event.target.result;
43
- onChunk(new Uint8Array(result));
44
- totalBytesRead += result.byteLength;
45
- read();
46
- });
47
- read();
48
- });
26
+ async function blobReader(blob, onChunk, chunkSize = 1024 * 1024) {
27
+ const size = blob.size;
28
+ let totalBytesRead = 0;
29
+ while (totalBytesRead < size) {
30
+ const slice = blob.slice(totalBytesRead, Math.min(size, totalBytesRead + chunkSize));
31
+ onChunk(new Uint8Array(await slice.arrayBuffer()));
32
+ totalBytesRead += slice.size;
33
+ }
49
34
  }
50
35
  __name(blobReader, "blobReader");
51
36
  // Annotate the CommonJS export names for ESM import in node:
package/dist-es/index.js CHANGED
@@ -1,23 +1,9 @@
1
- export function blobReader(blob, onChunk, chunkSize = 1024 * 1024) {
2
- return new Promise((resolve, reject) => {
3
- const fileReader = new FileReader();
4
- fileReader.addEventListener("error", reject);
5
- fileReader.addEventListener("abort", reject);
6
- const size = blob.size;
7
- let totalBytesRead = 0;
8
- function read() {
9
- if (totalBytesRead >= size) {
10
- resolve();
11
- return;
12
- }
13
- fileReader.readAsArrayBuffer(blob.slice(totalBytesRead, Math.min(size, totalBytesRead + chunkSize)));
14
- }
15
- fileReader.addEventListener("load", (event) => {
16
- const result = event.target.result;
17
- onChunk(new Uint8Array(result));
18
- totalBytesRead += result.byteLength;
19
- read();
20
- });
21
- read();
22
- });
1
+ export async function blobReader(blob, onChunk, chunkSize = 1024 * 1024) {
2
+ const size = blob.size;
3
+ let totalBytesRead = 0;
4
+ while (totalBytesRead < size) {
5
+ const slice = blob.slice(totalBytesRead, Math.min(size, totalBytesRead + chunkSize));
6
+ onChunk(new Uint8Array(await slice.arrayBuffer()));
7
+ totalBytesRead += slice.size;
8
+ }
23
9
  }
@@ -1,4 +1,5 @@
1
1
  /**
2
2
  * @internal
3
+ * Reads the blob data into the onChunk consumer.
3
4
  */
4
5
  export declare function blobReader(blob: Blob, onChunk: (chunk: Uint8Array) => void, chunkSize?: number): Promise<void>;
@@ -1,4 +1,5 @@
1
1
  /**
2
2
  * @internal
3
+ * Reads the blob data into the onChunk consumer.
3
4
  */
4
5
  export declare function blobReader(blob: Blob, onChunk: (chunk: Uint8Array) => void, chunkSize?: number): Promise<void>;
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@smithy/chunked-blob-reader",
3
- "version": "3.0.0",
3
+ "version": "4.0.0",
4
4
  "scripts": {
5
5
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'",
6
6
  "build:cjs": "node ../../scripts/inline chunked-blob-reader",
7
7
  "build:es": "yarn g:tsc -p tsconfig.es.json",
8
8
  "build:types": "yarn g:tsc -p tsconfig.types.json",
9
- "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
9
+ "build:types:downlevel": "rimraf dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4",
10
10
  "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz",
11
11
  "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0",
12
12
  "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"",