@or-sdk/contacts 3.2.2-beta.1738.0 → 3.2.2-beta.1747.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 +26 -59
- 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 +23 -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 -50
- 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,8 +131,7 @@ 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) {
|
|
@@ -151,7 +140,7 @@ var ContactApi = (function (_super) {
|
|
|
151
140
|
contactsChunks = (0, utils_1.chunkArrByMaxSize)(contacts, contactsMaxSize);
|
|
152
141
|
return [2, contactsChunks.length === 1
|
|
153
142
|
? this.createContactsInSingleBatch(data)
|
|
154
|
-
: this.createContactsInMultiBatches(contactsChunks, rest
|
|
143
|
+
: this.createContactsInMultiBatches(contactsChunks, rest)];
|
|
155
144
|
});
|
|
156
145
|
});
|
|
157
146
|
};
|
|
@@ -230,74 +219,55 @@ var ContactApi = (function (_super) {
|
|
|
230
219
|
});
|
|
231
220
|
});
|
|
232
221
|
};
|
|
233
|
-
ContactApi.prototype.createContactsInSingleBatch = function (data
|
|
234
|
-
if (repeats === void 0) { repeats = 0; }
|
|
222
|
+
ContactApi.prototype.createContactsInSingleBatch = function (data) {
|
|
235
223
|
return __awaiter(this, void 0, void 0, function () {
|
|
236
|
-
var
|
|
237
|
-
var _this = this;
|
|
224
|
+
var batchProcess, batchProcessResult, contactIds, importedContacts;
|
|
238
225
|
return __generator(this, function (_a) {
|
|
239
226
|
switch (_a.label) {
|
|
240
|
-
case 0:
|
|
241
|
-
|
|
242
|
-
|
|
227
|
+
case 0: return [4, this.apiCall({
|
|
228
|
+
method: 'POST',
|
|
229
|
+
route: "".concat(this.apiBasePath, "/bulk"),
|
|
230
|
+
data: data,
|
|
231
|
+
})];
|
|
243
232
|
case 1:
|
|
244
|
-
_a.trys.push([1, 5, , 6]);
|
|
245
|
-
return [4, this.apiCall({
|
|
246
|
-
method: 'POST',
|
|
247
|
-
route: "".concat(this.apiBasePath, "/bulk"),
|
|
248
|
-
data: data,
|
|
249
|
-
})];
|
|
250
|
-
case 2:
|
|
251
233
|
batchProcess = _a.sent();
|
|
252
234
|
return [4, this.polling(batchProcess.id)];
|
|
253
|
-
case
|
|
235
|
+
case 2:
|
|
254
236
|
batchProcessResult = _a.sent();
|
|
255
237
|
contactIds = batchProcessResult.results.flatMap(function (i) { return JSON.parse(i); });
|
|
256
238
|
return [4, this.getSafelyContactsList(contactIds, data.contact_book)];
|
|
257
|
-
case
|
|
239
|
+
case 3:
|
|
258
240
|
importedContacts = _a.sent();
|
|
259
|
-
|
|
260
|
-
return [3, 6];
|
|
261
|
-
case 5:
|
|
262
|
-
e_1 = _a.sent();
|
|
263
|
-
if (repeats < constants_1.FAILED_REQUEST_REPEATS) {
|
|
264
|
-
return [2, (0, utils_1.debouncePromise)(function () { return _this.createContactsInSingleBatch(data, repeats + 1); }, 5000)];
|
|
265
|
-
}
|
|
266
|
-
throw e_1;
|
|
267
|
-
case 6: return [2, contacts];
|
|
241
|
+
return [2, importedContacts.items];
|
|
268
242
|
}
|
|
269
243
|
});
|
|
270
244
|
});
|
|
271
245
|
};
|
|
272
|
-
ContactApi.prototype.createContactsInMultiBatches = function (contactsChunks, data
|
|
246
|
+
ContactApi.prototype.createContactsInMultiBatches = function (contactsChunks, data) {
|
|
273
247
|
return __awaiter(this, void 0, void 0, function () {
|
|
274
|
-
var batchPromises, results,
|
|
248
|
+
var batchPromises, results, _i, batchPromises_1, fn, singleBatchResults;
|
|
275
249
|
var _this = this;
|
|
276
250
|
return __generator(this, function (_a) {
|
|
277
251
|
switch (_a.label) {
|
|
278
252
|
case 0:
|
|
279
|
-
batchPromises = contactsChunks.map(function (
|
|
253
|
+
batchPromises = contactsChunks.map(function (chunkContacts) { return function () { return __awaiter(_this, void 0, void 0, function () {
|
|
280
254
|
return __generator(this, function (_a) {
|
|
281
|
-
return [2, this.createContactsInSingleBatch(__assign({ contacts:
|
|
255
|
+
return [2, this.createContactsInSingleBatch(__assign({ contacts: chunkContacts }, data))];
|
|
282
256
|
});
|
|
283
257
|
}); }; });
|
|
284
258
|
results = [];
|
|
285
|
-
|
|
286
|
-
i = 0;
|
|
259
|
+
_i = 0, batchPromises_1 = batchPromises;
|
|
287
260
|
_a.label = 1;
|
|
288
261
|
case 1:
|
|
289
|
-
if (!(
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
return [4, Promise.all(chunk.map(function (p) { return p(); }))];
|
|
262
|
+
if (!(_i < batchPromises_1.length)) return [3, 4];
|
|
263
|
+
fn = batchPromises_1[_i];
|
|
264
|
+
return [4, fn()];
|
|
293
265
|
case 2:
|
|
294
|
-
|
|
295
|
-
results.push.apply(results,
|
|
296
|
-
e = performance.now();
|
|
297
|
-
console.log('BATCH ', i, ' resolved for ', (e - s) / 1000, 's');
|
|
266
|
+
singleBatchResults = _a.sent();
|
|
267
|
+
results.push.apply(results, singleBatchResults);
|
|
298
268
|
_a.label = 3;
|
|
299
269
|
case 3:
|
|
300
|
-
|
|
270
|
+
_i++;
|
|
301
271
|
return [3, 1];
|
|
302
272
|
case 4: return [2, results];
|
|
303
273
|
}
|
|
@@ -305,24 +275,21 @@ var ContactApi = (function (_super) {
|
|
|
305
275
|
});
|
|
306
276
|
};
|
|
307
277
|
ContactApi.prototype.polling = function (batchId, repeats) {
|
|
308
|
-
if (repeats === void 0) { repeats = 0; }
|
|
309
278
|
return __awaiter(this, void 0, void 0, function () {
|
|
310
279
|
var batchProcessState;
|
|
311
280
|
var _this = this;
|
|
312
281
|
return __generator(this, function (_a) {
|
|
313
282
|
switch (_a.label) {
|
|
314
283
|
case 0: return [4, this.batchProcessApi.getBatchProcess(batchId).catch(function (e) {
|
|
284
|
+
repeats = repeats || 0;
|
|
315
285
|
if (repeats < constants_1.FAILED_REQUEST_REPEATS) {
|
|
316
286
|
return _this.polling(batchId, repeats + 1);
|
|
317
287
|
}
|
|
318
|
-
throw e;
|
|
288
|
+
throw new Error(e);
|
|
319
289
|
})];
|
|
320
290
|
case 1:
|
|
321
291
|
batchProcessState = _a.sent();
|
|
322
|
-
|
|
323
|
-
throw new Error(batchProcessState.messages.join(', '));
|
|
324
|
-
}
|
|
325
|
-
return [2, batchProcessState.status === types_contacts_api_1.BatchProcessStatus.pending ? this.polling(batchId) : batchProcessState];
|
|
292
|
+
return [2, batchProcessState.status === 'pending' ? this.polling(batchId) : batchProcessState];
|
|
326
293
|
}
|
|
327
294
|
});
|
|
328
295
|
});
|
|
@@ -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,14 +73,14 @@ 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* () {
|
|
79
78
|
const { contacts } = data, rest = __rest(data, ["contacts"]);
|
|
80
79
|
const contactsMaxSize = REQUEST_PAYLOAD_MAX_BYTES - getObjectSizeInBytes(Object.assign({}, rest));
|
|
81
80
|
const contactsChunks = chunkArrByMaxSize(contacts, contactsMaxSize);
|
|
82
81
|
return contactsChunks.length === 1
|
|
83
82
|
? this.createContactsInSingleBatch(data)
|
|
84
|
-
: this.createContactsInMultiBatches(contactsChunks, rest
|
|
83
|
+
: this.createContactsInMultiBatches(contactsChunks, rest);
|
|
85
84
|
});
|
|
86
85
|
}
|
|
87
86
|
mergeContacts(id, data) {
|
|
@@ -141,59 +140,42 @@ export default class ContactApi extends BaseApi {
|
|
|
141
140
|
yield this.polling(batchProcess.id);
|
|
142
141
|
});
|
|
143
142
|
}
|
|
144
|
-
createContactsInSingleBatch(data
|
|
143
|
+
createContactsInSingleBatch(data) {
|
|
145
144
|
return __awaiter(this, void 0, void 0, function* () {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
const importedContacts = yield this.getSafelyContactsList(contactIds, data.contact_book);
|
|
156
|
-
contacts = importedContacts.items;
|
|
157
|
-
}
|
|
158
|
-
catch (e) {
|
|
159
|
-
if (repeats < FAILED_REQUEST_REPEATS) {
|
|
160
|
-
return debouncePromise(() => this.createContactsInSingleBatch(data, repeats + 1), 5000);
|
|
161
|
-
}
|
|
162
|
-
throw e;
|
|
163
|
-
}
|
|
164
|
-
return contacts;
|
|
145
|
+
const batchProcess = yield this.apiCall({
|
|
146
|
+
method: 'POST',
|
|
147
|
+
route: `${this.apiBasePath}/bulk`,
|
|
148
|
+
data,
|
|
149
|
+
});
|
|
150
|
+
const batchProcessResult = yield this.polling(batchProcess.id);
|
|
151
|
+
const contactIds = batchProcessResult.results.flatMap(i => JSON.parse(i));
|
|
152
|
+
const importedContacts = yield this.getSafelyContactsList(contactIds, data.contact_book);
|
|
153
|
+
return importedContacts.items;
|
|
165
154
|
});
|
|
166
155
|
}
|
|
167
|
-
createContactsInMultiBatches(contactsChunks, data
|
|
156
|
+
createContactsInMultiBatches(contactsChunks, data) {
|
|
168
157
|
return __awaiter(this, void 0, void 0, function* () {
|
|
169
|
-
const batchPromises = contactsChunks.map((
|
|
170
|
-
return this.createContactsInSingleBatch(Object.assign({ contacts }, data));
|
|
158
|
+
const batchPromises = contactsChunks.map((chunkContacts) => () => __awaiter(this, void 0, void 0, function* () {
|
|
159
|
+
return this.createContactsInSingleBatch(Object.assign({ contacts: chunkContacts }, data));
|
|
171
160
|
}));
|
|
172
161
|
const results = [];
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
const chunk = batchPromises.slice(i, i + promisesBatchSize);
|
|
177
|
-
const chunkResults = yield Promise.all(chunk.map((p) => p()));
|
|
178
|
-
results.push(...chunkResults.reduce((acc, r) => ([...acc, ...r]), []));
|
|
179
|
-
const e = performance.now();
|
|
180
|
-
console.log('BATCH ', i, ' resolved for ', (e - s) / 1000, 's');
|
|
162
|
+
for (const fn of batchPromises) {
|
|
163
|
+
const singleBatchResults = yield fn();
|
|
164
|
+
results.push(...singleBatchResults);
|
|
181
165
|
}
|
|
182
166
|
return results;
|
|
183
167
|
});
|
|
184
168
|
}
|
|
185
|
-
polling(batchId, repeats
|
|
169
|
+
polling(batchId, repeats) {
|
|
186
170
|
return __awaiter(this, void 0, void 0, function* () {
|
|
187
171
|
const batchProcessState = yield this.batchProcessApi.getBatchProcess(batchId).catch((e) => {
|
|
172
|
+
repeats = repeats || 0;
|
|
188
173
|
if (repeats < FAILED_REQUEST_REPEATS) {
|
|
189
174
|
return this.polling(batchId, repeats + 1);
|
|
190
175
|
}
|
|
191
|
-
throw e;
|
|
176
|
+
throw new Error(e);
|
|
192
177
|
});
|
|
193
|
-
|
|
194
|
-
throw new Error(batchProcessState.messages.join(', '));
|
|
195
|
-
}
|
|
196
|
-
return batchProcessState.status === BatchProcessStatus.pending ? this.polling(batchId) : batchProcessState;
|
|
178
|
+
return batchProcessState.status === 'pending' ? this.polling(batchId) : batchProcessState;
|
|
197
179
|
});
|
|
198
180
|
}
|
|
199
181
|
}
|
|
@@ -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;IAexF,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;CAWtB"}
|
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.1747.0",
|
|
3
3
|
"name": "@or-sdk/contacts",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/esm/index.js",
|
|
@@ -25,6 +25,6 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@onereach/types-contacts-api": "4.3.2-beta.2135.0",
|
|
28
|
-
"@or-sdk/base": "^0.28.
|
|
28
|
+
"@or-sdk/base": "^0.28.4-beta.1747.0"
|
|
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,14 +114,14 @@ 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
|
|
117
|
+
async bulkCreateContacts(data: CreateMultipleContactsDto): Promise<ContactResponseDto[]> {
|
|
119
118
|
const { contacts, ...rest } = data;
|
|
120
119
|
const contactsMaxSize = REQUEST_PAYLOAD_MAX_BYTES - getObjectSizeInBytes({ ...rest });
|
|
121
120
|
const contactsChunks = chunkArrByMaxSize(contacts, contactsMaxSize);
|
|
122
121
|
|
|
123
122
|
return contactsChunks.length === 1
|
|
124
123
|
? this.createContactsInSingleBatch(data)
|
|
125
|
-
: this.createContactsInMultiBatches(contactsChunks, rest
|
|
124
|
+
: this.createContactsInMultiBatches(contactsChunks, rest);
|
|
126
125
|
}
|
|
127
126
|
|
|
128
127
|
/**
|
|
@@ -215,52 +214,31 @@ export default class ContactApi extends BaseApi {
|
|
|
215
214
|
await this.polling(batchProcess.id);
|
|
216
215
|
}
|
|
217
216
|
|
|
218
|
-
private async createContactsInSingleBatch(
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
});
|
|
229
|
-
const batchProcessResult = await this.polling(batchProcess.id);
|
|
230
|
-
const contactIds = batchProcessResult.results.flatMap<string>(i => JSON.parse(i));
|
|
231
|
-
const importedContacts = await this.getSafelyContactsList(contactIds, data.contact_book);
|
|
232
|
-
contacts = importedContacts.items;
|
|
233
|
-
} catch (e) {
|
|
234
|
-
if (repeats < FAILED_REQUEST_REPEATS) {
|
|
235
|
-
return debouncePromise(() => this.createContactsInSingleBatch(data, repeats + 1), 5000);
|
|
236
|
-
}
|
|
237
|
-
throw e;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
return contacts;
|
|
217
|
+
private async createContactsInSingleBatch(data: CreateMultipleContactsDto): Promise<ContactResponseDto[]> {
|
|
218
|
+
const batchProcess = await this.apiCall<BatchProcessResponseDto>({
|
|
219
|
+
method: 'POST',
|
|
220
|
+
route: `${this.apiBasePath}/bulk`,
|
|
221
|
+
data,
|
|
222
|
+
});
|
|
223
|
+
const batchProcessResult = await this.polling(batchProcess.id);
|
|
224
|
+
const contactIds = batchProcessResult.results.flatMap<string>(i => JSON.parse(i));
|
|
225
|
+
const importedContacts = await this.getSafelyContactsList(contactIds, data.contact_book);
|
|
226
|
+
return importedContacts.items;
|
|
241
227
|
}
|
|
242
228
|
|
|
243
229
|
private async createContactsInMultiBatches(
|
|
244
230
|
contactsChunks: ContactRequestDto[][],
|
|
245
|
-
data: Omit<CreateMultipleContactsDto, 'contacts'
|
|
246
|
-
threads: number,
|
|
231
|
+
data: Omit<CreateMultipleContactsDto, 'contacts'>
|
|
247
232
|
): Promise<ContactResponseDto[]> {
|
|
248
|
-
const batchPromises = contactsChunks.map(
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
}));
|
|
233
|
+
const batchPromises = contactsChunks.map((chunkContacts) => async () => this.createContactsInSingleBatch({
|
|
234
|
+
contacts: chunkContacts,
|
|
235
|
+
...data,
|
|
236
|
+
}));
|
|
253
237
|
|
|
254
238
|
const results: ContactResponseDto[] = [];
|
|
255
|
-
const
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
const chunk = batchPromises.slice(i, i + promisesBatchSize);
|
|
259
|
-
const chunkResults = await Promise.all(chunk.map((p) => p()));
|
|
260
|
-
results.push(...chunkResults.reduce((acc, r) => ([...acc, ...r]), []));
|
|
261
|
-
const e = performance.now();
|
|
262
|
-
// eslint-disable-next-line no-console
|
|
263
|
-
console.log('BATCH ', i, ' resolved for ', (e - s) / 1000, 's');
|
|
239
|
+
for (const fn of batchPromises) {
|
|
240
|
+
const singleBatchResults = await fn();
|
|
241
|
+
results.push(...singleBatchResults);
|
|
264
242
|
}
|
|
265
243
|
return results;
|
|
266
244
|
}
|
|
@@ -268,17 +246,15 @@ export default class ContactApi extends BaseApi {
|
|
|
268
246
|
/**
|
|
269
247
|
* Pols specific batch process until status of it isn't turned from 'pending to something else.
|
|
270
248
|
*/
|
|
271
|
-
private async polling(batchId: string, repeats
|
|
249
|
+
private async polling(batchId: string, repeats?: number): Promise<BatchProcessResponseDto> {
|
|
272
250
|
const batchProcessState = await this.batchProcessApi.getBatchProcess(batchId).catch((e) => {
|
|
251
|
+
repeats = repeats || 0;
|
|
273
252
|
if (repeats < FAILED_REQUEST_REPEATS) {
|
|
274
253
|
return this.polling(batchId, repeats + 1);
|
|
275
254
|
}
|
|
276
|
-
throw e;
|
|
255
|
+
throw new Error(e);
|
|
277
256
|
});
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
throw new Error(batchProcessState.messages.join(', '));
|
|
281
|
-
}
|
|
282
|
-
return batchProcessState.status === BatchProcessStatus.pending ? this.polling(batchId) : batchProcessState;
|
|
257
|
+
// value 'pending' is used because of https://onereach.atlassian.net/browse/CU-562
|
|
258
|
+
return batchProcessState.status === 'pending' ? this.polling(batchId) : batchProcessState;
|
|
283
259
|
}
|
|
284
260
|
}
|
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
|
-
|