cdp-lite-sdk 0.1.0 → 0.1.1
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 +846 -0
- package/dist/cdp-lite-sdk.umd.js +407 -0
- package/dist/cdp-lite-sdk.umd.js.map +1 -0
- package/dist/cdp-lite-sdk.umd.min.js +2 -0
- package/dist/cdp-lite-sdk.umd.min.js.map +1 -0
- package/dist/index.cjs.js +401 -0
- package/dist/index.cjs.js.map +1 -0
- package/{src/cdp-lite-sdk.js → dist/index.esm.js} +12 -9
- package/dist/index.esm.js.map +1 -0
- package/package.json +43 -10
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
class CdpLiteSdk {
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.config = {
|
|
8
|
+
apiKey: config.apiKey,
|
|
9
|
+
source: config.source || 'Web',
|
|
10
|
+
serviceName: config.serviceName || 'DefaultService',
|
|
11
|
+
baseUrl: config.baseUrl || 'https://stg-ingestlog.vietcredit.com.vn',
|
|
12
|
+
isTest: config.isTest !== undefined ? config.isTest : false,
|
|
13
|
+
debug: config.debug || false,
|
|
14
|
+
batchSize: config.batchSize || 10,
|
|
15
|
+
batchInterval: config.batchInterval || 5000, // 5 seconds
|
|
16
|
+
autoTrackDevice: config.autoTrackDevice !== undefined ? config.autoTrackDevice : true,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
this.eventQueue = [];
|
|
20
|
+
this.userId = null;
|
|
21
|
+
this.anonymousId = this._getOrCreateAnonymousId();
|
|
22
|
+
this.userTraits = {};
|
|
23
|
+
this.deviceInfo = this.config.autoTrackDevice ? this._getDeviceInfo() : {};
|
|
24
|
+
|
|
25
|
+
// Start batch processor
|
|
26
|
+
if (this.config.batchSize > 1) {
|
|
27
|
+
this._startBatchProcessor();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
this._log('CDP Lite SDK initialized', this.config);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// ============ Public Methods ============
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Track an event
|
|
37
|
+
* @param {string} eventName - Name of the event
|
|
38
|
+
* @param {object} properties - Event properties
|
|
39
|
+
* @param {object} options - Additional options (device, campaign, context, etc.)
|
|
40
|
+
*/
|
|
41
|
+
track(eventName, properties = {}, options = {}) {
|
|
42
|
+
const event = this._createEvent({
|
|
43
|
+
type: 'track',
|
|
44
|
+
event: eventName,
|
|
45
|
+
properties,
|
|
46
|
+
...options
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
if (this.config.batchSize > 1) {
|
|
50
|
+
this._addToQueue(event);
|
|
51
|
+
} else {
|
|
52
|
+
return this._sendEvent(event);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Identify a user
|
|
58
|
+
* @param {string} userId - User ID
|
|
59
|
+
* @param {object} traits - User traits/attributes
|
|
60
|
+
*/
|
|
61
|
+
identify(userId, traits = {}) {
|
|
62
|
+
this.userId = userId;
|
|
63
|
+
this.userTraits = { ...this.userTraits, ...traits };
|
|
64
|
+
|
|
65
|
+
const event = this._createEvent({
|
|
66
|
+
type: 'identify',
|
|
67
|
+
event: 'user_identified',
|
|
68
|
+
traits,
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
this._log('User identified', { userId, traits });
|
|
72
|
+
|
|
73
|
+
if (this.config.batchSize > 1) {
|
|
74
|
+
this._addToQueue(event);
|
|
75
|
+
} else {
|
|
76
|
+
return this._sendEvent(event);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Track a page view
|
|
82
|
+
* @param {string} pageName - Page name
|
|
83
|
+
* @param {object} properties - Page properties
|
|
84
|
+
*/
|
|
85
|
+
page(pageName, properties = {}) {
|
|
86
|
+
return this.track('page_view', {
|
|
87
|
+
page_name: pageName,
|
|
88
|
+
...properties
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Track a screen view (for mobile apps)
|
|
94
|
+
* @param {string} screenName - Screen name
|
|
95
|
+
* @param {object} properties - Screen properties
|
|
96
|
+
*/
|
|
97
|
+
screen(screenName, properties = {}) {
|
|
98
|
+
return this.track('screen_view', {
|
|
99
|
+
screen_name: screenName,
|
|
100
|
+
...properties
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Set user properties
|
|
106
|
+
* @param {object} traits - User traits
|
|
107
|
+
*/
|
|
108
|
+
setUserAttributes(traits) {
|
|
109
|
+
this.userTraits = { ...this.userTraits, ...traits };
|
|
110
|
+
return this.identify(this.userId, traits);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Set device information
|
|
115
|
+
* @param {object} deviceInfo - Device information
|
|
116
|
+
*/
|
|
117
|
+
setDeviceInfo(deviceInfo) {
|
|
118
|
+
this.deviceInfo = { ...this.deviceInfo, ...deviceInfo };
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Manually flush the event queue
|
|
123
|
+
*/
|
|
124
|
+
async flush() {
|
|
125
|
+
if (this.eventQueue.length === 0) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const events = [...this.eventQueue];
|
|
130
|
+
this.eventQueue = [];
|
|
131
|
+
|
|
132
|
+
return this._sendBatch(events);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Reset user data (logout)
|
|
137
|
+
*/
|
|
138
|
+
reset() {
|
|
139
|
+
this.userId = null;
|
|
140
|
+
this.userTraits = {};
|
|
141
|
+
this.anonymousId = this._generateUUID();
|
|
142
|
+
this._saveAnonymousId(this.anonymousId);
|
|
143
|
+
this._log('User data reset');
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// ============ Private Methods ============
|
|
147
|
+
|
|
148
|
+
_createEvent(data) {
|
|
149
|
+
const event = {
|
|
150
|
+
event_id: this._generateUUID(),
|
|
151
|
+
type: data.type || 'track',
|
|
152
|
+
event: data.event,
|
|
153
|
+
service_name: this.config.serviceName,
|
|
154
|
+
user_id: this.userId || '',
|
|
155
|
+
anonymous_id: this.anonymousId,
|
|
156
|
+
loan_code: data.loanCode || '',
|
|
157
|
+
properties: data.properties || {},
|
|
158
|
+
traits: data.traits || this.userTraits,
|
|
159
|
+
device: data.device || this.deviceInfo,
|
|
160
|
+
campaign: data.campaign || {},
|
|
161
|
+
context: data.context || {},
|
|
162
|
+
event_time: new Date().toISOString(),
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
return event;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
async _sendEvent(event) {
|
|
169
|
+
const url = `${this.config.baseUrl}/api/v1/events/track`;
|
|
170
|
+
const headers = this._getHeaders();
|
|
171
|
+
|
|
172
|
+
try {
|
|
173
|
+
const response = await this._makeRequest(url, {
|
|
174
|
+
method: 'POST',
|
|
175
|
+
headers,
|
|
176
|
+
body: JSON.stringify(event),
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
this._log('Event tracked successfully', event);
|
|
180
|
+
return response;
|
|
181
|
+
} catch (error) {
|
|
182
|
+
this._logError('Failed to track event', error);
|
|
183
|
+
throw error;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
async _sendBatch(events) {
|
|
188
|
+
if (events.length === 0) return;
|
|
189
|
+
|
|
190
|
+
const url = `${this.config.baseUrl}/api/v1/events/batch`;
|
|
191
|
+
const headers = this._getHeaders();
|
|
192
|
+
|
|
193
|
+
try {
|
|
194
|
+
const response = await this._makeRequest(url, {
|
|
195
|
+
method: 'POST',
|
|
196
|
+
headers,
|
|
197
|
+
body: JSON.stringify({ events }),
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
this._log(`Batch of ${events.length} events tracked successfully`);
|
|
201
|
+
return response;
|
|
202
|
+
} catch (error) {
|
|
203
|
+
this._logError('Failed to track batch', error);
|
|
204
|
+
// Re-queue failed events
|
|
205
|
+
this.eventQueue.unshift(...events);
|
|
206
|
+
throw error;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
_addToQueue(event) {
|
|
211
|
+
this.eventQueue.push(event);
|
|
212
|
+
this._log('Event added to queue', { queueSize: this.eventQueue.length });
|
|
213
|
+
|
|
214
|
+
if (this.eventQueue.length >= this.config.batchSize) {
|
|
215
|
+
this.flush();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
_startBatchProcessor() {
|
|
220
|
+
this.batchInterval = setInterval(() => {
|
|
221
|
+
if (this.eventQueue.length > 0) {
|
|
222
|
+
this.flush();
|
|
223
|
+
}
|
|
224
|
+
}, this.config.batchInterval);
|
|
225
|
+
|
|
226
|
+
// Clean up on page unload (browser only)
|
|
227
|
+
if (typeof window !== 'undefined') {
|
|
228
|
+
window.addEventListener('beforeunload', () => {
|
|
229
|
+
this.flush();
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
_getHeaders() {
|
|
235
|
+
const timestamp = Math.floor(Date.now() / 1000);
|
|
236
|
+
|
|
237
|
+
return {
|
|
238
|
+
'X-Api-Key': this.config.apiKey,
|
|
239
|
+
'X-Source': this.config.source,
|
|
240
|
+
'X-Timestamp': timestamp.toString(),
|
|
241
|
+
'X-Signatures': '', // Implement signature logic if needed
|
|
242
|
+
'isTest': this.config.isTest.toString(),
|
|
243
|
+
'Content-Type': 'application/json',
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
async _makeRequest(url, options) {
|
|
248
|
+
// Support both browser fetch and Node.js
|
|
249
|
+
if (typeof fetch !== 'undefined') {
|
|
250
|
+
const response = await fetch(url, options);
|
|
251
|
+
if (!response.ok) {
|
|
252
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
253
|
+
}
|
|
254
|
+
return response.json();
|
|
255
|
+
} else {
|
|
256
|
+
// For Node.js environment
|
|
257
|
+
const https = require('https');
|
|
258
|
+
const urlObj = new URL(url);
|
|
259
|
+
|
|
260
|
+
return new Promise((resolve, reject) => {
|
|
261
|
+
const req = https.request({
|
|
262
|
+
hostname: urlObj.hostname,
|
|
263
|
+
path: urlObj.pathname + urlObj.search,
|
|
264
|
+
method: options.method,
|
|
265
|
+
headers: options.headers,
|
|
266
|
+
}, (res) => {
|
|
267
|
+
let data = '';
|
|
268
|
+
res.on('data', chunk => data += chunk);
|
|
269
|
+
res.on('end', () => {
|
|
270
|
+
if (res.statusCode >= 200 && res.statusCode < 300) {
|
|
271
|
+
resolve(JSON.parse(data));
|
|
272
|
+
} else {
|
|
273
|
+
reject(new Error(`HTTP error! status: ${res.statusCode}`));
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
req.on('error', reject);
|
|
279
|
+
if (options.body) {
|
|
280
|
+
req.write(options.body);
|
|
281
|
+
}
|
|
282
|
+
req.end();
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
_getDeviceInfo() {
|
|
288
|
+
if (typeof window === 'undefined') {
|
|
289
|
+
// Node.js environment
|
|
290
|
+
return {
|
|
291
|
+
platform: process.platform,
|
|
292
|
+
brand: 'Server',
|
|
293
|
+
model: 'Node.js',
|
|
294
|
+
app_version: '',
|
|
295
|
+
os_version: process.version,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// Browser environment
|
|
300
|
+
const ua = navigator.userAgent;
|
|
301
|
+
const platform = this._detectPlatform(ua);
|
|
302
|
+
|
|
303
|
+
return {
|
|
304
|
+
platform,
|
|
305
|
+
brand: this._detectBrand(ua),
|
|
306
|
+
model: this._detectModel(ua),
|
|
307
|
+
app_version: '',
|
|
308
|
+
os_version: this._detectOSVersion(ua),
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
_detectPlatform(ua) {
|
|
313
|
+
if (/iPhone|iPad|iPod/.test(ua)) return 'ios';
|
|
314
|
+
if (/Android/.test(ua)) return 'android';
|
|
315
|
+
if (/Windows/.test(ua)) return 'windows';
|
|
316
|
+
if (/Mac/.test(ua)) return 'macos';
|
|
317
|
+
if (/Linux/.test(ua)) return 'linux';
|
|
318
|
+
return 'web';
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
_detectBrand(ua) {
|
|
322
|
+
if (/iPhone|iPad|iPod/.test(ua)) return 'Apple';
|
|
323
|
+
if (/Samsung/.test(ua)) return 'Samsung';
|
|
324
|
+
if (/Huawei/.test(ua)) return 'Huawei';
|
|
325
|
+
if (/Xiaomi/.test(ua)) return 'Xiaomi';
|
|
326
|
+
if (/Oppo/.test(ua)) return 'Oppo';
|
|
327
|
+
return 'Unknown';
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
_detectModel(ua) {
|
|
331
|
+
const match = ua.match(/\(([^)]+)\)/);
|
|
332
|
+
return match ? match[1].split(';')[0].trim() : 'Unknown';
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
_detectOSVersion(ua) {
|
|
336
|
+
const match = ua.match(/(?:Android|iPhone OS|CPU OS|Mac OS X|Windows NT) ([\d._]+)/);
|
|
337
|
+
return match ? match[1].replace(/_/g, '.') : 'Unknown';
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
_getOrCreateAnonymousId() {
|
|
341
|
+
if (typeof localStorage !== 'undefined') {
|
|
342
|
+
let id = localStorage.getItem('cdp_anonymous_id');
|
|
343
|
+
if (!id) {
|
|
344
|
+
id = this._generateUUID();
|
|
345
|
+
this._saveAnonymousId(id);
|
|
346
|
+
}
|
|
347
|
+
return id;
|
|
348
|
+
}
|
|
349
|
+
return this._generateUUID();
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
_saveAnonymousId(id) {
|
|
353
|
+
if (typeof localStorage !== 'undefined') {
|
|
354
|
+
localStorage.setItem('cdp_anonymous_id', id);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
_generateUUID() {
|
|
359
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
|
|
360
|
+
const r = Math.random() * 16 | 0;
|
|
361
|
+
const v = c === 'x' ? r : (r & 0x3 | 0x8);
|
|
362
|
+
return v.toString(16);
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
_log(...args) {
|
|
367
|
+
if (this.config.debug) {
|
|
368
|
+
console.log('[CDP Lite SDK]', ...args);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
_logError(...args) {
|
|
373
|
+
if (this.config.debug) {
|
|
374
|
+
console.error('[CDP Lite SDK]', ...args);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
// Cleanup
|
|
379
|
+
destroy() {
|
|
380
|
+
if (this.batchInterval) {
|
|
381
|
+
clearInterval(this.batchInterval);
|
|
382
|
+
}
|
|
383
|
+
this.flush();
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
// CommonJS export (for Node.js require)
|
|
388
|
+
if (typeof module !== 'undefined' && module.exports) {
|
|
389
|
+
module.exports = CdpLiteSdk;
|
|
390
|
+
module.exports.default = CdpLiteSdk;
|
|
391
|
+
module.exports.CdpLiteSdk = CdpLiteSdk;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
// Browser global
|
|
395
|
+
if (typeof window !== 'undefined') {
|
|
396
|
+
window.CdpLiteSdk = CdpLiteSdk;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
exports.CdpLiteSdk = CdpLiteSdk;
|
|
400
|
+
exports.default = CdpLiteSdk;
|
|
401
|
+
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/cdp-lite-sdk.js"],"sourcesContent":["class CdpLiteSdk {\n constructor(config) {\n this.config = {\n apiKey: config.apiKey,\n source: config.source || 'Web',\n serviceName: config.serviceName || 'DefaultService',\n baseUrl: config.baseUrl || 'https://stg-ingestlog.vietcredit.com.vn',\n isTest: config.isTest !== undefined ? config.isTest : false,\n debug: config.debug || false,\n batchSize: config.batchSize || 10,\n batchInterval: config.batchInterval || 5000, // 5 seconds\n autoTrackDevice: config.autoTrackDevice !== undefined ? config.autoTrackDevice : true,\n };\n\n this.eventQueue = [];\n this.userId = null;\n this.anonymousId = this._getOrCreateAnonymousId();\n this.userTraits = {};\n this.deviceInfo = this.config.autoTrackDevice ? this._getDeviceInfo() : {};\n\n // Start batch processor\n if (this.config.batchSize > 1) {\n this._startBatchProcessor();\n }\n\n this._log('CDP Lite SDK initialized', this.config);\n }\n\n // ============ Public Methods ============\n\n /**\n * Track an event\n * @param {string} eventName - Name of the event\n * @param {object} properties - Event properties\n * @param {object} options - Additional options (device, campaign, context, etc.)\n */\n track(eventName, properties = {}, options = {}) {\n const event = this._createEvent({\n type: 'track',\n event: eventName,\n properties,\n ...options\n });\n\n if (this.config.batchSize > 1) {\n this._addToQueue(event);\n } else {\n return this._sendEvent(event);\n }\n }\n\n /**\n * Identify a user\n * @param {string} userId - User ID\n * @param {object} traits - User traits/attributes\n */\n identify(userId, traits = {}) {\n this.userId = userId;\n this.userTraits = { ...this.userTraits, ...traits };\n\n const event = this._createEvent({\n type: 'identify',\n event: 'user_identified',\n traits,\n });\n\n this._log('User identified', { userId, traits });\n\n if (this.config.batchSize > 1) {\n this._addToQueue(event);\n } else {\n return this._sendEvent(event);\n }\n }\n\n /**\n * Track a page view\n * @param {string} pageName - Page name\n * @param {object} properties - Page properties\n */\n page(pageName, properties = {}) {\n return this.track('page_view', {\n page_name: pageName,\n ...properties\n });\n }\n\n /**\n * Track a screen view (for mobile apps)\n * @param {string} screenName - Screen name\n * @param {object} properties - Screen properties\n */\n screen(screenName, properties = {}) {\n return this.track('screen_view', {\n screen_name: screenName,\n ...properties\n });\n }\n\n /**\n * Set user properties\n * @param {object} traits - User traits\n */\n setUserAttributes(traits) {\n this.userTraits = { ...this.userTraits, ...traits };\n return this.identify(this.userId, traits);\n }\n\n /**\n * Set device information\n * @param {object} deviceInfo - Device information\n */\n setDeviceInfo(deviceInfo) {\n this.deviceInfo = { ...this.deviceInfo, ...deviceInfo };\n }\n\n /**\n * Manually flush the event queue\n */\n async flush() {\n if (this.eventQueue.length === 0) {\n return;\n }\n\n const events = [...this.eventQueue];\n this.eventQueue = [];\n\n return this._sendBatch(events);\n }\n\n /**\n * Reset user data (logout)\n */\n reset() {\n this.userId = null;\n this.userTraits = {};\n this.anonymousId = this._generateUUID();\n this._saveAnonymousId(this.anonymousId);\n this._log('User data reset');\n }\n\n // ============ Private Methods ============\n\n _createEvent(data) {\n const event = {\n event_id: this._generateUUID(),\n type: data.type || 'track',\n event: data.event,\n service_name: this.config.serviceName,\n user_id: this.userId || '',\n anonymous_id: this.anonymousId,\n loan_code: data.loanCode || '',\n properties: data.properties || {},\n traits: data.traits || this.userTraits,\n device: data.device || this.deviceInfo,\n campaign: data.campaign || {},\n context: data.context || {},\n event_time: new Date().toISOString(),\n };\n\n return event;\n }\n\n async _sendEvent(event) {\n const url = `${this.config.baseUrl}/api/v1/events/track`;\n const headers = this._getHeaders();\n\n try {\n const response = await this._makeRequest(url, {\n method: 'POST',\n headers,\n body: JSON.stringify(event),\n });\n\n this._log('Event tracked successfully', event);\n return response;\n } catch (error) {\n this._logError('Failed to track event', error);\n throw error;\n }\n }\n\n async _sendBatch(events) {\n if (events.length === 0) return;\n\n const url = `${this.config.baseUrl}/api/v1/events/batch`;\n const headers = this._getHeaders();\n\n try {\n const response = await this._makeRequest(url, {\n method: 'POST',\n headers,\n body: JSON.stringify({ events }),\n });\n\n this._log(`Batch of ${events.length} events tracked successfully`);\n return response;\n } catch (error) {\n this._logError('Failed to track batch', error);\n // Re-queue failed events\n this.eventQueue.unshift(...events);\n throw error;\n }\n }\n\n _addToQueue(event) {\n this.eventQueue.push(event);\n this._log('Event added to queue', { queueSize: this.eventQueue.length });\n\n if (this.eventQueue.length >= this.config.batchSize) {\n this.flush();\n }\n }\n\n _startBatchProcessor() {\n this.batchInterval = setInterval(() => {\n if (this.eventQueue.length > 0) {\n this.flush();\n }\n }, this.config.batchInterval);\n\n // Clean up on page unload (browser only)\n if (typeof window !== 'undefined') {\n window.addEventListener('beforeunload', () => {\n this.flush();\n });\n }\n }\n\n _getHeaders() {\n const timestamp = Math.floor(Date.now() / 1000);\n\n return {\n 'X-Api-Key': this.config.apiKey,\n 'X-Source': this.config.source,\n 'X-Timestamp': timestamp.toString(),\n 'X-Signatures': '', // Implement signature logic if needed\n 'isTest': this.config.isTest.toString(),\n 'Content-Type': 'application/json',\n };\n }\n\n async _makeRequest(url, options) {\n // Support both browser fetch and Node.js\n if (typeof fetch !== 'undefined') {\n const response = await fetch(url, options);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n return response.json();\n } else {\n // For Node.js environment\n const https = require('https');\n const urlObj = new URL(url);\n\n return new Promise((resolve, reject) => {\n const req = https.request({\n hostname: urlObj.hostname,\n path: urlObj.pathname + urlObj.search,\n method: options.method,\n headers: options.headers,\n }, (res) => {\n let data = '';\n res.on('data', chunk => data += chunk);\n res.on('end', () => {\n if (res.statusCode >= 200 && res.statusCode < 300) {\n resolve(JSON.parse(data));\n } else {\n reject(new Error(`HTTP error! status: ${res.statusCode}`));\n }\n });\n });\n\n req.on('error', reject);\n if (options.body) {\n req.write(options.body);\n }\n req.end();\n });\n }\n }\n\n _getDeviceInfo() {\n if (typeof window === 'undefined') {\n // Node.js environment\n return {\n platform: process.platform,\n brand: 'Server',\n model: 'Node.js',\n app_version: '',\n os_version: process.version,\n };\n }\n\n // Browser environment\n const ua = navigator.userAgent;\n const platform = this._detectPlatform(ua);\n\n return {\n platform,\n brand: this._detectBrand(ua),\n model: this._detectModel(ua),\n app_version: '',\n os_version: this._detectOSVersion(ua),\n };\n }\n\n _detectPlatform(ua) {\n if (/iPhone|iPad|iPod/.test(ua)) return 'ios';\n if (/Android/.test(ua)) return 'android';\n if (/Windows/.test(ua)) return 'windows';\n if (/Mac/.test(ua)) return 'macos';\n if (/Linux/.test(ua)) return 'linux';\n return 'web';\n }\n\n _detectBrand(ua) {\n if (/iPhone|iPad|iPod/.test(ua)) return 'Apple';\n if (/Samsung/.test(ua)) return 'Samsung';\n if (/Huawei/.test(ua)) return 'Huawei';\n if (/Xiaomi/.test(ua)) return 'Xiaomi';\n if (/Oppo/.test(ua)) return 'Oppo';\n return 'Unknown';\n }\n\n _detectModel(ua) {\n const match = ua.match(/\\(([^)]+)\\)/);\n return match ? match[1].split(';')[0].trim() : 'Unknown';\n }\n\n _detectOSVersion(ua) {\n const match = ua.match(/(?:Android|iPhone OS|CPU OS|Mac OS X|Windows NT) ([\\d._]+)/);\n return match ? match[1].replace(/_/g, '.') : 'Unknown';\n }\n\n _getOrCreateAnonymousId() {\n if (typeof localStorage !== 'undefined') {\n let id = localStorage.getItem('cdp_anonymous_id');\n if (!id) {\n id = this._generateUUID();\n this._saveAnonymousId(id);\n }\n return id;\n }\n return this._generateUUID();\n }\n\n _saveAnonymousId(id) {\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem('cdp_anonymous_id', id);\n }\n }\n\n _generateUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n _log(...args) {\n if (this.config.debug) {\n console.log('[CDP Lite SDK]', ...args);\n }\n }\n\n _logError(...args) {\n if (this.config.debug) {\n console.error('[CDP Lite SDK]', ...args);\n }\n }\n\n // Cleanup\n destroy() {\n if (this.batchInterval) {\n clearInterval(this.batchInterval);\n }\n this.flush();\n }\n}\n\n// FIXED: Proper exports for both CommonJS and ES modules\n// This ensures compatibility with both import styles\n\n// Named export for flexibility\nexport { CdpLiteSdk };\n\n// ES Module export (default)\nexport default CdpLiteSdk;\n\n// CommonJS export (for Node.js require)\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = CdpLiteSdk;\n module.exports.default = CdpLiteSdk;\n module.exports.CdpLiteSdk = CdpLiteSdk;\n}\n\n// Browser global\nif (typeof window !== 'undefined') {\n window.CdpLiteSdk = CdpLiteSdk;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
// cdp-lite-sdk.test.js
|
|
2
|
-
// VConnect Analytics SDK - Track events and users
|
|
3
|
-
|
|
4
1
|
class CdpLiteSdk {
|
|
5
2
|
constructor(config) {
|
|
6
3
|
this.config = {
|
|
@@ -26,7 +23,7 @@ class CdpLiteSdk {
|
|
|
26
23
|
this._startBatchProcessor();
|
|
27
24
|
}
|
|
28
25
|
|
|
29
|
-
this._log('
|
|
26
|
+
this._log('CDP Lite SDK initialized', this.config);
|
|
30
27
|
}
|
|
31
28
|
|
|
32
29
|
// ============ Public Methods ============
|
|
@@ -338,7 +335,7 @@ class CdpLiteSdk {
|
|
|
338
335
|
|
|
339
336
|
_getOrCreateAnonymousId() {
|
|
340
337
|
if (typeof localStorage !== 'undefined') {
|
|
341
|
-
let id = localStorage.getItem('
|
|
338
|
+
let id = localStorage.getItem('cdp_anonymous_id');
|
|
342
339
|
if (!id) {
|
|
343
340
|
id = this._generateUUID();
|
|
344
341
|
this._saveAnonymousId(id);
|
|
@@ -350,7 +347,7 @@ class CdpLiteSdk {
|
|
|
350
347
|
|
|
351
348
|
_saveAnonymousId(id) {
|
|
352
349
|
if (typeof localStorage !== 'undefined') {
|
|
353
|
-
localStorage.setItem('
|
|
350
|
+
localStorage.setItem('cdp_anonymous_id', id);
|
|
354
351
|
}
|
|
355
352
|
}
|
|
356
353
|
|
|
@@ -364,13 +361,13 @@ class CdpLiteSdk {
|
|
|
364
361
|
|
|
365
362
|
_log(...args) {
|
|
366
363
|
if (this.config.debug) {
|
|
367
|
-
console.log('[
|
|
364
|
+
console.log('[CDP Lite SDK]', ...args);
|
|
368
365
|
}
|
|
369
366
|
}
|
|
370
367
|
|
|
371
368
|
_logError(...args) {
|
|
372
369
|
if (this.config.debug) {
|
|
373
|
-
console.error('[
|
|
370
|
+
console.error('[CDP Lite SDK]', ...args);
|
|
374
371
|
}
|
|
375
372
|
}
|
|
376
373
|
|
|
@@ -383,11 +380,17 @@ class CdpLiteSdk {
|
|
|
383
380
|
}
|
|
384
381
|
}
|
|
385
382
|
|
|
386
|
-
//
|
|
383
|
+
// CommonJS export (for Node.js require)
|
|
387
384
|
if (typeof module !== 'undefined' && module.exports) {
|
|
388
385
|
module.exports = CdpLiteSdk;
|
|
386
|
+
module.exports.default = CdpLiteSdk;
|
|
387
|
+
module.exports.CdpLiteSdk = CdpLiteSdk;
|
|
389
388
|
}
|
|
390
389
|
|
|
390
|
+
// Browser global
|
|
391
391
|
if (typeof window !== 'undefined') {
|
|
392
392
|
window.CdpLiteSdk = CdpLiteSdk;
|
|
393
393
|
}
|
|
394
|
+
|
|
395
|
+
export { CdpLiteSdk, CdpLiteSdk as default };
|
|
396
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/cdp-lite-sdk.js"],"sourcesContent":["class CdpLiteSdk {\n constructor(config) {\n this.config = {\n apiKey: config.apiKey,\n source: config.source || 'Web',\n serviceName: config.serviceName || 'DefaultService',\n baseUrl: config.baseUrl || 'https://stg-ingestlog.vietcredit.com.vn',\n isTest: config.isTest !== undefined ? config.isTest : false,\n debug: config.debug || false,\n batchSize: config.batchSize || 10,\n batchInterval: config.batchInterval || 5000, // 5 seconds\n autoTrackDevice: config.autoTrackDevice !== undefined ? config.autoTrackDevice : true,\n };\n\n this.eventQueue = [];\n this.userId = null;\n this.anonymousId = this._getOrCreateAnonymousId();\n this.userTraits = {};\n this.deviceInfo = this.config.autoTrackDevice ? this._getDeviceInfo() : {};\n\n // Start batch processor\n if (this.config.batchSize > 1) {\n this._startBatchProcessor();\n }\n\n this._log('CDP Lite SDK initialized', this.config);\n }\n\n // ============ Public Methods ============\n\n /**\n * Track an event\n * @param {string} eventName - Name of the event\n * @param {object} properties - Event properties\n * @param {object} options - Additional options (device, campaign, context, etc.)\n */\n track(eventName, properties = {}, options = {}) {\n const event = this._createEvent({\n type: 'track',\n event: eventName,\n properties,\n ...options\n });\n\n if (this.config.batchSize > 1) {\n this._addToQueue(event);\n } else {\n return this._sendEvent(event);\n }\n }\n\n /**\n * Identify a user\n * @param {string} userId - User ID\n * @param {object} traits - User traits/attributes\n */\n identify(userId, traits = {}) {\n this.userId = userId;\n this.userTraits = { ...this.userTraits, ...traits };\n\n const event = this._createEvent({\n type: 'identify',\n event: 'user_identified',\n traits,\n });\n\n this._log('User identified', { userId, traits });\n\n if (this.config.batchSize > 1) {\n this._addToQueue(event);\n } else {\n return this._sendEvent(event);\n }\n }\n\n /**\n * Track a page view\n * @param {string} pageName - Page name\n * @param {object} properties - Page properties\n */\n page(pageName, properties = {}) {\n return this.track('page_view', {\n page_name: pageName,\n ...properties\n });\n }\n\n /**\n * Track a screen view (for mobile apps)\n * @param {string} screenName - Screen name\n * @param {object} properties - Screen properties\n */\n screen(screenName, properties = {}) {\n return this.track('screen_view', {\n screen_name: screenName,\n ...properties\n });\n }\n\n /**\n * Set user properties\n * @param {object} traits - User traits\n */\n setUserAttributes(traits) {\n this.userTraits = { ...this.userTraits, ...traits };\n return this.identify(this.userId, traits);\n }\n\n /**\n * Set device information\n * @param {object} deviceInfo - Device information\n */\n setDeviceInfo(deviceInfo) {\n this.deviceInfo = { ...this.deviceInfo, ...deviceInfo };\n }\n\n /**\n * Manually flush the event queue\n */\n async flush() {\n if (this.eventQueue.length === 0) {\n return;\n }\n\n const events = [...this.eventQueue];\n this.eventQueue = [];\n\n return this._sendBatch(events);\n }\n\n /**\n * Reset user data (logout)\n */\n reset() {\n this.userId = null;\n this.userTraits = {};\n this.anonymousId = this._generateUUID();\n this._saveAnonymousId(this.anonymousId);\n this._log('User data reset');\n }\n\n // ============ Private Methods ============\n\n _createEvent(data) {\n const event = {\n event_id: this._generateUUID(),\n type: data.type || 'track',\n event: data.event,\n service_name: this.config.serviceName,\n user_id: this.userId || '',\n anonymous_id: this.anonymousId,\n loan_code: data.loanCode || '',\n properties: data.properties || {},\n traits: data.traits || this.userTraits,\n device: data.device || this.deviceInfo,\n campaign: data.campaign || {},\n context: data.context || {},\n event_time: new Date().toISOString(),\n };\n\n return event;\n }\n\n async _sendEvent(event) {\n const url = `${this.config.baseUrl}/api/v1/events/track`;\n const headers = this._getHeaders();\n\n try {\n const response = await this._makeRequest(url, {\n method: 'POST',\n headers,\n body: JSON.stringify(event),\n });\n\n this._log('Event tracked successfully', event);\n return response;\n } catch (error) {\n this._logError('Failed to track event', error);\n throw error;\n }\n }\n\n async _sendBatch(events) {\n if (events.length === 0) return;\n\n const url = `${this.config.baseUrl}/api/v1/events/batch`;\n const headers = this._getHeaders();\n\n try {\n const response = await this._makeRequest(url, {\n method: 'POST',\n headers,\n body: JSON.stringify({ events }),\n });\n\n this._log(`Batch of ${events.length} events tracked successfully`);\n return response;\n } catch (error) {\n this._logError('Failed to track batch', error);\n // Re-queue failed events\n this.eventQueue.unshift(...events);\n throw error;\n }\n }\n\n _addToQueue(event) {\n this.eventQueue.push(event);\n this._log('Event added to queue', { queueSize: this.eventQueue.length });\n\n if (this.eventQueue.length >= this.config.batchSize) {\n this.flush();\n }\n }\n\n _startBatchProcessor() {\n this.batchInterval = setInterval(() => {\n if (this.eventQueue.length > 0) {\n this.flush();\n }\n }, this.config.batchInterval);\n\n // Clean up on page unload (browser only)\n if (typeof window !== 'undefined') {\n window.addEventListener('beforeunload', () => {\n this.flush();\n });\n }\n }\n\n _getHeaders() {\n const timestamp = Math.floor(Date.now() / 1000);\n\n return {\n 'X-Api-Key': this.config.apiKey,\n 'X-Source': this.config.source,\n 'X-Timestamp': timestamp.toString(),\n 'X-Signatures': '', // Implement signature logic if needed\n 'isTest': this.config.isTest.toString(),\n 'Content-Type': 'application/json',\n };\n }\n\n async _makeRequest(url, options) {\n // Support both browser fetch and Node.js\n if (typeof fetch !== 'undefined') {\n const response = await fetch(url, options);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n return response.json();\n } else {\n // For Node.js environment\n const https = require('https');\n const urlObj = new URL(url);\n\n return new Promise((resolve, reject) => {\n const req = https.request({\n hostname: urlObj.hostname,\n path: urlObj.pathname + urlObj.search,\n method: options.method,\n headers: options.headers,\n }, (res) => {\n let data = '';\n res.on('data', chunk => data += chunk);\n res.on('end', () => {\n if (res.statusCode >= 200 && res.statusCode < 300) {\n resolve(JSON.parse(data));\n } else {\n reject(new Error(`HTTP error! status: ${res.statusCode}`));\n }\n });\n });\n\n req.on('error', reject);\n if (options.body) {\n req.write(options.body);\n }\n req.end();\n });\n }\n }\n\n _getDeviceInfo() {\n if (typeof window === 'undefined') {\n // Node.js environment\n return {\n platform: process.platform,\n brand: 'Server',\n model: 'Node.js',\n app_version: '',\n os_version: process.version,\n };\n }\n\n // Browser environment\n const ua = navigator.userAgent;\n const platform = this._detectPlatform(ua);\n\n return {\n platform,\n brand: this._detectBrand(ua),\n model: this._detectModel(ua),\n app_version: '',\n os_version: this._detectOSVersion(ua),\n };\n }\n\n _detectPlatform(ua) {\n if (/iPhone|iPad|iPod/.test(ua)) return 'ios';\n if (/Android/.test(ua)) return 'android';\n if (/Windows/.test(ua)) return 'windows';\n if (/Mac/.test(ua)) return 'macos';\n if (/Linux/.test(ua)) return 'linux';\n return 'web';\n }\n\n _detectBrand(ua) {\n if (/iPhone|iPad|iPod/.test(ua)) return 'Apple';\n if (/Samsung/.test(ua)) return 'Samsung';\n if (/Huawei/.test(ua)) return 'Huawei';\n if (/Xiaomi/.test(ua)) return 'Xiaomi';\n if (/Oppo/.test(ua)) return 'Oppo';\n return 'Unknown';\n }\n\n _detectModel(ua) {\n const match = ua.match(/\\(([^)]+)\\)/);\n return match ? match[1].split(';')[0].trim() : 'Unknown';\n }\n\n _detectOSVersion(ua) {\n const match = ua.match(/(?:Android|iPhone OS|CPU OS|Mac OS X|Windows NT) ([\\d._]+)/);\n return match ? match[1].replace(/_/g, '.') : 'Unknown';\n }\n\n _getOrCreateAnonymousId() {\n if (typeof localStorage !== 'undefined') {\n let id = localStorage.getItem('cdp_anonymous_id');\n if (!id) {\n id = this._generateUUID();\n this._saveAnonymousId(id);\n }\n return id;\n }\n return this._generateUUID();\n }\n\n _saveAnonymousId(id) {\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem('cdp_anonymous_id', id);\n }\n }\n\n _generateUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n _log(...args) {\n if (this.config.debug) {\n console.log('[CDP Lite SDK]', ...args);\n }\n }\n\n _logError(...args) {\n if (this.config.debug) {\n console.error('[CDP Lite SDK]', ...args);\n }\n }\n\n // Cleanup\n destroy() {\n if (this.batchInterval) {\n clearInterval(this.batchInterval);\n }\n this.flush();\n }\n}\n\n// FIXED: Proper exports for both CommonJS and ES modules\n// This ensures compatibility with both import styles\n\n// Named export for flexibility\nexport { CdpLiteSdk };\n\n// ES Module export (default)\nexport default CdpLiteSdk;\n\n// CommonJS export (for Node.js require)\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = CdpLiteSdk;\n module.exports.default = CdpLiteSdk;\n module.exports.CdpLiteSdk = CdpLiteSdk;\n}\n\n// Browser global\nif (typeof window !== 'undefined') {\n window.CdpLiteSdk = CdpLiteSdk;\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,19 +1,52 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cdp-lite-sdk",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "
|
|
5
|
-
"main": "
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "CDP Lite SDK for tracking events and users - Customer Data Platform",
|
|
5
|
+
"main": "dist/index.cjs.js",
|
|
6
|
+
"module": "dist/index.esm.js",
|
|
7
|
+
"browser": "dist/cdp-lite-sdk.min.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.esm.js",
|
|
12
|
+
"require": "./dist/index.cjs.js",
|
|
13
|
+
"types": "./dist/index.d.ts"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"README.md",
|
|
19
|
+
"LICENSE"
|
|
20
|
+
],
|
|
9
21
|
"scripts": {
|
|
10
|
-
"
|
|
22
|
+
"build": "rollup -c",
|
|
23
|
+
"test": "jest",
|
|
24
|
+
"prepublishOnly": "npm run build"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"cdp",
|
|
28
|
+
"analytics",
|
|
29
|
+
"tracking",
|
|
30
|
+
"events",
|
|
31
|
+
"customer-data-platform",
|
|
32
|
+
"user-tracking",
|
|
33
|
+
"event-tracking",
|
|
34
|
+
"cdp-lite"
|
|
35
|
+
],
|
|
36
|
+
"author": "Your Name",
|
|
37
|
+
"license": "MIT",
|
|
38
|
+
"repository": {
|
|
39
|
+
"type": "git",
|
|
40
|
+
"url": "https://gitlab.ovp.vn/dlc/vc-cdp-sdk"
|
|
11
41
|
},
|
|
12
|
-
"keywords": [],
|
|
13
42
|
"devDependencies": {
|
|
14
|
-
"@rollup/plugin-commonjs": "^
|
|
15
|
-
"@rollup/plugin-node-resolve": "^
|
|
43
|
+
"@rollup/plugin-commonjs": "^25.0.8",
|
|
44
|
+
"@rollup/plugin-node-resolve": "^15.3.1",
|
|
16
45
|
"@rollup/plugin-terser": "^0.4.4",
|
|
46
|
+
"jest": "^29.0.0",
|
|
17
47
|
"rollup": "^4.54.0"
|
|
48
|
+
},
|
|
49
|
+
"engines": {
|
|
50
|
+
"node": ">=14.0.0"
|
|
18
51
|
}
|
|
19
52
|
}
|