rozmova-analytics 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,104 @@
1
+ # rozmova-analytics
2
+
3
+ [![npm-version](https://img.shields.io/npm/v/rozmova-analytics.svg)](https://www.npmjs.com/package/rozmova-analytics)
4
+ [![minified-size](https://img.shields.io/bundlephobia/minzip/rozmova-analytics@1.0.7)](https://bundlephobia.com/package/rozmova-analytics)
5
+
6
+ A lightweight JavaScript analytics library designed to streamline event tracking, user identification, and common analytics parameter management. This package integrates with Mixpanel and Google Analytics to provide seamless data collection and insights.
7
+
8
+ ## Installation
9
+
10
+ Install the package using npm:
11
+
12
+ ```bash
13
+ npm install rozmova-analytics
14
+ ```
15
+
16
+ Alternatively, you can include the library via jsDelivr:
17
+
18
+ ```bash
19
+ <script src="https://cdn.jsdelivr.net/npm/rozmova-analytics/dist/index.js"></script>
20
+ ```
21
+
22
+ ## Usage
23
+
24
+ Import the library in your project and initialize it:
25
+
26
+ ```javascript
27
+ import {
28
+ generateUserId,
29
+ getCommonParams,
30
+ getUserId,
31
+ init,
32
+ resetUser,
33
+ setUser,
34
+ trackEvent,
35
+ setLocale,
36
+ } from 'rozmova-analytics';
37
+
38
+ // Initialize the library
39
+ init('en', 'web');
40
+
41
+ // Set user
42
+ setUser('user-id-123', { email: 'user@example.com', name: 'John Doe' });
43
+
44
+ // Track an event
45
+ trackEvent('button_click', { button_name: 'Sign Up' });
46
+ ```
47
+
48
+ ## API
49
+
50
+ ### `init(locale?: string, platform?: string)`
51
+ Initializes the analytics library, setting up Mixpanel and Google Analytics integrations. Optionally, set a locale and platform.
52
+
53
+ ### `generateUserId()`
54
+ Generates a unique user ID, stores it in cookies and localStorage, and returns the ID.
55
+
56
+ ### `getUserId()`
57
+ Retrieves the user ID from cookies, localStorage, or URL query parameters. If not found, generates a new one.
58
+
59
+ ### `getCommonParams()`
60
+ Returns an object with common analytics parameters such as device, browser, referrer, and UTM parameters.
61
+
62
+ ### `setLocale(newLocale: string)`
63
+ Sets the locale for analytics data.
64
+
65
+ ### `setUser(userId: string, userParams: { email: string; name: string })`
66
+ Associates a user with the provided user ID and sets user properties in Mixpanel and Google Analytics.
67
+
68
+ ### `resetUser()`
69
+ Resets the current user, generating a new user ID and reinitializing the library.
70
+
71
+ ### `trackEvent(eventName: string, properties?: EventParams)`
72
+ Tracks an event with the specified name and optional properties.
73
+
74
+ ## Browser Support
75
+ The package works on modern browsers and supports the following:
76
+ - Chrome
77
+ - Firefox
78
+ - Safari
79
+ - Edge
80
+
81
+ ## Example Integration
82
+
83
+ ```javascript
84
+ import { init, trackEvent, setUser, resetUser } from 'rozmova-analytics';
85
+
86
+ // Initialize analytics
87
+ init('en', 'ios');
88
+
89
+ // Track a page view event
90
+ trackEvent('page_view', { page: 'Home' });
91
+
92
+ // Set user details
93
+ setUser('user-456', { email: 'user456@example.com', name: 'Jane Doe' });
94
+
95
+ // Reset the user
96
+ resetUser();
97
+ ```
98
+
99
+ ## Contributing
100
+ Contributions are welcome! Please fork the repository and create a pull request with your changes.
101
+
102
+ ## License
103
+ This project is licensed under the MIT License.
104
+
package/dist/analytics.js CHANGED
@@ -1,92 +1,85 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.trackEvent = exports.setUser = exports.setPlatform = exports.setLocale = exports.resetUser = exports.init = exports.getUserId = exports.getPlatform = exports.getLocale = exports.getCommonParams = exports.generateUserId = void 0;
7
- var _jsCookie = _interopRequireDefault(require("js-cookie"));
8
- var _mixpanelBrowser = _interopRequireDefault(require("mixpanel-browser"));
9
- var _nanoid = require("nanoid");
10
- var _constants = require("./constants");
11
- var _helpers = require("./helpers");
12
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
13
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
14
2
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
4
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
17
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
18
6
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
19
- var generateUserId = exports.generateUserId = function generateUserId() {
20
- var userId = (0, _nanoid.nanoid)();
21
- var domain = (0, _helpers.getDomain)();
22
- _jsCookie["default"].set(_constants.USER_ID_KEY, userId, {
7
+ import Cookies from "js-cookie";
8
+ import mixpanel from "mixpanel-browser";
9
+ import { nanoid } from "nanoid";
10
+ import { GA_SERVER_CONTAINER_URL, GOOGLE_ANALYTICS_ID, MIXPANEL_TOKEN, PARAMS_COOKIE_NAME, USER_ID_KEY, UTM_KEYS } from "./constants";
11
+ import { detectBrowser, detectDeviceType, detectOS, getBrowserLanguage, getDomain, getGAClientId, getGASessionId, getQueryParam, getReferrer, getSearchQueryFromReferrer, isMetaBrowser, setQueryParam } from "./helpers";
12
+ export var generateUserId = function generateUserId() {
13
+ var userId = nanoid();
14
+ var domain = getDomain();
15
+ Cookies.set(USER_ID_KEY, userId, {
23
16
  domain: domain
24
17
  });
25
- localStorage.setItem(_constants.USER_ID_KEY, userId);
18
+ localStorage.setItem(USER_ID_KEY, userId);
26
19
  return userId;
27
20
  };
28
- var getUserId = exports.getUserId = function getUserId() {
29
- return _jsCookie["default"].get(_constants.USER_ID_KEY) || localStorage.getItem(_constants.USER_ID_KEY) || (0, _helpers.getQueryParam)(_constants.USER_ID_KEY) || generateUserId();
21
+ export var getUserId = function getUserId() {
22
+ return Cookies.get(USER_ID_KEY) || localStorage.getItem(USER_ID_KEY) || getQueryParam(USER_ID_KEY) || generateUserId();
30
23
  };
31
24
  var getCurrentParams = function getCurrentParams() {
32
- var paramsFromCookie = _jsCookie["default"].get(_constants.PARAMS_COOKIE_NAME);
25
+ var paramsFromCookie = Cookies.get(PARAMS_COOKIE_NAME);
33
26
  var prevParams = paramsFromCookie ? JSON.parse(paramsFromCookie) : {};
34
27
  var searchParams = new URLSearchParams(window.location.search);
35
- var isNewSetUTM = _constants.UTM_KEYS.some(function (utmKey) {
28
+ var isNewSetUTM = UTM_KEYS.some(function (utmKey) {
36
29
  return searchParams.get(utmKey) && searchParams.get(utmKey) !== prevParams[utmKey];
37
30
  });
38
- var currentUTMParams = isNewSetUTM ? _constants.UTM_KEYS.reduce(function (prev, curr) {
31
+ var currentUTMParams = isNewSetUTM ? UTM_KEYS.reduce(function (prev, curr) {
39
32
  return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, curr, searchParams.get(curr)));
40
- }, {}) : _constants.UTM_KEYS.reduce(function (prev, curr) {
33
+ }, {}) : UTM_KEYS.reduce(function (prev, curr) {
41
34
  return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, curr, prevParams[curr]));
42
35
  }, {});
43
36
  var currentParams = _objectSpread(_objectSpread({}, currentUTMParams), {}, {
44
- referrer: (0, _helpers.getReferrer)() || prevParams.referrer,
45
- search_query: (0, _helpers.getSearchQueryFromReferrer)() || prevParams.search_query,
37
+ referrer: getReferrer() || prevParams.referrer,
38
+ search_query: getSearchQueryFromReferrer() || prevParams.search_query,
46
39
  landing_page_url: prevParams.landing_page_url || window.location.href
47
40
  });
48
- _jsCookie["default"].set(_constants.PARAMS_COOKIE_NAME, JSON.stringify(currentParams), {
49
- domain: (0, _helpers.getDomain)()
41
+ Cookies.set(PARAMS_COOKIE_NAME, JSON.stringify(currentParams), {
42
+ domain: getDomain()
50
43
  });
51
44
  return currentParams;
52
45
  };
53
- var setLocale = exports.setLocale = function setLocale(newLocale) {
46
+ export var setLocale = function setLocale(newLocale) {
54
47
  window.analyticsLocale = newLocale;
55
48
  };
56
- var getLocale = exports.getLocale = function getLocale() {
49
+ export var getLocale = function getLocale() {
57
50
  return window.analyticsLocale;
58
51
  };
59
- var setPlatform = exports.setPlatform = function setPlatform(newPlatform) {
52
+ export var setPlatform = function setPlatform(newPlatform) {
60
53
  window.analyticsPlatform = newPlatform;
61
54
  };
62
- var getPlatform = exports.getPlatform = function getPlatform() {
55
+ export var getPlatform = function getPlatform() {
63
56
  return window.analyticsPlatform || "web";
64
57
  };
65
- var getCommonParams = exports.getCommonParams = function getCommonParams() {
58
+ export var getCommonParams = function getCommonParams() {
66
59
  var persistedParams = getCurrentParams();
67
60
  return _objectSpread(_objectSpread({}, persistedParams), {}, {
68
- fbc: _jsCookie["default"].get("_fbc"),
69
- fbp: _jsCookie["default"].get("_fbp"),
70
- session_id: (0, _helpers.getGASessionId)(),
71
- user_pseudo_id: (0, _helpers.getGAClientId)(),
61
+ fbc: Cookies.get("_fbc"),
62
+ fbp: Cookies.get("_fbp"),
63
+ session_id: getGASessionId(),
64
+ user_pseudo_id: getGAClientId(),
72
65
  rid: getUserId(),
73
- funnel_name: _jsCookie["default"].get("funnel_name"),
74
- funnel_type: _jsCookie["default"].get("funnel_type"),
75
- language: (0, _helpers.getBrowserLanguage)(),
66
+ funnel_name: Cookies.get("funnel_name"),
67
+ funnel_type: Cookies.get("funnel_type"),
68
+ language: getBrowserLanguage(),
76
69
  platform: getPlatform(),
77
70
  url: window.location.href,
78
- device: (0, _helpers.detectDeviceType)(),
79
- browser: (0, _helpers.detectBrowser)(),
80
- system: (0, _helpers.detectOS)(),
71
+ device: detectDeviceType(),
72
+ browser: detectBrowser(),
73
+ system: detectOS(),
81
74
  locale: getLocale()
82
75
  });
83
76
  };
84
- var init = exports.init = function init(locale, platform) {
77
+ export var init = function init(locale, platform) {
85
78
  var userId = getUserId();
86
- if ((0, _helpers.isMetaBrowser)()) {
87
- (0, _helpers.setQueryParam)(_constants.USER_ID_KEY, userId);
79
+ if (isMetaBrowser()) {
80
+ setQueryParam(USER_ID_KEY, userId);
88
81
  }
89
- _mixpanelBrowser["default"].init(_constants.MIXPANEL_TOKEN, {
82
+ mixpanel.init(MIXPANEL_TOKEN, {
90
83
  debug: false,
91
84
  track_pageview: "url-with-path",
92
85
  persistence: "cookie"
@@ -94,18 +87,18 @@ var init = exports.init = function init(locale, platform) {
94
87
  if (locale) setLocale(locale);
95
88
  if (platform) setPlatform(platform);
96
89
  var userProperties = getCommonParams();
97
- _mixpanelBrowser["default"].register(userProperties);
98
- gtag("config", _constants.GOOGLE_ANALYTICS_ID, {
90
+ mixpanel.register(userProperties);
91
+ gtag("config", GOOGLE_ANALYTICS_ID, {
99
92
  user_properties: userProperties,
100
- server_container_url: _constants.GA_SERVER_CONTAINER_URL
93
+ server_container_url: GA_SERVER_CONTAINER_URL
101
94
  });
102
95
  };
103
- var trackEvent = exports.trackEvent = function trackEvent(eventName) {
96
+ export var trackEvent = function trackEvent(eventName) {
104
97
  var properties = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
105
98
  var commonParams = getCommonParams();
106
99
  var params = _objectSpread(_objectSpread({}, commonParams), properties);
107
100
  try {
108
- _mixpanelBrowser["default"].track(eventName, params);
101
+ mixpanel.track(eventName, params);
109
102
  } catch (e) {
110
103
  console.log(e);
111
104
  }
@@ -115,22 +108,22 @@ var trackEvent = exports.trackEvent = function trackEvent(eventName) {
115
108
  console.log(e);
116
109
  }
117
110
  };
118
- var setUser = exports.setUser = function setUser(userId, userParams) {
111
+ export var setUser = function setUser(userId, userParams) {
119
112
  var email = userParams.email,
120
113
  name = userParams.name;
121
- _mixpanelBrowser["default"].identify(userId);
122
- _mixpanelBrowser["default"].people.set({
114
+ mixpanel.identify(userId);
115
+ mixpanel.people.set({
123
116
  $email: email,
124
117
  name: name
125
118
  });
126
- gtag("config", _constants.GOOGLE_ANALYTICS_ID, {
119
+ gtag("config", GOOGLE_ANALYTICS_ID, {
127
120
  user_properties: getCommonParams(),
128
121
  user_id: userId,
129
- server_container_url: _constants.GA_SERVER_CONTAINER_URL
122
+ server_container_url: GA_SERVER_CONTAINER_URL
130
123
  });
131
124
  };
132
- var resetUser = exports.resetUser = function resetUser() {
133
- _mixpanelBrowser["default"].reset();
125
+ export var resetUser = function resetUser() {
126
+ mixpanel.reset();
134
127
  generateUserId();
135
128
  init();
136
129
  };