diginext-utils 1.2.4 → 2.0.1
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/Checker.js +7 -8
- package/dist/Checker.mjs +25 -0
- package/dist/EventDispatcher.js +20 -19
- package/dist/EventDispatcher.mjs +51 -0
- package/dist/FileUpload.js +24 -29
- package/dist/FileUpload.mjs +60 -0
- package/dist/Slug.js +286 -340
- package/dist/Slug.mjs +327 -0
- package/dist/Timer.js +8 -11
- package/dist/Timer.mjs +2 -0
- package/dist/Validation.js +11 -19
- package/dist/Validation.mjs +33 -0
- package/dist/array.js +100 -203
- package/dist/array.mjs +3 -0
- package/dist/backend/file/createDir.js +13 -13
- package/dist/backend/file/createDir.mjs +13 -0
- package/dist/backend/file/fileMove.js +14 -14
- package/dist/backend/file/fileMove.mjs +29 -0
- package/dist/backend/file/findFilesByExt.js +22 -22
- package/dist/backend/file/findFilesByExt.mjs +40 -0
- package/dist/chunk-5AL36RZR.mjs +47 -0
- package/dist/chunk-7IYY7BKN.mjs +136 -0
- package/dist/chunk-ACLBWYEO.mjs +85 -0
- package/dist/chunk-AHFJBIQJ.mjs +9 -0
- package/dist/chunk-AKU6F3WT.mjs +9 -0
- package/dist/chunk-FOWYH6LL.mjs +32 -0
- package/dist/chunk-FTE6FZSH.mjs +17 -0
- package/dist/chunk-JKYSZLBF.mjs +27 -0
- package/dist/chunk-LXQIKFED.mjs +13 -0
- package/dist/chunk-Q5R25OIS.mjs +185 -0
- package/dist/chunk-R2BH5I6O.mjs +9 -0
- package/dist/chunk-UKRVCU5M.mjs +166 -0
- package/dist/chunk-VFKAZAWF.mjs +40 -0
- package/dist/chunk-VZGV2BTL.mjs +27 -0
- package/dist/chunk-Y4ZTQWPA.mjs +68 -0
- package/dist/color.js +44 -61
- package/dist/color.mjs +62 -0
- package/dist/console/enableConsole.js +14 -11
- package/dist/console/enableConsole.mjs +2 -0
- package/dist/console/index.js +14 -11
- package/dist/console/index.mjs +2 -0
- package/dist/device/browser.js +29 -27
- package/dist/device/browser.mjs +2 -0
- package/dist/device/camera.js +65 -125
- package/dist/device/camera.mjs +3 -0
- package/dist/device.js +76 -181
- package/dist/device.mjs +2 -0
- package/dist/index.js +879 -135
- package/dist/index.mjs +14 -0
- package/dist/math/diffDate.js +8 -15
- package/dist/math/diffDate.mjs +10 -0
- package/dist/math/positiveNumber.js +24 -10
- package/dist/math/positiveNumber.mjs +16 -0
- package/dist/math.js +27 -217
- package/dist/math.mjs +2 -0
- package/dist/object.js +33 -36
- package/dist/object.mjs +2 -0
- package/dist/permission/requestCamera.js +14 -37
- package/dist/permission/requestCamera.mjs +2 -0
- package/dist/permission/requestDeviceOrientationControl.js +161 -20
- package/dist/permission/requestDeviceOrientationControl.mjs +3 -0
- package/dist/string/formatNumber.js +27 -18
- package/dist/string/formatNumber.mjs +10 -0
- package/dist/string/generatePassword.js +25 -23
- package/dist/string/generatePassword.mjs +16 -0
- package/dist/string/generateUUID.js +11 -17
- package/dist/string/generateUUID.mjs +14 -0
- package/dist/string/name/en.js +6 -14
- package/dist/string/name/en.mjs +17 -0
- package/dist/string/name/vi.js +29 -22
- package/dist/string/name/vi.mjs +20 -0
- package/dist/string/random.js +16 -30
- package/dist/string/random.mjs +2 -0
- package/dist/string/trimNull.js +14 -14
- package/dist/string/trimNull.mjs +14 -0
- package/dist/string/url.js +45 -74
- package/dist/string/url.mjs +3 -0
- package/dist/string.js +43 -394
- package/dist/string.mjs +3 -0
- package/package.json +23 -28
- package/dist/backend/zip/extractZip.js +0 -59
package/dist/device/camera.js
CHANGED
|
@@ -1,106 +1,81 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
function
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
// src/permission/requestCamera.ts
|
|
6
|
+
var requestCamera = ({ audio = true, video = true }) => {
|
|
7
|
+
if (typeof window == "undefined")
|
|
8
|
+
return false;
|
|
9
|
+
return new Promise((resolve, reject) => {
|
|
10
|
+
if (navigator.mediaDevices.getUserMedia === void 0) {
|
|
11
|
+
navigator.mediaDevices.getUserMedia = function(constraints) {
|
|
12
|
+
var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
|
|
13
|
+
if (!getUserMedia) {
|
|
14
|
+
return Promise.reject(new Error("getUserMedia is not implemented in this browser"));
|
|
15
|
+
}
|
|
16
|
+
return new Promise(function(resolve2, reject2) {
|
|
17
|
+
getUserMedia.call(navigator, constraints, resolve2, reject2);
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
navigator.mediaDevices.getUserMedia({ audio, video }).then(function(stream) {
|
|
22
|
+
resolve(true);
|
|
23
|
+
}).catch(function(err) {
|
|
24
|
+
console.log(err.name + ": " + err.message);
|
|
25
|
+
resolve(false);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
var requestCamera_default = requestCamera;
|
|
30
|
+
|
|
31
|
+
// src/device/camera.ts
|
|
32
|
+
function getWebcam({
|
|
33
|
+
container,
|
|
34
|
+
facingMode = "environment",
|
|
35
|
+
audio = false
|
|
36
|
+
}) {
|
|
37
|
+
if (typeof window == "undefined")
|
|
38
|
+
return;
|
|
31
39
|
container = container || document.body;
|
|
32
40
|
return new Promise(async (resolve, reject) => {
|
|
33
41
|
const video = document.createElement("video");
|
|
34
42
|
video.style.position = "absolute";
|
|
35
|
-
video.style.top = 0;
|
|
36
|
-
video.style.left = 0;
|
|
43
|
+
video.style.top = "0";
|
|
44
|
+
video.style.left = "0";
|
|
37
45
|
video.style.width = "100%";
|
|
38
46
|
video.style.height = "100%";
|
|
39
47
|
container.append(video);
|
|
40
48
|
let inputCameras = [];
|
|
41
49
|
let currentCamera;
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* @type {MediaStreamConstraints}
|
|
45
|
-
*/
|
|
46
50
|
const requestedMediaConstraints = {
|
|
47
51
|
video: {
|
|
48
|
-
facingMode: {
|
|
49
|
-
exact: facingMode
|
|
50
|
-
}
|
|
52
|
+
facingMode: { exact: facingMode }
|
|
51
53
|
},
|
|
52
54
|
audio
|
|
53
55
|
};
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* @type {MediaStream}
|
|
57
|
-
*/
|
|
58
|
-
let stream;
|
|
59
|
-
let isAllowed = false;
|
|
60
56
|
console.log("[Camera.js] Requesting:", requestedMediaConstraints);
|
|
61
|
-
const res = await (
|
|
62
|
-
audio
|
|
63
|
-
});
|
|
57
|
+
const res = await requestCamera_default({ audio });
|
|
64
58
|
if (!res) {
|
|
65
|
-
setTimeout(function
|
|
66
|
-
handleError({
|
|
67
|
-
name: "Error",
|
|
68
|
-
message: "NotSupported"
|
|
69
|
-
});
|
|
59
|
+
setTimeout(function() {
|
|
60
|
+
handleError({ name: "Error", message: "NotSupported" });
|
|
70
61
|
}, 50);
|
|
71
62
|
}
|
|
72
|
-
|
|
73
|
-
// start requesting media permissions:
|
|
74
|
-
|
|
75
|
-
// console.log("[Camera.js] Requesting:", requestedMediaConstraints);
|
|
76
|
-
|
|
77
|
-
// if (navigator.mediaDevices.enumerateDevices === undefined) {
|
|
78
|
-
// setTimeout(function () {
|
|
79
|
-
// handleError({ name: "Error", message: "NotSupported" });
|
|
80
|
-
// }, 50);
|
|
81
|
-
// } else {
|
|
82
63
|
navigator.mediaDevices.enumerateDevices().then(parseDevices).catch(handleError);
|
|
83
|
-
// }
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* @param {MediaDeviceInfo[]} devices
|
|
87
|
-
*/
|
|
88
64
|
function parseDevices(devices) {
|
|
89
65
|
inputCameras = [];
|
|
90
66
|
let backCameras = [];
|
|
91
|
-
devices.forEach(function
|
|
67
|
+
devices.forEach(function(device) {
|
|
92
68
|
if (device.kind == "videoinput" && typeof device.deviceId != "undefined" && device.deviceId != "") {
|
|
93
69
|
inputCameras.push(device);
|
|
94
70
|
}
|
|
95
71
|
});
|
|
96
|
-
// //alert (JSON.stringify (devices));
|
|
97
72
|
console.log("[Camera.js] inputCameras:", inputCameras);
|
|
98
73
|
if (inputCameras.length > 0) {
|
|
99
74
|
let cams = "";
|
|
100
75
|
let backCamera;
|
|
101
76
|
inputCameras.map((cam, index) => {
|
|
102
|
-
cams +=
|
|
103
|
-
|
|
77
|
+
cams += `[${cam.deviceId}] ${cam.kind} | ${cam.label}
|
|
78
|
+
`;
|
|
104
79
|
let label = cam.label.toLowerCase();
|
|
105
80
|
if (label.indexOf("back") > -1 || label.indexOf("facetime") > -1) {
|
|
106
81
|
backCamera = cam;
|
|
@@ -110,88 +85,56 @@ function getWebcam(_ref) {
|
|
|
110
85
|
if (backCameras.length > 1) {
|
|
111
86
|
backCamera = backCameras[backCameras.length - 1];
|
|
112
87
|
}
|
|
113
|
-
console.log(
|
|
114
|
-
console.log(
|
|
88
|
+
console.log(`[Camera.js] All input sources:`, cams);
|
|
89
|
+
console.log(`[Camera.js] This device has ${backCameras.length} back camera${backCameras.length > 1 ? "s" : ""}.`);
|
|
115
90
|
console.log("[Camera.js] backCameras:", JSON.stringify(backCameras));
|
|
116
91
|
currentCamera = backCamera;
|
|
117
|
-
|
|
118
|
-
scope.onGotDevices(devices);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// Lấy stream của camera sau
|
|
122
|
-
// (Lấy cái cuối cùng trong danh sách trước, thường sẽ là camera chính trên Android)
|
|
123
|
-
getStreamOfCameraId(backCamera.deviceId).then(onStreamReceived).catch(e => {
|
|
92
|
+
getStreamOfCameraId(backCamera.deviceId).then(onStreamReceived).catch((e) => {
|
|
124
93
|
if (backCameras.length > 1) {
|
|
125
|
-
// nếu thiết bị có nhiều hơn 1 camera sau -> thử lấy camera khác
|
|
126
94
|
backCamera = backCameras[backCameras.length - 2];
|
|
127
95
|
getStreamOfCameraId(backCamera.deviceId).then(onStreamReceived).catch(handleError);
|
|
128
96
|
} else if (backCameras.length > 2) {
|
|
129
|
-
// nếu thiết bị có nhiều hơn 2 camera sau -> thử lấy camera khác nữa
|
|
130
97
|
backCamera = backCameras[backCameras.length - 3];
|
|
131
98
|
getStreamOfCameraId(backCamera.deviceId).then(onStreamReceived).catch(handleError);
|
|
132
99
|
} else {
|
|
133
|
-
// nếu thiết bị đéo có camera sau...
|
|
134
100
|
handleError(e);
|
|
135
101
|
}
|
|
136
102
|
});
|
|
137
103
|
} else {
|
|
138
104
|
navigator.mediaDevices.getUserMedia(requestedMediaConstraints).then(onStreamReceived).catch(handleError);
|
|
139
|
-
|
|
140
|
-
// if (scope.onGotDevicesFailed) scope.onGotDevicesFailed();
|
|
141
105
|
}
|
|
142
106
|
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* @param {MediaStream} stream
|
|
146
|
-
*/
|
|
147
|
-
function onStreamReceived(stream) {
|
|
107
|
+
function onStreamReceived(stream2) {
|
|
148
108
|
if (inputCameras.length == 0) {
|
|
149
109
|
console.log("[Camera.js] Not found any back cameras, request again?");
|
|
150
110
|
navigator.mediaDevices.enumerateDevices().then(parseDevices).catch(handleError);
|
|
151
111
|
return;
|
|
152
112
|
}
|
|
153
|
-
|
|
154
|
-
playWebcamVideo(stream);
|
|
113
|
+
playWebcamVideo(stream2);
|
|
155
114
|
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* @param {MediaStream} _stream
|
|
159
|
-
*/
|
|
160
115
|
function playWebcamVideo(_stream) {
|
|
161
|
-
stream = _stream;
|
|
162
116
|
if ("srcObject" in video) {
|
|
163
|
-
// //alert ('GOT STREAM VIDEO OBJECT');
|
|
164
117
|
video.srcObject = _stream;
|
|
165
118
|
} else {
|
|
166
|
-
// //alert ('GOT STREAM VIDEO SOURCE URL');
|
|
167
|
-
// Avoid using this in new browsers, as it is going away.
|
|
168
119
|
video.src = window.URL.createObjectURL(_stream);
|
|
169
120
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
video.setAttribute("
|
|
173
|
-
video.setAttribute("muted", true);
|
|
174
|
-
video.setAttribute("autoplay", true);
|
|
121
|
+
video.setAttribute("playsinline", "true");
|
|
122
|
+
video.setAttribute("muted", "true");
|
|
123
|
+
video.setAttribute("autoplay", "true");
|
|
175
124
|
video.muted = true;
|
|
176
125
|
video.autoplay = true;
|
|
177
126
|
video.style.objectFit = "cover";
|
|
178
127
|
video.play();
|
|
179
|
-
|
|
180
|
-
// auto play
|
|
181
|
-
video.addEventListener("canplay", function (e) {
|
|
182
|
-
// //alert ('CAN PLAY');
|
|
128
|
+
video.addEventListener("canplay", function(e) {
|
|
183
129
|
});
|
|
184
|
-
video.addEventListener("canplaythrough", function
|
|
185
|
-
// //alert ('CAN PLAY THROUGH');
|
|
130
|
+
video.addEventListener("canplaythrough", function(e) {
|
|
186
131
|
});
|
|
187
|
-
video.addEventListener("error", e => console.log("[Camera.js] <video> error:", e));
|
|
188
|
-
video.addEventListener("stalled", function
|
|
189
|
-
// //alert ('CANNOT GET METADATA');
|
|
190
|
-
isAllowed = false;
|
|
132
|
+
video.addEventListener("error", (e) => console.log("[Camera.js] <video> error:", e));
|
|
133
|
+
video.addEventListener("stalled", function(e) {
|
|
191
134
|
console.log("[Camera.js] <video> stalled:", e);
|
|
192
135
|
reject();
|
|
193
136
|
});
|
|
194
|
-
video.addEventListener("loadedmetadata", function
|
|
137
|
+
video.addEventListener("loadedmetadata", function(e) {
|
|
195
138
|
if (currentCamera.label.toLowerCase().indexOf("facetime") > -1) {
|
|
196
139
|
video.style.transform = "scaleX(-1)";
|
|
197
140
|
video.style.webkitTransform = "scaleX(-1)";
|
|
@@ -202,23 +145,20 @@ function getWebcam(_ref) {
|
|
|
202
145
|
}
|
|
203
146
|
function getStreamOfCameraId(id) {
|
|
204
147
|
const constraints = {
|
|
205
|
-
video: {
|
|
206
|
-
deviceId: {
|
|
207
|
-
exact: id
|
|
208
|
-
}
|
|
209
|
-
},
|
|
148
|
+
video: { deviceId: { exact: id } },
|
|
210
149
|
audio: false
|
|
211
150
|
};
|
|
212
|
-
return new Promise((
|
|
213
|
-
navigator.mediaDevices.getUserMedia(constraints).then(
|
|
151
|
+
return new Promise((resolve2, reject2) => {
|
|
152
|
+
navigator.mediaDevices.getUserMedia(constraints).then(resolve2).catch(reject2);
|
|
214
153
|
});
|
|
215
154
|
}
|
|
216
155
|
function handleError(err) {
|
|
217
156
|
console.error(err);
|
|
218
157
|
const errMsg = "[Camera.js] " + err.name + ": " + err.message;
|
|
219
158
|
console.error(errMsg);
|
|
220
|
-
isAllowed = false;
|
|
221
159
|
reject();
|
|
222
160
|
}
|
|
223
161
|
});
|
|
224
|
-
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
exports.getWebcam = getWebcam;
|
package/dist/device.js
CHANGED
|
@@ -1,75 +1,49 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
require("core-js/modules/es.parse-int.js");
|
|
11
|
-
require("core-js/modules/es.regexp.test.js");
|
|
12
|
-
const isIos = () => {
|
|
13
|
-
const deviceInfo = checkOS();
|
|
14
|
-
if (deviceInfo) return deviceInfo.os.toLowerCase() == "ios";
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
// src/device.ts
|
|
6
|
+
var isIos = () => {
|
|
7
|
+
const deviceInfo2 = checkOS();
|
|
8
|
+
if (deviceInfo2)
|
|
9
|
+
return deviceInfo2.os.toLowerCase() == "ios";
|
|
15
10
|
console.log("Can't check OS");
|
|
16
11
|
return null;
|
|
17
12
|
};
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
var isAndroid = () => {
|
|
14
|
+
const deviceInfo2 = checkOS();
|
|
15
|
+
if (deviceInfo2)
|
|
16
|
+
return deviceInfo2.os.toLowerCase() == "android";
|
|
22
17
|
console.log("Can't check OS");
|
|
23
18
|
return null;
|
|
24
19
|
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
var isMobile = () => {
|
|
21
|
+
if (typeof navigator == "undefined")
|
|
22
|
+
return null;
|
|
28
23
|
if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/Windows Phone/i)) {
|
|
29
24
|
return true;
|
|
30
25
|
} else {
|
|
31
26
|
return false;
|
|
32
27
|
}
|
|
33
28
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
* browser,
|
|
40
|
-
* browserVersion,
|
|
41
|
-
* browserMajorVersion,
|
|
42
|
-
* mobile,
|
|
43
|
-
* os,
|
|
44
|
-
* osVersion,
|
|
45
|
-
* cookies,
|
|
46
|
-
* flashVersion,
|
|
47
|
-
* }}
|
|
48
|
-
*/
|
|
49
|
-
exports.isMobile = isMobile;
|
|
50
|
-
const checkOS = () => {
|
|
51
|
-
var _window;
|
|
52
|
-
if (typeof window == "undefined") return {};
|
|
53
|
-
if (typeof ((_window = window) === null || _window === void 0 ? void 0 : _window.deviceInfo) == "undefined") {
|
|
29
|
+
var deviceInfo;
|
|
30
|
+
var checkOS = () => {
|
|
31
|
+
if (typeof window == "undefined")
|
|
32
|
+
return {};
|
|
33
|
+
if (typeof deviceInfo == "undefined") {
|
|
54
34
|
var unknown = "-";
|
|
55
|
-
|
|
56
|
-
// screen
|
|
57
35
|
var screenSize = "";
|
|
58
36
|
if (screen.width) {
|
|
59
37
|
var width = screen.width ? screen.width : "";
|
|
60
38
|
var height = screen.height ? screen.height : "";
|
|
61
39
|
screenSize += "" + width + " x " + height;
|
|
62
40
|
}
|
|
63
|
-
|
|
64
|
-
// browser
|
|
65
41
|
var nVer = navigator.appVersion;
|
|
66
42
|
var nAgt = navigator.userAgent;
|
|
67
43
|
var browser = navigator.appName;
|
|
68
44
|
var version = "" + parseFloat(navigator.appVersion);
|
|
69
45
|
var majorVersion = parseInt(navigator.appVersion, 10);
|
|
70
46
|
var nameOffset, verOffset, ix;
|
|
71
|
-
|
|
72
|
-
// Opera
|
|
73
47
|
if ((verOffset = nAgt.indexOf("Opera")) != -1) {
|
|
74
48
|
browser = "Opera";
|
|
75
49
|
version = nAgt.substring(verOffset + 6);
|
|
@@ -77,153 +51,83 @@ const checkOS = () => {
|
|
|
77
51
|
version = nAgt.substring(verOffset + 8);
|
|
78
52
|
}
|
|
79
53
|
}
|
|
80
|
-
// Opera Next
|
|
81
54
|
if ((verOffset = nAgt.indexOf("OPR")) != -1) {
|
|
82
55
|
browser = "Opera";
|
|
83
56
|
version = nAgt.substring(verOffset + 4);
|
|
84
|
-
}
|
|
85
|
-
// Edge
|
|
86
|
-
else if ((verOffset = nAgt.indexOf("Edge")) != -1) {
|
|
57
|
+
} else if ((verOffset = nAgt.indexOf("Edge")) != -1) {
|
|
87
58
|
browser = "Microsoft Edge";
|
|
88
59
|
version = nAgt.substring(verOffset + 5);
|
|
89
|
-
}
|
|
90
|
-
// MSIE
|
|
91
|
-
else if ((verOffset = nAgt.indexOf("MSIE")) != -1) {
|
|
60
|
+
} else if ((verOffset = nAgt.indexOf("MSIE")) != -1) {
|
|
92
61
|
browser = "Microsoft Internet Explorer";
|
|
93
62
|
version = nAgt.substring(verOffset + 5);
|
|
94
|
-
}
|
|
95
|
-
// Chrome
|
|
96
|
-
else if ((verOffset = nAgt.indexOf("Chrome")) != -1) {
|
|
63
|
+
} else if ((verOffset = nAgt.indexOf("Chrome")) != -1) {
|
|
97
64
|
browser = "Chrome";
|
|
98
65
|
version = nAgt.substring(verOffset + 7);
|
|
99
|
-
}
|
|
100
|
-
// Safari
|
|
101
|
-
else if ((verOffset = nAgt.indexOf("Safari")) != -1) {
|
|
66
|
+
} else if ((verOffset = nAgt.indexOf("Safari")) != -1) {
|
|
102
67
|
browser = "Safari";
|
|
103
68
|
version = nAgt.substring(verOffset + 7);
|
|
104
69
|
if ((verOffset = nAgt.indexOf("Version")) != -1) {
|
|
105
70
|
version = nAgt.substring(verOffset + 8);
|
|
106
71
|
}
|
|
107
|
-
}
|
|
108
|
-
// Firefox
|
|
109
|
-
else if ((verOffset = nAgt.indexOf("Firefox")) != -1) {
|
|
72
|
+
} else if ((verOffset = nAgt.indexOf("Firefox")) != -1) {
|
|
110
73
|
browser = "Firefox";
|
|
111
74
|
version = nAgt.substring(verOffset + 8);
|
|
112
|
-
}
|
|
113
|
-
// MSIE 11+
|
|
114
|
-
else if (nAgt.indexOf("Trident/") != -1) {
|
|
75
|
+
} else if (nAgt.indexOf("Trident/") != -1) {
|
|
115
76
|
browser = "Microsoft Internet Explorer";
|
|
116
77
|
version = nAgt.substring(nAgt.indexOf("rv:") + 3);
|
|
117
|
-
}
|
|
118
|
-
// Other browsers
|
|
119
|
-
else if ((nameOffset = nAgt.lastIndexOf(" ") + 1) < (verOffset = nAgt.lastIndexOf("/"))) {
|
|
78
|
+
} else if ((nameOffset = nAgt.lastIndexOf(" ") + 1) < (verOffset = nAgt.lastIndexOf("/"))) {
|
|
120
79
|
browser = nAgt.substring(nameOffset, verOffset);
|
|
121
80
|
version = nAgt.substring(verOffset + 1);
|
|
122
81
|
if (browser.toLowerCase() == browser.toUpperCase()) {
|
|
123
82
|
browser = navigator.appName;
|
|
124
83
|
}
|
|
125
84
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
if ((ix = version.indexOf(" ")) != -1)
|
|
129
|
-
|
|
85
|
+
if ((ix = version.indexOf(";")) != -1)
|
|
86
|
+
version = version.substring(0, ix);
|
|
87
|
+
if ((ix = version.indexOf(" ")) != -1)
|
|
88
|
+
version = version.substring(0, ix);
|
|
89
|
+
if ((ix = version.indexOf(")")) != -1)
|
|
90
|
+
version = version.substring(0, ix);
|
|
130
91
|
majorVersion = parseInt("" + version, 10);
|
|
131
92
|
if (isNaN(majorVersion)) {
|
|
132
93
|
version = "" + parseFloat(navigator.appVersion);
|
|
133
94
|
majorVersion = parseInt(navigator.appVersion, 10);
|
|
134
95
|
}
|
|
135
|
-
|
|
136
|
-
// mobile version
|
|
137
96
|
var mobile = /Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(nVer);
|
|
138
|
-
|
|
139
|
-
// cookie
|
|
140
97
|
var cookieEnabled = navigator.cookieEnabled ? true : false;
|
|
141
98
|
if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled) {
|
|
142
99
|
document.cookie = "testcookie";
|
|
143
100
|
cookieEnabled = document.cookie.indexOf("testcookie") != -1 ? true : false;
|
|
144
101
|
}
|
|
145
|
-
|
|
146
|
-
// system
|
|
147
102
|
var os = unknown;
|
|
148
|
-
var clientStrings = [
|
|
149
|
-
s: "Windows 10",
|
|
150
|
-
r: /(Windows
|
|
151
|
-
|
|
152
|
-
s: "Windows
|
|
153
|
-
r: /
|
|
154
|
-
|
|
155
|
-
s: "Windows
|
|
156
|
-
r: /(Windows
|
|
157
|
-
|
|
158
|
-
s: "Windows
|
|
159
|
-
r: /(Windows
|
|
160
|
-
|
|
161
|
-
s: "Windows
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
s: "
|
|
165
|
-
r: /
|
|
166
|
-
|
|
167
|
-
s: "
|
|
168
|
-
r: /
|
|
169
|
-
|
|
170
|
-
s: "
|
|
171
|
-
r: /
|
|
172
|
-
|
|
173
|
-
s: "
|
|
174
|
-
r: /(
|
|
175
|
-
|
|
176
|
-
s: "Windows 98",
|
|
177
|
-
r: /(Windows 98|Win98)/
|
|
178
|
-
}, {
|
|
179
|
-
s: "Windows 95",
|
|
180
|
-
r: /(Windows 95|Win95|Windows_95)/
|
|
181
|
-
}, {
|
|
182
|
-
s: "Windows NT 4.0",
|
|
183
|
-
r: /(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/
|
|
184
|
-
}, {
|
|
185
|
-
s: "Windows CE",
|
|
186
|
-
r: /Windows CE/
|
|
187
|
-
}, {
|
|
188
|
-
s: "Windows 3.11",
|
|
189
|
-
r: /Win16/
|
|
190
|
-
}, {
|
|
191
|
-
s: "Android",
|
|
192
|
-
r: /Android/
|
|
193
|
-
}, {
|
|
194
|
-
s: "Open BSD",
|
|
195
|
-
r: /OpenBSD/
|
|
196
|
-
}, {
|
|
197
|
-
s: "Sun OS",
|
|
198
|
-
r: /SunOS/
|
|
199
|
-
}, {
|
|
200
|
-
s: "Linux",
|
|
201
|
-
r: /(Linux|X11)/
|
|
202
|
-
}, {
|
|
203
|
-
s: "iOS",
|
|
204
|
-
r: /(iPhone|iPad|iPod)/
|
|
205
|
-
}, {
|
|
206
|
-
s: "Mac OS X",
|
|
207
|
-
r: /Mac OS X/
|
|
208
|
-
}, {
|
|
209
|
-
s: "Mac OS",
|
|
210
|
-
r: /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/
|
|
211
|
-
}, {
|
|
212
|
-
s: "QNX",
|
|
213
|
-
r: /QNX/
|
|
214
|
-
}, {
|
|
215
|
-
s: "UNIX",
|
|
216
|
-
r: /UNIX/
|
|
217
|
-
}, {
|
|
218
|
-
s: "BeOS",
|
|
219
|
-
r: /BeOS/
|
|
220
|
-
}, {
|
|
221
|
-
s: "OS/2",
|
|
222
|
-
r: /OS\/2/
|
|
223
|
-
}, {
|
|
224
|
-
s: "Search Bot",
|
|
225
|
-
r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/
|
|
226
|
-
}];
|
|
103
|
+
var clientStrings = [
|
|
104
|
+
{ s: "Windows 10", r: /(Windows 10.0|Windows NT 10.0)/ },
|
|
105
|
+
{ s: "Windows 8.1", r: /(Windows 8.1|Windows NT 6.3)/ },
|
|
106
|
+
{ s: "Windows 8", r: /(Windows 8|Windows NT 6.2)/ },
|
|
107
|
+
{ s: "Windows 7", r: /(Windows 7|Windows NT 6.1)/ },
|
|
108
|
+
{ s: "Windows Vista", r: /Windows NT 6.0/ },
|
|
109
|
+
{ s: "Windows Server 2003", r: /Windows NT 5.2/ },
|
|
110
|
+
{ s: "Windows XP", r: /(Windows NT 5.1|Windows XP)/ },
|
|
111
|
+
{ s: "Windows 2000", r: /(Windows NT 5.0|Windows 2000)/ },
|
|
112
|
+
{ s: "Windows ME", r: /(Win 9x 4.90|Windows ME)/ },
|
|
113
|
+
{ s: "Windows 98", r: /(Windows 98|Win98)/ },
|
|
114
|
+
{ s: "Windows 95", r: /(Windows 95|Win95|Windows_95)/ },
|
|
115
|
+
{ s: "Windows NT 4.0", r: /(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/ },
|
|
116
|
+
{ s: "Windows CE", r: /Windows CE/ },
|
|
117
|
+
{ s: "Windows 3.11", r: /Win16/ },
|
|
118
|
+
{ s: "Android", r: /Android/ },
|
|
119
|
+
{ s: "Open BSD", r: /OpenBSD/ },
|
|
120
|
+
{ s: "Sun OS", r: /SunOS/ },
|
|
121
|
+
{ s: "Linux", r: /(Linux|X11)/ },
|
|
122
|
+
{ s: "iOS", r: /(iPhone|iPad|iPod)/ },
|
|
123
|
+
{ s: "Mac OS X", r: /Mac OS X/ },
|
|
124
|
+
{ s: "Mac OS", r: /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ },
|
|
125
|
+
{ s: "QNX", r: /QNX/ },
|
|
126
|
+
{ s: "UNIX", r: /UNIX/ },
|
|
127
|
+
{ s: "BeOS", r: /BeOS/ },
|
|
128
|
+
{ s: "OS/2", r: /OS\/2/ },
|
|
129
|
+
{ s: "Search Bot", r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/ }
|
|
130
|
+
];
|
|
227
131
|
for (var id in clientStrings) {
|
|
228
132
|
var cs = clientStrings[id];
|
|
229
133
|
if (cs.r.test(nAgt)) {
|
|
@@ -244,35 +148,26 @@ const checkOS = () => {
|
|
|
244
148
|
osVersion = /Android ([\.\_\d]+)/.exec(nAgt)[1];
|
|
245
149
|
break;
|
|
246
150
|
case "iOS":
|
|
247
|
-
|
|
248
|
-
osVersion =
|
|
151
|
+
const _osVersion = /OS (\d+)_(\d+)_?(\d+)?/.exec(nVer);
|
|
152
|
+
osVersion = _osVersion[1] + "." + _osVersion[2] + "." + (_osVersion[3] || 0);
|
|
249
153
|
break;
|
|
250
154
|
}
|
|
251
|
-
|
|
252
|
-
// flash (you'll need to include swfobject)
|
|
253
|
-
/* script src="//ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" */
|
|
254
|
-
var flashVersion = "no check";
|
|
255
|
-
if (typeof swfobject != "undefined") {
|
|
256
|
-
var fv = swfobject.getFlashPlayerVersion();
|
|
257
|
-
if (fv.major > 0) {
|
|
258
|
-
flashVersion = fv.major + "." + fv.minor + " r" + fv.release;
|
|
259
|
-
} else {
|
|
260
|
-
flashVersion = unknown;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
const deviceInfo = {
|
|
155
|
+
const _deviceInfo = {
|
|
264
156
|
screen: screenSize,
|
|
265
|
-
browser
|
|
157
|
+
browser,
|
|
266
158
|
browserVersion: version,
|
|
267
159
|
browserMajorVersion: majorVersion,
|
|
268
|
-
mobile
|
|
269
|
-
os
|
|
270
|
-
osVersion
|
|
271
|
-
cookies: cookieEnabled
|
|
272
|
-
flashVersion: flashVersion
|
|
160
|
+
mobile,
|
|
161
|
+
os,
|
|
162
|
+
osVersion,
|
|
163
|
+
cookies: cookieEnabled
|
|
273
164
|
};
|
|
274
|
-
|
|
165
|
+
deviceInfo = _deviceInfo;
|
|
275
166
|
}
|
|
276
|
-
return
|
|
167
|
+
return deviceInfo;
|
|
277
168
|
};
|
|
278
|
-
|
|
169
|
+
|
|
170
|
+
exports.checkOS = checkOS;
|
|
171
|
+
exports.isAndroid = isAndroid;
|
|
172
|
+
exports.isIos = isIos;
|
|
173
|
+
exports.isMobile = isMobile;
|
package/dist/device.mjs
ADDED