trodo-node 1.0.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 (80) hide show
  1. package/README.md +192 -0
  2. package/dist/cjs/TrodoClient.js +113 -0
  3. package/dist/cjs/TrodoClient.js.map +1 -0
  4. package/dist/cjs/UserContext.js +166 -0
  5. package/dist/cjs/UserContext.js.map +1 -0
  6. package/dist/cjs/api/ApiClient.js +144 -0
  7. package/dist/cjs/api/ApiClient.js.map +1 -0
  8. package/dist/cjs/api/endpoints.js +26 -0
  9. package/dist/cjs/api/endpoints.js.map +1 -0
  10. package/dist/cjs/auto/AutoEventManager.js +70 -0
  11. package/dist/cjs/auto/AutoEventManager.js.map +1 -0
  12. package/dist/cjs/index.js +141 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/managers/GroupManager.js +84 -0
  15. package/dist/cjs/managers/GroupManager.js.map +1 -0
  16. package/dist/cjs/managers/PeopleManager.js +75 -0
  17. package/dist/cjs/managers/PeopleManager.js.map +1 -0
  18. package/dist/cjs/queue/BatchFlusher.js +35 -0
  19. package/dist/cjs/queue/BatchFlusher.js.map +1 -0
  20. package/dist/cjs/queue/EventQueue.js +27 -0
  21. package/dist/cjs/queue/EventQueue.js.map +1 -0
  22. package/dist/cjs/session/ServerSession.js +113 -0
  23. package/dist/cjs/session/ServerSession.js.map +1 -0
  24. package/dist/cjs/session/SessionManager.js +54 -0
  25. package/dist/cjs/session/SessionManager.js.map +1 -0
  26. package/dist/cjs/types/index.js +6 -0
  27. package/dist/cjs/types/index.js.map +1 -0
  28. package/dist/esm/TrodoClient.d.ts +39 -0
  29. package/dist/esm/TrodoClient.d.ts.map +1 -0
  30. package/dist/esm/TrodoClient.js +109 -0
  31. package/dist/esm/TrodoClient.js.map +1 -0
  32. package/dist/esm/UserContext.d.ts +40 -0
  33. package/dist/esm/UserContext.d.ts.map +1 -0
  34. package/dist/esm/UserContext.js +162 -0
  35. package/dist/esm/UserContext.js.map +1 -0
  36. package/dist/esm/api/ApiClient.d.ts +40 -0
  37. package/dist/esm/api/ApiClient.d.ts.map +1 -0
  38. package/dist/esm/api/ApiClient.js +107 -0
  39. package/dist/esm/api/ApiClient.js.map +1 -0
  40. package/dist/esm/api/endpoints.d.ts +24 -0
  41. package/dist/esm/api/endpoints.d.ts.map +1 -0
  42. package/dist/esm/api/endpoints.js +23 -0
  43. package/dist/esm/api/endpoints.js.map +1 -0
  44. package/dist/esm/auto/AutoEventManager.d.ts +16 -0
  45. package/dist/esm/auto/AutoEventManager.d.ts.map +1 -0
  46. package/dist/esm/auto/AutoEventManager.js +66 -0
  47. package/dist/esm/auto/AutoEventManager.js.map +1 -0
  48. package/dist/esm/index.d.ts +81 -0
  49. package/dist/esm/index.d.ts.map +1 -0
  50. package/dist/esm/index.js +108 -0
  51. package/dist/esm/index.js.map +1 -0
  52. package/dist/esm/managers/GroupManager.d.ts +14 -0
  53. package/dist/esm/managers/GroupManager.d.ts.map +1 -0
  54. package/dist/esm/managers/GroupManager.js +80 -0
  55. package/dist/esm/managers/GroupManager.js.map +1 -0
  56. package/dist/esm/managers/PeopleManager.d.ts +20 -0
  57. package/dist/esm/managers/PeopleManager.d.ts.map +1 -0
  58. package/dist/esm/managers/PeopleManager.js +71 -0
  59. package/dist/esm/managers/PeopleManager.js.map +1 -0
  60. package/dist/esm/queue/BatchFlusher.d.ts +13 -0
  61. package/dist/esm/queue/BatchFlusher.d.ts.map +1 -0
  62. package/dist/esm/queue/BatchFlusher.js +31 -0
  63. package/dist/esm/queue/BatchFlusher.js.map +1 -0
  64. package/dist/esm/queue/EventQueue.d.ts +14 -0
  65. package/dist/esm/queue/EventQueue.d.ts.map +1 -0
  66. package/dist/esm/queue/EventQueue.js +23 -0
  67. package/dist/esm/queue/EventQueue.js.map +1 -0
  68. package/dist/esm/session/ServerSession.d.ts +6 -0
  69. package/dist/esm/session/ServerSession.d.ts.map +1 -0
  70. package/dist/esm/session/ServerSession.js +74 -0
  71. package/dist/esm/session/ServerSession.js.map +1 -0
  72. package/dist/esm/session/SessionManager.d.ts +12 -0
  73. package/dist/esm/session/SessionManager.d.ts.map +1 -0
  74. package/dist/esm/session/SessionManager.js +50 -0
  75. package/dist/esm/session/SessionManager.js.map +1 -0
  76. package/dist/esm/types/index.d.ts +110 -0
  77. package/dist/esm/types/index.d.ts.map +1 -0
  78. package/dist/esm/types/index.js +5 -0
  79. package/dist/esm/types/index.js.map +1 -0
  80. package/package.json +71 -0
