@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.
- package/dist/cjs/react-utils/index.js +1 -0
- package/dist/cjs/react-utils/index.js.map +1 -1
- package/dist/cjs/react-utils/useLocalStorage/index.js +1 -0
- package/dist/cjs/react-utils/useLocalStorage/index.js.map +1 -1
- package/dist/cjs/react-utils/useLocalStorage/useLocalStorage.js +2 -1
- package/dist/cjs/react-utils/useLocalStorage/useLocalStorage.js.map +1 -1
- package/dist/cjs/utils/deviceInformation.js +255 -0
- package/dist/cjs/utils/deviceInformation.js.map +1 -0
- package/dist/cjs/utils/index.js +3 -0
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/react-utils/index.js +1 -0
- package/dist/react-utils/index.js.map +1 -1
- package/dist/react-utils/useLocalStorage/index.js +1 -0
- package/dist/react-utils/useLocalStorage/index.js.map +1 -1
- package/dist/react-utils/useLocalStorage/useLocalStorage.js +2 -1
- package/dist/react-utils/useLocalStorage/useLocalStorage.js.map +1 -1
- package/dist/utils/deviceInformation.js +253 -0
- package/dist/utils/deviceInformation.js.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +3 -1
- package/utils.d.ts +141 -1
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -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":"
|
|
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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"}
|
package/dist/cjs/utils/index.js
CHANGED
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -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":"
|
|
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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"}
|
package/dist/utils/index.js
CHANGED
|
@@ -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
|
package/dist/utils/index.js.map
CHANGED
|
@@ -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.
|
|
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";
|