@shware/analytics 0.0.7 → 0.0.8
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/dist/index.d.mts +27 -0
- package/dist/index.mjs +89 -0
- package/dist/{types.d.ts → shared/analytics.CbeSxKlP.d.mts} +18 -44
- package/dist/web.d.mts +6 -0
- package/dist/web.mjs +42 -0
- package/package.json +7 -10
- package/dist/ga.d.ts +0 -3
- package/dist/ga.d.ts.map +0 -1
- package/dist/ga.js +0 -70
- package/dist/index.d.ts +0 -5
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -3
- package/dist/setup.d.ts +0 -26
- package/dist/setup.d.ts.map +0 -1
- package/dist/setup.js +0 -18
- package/dist/track.d.ts +0 -8
- package/dist/track.d.ts.map +0 -1
- package/dist/track.js +0 -96
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -1
- package/dist/visitor.d.ts +0 -4
- package/dist/visitor.d.ts.map +0 -1
- package/dist/visitor.js +0 -112
- package/dist/web.d.ts +0 -4
- package/dist/web.d.ts.map +0 -1
- package/dist/web.js +0 -40
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { T as TrackTags, a as ThirdPartyLogger, E as EventName, b as TrackProperties, c as TrackEventResponse, V as Visitor, d as VisitorProperties } from './shared/analytics.CbeSxKlP.mjs';
|
|
2
|
+
|
|
3
|
+
interface Storage {
|
|
4
|
+
getItem: (key: string) => (string | null) | Promise<string | null>;
|
|
5
|
+
setItem: (key: string, value: string) => void | Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
interface Options {
|
|
8
|
+
release: string;
|
|
9
|
+
storage: Storage;
|
|
10
|
+
endpoint: string;
|
|
11
|
+
getTags: () => TrackTags | Promise<TrackTags>;
|
|
12
|
+
getDeviceId: () => string | Promise<string>;
|
|
13
|
+
thirdPartyLoggers?: ThirdPartyLogger[];
|
|
14
|
+
}
|
|
15
|
+
declare function setupAnalytics(init: Options): void;
|
|
16
|
+
|
|
17
|
+
interface TrackOptions {
|
|
18
|
+
enableThirdPartyLogging?: boolean;
|
|
19
|
+
onSucceed?: (response?: TrackEventResponse) => void;
|
|
20
|
+
onError?: (error: unknown) => void;
|
|
21
|
+
}
|
|
22
|
+
declare function track<T extends EventName = EventName>(name: T, properties?: TrackProperties<T>, trackOptions?: TrackOptions): void;
|
|
23
|
+
|
|
24
|
+
declare function getVisitor(): Promise<Visitor>;
|
|
25
|
+
declare function setVisitor(properties: VisitorProperties): Promise<Visitor>;
|
|
26
|
+
|
|
27
|
+
export { TrackProperties, TrackTags, VisitorProperties, getVisitor, setVisitor, setupAnalytics, track };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import retry from 'axios-retry';
|
|
3
|
+
import { TokenBucket } from 'limiter';
|
|
4
|
+
|
|
5
|
+
const config = {
|
|
6
|
+
http: null,
|
|
7
|
+
release: "0.0.0",
|
|
8
|
+
storage: null,
|
|
9
|
+
getTags: null,
|
|
10
|
+
getDeviceId: null,
|
|
11
|
+
thirdPartyLoggers: []
|
|
12
|
+
};
|
|
13
|
+
function setupAnalytics(init) {
|
|
14
|
+
config.release = init.release;
|
|
15
|
+
config.storage = init.storage;
|
|
16
|
+
config.getTags = init.getTags;
|
|
17
|
+
config.getDeviceId = init.getDeviceId;
|
|
18
|
+
config.thirdPartyLoggers = init.thirdPartyLoggers ?? [];
|
|
19
|
+
config.http = axios.create({ baseURL: init.endpoint, withCredentials: true, adapter: "fetch" });
|
|
20
|
+
retry(config.http, { retries: 5, retryDelay: retry.exponentialDelay });
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const key = "visitor_id";
|
|
24
|
+
async function getOrCreateVisitor() {
|
|
25
|
+
const visitorId = await config.storage.getItem(key);
|
|
26
|
+
if (visitorId) {
|
|
27
|
+
const response = await config.http.get(`/visitors/${visitorId}`);
|
|
28
|
+
return response.data;
|
|
29
|
+
} else {
|
|
30
|
+
const dto = {
|
|
31
|
+
device_id: await config.getDeviceId(),
|
|
32
|
+
properties: await config.getTags()
|
|
33
|
+
};
|
|
34
|
+
const response = await config.http.post(`/visitors`, dto);
|
|
35
|
+
await config.storage.setItem(key, response.data.id);
|
|
36
|
+
return response.data;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
let visitor = null;
|
|
40
|
+
let visitorFetcher = null;
|
|
41
|
+
async function getVisitor() {
|
|
42
|
+
if (visitor) return visitor;
|
|
43
|
+
if (visitorFetcher) return visitorFetcher;
|
|
44
|
+
visitorFetcher = getOrCreateVisitor();
|
|
45
|
+
visitor = await visitorFetcher;
|
|
46
|
+
visitorFetcher = null;
|
|
47
|
+
return visitor;
|
|
48
|
+
}
|
|
49
|
+
async function setVisitor(properties) {
|
|
50
|
+
const dto = { properties };
|
|
51
|
+
const { id } = await getVisitor();
|
|
52
|
+
const response = await config.http.patch(`/visitors/${id}`, dto);
|
|
53
|
+
visitor = response.data;
|
|
54
|
+
return response.data;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const defaultOptions = { enableThirdPartyLogging: true };
|
|
58
|
+
const REQUEST_TOKENS = 2;
|
|
59
|
+
const tokenBucket = new TokenBucket({
|
|
60
|
+
bucketSize: 20,
|
|
61
|
+
interval: "second",
|
|
62
|
+
tokensPerInterval: 1
|
|
63
|
+
});
|
|
64
|
+
async function trackAsync(name, properties, trackOptions = defaultOptions) {
|
|
65
|
+
try {
|
|
66
|
+
await tokenBucket.removeTokens(REQUEST_TOKENS);
|
|
67
|
+
const dto = {
|
|
68
|
+
name,
|
|
69
|
+
properties,
|
|
70
|
+
tags: await config.getTags(),
|
|
71
|
+
visitor_id: (await getVisitor()).id,
|
|
72
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
73
|
+
};
|
|
74
|
+
const { data } = await config.http.post(`/events`, dto);
|
|
75
|
+
if (!trackOptions.enableThirdPartyLogging || !config.thirdPartyLoggers) return;
|
|
76
|
+
config.thirdPartyLoggers.forEach((logger) => logger(name, properties, data.id));
|
|
77
|
+
trackOptions.onSucceed?.(data);
|
|
78
|
+
} catch (e) {
|
|
79
|
+
if (e instanceof Error) {
|
|
80
|
+
console.log("Failed to send track event:", e.message);
|
|
81
|
+
}
|
|
82
|
+
trackOptions.onError?.(e);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function track(name, properties, trackOptions = defaultOptions) {
|
|
86
|
+
trackAsync(name, properties, trackOptions).catch(console.error);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export { getVisitor, setVisitor, setupAnalytics, track };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
interface Item {
|
|
2
2
|
item_brand?: string;
|
|
3
3
|
item_id?: string;
|
|
4
4
|
item_name?: string;
|
|
@@ -18,7 +18,7 @@ export interface Item {
|
|
|
18
18
|
* ref: https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtag
|
|
19
19
|
* ref: https://firebase.google.com/docs/reference/android/com/google/firebase/analytics/FirebaseAnalytics.Event
|
|
20
20
|
* */
|
|
21
|
-
|
|
21
|
+
type StandardEventProperties = {
|
|
22
22
|
add_payment_info: {
|
|
23
23
|
items?: Item[];
|
|
24
24
|
currency?: string;
|
|
@@ -227,25 +227,12 @@ export type StandardEventProperties = {
|
|
|
227
227
|
search_term: string;
|
|
228
228
|
};
|
|
229
229
|
};
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
email?: string;
|
|
237
|
-
firstName?: string;
|
|
238
|
-
lastName?: string;
|
|
239
|
-
phone?: string;
|
|
240
|
-
dateOfBirth?: string;
|
|
241
|
-
gender?: string;
|
|
242
|
-
city?: string;
|
|
243
|
-
state?: string;
|
|
244
|
-
postal?: string;
|
|
245
|
-
country?: string;
|
|
246
|
-
}
|
|
247
|
-
export type ThirdPartyLogger = <T extends EventName = EventName>(name: T, properties?: TrackProperties<T>, event_id?: string) => void;
|
|
248
|
-
export interface PlatformInfo {
|
|
230
|
+
type AllowedPropertyValues = string | number | boolean | null;
|
|
231
|
+
type EventName = Lowercase<string>;
|
|
232
|
+
type CustomEventProperties = Record<Lowercase<string>, AllowedPropertyValues>;
|
|
233
|
+
type TrackProperties<T extends EventName = EventName> = T extends keyof StandardEventProperties ? StandardEventProperties[T] : CustomEventProperties;
|
|
234
|
+
type ThirdPartyLogger = <T extends EventName = EventName>(name: T, properties?: TrackProperties<T>, event_id?: string) => void;
|
|
235
|
+
interface PlatformInfo {
|
|
249
236
|
os?: string;
|
|
250
237
|
os_name?: string;
|
|
251
238
|
os_version?: string;
|
|
@@ -254,7 +241,7 @@ export interface PlatformInfo {
|
|
|
254
241
|
browser_version?: string;
|
|
255
242
|
platform?: 'ios' | 'android' | 'web' | 'macos' | 'windows' | 'linux' | 'unknown';
|
|
256
243
|
}
|
|
257
|
-
|
|
244
|
+
interface DeviceInfo {
|
|
258
245
|
device?: string;
|
|
259
246
|
device_id?: string;
|
|
260
247
|
device_type?: string;
|
|
@@ -262,17 +249,17 @@ export interface DeviceInfo {
|
|
|
262
249
|
device_pixel_ratio?: string;
|
|
263
250
|
screen_resolution?: `${number}x${number}`;
|
|
264
251
|
}
|
|
265
|
-
|
|
252
|
+
interface EnvironmentInfo {
|
|
266
253
|
release?: string;
|
|
267
254
|
language?: string;
|
|
268
255
|
timezone?: string;
|
|
269
256
|
environment?: 'development' | 'production';
|
|
270
257
|
}
|
|
271
|
-
|
|
258
|
+
interface SourceInfo {
|
|
272
259
|
source_url?: string;
|
|
273
260
|
source?: 'app' | 'web' | 'offline';
|
|
274
261
|
}
|
|
275
|
-
|
|
262
|
+
interface ThirdPartyFields {
|
|
276
263
|
/**
|
|
277
264
|
* Meta pixel fields
|
|
278
265
|
* ref: https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters#fbc
|
|
@@ -281,34 +268,21 @@ export interface ThirdPartyFields {
|
|
|
281
268
|
fbc?: string;
|
|
282
269
|
fbp?: string;
|
|
283
270
|
}
|
|
284
|
-
|
|
271
|
+
interface TrackTags extends PlatformInfo, DeviceInfo, EnvironmentInfo, SourceInfo, ThirdPartyFields {
|
|
285
272
|
[key: string]: string | undefined;
|
|
286
273
|
}
|
|
287
|
-
|
|
288
|
-
name: string;
|
|
289
|
-
tags: TrackTags;
|
|
290
|
-
visitor_id: string;
|
|
291
|
-
properties?: TrackProperties<T>;
|
|
292
|
-
timestamp: string;
|
|
293
|
-
}
|
|
294
|
-
export interface TrackEventResponse {
|
|
274
|
+
interface TrackEventResponse {
|
|
295
275
|
/**
|
|
296
276
|
* track event id
|
|
297
277
|
* some tracking system will use event_id and event_name for deduplication
|
|
298
278
|
* */
|
|
299
279
|
id: string;
|
|
300
280
|
}
|
|
301
|
-
|
|
302
|
-
|
|
281
|
+
type VisitorProperties = Record<Lowercase<string>, AllowedPropertyValues | AllowedPropertyValues[] | undefined>;
|
|
282
|
+
interface Visitor {
|
|
303
283
|
id: string;
|
|
304
284
|
device_id: string;
|
|
305
285
|
properties: VisitorProperties;
|
|
306
286
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
properties?: VisitorProperties;
|
|
310
|
-
}
|
|
311
|
-
export interface UpdateVisitorDTO {
|
|
312
|
-
properties: VisitorProperties;
|
|
313
|
-
}
|
|
314
|
-
//# sourceMappingURL=types.d.ts.map
|
|
287
|
+
|
|
288
|
+
export type { EventName as E, TrackTags as T, Visitor as V, ThirdPartyLogger as a, TrackProperties as b, TrackEventResponse as c, VisitorProperties as d };
|
package/dist/web.d.mts
ADDED
package/dist/web.mjs
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import Bowser from 'bowser';
|
|
2
|
+
import cookie from 'cookie';
|
|
3
|
+
import { v4 } from 'uuid';
|
|
4
|
+
|
|
5
|
+
function getDeviceId() {
|
|
6
|
+
const cached = localStorage.getItem("device_id");
|
|
7
|
+
if (cached) return cached;
|
|
8
|
+
const id = crypto?.randomUUID ? crypto.randomUUID() : v4();
|
|
9
|
+
localStorage.setItem("device_id", id);
|
|
10
|
+
return id;
|
|
11
|
+
}
|
|
12
|
+
function getTags(release) {
|
|
13
|
+
const parser = Bowser.getParser(window.navigator.userAgent);
|
|
14
|
+
const os = parser.getOS();
|
|
15
|
+
const browser = parser.getBrowser();
|
|
16
|
+
const platform = parser.getPlatform();
|
|
17
|
+
const parsed = cookie.parse(document.cookie);
|
|
18
|
+
const tags = {
|
|
19
|
+
os: `${os.name} ${os.version}`,
|
|
20
|
+
os_name: os.name,
|
|
21
|
+
os_version: os.version,
|
|
22
|
+
browser: `${browser.name} ${browser.version}`,
|
|
23
|
+
browser_name: browser.name,
|
|
24
|
+
browser_version: browser.version,
|
|
25
|
+
platform: "web",
|
|
26
|
+
device: platform.model,
|
|
27
|
+
device_id: getDeviceId(),
|
|
28
|
+
device_type: platform.type,
|
|
29
|
+
device_vendor: platform.vendor,
|
|
30
|
+
device_pixel_ratio: `${window.devicePixelRatio}`,
|
|
31
|
+
screen_resolution: `${window.screen.width}x${window.screen.height}`,
|
|
32
|
+
release,
|
|
33
|
+
language: navigator.language,
|
|
34
|
+
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
35
|
+
environment: process.env.NODE_ENV === "development" ? "development" : "production",
|
|
36
|
+
fbc: parsed._fbc,
|
|
37
|
+
fbp: parsed._fbp
|
|
38
|
+
};
|
|
39
|
+
return tags;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { getDeviceId, getTags };
|
package/package.json
CHANGED
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shware/analytics",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"dev": "tsc --watch",
|
|
7
|
-
"build": "
|
|
7
|
+
"build": "unbuild"
|
|
8
8
|
},
|
|
9
|
+
"main": "./dist/index.mjs",
|
|
10
|
+
"module": "./dist/index.mjs",
|
|
11
|
+
"types": "./dist/index.d.mts",
|
|
9
12
|
"exports": {
|
|
10
|
-
".":
|
|
11
|
-
|
|
12
|
-
"default": "./dist/index.js"
|
|
13
|
-
},
|
|
14
|
-
"./web": {
|
|
15
|
-
"types": "./dist/web.d.ts",
|
|
16
|
-
"default": "./dist/web.js"
|
|
17
|
-
}
|
|
13
|
+
".": "./dist/index.mjs",
|
|
14
|
+
"./web": "./dist/web.mjs"
|
|
18
15
|
},
|
|
19
16
|
"files": [
|
|
20
17
|
"dist"
|
package/dist/ga.d.ts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export declare const standardEventNames: readonly ["add_payment_info", "add_shipping_info", "add_to_cart", "add_to_wishlist", "begin_checkout", "close_convert_lead", "close_unconvert_lead", "disqualify_lead", "earn_virtual_currency", "generate_lead", "join_group", "level_end", "level_start", "level_up", "login", "post_score", "purchase", "qualify_lead", "refund", "remove_from_cart", "search", "select_content", "select_item", "select_promotion", "share", "sign_up", "spend_virtual_currency", "tutorial_begin", "tutorial_complete", "unlock_achievement", "view_cart", "view_item", "view_item_list", "view_promotion", "working_lead"];
|
|
2
|
-
export declare const reservedEventNames: string[];
|
|
3
|
-
//# sourceMappingURL=ga.d.ts.map
|
package/dist/ga.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ga.d.ts","sourceRoot":"","sources":["../src/ga.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,klBAoCrB,CAAC;AAEX,eAAO,MAAM,kBAAkB,UAgC9B,CAAC"}
|
package/dist/ga.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
export var standardEventNames = [
|
|
2
|
-
'add_payment_info',
|
|
3
|
-
'add_shipping_info',
|
|
4
|
-
'add_to_cart',
|
|
5
|
-
'add_to_wishlist',
|
|
6
|
-
'begin_checkout',
|
|
7
|
-
'close_convert_lead',
|
|
8
|
-
'close_unconvert_lead',
|
|
9
|
-
'disqualify_lead',
|
|
10
|
-
'earn_virtual_currency',
|
|
11
|
-
'generate_lead',
|
|
12
|
-
'join_group',
|
|
13
|
-
'level_end',
|
|
14
|
-
'level_start',
|
|
15
|
-
'level_up',
|
|
16
|
-
'login',
|
|
17
|
-
'post_score',
|
|
18
|
-
'purchase',
|
|
19
|
-
'qualify_lead',
|
|
20
|
-
'refund',
|
|
21
|
-
'remove_from_cart',
|
|
22
|
-
'search',
|
|
23
|
-
'select_content',
|
|
24
|
-
'select_item',
|
|
25
|
-
'select_promotion',
|
|
26
|
-
'share',
|
|
27
|
-
'sign_up',
|
|
28
|
-
'spend_virtual_currency',
|
|
29
|
-
'tutorial_begin',
|
|
30
|
-
'tutorial_complete',
|
|
31
|
-
'unlock_achievement',
|
|
32
|
-
'view_cart',
|
|
33
|
-
'view_item',
|
|
34
|
-
'view_item_list',
|
|
35
|
-
'view_promotion',
|
|
36
|
-
'working_lead',
|
|
37
|
-
];
|
|
38
|
-
export var reservedEventNames = [
|
|
39
|
-
'ad_activeview',
|
|
40
|
-
'ad_click',
|
|
41
|
-
'ad_exposure',
|
|
42
|
-
'ad_query',
|
|
43
|
-
'ad_reward',
|
|
44
|
-
'adunit_exposure',
|
|
45
|
-
'app_background',
|
|
46
|
-
'app_clear_data',
|
|
47
|
-
'app_exception',
|
|
48
|
-
'app_remove',
|
|
49
|
-
'app_store_refund',
|
|
50
|
-
'app_store_subscription_cancel',
|
|
51
|
-
'app_store_subscription_convert',
|
|
52
|
-
'app_store_subscription_renew',
|
|
53
|
-
'app_update',
|
|
54
|
-
'app_upgrade',
|
|
55
|
-
'dynamic_link_app_open',
|
|
56
|
-
'dynamic_link_app_update',
|
|
57
|
-
'dynamic_link_first_open',
|
|
58
|
-
'error',
|
|
59
|
-
'first_open',
|
|
60
|
-
'first_visit',
|
|
61
|
-
'in_app_purchase',
|
|
62
|
-
'notification_dismiss',
|
|
63
|
-
'notification_foreground',
|
|
64
|
-
'notification_open',
|
|
65
|
-
'notification_receive',
|
|
66
|
-
'os_update',
|
|
67
|
-
'session_start',
|
|
68
|
-
'session_start_with_rollout',
|
|
69
|
-
'user_engagement',
|
|
70
|
-
];
|
package/dist/index.d.ts
DELETED
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
DELETED
package/dist/setup.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { AxiosInstance } from 'axios';
|
|
2
|
-
import { ThirdPartyLogger, TrackTags } from './types';
|
|
3
|
-
export interface Storage {
|
|
4
|
-
getItem: (key: string) => (string | null) | Promise<string | null>;
|
|
5
|
-
setItem: (key: string, value: string) => void | Promise<void>;
|
|
6
|
-
}
|
|
7
|
-
export interface Options {
|
|
8
|
-
release: string;
|
|
9
|
-
storage: Storage;
|
|
10
|
-
endpoint: string;
|
|
11
|
-
getTags: () => TrackTags | Promise<TrackTags>;
|
|
12
|
-
getDeviceId: () => string | Promise<string>;
|
|
13
|
-
thirdPartyLoggers?: ThirdPartyLogger[];
|
|
14
|
-
}
|
|
15
|
-
interface Config {
|
|
16
|
-
release: string;
|
|
17
|
-
storage: Storage;
|
|
18
|
-
http: AxiosInstance;
|
|
19
|
-
getTags: () => TrackTags | Promise<TrackTags>;
|
|
20
|
-
getDeviceId: () => string | Promise<string>;
|
|
21
|
-
thirdPartyLoggers: ThirdPartyLogger[];
|
|
22
|
-
}
|
|
23
|
-
export declare const config: Config;
|
|
24
|
-
export declare function setupAnalytics(init: Options): void;
|
|
25
|
-
export {};
|
|
26
|
-
//# sourceMappingURL=setup.d.ts.map
|
package/dist/setup.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACnE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,WAAW,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACxC;AAED,UAAU,MAAM;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,WAAW,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;CACvC;AAED,eAAO,MAAM,MAAM,EAAE,MAOpB,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,QAO3C"}
|
package/dist/setup.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import axios from 'axios';
|
|
2
|
-
export var config = {
|
|
3
|
-
http: null,
|
|
4
|
-
release: '0.0.0',
|
|
5
|
-
storage: null,
|
|
6
|
-
getTags: null,
|
|
7
|
-
getDeviceId: null,
|
|
8
|
-
thirdPartyLoggers: [],
|
|
9
|
-
};
|
|
10
|
-
export function setupAnalytics(init) {
|
|
11
|
-
var _a;
|
|
12
|
-
config.release = init.release;
|
|
13
|
-
config.storage = init.storage;
|
|
14
|
-
config.getTags = init.getTags;
|
|
15
|
-
config.getDeviceId = init.getDeviceId;
|
|
16
|
-
config.thirdPartyLoggers = (_a = init.thirdPartyLoggers) !== null && _a !== void 0 ? _a : [];
|
|
17
|
-
config.http = axios.create({ baseURL: init.endpoint, withCredentials: true, adapter: 'fetch' });
|
|
18
|
-
}
|
package/dist/track.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { EventName, TrackProperties, TrackEventResponse } from './types';
|
|
2
|
-
export interface TrackOptions {
|
|
3
|
-
enableThirdPartyLogging?: boolean;
|
|
4
|
-
onSucceed?: (response?: TrackEventResponse) => void;
|
|
5
|
-
onError?: (error: unknown) => void;
|
|
6
|
-
}
|
|
7
|
-
export declare function track<T extends EventName = EventName>(name: T, properties?: TrackProperties<T>, trackOptions?: TrackOptions): void;
|
|
8
|
-
//# sourceMappingURL=track.d.ts.map
|
package/dist/track.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,SAAS,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAI9F,MAAM,WAAW,YAAY;IAC3B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAuCD,wBAAgB,KAAK,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACnD,IAAI,EAAE,CAAC,EACP,UAAU,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAC/B,YAAY,GAAE,YAA6B,QAG5C"}
|
package/dist/track.js
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
12
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
-
function step(op) {
|
|
15
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
-
switch (op[0]) {
|
|
20
|
-
case 0: case 1: t = op; break;
|
|
21
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
-
default:
|
|
25
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
-
if (t[2]) _.ops.pop();
|
|
30
|
-
_.trys.pop(); continue;
|
|
31
|
-
}
|
|
32
|
-
op = body.call(thisArg, _);
|
|
33
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
import { TokenBucket } from 'limiter';
|
|
38
|
-
import { config } from './setup';
|
|
39
|
-
import { getVisitor } from './visitor';
|
|
40
|
-
var defaultOptions = { enableThirdPartyLogging: true };
|
|
41
|
-
var REQUEST_TOKENS = 2;
|
|
42
|
-
var tokenBucket = new TokenBucket({
|
|
43
|
-
bucketSize: 20,
|
|
44
|
-
interval: 'second',
|
|
45
|
-
tokensPerInterval: 1,
|
|
46
|
-
});
|
|
47
|
-
function trackAsync(name_1, properties_1) {
|
|
48
|
-
return __awaiter(this, arguments, void 0, function (name, properties, trackOptions) {
|
|
49
|
-
var dto, data_1, e_1;
|
|
50
|
-
var _a;
|
|
51
|
-
var _b, _c;
|
|
52
|
-
if (trackOptions === void 0) { trackOptions = defaultOptions; }
|
|
53
|
-
return __generator(this, function (_d) {
|
|
54
|
-
switch (_d.label) {
|
|
55
|
-
case 0:
|
|
56
|
-
_d.trys.push([0, 5, , 6]);
|
|
57
|
-
return [4 /*yield*/, tokenBucket.removeTokens(REQUEST_TOKENS)];
|
|
58
|
-
case 1:
|
|
59
|
-
_d.sent();
|
|
60
|
-
_a = {
|
|
61
|
-
name: name,
|
|
62
|
-
properties: properties
|
|
63
|
-
};
|
|
64
|
-
return [4 /*yield*/, config.getTags()];
|
|
65
|
-
case 2:
|
|
66
|
-
_a.tags = _d.sent();
|
|
67
|
-
return [4 /*yield*/, getVisitor()];
|
|
68
|
-
case 3:
|
|
69
|
-
dto = (_a.visitor_id = (_d.sent()).id,
|
|
70
|
-
_a.timestamp = new Date().toISOString(),
|
|
71
|
-
_a);
|
|
72
|
-
return [4 /*yield*/, config.http.post("/events", dto)];
|
|
73
|
-
case 4:
|
|
74
|
-
data_1 = (_d.sent()).data;
|
|
75
|
-
// send to third-party loggers, for example Google Analytics and Facebook Pixel
|
|
76
|
-
if (!trackOptions.enableThirdPartyLogging || !config.thirdPartyLoggers)
|
|
77
|
-
return [2 /*return*/];
|
|
78
|
-
config.thirdPartyLoggers.forEach(function (logger) { return logger(name, properties, data_1.id); });
|
|
79
|
-
(_b = trackOptions.onSucceed) === null || _b === void 0 ? void 0 : _b.call(trackOptions, data_1);
|
|
80
|
-
return [3 /*break*/, 6];
|
|
81
|
-
case 5:
|
|
82
|
-
e_1 = _d.sent();
|
|
83
|
-
if (e_1 instanceof Error) {
|
|
84
|
-
console.log('Failed to send track event:', e_1.message);
|
|
85
|
-
}
|
|
86
|
-
(_c = trackOptions.onError) === null || _c === void 0 ? void 0 : _c.call(trackOptions, e_1);
|
|
87
|
-
return [3 /*break*/, 6];
|
|
88
|
-
case 6: return [2 /*return*/];
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
export function track(name, properties, trackOptions) {
|
|
94
|
-
if (trackOptions === void 0) { trackOptions = defaultOptions; }
|
|
95
|
-
trackAsync(name, properties, trackOptions).catch(console.error);
|
|
96
|
-
}
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/visitor.d.ts
DELETED
package/dist/visitor.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"visitor.d.ts","sourceRoot":"","sources":["../src/visitor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAsB9F,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAOnD;AAED,wBAAsB,UAAU,CAAC,UAAU,EAAE,iBAAiB,oBAM7D"}
|
package/dist/visitor.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
12
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
-
function step(op) {
|
|
15
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
-
switch (op[0]) {
|
|
20
|
-
case 0: case 1: t = op; break;
|
|
21
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
-
default:
|
|
25
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
-
if (t[2]) _.ops.pop();
|
|
30
|
-
_.trys.pop(); continue;
|
|
31
|
-
}
|
|
32
|
-
op = body.call(thisArg, _);
|
|
33
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
import { config } from './setup';
|
|
38
|
-
var key = 'visitor_id';
|
|
39
|
-
function getOrCreateVisitor() {
|
|
40
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
41
|
-
var visitorId, response, dto, response;
|
|
42
|
-
var _a;
|
|
43
|
-
return __generator(this, function (_b) {
|
|
44
|
-
switch (_b.label) {
|
|
45
|
-
case 0: return [4 /*yield*/, config.storage.getItem(key)];
|
|
46
|
-
case 1:
|
|
47
|
-
visitorId = _b.sent();
|
|
48
|
-
if (!visitorId) return [3 /*break*/, 3];
|
|
49
|
-
return [4 /*yield*/, config.http.get("/visitors/".concat(visitorId))];
|
|
50
|
-
case 2:
|
|
51
|
-
response = _b.sent();
|
|
52
|
-
return [2 /*return*/, response.data];
|
|
53
|
-
case 3:
|
|
54
|
-
_a = {};
|
|
55
|
-
return [4 /*yield*/, config.getDeviceId()];
|
|
56
|
-
case 4:
|
|
57
|
-
_a.device_id = _b.sent();
|
|
58
|
-
return [4 /*yield*/, config.getTags()];
|
|
59
|
-
case 5:
|
|
60
|
-
dto = (_a.properties = _b.sent(),
|
|
61
|
-
_a);
|
|
62
|
-
return [4 /*yield*/, config.http.post("/visitors", dto)];
|
|
63
|
-
case 6:
|
|
64
|
-
response = _b.sent();
|
|
65
|
-
return [4 /*yield*/, config.storage.setItem(key, response.data.id)];
|
|
66
|
-
case 7:
|
|
67
|
-
_b.sent();
|
|
68
|
-
return [2 /*return*/, response.data];
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
var visitor = null;
|
|
74
|
-
var visitorFetcher = null;
|
|
75
|
-
export function getVisitor() {
|
|
76
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
77
|
-
return __generator(this, function (_a) {
|
|
78
|
-
switch (_a.label) {
|
|
79
|
-
case 0:
|
|
80
|
-
if (visitor)
|
|
81
|
-
return [2 /*return*/, visitor];
|
|
82
|
-
if (visitorFetcher)
|
|
83
|
-
return [2 /*return*/, visitorFetcher];
|
|
84
|
-
visitorFetcher = getOrCreateVisitor();
|
|
85
|
-
return [4 /*yield*/, visitorFetcher];
|
|
86
|
-
case 1:
|
|
87
|
-
visitor = _a.sent();
|
|
88
|
-
visitorFetcher = null;
|
|
89
|
-
return [2 /*return*/, visitor];
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
export function setVisitor(properties) {
|
|
95
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
96
|
-
var dto, id, response;
|
|
97
|
-
return __generator(this, function (_a) {
|
|
98
|
-
switch (_a.label) {
|
|
99
|
-
case 0:
|
|
100
|
-
dto = { properties: properties };
|
|
101
|
-
return [4 /*yield*/, getVisitor()];
|
|
102
|
-
case 1:
|
|
103
|
-
id = (_a.sent()).id;
|
|
104
|
-
return [4 /*yield*/, config.http.patch("/visitors/".concat(id), dto)];
|
|
105
|
-
case 2:
|
|
106
|
-
response = _a.sent();
|
|
107
|
-
visitor = response.data;
|
|
108
|
-
return [2 /*return*/, response.data];
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
}
|
package/dist/web.d.ts
DELETED
package/dist/web.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,wBAAgB,WAAW,WAM1B;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,aA4BtC"}
|
package/dist/web.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import Bowser from 'bowser';
|
|
2
|
-
import cookie from 'cookie';
|
|
3
|
-
import { v4 as uuidv4 } from 'uuid';
|
|
4
|
-
export function getDeviceId() {
|
|
5
|
-
var cached = localStorage.getItem('device_id');
|
|
6
|
-
if (cached)
|
|
7
|
-
return cached;
|
|
8
|
-
var id = (crypto === null || crypto === void 0 ? void 0 : crypto.randomUUID) ? crypto.randomUUID() : uuidv4();
|
|
9
|
-
localStorage.setItem('device_id', id);
|
|
10
|
-
return id;
|
|
11
|
-
}
|
|
12
|
-
export function getTags(release) {
|
|
13
|
-
var parser = Bowser.getParser(window.navigator.userAgent);
|
|
14
|
-
var os = parser.getOS();
|
|
15
|
-
var browser = parser.getBrowser();
|
|
16
|
-
var platform = parser.getPlatform();
|
|
17
|
-
var parsed = cookie.parse(document.cookie);
|
|
18
|
-
var tags = {
|
|
19
|
-
os: "".concat(os.name, " ").concat(os.version),
|
|
20
|
-
os_name: os.name,
|
|
21
|
-
os_version: os.version,
|
|
22
|
-
browser: "".concat(browser.name, " ").concat(browser.version),
|
|
23
|
-
browser_name: browser.name,
|
|
24
|
-
browser_version: browser.version,
|
|
25
|
-
platform: 'web',
|
|
26
|
-
device: platform.model,
|
|
27
|
-
device_id: getDeviceId(),
|
|
28
|
-
device_type: platform.type,
|
|
29
|
-
device_vendor: platform.vendor,
|
|
30
|
-
device_pixel_ratio: "".concat(window.devicePixelRatio),
|
|
31
|
-
screen_resolution: "".concat(window.screen.width, "x").concat(window.screen.height),
|
|
32
|
-
release: release,
|
|
33
|
-
language: navigator.language,
|
|
34
|
-
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
35
|
-
environment: process.env.NODE_ENV === 'development' ? 'development' : 'production',
|
|
36
|
-
fbc: parsed._fbc,
|
|
37
|
-
fbp: parsed._fbp,
|
|
38
|
-
};
|
|
39
|
-
return tags;
|
|
40
|
-
}
|