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.
- package/README.md +192 -0
- package/dist/cjs/TrodoClient.js +113 -0
- package/dist/cjs/TrodoClient.js.map +1 -0
- package/dist/cjs/UserContext.js +166 -0
- package/dist/cjs/UserContext.js.map +1 -0
- package/dist/cjs/api/ApiClient.js +144 -0
- package/dist/cjs/api/ApiClient.js.map +1 -0
- package/dist/cjs/api/endpoints.js +26 -0
- package/dist/cjs/api/endpoints.js.map +1 -0
- package/dist/cjs/auto/AutoEventManager.js +70 -0
- package/dist/cjs/auto/AutoEventManager.js.map +1 -0
- package/dist/cjs/index.js +141 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/managers/GroupManager.js +84 -0
- package/dist/cjs/managers/GroupManager.js.map +1 -0
- package/dist/cjs/managers/PeopleManager.js +75 -0
- package/dist/cjs/managers/PeopleManager.js.map +1 -0
- package/dist/cjs/queue/BatchFlusher.js +35 -0
- package/dist/cjs/queue/BatchFlusher.js.map +1 -0
- package/dist/cjs/queue/EventQueue.js +27 -0
- package/dist/cjs/queue/EventQueue.js.map +1 -0
- package/dist/cjs/session/ServerSession.js +113 -0
- package/dist/cjs/session/ServerSession.js.map +1 -0
- package/dist/cjs/session/SessionManager.js +54 -0
- package/dist/cjs/session/SessionManager.js.map +1 -0
- package/dist/cjs/types/index.js +6 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/esm/TrodoClient.d.ts +39 -0
- package/dist/esm/TrodoClient.d.ts.map +1 -0
- package/dist/esm/TrodoClient.js +109 -0
- package/dist/esm/TrodoClient.js.map +1 -0
- package/dist/esm/UserContext.d.ts +40 -0
- package/dist/esm/UserContext.d.ts.map +1 -0
- package/dist/esm/UserContext.js +162 -0
- package/dist/esm/UserContext.js.map +1 -0
- package/dist/esm/api/ApiClient.d.ts +40 -0
- package/dist/esm/api/ApiClient.d.ts.map +1 -0
- package/dist/esm/api/ApiClient.js +107 -0
- package/dist/esm/api/ApiClient.js.map +1 -0
- package/dist/esm/api/endpoints.d.ts +24 -0
- package/dist/esm/api/endpoints.d.ts.map +1 -0
- package/dist/esm/api/endpoints.js +23 -0
- package/dist/esm/api/endpoints.js.map +1 -0
- package/dist/esm/auto/AutoEventManager.d.ts +16 -0
- package/dist/esm/auto/AutoEventManager.d.ts.map +1 -0
- package/dist/esm/auto/AutoEventManager.js +66 -0
- package/dist/esm/auto/AutoEventManager.js.map +1 -0
- package/dist/esm/index.d.ts +81 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +108 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/managers/GroupManager.d.ts +14 -0
- package/dist/esm/managers/GroupManager.d.ts.map +1 -0
- package/dist/esm/managers/GroupManager.js +80 -0
- package/dist/esm/managers/GroupManager.js.map +1 -0
- package/dist/esm/managers/PeopleManager.d.ts +20 -0
- package/dist/esm/managers/PeopleManager.d.ts.map +1 -0
- package/dist/esm/managers/PeopleManager.js +71 -0
- package/dist/esm/managers/PeopleManager.js.map +1 -0
- package/dist/esm/queue/BatchFlusher.d.ts +13 -0
- package/dist/esm/queue/BatchFlusher.d.ts.map +1 -0
- package/dist/esm/queue/BatchFlusher.js +31 -0
- package/dist/esm/queue/BatchFlusher.js.map +1 -0
- package/dist/esm/queue/EventQueue.d.ts +14 -0
- package/dist/esm/queue/EventQueue.d.ts.map +1 -0
- package/dist/esm/queue/EventQueue.js +23 -0
- package/dist/esm/queue/EventQueue.js.map +1 -0
- package/dist/esm/session/ServerSession.d.ts +6 -0
- package/dist/esm/session/ServerSession.d.ts.map +1 -0
- package/dist/esm/session/ServerSession.js +74 -0
- package/dist/esm/session/ServerSession.js.map +1 -0
- package/dist/esm/session/SessionManager.d.ts +12 -0
- package/dist/esm/session/SessionManager.d.ts.map +1 -0
- package/dist/esm/session/SessionManager.js +50 -0
- package/dist/esm/session/SessionManager.js.map +1 -0
- package/dist/esm/types/index.d.ts +110 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +5 -0
- package/dist/esm/types/index.js.map +1 -0
- 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"}
|