@or-sdk/contacts 3.5.5-beta.2129.0 → 3.5.5-beta.2131.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/Contacts.js +14 -0
- package/dist/cjs/Contacts.js.map +1 -1
- package/dist/cjs/api/baseWithPolingApi.js +106 -0
- package/dist/cjs/api/baseWithPolingApi.js.map +1 -0
- package/dist/cjs/api/batchProcessApi.js +10 -0
- package/dist/cjs/api/batchProcessApi.js.map +1 -1
- package/dist/cjs/api/bulkContactsCreateApi.js +197 -0
- package/dist/cjs/api/bulkContactsCreateApi.js.map +1 -0
- package/dist/cjs/api/contactApi.js +6 -40
- package/dist/cjs/api/contactApi.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/Contacts.js +14 -0
- package/dist/esm/Contacts.js.map +1 -1
- package/dist/esm/api/baseWithPolingApi.js +47 -0
- package/dist/esm/api/baseWithPolingApi.js.map +1 -0
- package/dist/esm/api/batchProcessApi.js +9 -1
- package/dist/esm/api/batchProcessApi.js.map +1 -1
- package/dist/esm/api/bulkContactsCreateApi.js +92 -0
- package/dist/esm/api/bulkContactsCreateApi.js.map +1 -0
- package/dist/esm/api/contactApi.js +4 -30
- package/dist/esm/api/contactApi.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/types/Contacts.d.ts +4 -0
- package/dist/types/Contacts.d.ts.map +1 -1
- package/dist/types/api/baseWithPolingApi.d.ts +11 -0
- package/dist/types/api/baseWithPolingApi.d.ts.map +1 -0
- package/dist/types/api/batchProcessApi.d.ts +1 -0
- package/dist/types/api/batchProcessApi.d.ts.map +1 -1
- package/dist/types/api/bulkContactsCreateApi.d.ts +15 -0
- package/dist/types/api/bulkContactsCreateApi.d.ts.map +1 -0
- package/dist/types/api/contactApi.d.ts +3 -4
- package/dist/types/api/contactApi.d.ts.map +1 -1
- package/dist/types/types.d.ts +10 -1
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/Contacts.ts +17 -0
- package/src/api/baseWithPolingApi.ts +51 -0
- package/src/api/batchProcessApi.ts +11 -1
- package/src/api/bulkContactsCreateApi.ts +110 -0
- package/src/api/contactApi.ts +5 -40
- package/src/types.ts +16 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batchProcessApi.js","sourceRoot":"","sources":["../../../src/api/batchProcessApi.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,
|
|
1
|
+
{"version":3,"file":"batchProcessApi.js","sourceRoot":"","sources":["../../../src/api/batchProcessApi.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAApD;;QACmB,gBAAW,GAAG,eAAe,CAAC;IA8CjD,CAAC;IA5CC,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;IAOK,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,EAC7B,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GACtE,CAAC;aACH;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;IAEK,sBAAsB,CAAC,OAAe;;YAC1C,OAAO,IAAI,CAAC,OAAO,CAAC;gBAClB,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,UAAU,OAAO,EAAE;aAC9C,CAAC,CAAC;QACL,CAAC;KAAA;CAEF"}
|
|
@@ -0,0 +1,92 @@
|
|
|
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
|
+
};
|
|
10
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
11
|
+
var t = {};
|
|
12
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
13
|
+
t[p] = s[p];
|
|
14
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
15
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17
|
+
t[p[i]] = s[p[i]];
|
|
18
|
+
}
|
|
19
|
+
return t;
|
|
20
|
+
};
|
|
21
|
+
import BaseWithPoling from './baseWithPolingApi';
|
|
22
|
+
import { REQUEST_PAYLOAD_MAX_BYTES } from '../constants';
|
|
23
|
+
import { chunkArrByMaxSize, debouncePromise, getObjectSizeInBytes } from '../utils';
|
|
24
|
+
import { v4 } from 'uuid';
|
|
25
|
+
export default class BulkContactsCreateApi extends BaseWithPoling {
|
|
26
|
+
constructor(apiCall, batchProcessApi) {
|
|
27
|
+
super(apiCall, batchProcessApi);
|
|
28
|
+
this.apiCall = apiCall;
|
|
29
|
+
this.batchProcessApi = batchProcessApi;
|
|
30
|
+
this.apiBasePath = 'bulk-create';
|
|
31
|
+
}
|
|
32
|
+
bulkCreateContacts(data) {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
const dataWithContactKeys = Object.assign(Object.assign({}, data), { contacts: data.contacts.map((c, idx) => {
|
|
35
|
+
return c.contactKey ? c : Object.assign(Object.assign({}, c), { contactKey: `${idx}` });
|
|
36
|
+
}) });
|
|
37
|
+
const { contacts } = dataWithContactKeys, rest = __rest(dataWithContactKeys, ["contacts"]);
|
|
38
|
+
const contactsMaxSize = REQUEST_PAYLOAD_MAX_BYTES - getObjectSizeInBytes(Object.assign({}, rest));
|
|
39
|
+
const contactsChunks = chunkArrByMaxSize(contacts, contactsMaxSize);
|
|
40
|
+
const batchGroupId = v4();
|
|
41
|
+
if (contactsChunks.length === 1) {
|
|
42
|
+
yield this.createContactsInSingleBatch(dataWithContactKeys, batchGroupId);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
yield this.createContactsInMultiBatches(contactsChunks, rest, batchGroupId);
|
|
46
|
+
}
|
|
47
|
+
return this.getBulkCreateResults(batchGroupId);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
getBulkCreateResults(batchGroupId) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
const batchProcessesGroup = yield this.batchProcessApi.getBatchProcessesGroup(batchGroupId);
|
|
53
|
+
return batchProcessesGroup.reduce((acc, batch) => {
|
|
54
|
+
const createdContacts = batch.results.reduce((acc, result) => (Object.assign(Object.assign({}, acc), JSON.parse(result))), {});
|
|
55
|
+
const failedContacts = batch.messages.reduce((acc, message) => (Object.assign(Object.assign({}, acc), JSON.parse(message))), {});
|
|
56
|
+
return {
|
|
57
|
+
created: Object.assign(Object.assign({}, acc.created), createdContacts),
|
|
58
|
+
failed: Object.assign(Object.assign({}, acc.failed), failedContacts),
|
|
59
|
+
};
|
|
60
|
+
}, {
|
|
61
|
+
created: {},
|
|
62
|
+
failed: {},
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
createContactsInSingleBatch(data, batchGroupId) {
|
|
67
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
const batchId = v4();
|
|
69
|
+
this.apiCall({
|
|
70
|
+
method: 'POST',
|
|
71
|
+
route: `${this.apiBasePath}/bulk`,
|
|
72
|
+
data: Object.assign(Object.assign({}, data), { batchId,
|
|
73
|
+
batchGroupId }),
|
|
74
|
+
});
|
|
75
|
+
yield debouncePromise(() => this.polling(batchId), 3000);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
createContactsInMultiBatches(contactsChunks, data, batchGroupId) {
|
|
79
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
+
const batchPromises = contactsChunks
|
|
81
|
+
.map((chunkContacts) => () => __awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
return this.createContactsInSingleBatch(Object.assign({ contacts: chunkContacts }, data), batchGroupId);
|
|
83
|
+
}));
|
|
84
|
+
const promisesBatchSize = 4;
|
|
85
|
+
for (let i = 0; i < batchPromises.length; i += promisesBatchSize) {
|
|
86
|
+
const batch = batchPromises.slice(i, i + promisesBatchSize);
|
|
87
|
+
yield Promise.all(batch.map((p) => p()));
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=bulkContactsCreateApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulkContactsCreateApi.js","sourceRoot":"","sources":["../../../src/api/bulkContactsCreateApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,14 +19,13 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
19
19
|
return t;
|
|
20
20
|
};
|
|
21
21
|
import { v4 } from 'uuid';
|
|
22
|
-
import { BatchProcessStatus, } from '@onereach/types-contacts-api';
|
|
23
|
-
import { BaseApi } from './baseApi';
|
|
24
22
|
import { getObjectSizeInBytes, chunkArrByMaxSize, debouncePromise } from '../utils';
|
|
25
|
-
import { REQUEST_PAYLOAD_MAX_BYTES,
|
|
23
|
+
import { REQUEST_PAYLOAD_MAX_BYTES, CONTACTS_DELETE_MAX_AMOUNT } from '../constants';
|
|
26
24
|
import { ApiError, CreateContactsBatchError } from '../apiError';
|
|
27
|
-
|
|
25
|
+
import BaseWithPoling from './baseWithPolingApi';
|
|
26
|
+
export default class ContactApi extends BaseWithPoling {
|
|
28
27
|
constructor(apiCall, batchProcessApi, bookServiceApi) {
|
|
29
|
-
super(apiCall);
|
|
28
|
+
super(apiCall, batchProcessApi);
|
|
30
29
|
this.apiCall = apiCall;
|
|
31
30
|
this.batchProcessApi = batchProcessApi;
|
|
32
31
|
this.bookServiceApi = bookServiceApi;
|
|
@@ -240,30 +239,5 @@ export default class ContactApi extends BaseApi {
|
|
|
240
239
|
};
|
|
241
240
|
});
|
|
242
241
|
}
|
|
243
|
-
polling(batchId, repeats = 0) {
|
|
244
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
245
|
-
let batchProcess;
|
|
246
|
-
try {
|
|
247
|
-
batchProcess = yield debouncePromise(() => this.batchProcessApi.getBatchProcess(batchId), 1000);
|
|
248
|
-
}
|
|
249
|
-
catch (e) {
|
|
250
|
-
if (repeats < FAILED_REQUEST_REPEATS
|
|
251
|
-
&& 'statusCode' in e
|
|
252
|
-
&& e.statusCode === 410) {
|
|
253
|
-
return yield debouncePromise(() => this.polling(batchId, repeats + 1), 2000);
|
|
254
|
-
}
|
|
255
|
-
if (repeats < FAILED_REQUEST_REPEATS) {
|
|
256
|
-
return this.polling(batchId, repeats + 1);
|
|
257
|
-
}
|
|
258
|
-
throw new CreateContactsBatchError(e.message, batchId);
|
|
259
|
-
}
|
|
260
|
-
if (batchProcess.status === BatchProcessStatus.failed) {
|
|
261
|
-
throw new CreateContactsBatchError('Could not complete batch process', batchId, batchProcess.messages);
|
|
262
|
-
}
|
|
263
|
-
return batchProcess.status === BatchProcessStatus.pending
|
|
264
|
-
? this.polling(batchId)
|
|
265
|
-
: batchProcess;
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
242
|
}
|
|
269
243
|
//# sourceMappingURL=contactApi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contactApi.js","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"contactApi.js","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAYA,cAAc,8BAA8B,CAAC;AAK7C,OAAO,EAAE,cAAc,EAAmC,MAAM,cAAc,CAAC"}
|
package/dist/types/Contacts.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { AxiosError, Base } from '@or-sdk/base';
|
|
|
2
2
|
import { ContactsConfig } from './types';
|
|
3
3
|
import { ContactBookApi, MigrationsApi, ContactApi, FieldSchemaApi, SchemaPresetApi, FilterApi, SharedBookContactPermissionApi, FieldValueApi } from './api';
|
|
4
4
|
import BatchProcessApi from './api/batchProcessApi';
|
|
5
|
+
import BulkContactsCreateApi from './api/bulkContactsCreateApi';
|
|
5
6
|
export declare class Contacts extends Base {
|
|
6
7
|
readonly batchProcessApi: BatchProcessApi;
|
|
7
8
|
readonly contactBookApi: ContactBookApi;
|
|
@@ -12,7 +13,10 @@ export declare class Contacts extends Base {
|
|
|
12
13
|
readonly filterApi: FilterApi;
|
|
13
14
|
readonly sharedBookContactPermissionApi: SharedBookContactPermissionApi;
|
|
14
15
|
readonly fieldValueApi: FieldValueApi;
|
|
16
|
+
readonly bulkCreateApi: BulkContactsCreateApi;
|
|
17
|
+
private withApiErrorLog;
|
|
15
18
|
constructor(params: ContactsConfig);
|
|
16
19
|
parseError(e: AxiosError): Error;
|
|
20
|
+
private logApiError;
|
|
17
21
|
}
|
|
18
22
|
//# sourceMappingURL=Contacts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Contacts.d.ts","sourceRoot":"","sources":["../../src/Contacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EACL,cAAc,EACd,aAAa,EACb,UAAU,EACV,cAAc,EACd,eAAe,EACf,SAAS,EACT,8BAA8B,EAC9B,aAAa,EACd,MAAM,OAAO,CAAC;AAEf,OAAO,eAAe,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"Contacts.d.ts","sourceRoot":"","sources":["../../src/Contacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EACL,cAAc,EACd,aAAa,EACb,UAAU,EACV,cAAc,EACd,eAAe,EACf,SAAS,EACT,8BAA8B,EAC9B,aAAa,EACd,MAAM,OAAO,CAAC;AAEf,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,qBAAqB,MAAM,6BAA6B,CAAC;AAShE,qBAAa,QAAS,SAAQ,IAAI;IAChC,SAAgB,eAAe,EAAE,eAAe,CAAC;IACjD,SAAgB,cAAc,EAAE,cAAc,CAAC;IAC/C,SAAgB,aAAa,EAAE,aAAa,CAAC;IAC7C,SAAgB,UAAU,EAAE,UAAU,CAAC;IACvC,SAAgB,cAAc,EAAE,cAAc,CAAC;IAC/C,SAAgB,eAAe,EAAE,eAAe,CAAC;IACjD,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,SAAgB,8BAA8B,EAAE,8BAA8B,CAAC;IAC/E,SAAgB,aAAa,EAAE,aAAa,CAAC;IAC7C,SAAgB,aAAa,EAAE,qBAAqB,CAAC;IACrD,OAAO,CAAC,eAAe,CAAU;gBAQrB,MAAM,EAAE,cAAc;IAyBlC,UAAU,CAAC,CAAC,EAAE,UAAU,GAAG,KAAK;IAahC,OAAO,CAAC,WAAW;CASpB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CalApiParams } from '@or-sdk/base';
|
|
2
|
+
import { BaseApi } from './baseApi';
|
|
3
|
+
import BatchProcessApi from './batchProcessApi';
|
|
4
|
+
import { BatchProcessResponseDto } from '@onereach/types-contacts-api';
|
|
5
|
+
export default class BaseWithPoling extends BaseApi {
|
|
6
|
+
protected readonly apiCall: <T>(params: CalApiParams) => Promise<T>;
|
|
7
|
+
protected batchProcessApi: BatchProcessApi;
|
|
8
|
+
constructor(apiCall: <T>(params: CalApiParams) => Promise<T>, batchProcessApi: BatchProcessApi);
|
|
9
|
+
protected polling(batchId: string, repeats?: number): Promise<BatchProcessResponseDto>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=baseWithPolingApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseWithPolingApi.d.ts","sourceRoot":"","sources":["../../../src/api/baseWithPolingApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAsB,MAAM,8BAA8B,CAAC;AAK3F,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;IAE/C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC;IACnE,SAAS,CAAC,eAAe,EAAE,eAAe;gBADvB,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,EACzD,eAAe,EAAE,eAAe;cAQ5B,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,uBAAuB,CAAC;CA+BxF"}
|
|
@@ -5,5 +5,6 @@ export default class BatchProcessApi extends BaseApi {
|
|
|
5
5
|
private readonly apiBasePath;
|
|
6
6
|
getBatchProcess(id: string): Promise<BatchProcessResponseDto>;
|
|
7
7
|
trackBatchProcess(id: string): Promise<TrackBatchProcessResponse>;
|
|
8
|
+
getBatchProcessesGroup(groupId: string): Promise<BatchProcessResponseDto[]>;
|
|
8
9
|
}
|
|
9
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,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrD,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,EACL,uBAAuB,EAExB,MAAM,8BAA8B,CAAC;AAEtC,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;IAYvD,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAyBjE,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;CAOlF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CalApiParams } from '@or-sdk/base';
|
|
2
|
+
import BaseWithPoling from './baseWithPolingApi';
|
|
3
|
+
import BatchProcessApi from './batchProcessApi';
|
|
4
|
+
import { BulkCreateData, CreateBulkResults } from '../types';
|
|
5
|
+
export default class BulkContactsCreateApi extends BaseWithPoling {
|
|
6
|
+
protected readonly apiCall: <T>(params: CalApiParams) => Promise<T>;
|
|
7
|
+
protected batchProcessApi: BatchProcessApi;
|
|
8
|
+
constructor(apiCall: <T>(params: CalApiParams) => Promise<T>, batchProcessApi: BatchProcessApi);
|
|
9
|
+
private readonly apiBasePath;
|
|
10
|
+
bulkCreateContacts(data: BulkCreateData): Promise<CreateBulkResults>;
|
|
11
|
+
private getBulkCreateResults;
|
|
12
|
+
private createContactsInSingleBatch;
|
|
13
|
+
private createContactsInMultiBatches;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=bulkContactsCreateApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulkContactsCreateApi.d.ts","sourceRoot":"","sources":["../../../src/api/bulkContactsCreateApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAKhD,OAAO,EAAuB,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElF,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,cAAc;IAE7D,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC;IACnE,SAAS,CAAC,eAAe,EAAE,eAAe;gBADvB,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,EACzD,eAAe,EAAE,eAAe;IAK5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAEvC,kBAAkB,CACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,iBAAiB,CAAC;YAwBf,oBAAoB;YA2BpB,2BAA2B;YAkB3B,4BAA4B;CAmB3C"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { ContactParamsDto, ContactResponseDto, CreateContactDto, CreateMultipleContactsDto, DeleteContactParamsDto, FindAllParamsDto, LinkContactMultiParamsDto, LinkContactParamsDto, MergeContactParamsDto, UnlinkContactMultiParamsDto, UnlinkContactParamsDto, UpdateContactDto } from '@onereach/types-contacts-api';
|
|
2
2
|
import { CalApiParams, List } from '@or-sdk/base';
|
|
3
|
-
import { BaseApi } from './baseApi';
|
|
4
3
|
import BatchProcessApi from './batchProcessApi';
|
|
5
4
|
import { InitCreateBatchResponse } from '../types';
|
|
6
5
|
import ContactBookApi from './contactBookApi';
|
|
7
6
|
import { DeleteContactsData } from '../types';
|
|
8
|
-
|
|
7
|
+
import BaseWithPoling from './baseWithPolingApi';
|
|
8
|
+
export default class ContactApi extends BaseWithPoling {
|
|
9
9
|
protected readonly apiCall: <T>(params: CalApiParams) => Promise<T>;
|
|
10
|
-
|
|
10
|
+
protected batchProcessApi: BatchProcessApi;
|
|
11
11
|
private bookServiceApi;
|
|
12
12
|
constructor(apiCall: <T>(params: CalApiParams) => Promise<T>, batchProcessApi: BatchProcessApi, bookServiceApi: ContactBookApi);
|
|
13
13
|
private readonly apiBasePath;
|
|
@@ -34,6 +34,5 @@ export default class ContactApi extends BaseApi {
|
|
|
34
34
|
private runSingleDeleteContactsBulk;
|
|
35
35
|
private createContactsInMultiBatches;
|
|
36
36
|
private createContactsInSingleBatch;
|
|
37
|
-
private polling;
|
|
38
37
|
}
|
|
39
38
|
//# sourceMappingURL=contactApi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contactApi.d.ts","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"contactApi.d.ts","sourceRoot":"","sources":["../../../src/api/contactApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,gBAAgB,EAEhB,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EAEzB,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,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,uBAAuB,EAA8B,MAAM,UAAU,CAAC;AAC/E,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,cAAc;IAElD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC;IACnE,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,OAAO,CAAC,cAAc;gBAFH,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,EACzD,eAAe,EAAE,eAAe,EAClC,cAAc,EAAE,cAAc;IAKxC,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,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;IAa3E,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9C,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7E,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,UAAQ;;;;;IA6BzE,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkB5D,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBlE,eAAe,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA0BxF,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;YAwBlB,2BAA2B;YAsB3B,4BAA4B;YA6B5B,2BAA2B;CAkB1C"}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Token } from '@or-sdk/base';
|
|
2
|
-
import { BatchProcessStatus, ContactBookParamsDto, CreateFieldSchemaDto, DeleteContactMultiParamsDto, ListApiParams, OrderParams } from '@onereach/types-contacts-api';
|
|
2
|
+
import { BatchProcessStatus, BulkContactDto, BulkCreateRequestDto, ContactBookParamsDto, CreateFieldSchemaDto, DeleteContactMultiParamsDto, 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
|
declare type OptionalBy<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
|
|
@@ -10,6 +10,7 @@ export declare type ContactsConfig = {
|
|
|
10
10
|
contactsApiUrl?: string;
|
|
11
11
|
accountId?: string;
|
|
12
12
|
withKeepAliveAgents?: boolean;
|
|
13
|
+
withApiErrorLog?: boolean;
|
|
13
14
|
};
|
|
14
15
|
export interface ContactBookParams extends AdaptedListParams<ContactBookParamsDto> {
|
|
15
16
|
orderProperty?: 'label' | 'created_at' | 'updated_at';
|
|
@@ -35,4 +36,12 @@ export declare type TrackBatchProcessResponse = {
|
|
|
35
36
|
export declare type CreateFieldSchemaParams = CreateFieldSchemaDto & {
|
|
36
37
|
presetIds?: string[];
|
|
37
38
|
};
|
|
39
|
+
export declare type BulkCreateData = Omit<BulkCreateRequestDto, 'batchId' | 'batchGroupId' | 'contacts'> & {
|
|
40
|
+
contacts: OptionalBy<BulkContactDto, 'contactKey'>[];
|
|
41
|
+
};
|
|
42
|
+
export declare type BatchBulkCreateData = Omit<BulkCreateRequestDto, 'batchId' | 'batchGroupId'>;
|
|
43
|
+
export declare type CreateBulkResults = {
|
|
44
|
+
created: Record<string, string>;
|
|
45
|
+
failed: Record<string, string>;
|
|
46
|
+
};
|
|
38
47
|
//# 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,EACL,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,2BAA2B,EAC3B,aAAa,EACb,WAAW,EACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC/D,cAAc,8BAA8B,CAAC;AAE7C,aAAK,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE/E,oBAAY,cAAc,GAAG;IAI3B,KAAK,EAAE,KAAK,CAAC;IAKb,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,CAAC;IAOnB,mBAAmB,CAAC,EAAE,OAAO,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,EACL,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,2BAA2B,EAC3B,aAAa,EACb,WAAW,EACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC/D,cAAc,8BAA8B,CAAC;AAE7C,aAAK,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE/E,oBAAY,cAAc,GAAG;IAI3B,KAAK,EAAE,KAAK,CAAC;IAKb,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,CAAC;IAOnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAM9B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,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,kBAAkB,GAAG,UAAU,CAAC,2BAA2B,EAAE,KAAK,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;CAAC,CAAC;AAEpG,oBAAY,yBAAyB,GAAG;IACtC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,oBAAY,uBAAuB,GAAG,oBAAoB,GAAG;IAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CAAC,CAAC;AAErF,oBAAY,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,SAAS,GAAG,cAAc,GAAG,UAAU,CAAC,GAC9F;IAAE,QAAQ,EAAE,UAAU,CAAC,cAAc,EAAE,YAAY,CAAC,EAAE,CAAC;CAAE,CAAC;AAE5D,oBAAY,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,EAAE,SAAS,GAAG,cAAc,CAAC,CAAC;AAEzF,oBAAY,iBAAiB,GAAG;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "3.5.5-beta.
|
|
2
|
+
"version": "3.5.5-beta.2131.0",
|
|
3
3
|
"name": "@or-sdk/contacts",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/esm/index.js",
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"test:watch": "vitest --watch"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@onereach/types-contacts-api": "5.1
|
|
23
|
-
"@or-sdk/base": "^0.
|
|
22
|
+
"@onereach/types-contacts-api": "5.3.1-beta.2471.0",
|
|
23
|
+
"@or-sdk/base": "^0.29.0",
|
|
24
24
|
"agentkeepalive": "^4.5.0",
|
|
25
25
|
"uuid": "^8.3.2"
|
|
26
26
|
},
|
package/src/Contacts.ts
CHANGED
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
} from './api';
|
|
15
15
|
import { ApiError } from './apiError';
|
|
16
16
|
import BatchProcessApi from './api/batchProcessApi';
|
|
17
|
+
import BulkContactsCreateApi from './api/bulkContactsCreateApi';
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* OneReach Contacts service client
|
|
@@ -32,6 +33,8 @@ export class Contacts extends Base {
|
|
|
32
33
|
public readonly filterApi: FilterApi;
|
|
33
34
|
public readonly sharedBookContactPermissionApi: SharedBookContactPermissionApi;
|
|
34
35
|
public readonly fieldValueApi: FieldValueApi;
|
|
36
|
+
public readonly bulkCreateApi: BulkContactsCreateApi;
|
|
37
|
+
private withApiErrorLog: boolean;
|
|
35
38
|
|
|
36
39
|
/**
|
|
37
40
|
* ```typescript
|
|
@@ -60,11 +63,16 @@ export class Contacts extends Base {
|
|
|
60
63
|
this.filterApi = new FilterApi(apiCall);
|
|
61
64
|
this.sharedBookContactPermissionApi = new SharedBookContactPermissionApi(apiCall);
|
|
62
65
|
this.fieldValueApi = new FieldValueApi(apiCall);
|
|
66
|
+
this.bulkCreateApi = new BulkContactsCreateApi(apiCall, this.batchProcessApi);
|
|
67
|
+
this.withApiErrorLog = Boolean(params.withApiErrorLog);
|
|
63
68
|
}
|
|
64
69
|
|
|
65
70
|
parseError(e: AxiosError): Error {
|
|
66
71
|
if (e.isAxiosError) {
|
|
67
72
|
const { code, message, stack } = e;
|
|
73
|
+
if (this.withApiErrorLog) {
|
|
74
|
+
this.logApiError(e);
|
|
75
|
+
}
|
|
68
76
|
return new ApiError(code, message, stack);
|
|
69
77
|
}
|
|
70
78
|
|
|
@@ -72,4 +80,13 @@ export class Contacts extends Base {
|
|
|
72
80
|
return parsedError;
|
|
73
81
|
}
|
|
74
82
|
|
|
83
|
+
private logApiError(e: AxiosError): void {
|
|
84
|
+
console.error(`protocol : ${e.request.protocol}`);
|
|
85
|
+
console.error(`host : ${e.request.host}`);
|
|
86
|
+
console.error(`path : ${e.request.path}`);
|
|
87
|
+
console.error(`method : ${e.request.method}`);
|
|
88
|
+
console.error(`status code : ${e.request.statusCode}`);
|
|
89
|
+
console.error(`status message: ${e.request.statusMessage}`);
|
|
90
|
+
}
|
|
91
|
+
|
|
75
92
|
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { CalApiParams } from '@or-sdk/base';
|
|
2
|
+
import { BaseApi } from './baseApi';
|
|
3
|
+
import BatchProcessApi from './batchProcessApi';
|
|
4
|
+
import { BatchProcessResponseDto, BatchProcessStatus } from '@onereach/types-contacts-api';
|
|
5
|
+
import { debouncePromise } from '../utils';
|
|
6
|
+
import { FAILED_REQUEST_REPEATS } from '../constants';
|
|
7
|
+
import { ApiError, CreateContactsBatchError } from '../apiError';
|
|
8
|
+
|
|
9
|
+
export default class BaseWithPoling extends BaseApi {
|
|
10
|
+
constructor(
|
|
11
|
+
protected readonly apiCall: <T>(params: CalApiParams) => Promise<T>,
|
|
12
|
+
protected batchProcessApi: BatchProcessApi,
|
|
13
|
+
) {
|
|
14
|
+
super(apiCall);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Pols specific batch process until status of it isn't turned from 'pending to something else.
|
|
19
|
+
*/
|
|
20
|
+
protected async polling(batchId: string, repeats = 0): Promise<BatchProcessResponseDto> {
|
|
21
|
+
let batchProcess: BatchProcessResponseDto;
|
|
22
|
+
|
|
23
|
+
try {
|
|
24
|
+
batchProcess = await debouncePromise(() => this.batchProcessApi.getBatchProcess(batchId), 1000);
|
|
25
|
+
} catch (e) {
|
|
26
|
+
if (
|
|
27
|
+
repeats < FAILED_REQUEST_REPEATS
|
|
28
|
+
&& 'statusCode' in (e as object)
|
|
29
|
+
&& (e as unknown as ApiError).statusCode === 410
|
|
30
|
+
) {
|
|
31
|
+
return await debouncePromise(() => this.polling(batchId, repeats + 1), 2000);
|
|
32
|
+
}
|
|
33
|
+
if (repeats < FAILED_REQUEST_REPEATS) {
|
|
34
|
+
return this.polling(batchId, repeats + 1);
|
|
35
|
+
}
|
|
36
|
+
throw new CreateContactsBatchError((e as unknown as Error).message, batchId);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (batchProcess.status === BatchProcessStatus.failed) {
|
|
40
|
+
throw new CreateContactsBatchError(
|
|
41
|
+
'Could not complete batch process',
|
|
42
|
+
batchId,
|
|
43
|
+
batchProcess.messages
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return batchProcess.status === BatchProcessStatus.pending
|
|
48
|
+
? this.polling(batchId)
|
|
49
|
+
: batchProcess;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { TrackBatchProcessResponse } from '../types';
|
|
2
2
|
import { BaseApi } from './baseApi';
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
BatchProcessResponseDto,
|
|
6
|
+
BatchProcessStatus,
|
|
7
|
+
} from '@onereach/types-contacts-api';
|
|
5
8
|
|
|
6
9
|
export default class BatchProcessApi extends BaseApi {
|
|
7
10
|
private readonly apiBasePath = 'batch-process';
|
|
@@ -43,4 +46,11 @@ export default class BatchProcessApi extends BaseApi {
|
|
|
43
46
|
return result;
|
|
44
47
|
}
|
|
45
48
|
|
|
49
|
+
async getBatchProcessesGroup(groupId: string): Promise<BatchProcessResponseDto[]> {
|
|
50
|
+
return this.apiCall({
|
|
51
|
+
method: 'GET',
|
|
52
|
+
route: `${this.apiBasePath}/group/${groupId}`,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
46
56
|
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { CalApiParams } from '@or-sdk/base';
|
|
2
|
+
import BaseWithPoling from './baseWithPolingApi';
|
|
3
|
+
import BatchProcessApi from './batchProcessApi';
|
|
4
|
+
import { REQUEST_PAYLOAD_MAX_BYTES } from '../constants';
|
|
5
|
+
import { chunkArrByMaxSize, debouncePromise, getObjectSizeInBytes } from '../utils';
|
|
6
|
+
import { v4 } from 'uuid';
|
|
7
|
+
import { BulkContactDto } from '@onereach/types-contacts-api';
|
|
8
|
+
import { BatchBulkCreateData, BulkCreateData, CreateBulkResults } from '../types';
|
|
9
|
+
|
|
10
|
+
export default class BulkContactsCreateApi extends BaseWithPoling {
|
|
11
|
+
constructor(
|
|
12
|
+
protected readonly apiCall: <T>(params: CalApiParams) => Promise<T>,
|
|
13
|
+
protected batchProcessApi: BatchProcessApi,
|
|
14
|
+
) {
|
|
15
|
+
super(apiCall, batchProcessApi);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
private readonly apiBasePath = 'bulk-create';
|
|
19
|
+
|
|
20
|
+
async bulkCreateContacts(
|
|
21
|
+
data: BulkCreateData
|
|
22
|
+
): Promise<CreateBulkResults> {
|
|
23
|
+
const dataWithContactKeys = {
|
|
24
|
+
...data,
|
|
25
|
+
contacts: data.contacts.map((c, idx) => {return c.contactKey ? c : {
|
|
26
|
+
...c,
|
|
27
|
+
contactKey: `${idx}`,
|
|
28
|
+
};}),
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const { contacts, ...rest } = dataWithContactKeys;
|
|
32
|
+
const contactsMaxSize = REQUEST_PAYLOAD_MAX_BYTES - getObjectSizeInBytes({ ...rest });
|
|
33
|
+
const contactsChunks = chunkArrByMaxSize(contacts, contactsMaxSize);
|
|
34
|
+
|
|
35
|
+
const batchGroupId = v4();
|
|
36
|
+
|
|
37
|
+
if (contactsChunks.length === 1) {
|
|
38
|
+
await this.createContactsInSingleBatch(dataWithContactKeys as BatchBulkCreateData, batchGroupId);
|
|
39
|
+
} else {
|
|
40
|
+
await this.createContactsInMultiBatches(contactsChunks as BulkContactDto[][], rest, batchGroupId);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return this.getBulkCreateResults(batchGroupId);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
private async getBulkCreateResults(batchGroupId: string): Promise<CreateBulkResults> {
|
|
47
|
+
const batchProcessesGroup = await this.batchProcessApi.getBatchProcessesGroup(batchGroupId);
|
|
48
|
+
return batchProcessesGroup.reduce<CreateBulkResults>((acc, batch) => {
|
|
49
|
+
const createdContacts = batch.results.reduce<Record<string, string>>((acc, result) => ({
|
|
50
|
+
...acc,
|
|
51
|
+
...JSON.parse(result),
|
|
52
|
+
}), {});
|
|
53
|
+
const failedContacts = batch.messages.reduce<Record<string, string>>((acc, message) => ({
|
|
54
|
+
...acc,
|
|
55
|
+
...JSON.parse(message),
|
|
56
|
+
}), {});
|
|
57
|
+
return {
|
|
58
|
+
created: {
|
|
59
|
+
...acc.created,
|
|
60
|
+
...createdContacts,
|
|
61
|
+
},
|
|
62
|
+
failed: {
|
|
63
|
+
...acc.failed,
|
|
64
|
+
...failedContacts,
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}, {
|
|
68
|
+
created: {},
|
|
69
|
+
failed: {},
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
private async createContactsInSingleBatch(
|
|
74
|
+
data: BatchBulkCreateData,
|
|
75
|
+
batchGroupId: string
|
|
76
|
+
): Promise<void> {
|
|
77
|
+
const batchId = v4();
|
|
78
|
+
this.apiCall({
|
|
79
|
+
method: 'POST',
|
|
80
|
+
route: `${this.apiBasePath}/bulk`,
|
|
81
|
+
data: {
|
|
82
|
+
...data,
|
|
83
|
+
batchId,
|
|
84
|
+
batchGroupId,
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
// giving time to 2 lambdas to wake up (1 - create Batch and 2 - ping batch status)
|
|
88
|
+
await debouncePromise(() => this.polling(batchId), 3000);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
private async createContactsInMultiBatches(
|
|
92
|
+
contactsChunks: BulkContactDto[][],
|
|
93
|
+
data: Omit<BulkCreateData, 'contacts'>,
|
|
94
|
+
batchGroupId: string,
|
|
95
|
+
): Promise<void> {
|
|
96
|
+
const batchPromises = contactsChunks
|
|
97
|
+
.map((chunkContacts) => async () => this.createContactsInSingleBatch({
|
|
98
|
+
contacts: chunkContacts,
|
|
99
|
+
...data,
|
|
100
|
+
}, batchGroupId));
|
|
101
|
+
|
|
102
|
+
const promisesBatchSize = 4;
|
|
103
|
+
|
|
104
|
+
for (let i = 0;i < batchPromises.length;i += promisesBatchSize) {
|
|
105
|
+
const batch = batchPromises.slice(i, i + promisesBatchSize);
|
|
106
|
+
await Promise.all(batch.map((p) => p()));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
}
|