@@ -0,0 +1,39 @@
1
+ import type { TrodoConfig, ForUserOptions, TrackOptions, IdentifyResult, WalletAddressResult, ResetResult, ApiResult, GroupProfile } from './types/index.js';
2
+ import { UserContext } from './UserContext.js';
3
+ export declare class TrodoClient {
4
+ readonly siteId: string;
5
+ private readonly apiBase;
6
+ private readonly apiClient;
7
+ private readonly sessionManager;
8
+ private readonly eventQueue;
9
+ private readonly batchFlusher;
10
+ private readonly autoEventManager;
11
+ private readonly userContextCache;
12
+ readonly people: {
13
+ set(distinctId: string, properties: Record<string, unknown>): Promise<ApiResult>;
14
+ setOnce(distinctId: string, properties: Record<string, unknown>): Promise<ApiResult>;
15
+ unset(distinctId: string, keys: string | string[]): Promise<ApiResult>;
16
+ increment(distinctId: string, key: string, amount?: number): Promise<ApiResult>;
17
+ append(distinctId: string, key: string, values: unknown[]): Promise<ApiResult>;
18
+ union(distinctId: string, key: string, values: unknown[]): Promise<ApiResult>;
19
+ remove(distinctId: string, key: string, values: unknown[]): Promise<ApiResult>;
20
+ trackCharge(distinctId: string, amount: number, properties?: Record<string, unknown>): Promise<ApiResult>;
21
+ clearCharges(distinctId: string): Promise<ApiResult>;
22
+ deleteUser(distinctId: string): Promise<ApiResult>;
23
+ };
24
+ constructor(config: TrodoConfig);
25
+ forUser(distinctId: string, options?: ForUserOptions): UserContext;
26
+ track(distinctId: string, eventName: string, properties?: Record<string, unknown>, options?: TrackOptions): Promise<void>;
27
+ identify(distinctId: string, identifyId: string): Promise<IdentifyResult>;
28
+ walletAddress(distinctId: string, walletAddress: string): Promise<WalletAddressResult>;
29
+ reset(distinctId: string): Promise<ResetResult>;
30
+ set_group(distinctId: string, groupKey: string, groupId: string | string[]): Promise<ApiResult>;
31
+ add_group(distinctId: string, groupKey: string, groupId: string): Promise<ApiResult>;
32
+ remove_group(distinctId: string, groupKey: string, groupId: string): Promise<ApiResult>;
33
+ get_group(distinctId: string, groupKey: string, groupId: string): GroupProfile;
34
+ enableAutoEvents(): void;
35
+ disableAutoEvents(): void;
36
+ flush(): Promise<void>;
37
+ shutdown(): Promise<void>;
38
+ }
39
+ //# sourceMappingURL=TrodoClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrodoClient.d.ts","sourceRoot":"","sources":["../../src/TrodoClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import { ApiClient } from './api/ApiClient.js';
2
+ import { SessionManager } from './session/SessionManager.js';
3
+ import { EventQueue } from './queue/EventQueue.js';
4
+ import { BatchFlusher } from './queue/BatchFlusher.js';
5
+ import { AutoEventManager } from './auto/AutoEventManager.js';
6
+ import { UserContext } from './UserContext.js';
7
+ const DEFAULT_API_BASE = 'https://sdkapi.trodo.ai';
8
+ export class TrodoClient {
9
+ constructor(config) {
10
+ this.userContextCache = new Map();
11
+ if (!config.siteId)
12
+ throw new Error('trodo-node: siteId is required');
13
+ this.siteId = config.siteId;
14
+ this.apiBase = config.apiBase ?? DEFAULT_API_BASE;
15
+ this.apiClient = new ApiClient(this.apiBase, this.siteId, config.timeout ?? 10000, config.retries ?? 2, config.onError, config.debug ?? false);
16
+ this.sessionManager = new SessionManager();
17
+ if (config.batchEnabled) {
18
+ this.eventQueue = new EventQueue(config.batchSize ?? 50);
19
+ this.batchFlusher = new BatchFlusher(this.eventQueue, this.apiClient, config.batchFlushIntervalMs ?? 5000);
20
+ this.batchFlusher.start();
21
+ }
22
+ else {
23
+ this.eventQueue = null;
24
+ this.batchFlusher = null;
25
+ }
26
+ this.autoEventManager = new AutoEventManager(this.siteId, this.apiClient, this.sessionManager);
27
+ if (config.autoEvents) {
28
+ this.autoEventManager.enable();
29
+ }
30
+ // Wire up direct-call-pattern people helpers
31
+ const client = this;
32
+ this.people = {
33
+ set: (d, p) => client.forUser(d).people.set(p),
34
+ setOnce: (d, p) => client.forUser(d).people.setOnce(p),
35
+ unset: (d, k) => client.forUser(d).people.unset(k),
36
+ increment: (d, k, a) => client.forUser(d).people.increment(k, a),
37
+ append: (d, k, v) => client.forUser(d).people.append(k, v),
38
+ union: (d, k, v) => client.forUser(d).people.union(k, v),
39
+ remove: (d, k, v) => client.forUser(d).people.remove(k, v),
40
+ trackCharge: (d, a, p) => client.forUser(d).people.trackCharge(a, p),
41
+ clearCharges: (d) => client.forUser(d).people.clearCharges(),
42
+ deleteUser: (d) => client.forUser(d).people.deleteUser(),
43
+ };
44
+ }
45
+ // --------------------------------------------------------------------------
46
+ // Primary pattern: forUser()
47
+ // --------------------------------------------------------------------------
48
+ forUser(distinctId, options) {
49
+ const key = distinctId;
50
+ const cached = this.userContextCache.get(key);
51
+ if (cached)
52
+ return cached;
53
+ const ctx = new UserContext(distinctId, this.siteId, this.apiClient, this.sessionManager, this.eventQueue, this.batchFlusher, this.autoEventManager, options);
54
+ this.userContextCache.set(key, ctx);
55
+ return ctx;
56
+ }
57
+ // --------------------------------------------------------------------------
58
+ // Direct-call pattern (distinctId as first param)
59
+ // --------------------------------------------------------------------------
60
+ async track(distinctId, eventName, properties, options) {
61
+ return this.forUser(distinctId).track(eventName, properties, options);
62
+ }
63
+ async identify(distinctId, identifyId) {
64
+ return this.forUser(distinctId).identify(identifyId);
65
+ }
66
+ async walletAddress(distinctId, walletAddress) {
67
+ return this.forUser(distinctId).walletAddress(walletAddress);
68
+ }
69
+ async reset(distinctId) {
70
+ this.userContextCache.delete(distinctId);
71
+ return this.forUser(distinctId).reset();
72
+ }
73
+ async set_group(distinctId, groupKey, groupId) {
74
+ return this.forUser(distinctId).set_group(groupKey, groupId);
75
+ }
76
+ async add_group(distinctId, groupKey, groupId) {
77
+ return this.forUser(distinctId).add_group(groupKey, groupId);
78
+ }
79
+ async remove_group(distinctId, groupKey, groupId) {
80
+ return this.forUser(distinctId).remove_group(groupKey, groupId);
81
+ }
82
+ get_group(distinctId, groupKey, groupId) {
83
+ return this.forUser(distinctId).get_group(groupKey, groupId);
84
+ }
85
+ // --------------------------------------------------------------------------
86
+ // Auto events
87
+ // --------------------------------------------------------------------------
88
+ enableAutoEvents() {
89
+ this.autoEventManager.enable();
90
+ }
91
+ disableAutoEvents() {
92
+ this.autoEventManager.disable();
93
+ }
94
+ // --------------------------------------------------------------------------
95
+ // Lifecycle
96
+ // --------------------------------------------------------------------------
97
+ async flush() {
98
+ if (this.batchFlusher)
99
+ await this.batchFlusher.flush();
100
+ }
101
+ async shutdown() {
102
+ this.autoEventManager.disable();
103
+ if (this.batchFlusher) {
104
+ this.batchFlusher.stop();
105
+ await this.batchFlusher.flush();
106
+ }
107
+ }
108
+ }
109
+ //# sourceMappingURL=TrodoClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrodoClient.js","sourceRoot":"","sources":["../../src/TrodoClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { TrackOptions, IdentifyResult, WalletAddressResult, ResetResult, ApiResult, GroupProfile, ForUserOptions, PeopleInterface } from './types/index.js';
2
+ import type { ApiClient } from './api/ApiClient.js';
3
+ import type { SessionManager } from './session/SessionManager.js';
4
+ import type { EventQueue } from './queue/EventQueue.js';
5
+ import type { BatchFlusher } from './queue/BatchFlusher.js';
6
+ import type { AutoEventManager } from './auto/AutoEventManager.js';
7
+ export declare class UserContext {
8
+ private readonly _distinctId;
9
+ private readonly siteId;
10
+ private readonly apiClient;
11
+ private readonly sessionManager;
12
+ private readonly eventQueue;
13
+ private readonly batchFlusher;
14
+ private readonly autoEventManager;
15
+ private readonly options;
16
+ private session;
17
+ private readonly initPromise;
18
+ readonly people: PeopleInterface;
19
+ private readonly groupManager;
20
+ constructor(_distinctId: string, siteId: string, apiClient: ApiClient, sessionManager: SessionManager, eventQueue: EventQueue | null, batchFlusher: BatchFlusher | null, autoEventManager: AutoEventManager, options?: ForUserOptions);
21
+ private getDistinctId;
22
+ private getSession;
23
+ private sendEvent;
24
+ track(eventName: string, properties?: Record<string, unknown>, options?: TrackOptions): Promise<void>;
25
+ /** Alias for track() — matches frontend SDK naming */
26
+ trackEvent(eventName: string, properties?: Record<string, unknown>, options?: TrackOptions): Promise<void>;
27
+ identify(identifyId: string): Promise<IdentifyResult>;
28
+ walletAddress(walletAddress: string): Promise<WalletAddressResult>;
29
+ reset(): Promise<ResetResult>;
30
+ set_group(groupKey: string, groupId: string | string[]): Promise<ApiResult>;
31
+ add_group(groupKey: string, groupId: string): Promise<ApiResult>;
32
+ remove_group(groupKey: string, groupId: string): Promise<ApiResult>;
33
+ get_group(groupKey: string, groupId: string): GroupProfile;
34
+ captureError(error: Error | unknown, severity?: 'critical' | 'error' | 'warning'): Promise<void>;
35
+ enableAutoEvents(): void;
36
+ disableAutoEvents(): void;
37
+ getSessionId(): string | null;
38
+ getCurrentDistinctId(): string;
39
+ }
40
+ //# sourceMappingURL=UserContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserContext.d.ts","sourceRoot":"","sources":["../../src/UserContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,SAAS,EACT,YAAY,EACZ,cAAc,EACd,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAMnE,qBAAa,WAAW;IAQpB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAd1B,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAE5C,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;gBAGzB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,UAAU,GAAG,IAAI,EAC7B,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,GAAE,cAAmB;IAsB/C,OAAO,CAAC,aAAa;YAIP,UAAU;YAYV,SAAS;IAiCjB,KAAK,CACT,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,IAAI,CAAC;IAIhB,sDAAsD;IAChD,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,IAAI,CAAC;IAQV,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAwBrD,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAalE,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAyB7B,SAAS,CACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GACzB,OAAO,CAAC,SAAS,CAAC;IAKf,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAKhE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAKzE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY;IAQpD,YAAY,CAChB,KAAK,EAAE,KAAK,GAAG,OAAO,EACtB,QAAQ,GAAE,UAAU,GAAG,OAAO,GAAG,SAAmB,GACnD,OAAO,CAAC,IAAI,CAAC;IAehB,gBAAgB,IAAI,IAAI;IAIxB,iBAAiB,IAAI,IAAI;IAQzB,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B,oBAAoB,IAAI,MAAM;CAG/B"}
@@ -0,0 +1,162 @@
1
+ import { PeopleManager } from './managers/PeopleManager.js';
2
+ import { GroupManager } from './managers/GroupManager.js';
3
+ export class UserContext {
4
+ constructor(_distinctId, siteId, apiClient, sessionManager, eventQueue, batchFlusher, autoEventManager, options = {}) {
5
+ this._distinctId = _distinctId;
6
+ this.siteId = siteId;
7
+ this.apiClient = apiClient;
8
+ this.sessionManager = sessionManager;
9
+ this.eventQueue = eventQueue;
10
+ this.batchFlusher = batchFlusher;
11
+ this.autoEventManager = autoEventManager;
12
+ this.options = options;
13
+ this.session = null;
14
+ // Eagerly start session initialisation (non-blocking)
15
+ this.initPromise = this.sessionManager
16
+ .getOrCreate(_distinctId, siteId, options)
17
+ .then((s) => {
18
+ this.session = s;
19
+ });
20
+ this.people = new PeopleManager(apiClient, siteId, () => this.getDistinctId());
21
+ this.groupManager = new GroupManager(apiClient, siteId, () => this.getDistinctId());
22
+ }
23
+ getDistinctId() {
24
+ return this.session?.distinctId ?? this._distinctId;
25
+ }
26
+ async getSession() {
27
+ await this.initPromise;
28
+ if (!this.session) {
29
+ this.session = await this.sessionManager.getOrCreate(this._distinctId, this.siteId, this.options);
30
+ }
31
+ return this.session;
32
+ }
33
+ async sendEvent(eventName, properties, opts = {}) {
34
+ const session = await this.getSession();
35
+ await this.sessionManager.ensureConfirmed(session, this.apiClient);
36
+ const payload = {
37
+ event_type: 'custom',
38
+ event_name: eventName,
39
+ event_category: opts.category ?? 'custom',
40
+ session_id: session.sessionId,
41
+ user_id: session.distinctId,
42
+ custom_properties: properties ?? {},
43
+ page_data: null,
44
+ auto_event_data: null,
45
+ element_data: null,
46
+ override_data: null,
47
+ };
48
+ if (this.eventQueue && this.batchFlusher) {
49
+ const flush = this.eventQueue.enqueue(payload);
50
+ if (flush)
51
+ await this.batchFlusher.flush();
52
+ }
53
+ else {
54
+ await this.apiClient.postEvent(payload);
55
+ }
56
+ }
57
+ // --------------------------------------------------------------------------
58
+ // Event Tracking
59
+ // --------------------------------------------------------------------------
60
+ async track(eventName, properties, options) {
61
+ return this.sendEvent(eventName, properties, options);
62
+ }
63
+ /** Alias for track() — matches frontend SDK naming */
64
+ async trackEvent(eventName, properties, options) {
65
+ return this.sendEvent(eventName, properties, options);
66
+ }
67
+ // --------------------------------------------------------------------------
68
+ // Identity
69
+ // --------------------------------------------------------------------------
70
+ async identify(identifyId) {
71
+ const session = await this.getSession();
72
+ await this.sessionManager.ensureConfirmed(session, this.apiClient);
73
+ const result = await this.apiClient.postIdentify({
74
+ siteId: this.siteId,
75
+ sessionId: session.sessionId,
76
+ userId: session.distinctId,
77
+ distinctId: session.distinctId,
78
+ identifyId,
79
+ });
80
+ // Update session distinctId with what the backend returns
81
+ const newDistinctId = result.newDistinctId ?? result.distinctId;
82
+ if (newDistinctId && newDistinctId !== session.distinctId) {
83
+ const oldDistinctId = session.distinctId;
84
+ session.distinctId = newDistinctId;
85
+ // Re-key the session in SessionManager under the new distinctId
86
+ this.sessionManager.update(oldDistinctId, { distinctId: newDistinctId });
87
+ }
88
+ return result;
89
+ }
90
+ async walletAddress(walletAddress) {
91
+ const session = await this.getSession();
92
+ await this.sessionManager.ensureConfirmed(session, this.apiClient);
93
+ return this.apiClient.postWalletAddress({
94
+ siteId: this.siteId,
95
+ sessionId: session.sessionId,
96
+ userId: session.distinctId,
97
+ distinctId: session.distinctId,
98
+ walletAddress,
99
+ });
100
+ }
101
+ async reset() {
102
+ const session = await this.getSession();
103
+ const result = await this.apiClient.postReset({
104
+ siteId: this.siteId,
105
+ sessionId: session.sessionId,
106
+ userId: session.distinctId,
107
+ distinctId: session.distinctId,
108
+ });
109
+ this.sessionManager.invalidate(this._distinctId);
110
+ this.session = null;
111
+ return result;
112
+ }
113
+ // --------------------------------------------------------------------------
114
+ // People (delegate to PeopleManager)
115
+ // --------------------------------------------------------------------------
116
+ // Accessible via user.people.set(...) etc. — already set up in constructor.
117
+ // --------------------------------------------------------------------------
118
+ // Groups
119
+ // --------------------------------------------------------------------------
120
+ async set_group(groupKey, groupId) {
121
+ await this.getSession(); // ensure session is ready
122
+ return this.groupManager.set_group(groupKey, groupId);
123
+ }
124
+ async add_group(groupKey, groupId) {
125
+ await this.getSession();
126
+ return this.groupManager.add_group(groupKey, groupId);
127
+ }
128
+ async remove_group(groupKey, groupId) {
129
+ await this.getSession();
130
+ return this.groupManager.remove_group(groupKey, groupId);
131
+ }
132
+ get_group(groupKey, groupId) {
133
+ return this.groupManager.get_group(groupKey, groupId);
134
+ }
135
+ // --------------------------------------------------------------------------
136
+ // Error capture
137
+ // --------------------------------------------------------------------------
138
+ async captureError(error, severity = 'error') {
139
+ const session = await this.getSession();
140
+ const err = error instanceof Error ? error : new Error(String(error));
141
+ await this.autoEventManager.trackError(err, err.name || 'Error', severity, session.distinctId);
142
+ }
143
+ // --------------------------------------------------------------------------
144
+ // Auto events (per-context toggle)
145
+ // --------------------------------------------------------------------------
146
+ enableAutoEvents() {
147
+ this.autoEventManager.enable();
148
+ }
149
+ disableAutoEvents() {
150
+ this.autoEventManager.disable();
151
+ }
152
+ // --------------------------------------------------------------------------
153
+ // Session info
154
+ // --------------------------------------------------------------------------
155
+ getSessionId() {
156
+ return this.session?.sessionId ?? null;
157
+ }
158
+ getCurrentDistinctId() {
159
+ return this.getDistinctId();
160
+ }
161
+ }
162
+ //# sourceMappingURL=UserContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserContext.js","sourceRoot":"","sources":["../../src/UserContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { ApiResult, EventPayload, IdentifyResult, WalletAddressResult, ResetResult } from '../types/index.js';
2
+ export declare class ApiClient {
3
+ private readonly apiBase;
4
+ private readonly siteId;
5
+ private readonly timeout;
6
+ private readonly retries;
7
+ private readonly onError?;
8
+ private readonly debug;
9
+ private _fetchFn;
10
+ constructor(apiBase: string, siteId: string, timeout: number, retries: number, onError?: (error: Error) => void, debug?: boolean);
11
+ private getFetch;
12
+ private log;
13
+ private request;
14
+ postTrack(sessionData: Record<string, unknown>): Promise<ApiResult>;
15
+ postEvent(event: EventPayload): Promise<ApiResult>;
16
+ postBulkEvents(events: EventPayload[]): Promise<ApiResult>;
17
+ postIdentify(payload: {
18
+ siteId: string;
19
+ sessionId: string;
20
+ userId: string;
21
+ distinctId: string;
22
+ identifyId: string;
23
+ }): Promise<IdentifyResult>;
24
+ postWalletAddress(payload: {
25
+ siteId: string;
26
+ sessionId: string;
27
+ userId: string;
28
+ distinctId: string;
29
+ walletAddress: string;
30
+ }): Promise<WalletAddressResult>;
31
+ postReset(payload: {
32
+ siteId: string;
33
+ sessionId: string;
34
+ userId: string;
35
+ distinctId: string;
36
+ }): Promise<ResetResult>;
37
+ postPeople(path: string, payload: Record<string, unknown>): Promise<ApiResult>;
38
+ postGroup(path: string, payload: Record<string, unknown>): Promise<ApiResult>;
39
+ }
40
+ //# sourceMappingURL=ApiClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiClient.d.ts","sourceRoot":"","sources":["../../../src/api/ApiClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAI3B,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAwB;gBAGtC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAChC,KAAK,UAAQ;YAUD,QAAQ;IAoBtB,OAAO,CAAC,GAAG;YAIG,OAAO;IAqDf,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAInE,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAIlD,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAI1D,YAAY,CAAC,OAAO,EAAE;QAC1B,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,cAAc,CAAC;IAIrB,iBAAiB,CAAC,OAAO,EAAE;QAC/B,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI1B,SAAS,CAAC,OAAO,EAAE;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,WAAW,CAAC;IAIlB,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,SAAS,CAAC;IAIf,SAAS,CACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,SAAS,CAAC;CAGtB"}
@@ -0,0 +1,107 @@
1
+ import { ENDPOINTS } from './endpoints.js';
2
+ export class ApiClient {
3
+ constructor(apiBase, siteId, timeout, retries, onError, debug = false) {
4
+ this._fetchFn = null;
5
+ this.apiBase = apiBase;
6
+ this.siteId = siteId;
7
+ this.timeout = timeout;
8
+ this.retries = retries;
9
+ this.onError = onError;
10
+ this.debug = debug;
11
+ }
12
+ async getFetch() {
13
+ if (this._fetchFn)
14
+ return this._fetchFn;
15
+ // Use built-in fetch (Node 18+) or fall back to node-fetch
16
+ if (typeof globalThis.fetch === 'function') {
17
+ this._fetchFn = globalThis.fetch.bind(globalThis);
18
+ }
19
+ else {
20
+ try {
21
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
22
+ // @ts-ignore – node-fetch is an optional peer dependency for Node <18
23
+ const nodeFetch = await import('node-fetch');
24
+ this._fetchFn = nodeFetch.default;
25
+ }
26
+ catch {
27
+ throw new Error('trodo-node: No fetch implementation found. On Node <18 install peer dependency: npm install node-fetch');
28
+ }
29
+ }
30
+ return this._fetchFn;
31
+ }
32
+ log(...args) {
33
+ if (this.debug)
34
+ process.stderr.write(`[trodo-node] ${args.join(' ')}\n`);
35
+ }
36
+ async request(path, body, attempt = 0) {
37
+ const url = `${this.apiBase}${path}`;
38
+ const fetchFn = await this.getFetch();
39
+ const controller = new AbortController();
40
+ const timer = setTimeout(() => controller.abort(), this.timeout);
41
+ try {
42
+ this.log(`POST ${url}`);
43
+ const res = await fetchFn(url, {
44
+ method: 'POST',
45
+ headers: {
46
+ 'Content-Type': 'application/json',
47
+ 'X-Trodo-Site-Id': this.siteId,
48
+ },
49
+ body: JSON.stringify(body),
50
+ signal: controller.signal,
51
+ });
52
+ clearTimeout(timer);
53
+ if (!res.ok && res.status >= 500 && attempt < this.retries) {
54
+ const delay = Math.pow(2, attempt) * 1000;
55
+ this.log(`Retry ${attempt + 1} after ${delay}ms (status ${res.status})`);
56
+ await new Promise((r) => setTimeout(r, delay));
57
+ return this.request(path, body, attempt + 1);
58
+ }
59
+ const text = await res.text();
60
+ try {
61
+ return JSON.parse(text);
62
+ }
63
+ catch {
64
+ return {};
65
+ }
66
+ }
67
+ catch (err) {
68
+ clearTimeout(timer);
69
+ if (attempt < this.retries) {
70
+ const delay = Math.pow(2, attempt) * 1000;
71
+ this.log(`Retry ${attempt + 1} after ${delay}ms (network error)`);
72
+ await new Promise((r) => setTimeout(r, delay));
73
+ return this.request(path, body, attempt + 1);
74
+ }
75
+ const error = err instanceof Error ? err : new Error(String(err));
76
+ this.log(`Error: ${error.message}`);
77
+ if (this.onError)
78
+ this.onError(error);
79
+ return {};
80
+ }
81
+ }
82
+ async postTrack(sessionData) {
83
+ return this.request(ENDPOINTS.TRACK, { sessionData });
84
+ }
85
+ async postEvent(event) {
86
+ return this.request(ENDPOINTS.EVENTS, event);
87
+ }
88
+ async postBulkEvents(events) {
89
+ return this.request(ENDPOINTS.EVENTS_BULK, { events });
90
+ }
91
+ async postIdentify(payload) {
92
+ return this.request(ENDPOINTS.IDENTIFY, payload);
93
+ }
94
+ async postWalletAddress(payload) {
95
+ return this.request(ENDPOINTS.WALLET_ADDRESS, payload);
96
+ }
97
+ async postReset(payload) {
98
+ return this.request(ENDPOINTS.RESET, payload);
99
+ }
100
+ async postPeople(path, payload) {
101
+ return this.request(path, payload);
102
+ }
103
+ async postGroup(path, payload) {
104
+ return this.request(path, payload);
105
+ }
106
+ }
107
+ //# sourceMappingURL=ApiClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiClient.js","sourceRoot":"","sources":["../../../src/api/ApiClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export declare const ENDPOINTS: {
2
+ readonly TRACK: "/api/sdk/track";
3
+ readonly EVENTS: "/api/events";
4
+ readonly EVENTS_BULK: "/api/events/bulk";
5
+ readonly IDENTIFY: "/api/sdk/identify";
6
+ readonly WALLET_ADDRESS: "/api/sdk/wallet-address";
7
+ readonly RESET: "/api/sdk/reset";
8
+ readonly PEOPLE_SET: "/api/sdk/people/set";
9
+ readonly PEOPLE_SET_ONCE: "/api/sdk/people/set_once";
10
+ readonly PEOPLE_UNSET: "/api/sdk/people/unset";
11
+ readonly PEOPLE_INCREMENT: "/api/sdk/people/increment";
12
+ readonly PEOPLE_APPEND: "/api/sdk/people/append";
13
+ readonly PEOPLE_UNION: "/api/sdk/people/union";
14
+ readonly PEOPLE_REMOVE: "/api/sdk/people/remove";
15
+ readonly PEOPLE_TRACK_CHARGE: "/api/sdk/people/track_charge";
16
+ readonly PEOPLE_CLEAR_CHARGES: "/api/sdk/people/clear_charges";
17
+ readonly PEOPLE_DELETE_USER: "/api/sdk/people/delete_user";
18
+ readonly GROUPS_SET: "/api/sdk/groups/set_group";
19
+ readonly GROUPS_ADD: "/api/sdk/groups/add_group";
20
+ readonly GROUPS_REMOVE: "/api/sdk/groups/remove_group";
21
+ readonly GROUPS_PROFILE: "/api/sdk/groups/profile";
22
+ };
23
+ export type Endpoint = (typeof ENDPOINTS)[keyof typeof ENDPOINTS];
24
+ //# sourceMappingURL=endpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../../src/api/endpoints.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;CAqBZ,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ export const ENDPOINTS = {
2
+ TRACK: '/api/sdk/track',
3
+ EVENTS: '/api/events',
4
+ EVENTS_BULK: '/api/events/bulk',
5
+ IDENTIFY: '/api/sdk/identify',
6
+ WALLET_ADDRESS: '/api/sdk/wallet-address',
7
+ RESET: '/api/sdk/reset',
8
+ PEOPLE_SET: '/api/sdk/people/set',
9
+ PEOPLE_SET_ONCE: '/api/sdk/people/set_once',
10
+ PEOPLE_UNSET: '/api/sdk/people/unset',
11
+ PEOPLE_INCREMENT: '/api/sdk/people/increment',
12
+ PEOPLE_APPEND: '/api/sdk/people/append',
13
+ PEOPLE_UNION: '/api/sdk/people/union',
14
+ PEOPLE_REMOVE: '/api/sdk/people/remove',
15
+ PEOPLE_TRACK_CHARGE: '/api/sdk/people/track_charge',
16
+ PEOPLE_CLEAR_CHARGES: '/api/sdk/people/clear_charges',
17
+ PEOPLE_DELETE_USER: '/api/sdk/people/delete_user',
18
+ GROUPS_SET: '/api/sdk/groups/set_group',
19
+ GROUPS_ADD: '/api/sdk/groups/add_group',
20
+ GROUPS_REMOVE: '/api/sdk/groups/remove_group',
21
+ GROUPS_PROFILE: '/api/sdk/groups/profile',
22
+ };
23
+ //# sourceMappingURL=endpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../../src/api/endpoints.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,KAAK,EAAiB,gBAAgB;IACtC,MAAM,EAAgB,aAAa;IACnC,WAAW,EAAW,kBAAkB;IACxC,QAAQ,EAAc,mBAAmB;IACzC,cAAc,EAAQ,yBAAyB;IAC/C,KAAK,EAAiB,gBAAgB;IACtC,UAAU,EAAY,qBAAqB;IAC3C,eAAe,EAAO,0BAA0B;IAChD,YAAY,EAAU,uBAAuB;IAC7C,gBAAgB,EAAM,2BAA2B;IACjD,aAAa,EAAS,wBAAwB;IAC9C,YAAY,EAAU,uBAAuB;IAC7C,aAAa,EAAS,wBAAwB;IAC9C,mBAAmB,EAAG,8BAA8B;IACpD,oBAAoB,EAAE,+BAA+B;IACrD,kBAAkB,EAAI,6BAA6B;IACnD,UAAU,EAAY,2BAA2B;IACjD,UAAU,EAAY,2BAA2B;IACjD,aAAa,EAAS,8BAA8B;IACpD,cAAc,EAAQ,yBAAyB;CACvC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { ApiClient } from '../api/ApiClient.js';
2
+ import type { SessionManager } from '../session/SessionManager.js';
3
+ export declare class AutoEventManager {
4
+ private enabled;
5
+ private readonly siteId;
6
+ private readonly apiClient;
7
+ private readonly sessionManager;
8
+ private _uncaughtHandler;
9
+ private _rejectionHandler;
10
+ constructor(siteId: string, apiClient: ApiClient, sessionManager: SessionManager);
11
+ enable(): void;
12
+ disable(): void;
13
+ isEnabled(): boolean;
14
+ trackError(err: Error, errorType: string, severity: 'critical' | 'error' | 'warning', distinctId?: string): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=AutoEventManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoEventManager.d.ts","sourceRoot":"","sources":["../../../src/auto/AutoEventManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAInE,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAEhD,OAAO,CAAC,gBAAgB,CAAuC;IAC/D,OAAO,CAAC,iBAAiB,CAA4C;gBAGnE,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc;IAOhC,MAAM,IAAI,IAAI;IAkBd,OAAO,IAAI,IAAI;IAcf,SAAS,IAAI,OAAO;IAId,UAAU,CACd,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,EAC1C,UAAU,SAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC;CA8BjB"}