@or-sdk/contacts 3.2.2-beta.1754.0 → 3.2.2-beta.1755.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 +63 -35
- package/dist/cjs/api/contactApi.js.map +1 -1
- package/dist/cjs/apiError.js +13 -1
- package/dist/cjs/apiError.js.map +1 -1
- package/dist/esm/api/contactApi.js +29 -19
- package/dist/esm/api/contactApi.js.map +1 -1
- package/dist/esm/apiError.js +8 -0
- package/dist/esm/apiError.js.map +1 -1
- package/dist/types/api/contactApi.d.ts.map +1 -1
- package/dist/types/apiError.d.ts +6 -0
- package/dist/types/apiError.d.ts.map +1 -1
- package/dist/types/types.d.ts +4 -0
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/api/contactApi.ts +38 -22
- package/src/apiError.ts +11 -0
- package/src/types.ts +5 -0
|
@@ -86,6 +86,7 @@ var types_contacts_api_1 = require("@onereach/types-contacts-api");
|
|
|
86
86
|
var baseApi_1 = require("./baseApi");
|
|
87
87
|
var utils_1 = require("../utils");
|
|
88
88
|
var constants_1 = require("../constants");
|
|
89
|
+
var apiError_1 = require("../apiError");
|
|
89
90
|
var ContactApi = (function (_super) {
|
|
90
91
|
__extends(ContactApi, _super);
|
|
91
92
|
function ContactApi(apiCall, batchProcessApi) {
|
|
@@ -143,16 +144,31 @@ var ContactApi = (function (_super) {
|
|
|
143
144
|
};
|
|
144
145
|
ContactApi.prototype.bulkCreateContacts = function (data) {
|
|
145
146
|
return __awaiter(this, void 0, void 0, function () {
|
|
146
|
-
var contacts, rest, contactsMaxSize, contactsChunks;
|
|
147
|
-
return __generator(this, function (
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
147
|
+
var contacts, rest, contactsMaxSize, contactsChunks, results, _a;
|
|
148
|
+
return __generator(this, function (_b) {
|
|
149
|
+
switch (_b.label) {
|
|
150
|
+
case 0:
|
|
151
|
+
console.log('contacts: ', data.contacts.length);
|
|
152
|
+
contacts = data.contacts, rest = __rest(data, ["contacts"]);
|
|
153
|
+
contactsMaxSize = constants_1.REQUEST_PAYLOAD_MAX_BYTES - (0, utils_1.getObjectSizeInBytes)(__assign({}, rest));
|
|
154
|
+
contactsChunks = (0, utils_1.chunkArrByMaxSize)(contacts, contactsMaxSize);
|
|
155
|
+
console.log('chunks: ', contactsChunks.length);
|
|
156
|
+
if (!(contactsChunks.length === 1)) return [3, 2];
|
|
157
|
+
return [4, this.createContactsInSingleBatch(data)];
|
|
158
|
+
case 1:
|
|
159
|
+
_a = [_b.sent()];
|
|
160
|
+
return [3, 4];
|
|
161
|
+
case 2: return [4, this.createContactsInMultiBatches(contactsChunks, rest)];
|
|
162
|
+
case 3:
|
|
163
|
+
_a = _b.sent();
|
|
164
|
+
_b.label = 4;
|
|
165
|
+
case 4:
|
|
166
|
+
results = _a;
|
|
167
|
+
return [2, results.reduce(function (acc, _a) {
|
|
168
|
+
var contactsIds = _a.contactsIds;
|
|
169
|
+
return (__spreadArray(__spreadArray([], acc, true), contactsIds, true));
|
|
170
|
+
}, [])];
|
|
171
|
+
}
|
|
156
172
|
});
|
|
157
173
|
});
|
|
158
174
|
};
|
|
@@ -236,11 +252,9 @@ var ContactApi = (function (_super) {
|
|
|
236
252
|
});
|
|
237
253
|
});
|
|
238
254
|
};
|
|
239
|
-
ContactApi.prototype.createContactsInSingleBatch = function (data
|
|
240
|
-
if (repeats === void 0) { repeats = 0; }
|
|
255
|
+
ContactApi.prototype.createContactsInSingleBatch = function (data) {
|
|
241
256
|
return __awaiter(this, void 0, void 0, function () {
|
|
242
257
|
var s, batchProcess, batchProcessResult, e;
|
|
243
|
-
var _this = this;
|
|
244
258
|
return __generator(this, function (_a) {
|
|
245
259
|
switch (_a.label) {
|
|
246
260
|
case 0:
|
|
@@ -255,23 +269,19 @@ var ContactApi = (function (_super) {
|
|
|
255
269
|
return [4, this.polling(batchProcess.id)];
|
|
256
270
|
case 2:
|
|
257
271
|
batchProcessResult = _a.sent();
|
|
258
|
-
if (repeats === 2) {
|
|
259
|
-
throw new Error('Can not complete contacts creation batch');
|
|
260
|
-
}
|
|
261
|
-
if (!(batchProcessResult.status === types_contacts_api_1.BatchProcessStatus.failed)) return [3, 4];
|
|
262
|
-
return [4, (0, utils_1.debouncePromise)(function () { return _this.createContactsInSingleBatch(data, repeats + 1); }, 10000)];
|
|
263
|
-
case 3: return [2, _a.sent()];
|
|
264
|
-
case 4:
|
|
265
272
|
e = performance.now();
|
|
266
273
|
console.log('single batch time: ', (e - s) / 1000, 's');
|
|
267
|
-
return [2,
|
|
274
|
+
return [2, {
|
|
275
|
+
batchId: batchProcess.id,
|
|
276
|
+
contactsIds: batchProcessResult.results.flatMap(function (i) { return JSON.parse(i); }),
|
|
277
|
+
}];
|
|
268
278
|
}
|
|
269
279
|
});
|
|
270
280
|
});
|
|
271
281
|
};
|
|
272
282
|
ContactApi.prototype.createContactsInMultiBatches = function (contactsChunks, data) {
|
|
273
283
|
return __awaiter(this, void 0, void 0, function () {
|
|
274
|
-
var batchPromises, promisesBatchSize, results, i, s, chunk, chunkResults, e;
|
|
284
|
+
var batchPromises, promisesBatchSize, results, i, s, chunk, chunkResults, e_1, e;
|
|
275
285
|
var _this = this;
|
|
276
286
|
return __generator(this, function (_a) {
|
|
277
287
|
switch (_a.label) {
|
|
@@ -287,20 +297,34 @@ var ContactApi = (function (_super) {
|
|
|
287
297
|
i = 0;
|
|
288
298
|
_a.label = 1;
|
|
289
299
|
case 1:
|
|
290
|
-
if (!(i < batchPromises.length)) return [3,
|
|
300
|
+
if (!(i < batchPromises.length)) return [3, 7];
|
|
291
301
|
s = performance.now();
|
|
302
|
+
_a.label = 2;
|
|
303
|
+
case 2:
|
|
304
|
+
_a.trys.push([2, 4, , 5]);
|
|
292
305
|
chunk = batchPromises.slice(i, i + promisesBatchSize);
|
|
293
306
|
return [4, Promise.all(chunk.map(function (p) { return p(); }))];
|
|
294
|
-
case
|
|
307
|
+
case 3:
|
|
295
308
|
chunkResults = _a.sent();
|
|
296
|
-
results.push.apply(results, chunkResults
|
|
309
|
+
results.push.apply(results, chunkResults);
|
|
310
|
+
return [3, 5];
|
|
311
|
+
case 4:
|
|
312
|
+
e_1 = _a.sent();
|
|
313
|
+
if (e_1 instanceof apiError_1.CreateContactsBatchError) {
|
|
314
|
+
e_1.processedBatchIds = results.map(function (_a) {
|
|
315
|
+
var batchId = _a.batchId;
|
|
316
|
+
return batchId;
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
throw e_1;
|
|
320
|
+
case 5:
|
|
297
321
|
e = performance.now();
|
|
298
322
|
console.log('awaiting ', promisesBatchSize, ' batches: ', (e - s) / 1000, 's');
|
|
299
|
-
_a.label =
|
|
300
|
-
case
|
|
323
|
+
_a.label = 6;
|
|
324
|
+
case 6:
|
|
301
325
|
i += promisesBatchSize;
|
|
302
326
|
return [3, 1];
|
|
303
|
-
case
|
|
327
|
+
case 7: return [2, results];
|
|
304
328
|
}
|
|
305
329
|
});
|
|
306
330
|
});
|
|
@@ -308,7 +332,7 @@ var ContactApi = (function (_super) {
|
|
|
308
332
|
ContactApi.prototype.polling = function (batchId, repeats) {
|
|
309
333
|
if (repeats === void 0) { repeats = 0; }
|
|
310
334
|
return __awaiter(this, void 0, void 0, function () {
|
|
311
|
-
var
|
|
335
|
+
var batchProcess, e_2;
|
|
312
336
|
var _this = this;
|
|
313
337
|
return __generator(this, function (_a) {
|
|
314
338
|
switch (_a.label) {
|
|
@@ -316,17 +340,21 @@ var ContactApi = (function (_super) {
|
|
|
316
340
|
_a.trys.push([0, 2, , 3]);
|
|
317
341
|
return [4, (0, utils_1.debouncePromise)(function () { return _this.batchProcessApi.getBatchProcess(batchId); }, 1000)];
|
|
318
342
|
case 1:
|
|
319
|
-
|
|
343
|
+
batchProcess = _a.sent();
|
|
320
344
|
return [3, 3];
|
|
321
345
|
case 2:
|
|
322
|
-
|
|
346
|
+
e_2 = _a.sent();
|
|
323
347
|
if (repeats < constants_1.FAILED_REQUEST_REPEATS) {
|
|
324
348
|
return [2, this.polling(batchId, repeats + 1)];
|
|
325
349
|
}
|
|
326
|
-
throw
|
|
327
|
-
case 3:
|
|
328
|
-
|
|
329
|
-
|
|
350
|
+
throw new apiError_1.CreateContactsBatchError(e_2.message, batchId);
|
|
351
|
+
case 3:
|
|
352
|
+
if (batchProcess.status === types_contacts_api_1.BatchProcessStatus.failed) {
|
|
353
|
+
throw new apiError_1.CreateContactsBatchError('Could not complete batch process', batchId, batchProcess.messages);
|
|
354
|
+
}
|
|
355
|
+
return [2, batchProcess.status === types_contacts_api_1.BatchProcessStatus.pending
|
|
356
|
+
? this.polling(batchId)
|
|
357
|
+
: batchProcess];
|
|
330
358
|
}
|
|
331
359
|
});
|
|
332
360
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contactApi.js","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mEAiBsC;AAEtC,qCAAoC;AAEpC,kCAAoF;AAEpF,0CAA6G;
|
|
1
|
+
{"version":3,"file":"contactApi.js","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/apiError.js
CHANGED
|
@@ -15,7 +15,7 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
15
15
|
};
|
|
16
16
|
})();
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.ApiError = void 0;
|
|
18
|
+
exports.CreateContactsBatchError = exports.ApiError = void 0;
|
|
19
19
|
var ApiError = (function (_super) {
|
|
20
20
|
__extends(ApiError, _super);
|
|
21
21
|
function ApiError(statusCode, message, stack, translationKey) {
|
|
@@ -28,4 +28,16 @@ var ApiError = (function (_super) {
|
|
|
28
28
|
return ApiError;
|
|
29
29
|
}(Error));
|
|
30
30
|
exports.ApiError = ApiError;
|
|
31
|
+
var CreateContactsBatchError = (function (_super) {
|
|
32
|
+
__extends(CreateContactsBatchError, _super);
|
|
33
|
+
function CreateContactsBatchError(message, failedBatchId, batchMessages, processedBatchIds) {
|
|
34
|
+
var _this = _super.call(this, message) || this;
|
|
35
|
+
_this.failedBatchId = failedBatchId;
|
|
36
|
+
_this.batchMessages = batchMessages;
|
|
37
|
+
_this.processedBatchIds = processedBatchIds;
|
|
38
|
+
return _this;
|
|
39
|
+
}
|
|
40
|
+
return CreateContactsBatchError;
|
|
41
|
+
}(Error));
|
|
42
|
+
exports.CreateContactsBatchError = CreateContactsBatchError;
|
|
31
43
|
//# sourceMappingURL=apiError.js.map
|
package/dist/cjs/apiError.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiError.js","sourceRoot":"","sources":["../../src/apiError.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAGA;IAA8B,4BAAK;IACjC,kBACkB,UAAe,EAC/B,OAAe,EACC,KAAc,EACd,cAAuB;QAJzC,YAME,kBAAM,OAAO,CAAC,SACf;QANiB,gBAAU,GAAV,UAAU,CAAK;QAEf,WAAK,GAAL,KAAK,CAAS;QACd,oBAAc,GAAd,cAAc,CAAS;;IAGzC,CAAC;IACH,eAAC;AAAD,CAAC,AATD,CAA8B,KAAK,GASlC;AATY,4BAAQ"}
|
|
1
|
+
{"version":3,"file":"apiError.js","sourceRoot":"","sources":["../../src/apiError.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAGA;IAA8B,4BAAK;IACjC,kBACkB,UAAe,EAC/B,OAAe,EACC,KAAc,EACd,cAAuB;QAJzC,YAME,kBAAM,OAAO,CAAC,SACf;QANiB,gBAAU,GAAV,UAAU,CAAK;QAEf,WAAK,GAAL,KAAK,CAAS;QACd,oBAAc,GAAd,cAAc,CAAS;;IAGzC,CAAC;IACH,eAAC;AAAD,CAAC,AATD,CAA8B,KAAK,GASlC;AATY,4BAAQ;AAWrB;IAA8C,4CAAK;IACjD,kCACE,OAAe,EACC,aAAqB,EACrB,aAAwB,EACjC,iBAA4B;QAJrC,YAME,kBAAM,OAAO,CAAC,SACf;QALiB,mBAAa,GAAb,aAAa,CAAQ;QACrB,mBAAa,GAAb,aAAa,CAAW;QACjC,uBAAiB,GAAjB,iBAAiB,CAAW;;IAGrC,CAAC;IACH,+BAAC;AAAD,CAAC,AATD,CAA8C,KAAK,GASlD;AATY,4DAAwB"}
|
|
@@ -22,6 +22,7 @@ import { BatchProcessStatus, } from '@onereach/types-contacts-api';
|
|
|
22
22
|
import { BaseApi } from './baseApi';
|
|
23
23
|
import { getObjectSizeInBytes, chunkArrByMaxSize, debouncePromise } from '../utils';
|
|
24
24
|
import { REQUEST_PAYLOAD_MAX_BYTES, FAILED_REQUEST_REPEATS, CONTACTS_DELETE_MAX_AMOUNT } from '../constants';
|
|
25
|
+
import { CreateContactsBatchError } from '../apiError';
|
|
25
26
|
export default class ContactApi extends BaseApi {
|
|
26
27
|
constructor(apiCall, batchProcessApi) {
|
|
27
28
|
super(apiCall);
|
|
@@ -81,9 +82,10 @@ export default class ContactApi extends BaseApi {
|
|
|
81
82
|
const contactsMaxSize = REQUEST_PAYLOAD_MAX_BYTES - getObjectSizeInBytes(Object.assign({}, rest));
|
|
82
83
|
const contactsChunks = chunkArrByMaxSize(contacts, contactsMaxSize);
|
|
83
84
|
console.log('chunks: ', contactsChunks.length);
|
|
84
|
-
|
|
85
|
-
? this.createContactsInSingleBatch(data)
|
|
86
|
-
: this.createContactsInMultiBatches(contactsChunks, rest);
|
|
85
|
+
const results = contactsChunks.length === 1
|
|
86
|
+
? [yield this.createContactsInSingleBatch(data)]
|
|
87
|
+
: yield this.createContactsInMultiBatches(contactsChunks, rest);
|
|
88
|
+
return results.reduce((acc, { contactsIds }) => ([...acc, ...contactsIds]), []);
|
|
87
89
|
});
|
|
88
90
|
}
|
|
89
91
|
initCreateBatch(data) {
|
|
@@ -148,7 +150,7 @@ export default class ContactApi extends BaseApi {
|
|
|
148
150
|
yield this.polling(batchProcess.id);
|
|
149
151
|
});
|
|
150
152
|
}
|
|
151
|
-
createContactsInSingleBatch(data
|
|
153
|
+
createContactsInSingleBatch(data) {
|
|
152
154
|
return __awaiter(this, void 0, void 0, function* () {
|
|
153
155
|
const s = performance.now();
|
|
154
156
|
const batchProcess = yield this.apiCall({
|
|
@@ -157,15 +159,12 @@ export default class ContactApi extends BaseApi {
|
|
|
157
159
|
data,
|
|
158
160
|
});
|
|
159
161
|
const batchProcessResult = yield this.polling(batchProcess.id);
|
|
160
|
-
if (repeats === 2) {
|
|
161
|
-
throw new Error('Can not complete contacts creation batch');
|
|
162
|
-
}
|
|
163
|
-
if (batchProcessResult.status === BatchProcessStatus.failed) {
|
|
164
|
-
return yield debouncePromise(() => this.createContactsInSingleBatch(data, repeats + 1), 10000);
|
|
165
|
-
}
|
|
166
162
|
const e = performance.now();
|
|
167
163
|
console.log('single batch time: ', (e - s) / 1000, 's');
|
|
168
|
-
return
|
|
164
|
+
return {
|
|
165
|
+
batchId: batchProcess.id,
|
|
166
|
+
contactsIds: batchProcessResult.results.flatMap(i => JSON.parse(i)),
|
|
167
|
+
};
|
|
169
168
|
});
|
|
170
169
|
}
|
|
171
170
|
createContactsInMultiBatches(contactsChunks, data) {
|
|
@@ -178,9 +177,17 @@ export default class ContactApi extends BaseApi {
|
|
|
178
177
|
const results = [];
|
|
179
178
|
for (let i = 0; i < batchPromises.length; i += promisesBatchSize) {
|
|
180
179
|
const s = performance.now();
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
180
|
+
try {
|
|
181
|
+
const chunk = batchPromises.slice(i, i + promisesBatchSize);
|
|
182
|
+
const chunkResults = yield Promise.all(chunk.map((p) => p()));
|
|
183
|
+
results.push(...chunkResults);
|
|
184
|
+
}
|
|
185
|
+
catch (e) {
|
|
186
|
+
if (e instanceof CreateContactsBatchError) {
|
|
187
|
+
e.processedBatchIds = results.map(({ batchId }) => batchId);
|
|
188
|
+
}
|
|
189
|
+
throw e;
|
|
190
|
+
}
|
|
184
191
|
const e = performance.now();
|
|
185
192
|
console.log('awaiting ', promisesBatchSize, ' batches: ', (e - s) / 1000, 's');
|
|
186
193
|
}
|
|
@@ -189,19 +196,22 @@ export default class ContactApi extends BaseApi {
|
|
|
189
196
|
}
|
|
190
197
|
polling(batchId, repeats = 0) {
|
|
191
198
|
return __awaiter(this, void 0, void 0, function* () {
|
|
192
|
-
let
|
|
199
|
+
let batchProcess;
|
|
193
200
|
try {
|
|
194
|
-
|
|
201
|
+
batchProcess = yield debouncePromise(() => this.batchProcessApi.getBatchProcess(batchId), 1000);
|
|
195
202
|
}
|
|
196
203
|
catch (e) {
|
|
197
204
|
if (repeats < FAILED_REQUEST_REPEATS) {
|
|
198
205
|
return this.polling(batchId, repeats + 1);
|
|
199
206
|
}
|
|
200
|
-
throw e;
|
|
207
|
+
throw new CreateContactsBatchError(e.message, batchId);
|
|
208
|
+
}
|
|
209
|
+
if (batchProcess.status === BatchProcessStatus.failed) {
|
|
210
|
+
throw new CreateContactsBatchError('Could not complete batch process', batchId, batchProcess.messages);
|
|
201
211
|
}
|
|
202
|
-
return
|
|
212
|
+
return batchProcess.status === BatchProcessStatus.pending
|
|
203
213
|
? this.polling(batchId)
|
|
204
|
-
:
|
|
214
|
+
: batchProcess;
|
|
205
215
|
});
|
|
206
216
|
}
|
|
207
217
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contactApi.js","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAEL,kBAAkB,GAenB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEpF,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"contactApi.js","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/apiError.js
CHANGED
|
@@ -6,4 +6,12 @@ export class ApiError extends Error {
|
|
|
6
6
|
this.translationKey = translationKey;
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
+
export class CreateContactsBatchError extends Error {
|
|
10
|
+
constructor(message, failedBatchId, batchMessages, processedBatchIds) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.failedBatchId = failedBatchId;
|
|
13
|
+
this.batchMessages = batchMessages;
|
|
14
|
+
this.processedBatchIds = processedBatchIds;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
9
17
|
//# sourceMappingURL=apiError.js.map
|
package/dist/esm/apiError.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiError.js","sourceRoot":"","sources":["../../src/apiError.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,YACkB,UAAe,EAC/B,OAAe,EACC,KAAc,EACd,cAAuB;QAEvC,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,eAAU,GAAV,UAAU,CAAK;QAEf,UAAK,GAAL,KAAK,CAAS;QACd,mBAAc,GAAd,cAAc,CAAS;IAGzC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"apiError.js","sourceRoot":"","sources":["../../src/apiError.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,YACkB,UAAe,EAC/B,OAAe,EACC,KAAc,EACd,cAAuB;QAEvC,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,eAAU,GAAV,UAAU,CAAK;QAEf,UAAK,GAAL,KAAK,CAAS;QACd,mBAAc,GAAd,cAAc,CAAS;IAGzC,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjD,YACE,OAAe,EACC,aAAqB,EACrB,aAAwB,EACjC,iBAA4B;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,kBAAa,GAAb,aAAa,CAAQ;QACrB,kBAAa,GAAb,aAAa,CAAW;QACjC,sBAAiB,GAAjB,iBAAiB,CAAW;IAGrC,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contactApi.d.ts","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,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;AAEhD,OAAO,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"contactApi.d.ts","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,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;AAEhD,OAAO,EAAE,uBAAuB,EAA8B,MAAM,UAAU,CAAC;AAI/E,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;IAW5D,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA2BtE,eAAe,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA2BxF,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,kBAAkB;YASlB,2BAA2B;YAiB3B,4BAA4B;YAsC5B,OAAO;CAuBtB"}
|
package/dist/types/apiError.d.ts
CHANGED
|
@@ -4,4 +4,10 @@ export declare class ApiError extends Error {
|
|
|
4
4
|
readonly translationKey?: string | undefined;
|
|
5
5
|
constructor(statusCode: any, message: string, stack?: string | undefined, translationKey?: string | undefined);
|
|
6
6
|
}
|
|
7
|
+
export declare class CreateContactsBatchError extends Error {
|
|
8
|
+
readonly failedBatchId: string;
|
|
9
|
+
readonly batchMessages?: string[] | undefined;
|
|
10
|
+
processedBatchIds?: string[] | undefined;
|
|
11
|
+
constructor(message: string, failedBatchId: string, batchMessages?: string[] | undefined, processedBatchIds?: string[] | undefined);
|
|
12
|
+
}
|
|
7
13
|
//# sourceMappingURL=apiError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiError.d.ts","sourceRoot":"","sources":["../../src/apiError.ts"],"names":[],"mappings":"AAGA,qBAAa,QAAS,SAAQ,KAAK;aAEf,UAAU,EAAE,GAAG;aAEf,KAAK,CAAC;aACN,cAAc,CAAC;gBAHf,UAAU,EAAE,GAAG,EAC/B,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,oBAAQ,EACd,cAAc,CAAC,oBAAQ;CAI1C"}
|
|
1
|
+
{"version":3,"file":"apiError.d.ts","sourceRoot":"","sources":["../../src/apiError.ts"],"names":[],"mappings":"AAGA,qBAAa,QAAS,SAAQ,KAAK;aAEf,UAAU,EAAE,GAAG;aAEf,KAAK,CAAC;aACN,cAAc,CAAC;gBAHf,UAAU,EAAE,GAAG,EAC/B,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,oBAAQ,EACd,cAAc,CAAC,oBAAQ;CAI1C;AAED,qBAAa,wBAAyB,SAAQ,KAAK;aAG/B,aAAa,EAAE,MAAM;aACrB,aAAa,CAAC;IACvB,iBAAiB,CAAC;gBAHzB,OAAO,EAAE,MAAM,EACC,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,sBAAU,EACjC,iBAAiB,CAAC,sBAAU;CAItC"}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -13,6 +13,10 @@ export interface ContactBookParams extends AdaptedListParams<ContactBookParamsDt
|
|
|
13
13
|
orderProperty?: 'label' | 'created_at' | 'updated_at';
|
|
14
14
|
}
|
|
15
15
|
export declare type AdaptedListParams<T extends ListApiParams & OrderParams> = Omit<T, 'order' | 'skip' | 'take'> & Partial<PaginationOptions & OrderOptions>;
|
|
16
|
+
export declare type CreateContactsBatchResults = {
|
|
17
|
+
batchId: string;
|
|
18
|
+
contactsIds: string[];
|
|
19
|
+
};
|
|
16
20
|
export declare type InitCreateBatchResponse = {
|
|
17
21
|
totalChunks: number;
|
|
18
22
|
firstChunkSize: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACpH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC/D,cAAc,8BAA8B,CAAC;AAG7C,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE/E,oBAAY,cAAc,GAAG;IAI3B,KAAK,EAAE,KAAK,CAAC;IAIb,YAAY,CAAC,EAAE,MAAM,CAAC;IAItB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAGF,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB,CAAC,oBAAoB,CAAC;IAChF,aAAa,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC;CACvD;AAED,oBAAY,iBAAiB,CAAC,CAAC,SAAS,aAAa,GAAG,WAAW,IACjE,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,iBAAiB,GAAG,YAAY,CAAC,CAAC;AAEjF,oBAAY,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oBAAY,yBAAyB,GAAG;IACtC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACpH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC/D,cAAc,8BAA8B,CAAC;AAG7C,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE/E,oBAAY,cAAc,GAAG;IAI3B,KAAK,EAAE,KAAK,CAAC;IAIb,YAAY,CAAC,EAAE,MAAM,CAAC;IAItB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAGF,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB,CAAC,oBAAoB,CAAC;IAChF,aAAa,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC;CACvD;AAED,oBAAY,iBAAiB,CAAC,CAAC,SAAS,aAAa,GAAG,WAAW,IACjE,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,iBAAiB,GAAG,YAAY,CAAC,CAAC;AAEjF,oBAAY,0BAA0B,GAAE;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,oBAAY,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oBAAY,yBAAyB,GAAG;IACtC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC"}
|
package/package.json
CHANGED
package/src/api/contactApi.ts
CHANGED
|
@@ -20,8 +20,9 @@ import { CalApiParams, List } from '@or-sdk/base';
|
|
|
20
20
|
import { BaseApi } from './baseApi';
|
|
21
21
|
import BatchProcessApi from './batchProcessApi';
|
|
22
22
|
import { getObjectSizeInBytes, chunkArrByMaxSize, debouncePromise } from '../utils';
|
|
23
|
-
import { InitCreateBatchResponse } from '../types';
|
|
23
|
+
import { InitCreateBatchResponse, CreateContactsBatchResults } from '../types';
|
|
24
24
|
import { REQUEST_PAYLOAD_MAX_BYTES, FAILED_REQUEST_REPEATS, CONTACTS_DELETE_MAX_AMOUNT } from '../constants';
|
|
25
|
+
import { CreateContactsBatchError } from '../apiError';
|
|
25
26
|
|
|
26
27
|
export default class ContactApi extends BaseApi {
|
|
27
28
|
constructor(
|
|
@@ -123,10 +124,11 @@ export default class ContactApi extends BaseApi {
|
|
|
123
124
|
const contactsChunks = chunkArrByMaxSize(contacts, contactsMaxSize);
|
|
124
125
|
// eslint-disable-next-line no-console
|
|
125
126
|
console.log('chunks: ', contactsChunks.length);
|
|
127
|
+
const results = contactsChunks.length === 1
|
|
128
|
+
? [await this.createContactsInSingleBatch(data)]
|
|
129
|
+
: await this.createContactsInMultiBatches(contactsChunks, rest);
|
|
126
130
|
|
|
127
|
-
return
|
|
128
|
-
? this.createContactsInSingleBatch(data)
|
|
129
|
-
: this.createContactsInMultiBatches(contactsChunks, rest);
|
|
131
|
+
return results.reduce<string[]>((acc, { contactsIds }) => ([...acc, ...contactsIds]), []);
|
|
130
132
|
}
|
|
131
133
|
|
|
132
134
|
/**
|
|
@@ -235,7 +237,7 @@ export default class ContactApi extends BaseApi {
|
|
|
235
237
|
await this.polling(batchProcess.id);
|
|
236
238
|
}
|
|
237
239
|
|
|
238
|
-
private async createContactsInSingleBatch(data: CreateMultipleContactsDto
|
|
240
|
+
private async createContactsInSingleBatch(data: CreateMultipleContactsDto): Promise<CreateContactsBatchResults> {
|
|
239
241
|
const s = performance.now();
|
|
240
242
|
const batchProcess = await this.apiCall<BatchProcessResponseDto>({
|
|
241
243
|
method: 'POST',
|
|
@@ -243,22 +245,19 @@ export default class ContactApi extends BaseApi {
|
|
|
243
245
|
data,
|
|
244
246
|
});
|
|
245
247
|
const batchProcessResult = await this.polling(batchProcess.id);
|
|
246
|
-
if (repeats === 2) {
|
|
247
|
-
throw new Error('Can not complete contacts creation batch');
|
|
248
|
-
}
|
|
249
|
-
if (batchProcessResult.status === BatchProcessStatus.failed) {
|
|
250
|
-
return await debouncePromise(() => this.createContactsInSingleBatch(data, repeats + 1), 10000);
|
|
251
|
-
}
|
|
252
248
|
const e = performance.now();
|
|
253
249
|
// eslint-disable-next-line no-console
|
|
254
250
|
console.log('single batch time: ', (e - s) / 1000, 's');
|
|
255
|
-
return
|
|
251
|
+
return {
|
|
252
|
+
batchId: batchProcess.id,
|
|
253
|
+
contactsIds: batchProcessResult.results.flatMap<string>(i => JSON.parse(i)),
|
|
254
|
+
};
|
|
256
255
|
}
|
|
257
256
|
|
|
258
257
|
private async createContactsInMultiBatches(
|
|
259
258
|
contactsChunks: ContactRequestDto[][],
|
|
260
259
|
data: Omit<CreateMultipleContactsDto, 'contacts'>
|
|
261
|
-
): Promise<
|
|
260
|
+
): Promise<CreateContactsBatchResults[]> {
|
|
262
261
|
const batchPromises = contactsChunks
|
|
263
262
|
.map((chunkContacts) => async () => this.createContactsInSingleBatch({
|
|
264
263
|
contacts: chunkContacts,
|
|
@@ -266,13 +265,22 @@ export default class ContactApi extends BaseApi {
|
|
|
266
265
|
}));
|
|
267
266
|
|
|
268
267
|
const promisesBatchSize = 2;
|
|
269
|
-
const results:
|
|
268
|
+
const results: CreateContactsBatchResults[] = [];
|
|
270
269
|
|
|
271
270
|
for (let i = 0;i < batchPromises.length;i += promisesBatchSize) {
|
|
272
271
|
const s = performance.now();
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
272
|
+
try {
|
|
273
|
+
const chunk = batchPromises.slice(i, i + promisesBatchSize);
|
|
274
|
+
const chunkResults = await Promise.all(chunk.map((p) => p()));
|
|
275
|
+
// results.push(...chunkResults.reduce((acc, r) => ([...acc, ...r]), []));
|
|
276
|
+
results.push(...chunkResults);
|
|
277
|
+
} catch (e) {
|
|
278
|
+
if (e instanceof CreateContactsBatchError) {
|
|
279
|
+
e.processedBatchIds = results.map(({ batchId }) => batchId);
|
|
280
|
+
}
|
|
281
|
+
throw e;
|
|
282
|
+
}
|
|
283
|
+
|
|
276
284
|
const e = performance.now();
|
|
277
285
|
// eslint-disable-next-line no-console
|
|
278
286
|
console.log('awaiting ', promisesBatchSize, ' batches: ', (e - s) / 1000, 's');
|
|
@@ -285,18 +293,26 @@ export default class ContactApi extends BaseApi {
|
|
|
285
293
|
* Pols specific batch process until status of it isn't turned from 'pending to something else.
|
|
286
294
|
*/
|
|
287
295
|
private async polling(batchId: string, repeats = 0): Promise<BatchProcessResponseDto> {
|
|
288
|
-
let
|
|
296
|
+
let batchProcess: BatchProcessResponseDto;
|
|
289
297
|
try {
|
|
290
|
-
|
|
298
|
+
batchProcess = await debouncePromise(() => this.batchProcessApi.getBatchProcess(batchId), 1000);
|
|
291
299
|
} catch (e) {
|
|
292
300
|
if (repeats < FAILED_REQUEST_REPEATS) {
|
|
293
301
|
return this.polling(batchId, repeats + 1);
|
|
294
302
|
}
|
|
295
|
-
throw e;
|
|
303
|
+
throw new CreateContactsBatchError((e as unknown as Error).message, batchId);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
if (batchProcess.status === BatchProcessStatus.failed) {
|
|
307
|
+
throw new CreateContactsBatchError(
|
|
308
|
+
'Could not complete batch process',
|
|
309
|
+
batchId,
|
|
310
|
+
batchProcess.messages
|
|
311
|
+
);
|
|
296
312
|
}
|
|
297
313
|
|
|
298
|
-
return
|
|
314
|
+
return batchProcess.status === BatchProcessStatus.pending
|
|
299
315
|
? this.polling(batchId)
|
|
300
|
-
:
|
|
316
|
+
: batchProcess;
|
|
301
317
|
}
|
|
302
318
|
}
|
package/src/apiError.ts
CHANGED
|
@@ -11,3 +11,14 @@ export class ApiError extends Error {
|
|
|
11
11
|
super(message);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
+
|
|
15
|
+
export class CreateContactsBatchError extends Error {
|
|
16
|
+
constructor(
|
|
17
|
+
message: string,
|
|
18
|
+
public readonly failedBatchId: string,
|
|
19
|
+
public readonly batchMessages?: string[],
|
|
20
|
+
public processedBatchIds?: string[],
|
|
21
|
+
) {
|
|
22
|
+
super(message);
|
|
23
|
+
}
|
|
24
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -31,6 +31,11 @@ export interface ContactBookParams extends AdaptedListParams<ContactBookParamsDt
|
|
|
31
31
|
export type AdaptedListParams<T extends ListApiParams & OrderParams> =
|
|
32
32
|
Omit<T, 'order' | 'skip' | 'take'> & Partial<PaginationOptions & OrderOptions>;
|
|
33
33
|
|
|
34
|
+
export type CreateContactsBatchResults ={
|
|
35
|
+
batchId: string;
|
|
36
|
+
contactsIds: string[];
|
|
37
|
+
};
|
|
38
|
+
|
|
34
39
|
export type InitCreateBatchResponse = {
|
|
35
40
|
totalChunks: number;
|
|
36
41
|
firstChunkSize: number;
|