@bigbinary/neeto-commons-frontend 4.13.68 → 4.13.69

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.
@@ -71,6 +71,7 @@ require('../utils/createSubscription.js');
71
71
  require('@rails/actioncable');
72
72
  require('yup');
73
73
  require('../mixpanel.module-ajRn5e0J.js');
74
+ require('ua-parser-js');
74
75
  require('@tanstack/react-query');
75
76
  require('./useBreakpoints/utils.js');
76
77
  require('./BrowserPushNotifications/devices.js');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -23,6 +23,7 @@ require('../../utils/createSubscription.js');
23
23
  require('@rails/actioncable');
24
24
  require('yup');
25
25
  require('../../mixpanel.module-ajRn5e0J.js');
26
+ require('ua-parser-js');
26
27
 
27
28
 
28
29
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -13,9 +13,10 @@ require('i18next');
13
13
  require('yup');
14
14
  require('../../mixpanel.module-ajRn5e0J.js');
15
15
  require('@bigbinary/neeto-cist');
16
+ require('../../index-BskY8dVw.js');
17
+ require('ua-parser-js');
16
18
  require('../../unsupportedIterableToArray-BoHMiKNA.js');
17
19
  require('../../objectWithoutProperties-wSsbHFcG.js');
18
- require('../../index-BskY8dVw.js');
19
20
  require('../../defineProperty-lChFfVqi.js');
20
21
  require('../../typeof-D4ZZ_FlZ.js');
21
22
  require('@bigbinary/neetoui/Toastr');
