@vrplatform/log 2.0.53 → 2.0.55

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 (55) hide show
  1. package/build/main/tracking/_intercom.d.ts +109 -0
  2. package/build/main/tracking/_intercom.js +139 -0
  3. package/build/main/tracking/_intercom.js.map +1 -0
  4. package/build/main/tracking/eventTypes.d.ts +16 -0
  5. package/build/main/{type.js → tracking/eventTypes.js} +1 -1
  6. package/build/main/tracking/eventTypes.js.map +1 -0
  7. package/build/main/tracking/index.d.ts +1 -0
  8. package/build/main/tracking/index.js +41 -14
  9. package/build/main/tracking/index.js.map +1 -1
  10. package/build/main/tracking/intercom.d.ts +109 -0
  11. package/build/main/tracking/intercom.js +139 -0
  12. package/build/main/tracking/intercom.js.map +1 -0
  13. package/build/module/tracking/_intercom.d.ts +109 -0
  14. package/build/module/tracking/_intercom.js +136 -0
  15. package/build/module/tracking/_intercom.js.map +1 -0
  16. package/build/module/tracking/eventTypes.d.ts +16 -0
  17. package/build/module/tracking/eventTypes.js +2 -0
  18. package/build/module/tracking/eventTypes.js.map +1 -0
  19. package/build/module/tracking/index.d.ts +1 -0
  20. package/build/module/tracking/index.js +38 -14
  21. package/build/module/tracking/index.js.map +1 -1
  22. package/build/module/tracking/intercom.d.ts +109 -0
  23. package/build/module/tracking/intercom.js +136 -0
  24. package/build/module/tracking/intercom.js.map +1 -0
  25. package/package.json +3 -2
  26. package/src/tracking/index.ts +45 -15
  27. package/build/main/baselog.d.ts +0 -19
  28. package/build/main/baselog.js +0 -137
  29. package/build/main/baselog.js.map +0 -1
  30. package/build/main/color.d.ts +0 -54
  31. package/build/main/color.js +0 -371
  32. package/build/main/color.js.map +0 -1
  33. package/build/main/common.d.ts +0 -29
  34. package/build/main/common.js +0 -86
  35. package/build/main/common.js.map +0 -1
  36. package/build/main/index.spec.d.ts +0 -0
  37. package/build/main/index.spec.js +0 -2
  38. package/build/main/index.spec.js.map +0 -1
  39. package/build/main/type.d.ts +0 -39
  40. package/build/main/type.js.map +0 -1
  41. package/build/module/baselog.d.ts +0 -19
  42. package/build/module/baselog.js +0 -120
  43. package/build/module/baselog.js.map +0 -1
  44. package/build/module/color.d.ts +0 -54
  45. package/build/module/color.js +0 -375
  46. package/build/module/color.js.map +0 -1
  47. package/build/module/common.d.ts +0 -29
  48. package/build/module/common.js +0 -80
  49. package/build/module/common.js.map +0 -1
  50. package/build/module/index.spec.d.ts +0 -0
  51. package/build/module/index.spec.js +0 -2
  52. package/build/module/index.spec.js.map +0 -1
  53. package/build/module/type.d.ts +0 -39
  54. package/build/module/type.js +0 -2
  55. package/build/module/type.js.map +0 -1
