@vrplatform/log 2.0.41 → 2.0.43

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 (60) hide show
  1. package/build/main/baselog.d.ts +19 -0
  2. package/build/main/baselog.js +137 -0
  3. package/build/main/baselog.js.map +1 -0
  4. package/build/main/color.d.ts +54 -0
  5. package/build/main/color.js +371 -0
  6. package/build/main/color.js.map +1 -0
  7. package/build/main/common.d.ts +29 -0
  8. package/build/main/common.js +86 -0
  9. package/build/main/common.js.map +1 -0
  10. package/build/main/index.spec.d.ts +0 -0
  11. package/build/main/index.spec.js +2 -0
  12. package/build/main/index.spec.js.map +1 -0
  13. package/build/main/log/baselog.d.ts +2 -1
  14. package/build/main/log/baselog.js +6 -3
  15. package/build/main/log/baselog.js.map +1 -1
  16. package/build/main/tracking/index.js +5 -3
  17. package/build/main/tracking/index.js.map +1 -1
  18. package/build/main/type.d.ts +39 -0
  19. package/build/main/{tracking/eventTypes.js → type.js} +1 -1
  20. package/build/main/type.js.map +1 -0
  21. package/build/module/baselog.d.ts +19 -0
  22. package/build/module/baselog.js +120 -0
  23. package/build/module/baselog.js.map +1 -0
  24. package/build/module/color.d.ts +54 -0
  25. package/build/module/color.js +375 -0
  26. package/build/module/color.js.map +1 -0
  27. package/build/module/common.d.ts +29 -0
  28. package/build/module/common.js +80 -0
  29. package/build/module/common.js.map +1 -0
  30. package/build/module/index.spec.d.ts +0 -0
  31. package/build/module/index.spec.js +2 -0
  32. package/build/module/index.spec.js.map +1 -0
  33. package/build/module/log/baselog.d.ts +2 -1
  34. package/build/module/log/baselog.js +6 -3
  35. package/build/module/log/baselog.js.map +1 -1
  36. package/build/module/tracking/index.js +5 -3
  37. package/build/module/tracking/index.js.map +1 -1
  38. package/build/module/type.d.ts +39 -0
  39. package/build/module/type.js +2 -0
  40. package/build/module/type.js.map +1 -0
  41. package/package.json +1 -1
  42. package/src/log/baselog.ts +8 -2
  43. package/src/tracking/index.ts +3 -3
  44. package/build/main/tracking/_intercom.d.ts +0 -109
  45. package/build/main/tracking/_intercom.js +0 -139
  46. package/build/main/tracking/_intercom.js.map +0 -1
  47. package/build/main/tracking/eventTypes.d.ts +0 -16
  48. package/build/main/tracking/eventTypes.js.map +0 -1
  49. package/build/main/tracking/intercom.d.ts +0 -109
  50. package/build/main/tracking/intercom.js +0 -139
  51. package/build/main/tracking/intercom.js.map +0 -1
  52. package/build/module/tracking/_intercom.d.ts +0 -109
  53. package/build/module/tracking/_intercom.js +0 -136
  54. package/build/module/tracking/_intercom.js.map +0 -1
  55. package/build/module/tracking/eventTypes.d.ts +0 -16
  56. package/build/module/tracking/eventTypes.js +0 -2
  57. package/build/module/tracking/eventTypes.js.map +0 -1
  58. package/build/module/tracking/intercom.d.ts +0 -109
  59. package/build/module/tracking/intercom.js +0 -136
  60. package/build/module/tracking/intercom.js.map +0 -1