@@ -1 +1 @@
1
- {"version":3,"file":"useLocalStorage.js","sources":["../../../../src/react-utils/useLocalStorage/useLocalStorage.js"],"sourcesContent":["/* eslint-disable @bigbinary/neeto/no-local-storage */\n\nimport { useState } from \"react\";\n\nimport { isNil } from \"ramda\";\nimport { removeFromLocalStorage, setToLocalStorage } from \"utils\";\n\nconst getStorageValue = (key, defaultValue) => {\n try {\n const storedValue = localStorage.getItem(key);\n\n return storedValue ? JSON.parse(storedValue) : defaultValue;\n } catch (error) {\n logger.error(error);\n\n return defaultValue;\n }\n};\n\nconst useLocalStorage = (key, defaultValue) => {\n const [storedValue, setStoredValue] = useState(() =>\n getStorageValue(key, defaultValue)\n );\n\n const setValue = value =>\n setStoredValue(prevStoredValue => {\n const newValue =\n typeof value === \"function\" ? value(prevStoredValue) : value;\n\n if (isNil(newValue)) {\n removeFromLocalStorage(key);\n } else {\n setToLocalStorage(key, newValue);\n }\n\n return newValue;\n });\n\n return [storedValue, setValue];\n};\n\nexport default useLocalStorage;\n"],"names":["getStorageValue","key","defaultValue","storedValue","localStorage","getItem","JSON","parse","error","logger","useLocalStorage","_useState","useState","_useState2","_slicedToArray","setStoredValue","setValue","value","prevStoredValue","newValue","isNil","removeFromLocalStorage","setToLocalStorage"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAMA,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,GAAG,EAAEC,YAAY,EAAK;EAC7C,IAAI;AACF,IAAA,IAAMC,WAAW,GAAGC,YAAY,CAACC,OAAO,CAACJ,GAAG,CAAC;IAE7C,OAAOE,WAAW,GAAGG,IAAI,CAACC,KAAK,CAACJ,WAAW,CAAC,GAAGD,YAAY;GAC5D,CAAC,OAAOM,KAAK,EAAE;AACdC,IAAAA,MAAM,CAACD,KAAK,CAACA,KAAK,CAAC;AAEnB,IAAA,OAAON,YAAY;AACrB;AACF,CAAC;AAEKQ,IAAAA,eAAe,GAAG,SAAlBA,eAAeA,CAAIT,GAAG,EAAEC,YAAY,EAAK;EAC7C,IAAAS,SAAA,GAAsCC,cAAQ,CAAC,YAAA;AAAA,MAAA,OAC7CZ,eAAe,CAACC,GAAG,EAAEC,YAAY,CAAC;AAAA,KACpC,CAAC;IAAAW,UAAA,GAAAC,4BAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAFMR,IAAAA,WAAW,GAAAU,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,cAAc,GAAAF,UAAA,CAAA,CAAA,CAAA;AAIlC,EAAA,IAAMG,QAAQ,GAAG,SAAXA,QAAQA,CAAGC,KAAK,EAAA;AAAA,IAAA,OACpBF,cAAc,CAAC,UAAAG,eAAe,EAAI;AAChC,MAAA,IAAMC,QAAQ,GACZ,OAAOF,KAAK,KAAK,UAAU,GAAGA,KAAK,CAACC,eAAe,CAAC,GAAGD,KAAK;AAE9D,MAAA,IAAIG,WAAK,CAACD,QAAQ,CAAC,EAAE;QACnBE,oCAAsB,CAACpB,GAAG,CAAC;AAC7B,OAAC,MAAM;AACLqB,QAAAA,+BAAiB,CAACrB,GAAG,EAAEkB,QAAQ,CAAC;AAClC;AAEA,MAAA,OAAOA,QAAQ;AACjB,KAAC,CAAC;AAAA,GAAA;AAEJ,EAAA,OAAO,CAAChB,WAAW,EAAEa,QAAQ,CAAC;AAChC;;;;"}
1
+ {"version":3,"file":"useLocalStorage.js","sources":["../../../../src/react-utils/useLocalStorage/useLocalStorage.js"],"sourcesContent":["/* eslint-disable @bigbinary/neeto/no-local-storage */\n\nimport { useState } from \"react\";\n\nimport { isNil } from \"ramda\";\nimport { removeFromLocalStorage, setToLocalStorage } from \"utils\";\n\nconst getStorageValue = (key, defaultValue) => {\n try {\n const storedValue = localStorage.getItem(key);\n\n return storedValue ? JSON.parse(storedValue) : defaultValue;\n } catch (error) {\n logger.error(error);\n\n return defaultValue;\n }\n};\n\nconst useLocalStorage = (key, defaultValue) => {\n const [storedValue, setStoredValue] = useState(() =>\n getStorageValue(key, defaultValue)\n );\n\n const setValue = value =>\n setStoredValue(prevStoredValue => {\n const newValue =\n typeof value === \"function\" ? value(prevStoredValue) : value;\n\n if (isNil(newValue)) {\n removeFromLocalStorage(key);\n } else {\n setToLocalStorage(key, newValue);\n }\n\n return newValue;\n });\n\n return [storedValue, setValue];\n};\n\nexport default useLocalStorage;\n"],"names":["getStorageValue","key","defaultValue","storedValue","localStorage","getItem","JSON","parse","error","logger","useLocalStorage","_useState","useState","_useState2","_slicedToArray","setStoredValue","setValue","value","prevStoredValue","newValue","isNil","removeFromLocalStorage","setToLocalStorage"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAMA,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,GAAG,EAAEC,YAAY,EAAK;EAC7C,IAAI;AACF,IAAA,IAAMC,WAAW,GAAGC,YAAY,CAACC,OAAO,CAACJ,GAAG,CAAC;IAE7C,OAAOE,WAAW,GAAGG,IAAI,CAACC,KAAK,CAACJ,WAAW,CAAC,GAAGD,YAAY;GAC5D,CAAC,OAAOM,KAAK,EAAE;AACdC,IAAAA,MAAM,CAACD,KAAK,CAACA,KAAK,CAAC;AAEnB,IAAA,OAAON,YAAY;AACrB;AACF,CAAC;AAEKQ,IAAAA,eAAe,GAAG,SAAlBA,eAAeA,CAAIT,GAAG,EAAEC,YAAY,EAAK;EAC7C,IAAAS,SAAA,GAAsCC,cAAQ,CAAC,YAAA;AAAA,MAAA,OAC7CZ,eAAe,CAACC,GAAG,EAAEC,YAAY,CAAC;AAAA,KACpC,CAAC;IAAAW,UAAA,GAAAC,4BAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAFMR,IAAAA,WAAW,GAAAU,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,cAAc,GAAAF,UAAA,CAAA,CAAA,CAAA;AAIlC,EAAA,IAAMG,QAAQ,GAAG,SAAXA,QAAQA,CAAGC,KAAK,EAAA;AAAA,IAAA,OACpBF,cAAc,CAAC,UAAAG,eAAe,EAAI;AAChC,MAAA,IAAMC,QAAQ,GACZ,OAAOF,KAAK,KAAK,UAAU,GAAGA,KAAK,CAACC,eAAe,CAAC,GAAGD,KAAK;AAE9D,MAAA,IAAIG,WAAK,CAACD,QAAQ,CAAC,EAAE;QACnBE,oCAAsB,CAACpB,GAAG,CAAC;AAC7B,OAAC,MAAM;AACLqB,QAAAA,+BAAiB,CAACrB,GAAG,EAAEkB,QAAQ,CAAC;AAClC;AAEA,MAAA,OAAOA,QAAQ;AACjB,KAAC,CAAC;AAAA,GAAA;AAEJ,EAAA,OAAO,CAAChB,WAAW,EAAEa,QAAQ,CAAC;AAChC;;;;"}
@@ -0,0 +1,255 @@
1
+ 'use strict';
2
+
3
+ var slicedToArray = require('../slicedToArray-BcL7fKuL.js');
4
+ var index = require('../index-BskY8dVw.js');
5
+ var ramda = require('ramda');
6
+ var uaParserJs = require('ua-parser-js');
7
+ require('../unsupportedIterableToArray-BoHMiKNA.js');
8
+
9
+ var getUAParser = function getUAParser() {
10
+ return new uaParserJs.UAParser(navigator.userAgent);
11
+ };
12
+ var parseBrowser = function parseBrowser() {
13
+ var parser = getUAParser();
14
+ var browser = parser.getBrowser();
15
+ return {
16
+ name: browser.name || "Unknown",
17
+ version: browser.version || ""
18
+ };
19
+ };
20
+ var parseOS = function parseOS() {
21
+ var parser = getUAParser();
22
+ var os = parser.getOS();
23
+ return {
24
+ os: os.name || "Unknown",
25
+ osVersion: os.version || ""
26
+ };
27
+ };
28
+ var getDeviceCategory = function getDeviceCategory() {
29
+ var parser = getUAParser();
30
+ var _parser$getDevice = parser.getDevice(),
31
+ type = _parser$getDevice.type;
32
+ return type || "desktop";
33
+ };
34
+ var hasWebGL = function hasWebGL() {
35
+ try {
36
+ var c = document.createElement("canvas");
37
+ return !!(window.WebGLRenderingContext && (c.getContext("webgl") || c.getContext("experimental-webgl")));
38
+ } catch (_unused) {
39
+ return false;
40
+ }
41
+ };
42
+ var cookiesEnabled = function cookiesEnabled() {
43
+ try {
44
+ document.cookie = "ctest=1; SameSite=Lax";
45
+ var ok = document.cookie.includes("ctest=1");
46
+ document.cookie = "ctest=; Max-Age=0; SameSite=Lax";
47
+ return ok;
48
+ } catch (_unused2) {
49
+ return false;
50
+ }
51
+ };
52
+ var getPermission = /*#__PURE__*/function () {
53
+ var _ref = index._asyncToGenerator(/*#__PURE__*/index._regeneratorRuntime.mark(function _callee(name) {
54
+ var s;
55
+ return index._regeneratorRuntime.wrap(function _callee$(_context) {
56
+ while (1) switch (_context.prev = _context.next) {
57
+ case 0:
58
+ if (navigator.permissions) {
59
+ _context.next = 2;
60
+ break;
61
+ }
62
+ return _context.abrupt("return", "unsupported");
63
+ case 2:
64
+ _context.prev = 2;
65
+ _context.next = 5;
66
+ return navigator.permissions.query({
67
+ name: name
68
+ });
69
+ case 5:
70
+ s = _context.sent;
71
+ return _context.abrupt("return", s.state);
72
+ case 9:
73
+ _context.prev = 9;
74
+ _context.t0 = _context["catch"](2);
75
+ return _context.abrupt("return", "unsupported");
76
+ case 12:
77
+ case "end":
78
+ return _context.stop();
79
+ }
80
+ }, _callee, null, [[2, 9]]);
81
+ }));
82
+ return function getPermission(_x) {
83
+ return _ref.apply(this, arguments);
84
+ };
85
+ }();
86
+ var getMediaPresence = /*#__PURE__*/function () {
87
+ var _ref2 = index._asyncToGenerator(/*#__PURE__*/index._regeneratorRuntime.mark(function _callee2() {
88
+ var _navigator$mediaDevic;
89
+ var list;
90
+ return index._regeneratorRuntime.wrap(function _callee2$(_context2) {
91
+ while (1) switch (_context2.prev = _context2.next) {
92
+ case 0:
93
+ if ((_navigator$mediaDevic = navigator.mediaDevices) !== null && _navigator$mediaDevic !== void 0 && _navigator$mediaDevic.enumerateDevices) {
94
+ _context2.next = 2;
95
+ break;
96
+ }
97
+ return _context2.abrupt("return", {
98
+ hasMic: null,
99
+ hasCamera: null
100
+ });
101
+ case 2:
102
+ _context2.prev = 2;
103
+ _context2.next = 5;
104
+ return navigator.mediaDevices.enumerateDevices();
105
+ case 5:
106
+ list = _context2.sent;
107
+ return _context2.abrupt("return", {
108
+ hasMic: list.some(function (d) {
109
+ return d.kind === "audioinput";
110
+ }),
111
+ hasCamera: list.some(function (d) {
112
+ return d.kind === "videoinput";
113
+ })
114
+ });
115
+ case 9:
116
+ _context2.prev = 9;
117
+ _context2.t0 = _context2["catch"](2);
118
+ return _context2.abrupt("return", {
119
+ hasMic: null,
120
+ hasCamera: null
121
+ });
122
+ case 12:
123
+ case "end":
124
+ return _context2.stop();
125
+ }
126
+ }, _callee2, null, [[2, 9]]);
127
+ }));
128
+ return function getMediaPresence() {
129
+ return _ref2.apply(this, arguments);
130
+ };
131
+ }();
132
+ var IpInfo = /*#__PURE__*/function () {
133
+ var _ref3 = index._asyncToGenerator(/*#__PURE__*/index._regeneratorRuntime.mark(function _callee3() {
134
+ var url, response;
135
+ return index._regeneratorRuntime.wrap(function _callee3$(_context3) {
136
+ while (1) switch (_context3.prev = _context3.next) {
137
+ case 0:
138
+ url = "https://neeto-ip-lookup-web-production.neetodeployapp.com/location";
139
+ _context3.prev = 1;
140
+ _context3.next = 4;
141
+ return fetch(url, {
142
+ headers: {
143
+ "X-ACCESS-TOKEN": globalProps.ipLookupAccessToken
144
+ }
145
+ });
146
+ case 4:
147
+ response = _context3.sent;
148
+ _context3.next = 7;
149
+ return response.json();
150
+ case 7:
151
+ return _context3.abrupt("return", _context3.sent);
152
+ case 10:
153
+ _context3.prev = 10;
154
+ _context3.t0 = _context3["catch"](1);
155
+ return _context3.abrupt("return", null);
156
+ case 13:
157
+ case "end":
158
+ return _context3.stop();
159
+ }
160
+ }, _callee3, null, [[1, 10]]);
161
+ }));
162
+ return function IpInfo() {
163
+ return _ref3.apply(this, arguments);
164
+ };
165
+ }();
166
+
167
+ // ---------- Main Function ----------
168
+ var deviceInformation = /*#__PURE__*/function () {
169
+ var _ref4 = index._asyncToGenerator(/*#__PURE__*/index._regeneratorRuntime.mark(function _callee4() {
170
+ var _parseOS, os, osVersion, browser, category, connection, _yield$Promise$all, _yield$Promise$all2, micPerm, camPerm, geoPerm, notifPerm, mediaInfo;
171
+ return index._regeneratorRuntime.wrap(function _callee4$(_context4) {
172
+ while (1) switch (_context4.prev = _context4.next) {
173
+ case 0:
174
+ _parseOS = parseOS(), os = _parseOS.os, osVersion = _parseOS.osVersion;
175
+ browser = parseBrowser();
176
+ category = getDeviceCategory(); // @ts-ignore
177
+ connection = navigator.connection || null;
178
+ _context4.next = 6;
179
+ return Promise.all([getPermission("microphone"), getPermission("camera"), getPermission("geolocation"), getPermission("notifications"), getMediaPresence()]);
180
+ case 6:
181
+ _yield$Promise$all = _context4.sent;
182
+ _yield$Promise$all2 = slicedToArray._slicedToArray(_yield$Promise$all, 5);
183
+ micPerm = _yield$Promise$all2[0];
184
+ camPerm = _yield$Promise$all2[1];
185
+ geoPerm = _yield$Promise$all2[2];
186
+ notifPerm = _yield$Promise$all2[3];
187
+ mediaInfo = _yield$Promise$all2[4];
188
+ _context4.t0 = {
189
+ type: category,
190
+ os: os,
191
+ osVersion: osVersion,
192
+ screen: {
193
+ width: screen.width,
194
+ height: screen.height,
195
+ pixelRatio: window.devicePixelRatio || 1,
196
+ colorDepth: screen.colorDepth
197
+ },
198
+ viewport: {
199
+ width: window.innerWidth,
200
+ height: window.innerHeight
201
+ },
202
+ memoryGB: typeof navigator.deviceMemory === "number" ? navigator.deviceMemory : null
203
+ };
204
+ _context4.t1 = {
205
+ name: browser.name,
206
+ version: browser.version,
207
+ userAgent: navigator.userAgent,
208
+ javaScriptEnabled: true,
209
+ cookiesEnabled: cookiesEnabled(),
210
+ websockets: "WebSocket" in window,
211
+ webgl: hasWebGL(),
212
+ doNotTrack: navigator.doNotTrack || null,
213
+ mimeTypes: navigator.mimeTypes ? ramda.pluck("type", Array.from(navigator.mimeTypes)) : [],
214
+ network: connection ? {
215
+ effectiveType: connection.effectiveType,
216
+ downlink: connection.downlink,
217
+ rtt: connection.rtt,
218
+ saveData: connection.saveData
219
+ } : null
220
+ };
221
+ _context4.t2 = {
222
+ microphone: micPerm,
223
+ camera: camPerm,
224
+ geolocation: geoPerm,
225
+ notifications: notifPerm,
226
+ media: mediaInfo
227
+ };
228
+ _context4.t3 = {
229
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone || null,
230
+ referrer: document.referrer || ""
231
+ };
232
+ _context4.next = 19;
233
+ return IpInfo();
234
+ case 19:
235
+ _context4.t4 = _context4.sent;
236
+ return _context4.abrupt("return", {
237
+ device: _context4.t0,
238
+ browser: _context4.t1,
239
+ permissions: _context4.t2,
240
+ meta: _context4.t3,
241
+ serverDerived: _context4.t4
242
+ });
243
+ case 21:
244
+ case "end":
245
+ return _context4.stop();
246
+ }
247
+ }, _callee4);
248
+ }));
249
+ return function deviceInformation() {
250
+ return _ref4.apply(this, arguments);
251
+ };
252
+ }();
253
+
254
+ exports.deviceInformation = deviceInformation;
255
+ //# sourceMappingURL=deviceInformation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceInformation.js","sources":["../../../src/utils/deviceInformation.js"],"sourcesContent":["import { pluck } from \"ramda\";\nimport { UAParser } from \"ua-parser-js\";\n\nconst getUAParser = () => new UAParser(navigator.userAgent);\n\nconst parseBrowser = () => {\n const parser = getUAParser();\n const browser = parser.getBrowser();\n\n return {\n name: browser.name || \"Unknown\",\n version: browser.version || \"\",\n };\n};\n\nconst parseOS = () => {\n const parser = getUAParser();\n const os = parser.getOS();\n\n return { os: os.name || \"Unknown\", osVersion: os.version || \"\" };\n};\n\nconst getDeviceCategory = () => {\n const parser = getUAParser();\n const { type } = parser.getDevice();\n\n return type || \"desktop\";\n};\n\nconst hasWebGL = () => {\n try {\n const c = document.createElement(\"canvas\");\n\n return !!(\n window.WebGLRenderingContext &&\n (c.getContext(\"webgl\") || c.getContext(\"experimental-webgl\"))\n );\n } catch {\n return false;\n }\n};\n\nconst cookiesEnabled = () => {\n try {\n document.cookie = \"ctest=1; SameSite=Lax\";\n const ok = document.cookie.includes(\"ctest=1\");\n document.cookie = \"ctest=; Max-Age=0; SameSite=Lax\";\n\n return ok;\n } catch {\n return false;\n }\n};\n\nconst getPermission = async name => {\n if (!navigator.permissions) return \"unsupported\";\n try {\n const s = await navigator.permissions.query({ name });\n\n return s.state; // 'granted' | 'denied' | 'prompt'\n } catch {\n return \"unsupported\";\n }\n};\n\nconst getMediaPresence = async () => {\n if (!navigator.mediaDevices?.enumerateDevices) {\n return { hasMic: null, hasCamera: null };\n }\n try {\n const list = await navigator.mediaDevices.enumerateDevices();\n\n return {\n hasMic: list.some(d => d.kind === \"audioinput\"),\n hasCamera: list.some(d => d.kind === \"videoinput\"),\n };\n } catch {\n return { hasMic: null, hasCamera: null };\n }\n};\n\nconst IpInfo = async () => {\n const url =\n \"https://neeto-ip-lookup-web-production.neetodeployapp.com/location\";\n try {\n const response = await fetch(url, {\n headers: { \"X-ACCESS-TOKEN\": globalProps.ipLookupAccessToken },\n });\n\n return await response.json();\n } catch {\n return null;\n }\n};\n\n// ---------- Main Function ----------\nexport const deviceInformation = async () => {\n const { os, osVersion } = parseOS();\n const browser = parseBrowser();\n const category = getDeviceCategory();\n // @ts-ignore\n const connection = navigator.connection || null;\n\n const [micPerm, camPerm, geoPerm, notifPerm, mediaInfo] = await Promise.all([\n getPermission(\"microphone\"),\n getPermission(\"camera\"),\n getPermission(\"geolocation\"),\n getPermission(\"notifications\"),\n getMediaPresence(),\n ]);\n\n return {\n device: {\n type: category,\n os,\n osVersion,\n screen: {\n width: screen.width,\n height: screen.height,\n pixelRatio: window.devicePixelRatio || 1,\n colorDepth: screen.colorDepth,\n },\n viewport: {\n width: window.innerWidth,\n height: window.innerHeight,\n },\n memoryGB:\n typeof navigator.deviceMemory === \"number\"\n ? navigator.deviceMemory\n : null,\n },\n browser: {\n name: browser.name,\n version: browser.version,\n userAgent: navigator.userAgent,\n javaScriptEnabled: true,\n cookiesEnabled: cookiesEnabled(),\n websockets: \"WebSocket\" in window,\n webgl: hasWebGL(),\n doNotTrack: navigator.doNotTrack || null,\n mimeTypes: navigator.mimeTypes\n ? pluck(\"type\", Array.from(navigator.mimeTypes))\n : [],\n network: connection\n ? {\n effectiveType: connection.effectiveType,\n downlink: connection.downlink,\n rtt: connection.rtt,\n saveData: connection.saveData,\n }\n : null,\n },\n permissions: {\n microphone: micPerm,\n camera: camPerm,\n geolocation: geoPerm,\n notifications: notifPerm,\n media: mediaInfo,\n },\n meta: {\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone || null,\n referrer: document.referrer || \"\",\n },\n serverDerived: await IpInfo(),\n };\n};\n"],"names":["getUAParser","UAParser","navigator","userAgent","parseBrowser","parser","browser","getBrowser","name","version","parseOS","os","getOS","osVersion","getDeviceCategory","_parser$getDevice","getDevice","type","hasWebGL","c","document","createElement","window","WebGLRenderingContext","getContext","_unused","cookiesEnabled","cookie","ok","includes","_unused2","getPermission","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","s","wrap","_callee$","_context","prev","next","permissions","abrupt","query","sent","state","t0","stop","_x","apply","arguments","getMediaPresence","_ref2","_callee2","_navigator$mediaDevic","list","_callee2$","_context2","mediaDevices","enumerateDevices","hasMic","hasCamera","some","d","kind","IpInfo","_ref3","_callee3","url","response","_callee3$","_context3","fetch","headers","globalProps","ipLookupAccessToken","json","deviceInformation","_ref4","_callee4","_parseOS","category","connection","_yield$Promise$all","_yield$Promise$all2","micPerm","camPerm","geoPerm","notifPerm","mediaInfo","_callee4$","_context4","Promise","all","_slicedToArray","screen","width","height","pixelRatio","devicePixelRatio","colorDepth","viewport","innerWidth","innerHeight","memoryGB","deviceMemory","t1","javaScriptEnabled","websockets","webgl","doNotTrack","mimeTypes","pluck","Array","from","network","effectiveType","downlink","rtt","saveData","t2","microphone","camera","geolocation","notifications","media","t3","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","referrer","t4","device","meta","serverDerived"],"mappings":"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"}
@@ -11,6 +11,7 @@ var utils_captureAnalyticsEvent = require('./captureAnalyticsEvent.js');
11
11
  var utils_captureAnalyticsPageView = require('./captureAnalyticsPageView.js');
12
12
  var utils_buildNestedAttributesPayload = require('./buildNestedAttributesPayload.js');
13
13
  var utils_loadGoogleFonts = require('./loadGoogleFonts.js');
14
+ var utils_deviceInformation = require('./deviceInformation.js');
14
15
  var utils_dayjs = require('./dayjs.js');
15
16
  require('axios');
16
17
  require('../initializers/constants.js');
@@ -31,6 +32,7 @@ require('../constants/regex.js');
31
32
  require('yup');
32
33
  require('../mixpanel.module-ajRn5e0J.js');
33
34
  require('../toConsumableArray-tBKHqzE3.js');
35
+ require('ua-parser-js');
34
36
 
35
37
 
36
38
 
@@ -62,5 +64,6 @@ exports.captureAnalyticsEvent = utils_captureAnalyticsEvent.captureAnalyticsEven
62
64
  exports.captureAnalyticsPageView = utils_captureAnalyticsPageView.captureAnalyticsPageView;
63
65
  exports.buildNestedAttributesPayload = utils_buildNestedAttributesPayload.buildNestedAttributesPayload;
64
66
  exports.loadGoogleFonts = utils_loadGoogleFonts.loadGoogleFonts;
67
+ exports.deviceInformation = utils_deviceInformation.deviceInformation;
65
68
  exports.dayjs = utils_dayjs;
66
69
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -69,6 +69,7 @@ import '../utils/createSubscription.js';
69
69
  import '@rails/actioncable';
70
70
  import 'yup';
71
71
  import '../mixpanel.module-Bu2zrBMQ.js';
72
+ import 'ua-parser-js';
72
73
  import '@tanstack/react-query';
73
74
  import './useBreakpoints/utils.js';
74
75
  import './BrowserPushNotifications/devices.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -21,4 +21,5 @@ import '../../utils/createSubscription.js';
21
21
  import '@rails/actioncable';
22
22
  import 'yup';
23
23
  import '../../mixpanel.module-Bu2zrBMQ.js';
24
+ import 'ua-parser-js';
24
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
@@ -11,9 +11,10 @@ import 'i18next';
11
11
  import 'yup';
12
12
  import '../../mixpanel.module-Bu2zrBMQ.js';
13
13
  import '@bigbinary/neeto-cist';
14
+ import '../../index-CoBEoJgD.js';
15
+ import 'ua-parser-js';
14
16
  import '../../unsupportedIterableToArray-Dqz8Y8_I.js';
15
17
  import '../../objectWithoutProperties-DN7d1SzH.js';
16
- import '../../index-CoBEoJgD.js';
17
18
  import '../../defineProperty-CrCYjjU3.js';
18
19
  import '../../typeof-D-UKOauR.js';
19
20
  import '@bigbinary/neetoui/Toastr';
@@ -1 +1 @@
1
- {"version":3,"file":"useLocalStorage.js","sources":["../../../src/react-utils/useLocalStorage/useLocalStorage.js"],"sourcesContent":["/* eslint-disable @bigbinary/neeto/no-local-storage */\n\nimport { useState } from \"react\";\n\nimport { isNil } from \"ramda\";\nimport { removeFromLocalStorage, setToLocalStorage } from \"utils\";\n\nconst getStorageValue = (key, defaultValue) => {\n try {\n const storedValue = localStorage.getItem(key);\n\n return storedValue ? JSON.parse(storedValue) : defaultValue;\n } catch (error) {\n logger.error(error);\n\n return defaultValue;\n }\n};\n\nconst useLocalStorage = (key, defaultValue) => {\n const [storedValue, setStoredValue] = useState(() =>\n getStorageValue(key, defaultValue)\n );\n\n const setValue = value =>\n setStoredValue(prevStoredValue => {\n const newValue =\n typeof value === \"function\" ? value(prevStoredValue) : value;\n\n if (isNil(newValue)) {\n removeFromLocalStorage(key);\n } else {\n setToLocalStorage(key, newValue);\n }\n\n return newValue;\n });\n\n return [storedValue, setValue];\n};\n\nexport default useLocalStorage;\n"],"names":["getStorageValue","key","defaultValue","storedValue","localStorage","getItem","JSON","parse","error","logger","useLocalStorage","_useState","useState","_useState2","_slicedToArray","setStoredValue","setValue","value","prevStoredValue","newValue","isNil","removeFromLocalStorage","setToLocalStorage"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAMA,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,GAAG,EAAEC,YAAY,EAAK;EAC7C,IAAI;AACF,IAAA,IAAMC,WAAW,GAAGC,YAAY,CAACC,OAAO,CAACJ,GAAG,CAAC;IAE7C,OAAOE,WAAW,GAAGG,IAAI,CAACC,KAAK,CAACJ,WAAW,CAAC,GAAGD,YAAY;GAC5D,CAAC,OAAOM,KAAK,EAAE;AACdC,IAAAA,MAAM,CAACD,KAAK,CAACA,KAAK,CAAC;AAEnB,IAAA,OAAON,YAAY;AACrB;AACF,CAAC;AAEKQ,IAAAA,eAAe,GAAG,SAAlBA,eAAeA,CAAIT,GAAG,EAAEC,YAAY,EAAK;EAC7C,IAAAS,SAAA,GAAsCC,QAAQ,CAAC,YAAA;AAAA,MAAA,OAC7CZ,eAAe,CAACC,GAAG,EAAEC,YAAY,CAAC;AAAA,KACpC,CAAC;IAAAW,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAFMR,IAAAA,WAAW,GAAAU,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,cAAc,GAAAF,UAAA,CAAA,CAAA,CAAA;AAIlC,EAAA,IAAMG,QAAQ,GAAG,SAAXA,QAAQA,CAAGC,KAAK,EAAA;AAAA,IAAA,OACpBF,cAAc,CAAC,UAAAG,eAAe,EAAI;AAChC,MAAA,IAAMC,QAAQ,GACZ,OAAOF,KAAK,KAAK,UAAU,GAAGA,KAAK,CAACC,eAAe,CAAC,GAAGD,KAAK;AAE9D,MAAA,IAAIG,KAAK,CAACD,QAAQ,CAAC,EAAE;QACnBE,sBAAsB,CAACpB,GAAG,CAAC;AAC7B,OAAC,MAAM;AACLqB,QAAAA,iBAAiB,CAACrB,GAAG,EAAEkB,QAAQ,CAAC;AAClC;AAEA,MAAA,OAAOA,QAAQ;AACjB,KAAC,CAAC;AAAA,GAAA;AAEJ,EAAA,OAAO,CAAChB,WAAW,EAAEa,QAAQ,CAAC;AAChC;;;;"}
1
+ {"version":3,"file":"useLocalStorage.js","sources":["../../../src/react-utils/useLocalStorage/useLocalStorage.js"],"sourcesContent":["/* eslint-disable @bigbinary/neeto/no-local-storage */\n\nimport { useState } from \"react\";\n\nimport { isNil } from \"ramda\";\nimport { removeFromLocalStorage, setToLocalStorage } from \"utils\";\n\nconst getStorageValue = (key, defaultValue) => {\n try {\n const storedValue = localStorage.getItem(key);\n\n return storedValue ? JSON.parse(storedValue) : defaultValue;\n } catch (error) {\n logger.error(error);\n\n return defaultValue;\n }\n};\n\nconst useLocalStorage = (key, defaultValue) => {\n const [storedValue, setStoredValue] = useState(() =>\n getStorageValue(key, defaultValue)\n );\n\n const setValue = value =>\n setStoredValue(prevStoredValue => {\n const newValue =\n typeof value === \"function\" ? value(prevStoredValue) : value;\n\n if (isNil(newValue)) {\n removeFromLocalStorage(key);\n } else {\n setToLocalStorage(key, newValue);\n }\n\n return newValue;\n });\n\n return [storedValue, setValue];\n};\n\nexport default useLocalStorage;\n"],"names":["getStorageValue","key","defaultValue","storedValue","localStorage","getItem","JSON","parse","error","logger","useLocalStorage","_useState","useState","_useState2","_slicedToArray","setStoredValue","setValue","value","prevStoredValue","newValue","isNil","removeFromLocalStorage","setToLocalStorage"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAMA,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,GAAG,EAAEC,YAAY,EAAK;EAC7C,IAAI;AACF,IAAA,IAAMC,WAAW,GAAGC,YAAY,CAACC,OAAO,CAACJ,GAAG,CAAC;IAE7C,OAAOE,WAAW,GAAGG,IAAI,CAACC,KAAK,CAACJ,WAAW,CAAC,GAAGD,YAAY;GAC5D,CAAC,OAAOM,KAAK,EAAE;AACdC,IAAAA,MAAM,CAACD,KAAK,CAACA,KAAK,CAAC;AAEnB,IAAA,OAAON,YAAY;AACrB;AACF,CAAC;AAEKQ,IAAAA,eAAe,GAAG,SAAlBA,eAAeA,CAAIT,GAAG,EAAEC,YAAY,EAAK;EAC7C,IAAAS,SAAA,GAAsCC,QAAQ,CAAC,YAAA;AAAA,MAAA,OAC7CZ,eAAe,CAACC,GAAG,EAAEC,YAAY,CAAC;AAAA,KACpC,CAAC;IAAAW,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAFMR,IAAAA,WAAW,GAAAU,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,cAAc,GAAAF,UAAA,CAAA,CAAA,CAAA;AAIlC,EAAA,IAAMG,QAAQ,GAAG,SAAXA,QAAQA,CAAGC,KAAK,EAAA;AAAA,IAAA,OACpBF,cAAc,CAAC,UAAAG,eAAe,EAAI;AAChC,MAAA,IAAMC,QAAQ,GACZ,OAAOF,KAAK,KAAK,UAAU,GAAGA,KAAK,CAACC,eAAe,CAAC,GAAGD,KAAK;AAE9D,MAAA,IAAIG,KAAK,CAACD,QAAQ,CAAC,EAAE;QACnBE,sBAAsB,CAACpB,GAAG,CAAC;AAC7B,OAAC,MAAM;AACLqB,QAAAA,iBAAiB,CAACrB,GAAG,EAAEkB,QAAQ,CAAC;AAClC;AAEA,MAAA,OAAOA,QAAQ;AACjB,KAAC,CAAC;AAAA,GAAA;AAEJ,EAAA,OAAO,CAAChB,WAAW,EAAEa,QAAQ,CAAC;AAChC;;;;"}
@@ -0,0 +1,253 @@
1
+ import { _ as _slicedToArray } from '../slicedToArray-DmsZvA_9.js';
2
+ import { _ as _asyncToGenerator, a as _regeneratorRuntime } from '../index-CoBEoJgD.js';
3
+ import { pluck } from 'ramda';
4
+ import { UAParser } from 'ua-parser-js';
5
+ import '../unsupportedIterableToArray-Dqz8Y8_I.js';
6
+
7
+ var getUAParser = function getUAParser() {
8
+ return new UAParser(navigator.userAgent);
9
+ };
10
+ var parseBrowser = function parseBrowser() {
11
+ var parser = getUAParser();
12
+ var browser = parser.getBrowser();
13
+ return {
14
+ name: browser.name || "Unknown",
15
+ version: browser.version || ""
16
+ };
17
+ };
18
+ var parseOS = function parseOS() {
19
+ var parser = getUAParser();
20
+ var os = parser.getOS();
21
+ return {
22
+ os: os.name || "Unknown",
23
+ osVersion: os.version || ""
24
+ };
25
+ };
26
+ var getDeviceCategory = function getDeviceCategory() {
27
+ var parser = getUAParser();
28
+ var _parser$getDevice = parser.getDevice(),
29
+ type = _parser$getDevice.type;
30
+ return type || "desktop";
31
+ };
32
+ var hasWebGL = function hasWebGL() {
33
+ try {
34
+ var c = document.createElement("canvas");
35
+ return !!(window.WebGLRenderingContext && (c.getContext("webgl") || c.getContext("experimental-webgl")));
36
+ } catch (_unused) {
37
+ return false;
38
+ }
39
+ };
40
+ var cookiesEnabled = function cookiesEnabled() {
41
+ try {
42
+ document.cookie = "ctest=1; SameSite=Lax";
43
+ var ok = document.cookie.includes("ctest=1");
44
+ document.cookie = "ctest=; Max-Age=0; SameSite=Lax";
45
+ return ok;
46
+ } catch (_unused2) {
47
+ return false;
48
+ }
49
+ };
50
+ var getPermission = /*#__PURE__*/function () {
51
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(name) {
52
+ var s;
53
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
54
+ while (1) switch (_context.prev = _context.next) {
55
+ case 0:
56
+ if (navigator.permissions) {
57
+ _context.next = 2;
58
+ break;
59
+ }
60
+ return _context.abrupt("return", "unsupported");
61
+ case 2:
62
+ _context.prev = 2;
63
+ _context.next = 5;
64
+ return navigator.permissions.query({
65
+ name: name
66
+ });
67
+ case 5:
68
+ s = _context.sent;
69
+ return _context.abrupt("return", s.state);
70
+ case 9:
71
+ _context.prev = 9;
72
+ _context.t0 = _context["catch"](2);
73
+ return _context.abrupt("return", "unsupported");
74
+ case 12:
75
+ case "end":
76
+ return _context.stop();
77
+ }
78
+ }, _callee, null, [[2, 9]]);
79
+ }));
80
+ return function getPermission(_x) {
81
+ return _ref.apply(this, arguments);
82
+ };
83
+ }();
84
+ var getMediaPresence = /*#__PURE__*/function () {
85
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
86
+ var _navigator$mediaDevic;
87
+ var list;
88
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
89
+ while (1) switch (_context2.prev = _context2.next) {
90
+ case 0:
91
+ if ((_navigator$mediaDevic = navigator.mediaDevices) !== null && _navigator$mediaDevic !== void 0 && _navigator$mediaDevic.enumerateDevices) {
92
+ _context2.next = 2;
93
+ break;
94
+ }
95
+ return _context2.abrupt("return", {
96
+ hasMic: null,
97
+ hasCamera: null
98
+ });
99
+ case 2:
100
+ _context2.prev = 2;
101
+ _context2.next = 5;
102
+ return navigator.mediaDevices.enumerateDevices();
103
+ case 5:
104
+ list = _context2.sent;
105
+ return _context2.abrupt("return", {
106
+ hasMic: list.some(function (d) {
107
+ return d.kind === "audioinput";
108
+ }),
109
+ hasCamera: list.some(function (d) {
110
+ return d.kind === "videoinput";
111
+ })
112
+ });
113
+ case 9:
114
+ _context2.prev = 9;
115
+ _context2.t0 = _context2["catch"](2);
116
+ return _context2.abrupt("return", {
117
+ hasMic: null,
118
+ hasCamera: null
119
+ });
120
+ case 12:
121
+ case "end":
122
+ return _context2.stop();
123
+ }
124
+ }, _callee2, null, [[2, 9]]);
125
+ }));
126
+ return function getMediaPresence() {
127
+ return _ref2.apply(this, arguments);
128
+ };
129
+ }();
130
+ var IpInfo = /*#__PURE__*/function () {
131
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
132
+ var url, response;
133
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
134
+ while (1) switch (_context3.prev = _context3.next) {
135
+ case 0:
136
+ url = "https://neeto-ip-lookup-web-production.neetodeployapp.com/location";
137
+ _context3.prev = 1;
138
+ _context3.next = 4;
139
+ return fetch(url, {
140
+ headers: {
141
+ "X-ACCESS-TOKEN": globalProps.ipLookupAccessToken
142
+ }
143
+ });
144
+ case 4:
145
+ response = _context3.sent;
146
+ _context3.next = 7;
147
+ return response.json();
148
+ case 7:
149
+ return _context3.abrupt("return", _context3.sent);
150
+ case 10:
151
+ _context3.prev = 10;
152
+ _context3.t0 = _context3["catch"](1);
153
+ return _context3.abrupt("return", null);
154
+ case 13:
155
+ case "end":
156
+ return _context3.stop();
157
+ }
158
+ }, _callee3, null, [[1, 10]]);
159
+ }));
160
+ return function IpInfo() {
161
+ return _ref3.apply(this, arguments);
162
+ };
163
+ }();
164
+
165
+ // ---------- Main Function ----------
166
+ var deviceInformation = /*#__PURE__*/function () {
167
+ var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
168
+ var _parseOS, os, osVersion, browser, category, connection, _yield$Promise$all, _yield$Promise$all2, micPerm, camPerm, geoPerm, notifPerm, mediaInfo;
169
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
170
+ while (1) switch (_context4.prev = _context4.next) {
171
+ case 0:
172
+ _parseOS = parseOS(), os = _parseOS.os, osVersion = _parseOS.osVersion;
173
+ browser = parseBrowser();
174
+ category = getDeviceCategory(); // @ts-ignore
175
+ connection = navigator.connection || null;
176
+ _context4.next = 6;
177
+ return Promise.all([getPermission("microphone"), getPermission("camera"), getPermission("geolocation"), getPermission("notifications"), getMediaPresence()]);
178
+ case 6:
179
+ _yield$Promise$all = _context4.sent;
180
+ _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 5);
181
+ micPerm = _yield$Promise$all2[0];
182
+ camPerm = _yield$Promise$all2[1];
183
+ geoPerm = _yield$Promise$all2[2];
184
+ notifPerm = _yield$Promise$all2[3];
185
+ mediaInfo = _yield$Promise$all2[4];
186
+ _context4.t0 = {
187
+ type: category,
188
+ os: os,
189
+ osVersion: osVersion,
190
+ screen: {
191
+ width: screen.width,
192
+ height: screen.height,
193
+ pixelRatio: window.devicePixelRatio || 1,
194
+ colorDepth: screen.colorDepth
195
+ },
196
+ viewport: {
197
+ width: window.innerWidth,
198
+ height: window.innerHeight
199
+ },
200
+ memoryGB: typeof navigator.deviceMemory === "number" ? navigator.deviceMemory : null
201
+ };
202
+ _context4.t1 = {
203
+ name: browser.name,
204
+ version: browser.version,
205
+ userAgent: navigator.userAgent,
206
+ javaScriptEnabled: true,
207
+ cookiesEnabled: cookiesEnabled(),
208
+ websockets: "WebSocket" in window,
209
+ webgl: hasWebGL(),
210
+ doNotTrack: navigator.doNotTrack || null,
211
+ mimeTypes: navigator.mimeTypes ? pluck("type", Array.from(navigator.mimeTypes)) : [],
212
+ network: connection ? {
213
+ effectiveType: connection.effectiveType,
214
+ downlink: connection.downlink,
215
+ rtt: connection.rtt,
216
+ saveData: connection.saveData
217
+ } : null
218
+ };
219
+ _context4.t2 = {
220
+ microphone: micPerm,
221
+ camera: camPerm,
222
+ geolocation: geoPerm,
223
+ notifications: notifPerm,
224
+ media: mediaInfo
225
+ };
226
+ _context4.t3 = {
227
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone || null,
228
+ referrer: document.referrer || ""
229
+ };
230
+ _context4.next = 19;
231
+ return IpInfo();
232
+ case 19:
233
+ _context4.t4 = _context4.sent;
234
+ return _context4.abrupt("return", {
235
+ device: _context4.t0,
236
+ browser: _context4.t1,
237
+ permissions: _context4.t2,
238
+ meta: _context4.t3,
239
+ serverDerived: _context4.t4
240
+ });
241
+ case 21:
242
+ case "end":
243
+ return _context4.stop();
244
+ }
245
+ }, _callee4);
246
+ }));
247
+ return function deviceInformation() {
248
+ return _ref4.apply(this, arguments);
249
+ };
250
+ }();
251
+
252
+ export { deviceInformation };
253
+ //# sourceMappingURL=deviceInformation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceInformation.js","sources":["../../src/utils/deviceInformation.js"],"sourcesContent":["import { pluck } from \"ramda\";\nimport { UAParser } from \"ua-parser-js\";\n\nconst getUAParser = () => new UAParser(navigator.userAgent);\n\nconst parseBrowser = () => {\n const parser = getUAParser();\n const browser = parser.getBrowser();\n\n return {\n name: browser.name || \"Unknown\",\n version: browser.version || \"\",\n };\n};\n\nconst parseOS = () => {\n const parser = getUAParser();\n const os = parser.getOS();\n\n return { os: os.name || \"Unknown\", osVersion: os.version || \"\" };\n};\n\nconst getDeviceCategory = () => {\n const parser = getUAParser();\n const { type } = parser.getDevice();\n\n return type || \"desktop\";\n};\n\nconst hasWebGL = () => {\n try {\n const c = document.createElement(\"canvas\");\n\n return !!(\n window.WebGLRenderingContext &&\n (c.getContext(\"webgl\") || c.getContext(\"experimental-webgl\"))\n );\n } catch {\n return false;\n }\n};\n\nconst cookiesEnabled = () => {\n try {\n document.cookie = \"ctest=1; SameSite=Lax\";\n const ok = document.cookie.includes(\"ctest=1\");\n document.cookie = \"ctest=; Max-Age=0; SameSite=Lax\";\n\n return ok;\n } catch {\n return false;\n }\n};\n\nconst getPermission = async name => {\n if (!navigator.permissions) return \"unsupported\";\n try {\n const s = await navigator.permissions.query({ name });\n\n return s.state; // 'granted' | 'denied' | 'prompt'\n } catch {\n return \"unsupported\";\n }\n};\n\nconst getMediaPresence = async () => {\n if (!navigator.mediaDevices?.enumerateDevices) {\n return { hasMic: null, hasCamera: null };\n }\n try {\n const list = await navigator.mediaDevices.enumerateDevices();\n\n return {\n hasMic: list.some(d => d.kind === \"audioinput\"),\n hasCamera: list.some(d => d.kind === \"videoinput\"),\n };\n } catch {\n return { hasMic: null, hasCamera: null };\n }\n};\n\nconst IpInfo = async () => {\n const url =\n \"https://neeto-ip-lookup-web-production.neetodeployapp.com/location\";\n try {\n const response = await fetch(url, {\n headers: { \"X-ACCESS-TOKEN\": globalProps.ipLookupAccessToken },\n });\n\n return await response.json();\n } catch {\n return null;\n }\n};\n\n// ---------- Main Function ----------\nexport const deviceInformation = async () => {\n const { os, osVersion } = parseOS();\n const browser = parseBrowser();\n const category = getDeviceCategory();\n // @ts-ignore\n const connection = navigator.connection || null;\n\n const [micPerm, camPerm, geoPerm, notifPerm, mediaInfo] = await Promise.all([\n getPermission(\"microphone\"),\n getPermission(\"camera\"),\n getPermission(\"geolocation\"),\n getPermission(\"notifications\"),\n getMediaPresence(),\n ]);\n\n return {\n device: {\n type: category,\n os,\n osVersion,\n screen: {\n width: screen.width,\n height: screen.height,\n pixelRatio: window.devicePixelRatio || 1,\n colorDepth: screen.colorDepth,\n },\n viewport: {\n width: window.innerWidth,\n height: window.innerHeight,\n },\n memoryGB:\n typeof navigator.deviceMemory === \"number\"\n ? navigator.deviceMemory\n : null,\n },\n browser: {\n name: browser.name,\n version: browser.version,\n userAgent: navigator.userAgent,\n javaScriptEnabled: true,\n cookiesEnabled: cookiesEnabled(),\n websockets: \"WebSocket\" in window,\n webgl: hasWebGL(),\n doNotTrack: navigator.doNotTrack || null,\n mimeTypes: navigator.mimeTypes\n ? pluck(\"type\", Array.from(navigator.mimeTypes))\n : [],\n network: connection\n ? {\n effectiveType: connection.effectiveType,\n downlink: connection.downlink,\n rtt: connection.rtt,\n saveData: connection.saveData,\n }\n : null,\n },\n permissions: {\n microphone: micPerm,\n camera: camPerm,\n geolocation: geoPerm,\n notifications: notifPerm,\n media: mediaInfo,\n },\n meta: {\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone || null,\n referrer: document.referrer || \"\",\n },\n serverDerived: await IpInfo(),\n };\n};\n"],"names":["getUAParser","UAParser","navigator","userAgent","parseBrowser","parser","browser","getBrowser","name","version","parseOS","os","getOS","osVersion","getDeviceCategory","_parser$getDevice","getDevice","type","hasWebGL","c","document","createElement","window","WebGLRenderingContext","getContext","_unused","cookiesEnabled","cookie","ok","includes","_unused2","getPermission","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","s","wrap","_callee$","_context","prev","next","permissions","abrupt","query","sent","state","t0","stop","_x","apply","arguments","getMediaPresence","_ref2","_callee2","_navigator$mediaDevic","list","_callee2$","_context2","mediaDevices","enumerateDevices","hasMic","hasCamera","some","d","kind","IpInfo","_ref3","_callee3","url","response","_callee3$","_context3","fetch","headers","globalProps","ipLookupAccessToken","json","deviceInformation","_ref4","_callee4","_parseOS","category","connection","_yield$Promise$all","_yield$Promise$all2","micPerm","camPerm","geoPerm","notifPerm","mediaInfo","_callee4$","_context4","Promise","all","_slicedToArray","screen","width","height","pixelRatio","devicePixelRatio","colorDepth","viewport","innerWidth","innerHeight","memoryGB","deviceMemory","t1","javaScriptEnabled","websockets","webgl","doNotTrack","mimeTypes","pluck","Array","from","network","effectiveType","downlink","rtt","saveData","t2","microphone","camera","geolocation","notifications","media","t3","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","referrer","t4","device","meta","serverDerived"],"mappings":"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"}
@@ -9,6 +9,7 @@ export { captureAnalyticsEvent } from './captureAnalyticsEvent.js';
9
9
  export { captureAnalyticsPageView } from './captureAnalyticsPageView.js';