@@ -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":"AAEA,MAAM,OAAO,WAAW;IACtB,YAAY,KAAa,EAAE,GAAS;QAClC,IAAI,CAAC,OAAO,GAAG;YACb,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;YAC1B,kBAAkB,EAAE,MAAM;YAC1B,aAAa,EAAE,UAAU,KAAK,EAAE;SACjC,CAAC;QAEF,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAEO,OAAO,CAAyB;IAChC,GAAG,CAAO;IAEV,KAAK,CAAC,KAAK,CACjB,IAAY,EACZ,OAAsC;QAEtC,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,0BAA0B,IAAI,EAAE,EAAE;gBAC3D,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,GAAG,OAAO;aACX,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,+BAA+B,EAAE;oBAC9C,MAAM,EAAE;wBACN,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,UAAU,EAAE,MAAM,CAAC,UAAU;wBAC7B,IAAI,EAAE,MAAM,MAAM,CAAC,IAAI,EAAE;qBAC1B;iBACF,CAAC,CAAC;gBAEH,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG;oBAAE,OAAO,SAAS,CAAC;gBAE5C,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC1B,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;oBAClE,iFAAiF;oBAEjF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;oBAE9D,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;wBAC1C,MAAM,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;wBAC7B,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,UAAU,CAAC,CAAC;wBAC3C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;wBAEjE,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBACzC,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAE,EAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAO,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO;IACP,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,OAAO,MAAM,IAAI,CAAC,KAAK,CAUpB,kBAAkB,EAAE;YACrB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,KAAK,EAAE;oBACL,KAAK,EAAE,aAAa;oBACpB,QAAQ,EAAE,GAAG;oBACb,KAAK,EAAE,MAAM;iBACd;aACF;SACF,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,EACf,IAAI,EACJ,MAAM,GAQP;QACC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE;SACvC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,EACf,IAAI,EACJ,SAAS,GASV;QACC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,SAAS,EAAE,EAAE;YAChD,MAAM,EAAE,KAAK;YACb,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,mBAA2B;QAC1C,OAAO,MAAM,IAAI,CAAC,KAAK,CAKpB,aAAa,mBAAmB,EAAE,EAAE;YACrC,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,IAGvB;QACC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,mBAAmB,YAAY,EAAE;YACzE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,EAAE,EAAE,IAAI,CAAC,mBAAmB;aAC7B;SACF,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,EACtB,mBAAmB,EACnB,mBAAmB,GAIpB;QACC,OAAO,MAAM,IAAI,CAAC,KAAK,CAEpB,aAAa,mBAAmB,cAAc,mBAAmB,EAAE,EAAE;YACtE,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,IAIhB;QACC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACjC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,aAAa;gBAClE,GAAG,IAAI;aACR;SACF,CAAC,CAAC;IACL,CAAC;IAED,UAAU;IACV,KAAK,CAAC,oBAAoB,CAAC,QAAgB;QACzC,OAAO,MAAM,IAAI,CAAC,KAAK,CAoCpB,yBAAyB,QAAQ,EAAE,EAAE;YACtC,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,EAClB,IAAI,EACJ,QAAQ,GAQT;QACC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YACpC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,GAAG,IAAI;gBACP,UAAU,EAAE,QAAQ;aACrB;SACF,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,EAClB,IAAI,EACJ,SAAS,GAIV;QACC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,SAAS,EAAE,EAAE;YACjD,MAAM,EAAE,KAAK;YACb,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,mBAA2B;QAC7C,OAAO,MAAM,IAAI,CAAC,KAAK,CAIpB,cAAc,mBAAmB,EAAE,EAAE;YACtC,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,GAAS;IAClD,OAAO,IAAI,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vrplatform/log",
3
- "version": "2.0.53",
3
+ "version": "2.0.55",
4
4
  "main": "build/main/index.js",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -20,11 +20,12 @@
20
20
  "@axiomhq/js": "1.3.0",
21
21
  "@finalytic/graphql": "1.14.3",
22
22
  "intercom-client": "6.0.0-beta.3",
23
+ "mixpanel-browser": "^2.56.0",
23
24
  "serialize-error": "11.0.3"
24
25
  },
25
26
  "devDependencies": {
26
- "@types/bun": "^1.1.14",
27
27
  "@biomejs/biome": "^1.9.4",
28
+ "@types/bun": "^1.1.14",
28
29
  "typescript": "5.7.2"
29
30
  },
