@braintree/browser-detection 1.16.0 → 1.17.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.
Files changed (60) hide show
  1. package/README.md +6 -0
  2. package/dist/browser-detection.d.ts +27 -26
  3. package/dist/browser-detection.js +53 -51
  4. package/dist/has-software-keyboard.d.ts +2 -2
  5. package/dist/has-software-keyboard.js +8 -6
  6. package/dist/is-android.d.ts +2 -2
  7. package/dist/is-android.js +4 -2
  8. package/dist/is-chrome-os.d.ts +2 -2
  9. package/dist/is-chrome-os.js +4 -2
  10. package/dist/is-chrome.d.ts +2 -2
  11. package/dist/is-chrome.js +14 -12
  12. package/dist/is-duckduckgo.d.ts +2 -2
  13. package/dist/is-duckduckgo.js +4 -2
  14. package/dist/is-edge.d.ts +2 -2
  15. package/dist/is-edge.js +4 -2
  16. package/dist/is-firefox.d.ts +2 -2
  17. package/dist/is-firefox.js +4 -2
  18. package/dist/is-ie.d.ts +2 -2
  19. package/dist/is-ie.js +6 -4
  20. package/dist/is-ie10.d.ts +2 -2
  21. package/dist/is-ie10.js +4 -2
  22. package/dist/is-ie11.d.ts +2 -2
  23. package/dist/is-ie11.js +4 -2
  24. package/dist/is-ie9.d.ts +2 -2
  25. package/dist/is-ie9.js +4 -2
  26. package/dist/is-ios-firefox.d.ts +2 -2
  27. package/dist/is-ios-firefox.js +4 -2
  28. package/dist/is-ios-google-search-app.d.ts +2 -2
  29. package/dist/is-ios-google-search-app.js +6 -4
  30. package/dist/is-ios-safari.d.ts +2 -2
  31. package/dist/is-ios-safari.js +8 -6
  32. package/dist/is-ios-uiwebview.d.ts +2 -2
  33. package/dist/is-ios-uiwebview.js +6 -4
  34. package/dist/is-ios-webview.d.ts +2 -2
  35. package/dist/is-ios-webview.js +8 -6
  36. package/dist/is-ios-wkwebview.d.ts +2 -2
  37. package/dist/is-ios-wkwebview.js +6 -4
  38. package/dist/is-ios.d.ts +2 -2
  39. package/dist/is-ios.js +6 -4
  40. package/dist/is-ipados.d.ts +2 -2
  41. package/dist/is-ipados.js +4 -2
  42. package/dist/is-mobile-firefox.d.ts +2 -2
  43. package/dist/is-mobile-firefox.js +8 -6
  44. package/dist/is-opera.d.ts +2 -2
  45. package/dist/is-opera.js +4 -2
  46. package/dist/is-safari.d.ts +2 -0
  47. package/dist/is-safari.js +9 -0
  48. package/dist/is-samsung.d.ts +2 -2
  49. package/dist/is-samsung.js +4 -2
  50. package/dist/is-silk.d.ts +2 -2
  51. package/dist/is-silk.js +4 -2
  52. package/dist/supports-payment-request-api.d.ts +2 -2
  53. package/dist/supports-payment-request-api.js +6 -4
  54. package/dist/supports-popups.d.ts +2 -2
  55. package/dist/supports-popups.js +15 -13
  56. package/is-safari.js +1 -0
  57. package/package.json +8 -13
  58. package/CHANGELOG.md +0 -95
  59. package/dist/which-ios-version.d.ts +0 -2
  60. package/dist/which-ios-version.js +0 -12
package/README.md CHANGED
@@ -13,6 +13,7 @@ browserDetection.isChrome();
13
13
  browserDetection.isDuckDuckGo();
14
14
  browserDetection.isEdge();
15
15
  browserDetection.isFirefox();
16
+ browserDetection.isSafari();
16
17
  browserDetection.isIe();
17
18
  browserDetection.isIe9();
18
19
  browserDetection.isIe10();
@@ -43,6 +44,7 @@ const isChrome = require("browser-detection/is-chrome");
43
44
  const isDuckDuckGo = require("browser-detection/is-duckduckgo");
44
45
  const isEdge = require("browser-detection/is-edge");
45
46
  const isFirefox = require("browser-detection/is-firefox");
47
+ const isSafari = require("browser-detection/is-safari");
46
48
  const isIe = require("browser-detection/is-ie");
47
49
  const isIe9 = require("browser-detection/is-ie9");
48
50
  const isIe10 = require("browser-detection/is-ie10");
@@ -83,3 +85,7 @@ browserDetection.isIos(ua);
83
85
  browserDetection.isIos(ua, false);
84
86
  // will return false
