@leanbase.com/js 0.1.3 → 0.2.0-alpha.0
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/LICENSE +37 -0
- package/dist/autocapture-utils.d.ts +17 -0
- package/dist/autocapture.d.ts +35 -0
- package/dist/config.d.ts +5 -0
- package/dist/constants.d.ts +54 -0
- package/dist/entrypoints/main.cjs.d.ts +4 -0
- package/dist/entrypoints/module.es.d.ts +4 -0
- package/dist/extensions/rageclick.d.ts +9 -0
- package/dist/iife.d.ts +19 -0
- package/dist/index.d.ts +2 -779
- package/dist/leanbase-logger.d.ts +6 -0
- package/dist/leanbase-persistence.d.ts +64 -0
- package/dist/leanbase.d.ts +49 -0
- package/dist/leanbase.iife.js +1 -4747
- package/dist/leanbase.iife.js.map +1 -1
- package/dist/main.js +2 -0
- package/dist/main.js.map +1 -0
- package/dist/module.d.ts +780 -0
- package/dist/module.js +2 -0
- package/dist/module.js.map +1 -0
- package/dist/page-view.d.ts +29 -0
- package/dist/scroll-manager.d.ts +21 -0
- package/dist/session-props.d.ts +32 -0
- package/dist/sessionid.d.ts +50 -0
- package/dist/storage.d.ts +24 -0
- package/{src/types.ts → dist/types.d.ts} +145 -235
- package/dist/utils/blocked-uas.d.ts +17 -0
- package/dist/utils/element-utils.d.ts +5 -0
- package/dist/utils/event-utils.d.ts +22 -0
- package/dist/utils/index.d.ts +44 -0
- package/dist/utils/request-utils.d.ts +12 -0
- package/dist/utils/simple-event-emitter.d.ts +6 -0
- package/dist/utils/user-agent-utils.d.ts +18 -0
- package/dist/uuidv7.d.ts +43 -0
- package/dist/version.d.ts +1 -0
- package/lib/autocapture-utils.d.ts +17 -0
- package/{src/autocapture-utils.ts → lib/autocapture-utils.js} +196 -280
- package/lib/autocapture-utils.js.map +1 -0
- package/lib/autocapture.d.ts +35 -0
- package/lib/autocapture.js +311 -0
- package/lib/autocapture.js.map +1 -0
- package/lib/config.d.ts +5 -0
- package/lib/config.js +7 -0
- package/lib/config.js.map +1 -0
- package/lib/constants.d.ts +54 -0
- package/{src/constants.ts → lib/constants.js} +50 -57
- package/lib/constants.js.map +1 -0
- package/lib/entrypoints/main.cjs.d.ts +4 -0
- package/lib/entrypoints/main.cjs.js +3 -0
- package/lib/entrypoints/main.cjs.js.map +1 -0
- package/lib/entrypoints/module.es.d.ts +4 -0
- package/lib/entrypoints/module.es.js +3 -0
- package/lib/entrypoints/module.es.js.map +1 -0
- package/lib/extensions/rageclick.d.ts +9 -0
- package/lib/extensions/rageclick.js +27 -0
- package/lib/extensions/rageclick.js.map +1 -0
- package/lib/iife.d.ts +19 -0
- package/lib/iife.js +67 -0
- package/lib/iife.js.map +1 -0
- package/{src/index.ts → lib/index.d.ts} +2 -2
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -0
- package/lib/leanbase-logger.d.ts +6 -0
- package/lib/leanbase-logger.js +25 -0
- package/lib/leanbase-logger.js.map +1 -0
- package/lib/leanbase-persistence.d.ts +64 -0
- package/lib/leanbase-persistence.js +287 -0
- package/lib/leanbase-persistence.js.map +1 -0
- package/lib/leanbase.d.ts +49 -0
- package/lib/leanbase.js +294 -0
- package/lib/leanbase.js.map +1 -0
- package/lib/page-view.d.ts +29 -0
- package/lib/page-view.js +81 -0
- package/lib/page-view.js.map +1 -0
- package/lib/scroll-manager.d.ts +21 -0
- package/lib/scroll-manager.js +79 -0
- package/lib/scroll-manager.js.map +1 -0
- package/lib/session-props.d.ts +32 -0
- package/lib/session-props.js +73 -0
- package/lib/session-props.js.map +1 -0
- package/lib/sessionid.d.ts +50 -0
- package/{src/sessionid.ts → lib/sessionid.js} +128 -204
- package/lib/sessionid.js.map +1 -0
- package/lib/storage.d.ts +24 -0
- package/{src/storage.ts → lib/storage.js} +182 -225
- package/lib/storage.js.map +1 -0
- package/lib/types.d.ts +544 -0
- package/lib/types.js +7 -0
- package/lib/types.js.map +1 -0
- package/lib/utils/blocked-uas.d.ts +17 -0
- package/{src/utils/blocked-uas.ts → lib/utils/blocked-uas.js} +19 -48
- package/lib/utils/blocked-uas.js.map +1 -0
- package/lib/utils/element-utils.d.ts +5 -0
- package/{src/utils/element-utils.ts → lib/utils/element-utils.js} +13 -17
- package/lib/utils/element-utils.js.map +1 -0
- package/lib/utils/event-utils.d.ts +22 -0
- package/lib/utils/event-utils.js +258 -0
- package/lib/utils/event-utils.js.map +1 -0
- package/lib/utils/index.d.ts +44 -0
- package/lib/utils/index.js +183 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/request-utils.d.ts +12 -0
- package/lib/utils/request-utils.js +107 -0
- package/lib/utils/request-utils.js.map +1 -0
- package/lib/utils/simple-event-emitter.d.ts +6 -0
- package/lib/utils/simple-event-emitter.js +24 -0
- package/lib/utils/simple-event-emitter.js.map +1 -0
- package/lib/utils/user-agent-utils.d.ts +18 -0
- package/lib/utils/user-agent-utils.js +369 -0
- package/lib/utils/user-agent-utils.js.map +1 -0
- package/lib/uuidv7.d.ts +43 -0
- package/{src/uuidv7.ts → lib/uuidv7.js} +103 -131
- package/lib/uuidv7.js.map +1 -0
- package/lib/version.d.ts +1 -0
- package/lib/version.js +2 -0
- package/lib/version.js.map +1 -0
- package/package.json +56 -45
- package/dist/index.cjs +0 -3034
- package/dist/index.cjs.map +0 -1
- package/dist/index.mjs +0 -3032
- package/dist/index.mjs.map +0 -1
- package/src/autocapture.ts +0 -415
- package/src/config.ts +0 -8
- package/src/extensions/rageclick.ts +0 -34
- package/src/iife.ts +0 -87
- package/src/leanbase-logger.ts +0 -26
- package/src/leanbase-persistence.ts +0 -374
- package/src/leanbase.ts +0 -424
- package/src/page-view.ts +0 -124
- package/src/scroll-manager.ts +0 -103
- package/src/session-props.ts +0 -114
- package/src/utils/event-utils.ts +0 -304
- package/src/utils/index.ts +0 -222
- package/src/utils/request-utils.ts +0 -128
- package/src/utils/simple-event-emitter.ts +0 -27
- package/src/utils/user-agent-utils.ts +0 -357
- package/src/version.ts +0 -1
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
import { isFunction, isUndefined, includes } from '@posthog/core';
|
|
2
|
+
/**
|
|
3
|
+
* this device detection code is (at time of writing) about 3% of the size of the entire library
|
|
4
|
+
* this is mostly because the identifiers user in regexes and results can't be minified away since
|
|
5
|
+
* they have meaning
|
|
6
|
+
*
|
|
7
|
+
* so, there are some pre-uglifying choices in the code to help reduce the size
|
|
8
|
+
* e.g. many repeated strings are stored as variables and then old-fashioned concatenated together
|
|
9
|
+
*
|
|
10
|
+
* TL;DR here be dragons
|
|
11
|
+
*/
|
|
12
|
+
const FACEBOOK = 'Facebook';
|
|
13
|
+
const MOBILE = 'Mobile';
|
|
14
|
+
const IOS = 'iOS';
|
|
15
|
+
const ANDROID = 'Android';
|
|
16
|
+
const TABLET = 'Tablet';
|
|
17
|
+
const ANDROID_TABLET = ANDROID + ' ' + TABLET;
|
|
18
|
+
const IPAD = 'iPad';
|
|
19
|
+
const APPLE = 'Apple';
|
|
20
|
+
const APPLE_WATCH = APPLE + ' Watch';
|
|
21
|
+
const SAFARI = 'Safari';
|
|
22
|
+
const BLACKBERRY = 'BlackBerry';
|
|
23
|
+
const SAMSUNG = 'Samsung';
|
|
24
|
+
const SAMSUNG_BROWSER = SAMSUNG + 'Browser';
|
|
25
|
+
const SAMSUNG_INTERNET = SAMSUNG + ' Internet';
|
|
26
|
+
const CHROME = 'Chrome';
|
|
27
|
+
const CHROME_OS = CHROME + ' OS';
|
|
28
|
+
const CHROME_IOS = CHROME + ' ' + IOS;
|
|
29
|
+
const INTERNET_EXPLORER = 'Internet Explorer';
|
|
30
|
+
const INTERNET_EXPLORER_MOBILE = INTERNET_EXPLORER + ' ' + MOBILE;
|
|
31
|
+
const OPERA = 'Opera';
|
|
32
|
+
const OPERA_MINI = OPERA + ' Mini';
|
|
33
|
+
const EDGE = 'Edge';
|
|
34
|
+
const MICROSOFT_EDGE = 'Microsoft ' + EDGE;
|
|
35
|
+
const FIREFOX = 'Firefox';
|
|
36
|
+
const FIREFOX_IOS = FIREFOX + ' ' + IOS;
|
|
37
|
+
const NINTENDO = 'Nintendo';
|
|
38
|
+
const PLAYSTATION = 'PlayStation';
|
|
39
|
+
const XBOX = 'Xbox';
|
|
40
|
+
const ANDROID_MOBILE = ANDROID + ' ' + MOBILE;
|
|
41
|
+
const MOBILE_SAFARI = MOBILE + ' ' + SAFARI;
|
|
42
|
+
const WINDOWS = 'Windows';
|
|
43
|
+
const WINDOWS_PHONE = WINDOWS + ' Phone';
|
|
44
|
+
const NOKIA = 'Nokia';
|
|
45
|
+
const OUYA = 'Ouya';
|
|
46
|
+
const GENERIC = 'Generic';
|
|
47
|
+
const GENERIC_MOBILE = GENERIC + ' ' + MOBILE.toLowerCase();
|
|
48
|
+
const GENERIC_TABLET = GENERIC + ' ' + TABLET.toLowerCase();
|
|
49
|
+
const KONQUEROR = 'Konqueror';
|
|
50
|
+
const BROWSER_VERSION_REGEX_SUFFIX = '(\\d+(\\.\\d+)?)';
|
|
51
|
+
const DEFAULT_BROWSER_VERSION_REGEX = new RegExp('Version/' + BROWSER_VERSION_REGEX_SUFFIX);
|
|
52
|
+
const XBOX_REGEX = new RegExp(XBOX, 'i');
|
|
53
|
+
const PLAYSTATION_REGEX = new RegExp(PLAYSTATION + ' \\w+', 'i');
|
|
54
|
+
const NINTENDO_REGEX = new RegExp(NINTENDO + ' \\w+', 'i');
|
|
55
|
+
const BLACKBERRY_REGEX = new RegExp(BLACKBERRY + '|PlayBook|BB10', 'i');
|
|
56
|
+
const windowsVersionMap = {
|
|
57
|
+
'NT3.51': 'NT 3.11',
|
|
58
|
+
'NT4.0': 'NT 4.0',
|
|
59
|
+
'5.0': '2000',
|
|
60
|
+
'5.1': 'XP',
|
|
61
|
+
'5.2': 'XP',
|
|
62
|
+
'6.0': 'Vista',
|
|
63
|
+
'6.1': '7',
|
|
64
|
+
'6.2': '8',
|
|
65
|
+
'6.3': '8.1',
|
|
66
|
+
'6.4': '10',
|
|
67
|
+
'10.0': '10',
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Safari detection turns out to be complicated. For e.g. https://stackoverflow.com/a/29696509
|
|
71
|
+
* We can be slightly loose because some options have been ruled out (e.g. firefox on iOS)
|
|
72
|
+
* before this check is made
|
|
73
|
+
*/
|
|
74
|
+
function isSafari(userAgent) {
|
|
75
|
+
return includes(userAgent, SAFARI) && !includes(userAgent, CHROME) && !includes(userAgent, ANDROID);
|
|
76
|
+
}
|
|
77
|
+
const safariCheck = (ua, vendor) => (vendor && includes(vendor, APPLE)) || isSafari(ua);
|
|
78
|
+
/**
|
|
79
|
+
* This function detects which browser is running this script.
|
|
80
|
+
* The order of the checks are important since many user agents
|
|
81
|
+
* include keywords used in later checks.
|
|
82
|
+
*/
|
|
83
|
+
export const detectBrowser = function (user_agent, vendor) {
|
|
84
|
+
vendor = vendor || ''; // vendor is undefined for at least IE9
|
|
85
|
+
if (includes(user_agent, ' OPR/') && includes(user_agent, 'Mini')) {
|
|
86
|
+
return OPERA_MINI;
|
|
87
|
+
}
|
|
88
|
+
else if (includes(user_agent, ' OPR/')) {
|
|
89
|
+
return OPERA;
|
|
90
|
+
}
|
|
91
|
+
else if (BLACKBERRY_REGEX.test(user_agent)) {
|
|
92
|
+
return BLACKBERRY;
|
|
93
|
+
}
|
|
94
|
+
else if (includes(user_agent, 'IE' + MOBILE) || includes(user_agent, 'WPDesktop')) {
|
|
95
|
+
return INTERNET_EXPLORER_MOBILE;
|
|
96
|
+
}
|
|
97
|
+
// https://developer.samsung.com/internet/user-agent-string-format
|
|
98
|
+
else if (includes(user_agent, SAMSUNG_BROWSER)) {
|
|
99
|
+
return SAMSUNG_INTERNET;
|
|
100
|
+
}
|
|
101
|
+
else if (includes(user_agent, EDGE) || includes(user_agent, 'Edg/')) {
|
|
102
|
+
return MICROSOFT_EDGE;
|
|
103
|
+
}
|
|
104
|
+
else if (includes(user_agent, 'FBIOS')) {
|
|
105
|
+
return FACEBOOK + ' ' + MOBILE;
|
|
106
|
+
}
|
|
107
|
+
else if (includes(user_agent, 'UCWEB') || includes(user_agent, 'UCBrowser')) {
|
|
108
|
+
return 'UC Browser';
|
|
109
|
+
}
|
|
110
|
+
else if (includes(user_agent, 'CriOS')) {
|
|
111
|
+
return CHROME_IOS; // why not just Chrome?
|
|
112
|
+
}
|
|
113
|
+
else if (includes(user_agent, 'CrMo')) {
|
|
114
|
+
return CHROME;
|
|
115
|
+
}
|
|
116
|
+
else if (includes(user_agent, CHROME)) {
|
|
117
|
+
return CHROME;
|
|
118
|
+
}
|
|
119
|
+
else if (includes(user_agent, ANDROID) && includes(user_agent, SAFARI)) {
|
|
120
|
+
return ANDROID_MOBILE;
|
|
121
|
+
}
|
|
122
|
+
else if (includes(user_agent, 'FxiOS')) {
|
|
123
|
+
return FIREFOX_IOS;
|
|
124
|
+
}
|
|
125
|
+
else if (includes(user_agent.toLowerCase(), KONQUEROR.toLowerCase())) {
|
|
126
|
+
return KONQUEROR;
|
|
127
|
+
}
|
|
128
|
+
else if (safariCheck(user_agent, vendor)) {
|
|
129
|
+
return includes(user_agent, MOBILE) ? MOBILE_SAFARI : SAFARI;
|
|
130
|
+
}
|
|
131
|
+
else if (includes(user_agent, FIREFOX)) {
|
|
132
|
+
return FIREFOX;
|
|
133
|
+
}
|
|
134
|
+
else if (includes(user_agent, 'MSIE') || includes(user_agent, 'Trident/')) {
|
|
135
|
+
return INTERNET_EXPLORER;
|
|
136
|
+
}
|
|
137
|
+
else if (includes(user_agent, 'Gecko')) {
|
|
138
|
+
return FIREFOX;
|
|
139
|
+
}
|
|
140
|
+
return '';
|
|
141
|
+
};
|
|
142
|
+
const versionRegexes = {
|
|
143
|
+
[INTERNET_EXPLORER_MOBILE]: [new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)],
|
|
144
|
+
[MICROSOFT_EDGE]: [new RegExp(EDGE + '?\\/' + BROWSER_VERSION_REGEX_SUFFIX)],
|
|
145
|
+
[CHROME]: [new RegExp('(' + CHROME + '|CrMo)\\/' + BROWSER_VERSION_REGEX_SUFFIX)],
|
|
146
|
+
[CHROME_IOS]: [new RegExp('CriOS\\/' + BROWSER_VERSION_REGEX_SUFFIX)],
|
|
147
|
+
'UC Browser': [new RegExp('(UCBrowser|UCWEB)\\/' + BROWSER_VERSION_REGEX_SUFFIX)],
|
|
148
|
+
[SAFARI]: [DEFAULT_BROWSER_VERSION_REGEX],
|
|
149
|
+
[MOBILE_SAFARI]: [DEFAULT_BROWSER_VERSION_REGEX],
|
|
150
|
+
[OPERA]: [new RegExp('(' + OPERA + '|OPR)\\/' + BROWSER_VERSION_REGEX_SUFFIX)],
|
|
151
|
+
[FIREFOX]: [new RegExp(FIREFOX + '\\/' + BROWSER_VERSION_REGEX_SUFFIX)],
|
|
152
|
+
[FIREFOX_IOS]: [new RegExp('FxiOS\\/' + BROWSER_VERSION_REGEX_SUFFIX)],
|
|
153
|
+
[KONQUEROR]: [new RegExp('Konqueror[:/]?' + BROWSER_VERSION_REGEX_SUFFIX, 'i')],
|
|
154
|
+
// not every blackberry user agent has the version after the name
|
|
155
|
+
[BLACKBERRY]: [new RegExp(BLACKBERRY + ' ' + BROWSER_VERSION_REGEX_SUFFIX), DEFAULT_BROWSER_VERSION_REGEX],
|
|
156
|
+
[ANDROID_MOBILE]: [new RegExp('android\\s' + BROWSER_VERSION_REGEX_SUFFIX, 'i')],
|
|
157
|
+
[SAMSUNG_INTERNET]: [new RegExp(SAMSUNG_BROWSER + '\\/' + BROWSER_VERSION_REGEX_SUFFIX)],
|
|
158
|
+
[INTERNET_EXPLORER]: [new RegExp('(rv:|MSIE )' + BROWSER_VERSION_REGEX_SUFFIX)],
|
|
159
|
+
Mozilla: [new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)],
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* This function detects which browser version is running this script,
|
|
163
|
+
* parsing major and minor version (e.g., 42.1). User agent strings from:
|
|
164
|
+
* http://www.useragentstring.com/pages/useragentstring.php
|
|
165
|
+
*
|
|
166
|
+
* `navigator.vendor` is passed in and used to help with detecting certain browsers
|
|
167
|
+
* NB `navigator.vendor` is deprecated and not present in every browser
|
|
168
|
+
*/
|
|
169
|
+
export const detectBrowserVersion = function (userAgent, vendor) {
|
|
170
|
+
const browser = detectBrowser(userAgent, vendor);
|
|
171
|
+
const regexes = versionRegexes[browser];
|
|
172
|
+
if (isUndefined(regexes)) {
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
for (let i = 0; i < regexes.length; i++) {
|
|
176
|
+
const regex = regexes[i];
|
|
177
|
+
const matches = userAgent.match(regex);
|
|
178
|
+
if (matches) {
|
|
179
|
+
return parseFloat(matches[matches.length - 2]);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return null;
|
|
183
|
+
};
|
|
184
|
+
// to avoid repeating regexes or calling them twice, we have an array of matches
|
|
185
|
+
// the first regex that matches uses its matcher function to return the result
|
|
186
|
+
const osMatchers = [
|
|
187
|
+
[
|
|
188
|
+
new RegExp(XBOX + '; ' + XBOX + ' (.*?)[);]', 'i'),
|
|
189
|
+
(match) => {
|
|
190
|
+
return [XBOX, (match && match[1]) || ''];
|
|
191
|
+
},
|
|
192
|
+
],
|
|
193
|
+
[new RegExp(NINTENDO, 'i'), [NINTENDO, '']],
|
|
194
|
+
[new RegExp(PLAYSTATION, 'i'), [PLAYSTATION, '']],
|
|
195
|
+
[BLACKBERRY_REGEX, [BLACKBERRY, '']],
|
|
196
|
+
[
|
|
197
|
+
new RegExp(WINDOWS, 'i'),
|
|
198
|
+
(_, user_agent) => {
|
|
199
|
+
if (/Phone/.test(user_agent) || /WPDesktop/.test(user_agent)) {
|
|
200
|
+
return [WINDOWS_PHONE, ''];
|
|
201
|
+
}
|
|
202
|
+
// not all JS versions support negative lookbehind, so we need two checks here
|
|
203
|
+
if (new RegExp(MOBILE).test(user_agent) && !/IEMobile\b/.test(user_agent)) {
|
|
204
|
+
return [WINDOWS + ' ' + MOBILE, ''];
|
|
205
|
+
}
|
|
206
|
+
const match = /Windows NT ([0-9.]+)/i.exec(user_agent);
|
|
207
|
+
if (match && match[1]) {
|
|
208
|
+
const version = match[1];
|
|
209
|
+
let osVersion = windowsVersionMap[version] || '';
|
|
210
|
+
if (/arm/i.test(user_agent)) {
|
|
211
|
+
osVersion = 'RT';
|
|
212
|
+
}
|
|
213
|
+
return [WINDOWS, osVersion];
|
|
214
|
+
}
|
|
215
|
+
return [WINDOWS, ''];
|
|
216
|
+
},
|
|
217
|
+
],
|
|
218
|
+
[
|
|
219
|
+
/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,
|
|
220
|
+
(match) => {
|
|
221
|
+
if (match && match[3]) {
|
|
222
|
+
const versionParts = [match[3], match[4], match[5] || '0'];
|
|
223
|
+
return [IOS, versionParts.join('.')];
|
|
224
|
+
}
|
|
225
|
+
return [IOS, ''];
|
|
226
|
+
},
|
|
227
|
+
],
|
|
228
|
+
[
|
|
229
|
+
/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,
|
|
230
|
+
(match) => {
|
|
231
|
+
// e.g. Watch4,3/5.3.8 (16U680)
|
|
232
|
+
let version = '';
|
|
233
|
+
if (match && match.length >= 3) {
|
|
234
|
+
version = isUndefined(match[2]) ? match[3] : match[2];
|
|
235
|
+
}
|
|
236
|
+
return ['watchOS', version];
|
|
237
|
+
},
|
|
238
|
+
],
|
|
239
|
+
[
|
|
240
|
+
new RegExp('(' + ANDROID + ' (\\d+)\\.(\\d+)\\.?(\\d+)?|' + ANDROID + ')', 'i'),
|
|
241
|
+
(match) => {
|
|
242
|
+
if (match && match[2]) {
|
|
243
|
+
const versionParts = [match[2], match[3], match[4] || '0'];
|
|
244
|
+
return [ANDROID, versionParts.join('.')];
|
|
245
|
+
}
|
|
246
|
+
return [ANDROID, ''];
|
|
247
|
+
},
|
|
248
|
+
],
|
|
249
|
+
[
|
|
250
|
+
/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,
|
|
251
|
+
(match) => {
|
|
252
|
+
const result = ['Mac OS X', ''];
|
|
253
|
+
if (match && match[1]) {
|
|
254
|
+
const versionParts = [match[1], match[2], match[3] || '0'];
|
|
255
|
+
result[1] = versionParts.join('.');
|
|
256
|
+
}
|
|
257
|
+
return result;
|
|
258
|
+
},
|
|
259
|
+
],
|
|
260
|
+
[
|
|
261
|
+
/Mac/i,
|
|
262
|
+
// mop up a few non-standard UAs that should match mac
|
|
263
|
+
['Mac OS X', ''],
|
|
264
|
+
],
|
|
265
|
+
[/CrOS/, [CHROME_OS, '']],
|
|
266
|
+
[/Linux|debian/i, ['Linux', '']],
|
|
267
|
+
];
|
|
268
|
+
export const detectOS = function (user_agent) {
|
|
269
|
+
for (let i = 0; i < osMatchers.length; i++) {
|
|
270
|
+
const [rgex, resultOrFn] = osMatchers[i];
|
|
271
|
+
const match = rgex.exec(user_agent);
|
|
272
|
+
const result = match && (isFunction(resultOrFn) ? resultOrFn(match, user_agent) : resultOrFn);
|
|
273
|
+
if (result) {
|
|
274
|
+
return result;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return ['', ''];
|
|
278
|
+
};
|
|
279
|
+
export const detectDevice = function (user_agent) {
|
|
280
|
+
if (NINTENDO_REGEX.test(user_agent)) {
|
|
281
|
+
return NINTENDO;
|
|
282
|
+
}
|
|
283
|
+
else if (PLAYSTATION_REGEX.test(user_agent)) {
|
|
284
|
+
return PLAYSTATION;
|
|
285
|
+
}
|
|
286
|
+
else if (XBOX_REGEX.test(user_agent)) {
|
|
287
|
+
return XBOX;
|
|
288
|
+
}
|
|
289
|
+
else if (new RegExp(OUYA, 'i').test(user_agent)) {
|
|
290
|
+
return OUYA;
|
|
291
|
+
}
|
|
292
|
+
else if (new RegExp('(' + WINDOWS_PHONE + '|WPDesktop)', 'i').test(user_agent)) {
|
|
293
|
+
return WINDOWS_PHONE;
|
|
294
|
+
}
|
|
295
|
+
else if (/iPad/.test(user_agent)) {
|
|
296
|
+
return IPAD;
|
|
297
|
+
}
|
|
298
|
+
else if (/iPod/.test(user_agent)) {
|
|
299
|
+
return 'iPod Touch';
|
|
300
|
+
}
|
|
301
|
+
else if (/iPhone/.test(user_agent)) {
|
|
302
|
+
return 'iPhone';
|
|
303
|
+
}
|
|
304
|
+
else if (/(watch)(?: ?os[,/]|\d,\d\/)[\d.]+/i.test(user_agent)) {
|
|
305
|
+
return APPLE_WATCH;
|
|
306
|
+
}
|
|
307
|
+
else if (BLACKBERRY_REGEX.test(user_agent)) {
|
|
308
|
+
return BLACKBERRY;
|
|
309
|
+
}
|
|
310
|
+
else if (/(kobo)\s(ereader|touch)/i.test(user_agent)) {
|
|
311
|
+
return 'Kobo';
|
|
312
|
+
}
|
|
313
|
+
else if (new RegExp(NOKIA, 'i').test(user_agent)) {
|
|
314
|
+
return NOKIA;
|
|
315
|
+
}
|
|
316
|
+
else if (
|
|
317
|
+
// Kindle Fire without Silk / Echo Show
|
|
318
|
+
/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i.test(user_agent) ||
|
|
319
|
+
// Kindle Fire HD
|
|
320
|
+
/(kf[a-z]+)( bui|\)).+silk\//i.test(user_agent)) {
|
|
321
|
+
return 'Kindle Fire';
|
|
322
|
+
}
|
|
323
|
+
else if (/(Android|ZTE)/i.test(user_agent)) {
|
|
324
|
+
if (!new RegExp(MOBILE).test(user_agent) ||
|
|
325
|
+
/(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(user_agent)) {
|
|
326
|
+
if ((/pixel[\daxl ]{1,6}/i.test(user_agent) && !/pixel c/i.test(user_agent)) ||
|
|
327
|
+
/(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(user_agent) ||
|
|
328
|
+
(/lmy47v/i.test(user_agent) && !/QTAQZ3/i.test(user_agent))) {
|
|
329
|
+
return ANDROID;
|
|
330
|
+
}
|
|
331
|
+
return ANDROID_TABLET;
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
return ANDROID;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
else if (new RegExp('(pda|' + MOBILE + ')', 'i').test(user_agent)) {
|
|
338
|
+
return GENERIC_MOBILE;
|
|
339
|
+
}
|
|
340
|
+
else if (new RegExp(TABLET, 'i').test(user_agent) && !new RegExp(TABLET + ' pc', 'i').test(user_agent)) {
|
|
341
|
+
return GENERIC_TABLET;
|
|
342
|
+
}
|
|
343
|
+
else {
|
|
344
|
+
return '';
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
export const detectDeviceType = function (user_agent) {
|
|
348
|
+
const device = detectDevice(user_agent);
|
|
349
|
+
if (device === IPAD ||
|
|
350
|
+
device === ANDROID_TABLET ||
|
|
351
|
+
device === 'Kobo' ||
|
|
352
|
+
device === 'Kindle Fire' ||
|
|
353
|
+
device === GENERIC_TABLET) {
|
|
354
|
+
return TABLET;
|
|
355
|
+
}
|
|
356
|
+
else if (device === NINTENDO || device === XBOX || device === PLAYSTATION || device === OUYA) {
|
|
357
|
+
return 'Console';
|
|
358
|
+
}
|
|
359
|
+
else if (device === APPLE_WATCH) {
|
|
360
|
+
return 'Wearable';
|
|
361
|
+
}
|
|
362
|
+
else if (device) {
|
|
363
|
+
return MOBILE;
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
return 'Desktop';
|
|
367
|
+
}
|
|
368
|
+
};
|
|
369
|
+
//# sourceMappingURL=user-agent-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-agent-utils.js","sourceRoot":"","sources":["../../src/utils/user-agent-utils.ts"],"names":[],"mappings":"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"}
|
package/lib/uuidv7.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* uuidv7: An experimental implementation of the proposed UUID Version 7
|
|
3
|
+
*
|
|
4
|
+
* @license Apache-2.0
|
|
5
|
+
* @copyright 2021-2023 LiosK
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*
|
|
8
|
+
* from https://github.com/LiosK/uuidv7/blob/e501462ea3d23241de13192ceae726956f9b3b7d/src/index.ts
|
|
9
|
+
*/
|
|
10
|
+
/** Represents a UUID as a 16-byte byte array. */
|
|
11
|
+
export declare class UUID {
|
|
12
|
+
readonly bytes: Readonly<Uint8Array>;
|
|
13
|
+
/** @param bytes - The 16-byte byte array representation. */
|
|
14
|
+
constructor(bytes: Readonly<Uint8Array>);
|
|
15
|
+
/**
|
|
16
|
+
* Builds a byte array from UUIDv7 field values.
|
|
17
|
+
*
|
|
18
|
+
* @param unixTsMs - A 48-bit `unix_ts_ms` field value.
|
|
19
|
+
* @param randA - A 12-bit `rand_a` field value.
|
|
20
|
+
* @param randBHi - The higher 30 bits of 62-bit `rand_b` field value.
|
|
21
|
+
* @param randBLo - The lower 32 bits of 62-bit `rand_b` field value.
|
|
22
|
+
*/
|
|
23
|
+
static fromFieldsV7(unixTsMs: number, randA: number, randBHi: number, randBLo: number): UUID;
|
|
24
|
+
/** @returns The 8-4-4-4-12 canonical hexadecimal string representation. */
|
|
25
|
+
toString(): string;
|
|
26
|
+
/** Creates an object from `this`. */
|
|
27
|
+
clone(): UUID;
|
|
28
|
+
/** Returns true if `this` is equivalent to `other`. */
|
|
29
|
+
equals(other: UUID): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Returns a negative integer, zero, or positive integer if `this` is less
|
|
32
|
+
* than, equal to, or greater than `other`, respectively.
|
|
33
|
+
*/
|
|
34
|
+
compareTo(other: UUID): number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Generates a UUIDv7 string.
|
|
38
|
+
*
|
|
39
|
+
* @returns The 8-4-4-4-12 canonical hexadecimal string representation
|
|
40
|
+
* ("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx").
|
|
41
|
+
*/
|
|
42
|
+
export declare const uuidv7: () => string;
|
|
43
|
+
export declare const uuid7ToTimestampMs: (uuid: string) => number;
|