bruce-models 1.8.0 → 1.8.2
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 +216 -41
- package/dist/bruce-models.es5.js.map +1 -1
- package/dist/bruce-models.umd.js +214 -40
- package/dist/bruce-models.umd.js.map +1 -1
- package/dist/lib/api/abstract-api.js +10 -4
- package/dist/lib/api/abstract-api.js.map +1 -1
- package/dist/lib/bruce-models.js +1 -0
- package/dist/lib/bruce-models.js.map +1 -1
- package/dist/lib/client-file/client-file.js +85 -32
- package/dist/lib/client-file/client-file.js.map +1 -1
- package/dist/lib/internal/uploader.js +77 -0
- package/dist/lib/internal/uploader.js.map +1 -0
- package/dist/lib/tileset/tileset.js +59 -4
- package/dist/lib/tileset/tileset.js.map +1 -1
- package/dist/types/api/api.d.ts +1 -1
- package/dist/types/bruce-models.d.ts +1 -0
- package/dist/types/client-file/client-file.d.ts +11 -2
- package/dist/types/internal/uploader.d.ts +16 -0
- package/dist/types/tileset/tileset.d.ts +5 -2
- package/package.json +1 -1
package/dist/bruce-models.es5.js
CHANGED
|
@@ -675,10 +675,16 @@ class AbstractApi {
|
|
|
675
675
|
if (this.ssidHeader && this.ssid) {
|
|
676
676
|
xhr.setRequestHeader(this.ssidHeader, this.ssid);
|
|
677
677
|
}
|
|
678
|
-
|
|
679
|
-
if (params === null || params === void 0 ? void 0 : params.formData) {
|
|
680
|
-
|
|
681
|
-
|
|
678
|
+
let formData;
|
|
679
|
+
if ((params === null || params === void 0 ? void 0 : params.formData) instanceof FormData) {
|
|
680
|
+
formData = params === null || params === void 0 ? void 0 : params.formData;
|
|
681
|
+
}
|
|
682
|
+
else {
|
|
683
|
+
formData = new FormData();
|
|
684
|
+
if (params.formData) {
|
|
685
|
+
for (const key in params.formData) {
|
|
686
|
+
formData.append(key, params.formData[key]);
|
|
687
|
+
}
|
|
682
688
|
}
|
|
683
689
|
}
|
|
684
690
|
formData.append("file", blob);
|
|
@@ -4717,6 +4723,69 @@ var EntityAttribute;
|
|
|
4717
4723
|
EntityAttribute.GetAttribute = GetAttribute;
|
|
4718
4724
|
})(EntityAttribute || (EntityAttribute = {}));
|
|
4719
4725
|
|
|
4726
|
+
var Uploader;
|
|
4727
|
+
(function (Uploader) {
|
|
4728
|
+
Uploader.MIN_LARGE_FILE_SIZE = 100000000; // 100MB.
|
|
4729
|
+
function DoMultiPartUpload(params) {
|
|
4730
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
4731
|
+
const { file, api, urlSuffix: url, req, onProgress } = params;
|
|
4732
|
+
const FILE_PORTION_SIZE = 100000000; // 100MB.
|
|
4733
|
+
let fileSize = file.size;
|
|
4734
|
+
let fileOffset = 0;
|
|
4735
|
+
let filePartsCount = fileSize / FILE_PORTION_SIZE;
|
|
4736
|
+
let t = Math.trunc(filePartsCount);
|
|
4737
|
+
filePartsCount = filePartsCount > t ? t + 1 : t;
|
|
4738
|
+
let filePartIndex = 1;
|
|
4739
|
+
let uploadToken = ObjectUtils.UId();
|
|
4740
|
+
let data;
|
|
4741
|
+
while (fileOffset < fileSize) {
|
|
4742
|
+
let partSize = Math.min(FILE_PORTION_SIZE, fileSize - fileOffset);
|
|
4743
|
+
let retryCount = 5;
|
|
4744
|
+
let retryWait = 1000;
|
|
4745
|
+
while (retryCount > 0) {
|
|
4746
|
+
try {
|
|
4747
|
+
const blob = file.slice(fileOffset, fileOffset + partSize);
|
|
4748
|
+
const formData = new FormData();
|
|
4749
|
+
formData.append("originalFileName", file.name);
|
|
4750
|
+
formData.append("token", uploadToken);
|
|
4751
|
+
formData.append("count", "" + filePartsCount);
|
|
4752
|
+
formData.append("part", "" + filePartIndex);
|
|
4753
|
+
formData.append("file", blob);
|
|
4754
|
+
const reqParams = Api.PrepReqParams(req);
|
|
4755
|
+
reqParams.formData = formData;
|
|
4756
|
+
reqParams.onProgress = (progress) => {
|
|
4757
|
+
const sofar = fileOffset + progress.loaded;
|
|
4758
|
+
const percent = Math.round((sofar / file.size) * 100);
|
|
4759
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress({
|
|
4760
|
+
percent: percent,
|
|
4761
|
+
uploaded: false
|
|
4762
|
+
});
|
|
4763
|
+
};
|
|
4764
|
+
data = yield api.UPLOAD(url, blob, reqParams);
|
|
4765
|
+
retryCount = 0;
|
|
4766
|
+
}
|
|
4767
|
+
catch (up) {
|
|
4768
|
+
retryCount -= 1;
|
|
4769
|
+
if (retryCount <= 0) {
|
|
4770
|
+
throw up;
|
|
4771
|
+
}
|
|
4772
|
+
yield new Promise((res) => setTimeout(res, retryWait));
|
|
4773
|
+
retryWait = retryWait * 2;
|
|
4774
|
+
}
|
|
4775
|
+
}
|
|
4776
|
+
fileOffset += partSize;
|
|
4777
|
+
filePartIndex++;
|
|
4778
|
+
}
|
|
4779
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress({
|
|
4780
|
+
percent: 100,
|
|
4781
|
+
uploaded: true
|
|
4782
|
+
});
|
|
4783
|
+
return data;
|
|
4784
|
+
});
|
|
4785
|
+
}
|
|
4786
|
+
Uploader.DoMultiPartUpload = DoMultiPartUpload;
|
|
4787
|
+
})(Uploader || (Uploader = {}));
|
|
4788
|
+
|
|
4720
4789
|
/**
|
|
4721
4790
|
* Describes the "Client File" concept within Bruce.
|
|
4722
4791
|
* A client file is a record of a file uploaded to Bruce.
|
|
@@ -4783,33 +4852,67 @@ var ClientFile;
|
|
|
4783
4852
|
ClientFile.Delete = Delete;
|
|
4784
4853
|
function Upload(params) {
|
|
4785
4854
|
return __awaiter(this, void 0, void 0, function* () {
|
|
4786
|
-
const { api, file, purpose, req } = params;
|
|
4855
|
+
const { api, file, purpose, req, onProgress } = params;
|
|
4787
4856
|
if (!file) {
|
|
4788
4857
|
throw ("File is required.");
|
|
4789
4858
|
}
|
|
4790
|
-
|
|
4791
|
-
if (
|
|
4792
|
-
|
|
4793
|
-
"Purpose": purpose
|
|
4794
|
-
};
|
|
4859
|
+
const size = file === null || file === void 0 ? void 0 : file.size;
|
|
4860
|
+
if (!size) {
|
|
4861
|
+
throw ("You cannot upload a 0byte sized file.");
|
|
4795
4862
|
}
|
|
4796
|
-
|
|
4797
|
-
|
|
4798
|
-
|
|
4799
|
-
|
|
4800
|
-
|
|
4801
|
-
|
|
4802
|
-
|
|
4863
|
+
let clientFile;
|
|
4864
|
+
if (size > Uploader.MIN_LARGE_FILE_SIZE) {
|
|
4865
|
+
clientFile = yield Uploader.DoMultiPartUpload({
|
|
4866
|
+
api,
|
|
4867
|
+
file,
|
|
4868
|
+
urlSuffix: "fileUpload",
|
|
4869
|
+
req,
|
|
4870
|
+
onProgress
|
|
4871
|
+
});
|
|
4872
|
+
}
|
|
4873
|
+
else {
|
|
4874
|
+
const reqParams = Api.PrepReqParams(Object.assign({}, req));
|
|
4875
|
+
reqParams.onProgress = (progress) => {
|
|
4876
|
+
const percent = Math.round((progress.loaded / file.size) * 100);
|
|
4877
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress({
|
|
4878
|
+
percent: percent,
|
|
4879
|
+
uploaded: false
|
|
4803
4880
|
});
|
|
4804
|
-
}
|
|
4805
|
-
|
|
4806
|
-
|
|
4807
|
-
|
|
4808
|
-
|
|
4809
|
-
|
|
4881
|
+
};
|
|
4882
|
+
clientFile = yield api.UPLOAD("file/uploadNew", file, req);
|
|
4883
|
+
}
|
|
4884
|
+
if ((clientFile === null || clientFile === void 0 ? void 0 : clientFile.ID) && purpose) {
|
|
4885
|
+
yield UpdatePurpose({
|
|
4886
|
+
api,
|
|
4887
|
+
fileId: clientFile.ID,
|
|
4888
|
+
purpose,
|
|
4889
|
+
req
|
|
4890
|
+
});
|
|
4891
|
+
}
|
|
4892
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress({
|
|
4893
|
+
percent: 100,
|
|
4894
|
+
uploaded: true
|
|
4895
|
+
});
|
|
4896
|
+
return {
|
|
4897
|
+
clientFile
|
|
4898
|
+
};
|
|
4810
4899
|
});
|
|
4811
4900
|
}
|
|
4812
4901
|
ClientFile.Upload = Upload;
|
|
4902
|
+
function UpdatePurpose(params) {
|
|
4903
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
4904
|
+
let { api, fileId, purpose, req: reqParams } = params;
|
|
4905
|
+
if (!purpose) {
|
|
4906
|
+
purpose = "";
|
|
4907
|
+
}
|
|
4908
|
+
yield api.POST("file/updatepurpose/" + fileId + "/?Purpose=" + purpose, {
|
|
4909
|
+
Purpose: purpose
|
|
4910
|
+
}, Api.PrepReqParams(reqParams));
|
|
4911
|
+
const cacheKey = GetCacheKey(fileId);
|
|
4912
|
+
api.Cache.RemoveByContains(cacheKey);
|
|
4913
|
+
});
|
|
4914
|
+
}
|
|
4915
|
+
ClientFile.UpdatePurpose = UpdatePurpose;
|
|
4813
4916
|
/**
|
|
4814
4917
|
* Uploads a temp file.
|
|
4815
4918
|
* This will return a temp file id which can be used in various endpoints.
|
|
@@ -4818,23 +4921,41 @@ var ClientFile;
|
|
|
4818
4921
|
*/
|
|
4819
4922
|
function UploadTemp(params) {
|
|
4820
4923
|
return __awaiter(this, void 0, void 0, function* () {
|
|
4821
|
-
const { api, file, req } = params;
|
|
4924
|
+
const { api, file, req, onProgress } = params;
|
|
4822
4925
|
if (!file) {
|
|
4823
4926
|
throw ("File is required.");
|
|
4824
4927
|
}
|
|
4825
|
-
const
|
|
4826
|
-
|
|
4827
|
-
|
|
4828
|
-
|
|
4829
|
-
|
|
4830
|
-
|
|
4928
|
+
const size = file === null || file === void 0 ? void 0 : file.size;
|
|
4929
|
+
if (!size) {
|
|
4930
|
+
throw ("You cannot upload a 0byte sized file.");
|
|
4931
|
+
}
|
|
4932
|
+
let tempFile;
|
|
4933
|
+
if (size > Uploader.MIN_LARGE_FILE_SIZE) {
|
|
4934
|
+
tempFile = yield Uploader.DoMultiPartUpload({
|
|
4935
|
+
api,
|
|
4936
|
+
file,
|
|
4937
|
+
urlSuffix: "tempFileUpload",
|
|
4938
|
+
req,
|
|
4939
|
+
onProgress
|
|
4940
|
+
});
|
|
4941
|
+
}
|
|
4942
|
+
else {
|
|
4943
|
+
req.onProgress = (progress) => {
|
|
4944
|
+
const percent = Math.round((progress.loaded / file.size) * 100);
|
|
4945
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress({
|
|
4946
|
+
percent: percent,
|
|
4947
|
+
uploaded: false
|
|
4831
4948
|
});
|
|
4832
|
-
}
|
|
4833
|
-
|
|
4834
|
-
|
|
4835
|
-
|
|
4836
|
-
|
|
4837
|
-
|
|
4949
|
+
};
|
|
4950
|
+
tempFile = yield api.UPLOAD("file/uploadTemp", file, req);
|
|
4951
|
+
}
|
|
4952
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress({
|
|
4953
|
+
percent: 100,
|
|
4954
|
+
uploaded: true
|
|
4955
|
+
});
|
|
4956
|
+
return {
|
|
4957
|
+
tempFileId: tempFile["TempFile.ID"]
|
|
4958
|
+
};
|
|
4838
4959
|
});
|
|
4839
4960
|
}
|
|
4840
4961
|
ClientFile.UploadTemp = UploadTemp;
|
|
@@ -5165,11 +5286,38 @@ var Tileset;
|
|
|
5165
5286
|
Tileset.Update = Update;
|
|
5166
5287
|
function UploadFile(params) {
|
|
5167
5288
|
return __awaiter(this, void 0, void 0, function* () {
|
|
5168
|
-
const { api,
|
|
5289
|
+
const { api, file, req, tilesetId, onProgress } = params;
|
|
5169
5290
|
if (!tilesetId || !file) {
|
|
5170
5291
|
throw ("Tileset ID and file are required.");
|
|
5171
5292
|
}
|
|
5172
|
-
|
|
5293
|
+
const size = file === null || file === void 0 ? void 0 : file.size;
|
|
5294
|
+
if (!size) {
|
|
5295
|
+
throw ("You cannot upload a 0byte sized file.");
|
|
5296
|
+
}
|
|
5297
|
+
if (size > Uploader.MIN_LARGE_FILE_SIZE) {
|
|
5298
|
+
yield Uploader.DoMultiPartUpload({
|
|
5299
|
+
api,
|
|
5300
|
+
file,
|
|
5301
|
+
urlSuffix: `tileset/uploadFileEx/${tilesetId}/add`,
|
|
5302
|
+
req,
|
|
5303
|
+
onProgress
|
|
5304
|
+
});
|
|
5305
|
+
}
|
|
5306
|
+
else {
|
|
5307
|
+
req.onProgress = (progress) => {
|
|
5308
|
+
const percent = Math.round((progress.loaded / file.size) * 100);
|
|
5309
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress({
|
|
5310
|
+
percent: percent,
|
|
5311
|
+
uploaded: false
|
|
5312
|
+
});
|
|
5313
|
+
};
|
|
5314
|
+
yield api.UPLOAD(`tileset/uploadFile/${tilesetId}/files`, file, req);
|
|
5315
|
+
}
|
|
5316
|
+
api.Cache.Remove(GetCacheKey(tilesetId, true));
|
|
5317
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress({
|
|
5318
|
+
percent: 100,
|
|
5319
|
+
uploaded: true
|
|
5320
|
+
});
|
|
5173
5321
|
});
|
|
5174
5322
|
}
|
|
5175
5323
|
Tileset.UploadFile = UploadFile;
|
|
@@ -5186,12 +5334,39 @@ var Tileset;
|
|
|
5186
5334
|
Tileset.DeleteFile = DeleteFile;
|
|
5187
5335
|
function UploadSrcFile(params) {
|
|
5188
5336
|
return __awaiter(this, void 0, void 0, function* () {
|
|
5189
|
-
const { api,
|
|
5337
|
+
const { api, file, req, tilesetId, onProgress } = params;
|
|
5190
5338
|
if (!tilesetId || !file) {
|
|
5191
5339
|
throw ("Tileset ID and file are required.");
|
|
5192
5340
|
}
|
|
5193
|
-
|
|
5341
|
+
const size = file === null || file === void 0 ? void 0 : file.size;
|
|
5342
|
+
if (!size) {
|
|
5343
|
+
throw ("You cannot upload a 0byte sized file.");
|
|
5344
|
+
}
|
|
5345
|
+
if (size > Uploader.MIN_LARGE_FILE_SIZE) {
|
|
5346
|
+
yield Uploader.DoMultiPartUpload({
|
|
5347
|
+
api,
|
|
5348
|
+
file,
|
|
5349
|
+
urlSuffix: `tileset/uploadFileEx/${tilesetId}/src`,
|
|
5350
|
+
req,
|
|
5351
|
+
onProgress
|
|
5352
|
+
});
|
|
5353
|
+
}
|
|
5354
|
+
else {
|
|
5355
|
+
req.onProgress = (progress) => {
|
|
5356
|
+
const percent = Math.round((progress.loaded / file.size) * 100);
|
|
5357
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress({
|
|
5358
|
+
percent: percent,
|
|
5359
|
+
uploaded: false
|
|
5360
|
+
});
|
|
5361
|
+
};
|
|
5362
|
+
yield api.UPLOAD(`tileset/uploadFile/${tilesetId}/src`, file, req);
|
|
5363
|
+
}
|
|
5194
5364
|
api.Cache.Remove(GetCacheKey(tilesetId, true));
|
|
5365
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress({
|
|
5366
|
+
percent: 100,
|
|
5367
|
+
uploaded: true
|
|
5368
|
+
});
|
|
5369
|
+
return;
|
|
5195
5370
|
});
|
|
5196
5371
|
}
|
|
5197
5372
|
Tileset.UploadSrcFile = UploadSrcFile;
|
|
@@ -7217,5 +7392,5 @@ var Markup;
|
|
|
7217
7392
|
})(Circle = Markup.Circle || (Markup.Circle = {}));
|
|
7218
7393
|
})(Markup || (Markup = {}));
|
|
7219
7394
|
|
|
7220
|
-
export { AnnDocument, CustomForm, CustomFormContent, AbstractApi, Api, BruceApi, CamApi, IdmApi, GlobalApi, ApiGetters, Calculator, Bounds, BruceEvent, CacheControl, Camera, Cartes, Carto, Color, DelayQueue, Geometry, UTC, BruceVariable, EntityAttachmentType, EntityAttachment, EntityComment, EntityLink, EntityLod, EntityLodCategory, EntityRelationType, EntityRelation, EntitySource, EntityTag, EntityType, Entity, EntityGlobe, EntityFilterGetter, BatchedDataGetter, EntityCoords, EntityTypeVisualSettings, EntityAttribute, ClientFile, ProgramKey, ZoomControl, MenuItem, ProjectViewBookmark, ProjectView, ProjectViewLegacyTile, ProjectViewTile, PendingAction, MessageBroker, Style, Tileset, Permission, Session, UserGroup, User, Account, EncryptUtils, MathUtils, ObjectUtils, PathUtils, UrlUtils, DataLab, ImportCad, ImportCsv, ImportJson, ImportKml, ImportedFile, Markup };
|
|
7395
|
+
export { AnnDocument, CustomForm, CustomFormContent, AbstractApi, Api, BruceApi, CamApi, IdmApi, GlobalApi, ApiGetters, Calculator, Bounds, BruceEvent, CacheControl, Camera, Cartes, Carto, Color, DelayQueue, Geometry, UTC, BruceVariable, EntityAttachmentType, EntityAttachment, EntityComment, EntityLink, EntityLod, EntityLodCategory, EntityRelationType, EntityRelation, EntitySource, EntityTag, EntityType, Entity, EntityGlobe, EntityFilterGetter, BatchedDataGetter, EntityCoords, EntityTypeVisualSettings, EntityAttribute, ClientFile, ProgramKey, ZoomControl, MenuItem, ProjectViewBookmark, ProjectView, ProjectViewLegacyTile, ProjectViewTile, PendingAction, MessageBroker, Style, Tileset, Permission, Session, UserGroup, User, Account, EncryptUtils, MathUtils, ObjectUtils, PathUtils, UrlUtils, DataLab, ImportCad, ImportCsv, ImportJson, ImportKml, ImportedFile, Markup, Uploader };
|
|
7221
7396
|
//# sourceMappingURL=bruce-models.es5.js.map
|