@uploadcare/upload-client 6.6.1 → 6.7.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/cjs/index.browser.cjs +68 -52
- package/dist/cjs/index.browser.d.cts +15 -4
- package/dist/cjs/index.node.cjs +68 -52
- package/dist/cjs/index.node.d.cts +15 -4
- package/dist/cjs/index.react-native.cjs +68 -52
- package/dist/cjs/index.react-native.d.cts +15 -4
- package/dist/esm/index.browser.d.mts +15 -4
- package/dist/esm/index.browser.mjs +68 -52
- package/dist/esm/index.node.d.mts +15 -4
- package/dist/esm/index.node.mjs +68 -52
- package/dist/esm/index.react-native.d.mts +15 -4
- package/dist/esm/index.react-native.mjs +68 -52
- package/dist/index.d.ts +15 -4
- package/package.json +3 -3
|
@@ -405,7 +405,7 @@ const getUrl = (base, path, query) => {
|
|
|
405
405
|
return url.toString();
|
|
406
406
|
};
|
|
407
407
|
|
|
408
|
-
var version = '6.
|
|
408
|
+
var version = '6.7.0';
|
|
409
409
|
|
|
410
410
|
const LIBRARY_NAME = 'UploadcareUploadClient';
|
|
411
411
|
const LIBRARY_VERSION = version;
|
|
@@ -779,6 +779,9 @@ function isReadyPoll({ file, publicKey, baseURL, source, integration, userAgent,
|
|
|
779
779
|
});
|
|
780
780
|
}
|
|
781
781
|
|
|
782
|
+
function isGroupFileInfo(fileInfo) {
|
|
783
|
+
return 'defaultEffects' in fileInfo;
|
|
784
|
+
}
|
|
782
785
|
class UploadcareFile {
|
|
783
786
|
uuid;
|
|
784
787
|
name = null;
|
|
@@ -794,6 +797,7 @@ class UploadcareFile {
|
|
|
794
797
|
contentInfo = null;
|
|
795
798
|
metadata = null;
|
|
796
799
|
s3Bucket = null;
|
|
800
|
+
defaultEffects = null;
|
|
797
801
|
constructor(fileInfo, { baseCDN = defaultSettings.baseCDN, fileName } = {}) {
|
|
798
802
|
const { uuid, s3Bucket } = fileInfo;
|
|
799
803
|
const cdnUrl = getUrl(baseCDN, `${uuid}/`);
|
|
@@ -814,6 +818,9 @@ class UploadcareFile {
|
|
|
814
818
|
this.metadata = fileInfo.metadata || null;
|
|
815
819
|
this.s3Bucket = s3Bucket || null;
|
|
816
820
|
this.s3Url = s3Url;
|
|
821
|
+
if (isGroupFileInfo(fileInfo)) {
|
|
822
|
+
this.defaultEffects = fileInfo.defaultEffects;
|
|
823
|
+
}
|
|
817
824
|
}
|
|
818
825
|
}
|
|
819
826
|
|
|
@@ -1511,14 +1518,16 @@ class UploadcareGroup {
|
|
|
1511
1518
|
files;
|
|
1512
1519
|
createdAt;
|
|
1513
1520
|
storedAt = null;
|
|
1514
|
-
constructor(groupInfo,
|
|
1521
|
+
constructor(groupInfo, { baseCDN = defaultSettings.baseCDN } = {}) {
|
|
1515
1522
|
this.uuid = groupInfo.id;
|
|
1516
1523
|
this.filesCount = groupInfo.filesCount;
|
|
1517
|
-
|
|
1524
|
+
const groupFiles = groupInfo.files.filter(Boolean);
|
|
1525
|
+
this.totalSize = Object.values(groupFiles).reduce((acc, file) => acc + file.size, 0);
|
|
1518
1526
|
this.isStored = !!groupInfo.datetimeStored;
|
|
1519
|
-
this.isImage = !!Object.values(
|
|
1527
|
+
this.isImage = !!Object.values(groupFiles).filter((file) => file.isImage)
|
|
1528
|
+
.length;
|
|
1520
1529
|
this.cdnUrl = groupInfo.cdnUrl;
|
|
1521
|
-
this.files =
|
|
1530
|
+
this.files = groupFiles.map((fileInfo) => new UploadcareFile(fileInfo, { baseCDN }));
|
|
1522
1531
|
this.createdAt = groupInfo.datetimeCreated;
|
|
1523
1532
|
this.storedAt = groupInfo.datetimeStored;
|
|
1524
1533
|
}
|
|
@@ -1576,27 +1585,34 @@ function uploadFileGroup(data, { publicKey, fileName, baseURL = defaultSettings.
|
|
|
1576
1585
|
onProgress({ isComputable: true, value: normalize(progressValues) });
|
|
1577
1586
|
};
|
|
1578
1587
|
};
|
|
1579
|
-
return Promise.all(data.map((file, index) =>
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1588
|
+
return Promise.all(data.map((file, index) => {
|
|
1589
|
+
if (isFileData(file) || isUrl(file)) {
|
|
1590
|
+
return uploadFile(file, {
|
|
1591
|
+
publicKey,
|
|
1592
|
+
fileName,
|
|
1593
|
+
baseURL,
|
|
1594
|
+
secureSignature,
|
|
1595
|
+
secureExpire,
|
|
1596
|
+
store,
|
|
1597
|
+
signal,
|
|
1598
|
+
onProgress: createProgressHandler(filesCount, index),
|
|
1599
|
+
source,
|
|
1600
|
+
integration,
|
|
1601
|
+
userAgent,
|
|
1602
|
+
retryThrottledRequestMaxTimes,
|
|
1603
|
+
retryNetworkErrorMaxTimes,
|
|
1604
|
+
contentType,
|
|
1605
|
+
multipartChunkSize,
|
|
1606
|
+
baseCDN,
|
|
1607
|
+
checkForUrlDuplicates,
|
|
1608
|
+
saveUrlForRecurrentUploads
|
|
1609
|
+
}).then((fileInfo) => fileInfo.uuid);
|
|
1610
|
+
}
|
|
1611
|
+
else {
|
|
1612
|
+
// Do not request file info by uuid before creating group because this isn't necessary
|
|
1613
|
+
return file;
|
|
1614
|
+
}
|
|
1615
|
+
})).then((uuids) => {
|
|
1600
1616
|
return group(uuids, {
|
|
1601
1617
|
publicKey,
|
|
1602
1618
|
baseURL,
|
|
@@ -1610,7 +1626,7 @@ function uploadFileGroup(data, { publicKey, fileName, baseURL = defaultSettings.
|
|
|
1610
1626
|
retryThrottledRequestMaxTimes,
|
|
1611
1627
|
retryNetworkErrorMaxTimes
|
|
1612
1628
|
})
|
|
1613
|
-
.then((groupInfo) => new UploadcareGroup(groupInfo,
|
|
1629
|
+
.then((groupInfo) => new UploadcareGroup(groupInfo, { baseCDN }))
|
|
1614
1630
|
.then((group) => {
|
|
1615
1631
|
onProgress && onProgress({ isComputable: true, value: 1 });
|
|
1616
1632
|
return group;
|
|
@@ -1681,32 +1697,32 @@ class UploadClient {
|
|
|
1681
1697
|
}
|
|
1682
1698
|
|
|
1683
1699
|
class Queue {
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1700
|
+
_concurrency = 1;
|
|
1701
|
+
_pending = [];
|
|
1702
|
+
_running = 0;
|
|
1703
|
+
_resolvers = new Map();
|
|
1704
|
+
_rejectors = new Map();
|
|
1689
1705
|
constructor(concurrency) {
|
|
1690
|
-
this
|
|
1706
|
+
this._concurrency = concurrency;
|
|
1691
1707
|
}
|
|
1692
|
-
|
|
1693
|
-
const tasksLeft = this
|
|
1708
|
+
_run() {
|
|
1709
|
+
const tasksLeft = this._concurrency - this._running;
|
|
1694
1710
|
for (let i = 0; i < tasksLeft; i++) {
|
|
1695
|
-
const task = this
|
|
1711
|
+
const task = this._pending.shift();
|
|
1696
1712
|
if (!task) {
|
|
1697
1713
|
return;
|
|
1698
1714
|
}
|
|
1699
|
-
const resolver = this
|
|
1700
|
-
const rejector = this
|
|
1715
|
+
const resolver = this._resolvers.get(task);
|
|
1716
|
+
const rejector = this._rejectors.get(task);
|
|
1701
1717
|
if (!resolver || !rejector)
|
|
1702
1718
|
throw new Error('Unexpected behavior: resolver or rejector is undefined');
|
|
1703
|
-
this
|
|
1719
|
+
this._running += 1;
|
|
1704
1720
|
task()
|
|
1705
1721
|
.finally(() => {
|
|
1706
|
-
this
|
|
1707
|
-
this
|
|
1708
|
-
this
|
|
1709
|
-
this
|
|
1722
|
+
this._resolvers.delete(task);
|
|
1723
|
+
this._rejectors.delete(task);
|
|
1724
|
+
this._running -= 1;
|
|
1725
|
+
this._run();
|
|
1710
1726
|
})
|
|
1711
1727
|
.then((value) => resolver(value))
|
|
1712
1728
|
.catch((error) => rejector(error));
|
|
@@ -1714,24 +1730,24 @@ class Queue {
|
|
|
1714
1730
|
}
|
|
1715
1731
|
add(task) {
|
|
1716
1732
|
return new Promise((resolve, reject) => {
|
|
1717
|
-
this
|
|
1718
|
-
this
|
|
1719
|
-
this
|
|
1720
|
-
this
|
|
1733
|
+
this._resolvers.set(task, resolve);
|
|
1734
|
+
this._rejectors.set(task, reject);
|
|
1735
|
+
this._pending.push(task);
|
|
1736
|
+
this._run();
|
|
1721
1737
|
});
|
|
1722
1738
|
}
|
|
1723
1739
|
get pending() {
|
|
1724
|
-
return this
|
|
1740
|
+
return this._pending.length;
|
|
1725
1741
|
}
|
|
1726
1742
|
get running() {
|
|
1727
|
-
return this
|
|
1743
|
+
return this._running;
|
|
1728
1744
|
}
|
|
1729
1745
|
set concurrency(value) {
|
|
1730
|
-
this
|
|
1731
|
-
this
|
|
1746
|
+
this._concurrency = value;
|
|
1747
|
+
this._run();
|
|
1732
1748
|
}
|
|
1733
1749
|
get concurrency() {
|
|
1734
|
-
return this
|
|
1750
|
+
return this._concurrency;
|
|
1735
1751
|
}
|
|
1736
1752
|
}
|
|
1737
1753
|
|
|
@@ -126,12 +126,15 @@ export type FileInfo = {
|
|
|
126
126
|
s3Bucket?: string;
|
|
127
127
|
metadata?: Metadata;
|
|
128
128
|
};
|
|
129
|
+
export type GroupFileInfo = FileInfo & {
|
|
130
|
+
defaultEffects: string;
|
|
131
|
+
};
|
|
129
132
|
export type GroupInfo = {
|
|
130
133
|
datetimeCreated: string;
|
|
131
134
|
datetimeStored: string | null;
|
|
132
135
|
filesCount: string;
|
|
133
136
|
cdnUrl: string;
|
|
134
|
-
files:
|
|
137
|
+
files: (GroupFileInfo | null)[];
|
|
135
138
|
url: string;
|
|
136
139
|
id: GroupId;
|
|
137
140
|
};
|
|
@@ -347,7 +350,8 @@ export declare class UploadcareFile {
|
|
|
347
350
|
readonly contentInfo: null | ContentInfo;
|
|
348
351
|
readonly metadata: null | Metadata;
|
|
349
352
|
readonly s3Bucket: null | string;
|
|
350
|
-
|
|
353
|
+
readonly defaultEffects: null | string;
|
|
354
|
+
constructor(fileInfo: FileInfo | GroupFileInfo, { baseCDN, fileName }?: {
|
|
351
355
|
baseCDN?: string;
|
|
352
356
|
fileName?: string;
|
|
353
357
|
});
|
|
@@ -449,7 +453,9 @@ export declare class UploadcareGroup {
|
|
|
449
453
|
readonly files: UploadcareFile[];
|
|
450
454
|
readonly createdAt: string;
|
|
451
455
|
readonly storedAt: string | null;
|
|
452
|
-
constructor(groupInfo: GroupInfo,
|
|
456
|
+
constructor(groupInfo: GroupInfo, { baseCDN }?: {
|
|
457
|
+
baseCDN?: string;
|
|
458
|
+
});
|
|
453
459
|
}
|
|
454
460
|
export type GroupFromOptions = {
|
|
455
461
|
jsonpCallback?: string;
|
|
@@ -474,8 +480,13 @@ export declare class UploadClient {
|
|
|
474
480
|
}
|
|
475
481
|
export type Task<T = unknown> = () => Promise<T>;
|
|
476
482
|
export declare class Queue {
|
|
477
|
-
|
|
483
|
+
private _concurrency;
|
|
484
|
+
private _pending;
|
|
485
|
+
private _running;
|
|
486
|
+
private _resolvers;
|
|
487
|
+
private _rejectors;
|
|
478
488
|
constructor(concurrency: number);
|
|
489
|
+
private _run;
|
|
479
490
|
add<T>(task: Task<T>): Promise<T>;
|
|
480
491
|
get pending(): number;
|
|
481
492
|
get running(): number;
|
|
@@ -126,12 +126,15 @@ export type FileInfo = {
|
|
|
126
126
|
s3Bucket?: string;
|
|
127
127
|
metadata?: Metadata;
|
|
128
128
|
};
|
|
129
|
+
export type GroupFileInfo = FileInfo & {
|
|
130
|
+
defaultEffects: string;
|
|
131
|
+
};
|
|
129
132
|
export type GroupInfo = {
|
|
130
133
|
datetimeCreated: string;
|
|
131
134
|
datetimeStored: string | null;
|
|
132
135
|
filesCount: string;
|
|
133
136
|
cdnUrl: string;
|
|
134
|
-
files:
|
|
137
|
+
files: (GroupFileInfo | null)[];
|
|
135
138
|
url: string;
|
|
136
139
|
id: GroupId;
|
|
137
140
|
};
|
|
@@ -347,7 +350,8 @@ export declare class UploadcareFile {
|
|
|
347
350
|
readonly contentInfo: null | ContentInfo;
|
|
348
351
|
readonly metadata: null | Metadata;
|
|
349
352
|
readonly s3Bucket: null | string;
|
|
350
|
-
|
|
353
|
+
readonly defaultEffects: null | string;
|
|
354
|
+
constructor(fileInfo: FileInfo | GroupFileInfo, { baseCDN, fileName }?: {
|
|
351
355
|
baseCDN?: string;
|
|
352
356
|
fileName?: string;
|
|
353
357
|
});
|
|
@@ -449,7 +453,9 @@ export declare class UploadcareGroup {
|
|
|
449
453
|
readonly files: UploadcareFile[];
|
|
450
454
|
readonly createdAt: string;
|
|
451
455
|
readonly storedAt: string | null;
|
|
452
|
-
constructor(groupInfo: GroupInfo,
|
|
456
|
+
constructor(groupInfo: GroupInfo, { baseCDN }?: {
|
|
457
|
+
baseCDN?: string;
|
|
458
|
+
});
|
|
453
459
|
}
|
|
454
460
|
export type GroupFromOptions = {
|
|
455
461
|
jsonpCallback?: string;
|
|
@@ -474,8 +480,13 @@ export declare class UploadClient {
|
|
|
474
480
|
}
|
|
475
481
|
export type Task<T = unknown> = () => Promise<T>;
|
|
476
482
|
export declare class Queue {
|
|
477
|
-
|
|
483
|
+
private _concurrency;
|
|
484
|
+
private _pending;
|
|
485
|
+
private _running;
|
|
486
|
+
private _resolvers;
|
|
487
|
+
private _rejectors;
|
|
478
488
|
constructor(concurrency: number);
|
|
489
|
+
private _run;
|
|
479
490
|
add<T>(task: Task<T>): Promise<T>;
|
|
480
491
|
get pending(): number;
|
|
481
492
|
get running(): number;
|
|
@@ -395,7 +395,7 @@ const getUrl = (base, path, query) => {
|
|
|
395
395
|
return url.toString();
|
|
396
396
|
};
|
|
397
397
|
|
|
398
|
-
var version = '6.
|
|
398
|
+
var version = '6.7.0';
|
|
399
399
|
|
|
400
400
|
const LIBRARY_NAME = 'UploadcareUploadClient';
|
|
401
401
|
const LIBRARY_VERSION = version;
|
|
@@ -769,6 +769,9 @@ function isReadyPoll({ file, publicKey, baseURL, source, integration, userAgent,
|
|
|
769
769
|
});
|
|
770
770
|
}
|
|
771
771
|
|
|
772
|
+
function isGroupFileInfo(fileInfo) {
|
|
773
|
+
return 'defaultEffects' in fileInfo;
|
|
774
|
+
}
|
|
772
775
|
class UploadcareFile {
|
|
773
776
|
uuid;
|
|
774
777
|
name = null;
|
|
@@ -784,6 +787,7 @@ class UploadcareFile {
|
|
|
784
787
|
contentInfo = null;
|
|
785
788
|
metadata = null;
|
|
786
789
|
s3Bucket = null;
|
|
790
|
+
defaultEffects = null;
|
|
787
791
|
constructor(fileInfo, { baseCDN = defaultSettings.baseCDN, fileName } = {}) {
|
|
788
792
|
const { uuid, s3Bucket } = fileInfo;
|
|
789
793
|
const cdnUrl = getUrl(baseCDN, `${uuid}/`);
|
|
@@ -804,6 +808,9 @@ class UploadcareFile {
|
|
|
804
808
|
this.metadata = fileInfo.metadata || null;
|
|
805
809
|
this.s3Bucket = s3Bucket || null;
|
|
806
810
|
this.s3Url = s3Url;
|
|
811
|
+
if (isGroupFileInfo(fileInfo)) {
|
|
812
|
+
this.defaultEffects = fileInfo.defaultEffects;
|
|
813
|
+
}
|
|
807
814
|
}
|
|
808
815
|
}
|
|
809
816
|
|
|
@@ -1481,14 +1488,16 @@ class UploadcareGroup {
|
|
|
1481
1488
|
files;
|
|
1482
1489
|
createdAt;
|
|
1483
1490
|
storedAt = null;
|
|
1484
|
-
constructor(groupInfo,
|
|
1491
|
+
constructor(groupInfo, { baseCDN = defaultSettings.baseCDN } = {}) {
|
|
1485
1492
|
this.uuid = groupInfo.id;
|
|
1486
1493
|
this.filesCount = groupInfo.filesCount;
|
|
1487
|
-
|
|
1494
|
+
const groupFiles = groupInfo.files.filter(Boolean);
|
|
1495
|
+
this.totalSize = Object.values(groupFiles).reduce((acc, file) => acc + file.size, 0);
|
|
1488
1496
|
this.isStored = !!groupInfo.datetimeStored;
|
|
1489
|
-
this.isImage = !!Object.values(
|
|
1497
|
+
this.isImage = !!Object.values(groupFiles).filter((file) => file.isImage)
|
|
1498
|
+
.length;
|
|
1490
1499
|
this.cdnUrl = groupInfo.cdnUrl;
|
|
1491
|
-
this.files =
|
|
1500
|
+
this.files = groupFiles.map((fileInfo) => new UploadcareFile(fileInfo, { baseCDN }));
|
|
1492
1501
|
this.createdAt = groupInfo.datetimeCreated;
|
|
1493
1502
|
this.storedAt = groupInfo.datetimeStored;
|
|
1494
1503
|
}
|
|
@@ -1546,27 +1555,34 @@ function uploadFileGroup(data, { publicKey, fileName, baseURL = defaultSettings.
|
|
|
1546
1555
|
onProgress({ isComputable: true, value: normalize(progressValues) });
|
|
1547
1556
|
};
|
|
1548
1557
|
};
|
|
1549
|
-
return Promise.all(data.map((file, index) =>
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1558
|
+
return Promise.all(data.map((file, index) => {
|
|
1559
|
+
if (isFileData(file) || isUrl(file)) {
|
|
1560
|
+
return uploadFile(file, {
|
|
1561
|
+
publicKey,
|
|
1562
|
+
fileName,
|
|
1563
|
+
baseURL,
|
|
1564
|
+
secureSignature,
|
|
1565
|
+
secureExpire,
|
|
1566
|
+
store,
|
|
1567
|
+
signal,
|
|
1568
|
+
onProgress: createProgressHandler(filesCount, index),
|
|
1569
|
+
source,
|
|
1570
|
+
integration,
|
|
1571
|
+
userAgent,
|
|
1572
|
+
retryThrottledRequestMaxTimes,
|
|
1573
|
+
retryNetworkErrorMaxTimes,
|
|
1574
|
+
contentType,
|
|
1575
|
+
multipartChunkSize,
|
|
1576
|
+
baseCDN,
|
|
1577
|
+
checkForUrlDuplicates,
|
|
1578
|
+
saveUrlForRecurrentUploads
|
|
1579
|
+
}).then((fileInfo) => fileInfo.uuid);
|
|
1580
|
+
}
|
|
1581
|
+
else {
|
|
1582
|
+
// Do not request file info by uuid before creating group because this isn't necessary
|
|
1583
|
+
return file;
|
|
1584
|
+
}
|
|
1585
|
+
})).then((uuids) => {
|
|
1570
1586
|
return group(uuids, {
|
|
1571
1587
|
publicKey,
|
|
1572
1588
|
baseURL,
|
|
@@ -1580,7 +1596,7 @@ function uploadFileGroup(data, { publicKey, fileName, baseURL = defaultSettings.
|
|
|
1580
1596
|
retryThrottledRequestMaxTimes,
|
|
1581
1597
|
retryNetworkErrorMaxTimes
|
|
1582
1598
|
})
|
|
1583
|
-
.then((groupInfo) => new UploadcareGroup(groupInfo,
|
|
1599
|
+
.then((groupInfo) => new UploadcareGroup(groupInfo, { baseCDN }))
|
|
1584
1600
|
.then((group) => {
|
|
1585
1601
|
onProgress && onProgress({ isComputable: true, value: 1 });
|
|
1586
1602
|
return group;
|
|
@@ -1651,32 +1667,32 @@ class UploadClient {
|
|
|
1651
1667
|
}
|
|
1652
1668
|
|
|
1653
1669
|
class Queue {
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1670
|
+
_concurrency = 1;
|
|
1671
|
+
_pending = [];
|
|
1672
|
+
_running = 0;
|
|
1673
|
+
_resolvers = new Map();
|
|
1674
|
+
_rejectors = new Map();
|
|
1659
1675
|
constructor(concurrency) {
|
|
1660
|
-
this
|
|
1676
|
+
this._concurrency = concurrency;
|
|
1661
1677
|
}
|
|
1662
|
-
|
|
1663
|
-
const tasksLeft = this
|
|
1678
|
+
_run() {
|
|
1679
|
+
const tasksLeft = this._concurrency - this._running;
|
|
1664
1680
|
for (let i = 0; i < tasksLeft; i++) {
|
|
1665
|
-
const task = this
|
|
1681
|
+
const task = this._pending.shift();
|
|
1666
1682
|
if (!task) {
|
|
1667
1683
|
return;
|
|
1668
1684
|
}
|
|
1669
|
-
const resolver = this
|
|
1670
|
-
const rejector = this
|
|
1685
|
+
const resolver = this._resolvers.get(task);
|
|
1686
|
+
const rejector = this._rejectors.get(task);
|
|
1671
1687
|
if (!resolver || !rejector)
|
|
1672
1688
|
throw new Error('Unexpected behavior: resolver or rejector is undefined');
|
|
1673
|
-
this
|
|
1689
|
+
this._running += 1;
|
|
1674
1690
|
task()
|
|
1675
1691
|
.finally(() => {
|
|
1676
|
-
this
|
|
1677
|
-
this
|
|
1678
|
-
this
|
|
1679
|
-
this
|
|
1692
|
+
this._resolvers.delete(task);
|
|
1693
|
+
this._rejectors.delete(task);
|
|
1694
|
+
this._running -= 1;
|
|
1695
|
+
this._run();
|
|
1680
1696
|
})
|
|
1681
1697
|
.then((value) => resolver(value))
|
|
1682
1698
|
.catch((error) => rejector(error));
|
|
@@ -1684,24 +1700,24 @@ class Queue {
|
|
|
1684
1700
|
}
|
|
1685
1701
|
add(task) {
|
|
1686
1702
|
return new Promise((resolve, reject) => {
|
|
1687
|
-
this
|
|
1688
|
-
this
|
|
1689
|
-
this
|
|
1690
|
-
this
|
|
1703
|
+
this._resolvers.set(task, resolve);
|
|
1704
|
+
this._rejectors.set(task, reject);
|
|
1705
|
+
this._pending.push(task);
|
|
1706
|
+
this._run();
|
|
1691
1707
|
});
|
|
1692
1708
|
}
|
|
1693
1709
|
get pending() {
|
|
1694
|
-
return this
|
|
1710
|
+
return this._pending.length;
|
|
1695
1711
|
}
|
|
1696
1712
|
get running() {
|
|
1697
|
-
return this
|
|
1713
|
+
return this._running;
|
|
1698
1714
|
}
|
|
1699
1715
|
set concurrency(value) {
|
|
1700
|
-
this
|
|
1701
|
-
this
|
|
1716
|
+
this._concurrency = value;
|
|
1717
|
+
this._run();
|
|
1702
1718
|
}
|
|
1703
1719
|
get concurrency() {
|
|
1704
|
-
return this
|
|
1720
|
+
return this._concurrency;
|
|
1705
1721
|
}
|
|
1706
1722
|
}
|
|
1707
1723
|
|
|
@@ -126,12 +126,15 @@ export type FileInfo = {
|
|
|
126
126
|
s3Bucket?: string;
|
|
127
127
|
metadata?: Metadata;
|
|
128
128
|
};
|
|
129
|
+
export type GroupFileInfo = FileInfo & {
|
|
130
|
+
defaultEffects: string;
|
|
131
|
+
};
|
|
129
132
|
export type GroupInfo = {
|
|
130
133
|
datetimeCreated: string;
|
|
131
134
|
datetimeStored: string | null;
|
|
132
135
|
filesCount: string;
|
|
133
136
|
cdnUrl: string;
|
|
134
|
-
files:
|
|
137
|
+
files: (GroupFileInfo | null)[];
|
|
135
138
|
url: string;
|
|
136
139
|
id: GroupId;
|
|
137
140
|
};
|
|
@@ -347,7 +350,8 @@ export declare class UploadcareFile {
|
|
|
347
350
|
readonly contentInfo: null | ContentInfo;
|
|
348
351
|
readonly metadata: null | Metadata;
|
|
349
352
|
readonly s3Bucket: null | string;
|
|
350
|
-
|
|
353
|
+
readonly defaultEffects: null | string;
|
|
354
|
+
constructor(fileInfo: FileInfo | GroupFileInfo, { baseCDN, fileName }?: {
|
|
351
355
|
baseCDN?: string;
|
|
352
356
|
fileName?: string;
|
|
353
357
|
});
|
|
@@ -449,7 +453,9 @@ export declare class UploadcareGroup {
|
|
|
449
453
|
readonly files: UploadcareFile[];
|
|
450
454
|
readonly createdAt: string;
|
|
451
455
|
readonly storedAt: string | null;
|
|
452
|
-
constructor(groupInfo: GroupInfo,
|
|
456
|
+
constructor(groupInfo: GroupInfo, { baseCDN }?: {
|
|
457
|
+
baseCDN?: string;
|
|
458
|
+
});
|
|
453
459
|
}
|
|
454
460
|
export type GroupFromOptions = {
|
|
455
461
|
jsonpCallback?: string;
|
|
@@ -474,8 +480,13 @@ export declare class UploadClient {
|
|
|
474
480
|
}
|
|
475
481
|
export type Task<T = unknown> = () => Promise<T>;
|
|
476
482
|
export declare class Queue {
|
|
477
|
-
|
|
483
|
+
private _concurrency;
|
|
484
|
+
private _pending;
|
|
485
|
+
private _running;
|
|
486
|
+
private _resolvers;
|
|
487
|
+
private _rejectors;
|
|
478
488
|
constructor(concurrency: number);
|
|
489
|
+
private _run;
|
|
479
490
|
add<T>(task: Task<T>): Promise<T>;
|
|
480
491
|
get pending(): number;
|
|
481
492
|
get running(): number;
|