crexperium-sdk 1.1.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 (49) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +482 -0
  3. package/dist/browser.js +2 -0
  4. package/dist/browser.js.map +1 -0
  5. package/dist/client.d.ts +55 -0
  6. package/dist/client.d.ts.map +1 -0
  7. package/dist/config.d.ts +30 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/errors.d.ts +47 -0
  10. package/dist/errors.d.ts.map +1 -0
  11. package/dist/index.d.ts +18 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +13850 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/index.mjs +13823 -0
  16. package/dist/index.mjs.map +1 -0
  17. package/dist/plugins/auto-page-view.d.ts +21 -0
  18. package/dist/plugins/auto-page-view.d.ts.map +1 -0
  19. package/dist/plugins/device-info.d.ts +30 -0
  20. package/dist/plugins/device-info.d.ts.map +1 -0
  21. package/dist/plugins/session-replay.d.ts +106 -0
  22. package/dist/plugins/visitor-id.d.ts +29 -0
  23. package/dist/plugins/visitor-id.d.ts.map +1 -0
  24. package/dist/resources/base.d.ts +20 -0
  25. package/dist/resources/base.d.ts.map +1 -0
  26. package/dist/resources/contacts.d.ts +31 -0
  27. package/dist/resources/contacts.d.ts.map +1 -0
  28. package/dist/resources/deals.d.ts +31 -0
  29. package/dist/resources/deals.d.ts.map +1 -0
  30. package/dist/resources/events.d.ts +27 -0
  31. package/dist/resources/events.d.ts.map +1 -0
  32. package/dist/types/common.d.ts +20 -0
  33. package/dist/types/common.d.ts.map +1 -0
  34. package/dist/types/contacts.d.ts +78 -0
  35. package/dist/types/contacts.d.ts.map +1 -0
  36. package/dist/types/deals.d.ts +71 -0
  37. package/dist/types/deals.d.ts.map +1 -0
  38. package/dist/types/events.d.ts +76 -0
  39. package/dist/types/events.d.ts.map +1 -0
  40. package/dist/types/index.d.ts +8 -0
  41. package/dist/types/index.d.ts.map +1 -0
  42. package/dist/types/session-replay.d.ts +213 -0
  43. package/dist/utils/device.d.ts +25 -0
  44. package/dist/utils/device.d.ts.map +1 -0
  45. package/dist/utils/http.d.ts +53 -0
  46. package/dist/utils/http.d.ts.map +1 -0
  47. package/dist/utils/storage.d.ts +23 -0
  48. package/dist/utils/storage.d.ts.map +1 -0
  49. package/package.json +73 -0
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Session Replay Type Definitions
3
+ */
4
+ import { eventWithTime } from 'rrweb';
5
+ /**
6
+ * Session replay configuration options
7
+ */
8
+ export interface SessionReplayConfig {
9
+ /** Enable session replay recording (default: true) */
10
+ enabled?: boolean;
11
+ /** Sample rate for recording sessions (0-1, default: 1.0 = 100%) */
12
+ sampleRate?: number;
13
+ /** Recording options */
14
+ recording?: {
15
+ /** Mask all input fields (default: true) */
16
+ maskAllInputs?: boolean;
17
+ /** CSS selector for elements to mask */
18
+ maskTextSelector?: string;
19
+ /** CSS selector for elements to block completely */
20
+ blockSelector?: string;
21
+ /** Record canvas elements (default: false) */
22
+ recordCanvas?: boolean;
23
+ /** Collect fonts (default: false) */
24
+ collectFonts?: boolean;
25
+ /** Inline stylesheets (default: true) */
26
+ inlineStylesheet?: boolean;
27
+ /** Inline images (default: false) */
28
+ inlineImages?: boolean;
29
+ };
30
+ /** Buffering and flushing options */
31
+ buffering?: {
32
+ /** Flush interval in milliseconds (default: 5000) */
33
+ flushInterval?: number;
34
+ /** Maximum buffer size in events (default: 100) */
35
+ maxBufferSize?: number;
36
+ /** Maximum session duration in milliseconds (default: 3600000 = 1 hour) */
37
+ maxSessionDuration?: number;
38
+ };
39
+ /** Telemetry capture options */
40
+ telemetry?: {
41
+ /** Capture console logs (default: true) */
42
+ captureConsole?: boolean;
43
+ /** Capture network requests (default: true) */
44
+ captureNetwork?: boolean;
45
+ /** Capture JavaScript errors (default: true) */
46
+ captureErrors?: boolean;
47
+ /** Capture performance metrics (default: true) */
48
+ capturePerformance?: boolean;
49
+ };
50
+ /** Privacy configuration */
51
+ privacy?: {
52
+ /** Automatically mask email addresses (default: true) */
53
+ maskEmails?: boolean;
54
+ /** Automatically mask phone numbers (default: true) */
55
+ maskPhones?: boolean;
56
+ /** Automatically mask credit card numbers (default: true) */
57
+ maskCreditCards?: boolean;
58
+ /** Custom masking patterns (regex + replacement) */
59
+ customMaskPatterns?: Array<{
60
+ pattern: RegExp;
61
+ replacement: string;
62
+ }>;
63
+ };
64
+ }
65
+ /**
66
+ * Session replay session data
67
+ */
68
+ export interface SessionReplaySession {
69
+ /** Unique session ID */
70
+ sessionId: string;
71
+ /** Start timestamp */
72
+ startTime: Date;
73
+ /** End timestamp (if session has ended) */
74
+ endTime?: Date;
75
+ /** Session duration in milliseconds */
76
+ duration?: number;
77
+ /** Initial URL */
78
+ initialUrl: string;
79
+ /** Referrer URL */
80
+ referrer?: string;
81
+ /** Visitor ID */
82
+ visitorId?: string;
83
+ /** Contact ID (if identified) */
84
+ contactId?: string;
85
+ /** Device type */
86
+ deviceType?: string;
87
+ /** Browser */
88
+ browser?: string;
89
+ /** Operating system */
90
+ os?: string;
91
+ /** Viewport dimensions */
92
+ viewport?: {
93
+ width: number;
94
+ height: number;
95
+ };
96
+ /** Status */
97
+ status: 'ACTIVE' | 'ENDED' | 'PROCESSING' | 'ERROR';
98
+ /** Event counts */
99
+ eventCount?: number;
100
+ errorCount?: number;
101
+ consoleLogCount?: number;
102
+ networkRequestCount?: number;
103
+ pageCount?: number;
104
+ }
105
+ /**
106
+ * Session event types
107
+ */
108
+ export declare enum SessionEventType {
109
+ CONSOLE = "CONSOLE",
110
+ ERROR = "ERROR",
111
+ NETWORK = "NETWORK",
112
+ CUSTOM = "CUSTOM",
113
+ PERFORMANCE = "PERFORMANCE",
114
+ PAGE_VIEW = "PAGE_VIEW"
115
+ }
116
+ /**
117
+ * Console log levels
118
+ */
119
+ export declare enum ConsoleLevel {
120
+ LOG = "log",
121
+ INFO = "info",
122
+ WARN = "warn",
123
+ ERROR = "error",
124
+ DEBUG = "debug"
125
+ }
126
+ /**
127
+ * Session telemetry event
128
+ */
129
+ export interface SessionEvent {
130
+ /** Event type */
131
+ type: SessionEventType;
132
+ /** Timestamp */
133
+ timestamp: Date;
134
+ /** Offset from session start in milliseconds */
135
+ offsetMs: number;
136
+ /** Console log data */
137
+ console?: {
138
+ level: ConsoleLevel;
139
+ message: string;
140
+ args?: any[];
141
+ };
142
+ /** Error data */
143
+ error?: {
144
+ message: string;
145
+ stack?: string;
146
+ filename?: string;
147
+ lineno?: number;
148
+ colno?: number;
149
+ };
150
+ /** Network request data */
151
+ network?: {
152
+ method: string;
153
+ url: string;
154
+ statusCode?: number;
155
+ duration?: number;
156
+ requestSize?: number;
157
+ responseSize?: number;
158
+ requestHeaders?: Record<string, string>;
159
+ responseHeaders?: Record<string, string>;
160
+ };
161
+ /** Performance data */
162
+ performance?: {
163
+ metric: string;
164
+ value: number;
165
+ rating?: 'good' | 'needs-improvement' | 'poor';
166
+ };
167
+ /** Custom event data */
168
+ custom?: {
169
+ name: string;
170
+ data?: any;
171
+ };
172
+ /** Page view data */
173
+ pageView?: {
174
+ url: string;
175
+ title: string;
176
+ referrer?: string;
177
+ };
178
+ }
179
+ /**
180
+ * Batch ingest request
181
+ */
182
+ export interface SessionReplayIngestRequest {
183
+ /** Session ID */
184
+ sessionId: string;
185
+ /** rrweb events */
186
+ events: eventWithTime[];
187
+ /** Telemetry events */
188
+ telemetryEvents?: SessionEvent[];
189
+ }
190
+ /**
191
+ * Session replay API responses
192
+ */
193
+ export interface SessionReplayStartResponse {
194
+ sessionId: string;
195
+ status: string;
196
+ }
197
+ export interface SessionReplayIngestResponse {
198
+ success: boolean;
199
+ eventsProcessed: number;
200
+ }
201
+ export interface SessionReplayEndResponse {
202
+ success: boolean;
203
+ duration: number;
204
+ }
205
+ /**
206
+ * Custom event options
207
+ */
208
+ export interface CustomEventOptions {
209
+ /** Event name */
210
+ name: string;
211
+ /** Event data */
212
+ data?: any;
213
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Device detection utilities for browser environments
3
+ */
4
+ export interface DeviceInfo {
5
+ userAgent: string;
6
+ deviceType: 'desktop' | 'mobile' | 'tablet';
7
+ browser: string;
8
+ os: string;
9
+ }
10
+ /**
11
+ * Detect device type from user agent
12
+ */
13
+ export declare function detectDeviceType(userAgent: string): 'desktop' | 'mobile' | 'tablet';
14
+ /**
15
+ * Detect browser from user agent
16
+ */
17
+ export declare function detectBrowser(userAgent: string): string;
18
+ /**
19
+ * Detect operating system from user agent
20
+ */
21
+ export declare function detectOS(userAgent: string): string;
22
+ /**
23
+ * Get complete device information
24
+ */
25
+ export declare function getDeviceInfo(): DeviceInfo;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/utils/device.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAenF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA6BvD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA+BlD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAkB1C"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * HTTP client with retry logic and error handling
3
+ */
4
+ import { Config } from '../config';
5
+ export declare class HTTPClient {
6
+ private config;
7
+ private headers;
8
+ constructor(config: Config);
9
+ /**
10
+ * Make an HTTP request with retry logic
11
+ */
12
+ request<T>(method: string, endpoint: string, data?: any, params?: Record<string, any>): Promise<T>;
13
+ /**
14
+ * GET request
15
+ */
16
+ get<T>(endpoint: string, params?: Record<string, any>): Promise<T>;
17
+ /**
18
+ * POST request
19
+ */
20
+ post<T>(endpoint: string, data?: any): Promise<T>;
21
+ /**
22
+ * PATCH request
23
+ */
24
+ patch<T>(endpoint: string, data?: any): Promise<T>;
25
+ /**
26
+ * PUT request
27
+ */
28
+ put<T>(endpoint: string, data?: any): Promise<T>;
29
+ /**
30
+ * DELETE request
31
+ */
32
+ delete<T>(endpoint: string): Promise<T>;
33
+ /**
34
+ * Build URL with query parameters
35
+ */
36
+ private buildUrl;
37
+ /**
38
+ * Make the actual HTTP request
39
+ */
40
+ private makeRequest;
41
+ /**
42
+ * Handle HTTP response and errors
43
+ */
44
+ private handleResponse;
45
+ /**
46
+ * Calculate retry delay with exponential backoff
47
+ */
48
+ private calculateRetryDelay;
49
+ /**
50
+ * Sleep utility
51
+ */
52
+ private sleep;
53
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/utils/http.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAmCnC,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAyB;gBAE5B,MAAM,EAAE,MAAM;IAS1B;;OAEG;IACG,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,GAAG,EACV,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,OAAO,CAAC,CAAC,CAAC;IAgCb;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIxE;;OAEG;IACG,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAIvD;;OAEG;IACG,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAIxD;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAItD;;OAEG;IACG,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAI7C;;OAEG;IACH,OAAO,CAAC,QAAQ;IA0BhB;;OAEG;YACW,WAAW;IAqCzB;;OAEG;YACW,cAAc;IAuD5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Storage utilities for browser localStorage/cookies
3
+ */
4
+ /**
5
+ * Check if localStorage is available
6
+ */
7
+ export declare function isLocalStorageAvailable(): boolean;
8
+ /**
9
+ * Get item from localStorage
10
+ */
11
+ export declare function getLocalStorageItem(key: string): string | null;
12
+ /**
13
+ * Set item in localStorage
14
+ */
15
+ export declare function setLocalStorageItem(key: string, value: string): boolean;
16
+ /**
17
+ * Remove item from localStorage
18
+ */
19
+ export declare function removeLocalStorageItem(key: string): boolean;
20
+ /**
21
+ * Generate a UUID v4
22
+ */
23
+ export declare function generateUUID(): string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/utils/storage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAajD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAWvE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAW3D;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAWrC"}
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "crexperium-sdk",
3
+ "version": "1.1.0",
4
+ "description": "Official TypeScript/JavaScript SDK for Crexperium CRM",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.mjs",
7
+ "browser": "dist/browser.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "require": "./dist/index.js",
12
+ "import": "./dist/index.mjs",
13
+ "types": "./dist/index.d.ts"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "README.md",
19
+ "LICENSE"
20
+ ],
21
+ "scripts": {
22
+ "build": "rollup -c",
23
+ "test": "jest",
24
+ "lint": "eslint src --ext .ts",
25
+ "type-check": "tsc --noEmit",
26
+ "prepublishOnly": "npm run build",
27
+ "dev": "rollup -c -w"
28
+ },
29
+ "keywords": [
30
+ "crm",
31
+ "analytics",
32
+ "events",
33
+ "tracking",
34
+ "crexperium",
35
+ "typescript",
36
+ "sdk",
37
+ "session-replay",
38
+ "rrweb"
39
+ ],
40
+ "author": "Crexperium",
41
+ "license": "MIT",
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "https://github.com/crexperium/crexperium-sdk.git"
45
+ },
46
+ "homepage": "https://github.com/crexperium/crexperium-sdk#readme",
47
+ "bugs": {
48
+ "url": "https://github.com/crexperium/crexperium-sdk/issues"
49
+ },
50
+ "type": "module",
51
+ "devDependencies": {
52
+ "@rollup/plugin-commonjs": "^25.0.0",
53
+ "@rollup/plugin-node-resolve": "^15.0.0",
54
+ "@rollup/plugin-terser": "^0.4.0",
55
+ "@rollup/plugin-typescript": "^11.0.0",
56
+ "@types/jest": "^29.0.0",
57
+ "@types/node": "^20.0.0",
58
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
59
+ "@typescript-eslint/parser": "^6.0.0",
60
+ "eslint": "^8.0.0",
61
+ "jest": "^29.0.0",
62
+ "prettier": "^3.0.0",
63
+ "rollup": "^4.0.0",
64
+ "ts-jest": "^29.0.0",
65
+ "tslib": "^2.6.0",
66
+ "typescript": "^5.0.0"
67
+ },
68
+ "dependencies": {
69
+ "node-fetch": "^3.3.0",
70
+ "rrweb": "^2.0.0-alpha.11",
71
+ "rrweb-player": "^2.0.0-alpha.11"
72
+ }
73
+ }