bruce-models 5.8.7 → 5.8.8
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/bruce-models.es5.js +78 -27
- package/dist/bruce-models.es5.js.map +1 -1
- package/dist/bruce-models.umd.js +78 -27
- package/dist/bruce-models.umd.js.map +1 -1
- package/dist/lib/bruce-models.js +1 -1
- package/dist/lib/internal/uploader.js +77 -26
- package/dist/lib/internal/uploader.js.map +1 -1
- package/dist/types/bruce-models.d.ts +1 -1
- package/package.json +1 -1
package/dist/lib/bruce-models.js
CHANGED
|
@@ -111,5 +111,5 @@ __exportStar(require("./environment"), exports);
|
|
|
111
111
|
__exportStar(require("./data-source/data-source"), exports);
|
|
112
112
|
__exportStar(require("./scenario/scenario"), exports);
|
|
113
113
|
// This is updated with the package.json version on build.
|
|
114
|
-
exports.VERSION = "5.8.
|
|
114
|
+
exports.VERSION = "5.8.8";
|
|
115
115
|
//# sourceMappingURL=bruce-models.js.map
|
|
@@ -30,20 +30,51 @@ var Uploader;
|
|
|
30
30
|
if (!api) {
|
|
31
31
|
api = environment_1.ENVIRONMENT.Api().GetBruceApi();
|
|
32
32
|
}
|
|
33
|
-
const
|
|
33
|
+
const getOptimalConcurrency = (fileSize) => {
|
|
34
|
+
// < 50MB
|
|
35
|
+
if (fileSize < 50 * 1024 * 1024) {
|
|
36
|
+
return 2;
|
|
37
|
+
}
|
|
38
|
+
// < 200MB
|
|
39
|
+
if (fileSize < 200 * 1024 * 1024) {
|
|
40
|
+
return 3;
|
|
41
|
+
}
|
|
42
|
+
// >= 200MB
|
|
43
|
+
return 4;
|
|
44
|
+
};
|
|
45
|
+
const concurrentUploads = getOptimalConcurrency(file.size);
|
|
46
|
+
const FILE_PORTION_SIZE = 35000000; // 35MB.
|
|
34
47
|
let fileSize = file.size;
|
|
35
|
-
let
|
|
36
|
-
let filePartsCount = fileSize / FILE_PORTION_SIZE;
|
|
48
|
+
let filePartsCount = Math.ceil(fileSize / FILE_PORTION_SIZE);
|
|
37
49
|
let t = Math.trunc(filePartsCount);
|
|
38
50
|
filePartsCount = filePartsCount > t ? t + 1 : t;
|
|
39
|
-
|
|
40
|
-
let
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
let
|
|
51
|
+
// Uploaded number of bytes so far.
|
|
52
|
+
let uploaded = 0;
|
|
53
|
+
// Part index -> uploaded amount.
|
|
54
|
+
// When the part finishes uploading, we remove from here and add to uploaded.
|
|
55
|
+
let uploadedPending = new Map();
|
|
56
|
+
const updateProgress = () => {
|
|
57
|
+
let total = uploaded;
|
|
58
|
+
uploadedPending.forEach((value) => {
|
|
59
|
+
total += (value || 0);
|
|
60
|
+
});
|
|
61
|
+
const percent = Math.round((total / fileSize) * 100);
|
|
62
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress({
|
|
63
|
+
percent: percent,
|
|
64
|
+
uploaded: false
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
const uploadToken = object_utils_1.ObjectUtils.UId();
|
|
68
|
+
const uploadPart = (filePartIndex) => __awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
const fileOffset = filePartIndex * FILE_PORTION_SIZE;
|
|
70
|
+
const partSize = Math.min(FILE_PORTION_SIZE, fileSize - fileOffset);
|
|
71
|
+
let retryCount = 3;
|
|
72
|
+
let retryWait = 3000;
|
|
73
|
+
let data = null;
|
|
46
74
|
while (retryCount > 0) {
|
|
75
|
+
// Reset pending loaded in case this is a retry.
|
|
76
|
+
uploadedPending.set(filePartIndex, 0);
|
|
77
|
+
updateProgress();
|
|
47
78
|
try {
|
|
48
79
|
const blob = file.slice(fileOffset, fileOffset + partSize);
|
|
49
80
|
const partialFile = new File([blob], file.name, { type: file.type });
|
|
@@ -51,20 +82,26 @@ var Uploader;
|
|
|
51
82
|
formData.append("originalFileName", file.name);
|
|
52
83
|
formData.append("token", uploadToken);
|
|
53
84
|
formData.append("count", "" + filePartsCount);
|
|
54
|
-
|
|
85
|
+
// Not 0-based.
|
|
86
|
+
formData.append("part", "" + (filePartIndex + 1));
|
|
55
87
|
formData.append("file", partialFile);
|
|
56
88
|
const reqParams = api_1.Api.PrepReqParams(req);
|
|
57
89
|
reqParams.formData = formData;
|
|
58
90
|
reqParams.onProgress = (progress) => {
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
percent: percent,
|
|
63
|
-
uploaded: false
|
|
64
|
-
});
|
|
91
|
+
const loaded = progress.loaded;
|
|
92
|
+
uploadedPending.set(filePartIndex, loaded);
|
|
93
|
+
updateProgress();
|
|
65
94
|
};
|
|
66
95
|
data = yield api.UPLOAD(url, partialFile, reqParams);
|
|
67
96
|
retryCount = 0;
|
|
97
|
+
uploaded += partSize;
|
|
98
|
+
// Flush the pending upload.
|
|
99
|
+
const pendingLoaded = uploadedPending.get(filePartIndex) || 0;
|
|
100
|
+
uploaded += pendingLoaded;
|
|
101
|
+
uploadedPending.delete(filePartIndex);
|
|
102
|
+
// Call onProgress since we completed a portion.
|
|
103
|
+
// This helps us know progress even when the request callback isn't working properly.
|
|
104
|
+
updateProgress();
|
|
68
105
|
}
|
|
69
106
|
catch (up) {
|
|
70
107
|
retryCount -= 1;
|
|
@@ -75,20 +112,34 @@ var Uploader;
|
|
|
75
112
|
retryWait = retryWait * 2;
|
|
76
113
|
}
|
|
77
114
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
115
|
+
return { index: filePartIndex, data };
|
|
116
|
+
});
|
|
117
|
+
let results = [];
|
|
118
|
+
for (let i = 0; i < filePartsCount; i += concurrentUploads) {
|
|
119
|
+
const uploadPromises = [];
|
|
120
|
+
for (let j = 0; j < concurrentUploads && (i + j) < filePartsCount; j++) {
|
|
121
|
+
uploadPromises.push(uploadPart(i + j));
|
|
122
|
+
}
|
|
123
|
+
const batchResults = yield Promise.all(uploadPromises);
|
|
124
|
+
// Sorting to maintain promise order.
|
|
125
|
+
// Helps determine what the last part was.
|
|
126
|
+
results.push(...batchResults.sort((a, b) => a.index - b.index).map(r => r.data));
|
|
86
127
|
}
|
|
87
128
|
onProgress === null || onProgress === void 0 ? void 0 : onProgress({
|
|
88
129
|
percent: 100,
|
|
89
130
|
uploaded: true
|
|
90
131
|
});
|
|
91
|
-
|
|
132
|
+
// Look for the explicitly stated final part.
|
|
133
|
+
const final = results.find(x => x.RemainingParts == 0);
|
|
134
|
+
if (final) {
|
|
135
|
+
return final;
|
|
136
|
+
}
|
|
137
|
+
// Look for the last part.
|
|
138
|
+
else if (results.length) {
|
|
139
|
+
return results[results.length - 1];
|
|
140
|
+
}
|
|
141
|
+
// :(
|
|
142
|
+
return null;
|
|
92
143
|
});
|
|
93
144
|
}
|
|
94
145
|
Uploader.DoMultiPartUpload = DoMultiPartUpload;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploader.js","sourceRoot":"","sources":["../../../src/internal/uploader.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oCAAiC;AAEjC,gDAA6C;AAC7C,uDAAmD;AAEnD;;GAEG;AACH,IAAiB,QAAQ,
|
|
1
|
+
{"version":3,"file":"uploader.js","sourceRoot":"","sources":["../../../src/internal/uploader.ts"],"names":[],"mappings":"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"}
|