@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.
Files changed (41) hide show
  1. package/dist/cjs/Contacts.js +14 -0
  2. package/dist/cjs/Contacts.js.map +1 -1
  3. package/dist/cjs/api/baseWithPolingApi.js +106 -0
  4. package/dist/cjs/api/baseWithPolingApi.js.map +1 -0
  5. package/dist/cjs/api/batchProcessApi.js +10 -0
  6. package/dist/cjs/api/batchProcessApi.js.map +1 -1
  7. package/dist/cjs/api/bulkContactsCreateApi.js +197 -0
  8. package/dist/cjs/api/bulkContactsCreateApi.js.map +1 -0
  9. package/dist/cjs/api/contactApi.js +6 -40
  10. package/dist/cjs/api/contactApi.js.map +1 -1
  11. package/dist/cjs/types.js.map +1 -1
  12. package/dist/esm/Contacts.js +14 -0
  13. package/dist/esm/Contacts.js.map +1 -1
  14. package/dist/esm/api/baseWithPolingApi.js +47 -0
  15. package/dist/esm/api/baseWithPolingApi.js.map +1 -0
  16. package/dist/esm/api/batchProcessApi.js +9 -1
  17. package/dist/esm/api/batchProcessApi.js.map +1 -1
  18. package/dist/esm/api/bulkContactsCreateApi.js +92 -0
  19. package/dist/esm/api/bulkContactsCreateApi.js.map +1 -0
  20. package/dist/esm/api/contactApi.js +4 -30
  21. package/dist/esm/api/contactApi.js.map +1 -1
  22. package/dist/esm/types.js.map +1 -1
  23. package/dist/types/Contacts.d.ts +4 -0
  24. package/dist/types/Contacts.d.ts.map +1 -1
  25. package/dist/types/api/baseWithPolingApi.d.ts +11 -0
  26. package/dist/types/api/baseWithPolingApi.d.ts.map +1 -0
  27. package/dist/types/api/batchProcessApi.d.ts +1 -0
  28. package/dist/types/api/batchProcessApi.d.ts.map +1 -1
  29. package/dist/types/api/bulkContactsCreateApi.d.ts +15 -0
  30. package/dist/types/api/bulkContactsCreateApi.d.ts.map +1 -0
  31. package/dist/types/api/contactApi.d.ts +3 -4
  32. package/dist/types/api/contactApi.d.ts.map +1 -1
  33. package/dist/types/types.d.ts +10 -1
  34. package/dist/types/types.d.ts.map +1 -1
  35. package/package.json +3 -3
  36. package/src/Contacts.ts +17 -0
  37. package/src/api/baseWithPolingApi.ts +51 -0
  38. package/src/api/batchProcessApi.ts +11 -1
  39. package/src/api/bulkContactsCreateApi.ts +110 -0
  40. package/src/api/contactApi.ts +5 -40
  41. package/src/types.ts +16 -0
@@ -2,7 +2,6 @@ import { v4 } from 'uuid';
2
2
 
