@or-sdk/contacts 3.2.2-beta.1750.0 → 3.2.2-beta.1751.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/api/contactApi.js +28 -63
- package/dist/cjs/api/contactApi.js.map +1 -1
- package/dist/cjs/utils.js +1 -11
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/api/contactApi.js +21 -41
- package/dist/esm/api/contactApi.js.map +1 -1
- package/dist/esm/utils.js +0 -9
- package/dist/esm/utils.js.map +1 -1
- package/dist/types/api/contactApi.d.ts +1 -1
- package/dist/types/api/contactApi.d.ts.map +1 -1
- package/dist/types/utils.d.ts +0 -1
- package/dist/types/utils.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/api/contactApi.ts +26 -57
- package/src/utils.ts +0 -16
|
@@ -72,17 +72,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
72
72
|
}
|
|
73
73
|
return t;
|
|
74
74
|
};
|
|
75
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
76
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
77
|
-
if (ar || !(i in from)) {
|
|
78
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
79
|
-
ar[i] = from[i];
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
83
|
-
};
|
|
84
75
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
85
|
-
var types_contacts_api_1 = require("@onereach/types-contacts-api");
|
|
86
76
|
var baseApi_1 = require("./baseApi");
|
|
87
77
|
var utils_1 = require("../utils");
|
|
88
78
|
var constants_1 = require("../constants");
|
|
@@ -141,19 +131,17 @@ var ContactApi = (function (_super) {
|
|
|
141
131
|
data: data,
|
|
142
132
|
});
|
|
143
133
|
};
|
|
144
|
-
ContactApi.prototype.bulkCreateContacts = function (data
|
|
145
|
-
if (threads === void 0) { threads = 4; }
|
|
134
|
+
ContactApi.prototype.bulkCreateContacts = function (data) {
|
|
146
135
|
return __awaiter(this, void 0, void 0, function () {
|
|
147
136
|
var contacts, rest, contactsMaxSize, contactsChunks;
|
|
148
137
|
return __generator(this, function (_a) {
|
|
138
|
+
console.log(data);
|
|
149
139
|
contacts = data.contacts, rest = __rest(data, ["contacts"]);
|
|
150
|
-
console.log('contacts amount = ', contacts.length);
|
|
151
140
|
contactsMaxSize = constants_1.REQUEST_PAYLOAD_MAX_BYTES - (0, utils_1.getObjectSizeInBytes)(__assign({}, rest));
|
|
152
141
|
contactsChunks = (0, utils_1.chunkArrByMaxSize)(contacts, contactsMaxSize);
|
|
153
|
-
console.log('chunks amount = ', contactsChunks.length);
|
|
154
142
|
return [2, contactsChunks.length === 1
|
|
155
143
|
? this.createContactsInSingleBatch(data)
|
|
156
|
-
: this.createContactsInMultiBatches(contactsChunks, rest
|
|
144
|
+
: this.createContactsInMultiBatches(contactsChunks, rest)];
|
|
157
145
|
});
|
|
158
146
|
});
|
|
159
147
|
};
|
|
@@ -232,74 +220,55 @@ var ContactApi = (function (_super) {
|
|
|
232
220
|
});
|
|
233
221
|
});
|
|
234
222
|
};
|
|
235
|
-
ContactApi.prototype.createContactsInSingleBatch = function (data
|
|
236
|
-
if (repeats === void 0) { repeats = 0; }
|
|
223
|
+
ContactApi.prototype.createContactsInSingleBatch = function (data) {
|
|
237
224
|
return __awaiter(this, void 0, void 0, function () {
|
|
238
|
-
var
|
|
239
|
-
var _this = this;
|
|
225
|
+
var batchProcess, batchProcessResult, contactIds, importedContacts;
|
|
240
226
|
return __generator(this, function (_a) {
|
|
241
227
|
switch (_a.label) {
|
|
242
|
-
case 0:
|
|
243
|
-
|
|
244
|
-
|
|
228
|
+
case 0: return [4, this.apiCall({
|
|
229
|
+
method: 'POST',
|
|
230
|
+
route: "".concat(this.apiBasePath, "/bulk"),
|
|
231
|
+
data: data,
|
|
232
|
+
})];
|
|
245
233
|
case 1:
|
|
246
|
-
_a.trys.push([1, 5, , 6]);
|
|
247
|
-
return [4, this.apiCall({
|
|
248
|
-
method: 'POST',
|
|
249
|
-
route: "".concat(this.apiBasePath, "/bulk"),
|
|
250
|
-
data: data,
|
|
251
|
-
})];
|
|
252
|
-
case 2:
|
|
253
234
|
batchProcess = _a.sent();
|
|
254
235
|
return [4, this.polling(batchProcess.id)];
|
|
255
|
-
case
|
|
236
|
+
case 2:
|
|
256
237
|
batchProcessResult = _a.sent();
|
|
257
238
|
contactIds = batchProcessResult.results.flatMap(function (i) { return JSON.parse(i); });
|
|
258
239
|
return [4, this.getSafelyContactsList(contactIds, data.contact_book)];
|
|
259
|
-
case
|
|
240
|
+
case 3:
|
|
260
241
|
importedContacts = _a.sent();
|
|
261
|
-
|
|
262
|
-
return [3, 6];
|
|
263
|
-
case 5:
|
|
264
|
-
e_1 = _a.sent();
|
|
265
|
-
if (repeats < constants_1.FAILED_REQUEST_REPEATS) {
|
|
266
|
-
return [2, (0, utils_1.debouncePromise)(function () { return _this.createContactsInSingleBatch(data, repeats + 1); }, 5000)];
|
|
267
|
-
}
|
|
268
|
-
throw e_1;
|
|
269
|
-
case 6: return [2, contacts];
|
|
242
|
+
return [2, importedContacts.items];
|
|
270
243
|
}
|
|
271
244
|
});
|
|
272
245
|
});
|
|
273
246
|
};
|
|
274
|
-
ContactApi.prototype.createContactsInMultiBatches = function (contactsChunks, data
|
|
247
|
+
ContactApi.prototype.createContactsInMultiBatches = function (contactsChunks, data) {
|
|
275
248
|
return __awaiter(this, void 0, void 0, function () {
|
|
276
|
-
var batchPromises, results,
|
|
249
|
+
var batchPromises, results, _i, batchPromises_1, fn, singleBatchResults;
|
|
277
250
|
var _this = this;
|
|
278
251
|
return __generator(this, function (_a) {
|
|
279
252
|
switch (_a.label) {
|
|
280
253
|
case 0:
|
|
281
|
-
batchPromises = contactsChunks.map(function (
|
|
254
|
+
batchPromises = contactsChunks.map(function (chunkContacts) { return function () { return __awaiter(_this, void 0, void 0, function () {
|
|
282
255
|
return __generator(this, function (_a) {
|
|
283
|
-
return [2, this.createContactsInSingleBatch(__assign({ contacts:
|
|
256
|
+
return [2, this.createContactsInSingleBatch(__assign({ contacts: chunkContacts }, data))];
|
|
284
257
|
});
|
|
285
258
|
}); }; });
|
|
286
259
|
results = [];
|
|
287
|
-
|
|
288
|
-
i = 0;
|
|
260
|
+
_i = 0, batchPromises_1 = batchPromises;
|
|
289
261
|
_a.label = 1;
|
|
290
262
|
case 1:
|
|
291
|
-
if (!(
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
return [4, Promise.all(chunk.map(function (p) { return p(); }))];
|
|
263
|
+
if (!(_i < batchPromises_1.length)) return [3, 4];
|
|
264
|
+
fn = batchPromises_1[_i];
|
|
265
|
+
return [4, fn()];
|
|
295
266
|
case 2:
|
|
296
|
-
|
|
297
|
-
results.push.apply(results,
|
|
298
|
-
e = performance.now();
|
|
299
|
-
console.log('BATCH ', i, ' resolved for ', (e - s) / 1000, 's');
|
|
267
|
+
singleBatchResults = _a.sent();
|
|
268
|
+
results.push.apply(results, singleBatchResults);
|
|
300
269
|
_a.label = 3;
|
|
301
270
|
case 3:
|
|
302
|
-
|
|
271
|
+
_i++;
|
|
303
272
|
return [3, 1];
|
|
304
273
|
case 4: return [2, results];
|
|
305
274
|
}
|
|
@@ -309,7 +278,7 @@ var ContactApi = (function (_super) {
|
|
|
309
278
|
ContactApi.prototype.polling = function (batchId, repeats) {
|
|
310
279
|
if (repeats === void 0) { repeats = 0; }
|
|
311
280
|
return __awaiter(this, void 0, void 0, function () {
|
|
312
|
-
var batchProcessState,
|
|
281
|
+
var batchProcessState, e_1;
|
|
313
282
|
return __generator(this, function (_a) {
|
|
314
283
|
switch (_a.label) {
|
|
315
284
|
case 0:
|
|
@@ -319,16 +288,12 @@ var ContactApi = (function (_super) {
|
|
|
319
288
|
batchProcessState = _a.sent();
|
|
320
289
|
return [3, 3];
|
|
321
290
|
case 2:
|
|
322
|
-
|
|
291
|
+
e_1 = _a.sent();
|
|
323
292
|
if (repeats < constants_1.FAILED_REQUEST_REPEATS) {
|
|
324
293
|
return [2, this.polling(batchId, repeats + 1)];
|
|
325
294
|
}
|
|
326
|
-
throw
|
|
327
|
-
case 3:
|
|
328
|
-
if (batchProcessState.status === types_contacts_api_1.BatchProcessStatus.failed) {
|
|
329
|
-
throw new Error(batchProcessState.messages.join(', '));
|
|
330
|
-
}
|
|
331
|
-
return [2, batchProcessState.status === types_contacts_api_1.BatchProcessStatus.pending ? this.polling(batchId) : batchProcessState];
|
|
295
|
+
throw e_1;
|
|
296
|
+
case 3: return [2, batchProcessState.status === 'pending' ? this.polling(batchId) : batchProcessState];
|
|
332
297
|
}
|
|
333
298
|
});
|
|
334
299
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contactApi.js","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"contactApi.js","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/utils.js
CHANGED
|
@@ -20,7 +20,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
20
20
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.
|
|
23
|
+
exports.chunkArrByMaxSize = exports.getObjectSizeInBytes = exports.adaptListParams = void 0;
|
|
24
24
|
var propertyToEscape = ['from', 'size', 'orderProperty', 'orderDirection'];
|
|
25
25
|
var adaptListParams = function (params) {
|
|
26
26
|
var toInclude = Object.keys(params).reduce(function (acc, k) {
|
|
@@ -49,14 +49,4 @@ var chunkArrByMaxSize = function (arr, maxSize) {
|
|
|
49
49
|
return __spreadArray(__spreadArray([], (0, exports.chunkArrByMaxSize)(arr.slice(0, mid), maxSize), true), (0, exports.chunkArrByMaxSize)(arr.slice(mid), maxSize), true);
|
|
50
50
|
};
|
|
51
51
|
exports.chunkArrByMaxSize = chunkArrByMaxSize;
|
|
52
|
-
function debouncePromise(caller, delay, reject) {
|
|
53
|
-
var timeout = null;
|
|
54
|
-
return new Promise(function (res) {
|
|
55
|
-
if (timeout) {
|
|
56
|
-
clearTimeout(timeout);
|
|
57
|
-
}
|
|
58
|
-
timeout = setTimeout(function () { return caller().then(function (x) { return res(x); }).catch(function (err) { return reject && reject(err); }); }, delay);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
exports.debouncePromise = debouncePromise;
|
|
62
52
|
//# sourceMappingURL=utils.js.map
|
package/dist/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,gBAAgB,CAAU,CAAC;AAG/E,IAAM,eAAe,GAAG,UAC7B,MAAS;IAET,IAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAa,UAAC,GAAG,EAAE,CAAC;QAC9D,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAoC,CAAC,KAAK,CAAC,CAAC,EAAE;YACxE,GAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;SAC7B;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAgB,CAAC,CAAC;IAErB,+CACK,SAAS,GACT,CACD,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,cAAc,CAAC;QAC/C,EAAE,KAAK,EAAE,UAAG,MAAM,CAAC,aAAa,cAAI,MAAM,CAAC,cAAc,CAAE,EAAE,CAC9D,GACE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,GACtC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EACzC;AACJ,CAAC,CAAC;AAnBW,QAAA,eAAe,mBAmB1B;AAEK,IAAM,oBAAoB,GAAG,UAAI,GAAM,IAAa,OAAA,MAAM;KAC9D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;KAC7C,MAAM,EAFkD,CAElD,CAAC;AAFG,QAAA,oBAAoB,wBAEvB;AAEH,IAAM,iBAAiB,GAAG,UAAI,GAAQ,EAAE,OAAe;IAC5D,IAAM,IAAI,GAAG,IAAA,4BAAoB,EAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,IAAI,GAAG,OAAO,EAAE;QAClB,OAAO,CAAC,GAAG,CAAC,CAAC;KACd;SAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC9D;IACD,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvC,uCACK,IAAA,yBAAiB,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,SAC7C,IAAA,yBAAiB,EAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,QAC7C;AACJ,CAAC,CAAC;AAbW,QAAA,iBAAiB,qBAa5B
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,gBAAgB,CAAU,CAAC;AAG/E,IAAM,eAAe,GAAG,UAC7B,MAAS;IAET,IAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAa,UAAC,GAAG,EAAE,CAAC;QAC9D,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAoC,CAAC,KAAK,CAAC,CAAC,EAAE;YACxE,GAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;SAC7B;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAgB,CAAC,CAAC;IAErB,+CACK,SAAS,GACT,CACD,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,cAAc,CAAC;QAC/C,EAAE,KAAK,EAAE,UAAG,MAAM,CAAC,aAAa,cAAI,MAAM,CAAC,cAAc,CAAE,EAAE,CAC9D,GACE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,GACtC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EACzC;AACJ,CAAC,CAAC;AAnBW,QAAA,eAAe,mBAmB1B;AAEK,IAAM,oBAAoB,GAAG,UAAI,GAAM,IAAa,OAAA,MAAM;KAC9D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;KAC7C,MAAM,EAFkD,CAElD,CAAC;AAFG,QAAA,oBAAoB,wBAEvB;AAEH,IAAM,iBAAiB,GAAG,UAAI,GAAQ,EAAE,OAAe;IAC5D,IAAM,IAAI,GAAG,IAAA,4BAAoB,EAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,IAAI,GAAG,OAAO,EAAE;QAClB,OAAO,CAAC,GAAG,CAAC,CAAC;KACd;SAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC9D;IACD,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvC,uCACK,IAAA,yBAAiB,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,SAC7C,IAAA,yBAAiB,EAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,QAC7C;AACJ,CAAC,CAAC;AAbW,QAAA,iBAAiB,qBAa5B"}
|
|
@@ -18,9 +18,8 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
18
18
|
}
|
|
19
19
|
return t;
|
|
20
20
|
};
|
|
21
|
-
import { BatchProcessStatus, } from '@onereach/types-contacts-api';
|
|
22
21
|
import { BaseApi } from './baseApi';
|
|
23
|
-
import { getObjectSizeInBytes, chunkArrByMaxSize
|
|
22
|
+
import { getObjectSizeInBytes, chunkArrByMaxSize } from '../utils';
|
|
24
23
|
import { REQUEST_PAYLOAD_MAX_BYTES, FAILED_REQUEST_REPEATS, CONTACTS_DELETE_MAX_AMOUNT } from '../constants';
|
|
25
24
|
export default class ContactApi extends BaseApi {
|
|
26
25
|
constructor(apiCall, batchProcessApi) {
|
|
@@ -74,16 +73,15 @@ export default class ContactApi extends BaseApi {
|
|
|
74
73
|
data,
|
|
75
74
|
});
|
|
76
75
|
}
|
|
77
|
-
bulkCreateContacts(data
|
|
76
|
+
bulkCreateContacts(data) {
|
|
78
77
|
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
+
console.log(data);
|
|
79
79
|
const { contacts } = data, rest = __rest(data, ["contacts"]);
|
|
80
|
-
console.log('contacts amount = ', contacts.length);
|
|
81
80
|
const contactsMaxSize = REQUEST_PAYLOAD_MAX_BYTES - getObjectSizeInBytes(Object.assign({}, rest));
|
|
82
81
|
const contactsChunks = chunkArrByMaxSize(contacts, contactsMaxSize);
|
|
83
|
-
console.log('chunks amount = ', contactsChunks.length);
|
|
84
82
|
return contactsChunks.length === 1
|
|
85
83
|
? this.createContactsInSingleBatch(data)
|
|
86
|
-
: this.createContactsInMultiBatches(contactsChunks, rest
|
|
84
|
+
: this.createContactsInMultiBatches(contactsChunks, rest);
|
|
87
85
|
});
|
|
88
86
|
}
|
|
89
87
|
mergeContacts(id, data) {
|
|
@@ -143,43 +141,28 @@ export default class ContactApi extends BaseApi {
|
|
|
143
141
|
yield this.polling(batchProcess.id);
|
|
144
142
|
});
|
|
145
143
|
}
|
|
146
|
-
createContactsInSingleBatch(data
|
|
144
|
+
createContactsInSingleBatch(data) {
|
|
147
145
|
return __awaiter(this, void 0, void 0, function* () {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
const importedContacts = yield this.getSafelyContactsList(contactIds, data.contact_book);
|
|
158
|
-
contacts = importedContacts.items;
|
|
159
|
-
}
|
|
160
|
-
catch (e) {
|
|
161
|
-
if (repeats < FAILED_REQUEST_REPEATS) {
|
|
162
|
-
return debouncePromise(() => this.createContactsInSingleBatch(data, repeats + 1), 5000);
|
|
163
|
-
}
|
|
164
|
-
throw e;
|
|
165
|
-
}
|
|
166
|
-
return contacts;
|
|
146
|
+
const batchProcess = yield this.apiCall({
|
|
147
|
+
method: 'POST',
|
|
148
|
+
route: `${this.apiBasePath}/bulk`,
|
|
149
|
+
data,
|
|
150
|
+
});
|
|
151
|
+
const batchProcessResult = yield this.polling(batchProcess.id);
|
|
152
|
+
const contactIds = batchProcessResult.results.flatMap(i => JSON.parse(i));
|
|
153
|
+
const importedContacts = yield this.getSafelyContactsList(contactIds, data.contact_book);
|
|
154
|
+
return importedContacts.items;
|
|
167
155
|
});
|
|
168
156
|
}
|
|
169
|
-
createContactsInMultiBatches(contactsChunks, data
|
|
157
|
+
createContactsInMultiBatches(contactsChunks, data) {
|
|
170
158
|
return __awaiter(this, void 0, void 0, function* () {
|
|
171
|
-
const batchPromises = contactsChunks.map((
|
|
172
|
-
return this.createContactsInSingleBatch(Object.assign({ contacts }, data));
|
|
159
|
+
const batchPromises = contactsChunks.map((chunkContacts) => () => __awaiter(this, void 0, void 0, function* () {
|
|
160
|
+
return this.createContactsInSingleBatch(Object.assign({ contacts: chunkContacts }, data));
|
|
173
161
|
}));
|
|
174
162
|
const results = [];
|
|
175
|
-
const
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
const chunk = batchPromises.slice(i, i + promisesBatchSize);
|
|
179
|
-
const chunkResults = yield Promise.all(chunk.map((p) => p()));
|
|
180
|
-
results.push(...chunkResults.reduce((acc, r) => ([...acc, ...r]), []));
|
|
181
|
-
const e = performance.now();
|
|
182
|
-
console.log('BATCH ', i, ' resolved for ', (e - s) / 1000, 's');
|
|
163
|
+
for (const fn of batchPromises) {
|
|
164
|
+
const singleBatchResults = yield fn();
|
|
165
|
+
results.push(...singleBatchResults);
|
|
183
166
|
}
|
|
184
167
|
return results;
|
|
185
168
|
});
|
|
@@ -196,10 +179,7 @@ export default class ContactApi extends BaseApi {
|
|
|
196
179
|
}
|
|
197
180
|
throw e;
|
|
198
181
|
}
|
|
199
|
-
|
|
200
|
-
throw new Error(batchProcessState.messages.join(', '));
|
|
201
|
-
}
|
|
202
|
-
return batchProcessState.status === BatchProcessStatus.pending ? this.polling(batchId) : batchProcessState;
|
|
182
|
+
return batchProcessState.status === 'pending' ? this.polling(batchId) : batchProcessState;
|
|
203
183
|
});
|
|
204
184
|
}
|
|
205
185
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contactApi.js","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"contactApi.js","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/utils.js
CHANGED
|
@@ -26,13 +26,4 @@ export const chunkArrByMaxSize = (arr, maxSize) => {
|
|
|
26
26
|
...chunkArrByMaxSize(arr.slice(mid), maxSize),
|
|
27
27
|
];
|
|
28
28
|
};
|
|
29
|
-
export function debouncePromise(caller, delay, reject) {
|
|
30
|
-
let timeout = null;
|
|
31
|
-
return new Promise((res) => {
|
|
32
|
-
if (timeout) {
|
|
33
|
-
clearTimeout(timeout);
|
|
34
|
-
}
|
|
35
|
-
timeout = setTimeout(() => caller().then((x) => res(x)).catch((err) => reject && reject(err)), delay);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
29
|
//# sourceMappingURL=utils.js.map
|
package/dist/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,gBAAgB,CAAU,CAAC;AAGtF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,MAAS,EAC0C,EAAE;IACrD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAa,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QAClE,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAoC,CAAC,KAAK,CAAC,CAAC,EAAE;YACxE,GAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;SAC7B;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAgB,CAAC,CAAC;IAErB,mEACK,SAAS,GACT,CACD,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,cAAc,CAAC;QAC/C,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,CAC9D,GACE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,GACtC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EACzC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAI,GAAM,EAAU,EAAE,CAAC,MAAM;KAC9D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;KAC7C,MAAM,CAAC;AAEV,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAI,GAAQ,EAAE,OAAe,EAAS,EAAE;IACvE,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,IAAI,GAAG,OAAO,EAAE;QAClB,OAAO,CAAC,GAAG,CAAC,CAAC;KACd;SAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC9D;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvC,OAAO;QACL,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;QAChD,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;KAC9C,CAAC;AACJ,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,gBAAgB,CAAU,CAAC;AAGtF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,MAAS,EAC0C,EAAE;IACrD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAa,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QAClE,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAoC,CAAC,KAAK,CAAC,CAAC,EAAE;YACxE,GAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;SAC7B;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAgB,CAAC,CAAC;IAErB,mEACK,SAAS,GACT,CACD,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,cAAc,CAAC;QAC/C,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,CAC9D,GACE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,GACtC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EACzC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAI,GAAM,EAAU,EAAE,CAAC,MAAM;KAC9D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;KAC7C,MAAM,CAAC;AAEV,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAI,GAAQ,EAAE,OAAe,EAAS,EAAE;IACvE,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,IAAI,GAAG,OAAO,EAAE;QAClB,OAAO,CAAC,GAAG,CAAC,CAAC;KACd;SAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC9D;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvC,OAAO;QACL,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;QAChD,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;KAC9C,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -13,7 +13,7 @@ export default class ContactApi extends BaseApi {
|
|
|
13
13
|
deleteContact(id: string, data: DeleteContactParamsDto): Promise<void>;
|
|
14
14
|
deleteMulti(data: DeleteContactMultiParamsDto): Promise<void>;
|
|
15
15
|
createContact(data: CreateContactDto): Promise<ContactResponseDto>;
|
|
16
|
-
bulkCreateContacts(data: CreateMultipleContactsDto
|
|
16
|
+
bulkCreateContacts(data: CreateMultipleContactsDto): Promise<ContactResponseDto[]>;
|
|
17
17
|
mergeContacts(id: string, data: MergeContactParamsDto): Promise<ContactResponseDto>;
|
|
18
18
|
linkContact(id: string, data: LinkContactParamsDto): Promise<void>;
|
|
19
19
|
linkContactsMulti(data: LinkContactMultiParamsDto): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contactApi.d.ts","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"contactApi.d.ts","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAEhB,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,2BAA2B,EAC3B,sBAAsB,EACtB,gBAAgB,EAChB,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAIhD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAE3C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,eAAe;gBADJ,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,EAC3D,eAAe,EAAE,eAAe;IAK1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAOzC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAY7E,WAAW,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAa3E,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAa9E,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAatE,WAAW,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7D,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAY5D,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAiBxF,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAanF,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlE,iBAAiB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAajE,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtE,mBAAmB,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;YAQvD,qBAAqB;YAkBrB,kBAAkB;YASlB,2BAA2B;YAY3B,4BAA4B;YAoB5B,OAAO;CActB"}
|
package/dist/types/utils.d.ts
CHANGED
|
@@ -8,6 +8,5 @@ export declare const adaptListParams: <T extends AdaptedListParams<{
|
|
|
8
8
|
}>>(params: T) => Omitted<T> & Partial<ListApiParams & OrderParams>;
|
|
9
9
|
export declare const getObjectSizeInBytes: <T>(obj: T) => number;
|
|
10
10
|
export declare const chunkArrByMaxSize: <T>(arr: T[], maxSize: number) => T[][];
|
|
11
|
-
export declare function debouncePromise<T>(caller: () => Promise<T>, delay: number, reject?: (value: string | T | PromiseLike<T>) => void): Promise<T>;
|
|
12
11
|
export {};
|
|
13
12
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,QAAA,MAAM,gBAAgB,8DAA+D,CAAC;AACtF,aAAK,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;AAE3D,eAAO,MAAM,eAAe;;;mEAmB3B,CAAC;AAEF,eAAO,MAAM,oBAAoB,iBAAgB,MAExC,CAAC;AAEV,eAAO,MAAM,iBAAiB,yBAA0B,MAAM,UAa7D,CAAC
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,QAAA,MAAM,gBAAgB,8DAA+D,CAAC;AACtF,aAAK,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;AAE3D,eAAO,MAAM,eAAe;;;mEAmB3B,CAAC;AAEF,eAAO,MAAM,oBAAoB,iBAAgB,MAExC,CAAC;AAEV,eAAO,MAAM,iBAAiB,yBAA0B,MAAM,UAa7D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "3.2.2-beta.
|
|
2
|
+
"version": "3.2.2-beta.1751.0",
|
|
3
3
|
"name": "@or-sdk/contacts",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/esm/index.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@onereach/types-contacts-api": "4.3.
|
|
27
|
+
"@onereach/types-contacts-api": "4.3.2-beta.2135.0",
|
|
28
28
|
"@or-sdk/base": "^0.28.3"
|
|
29
29
|
}
|
|
30
30
|
}
|
package/src/api/contactApi.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BatchProcessResponseDto,
|
|
3
|
-
BatchProcessStatus,
|
|
4
3
|
ContactParamsDto,
|
|
5
4
|
ContactRequestDto,
|
|
6
5
|
ContactResponseDto,
|
|
@@ -19,7 +18,7 @@ import {
|
|
|
19
18
|
import { CalApiParams, List } from '@or-sdk/base';
|
|
20
19
|
import { BaseApi } from './baseApi';
|
|
21
20
|
import BatchProcessApi from './batchProcessApi';
|
|
22
|
-
import { getObjectSizeInBytes, chunkArrByMaxSize
|
|
21
|
+
import { getObjectSizeInBytes, chunkArrByMaxSize } from '../utils';
|
|
23
22
|
import { REQUEST_PAYLOAD_MAX_BYTES, FAILED_REQUEST_REPEATS, CONTACTS_DELETE_MAX_AMOUNT } from '../constants';
|
|
24
23
|
|
|
25
24
|
export default class ContactApi extends BaseApi {
|
|
@@ -115,17 +114,16 @@ export default class ContactApi extends BaseApi {
|
|
|
115
114
|
* @description Create Contacts either in single or in multi batch(es), depending on payload size
|
|
116
115
|
* @param data
|
|
117
116
|
*/
|
|
118
|
-
async bulkCreateContacts(data: CreateMultipleContactsDto
|
|
119
|
-
const { contacts, ...rest } = data;
|
|
117
|
+
async bulkCreateContacts(data: CreateMultipleContactsDto): Promise<ContactResponseDto[]> {
|
|
120
118
|
// eslint-disable-next-line no-console
|
|
121
|
-
console.log(
|
|
119
|
+
console.log(data);
|
|
120
|
+
const { contacts, ...rest } = data;
|
|
122
121
|
const contactsMaxSize = REQUEST_PAYLOAD_MAX_BYTES - getObjectSizeInBytes({ ...rest });
|
|
123
122
|
const contactsChunks = chunkArrByMaxSize(contacts, contactsMaxSize);
|
|
124
|
-
|
|
125
|
-
console.log('chunks amount = ', contactsChunks.length);
|
|
123
|
+
|
|
126
124
|
return contactsChunks.length === 1
|
|
127
125
|
? this.createContactsInSingleBatch(data)
|
|
128
|
-
: this.createContactsInMultiBatches(contactsChunks, rest
|
|
126
|
+
: this.createContactsInMultiBatches(contactsChunks, rest);
|
|
129
127
|
}
|
|
130
128
|
|
|
131
129
|
/**
|
|
@@ -218,52 +216,31 @@ export default class ContactApi extends BaseApi {
|
|
|
218
216
|
await this.polling(batchProcess.id);
|
|
219
217
|
}
|
|
220
218
|
|
|
221
|
-
private async createContactsInSingleBatch(
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
});
|
|
232
|
-
const batchProcessResult = await this.polling(batchProcess.id);
|
|
233
|
-
const contactIds = batchProcessResult.results.flatMap<string>(i => JSON.parse(i));
|
|
234
|
-
const importedContacts = await this.getSafelyContactsList(contactIds, data.contact_book);
|
|
235
|
-
contacts = importedContacts.items;
|
|
236
|
-
} catch (e) {
|
|
237
|
-
if (repeats < FAILED_REQUEST_REPEATS) {
|
|
238
|
-
return debouncePromise(() => this.createContactsInSingleBatch(data, repeats + 1), 5000);
|
|
239
|
-
}
|
|
240
|
-
throw e;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
return contacts;
|
|
219
|
+
private async createContactsInSingleBatch(data: CreateMultipleContactsDto): Promise<ContactResponseDto[]> {
|
|
220
|
+
const batchProcess = await this.apiCall<BatchProcessResponseDto>({
|
|
221
|
+
method: 'POST',
|
|
222
|
+
route: `${this.apiBasePath}/bulk`,
|
|
223
|
+
data,
|
|
224
|
+
});
|
|
225
|
+
const batchProcessResult = await this.polling(batchProcess.id);
|
|
226
|
+
const contactIds = batchProcessResult.results.flatMap<string>(i => JSON.parse(i));
|
|
227
|
+
const importedContacts = await this.getSafelyContactsList(contactIds, data.contact_book);
|
|
228
|
+
return importedContacts.items;
|
|
244
229
|
}
|
|
245
230
|
|
|
246
231
|
private async createContactsInMultiBatches(
|
|
247
232
|
contactsChunks: ContactRequestDto[][],
|
|
248
|
-
data: Omit<CreateMultipleContactsDto, 'contacts'
|
|
249
|
-
threads: number,
|
|
233
|
+
data: Omit<CreateMultipleContactsDto, 'contacts'>
|
|
250
234
|
): Promise<ContactResponseDto[]> {
|
|
251
|
-
const batchPromises = contactsChunks.map(
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
}));
|
|
235
|
+
const batchPromises = contactsChunks.map((chunkContacts) => async () => this.createContactsInSingleBatch({
|
|
236
|
+
contacts: chunkContacts,
|
|
237
|
+
...data,
|
|
238
|
+
}));
|
|
256
239
|
|
|
257
240
|
const results: ContactResponseDto[] = [];
|
|
258
|
-
const
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
const chunk = batchPromises.slice(i, i + promisesBatchSize);
|
|
262
|
-
const chunkResults = await Promise.all(chunk.map((p) => p()));
|
|
263
|
-
results.push(...chunkResults.reduce((acc, r) => ([...acc, ...r]), []));
|
|
264
|
-
const e = performance.now();
|
|
265
|
-
// eslint-disable-next-line no-console
|
|
266
|
-
console.log('BATCH ', i, ' resolved for ', (e - s) / 1000, 's');
|
|
241
|
+
for (const fn of batchPromises) {
|
|
242
|
+
const singleBatchResults = await fn();
|
|
243
|
+
results.push(...singleBatchResults);
|
|
267
244
|
}
|
|
268
245
|
return results;
|
|
269
246
|
}
|
|
@@ -281,16 +258,8 @@ export default class ContactApi extends BaseApi {
|
|
|
281
258
|
}
|
|
282
259
|
throw e;
|
|
283
260
|
}
|
|
284
|
-
// const batchProcessState = await this.batchProcessApi.getBatchProcess(batchId).catch((e) => {
|
|
285
|
-
// if (repeats < FAILED_REQUEST_REPEATS) {
|
|
286
|
-
// return this.polling(batchId, repeats + 1);
|
|
287
|
-
// }
|
|
288
|
-
// throw e;
|
|
289
|
-
// });
|
|
290
261
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
}
|
|
294
|
-
return batchProcessState.status === BatchProcessStatus.pending ? this.polling(batchId) : batchProcessState;
|
|
262
|
+
// value 'pending' is used because of https://onereach.atlassian.net/browse/CU-562
|
|
263
|
+
return batchProcessState.status === 'pending' ? this.polling(batchId) : batchProcessState;
|
|
295
264
|
}
|
|
296
265
|
}
|
package/src/utils.ts
CHANGED
|
@@ -43,19 +43,3 @@ export const chunkArrByMaxSize = <T>(arr: T[], maxSize: number): T[][] => {
|
|
|
43
43
|
...chunkArrByMaxSize(arr.slice(mid), maxSize),
|
|
44
44
|
];
|
|
45
45
|
};
|
|
46
|
-
|
|
47
|
-
export function debouncePromise<T>(
|
|
48
|
-
caller: () => Promise<T>,
|
|
49
|
-
delay: number,
|
|
50
|
-
reject?: (value: string | T | PromiseLike<T>) => void
|
|
51
|
-
): Promise<T> {
|
|
52
|
-
let timeout: NodeJS.Timeout | null = null;
|
|
53
|
-
|
|
54
|
-
return new Promise<T>((res) => {
|
|
55
|
-
if (timeout) {
|
|
56
|
-
clearTimeout(timeout);
|
|
57
|
-
}
|
|
58
|
-
timeout = setTimeout(() => caller().then((x) => res(x)).catch((err) => reject && reject(err)), delay);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
|