@or-sdk/contacts 3.2.2-beta.1752.0 → 3.2.2-beta.1754.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/batchProcessApi.js +76 -0
- package/dist/cjs/api/batchProcessApi.js.map +1 -1
- package/dist/cjs/api/contactApi.js +76 -19
- package/dist/cjs/api/contactApi.js.map +1 -1
- package/dist/cjs/constants.js +1 -1
- package/dist/cjs/utils.js +11 -1
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/api/batchProcessApi.js +31 -0
- package/dist/esm/api/batchProcessApi.js.map +1 -1
- package/dist/esm/api/contactApi.js +45 -9
- package/dist/esm/api/contactApi.js.map +1 -1
- package/dist/esm/constants.js +1 -1
- package/dist/esm/utils.js +9 -0
- package/dist/esm/utils.js.map +1 -1
- package/dist/types/api/batchProcessApi.d.ts +4 -1
- package/dist/types/api/batchProcessApi.d.ts.map +1 -1
- package/dist/types/api/contactApi.d.ts +2 -0
- package/dist/types/api/contactApi.d.ts.map +1 -1
- package/dist/types/constants.d.ts +1 -1
- package/dist/types/types.d.ts +11 -1
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils.d.ts +1 -0
- package/dist/types/utils.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/api/batchProcessApi.ts +41 -3
- package/src/api/contactApi.ts +71 -13
- package/src/constants.ts +1 -1
- package/src/types.ts +13 -1
- package/src/utils.ts +16 -0
|
@@ -14,8 +14,56 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
14
14
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
15
|
};
|
|
16
16
|
})();
|
|
17
|
+
var __assign = (this && this.__assign) || function () {
|
|
18
|
+
__assign = Object.assign || function(t) {
|
|
19
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
+
s = arguments[i];
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
29
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
30
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
31
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
32
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
33
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
34
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
38
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
39
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
40
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
41
|
+
function step(op) {
|
|
42
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
43
|
+
while (_) try {
|
|
44
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
45
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
46
|
+
switch (op[0]) {
|
|
47
|
+
case 0: case 1: t = op; break;
|
|
48
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
49
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
50
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
51
|
+
default:
|
|
52
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
53
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
54
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
55
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
56
|
+
if (t[2]) _.ops.pop();
|
|
57
|
+
_.trys.pop(); continue;
|
|
58
|
+
}
|
|
59
|
+
op = body.call(thisArg, _);
|
|
60
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
61
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
62
|
+
}
|
|
63
|
+
};
|
|
17
64
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
65
|
var baseApi_1 = require("./baseApi");
|
|
66
|
+
var types_contacts_api_1 = require("@onereach/types-contacts-api");
|
|
19
67
|
var BatchProcessApi = (function (_super) {
|
|
20
68
|
__extends(BatchProcessApi, _super);
|
|
21
69
|
function BatchProcessApi() {
|
|
@@ -29,6 +77,34 @@ var BatchProcessApi = (function (_super) {
|
|
|
29
77
|
route: "".concat(this.apiBasePath, "/").concat(id),
|
|
30
78
|
});
|
|
31
79
|
};
|
|
80
|
+
BatchProcessApi.prototype.getPendingBatchProcesses = function () {
|
|
81
|
+
return this.apiCall({
|
|
82
|
+
method: 'GET',
|
|
83
|
+
route: "".concat(this.apiBasePath, "/pending-batches"),
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
BatchProcessApi.prototype.trackBatchProcess = function (id) {
|
|
87
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
88
|
+
var batchProcess, result;
|
|
89
|
+
return __generator(this, function (_a) {
|
|
90
|
+
switch (_a.label) {
|
|
91
|
+
case 0: return [4, this.getBatchProcess(id)];
|
|
92
|
+
case 1:
|
|
93
|
+
batchProcess = _a.sent();
|
|
94
|
+
result = {
|
|
95
|
+
status: batchProcess.status,
|
|
96
|
+
};
|
|
97
|
+
if (batchProcess.status === types_contacts_api_1.BatchProcessStatus.success) {
|
|
98
|
+
result = __assign(__assign({}, result), { contactsIds: batchProcess.results.flatMap(function (i) { return JSON.parse(i); }) });
|
|
99
|
+
}
|
|
100
|
+
if (batchProcess.status === types_contacts_api_1.BatchProcessStatus.failed) {
|
|
101
|
+
result = __assign(__assign({}, result), { errors: batchProcess.messages });
|
|
102
|
+
}
|
|
103
|
+
return [2, result];
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
};
|
|
32
108
|
return BatchProcessApi;
|
|
33
109
|
}(baseApi_1.BaseApi));
|
|
34
110
|
exports.default = BatchProcessApi;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batchProcessApi.js","sourceRoot":"","sources":["../../../src/api/batchProcessApi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"batchProcessApi.js","sourceRoot":"","sources":["../../../src/api/batchProcessApi.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,qCAAoC;AAEpC,mEAAsH;AAEtH;IAA6C,mCAAO;IAApD;QAAA,qEAgDC;QA/CkB,iBAAW,GAAG,eAAe,CAAC;;IA+CjD,CAAC;IA7CC,yCAAe,GAAf,UAAgB,EAAU;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,UAAG,IAAI,CAAC,WAAW,cAAI,EAAE,CAAE;SACnC,CAAC,CAAC;IACL,CAAC;IAKD,kDAAwB,GAAxB;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,UAAG,IAAI,CAAC,WAAW,qBAAkB;SAC7C,CAAC,CAAC;IACL,CAAC;IAMK,2CAAiB,GAAvB,UAAwB,EAAU;;;;;4BACX,WAAM,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAA;;wBAA7C,YAAY,GAAG,SAA8B;wBAE/C,MAAM,GAA8B;4BACtC,MAAM,EAAE,YAAY,CAAC,MAAM;yBAC5B,CAAC;wBAEF,IAAI,YAAY,CAAC,MAAM,KAAK,uCAAkB,CAAC,OAAO,EAAE;4BACtD,MAAM,yBACD,MAAM,KACT,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAS,UAAA,CAAC,IAAI,OAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAb,CAAa,CAAC,GACtE,CAAC;yBACH;wBAED,IAAI,YAAY,CAAC,MAAM,KAAK,uCAAkB,CAAC,MAAM,EAAE;4BACrD,MAAM,yBACD,MAAM,KACT,MAAM,EAAE,YAAY,CAAC,QAAQ,GAC9B,CAAC;yBACH;wBAED,WAAO,MAAM,EAAC;;;;KACf;IAEH,sBAAC;AAAD,CAAC,AAhDD,CAA6C,iBAAO,GAgDnD"}
|
|
@@ -72,7 +72,17 @@ 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
|
+
};
|
|
75
84
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
85
|
+
var types_contacts_api_1 = require("@onereach/types-contacts-api");
|
|
76
86
|
var baseApi_1 = require("./baseApi");
|
|
77
87
|
var utils_1 = require("../utils");
|
|
78
88
|
var constants_1 = require("../constants");
|
|
@@ -135,16 +145,42 @@ var ContactApi = (function (_super) {
|
|
|
135
145
|
return __awaiter(this, void 0, void 0, function () {
|
|
136
146
|
var contacts, rest, contactsMaxSize, contactsChunks;
|
|
137
147
|
return __generator(this, function (_a) {
|
|
138
|
-
console.log(data);
|
|
148
|
+
console.log('contacts: ', data.contacts.length);
|
|
139
149
|
contacts = data.contacts, rest = __rest(data, ["contacts"]);
|
|
140
150
|
contactsMaxSize = constants_1.REQUEST_PAYLOAD_MAX_BYTES - (0, utils_1.getObjectSizeInBytes)(__assign({}, rest));
|
|
141
151
|
contactsChunks = (0, utils_1.chunkArrByMaxSize)(contacts, contactsMaxSize);
|
|
152
|
+
console.log('chunks: ', contactsChunks.length);
|
|
142
153
|
return [2, contactsChunks.length === 1
|
|
143
154
|
? this.createContactsInSingleBatch(data)
|
|
144
155
|
: this.createContactsInMultiBatches(contactsChunks, rest)];
|
|
145
156
|
});
|
|
146
157
|
});
|
|
147
158
|
};
|
|
159
|
+
ContactApi.prototype.initCreateBatch = function (data) {
|
|
160
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
161
|
+
var contacts, rest, contactsMaxSize, contactsChunks, batchProcess;
|
|
162
|
+
return __generator(this, function (_a) {
|
|
163
|
+
switch (_a.label) {
|
|
164
|
+
case 0:
|
|
165
|
+
contacts = data.contacts, rest = __rest(data, ["contacts"]);
|
|
166
|
+
contactsMaxSize = constants_1.REQUEST_PAYLOAD_MAX_BYTES - (0, utils_1.getObjectSizeInBytes)(__assign({}, rest));
|
|
167
|
+
contactsChunks = (0, utils_1.chunkArrByMaxSize)(contacts, contactsMaxSize);
|
|
168
|
+
return [4, this.apiCall({
|
|
169
|
+
method: 'POST',
|
|
170
|
+
route: "".concat(this.apiBasePath, "/bulk"),
|
|
171
|
+
data: __assign({ contacts: contactsChunks[0] }, rest),
|
|
172
|
+
})];
|
|
173
|
+
case 1:
|
|
174
|
+
batchProcess = _a.sent();
|
|
175
|
+
return [2, {
|
|
176
|
+
totalChunks: contactsChunks.length,
|
|
177
|
+
firstChunkSize: contactsChunks[0].length,
|
|
178
|
+
batchId: batchProcess.id,
|
|
179
|
+
}];
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
};
|
|
148
184
|
ContactApi.prototype.mergeContacts = function (id, data) {
|
|
149
185
|
return this.apiCall({
|
|
150
186
|
method: 'POST',
|
|
@@ -200,21 +236,34 @@ var ContactApi = (function (_super) {
|
|
|
200
236
|
});
|
|
201
237
|
});
|
|
202
238
|
};
|
|
203
|
-
ContactApi.prototype.createContactsInSingleBatch = function (data) {
|
|
239
|
+
ContactApi.prototype.createContactsInSingleBatch = function (data, repeats) {
|
|
240
|
+
if (repeats === void 0) { repeats = 0; }
|
|
204
241
|
return __awaiter(this, void 0, void 0, function () {
|
|
205
|
-
var batchProcess, batchProcessResult;
|
|
242
|
+
var s, batchProcess, batchProcessResult, e;
|
|
243
|
+
var _this = this;
|
|
206
244
|
return __generator(this, function (_a) {
|
|
207
245
|
switch (_a.label) {
|
|
208
|
-
case 0:
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
246
|
+
case 0:
|
|
247
|
+
s = performance.now();
|
|
248
|
+
return [4, this.apiCall({
|
|
249
|
+
method: 'POST',
|
|
250
|
+
route: "".concat(this.apiBasePath, "/bulk"),
|
|
251
|
+
data: data,
|
|
252
|
+
})];
|
|
213
253
|
case 1:
|
|
214
254
|
batchProcess = _a.sent();
|
|
215
255
|
return [4, this.polling(batchProcess.id)];
|
|
216
256
|
case 2:
|
|
217
257
|
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
|
+
e = performance.now();
|
|
266
|
+
console.log('single batch time: ', (e - s) / 1000, 's');
|
|
218
267
|
return [2, batchProcessResult.results.flatMap(function (i) { return JSON.parse(i); })];
|
|
219
268
|
}
|
|
220
269
|
});
|
|
@@ -222,29 +271,34 @@ var ContactApi = (function (_super) {
|
|
|
222
271
|
};
|
|
223
272
|
ContactApi.prototype.createContactsInMultiBatches = function (contactsChunks, data) {
|
|
224
273
|
return __awaiter(this, void 0, void 0, function () {
|
|
225
|
-
var batchPromises, results,
|
|
274
|
+
var batchPromises, promisesBatchSize, results, i, s, chunk, chunkResults, e;
|
|
226
275
|
var _this = this;
|
|
227
276
|
return __generator(this, function (_a) {
|
|
228
277
|
switch (_a.label) {
|
|
229
278
|
case 0:
|
|
230
|
-
batchPromises = contactsChunks
|
|
279
|
+
batchPromises = contactsChunks
|
|
280
|
+
.map(function (chunkContacts) { return function () { return __awaiter(_this, void 0, void 0, function () {
|
|
231
281
|
return __generator(this, function (_a) {
|
|
232
282
|
return [2, this.createContactsInSingleBatch(__assign({ contacts: chunkContacts }, data))];
|
|
233
283
|
});
|
|
234
284
|
}); }; });
|
|
285
|
+
promisesBatchSize = 2;
|
|
235
286
|
results = [];
|
|
236
|
-
|
|
287
|
+
i = 0;
|
|
237
288
|
_a.label = 1;
|
|
238
289
|
case 1:
|
|
239
|
-
if (!(
|
|
240
|
-
|
|
241
|
-
|
|
290
|
+
if (!(i < batchPromises.length)) return [3, 4];
|
|
291
|
+
s = performance.now();
|
|
292
|
+
chunk = batchPromises.slice(i, i + promisesBatchSize);
|
|
293
|
+
return [4, Promise.all(chunk.map(function (p) { return p(); }))];
|
|
242
294
|
case 2:
|
|
243
|
-
|
|
244
|
-
results.push.apply(results,
|
|
295
|
+
chunkResults = _a.sent();
|
|
296
|
+
results.push.apply(results, chunkResults.reduce(function (acc, r) { return (__spreadArray(__spreadArray([], acc, true), r, true)); }, []));
|
|
297
|
+
e = performance.now();
|
|
298
|
+
console.log('awaiting ', promisesBatchSize, ' batches: ', (e - s) / 1000, 's');
|
|
245
299
|
_a.label = 3;
|
|
246
300
|
case 3:
|
|
247
|
-
|
|
301
|
+
i += promisesBatchSize;
|
|
248
302
|
return [3, 1];
|
|
249
303
|
case 4: return [2, results];
|
|
250
304
|
}
|
|
@@ -255,11 +309,12 @@ var ContactApi = (function (_super) {
|
|
|
255
309
|
if (repeats === void 0) { repeats = 0; }
|
|
256
310
|
return __awaiter(this, void 0, void 0, function () {
|
|
257
311
|
var batchProcessState, e_1;
|
|
312
|
+
var _this = this;
|
|
258
313
|
return __generator(this, function (_a) {
|
|
259
314
|
switch (_a.label) {
|
|
260
315
|
case 0:
|
|
261
316
|
_a.trys.push([0, 2, , 3]);
|
|
262
|
-
return [4,
|
|
317
|
+
return [4, (0, utils_1.debouncePromise)(function () { return _this.batchProcessApi.getBatchProcess(batchId); }, 1000)];
|
|
263
318
|
case 1:
|
|
264
319
|
batchProcessState = _a.sent();
|
|
265
320
|
return [3, 3];
|
|
@@ -269,7 +324,9 @@ var ContactApi = (function (_super) {
|
|
|
269
324
|
return [2, this.polling(batchId, repeats + 1)];
|
|
270
325
|
}
|
|
271
326
|
throw e_1;
|
|
272
|
-
case 3: return [2, batchProcessState.status ===
|
|
327
|
+
case 3: return [2, batchProcessState.status === types_contacts_api_1.BatchProcessStatus.pending
|
|
328
|
+
? this.polling(batchId)
|
|
329
|
+
: batchProcessState];
|
|
273
330
|
}
|
|
274
331
|
});
|
|
275
332
|
});
|
|
@@ -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/constants.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CONTACTS_DELETE_MAX_AMOUNT = exports.FAILED_REQUEST_REPEATS = exports.REQUEST_PAYLOAD_MAX_BYTES = exports.CONTACTS_SERVICE_KEY = void 0;
|
|
4
4
|
exports.CONTACTS_SERVICE_KEY = 'contacts-api';
|
|
5
|
-
exports.REQUEST_PAYLOAD_MAX_BYTES =
|
|
5
|
+
exports.REQUEST_PAYLOAD_MAX_BYTES = 200000;
|
|
6
6
|
exports.FAILED_REQUEST_REPEATS = 3;
|
|
7
7
|
exports.CONTACTS_DELETE_MAX_AMOUNT = 5;
|
|
8
8
|
//# sourceMappingURL=constants.js.map
|
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.chunkArrByMaxSize = exports.getObjectSizeInBytes = exports.adaptListParams = void 0;
|
|
23
|
+
exports.debouncePromise = 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,4 +49,14 @@ 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;
|
|
52
62
|
//# 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;AAEF,SAAgB,eAAe,CAC7B,MAAwB,EACxB,KAAa,EACb,MAAqD;IAErD,IAAI,OAAO,GAA0B,IAAI,CAAC;IAE1C,OAAO,IAAI,OAAO,CAAI,UAAC,GAAG;QACxB,IAAI,OAAO,EAAE;YACX,YAAY,CAAC,OAAO,CAAC,CAAC;SACvB;QACD,OAAO,GAAG,UAAU,CAAC,cAAM,OAAA,MAAM,EAAE,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,GAAG,CAAC,CAAC,CAAC,EAAN,CAAM,CAAC,CAAC,KAAK,CAAC,UAAC,GAAG,IAAK,OAAA,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,EAArB,CAAqB,CAAC,EAAlE,CAAkE,EAAE,KAAK,CAAC,CAAC;IACxG,CAAC,CAAC,CAAC;AACL,CAAC;AAbD,0CAaC"}
|
|
@@ -1,4 +1,14 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
1
10
|
import { BaseApi } from './baseApi';
|
|
11
|
+
import { BatchProcessStatus } from '@onereach/types-contacts-api';
|
|
2
12
|
export default class BatchProcessApi extends BaseApi {
|
|
3
13
|
constructor() {
|
|
4
14
|
super(...arguments);
|
|
@@ -10,5 +20,26 @@ export default class BatchProcessApi extends BaseApi {
|
|
|
10
20
|
route: `${this.apiBasePath}/${id}`,
|
|
11
21
|
});
|
|
12
22
|
}
|
|
23
|
+
getPendingBatchProcesses() {
|
|
24
|
+
return this.apiCall({
|
|
25
|
+
method: 'GET',
|
|
26
|
+
route: `${this.apiBasePath}/pending-batches`,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
trackBatchProcess(id) {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
const batchProcess = yield this.getBatchProcess(id);
|
|
32
|
+
let result = {
|
|
33
|
+
status: batchProcess.status,
|
|
34
|
+
};
|
|
35
|
+
if (batchProcess.status === BatchProcessStatus.success) {
|
|
36
|
+
result = Object.assign(Object.assign({}, result), { contactsIds: batchProcess.results.flatMap(i => JSON.parse(i)) });
|
|
37
|
+
}
|
|
38
|
+
if (batchProcess.status === BatchProcessStatus.failed) {
|
|
39
|
+
result = Object.assign(Object.assign({}, result), { errors: batchProcess.messages });
|
|
40
|
+
}
|
|
41
|
+
return result;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
13
44
|
}
|
|
14
45
|
//# sourceMappingURL=batchProcessApi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batchProcessApi.js","sourceRoot":"","sources":["../../../src/api/batchProcessApi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"batchProcessApi.js","sourceRoot":"","sources":["../../../src/api/batchProcessApi.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAA2B,kBAAkB,EAA6B,MAAM,8BAA8B,CAAC;AAEtH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAApD;;QACmB,gBAAW,GAAG,eAAe,CAAC;IA+CjD,CAAC;IA7CC,eAAe,CAAC,EAAU;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE;SACnC,CAAC,CAAC;IACL,CAAC;IAKD,wBAAwB;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,kBAAkB;SAC7C,CAAC,CAAC;IACL,CAAC;IAMK,iBAAiB,CAAC,EAAU;;YAChC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAEpD,IAAI,MAAM,GAA8B;gBACtC,MAAM,EAAE,YAAY,CAAC,MAAM;aAC5B,CAAC;YAEF,IAAI,YAAY,CAAC,MAAM,KAAK,kBAAkB,CAAC,OAAO,EAAE;gBACtD,MAAM,mCACD,MAAM,KACT,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GACtE,CAAC;aACH;YAED,IAAI,YAAY,CAAC,MAAM,KAAK,kBAAkB,CAAC,MAAM,EAAE;gBACrD,MAAM,mCACD,MAAM,KACT,MAAM,EAAE,YAAY,CAAC,QAAQ,GAC9B,CAAC;aACH;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;CAEF"}
|
|
@@ -18,8 +18,9 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
18
18
|
}
|
|
19
19
|
return t;
|
|
20
20
|
};
|
|
21
|
+
import { BatchProcessStatus, } from '@onereach/types-contacts-api';
|
|
21
22
|
import { BaseApi } from './baseApi';
|
|
22
|
-
import { getObjectSizeInBytes, chunkArrByMaxSize } from '../utils';
|
|
23
|
+
import { getObjectSizeInBytes, chunkArrByMaxSize, debouncePromise } from '../utils';
|
|
23
24
|
import { REQUEST_PAYLOAD_MAX_BYTES, FAILED_REQUEST_REPEATS, CONTACTS_DELETE_MAX_AMOUNT } from '../constants';
|
|
24
25
|
export default class ContactApi extends BaseApi {
|
|
25
26
|
constructor(apiCall, batchProcessApi) {
|
|
@@ -75,15 +76,33 @@ export default class ContactApi extends BaseApi {
|
|
|
75
76
|
}
|
|
76
77
|
bulkCreateContacts(data) {
|
|
77
78
|
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
-
console.log(data);
|
|
79
|
+
console.log('contacts: ', data.contacts.length);
|
|
79
80
|
const { contacts } = data, rest = __rest(data, ["contacts"]);
|
|
80
81
|
const contactsMaxSize = REQUEST_PAYLOAD_MAX_BYTES - getObjectSizeInBytes(Object.assign({}, rest));
|
|
81
82
|
const contactsChunks = chunkArrByMaxSize(contacts, contactsMaxSize);
|
|
83
|
+
console.log('chunks: ', contactsChunks.length);
|
|
82
84
|
return contactsChunks.length === 1
|
|
83
85
|
? this.createContactsInSingleBatch(data)
|
|
84
86
|
: this.createContactsInMultiBatches(contactsChunks, rest);
|
|
85
87
|
});
|
|
86
88
|
}
|
|
89
|
+
initCreateBatch(data) {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
const { contacts } = data, rest = __rest(data, ["contacts"]);
|
|
92
|
+
const contactsMaxSize = REQUEST_PAYLOAD_MAX_BYTES - getObjectSizeInBytes(Object.assign({}, rest));
|
|
93
|
+
const contactsChunks = chunkArrByMaxSize(contacts, contactsMaxSize);
|
|
94
|
+
const batchProcess = yield this.apiCall({
|
|
95
|
+
method: 'POST',
|
|
96
|
+
route: `${this.apiBasePath}/bulk`,
|
|
97
|
+
data: Object.assign({ contacts: contactsChunks[0] }, rest),
|
|
98
|
+
});
|
|
99
|
+
return {
|
|
100
|
+
totalChunks: contactsChunks.length,
|
|
101
|
+
firstChunkSize: contactsChunks[0].length,
|
|
102
|
+
batchId: batchProcess.id,
|
|
103
|
+
};
|
|
104
|
+
});
|
|
105
|
+
}
|
|
87
106
|
mergeContacts(id, data) {
|
|
88
107
|
return this.apiCall({
|
|
89
108
|
method: 'POST',
|
|
@@ -129,26 +148,41 @@ export default class ContactApi extends BaseApi {
|
|
|
129
148
|
yield this.polling(batchProcess.id);
|
|
130
149
|
});
|
|
131
150
|
}
|
|
132
|
-
createContactsInSingleBatch(data) {
|
|
151
|
+
createContactsInSingleBatch(data, repeats = 0) {
|
|
133
152
|
return __awaiter(this, void 0, void 0, function* () {
|
|
153
|
+
const s = performance.now();
|
|
134
154
|
const batchProcess = yield this.apiCall({
|
|
135
155
|
method: 'POST',
|
|
136
156
|
route: `${this.apiBasePath}/bulk`,
|
|
137
157
|
data,
|
|
138
158
|
});
|
|
139
159
|
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
|
+
const e = performance.now();
|
|
167
|
+
console.log('single batch time: ', (e - s) / 1000, 's');
|
|
140
168
|
return batchProcessResult.results.flatMap(i => JSON.parse(i));
|
|
141
169
|
});
|
|
142
170
|
}
|
|
143
171
|
createContactsInMultiBatches(contactsChunks, data) {
|
|
144
172
|
return __awaiter(this, void 0, void 0, function* () {
|
|
145
|
-
const batchPromises = contactsChunks
|
|
173
|
+
const batchPromises = contactsChunks
|
|
174
|
+
.map((chunkContacts) => () => __awaiter(this, void 0, void 0, function* () {
|
|
146
175
|
return this.createContactsInSingleBatch(Object.assign({ contacts: chunkContacts }, data));
|
|
147
176
|
}));
|
|
177
|
+
const promisesBatchSize = 2;
|
|
148
178
|
const results = [];
|
|
149
|
-
for (
|
|
150
|
-
const
|
|
151
|
-
|
|
179
|
+
for (let i = 0; i < batchPromises.length; i += promisesBatchSize) {
|
|
180
|
+
const s = performance.now();
|
|
181
|
+
const chunk = batchPromises.slice(i, i + promisesBatchSize);
|
|
182
|
+
const chunkResults = yield Promise.all(chunk.map((p) => p()));
|
|
183
|
+
results.push(...chunkResults.reduce((acc, r) => ([...acc, ...r]), []));
|
|
184
|
+
const e = performance.now();
|
|
185
|
+
console.log('awaiting ', promisesBatchSize, ' batches: ', (e - s) / 1000, 's');
|
|
152
186
|
}
|
|
153
187
|
return results;
|
|
154
188
|
});
|
|
@@ -157,7 +191,7 @@ export default class ContactApi extends BaseApi {
|
|
|
157
191
|
return __awaiter(this, void 0, void 0, function* () {
|
|
158
192
|
let batchProcessState;
|
|
159
193
|
try {
|
|
160
|
-
batchProcessState = yield this.batchProcessApi.getBatchProcess(batchId);
|
|
194
|
+
batchProcessState = yield debouncePromise(() => this.batchProcessApi.getBatchProcess(batchId), 1000);
|
|
161
195
|
}
|
|
162
196
|
catch (e) {
|
|
163
197
|
if (repeats < FAILED_REQUEST_REPEATS) {
|
|
@@ -165,7 +199,9 @@ export default class ContactApi extends BaseApi {
|
|
|
165
199
|
}
|
|
166
200
|
throw e;
|
|
167
201
|
}
|
|
168
|
-
return batchProcessState.status ===
|
|
202
|
+
return batchProcessState.status === BatchProcessStatus.pending
|
|
203
|
+
? this.polling(batchId)
|
|
204
|
+
: batchProcessState;
|
|
169
205
|
});
|
|
170
206
|
}
|
|
171
207
|
}
|
|
@@ -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/constants.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export const CONTACTS_SERVICE_KEY = 'contacts-api';
|
|
2
|
-
export const REQUEST_PAYLOAD_MAX_BYTES =
|
|
2
|
+
export const REQUEST_PAYLOAD_MAX_BYTES = 200000;
|
|
3
3
|
export const FAILED_REQUEST_REPEATS = 3;
|
|
4
4
|
export const CONTACTS_DELETE_MAX_AMOUNT = 5;
|
|
5
5
|
//# sourceMappingURL=constants.js.map
|
package/dist/esm/utils.js
CHANGED
|
@@ -26,4 +26,13 @@ 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
|
+
}
|
|
29
38
|
//# 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;AAEF,MAAM,UAAU,eAAe,CAC7B,MAAwB,EACxB,KAAa,EACb,MAAqD;IAErD,IAAI,OAAO,GAA0B,IAAI,CAAC;IAE1C,OAAO,IAAI,OAAO,CAAI,CAAC,GAAG,EAAE,EAAE;QAC5B,IAAI,OAAO,EAAE;YACX,YAAY,CAAC,OAAO,CAAC,CAAC;SACvB;QACD,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxG,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { TrackBatchProcessResponse } from '../types';
|
|
1
2
|
import { BaseApi } from './baseApi';
|
|
2
|
-
import { BatchProcessResponseDto } from '@onereach/types-contacts-api';
|
|
3
|
+
import { BatchProcessResponseDto, PendingBatchesResponseDto } from '@onereach/types-contacts-api';
|
|
3
4
|
export default class BatchProcessApi extends BaseApi {
|
|
4
5
|
private readonly apiBasePath;
|
|
5
6
|
getBatchProcess(id: string): Promise<BatchProcessResponseDto>;
|
|
7
|
+
getPendingBatchProcesses(): Promise<PendingBatchesResponseDto>;
|
|
8
|
+
trackBatchProcess(id: string): Promise<TrackBatchProcessResponse>;
|
|
6
9
|
}
|
|
7
10
|
//# sourceMappingURL=batchProcessApi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batchProcessApi.d.ts","sourceRoot":"","sources":["../../../src/api/batchProcessApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,
|
|
1
|
+
{"version":3,"file":"batchProcessApi.d.ts","sourceRoot":"","sources":["../../../src/api/batchProcessApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,uBAAuB,EAAsB,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAEtH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;IAE/C,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAU7D,wBAAwB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAWxD,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;CAwBxE"}
|
|
@@ -2,6 +2,7 @@ import { ContactParamsDto, ContactResponseDto, CreateContactDto, CreateMultipleC
|
|
|
2
2
|
import { CalApiParams, List } from '@or-sdk/base';
|
|
3
3
|
import { BaseApi } from './baseApi';
|
|
4
4
|
import BatchProcessApi from './batchProcessApi';
|
|
5
|
+
import { InitCreateBatchResponse } from '../types';
|
|
5
6
|
export default class ContactApi extends BaseApi {
|
|
6
7
|
protected readonly apiCall: <T>(params: CalApiParams) => Promise<T>;
|
|
7
8
|
private batchProcessApi;
|
|
@@ -14,6 +15,7 @@ export default class ContactApi extends BaseApi {
|
|
|
14
15
|
deleteMulti(data: DeleteContactMultiParamsDto): Promise<void>;
|
|
15
16
|
createContact(data: CreateContactDto): Promise<ContactResponseDto>;
|
|
16
17
|
bulkCreateContacts(data: CreateMultipleContactsDto): Promise<string[]>;
|
|
18
|
+
initCreateBatch(data: CreateMultipleContactsDto): Promise<InitCreateBatchResponse>;
|
|
17
19
|
mergeContacts(id: string, data: MergeContactParamsDto): Promise<ContactResponseDto>;
|
|
18
20
|
linkContact(id: string, data: LinkContactParamsDto): Promise<void>;
|
|
19
21
|
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,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,EAAE,MAAM,UAAU,CAAC;AAGnD,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;IA0BtE,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;YAoB3B,4BAA4B;YA6B5B,OAAO;CAetB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const CONTACTS_SERVICE_KEY = "contacts-api";
|
|
2
|
-
export declare const REQUEST_PAYLOAD_MAX_BYTES =
|
|
2
|
+
export declare const REQUEST_PAYLOAD_MAX_BYTES = 200000;
|
|
3
3
|
export declare const FAILED_REQUEST_REPEATS = 3;
|
|
4
4
|
export declare const CONTACTS_DELETE_MAX_AMOUNT = 5;
|
|
5
5
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/types/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Token } from '@or-sdk/base';
|
|
2
|
-
import { ContactBookParamsDto, ListApiParams, OrderParams } from '@onereach/types-contacts-api';
|
|
2
|
+
import { BatchProcessStatus, ContactBookParamsDto, ListApiParams, OrderParams } from '@onereach/types-contacts-api';
|
|
3
3
|
import { OrderOptions, PaginationOptions } from '@or-sdk/base';
|
|
4
4
|
export * from '@onereach/types-contacts-api';
|
|
5
5
|
export { OrderDirection, PaginationOptions, OrderOptions } from '@or-sdk/base';
|
|
@@ -13,4 +13,14 @@ 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 InitCreateBatchResponse = {
|
|
17
|
+
totalChunks: number;
|
|
18
|
+
firstChunkSize: number;
|
|
19
|
+
batchId: string;
|
|
20
|
+
};
|
|
21
|
+
export declare type TrackBatchProcessResponse = {
|
|
22
|
+
status: BatchProcessStatus;
|
|
23
|
+
errors?: string[];
|
|
24
|
+
contactsIds?: string[];
|
|
25
|
+
};
|
|
16
26
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -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,oBAAoB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,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,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/dist/types/utils.d.ts
CHANGED
|
@@ -8,5 +8,6 @@ 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>;
|
|
11
12
|
export {};
|
|
12
13
|
//# 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;AAEF,wBAAgB,eAAe,CAAC,CAAC,EAC/B,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACxB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,GACpD,OAAO,CAAC,CAAC,CAAC,CASZ"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "3.2.2-beta.
|
|
2
|
+
"version": "3.2.2-beta.1754.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.
|
|
27
|
+
"@onereach/types-contacts-api": "4.7.2-beta.2230.0",
|
|
28
28
|
"@or-sdk/base": "^0.28.3"
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
+
import { TrackBatchProcessResponse } from '../types';
|
|
1
2
|
import { BaseApi } from './baseApi';
|
|
2
3
|
|
|
3
|
-
import {
|
|
4
|
-
BatchProcessResponseDto,
|
|
5
|
-
} from '@onereach/types-contacts-api';
|
|
4
|
+
import { BatchProcessResponseDto, BatchProcessStatus, PendingBatchesResponseDto } from '@onereach/types-contacts-api';
|
|
6
5
|
|
|
7
6
|
export default class BatchProcessApi extends BaseApi {
|
|
8
7
|
private readonly apiBasePath = 'batch-process';
|
|
@@ -13,4 +12,43 @@ export default class BatchProcessApi extends BaseApi {
|
|
|
13
12
|
route: `${this.apiBasePath}/${id}`,
|
|
14
13
|
});
|
|
15
14
|
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Returns the count of pending batch processes and their ids.
|
|
18
|
+
*/
|
|
19
|
+
getPendingBatchProcesses(): Promise<PendingBatchesResponseDto> {
|
|
20
|
+
return this.apiCall({
|
|
21
|
+
method: 'GET',
|
|
22
|
+
route: `${this.apiBasePath}/pending-batches`,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Provides information about create contacts batch process: its status, errors if
|
|
28
|
+
* the status is failed, and created contacts ids if the status is success.
|
|
29
|
+
*/
|
|
30
|
+
async trackBatchProcess(id: string): Promise<TrackBatchProcessResponse> {
|
|
31
|
+
const batchProcess = await this.getBatchProcess(id);
|
|
32
|
+
|
|
33
|
+
let result: TrackBatchProcessResponse = {
|
|
34
|
+
status: batchProcess.status,
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
if (batchProcess.status === BatchProcessStatus.success) {
|
|
38
|
+
result = {
|
|
39
|
+
...result,
|
|
40
|
+
contactsIds: batchProcess.results.flatMap<string>(i => JSON.parse(i)),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (batchProcess.status === BatchProcessStatus.failed) {
|
|
45
|
+
result = {
|
|
46
|
+
...result,
|
|
47
|
+
errors: batchProcess.messages,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
|
|
16
54
|
}
|
package/src/api/contactApi.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BatchProcessResponseDto,
|
|
3
|
+
BatchProcessStatus,
|
|
3
4
|
ContactParamsDto,
|
|
4
5
|
ContactRequestDto,
|
|
5
6
|
ContactResponseDto,
|
|
@@ -18,7 +19,8 @@ import {
|
|
|
18
19
|
import { CalApiParams, List } from '@or-sdk/base';
|
|
19
20
|
import { BaseApi } from './baseApi';
|
|
20
21
|
import BatchProcessApi from './batchProcessApi';
|
|
21
|
-
import { getObjectSizeInBytes, chunkArrByMaxSize } from '../utils';
|
|
22
|
+
import { getObjectSizeInBytes, chunkArrByMaxSize, debouncePromise } from '../utils';
|
|
23
|
+
import { InitCreateBatchResponse } from '../types';
|
|
22
24
|
import { REQUEST_PAYLOAD_MAX_BYTES, FAILED_REQUEST_REPEATS, CONTACTS_DELETE_MAX_AMOUNT } from '../constants';
|
|
23
25
|
|
|
24
26
|
export default class ContactApi extends BaseApi {
|
|
@@ -115,16 +117,52 @@ export default class ContactApi extends BaseApi {
|
|
|
115
117
|
*/
|
|
116
118
|
async bulkCreateContacts(data: CreateMultipleContactsDto): Promise<string[]> {
|
|
117
119
|
// eslint-disable-next-line no-console
|
|
118
|
-
console.log(data);
|
|
120
|
+
console.log('contacts: ', data.contacts.length);
|
|
119
121
|
const { contacts, ...rest } = data;
|
|
120
122
|
const contactsMaxSize = REQUEST_PAYLOAD_MAX_BYTES - getObjectSizeInBytes({ ...rest });
|
|
121
123
|
const contactsChunks = chunkArrByMaxSize(contacts, contactsMaxSize);
|
|
124
|
+
// eslint-disable-next-line no-console
|
|
125
|
+
console.log('chunks: ', contactsChunks.length);
|
|
122
126
|
|
|
123
127
|
return contactsChunks.length === 1
|
|
124
128
|
? this.createContactsInSingleBatch(data)
|
|
125
129
|
: this.createContactsInMultiBatches(contactsChunks, rest);
|
|
126
130
|
}
|
|
127
131
|
|
|
132
|
+
/**
|
|
133
|
+
* Breaks the contacts to chunks of maximum allowed size (200 KB) and launches create batch
|
|
134
|
+
* only for the first chunk.
|
|
135
|
+
* Returns batch id in response by which the batch can be tracked using batch process API.
|
|
136
|
+
* Note: since create contact batch is a very expensive operations from terms of consuming
|
|
137
|
+
* DB connections, it is highly recommended to check amount of pending (running) batches
|
|
138
|
+
* prior to this method execution, and if the amount is greater of 2 the batch initiation
|
|
139
|
+
* should be deferred.
|
|
140
|
+
*
|
|
141
|
+
* @see batchProcessApi.trackBatchProcess
|
|
142
|
+
* @see batchProcessApi.getPendingBatchProcesses
|
|
143
|
+
*/
|
|
144
|
+
async initCreateBatch(data: CreateMultipleContactsDto): Promise<InitCreateBatchResponse> {
|
|
145
|
+
const { contacts, ...rest } = data;
|
|
146
|
+
const contactsMaxSize = REQUEST_PAYLOAD_MAX_BYTES - getObjectSizeInBytes({ ...rest });
|
|
147
|
+
const contactsChunks = chunkArrByMaxSize(contacts, contactsMaxSize);
|
|
148
|
+
|
|
149
|
+
const batchProcess = await this.apiCall<BatchProcessResponseDto>({
|
|
150
|
+
method: 'POST',
|
|
151
|
+
route: `${this.apiBasePath}/bulk`,
|
|
152
|
+
data: {
|
|
153
|
+
contacts: contactsChunks[0],
|
|
154
|
+
...rest,
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
return {
|
|
159
|
+
totalChunks: contactsChunks.length,
|
|
160
|
+
firstChunkSize: contactsChunks[0].length,
|
|
161
|
+
batchId: batchProcess.id,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
|
|
128
166
|
/**
|
|
129
167
|
* @description Merge two Contacts into one
|
|
130
168
|
* @param id Contact id TO which the data will be merged
|
|
@@ -197,13 +235,23 @@ export default class ContactApi extends BaseApi {
|
|
|
197
235
|
await this.polling(batchProcess.id);
|
|
198
236
|
}
|
|
199
237
|
|
|
200
|
-
private async createContactsInSingleBatch(data: CreateMultipleContactsDto): Promise<string[]> {
|
|
238
|
+
private async createContactsInSingleBatch(data: CreateMultipleContactsDto, repeats = 0): Promise<string[]> {
|
|
239
|
+
const s = performance.now();
|
|
201
240
|
const batchProcess = await this.apiCall<BatchProcessResponseDto>({
|
|
202
241
|
method: 'POST',
|
|
203
242
|
route: `${this.apiBasePath}/bulk`,
|
|
204
243
|
data,
|
|
205
244
|
});
|
|
206
245
|
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
|
+
const e = performance.now();
|
|
253
|
+
// eslint-disable-next-line no-console
|
|
254
|
+
console.log('single batch time: ', (e - s) / 1000, 's');
|
|
207
255
|
return batchProcessResult.results.flatMap<string>(i => JSON.parse(i));
|
|
208
256
|
}
|
|
209
257
|
|
|
@@ -211,16 +259,25 @@ export default class ContactApi extends BaseApi {
|
|
|
211
259
|
contactsChunks: ContactRequestDto[][],
|
|
212
260
|
data: Omit<CreateMultipleContactsDto, 'contacts'>
|
|
213
261
|
): Promise<string[]> {
|
|
214
|
-
const batchPromises = contactsChunks
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
262
|
+
const batchPromises = contactsChunks
|
|
263
|
+
.map((chunkContacts) => async () => this.createContactsInSingleBatch({
|
|
264
|
+
contacts: chunkContacts,
|
|
265
|
+
...data,
|
|
266
|
+
}));
|
|
218
267
|
|
|
268
|
+
const promisesBatchSize = 2;
|
|
219
269
|
const results: string[] = [];
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
270
|
+
|
|
271
|
+
for (let i = 0;i < batchPromises.length;i += promisesBatchSize) {
|
|
272
|
+
const s = performance.now();
|
|
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
|
+
const e = performance.now();
|
|
277
|
+
// eslint-disable-next-line no-console
|
|
278
|
+
console.log('awaiting ', promisesBatchSize, ' batches: ', (e - s) / 1000, 's');
|
|
223
279
|
}
|
|
280
|
+
|
|
224
281
|
return results;
|
|
225
282
|
}
|
|
226
283
|
|
|
@@ -230,7 +287,7 @@ export default class ContactApi extends BaseApi {
|
|
|
230
287
|
private async polling(batchId: string, repeats = 0): Promise<BatchProcessResponseDto> {
|
|
231
288
|
let batchProcessState: BatchProcessResponseDto;
|
|
232
289
|
try {
|
|
233
|
-
batchProcessState = await this.batchProcessApi.getBatchProcess(batchId);
|
|
290
|
+
batchProcessState = await debouncePromise(() => this.batchProcessApi.getBatchProcess(batchId), 1000);
|
|
234
291
|
} catch (e) {
|
|
235
292
|
if (repeats < FAILED_REQUEST_REPEATS) {
|
|
236
293
|
return this.polling(batchId, repeats + 1);
|
|
@@ -238,7 +295,8 @@ export default class ContactApi extends BaseApi {
|
|
|
238
295
|
throw e;
|
|
239
296
|
}
|
|
240
297
|
|
|
241
|
-
|
|
242
|
-
|
|
298
|
+
return batchProcessState.status === BatchProcessStatus.pending
|
|
299
|
+
? this.polling(batchId)
|
|
300
|
+
: batchProcessState;
|
|
243
301
|
}
|
|
244
302
|
}
|
package/src/constants.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Token } from '@or-sdk/base';
|
|
2
|
-
import { ContactBookParamsDto, ListApiParams, OrderParams } from '@onereach/types-contacts-api';
|
|
2
|
+
import { BatchProcessStatus, ContactBookParamsDto, ListApiParams, OrderParams } from '@onereach/types-contacts-api';
|
|
3
3
|
import { OrderOptions, PaginationOptions } from '@or-sdk/base';
|
|
4
4
|
export * from '@onereach/types-contacts-api';
|
|
5
5
|
|
|
@@ -30,3 +30,15 @@ export interface ContactBookParams extends AdaptedListParams<ContactBookParamsDt
|
|
|
30
30
|
|
|
31
31
|
export type AdaptedListParams<T extends ListApiParams & OrderParams> =
|
|
32
32
|
Omit<T, 'order' | 'skip' | 'take'> & Partial<PaginationOptions & OrderOptions>;
|
|
33
|
+
|
|
34
|
+
export type InitCreateBatchResponse = {
|
|
35
|
+
totalChunks: number;
|
|
36
|
+
firstChunkSize: number;
|
|
37
|
+
batchId: string;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export type TrackBatchProcessResponse = {
|
|
41
|
+
status: BatchProcessStatus;
|
|
42
|
+
errors?: string[];
|
|
43
|
+
contactsIds?: string[];
|
|
44
|
+
};
|
package/src/utils.ts
CHANGED
|
@@ -43,3 +43,19 @@ 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
|
+
|