3
3
  import {
4
4
  BatchProcessResponseDto,
5
- BatchProcessStatus,
6
5
  ContactParamsDto,
7
6
  ContactRequestDto,
8
7
  ContactResponseDto,
@@ -19,22 +18,22 @@ import {
19
18
  UpdateContactDto,
20
19
  } from '@onereach/types-contacts-api';
21
20
  import { CalApiParams, List } from '@or-sdk/base';
22
- import { BaseApi } from './baseApi';
23
21
  import BatchProcessApi from './batchProcessApi';
24
22
  import { getObjectSizeInBytes, chunkArrByMaxSize, debouncePromise } from '../utils';
25
23
  import { InitCreateBatchResponse, CreateContactsBatchResults } from '../types';
26
24
  import ContactBookApi from './contactBookApi';
27
- import { REQUEST_PAYLOAD_MAX_BYTES, FAILED_REQUEST_REPEATS, CONTACTS_DELETE_MAX_AMOUNT } from '../constants';
25
+ import { REQUEST_PAYLOAD_MAX_BYTES, CONTACTS_DELETE_MAX_AMOUNT } from '../constants';
28
26
  import { ApiError, CreateContactsBatchError } from '../apiError';
29
27
  import { DeleteContactsData } from '../types';
28
+ import BaseWithPoling from './baseWithPolingApi';
30
29
 
31
- export default class ContactApi extends BaseApi {
30
+ export default class ContactApi extends BaseWithPoling {
32
31
  constructor(
33
32
  protected readonly apiCall: <T>(params: CalApiParams) => Promise<T>,
34
- private batchProcessApi: BatchProcessApi,
33
+ protected batchProcessApi: BatchProcessApi,
35
34
  private bookServiceApi: ContactBookApi
36
35
  ) {
37
- super(apiCall);
36
+ super(apiCall, batchProcessApi);
38
37
  }
39
38
 
40
39
  private readonly apiBasePath = 'contact';
@@ -368,38 +367,4 @@ export default class ContactApi extends BaseApi {
368
367
  };
369
368
  }
370
369
 
371
- /**
372
- * Pols specific batch process until status of it isn't turned from 'pending to something else.
373
- */
374
- private async polling(batchId: string, repeats = 0): Promise<BatchProcessResponseDto> {
375
- let batchProcess: BatchProcessResponseDto;
376
-
377
- try {
378
- batchProcess = await debouncePromise(() => this.batchProcessApi.getBatchProcess(batchId), 1000);
379
- } catch (e) {
380
- if (
381
- repeats < FAILED_REQUEST_REPEATS
382
- && 'statusCode' in (e as object)
383
- && (e as unknown as ApiError).statusCode === 410
384
- ) {
385
- return await debouncePromise(() => this.polling(batchId, repeats + 1), 2000);
386
- }
387
- if (repeats < FAILED_REQUEST_REPEATS) {
388
- return this.polling(batchId, repeats + 1);
389
- }
390
- throw new CreateContactsBatchError((e as unknown as Error).message, batchId);
391
- }
392
-
393
- if (batchProcess.status === BatchProcessStatus.failed) {
394
- throw new CreateContactsBatchError(
395
- 'Could not complete batch process',
396
- batchId,
397
- batchProcess.messages
398
- );
399
- }
400
-
401
- return batchProcess.status === BatchProcessStatus.pending
402
- ? this.polling(batchId)
403
- : batchProcess;
404
- }
405
370
  }
package/src/types.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import { Token } from '@or-sdk/base';
2
2
  import {
3
3
  BatchProcessStatus,
4
+ BulkContactDto,
5
+ BulkCreateRequestDto,
4
6
  ContactBookParamsDto,
5
7
  CreateFieldSchemaDto,
6
8
  DeleteContactMultiParamsDto,
@@ -39,6 +41,12 @@ export type ContactsConfig = {
39
41
  * make many requests, for example for bulk operations.
40
42
  */
41
43
  withKeepAliveAgents?: boolean;
44
+
45
+ /**
46
+ * If true, the API error details like request url, params and body,
47
+ * will be outputted to console
48
+ */
49
+ withApiErrorLog?: boolean;
42
50
  };
43
51
 
44
52
  export interface ContactBookParams extends AdaptedListParams<ContactBookParamsDto> {
@@ -68,3 +76,11 @@ export type TrackBatchProcessResponse = {
68
76
  };
69
77
 
70
78
  export type CreateFieldSchemaParams = CreateFieldSchemaDto & {presetIds?: string[];};
79
+
80
+ export type BulkCreateData = Omit<BulkCreateRequestDto, 'batchId' | 'batchGroupId' | 'contacts'>
81
+ & { contacts: OptionalBy<BulkContactDto, 'contactKey'>[]; };
82
+
83
+ export type BatchBulkCreateData = Omit<BulkCreateRequestDto, 'batchId' | 'batchGroupId'>;
84
+
85
+ export type CreateBulkResults = {created: Record<string, string>; failed: Record<string, string>;};
86
+