@@ -0,0 +1,39 @@
1
+ export type LogFn = (message: any, additionalContext?: Record<string, any>) => void;
2
+ export type LogFns = {
3
+ error: LogFn;
4
+ info: LogFn;
5
+ debug: LogFn;
6
+ warn: LogFn;
7
+ };
8
+ export type Log = LogFns & {
9
+ child: (data: ChildLogOptions) => Log;
10
+ addContext: (data: Record<string, any>) => void;
11
+ };
12
+ export type ChildLogOptions = {
13
+ correlationId?: string;
14
+ name?: string;
15
+ request?: any;
16
+ context?: Record<string, any>;
17
+ };
18
+ type Res = Response | {
19
+ status: number;
20
+ statusText?: string;
21
+ headers?: Record<string, string>;
22
+ body?: any;
23
+ response?: Response;
24
+ };
25
+ export type BaseLog = Log & {
26
+ flush(): Promise<void> | void;
27
+ };
28
+ export type WorkerLog = BaseLog & {
29
+ respond(response: Res | Promise<Res> | (() => Res | Promise<Res>)): Promise<Response>;
30
+ };
31
+ export type RequestLike = {
32
+ headers: {
33
+ get: (key: string) => string | null;
34
+ };
35
+ method: string;
36
+ url: string;
37
+ json: () => Promise<any>;
38
+ };
39
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","sourceRoot":"src/","sources":["type.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vrplatform/log",
3
- "version": "2.0.41",
3
+ "version": "2.0.43",
4
4
  "main": "build/main/index.js",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -35,9 +35,11 @@ export function createBaseLog(
35
35
  context,
36
36
  type,
37
37
  correlationId,
38
+ sessionId,
38
39
  executionContext,
39
40
  }: {
40
41
  correlationId?: string;
42
+ sessionId?: string;
41
43
  environment?: 'development' | 'production';
42
44
  type?: 'worker' | 'durableObject';
43
45
  workerId?: string;
@@ -85,6 +87,8 @@ export function createBaseLog(
85
87
  });
86
88
  }
87
89
 