10
10
  export { buildNestedAttributesPayload } from './buildNestedAttributesPayload.js';
11
11
  export { loadGoogleFonts } from './loadGoogleFonts.js';
12
+ export { deviceInformation } from './deviceInformation.js';
12
13
  export { default as dayjs } from './dayjs.js';
13
14
  import 'axios';
14
15
  import '../initializers/constants.js';
@@ -29,4 +30,5 @@ import '../constants/regex.js';
29
30
  import 'yup';
30
31
  import '../mixpanel.module-Bu2zrBMQ.js';
31
32
  import '../toConsumableArray-B7CFjjkW.js';
33
+ import 'ua-parser-js';
32
34
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-commons-frontend",
3
- "version": "4.13.68",
3
+ "version": "4.13.69",
4
4
  "description": "A package encapsulating common code across neeto projects including initializers, utility functions, common components and hooks and so on.",
5
5
  "repository": "git@github.com:bigbinary/neeto-commons-frontend.git",
6
6
  "author": "Amaljith K <amaljith.k@bigbinary.com>",
@@ -206,6 +206,7 @@
206
206
  "sass": "1.62.0",
207
207
  "sass-loader": "^13.0.2",
208
208
  "tailwindcss": "^3.4.1",
209
+ "ua-parser-js": "^2.0.3",
209
210
  "unified": "11.0.0",
