indexeddbshim 17.0.0 → 17.2.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 (58) hide show
  1. package/README.md +62 -0
  2. package/badges/licenses-badge-dev.svg +1 -1
  3. package/badges/licenses-badge.svg +1 -1
  4. package/dist/CFG.d.ts +1 -0
  5. package/dist/CFG.d.ts.map +1 -1
  6. package/dist/DOMException.d.ts.map +1 -1
  7. package/dist/IDBCursor.d.ts +25 -18
  8. package/dist/IDBCursor.d.ts.map +1 -1
  9. package/dist/IDBFactory.d.ts +19 -19
  10. package/dist/IDBFactory.d.ts.map +1 -1
  11. package/dist/IDBIndex.d.ts.map +1 -1
  12. package/dist/IDBKeyRange.d.ts +5 -5
  13. package/dist/IDBKeyRange.d.ts.map +1 -1
  14. package/dist/IDBTransaction.d.ts +24 -3
  15. package/dist/IDBTransaction.d.ts.map +1 -1
  16. package/dist/Key.d.ts +41 -41
  17. package/dist/Key.d.ts.map +1 -1
  18. package/dist/indexeddbshim-Key.js +88 -69
  19. package/dist/indexeddbshim-Key.js.map +1 -1
  20. package/dist/indexeddbshim-Key.min.js +2 -2
  21. package/dist/indexeddbshim-Key.min.js.map +1 -1
  22. package/dist/indexeddbshim-UnicodeIdentifiers-node.cjs +1682 -1056
  23. package/dist/indexeddbshim-UnicodeIdentifiers-node.cjs.map +1 -1
  24. package/dist/indexeddbshim-UnicodeIdentifiers.js +886 -663
  25. package/dist/indexeddbshim-UnicodeIdentifiers.js.map +1 -1
  26. package/dist/indexeddbshim-UnicodeIdentifiers.min.js +4 -4
  27. package/dist/indexeddbshim-UnicodeIdentifiers.min.js.map +1 -1
  28. package/dist/indexeddbshim-node.cjs +1682 -1056
  29. package/dist/indexeddbshim-node.cjs.map +1 -1
  30. package/dist/indexeddbshim-noninvasive.js +886 -663
  31. package/dist/indexeddbshim-noninvasive.js.map +1 -1
  32. package/dist/indexeddbshim-noninvasive.min.js +4 -4
  33. package/dist/indexeddbshim-noninvasive.min.js.map +1 -1
  34. package/dist/indexeddbshim.js +890 -660
  35. package/dist/indexeddbshim.js.map +1 -1
  36. package/dist/indexeddbshim.min.js +4 -4
  37. package/dist/indexeddbshim.min.js.map +1 -1
  38. package/dist/node-UnicodeIdentifiers.d.ts.map +1 -1
  39. package/dist/node.d.ts.map +1 -1
  40. package/dist/nodeSQLiteDatabase.d.ts +65 -0
  41. package/dist/nodeSQLiteDatabase.d.ts.map +1 -0
  42. package/dist/nodeWebSQL.d.ts.map +1 -1
  43. package/dist/util.d.ts +5 -0
  44. package/dist/util.d.ts.map +1 -1
  45. package/package.json +22 -18
  46. package/src/CFG.js +3 -0
  47. package/src/DOMException.js +10 -10
  48. package/src/IDBCursor.js +152 -102
  49. package/src/IDBFactory.js +30 -26
  50. package/src/IDBIndex.js +1 -2
  51. package/src/IDBKeyRange.js +5 -5
  52. package/src/IDBTransaction.js +35 -5
  53. package/src/Key.js +63 -55
  54. package/src/node-UnicodeIdentifiers.js +5 -1
  55. package/src/node.js +5 -1
  56. package/src/nodeSQLiteDatabase.js +174 -0
  57. package/src/nodeWebSQL.js +1 -3
  58. package/src/util.js +62 -3
@@ -1,4 +1,4 @@
1
- /*! indexeddbshim - v17.0.0 - 7/28/2026 */
1
+ /*! indexeddbshim - v17.2.0 - 8/18/2026 */
2
2
 
3
3
  (function (factory) {
4
4
  typeof define === 'function' && define.amd ? define(factory) :
@@ -58,7 +58,7 @@
58
58
  }
59
59
  }
60
60
  function _createClass(e, r, t) {
61
- return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", {
61
+ return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
62
62
  writable: false
63
63
  }), e;
64
64
  }
@@ -342,12 +342,12 @@
342
342
  }
343
343
  }
344
344
 
345
- var _templateObject, _templateObject2;
345
+ var _templateObject$1, _templateObject2$1;
346
346
  // ID_Start (includes Other_ID_Start)
347
- var UnicodeIDStart = String.raw(_templateObject || (_templateObject = _taggedTemplateLiteral(["(?:[$A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D])"], ["(?:[$A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D])"])));
347
+ var UnicodeIDStart = String.raw(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteral(["(?:[$A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D])"], ["(?:[$A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D])"])));
348
348
 
349
349
  // ID_Continue (includes Other_ID_Continue)
350
- var UnicodeIDContinue = String.raw(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["(?:[$0-9A-Z_a-z\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF])"], ["(?:[$0-9A-Z_a-z\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF])"])));
350
+ var UnicodeIDContinue = String.raw(_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteral(["(?:[$0-9A-Z_a-z\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF])"], ["(?:[$0-9A-Z_a-z\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF])"])));
351
351
 
352
352
  var UnicodeIdentifiers = /*#__PURE__*/Object.freeze({
353
353
  __proto__: null,
@@ -1327,6 +1327,7 @@
1327
1327
  * sqlBusyTimeout: number,
1328
1328
  * sqlTrace: () => void,
1329
1329
  * sqlProfile: () => void,
1330
+ * escapeNULForSQLiteStatements: boolean,
1330
1331
  * createIndexes: boolean
1331
1332
  * }} ConfigValues
1332
1333
  */
@@ -1481,8 +1482,8 @@
1481
1482
  // Callback not used by default
1482
1483
  'sqlProfile',
1483
1484
  // Callback not used by default
