indexeddbshim / IndexedDBShim

A polyfill for IndexedDB using WebSql
Other
968 stars 191 forks source link

RegExp issue in non-ES6 environments #356

Open radicalapps opened 4 years ago

radicalapps commented 4 years ago

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.

brettz9 commented 4 years ago

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