90
+ const sid = sessionId || crypto.randomUUID().substring(0, 13);
91
+
88
92
  function createBaseLog(arg: ChildLogOptions = {}): Log {
89
93
  const childContext = arg.context || {};
90
94
  if (arg.request) {
@@ -106,6 +110,7 @@ export function createBaseLog(
106
110
  ...childContext,
107
111
  ...additionalContext,
108
112
  correlationId: cid,
113
+ sessionId: sid,
109
114
  });
110
115
  if (consoleLog) {
111
116
  const name = arg.name ? `${app}/${arg.name}` : app;
@@ -119,7 +124,8 @@ export function createBaseLog(
119
124
 
120
125
  error = message instanceof Error ? message : error;
121
126
  message = message instanceof Error ? message.message : message;
122
- const formatted = `[${lev}] [${name}]${cid ? ` [${cid}]` : ''} ${message}`;
127
+ const s = [sid, cid].filter(Boolean).join('/');
128
+ const formatted = `[${lev}] [${name}]${s ? ` [${s}]` : ''} ${message}`;
123
129
  if (typeof consoleLog === 'function')
124
130
  consoleLog({
125
131
  formatted,
@@ -141,7 +147,7 @@ export function createBaseLog(
141
147
  .reset()
142
148
  .color('blue')
143
149
  .bold()
144
- .append(cid ? `[${cid}] ` : '')
150
+ .append(s ? `[${s}] ` : '')
145
151
  .reset()
146
152
  .append(message)
147
153
  .log();
@@ -164,7 +164,7 @@ export const useTracking = (
164
164
  event,
165
165
  packageName,
166
166
  properties,
167
- timestamp = new Date(),
167
+ // timestamp = new Date(),
168
168
  }: TrackProps<T>) => {
169
169
  if (isDev || isTest(userId || anonymousId || '', groupId)) return;
170
170
 
@@ -176,7 +176,7 @@ export const useTracking = (
176
176
  tenantId: groupId,
177
177
  userId: userId,
178
178
  props: properties,
179
- createdAt: timestamp,
179
+ // createdAt: timestamp,
180
180
  packageName,
181
181
  },
182
182
  }).id
@@ -189,7 +189,7 @@ export const useTracking = (
189
189
  user_id: userId,
190
190
  event_name: event,
191
191
  metadata: convertValuesToString(properties),
192
- created_at: Math.floor(timestamp.getTime() / 1000),
192
+ // created_at: Math.floor(timestamp.getTime() / 1000),
193
193
  },
194
194
  });
195
195
  } catch (e) {
@@ -1,109 +0,0 @@
1
- import type { Log } from '../log';
2
- export declare class IntercomAPI {
3
- constructor(token: string, log?: Log);
4
- private headers;
5
- private log?;
6
- private fetch;
7
- getUserByUserId(userId: string): Promise<{
8
- type: "list";
9
- data: {
10
- id: string;
11
- }[] | undefined;
12
- total_count: 0;
13
- pages: {
14
- type: "pages";
15
- page: 1;
16
- per_page: 10;
17
- total_pages: 0;
18
- };
19
- } | undefined>;
20
- createUser({ data, userId, }: {
21
- userId: string;
22
- data: {
23
- email: string;
24
- name: string;
25
- custom_attributes: Record<string, any>;
26
- };
27
- }): Promise<unknown>;
28
- updateUser({ data, contactId, }: {
29
- contactId: string;
30
- data: {
31
- email?: string;
32
- name?: string;
33
- custom_attributes: Record<string, any>;
34
- [key: string]: any;
35
- };
36
- }): Promise<unknown>;
37
- deleteUser(intercom_contact_id: string): Promise<{
38
- id: "6657adf56abd0167d9419d1c";
39
- external_id: "70";
40
- type: "contact";
41
- deleted: true;
42
- } | undefined>;
43
- createCompanyUser(data: {
44
- intercom_contact_id: string;
45
- intercom_company_id: string;
46
- }): Promise<unknown>;
47
- deleteCompanyUser({ intercom_company_id, intercom_contact_id, }: {
48
- intercom_contact_id: string;
49
- intercom_company_id: string;
50
- }): Promise<{
51
- id: "6657adc96abd0167d9419ca7";
52
- } | undefined>;
53
- trackEvent(data: {
54
- user_id: string;
55
- event_name: string;
56
- metadata: Record<string, any>;
57
- }): Promise<unknown>;
58
- getCompanyByTenantId(tenantId: string): Promise<{
59
- type: "list";
60
- data: [{
61
- type: "company";
62
- company_id: "remote_companies_scroll_2";
63
- id: "664df5436abd01f7945e1a78";
64
- app_id: "this_is_an_id111_that_should_be_at_least_";
65
- name: "IntercomQATest1";
66
- remote_created_at: 1716385091;
67
- created_at: 1716385091;
68
- updated_at: 1716385091;
69
- monthly_spend: 0;
70
- session_count: 0;
71
- user_count: 4;
72
- tags: {
73
- type: "tag.list";
74
- tags: [];
75
- };
76
- segments: {
77
- type: "segment.list";
78
- segments: [];
79
- };
80
- custom_attributes: Record<string, string>;
81
- }] | undefined;
82
- pages: {
83
- type: "pages";
84
- next: null;
85
- page: 1;
86
- per_page: 15;
87
- total_pages: 1;
88
- };
89
- total_count: 1;
90
- } | undefined>;
91
- createCompany({ data, tenantId, }: {
92
- tenantId: string;
93
- data: {
94
- name: string;
95
- remote_created_at: number;
96
- custom_attributes: Record<string, any>;
97
- };
98
- }): Promise<unknown>;
99
- updateCompany({ data, companyId, }: {
100
- companyId: string;
101
- data: Record<string, any>;
102
- }): Promise<unknown>;
103
- deleteCompany(intercom_company_id: string): Promise<{
104
- id: "6657adc96abd0167d9419ca7";
105
- object: "company";
106
- deleted: true;
107
- } | undefined>;
108
- }
109
- export declare function useIntercom(token: string, log?: Log): IntercomAPI;
@@ -1,139 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IntercomAPI = void 0;
4
- exports.useIntercom = useIntercom;
5
- class IntercomAPI {
6
- constructor(token, log) {
7
- this.headers = {
8
- 'Content-Type': 'application/json',
9
- Accept: 'application/json',
10
- 'Intercom-Version': '2.11',
11
- Authorization: `Bearer ${token}`,
12
- };
13
- this.log = log;
14
- }
15
- async fetch(path, options) {
16
- if (options?.data) {
17
- options.body = JSON.stringify(options.data);
18
- options.data = undefined;
19
- }
20
- try {
21
- const result = await fetch(`https://api.intercom.io${path}`, {
22
- method: 'GET',
23
- headers: this.headers,
24
- ...options,
25
- });
26
- if (!result.ok) {
27
- this.log?.info('Failed to fetch from Intercom', {
28
- result: {
29
- status: result.status,
30
- statusText: result.statusText,
31
- body: await result.text(),
32
- },
33
- });
34
- if (result.status === 404)
35
- return undefined;
36
- if (result.status === 429) {
37
- console.log('Intercom rate limit exceeded, waiting for 1 minute');
38
- // X-RateLimit-Reset: 1487332520 => timestamp from header response when resetting
39
- const reset = Number(result.headers.get('X-RateLimit-Reset'));
40
- if (reset) {
41
- const now = Math.floor(Date.now() / 1000);
42
- const wait = reset - now + 1;
43
- console.log(`Waiting for ${wait} seconds`);
44
- await new Promise((resolve) => setTimeout(resolve, wait * 1000));
45
- return await this.fetch(path, options);
46
- }
47
- }
48
- }
49
- return result.status === 202 ? {} : (await result.json());
50
- }
51
- catch (error) {
52
- this.log?.error(error);
53
- return undefined;
54
- }
55
- }
56
- // User
57
- async getUserByUserId(userId) {
58
- return await this.fetch('/contacts/search', {
59
- method: 'POST',
60
- data: {
61
- query: {
62
- field: 'external_id',
63
- operator: '=',
64
- value: userId,
65
- },
66
- },
67
- });
68
- }
69
- async createUser({ data, userId, }) {
70
- return await this.fetch('/contacts', {
71
- method: 'POST',
72
- data: { ...data, external_id: userId },
73
- });
74
- }
75
- async updateUser({ data, contactId, }) {
76
- return await this.fetch(`/contacts/${contactId}`, {
77
- method: 'PUT',
78
- data,
79
- });
80
- }
81
- async deleteUser(intercom_contact_id) {
82
- return await this.fetch(`/contacts/${intercom_contact_id}`, {
83
- method: 'DELETE',
84
- });
85
- }
86
- async createCompanyUser(data) {
87
- return await this.fetch(`/contacts/${data.intercom_contact_id}/companies`, {
88
- method: 'POST',
89
- data: {
90
- id: data.intercom_company_id,
91
- },
92
- });
93
- }
94
- async deleteCompanyUser({ intercom_company_id, intercom_contact_id, }) {
95
- return await this.fetch(`/contacts/${intercom_contact_id}/companies/${intercom_company_id}`, {
96
- method: 'DELETE',
97
- });
98
- }
99
- async trackEvent(data) {
100
- return await this.fetch('/events', {
101
- method: 'POST',
102
- data: {
103
- created_at: Math.floor(new Date().getTime() / 1000), // to seconds
104
- ...data,
105
- },
106
- });
107
- }
108
- // Company
109
- async getCompanyByTenantId(tenantId) {
110
- return await this.fetch(`/companies?company_id=${tenantId}`, {
111
- method: 'GET',
112
- });
113
- }
114
- async createCompany({ data, tenantId, }) {
115
- return await this.fetch('/companies', {
116
- method: 'POST',
117
- data: {
118
- ...data,
119
- company_id: tenantId,
120
- },
121
- });
122
- }
123
- async updateCompany({ data, companyId, }) {
124
- return await this.fetch(`/companies/${companyId}`, {
125
- method: 'PUT',
126
- data,
127
- });
128
- }
129
- async deleteCompany(intercom_company_id) {
130
- return await this.fetch(`/companies/${intercom_company_id}`, {
131
- method: 'DELETE',
132
- });
133
- }
134
- }
135
- exports.IntercomAPI = IntercomAPI;
136
- function useIntercom(token, log) {
137
- return new IntercomAPI(token, log);
138
- }
139
- //# sourceMappingURL=_intercom.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_intercom.js","sourceRoot":"src/","sources":["tracking/_intercom.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- type AuthEvent = 'account_signin_completed' | 'account_signup_code_requested' | 'account_signup_code_completed' | 'account_signup_code_failed' | 'account_signup_completed' | 'account_password_reset_requested' | 'account_password_reset_failed' | 'account_password_reset_completed' | 'account_invitation_accepted' | 'account_signed_out';
2
- type TeamEvent = 'team_added' | 'team_info_updated' | 'team_deleted' | 'team_member_removed';
3
- type ConnectionEvent = 'connection_created' | 'connection_reconnected' | 'connection_deleted' | 'connection_requested';
4
- type OwnershipEvent = 'ownership_created' | 'ownership_updated' | 'ownership_deleted';
5
- type OwnerEvent = 'owner_created' | 'owner_updated' | 'owner_deleted' | 'owner_tax_info_modal_opened' | 'owner_tax_info_modal_submitted';
6
- type SetupEvent = 'setup_classes_set' | 'setup_accounting_version_completed' | 'setup_accounting_config_completed' | 'setup_owner_imported' | 'setup_listing_imported';
7
- type AutomationEvent = 'automation_created' | 'automation_updated' | 'automation_deleted';
8
- type TaxStatementEvent = 'tax_statement_preview_opened' | 'tax_statement_downloaded';
9
- type GLOwnerStatementEvent = 'gl_owner_statement_preview_opened' | 'gl_owner_statement_downloaded';
10
- type HyperlineEvent = 'hyperline_invoice_ready' | 'hyperline_invoice_settled' | 'hyperline_trial_started' | 'hyperline_trial_ended' | 'hyperline_subscription_activated' | 'hyperline_subscription_cancelled' | 'hyperline_subscription_created' | 'hyperline_subscription_errored' | 'hyperline_subscription_paused' | 'hyperline_subscription_voided' | 'hyperline_subscription_charged' | 'hyperline_customer_created' | 'hyperline_customer_updated' | 'hyperline_payment_method_created' | 'hyperline_payment_method_errored' | 'hyperline_payment_method_deleted';
11
- type ListingEvent = 'listing_activated' | 'listing_deactivated';
12
- type ReportEvent = 'listings_reported';
13
- type UserEvent = 'update_refresh_accepted' | 'owner_statement_opened';
14
- type TestEvent = 'test_event' | 'test_error';
15
- export type TrackingEvent = AuthEvent | TeamEvent | ConnectionEvent | OwnershipEvent | OwnerEvent | SetupEvent | AutomationEvent | TaxStatementEvent | GLOwnerStatementEvent | HyperlineEvent | UserEvent | ListingEvent | ReportEvent | TestEvent;
16
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"eventTypes.js","sourceRoot":"src/","sources":["tracking/eventTypes.ts"],"names":[],"mappings":""}
@@ -1,109 +0,0 @@
1
- import type { Log } from '../log';
2
- export declare class IntercomAPI {
3
- constructor(token: string, log?: Log);
4
- private headers;
5
- private log?;
6
- private fetch;
7
- getUserByUserId(userId: string): Promise<{
8
- type: "list";
9
- data: {
10
- id: string;
11
- }[] | undefined;
12
- total_count: 0;
13
- pages: {
14
- type: "pages";
15
- page: 1;
16
- per_page: 10;
17
- total_pages: 0;
18
- };
19
- } | undefined>;
20
- createUser({ data, userId, }: {
21
- userId: string;
22
- data: {
23
- email: string;
24
- name: string;
25
- custom_attributes: Record<string, any>;
26
- };
27
- }): Promise<unknown>;
28
- updateUser({ data, contactId, }: {
29
- contactId: string;
30
- data: {
31
- email?: string;
32
- name?: string;
33
- custom_attributes: Record<string, any>;
34
- [key: string]: any;
35
- };
36
- }): Promise<unknown>;
37
- deleteUser(intercom_contact_id: string): Promise<{
38
- id: "6657adf56abd0167d9419d1c";
39
- external_id: "70";
40
- type: "contact";
41
- deleted: true;
42
- } | undefined>;
43
- createCompanyUser(data: {
44
- intercom_contact_id: string;
45
- intercom_company_id: string;
46
- }): Promise<unknown>;
47
- deleteCompanyUser({ intercom_company_id, intercom_contact_id, }: {
48
- intercom_contact_id: string;
49
- intercom_company_id: string;
50
- }): Promise<{
51
- id: "6657adc96abd0167d9419ca7";
52
- } | undefined>;
53
- trackEvent(data: {
54
- user_id: string;
55
- event_name: string;
56
- metadata: Record<string, any>;
57
- }): Promise<unknown>;
58
- getCompanyByTenantId(tenantId: string): Promise<{
59
- type: "list";
60
- data: [{
61
- type: "company";
62
- company_id: "remote_companies_scroll_2";
63
- id: "664df5436abd01f7945e1a78";
64
- app_id: "this_is_an_id111_that_should_be_at_least_";
65
- name: "IntercomQATest1";
66
- remote_created_at: 1716385091;
67
- created_at: 1716385091;
68
- updated_at: 1716385091;
69
- monthly_spend: 0;
70
- session_count: 0;
71
- user_count: 4;
72
- tags: {
73
- type: "tag.list";
74
- tags: [];
75
- };
76
- segments: {
77
- type: "segment.list";
78
- segments: [];
79
- };
80
- custom_attributes: Record<string, string>;
81
- }] | undefined;
82
- pages: {
83
- type: "pages";
84
- next: null;
85
- page: 1;
86
- per_page: 15;
87
- total_pages: 1;
88
- };
89
- total_count: 1;
90
- } | undefined>;
91
- createCompany({ data, tenantId, }: {
92
- tenantId: string;
93
- data: {
94
- name: string;
95
- remote_created_at: number;
96
- custom_attributes: Record<string, any>;
97
- };
98
- }): Promise<unknown>;
99
- updateCompany({ data, companyId, }: {
100
- companyId: string;
101
- data: Record<string, any>;
102
- }): Promise<unknown>;
103
- deleteCompany(intercom_company_id: string): Promise<{
104
- id: "6657adc96abd0167d9419ca7";
105
- object: "company";
106
- deleted: true;
107
- } | undefined>;
108
- }
109
- export declare function useIntercom(token: string, log?: Log): IntercomAPI;
@@ -1,139 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IntercomAPI = void 0;
4
- exports.useIntercom = useIntercom;
5
- class IntercomAPI {
6
- constructor(token, log) {
7
- this.headers = {
8
- 'Content-Type': 'application/json',
9
- Accept: 'application/json',
10
- 'Intercom-Version': '2.11',
11
- Authorization: `Bearer ${token}`,
12
- };
13
- this.log = log;
14
- }
15
- async fetch(path, options) {
16
- if (options?.data) {
17
- options.body = JSON.stringify(options.data);
18
- options.data = undefined;
19
- }
20
- try {
21
- const result = await fetch(`https://api.intercom.io${path}`, {
22
- method: 'GET',
23
- headers: this.headers,
24
- ...options,
25
- });
26
- if (!result.ok) {
27
- this.log?.info('Failed to fetch from Intercom', {
28
- result: {
29
- status: result.status,
30
- statusText: result.statusText,
31
- body: await result.text(),
32
- },
33
- });
34
- if (result.status === 404)
35
- return undefined;
36
- if (result.status === 429) {
37
- console.log('Intercom rate limit exceeded, waiting for 1 minute');
38
- // X-RateLimit-Reset: 1487332520 => timestamp from header response when resetting
39
- const reset = Number(result.headers.get('X-RateLimit-Reset'));
40
- if (reset) {
41
- const now = Math.floor(Date.now() / 1000);
42
- const wait = reset - now + 1;
43
- console.log(`Waiting for ${wait} seconds`);
44
- await new Promise((resolve) => setTimeout(resolve, wait * 1000));
45
- return await this.fetch(path, options);
46
- }
47
- }
48
- }
49
- return result.status === 202 ? {} : (await result.json());
50
- }
51
- catch (error) {
52
- this.log?.error(error);
53
- return undefined;
54
- }
55
- }
56
- // User
57
- async getUserByUserId(userId) {
58
- return await this.fetch('/contacts/search', {
59
- method: 'POST',
60
- data: {
61
- query: {
62
- field: 'external_id',
63
- operator: '=',
64
- value: userId,
65
- },
66
- },
67
- });
68
- }
69
- async createUser({ data, userId, }) {
70
- return await this.fetch('/contacts', {
71
- method: 'POST',
72
- data: { ...data, external_id: userId },
73
- });
74
- }
75
- async updateUser({ data, contactId, }) {
76
- return await this.fetch(`/contacts/${contactId}`, {
77
- method: 'PUT',
78
- data,
79
- });
80
- }
81
- async deleteUser(intercom_contact_id) {
82
- return await this.fetch(`/contacts/${intercom_contact_id}`, {
83
- method: 'DELETE',
84
- });
85
- }
86
- async createCompanyUser(data) {
87
- return await this.fetch(`/contacts/${data.intercom_contact_id}/companies`, {
88
- method: 'POST',
89
- data: {
90
- id: data.intercom_company_id,
91
- },
92
- });
93
- }
94
- async deleteCompanyUser({ intercom_company_id, intercom_contact_id, }) {
95
- return await this.fetch(`/contacts/${intercom_contact_id}/companies/${intercom_company_id}`, {
96
- method: 'DELETE',
97
- });
98
- }
99
- async trackEvent(data) {
100
- return await this.fetch('/events', {
101
- method: 'POST',
102
- data: {
103
- created_at: Math.floor(new Date().getTime() / 1000), // to seconds
104
- ...data,
105
- },
106
- });
107
- }
108
- // Company
109
- async getCompanyByTenantId(tenantId) {
110
- return await this.fetch(`/companies?company_id=${tenantId}`, {
111
- method: 'GET',
112
- });
113
- }
114
- async createCompany({ data, tenantId, }) {
115
- return await this.fetch('/companies', {
116
- method: 'POST',
117
- data: {
118
- ...data,
119
- company_id: tenantId,
120
- },
121
- });
122
- }
123
- async updateCompany({ data, companyId, }) {
124
- return await this.fetch(`/companies/${companyId}`, {
125
- method: 'PUT',
126
- data,
127
- });
128
- }
129
- async deleteCompany(intercom_company_id) {
130
- return await this.fetch(`/companies/${intercom_company_id}`, {
131
- method: 'DELETE',
132
- });
133
- }
134
- }
135
- exports.IntercomAPI = IntercomAPI;
136
- function useIntercom(token, log) {
137
- return new IntercomAPI(token, log);
138
- }
139
- //# sourceMappingURL=intercom.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"intercom.js","sourceRoot":"src/","sources":["tracking/intercom.ts"],"names":[],"mappings":"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"}