@vrplatform/log 2.0.36 → 2.0.38
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/build/main/tracking/_intercom.d.ts +109 -0
- package/build/main/tracking/_intercom.js +139 -0
- package/build/main/tracking/_intercom.js.map +1 -0
- package/build/main/tracking/eventTypes.d.ts +16 -0
- package/build/main/{type.js → tracking/eventTypes.js} +1 -1
- package/build/main/tracking/eventTypes.js.map +1 -0
- package/build/main/tracking/index.d.ts +0 -6
- package/build/main/tracking/index.js +5 -82
- package/build/main/tracking/index.js.map +1 -1
- package/build/main/tracking/intercom.d.ts +109 -0
- package/build/main/tracking/intercom.js +139 -0
- package/build/main/tracking/intercom.js.map +1 -0
- package/build/main/tracking/types.d.ts +16 -3
- package/build/module/tracking/_intercom.d.ts +109 -0
- package/build/module/tracking/_intercom.js +136 -0
- package/build/module/tracking/_intercom.js.map +1 -0
- package/build/module/tracking/eventTypes.d.ts +16 -0
- package/build/module/tracking/eventTypes.js +2 -0
- package/build/module/tracking/eventTypes.js.map +1 -0
- package/build/module/tracking/index.d.ts +0 -6
- package/build/module/tracking/index.js +6 -83
- package/build/module/tracking/index.js.map +1 -1
- package/build/module/tracking/intercom.d.ts +109 -0
- package/build/module/tracking/intercom.js +136 -0
- package/build/module/tracking/intercom.js.map +1 -0
- package/build/module/tracking/types.d.ts +16 -3
- package/package.json +1 -3
- package/src/tracking/index.ts +5 -110
- package/src/tracking/types.ts +18 -3
- package/build/main/baselog.d.ts +0 -19
- package/build/main/baselog.js +0 -137
- package/build/main/baselog.js.map +0 -1
- package/build/main/color.d.ts +0 -54
- package/build/main/color.js +0 -371
- package/build/main/color.js.map +0 -1
- package/build/main/common.d.ts +0 -29
- package/build/main/common.js +0 -86
- package/build/main/common.js.map +0 -1
- package/build/main/index.spec.d.ts +0 -0
- package/build/main/index.spec.js +0 -2
- package/build/main/index.spec.js.map +0 -1
- package/build/main/type.d.ts +0 -39
- package/build/main/type.js.map +0 -1
- package/build/module/baselog.d.ts +0 -19
- package/build/module/baselog.js +0 -120
- package/build/module/baselog.js.map +0 -1
- package/build/module/color.d.ts +0 -54
- package/build/module/color.js +0 -375
- package/build/module/color.js.map +0 -1
- package/build/module/common.d.ts +0 -29
- package/build/module/common.js +0 -80
- package/build/module/common.js.map +0 -1
- package/build/module/index.spec.d.ts +0 -0
- package/build/module/index.spec.js +0 -2
- package/build/module/index.spec.js.map +0 -1
- package/build/module/type.d.ts +0 -39
- package/build/module/type.js +0 -2
- package/build/module/type.js.map +0 -1
|
@@ -0,0 +1,139 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intercom.js","sourceRoot":"src/","sources":["tracking/intercom.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,8 +24,6 @@ export type IdentifyProps = {
|
|
|
24
24
|
role?: UserRole;
|
|
25
25
|
[key: string]: string | number | boolean | null | undefined;
|
|
26
26
|
};
|
|
27
|
-
disableGeoip?: boolean;
|
|
28
|
-
timestamp?: Date;
|
|
29
27
|
};
|
|
30
28
|
export type GroupProps = OptionalUser<{
|
|
31
29
|
groupId: string;
|
|
@@ -52,7 +50,6 @@ export type GroupProps = OptionalUser<{
|
|
|
52
50
|
trialUntil?: string;
|
|
53
51
|
[key: string]: string | number | boolean | null | undefined;
|
|
54
52
|
};
|
|
55
|
-
timestamp?: Date;
|
|
56
53
|
}>;
|
|
57
54
|
export type TrackingEventProps = {
|
|
58
55
|
account_invitation_accepted: AccountInvitationAcceptedProps;
|
|
@@ -91,9 +88,11 @@ export type TrackingEventProps = {
|
|
|
91
88
|
tax_statement_preview_opened: TaxStatementPreviewOpenedProps;
|
|
92
89
|
tax_statement_downloaded: TaxStatementDownloadedProps;
|
|
93
90
|
team_added: TeamAddedProps;
|
|
91
|
+
team_canceled: TeamCanceledProps;
|
|
94
92
|
team_deleted: TeamDeletedProps;
|
|
95
93
|
team_info_updated: TeamInfoUpdatedProps;
|
|
96
94
|
team_member_removed: TeamMemberRemovedProps;
|
|
95
|
+
team_reinstated: TeamReinstatedProps;
|
|
97
96
|
gl_owner_statement_preview_opened: GlOwnerStatementPreviewOpenedProps;
|
|
98
97
|
gl_owner_statement_downloaded: GlOwnerStatementDownloadedProps;
|
|
99
98
|
hyperline_invoice_ready: HyperlineInvoiceReadyProps;
|
|
@@ -497,6 +496,13 @@ type TeamAddedProps = Partial<{
|
|
|
497
496
|
userId: string;
|
|
498
497
|
userEmail: string;
|
|
499
498
|
}>;
|
|
499
|
+
type TeamCanceledProps = Partial<{
|
|
500
|
+
tenantId: string;
|
|
501
|
+
customerId: string;
|
|
502
|
+
subscriptionId: string;
|
|
503
|
+
feedback: string;
|
|
504
|
+
reason: string;
|
|
505
|
+
}>;
|
|
500
506
|
type TeamDeletedProps = Partial<{
|
|
501
507
|
tenantId: string;
|
|
502
508
|
userId: string;
|
|
@@ -513,6 +519,13 @@ type TeamMemberRemovedProps = Partial<{
|
|
|
513
519
|
tenantId: string;
|
|
514
520
|
userEmail: string;
|
|
515
521
|
}>;
|
|
522
|
+
type TeamReinstatedProps = Partial<{
|
|
523
|
+
tenantId: string;
|
|
524
|
+
customerId: string;
|
|
525
|
+
subscriptionId: string;
|
|
526
|
+
feedback: string;
|
|
527
|
+
reason: string;
|
|
528
|
+
}>;
|
|
516
529
|
type TestErrorProps = Partial<{
|
|
517
530
|
userId: string;
|
|
518
531
|
tenantId: string;
|
|
@@ -0,0 +1,109 @@
|
|
|
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;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
export class IntercomAPI {
|
|
2
|
+
constructor(token, log) {
|
|
3
|
+
this.headers = {
|
|
4
|
+
'Content-Type': 'application/json',
|
|
5
|
+
Accept: 'application/json',
|
|
6
|
+
'Intercom-Version': '2.11',
|
|
7
|
+
Authorization: `Bearer ${token}`,
|
|
8
|
+
};
|
|
9
|
+
this.log = log;
|
|
10
|
+
}
|
|
11
|
+
headers;
|
|
12
|
+
log;
|
|
13
|
+
async fetch(path, options) {
|
|
14
|
+
if (options?.data) {
|
|
15
|
+
options.body = JSON.stringify(options.data);
|
|
16
|
+
options.data = undefined;
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const result = await fetch(`https://api.intercom.io${path}`, {
|
|
20
|
+
method: 'GET',
|
|
21
|
+
headers: this.headers,
|
|
22
|
+
...options,
|
|
23
|
+
});
|
|
24
|
+
if (!result.ok) {
|
|
25
|
+
this.log?.info('Failed to fetch from Intercom', {
|
|
26
|
+
result: {
|
|
27
|
+
status: result.status,
|
|
28
|
+
statusText: result.statusText,
|
|
29
|
+
body: await result.text(),
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
if (result.status === 404)
|
|
33
|
+
return undefined;
|
|
34
|
+
if (result.status === 429) {
|
|
35
|
+
console.log('Intercom rate limit exceeded, waiting for 1 minute');
|
|
36
|
+
// X-RateLimit-Reset: 1487332520 => timestamp from header response when resetting
|
|
37
|
+
const reset = Number(result.headers.get('X-RateLimit-Reset'));
|
|
38
|
+
if (reset) {
|
|
39
|
+
const now = Math.floor(Date.now() / 1000);
|
|
40
|
+
const wait = reset - now + 1;
|
|
41
|
+
console.log(`Waiting for ${wait} seconds`);
|
|
42
|
+
await new Promise((resolve) => setTimeout(resolve, wait * 1000));
|
|
43
|
+
return await this.fetch(path, options);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return result.status === 202 ? {} : (await result.json());
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
this.log?.error(error);
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// User
|
|
55
|
+
async getUserByUserId(userId) {
|
|
56
|
+
return await this.fetch('/contacts/search', {
|
|
57
|
+
method: 'POST',
|
|
58
|
+
data: {
|
|
59
|
+
query: {
|
|
60
|
+
field: 'external_id',
|
|
61
|
+
operator: '=',
|
|
62
|
+
value: userId,
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
async createUser({ data, userId, }) {
|
|
68
|
+
return await this.fetch('/contacts', {
|
|
69
|
+
method: 'POST',
|
|
70
|
+
data: { ...data, external_id: userId },
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
async updateUser({ data, contactId, }) {
|
|
74
|
+
return await this.fetch(`/contacts/${contactId}`, {
|
|
75
|
+
method: 'PUT',
|
|
76
|
+
data,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
async deleteUser(intercom_contact_id) {
|
|
80
|
+
return await this.fetch(`/contacts/${intercom_contact_id}`, {
|
|
81
|
+
method: 'DELETE',
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
async createCompanyUser(data) {
|
|
85
|
+
return await this.fetch(`/contacts/${data.intercom_contact_id}/companies`, {
|
|
86
|
+
method: 'POST',
|
|
87
|
+
data: {
|
|
88
|
+
id: data.intercom_company_id,
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
async deleteCompanyUser({ intercom_company_id, intercom_contact_id, }) {
|
|
93
|
+
return await this.fetch(`/contacts/${intercom_contact_id}/companies/${intercom_company_id}`, {
|
|
94
|
+
method: 'DELETE',
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
async trackEvent(data) {
|
|
98
|
+
return await this.fetch('/events', {
|
|
99
|
+
method: 'POST',
|
|
100
|
+
data: {
|
|
101
|
+
created_at: Math.floor(new Date().getTime() / 1000), // to seconds
|
|
102
|
+
...data,
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
// Company
|
|
107
|
+
async getCompanyByTenantId(tenantId) {
|
|
108
|
+
return await this.fetch(`/companies?company_id=${tenantId}`, {
|
|
109
|
+
method: 'GET',
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
async createCompany({ data, tenantId, }) {
|
|
113
|
+
return await this.fetch('/companies', {
|
|
114
|
+
method: 'POST',
|
|
115
|
+
data: {
|
|
116
|
+
...data,
|
|
117
|
+
company_id: tenantId,
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
async updateCompany({ data, companyId, }) {
|
|
122
|
+
return await this.fetch(`/companies/${companyId}`, {
|
|
123
|
+
method: 'PUT',
|
|
124
|
+
data,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
async deleteCompany(intercom_company_id) {
|
|
128
|
+
return await this.fetch(`/companies/${intercom_company_id}`, {
|
|
129
|
+
method: 'DELETE',
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export function useIntercom(token, log) {
|
|
134
|
+
return new IntercomAPI(token, log);
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=_intercom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_intercom.js","sourceRoot":"src/","sources":["tracking/_intercom.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
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 {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventTypes.js","sourceRoot":"src/","sources":["tracking/eventTypes.ts"],"names":[],"mappings":""}
|
|
@@ -85,9 +85,7 @@ declare module 'intercom-client' {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
-
import { Analytics } from '@june-so/analytics-node';
|
|
89
88
|
import { Intercom } from 'intercom-client';
|
|
90
|
-
import { PostHog } from 'posthog-node';
|
|
91
89
|
import { type LogBindings, type WorkerLog } from '../log';
|
|
92
90
|
import type { GroupProps, IdentifyProps, TrackProps, TrackingEvent } from './types';
|
|
93
91
|
export * from './types';
|
|
@@ -99,8 +97,6 @@ export type UseTracking = {
|
|
|
99
97
|
dataset: string;
|
|
100
98
|
env: {
|
|
101
99
|
INTERCOM_TOKEN?: string;
|
|
102
|
-
JUNESO_TOKEN?: string;
|
|
103
|
-
POSTHOG_TOKEN?: string;
|
|
104
100
|
HASURA_GRAPHQL_ADMIN_SECRET?: string;
|
|
105
101
|
HASURA_ADMIN_SECRET?: string;
|
|
106
102
|
} & LogBindings;
|
|
@@ -112,7 +108,5 @@ export declare const useTracking: ({ dataset, env, name }: UseTracking, isDev?:
|
|
|
112
108
|
group: (props: GroupProps) => Promise<void>;
|
|
113
109
|
shutdown: () => Promise<any>;
|
|
114
110
|
log: WorkerLog;
|
|
115
|
-
june?: Analytics;
|
|
116
111
|
intercom?: Intercom;
|
|
117
|
-
posthog?: PostHog;
|
|
118
112
|
};
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { useHasuraClient } from '@finalytic/graphql';
|
|
2
|
-
import { Analytics } from '@june-so/analytics-node';
|
|
3
2
|
import { Intercom } from 'intercom-client';
|
|
4
|
-
import { PostHog } from 'posthog-node';
|
|
5
3
|
import { useLog } from '../log';
|
|
6
|
-
import {
|
|
4
|
+
import { isTest } from '../utils';
|
|
7
5
|
import { convertValuesToString } from '../utils/convertValuesToString';
|
|
8
6
|
export * from './types';
|
|
9
7
|
export * from 'intercom-client';
|
|
@@ -25,12 +23,6 @@ export const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
25
23
|
// }),
|
|
26
24
|
})
|
|
27
25
|
: undefined;
|
|
28
|
-
const june = env.JUNESO_TOKEN ? new Analytics(env.JUNESO_TOKEN) : undefined;
|
|
29
|
-
const posthog = env.POSTHOG_TOKEN
|
|
30
|
-
? new PostHog(env.POSTHOG_TOKEN, {
|
|
31
|
-
host: 'https://app.posthog.com',
|
|
32
|
-
})
|
|
33
|
-
: undefined;
|
|
34
26
|
return {
|
|
35
27
|
// General
|
|
36
28
|
track: async ({ userId, anonymousId, groupId, event, packageName, properties, timestamp = new Date(), }) => {
|
|
@@ -46,48 +38,7 @@ export const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
46
38
|
packageName,
|
|
47
39
|
},
|
|
48
40
|
}).id);
|
|
49
|
-
if (
|
|
50
|
-
posthog?.capture({
|
|
51
|
-
distinctId: anonymousId,
|
|
52
|
-
event,
|
|
53
|
-
groups: {
|
|
54
|
-
tenant: groupId,
|
|
55
|
-
},
|
|
56
|
-
timestamp,
|
|
57
|
-
properties: convertKeysToSnakeCase(properties),
|
|
58
|
-
});
|
|
59
|
-
june?.track({
|
|
60
|
-
anonymousId,
|
|
61
|
-
event,
|
|
62
|
-
properties,
|
|
63
|
-
timestamp,
|
|
64
|
-
context: { groupId },
|
|
65
|
-
}, (err) => {
|
|
66
|
-
if (err)
|
|
67
|
-
console.error(err);
|
|
68
|
-
});
|
|
69
|
-
// no intercom for anonymous
|
|
70
|
-
}
|
|
71
|
-
else if (userId) {
|
|
72
|
-
posthog?.capture({
|
|
73
|
-
distinctId: userId,
|
|
74
|
-
event,
|
|
75
|
-
groups: {
|
|
76
|
-
tenant: groupId,
|
|
77
|
-
},
|
|
78
|
-
timestamp,
|
|
79
|
-
properties: convertKeysToSnakeCase(properties),
|
|
80
|
-
});
|
|
81
|
-
june?.track({
|
|
82
|
-
userId,
|
|
83
|
-
event,
|
|
84
|
-
properties,
|
|
85
|
-
timestamp,
|
|
86
|
-
context: { groupId },
|
|
87
|
-
}, (err) => {
|
|
88
|
-
if (err)
|
|
89
|
-
console.error(err);
|
|
90
|
-
});
|
|
41
|
+
if (userId) {
|
|
91
42
|
try {
|
|
92
43
|
await intercom?.dataEvents.create({
|
|
93
44
|
body: {
|
|
@@ -103,19 +54,9 @@ export const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
103
54
|
}
|
|
104
55
|
}
|
|
105
56
|
},
|
|
106
|
-
identify: async ({ traits, userId
|
|
57
|
+
identify: async ({ traits, userId }) => {
|
|
107
58
|
if (isDev || isTest(userId))
|
|
108
59
|
return;
|
|
109
|
-
posthog?.identify({
|
|
110
|
-
distinctId: userId,
|
|
111
|
-
properties: convertKeysToSnakeCase(traits),
|
|
112
|
-
disableGeoip,
|
|
113
|
-
});
|
|
114
|
-
june?.identify({
|
|
115
|
-
userId,
|
|
116
|
-
traits,
|
|
117
|
-
timestamp,
|
|
118
|
-
}, (err) => (err ? console.error(err) : {}));
|
|
119
60
|
// upsert intercom user
|
|
120
61
|
try {
|
|
121
62
|
const data = {
|
|
@@ -152,7 +93,7 @@ export const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
152
93
|
console.error(e);
|
|
153
94
|
}
|
|
154
95
|
},
|
|
155
|
-
group: async ({ traits = {}, groupId, userId, anonymousId,
|
|
96
|
+
group: async ({ traits = {}, groupId, userId, anonymousId, }) => {
|
|
156
97
|
if (isDev || isTest(userId || anonymousId || '', groupId))
|
|
157
98
|
return;
|
|
158
99
|
// add teamId to traits
|
|
@@ -204,23 +145,7 @@ export const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
204
145
|
catch (e) {
|
|
205
146
|
console.error(e);
|
|
206
147
|
}
|
|
207
|
-
if (
|
|
208
|
-
posthog?.groupIdentify({
|
|
209
|
-
groupKey: groupId,
|
|
210
|
-
groupType: 'tenant',
|
|
211
|
-
properties: convertKeysToSnakeCase(traits),
|
|
212
|
-
distinctId: anonymousId,
|
|
213
|
-
});
|
|
214
|
-
june?.group({ anonymousId, groupId, traits, timestamp }, (err) => err ? console.error(err) : {});
|
|
215
|
-
}
|
|
216
|
-
else if (userId) {
|
|
217
|
-
posthog?.groupIdentify({
|
|
218
|
-
groupKey: groupId,
|
|
219
|
-
groupType: 'tenant',
|
|
220
|
-
properties: convertKeysToSnakeCase(traits),
|
|
221
|
-
distinctId: userId,
|
|
222
|
-
});
|
|
223
|
-
june?.group({ userId, groupId, traits, timestamp }, (err) => err ? console.error(err) : {});
|
|
148
|
+
if (userId) {
|
|
224
149
|
// attach intercom user to intercom company
|
|
225
150
|
try {
|
|
226
151
|
const intercomUser = (await intercom?.contacts.search({
|
|
@@ -240,11 +165,9 @@ export const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
240
165
|
}
|
|
241
166
|
}
|
|
242
167
|
},
|
|
243
|
-
shutdown: async () =>
|
|
168
|
+
shutdown: async () => log?.flush(),
|
|
244
169
|
// export dependencies
|
|
245
170
|
intercom,
|
|
246
|
-
posthog,
|
|
247
|
-
june,
|
|
248
171
|
log,
|
|
249
172
|
};
|
|
250
173
|
};
|