@woodleighschool/bloby-client 0.1.0 → 0.2.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/index.d.ts +12 -6
- package/dist/index.js +3 -3
- package/package.json +2 -1
package/dist/index.d.ts
CHANGED
|
@@ -6,26 +6,32 @@ export interface UploadProgress {
|
|
|
6
6
|
export interface UploadTarget {
|
|
7
7
|
url: string;
|
|
8
8
|
method: "PUT";
|
|
9
|
-
headers
|
|
9
|
+
headers?: Record<string, string>;
|
|
10
10
|
}
|
|
11
11
|
export interface MultipartUploadRequest {
|
|
12
12
|
signPart: (partNumber: number, signal?: AbortSignal) => Promise<UploadTarget>;
|
|
13
13
|
}
|
|
14
|
-
export type
|
|
14
|
+
export type UploadAction = {
|
|
15
15
|
strategy: "direct-put";
|
|
16
|
-
|
|
16
|
+
target: UploadTarget;
|
|
17
|
+
} | {
|
|
18
|
+
strategy: "multipart";
|
|
19
|
+
};
|
|
20
|
+
export type UploadRequest = Extract<UploadAction, {
|
|
21
|
+
strategy: "direct-put";
|
|
22
|
+
}> | {
|
|
17
23
|
strategy: "multipart";
|
|
18
24
|
multipart: MultipartUploadRequest;
|
|
19
25
|
};
|
|
20
|
-
export interface
|
|
21
|
-
|
|
26
|
+
export interface CompletedPart {
|
|
27
|
+
part_number: number;
|
|
22
28
|
etag: string;
|
|
23
29
|
}
|
|
24
30
|
export type UploadResult = {
|
|
25
31
|
strategy: "direct-put";
|
|
26
32
|
} | {
|
|
27
33
|
strategy: "multipart";
|
|
28
|
-
parts:
|
|
34
|
+
parts: CompletedPart[];
|
|
29
35
|
};
|
|
30
36
|
type UploadContext = {
|
|
31
37
|
blob: Blob;
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ const multipartPartSize = 64 * 1024 * 1024;
|
|
|
4
4
|
const maximumMultipartParts = 10_000;
|
|
5
5
|
export async function upload(request) {
|
|
6
6
|
if (request.strategy === "direct-put") {
|
|
7
|
-
await uploadTarget(request, request.blob, request.blob.size, 0, request.onProgress, request.signal);
|
|
7
|
+
await uploadTarget(request.target, request.blob, request.blob.size, 0, request.onProgress, request.signal);
|
|
8
8
|
return { strategy: "direct-put" };
|
|
9
9
|
}
|
|
10
10
|
return uploadWithMultipartProgress(request);
|
|
@@ -18,7 +18,7 @@ async function uploadWithMultipartProgress(request) {
|
|
|
18
18
|
for (let offset = 0, partNumber = 1; offset < blob.size; offset += partSize, partNumber++) {
|
|
19
19
|
const chunk = blob.slice(offset, Math.min(offset + partSize, blob.size));
|
|
20
20
|
const etag = await uploadPart(request.multipart, partNumber, chunk, blob.size, completedBytes, onProgress, signal);
|
|
21
|
-
parts.push({ partNumber, etag });
|
|
21
|
+
parts.push({ part_number: partNumber, etag });
|
|
22
22
|
completedBytes += chunk.size;
|
|
23
23
|
onProgress?.(uploadProgress(completedBytes, blob.size));
|
|
24
24
|
}
|
|
@@ -75,7 +75,7 @@ function uploadTarget(target, body, totalBytes, completedBytes, onProgress, sign
|
|
|
75
75
|
});
|
|
76
76
|
signal?.addEventListener("abort", abort, { once: true });
|
|
77
77
|
xhr.open(target.method, target.url);
|
|
78
|
-
for (const [key, value] of Object.entries(target.headers)) {
|
|
78
|
+
for (const [key, value] of Object.entries(target.headers ?? {})) {
|
|
79
79
|
xhr.setRequestHeader(key, value);
|
|
80
80
|
}
|
|
81
81
|
xhr.send(body);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@woodleighschool/bloby-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Headless browser transfers for Bloby direct and multipart uploads.",
|
|
5
5
|
"homepage": "https://github.com/woodleighschool/goodies/tree/main/packages/bloby-client",
|
|
6
6
|
"bugs": "https://github.com/woodleighschool/goodies/issues",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"build": "tsc -p tsconfig.build.json",
|
|
30
30
|
"typecheck": "tsc --noEmit",
|
|
31
31
|
"test": "node --import tsx --test tests/*.test.ts",
|
|
32
|
+
"prepublishOnly": "pnpm run typecheck && pnpm run test",
|
|
32
33
|
"prepare": "pnpm run build"
|
|
33
34
|
},
|
|
34
35
|
"devDependencies": {
|