210
211
  "util": "^0.12.5",
211
212
  "uuid": "10.0.0",
@@ -267,6 +268,7 @@
267
268
  "sass": "1.62.0",
268
269
  "shakapacker": "^6.5.5",
269
270
  "tailwindcss": "^3.4.1",
271
+ "ua-parser-js": "^2.0.3",
270
272
  "util": "^0.12.5",
271
273
  "uuid": "10.0.0",
272
274
  "vite": "^6.0.3",
package/utils.d.ts CHANGED
@@ -680,4 +680,144 @@ export function buildNestedAttributesPayload(modifiedValues: {
680
680
  * }, []);
681
681
  * @endexample
682
682
  */
683
- export function loadGoogleFonts(fontFamilies: string[]): void;
683
+ export function loadGoogleFonts(fontFamilies: string[]): void;
684
+
685
+ // Device Information Types
686
+ export interface DeviceInformationOptions {
687
+ appType?: string;
688
+ }
689
+ export interface DeviceInfo {
690
+ type: string;
691
+ os: string;
692
+ osVersion: string;
693
+ screen: {
694
+ width: number;
695
+ height: number;
696
+ pixelRatio: number;
697
+ colorDepth: number;
698
+ };
699
+ viewport: {
700
+ width: number;
701
+ height: number;
702
+ };
703
+ memoryGB: number | null;
704
+ }
705
+ export interface BrowserInfo {
706
+ name: string;
707
+ version: string;
708
+ userAgent: string;
709
+ javaScriptEnabled: boolean;
710
+ cookiesEnabled: boolean;
711
+ websockets: boolean;
712
+ webgl: boolean;
713
+ doNotTrack: string | null;
714
+ mimeTypes: string[];
715
+ network: {
716
+ effectiveType: string;
717
+ downlink: number;
718
+ rtt: number;
719
+ saveData: boolean;
720
+ } | null;
721
+ }
722
+ export interface PermissionsInfo {
723
+ microphone: string;
724
+ camera: string;
725
+ geolocation: string;
726
+ notifications: string;
727
+ media: {
728
+ hasMic: boolean | null;
729
+ hasCamera: boolean | null;
730
+ };
731
+ }
732
+ export interface MetaInfo {
733
+ timezone: string | null;
734
+ referrer: string;
735
+ appType: string;
736
+ }
737
+ export interface DeviceInformationResult {
738
+ device: DeviceInfo;
739
+ browser: BrowserInfo;
740
+ permissions: PermissionsInfo;
741
+ meta: MetaInfo;
742
+ serverDerived: any;
743
+ }
744
+ /**
745
+ *
746
+ * The deviceInformation function collects comprehensive device and browser
747
+ *
748
+ * information including device specifications, browser details, permissions, and
749
+ *
750
+ * network information. This function is useful for analytics, debugging, feature
751
+ *
752
+ * detection, and providing device-specific experiences.
753
+ *
754
+ * A Promise that resolves to an object containing:
755
+ *
756
+ * @example
757
+ *
758
+ * const deviceInfo = await deviceInformation();
759
+ *
760
+ * console.log(deviceInfo.device.type); // "desktop", "mobile", or "tablet"
761
+ * console.log(deviceInfo.browser.name); // "Chrome", "Firefox", "Safari", etc.
762
+ * console.log(deviceInfo.permissions.microphone); // "granted", "denied", "prompt", or "unsupported"
763
+ * @endexample
764
+ * @example
765
+ *
766
+ * {
767
+ * device: {
768
+ * type: "desktop",
769
+ * os: "macOS",
770
+ * osVersion: "13.0",
771
+ * screen: {
772
+ * width: 1920,
773
+ * height: 1080,
774
+ * pixelRatio: 2,
775
+ * colorDepth: 24
776
+ * },
777
+ * viewport: {
778
+ * width: 1440,
779
+ * height: 900
780
+ * },
781
+ * memoryGB: 16
782
+ * },
783
+ * browser: {
784
+ * name: "Chrome",
785
+ * version: "119.0.0.0",
786
+ * userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
787
+ * javaScriptEnabled: true,
788
+ * cookiesEnabled: true,
789
+ * websockets: true,
790
+ * webgl: true,
791
+ * doNotTrack: null,
792
+ * mimeTypes: ["text/html", "text/plain", ...],
793
+ * network: {
794
+ * effectiveType: "4g",
795
+ * downlink: 10,
796
+ * rtt: 50,
797
+ * saveData: false
798
+ * }
799
+ * },
800
+ * permissions: {
801
+ * microphone: "prompt",
802
+ * camera: "denied",
803
+ * geolocation: "granted",
804
+ * notifications: "unsupported",
805
+ * media: {
806
+ * hasMic: true,
807
+ * hasCamera: true
808
+ * }
809
+ * },
810
+ * meta: {
811
+ * timezone: "America/New_York",
812
+ * referrer: "https://example.com"
813
+ * },
814
+ * serverDerived: {
815
+ * country: "US",
816
+ * region: "California",
817
+ * city: "San Francisco"
818
+ * }
819
+ * }
820
+ * @endexample
821
+ */
822
+ export function deviceInformation(options?: DeviceInformationOptions): Promise<DeviceInformationResult>;
823
+ export function getAppType(): "extension" | "desktop" | "mobile" | "web";