@braintree/browser-detection 1.16.0 → 1.17.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/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`.
@@ -8,6 +8,7 @@ import isIe10 = require("./is-ie10");
8
8
  import isIe11 = require("./is-ie11");
9
9
  import isEdge = require("./is-edge");
10
10
  import isFirefox = require("./is-firefox");
11
+ import isSafari = require("./is-safari");
11
12
  import isIos = require("./is-ios");
12
13
  import isIosFirefox = require("./is-ios-firefox");
13
14
  import isIosGoogleSearchApp = require("./is-ios-google-search-app");
@@ -23,4 +24,4 @@ import isSilk = require("./is-silk");
23
24
  import hasSoftwareKeyboard = require("./has-software-keyboard");
24
25
  import supportsPopups = require("./supports-popups");
25
26
  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, };
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,6 +1,6 @@
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;
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
4
  var isAndroid = require("./is-android");
5
5
  exports.isAndroid = isAndroid;
6
6
  var isChromeOS = require("./is-chrome-os");
@@ -21,6 +21,8 @@ var isEdge = require("./is-edge");
21
21
  exports.isEdge = isEdge;
22
22
  var isFirefox = require("./is-firefox");
23
23
  exports.isFirefox = isFirefox;
24
+ var isSafari = require("./is-safari");
25
+ exports.isSafari = isSafari;
24
26
  var isIos = require("./is-ios");
25
27
  exports.isIos = isIos;
26
28
  var isIosFirefox = require("./is-ios-firefox");
@@ -0,0 +1,2 @@
1
+ declare const _default: (ua?: string) => boolean;
2
+ export = _default;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ module.exports = function isSafari(ua) {
3
+ ua = ua || window.navigator.userAgent;
4
+ return (/^Mozilla\/5\.0.*Safari\//.test(ua) &&
5
+ !/(iPhone|iPad|iPod|Android|SM-)/i.test(ua) &&
6
+ !/Chrome|CriOS|FxiOS|OPiOS|mercury/i.test(ua));
7
+ };
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.1",
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",
@@ -15,10 +15,10 @@
15
15
  "eslint": "^8.35.0",
16
16
  "eslint-config-braintree": "^6.0.0-typescript-prep-rc.2",
17
17
  "eslint-plugin-prettier": "^4.2.1",
18
- "jest": "^29.5.0",
19
- "jest-environment-jsdom": "^29.5.0",
18
+ "jest": "^29.6.2",
19
+ "jest-environment-jsdom": "^29.6.2",
20
20
  "prettier": "^2.8.4",
21
- "ts-jest": "^29.0.5",
21
+ "ts-jest": "^29.1.1",
22
22
  "typescript": "^4.9.5"
23
23
  },
24
24
  "scripts": {
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
- };