Skip to content

Commit 67eb40a

Browse files
authored
Merge pull request #26 from apivideo/feat/mergeSmallPartsBeforeUpload
feat: Add mergeSmallPartsBeforeUpload option
2 parents 27914f0 + a63cc12 commit 67eb40a

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@api.video/video-uploader",
3-
"version": "1.1.0",
3+
"version": "1.1.1",
44
"description": "api.video video uploader",
55
"repository": {
66
"type": "git",

src/progressive-video-uploader.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { PromiseQueue } from "./promise-queue";
33

44
export interface ProgressiveUploadCommonOptions {
55
preventEmptyParts?: boolean;
6+
mergeSmallPartsBeforeUpload?: boolean;
67
}
78

89
export interface ProgressiveUploaderOptionsWithUploadToken extends ProgressiveUploadCommonOptions, CommonOptions, WithUploadToken { }
@@ -26,19 +27,25 @@ export class ProgressiveUploader extends AbstractUploader<ProgressiveProgressEve
2627
private queue = new PromiseQueue();
2728
private preventEmptyParts: boolean;
2829
private fileName: string;
30+
private mergeSmallPartsBeforeUpload: boolean;
2931

3032
constructor(options: ProgressiveUploaderOptionsWithAccessToken | ProgressiveUploaderOptionsWithUploadToken | ProgressiveUploaderOptionsWithApiKey) {
3133
super(options);
3234
this.preventEmptyParts = options.preventEmptyParts || false;
3335
this.fileName = options.videoName || 'file';
36+
this.mergeSmallPartsBeforeUpload = options.mergeSmallPartsBeforeUpload ?? true;
3437
}
3538

3639
public uploadPart(file: Blob): Promise<void> {
40+
if (!this.mergeSmallPartsBeforeUpload && file.size < MIN_CHUNK_SIZE) {
41+
throw new Error(`Each part must have a minimal size of 5MB. The current part has a size of ${this.currentPartBlobsSize / 1024 / 1024}MB.`)
42+
}
3743
this.currentPartBlobsSize += file.size;
3844
this.currentPartBlobs.push(file);
3945

4046
if ((this.preventEmptyParts && (this.currentPartBlobsSize - file.size >= MIN_CHUNK_SIZE))
41-
|| (!this.preventEmptyParts && (this.currentPartBlobsSize >= MIN_CHUNK_SIZE))) {
47+
|| (!this.preventEmptyParts && (this.currentPartBlobsSize >= MIN_CHUNK_SIZE))
48+
|| (!this.mergeSmallPartsBeforeUpload)) {
4249

4350
let toSend: any[];
4451
if(this.preventEmptyParts) {

0 commit comments

Comments
 (0)