IndexedDBShim icon indicating copy to clipboard operation
IndexedDBShim copied to clipboard

RegExp issue in non-ES6 environments

Open radicalapps opened this issue 5 years ago • 1 comments

The newer version of globalVars uses a revised RegExp as follows:

(/(iPad|iPhone|iPod).* os 9_/ui).test(navigator.userAgent)

The u (unicode) flag is new for ES6. This new RegExp fails to instantiate in older browsers, causing poorIndexedDbSupport not to be detected in, for example, Safari on IOS 9.

new RegExp("(iPad|iPhone|iPod).* os 9_", "ui")
SyntaxError: Invalid flags supplied to RegExp constructor.


(/(iPad|iPhone|iPod).* os 9_/ui).test(navigator.userAgent)
SyntaxError: Invalid flag supplied to RegExp constructor.

Suggested resolution is to remove the u flag to enable the RegExp to work as expected.

radicalapps avatar Oct 22 '20 15:10 radicalapps

I'd be open to a PR . Note that there are also new RegExp calls with the u flag so any PR should handle them as well.

I would have preferred to use https://babeljs.io/docs/en/babel-plugin-transform-unicode-regex and a Unicode-aware RegExp constructor polyfill, but:

  1. It might add significant bloat
  2. core-js at least doesn't seem to have such a polyfill anyways

brettz9 avatar Oct 22 '20 15:10 brettz9