30
31
  "trustedDependencies": [
@@ -100,6 +100,7 @@ declare module 'intercom-client' {
100
100
 
101
101
  import { useHasuraClient } from '@finalytic/graphql';
102
102
  import { Intercom } from 'intercom-client';
103
+ import mixpanel from 'mixpanel-browser';
103
104
  import { type LogBindings, type WorkerLog, useLog } from '../log';
104
105
  import { isTest } from '../utils';
105
106
  import { convertValuesToString } from '../utils/convertValuesToString';
@@ -122,6 +123,7 @@ export type UseTracking = {
122
123
  INTERCOM_TOKEN?: string;
123
124
  HASURA_GRAPHQL_ADMIN_SECRET?: string;
124
125
  HASURA_ADMIN_SECRET?: string;
126
+ MIXPANEL_TOKEN?: string;
125
127
  } & LogBindings;
126
128
  debugging?: boolean;
127
129
  };
@@ -145,16 +147,16 @@ export const useTracking = (
145
147
  : undefined;
146
148
  const log = useLog({ name, dataset, env });
147
149
  const intercom = env.INTERCOM_TOKEN
148
- ? new Intercom({
149
- accessToken: env.INTERCOM_TOKEN,
150
- // fetcher: (args) =>
151
- // fetcher({
152
- // ...args,
153
- // headers: { ...args.headers, accept: 'application/json' },
154
- // }),
155
- })
150
+ ? new Intercom({ accessToken: env.INTERCOM_TOKEN })
156
151
  : undefined;
157
152
 
153
+ if (env.MIXPANEL_TOKEN)
154
+ mixpanel.init(env.MIXPANEL_TOKEN, {
155
+ debug: true,
156
+ track_pageview: true,
157
+ persistence: 'localStorage',
158
+ });
159
+
158
160
  return {
159
161
  // General
160
162
  track: async <T extends TrackingEvent>({
@@ -176,12 +178,21 @@ export const useTracking = (
176
178
  tenantId: groupId,
177
179
  userId: userId,
178
180
  props: properties,
179
- // createdAt: timestamp,
180
181
  packageName,
181
182
  },
182
183
  }).id
183
184
  );
184
185
 
186
+ // track mixpanel event
187
+ if (env.MIXPANEL_TOKEN)
188
+ mixpanel.track(event, {
189
+ tenant: [groupId], // assign to group
190
+ tenantId: groupId,
191
+ userId: userId,
192
+ packageName,
193
+ ...properties,
194
+ });
195
+
185
196
  if (userId) {
186
197
  try {
187
198
  await intercom?.dataEvents.create({
@@ -200,16 +211,29 @@ export const useTracking = (
200
211
  identify: async ({ traits, userId }: IdentifyProps) => {
201
212
  if (isDev || isTest(userId)) return;
202
213
 
214
+ const name =
215
+ traits?.name ||
216
+ (traits?.firstName
217
+ ? `${traits.firstName} ${traits.lastName}`
218
+ : traits?.lastName);
219
+
220
+ // upsert mixpanel user
221
+ if (env.MIXPANEL_TOKEN) {
222
+ mixpanel.identify(userId);
223
+
224
+ mixpanel.people.set({
225
+ $name: name,
226
+ $email: traits?.email,
227
+ ...traits,
228
+ });
229
+ }
230
+
203
231
  // upsert intercom user
204
232
  try {
205
233
  const data = {
206
234
  external_id: userId,
207
235
  email: traits?.email,
208
- name:
209
- traits?.name ||
210
- (traits?.firstName
211
- ? `${traits.firstName} ${traits.lastName}`
212
- : traits?.lastName),
236
+ name,
213
237
  avatar: traits?.avatar,
214
238
  signed_up_at: traits?.createdAt
215
239
  ? Math.floor(new Date(traits.createdAt).getTime() / 1000)
@@ -249,6 +273,9 @@ export const useTracking = (
249
273
  // add teamId to traits
250
274
  if (!traits?.teamId) traits.teamId = groupId;
251
275
 
276
+ // upsert mixpanel group
277
+ if (env.MIXPANEL_TOKEN) mixpanel.set_group('tenant', groupId);
278
+
252
279
  let intercomCompany: Intercom.Company | undefined;
253
280
  try {
254
281
  const cid = traits?.billingCustomerId || traits?.hyperlineCustomerId;
@@ -317,7 +344,10 @@ export const useTracking = (
317
344
  }
318
345
  }
319
346
  },
320
- shutdown: async () => log?.flush(),
347
+ shutdown: async () => {
348
+ log?.flush();
349
+ mixpanel.reset();
350
+ },
321
351
  // export dependencies
322
352
  intercom,
323
353
  log,
@@ -1,19 +0,0 @@
1
- import type { BaseLog } from './type';
2
- export * from './type';
3
- export declare function createBaseLog({ token, orgId, dataset, consoleLog, }: {
4
- token?: string;
5
- orgId?: string;
6
- dataset?: string;
7
- consoleLog?: boolean | 'color';
8
- }, { environment, workerId, app, version, context, type, correlationId, executionContext, }: {
9
- correlationId?: string;
10
- environment?: 'development' | 'production';
11
- type?: 'worker' | 'durableObject';
12
- workerId?: string;
13
- app?: string;
14
- version?: string;
15
- context?: Record<string, any>;
16
- executionContext?: {
17
- waitUntil(promise: Promise<any>): void;
18
- };
19
- }): BaseLog;
@@ -1,137 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.createBaseLog = createBaseLog;
18
- const common_1 = require("./common");
19
- __exportStar(require("./type"), exports);
20
- const js_1 = require("@axiomhq/js");
21
- const serialize_error_1 = require("serialize-error");
22
- const color_1 = require("./color");
23
- let lastMessageTimestamp = undefined;
24
- function createBaseLog({ token, orgId = 'vrplatform-mv6k', dataset, consoleLog, }, { environment, workerId, app, version, context, type, correlationId, executionContext, }) {
25
- const baseFields = {
26
- type: type || 'worker',
27
- environment: environment || 'production',
28
- worker: {
29
- id: workerId || 'default',
30
- app: app || 'default',
31
- version: version || 'default',
32
- started: new Date().toISOString(),
33
- },
34
- ...context,
35
- };
36
- const axiom = token
37
- ? new js_1.Axiom({
38
- token,
39
- orgId,
40
- onError(err) {
41
- console.log('Axiom error', err);
42
- },
43
- })
44
- : undefined;
45
- function ingest(level, message, additionalFields = {}) {
46
- axiom?.ingest(dataset, {
47
- _time: Date.now(),
48
- level,
49
- message,
50
- ...baseFields,
51
- ...additionalFields,
52
- });
53
- }
54
- function createBaseLog(arg = {}) {
55
- const childContext = arg.context || {};
56
- if (arg.request) {
57
- childContext.request = (0, common_1.requestToContext)(arg.request);
58
- }
59
- const baseLog = (level, message, additionalContext = {}, error) => {
60
- const cid = arg.correlationId ||
61
- correlationId ||
62
- childContext?.correlationId ||
63
- additionalContext?.correlationId ||
64
- correlationId;
65
- ingest(level, message, {
66
- ...childContext,
67
- ...additionalContext,
68
- correlationId: cid,
69
- });
70
- if (consoleLog) {
71
- const name = arg.name ? `${app}/${arg.name}` : app;
72
- const lev = level.toUpperCase();
73
- const now = Date.now();
74
- const diff = (lastMessageTimestamp ? `${now - lastMessageTimestamp}ms ` : '').padEnd(6, ' ');
75
- lastMessageTimestamp = now;
76
- error = message instanceof Error ? message : error;
77
- message = message instanceof Error ? message.message : message;
78
- if (consoleLog === 'color')
79
- color_1.logger
80
- .dim()
81
- .append(`${diff}`)
82
- .reset()
83
- .color('green')
84
- .append(`[${name}] `)
85
- .reset()
86
- .bold()
87
- .append(`${lev} `)
88
- .reset()
89
- .color('blue')
90
- .bold()
91
- .append(cid ? `[${cid}] ` : '')
92
- .reset()
93
- .append(message)
94
- .log();
95
- else
96
- console.log(`[${lev}] [${name}]${cid ? ` [${cid}]` : ''} ${message}`, additionalContext);
97
- if (error)
98
- console.error(error);
99
- }
100
- };
101
- return {
102
- addContext(arg) {
103
- for (const key in arg) {
104
- childContext[key] = arg[key];
105
- }
106
- },
107
- child: ({ correlationId, name, request, context = {}, }) => createBaseLog({
108
- correlationId: correlationId ||
109
- (request ? (0, common_1.getCorrelationId)(request) : undefined) ||
110
- undefined,
111
- name,
112
- request,
113
- context: { ...childContext, ...context },
114
- }),
115
- error: (message, error) => {
116
- const m = typeof message === 'string'
117
- ? message
118
- : error?.message || error?.name || 'Error';
119
- const e = typeof message === 'string' ? error : message;
120
- return baseLog('error', m, e instanceof Error ? (0, serialize_error_1.serializeError)(e) : e, e);
121
- },
122
- debug: (message, data) => baseLog('debug', message, data),
123
- warn: (message, data) => baseLog('warn', message, data),
124
- info: (message, data) => baseLog('info', message, data),
125
- };
126
- }
127
- const baseLog = createBaseLog();
128
- baseLog.flush = () => {
129
- if (executionContext && axiom) {
130
- executionContext.waitUntil(axiom.flush());
131
- }
132
- else if (axiom)
133
- return axiom.flush();
134
- };
135
- return baseLog;
136
- }
137
- //# sourceMappingURL=baselog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"baselog.js","sourceRoot":"src/","sources":["baselog.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AASA,sCAgLC;AAzLD,qCAA8D;AAE9D,yCAAuB;AACvB,oCAAoC;AACpC,qDAAiD;AACjD,mCAAiC;AAEjC,IAAI,oBAAoB,GAAuB,SAAS,CAAC;AAEzD,SAAgB,aAAa,CAC3B,EACE,KAAK,EACL,KAAK,GAAG,iBAAiB,EACzB,OAAO,EACP,UAAU,GAMX,EACD,EACE,WAAW,EACX,QAAQ,EACR,GAAG,EACH,OAAO,EACP,OAAO,EACP,IAAI,EACJ,aAAa,EACb,gBAAgB,GAYjB;IAED,MAAM,UAAU,GAAwB;QACtC,IAAI,EAAE,IAAI,IAAI,QAAQ;QACtB,WAAW,EAAE,WAAW,IAAI,YAAY;QACxC,MAAM,EAAE;YACN,EAAE,EAAE,QAAQ,IAAI,SAAS;YACzB,GAAG,EAAE,GAAG,IAAI,SAAS;YACrB,OAAO,EAAE,OAAO,IAAI,SAAS;YAC7B,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAClC;QACD,GAAG,OAAO;KACX,CAAC;IAEF,MAAM,KAAK,GAAG,KAAK;QACjB,CAAC,CAAC,IAAI,UAAK,CAAC;YACR,KAAK;YACL,KAAK;YACL,OAAO,CAAC,GAAG;gBACT,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;YAClC,CAAC;SACF,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IAEd,SAAS,MAAM,CACb,KAAkD,EAClD,OAAe,EACf,mBAAwC,EAAE;QAE1C,KAAK,EAAE,MAAM,CAAC,OAAQ,EAAE;YACtB,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE;YACjB,KAAK;YACL,OAAO;YACP,GAAG,UAAU;YACb,GAAG,gBAAgB;SACpB,CAAC,CAAC;IACL,CAAC;IAED,SAAS,aAAa,CAAC,MAAuB,EAAE;QAC9C,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QACvC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,YAAY,CAAC,OAAO,GAAG,IAAA,yBAAgB,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,OAAO,GAAG,CACd,KAAa,EACb,OAAY,EACZ,oBAAyC,EAAE,EAC3C,KAAa,EACb,EAAE;YACF,MAAM,GAAG,GACP,GAAG,CAAC,aAAa;gBACjB,aAAa;gBACb,YAAY,EAAE,aAAa;gBAC3B,iBAAiB,EAAE,aAAa;gBAChC,aAAa,CAAC;YAChB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;gBACrB,GAAG,YAAY;gBACf,GAAG,iBAAiB;gBACpB,aAAa,EAAE,GAAG;aACnB,CAAC,CAAC;YACH,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBACnD,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gBAEhC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,CACX,oBAAoB,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,oBAAoB,KAAK,CAAC,CAAC,CAAC,EAAE,CAC/D,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACjB,oBAAoB,GAAG,GAAG,CAAC;gBAE3B,KAAK,GAAG,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;gBACnD,OAAO,GAAG,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC/D,IAAI,UAAU,KAAK,OAAO;oBACxB,cAAM;yBACH,GAAG,EAAE;yBACL,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;yBACjB,KAAK,EAAE;yBACP,KAAK,CAAC,OAAO,CAAC;yBACd,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;yBACpB,KAAK,EAAE;yBACP,IAAI,EAAE;yBACN,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;yBACjB,KAAK,EAAE;yBACP,KAAK,CAAC,MAAM,CAAC;yBACb,IAAI,EAAE;yBACN,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;yBAC9B,KAAK,EAAE;yBACP,MAAM,CAAC,OAAO,CAAC;yBACf,GAAG,EAAE,CAAC;;oBAET,OAAO,CAAC,GAAG,CACT,IAAI,GAAG,MAAM,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,EAAE,EACxD,iBAAiB,CAClB,CAAC;gBAEJ,IAAI,KAAK;oBAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC;QACF,OAAO;YACL,UAAU,CAAC,GAAG;gBACZ,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;oBACtB,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;YACD,KAAK,EAAE,CAAC,EACN,aAAa,EACb,IAAI,EACJ,OAAO,EACP,OAAO,GAAG,EAAE,GACI,EAAE,EAAE,CACpB,aAAa,CAAC;gBACZ,aAAa,EACX,aAAa;oBACb,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,yBAAgB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBACjD,SAAS;gBACX,IAAI;gBACJ,OAAO;gBACP,OAAO,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,EAAE;aACzC,CAAC;YACJ,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;gBACxB,MAAM,CAAC,GACL,OAAO,OAAO,KAAK,QAAQ;oBACzB,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,IAAI,IAAI,OAAO,CAAC;gBAC/C,MAAM,CAAC,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;gBACxD,OAAO,OAAO,CACZ,OAAO,EACP,CAAC,EACD,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,IAAA,gCAAc,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1C,CAAC,CACF,CAAC;YACJ,CAAC;YACD,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;YACzD,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;YACvD,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;SACxD,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,EAAoB,CAAC;IAClD,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE;QACnB,IAAI,gBAAgB,IAAI,KAAK,EAAE,CAAC;YAC9B,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;IACzC,CAAC,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,54 +0,0 @@
1
- export declare const objectEntries: <T extends object>(value: T) => { [K in keyof T]-?: [K, T[K]]; }[keyof T][];
2
- export type LEVEL = 'debug' | 'info' | 'warn' | 'error' | 'disable' | 'success';
3
- type ticketObject = {
4
- font?: COLOR;
5
- bg?: COLOR;
6
- };
7
- type settingObject = {
8
- [key in SETTING]?: boolean;
9
- };
10
- export type SETTING = 'bold' | 'italic' | 'dim' | 'underscore' | 'reverse' | 'strikethrough';
11
- export type COLOR = 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white';
12
- declare class Logger {
13
- private command;
14
- private lastCommand;
15
- private name;
16
- private level?;
17
- private noColor;
18
- private _getDate;
19
- private _customizedConsole;
20
- constructor(name?: string);
21
- createNamedLogger(name: string): Logger;
22
- setLevel(level: LEVEL): void;
23
- setLogStream(newStream: any): void;
24
- setLevelNoColor(): void;
25
- setLevelColor(): void;
26
- isLevelValid(level?: string): boolean;
27
- isAllowedLevel(level: LEVEL): boolean;
28
- log(...args: any[]): this;
29
- joint(): this;
30
- setDate(callback: () => string): void;
31
- getPrefix(): string;
32
- color(ticket: COLOR): this;
33
- bgColor(ticket: COLOR): this;
34
- bold(): this;
35
- dim(): this;
36
- underscore(): this;
37
- strikethrough(): this;
38
- reverse(): this;
39
- italic(): this;
40
- fontColorLog(ticket: COLOR, text: string, setting?: settingObject): void;
41
- bgColorLog(ticket: COLOR, text: string, setting?: settingObject): void;
42
- colorLog(ticketObj: ticketObject, text: string, setting?: settingObject): void;
43
- error(...args: any[]): void;
44
- warn(...args: any[]): void;
45
- info(...args: any[]): void;
46
- debug(...args: any[]): void;
47
- success(...args: any[]): void;
48
- checkSetting(setting: settingObject): string;
49
- _print(...args: any[]): void;
50
- append(...args: any[]): this;
51
- reset(): this;
52
- }
53
- export declare const logger: Logger;
54
- export {};