@shware/analytics 0.1.8 → 0.1.10

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/web/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // src/web/index.ts
2
2
  import Bowser from "bowser";
3
- import cookie from "cookie";
3
+ import * as cookie from "cookie";
4
4
  import { v4 as uuidv4 } from "uuid";
5
5
  function getDeviceId() {
6
6
  const cached = localStorage.getItem("device_id");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/web/index.ts"],"sourcesContent":["import Bowser from 'bowser';\nimport cookie from 'cookie';\nimport { v4 as uuidv4 } from 'uuid';\nimport { TrackTags } from '../types';\n\nexport function getDeviceId() {\n const cached = localStorage.getItem('device_id');\n if (cached) return cached;\n const id = crypto?.randomUUID ? crypto.randomUUID() : uuidv4();\n localStorage.setItem('device_id', id);\n return id;\n}\n\nexport function getTags(release: string) {\n const parser = Bowser.getParser(window.navigator.userAgent);\n const params = new URLSearchParams(window.location.search);\n const os = parser.getOS();\n const browser = parser.getBrowser();\n const platform = parser.getPlatform();\n const parsed = cookie.parse(document.cookie);\n const tags: TrackTags = {\n os: `${os.name} ${os.version}`,\n os_name: os.name,\n os_version: os.version,\n browser: `${browser.name} ${browser.version}`,\n browser_name: browser.name,\n browser_version: browser.version,\n platform: 'web',\n device: platform.model,\n device_id: getDeviceId(),\n device_type: platform.type,\n device_vendor: platform.vendor,\n device_pixel_ratio: `${window.devicePixelRatio}`,\n screen_resolution: `${window.screen.width}x${window.screen.height}`,\n release,\n language: navigator.language,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n environment: process.env.NODE_ENV === 'development' ? 'development' : 'production',\n fbc: parsed._fbc,\n fbp: parsed._fbp,\n gclid: params.get('gclid') ?? undefined,\n utm_source: params.get('utm_source') ?? undefined,\n utm_medium: params.get('utm_medium') ?? undefined,\n utm_campaign: params.get('utm_campaign') ?? undefined,\n utm_term: params.get('utm_term') ?? undefined,\n utm_content: params.get('utm_content') ?? undefined,\n };\n return tags;\n}\n"],"mappings":";AAAA,OAAO,YAAY;AACnB,OAAO,YAAY;AACnB,SAAS,MAAM,cAAc;AAGtB,SAAS,cAAc;AAC5B,QAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,MAAI,OAAQ,QAAO;AACnB,QAAM,MAAK,iCAAQ,cAAa,OAAO,WAAW,IAAI,OAAO;AAC7D,eAAa,QAAQ,aAAa,EAAE;AACpC,SAAO;AACT;AAEO,SAAS,QAAQ,SAAiB;AACvC,QAAM,SAAS,OAAO,UAAU,OAAO,UAAU,SAAS;AAC1D,QAAM,SAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM;AACzD,QAAM,KAAK,OAAO,MAAM;AACxB,QAAM,UAAU,OAAO,WAAW;AAClC,QAAM,WAAW,OAAO,YAAY;AACpC,QAAM,SAAS,OAAO,MAAM,SAAS,MAAM;AAC3C,QAAM,OAAkB;AAAA,IACtB,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,OAAO;AAAA,IAC5B,SAAS,GAAG;AAAA,IACZ,YAAY,GAAG;AAAA,IACf,SAAS,GAAG,QAAQ,IAAI,IAAI,QAAQ,OAAO;AAAA,IAC3C,cAAc,QAAQ;AAAA,IACtB,iBAAiB,QAAQ;AAAA,IACzB,UAAU;AAAA,IACV,QAAQ,SAAS;AAAA,IACjB,WAAW,YAAY;AAAA,IACvB,aAAa,SAAS;AAAA,IACtB,eAAe,SAAS;AAAA,IACxB,oBAAoB,GAAG,OAAO,gBAAgB;AAAA,IAC9C,mBAAmB,GAAG,OAAO,OAAO,KAAK,IAAI,OAAO,OAAO,MAAM;AAAA,IACjE;AAAA,IACA,UAAU,UAAU;AAAA,IACpB,UAAU,KAAK,eAAe,EAAE,gBAAgB,EAAE;AAAA,IAClD,aAAa,QAAQ,IAAI,aAAa,gBAAgB,gBAAgB;AAAA,IACtE,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA,IACZ,OAAO,OAAO,IAAI,OAAO,KAAK;AAAA,IAC9B,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,cAAc,OAAO,IAAI,cAAc,KAAK;AAAA,IAC5C,UAAU,OAAO,IAAI,UAAU,KAAK;AAAA,IACpC,aAAa,OAAO,IAAI,aAAa,KAAK;AAAA,EAC5C;AACA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../src/web/index.ts"],"sourcesContent":["import Bowser from 'bowser';\nimport * as cookie from 'cookie';\nimport { v4 as uuidv4 } from 'uuid';\nimport { TrackTags } from '../types';\n\nexport function getDeviceId() {\n const cached = localStorage.getItem('device_id');\n if (cached) return cached;\n const id = crypto?.randomUUID ? crypto.randomUUID() : uuidv4();\n localStorage.setItem('device_id', id);\n return id;\n}\n\nexport function getTags(release: string) {\n const parser = Bowser.getParser(window.navigator.userAgent);\n const params = new URLSearchParams(window.location.search);\n const os = parser.getOS();\n const browser = parser.getBrowser();\n const platform = parser.getPlatform();\n const parsed = cookie.parse(document.cookie);\n const tags: TrackTags = {\n os: `${os.name} ${os.version}`,\n os_name: os.name,\n os_version: os.version,\n browser: `${browser.name} ${browser.version}`,\n browser_name: browser.name,\n browser_version: browser.version,\n platform: 'web',\n device: platform.model,\n device_id: getDeviceId(),\n device_type: platform.type,\n device_vendor: platform.vendor,\n device_pixel_ratio: `${window.devicePixelRatio}`,\n screen_resolution: `${window.screen.width}x${window.screen.height}`,\n release,\n language: navigator.language,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n environment: process.env.NODE_ENV === 'development' ? 'development' : 'production',\n fbc: parsed._fbc,\n fbp: parsed._fbp,\n gclid: params.get('gclid') ?? undefined,\n utm_source: params.get('utm_source') ?? undefined,\n utm_medium: params.get('utm_medium') ?? undefined,\n utm_campaign: params.get('utm_campaign') ?? undefined,\n utm_term: params.get('utm_term') ?? undefined,\n utm_content: params.get('utm_content') ?? undefined,\n };\n return tags;\n}\n"],"mappings":";AAAA,OAAO,YAAY;AACnB,YAAY,YAAY;AACxB,SAAS,MAAM,cAAc;AAGtB,SAAS,cAAc;AAC5B,QAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,MAAI,OAAQ,QAAO;AACnB,QAAM,MAAK,iCAAQ,cAAa,OAAO,WAAW,IAAI,OAAO;AAC7D,eAAa,QAAQ,aAAa,EAAE;AACpC,SAAO;AACT;AAEO,SAAS,QAAQ,SAAiB;AACvC,QAAM,SAAS,OAAO,UAAU,OAAO,UAAU,SAAS;AAC1D,QAAM,SAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM;AACzD,QAAM,KAAK,OAAO,MAAM;AACxB,QAAM,UAAU,OAAO,WAAW;AAClC,QAAM,WAAW,OAAO,YAAY;AACpC,QAAM,SAAgB,aAAM,SAAS,MAAM;AAC3C,QAAM,OAAkB;AAAA,IACtB,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,OAAO;AAAA,IAC5B,SAAS,GAAG;AAAA,IACZ,YAAY,GAAG;AAAA,IACf,SAAS,GAAG,QAAQ,IAAI,IAAI,QAAQ,OAAO;AAAA,IAC3C,cAAc,QAAQ;AAAA,IACtB,iBAAiB,QAAQ;AAAA,IACzB,UAAU;AAAA,IACV,QAAQ,SAAS;AAAA,IACjB,WAAW,YAAY;AAAA,IACvB,aAAa,SAAS;AAAA,IACtB,eAAe,SAAS;AAAA,IACxB,oBAAoB,GAAG,OAAO,gBAAgB;AAAA,IAC9C,mBAAmB,GAAG,OAAO,OAAO,KAAK,IAAI,OAAO,OAAO,MAAM;AAAA,IACjE;AAAA,IACA,UAAU,UAAU;AAAA,IACpB,UAAU,KAAK,eAAe,EAAE,gBAAgB,EAAE;AAAA,IAClD,aAAa,QAAQ,IAAI,aAAa,gBAAgB,gBAAgB;AAAA,IACtE,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA,IACZ,OAAO,OAAO,IAAI,OAAO,KAAK;AAAA,IAC9B,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,cAAc,OAAO,IAAI,cAAc,KAAK;AAAA,IAC5C,UAAU,OAAO,IAAI,UAAU,KAAK;AAAA,IACpC,aAAa,OAAO,IAAI,aAAa,KAAK;AAAA,EAC5C;AACA,SAAO;AACT;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shware/analytics",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "tsc --watch",
@@ -12,28 +12,23 @@
12
12
  "exports": {
13
13
  ".": {
14
14
  "types": "./dist/index.d.ts",
15
- "import": "./dist/index.js",
16
- "require": "./dist/index.cjs"
15
+ "import": "./dist/index.js"
17
16
  },
18
17
  "./web": {
19
18
  "types": "./dist/web/index.d.ts",
20
- "import": "./dist/web/index.js",
21
- "require": "./dist/web/index.cjs"
19
+ "import": "./dist/web/index.js"
22
20
  },
23
21
  "./next": {
24
22
  "types": "./dist/next/index.d.ts",
25
- "import": "./dist/next/index.js",
26
- "require": "./dist/next/index.cjs"
23
+ "import": "./dist/next/index.js"
27
24
  },
28
25
  "./react": {
29
26
  "types": "./dist/react/index.d.ts",
30
- "import": "./dist/react/index.js",
31
- "require": "./dist/react/index.cjs"
27
+ "import": "./dist/react/index.js"
32
28
  },
33
29
  "./react-router": {
34
30
  "types": "./dist/react-router/index.d.ts",
35
- "import": "./dist/react-router/index.js",
36
- "require": "./dist/react-router/index.cjs"
31
+ "import": "./dist/react-router/index.js"
37
32
  }
38
33
  },
39
34
  "files": [
package/dist/index.cjs DELETED
@@ -1,201 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key2 of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key2) && key2 !== except)
16
- __defProp(to, key2, { get: () => from[key2], enumerable: !(desc = __getOwnPropDesc(from, key2)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/index.ts
31
- var src_exports = {};
32
- __export(src_exports, {
33
- createTrackEventSchema: () => createTrackEventSchema,
34
- createVisitorSchema: () => createVisitorSchema,
35
- getVisitor: () => getVisitor,
36
- setVisitor: () => setVisitor,
37
- setupAnalytics: () => setupAnalytics,
38
- track: () => track,
39
- updateVisitorSchema: () => updateVisitorSchema
40
- });
41
- module.exports = __toCommonJS(src_exports);
42
-
43
- // src/setup.ts
44
- var import_axios = __toESM(require("axios"), 1);
45
- var import_axios_retry = __toESM(require("axios-retry"), 1);
46
- var config = {
47
- http: null,
48
- release: "0.0.0",
49
- storage: null,
50
- getTags: null,
51
- getDeviceId: null,
52
- thirdPartyTrackers: [],
53
- thirdPartyUserSetters: []
54
- };
55
- function setupAnalytics(init) {
56
- config.release = init.release;
57
- config.storage = init.storage;
58
- config.getTags = init.getTags;
59
- config.getDeviceId = init.getDeviceId;
60
- config.thirdPartyTrackers = init.thirdPartyTrackers ?? [];
61
- config.thirdPartyUserSetters = init.thirdPartyUserSetters ?? [];
62
- config.http = import_axios.default.create({ baseURL: init.endpoint, withCredentials: true, adapter: "fetch" });
63
- (0, import_axios_retry.default)(config.http, { retries: 5, retryDelay: import_axios_retry.default.exponentialDelay });
64
- }
65
-
66
- // src/track.ts
67
- var import_limiter = require("limiter");
68
-
69
- // src/visitor.ts
70
- var key = "visitor_id";
71
- async function getOrCreateVisitor() {
72
- const visitorId = await config.storage.getItem(key);
73
- if (visitorId) {
74
- const response = await config.http.get(`/visitors/${visitorId}`);
75
- return response.data;
76
- } else {
77
- const dto = {
78
- device_id: await config.getDeviceId(),
79
- properties: await config.getTags()
80
- };
81
- const response = await config.http.post(`/visitors`, dto);
82
- await config.storage.setItem(key, response.data.id);
83
- return response.data;
84
- }
85
- }
86
- var visitor = null;
87
- var visitorFetcher = null;
88
- async function getVisitor() {
89
- if (visitor) return visitor;
90
- if (visitorFetcher) return visitorFetcher;
91
- visitorFetcher = getOrCreateVisitor();
92
- visitor = await visitorFetcher;
93
- visitorFetcher = null;
94
- return visitor;
95
- }
96
- async function setVisitor(properties) {
97
- const dto = { properties };
98
- const { id } = await getVisitor();
99
- const response = await config.http.patch(`/visitors/${id}`, dto);
100
- config.thirdPartyUserSetters.forEach((setter) => setter(properties));
101
- visitor = response.data;
102
- return response.data;
103
- }
104
-
105
- // src/track.ts
106
- var defaultOptions = { enableThirdPartyTracking: true };
107
- var REQUEST_TOKENS = 2;
108
- var tokenBucket = new import_limiter.TokenBucket({
109
- bucketSize: 20,
110
- interval: "second",
111
- tokensPerInterval: 1
112
- });
113
- async function trackAsync(name, properties, trackOptions = defaultOptions) {
114
- var _a, _b;
115
- try {
116
- await tokenBucket.removeTokens(REQUEST_TOKENS);
117
- const dto = {
118
- name,
119
- properties,
120
- tags: await config.getTags(),
121
- visitor_id: (await getVisitor()).id,
122
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
123
- };
124
- const { data } = await config.http.post(`/events`, dto);
125
- if (!trackOptions.enableThirdPartyTracking || !config.thirdPartyTrackers) return;
126
- config.thirdPartyTrackers.forEach((tracker) => tracker(name, properties, data.id));
127
- (_a = trackOptions.onSucceed) == null ? void 0 : _a.call(trackOptions, data);
128
- } catch (e) {
129
- if (e instanceof Error) {
130
- console.log("Failed to send track event:", e.message);
131
- }
132
- (_b = trackOptions.onError) == null ? void 0 : _b.call(trackOptions, e);
133
- }
134
- }
135
- function track(name, properties, trackOptions = defaultOptions) {
136
- trackAsync(name, properties, trackOptions).catch(console.error);
137
- }
138
-
139
- // src/schema.ts
140
- var import_zod = require("zod");
141
- var createTrackEventSchema = import_zod.z.object({
142
- name: import_zod.z.string().trim().min(1).max(64),
143
- visitor_id: import_zod.z.coerce.bigint(),
144
- tags: import_zod.z.object({
145
- os: import_zod.z.string().optional(),
146
- os_name: import_zod.z.string().optional(),
147
- os_version: import_zod.z.string().optional(),
148
- browser: import_zod.z.string().optional(),
149
- browser_name: import_zod.z.string().optional(),
150
- browser_version: import_zod.z.string().optional(),
151
- platform: import_zod.z.enum(["ios", "android", "web", "macos", "windows", "linux", "unknown"]).optional(),
152
- device: import_zod.z.string().optional(),
153
- device_id: import_zod.z.string().trim().min(1).max(36).optional(),
154
- device_type: import_zod.z.string().optional(),
155
- device_vendor: import_zod.z.string().optional(),
156
- device_pixel_ratio: import_zod.z.string().optional(),
157
- screen_resolution: import_zod.z.string().regex(/^\d+x\d+$/).transform((v) => v).optional(),
158
- release: import_zod.z.string().optional(),
159
- language: import_zod.z.string().optional(),
160
- timezone: import_zod.z.string().optional(),
161
- environment: import_zod.z.enum(["development", "production"]).optional(),
162
- source_url: import_zod.z.string().optional(),
163
- source: import_zod.z.enum(["web", "app", "offline"]).optional(),
164
- fbc: import_zod.z.string().optional(),
165
- fbp: import_zod.z.string().optional(),
166
- gclid: import_zod.z.string().optional(),
167
- utm_source: import_zod.z.string().optional(),
168
- utm_medium: import_zod.z.string().optional(),
169
- utm_campaign: import_zod.z.string().optional(),
170
- utm_term: import_zod.z.string().optional(),
171
- utm_content: import_zod.z.string().optional()
172
- }),
173
- properties: import_zod.z.record(
174
- import_zod.z.string().trim().min(1).max(128),
175
- import_zod.z.union([import_zod.z.string().max(512), import_zod.z.number(), import_zod.z.boolean(), import_zod.z.null()])
176
- ).refine((data) => Object.keys(data).length <= 64)
177
- });
178
- var createVisitorSchema = import_zod.z.object({
179
- device_id: import_zod.z.string().trim().min(1).max(36),
180
- properties: import_zod.z.record(
181
- import_zod.z.string().trim().min(1).max(128),
182
- import_zod.z.union([import_zod.z.string().max(512), import_zod.z.number(), import_zod.z.boolean(), import_zod.z.null()])
183
- ).refine((data) => Object.keys(data).length <= 64)
184
- });
185
- var updateVisitorSchema = import_zod.z.object({
186
- properties: import_zod.z.record(
187
- import_zod.z.string().trim().min(1).max(128),
188
- import_zod.z.union([import_zod.z.string().max(512), import_zod.z.number(), import_zod.z.boolean(), import_zod.z.null()])
189
- ).refine((data) => Object.keys(data).length <= 64)
190
- });
191
- // Annotate the CommonJS export names for ESM import in node:
192
- 0 && (module.exports = {
193
- createTrackEventSchema,
194
- createVisitorSchema,
195
- getVisitor,
196
- setVisitor,
197
- setupAnalytics,
198
- track,
199
- updateVisitorSchema
200
- });
201
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts","../src/setup.ts","../src/track.ts","../src/visitor.ts","../src/schema.ts"],"sourcesContent":["export { setupAnalytics } from './setup';\nexport { track } from './track';\nexport { getVisitor, setVisitor } from './visitor';\nexport { createTrackEventSchema, createVisitorSchema, updateVisitorSchema } from './schema';\nexport { type VisitorProperties, type TrackProperties, type TrackTags } from './types';\n","import axios, { AxiosInstance } from 'axios';\nimport retry from 'axios-retry';\nimport { ThirdPartyTracker, ThirdPartyUserSetter, TrackTags } from './types';\n\nexport interface Storage {\n getItem: (key: string) => (string | null) | Promise<string | null>;\n setItem: (key: string, value: string) => void | Promise<void>;\n}\n\nexport interface Options {\n release: string;\n storage: Storage;\n endpoint: string;\n getTags: () => TrackTags | Promise<TrackTags>;\n getDeviceId: () => string | Promise<string>;\n thirdPartyTrackers?: ThirdPartyTracker[];\n thirdPartyUserSetters?: ThirdPartyUserSetter[];\n}\n\ninterface Config {\n release: string;\n storage: Storage;\n http: AxiosInstance;\n getTags: () => TrackTags | Promise<TrackTags>;\n getDeviceId: () => string | Promise<string>;\n thirdPartyTrackers: ThirdPartyTracker[];\n thirdPartyUserSetters: ThirdPartyUserSetter[];\n}\n\nexport const config: Config = {\n http: null!,\n release: '0.0.0',\n storage: null!,\n getTags: null!,\n getDeviceId: null!,\n thirdPartyTrackers: [],\n thirdPartyUserSetters: [],\n};\n\nexport function setupAnalytics(init: Options) {\n config.release = init.release;\n config.storage = init.storage;\n config.getTags = init.getTags;\n config.getDeviceId = init.getDeviceId;\n config.thirdPartyTrackers = init.thirdPartyTrackers ?? [];\n config.thirdPartyUserSetters = init.thirdPartyUserSetters ?? [];\n config.http = axios.create({ baseURL: init.endpoint, withCredentials: true, adapter: 'fetch' });\n retry(config.http, { retries: 5, retryDelay: retry.exponentialDelay });\n}\n","import { TokenBucket } from 'limiter';\nimport { CreateTrackEventDTO, EventName, TrackProperties, TrackEventResponse } from './types';\nimport { config } from './setup';\nimport { getVisitor } from './visitor';\n\nexport interface TrackOptions {\n enableThirdPartyTracking?: boolean;\n onSucceed?: (response?: TrackEventResponse) => void;\n onError?: (error: unknown) => void;\n}\n\nconst defaultOptions: TrackOptions = { enableThirdPartyTracking: true };\n\nconst REQUEST_TOKENS = 2;\nconst tokenBucket = new TokenBucket({\n bucketSize: 20,\n interval: 'second',\n tokensPerInterval: 1,\n});\n\nasync function trackAsync<T extends EventName = EventName>(\n name: T,\n properties?: TrackProperties<T>,\n trackOptions: TrackOptions = defaultOptions\n) {\n try {\n await tokenBucket.removeTokens(REQUEST_TOKENS);\n const dto: CreateTrackEventDTO<T> = {\n name,\n properties,\n tags: await config.getTags(),\n visitor_id: (await getVisitor()).id,\n timestamp: new Date().toISOString(),\n };\n const { data } = await config.http.post<TrackEventResponse>(`/events`, dto);\n\n // send to third-party loggers, for example Google Analytics and Facebook Pixel\n if (!trackOptions.enableThirdPartyTracking || !config.thirdPartyTrackers) return;\n config.thirdPartyTrackers.forEach((tracker) => tracker(name, properties, data.id));\n trackOptions.onSucceed?.(data);\n } catch (e: unknown) {\n if (e instanceof Error) {\n console.log('Failed to send track event:', e.message);\n }\n trackOptions.onError?.(e);\n }\n}\n\nexport function track<T extends EventName = EventName>(\n name: T,\n properties?: TrackProperties<T>,\n trackOptions: TrackOptions = defaultOptions\n) {\n trackAsync(name, properties, trackOptions).catch(console.error);\n}\n","import { config } from './setup';\nimport type { CreateVisitorDTO, UpdateVisitorDTO, Visitor, VisitorProperties } from './types';\n\nconst key = 'visitor_id';\nasync function getOrCreateVisitor(): Promise<Visitor> {\n const visitorId = await config.storage.getItem(key);\n if (visitorId) {\n const response = await config.http.get<Visitor>(`/visitors/${visitorId}`);\n return response.data;\n } else {\n const dto: CreateVisitorDTO = {\n device_id: await config.getDeviceId(),\n properties: (await config.getTags()) as VisitorProperties,\n };\n const response = await config.http.post<Visitor>(`/visitors`, dto);\n await config.storage.setItem(key, response.data.id);\n return response.data;\n }\n}\n\nlet visitor: Visitor | null = null;\nlet visitorFetcher: Promise<Visitor> | null = null;\n\nexport async function getVisitor(): Promise<Visitor> {\n if (visitor) return visitor;\n if (visitorFetcher) return visitorFetcher;\n visitorFetcher = getOrCreateVisitor();\n visitor = await visitorFetcher;\n visitorFetcher = null;\n return visitor;\n}\n\nexport async function setVisitor(properties: VisitorProperties) {\n const dto: UpdateVisitorDTO = { properties };\n const { id } = await getVisitor();\n const response = await config.http.patch<Visitor>(`/visitors/${id}`, dto);\n config.thirdPartyUserSetters.forEach((setter) => setter(properties));\n visitor = response.data;\n return response.data;\n}\n","import { z } from 'zod';\n\nexport const createTrackEventSchema = z.object({\n name: z.string().trim().min(1).max(64),\n visitor_id: z.coerce.bigint(),\n tags: z.object({\n os: z.string().optional(),\n os_name: z.string().optional(),\n os_version: z.string().optional(),\n browser: z.string().optional(),\n browser_name: z.string().optional(),\n browser_version: z.string().optional(),\n platform: z.enum(['ios', 'android', 'web', 'macos', 'windows', 'linux', 'unknown']).optional(),\n device: z.string().optional(),\n device_id: z.string().trim().min(1).max(36).optional(),\n device_type: z.string().optional(),\n device_vendor: z.string().optional(),\n device_pixel_ratio: z.string().optional(),\n screen_resolution: z\n .string()\n .regex(/^\\d+x\\d+$/)\n .transform((v) => v as `${number}x${number}`)\n .optional(),\n release: z.string().optional(),\n language: z.string().optional(),\n timezone: z.string().optional(),\n environment: z.enum(['development', 'production']).optional(),\n source_url: z.string().optional(),\n source: z.enum(['web', 'app', 'offline']).optional(),\n fbc: z.string().optional(),\n fbp: z.string().optional(),\n gclid: z.string().optional(),\n utm_source: z.string().optional(),\n utm_medium: z.string().optional(),\n utm_campaign: z.string().optional(),\n utm_term: z.string().optional(),\n utm_content: z.string().optional(),\n }),\n properties: z\n .record(\n z.string().trim().min(1).max(128),\n z.union([z.string().max(512), z.number(), z.boolean(), z.null()])\n )\n .refine((data) => Object.keys(data).length <= 64),\n});\n\nexport const createVisitorSchema = z.object({\n device_id: z.string().trim().min(1).max(36),\n properties: z\n .record(\n z.string().trim().min(1).max(128),\n z.union([z.string().max(512), z.number(), z.boolean(), z.null()])\n )\n .refine((data) => Object.keys(data).length <= 64),\n});\n\nexport const updateVisitorSchema = z.object({\n properties: z\n .record(\n z.string().trim().min(1).max(128),\n z.union([z.string().max(512), z.number(), z.boolean(), z.null()])\n )\n .refine((data) => Object.keys(data).length <= 64),\n});\n"],"mappings":"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","names":["axios","retry"]}
package/dist/index.d.cts DELETED
@@ -1,501 +0,0 @@
1
- import { z } from 'zod';
2
-
3
- interface Item {
4
- item_brand?: string;
5
- item_id?: string;
6
- item_name?: string;
7
- item_category?: string;
8
- item_category2?: string;
9
- item_category3?: string;
10
- item_category4?: string;
11
- item_category5?: string;
12
- item_list_id?: string;
13
- item_list_name?: string;
14
- item_location_id?: string;
15
- item_variant?: string;
16
- quantity?: number;
17
- price?: number;
18
- }
19
- /**
20
- * ref: https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtag
21
- * ref: https://firebase.google.com/docs/reference/android/com/google/firebase/analytics/FirebaseAnalytics.Event
22
- * */
23
- type StandardEventProperties = {
24
- add_payment_info: {
25
- items?: Item[];
26
- currency?: string;
27
- value?: number;
28
- coupon?: string;
29
- payment_type?: string;
30
- };
31
- add_shipping_info: {
32
- items?: Item[];
33
- currency?: string;
34
- value?: number;
35
- coupon?: string;
36
- shipping_tier?: string;
37
- };
38
- add_to_cart: {
39
- items?: Item[];
40
- currency?: string;
41
- value?: number;
42
- };
43
- add_to_wishlist: {
44
- items?: Item[];
45
- currency?: string;
46
- value?: number;
47
- };
48
- begin_checkout: {
49
- currency?: string;
50
- value?: number;
51
- coupon?: string;
52
- items?: Item[];
53
- [key: string]: any;
54
- };
55
- close_convert_lead: {
56
- currency: string;
57
- value: number;
58
- };
59
- close_unconvert_lead: {
60
- currency: string;
61
- value: number;
62
- unconvert_lead_reason?: string;
63
- };
64
- disqualify_lead: {
65
- currency: string;
66
- value: number;
67
- disqualified_lead_reason?: string;
68
- };
69
- earn_virtual_currency: {
70
- virtual_currency_name: string;
71
- value: number;
72
- };
73
- generate_lead: {
74
- currency?: string;
75
- value?: number;
76
- };
77
- join_group: {
78
- group_id: string;
79
- };
80
- level_end: {
81
- level: number;
82
- success?: string;
83
- };
84
- level_start: {
85
- level: number;
86
- };
87
- level_up: {
88
- level: number;
89
- character?: string;
90
- };
91
- login: {
92
- method: string;
93
- };
94
- post_score: {
95
- score: number;
96
- level?: number;
97
- character?: string;
98
- };
99
- purchase: {
100
- affiliation?: string;
101
- coupon?: string;
102
- currency?: string;
103
- items?: Item[];
104
- shipping?: number;
105
- tax?: number;
106
- value?: number;
107
- transaction_id?: string;
108
- [key: string]: any;
109
- };
110
- qualify_lead: {
111
- currency: string;
112
- value: number;
113
- };
114
- refund: {
115
- affiliation?: string;
116
- coupon?: string;
117
- currency?: string;
118
- items?: Item[];
119
- shipping?: number;
120
- tax?: number;
121
- value?: number;
122
- transaction_id?: string;
123
- };
124
- remove_from_cart: {
125
- items?: Item[];
126
- value?: number;
127
- currency?: string;
128
- };
129
- search: {
130
- search_term: string;
131
- number_of_nights?: number;
132
- number_of_rooms?: number;
133
- number_of_passengers?: number;
134
- origin?: string;
135
- destination?: string;
136
- start_date?: string;
137
- end_date?: string;
138
- travel_class?: string;
139
- };
140
- select_content: {
141
- content_type: string;
142
- item_id: string;
143
- };
144
- select_item: {
145
- items?: Item[];
146
- content_type: string;
147
- item_list_id: string;
148
- item_list_name: string;
149
- };
150
- select_promotion: {
151
- creative_name: string;
152
- creative_slot: string;
153
- items?: Item[];
154
- location_id: string;
155
- promotion_id: string;
156
- promotion_name: string;
157
- };
158
- share: {
159
- content_type: string;
160
- item_id: string;
161
- method: string;
162
- activity_type?: string | null;
163
- post_id?: string;
164
- };
165
- sign_up: {
166
- method: string;
167
- };
168
- spend_virtual_currency: {
169
- item_name: string;
170
- virtual_currency_name: string;
171
- value: number;
172
- };
173
- tutorial_begin: undefined;
174
- tutorial_complete: undefined;
175
- unlock_achievement: {
176
- achievement_id: string;
177
- };
178
- view_cart: {
179
- items?: Item[];
180
- currency?: string;
181
- value?: number;
182
- };
183
- view_item: {
184
- items?: Item[];
185
- currency?: string;
186
- value?: number;
187
- };
188
- view_item_list: {
189
- items?: Item[];
190
- item_list_id?: string;
191
- item_list_name?: string;
192
- };
193
- view_promotion: {
194
- items?: Item[];
195
- location_id?: string;
196
- creative_name?: string;
197
- creative_slot?: string;
198
- promotion_id?: string;
199
- promotion_name?: string;
200
- };
201
- working_lead: {
202
- currency: string;
203
- value: number;
204
- lead_status?: string;
205
- };
206
- ad_impression: {
207
- value?: number;
208
- currency?: string;
209
- ad_format?: string;
210
- ad_platform?: string;
211
- ad_source?: string;
212
- ad_unit_name?: string;
213
- };
214
- app_open: undefined;
215
- campaign_details: {
216
- source: string;
217
- medium: string;
218
- campaign: string;
219
- term?: string;
220
- content?: string;
221
- aclid?: string;
222
- cp1?: string;
223
- };
224
- screen_view: {
225
- screen_name?: string;
226
- screen_class?: string;
227
- };
228
- view_search_results: {
229
- search_term: string;
230
- };
231
- };
232
- type AllowedPropertyValues = string | number | boolean | null;
233
- type EventName = Lowercase<string>;
234
- type CustomEventProperties = Record<Lowercase<string>, AllowedPropertyValues>;
235
- type TrackProperties<T extends EventName = EventName> = T extends keyof StandardEventProperties ? StandardEventProperties[T] : CustomEventProperties;
236
- type ThirdPartyTracker = <T extends EventName = EventName>(name: T, properties?: TrackProperties<T>, event_id?: string) => void;
237
- interface PlatformInfo {
238
- os?: string;
239
- os_name?: string;
240
- os_version?: string;
241
- browser?: string;
242
- browser_name?: string;
243
- browser_version?: string;
244
- platform?: 'ios' | 'android' | 'web' | 'macos' | 'windows' | 'linux' | 'unknown';
245
- }
246
- interface DeviceInfo {
247
- device?: string;
248
- device_id?: string;
249
- device_type?: string;
250
- device_vendor?: string;
251
- device_pixel_ratio?: string;
252
- screen_resolution?: `${number}x${number}`;
253
- }
254
- interface EnvironmentInfo {
255
- release?: string;
256
- language?: string;
257
- timezone?: string;
258
- environment?: 'development' | 'production';
259
- }
260
- interface SourceInfo {
261
- source_url?: string;
262
- source?: 'app' | 'web' | 'offline';
263
- }
264
- interface ThirdPartyFields {
265
- /**
266
- * Meta pixel fields
267
- * ref: https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters#fbc
268
- * Stored in the _fbc/_fbp browser cookie under your domain
269
- */
270
- fbc?: string;
271
- fbp?: string;
272
- /**
273
- * Google Analytics fields
274
- */
275
- gclid?: string;
276
- }
277
- interface UTMParams {
278
- utm_source?: string;
279
- utm_medium?: string;
280
- utm_campaign?: string;
281
- utm_term?: string;
282
- utm_content?: string;
283
- }
284
- interface TrackTags extends PlatformInfo, DeviceInfo, EnvironmentInfo, SourceInfo, ThirdPartyFields, UTMParams {
285
- [key: string]: string | undefined;
286
- }
287
- interface TrackEventResponse {
288
- /**
289
- * track event id
290
- * some tracking system will use event_id and event_name for deduplication
291
- * */
292
- id: string;
293
- }
294
- type VisitorProperties = Record<Lowercase<string>, AllowedPropertyValues>;
295
- interface Visitor {
296
- id: string;
297
- device_id: string;
298
- properties: VisitorProperties;
299
- }
300
- type ThirdPartyUserSetter = (properties: VisitorProperties) => void;
301
-
302
- interface Storage {
303
- getItem: (key: string) => (string | null) | Promise<string | null>;
304
- setItem: (key: string, value: string) => void | Promise<void>;
305
- }
306
- interface Options {
307
- release: string;
308
- storage: Storage;
309
- endpoint: string;
310
- getTags: () => TrackTags | Promise<TrackTags>;
311
- getDeviceId: () => string | Promise<string>;
312
- thirdPartyTrackers?: ThirdPartyTracker[];
313
- thirdPartyUserSetters?: ThirdPartyUserSetter[];
314
- }
315
- declare function setupAnalytics(init: Options): void;
316
-
317
- interface TrackOptions {
318
- enableThirdPartyTracking?: boolean;
319
- onSucceed?: (response?: TrackEventResponse) => void;
320
- onError?: (error: unknown) => void;
321
- }
322
- declare function track<T extends EventName = EventName>(name: T, properties?: TrackProperties<T>, trackOptions?: TrackOptions): void;
323
-
324
- declare function getVisitor(): Promise<Visitor>;
325
- declare function setVisitor(properties: VisitorProperties): Promise<Visitor>;
326
-
327
- declare const createTrackEventSchema: z.ZodObject<{
328
- name: z.ZodString;
329
- visitor_id: z.ZodBigInt;
330
- tags: z.ZodObject<{
331
- os: z.ZodOptional<z.ZodString>;
332
- os_name: z.ZodOptional<z.ZodString>;
333
- os_version: z.ZodOptional<z.ZodString>;
334
- browser: z.ZodOptional<z.ZodString>;
335
- browser_name: z.ZodOptional<z.ZodString>;
336
- browser_version: z.ZodOptional<z.ZodString>;
337
- platform: z.ZodOptional<z.ZodEnum<["ios", "android", "web", "macos", "windows", "linux", "unknown"]>>;
338
- device: z.ZodOptional<z.ZodString>;
339
- device_id: z.ZodOptional<z.ZodString>;
340
- device_type: z.ZodOptional<z.ZodString>;
341
- device_vendor: z.ZodOptional<z.ZodString>;
342
- device_pixel_ratio: z.ZodOptional<z.ZodString>;
343
- screen_resolution: z.ZodOptional<z.ZodEffects<z.ZodString, `${number}x${number}`, string>>;
344
- release: z.ZodOptional<z.ZodString>;
345
- language: z.ZodOptional<z.ZodString>;
346
- timezone: z.ZodOptional<z.ZodString>;
347
- environment: z.ZodOptional<z.ZodEnum<["development", "production"]>>;
348
- source_url: z.ZodOptional<z.ZodString>;
349
- source: z.ZodOptional<z.ZodEnum<["web", "app", "offline"]>>;
350
- fbc: z.ZodOptional<z.ZodString>;
351
- fbp: z.ZodOptional<z.ZodString>;
352
- gclid: z.ZodOptional<z.ZodString>;
353
- utm_source: z.ZodOptional<z.ZodString>;
354
- utm_medium: z.ZodOptional<z.ZodString>;
355
- utm_campaign: z.ZodOptional<z.ZodString>;
356
- utm_term: z.ZodOptional<z.ZodString>;
357
- utm_content: z.ZodOptional<z.ZodString>;
358
- }, "strip", z.ZodTypeAny, {
359
- os?: string | undefined;
360
- os_name?: string | undefined;
361
- os_version?: string | undefined;
362
- browser?: string | undefined;
363
- browser_name?: string | undefined;
364
- browser_version?: string | undefined;
365
- platform?: "ios" | "android" | "web" | "macos" | "windows" | "linux" | "unknown" | undefined;
366
- device?: string | undefined;
367
- device_id?: string | undefined;
368
- device_type?: string | undefined;
369
- device_vendor?: string | undefined;
370
- device_pixel_ratio?: string | undefined;
371
- screen_resolution?: `${number}x${number}` | undefined;
372
- release?: string | undefined;
373
- language?: string | undefined;
374
- timezone?: string | undefined;
375
- environment?: "development" | "production" | undefined;
376
- source_url?: string | undefined;
377
- source?: "web" | "app" | "offline" | undefined;
378
- fbc?: string | undefined;
379
- fbp?: string | undefined;
380
- gclid?: string | undefined;
381
- utm_source?: string | undefined;
382
- utm_medium?: string | undefined;
383
- utm_campaign?: string | undefined;
384
- utm_term?: string | undefined;
385
- utm_content?: string | undefined;
386
- }, {
387
- os?: string | undefined;
388
- os_name?: string | undefined;
389
- os_version?: string | undefined;
390
- browser?: string | undefined;
391
- browser_name?: string | undefined;
392
- browser_version?: string | undefined;
393
- platform?: "ios" | "android" | "web" | "macos" | "windows" | "linux" | "unknown" | undefined;
394
- device?: string | undefined;
395
- device_id?: string | undefined;
396
- device_type?: string | undefined;
397
- device_vendor?: string | undefined;
398
- device_pixel_ratio?: string | undefined;
399
- screen_resolution?: string | undefined;
400
- release?: string | undefined;
401
- language?: string | undefined;
402
- timezone?: string | undefined;
403
- environment?: "development" | "production" | undefined;
404
- source_url?: string | undefined;
405
- source?: "web" | "app" | "offline" | undefined;
406
- fbc?: string | undefined;
407
- fbp?: string | undefined;
408
- gclid?: string | undefined;
409
- utm_source?: string | undefined;
410
- utm_medium?: string | undefined;
411
- utm_campaign?: string | undefined;
412
- utm_term?: string | undefined;
413
- utm_content?: string | undefined;
414
- }>;
415
- properties: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>, Record<string, string | number | boolean | null>, Record<string, string | number | boolean | null>>;
416
- }, "strip", z.ZodTypeAny, {
417
- visitor_id: bigint;
418
- name: string;
419
- tags: {
420
- os?: string | undefined;
421
- os_name?: string | undefined;
422
- os_version?: string | undefined;
423
- browser?: string | undefined;
424
- browser_name?: string | undefined;
425
- browser_version?: string | undefined;
426
- platform?: "ios" | "android" | "web" | "macos" | "windows" | "linux" | "unknown" | undefined;
427
- device?: string | undefined;
428
- device_id?: string | undefined;
429
- device_type?: string | undefined;
430
- device_vendor?: string | undefined;
431
- device_pixel_ratio?: string | undefined;
432
- screen_resolution?: `${number}x${number}` | undefined;
433
- release?: string | undefined;
434
- language?: string | undefined;
435
- timezone?: string | undefined;
436
- environment?: "development" | "production" | undefined;
437
- source_url?: string | undefined;
438
- source?: "web" | "app" | "offline" | undefined;
439
- fbc?: string | undefined;
440
- fbp?: string | undefined;
441
- gclid?: string | undefined;
442
- utm_source?: string | undefined;
443
- utm_medium?: string | undefined;
444
- utm_campaign?: string | undefined;
445
- utm_term?: string | undefined;
446
- utm_content?: string | undefined;
447
- };
448
- properties: Record<string, string | number | boolean | null>;
449
- }, {
450
- visitor_id: bigint;
451
- name: string;
452
- tags: {
453
- os?: string | undefined;
454
- os_name?: string | undefined;
455
- os_version?: string | undefined;
456
- browser?: string | undefined;
457
- browser_name?: string | undefined;
458
- browser_version?: string | undefined;
459
- platform?: "ios" | "android" | "web" | "macos" | "windows" | "linux" | "unknown" | undefined;
460
- device?: string | undefined;
461
- device_id?: string | undefined;
462
- device_type?: string | undefined;
463
- device_vendor?: string | undefined;
464
- device_pixel_ratio?: string | undefined;
465
- screen_resolution?: string | undefined;
466
- release?: string | undefined;
467
- language?: string | undefined;
468
- timezone?: string | undefined;
469
- environment?: "development" | "production" | undefined;
470
- source_url?: string | undefined;
471
- source?: "web" | "app" | "offline" | undefined;
472
- fbc?: string | undefined;
473
- fbp?: string | undefined;
474
- gclid?: string | undefined;
475
- utm_source?: string | undefined;
476
- utm_medium?: string | undefined;
477
- utm_campaign?: string | undefined;
478
- utm_term?: string | undefined;
479
- utm_content?: string | undefined;
480
- };
481
- properties: Record<string, string | number | boolean | null>;
482
- }>;
483
- declare const createVisitorSchema: z.ZodObject<{
484
- device_id: z.ZodString;
485
- properties: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>, Record<string, string | number | boolean | null>, Record<string, string | number | boolean | null>>;
486
- }, "strip", z.ZodTypeAny, {
487
- device_id: string;
488
- properties: Record<string, string | number | boolean | null>;
489
- }, {
490
- device_id: string;
491
- properties: Record<string, string | number | boolean | null>;
492
- }>;
493
- declare const updateVisitorSchema: z.ZodObject<{
494
- properties: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>, Record<string, string | number | boolean | null>, Record<string, string | number | boolean | null>>;
495
- }, "strip", z.ZodTypeAny, {
496
- properties: Record<string, string | number | boolean | null>;
497
- }, {
498
- properties: Record<string, string | number | boolean | null>;
499
- }>;
500
-
501
- export { type TrackProperties, type TrackTags, type VisitorProperties, createTrackEventSchema, createVisitorSchema, getVisitor, setVisitor, setupAnalytics, track, updateVisitorSchema };
@@ -1,49 +0,0 @@
1
- "use strict";
2
- "use client";
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
-
21
- // src/next/index.tsx
22
- var next_exports = {};
23
- __export(next_exports, {
24
- default: () => Analytics
25
- });
26
- module.exports = __toCommonJS(next_exports);
27
- var import_navigation = require("next/navigation");
28
- var import_react = require("react");
29
- var import__ = require("../index");
30
- function Analytics() {
31
- const pathname = (0, import_navigation.usePathname)();
32
- const params = (0, import_navigation.useSearchParams)();
33
- (0, import_react.useEffect)(() => {
34
- const properties = {
35
- pathname,
36
- referrer: document.referrer,
37
- gclid: params.get("gclid"),
38
- fbclid: params.get("fbclid"),
39
- utm_source: params.get("utm_source"),
40
- utm_medium: params.get("utm_medium"),
41
- utm_campaign: params.get("utm_campaign"),
42
- utm_term: params.get("utm_term"),
43
- utm_content: params.get("utm_content")
44
- };
45
- (0, import__.track)("page_view", properties, { enableThirdPartyTracking: false });
46
- }, [pathname, params]);
47
- return null;
48
- }
49
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/next/index.tsx"],"sourcesContent":["'use client';\n\nimport { usePathname, useSearchParams } from 'next/navigation';\nimport { useEffect } from 'react';\nimport { track } from '../index';\n\nexport default function Analytics() {\n const pathname = usePathname();\n const params = useSearchParams();\n\n useEffect(() => {\n const properties = {\n pathname,\n referrer: document.referrer,\n gclid: params.get('gclid'),\n fbclid: params.get('fbclid'),\n utm_source: params.get('utm_source'),\n utm_medium: params.get('utm_medium'),\n utm_campaign: params.get('utm_campaign'),\n utm_term: params.get('utm_term'),\n utm_content: params.get('utm_content'),\n };\n\n track('page_view', properties, { enableThirdPartyTracking: false });\n }, [pathname, params]);\n\n return null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,wBAA6C;AAC7C,mBAA0B;AAC1B,eAAsB;AAEP,SAAR,YAA6B;AAClC,QAAM,eAAW,+BAAY;AAC7B,QAAM,aAAS,mCAAgB;AAE/B,8BAAU,MAAM;AACd,UAAM,aAAa;AAAA,MACjB;AAAA,MACA,UAAU,SAAS;AAAA,MACnB,OAAO,OAAO,IAAI,OAAO;AAAA,MACzB,QAAQ,OAAO,IAAI,QAAQ;AAAA,MAC3B,YAAY,OAAO,IAAI,YAAY;AAAA,MACnC,YAAY,OAAO,IAAI,YAAY;AAAA,MACnC,cAAc,OAAO,IAAI,cAAc;AAAA,MACvC,UAAU,OAAO,IAAI,UAAU;AAAA,MAC/B,aAAa,OAAO,IAAI,aAAa;AAAA,IACvC;AAEA,wBAAM,aAAa,YAAY,EAAE,0BAA0B,MAAM,CAAC;AAAA,EACpE,GAAG,CAAC,UAAU,MAAM,CAAC;AAErB,SAAO;AACT;","names":[]}
@@ -1,3 +0,0 @@
1
- declare function Analytics(): null;
2
-
3
- export { Analytics as default };
@@ -1,29 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/react/index.tsx
21
- var react_exports = {};
22
- __export(react_exports, {
23
- default: () => Analytics
24
- });
25
- module.exports = __toCommonJS(react_exports);
26
- function Analytics() {
27
- return null;
28
- }
29
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/react/index.tsx"],"sourcesContent":["export default function Analytics() {\n return null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAe,SAAR,YAA6B;AAClC,SAAO;AACT;","names":[]}
@@ -1,3 +0,0 @@
1
- declare function Analytics(): null;
2
-
3
- export { Analytics as default };
@@ -1,48 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/react-router/index.tsx
21
- var react_router_exports = {};
22
- __export(react_router_exports, {
23
- default: () => Analytics
24
- });
25
- module.exports = __toCommonJS(react_router_exports);
26
- var import_react = require("react");
27
- var import_react_router = require("react-router");
28
- var import__ = require("../index");
29
- function Analytics() {
30
- const { pathname } = (0, import_react_router.useLocation)();
31
- const [params] = (0, import_react_router.useSearchParams)();
32
- (0, import_react.useEffect)(() => {
33
- const properties = {
34
- pathname,
35
- referrer: document.referrer,
36
- gclid: params.get("gclid"),
37
- fbclid: params.get("fbclid"),
38
- utm_source: params.get("utm_source"),
39
- utm_medium: params.get("utm_medium"),
40
- utm_campaign: params.get("utm_campaign"),
41
- utm_term: params.get("utm_term"),
42
- utm_content: params.get("utm_content")
43
- };
44
- (0, import__.track)("page_view", properties, { enableThirdPartyTracking: false });
45
- }, [pathname, params]);
46
- return null;
47
- }
48
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/react-router/index.tsx"],"sourcesContent":["import { useEffect } from 'react';\nimport { useLocation, useSearchParams } from 'react-router';\nimport { track } from '../index';\n\nexport default function Analytics() {\n const { pathname } = useLocation();\n const [params] = useSearchParams();\n\n useEffect(() => {\n const properties = {\n pathname,\n referrer: document.referrer,\n gclid: params.get('gclid'),\n fbclid: params.get('fbclid'),\n utm_source: params.get('utm_source'),\n utm_medium: params.get('utm_medium'),\n utm_campaign: params.get('utm_campaign'),\n utm_term: params.get('utm_term'),\n utm_content: params.get('utm_content'),\n };\n\n track('page_view', properties, { enableThirdPartyTracking: false });\n }, [pathname, params]);\n\n return null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA0B;AAC1B,0BAA6C;AAC7C,eAAsB;AAEP,SAAR,YAA6B;AAClC,QAAM,EAAE,SAAS,QAAI,iCAAY;AACjC,QAAM,CAAC,MAAM,QAAI,qCAAgB;AAEjC,8BAAU,MAAM;AACd,UAAM,aAAa;AAAA,MACjB;AAAA,MACA,UAAU,SAAS;AAAA,MACnB,OAAO,OAAO,IAAI,OAAO;AAAA,MACzB,QAAQ,OAAO,IAAI,QAAQ;AAAA,MAC3B,YAAY,OAAO,IAAI,YAAY;AAAA,MACnC,YAAY,OAAO,IAAI,YAAY;AAAA,MACnC,cAAc,OAAO,IAAI,cAAc;AAAA,MACvC,UAAU,OAAO,IAAI,UAAU;AAAA,MAC/B,aAAa,OAAO,IAAI,aAAa;AAAA,IACvC;AAEA,wBAAM,aAAa,YAAY,EAAE,0BAA0B,MAAM,CAAC;AAAA,EACpE,GAAG,CAAC,UAAU,MAAM,CAAC;AAErB,SAAO;AACT;","names":[]}
@@ -1,3 +0,0 @@
1
- declare function Analytics(): null;
2
-
3
- export { Analytics as default };
@@ -1,88 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/web/index.ts
31
- var web_exports = {};
32
- __export(web_exports, {
33
- getDeviceId: () => getDeviceId,
34
- getTags: () => getTags
35
- });
36
- module.exports = __toCommonJS(web_exports);
37
- var import_bowser = __toESM(require("bowser"), 1);
38
- var import_cookie = __toESM(require("cookie"), 1);
39
- var import_uuid = require("uuid");
40
- function getDeviceId() {
41
- const cached = localStorage.getItem("device_id");
42
- if (cached) return cached;
43
- const id = (crypto == null ? void 0 : crypto.randomUUID) ? crypto.randomUUID() : (0, import_uuid.v4)();
44
- localStorage.setItem("device_id", id);
45
- return id;
46
- }
47
- function getTags(release) {
48
- const parser = import_bowser.default.getParser(window.navigator.userAgent);
49
- const params = new URLSearchParams(window.location.search);
50
- const os = parser.getOS();
51
- const browser = parser.getBrowser();
52
- const platform = parser.getPlatform();
53
- const parsed = import_cookie.default.parse(document.cookie);
54
- const tags = {
55
- os: `${os.name} ${os.version}`,
56
- os_name: os.name,
57
- os_version: os.version,
58
- browser: `${browser.name} ${browser.version}`,
59
- browser_name: browser.name,
60
- browser_version: browser.version,
61
- platform: "web",
62
- device: platform.model,
63
- device_id: getDeviceId(),
64
- device_type: platform.type,
65
- device_vendor: platform.vendor,
66
- device_pixel_ratio: `${window.devicePixelRatio}`,
67
- screen_resolution: `${window.screen.width}x${window.screen.height}`,
68
- release,
69
- language: navigator.language,
70
- timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
71
- environment: process.env.NODE_ENV === "development" ? "development" : "production",
72
- fbc: parsed._fbc,
73
- fbp: parsed._fbp,
74
- gclid: params.get("gclid") ?? void 0,
75
- utm_source: params.get("utm_source") ?? void 0,
76
- utm_medium: params.get("utm_medium") ?? void 0,
77
- utm_campaign: params.get("utm_campaign") ?? void 0,
78
- utm_term: params.get("utm_term") ?? void 0,
79
- utm_content: params.get("utm_content") ?? void 0
80
- };
81
- return tags;
82
- }
83
- // Annotate the CommonJS export names for ESM import in node:
84
- 0 && (module.exports = {
85
- getDeviceId,
86
- getTags
87
- });
88
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/web/index.ts"],"sourcesContent":["import Bowser from 'bowser';\nimport cookie from 'cookie';\nimport { v4 as uuidv4 } from 'uuid';\nimport { TrackTags } from '../types';\n\nexport function getDeviceId() {\n const cached = localStorage.getItem('device_id');\n if (cached) return cached;\n const id = crypto?.randomUUID ? crypto.randomUUID() : uuidv4();\n localStorage.setItem('device_id', id);\n return id;\n}\n\nexport function getTags(release: string) {\n const parser = Bowser.getParser(window.navigator.userAgent);\n const params = new URLSearchParams(window.location.search);\n const os = parser.getOS();\n const browser = parser.getBrowser();\n const platform = parser.getPlatform();\n const parsed = cookie.parse(document.cookie);\n const tags: TrackTags = {\n os: `${os.name} ${os.version}`,\n os_name: os.name,\n os_version: os.version,\n browser: `${browser.name} ${browser.version}`,\n browser_name: browser.name,\n browser_version: browser.version,\n platform: 'web',\n device: platform.model,\n device_id: getDeviceId(),\n device_type: platform.type,\n device_vendor: platform.vendor,\n device_pixel_ratio: `${window.devicePixelRatio}`,\n screen_resolution: `${window.screen.width}x${window.screen.height}`,\n release,\n language: navigator.language,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n environment: process.env.NODE_ENV === 'development' ? 'development' : 'production',\n fbc: parsed._fbc,\n fbp: parsed._fbp,\n gclid: params.get('gclid') ?? undefined,\n utm_source: params.get('utm_source') ?? undefined,\n utm_medium: params.get('utm_medium') ?? undefined,\n utm_campaign: params.get('utm_campaign') ?? undefined,\n utm_term: params.get('utm_term') ?? undefined,\n utm_content: params.get('utm_content') ?? undefined,\n };\n return tags;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,oBAAmB;AACnB,kBAA6B;AAGtB,SAAS,cAAc;AAC5B,QAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,MAAI,OAAQ,QAAO;AACnB,QAAM,MAAK,iCAAQ,cAAa,OAAO,WAAW,QAAI,YAAAA,IAAO;AAC7D,eAAa,QAAQ,aAAa,EAAE;AACpC,SAAO;AACT;AAEO,SAAS,QAAQ,SAAiB;AACvC,QAAM,SAAS,cAAAC,QAAO,UAAU,OAAO,UAAU,SAAS;AAC1D,QAAM,SAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM;AACzD,QAAM,KAAK,OAAO,MAAM;AACxB,QAAM,UAAU,OAAO,WAAW;AAClC,QAAM,WAAW,OAAO,YAAY;AACpC,QAAM,SAAS,cAAAC,QAAO,MAAM,SAAS,MAAM;AAC3C,QAAM,OAAkB;AAAA,IACtB,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,OAAO;AAAA,IAC5B,SAAS,GAAG;AAAA,IACZ,YAAY,GAAG;AAAA,IACf,SAAS,GAAG,QAAQ,IAAI,IAAI,QAAQ,OAAO;AAAA,IAC3C,cAAc,QAAQ;AAAA,IACtB,iBAAiB,QAAQ;AAAA,IACzB,UAAU;AAAA,IACV,QAAQ,SAAS;AAAA,IACjB,WAAW,YAAY;AAAA,IACvB,aAAa,SAAS;AAAA,IACtB,eAAe,SAAS;AAAA,IACxB,oBAAoB,GAAG,OAAO,gBAAgB;AAAA,IAC9C,mBAAmB,GAAG,OAAO,OAAO,KAAK,IAAI,OAAO,OAAO,MAAM;AAAA,IACjE;AAAA,IACA,UAAU,UAAU;AAAA,IACpB,UAAU,KAAK,eAAe,EAAE,gBAAgB,EAAE;AAAA,IAClD,aAAa,QAAQ,IAAI,aAAa,gBAAgB,gBAAgB;AAAA,IACtE,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA,IACZ,OAAO,OAAO,IAAI,OAAO,KAAK;AAAA,IAC9B,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,cAAc,OAAO,IAAI,cAAc,KAAK;AAAA,IAC5C,UAAU,OAAO,IAAI,UAAU,KAAK;AAAA,IACpC,aAAa,OAAO,IAAI,aAAa,KAAK;AAAA,EAC5C;AACA,SAAO;AACT;","names":["uuidv4","Bowser","cookie"]}
@@ -1,55 +0,0 @@
1
- interface PlatformInfo {
2
- os?: string;
3
- os_name?: string;
4
- os_version?: string;
5
- browser?: string;
6
- browser_name?: string;
7
- browser_version?: string;
8
- platform?: 'ios' | 'android' | 'web' | 'macos' | 'windows' | 'linux' | 'unknown';
9
- }
10
- interface DeviceInfo {
11
- device?: string;
12
- device_id?: string;
13
- device_type?: string;
14
- device_vendor?: string;
15
- device_pixel_ratio?: string;
16
- screen_resolution?: `${number}x${number}`;
17
- }
18
- interface EnvironmentInfo {
19
- release?: string;
20
- language?: string;
21
- timezone?: string;
22
- environment?: 'development' | 'production';
23
- }
24
- interface SourceInfo {
25
- source_url?: string;
26
- source?: 'app' | 'web' | 'offline';
27
- }
28
- interface ThirdPartyFields {
29
- /**
30
- * Meta pixel fields
31
- * ref: https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters#fbc
32
- * Stored in the _fbc/_fbp browser cookie under your domain
33
- */
34
- fbc?: string;
35
- fbp?: string;
36
- /**
37
- * Google Analytics fields
38
- */
39
- gclid?: string;
40
- }
41
- interface UTMParams {
42
- utm_source?: string;
43
- utm_medium?: string;
44
- utm_campaign?: string;
45
- utm_term?: string;
46
- utm_content?: string;
47
- }
48
- interface TrackTags extends PlatformInfo, DeviceInfo, EnvironmentInfo, SourceInfo, ThirdPartyFields, UTMParams {
49
- [key: string]: string | undefined;
50
- }
51
-
52
- declare function getDeviceId(): string;
53
- declare function getTags(release: string): TrackTags;
54
-
55
- export { getDeviceId, getTags };