@uploadcare/upload-client 6.18.4 → 6.19.0-alpha.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/README.md +1 -2
- package/dist/cjs/index.browser.cjs +47 -45
- package/dist/cjs/index.browser.d.cts +14 -6
- package/dist/cjs/index.node.cjs +47 -45
- package/dist/cjs/index.node.d.cts +14 -6
- package/dist/cjs/index.react-native.cjs +47 -45
- package/dist/cjs/index.react-native.d.cts +14 -6
- package/dist/esm/index.browser.d.mts +14 -6
- package/dist/esm/index.browser.mjs +47 -45
- package/dist/esm/index.node.d.mts +14 -6
- package/dist/esm/index.node.mjs +47 -45
- package/dist/esm/index.react-native.d.mts +14 -6
- package/dist/esm/index.react-native.mjs +47 -45
- package/dist/index.d.ts +14 -6
- package/package.json +12 -6
|
@@ -488,7 +488,7 @@ function getStoreValue(store) {
|
|
|
488
488
|
* Performs file uploading request to Uploadcare Upload API. Can be canceled and
|
|
489
489
|
* has progress.
|
|
490
490
|
*/
|
|
491
|
-
function base(file, { publicKey, fileName, contentType, baseURL = defaultSettings.baseURL, secureSignature, secureExpire, store, signal, onProgress, source = 'local', integration, userAgent, retryThrottledRequestMaxTimes = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes = defaultSettings.retryNetworkErrorMaxTimes, metadata }) {
|
|
491
|
+
function base(file, { publicKey, fileName, contentType, baseURL = defaultSettings.baseURL, secureSignature, secureExpire, store, signal, onProgress, source = 'local', integration, userAgent, retryThrottledRequestMaxTimes = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes = defaultSettings.retryNetworkErrorMaxTimes, metadata, tags }) {
|
|
492
492
|
return retryIfFailed(() => request({
|
|
493
493
|
method: 'POST',
|
|
494
494
|
url: getUrl(baseURL, '/base/', {
|
|
@@ -508,7 +508,8 @@ function base(file, { publicKey, fileName, contentType, baseURL = defaultSetting
|
|
|
508
508
|
signature: secureSignature,
|
|
509
509
|
expire: secureExpire,
|
|
510
510
|
source: source,
|
|
511
|
-
metadata
|
|
511
|
+
metadata,
|
|
512
|
+
tags: tags && tags.join(',')
|
|
512
513
|
}),
|
|
513
514
|
signal,
|
|
514
515
|
onProgress
|
|
@@ -681,7 +682,7 @@ function info(uuid, { publicKey, baseURL = defaultSettings.baseURL, signal, sour
|
|
|
681
682
|
}
|
|
682
683
|
|
|
683
684
|
/** Start multipart uploading. */
|
|
684
|
-
function multipartStart(size, { publicKey, contentType, fileName, multipartChunkSize = defaultSettings.multipartChunkSize, baseURL = '', secureSignature, secureExpire, store, signal, source = 'local', integration, userAgent, retryThrottledRequestMaxTimes = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes = defaultSettings.retryNetworkErrorMaxTimes, metadata }) {
|
|
685
|
+
function multipartStart(size, { publicKey, contentType, fileName, multipartChunkSize = defaultSettings.multipartChunkSize, baseURL = '', secureSignature, secureExpire, store, signal, source = 'local', integration, userAgent, retryThrottledRequestMaxTimes = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes = defaultSettings.retryNetworkErrorMaxTimes, metadata, tags }) {
|
|
685
686
|
return retryIfFailed(() => request({
|
|
686
687
|
method: 'POST',
|
|
687
688
|
url: getUrl(baseURL, '/multipart/start/', { jsonerrors: 1 }),
|
|
@@ -698,7 +699,8 @@ function multipartStart(size, { publicKey, contentType, fileName, multipartChunk
|
|
|
698
699
|
signature: secureSignature,
|
|
699
700
|
expire: secureExpire,
|
|
700
701
|
source: source,
|
|
701
|
-
metadata
|
|
702
|
+
metadata,
|
|
703
|
+
tags: tags && tags.join(',')
|
|
702
704
|
}),
|
|
703
705
|
signal
|
|
704
706
|
}).then(({ data, headers, request }) => {
|
|
@@ -780,9 +782,9 @@ function isReadyPoll(uuid, { publicKey, baseURL, source, integration, userAgent,
|
|
|
780
782
|
retryNetworkErrorMaxTimes
|
|
781
783
|
}).then((response) => {
|
|
782
784
|
if (response.isReady) {
|
|
785
|
+
onProgress && onProgress({ isComputable: true, value: 1 });
|
|
783
786
|
return response;
|
|
784
787
|
}
|
|
785
|
-
onProgress && onProgress({ isComputable: true, value: 1 });
|
|
786
788
|
return false;
|
|
787
789
|
}),
|
|
788
790
|
signal
|
|
@@ -806,6 +808,7 @@ class UploadcareFile {
|
|
|
806
808
|
videoInfo;
|
|
807
809
|
contentInfo;
|
|
808
810
|
metadata;
|
|
811
|
+
tags;
|
|
809
812
|
s3Bucket;
|
|
810
813
|
defaultEffects = null;
|
|
811
814
|
constructor(fileInfo, { baseCDN = defaultSettings.baseCDN, fileName } = {}) {
|
|
@@ -826,6 +829,7 @@ class UploadcareFile {
|
|
|
826
829
|
this.videoInfo = fileInfo.videoInfo;
|
|
827
830
|
this.contentInfo = fileInfo.contentInfo;
|
|
828
831
|
this.metadata = fileInfo.metadata || null;
|
|
832
|
+
this.tags = fileInfo.tags || null;
|
|
829
833
|
this.s3Bucket = s3Bucket || null;
|
|
830
834
|
this.s3Url = s3Url;
|
|
831
835
|
if (isGroupFileInfo(fileInfo)) {
|
|
@@ -834,7 +838,7 @@ class UploadcareFile {
|
|
|
834
838
|
}
|
|
835
839
|
}
|
|
836
840
|
|
|
837
|
-
const uploadDirect = (file, { publicKey, fileName, baseURL, secureSignature, secureExpire, store, contentType, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, baseCDN, metadata }) => {
|
|
841
|
+
const uploadDirect = (file, { publicKey, fileName, baseURL, secureSignature, secureExpire, store, contentType, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, baseCDN, metadata, tags }) => {
|
|
838
842
|
return base(file, {
|
|
839
843
|
publicKey,
|
|
840
844
|
fileName,
|
|
@@ -850,7 +854,8 @@ const uploadDirect = (file, { publicKey, fileName, baseURL, secureSignature, sec
|
|
|
850
854
|
userAgent,
|
|
851
855
|
retryThrottledRequestMaxTimes,
|
|
852
856
|
retryNetworkErrorMaxTimes,
|
|
853
|
-
metadata
|
|
857
|
+
metadata,
|
|
858
|
+
tags
|
|
854
859
|
})
|
|
855
860
|
.then(({ file }) => {
|
|
856
861
|
return isReadyPoll(file, {
|
|
@@ -869,26 +874,17 @@ const uploadDirect = (file, { publicKey, fileName, baseURL, secureSignature, sec
|
|
|
869
874
|
};
|
|
870
875
|
|
|
871
876
|
const uploadFromUploaded = (uuid, { publicKey, fileName, baseURL, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, baseCDN }) => {
|
|
872
|
-
return
|
|
877
|
+
return isReadyPoll(uuid, {
|
|
873
878
|
publicKey,
|
|
874
879
|
baseURL,
|
|
875
880
|
signal,
|
|
881
|
+
onProgress,
|
|
876
882
|
source,
|
|
877
883
|
integration,
|
|
878
884
|
userAgent,
|
|
879
885
|
retryThrottledRequestMaxTimes,
|
|
880
886
|
retryNetworkErrorMaxTimes
|
|
881
|
-
})
|
|
882
|
-
.then((fileInfo) => new UploadcareFile(fileInfo, { baseCDN, fileName }))
|
|
883
|
-
.then((result) => {
|
|
884
|
-
// hack for node ¯\_(ツ)_/¯
|
|
885
|
-
if (onProgress)
|
|
886
|
-
onProgress({
|
|
887
|
-
isComputable: true,
|
|
888
|
-
value: 1
|
|
889
|
-
});
|
|
890
|
-
return result;
|
|
891
|
-
});
|
|
887
|
+
}).then((fileInfo) => new UploadcareFile(fileInfo, { baseCDN, fileName }));
|
|
892
888
|
};
|
|
893
889
|
|
|
894
890
|
const race = (fns, { signal } = {}) => {
|
|
@@ -1218,15 +1214,20 @@ const uploadFromUrl = (sourceUrl, { publicKey, fileName, baseURL, baseCDN, check
|
|
|
1218
1214
|
throw result;
|
|
1219
1215
|
return result;
|
|
1220
1216
|
})
|
|
1221
|
-
.then((result) =>
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1217
|
+
.then((result) => {
|
|
1218
|
+
if (result.isReady) {
|
|
1219
|
+
return result;
|
|
1220
|
+
}
|
|
1221
|
+
return isReadyPoll(result.uuid, {
|
|
1222
|
+
publicKey,
|
|
1223
|
+
baseURL,
|
|
1224
|
+
integration,
|
|
1225
|
+
userAgent,
|
|
1226
|
+
retryThrottledRequestMaxTimes,
|
|
1227
|
+
onProgress,
|
|
1228
|
+
signal
|
|
1229
|
+
});
|
|
1230
|
+
})
|
|
1230
1231
|
.then((fileInfo) => new UploadcareFile(fileInfo, { baseCDN }));
|
|
1231
1232
|
|
|
1232
1233
|
const memo = new WeakMap();
|
|
@@ -1346,7 +1347,7 @@ const uploadPart = (chunk, url, { publicKey, contentType, onProgress, signal, in
|
|
|
1346
1347
|
retryThrottledRequestMaxTimes,
|
|
1347
1348
|
retryNetworkErrorMaxTimes
|
|
1348
1349
|
});
|
|
1349
|
-
const uploadMultipart = async (file, { publicKey, fileName, fileSize, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartChunkSize = defaultSettings.multipartChunkSize, maxConcurrentRequests = defaultSettings.maxConcurrentRequests, baseCDN, metadata }) => {
|
|
1350
|
+
const uploadMultipart = async (file, { publicKey, fileName, fileSize, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartChunkSize = defaultSettings.multipartChunkSize, maxConcurrentRequests = defaultSettings.maxConcurrentRequests, baseCDN, metadata, tags }) => {
|
|
1350
1351
|
const size = fileSize ?? (await getFileSize(file));
|
|
1351
1352
|
let progressValues;
|
|
1352
1353
|
const createProgressHandler = (totalChunks, chunkIdx) => {
|
|
@@ -1383,6 +1384,7 @@ const uploadMultipart = async (file, { publicKey, fileName, fileSize, baseURL, s
|
|
|
1383
1384
|
retryThrottledRequestMaxTimes,
|
|
1384
1385
|
retryNetworkErrorMaxTimes,
|
|
1385
1386
|
metadata,
|
|
1387
|
+
tags,
|
|
1386
1388
|
multipartChunkSize
|
|
1387
1389
|
})
|
|
1388
1390
|
.then(async ({ uuid, parts }) => {
|
|
@@ -1413,25 +1415,23 @@ const uploadMultipart = async (file, { publicKey, fileName, fileSize, baseURL, s
|
|
|
1413
1415
|
if (fileInfo.isReady) {
|
|
1414
1416
|
return fileInfo;
|
|
1415
1417
|
}
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
});
|
|
1428
|
-
}
|
|
1418
|
+
return isReadyPoll(fileInfo.uuid, {
|
|
1419
|
+
publicKey,
|
|
1420
|
+
baseURL,
|
|
1421
|
+
source,
|
|
1422
|
+
integration,
|
|
1423
|
+
userAgent,
|
|
1424
|
+
retryThrottledRequestMaxTimes,
|
|
1425
|
+
retryNetworkErrorMaxTimes,
|
|
1426
|
+
onProgress,
|
|
1427
|
+
signal
|
|
1428
|
+
});
|
|
1429
1429
|
})
|
|
1430
1430
|
.then((fileInfo) => new UploadcareFile(fileInfo, { baseCDN }));
|
|
1431
1431
|
};
|
|
1432
1432
|
|
|
1433
1433
|
/** Uploads file from provided data. */
|
|
1434
|
-
async function uploadFile(data, { publicKey, fileName, baseURL = defaultSettings.baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartMinFileSize, multipartChunkSize, maxConcurrentRequests, baseCDN = defaultSettings.baseCDN, checkForUrlDuplicates, saveUrlForRecurrentUploads, pusherKey, metadata }) {
|
|
1434
|
+
async function uploadFile(data, { publicKey, fileName, baseURL = defaultSettings.baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartMinFileSize, multipartChunkSize, maxConcurrentRequests, baseCDN = defaultSettings.baseCDN, checkForUrlDuplicates, saveUrlForRecurrentUploads, pusherKey, metadata, tags }) {
|
|
1435
1435
|
if (isFileData(data)) {
|
|
1436
1436
|
const fileSize = await getFileSize(data);
|
|
1437
1437
|
if (isMultipart(fileSize, multipartMinFileSize)) {
|
|
@@ -1454,7 +1454,8 @@ async function uploadFile(data, { publicKey, fileName, baseURL = defaultSettings
|
|
|
1454
1454
|
retryThrottledRequestMaxTimes,
|
|
1455
1455
|
retryNetworkErrorMaxTimes,
|
|
1456
1456
|
baseCDN,
|
|
1457
|
-
metadata
|
|
1457
|
+
metadata,
|
|
1458
|
+
tags
|
|
1458
1459
|
});
|
|
1459
1460
|
}
|
|
1460
1461
|
return uploadDirect(data, {
|
|
@@ -1473,7 +1474,8 @@ async function uploadFile(data, { publicKey, fileName, baseURL = defaultSettings
|
|
|
1473
1474
|
retryThrottledRequestMaxTimes,
|
|
1474
1475
|
retryNetworkErrorMaxTimes,
|
|
1475
1476
|
baseCDN,
|
|
1476
|
-
metadata
|
|
1477
|
+
metadata,
|
|
1478
|
+
tags
|
|
1477
1479
|
});
|
|
1478
1480
|
}
|
|
1479
1481
|
if (isUrl(data)) {
|
|
@@ -73,6 +73,7 @@ export type ContentInfo = {
|
|
|
73
73
|
video?: VideoInfo;
|
|
74
74
|
};
|
|
75
75
|
export type Metadata = Record<string, string>;
|
|
76
|
+
export type Tags = string[];
|
|
76
77
|
export type StoreValue = "auto" | boolean;
|
|
77
78
|
export declare class CancelError extends UploadcareError {
|
|
78
79
|
isCancel: boolean;
|
|
@@ -125,12 +126,13 @@ export type FileInfo = {
|
|
|
125
126
|
mimeType: string;
|
|
126
127
|
isImage: boolean;
|
|
127
128
|
isStored: boolean;
|
|
128
|
-
isReady:
|
|
129
|
+
isReady: boolean;
|
|
129
130
|
imageInfo: ImageInfo | null;
|
|
130
131
|
videoInfo: VideoInfo | null;
|
|
131
132
|
contentInfo: ContentInfo | null;
|
|
132
133
|
s3Bucket?: string;
|
|
133
134
|
metadata?: Metadata;
|
|
135
|
+
tags?: Tags;
|
|
134
136
|
};
|
|
135
137
|
export type GroupFileInfo = FileInfo & {
|
|
136
138
|
defaultEffects: string;
|
|
@@ -175,12 +177,13 @@ export type BaseOptions = {
|
|
|
175
177
|
retryThrottledRequestMaxTimes?: number;
|
|
176
178
|
retryNetworkErrorMaxTimes?: number;
|
|
177
179
|
metadata?: Metadata;
|
|
180
|
+
tags?: Tags;
|
|
178
181
|
};
|
|
179
182
|
/**
|
|
180
183
|
* Performs file uploading request to Uploadcare Upload API. Can be canceled and
|
|
181
184
|
* has progress.
|
|
182
185
|
*/
|
|
183
|
-
export function base(file: SupportedFileInput, { publicKey, fileName, contentType, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, metadata }: BaseOptions): Promise<BaseResponse>;
|
|
186
|
+
export function base(file: SupportedFileInput, { publicKey, fileName, contentType, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, metadata, tags }: BaseOptions): Promise<BaseResponse>;
|
|
184
187
|
export declare enum TypeEnum {
|
|
185
188
|
Token = "token",
|
|
186
189
|
FileInfo = "file_info"
|
|
@@ -309,6 +312,7 @@ export type MultipartStartOptions = {
|
|
|
309
312
|
retryThrottledRequestMaxTimes?: number;
|
|
310
313
|
retryNetworkErrorMaxTimes?: number;
|
|
311
314
|
metadata?: Metadata;
|
|
315
|
+
tags?: Tags;
|
|
312
316
|
};
|
|
313
317
|
export type MultipartPart = string;
|
|
314
318
|
export type MultipartStartResponse = {
|
|
@@ -316,7 +320,7 @@ export type MultipartStartResponse = {
|
|
|
316
320
|
uuid: Uuid;
|
|
317
321
|
};
|
|
318
322
|
/** Start multipart uploading. */
|
|
319
|
-
export function multipartStart(size: number, { publicKey, contentType, fileName, multipartChunkSize, baseURL, secureSignature, secureExpire, store, signal, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, metadata }: MultipartStartOptions): Promise<MultipartStartResponse>;
|
|
323
|
+
export function multipartStart(size: number, { publicKey, contentType, fileName, multipartChunkSize, baseURL, secureSignature, secureExpire, store, signal, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, metadata, tags }: MultipartStartOptions): Promise<MultipartStartResponse>;
|
|
320
324
|
export type MultipartUploadOptions = {
|
|
321
325
|
publicKey?: string;
|
|
322
326
|
contentType?: string;
|
|
@@ -357,6 +361,7 @@ export declare class UploadcareFile {
|
|
|
357
361
|
readonly videoInfo: VideoInfo | null;
|
|
358
362
|
readonly contentInfo: ContentInfo | null;
|
|
359
363
|
readonly metadata: Metadata | null;
|
|
364
|
+
readonly tags: Tags | null;
|
|
360
365
|
readonly s3Bucket: string | null;
|
|
361
366
|
readonly defaultEffects: null | string;
|
|
362
367
|
constructor(fileInfo: FileInfo | GroupFileInfo, { baseCDN, fileName }?: {
|
|
@@ -387,9 +392,10 @@ export type FileFromOptions = {
|
|
|
387
392
|
saveUrlForRecurrentUploads?: boolean;
|
|
388
393
|
pusherKey?: string;
|
|
389
394
|
metadata?: Metadata;
|
|
395
|
+
tags?: Tags;
|
|
390
396
|
};
|
|
391
397
|
/** Uploads file from provided data. */
|
|
392
|
-
export declare function uploadFile(data: SupportedFileInput | Url | Uuid, { publicKey, fileName, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartMinFileSize, multipartChunkSize, maxConcurrentRequests, baseCDN, checkForUrlDuplicates, saveUrlForRecurrentUploads, pusherKey, metadata }: FileFromOptions): Promise<UploadcareFile>;
|
|
398
|
+
export declare function uploadFile(data: SupportedFileInput | Url | Uuid, { publicKey, fileName, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartMinFileSize, multipartChunkSize, maxConcurrentRequests, baseCDN, checkForUrlDuplicates, saveUrlForRecurrentUploads, pusherKey, metadata, tags }: FileFromOptions): Promise<UploadcareFile>;
|
|
393
399
|
export type DirectOptions = {
|
|
394
400
|
publicKey: string;
|
|
395
401
|
fileName?: string;
|
|
@@ -407,8 +413,9 @@ export type DirectOptions = {
|
|
|
407
413
|
retryNetworkErrorMaxTimes?: number;
|
|
408
414
|
baseCDN?: string;
|
|
409
415
|
metadata?: Metadata;
|
|
416
|
+
tags?: Tags;
|
|
410
417
|
};
|
|
411
|
-
export declare const uploadDirect: (file: SupportedFileInput, { publicKey, fileName, baseURL, secureSignature, secureExpire, store, contentType, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, baseCDN, metadata }: DirectOptions) => Promise<UploadcareFile>;
|
|
418
|
+
export declare const uploadDirect: (file: SupportedFileInput, { publicKey, fileName, baseURL, secureSignature, secureExpire, store, contentType, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, baseCDN, metadata, tags }: DirectOptions) => Promise<UploadcareFile>;
|
|
412
419
|
export type FromUploadedOptions = {
|
|
413
420
|
publicKey: string;
|
|
414
421
|
fileName?: string;
|
|
@@ -449,8 +456,9 @@ export type MultipartOptions = {
|
|
|
449
456
|
maxConcurrentRequests?: number;
|
|
450
457
|
baseCDN?: string;
|
|
451
458
|
metadata?: Metadata;
|
|
459
|
+
tags?: Tags;
|
|
452
460
|
};
|
|
453
|
-
export declare const uploadMultipart: (file: SupportedFileInput, { publicKey, fileName, fileSize, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartChunkSize, maxConcurrentRequests, baseCDN, metadata }: MultipartOptions) => Promise<UploadcareFile>;
|
|
461
|
+
export declare const uploadMultipart: (file: SupportedFileInput, { publicKey, fileName, fileSize, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartChunkSize, maxConcurrentRequests, baseCDN, metadata, tags }: MultipartOptions) => Promise<UploadcareFile>;
|
|
454
462
|
export declare class UploadcareGroup {
|
|
455
463
|
readonly uuid: GroupId;
|
|
456
464
|
readonly filesCount: string;
|
|
@@ -73,6 +73,7 @@ export type ContentInfo = {
|
|
|
73
73
|
video?: VideoInfo;
|
|
74
74
|
};
|
|
75
75
|
export type Metadata = Record<string, string>;
|
|
76
|
+
export type Tags = string[];
|
|
76
77
|
export type StoreValue = "auto" | boolean;
|
|
77
78
|
export declare class CancelError extends UploadcareError {
|
|
78
79
|
isCancel: boolean;
|
|
@@ -125,12 +126,13 @@ export type FileInfo = {
|
|
|
125
126
|
mimeType: string;
|
|
126
127
|
isImage: boolean;
|
|
127
128
|
isStored: boolean;
|
|
128
|
-
isReady:
|
|
129
|
+
isReady: boolean;
|
|
129
130
|
imageInfo: ImageInfo | null;
|
|
130
131
|
videoInfo: VideoInfo | null;
|
|
131
132
|
contentInfo: ContentInfo | null;
|
|
132
133
|
s3Bucket?: string;
|
|
133
134
|
metadata?: Metadata;
|
|
135
|
+
tags?: Tags;
|
|
134
136
|
};
|
|
135
137
|
export type GroupFileInfo = FileInfo & {
|
|
136
138
|
defaultEffects: string;
|
|
@@ -175,12 +177,13 @@ export type BaseOptions = {
|
|
|
175
177
|
retryThrottledRequestMaxTimes?: number;
|
|
176
178
|
retryNetworkErrorMaxTimes?: number;
|
|
177
179
|
metadata?: Metadata;
|
|
180
|
+
tags?: Tags;
|
|
178
181
|
};
|
|
179
182
|
/**
|
|
180
183
|
* Performs file uploading request to Uploadcare Upload API. Can be canceled and
|
|
181
184
|
* has progress.
|
|
182
185
|
*/
|
|
183
|
-
export function base(file: SupportedFileInput, { publicKey, fileName, contentType, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, metadata }: BaseOptions): Promise<BaseResponse>;
|
|
186
|
+
export function base(file: SupportedFileInput, { publicKey, fileName, contentType, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, metadata, tags }: BaseOptions): Promise<BaseResponse>;
|
|
184
187
|
export declare enum TypeEnum {
|
|
185
188
|
Token = "token",
|
|
186
189
|
FileInfo = "file_info"
|
|
@@ -309,6 +312,7 @@ export type MultipartStartOptions = {
|
|
|
309
312
|
retryThrottledRequestMaxTimes?: number;
|
|
310
313
|
retryNetworkErrorMaxTimes?: number;
|
|
311
314
|
metadata?: Metadata;
|
|
315
|
+
tags?: Tags;
|
|
312
316
|
};
|
|
313
317
|
export type MultipartPart = string;
|
|
314
318
|
export type MultipartStartResponse = {
|
|
@@ -316,7 +320,7 @@ export type MultipartStartResponse = {
|
|
|
316
320
|
uuid: Uuid;
|
|
317
321
|
};
|
|
318
322
|
/** Start multipart uploading. */
|
|
319
|
-
export function multipartStart(size: number, { publicKey, contentType, fileName, multipartChunkSize, baseURL, secureSignature, secureExpire, store, signal, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, metadata }: MultipartStartOptions): Promise<MultipartStartResponse>;
|
|
323
|
+
export function multipartStart(size: number, { publicKey, contentType, fileName, multipartChunkSize, baseURL, secureSignature, secureExpire, store, signal, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, metadata, tags }: MultipartStartOptions): Promise<MultipartStartResponse>;
|
|
320
324
|
export type MultipartUploadOptions = {
|
|
321
325
|
publicKey?: string;
|
|
322
326
|
contentType?: string;
|
|
@@ -357,6 +361,7 @@ export declare class UploadcareFile {
|
|
|
357
361
|
readonly videoInfo: VideoInfo | null;
|
|
358
362
|
readonly contentInfo: ContentInfo | null;
|
|
359
363
|
readonly metadata: Metadata | null;
|
|
364
|
+
readonly tags: Tags | null;
|
|
360
365
|
readonly s3Bucket: string | null;
|
|
361
366
|
readonly defaultEffects: null | string;
|
|
362
367
|
constructor(fileInfo: FileInfo | GroupFileInfo, { baseCDN, fileName }?: {
|
|
@@ -387,9 +392,10 @@ export type FileFromOptions = {
|
|
|
387
392
|
saveUrlForRecurrentUploads?: boolean;
|
|
388
393
|
pusherKey?: string;
|
|
389
394
|
metadata?: Metadata;
|
|
395
|
+
tags?: Tags;
|
|
390
396
|
};
|
|
391
397
|
/** Uploads file from provided data. */
|
|
392
|
-
export declare function uploadFile(data: SupportedFileInput | Url | Uuid, { publicKey, fileName, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartMinFileSize, multipartChunkSize, maxConcurrentRequests, baseCDN, checkForUrlDuplicates, saveUrlForRecurrentUploads, pusherKey, metadata }: FileFromOptions): Promise<UploadcareFile>;
|
|
398
|
+
export declare function uploadFile(data: SupportedFileInput | Url | Uuid, { publicKey, fileName, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartMinFileSize, multipartChunkSize, maxConcurrentRequests, baseCDN, checkForUrlDuplicates, saveUrlForRecurrentUploads, pusherKey, metadata, tags }: FileFromOptions): Promise<UploadcareFile>;
|
|
393
399
|
export type DirectOptions = {
|
|
394
400
|
publicKey: string;
|
|
395
401
|
fileName?: string;
|
|
@@ -407,8 +413,9 @@ export type DirectOptions = {
|
|
|
407
413
|
retryNetworkErrorMaxTimes?: number;
|
|
408
414
|
baseCDN?: string;
|
|
409
415
|
metadata?: Metadata;
|
|
416
|
+
tags?: Tags;
|
|
410
417
|
};
|
|
411
|
-
export declare const uploadDirect: (file: SupportedFileInput, { publicKey, fileName, baseURL, secureSignature, secureExpire, store, contentType, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, baseCDN, metadata }: DirectOptions) => Promise<UploadcareFile>;
|
|
418
|
+
export declare const uploadDirect: (file: SupportedFileInput, { publicKey, fileName, baseURL, secureSignature, secureExpire, store, contentType, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, baseCDN, metadata, tags }: DirectOptions) => Promise<UploadcareFile>;
|
|
412
419
|
export type FromUploadedOptions = {
|
|
413
420
|
publicKey: string;
|
|
414
421
|
fileName?: string;
|
|
@@ -449,8 +456,9 @@ export type MultipartOptions = {
|
|
|
449
456
|
maxConcurrentRequests?: number;
|
|
450
457
|
baseCDN?: string;
|
|
451
458
|
metadata?: Metadata;
|
|
459
|
+
tags?: Tags;
|
|
452
460
|
};
|
|
453
|
-
export declare const uploadMultipart: (file: SupportedFileInput, { publicKey, fileName, fileSize, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartChunkSize, maxConcurrentRequests, baseCDN, metadata }: MultipartOptions) => Promise<UploadcareFile>;
|
|
461
|
+
export declare const uploadMultipart: (file: SupportedFileInput, { publicKey, fileName, fileSize, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartChunkSize, maxConcurrentRequests, baseCDN, metadata, tags }: MultipartOptions) => Promise<UploadcareFile>;
|
|
454
462
|
export declare class UploadcareGroup {
|
|
455
463
|
readonly uuid: GroupId;
|
|
456
464
|
readonly filesCount: string;
|
|
@@ -478,7 +478,7 @@ function getStoreValue(store) {
|
|
|
478
478
|
* Performs file uploading request to Uploadcare Upload API. Can be canceled and
|
|
479
479
|
* has progress.
|
|
480
480
|
*/
|
|
481
|
-
function base(file, { publicKey, fileName, contentType, baseURL = defaultSettings.baseURL, secureSignature, secureExpire, store, signal, onProgress, source = 'local', integration, userAgent, retryThrottledRequestMaxTimes = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes = defaultSettings.retryNetworkErrorMaxTimes, metadata }) {
|
|
481
|
+
function base(file, { publicKey, fileName, contentType, baseURL = defaultSettings.baseURL, secureSignature, secureExpire, store, signal, onProgress, source = 'local', integration, userAgent, retryThrottledRequestMaxTimes = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes = defaultSettings.retryNetworkErrorMaxTimes, metadata, tags }) {
|
|
482
482
|
return retryIfFailed(() => request({
|
|
483
483
|
method: 'POST',
|
|
484
484
|
url: getUrl(baseURL, '/base/', {
|
|
@@ -498,7 +498,8 @@ function base(file, { publicKey, fileName, contentType, baseURL = defaultSetting
|
|
|
498
498
|
signature: secureSignature,
|
|
499
499
|
expire: secureExpire,
|
|
500
500
|
source: source,
|
|
501
|
-
metadata
|
|
501
|
+
metadata,
|
|
502
|
+
tags: tags && tags.join(',')
|
|
502
503
|
}),
|
|
503
504
|
signal,
|
|
504
505
|
onProgress
|
|
@@ -671,7 +672,7 @@ function info(uuid, { publicKey, baseURL = defaultSettings.baseURL, signal, sour
|
|
|
671
672
|
}
|
|
672
673
|
|
|
673
674
|
/** Start multipart uploading. */
|
|
674
|
-
function multipartStart(size, { publicKey, contentType, fileName, multipartChunkSize = defaultSettings.multipartChunkSize, baseURL = '', secureSignature, secureExpire, store, signal, source = 'local', integration, userAgent, retryThrottledRequestMaxTimes = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes = defaultSettings.retryNetworkErrorMaxTimes, metadata }) {
|
|
675
|
+
function multipartStart(size, { publicKey, contentType, fileName, multipartChunkSize = defaultSettings.multipartChunkSize, baseURL = '', secureSignature, secureExpire, store, signal, source = 'local', integration, userAgent, retryThrottledRequestMaxTimes = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes = defaultSettings.retryNetworkErrorMaxTimes, metadata, tags }) {
|
|
675
676
|
return retryIfFailed(() => request({
|
|
676
677
|
method: 'POST',
|
|
677
678
|
url: getUrl(baseURL, '/multipart/start/', { jsonerrors: 1 }),
|
|
@@ -688,7 +689,8 @@ function multipartStart(size, { publicKey, contentType, fileName, multipartChunk
|
|
|
688
689
|
signature: secureSignature,
|
|
689
690
|
expire: secureExpire,
|
|
690
691
|
source: source,
|
|
691
|
-
metadata
|
|
692
|
+
metadata,
|
|
693
|
+
tags: tags && tags.join(',')
|
|
692
694
|
}),
|
|
693
695
|
signal
|
|
694
696
|
}).then(({ data, headers, request }) => {
|
|
@@ -770,9 +772,9 @@ function isReadyPoll(uuid, { publicKey, baseURL, source, integration, userAgent,
|
|
|
770
772
|
retryNetworkErrorMaxTimes
|
|
771
773
|
}).then((response) => {
|
|
772
774
|
if (response.isReady) {
|
|
775
|
+
onProgress && onProgress({ isComputable: true, value: 1 });
|
|
773
776
|
return response;
|
|
774
777
|
}
|
|
775
|
-
onProgress && onProgress({ isComputable: true, value: 1 });
|
|
776
778
|
return false;
|
|
777
779
|
}),
|
|
778
780
|
signal
|
|
@@ -796,6 +798,7 @@ class UploadcareFile {
|
|
|
796
798
|
videoInfo;
|
|
797
799
|
contentInfo;
|
|
798
800
|
metadata;
|
|
801
|
+
tags;
|
|
799
802
|
s3Bucket;
|
|
800
803
|
defaultEffects = null;
|
|
801
804
|
constructor(fileInfo, { baseCDN = defaultSettings.baseCDN, fileName } = {}) {
|
|
@@ -816,6 +819,7 @@ class UploadcareFile {
|
|
|
816
819
|
this.videoInfo = fileInfo.videoInfo;
|
|
817
820
|
this.contentInfo = fileInfo.contentInfo;
|
|
818
821
|
this.metadata = fileInfo.metadata || null;
|
|
822
|
+
this.tags = fileInfo.tags || null;
|
|
819
823
|
this.s3Bucket = s3Bucket || null;
|
|
820
824
|
this.s3Url = s3Url;
|
|
821
825
|
if (isGroupFileInfo(fileInfo)) {
|
|
@@ -824,7 +828,7 @@ class UploadcareFile {
|
|
|
824
828
|
}
|
|
825
829
|
}
|
|
826
830
|
|
|
827
|
-
const uploadDirect = (file, { publicKey, fileName, baseURL, secureSignature, secureExpire, store, contentType, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, baseCDN, metadata }) => {
|
|
831
|
+
const uploadDirect = (file, { publicKey, fileName, baseURL, secureSignature, secureExpire, store, contentType, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, baseCDN, metadata, tags }) => {
|
|
828
832
|
return base(file, {
|
|
829
833
|
publicKey,
|
|
830
834
|
fileName,
|
|
@@ -840,7 +844,8 @@ const uploadDirect = (file, { publicKey, fileName, baseURL, secureSignature, sec
|
|
|
840
844
|
userAgent,
|
|
841
845
|
retryThrottledRequestMaxTimes,
|
|
842
846
|
retryNetworkErrorMaxTimes,
|
|
843
|
-
metadata
|
|
847
|
+
metadata,
|
|
848
|
+
tags
|
|
844
849
|
})
|
|
845
850
|
.then(({ file }) => {
|
|
846
851
|
return isReadyPoll(file, {
|
|
@@ -859,26 +864,17 @@ const uploadDirect = (file, { publicKey, fileName, baseURL, secureSignature, sec
|
|
|
859
864
|
};
|
|
860
865
|
|
|
861
866
|
const uploadFromUploaded = (uuid, { publicKey, fileName, baseURL, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, baseCDN }) => {
|
|
862
|
-
return
|
|
867
|
+
return isReadyPoll(uuid, {
|
|
863
868
|
publicKey,
|
|
864
869
|
baseURL,
|
|
865
870
|
signal,
|
|
871
|
+
onProgress,
|
|
866
872
|
source,
|
|
867
873
|
integration,
|
|
868
874
|
userAgent,
|
|
869
875
|
retryThrottledRequestMaxTimes,
|
|
870
876
|
retryNetworkErrorMaxTimes
|
|
871
|
-
})
|
|
872
|
-
.then((fileInfo) => new UploadcareFile(fileInfo, { baseCDN, fileName }))
|
|
873
|
-
.then((result) => {
|
|
874
|
-
// hack for node ¯\_(ツ)_/¯
|
|
875
|
-
if (onProgress)
|
|
876
|
-
onProgress({
|
|
877
|
-
isComputable: true,
|
|
878
|
-
value: 1
|
|
879
|
-
});
|
|
880
|
-
return result;
|
|
881
|
-
});
|
|
877
|
+
}).then((fileInfo) => new UploadcareFile(fileInfo, { baseCDN, fileName }));
|
|
882
878
|
};
|
|
883
879
|
|
|
884
880
|
const race = (fns, { signal } = {}) => {
|
|
@@ -1208,15 +1204,20 @@ const uploadFromUrl = (sourceUrl, { publicKey, fileName, baseURL, baseCDN, check
|
|
|
1208
1204
|
throw result;
|
|
1209
1205
|
return result;
|
|
1210
1206
|
})
|
|
1211
|
-
.then((result) =>
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1207
|
+
.then((result) => {
|
|
1208
|
+
if (result.isReady) {
|
|
1209
|
+
return result;
|
|
1210
|
+
}
|
|
1211
|
+
return isReadyPoll(result.uuid, {
|
|
1212
|
+
publicKey,
|
|
1213
|
+
baseURL,
|
|
1214
|
+
integration,
|
|
1215
|
+
userAgent,
|
|
1216
|
+
retryThrottledRequestMaxTimes,
|
|
1217
|
+
onProgress,
|
|
1218
|
+
signal
|
|
1219
|
+
});
|
|
1220
|
+
})
|
|
1220
1221
|
.then((fileInfo) => new UploadcareFile(fileInfo, { baseCDN }));
|
|
1221
1222
|
|
|
1222
1223
|
const memo = new WeakMap();
|
|
@@ -1316,7 +1317,7 @@ const uploadPart = (chunk, url, { publicKey, contentType, onProgress, signal, in
|
|
|
1316
1317
|
retryThrottledRequestMaxTimes,
|
|
1317
1318
|
retryNetworkErrorMaxTimes
|
|
1318
1319
|
});
|
|
1319
|
-
const uploadMultipart = async (file, { publicKey, fileName, fileSize, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartChunkSize = defaultSettings.multipartChunkSize, maxConcurrentRequests = defaultSettings.maxConcurrentRequests, baseCDN, metadata }) => {
|
|
1320
|
+
const uploadMultipart = async (file, { publicKey, fileName, fileSize, baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartChunkSize = defaultSettings.multipartChunkSize, maxConcurrentRequests = defaultSettings.maxConcurrentRequests, baseCDN, metadata, tags }) => {
|
|
1320
1321
|
const size = fileSize ?? (await getFileSize(file));
|
|
1321
1322
|
let progressValues;
|
|
1322
1323
|
const createProgressHandler = (totalChunks, chunkIdx) => {
|
|
@@ -1353,6 +1354,7 @@ const uploadMultipart = async (file, { publicKey, fileName, fileSize, baseURL, s
|
|
|
1353
1354
|
retryThrottledRequestMaxTimes,
|
|
1354
1355
|
retryNetworkErrorMaxTimes,
|
|
1355
1356
|
metadata,
|
|
1357
|
+
tags,
|
|
1356
1358
|
multipartChunkSize
|
|
1357
1359
|
})
|
|
1358
1360
|
.then(async ({ uuid, parts }) => {
|
|
@@ -1383,25 +1385,23 @@ const uploadMultipart = async (file, { publicKey, fileName, fileSize, baseURL, s
|
|
|
1383
1385
|
if (fileInfo.isReady) {
|
|
1384
1386
|
return fileInfo;
|
|
1385
1387
|
}
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
});
|
|
1398
|
-
}
|
|
1388
|
+
return isReadyPoll(fileInfo.uuid, {
|
|
1389
|
+
publicKey,
|
|
1390
|
+
baseURL,
|
|
1391
|
+
source,
|
|
1392
|
+
integration,
|
|
1393
|
+
userAgent,
|
|
1394
|
+
retryThrottledRequestMaxTimes,
|
|
1395
|
+
retryNetworkErrorMaxTimes,
|
|
1396
|
+
onProgress,
|
|
1397
|
+
signal
|
|
1398
|
+
});
|
|
1399
1399
|
})
|
|
1400
1400
|
.then((fileInfo) => new UploadcareFile(fileInfo, { baseCDN }));
|
|
1401
1401
|
};
|
|
1402
1402
|
|
|
1403
1403
|
/** Uploads file from provided data. */
|
|
1404
|
-
async function uploadFile(data, { publicKey, fileName, baseURL = defaultSettings.baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartMinFileSize, multipartChunkSize, maxConcurrentRequests, baseCDN = defaultSettings.baseCDN, checkForUrlDuplicates, saveUrlForRecurrentUploads, pusherKey, metadata }) {
|
|
1404
|
+
async function uploadFile(data, { publicKey, fileName, baseURL = defaultSettings.baseURL, secureSignature, secureExpire, store, signal, onProgress, source, integration, userAgent, retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes, contentType, multipartMinFileSize, multipartChunkSize, maxConcurrentRequests, baseCDN = defaultSettings.baseCDN, checkForUrlDuplicates, saveUrlForRecurrentUploads, pusherKey, metadata, tags }) {
|
|
1405
1405
|
if (isFileData(data)) {
|
|
1406
1406
|
const fileSize = await getFileSize(data);
|
|
1407
1407
|
if (isMultipart(fileSize, multipartMinFileSize)) {
|
|
@@ -1424,7 +1424,8 @@ async function uploadFile(data, { publicKey, fileName, baseURL = defaultSettings
|
|
|
1424
1424
|
retryThrottledRequestMaxTimes,
|
|
1425
1425
|
retryNetworkErrorMaxTimes,
|
|
1426
1426
|
baseCDN,
|
|
1427
|
-
metadata
|
|
1427
|
+
metadata,
|
|
1428
|
+
tags
|
|
1428
1429
|
});
|
|
1429
1430
|
}
|
|
1430
1431
|
return uploadDirect(data, {
|
|
@@ -1443,7 +1444,8 @@ async function uploadFile(data, { publicKey, fileName, baseURL = defaultSettings
|
|
|
1443
1444
|
retryThrottledRequestMaxTimes,
|
|
1444
1445
|
retryNetworkErrorMaxTimes,
|
|
1445
1446
|
baseCDN,
|
|
1446
|
-
metadata
|
|
1447
|
+
metadata,
|
|
1448
|
+
tags
|
|
1447
1449
|
});
|
|
1448
1450
|
}
|
|
1449
1451
|
if (isUrl(data)) {
|