1484
-
1485
- 'createIndexes'].forEach(function (prop) {
1485
+ // Defaults to true except in Node builds where we can preserve literal NUL with better-sqlite3
1486
+ 'escapeNULForSQLiteStatements', 'createIndexes'].forEach(function (prop) {
1486
1487
  /** @type {(val: any) => void} */
1487
1488
  var validator;
1488
1489
  if (Array.isArray(prop)) {
@@ -1563,7 +1564,8 @@
1563
1564
  * @returns {string}
1564
1565
  */
1565
1566
  function escapeSQLiteStatement(arg) {
1566
- return escapeUnmatchedSurrogates(arg.replaceAll('^', '^^').replaceAll('\0', '^0'));
1567
+ var escaped = arg.replaceAll('^', '^^');
1568
+ return escapeUnmatchedSurrogates(CFG.escapeNULForSQLiteStatements === false ? escaped : escaped.replaceAll('\0', '^0'));
1567
1569
  }
1568
1570
 
1569
1571
  /**
@@ -1571,7 +1573,11 @@
1571
1573
  * @returns {string}
1572
1574
  */
1573
1575
  function unescapeSQLiteResponse(arg) {
1574
- return unescapeUnmatchedSurrogates(arg).replaceAll(/(\^+)0/g, function (_, esc) {
1576
+ var unescaped = unescapeUnmatchedSurrogates(arg);
1577
+ if (CFG.escapeNULForSQLiteStatements === false) {
1578
+ return unescaped.replaceAll('^^', '^');
1579
+ }
1580
+ return unescaped.replaceAll(/(\^+)0/g, function (_, esc) {
1575
1581
  return esc.length % 2 ? esc.slice(1) + '\0' : _;
1576
1582
  }).replaceAll('^^', '^');
1577
1583
  }
@@ -1972,6 +1978,56 @@
1972
1978
  return v === null || v === undefined;
1973
1979
  }
1974
1980
 
1981
+ /**
1982
+ * Cursor/request continuation chains can call each other synchronously
1983
+ * (e.g. walking a large prefetched buffer, or advancing many interleaved
1984
+ * cursors in one transaction) which, for large enough record counts, can
1985
+ * exceed the JS engine's call stack ("Maximum call stack size exceeded").
1986
+ *
1987
+ * This can't be fixed by deferring continuations to a microtask/macrotask:
1988
+ * the transaction machinery synchronously checks (once the current call
1989
+ * stack unwinds) whether there are any pending requests left in order to
1990
+ * decide it's safe to commit; deferring a continuation opens a real gap in
1991
+ * which that check runs first and the transaction completes prematurely,
1992
+ * with the deferred continuation then acting on an already-finished
1993
+ * transaction (a hang, since it can never resolve).
1994
+ *
1995
+ * Instead, this implements a true trampoline: the first call starts a
1996
+ * synchronous work queue and drains it in a flat loop; any call made while
1997
+ * already draining (i.e. a continuation triggering another continuation)
1998
+ * is simply appended to that same queue and returns immediately instead of
1999
+ * recursing. This keeps everything synchronous (so no completion-check
2000
+ * race is introduced) while preventing the call stack from growing with
2001
+ * each successive continuation.
2002
+ */
2003
+ var continuationState = {
2004
+ /** @type {Array<() => void>|null} */
2005
+ queue: null
2006
+ };
2007
+
2008
+ /**
2009
+ * @param {() => void} fn
2010
+ * @returns {void}
2011
+ */
2012
+ function runContinuationSafely(fn) {
2013
+ if (continuationState.queue) {
2014
+ continuationState.queue.push(fn);
2015
+ return;
2016
+ }
2017
+ var queue = [fn];
2018
+ continuationState.queue = queue;
2019
+ try {
2020
+ while (queue.length) {
2021
+ var next = /** @type {() => void} */queue.shift();
2022
+ next();
2023
+ }
2024
+ } finally {
2025
+ // Ensure a thrown exception can't leave the queue permanently
2026
+ // stuck (which would silently swallow all future continuations).
2027
+ continuationState.queue = null;
2028
+ }
2029
+ }
2030
+
1975
2031
  /**
1976
2032
  * @typedef {Error} DebuggingError
1977
2033
  */
@@ -2442,11 +2498,11 @@
2442
2498
  // eslint-disable-next-line @stylistic/operator-linebreak -- Need JSDoc
2443
2499
  ?
2444
2500
  /**
2445
- * @param {string} name
2446
- * @param {string} message
2447
- * @param {ErrorLike} [error]
2448
- * @returns {DOMException}
2449
- */
2501
+ * @param {string} name
2502
+ * @param {string} message
2503
+ * @param {ErrorLike} [error]
2504
+ * @returns {DOMException}
2505
+ */
2450
2506
  function (name, message, error) {
2451
2507
  logError(name, message, error);
2452
2508
  return createNativeDOMException(name, message);
@@ -2454,11 +2510,11 @@
2454
2510
  // eslint-disable-next-line @stylistic/operator-linebreak -- Need JSDoc
2455
2511
  :
2456
2512
  /**
2457
- * @param {string} name
2458
- * @param {string} message
2459
- * @param {ErrorLike} [error]
2460
- * @returns {Error}
2461
- */
2513
+ * @param {string} name
2514
+ * @param {string} message
2515
+ * @param {ErrorLike} [error]
2516
+ * @returns {Error}
2517
+ */
2462
2518
  function (name, message, error) {
2463
2519
  logError(name, message, error);
2464
2520
  return createNonNativeDOMException(name, message);
@@ -2653,16 +2709,15 @@
2653
2709
  /* eslint-disable promise/prefer-await-to-callbacks -- Needed for API */
2654
2710
  /* eslint-disable promise/catch-or-return, n/callback-return,
2655
2711
  promise/always-return -- Not needed */
2656
- /* eslint-disable unicorn/no-this-assignment -- Clarity */
2657
2712
  // Since [immediate](https://github.com/calvinmetcalf/immediate) is
2658
2713
  // not doing the trick for our WebSQL transactions (at least in Node),
2659
2714
  // we are forced to make the promises run fully synchronously.
2660
2715
 
2661
- // Todo: Use ES6 classes
2662
-
2716
+ /* eslint-disable jsdoc/reject-any-type -- Truly arbitrary */
2663
2717
  /**
2664
2718
  * @typedef {any} ArbitraryValue
2665
2719
  */
2720
+ /* eslint-enable jsdoc/reject-any-type -- Truly arbitrary */
2666
2721
 
2667
2722
  /**
2668
2723
  * @callback Resolve
@@ -2722,209 +2777,235 @@
2722
2777
  REJECTED = 1;
2723
2778
 
2724
2779
  /**
2725
- * @class
2726
- * @param {(
2727
- * resolve: (value: ArbitraryValue | PromiseLike<ArbitraryValue>) => void,
2728
- * reject: (reason?: any) => void
2729
- * ) => void} fn
2730
- */
2731
- function SyncPromise(fn) {
2732
- var that = this;
2733
- // Value, this will be set to either a resolved value or rejected reason
2734
- that.v = 0;
2735
- // State of the promise
2736
- that.s = PENDING;
2737
- // Callbacks c[0] is fulfillment and c[1] contains rejection callbacks
2738
- /** @type {Callbacks|null} */
2739
- that.c = [[], []];
2780
+ *
2781
+ */
2782
+ var SyncPromise = /*#__PURE__*/function () {
2740
2783
  /**
2741
- *
2742
- * @param {ArbitraryValue} val
2743
- * @param {0|1} state
2744
- * @returns {void}
2784
+ * @param {(
2785
+ * resolve: (value: ArbitraryValue | PromiseLike<ArbitraryValue>) => void,
2786
+ * reject: (reason?: ArbitraryValue) => void
2787
+ * ) => void} fn
2745
2788
  */
2746
- function transist(val, state) {
2747
- that.v = val;
2748
- that.s = state;
2749
-
2750
- // console.log('state', state);
2751
- /** @type {Callbacks} */
2752
- that.c[state].forEach(function (func) {
2753
- func(val);
2754
- });
2755
- // Release memory, but if no handlers have been added, as we
2756
- // assume that we will resolve/reject (truly) synchronously
2757
- // and thus we avoid flagging checks about whether we've
2758
- // already resolved/rejected.
2759
- if (/** @type {Callbacks} */that.c[state].length) {
2760
- that.c = null;
2761
- }
2762
- }
2789
+ function SyncPromise(fn) {
2790
+ var _this = this;
2791
+ _classCallCheck(this, SyncPromise);
2792
+ // Value, this will be set to either a resolved value or rejected reason
2793
+ _defineProperty(this, "v", 0);
2794
+ // State of the promise
2795
+ this.s = PENDING;
2796
+ // Callbacks c[0] is fulfillment and c[1] contains rejection callbacks
2797
+ /** @type {Callbacks|null} */
2798
+ this.c = [[], []];
2799
+ /**
2800
+ *
2801
+ * @param {ArbitraryValue} val
2802
+ * @param {0|1} state
2803
+ * @returns {void}
2804
+ */
2805
+ var transist = function transist(val, state) {
2806
+ _this.v = val;
2807
+ _this.s = state;
2763
2808
 
2764
- /** @type {Resolve} */
2765
- function resolve(val) {
2766
- if (!that.c) ; else if (isPromise(val)) {
2767
- addReject(val.then(resolve), reject);
2768
- } else {
2769
- transist(val, FULFILLED);
2770
- }
2771
- }
2809
+ // console.log('state', state);
2810
+ /** @type {Callbacks} */
2811
+ _this.c[state].forEach(function (func) {
2812
+ func(val);
2813
+ });
2814
+ // Release memory, but if no handlers have been added, as we
2815
+ // assume that we will resolve/reject (truly) synchronously
2816
+ // and thus we avoid flagging checks about whether we've
2817
+ // already resolved/rejected.
2818
+ if (/** @type {Callbacks} */_this.c[state].length) {
2819
+ _this.c = null;
2820
+ }
2821
+ };
2772
2822
 
2773
- /** @type {Reject} */
2774
- function reject(reason) {
2775
- if (!that.c) ; else if (isPromise(reason)) {
2776
- addReject(reason.then(reject), reject);
2777
- } else {
2778
- transist(reason, REJECTED);
2823
+ /** @type {Resolve} */
2824
+ var _resolve = function resolve(val) {
2825
+ if (!_this.c) ; else if (isPromise(val)) {
2826
+ addReject(val.then(_resolve), _reject);
2827
+ } else {
2828
+ transist(val, FULFILLED);
2829
+ }
2830
+ };
2831
+
2832
+ /** @type {Reject} */
2833
+ var _reject = function reject(reason) {
2834
+ if (!_this.c) ; else if (isPromise(reason)) {
2835
+ addReject(reason.then(_reject), _reject);
2836
+ } else {
2837
+ transist(reason, REJECTED);
2838
+ }
2839
+ };
2840
+ try {
2841
+ fn(_resolve, _reject);
2842
+ } catch (err) {
2843
+ _reject(err);
2779
2844
  }
2780
2845
  }
2781
- try {
2782
- fn(resolve, reject);
2783
- } catch (err) {
2784
- reject(err);
2785
- }
2786
- }
2787
2846
 
2788
- /* eslint-disable unicorn/no-thenable -- Promise API */
2789
- /**
2790
- * @param {((value: ArbitraryValue) => ArbitraryValue)|null|undefined} [cb]
2791
- * @param {(reason: any) => PromiseLike<never>} [errBack]
2792
- * @returns {SyncPromise}
2793
- */
2794
- SyncPromise.prototype.then = function (cb, errBack) {
2795
- /* eslint-enable unicorn/no-thenable -- Promise API */
2796
- var that = this;
2797
- return new SyncPromise(/** @type {ResolveReject} */
2798
- function (resolve, reject) {
2799
- var rej = typeof errBack === 'function' ? errBack : reject;
2847
+ /* eslint-disable unicorn/no-thenable -- Promise API */
2848
+ /**
2849
+ * @param {((value: ArbitraryValue) => ArbitraryValue)|null|undefined} [cb]
2850
+ * @param {(reason: ArbitraryValue) => PromiseLike<never>} [errBack]
2851
+ * @returns {SyncPromise}
2852
+ */
2853
+ return _createClass(SyncPromise, [{
2854
+ key: "then",
2855
+ value: function then(cb, errBack) {
2856
+ var _this2 = this;
2857
+ /* eslint-enable unicorn/no-thenable -- Promise API */
2858
+ return new SyncPromise(/** @type {ResolveReject} */
2859
+ function (resolve, reject) {
2860
+ var rej = typeof errBack === 'function' ? errBack : reject;
2800
2861
 
2801
- /** @type {Settle} */
2802
- function settle() {
2803
- try {
2804
- resolve(cb ? cb(that.v) : that.v);
2805
- } catch (e) {
2806
- rej(e);
2807
- }
2808
- }
2809
- if (that.s === FULFILLED) {
2810
- settle();
2811
- } else if (that.s === REJECTED) {
2812
- rej(that.v);
2813
- } else {
2814
- /** @type {Callbacks} */that.c[FULFILLED].push(settle);
2815
- /** @type {Callbacks} */
2816
- that.c[REJECTED].push(rej);
2862
+ /** @type {Settle} */
2863
+ var settle = function settle() {
2864
+ try {
2865
+ resolve(cb ? cb(_this2.v) : _this2.v);
2866
+ } catch (e) {
2867
+ rej(e);
2868
+ }
2869
+ };
2870
+ if (_this2.s === FULFILLED) {
2871
+ settle();
2872
+ } else if (_this2.s === REJECTED) {
2873
+ rej(_this2.v);
2874
+ } else {
2875
+ /** @type {Callbacks} */_this2.c[FULFILLED].push(settle);
2876
+ /** @type {Callbacks} */
2877
+ _this2.c[REJECTED].push(rej);
2878
+ }
2879
+ });
2817
2880
  }
2818
- });
2819
- };
2820
2881
 
2821
- /**
2822
- * @param {(reason: any) => PromiseLike<never>|null|undefined} cb
2823
- * @returns {SyncPromise}
2824
- */
2825
- SyncPromise.prototype.catch = function (cb) {
2826
- var that = this;
2827
- return new SyncPromise(/** @type {ResolveReject} */
2828
- function (resolve, reject) {
2829
2882
  /**
2830
- * @returns {void}
2883
+ * @param {(reason: ArbitraryValue) => PromiseLike<never>|null|undefined} cb
2884
+ * @returns {SyncPromise}
2831
2885
  */
2832
- function settle() {
2833
- try {
2834
- resolve(cb(that.v));
2835
- } catch (e) {
2836
- reject(e);
2837
- }
2838
- }
2839
- if (that.s === REJECTED) {
2840
- settle();
2841
- } else if (that.s === FULFILLED) {
2842
- resolve(that.v);
2843
- } else {
2844
- /** @type {Callbacks} */that.c[REJECTED].push(settle);
2845
- /** @type {Callbacks} */
2846
- that.c[FULFILLED].push(resolve);
2886
+ }, {
2887
+ key: "catch",
2888
+ value: function _catch(cb) {
2889
+ var _this3 = this;
2890
+ return new SyncPromise(/** @type {ResolveReject} */
2891
+ function (resolve, reject) {
2892
+ /**
2893
+ * @returns {void}
2894
+ */
2895
+ var settle = function settle() {
2896
+ try {
2897
+ resolve(cb(_this3.v));
2898
+ } catch (e) {
2899
+ reject(e);
2900
+ }
2901
+ };
2902
+ if (_this3.s === REJECTED) {
2903
+ settle();
2904
+ } else if (_this3.s === FULFILLED) {
2905
+ resolve(_this3.v);
2906
+ } else {
2907
+ /** @type {Callbacks} */_this3.c[REJECTED].push(settle);
2908
+ /** @type {Callbacks} */
2909
+ _this3.c[FULFILLED].push(resolve);
2910
+ }
2911
+ });
2847
2912
  }
2848
- });
2849
- };
2850
-
2851
- /**
2852
- * @param {unknown[]|[]} promises
2853
- * @returns {SyncPromise}
2854
- */
2855
- SyncPromise.all = function (promises) {
2856
- return new SyncPromise(/** @type {ResolveReject} */
2857
- function (resolve, reject) {
2858
- var l = promises.length;
2859
- /** @type {ArbitraryValue[]} */
2860
- var newPromises = [];
2861
- if (!l) {
2862
- resolve(newPromises);
2863
- return;
2913
+ }], [{
2914
+ key: "all",
2915
+ value:
2916
+ /**
2917
+ * @param {unknown[]|[]} promises
2918
+ * @returns {SyncPromise}
2919
+ */
2920
+ function all(promises) {
2921
+ return new SyncPromise(/** @type {ResolveReject} */
2922
+ function (resolve, reject) {
2923
+ var l = promises.length;
2924
+ /** @type {ArbitraryValue[]} */
2925
+ var newPromises = [];
2926
+ if (!l) {
2927
+ resolve(newPromises);
2928
+ return;
2929
+ }
2930
+ promises.forEach(function (p, i) {
2931
+ if (isPromise(/** @type {PromiseLike<ArbitraryValue>} */p)) {
2932
+ addReject(/** @type {PromiseLike<ArbitraryValue>} */p.then(/** @type {OnFulfilled} */
2933
+ function (res) {
2934
+ newPromises[i] = res;
2935
+ --l;
2936
+ if (!l) {
2937
+ resolve(newPromises);
2938
+ }
2939
+ }), reject);
2940
+ } else {
2941
+ newPromises[i] = p;
2942
+ --l;
2943
+ if (!l) {
2944
+ resolve(promises);
2945
+ }
2946
+ }
2947
+ });
2948
+ });
2864
2949
  }
2865
- promises.forEach(function (p, i) {
2866
- if (isPromise(/** @type {PromiseLike<any>} */p)) {
2867
- addReject(/** @type {PromiseLike<any>} */p.then(/** @type {OnFulfilled} */
2868
- function (res) {
2869
- newPromises[i] = res;
2870
- --l || resolve(newPromises);
2871
- }), reject);
2872
- } else {
2873
- newPromises[i] = p;
2874
- --l || resolve(promises);
2875
- }
2876
- });
2877
- });
2878
- };
2879
2950
 
2880
- /**
2881
- * @param {unknown[]|[]} promises
2882
- * @returns {SyncPromise}
2883
- */
2884
- SyncPromise.race = function (promises) {
2885
- var resolved = false;
2886
- return new SyncPromise(/** @type {ResolveReject} */
2887
- function (resolve, reject) {
2888
- promises.some(function (p, i) {
2889
- if (isPromise(/** @type {PromiseLike<any>} */p)) {
2890
- addReject(/** @type {PromiseLike<any>} */p.then(/** @type {OnFulfilled} */
2891
- function (res) {
2892
- if (resolved) {
2893
- return;
2951
+ /**
2952
+ * @param {unknown[]|[]} promises
2953
+ * @returns {SyncPromise}
2954
+ */
2955
+ }, {
2956
+ key: "race",
2957
+ value: function race(promises) {
2958
+ var resolved = false;
2959
+ return new SyncPromise(/** @type {ResolveReject} */
2960
+ function (resolve, reject) {
2961
+ // eslint-disable-next-line @stylistic/max-len -- Long
2962
+ // eslint-disable-next-line unicorn/no-unused-array-method-return -- Shortcuts
2963
+ promises.some(function (p) {
2964
+ if (isPromise(/** @type {PromiseLike<ArbitraryValue>} */p)) {
2965
+ addReject(/** @type {PromiseLike<ArbitraryValue>} */p.then(/** @type {OnFulfilled} */
2966
+ function (res) {
2967
+ if (resolved) {
2968
+ return;
2969
+ }
2970
+ resolve(res);
2971
+ resolved = true;
2972
+ }), reject);
2973
+ return false;
2894
2974
  }
2895
- resolve(res);
2975
+ resolve(p);
2896
2976
  resolved = true;
2897
- }), reject);
2898
- return false;
2899
- }
2900
- resolve(p);
2901
- resolved = true;
2902
- return true;
2903
- });
2904
- });
2905
- };
2977
+ return true;
2978
+ });
2979
+ });
2980
+ }
2906
2981
 
2907
- /**
2908
- * @param {ArbitraryValue} val
2909
- * @returns {SyncPromise}
2910
- */
2911
- SyncPromise.resolve = function (val) {
2912
- return new SyncPromise(/** @type {ResolveReject} */
2913
- function (resolve, reject) {
2914
- resolve(val);
2915
- });
2916
- };
2982
+ /**
2983
+ * @param {ArbitraryValue} val
2984
+ * @returns {SyncPromise}
2985
+ */
2986
+ }, {
2987
+ key: "resolve",
2988
+ value: function resolve(val) {
2989
+ return new SyncPromise(/** @type {ResolveReject} */
2990
+ function (resolve) {
2991
+ resolve(val);
2992
+ });
2993
+ }
2917
2994
 
2918
- /**
2919
- * @param {ArbitraryValue} val
2920
- * @returns {SyncPromise}
2921
- */
2922
- SyncPromise.reject = function (val) {
2923
- return new SyncPromise(/** @type {ResolveReject} */
2924
- function (resolve, reject) {
2925
- reject(val);
2926
- });
2927
- };
2995
+ /**
2996
+ * @param {ArbitraryValue} val
2997
+ * @returns {SyncPromise}
2998
+ */
2999
+ }, {
3000
+ key: "reject",
3001
+ value: function reject(val) {
3002
+ return new SyncPromise(/** @type {ResolveReject} */
3003
+ function (resolve, reject) {
3004
+ reject(val);
3005
+ });
3006
+ }
3007
+ }]);
3008
+ }();
2928
3009
 
2929
3010
  /**
2930
3011
  * Compares two keys.
@@ -2961,6 +3042,8 @@
2961
3042
  return result;
2962
3043
  }
2963
3044
 
3045
+ var _templateObject, _templateObject2;
3046
+
2964
3047
  /**
2965
3048
  * @typedef {NodeJS.TypedArray|DataView} ArrayBufferView
2966
3049
  */
@@ -2990,14 +3073,14 @@
2990
3073
  */
2991
3074
 
2992
3075
  /**
2993
- * @typedef {object} KeyValueObject
2994
- * @property {KeyType|"NaN"|"null"|"undefined"|"boolean"|"object"|"symbol"|
2995
- * "function"|"bigint"} type If not `KeyType`, indicates invalid value
2996
- * @property {Value} [value]
2997
- * @property {boolean} [invalid]
2998
- * @property {string} [message]
2999
- * @todo Specify acceptable `value` more precisely
3000
- */
3076
+ * @typedef {object} KeyValueObject
3077
+ * @property {KeyType|"NaN"|"null"|"undefined"|"boolean"|"object"|"symbol"|
3078
+ * "function"|"bigint"} type If not `KeyType`, indicates invalid value
3079
+ * @property {Value} [value]
3080
+ * @property {boolean} [invalid]
3081
+ * @property {string} [message]
3082
+ * @todo Specify acceptable `value` more precisely
3083
+ */
3001
3084
 
3002
3085
  /**
3003
3086
  * @typedef {number|string|Date|ArrayBuffer} ValueTypePrimitive
@@ -3236,14 +3319,22 @@
3236
3319
  _iterator.f();
3237
3320
  }
3238
3321
  encoded.push(keyTypeToEncodedChar.invalid + '-'); // append an extra item, so empty arrays sort correctly
3239
- return keyTypeToEncodedChar.array + '-' + JSON.stringify(encoded);
3322
+ var encodedKey = JSON.stringify(encoded);
3323
+ if (CFG.escapeNULForSQLiteStatements === false) {
3324
+ encodedKey = encodedKey.replaceAll(String.raw(_templateObject || (_templateObject = _taggedTemplateLiteral(["\0"], ["\\u0000"]))), '\0');
3325
+ }
3326
+ return keyTypeToEncodedChar.array + '-' + encodedKey;
3240
3327
  },
3241
3328
  /**
3242
3329
  * @param {string} key
3243
3330
  * @returns {ValueTypeArray}
3244
3331
  */
3245
3332
  decode: function decode(key) {
3246
- var decoded = JSON.parse(key.slice(2));
3333
+ var decodedKey = key.slice(2);
3334
+ if (CFG.escapeNULForSQLiteStatements === false) {
3335
+ decodedKey = decodedKey.replaceAll('\0', String.raw(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\0"], ["\\u0000"]))));
3336
+ }
3337
+ var decoded = JSON.parse(decodedKey);
3247
3338
  decoded.pop(); // remove the extra item
3248
3339
  for (var i = 0; i < decoded.length; i++) {
3249
3340
  var item = decoded[i];
@@ -3429,10 +3520,10 @@
3429
3520
  }
3430
3521
 
3431
3522
  /**
3432
- * Currently not in use.
3433
- * @param {Value} input
3434
- * @returns {KeyValueObject}
3435
- */
3523
+ * Currently not in use.
3524
+ * @param {Value} input
3525
+ * @returns {KeyValueObject}
3526
+ */
3436
3527
  function convertValueToMultiEntryKey(input) {
3437
3528
  return convertValueToKeyValueDecoded(input, null, true, true);
3438
3529
  }
@@ -3467,17 +3558,17 @@
3467
3558
  }
3468
3559
 
3469
3560
  /**
3470
- * Shortcut utility to avoid returning full keys from `convertValueToKey`
3471
- * and subsequent need to process in calling code unless `fullKeys` is
3472
- * set; may throw.
3473
- * @param {Value} input
3474
- * @param {Value[]|null} [seen]
3475
- * @param {boolean} [multiEntry]
3476
- * @param {boolean} [fullKeys]
3477
- * @throws {TypeError} See `getCopyBytesHeldByBufferSource`
3478
- * @todo Document other allowable `input`
3479
- * @returns {KeyValueObject}
3480
- */
3561
+ * Shortcut utility to avoid returning full keys from `convertValueToKey`
3562
+ * and subsequent need to process in calling code unless `fullKeys` is
3563
+ * set; may throw.
3564
+ * @param {Value} input
3565
+ * @param {Value[]|null} [seen]
3566
+ * @param {boolean} [multiEntry]
3567
+ * @param {boolean} [fullKeys]
3568
+ * @throws {TypeError} See `getCopyBytesHeldByBufferSource`
3569
+ * @todo Document other allowable `input`
3570
+ * @returns {KeyValueObject}
3571
+ */
3481
3572
  function convertValueToKeyValueDecoded(input, seen, multiEntry, fullKeys) {
3482
3573
  seen || (seen = []);
3483
3574
  if (seen.includes(input)) {
@@ -3633,12 +3724,12 @@
3633
3724
  }
3634
3725
 
3635
3726
  /**
3636
- * An internal utility.
3637
- * @param {Value} input
3638
- * @param {Value[]|null|undefined} [seen]
3639
- * @throws {DOMException} `DataError`
3640
- * @returns {KeyValueObject}
3641
- */
3727
+ * An internal utility.
3728
+ * @param {Value} input
3729
+ * @param {Value[]|null|undefined} [seen]
3730
+ * @throws {DOMException} `DataError`
3731
+ * @returns {KeyValueObject}
3732
+ */
3642
3733
  function convertValueToKeyRethrowingAndIfInvalid(input, seen) {
3643
3734
  var key = convertValueToKey(input, seen);
3644
3735
  if (key.invalid) {
@@ -3659,26 +3750,26 @@
3659
3750
  return extractKeyValueDecodedFromValueUsingKeyPath(value, keyPath, multiEntry, true);
3660
3751
  }
3661
3752
  /**
3662
- * Not currently in use.
3663
- * @param {Value} value
3664
- * @param {KeyPath} keyPath
3665
- * @param {boolean} multiEntry
3666
- * @returns {KeyPathEvaluateValue}
3667
- */
3753
+ * Not currently in use.
3754
+ * @param {Value} value
3755
+ * @param {KeyPath} keyPath
3756
+ * @param {boolean} multiEntry
3757
+ * @returns {KeyPathEvaluateValue}
3758
+ */
3668
3759
  function evaluateKeyPathOnValue(value, keyPath, multiEntry) {
3669
3760
  return evaluateKeyPathOnValueToDecodedValue(value, keyPath);
3670
3761
  }
3671
3762
 
3672
3763
  /**
3673
- * May throw, return `{failure: true}` (e.g., non-object on keyPath resolution)
3674
- * or `{invalid: true}` (e.g., `NaN`).
3675
- * @param {Value} value
3676
- * @param {KeyPath} keyPath
3677
- * @param {boolean} [multiEntry]
3678
- * @param {boolean} [fullKeys]
3679
- * @returns {KeyValueObject|KeyPathEvaluateValue}
3680
- * @todo Document other possible return?
3681
- */
3764
+ * May throw, return `{failure: true}` (e.g., non-object on keyPath resolution)
3765
+ * or `{invalid: true}` (e.g., `NaN`).
3766
+ * @param {Value} value
3767
+ * @param {KeyPath} keyPath
3768
+ * @param {boolean} [multiEntry]
3769
+ * @param {boolean} [fullKeys]
3770
+ * @returns {KeyValueObject|KeyPathEvaluateValue}
3771
+ * @todo Document other possible return?
3772
+ */
3682
3773
  function extractKeyValueDecodedFromValueUsingKeyPath(value, keyPath, multiEntry, fullKeys) {
3683
3774
  var r = evaluateKeyPathOnValueToDecodedValue(value, keyPath);
3684
3775
  if (r.failure) {
@@ -3908,11 +3999,11 @@
3908
3999
  }
3909
4000
 
3910
4001
  /**
3911
- * Not currently in use but keeping for spec parity.
3912
- * @param {Key} key
3913
- * @throws {Error} Upon a "bad key"
3914
- * @returns {ValueType}
3915
- */
4002
+ * Not currently in use but keeping for spec parity.
4003
+ * @param {Key} key
4004
+ * @throws {Error} Upon a "bad key"
4005
+ * @returns {ValueType}
4006
+ */
3916
4007
  function convertKeyToValue(key) {
3917
4008
  var type = key.type,
3918
4009
  value = key.value;
@@ -4004,10 +4095,10 @@
4004
4095
  */
4005
4096
 
4006
4097
  /**
4007
- * @callback SQLFailureCallback
4008
- * @param {DOMException|Error} exception
4009
- * @returns {void}
4010
- */
4098
+ * @callback SQLFailureCallback
4099
+ * @param {DOMException|Error} exception
4100
+ * @returns {void}
4101
+ */
4011
4102
 
4012
4103
  /**
4013
4104
  *
@@ -4176,11 +4267,11 @@
4176
4267
 
4177
4268
  /**
4178
4269
  * @typedef {globalThis.IDBKeyRange & {
4179
- * __lowerCached: string|null|false,
4180
- * __upperCached: string|null|false,
4181
- * __lowerOpen: boolean,
4182
- * }} IDBKeyRangeFull
4183
- */
4270
+ * __lowerCached: string|null|false,
4271
+ * __upperCached: string|null|false,
4272
+ * __lowerOpen: boolean,
4273
+ * }} IDBKeyRangeFull
4274
+ */
4184
4275
 
4185
4276
  /**
4186
4277
  * The IndexedDB KeyRange object.
@@ -4707,6 +4798,7 @@
4707
4798
  * },
4708
4799
  * __requestsFinished: boolean,
4709
4800
  * __transFinishedCb: (err: boolean, cb: ((bool?: boolean) => void)) => void,
4801
+ * __callTransFinishedCb: (err: boolean, cb: ((bool?: boolean) => void)) => void,
4710
4802
  * __transactionEndCallback: () => void,
4711
4803
  * __transactionFinished: boolean,
4712
4804
  * __completed: boolean,
@@ -4816,6 +4908,35 @@
4816
4908
  IDBTransaction.prototype.__transFinishedCb = function (err, cb) {
4817
4909
  cb(Boolean(err));
4818
4910
  };
4911
+
4912
+ /**
4913
+ * In Node, the real (SQL-commit-capable) `__transFinishedCb` is only
4914
+ * installed once the underlying WebSQL driver's own SQL-queue-idle check
4915
+ * has fired at least once for this transaction (asynchronously, via the
4916
+ * `nonstandardTransCb` passed to `db.transaction`/`.readTransaction`).
4917
+ * Since our own request processing can now finish synchronously (e.g., a
4918
+ * trivial upgrade using a synchronous SQL driver), it is possible to reach
4919
+ * transaction completion here before that has happened, in which case
4920
+ * `__transFinishedCb` is still the non-committing default above. Calling
4921
+ * that default directly would silently skip the actual SQL commit and
4922
+ * leave the underlying WebSQL transaction "running" forever, hanging any
4923
+ * later transaction on that same database connection. So, if the real
4924
+ * callback isn't installed yet, defer and retry until it is.
4925
+ * @this {IDBTransactionFull}
4926
+ * @param {boolean} err
4927
+ * @param {(bool?: boolean) => void} cb
4928
+ * @returns {void}
4929
+ */
4930
+ IDBTransaction.prototype.__callTransFinishedCb = function (err, cb) {
4931
+ var me = this;
4932
+ if (me.__transFinishedCb === IDBTransaction.prototype.__transFinishedCb) {
4933
+ setTimeout(function () {
4934
+ me.__callTransFinishedCb(err, cb);
4935
+ }, 0);
4936
+ return;
4937
+ }
4938
+ me.__transFinishedCb(err, cb);
4939
+ };
4819
4940
  /**
4820
4941
  * @this {IDBTransactionFull}
4821
4942
  * @returns {void}
@@ -4875,7 +4996,7 @@
4875
4996
  me.__abortTransaction(createDOMException('AbortError', 'A request was aborted (in user handler after success).'));
4876
4997
  return;
4877
4998
  }
4878
- executeNextRequest();
4999
+ runContinuationSafely(executeNextRequest);
4879
5000
  }
4880
5001
 
4881
5002
  /**
@@ -4950,7 +5071,9 @@
4950
5071
  try {
4951
5072
  q = me.__requests[i];
4952
5073
  if (!q.req) {
4953
- q.op(tx, q.args, executeNextRequest, error);
5074
+ q.op(tx, q.args, function () {
5075
+ return runContinuationSafely(executeNextRequest);
5076
+ }, error);
4954
5077
  return;
4955
5078
  }
4956
5079
  if (q.req.__done) {
@@ -5416,10 +5539,10 @@
5416
5539
  };
5417
5540
 
5418
5541
  /**
5419
- * Used by our `EventTarget.prototype` library to implement bubbling/capturing.
5542
+ * Used by our `EventTarget.prototype` library to implement bubbling/capturing.
5420
5543
  * @this {IDBTransactionFull}
5421
- * @returns {import('./IDBDatabase.js').IDBDatabaseFull}
5422
- */
5544
+ * @returns {import('./IDBDatabase.js').IDBDatabaseFull}
5545
+ */
5423
5546
  IDBTransaction.prototype.__getParent = function () {
5424
5547
  return this.db;
5425
5548
  };
@@ -5455,7 +5578,7 @@
5455
5578
  }).then(r, n);
5456
5579
  });
5457
5580
  }, TypesonPromise.prototype.catch = function (e) {
5458
- return this.then(function () {}, e);
5581
+ return this.then(void 0, e);
5459
5582
  }, TypesonPromise.resolve = function (e) {
5460
5583
  return new TypesonPromise(function (t) {
5461
5584
  t(e);
@@ -5515,26 +5638,31 @@
5515
5638
  function unescapeKeyPathComponent(e) {
5516
5639
  return e.replaceAll("~1", ".").replaceAll("~0", "~").replace(/^''$/, "").replaceAll("''''", "''");
5517
5640
  }
5518
- function getByKeyPath(e, t) {
5519
- if ("" === t) return e;
5520
- if (null === e || "object" != _typeof$1(e)) throw new TypeError("Unexpected non-object type");
5521
- var r = t.indexOf(".");
5522
- if (-1 !== r) {
5523
- var _n = e[unescapeKeyPathComponent(t.slice(0, r))];
5524
- return void 0 === _n ? void 0 : getByKeyPath(_n, t.slice(r + 1));
5641
+ function getByKeyPath(t, r, n) {
5642
+ if ("" === r) return t;
5643
+ if (null === t || "object" != _typeof$1(t)) throw new TypeError("Unexpected non-object type");
5644
+ var o = r.indexOf("."),
5645
+ s = unescapeKeyPathComponent(-1 === o ? r : r.slice(0, o));
5646
+ if (e(t, s)) {
5647
+ if (-1 !== o) {
5648
+ var _e = t[s];
5649
+ return void 0 === _e ? void 0 : getByKeyPath(_e, r.slice(o + 1));
5650
+ }
5651
+ return t[s];
5525
5652
  }
5526
- return e[unescapeKeyPathComponent(t)];
5527
5653
  }
5528
- function setAtKeyPath(e, t, r) {
5529
- if ("" === t) return r;
5530
- var n = e,
5531
- o = t;
5654
+ function setAtKeyPath(t, r, n, o) {
5655
+ if ("" === r) return n;
5656
+ var s = t,
5657
+ a = r;
5532
5658
  for (;;) {
5533
- if (!n || "object" != _typeof$1(n)) throw new TypeError("Unexpected non-object type");
5534
- if ("__proto__" === o) throw new TypeError("Invalid property");
5535
- var _t = o.indexOf(".");
5536
- if (-1 === _t) return n[unescapeKeyPathComponent(o)] = r, e;
5537
- n = n[unescapeKeyPathComponent(o.slice(0, _t))], o = o.slice(_t + 1);
5659
+ if (!s || "object" != _typeof$1(s)) throw new TypeError("Unexpected non-object type");
5660
+ var _r = a.indexOf("."),
5661
+ _i = unescapeKeyPathComponent(-1 === _r ? a : a.slice(0, _r));
5662
+ if ("__proto__" === _i) throw new TypeError("Invalid property");
5663
+ if (-1 === _r) return s[_i] = n, t;
5664
+ if (!e(s, _i)) throw new TypeError("Invalid property");
5665
+ s = s[_i], a = a.slice(_r + 1);
5538
5666
  }
5539
5667
  }
5540
5668
  function getJSONType(e) {
@@ -5544,11 +5672,19 @@
5544
5672
  * @file Typeson - JSON with types.
5545
5673
  * @license The MIT License (MIT)
5546
5674
  * @copyright (c) 2016-2018 David Fahlander, Brett Zamir
5547
- */
5675
+ */
5548
5676
  var r = Object.keys,
5549
5677
  n = Object.hasOwn,
5550
5678
  o = Array.isArray,
5551
5679
  s = ["type", "replaced", "iterateIn", "iterateUnsetNumeric", "addLength"];
5680
+ function setOwnEnumerable(e, t, r) {
5681
+ Object.defineProperty(e, t, {
5682
+ configurable: true,
5683
+ enumerable: true,
5684
+ value: r,
5685
+ writable: true
5686
+ });
5687
+ }
5552
5688
  function nestedPathsFirst(e, t) {
5553
5689
  var _e$keypath$match, _t$keypath$match;
5554
5690
  if ("" === e.keypath) return -1;
@@ -5619,13 +5755,17 @@
5619
5755
  key: "specialTypeNames",
5620
5756
  value: function specialTypeNames(e, t) {
5621
5757
  var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
5622
- return r.returnTypeNames = true, this.encapsulate(e, t, r);
5758
+ return this.encapsulate(e, t, _objectSpread2(_objectSpread2({}, r), {}, {
5759
+ returnTypeNames: true
5760
+ }));
5623
5761
  }
5624
5762
  }, {
5625
5763
  key: "rootTypeName",
5626
5764
  value: function rootTypeName(e, t) {
5627
5765
  var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
5628
- return r.iterateNone = true, this.encapsulate(e, t, r);
5766
+ return this.encapsulate(e, t, _objectSpread2(_objectSpread2({}, r), {}, {
5767
+ iterateNone: true
5768
+ }));
5629
5769
  }
5630
5770
  }, {
5631
5771
  key: "encapsulate",
@@ -5636,11 +5776,12 @@
5636
5776
  }, this.options), a),
5637
5777
  c = i.sync,
5638
5778
  y = {},
5639
- l = [],
5640
5779
  u = [],
5780
+ l = [],
5641
5781
  p = [],
5642
5782
  f = !("cyclic" in i) || i.cyclic,
5643
5783
  d = i.encapsulateObserver,
5784
+ m = i.encapsulateError,
5644
5785
  finish = function finish(e) {
5645
5786
  var t = Object.values(y);
5646
5787
  if (i.iterateNone) return t.length ? t[0] : getJSONType(e);
@@ -5673,22 +5814,29 @@
5673
5814
  _context2.n = 2;
5674
5815
  return Promise.all(r.map(/*#__PURE__*/function () {
5675
5816
  var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(r) {
5676
- var n, _t$splice, _t$splice2, o, _o, s, a, i, c, y, l, u, p, _t2;
5817
+ var n, _t$splice, _t$splice2, o, _o, s, a, i, c, y, u, l, p, _t, _t2, _t3, _t4;
5677
5818
  return _regenerator().w(function (_context) {
5678
5819
  while (1) switch (_context.n) {
5679
5820
  case 0:
5680
- n = [], _t$splice = t.splice(0, 1), _t$splice2 = _slicedToArray(_t$splice, 1), o = _t$splice2[0], _o = _slicedToArray(o, 7), s = _o[0], a = _o[2], i = _o[3], c = _o[4], y = _o[5], l = _o[6], u = _encapsulate2(s, r, a, i, n, true, l), p = hasConstructorOf(u, TypesonPromise);
5821
+ n = [], _t$splice = t.splice(0, 1), _t$splice2 = _slicedToArray(_t$splice, 1), o = _t$splice2[0], _o = _slicedToArray(o, 7), s = _o[0], a = _o[2], i = _o[3], c = _o[4], y = _o[5], u = _o[6], l = _encapsulate2(s, r, a, i, n, true, u), p = hasConstructorOf(l, TypesonPromise);
5681
5822
  if (!(s && p)) {
5682
5823
  _context.n = 2;
5683
5824
  break;
5684
5825
  }
5826
+ _t2 = setOwnEnumerable;
5827
+ _t3 = c;
5828
+ _t4 = y;
5685
5829
  _context.n = 1;
5686
- return u.p;
5830
+ return l.p;
5687
5831
  case 1:
5688
- _t2 = _context.v;
5689
- return _context.a(2, (c[y] = _t2, _checkPromises(e, n)));
5832
+ _t2(_t3, _t4, _context.v);
5833
+ _t = _checkPromises(e, n);
5834
+ _context.n = 3;
5835
+ break;
5690
5836
  case 2:
5691
- return _context.a(2, (s ? c[y] = u : e = p ? u.p : u, _checkPromises(e, n)));
5837
+ _t = (s ? setOwnEnumerable(c, y, l) : e = p ? l.p : l, _checkPromises(e, n));
5838
+ case 3:
5839
+ return _context.a(2, _t);
5692
5840
  }
5693
5841
  }, _callee);
5694
5842
  }));
@@ -5717,61 +5865,88 @@
5717
5865
  });
5718
5866
  },
5719
5867
  _encapsulate2 = function _encapsulate(e, t, s, a, c, p, f) {
5720
- var m,
5721
- h = {};
5722
- var g = d ? function (r) {
5723
- var _ref2;
5724
- var n = (_ref2 = f !== null && f !== void 0 ? f : a.type) !== null && _ref2 !== void 0 ? _ref2 : getJSONType(t);
5725
- d(Object.assign(r !== null && r !== void 0 ? r : h, {
5726
- keypath: e,
5727
- value: t,
5728
- cyclic: s,
5729
- stateObj: a,
5730
- promisesData: c,
5731
- resolvingTypesonPromise: p,
5732
- awaitingTypesonPromise: hasConstructorOf(t, TypesonPromise)
5733
- }, {
5734
- type: n
5735
- }));
5736
- } : null;
5737
- if (["string", "boolean", "number", "undefined"].includes(_typeof$1(t))) return void 0 === t || t === 1 / 0 || 0 === t || t === -1 / 0 || Number.isNaN(t) ? (m = a.replaced ? t : replace(e, t, a, c, false, p, g), m !== t && (h = {
5738
- replaced: m
5739
- })) : m = t, g && g(), m;
5740
- if (null === t) return g && g(), t;
5868
+ var h,
5869
+ g = {};
5870
+ var b = d ? function (r) {
5871
+ var _ref2;
5872
+ var n = (_ref2 = f !== null && f !== void 0 ? f : a.type) !== null && _ref2 !== void 0 ? _ref2 : getJSONType(t);
5873
+ d(Object.assign(r !== null && r !== void 0 ? r : g, {
5874
+ keypath: e,
5875
+ value: t,
5876
+ cyclic: s,
5877
+ stateObj: a,
5878
+ promisesData: c,
5879
+ resolvingTypesonPromise: p,
5880
+ awaitingTypesonPromise: hasConstructorOf(t, TypesonPromise)
5881
+ }, {
5882
+ type: n
5883
+ }));
5884
+ } : null,
5885
+ getEncapsulatedValue = function getEncapsulatedValue(e, t, r) {
5886
+ try {
5887
+ return {
5888
+ value: _encapsulate2(e, t[r], Boolean(s), a, c, p)
5889
+ };
5890
+ } catch (n) {
5891
+ var _ref3;
5892
+ if (!m) throw n;
5893
+ var _o2 = (_ref3 = f !== null && f !== void 0 ? f : a.type) !== null && _ref3 !== void 0 ? _ref3 : getJSONType(t),
5894
+ _s = m({
5895
+ keypath: e,
5896
+ error: n,
5897
+ parent: t,
5898
+ key: r,
5899
+ stateObj: a,
5900
+ type: _o2
5901
+ });
5902
+ if (!_s) throw n;
5903
+ if ("substitute" in _s) return {
5904
+ value: _s.substitute,
5905
+ substitute: true
5906
+ };
5907
+ if (_s.ignore) return;
5908
+ throw n;
5909
+ }
5910
+ };
5911
+ if (["string", "boolean", "number", "undefined"].includes(_typeof$1(t))) return void 0 === t || t === 1 / 0 || 0 === t || t === -1 / 0 || Number.isNaN(t) ? (h = a.replaced ? t : replace(e, t, a, c, false, p, b), h !== t && (g = {
5912
+ replaced: h
5913
+ })) : h = t, b && b(), h;
5914
+ if (null === t) return b && b(), t;
5741
5915
  if (s && t && "object" == _typeof$1(t) && !a.iterateIn && !a.iterateUnsetNumeric) {
5742
- var _r = l.indexOf(t);
5743
- if (-1 !== _r) return y[e] = "#", g && g({
5744
- cyclicKeypath: u[_r]
5745
- }), "#" + u[_r];
5746
- true === s && (l.push(t), u.push(e));
5916
+ var _r2 = u.indexOf(t);
5917
+ if (-1 !== _r2) return y[e] = "#", b && b({
5918
+ cyclicKeypath: l[_r2]
5919
+ }), "#" + l[_r2];
5920
+ true === s && (u.push(t), l.push(e));
5747
5921
  }
5748
- var b = isPlainObject(t),
5749
- v = o(t),
5750
- O = (b || v) && (!_this2.plainObjectReplacers.length || a.replaced) || a.iterateIn ? t : replace(e, t, a, c, b || v, null, g);
5751
- var w;
5752
- if (O !== t ? (m = O, h = {
5753
- replaced: O
5754
- }) : "" === e && hasConstructorOf(t, TypesonPromise) ? (c.push([e, t, s, a, void 0, void 0, a.type]), m = t) : v && "object" !== a.iterateIn || "array" === a.iterateIn ? (w = new Array(t.length), h = {
5755
- clone: w
5756
- }) : !b && (["function", "symbol"].includes(_typeof$1(t)) || "toJSON" in t || hasConstructorOf(t, TypesonPromise) || hasConstructorOf(t, Promise) || hasConstructorOf(t, ArrayBuffer)) && "object" !== a.iterateIn ? m = t : (w = {}, a.addLength && (w.length = t.length), h = {
5757
- clone: w
5758
- }), g && g(), i.iterateNone) return w !== null && w !== void 0 ? w : m;
5759
- if (!w) return m;
5922
+ var v = isPlainObject(t),
5923
+ O = o(t),
5924
+ w = (v || O) && (!_this2.plainObjectReplacers.length || a.replaced) || a.iterateIn ? t : replace(e, t, a, c, v || O, null, b);
5925
+ var T;
5926
+ if (w !== t ? (h = w, g = {
5927
+ replaced: w
5928
+ }) : "" === e && hasConstructorOf(t, TypesonPromise) ? (c.push([e, t, s, a, void 0, void 0, a.type]), h = t) : O && "object" !== a.iterateIn || "array" === a.iterateIn ? (T = new Array(t.length), g = {
5929
+ clone: T
5930
+ }) : !v && ("object" != _typeof$1(t) || "toJSON" in t || hasConstructorOf(t, TypesonPromise) || hasConstructorOf(t, Promise) || hasConstructorOf(t, ArrayBuffer)) && "object" !== a.iterateIn ? h = t : (T = {}, a.addLength && (T.length = t.length), g = {
5931
+ clone: T
5932
+ }), b && b(), i.iterateNone) return T !== null && T !== void 0 ? T : h;
5933
+ if (!T) return h;
5760
5934
  if (a.iterateIn) {
5761
- var _loop = function _loop(_r2) {
5935
+ var _loop = function _loop(_r3) {
5762
5936
  var o = {
5763
- ownKeys: n(t, _r2)
5937
+ ownKeys: n(t, _r3)
5764
5938
  };
5765
5939
  _adaptBuiltinStateObjectProperties(a, o, function () {
5766
- var n = e + (e ? "." : "") + escapeKeyPathComponent(_r2),
5767
- o = _encapsulate2(n, t[_r2], Boolean(s), a, c, p);
5768
- hasConstructorOf(o, TypesonPromise) ? c.push([n, o, Boolean(s), a, w, _r2, a.type]) : void 0 !== o && (w[_r2] = o);
5940
+ var n = e + (e ? "." : "") + escapeKeyPathComponent(_r3),
5941
+ o = getEncapsulatedValue(n, t, _r3),
5942
+ i = o && o.value;
5943
+ hasConstructorOf(i, TypesonPromise) ? c.push([n, i, Boolean(s), a, T, _r3, a.type]) : o && (void 0 !== i || "substitute" in o) && setOwnEnumerable(T, _r3, i);
5769
5944
  });
5770
5945
  };
5771
- for (var _r2 in t) {
5772
- _loop(_r2);
5946
+ for (var _r3 in t) {
5947
+ _loop(_r3);
5773
5948
  }
5774
- g && g({
5949
+ b && b({
5775
5950
  endIterateIn: true,
5776
5951
  end: true
5777
5952
  });
@@ -5780,70 +5955,71 @@
5780
5955
  _adaptBuiltinStateObjectProperties(a, {
5781
5956
  ownKeys: true
5782
5957
  }, function () {
5783
- var e = _encapsulate2(n, t[r], Boolean(s), a, c, p);
5784
- hasConstructorOf(e, TypesonPromise) ? c.push([n, e, Boolean(s), a, w, r, a.type]) : void 0 !== e && (w[r] = e);
5958
+ var e = getEncapsulatedValue(n, t, r),
5959
+ o = e && e.value;
5960
+ hasConstructorOf(o, TypesonPromise) ? c.push([n, o, Boolean(s), a, T, r, a.type]) : e && (void 0 !== o || "substitute" in e) && setOwnEnumerable(T, r, o);
5785
5961
  });
5786
- }), g && g({
5962
+ }), b && b({
5787
5963
  endIterateOwn: true,
5788
5964
  end: true
5789
5965
  });
5790
5966
  if (a.iterateUnsetNumeric) {
5791
- var _r3 = t.length;
5792
- var _loop2 = function _loop2(_n2) {
5793
- if (_n2 in t) return 1; // continue
5794
- var r = "".concat(e).concat(e ? "." : "").concat(String(_n2));
5967
+ var _r4 = t.length;
5968
+ var _loop2 = function _loop2(_n) {
5969
+ if (_n in t) return 1; // continue
5970
+ var r = "".concat(e).concat(e ? "." : "").concat(String(_n));
5795
5971
  _adaptBuiltinStateObjectProperties(a, {
5796
5972
  ownKeys: false
5797
5973
  }, function () {
5798
5974
  var e = _encapsulate2(r, void 0, Boolean(s), a, c, p);
5799
- hasConstructorOf(e, TypesonPromise) ? c.push([r, e, Boolean(s), a, w, _n2, a.type]) : void 0 !== e && (w[_n2] = e);
5975
+ hasConstructorOf(e, TypesonPromise) ? c.push([r, e, Boolean(s), a, T, _n, a.type]) : void 0 !== e && setOwnEnumerable(T, _n, e);
5800
5976
  });
5801
5977
  };
5802
- for (var _n2 = 0; _n2 < _r3; _n2++) {
5803
- if (_loop2(_n2)) continue;
5978
+ for (var _n = 0; _n < _r4; _n++) {
5979
+ if (_loop2(_n)) continue;
5804
5980
  }
5805
- g && g({
5981
+ b && b({
5806
5982
  endIterateUnsetNumeric: true,
5807
5983
  end: true
5808
5984
  });
5809
5985
  }
5810
- return w;
5986
+ return T;
5811
5987
  },
5812
5988
  replace = function replace(e, t, r, n, o, s, a) {
5813
5989
  var i = o ? _this2.plainObjectReplacers : _this2.nonplainObjectReplacers;
5814
- var l = i.length;
5815
- for (; l--;) {
5816
- var _o2 = i[l];
5817
- if (_o2.test(t, r)) {
5818
- var _i = _o2.type;
5819
- if (Object.hasOwn(_this2.revivers, _i)) {
5820
- var _t3 = y[e];
5821
- y[e] = _t3 ? [_i].concat(_t3) : _i;
5990
+ var u = i.length;
5991
+ for (; u--;) {
5992
+ var _o3 = i[u];
5993
+ if (_o3.test(t, r)) {
5994
+ var _i2 = _o3.type;
5995
+ if (Object.hasOwn(_this2.revivers, _i2)) {
5996
+ var _t5 = y[e];
5997
+ y[e] = _t5 ? [_i2].concat(_t5) : _i2;
5822
5998
  }
5823
5999
  if (Object.assign(r, {
5824
- type: _i,
6000
+ type: _i2,
5825
6001
  replaced: true
5826
- }), (c || !_o2.replaceAsync) && !_o2.replace) return a && a({
6002
+ }), (c || !_o3.replaceAsync) && !_o3.replace) return a && a({
5827
6003
  typeDetected: true
5828
- }), _encapsulate2(e, t, f && "readonly", r, n, s, _i);
5829
- var _l = void 0;
6004
+ }), _encapsulate2(e, t, f && "readonly", r, n, s, _i2);
6005
+ var _u = void 0;
5830
6006
  if (a && a({
5831
6007
  replacing: true
5832
- }), c || !_o2.replaceAsync) {
5833
- if (void 0 === _o2.replace) throw new TypeError("Missing replacer");
5834
- _l = _o2.replace(t, r);
5835
- } else _l = _o2.replaceAsync(t, r);
5836
- return _encapsulate2(e, _l, f && "readonly", r, n, s, _i);
6008
+ }), c || !_o3.replaceAsync) {
6009
+ if (void 0 === _o3.replace) throw new TypeError("Missing replacer");
6010
+ _u = _o3.replace(t, r);
6011
+ } else _u = _o3.replaceAsync(t, r);
6012
+ return _encapsulate2(e, _u, f && "readonly", r, n, s, _i2);
5837
6013
  }
5838
6014
  }
5839
6015
  return t;
5840
6016
  },
5841
- m = _encapsulate2("", e, f, t !== null && t !== void 0 ? t : {}, p);
6017
+ h = _encapsulate2("", e, f, t !== null && t !== void 0 ? t : {}, p);
5842
6018
  if (p.length) return c && i.throwOnBadSyncType ? function () {
5843
6019
  throw new TypeError("Sync method requested but async result obtained");
5844
- }() : Promise.resolve(_checkPromises(m, p)).then(finish);
6020
+ }() : Promise.resolve(_checkPromises(h, p)).then(finish);
5845
6021
  if (!c && i.throwOnBadSyncType) throw new TypeError("Async method requested but sync result obtained");
5846
- return c && i.stringification ? [finish(m)] : c ? finish(m) : Promise.resolve(finish(m));
6022
+ return c && i.stringification ? [finish(h)] : c ? finish(h) : Promise.resolve(finish(h));
5847
6023
  }
5848
6024
  }, {
5849
6025
  key: "encapsulateSync",
@@ -5882,18 +6058,18 @@
5882
6058
  if (!i || "object" != _typeof$1(i) || Array.isArray(i)) return finishRevival(e);
5883
6059
  var c = [],
5884
6060
  y = Object.create(null),
5885
- l = {};
5886
- var u = true;
5887
- i.$ && isPlainObject(i.$) && (e = e.$, i = i.$, u = false);
6061
+ u = {};
6062
+ var l = true;
6063
+ i.$ && isPlainObject(i.$) && (e = e.$, i = i.$, l = false);
5888
6064
  var executeReviver = function executeReviver(e, t) {
5889
6065
  var _this3$revivers$e;
5890
- var _ref3 = (_this3$revivers$e = _this3.revivers[e]) !== null && _this3$revivers$e !== void 0 ? _this3$revivers$e : [],
5891
- _ref4 = _slicedToArray(_ref3, 1),
5892
- r = _ref4[0];
6066
+ var _ref4 = (_this3$revivers$e = _this3.revivers[e]) !== null && _this3$revivers$e !== void 0 ? _this3$revivers$e : [],
6067
+ _ref5 = _slicedToArray(_ref4, 1),
6068
+ r = _ref5[0];
5893
6069
  if (!r) throw new Error("Unregistered type: " + e);
5894
6070
  if (a && !("revive" in r)) return t;
5895
- if (!a && r.reviveAsync) return r.reviveAsync(t, l);
5896
- if (r.revive) return r.revive(t, l);
6071
+ if (!a && r.reviveAsync) return r.reviveAsync(t, u);
6072
+ if (r.revive) return r.revive(t, u);
5897
6073
  throw new Error("Missing reviver");
5898
6074
  },
5899
6075
  p = [];
@@ -5903,23 +6079,23 @@
5903
6079
  var f = function () {
5904
6080
  if (!i) throw new Error("Found bad `types`");
5905
6081
  var t = [];
5906
- if (Object.entries(i).forEach(function (_ref5) {
5907
- var _ref6 = _slicedToArray(_ref5, 2),
5908
- e = _ref6[0],
5909
- r = _ref6[1];
6082
+ if (Object.entries(i).forEach(function (_ref6) {
6083
+ var _ref7 = _slicedToArray(_ref6, 2),
6084
+ e = _ref7[0],
6085
+ r = _ref7[1];
5910
6086
  "#" !== r && [].concat(r).forEach(function (r) {
5911
6087
  var _this3$revivers$r;
5912
- var _ref7 = (_this3$revivers$r = _this3.revivers[r]) !== null && _this3$revivers$r !== void 0 ? _this3$revivers$r : [null, {}],
5913
- _ref8 = _slicedToArray(_ref7, 2),
5914
- n = _ref8[1].plain;
6088
+ var _ref8 = (_this3$revivers$r = _this3.revivers[r]) !== null && _this3$revivers$r !== void 0 ? _this3$revivers$r : [null, {}],
6089
+ _ref9 = _slicedToArray(_ref8, 2),
6090
+ n = _ref9[1].plain;
5915
6091
  n && (t.push({
5916
6092
  keypath: e,
5917
6093
  type: r
5918
6094
  }), delete i[e]);
5919
6095
  });
5920
- }), t.length) return t.sort(nestedPathsFirst), t.reduce(function reducer(t, _ref9) {
5921
- var r = _ref9.keypath,
5922
- n = _ref9.type;
6096
+ }), t.length) return t.sort(nestedPathsFirst), t.reduce(function reducer(t, _ref0) {
6097
+ var r = _ref0.keypath,
6098
+ n = _ref0.type;
5923
6099
  if (isThenable(t)) return t.then(function (e) {
5924
6100
  return reducer(e, {
5925
6101
  keypath: r,
@@ -5938,39 +6114,39 @@
5938
6114
  var d;
5939
6115
  return hasConstructorOf(f, TypesonPromise) ? d = f.then(function () {
5940
6116
  return e;
5941
- }) : (d = function _revive(e, t, s, l, f) {
5942
- if (u && "$types" === e) return;
6117
+ }) : (d = function _revive(e, t, s, u, f) {
6118
+ if (l && "$types" === e) return;
5943
6119
  var d = p.length,
5944
- m = i[e],
6120
+ m = n(i, e) ? i[e] : void 0,
5945
6121
  h = o(t);
5946
6122
  if (h || isPlainObject(t)) {
5947
- var _o3 = h ? new Array(t.length) : {};
6123
+ var _o4 = h ? new Array(t.length) : {};
5948
6124
  for (r(t).forEach(function (r) {
5949
- var n = _revive(e + (e ? "." : "") + escapeKeyPathComponent(r), t[r], s !== null && s !== void 0 ? s : _o3, _o3, r),
6125
+ var n = _revive(e + (e ? "." : "") + escapeKeyPathComponent(r), t[r], s !== null && s !== void 0 ? s : _o4, _o4, r),
5950
6126
  set = function set(e) {
5951
- return hasConstructorOf(e, Undefined) ? _o3[r] = void 0 : void 0 !== e && (_o3[r] = e), e;
6127
+ return hasConstructorOf(e, Undefined) ? setOwnEnumerable(_o4, r, void 0) : void 0 !== e && setOwnEnumerable(_o4, r, e), e;
5952
6128
  };
5953
6129
  hasConstructorOf(n, TypesonPromise) ? p.push(n.then(function (e) {
5954
6130
  return set(e);
5955
6131
  })) : set(n);
5956
- }), t = _o3; c.length;) {
6132
+ }), t = _o4; c.length;) {
5957
6133
  var _c$ = _slicedToArray(c[0], 4),
5958
- _e = _c$[0],
5959
- _t4 = _c$[1],
5960
- _r4 = _c$[2],
5961
- _o4 = _c$[3],
5962
- _s = n(y, _t4),
5963
- _a = _s ? y[_t4] : getByKeyPath(_e, _t4);
5964
- if (!_s && void 0 === _a) break;
5965
- _r4[_o4] = _a, c.shift();
6134
+ _e2 = _c$[0],
6135
+ _t6 = _c$[1],
6136
+ _r5 = _c$[2],
6137
+ _o5 = _c$[3],
6138
+ _s2 = n(y, _t6),
6139
+ _a = _s2 ? y[_t6] : getByKeyPath(_e2, _t6);
6140
+ if (!_s2 && void 0 === _a) break;
6141
+ setOwnEnumerable(_r5, _o5, _a), c.shift();
5966
6142
  }
5967
6143
  }
5968
6144
  if (!m) return y[e] = t, t;
5969
6145
  if ("#" === m) {
5970
- var _e2 = t.slice(1),
5971
- _r5 = n(y, _e2),
5972
- _o5 = _r5 ? y[_e2] : getByKeyPath(s, _e2);
5973
- return _r5 || void 0 !== _o5 || c.push([s, _e2, l, f]), _o5;
6146
+ var _e3 = t.slice(1),
6147
+ _r6 = n(y, _e3),
6148
+ _o6 = _r6 ? y[_e3] : getByKeyPath(s, _e3);
6149
+ return _r6 || void 0 !== _o6 || c.push([s, _e3, u, f]), _o6;
5974
6150
  }
5975
6151
  var applyType = function applyType(t) {
5976
6152
  var r = [].concat(m).reduce(function reducer(e, t) {
@@ -5989,9 +6165,9 @@
5989
6165
  }) : applyType(t);
5990
6166
  }("", e, null), p.length && (d = TypesonPromise.resolve(d).then(function (e) {
5991
6167
  return TypesonPromise.all([e].concat(p));
5992
- }).then(function (_ref0) {
5993
- var _ref1 = _slicedToArray(_ref0, 1),
5994
- e = _ref1[0];
6168
+ }).then(function (_ref1) {
6169
+ var _ref10 = _slicedToArray(_ref1, 1),
6170
+ e = _ref10[0];
5995
6171
  return e;
5996
6172
  }))), isThenable(d) ? a && s.throwOnBadSyncType ? function () {
5997
6173
  throw new TypeError("Sync method requested but async result obtained");
@@ -6026,49 +6202,50 @@
6026
6202
  o(e) ? e.forEach(function (e) {
6027
6203
  _reg(e);
6028
6204
  }) : r(e).forEach(function (t) {
6029
- var _r8;
6205
+ var _r9;
6030
6206
  if ("#" === t) throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects");
6031
6207
  if (a.includes(t)) throw new TypeError("Plain JSON object types are reserved as type names");
6032
6208
  var r = e[t];
6033
- var s = r && "function" != typeof r && !Array.isArray(r) && r.testPlainObjects ? _this4.plainObjectReplacers : _this4.nonplainObjectReplacers,
6034
- i = s.filter(function (e) {
6209
+ if ([_this4.plainObjectReplacers, _this4.nonplainObjectReplacers].forEach(function (e) {
6210
+ var r = e.findIndex(function (e) {
6035
6211
  return e.type === t;
6036
6212
  });
6037
- if (i.length && (s.splice(s.indexOf(i[0]), 1), delete _this4.revivers[t], delete _this4.types[t]), "function" == typeof r) {
6038
- var _e3 = r;
6213
+ -1 !== r && e.splice(r, 1);
6214
+ }), delete _this4.revivers[t], delete _this4.types[t], "function" == typeof r) {
6215
+ var _e4 = r;
6039
6216
  r = {
6040
6217
  test: function test(t) {
6041
- return t && t.constructor === _e3;
6218
+ return t && t.constructor === _e4;
6042
6219
  },
6043
6220
  replace: function replace(e) {
6044
6221
  return _objectSpread2({}, e);
6045
6222
  },
6046
6223
  revive: function revive(t) {
6047
- return Object.assign(Object.create(_e3.prototype), t);
6224
+ return Object.assign(Object.create(_e4.prototype), t);
6048
6225
  }
6049
6226
  };
6050
6227
  } else if (o(r)) {
6051
- var _r6 = r,
6052
- _r7 = _slicedToArray(_r6, 3),
6053
- _e4 = _r7[0],
6054
- _t5 = _r7[1],
6055
- _n3 = _r7[2];
6228
+ var _r7 = r,
6229
+ _r8 = _slicedToArray(_r7, 3),
6230
+ _e5 = _r8[0],
6231
+ _t7 = _r8[1],
6232
+ _n2 = _r8[2];
6056
6233
  r = {
6057
- test: _e4,
6058
- replace: _t5,
6059
- revive: _n3
6234
+ test: _e5,
6235
+ replace: _t7,
6236
+ revive: _n2
6060
6237
  };
6061
6238
  }
6062
- if (!((_r8 = r) !== null && _r8 !== void 0 && _r8.test)) return;
6063
- var c = {
6239
+ if (!((_r9 = r) !== null && _r9 !== void 0 && _r9.test)) return;
6240
+ var s = {
6064
6241
  type: t,
6065
6242
  test: r.test.bind(r)
6066
6243
  };
6067
- r.replace && (c.replace = r.replace.bind(r)), r.replaceAsync && (c.replaceAsync = r.replaceAsync.bind(r));
6068
- var y = "number" == typeof n.fallback ? n.fallback : n.fallback ? 0 : 1 / 0;
6069
- if (r.testPlainObjects ? _this4.plainObjectReplacers.splice(y, 0, c) : _this4.nonplainObjectReplacers.splice(y, 0, c), r.revive || r.reviveAsync) {
6070
- var _e5 = {};
6071
- r.revive && (_e5.revive = r.revive.bind(r)), r.reviveAsync && (_e5.reviveAsync = r.reviveAsync.bind(r)), _this4.revivers[t] = [_e5, {
6244
+ r.replace && (s.replace = r.replace.bind(r)), r.replaceAsync && (s.replaceAsync = r.replaceAsync.bind(r));
6245
+ var i = "number" == typeof n.fallback ? n.fallback : n.fallback ? 0 : 1 / 0;
6246
+ if (r.testPlainObjects ? _this4.plainObjectReplacers.splice(i, 0, s) : _this4.nonplainObjectReplacers.splice(i, 0, s), r.revive || r.reviveAsync) {
6247
+ var _e6 = {};
6248
+ r.revive && (_e6.revive = r.revive.bind(r)), r.reviveAsync && (_e6.reviveAsync = r.reviveAsync.bind(r)), _this4.revivers[t] = [_e6, {
6072
6249
  plain: r.testPlainObjects
6073
6250
  }];
6074
6251
  }
@@ -6087,12 +6264,12 @@
6087
6264
  Undefined.__typeson__type__ = "TypesonUndefined";
6088
6265
  var a = ["null", "boolean", "number", "string", "array", "object"];
6089
6266
  for (var i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", c = new Uint8Array(256), y = 0; y < 64; y++) c[i.codePointAt(y)] = y;
6090
- var l = function encode(e, t, r) {
6267
+ var u = function encode(e, t, r) {
6091
6268
  null == r && (r = e.byteLength);
6092
6269
  for (var n = new Uint8Array(e, 0, r), o = n.length, s = "", a = 0; a < o; a += 3) s += i[n[a] >> 2], s += i[(3 & n[a]) << 4 | n[a + 1] >> 4], s += i[(15 & n[a + 1]) << 2 | n[a + 2] >> 6], s += i[63 & n[a + 2]];
6093
6270
  return o % 3 == 2 ? s = s.slice(0, -1) + "=" : o % 3 == 1 && (s = s.slice(0, -2) + "=="), s;
6094
6271
  },
6095
- u = function decode(e, t) {
6272
+ l = function decode(e, t) {
6096
6273
  var r = e.length;
6097
6274
  if (r % 4) throw new Error("Bad base64 length: not divisible by four");
6098
6275
  var n,
@@ -6102,8 +6279,8 @@
6102
6279
  i = .75 * e.length,
6103
6280
  y = 0;
6104
6281
  "=" === e[e.length - 1] && (i--, "=" === e[e.length - 2] && i--);
6105
- for (var l = new ArrayBuffer(i, t), u = new Uint8Array(l), p = 0; p < r; p += 4) n = c[e.codePointAt(p)], o = c[e.codePointAt(p + 1)], s = c[e.codePointAt(p + 2)], a = c[e.codePointAt(p + 3)], u[y++] = n << 2 | o >> 4, u[y++] = (15 & o) << 4 | s >> 2, u[y++] = (3 & s) << 6 | 63 & a;
6106
- return l;
6282
+ for (var u = new ArrayBuffer(i, t), l = new Uint8Array(u), p = 0; p < r; p += 4) n = c[e.codePointAt(p)], o = c[e.codePointAt(p + 1)], s = c[e.codePointAt(p + 2)], a = c[e.codePointAt(p + 3)], l[y++] = n << 2 | o >> 4, l[y++] = (15 & o) << 4 | s >> 2, l[y++] = (3 & s) << 6 | 63 & a;
6283
+ return u;
6107
6284
  };
6108
6285
  var p = {
6109
6286
  arraybuffer: {
@@ -6116,14 +6293,14 @@
6116
6293
  return -1 !== r ? {
6117
6294
  index: r
6118
6295
  } : (t.buffers.push(e), {
6119
- s: l(e),
6296
+ s: u(e),
6120
6297
  maxByteLength: e.maxByteLength,
6121
6298
  resizable: e.resizable
6122
6299
  });
6123
6300
  },
6124
6301
  revive: function revive(e, t) {
6125
6302
  if (t.buffers || (t.buffers = []), Object.hasOwn(e, "index")) return t.buffers[e.index];
6126
- var r = u(e.s, e.resizable ? {
6303
+ var r = l(e.s, e.resizable ? {
6127
6304
  maxByteLength: e.maxByteLength
6128
6305
  } : void 0);
6129
6306
  return t.buffers.push(r), r;
@@ -6159,7 +6336,7 @@
6159
6336
  }
6160
6337
  function string2arraybuffer(e) {
6161
6338
  var t = new Uint8Array(e.length);
6162
- for (var _r9 = 0; _r9 < e.length; _r9++) t[_r9] = e.charCodeAt(_r9);
6339
+ for (var _r0 = 0; _r0 < e.length; _r0++) t[_r0] = e.charCodeAt(_r0);
6163
6340
  return t.buffer;
6164
6341
  }
6165
6342
  var m = {
@@ -6204,8 +6381,8 @@
6204
6381
  },
6205
6382
  replaceAsync: function replaceAsync(e) {
6206
6383
  return new TypesonPromise(/*#__PURE__*/function () {
6207
- var _ref10 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(t, r) {
6208
- var n, _t6;
6384
+ var _ref11 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(t, r) {
6385
+ var n, _t8;
6209
6386
  return _regenerator().w(function (_context3) {
6210
6387
  while (1) switch (_context3.p = _context3.n) {
6211
6388
  case 0:
@@ -6218,8 +6395,8 @@
6218
6395
  break;
6219
6396
  case 2:
6220
6397
  _context3.p = 2;
6221
- _t6 = _context3.v;
6222
- return _context3.a(2, void r(_t6));
6398
+ _t8 = _context3.v;
6399
+ return _context3.a(2, void r(_t8));
6223
6400
  case 3:
6224
6401
  t({
6225
6402
  jwk: n,
@@ -6232,7 +6409,7 @@
6232
6409
  }, _callee3, null, [[0, 2]]);
6233
6410
  }));
6234
6411
  return function (_x4, _x5) {
6235
- return _ref10.apply(this, arguments);
6412
+ return _ref11.apply(this, arguments);
6236
6413
  };
6237
6414
  }());
6238
6415
  },
@@ -6249,10 +6426,10 @@
6249
6426
  test: function test(e) {
6250
6427
  return "DataView" === toStringTag(e);
6251
6428
  },
6252
- replace: function replace(_ref11, n) {
6253
- var e = _ref11.buffer,
6254
- t = _ref11.byteOffset,
6255
- r = _ref11.byteLength;
6429
+ replace: function replace(_ref12, n) {
6430
+ var e = _ref12.buffer,
6431
+ t = _ref12.byteOffset,
6432
+ r = _ref12.byteLength;
6256
6433
  n.buffers || (n.buffers = []);
6257
6434
  var o = n.buffers.indexOf(e);
6258
6435
  return -1 !== o ? {
@@ -6260,7 +6437,7 @@
6260
6437
  byteOffset: t,
6261
6438
  byteLength: r
6262
6439
  } : (n.buffers.push(e), {
6263
- encoded: l(e),
6440
+ encoded: u(e),
6264
6441
  maxByteLength: e.maxByteLength,
6265
6442
  resizable: e.resizable,
6266
6443
  byteOffset: t,
@@ -6276,7 +6453,7 @@
6276
6453
  a = e.maxByteLength,
6277
6454
  i = e.resizable;
6278
6455
  var c;
6279
- return "index" in e ? c = t.buffers[s] : (c = u(o, i ? {
6456
+ return "index" in e ? c = t.buffers[s] : (c = l(o, i ? {
6280
6457
  maxByteLength: a
6281
6458
  } : a), t.buffers.push(c)), new DataView(c, r, n);
6282
6459
  }
@@ -6307,9 +6484,9 @@
6307
6484
  message: e.message
6308
6485
  };
6309
6486
  },
6310
- revive: function revive(_ref12) {
6311
- var e = _ref12.message,
6312
- t = _ref12.name;
6487
+ revive: function revive(_ref13) {
6488
+ var e = _ref13.message,
6489
+ t = _ref13.name;
6313
6490
  return new DOMException(e, t);
6314
6491
  }
6315
6492
  }
@@ -6367,11 +6544,11 @@
6367
6544
  w: e.w
6368
6545
  };
6369
6546
  },
6370
- revive: function revive(_ref13) {
6371
- var t = _ref13.x,
6372
- r = _ref13.y,
6373
- n = _ref13.z,
6374
- o = _ref13.w;
6547
+ revive: function revive(_ref14) {
6548
+ var t = _ref14.x,
6549
+ r = _ref14.y,
6550
+ n = _ref14.z,
6551
+ o = _ref14.w;
6375
6552
  return new e(t, r, n, o);
6376
6553
  }
6377
6554
  };
@@ -6390,11 +6567,11 @@
6390
6567
  p4: e.p4
6391
6568
  };
6392
6569
  },
6393
- revive: function revive(_ref14) {
6394
- var e = _ref14.p1,
6395
- t = _ref14.p2,
6396
- r = _ref14.p3,
6397
- n = _ref14.p4;
6570
+ revive: function revive(_ref15) {
6571
+ var e = _ref15.p1,
6572
+ t = _ref15.p2,
6573
+ r = _ref15.p3,
6574
+ n = _ref15.p4;
6398
6575
  return new DOMQuad(e, t, r, n);
6399
6576
  }
6400
6577
  }
@@ -6413,11 +6590,11 @@
6413
6590
  height: e.height
6414
6591
  };
6415
6592
  },
6416
- revive: function revive(_ref15) {
6417
- var t = _ref15.x,
6418
- r = _ref15.y,
6419
- n = _ref15.width,
6420
- o = _ref15.height;
6593
+ revive: function revive(_ref16) {
6594
+ var t = _ref16.x,
6595
+ r = _ref16.y,
6596
+ n = _ref16.width,
6597
+ o = _ref16.height;
6421
6598
  return new e(t, r, n, o);
6422
6599
  }
6423
6600
  };
@@ -6428,14 +6605,14 @@
6428
6605
  test: function test(e) {
6429
6606
  return "Error" === toStringTag(e);
6430
6607
  },
6431
- replace: function replace(_ref16) {
6432
- var e = _ref16.name,
6433
- t = _ref16.message,
6434
- r = _ref16.cause,
6435
- n = _ref16.stack,
6436
- o = _ref16.fileName,
6437
- s = _ref16.lineNumber,
6438
- a = _ref16.columnNumber;
6608
+ replace: function replace(_ref17) {
6609
+ var e = _ref17.name,
6610
+ t = _ref17.message,
6611
+ r = _ref17.cause,
6612
+ n = _ref17.stack,
6613
+ o = _ref17.fileName,
6614
+ s = _ref17.lineNumber,
6615
+ a = _ref17.columnNumber;
6439
6616
  return {
6440
6617
  name: e,
6441
6618
  message: t,
@@ -6458,15 +6635,15 @@
6458
6635
  test: function test(t) {
6459
6636
  return hasConstructorOf(t, e);
6460
6637
  },
6461
- replace: function replace(_ref17) {
6462
- var e = _ref17.name,
6463
- t = _ref17.message,
6464
- r = _ref17.cause,
6465
- n = _ref17.stack,
6466
- o = _ref17.fileName,
6467
- s = _ref17.lineNumber,
6468
- a = _ref17.columnNumber,
6469
- i = _ref17.errors;
6638
+ replace: function replace(_ref18) {
6639
+ var e = _ref18.name,
6640
+ t = _ref18.message,
6641
+ r = _ref18.cause,
6642
+ n = _ref18.stack,
6643
+ o = _ref18.fileName,
6644
+ s = _ref18.lineNumber,
6645
+ a = _ref18.columnNumber,
6646
+ i = _ref18.errors;
6470
6647
  return {
6471
6648
  name: e,
6472
6649
  message: t,
@@ -6487,7 +6664,7 @@
6487
6664
  [TypeError, RangeError, SyntaxError, ReferenceError, EvalError, URIError].forEach(function (e) {
6488
6665
  return create$2(e);
6489
6666
  }), "undefined" != typeof AggregateError && create$2(AggregateError), "function" == typeof InternalError && create$2(InternalError);
6490
- var N = {
6667
+ var E = {
6491
6668
  file: {
6492
6669
  test: function test(e) {
6493
6670
  return "File" === toStringTag(e);
@@ -6502,11 +6679,11 @@
6502
6679
  lastModified: e.lastModified
6503
6680
  };
6504
6681
  },
6505
- revive: function revive(_ref18) {
6506
- var e = _ref18.name,
6507
- t = _ref18.type,
6508
- r = _ref18.stringContents,
6509
- n = _ref18.lastModified;
6682
+ revive: function revive(_ref19) {
6683
+ var e = _ref19.name,
6684
+ t = _ref19.type,
6685
+ r = _ref19.stringContents,
6686
+ n = _ref19.lastModified;
6510
6687
  return new File([string2arraybuffer(r)], e, {
6511
6688
  type: t,
6512
6689
  lastModified: n
@@ -6529,15 +6706,15 @@
6529
6706
  }
6530
6707
  }
6531
6708
  },
6532
- _ = {
6533
- file: N.file,
6709
+ N = {
6710
+ file: E.file,
6534
6711
  filelist: {
6535
6712
  test: function test(e) {
6536
6713
  return "FileList" === toStringTag(e);
6537
6714
  },
6538
6715
  replace: function replace(e) {
6539
6716
  var t = [];
6540
- for (var _r0 = 0; _r0 < e.length; _r0++) t[_r0] = e.item(_r0);
6717
+ for (var _r1 = 0; _r1 < e.length; _r1++) t[_r1] = e.item(_r1);
6541
6718
  return t;
6542
6719
  },
6543
6720
  revive: function revive(e) {
@@ -6562,7 +6739,7 @@
6562
6739
  }
6563
6740
  }
6564
6741
  },
6565
- B = {
6742
+ _ = {
6566
6743
  imagebitmap: {
6567
6744
  test: function test(e) {
6568
6745
  return "ImageBitmap" === toStringTag(e) || e && e.dataset && "ImageBitmap" === e.dataset.toStringTag;
@@ -6590,36 +6767,36 @@
6590
6767
  return n.addEventListener("load", function () {
6591
6768
  r.drawImage(n, 0, 0);
6592
6769
  }), n.src = e.dataURL, new TypesonPromise(/*#__PURE__*/function () {
6593
- var _ref19 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(e, r) {
6594
- var _t7, _t8;
6770
+ var _ref20 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(e, r) {
6771
+ var _t9, _t0;
6595
6772
  return _regenerator().w(function (_context4) {
6596
6773
  while (1) switch (_context4.p = _context4.n) {
6597
6774
  case 0:
6598
6775
  _context4.p = 0;
6599
- _t7 = e;
6776
+ _t9 = e;
6600
6777
  _context4.n = 1;
6601
6778
  return createImageBitmap(t);
6602
6779
  case 1:
6603
- _t7(_context4.v);
6780
+ _t9(_context4.v);
6604
6781
  _context4.n = 3;
6605
6782
  break;
6606
6783
  case 2:
6607
6784
  _context4.p = 2;
6608
- _t8 = _context4.v;
6609
- r(_t8);
6785
+ _t0 = _context4.v;
6786
+ r(_t0);
6610
6787
  case 3:
6611
6788
  return _context4.a(2);
6612
6789
  }
6613
6790
  }, _callee4, null, [[0, 2]]);
6614
6791
  }));
6615
6792
  return function (_x6, _x7) {
6616
- return _ref19.apply(this, arguments);
6793
+ return _ref20.apply(this, arguments);
6617
6794
  };
6618
6795
  }());
6619
6796
  }
6620
6797
  }
6621
6798
  },
6622
- E = {
6799
+ B = {
6623
6800
  imagedata: {
6624
6801
  test: function test(e) {
6625
6802
  return "ImageData" === toStringTag(e);
@@ -6636,7 +6813,7 @@
6636
6813
  }
6637
6814
  }
6638
6815
  },
6639
- C = {
6816
+ I = {
6640
6817
  infinity: {
6641
6818
  test: function test(e) {
6642
6819
  return e === 1 / 0;
@@ -6701,7 +6878,7 @@
6701
6878
  }
6702
6879
  }
6703
6880
  },
6704
- k = {
6881
+ R = {
6705
6882
  StringObject: {
6706
6883
  test: function test(e) {
6707
6884
  return "String" === toStringTag(e) && "object" == _typeof$1(e);
@@ -6732,7 +6909,7 @@
6732
6909
  }
6733
6910
  }
6734
6911
  },
6735
- $ = {
6912
+ K = {
6736
6913
  regexp: {
6737
6914
  test: function test(e) {
6738
6915
  return "RegExp" === toStringTag(e);
@@ -6743,14 +6920,14 @@
6743
6920
  flags: (e.global ? "g" : "") + (e.ignoreCase ? "i" : "") + (e.multiline ? "m" : "") + (e.sticky ? "y" : "") + (e.unicode ? "u" : "") + (e.unicodeSets ? "v" : "") + (e.hasIndices ? "d" : "") + (e.dotAll ? "s" : "")
6744
6921
  };
6745
6922
  },
6746
- revive: function revive(_ref21) {
6747
- var e = _ref21.source,
6748
- t = _ref21.flags;
6923
+ revive: function revive(_ref22) {
6924
+ var e = _ref22.source,
6925
+ t = _ref22.flags;
6749
6926
  return new RegExp(e, t);
6750
6927
  }
6751
6928
  }
6752
6929
  },
6753
- J = {
6930
+ z = {
6754
6931
  set: {
6755
6932
  test: function test(e) {
6756
6933
  return "Set" === toStringTag(e);
@@ -6788,10 +6965,10 @@
6788
6965
  test: function test(e) {
6789
6966
  return toStringTag(e) === t;
6790
6967
  },
6791
- replace: function replace(_ref22, n) {
6792
- var e = _ref22.buffer,
6793
- t = _ref22.byteOffset,
6794
- r = _ref22.length;
6968
+ replace: function replace(_ref23, n) {
6969
+ var e = _ref23.buffer,
6970
+ t = _ref23.byteOffset,
6971
+ r = _ref23.length;
6795
6972
  n.buffers || (n.buffers = []);
6796
6973
  var o = n.buffers.indexOf(e);
6797
6974
  return -1 !== o ? {
@@ -6801,7 +6978,7 @@
6801
6978
  } : (n.buffers.push(e), {
6802
6979
  maxByteLength: e.maxByteLength,
6803
6980
  resizable: e.resizable,
6804
- encoded: l(e),
6981
+ encoded: u(e),
6805
6982
  byteOffset: t,
6806
6983
  length: r
6807
6984
  });
@@ -6815,7 +6992,7 @@
6815
6992
  i = t.maxByteLength,
6816
6993
  c = t.resizable;
6817
6994
  var y;
6818
- return "index" in t ? y = r.buffers[a] : (y = u(s, c ? {
6995
+ return "index" in t ? y = r.buffers[a] : (y = l(s, c ? {
6819
6996
  maxByteLength: i
6820
6997
  } : void 0), r.buffers.push(y)), new e(y, n, o);
6821
6998
  }
@@ -6862,10 +7039,10 @@
6862
7039
  revive: function revive(e) {
6863
7040
  if (Array.isArray(e)) return e;
6864
7041
  var t = [];
6865
- return Object.entries(e).forEach(function (_ref23) {
6866
- var _ref24 = _slicedToArray(_ref23, 2),
6867
- e = _ref24[0],
6868
- r = _ref24[1];
7042
+ return Object.entries(e).forEach(function (_ref24) {
7043
+ var _ref25 = _slicedToArray(_ref24, 2),
7044
+ e = _ref25[0],
7045
+ r = _ref25[1];
6869
7046
  t[e] = r;
6870
7047
  }), t;
6871
7048
  }
@@ -6881,8 +7058,8 @@
6881
7058
  revive: function revive() {}
6882
7059
  }
6883
7060
  }],
6884
- X = [M, C, L, D],
6885
- re = [G, Q, H, k, X, O, $, E, B, N, _, m, x, j].concat("function" == typeof Map ? U : [], "function" == typeof Set ? J : [], "function" == typeof ArrayBuffer ? p : [], "function" == typeof Uint8Array ? W : [], "function" == typeof DataView ? v : [], "undefined" != typeof crypto ? b : [], "undefined" != typeof BigInt ? [d, f] : [], "undefined" != typeof DOMException ? w : [], "undefined" != typeof DOMRect ? S : [], "undefined" != typeof DOMPoint ? A : [], "undefined" != typeof DOMQuad ? P : [], "undefined" != typeof DOMMatrix ? T : []),
7061
+ X = [M, I, L, D],
7062
+ re = [G, Q, H, R, X, O, K, B, _, E, N, m, x, j].concat("function" == typeof Map ? U : [], "function" == typeof Set ? z : [], "function" == typeof ArrayBuffer ? p : [], "function" == typeof Uint8Array ? W : [], "function" == typeof DataView ? v : [], "undefined" != typeof crypto ? b : [], "undefined" != typeof BigInt ? [d, f] : [], "undefined" != typeof DOMException ? w : [], "undefined" != typeof DOMRect ? S : [], "undefined" != typeof DOMPoint ? A : [], "undefined" != typeof DOMQuad ? P : [], "undefined" != typeof DOMMatrix ? T : []),
6886
7063
  ne = re.concat({
6887
7064
  checkDataCloneException: {
6888
7065
  test: function test(e) {
@@ -7646,7 +7823,7 @@
7646
7823
  reject(err);
7647
7824
  });
7648
7825
  }));
7649
- SyncPromise.all(indexCreations).then(finish, /** @type {(reason: any) => PromiseLike<never>} */
7826
+ SyncPromise.all(indexCreations).then(finish).catch(/** @type {(reason: any) => PromiseLike<never>} */
7650
7827
  error).catch(function (err) {
7651
7828
  console.log('Index rename error');
7652
7829
  throw err;
@@ -9839,7 +10016,7 @@
9839
10016
  * __connections: {
9840
10017
  * [key: string]: import('./IDBDatabase.js').IDBDatabaseFull[]
9841
10018
  * }
9842
- * }} IDBFactoryFull
10019
+ * }} IDBFactoryFull
9843
10020
  */
9844
10021
 
9845
10022
  var IDBFactoryAlias = IDBFactory;
@@ -10030,7 +10207,7 @@
10030
10207
  /** @type {import('./IDBDatabase.js').IDBDatabaseFull} */
10031
10208
  req.__result.__versionTransaction = null;
10032
10209
  sysdbFinishedCb(systx, false, function () {
10033
- req.transaction.__transFinishedCb(false, function () {
10210
+ req.transaction.__callTransFinishedCb(false, function () {
10034
10211
  ev.complete();
10035
10212
  req.__transaction = null;
10036
10213
  });
@@ -10141,6 +10318,13 @@
10141
10318
  function openDB(oldVersion) {
10142
10319
  /** @type {DatabaseFull} */
10143
10320
  var db;
10321
+ if (version === undefined) {
10322
+ // Resolve before use as a cache key below, or a `open(name)` call
10323
+ // (no explicit version) would cache/look up under `undefined`
10324
+ // instead of the actual version, causing a second, separate
10325
+ // connection to be opened for the same database on reopen.
10326
+ version = oldVersion || 1;
10327
+ }
10144
10328
  if ((useMemoryDatabase || useDatabaseCache) && Object.hasOwn(websqlDBCache, name) && Object.hasOwn(websqlDBCache[name], version)) {
10145
10329
  db = websqlDBCache[name][version];
10146
10330
  } else {
@@ -10152,9 +10336,6 @@
10152
10336
  websqlDBCache[name][version] = db;
10153
10337
  }
10154
10338
  }
10155
- if (version === undefined) {
10156
- version = oldVersion || 1;
10157
- }
10158
10339
  if (oldVersion > version) {
10159
10340
  var err = createDOMException('VersionError', 'An attempt was made to open a database using a lower version than the existing version.', version);
10160
10341
  if (useDatabaseCache) {
@@ -10322,7 +10503,6 @@
10322
10503
  version = _data$rows$item.version;
10323
10504
  var openConnections = me.__connections[name] || [];
10324
10505
  triggerAnyVersionChangeAndBlockedEvents(openConnections, req, version, null).then(function () {
10325
- // eslint-disable-line promise/catch-or-return -- Sync promise
10326
10506
  // Since we need two databases which can't be in a single transaction, we
10327
10507
  // do this deleting from `dbVersions` first since the `__sys__` deleting
10328
10508
  // only impacts file memory whereas this one is critical for avoiding it
@@ -10351,7 +10531,7 @@
10351
10531
  });
10352
10532
  return undefined;
10353
10533
  // @ts-expect-error It's ok
10354
- }, dbError);
10534
+ }).catch(dbError);
10355
10535
  return undefined;
10356
10536
  }, dbError);
10357
10537
  });
@@ -10382,14 +10562,14 @@
10382
10562
  };
10383
10563
 
10384
10564
  /**
10385
- * May return outdated information if a database has since been deleted.
10386
- * @see https://github.com/w3c/IndexedDB/pull/240/files
10387
- * @this {IDBFactoryFull}
10388
- * @returns {Promise<{
10389
- * name: string,
10390
- * version: Integer
10391
- * }[]>}
10392
- */
10565
+ * May return outdated information if a database has since been deleted.
10566
+ * @see https://github.com/w3c/IndexedDB/pull/240/files
10567
+ * @this {IDBFactoryFull}
10568
+ * @returns {Promise<{
10569
+ * name: string,
10570
+ * version: Integer
10571
+ * }[]>}
10572
+ */
10393
10573
  IDBFactory.prototype.databases = function () {
10394
10574
  var me = this;
10395
10575
  var calledDbCreateError = false;
@@ -10437,17 +10617,17 @@
10437
10617
  };
10438
10618
 
10439
10619
  /**
10440
- * @todo forceClose: Test
10441
- * This is provided to facilitate unit-testing of the
10442
- * closing of a database connection with a forced flag:
10443
- * <https://w3c.github.io/IndexedDB/#steps-for-closing-a-database-connection>
10444
- * @param {string} dbName
10445
- * @param {Integer} connIdx
10446
- * @param {string} msg
10447
- * @throws {TypeError}
10448
- * @this {IDBFactoryFull}
10449
- * @returns {void}
10450
- */
10620
+ * @todo forceClose: Test
10621
+ * This is provided to facilitate unit-testing of the
10622
+ * closing of a database connection with a forced flag:
10623
+ * <https://w3c.github.io/IndexedDB/#steps-for-closing-a-database-connection>
10624
+ * @param {string} dbName
10625
+ * @param {Integer} connIdx
10626
+ * @param {string} msg
10627
+ * @throws {TypeError}
10628
+ * @this {IDBFactoryFull}
10629
+ * @returns {void}
10630
+ */
10451
10631
  IDBFactory.prototype.__forceClose = function (dbName, connIdx, msg) {
10452
10632
  var me = this;
10453
10633
  /**
@@ -10533,6 +10713,9 @@
10533
10713
  * __unique: boolean,
10534
10714
  * __sqlDirection: "DESC"|"ASC",
10535
10715
  * __matchedKeys: {[key: string]: true},
10716
+ * __continuationKey: import('./Key.js').Key|undefined,
10717
+ * __continuationPrimaryKey: import('./Key.js').Key|undefined,
10718
+ * __multiEntryExhausted: boolean,
10536
10719
  * __invalidateCache: () => void
10537
10720
  * }} IDBCursorFull
10538
10721
  */
@@ -10606,6 +10789,9 @@
10606
10789
  this.__valueDecoder = this.__keyOnly ? Key : Sca;
10607
10790
  this.__count = count;
10608
10791
  this.__prefetchedIndex = -1;
10792
+ this.__continuationKey = undefined;
10793
+ this.__continuationPrimaryKey = undefined;
10794
+ this.__multiEntryExhausted = false;
10609
10795
  this.__multiEntryIndex = this.__indexSource ? 'multiEntry' in source && source.multiEntry : false;
10610
10796
  this.__unique = this.direction.includes('unique');
10611
10797
  this.__sqlDirection = ['prev', 'prevunique'].includes(this.direction) ? 'DESC' : 'ASC';
@@ -10769,73 +10955,97 @@
10769
10955
  * @param {SQLTransaction} tx
10770
10956
  * @param {KeySuccess} success
10771
10957
  * @param {FindError} error
10772
- * @param {Integer|undefined} recordsToLoad
10958
+ * @param {Integer} [recordsToLoad]
10773
10959
  * @this {IDBCursorFull}
10774
10960
  * @returns {void}
10775
10961
  */
10776
- IDBCursor.prototype.__findMultiEntry = function (key, primaryKey, tx, success, error, recordsToLoad) {
10962
+ IDBCursor.prototype.__findMultiEntry = function (key, primaryKey, tx, success, error) {
10963
+ var recordsToLoad = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
10777
10964
  var me = this;
10778
- if (me.__prefetchedData && me.__prefetchedData.length === me.__prefetchedIndex) {
10965
+ if (me.__multiEntryExhausted) {
10779
10966
  if (CFG.DEBUG) {
10780
- console.log('Reached end of multiEntry cursor');
10967
+ console.log('[multiEntry] Reached end of multiEntry cursor (already exhausted)');
10781
10968
  }
10782
10969
  success(undefined, undefined, undefined);
10783
10970
  return;
10784
10971
  }
10785
10972
  var quotedKeyColumnName = sqlQuote(me.__keyColumnName);
10786
- var sql = ['SELECT * FROM', escapeStoreNameForSQL(me.__store.__currentName)];
10787
- /** @type {string[]} */
10788
- var sqlValues = [];
10789
- sql.push('WHERE', quotedKeyColumnName, 'NOT NULL');
10790
- if (me.__range && me.__range.lower !== undefined && Array.isArray(me.__range.upper)) {
10791
- if (me.__range.upper.indexOf(me.__range.lower) === 0) {
10792
- sql.push('AND', quotedKeyColumnName, "LIKE ? ESCAPE '^'");
10793
- sqlValues.push('%' + sqlLIKEEscape(/** @type {string} */me.__range.__lowerCached.slice(0, -1)) + '%');
10794
- }
10795
- }
10973
+ var quotedKey = sqlQuote('key');
10796
10974
 
10797
10975
  // Determine the ORDER BY direction based on the cursor.
10798
10976
  var direction = me.__sqlDirection;
10799
10977
  var op = direction === 'ASC' ? '>' : '<';
10800
- var quotedKey = sqlQuote('key');
10801
- if (primaryKey !== undefined) {
10802
- sql.push('AND', quotedKey, op + '= ?');
10803
- // Key.convertValueToKey(primaryKey); // Already checked by `continuePrimaryKey`
10804
- sqlValues.push(/** @type {string} */_encode(primaryKey));
10805
- }
10806
- if (key !== undefined) {
10807
- sql.push('AND', quotedKeyColumnName, op + '= ?');
10808
- // Key.convertValueToKey(key); // Already checked by `continue` or `continuePrimaryKey`
10809
- sqlValues.push(/** @type {string} */_encode(key));
10810
- } else if (me.__key !== undefined) {
10811
- sql.push('AND', quotedKeyColumnName, op + ' ?');
10812
- // Key.convertValueToKey(me.__key); // Already checked when entered
10813
- sqlValues.push(/** @type {string} */_encode(me.__key));
10814
- }
10815
- if (!me.__count) {
10816
- // 1. Sort by key
10817
- sql.push('ORDER BY', quotedKeyColumnName, direction);
10818
10978
 
10819
- // 2. Sort by primaryKey (if defined and not unique)
10820
- if (!me.__unique && me.__keyColumnName !== 'key') {
10821
- // Avoid adding 'key' twice
10822
- sql.push(',', sqlQuote('key'), direction);
10979
+ /**
10980
+ * Runs (and, if a batch of underlying rows produces no matching
10981
+ * multi-entry values, repeatedly re-runs) the query for the next batch
10982
+ * of underlying rows, advancing `me.__continuationKey`/
10983
+ * `me.__continuationPrimaryKey` (tracking the last *physical* row
10984
+ * scanned) each time, until either some matches are found or the
10985
+ * underlying table is exhausted.
10986
+ * @returns {void}
10987
+ */
10988
+ function runQuery() {
10989
+ var sql = ['SELECT * FROM', escapeStoreNameForSQL(me.__store.__currentName)];
10990
+ /** @type {string[]} */
10991
+ var sqlValues = [];
10992
+ sql.push('WHERE', quotedKeyColumnName, 'NOT NULL');
10993
+ if (me.__range && me.__range.lower !== undefined && Array.isArray(me.__range.upper)) {
10994
+ if (me.__range.upper.indexOf(me.__range.lower) === 0) {
10995
+ sql.push('AND', quotedKeyColumnName, "LIKE ? ESCAPE '^'");
10996
+ sqlValues.push('%' + sqlLIKEEscape(/** @type {string} */me.__range.__lowerCached.slice(0, -1)) + '%');
10997
+ }
10998
+ }
10999
+ if (primaryKey !== undefined) {
11000
+ sql.push('AND', quotedKey, op + '= ?');
11001
+ // Key.convertValueToKey(primaryKey); // Already checked by `continuePrimaryKey`
11002
+ sqlValues.push(/** @type {string} */_encode(primaryKey));
10823
11003
  }
10824
-
10825
- // 3. Sort by position (if defined)
10826
-
10827
- if (!me.__unique && me.__indexSource) {
10828
- // 4. Sort by object store position (if defined and not unique)
10829
- sql.push(',', sqlQuote(me.__valueColumnName), direction);
11004
+ if (key !== undefined) {
11005
+ sql.push('AND', quotedKeyColumnName, op + '= ?');
11006
+ // Key.convertValueToKey(key); // Already checked by `continue` or `continuePrimaryKey`
11007
+ sqlValues.push(/** @type {string} */_encode(key));
11008
+ } else if (me.__continuationKey !== undefined) {
11009
+ // Resume from the last underlying (physical) row we scanned, not
11010
+ // from the last *matching* multi-entry value (which lives in a
11011
+ // different key-space than the raw index column and cannot be
11012
+ // reliably compared against it, e.g. for array index keys).
11013
+ sql.push('AND (', quotedKeyColumnName, op, '?', 'OR (', quotedKeyColumnName, '= ?', 'AND', quotedKey, op, '?))');
11014
+ var encodedContinuationKey = /** @type {string} */
11015
+ _encode(me.__continuationKey, true);
11016
+ sqlValues.push(encodedContinuationKey, encodedContinuationKey, /** @type {string} */_encode(me.__continuationPrimaryKey));
11017
+ }
11018
+ if (!me.__count) {
11019
+ // 1. Sort by key
11020
+ sql.push('ORDER BY', quotedKeyColumnName, direction);
11021
+
11022
+ // 2. Sort by primaryKey (if defined and not unique)
11023
+ if (!me.__unique && me.__keyColumnName !== 'key') {
11024
+ // Avoid adding 'key' twice
11025
+ sql.push(',', sqlQuote('key'), direction);
11026
+ }
11027
+
11028
+ // 3. Sort by position (if defined)
11029
+
11030
+ if (!me.__unique && me.__indexSource) {
11031
+ // 4. Sort by object store position (if defined and not unique)
11032
+ sql.push(',', sqlQuote(me.__valueColumnName), direction);
11033
+ }
11034
+ sql.push('LIMIT', String(recordsToLoad));
11035
+ }
11036
+ var sqlStr = sql.join(' ');
11037
+ if (CFG.DEBUG) {
11038
+ console.log('[multiEntry] query', sqlStr, sqlValues);
10830
11039
  }
10831
- sql.push('LIMIT', String(recordsToLoad));
10832
- }
10833
- var sqlStr = sql.join(' ');
10834
- if (CFG.DEBUG) {
10835
- console.log(sqlStr, sqlValues);
10836
- }
10837
- tx.executeSql(sqlStr, sqlValues, function (tx, data) {
10838
- if (data.rows.length > 0) {
11040
+ tx.executeSql(sqlStr, sqlValues, function (tx, data) {
11041
+ if (data.rows.length === 0) {
11042
+ me.__multiEntryExhausted = true;
11043
+ if (CFG.DEBUG) {
11044
+ console.log('[multiEntry] Reached end of multiEntry cursor (no more rows)');
11045
+ }
11046
+ success(undefined, undefined, undefined);
11047
+ return;
11048
+ }
10839
11049
  if (me.__count) {
10840
11050
  // Avoid caching and other processing below
10841
11051
  var ct = 0;
@@ -10848,6 +11058,16 @@
10848
11058
  success(undefined, ct, undefined);
10849
11059
  return;
10850
11060
  }
11061
+
11062
+ // Track how far we've physically scanned, regardless of whether
11063
+ // this batch produced any matches, so the next batch (if any)
11064
+ // resumes after this one instead of re-scanning or stopping early.
11065
+ var lastRawRow = data.rows.item(data.rows.length - 1);
11066
+ me.__continuationKey = _decode(lastRawRow[me.__keyColumnName], true);
11067
+ me.__continuationPrimaryKey = _decode(lastRawRow.key);
11068
+ if (data.rows.length < recordsToLoad) {
11069
+ me.__multiEntryExhausted = true;
11070
+ }
10851
11071
  var rows = [];
10852
11072
  for (var _i = 0; _i < data.rows.length; _i++) {
10853
11073
  var _rowItem = data.rows.item(_i);
@@ -10874,6 +11094,20 @@
10874
11094
  _iterator.f();
10875
11095
  }
10876
11096
  }
11097
+ if (rows.length === 0) {
11098
+ if (me.__multiEntryExhausted) {
11099
+ if (CFG.DEBUG) {
11100
+ console.log('[multiEntry] Reached end of multiEntry cursor (last batch had no matches)');
11101
+ }
11102
+ success(undefined, undefined, undefined);
11103
+ return;
11104
+ }
11105
+ if (CFG.DEBUG) {
11106
+ console.log('[multiEntry] batch had no matches; fetching next batch');
11107
+ }
11108
+ runQuery();
11109
+ return;
11110
+ }
10877
11111
  var reverse = me.direction.indexOf('prev') === 0;
10878
11112
  rows.sort(function (a, b) {
10879
11113
  if (a.matchingKey.replaceAll(leftBracketRegex, 'z') < b.matchingKey.replaceAll(leftBracketRegex, 'z')) {
@@ -10890,47 +11124,31 @@
10890
11124
  }
10891
11125
  return 0;
10892
11126
  });
10893
- if (rows.length > 1) {
10894
- me.__prefetchedIndex = 0;
10895
- me.__prefetchedData = {
10896
- data: rows,
10897
- length: rows.length,
10898
- /**
10899
- * @param {Integer} index
10900
- * @returns {RowItemNonNull}
10901
- */
10902
- item: function item(index) {
10903
- return this.data[index];
10904
- }
10905
- };
10906
- if (CFG.DEBUG) {
10907
- console.log('Preloaded ' + me.__prefetchedData.length + ' records for multiEntry cursor');
10908
- }
10909
- me.__decode(rows[0], success);
10910
- } else if (rows.length === 1) {
10911
- if (CFG.DEBUG) {
10912
- console.log('Reached end of multiEntry cursor');
10913
- }
10914
- me.__decode(rows[0], success);
10915
- } else {
10916
- if (CFG.DEBUG) {
10917
- console.log('Reached end of multiEntry cursor');
11127
+ me.__prefetchedIndex = 0;
11128
+ me.__prefetchedData = {
11129
+ data: rows,
11130
+ length: rows.length,
11131
+ /**
11132
+ * @param {Integer} index
11133
+ * @returns {RowItemNonNull}
11134
+ */
11135
+ item: function item(index) {
11136
+ return this.data[index];
10918
11137
  }
10919
- success(undefined, undefined, undefined);
11138
+ };
11139
+ if (CFG.DEBUG) {
11140
+ console.log('[multiEntry] Preloaded ' + me.__prefetchedData.length + ' records for multiEntry cursor');
10920
11141
  }
10921
- } else {
11142
+ me.__decode(rows[0], success);
11143
+ }, function (tx, err) {
10922
11144
  if (CFG.DEBUG) {
10923
- console.log('Reached end of multiEntry cursor');
11145
+ console.log('[multiEntry] Could not execute Cursor.continue', sqlStr, sqlValues);
10924
11146
  }
10925
- success(undefined, undefined, undefined);
10926
- }
10927
- }, function (tx, err) {
10928
- if (CFG.DEBUG) {
10929
- console.log('Could not execute Cursor.continue', sqlStr, sqlValues);
10930
- }
10931
- error(err);
10932
- return false;
10933
- });
11147
+ error(err);
11148
+ return false;
11149
+ });
11150
+ }
11151
+ runQuery();
10934
11152
  };
10935
11153
 
10936
11154
  /**
@@ -10942,19 +11160,19 @@
10942
11160
  */
10943
11161
 
10944
11162
  /**
10945
- * @callback SuccessArg
10946
- * @param {StructuredCloneValue} value
10947
- * @param {import('./IDBRequest.js').IDBRequestFull} req
10948
- * @returns {void}
10949
- */
11163
+ * @callback SuccessArg
11164
+ * @param {StructuredCloneValue} value
11165
+ * @param {import('./IDBRequest.js').IDBRequestFull} req
11166
+ * @returns {void}
11167
+ */
10950
11168
 
10951
11169
  /**
10952
- * @callback SuccessCallback
10953
- * @param {IndexedDBKey} key
10954
- * @param {StructuredCloneValue} value
10955
- * @param {IndexedDBKey} primaryKey
10956
- * @returns {void}
10957
- */
11170
+ * @callback SuccessCallback
11171
+ * @param {IndexedDBKey} key
11172
+ * @param {StructuredCloneValue} value
11173
+ * @param {IndexedDBKey} primaryKey
11174
+ * @returns {void}
11175
+ */
10958
11176
 
10959
11177
  /**
10960
11178
  * Creates an "onsuccess" callback.
@@ -10982,11 +11200,11 @@
10982
11200
 
10983
11201
  /**
10984
11202
  * @typedef {{
10985
- * matchingKey: string,
10986
- * key: string,
10987
- * [k: string]: string
10988
- * }} RowItemNonNull
10989
- */
11203
+ * matchingKey: string,
11204
+ * key: string,
11205
+ * [k: string]: string
11206
+ * }} RowItemNonNull
11207
+ */
10990
11208
 
10991
11209
  /**
10992
11210
  *
@@ -11039,6 +11257,7 @@
11039
11257
  IDBCursor.prototype.__invalidateCache = function () {
11040
11258
  // @ts-expect-error Why is this not being found?
11041
11259
  this.__prefetchedData = null;
11260
+ this.__multiEntryExhausted = false;
11042
11261
  };
11043
11262
 
11044
11263
  /**
@@ -11094,8 +11313,8 @@
11094
11313
  me.__advanceCount--;
11095
11314
  me.__key = k;
11096
11315
  me.__continue(undefined, true);
11097
- /** @type {() => void} */
11098
- executeNextRequest(); // We don't call success yet but do need to advance the transaction queue
11316
+ // We don't call success yet but do need to advance the transaction queue
11317
+ runContinuationSafely(/** @type {() => void} */executeNextRequest);
11099
11318
  return;
11100
11319
  }
11101
11320
  me.__advanceCount = undefined;
@@ -11117,11 +11336,15 @@
11117
11336
  return;
11118
11337
  }
11119
11338
  // @ts-expect-error Todo: Our bug to fix
11120
- cursorContinue(tx, args, success, error);
11339
+ runContinuationSafely(function () {
11340
+ return cursorContinue(tx, args, success, error);
11341
+ });
11121
11342
  }
11122
11343
  if (me.__unique && !me.__multiEntryIndex && encKey === _encode(me.key, me.__multiEntryIndex)) {
11123
11344
  // @ts-expect-error Todo: Our bug to fix
11124
- cursorContinue(tx, args, success, error);
11345
+ runContinuationSafely(function () {
11346
+ return cursorContinue(tx, args, success, error);
11347
+ });
11125
11348
  return;
11126
11349
  }
11127
11350
  checkKey();