85
87
  ```
88
+
89
+ ### Notes on Safari
90
+
91
+ `is-safari` is used for _desktop_ Safari detection, if you are trying to detect an iOS version of Safari, use `is-ios-safari`.
@@ -1,26 +1,27 @@
1
- import isAndroid = require("./is-android");
2
- import isChromeOS = require("./is-chrome-os");
3
- import isChrome = require("./is-chrome");
4
- import isDuckDuckGo = require("./is-duckduckgo");
5
- import isIe = require("./is-ie");
6
- import isIe9 = require("./is-ie9");
7
- import isIe10 = require("./is-ie10");
8
- import isIe11 = require("./is-ie11");
9
- import isEdge = require("./is-edge");
10
- import isFirefox = require("./is-firefox");
11
- import isIos = require("./is-ios");
12
- import isIosFirefox = require("./is-ios-firefox");
13
- import isIosGoogleSearchApp = require("./is-ios-google-search-app");
14
- import isIosSafari = require("./is-ios-safari");
15
- import isIosUIWebview = require("./is-ios-uiwebview");
16
- import isIosWebview = require("./is-ios-webview");
17
- import isIosWKWebview = require("./is-ios-wkwebview");
18
- import isIpadOS = require("./is-ipados");
19
- import isMobileFirefox = require("./is-mobile-firefox");
20
- import isOpera = require("./is-opera");
21
- import isSamsungBrowser = require("./is-samsung");
22
- import isSilk = require("./is-silk");
23
- import hasSoftwareKeyboard = require("./has-software-keyboard");
24
- import supportsPopups = require("./supports-popups");
25
- import supportsPaymentRequestApi = require("./supports-payment-request-api");
26
- export { isAndroid, isChromeOS, isChrome, isDuckDuckGo, isIe, isIe9, isIe10, isIe11, isEdge, isFirefox, isIos, isIosFirefox, isIosGoogleSearchApp, isIosSafari, isIosUIWebview, isIosWebview, isIosWKWebview, isIpadOS, isMobileFirefox, isOpera, isSamsungBrowser, isSilk, hasSoftwareKeyboard, supportsPopups, supportsPaymentRequestApi, };
1
+ import isAndroid from "./is-android";
2
+ import isChromeOS from "./is-chrome-os";
3
+ import isChrome from "./is-chrome";
4
+ import isDuckDuckGo from "./is-duckduckgo";
5
+ import isIe from "./is-ie";
6
+ import isIe9 from "./is-ie9";
7
+ import isIe10 from "./is-ie10";
8
+ import isIe11 from "./is-ie11";
9
+ import isEdge from "./is-edge";
10
+ import isFirefox from "./is-firefox";
11
+ import isIos from "./is-ios";
12
+ import isIosFirefox from "./is-ios-firefox";
13
+ import isIosGoogleSearchApp from "./is-ios-google-search-app";
14
+ import isSafari from "./is-safari";
15
+ import isIosSafari from "./is-ios-safari";
16
+ import isIosUIWebview from "./is-ios-uiwebview";
17
+ import isIosWebview from "./is-ios-webview";
18
+ import isIosWKWebview from "./is-ios-wkwebview";
19
+ import isIpadOS from "./is-ipados";
20
+ import isMobileFirefox from "./is-mobile-firefox";
21
+ import isOpera from "./is-opera";
22
+ import isSamsungBrowser from "./is-samsung";
23
+ import isSilk from "./is-silk";
24
+ import hasSoftwareKeyboard from "./has-software-keyboard";
25
+ import supportsPopups from "./supports-popups";
26
+ import supportsPaymentRequestApi from "./supports-payment-request-api";
27
+ export { isAndroid, isChromeOS, isChrome, isDuckDuckGo, isIe, isIe9, isIe10, isIe11, isEdge, isFirefox, isIos, isIosFirefox, isIosGoogleSearchApp, isSafari, isIosSafari, isIosUIWebview, isIosWebview, isIosWKWebview, isIpadOS, isMobileFirefox, isOpera, isSamsungBrowser, isSilk, hasSoftwareKeyboard, supportsPopups, supportsPaymentRequestApi, };
@@ -1,53 +1,55 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.supportsPaymentRequestApi = exports.supportsPopups = exports.hasSoftwareKeyboard = exports.isSilk = exports.isSamsungBrowser = exports.isOpera = exports.isMobileFirefox = exports.isIpadOS = exports.isIosWKWebview = exports.isIosWebview = exports.isIosUIWebview = exports.isIosSafari = exports.isIosGoogleSearchApp = exports.isIosFirefox = exports.isIos = exports.isFirefox = exports.isEdge = exports.isIe11 = exports.isIe10 = exports.isIe9 = exports.isIe = exports.isDuckDuckGo = exports.isChrome = exports.isChromeOS = exports.isAndroid = void 0;
4
- var isAndroid = require("./is-android");
5
- exports.isAndroid = isAndroid;
6
- var isChromeOS = require("./is-chrome-os");
7
- exports.isChromeOS = isChromeOS;
8
- var isChrome = require("./is-chrome");
9
- exports.isChrome = isChrome;
10
- var isDuckDuckGo = require("./is-duckduckgo");
11
- exports.isDuckDuckGo = isDuckDuckGo;
12
- var isIe = require("./is-ie");
13
- exports.isIe = isIe;
14
- var isIe9 = require("./is-ie9");
15
- exports.isIe9 = isIe9;
16
- var isIe10 = require("./is-ie10");
17
- exports.isIe10 = isIe10;
18
- var isIe11 = require("./is-ie11");
19
- exports.isIe11 = isIe11;
20
- var isEdge = require("./is-edge");
21
- exports.isEdge = isEdge;
22
- var isFirefox = require("./is-firefox");
23
- exports.isFirefox = isFirefox;
24
- var isIos = require("./is-ios");
25
- exports.isIos = isIos;
26
- var isIosFirefox = require("./is-ios-firefox");
27
- exports.isIosFirefox = isIosFirefox;
28
- var isIosGoogleSearchApp = require("./is-ios-google-search-app");
29
- exports.isIosGoogleSearchApp = isIosGoogleSearchApp;
30
- var isIosSafari = require("./is-ios-safari");
31
- exports.isIosSafari = isIosSafari;
32
- var isIosUIWebview = require("./is-ios-uiwebview");
33
- exports.isIosUIWebview = isIosUIWebview;
34
- var isIosWebview = require("./is-ios-webview");
35
- exports.isIosWebview = isIosWebview;
36
- var isIosWKWebview = require("./is-ios-wkwebview");
37
- exports.isIosWKWebview = isIosWKWebview;
38
- var isIpadOS = require("./is-ipados");
39
- exports.isIpadOS = isIpadOS;
40
- var isMobileFirefox = require("./is-mobile-firefox");
41
- exports.isMobileFirefox = isMobileFirefox;
42
- var isOpera = require("./is-opera");
43
- exports.isOpera = isOpera;
44
- var isSamsungBrowser = require("./is-samsung");
45
- exports.isSamsungBrowser = isSamsungBrowser;
46
- var isSilk = require("./is-silk");
47
- exports.isSilk = isSilk;
48
- var hasSoftwareKeyboard = require("./has-software-keyboard");
49
- exports.hasSoftwareKeyboard = hasSoftwareKeyboard;
50
- var supportsPopups = require("./supports-popups");
51
- exports.supportsPopups = supportsPopups;
52
- var supportsPaymentRequestApi = require("./supports-payment-request-api");
53
- exports.supportsPaymentRequestApi = supportsPaymentRequestApi;
3
+ exports.supportsPaymentRequestApi = exports.supportsPopups = exports.hasSoftwareKeyboard = exports.isSilk = exports.isSamsungBrowser = exports.isOpera = exports.isMobileFirefox = exports.isIpadOS = exports.isIosWKWebview = exports.isIosWebview = exports.isIosUIWebview = exports.isIosSafari = exports.isSafari = exports.isIosGoogleSearchApp = exports.isIosFirefox = exports.isIos = exports.isFirefox = exports.isEdge = exports.isIe11 = exports.isIe10 = exports.isIe9 = exports.isIe = exports.isDuckDuckGo = exports.isChrome = exports.isChromeOS = exports.isAndroid = void 0;
4
+ var is_android_1 = require("./is-android");
5
+ exports.isAndroid = is_android_1.default;
6
+ var is_chrome_os_1 = require("./is-chrome-os");
7
+ exports.isChromeOS = is_chrome_os_1.default;
8
+ var is_chrome_1 = require("./is-chrome");
9
+ exports.isChrome = is_chrome_1.default;
10
+ var is_duckduckgo_1 = require("./is-duckduckgo");
11
+ exports.isDuckDuckGo = is_duckduckgo_1.default;
12
+ var is_ie_1 = require("./is-ie");
13
+ exports.isIe = is_ie_1.default;
14
+ var is_ie9_1 = require("./is-ie9");
15
+ exports.isIe9 = is_ie9_1.default;
16
+ var is_ie10_1 = require("./is-ie10");
17
+ exports.isIe10 = is_ie10_1.default;
18
+ var is_ie11_1 = require("./is-ie11");
19
+ exports.isIe11 = is_ie11_1.default;
20
+ var is_edge_1 = require("./is-edge");
21
+ exports.isEdge = is_edge_1.default;
22
+ var is_firefox_1 = require("./is-firefox");
23
+ exports.isFirefox = is_firefox_1.default;
24
+ var is_ios_1 = require("./is-ios");
25
+ exports.isIos = is_ios_1.default;
26
+ var is_ios_firefox_1 = require("./is-ios-firefox");
27
+ exports.isIosFirefox = is_ios_firefox_1.default;
28
+ var is_ios_google_search_app_1 = require("./is-ios-google-search-app");
29
+ exports.isIosGoogleSearchApp = is_ios_google_search_app_1.default;
30
+ var is_safari_1 = require("./is-safari");
31
+ exports.isSafari = is_safari_1.default;
32
+ var is_ios_safari_1 = require("./is-ios-safari");
33
+ exports.isIosSafari = is_ios_safari_1.default;
34
+ var is_ios_uiwebview_1 = require("./is-ios-uiwebview");
35
+ exports.isIosUIWebview = is_ios_uiwebview_1.default;
36
+ var is_ios_webview_1 = require("./is-ios-webview");
37
+ exports.isIosWebview = is_ios_webview_1.default;
38
+ var is_ios_wkwebview_1 = require("./is-ios-wkwebview");
39
+ exports.isIosWKWebview = is_ios_wkwebview_1.default;
40
+ var is_ipados_1 = require("./is-ipados");
41
+ exports.isIpadOS = is_ipados_1.default;
42
+ var is_mobile_firefox_1 = require("./is-mobile-firefox");
43
+ exports.isMobileFirefox = is_mobile_firefox_1.default;
44
+ var is_opera_1 = require("./is-opera");
45
+ exports.isOpera = is_opera_1.default;
46
+ var is_samsung_1 = require("./is-samsung");
47
+ exports.isSamsungBrowser = is_samsung_1.default;
48
+ var is_silk_1 = require("./is-silk");
49
+ exports.isSilk = is_silk_1.default;
50
+ var has_software_keyboard_1 = require("./has-software-keyboard");
51
+ exports.hasSoftwareKeyboard = has_software_keyboard_1.default;
52
+ var supports_popups_1 = require("./supports-popups");
53
+ exports.supportsPopups = supports_popups_1.default;
54
+ var supports_payment_request_api_1 = require("./supports-payment-request-api");
55
+ exports.supportsPaymentRequestApi = supports_payment_request_api_1.default;
@@ -1,2 +1,2 @@
1
- declare const _default: () => boolean;
2
- export = _default;
1
+ declare function hasSoftwareKeyboard(): boolean;
2
+ export default hasSoftwareKeyboard;
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
- var isAndroid = require("./is-android");
3
- var isChromeOS = require("./is-chrome-os");
4
- var isIos = require("./is-ios");
5
- module.exports = function hasSoftwareKeyboard() {
6
- return isAndroid() || isChromeOS() || isIos();
7
- };
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var is_android_1 = require("./is-android");
4
+ var is_chrome_os_1 = require("./is-chrome-os");
5
+ var is_ios_1 = require("./is-ios");
6
+ function hasSoftwareKeyboard() {
7
+ return (0, is_android_1.default)() || (0, is_chrome_os_1.default)() || (0, is_ios_1.default)();
8
+ }
9
+ exports.default = hasSoftwareKeyboard;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isAndroid(ua?: string): boolean;
2
+ export default isAndroid;
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
- module.exports = function isAndroid(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isAndroid(ua) {
3
4
  ua = ua || window.navigator.userAgent;
4
5
  return /Android/i.test(ua);
5
- };
6
+ }
7
+ exports.default = isAndroid;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isChromeOS(ua?: string): boolean;
2
+ export default isChromeOS;
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
- module.exports = function isChromeOS(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isChromeOS(ua) {
3
4
  ua = ua || window.navigator.userAgent;
4
5
  return /CrOS/i.test(ua);
5
- };
6
+ }
7
+ exports.default = isChromeOS;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isChrome(ua?: string): boolean;
2
+ export default isChrome;
package/dist/is-chrome.js CHANGED
@@ -1,15 +1,17 @@
1
1
  "use strict";
2
- var isEdge = require("./is-edge");
3
- var isSamsung = require("./is-samsung");
4
- var isDuckDuckGo = require("./is-duckduckgo");
5
- var isOpera = require("./is-opera");
6
- var isSilk = require("./is-silk");
7
- module.exports = function isChrome(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var is_edge_1 = require("./is-edge");
4
+ var is_samsung_1 = require("./is-samsung");
5
+ var is_duckduckgo_1 = require("./is-duckduckgo");
6
+ var is_opera_1 = require("./is-opera");
7
+ var is_silk_1 = require("./is-silk");
8
+ function isChrome(ua) {
8
9
  ua = ua || window.navigator.userAgent;
9
10
  return ((ua.indexOf("Chrome") !== -1 || ua.indexOf("CriOS") !== -1) &&
10
- !isEdge(ua) &&
11
- !isSamsung(ua) &&
12
- !isDuckDuckGo(ua) &&
13
- !isOpera(ua) &&
14
- !isSilk(ua));
15
- };
11
+ !(0, is_edge_1.default)(ua) &&
12
+ !(0, is_samsung_1.default)(ua) &&
13
+ !(0, is_duckduckgo_1.default)(ua) &&
14
+ !(0, is_opera_1.default)(ua) &&
15
+ !(0, is_silk_1.default)(ua));
16
+ }
17
+ exports.default = isChrome;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isDuckDuckGo(ua?: string): boolean;
2
+ export default isDuckDuckGo;
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
- module.exports = function isDuckDuckGo(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isDuckDuckGo(ua) {
3
4
  ua = ua || window.navigator.userAgent;
4
5
  return ua.indexOf("DuckDuckGo/") !== -1;
5
- };
6
+ }
7
+ exports.default = isDuckDuckGo;
package/dist/is-edge.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isEdge(ua?: string): boolean;
2
+ export default isEdge;
package/dist/is-edge.js CHANGED
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
- module.exports = function isEdge(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isEdge(ua) {
3
4
  ua = ua || window.navigator.userAgent;
4
5
  return ua.indexOf("Edge/") !== -1;
5
- };
6
+ }
7
+ exports.default = isEdge;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isFirefox(ua?: string): boolean;
2
+ export default isFirefox;
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
- module.exports = function isFirefox(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isFirefox(ua) {
3
4
  ua = ua || window.navigator.userAgent;
4
5
  return /Firefox/i.test(ua);
5
- };
6
+ }
7
+ exports.default = isFirefox;
package/dist/is-ie.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isIE(ua?: string): boolean;
2
+ export default isIE;
package/dist/is-ie.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
- var isIE11 = require("./is-ie11");
3
- module.exports = function isIE(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var is_ie11_1 = require("./is-ie11");
4
+ function isIE(ua) {
4
5
  ua = ua || window.navigator.userAgent;
5
- return ua.indexOf("MSIE") !== -1 || isIE11(ua);
6
- };
6
+ return ua.indexOf("MSIE") !== -1 || (0, is_ie11_1.default)(ua);
7
+ }
8
+ exports.default = isIE;
package/dist/is-ie10.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isIe10(ua?: string): boolean;
2
+ export default isIe10;
package/dist/is-ie10.js CHANGED
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
- module.exports = function isIe10(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isIe10(ua) {
3
4
  ua = ua || window.navigator.userAgent;
4
5
  return ua.indexOf("MSIE 10") !== -1;
5
- };
6
+ }
7
+ exports.default = isIe10;
package/dist/is-ie11.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isIe11(ua?: string): boolean;
2
+ export default isIe11;
package/dist/is-ie11.js CHANGED
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
- module.exports = function isIe11(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isIe11(ua) {
3
4
  ua = ua || window.navigator.userAgent;
4
5
  return ua.indexOf("Trident/7") !== -1;
5
- };
6
+ }
7
+ exports.default = isIe11;
package/dist/is-ie9.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isIe9(ua?: string): boolean;
2
+ export default isIe9;
package/dist/is-ie9.js CHANGED
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
- module.exports = function isIe9(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isIe9(ua) {
3
4
  ua = ua || window.navigator.userAgent;
4
5
  return ua.indexOf("MSIE 9") !== -1;
5
- };
6
+ }
7
+ exports.default = isIe9;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isIosFirefox(ua?: string): boolean;
2
+ export default isIosFirefox;
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
- module.exports = function isIosFirefox(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isIosFirefox(ua) {
3
4
  ua = ua || window.navigator.userAgent;
4
5
  return /FxiOS/i.test(ua);
5
- };
6
+ }
7
+ exports.default = isIosFirefox;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isIosGoogleSearchApp(ua?: string): boolean;
2
+ export default isIosGoogleSearchApp;
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
- var isIos = require("./is-ios");
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var is_ios_1 = require("./is-ios");
3
4
  function isGoogleSearchApp(ua) {
4
5
  return /\bGSA\b/.test(ua);
5
6
  }
6
- module.exports = function isIosGoogleSearchApp(ua) {
7
+ function isIosGoogleSearchApp(ua) {
7
8
  ua = ua || window.navigator.userAgent;
8
- return isIos(ua) && isGoogleSearchApp(ua);
9
- };
9
+ return (0, is_ios_1.default)(ua) && isGoogleSearchApp(ua);
10
+ }
11
+ exports.default = isIosGoogleSearchApp;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isIosSafari(ua?: string): boolean;
2
+ export default isIosSafari;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
- var isIos = require("./is-ios");
3
- var isIosFirefox = require("./is-ios-firefox");
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var is_ios_1 = require("./is-ios");
4
+ var is_ios_firefox_1 = require("./is-ios-firefox");
4
5
  var webkitRegexp = /webkit/i;
5
6
  function isWebkit(ua) {
6
7
  return webkitRegexp.test(ua);
@@ -11,11 +12,12 @@ function isIosChrome(ua) {
11
12
  function isFacebook(ua) {
12
13
  return ua.indexOf("FBAN") > -1;
13
14
  }
14
- module.exports = function isIosSafari(ua) {
15
+ function isIosSafari(ua) {
15
16
  ua = ua || window.navigator.userAgent;
16
- return (isIos(ua) &&
17
+ return ((0, is_ios_1.default)(ua) &&
17
18
  isWebkit(ua) &&
18
19
  !isIosChrome(ua) &&
19
- !isIosFirefox(ua) &&
20
+ !(0, is_ios_firefox_1.default)(ua) &&
20
21
  !isFacebook(ua));
21
- };
22
+ }
23
+ exports.default = isIosSafari;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string, statusBarVisible?: boolean) => boolean;
2
- export = _default;
1
+ declare function isIosUIWebview(ua?: string, statusBarVisible?: boolean): boolean;
2
+ export default isIosUIWebview;
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
- var isIosWebview = require("./is-ios-webview");
3
- module.exports = function isIosUIWebview(ua, statusBarVisible) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var is_ios_webview_1 = require("./is-ios-webview");
4
+ function isIosUIWebview(ua, statusBarVisible) {
4
5
  statusBarVisible =
5
6
  typeof statusBarVisible !== "undefined"
6
7
  ? statusBarVisible
7
8
  : window.statusbar.visible;
8
- return isIosWebview(ua) && !statusBarVisible;
9
- };
9
+ return (0, is_ios_webview_1.default)(ua) && !statusBarVisible;
10
+ }
11
+ exports.default = isIosUIWebview;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isIosWebview(ua?: string): boolean;
2
+ export default isIosWebview;
@@ -1,15 +1,17 @@
1
1
  "use strict";
2
- var isIos = require("./is-ios");
3
- var isIosGoogleSearchApp = require("./is-ios-google-search-app");
4
- module.exports = function isIosWebview(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var is_ios_1 = require("./is-ios");
4
+ var is_ios_google_search_app_1 = require("./is-ios-google-search-app");
5
+ function isIosWebview(ua) {
5
6
  ua = ua || window.navigator.userAgent;
6
- if (isIos(ua)) {
7
+ if ((0, is_ios_1.default)(ua)) {
7
8
  // The Google Search iOS app is technically a webview and doesn't support popups.
8
- if (isIosGoogleSearchApp(ua)) {
9
+ if ((0, is_ios_google_search_app_1.default)(ua)) {
9
10
  return true;
10
11
  }
11
12
  // Historically, a webview could be identified by the presence of AppleWebKit and _no_ presence of Safari after.
12
13
  return /.+AppleWebKit(?!.*Safari)/i.test(ua);
13
14
  }
14
15
  return false;
15
- };
16
+ }
17
+ exports.default = isIosWebview;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string, statusBarVisible?: boolean) => boolean;
2
- export = _default;
1
+ declare function isIosWKWebview(ua?: string, statusBarVisible?: boolean): boolean;
2
+ export default isIosWKWebview;
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
- var isIosWebview = require("./is-ios-webview");
3
- module.exports = function isIosWKWebview(ua, statusBarVisible) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var is_ios_webview_1 = require("./is-ios-webview");
4
+ function isIosWKWebview(ua, statusBarVisible) {
4
5
  statusBarVisible =
5
6
  typeof statusBarVisible !== "undefined"
6
7
  ? statusBarVisible
7
8
  : window.statusbar.visible;
8
- return isIosWebview(ua) && statusBarVisible;
9
- };
9
+ return (0, is_ios_webview_1.default)(ua) && statusBarVisible;
10
+ }
11
+ exports.default = isIosWKWebview;
package/dist/is-ios.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string, checkIpadOS?: boolean, document?: object) => boolean;
2
- export = _default;
1
+ declare function isIos(ua?: string, checkIpadOS?: boolean, document?: object): boolean;
2
+ export default isIos;
package/dist/is-ios.js CHANGED
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
- var isIpadOS = require("./is-ipados");
3
- module.exports = function isIos(ua, checkIpadOS, document) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var is_ipados_1 = require("./is-ipados");
4
+ function isIos(ua, checkIpadOS, document) {
4
5
  if (checkIpadOS === void 0) { checkIpadOS = true; }
5
6
  ua = ua || window.navigator.userAgent;
6
7
  var iOsTest = /iPhone|iPod|iPad/i.test(ua);
7
- return checkIpadOS ? iOsTest || isIpadOS(ua, document) : iOsTest;
8
- };
8
+ return checkIpadOS ? iOsTest || (0, is_ipados_1.default)(ua, document) : iOsTest;
9
+ }
10
+ exports.default = isIos;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string, document?: object) => boolean;
2
- export = _default;
1
+ declare function isIpadOS(ua?: string, document?: object): boolean;
2
+ export default isIpadOS;
package/dist/is-ipados.js CHANGED
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
- module.exports = function isIpadOS(ua, document) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isIpadOS(ua, document) {
3
4
  ua = ua || window.navigator.userAgent;
4
5
  document = document || window.document;
5
6
  // "ontouchend" is used to determine if a browser is on an iPad, otherwise
6
7
  // user-agents for iPadOS behave/identify as a desktop browser
7
8
  return /Mac|iPad/i.test(ua) && "ontouchend" in document;
8
- };
9
+ }
10
+ exports.default = isIpadOS;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isMobileFirefox(ua?: string): boolean;
2
+ export default isMobileFirefox;
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
- var isIosFirefox = require("./is-ios-firefox");
3
- var isFirefox = require("./is-firefox");
4
- module.exports = function isMobileFirefox(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var is_ios_firefox_1 = require("./is-ios-firefox");
4
+ var is_firefox_1 = require("./is-firefox");
5
+ function isMobileFirefox(ua) {
5
6
  ua = ua || window.navigator.userAgent;
6
- return (isIosFirefox(ua) ||
7
- (/iPhone|iPod|iPad|Mobile|Tablet/i.test(ua) && isFirefox(ua)));
8
- };
7
+ return ((0, is_ios_firefox_1.default)(ua) ||
8
+ (/iPhone|iPod|iPad|Mobile|Tablet/i.test(ua) && (0, is_firefox_1.default)(ua)));
9
+ }
10
+ exports.default = isMobileFirefox;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isOpera(ua?: string): boolean;
2
+ export default isOpera;
package/dist/is-opera.js CHANGED
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
- module.exports = function isOpera(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isOpera(ua) {
3
4
  ua = ua || window.navigator.userAgent;
4
5
  return (ua.indexOf("OPR/") !== -1 ||
5
6
  ua.indexOf("Opera/") !== -1 ||
6
7
  ua.indexOf("OPT/") !== -1);
7
- };
8
+ }
9
+ exports.default = isOpera;
@@ -0,0 +1,2 @@
1
+ declare function isSafari(ua?: string): boolean;
2
+ export default isSafari;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isSafari(ua) {
4
+ ua = ua || window.navigator.userAgent;
5
+ return (/^Mozilla\/5\.0.*Safari\//.test(ua) &&
6
+ !/(iPhone|iPad|iPod|Android|SM-)/i.test(ua) &&
7
+ !/Chrome|CriOS|FxiOS|OPiOS|mercury/i.test(ua));
8
+ }
9
+ exports.default = isSafari;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isSamsungBrowser(ua?: string): boolean;
2
+ export default isSamsungBrowser;
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
- module.exports = function isSamsungBrowser(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isSamsungBrowser(ua) {
3
4
  ua = ua || window.navigator.userAgent;
4
5
  return /SamsungBrowser/i.test(ua);
5
- };
6
+ }
7
+ exports.default = isSamsungBrowser;
package/dist/is-silk.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function isSilk(ua?: string): boolean;
2
+ export default isSilk;
package/dist/is-silk.js CHANGED
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
- module.exports = function isSilk(ua) {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isSilk(ua) {
3
4
  ua = ua || window.navigator.userAgent;
4
5
  return ua.indexOf("Silk/") !== -1;
5
- };
6
+ }
7
+ exports.default = isSilk;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function supportsPaymentRequestApi(ua?: string): boolean;
2
+ export default supportsPaymentRequestApi;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
- var isChrome = require("./is-chrome");
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var is_chrome_1 = require("./is-chrome");
3
4
  var MINIMUM_SUPPORTED_CHROME_VERSION = 61;
4
5
  function isSupportedChromeVersion(ua) {
5
6
  var match = ua.match(/Chrome\/(\d+)\./);
@@ -9,12 +10,12 @@ function isSupportedChromeVersion(ua) {
9
10
  var version = parseInt(match[1], 10);
10
11
  return version >= MINIMUM_SUPPORTED_CHROME_VERSION;
11
12
  }
12
- module.exports = function supportsPaymentRequestApi(ua) {
13
+ function supportsPaymentRequestApi(ua) {
13
14
  ua = ua || window.navigator.userAgent;
14
15
  if (!window.PaymentRequest) {
15
16
  return false;
16
17
  }
17
- if (!isChrome(ua)) {
18
+ if (!(0, is_chrome_1.default)(ua)) {
18
19
  // if browser is not chrome based, but has Payment Request API
19
20
  // this means that it implemented the API after it was finalized
20
21
  return true;
@@ -23,4 +24,5 @@ module.exports = function supportsPaymentRequestApi(ua) {
23
24
  // Android Chrome as early as Chrome v53, but it was not
24
25
  // finalized until v61
25
26
  return isSupportedChromeVersion(ua);
26
- };
27
+ }
28
+ exports.default = supportsPaymentRequestApi;
@@ -1,2 +1,2 @@
1
- declare const _default: (ua?: string) => boolean;
2
- export = _default;
1
+ declare function supportsPopups(ua?: string): boolean;
2
+ export default supportsPopups;
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
2
3
  var MINIMUM_SUPPORTED_CHROME_IOS_VERSION = 48;
3
- var isAndroid = require("./is-android");
4
- var isIosFirefox = require("./is-ios-firefox");
5
- var isIosWebview = require("./is-ios-webview");
6
- var isChrome = require("./is-chrome");
7
- var isSamsungBrowser = require("./is-samsung");
8
- var isDuckDuckGo = require("./is-duckduckgo");
4
+ var is_android_1 = require("./is-android");
5
+ var is_ios_firefox_1 = require("./is-ios-firefox");
6
+ var is_ios_webview_1 = require("./is-ios-webview");
7
+ var is_chrome_1 = require("./is-chrome");
8
+ var is_samsung_1 = require("./is-samsung");
9
+ var is_duckduckgo_1 = require("./is-duckduckgo");
9
10
  function isUnsupportedIosChrome(ua) {
10
11
  ua = ua || window.navigator.userAgent;
11
12
  var match = ua.match(/CriOS\/(\d+)\./);
@@ -22,20 +23,21 @@ function isOperaMini(ua) {
22
23
  function isAndroidWebview(ua) {
23
24
  var androidWebviewRegExp = /Version\/[\d.]+/i;
24
25
  ua = ua || window.navigator.userAgent;
25
- if (isAndroid(ua)) {
26
- return (androidWebviewRegExp.test(ua) && !isOperaMini(ua) && !isDuckDuckGo(ua));
26
+ if ((0, is_android_1.default)(ua)) {
27
+ return (androidWebviewRegExp.test(ua) && !isOperaMini(ua) && !(0, is_duckduckgo_1.default)(ua));
27
28
  }
28
29
  return false;
29
30
  }
30
31
  function isOldSamsungBrowserOrSamsungWebview(ua) {
31
- return !isChrome(ua) && !isSamsungBrowser(ua) && /samsung/i.test(ua);
32
+ return !(0, is_chrome_1.default)(ua) && !(0, is_samsung_1.default)(ua) && /samsung/i.test(ua);
32
33
  }
33
- module.exports = function supportsPopups(ua) {
34
+ function supportsPopups(ua) {
34
35
  ua = ua || window.navigator.userAgent;
35
- return !(isIosWebview(ua) ||
36
- isIosFirefox(ua) ||
36
+ return !((0, is_ios_webview_1.default)(ua) ||
37
+ (0, is_ios_firefox_1.default)(ua) ||
37
38
  isAndroidWebview(ua) ||
38
39
  isOperaMini(ua) ||
39
40
  isUnsupportedIosChrome(ua) ||
40
41
  isOldSamsungBrowserOrSamsungWebview(ua));
41
- };
42
+ }
43
+ exports.default = supportsPopups;
package/is-safari.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require("./dist/is-safari");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@braintree/browser-detection",
3
- "version": "1.16.0",
3
+ "version": "1.17.0",
4
4
  "description": "A small lib to detect browser compatibility for braintree products",
5
5
  "main": "dist/browser-detection.js",
6
6
  "types": "dist/browser-detection.d.ts",
@@ -12,14 +12,14 @@
12
12
  "@types/jest": "^29.4.0",
13
13
  "@types/node": "^18.14.6",
14
14
  "@typescript-eslint/eslint-plugin": "^5.54.1",
15
+ "@vitest/coverage-v8": "^0.33.0",
15
16
  "eslint": "^8.35.0",
16
17
  "eslint-config-braintree": "^6.0.0-typescript-prep-rc.2",
17
18
  "eslint-plugin-prettier": "^4.2.1",
18
- "jest": "^29.5.0",
19
- "jest-environment-jsdom": "^29.5.0",
19
+ "happy-dom": "^10.3.2",
20
20
  "prettier": "^2.8.4",
21
- "ts-jest": "^29.0.5",
22
- "typescript": "^4.9.5"
21
+ "typescript": "^4.9.5",
22
+ "vitest": "^0.33.0"
23
23
  },
24
24
  "scripts": {
25
25
  "prepublishOnly": "npm run build",
@@ -28,7 +28,8 @@
28
28
  "lint": "eslint --ext js,ts .",
29
29
  "posttest": "npm run lint",
30
30
  "pretest": "npm run build",
31
- "test": "jest",
31
+ "test": "vitest",
32
+ "coverage": "vitest run --coverage",
32
33
  "version": "./version"
33
34
  },
34
35
  "repository": {
@@ -41,11 +42,5 @@
41
42
  "bugs": {
42
43
  "url": "https://github.com/braintree/browser-detection/issues"
43
44
  },
44
- "homepage": "https://github.com/braintree/browser-detection#readme",
45
- "jest": {
46
- "testEnvironment": "jsdom",
47
- "preset": "ts-jest",
48
- "restoreMocks": true,
49
- "resetMocks": true
50
- }
45
+ "homepage": "https://github.com/braintree/browser-detection#readme"
51
46
  }
package/CHANGELOG.md DELETED
@@ -1,95 +0,0 @@
1
- # Browser Detection - Release Notes
2
-
3
- # 1.16.0 (2023-05-08)
4
-
5
- - Remove window.safari object validation from iOS webview.
6
- - Update `is-ios` to account for user agent behavior on newer iPads
7
- - Add `is-ipados` method
8
- - Typoed version number so we are skipping all the way to 1.16.0
9
-
10
- # 1.13.0 (2022-07-14)
11
-
12
- - Update mobile webview definitions to ensure modern webviews are accounted for.
13
-
14
- # 1.12.1 (2021-09-28)
15
-
16
- - Correct `is-ios-safari` to return `false` for the Facebook browser
17
-
18
- # 1.12.0 (2021-06-08)
19
-
20
- - Add `is-duckduckgo` method
21
- - Add `is-ios-google-search-app` method
22
- - Add `is-opera` method
23
- - Add `is-silk` method
24
- - Fix issue where `is-chrome` would incorrectly report `true` for DuckDuckGo and Silk browsers
25
- - Fix issue where `supports-popups` would incorrectly report `false` for DuckDuckGo
26
-
27
- # 1.11.1 (2021-04-07)
28
-
29
- - Fix issue where `is-ios-safari` was returning `true` for iOS Firefox browsers
30
-
31
- # 1.11.0 (2020-10-27)
32
-
33
- - Add `has-software-keyboard` method
34
-
35
- # 1.10.1 (2020-10-19)
36
-
37
- - Fix issue where typescript declarations did not get published
38
-
39
- # 1.10.0 (2020-07-10)
40
-
41
- - Add typescript types
42
-
43
- ## v1.9.0 (2019-09-18)
44
-
45
- - Add `is-firefox` method
46
-
47
- ## v1.8.0 (2019-08-07)
48
-
49
- - Add `is-chrome-os` method
50
- - Fix README typo for iOS
51
- - Update README code samples to use `const`
52
-
53
- ## 1.7.0 (2017-10-18)
54
-
55
- - Add `supports-payment-request-api` method
56
-
57
- ## 1.6.0 (2017-07-25)
58
-
59
- - Correct is-chrome to not return true on edge browser
60
- - Correct supports-popups to not return true on iOS Firefox
61
- - Add `is-samsung-browser` method
62
- - Add `is-mobile-firefox` method
63
- - Add `is-ios-firefox` method
64
-
65
- ## 1.5.0 (2017-07-03)
66
-
67
- - Add `is-ie` method
68
- - Add `is-ie11` method
69
- - Add `is-edge` method
70
-
71
- ## 1.4.1 (2017-06-01)
72
-
73
- - publish to npm as scoped package `@braintree/browser-detection`
74
-
75
- ## 1.4.0 (2017-05-22)
76
-
77
- - Add `is-ios-uiwebview` method
78
- - Add `is-ios-wkwebview` method
79
-
80
- ## 1.3.0 (2017-04-11)
81
-
82
- - Add `is-ios-webview` method
83
- - Add `is-ios-safari` method
84
-
85
- ## 1.2.0 (2017-04-10)
86
-
87
- - Add `is-ie10` method
88
-
89
- ## 1.1.0 (2017-04-07)
90
-
91
- - Add `is-chrome` method
92
-
93
- ## 1.0.0 (2017-04-05)
94
-
95
- - Initial public release of browser-detection
@@ -1,2 +0,0 @@
1
- declare const _default: (ua?: string | undefined) => string;
2
- export = _default;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- var isIos = require("./is-ios");
3
- module.exports = function whichIosVersion(ua) {
4
- ua = ua || window.navigator.userAgent;
5
- var versionRegex = /(?:iPhone OS )(\d+)/;
6
- var isIphone = !(ua.includes("iPad") || ua.includes("Macintosh"));
7
- if (isIos(ua) && isIphone) {
8
- var version = (ua.match(versionRegex) || [])[1] || "no ios version";
9
- return version;
10
- }
11
- return "no ios version";
12
- };