indexeddbshim 15.0.1 → 15.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/indexeddbshim-Key.js +15 -14
- package/dist/indexeddbshim-Key.js.map +1 -1
- package/dist/indexeddbshim-Key.min.js +1 -1
- package/dist/indexeddbshim-Key.min.js.map +1 -1
- package/dist/indexeddbshim-UnicodeIdentifiers-node.cjs +117 -107
- package/dist/indexeddbshim-UnicodeIdentifiers-node.cjs.map +1 -1
- package/dist/indexeddbshim-UnicodeIdentifiers.js +139 -121
- package/dist/indexeddbshim-UnicodeIdentifiers.js.map +1 -1
- package/dist/indexeddbshim-UnicodeIdentifiers.min.js +2 -2
- package/dist/indexeddbshim-UnicodeIdentifiers.min.js.map +1 -1
- package/dist/indexeddbshim-node.cjs +115 -105
- package/dist/indexeddbshim-node.cjs.map +1 -1
- package/dist/indexeddbshim-noninvasive.js +133 -115
- package/dist/indexeddbshim-noninvasive.js.map +1 -1
- package/dist/indexeddbshim-noninvasive.min.js +2 -2
- package/dist/indexeddbshim-noninvasive.min.js.map +1 -1
- package/dist/indexeddbshim.js +119 -109
- package/dist/indexeddbshim.js.map +1 -1
- package/dist/indexeddbshim.min.js +2 -2
- package/dist/indexeddbshim.min.js.map +1 -1
- package/package.json +13 -29
- package/src/DOMException.js +5 -4
- package/src/DOMStringList.js +4 -3
- package/src/IDBCursor.js +4 -4
- package/src/IDBDatabase.js +2 -2
- package/src/IDBFactory.js +15 -12
- package/src/IDBIndex.js +7 -6
- package/src/IDBKeyRange.js +3 -3
- package/src/IDBObjectStore.js +10 -9
- package/src/IDBTransaction.js +5 -5
- package/src/IDBVersionChangeEvent.js +1 -1
- package/src/Key.js +1 -1
- package/src/Sca.js +0 -1
- package/src/UnicodeIdentifiers.js +2 -2
- package/src/setGlobalVars.js +5 -2
- package/src/util.js +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! indexeddbshim - v15.0.
|
|
1
|
+
/*! indexeddbshim - v15.0.1 - 9/5/2024 */
|
|
2
2
|
|
|
3
3
|
'use strict';
|
|
4
4
|
|
|
@@ -529,7 +529,7 @@ function EventTarget() {
|
|
|
529
529
|
* "addDefaultEventListener"|"removeDefaultEventListener"|"hasDefaultEventListener"
|
|
530
530
|
* } ListenerName
|
|
531
531
|
*/
|
|
532
|
-
Object.assign(EventTarget.prototype, ['Early', '', 'Late', 'Default'].reduce(function (
|
|
532
|
+
Object.assign(EventTarget.prototype, ['Early', '', 'Late', 'Default'].reduce(function (/** @type {{[key: string]: Function}} */
|
|
533
533
|
obj, listenerType) {
|
|
534
534
|
['add', 'remove', 'has'].forEach(function (method) {
|
|
535
535
|
var mainMethod = /** @type {ListenerName} */method + listenerType + 'EventListener';
|
|
@@ -1120,7 +1120,7 @@ const CFG = /** @type {ConfigValues} */{};
|
|
|
1120
1120
|
* @returns {void}
|
|
1121
1121
|
*/
|
|
1122
1122
|
val => {
|
|
1123
|
-
if (!/^(?::memory:|file::memory:(\?[^#]*)?(#.*)?)?$/u.test(
|
|
1123
|
+
if (!/^(?::memory:|file::memory:(\?[^#]*)?(#.*)?)?$/u.test(/** @type {string} */val)) {
|
|
1124
1124
|
throw new TypeError('`memoryDatabase` must be the empty string, ":memory:", or a ' + '"file::memory:[?queryString][#hash] URL".');
|
|
1125
1125
|
}
|
|
1126
1126
|
}],
|
|
@@ -1264,7 +1264,7 @@ function escapeDatabaseNameForSQLAndFiles(db) {
|
|
|
1264
1264
|
}
|
|
1265
1265
|
if (CFG.databaseCharacterEscapeList !== false) {
|
|
1266
1266
|
db = db.replace(CFG.databaseCharacterEscapeList ? new RegExp(CFG.databaseCharacterEscapeList, 'gu') : /[\u0000-\u001F\u007F"*/:<>?\\|]/gu,
|
|
1267
|
-
// eslint-disable-line no-control-regex
|
|
1267
|
+
// eslint-disable-line no-control-regex -- Controls needed
|
|
1268
1268
|
function (n0) {
|
|
1269
1269
|
// eslint-disable-next-line unicorn/prefer-code-point -- Switch to `codePointAt`?
|
|
1270
1270
|
return '^1' + n0.charCodeAt(0).toString(16).padStart(2, '0');
|
|
@@ -1600,7 +1600,7 @@ function convertToDOMString(v, treatNullAs) {
|
|
|
1600
1600
|
function ToString(o) {
|
|
1601
1601
|
// Todo: See `es-abstract/es7`
|
|
1602
1602
|
// `String()` will not throw with Symbols
|
|
1603
|
-
return '' + o; // eslint-disable-line no-implicit-coercion
|
|
1603
|
+
return '' + o; // eslint-disable-line no-implicit-coercion -- Need to throw with symbols
|
|
1604
1604
|
}
|
|
1605
1605
|
|
|
1606
1606
|
/**
|
|
@@ -1677,7 +1677,7 @@ function IDBVersionChangeEvent(type /* , eventInitDict */) {
|
|
|
1677
1677
|
this.toString = function () {
|
|
1678
1678
|
return '[object IDBVersionChangeEvent]';
|
|
1679
1679
|
};
|
|
1680
|
-
// eslint-disable-next-line prefer-rest-params
|
|
1680
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
1681
1681
|
this.__eventInitDict = arguments[1] || {};
|
|
1682
1682
|
}
|
|
1683
1683
|
|
|
@@ -1842,10 +1842,10 @@ function createNonNativeDOMExceptionClass() {
|
|
|
1842
1842
|
function DOMException(message, name) {
|
|
1843
1843
|
// const err = Error.prototype.constructor.call(this, message); // Any use to this? Won't set this.message
|
|
1844
1844
|
this[Symbol.toStringTag] = 'DOMException';
|
|
1845
|
-
this._code = name in codes ? codes[(
|
|
1845
|
+
this._code = name in codes ? codes[(/** @type {Code} */name)] : legacyCodes[(/** @type {LegacyCode} */name)] || 0;
|
|
1846
1846
|
this._name = name || 'Error';
|
|
1847
1847
|
// We avoid `String()` in this next line as it converts Symbols
|
|
1848
|
-
this._message = message === undefined ? '' : '' + message; // eslint-disable-line no-implicit-coercion
|
|
1848
|
+
this._message = message === undefined ? '' : '' + message; // eslint-disable-line no-implicit-coercion -- Don't convert symbols
|
|
1849
1849
|
Object.defineProperty(this, 'code', {
|
|
1850
1850
|
configurable: true,
|
|
1851
1851
|
enumerable: true,
|
|
@@ -1873,12 +1873,12 @@ function createNonNativeDOMExceptionClass() {
|
|
|
1873
1873
|
// Necessary for W3C tests which complains if `DOMException` has properties on its "own" prototype
|
|
1874
1874
|
|
|
1875
1875
|
// class DummyDOMException extends Error {}; // Sometimes causing problems in Node
|
|
1876
|
-
/* eslint-disable func-name-matching */
|
|
1876
|
+
/* eslint-disable func-name-matching -- See above */
|
|
1877
1877
|
/**
|
|
1878
1878
|
* @class
|
|
1879
1879
|
*/
|
|
1880
1880
|
const DummyDOMException = function DOMException() {/* */};
|
|
1881
|
-
/* eslint-enable func-name-matching */
|
|
1881
|
+
/* eslint-enable func-name-matching -- See above */
|
|
1882
1882
|
DummyDOMException.prototype = Object.create(Error.prototype); // Intended for subclassing
|
|
1883
1883
|
/** @type {const} */
|
|
1884
1884
|
['name', 'message'].forEach(prop => {
|
|
@@ -1979,7 +1979,7 @@ function createNonNativeDOMException(name, message) {
|
|
|
1979
1979
|
*/
|
|
1980
1980
|
function logError(name, message, error) {
|
|
1981
1981
|
if (CFG.DEBUG) {
|
|
1982
|
-
const msg = error && typeof error === 'object' && error.message ? error.message : (
|
|
1982
|
+
const msg = error && typeof error === 'object' && error.message ? error.message : (/** @type {string} */error);
|
|
1983
1983
|
const method = typeof console.error === 'function' ? 'error' : 'log';
|
|
1984
1984
|
console[method](name + ': ' + message + '. ' + (msg || ''));
|
|
1985
1985
|
if (console.trace) {
|
|
@@ -2081,7 +2081,8 @@ try {
|
|
|
2081
2081
|
// Native DOMException works as expected
|
|
2082
2082
|
useNativeDOMException = true;
|
|
2083
2083
|
}
|
|
2084
|
-
|
|
2084
|
+
// eslint-disable-next-line no-unused-vars -- Problem with commonJS rollup
|
|
2085
|
+
} catch (err) {}
|
|
2085
2086
|
const createDOMException = useNativeDOMException
|
|
2086
2087
|
// eslint-disable-next-line @stylistic/operator-linebreak -- Need JSDoc
|
|
2087
2088
|
?
|
|
@@ -2389,7 +2390,7 @@ function SyncPromise(fn) {
|
|
|
2389
2390
|
// assume that we will resolve/reject (truly) synchronously
|
|
2390
2391
|
// and thus we avoid flagging checks about whether we've
|
|
2391
2392
|
// already resolved/rejected.
|
|
2392
|
-
if (
|
|
2393
|
+
if (/** @type {Callbacks} */that.c[state].length) {
|
|
2393
2394
|
that.c = null;
|
|
2394
2395
|
}
|
|
2395
2396
|
}
|
|
@@ -2427,7 +2428,7 @@ function SyncPromise(fn) {
|
|
|
2427
2428
|
SyncPromise.prototype.then = function (cb, errBack) {
|
|
2428
2429
|
/* eslint-enable unicorn/no-thenable -- Promise API */
|
|
2429
2430
|
const that = this;
|
|
2430
|
-
return new SyncPromise(
|
|
2431
|
+
return new SyncPromise(/** @type {ResolveReject} */
|
|
2431
2432
|
function (resolve, reject) {
|
|
2432
2433
|
const rej = typeof errBack === 'function' ? errBack : reject;
|
|
2433
2434
|
|
|
@@ -2457,7 +2458,7 @@ SyncPromise.prototype.then = function (cb, errBack) {
|
|
|
2457
2458
|
*/
|
|
2458
2459
|
SyncPromise.prototype.catch = function (cb) {
|
|
2459
2460
|
const that = this;
|
|
2460
|
-
return new SyncPromise(
|
|
2461
|
+
return new SyncPromise(/** @type {ResolveReject} */
|
|
2461
2462
|
function (resolve, reject) {
|
|
2462
2463
|
/**
|
|
2463
2464
|
* @returns {void}
|
|
@@ -2486,7 +2487,7 @@ SyncPromise.prototype.catch = function (cb) {
|
|
|
2486
2487
|
* @returns {SyncPromise}
|
|
2487
2488
|
*/
|
|
2488
2489
|
SyncPromise.all = function (promises) {
|
|
2489
|
-
return new SyncPromise(
|
|
2490
|
+
return new SyncPromise(/** @type {ResolveReject} */
|
|
2490
2491
|
(resolve, reject) => {
|
|
2491
2492
|
let l = promises.length;
|
|
2492
2493
|
/** @type {ArbitraryValue[]} */
|
|
@@ -2496,8 +2497,8 @@ SyncPromise.all = function (promises) {
|
|
|
2496
2497
|
return;
|
|
2497
2498
|
}
|
|
2498
2499
|
promises.forEach((p, i) => {
|
|
2499
|
-
if (isPromise(
|
|
2500
|
-
addReject(
|
|
2500
|
+
if (isPromise(/** @type {PromiseLike<any>} */p)) {
|
|
2501
|
+
addReject(/** @type {PromiseLike<any>} */p.then(/** @type {OnFulfilled} */
|
|
2501
2502
|
res => {
|
|
2502
2503
|
newPromises[i] = res;
|
|
2503
2504
|
--l || resolve(newPromises);
|
|
@@ -2516,11 +2517,11 @@ SyncPromise.all = function (promises) {
|
|
|
2516
2517
|
*/
|
|
2517
2518
|
SyncPromise.race = function (promises) {
|
|
2518
2519
|
let resolved = false;
|
|
2519
|
-
return new SyncPromise(
|
|
2520
|
+
return new SyncPromise(/** @type {ResolveReject} */
|
|
2520
2521
|
(resolve, reject) => {
|
|
2521
2522
|
promises.some((p, i) => {
|
|
2522
|
-
if (isPromise(
|
|
2523
|
-
addReject(
|
|
2523
|
+
if (isPromise(/** @type {PromiseLike<any>} */p)) {
|
|
2524
|
+
addReject(/** @type {PromiseLike<any>} */p.then(/** @type {OnFulfilled} */
|
|
2524
2525
|
res => {
|
|
2525
2526
|
if (resolved) {
|
|
2526
2527
|
return;
|
|
@@ -2542,7 +2543,7 @@ SyncPromise.race = function (promises) {
|
|
|
2542
2543
|
* @returns {SyncPromise}
|
|
2543
2544
|
*/
|
|
2544
2545
|
SyncPromise.resolve = function (val) {
|
|
2545
|
-
return new SyncPromise(
|
|
2546
|
+
return new SyncPromise(/** @type {ResolveReject} */
|
|
2546
2547
|
(resolve, reject) => {
|
|
2547
2548
|
resolve(val);
|
|
2548
2549
|
});
|
|
@@ -2553,7 +2554,7 @@ SyncPromise.resolve = function (val) {
|
|
|
2553
2554
|
* @returns {SyncPromise}
|
|
2554
2555
|
*/
|
|
2555
2556
|
SyncPromise.reject = function (val) {
|
|
2556
|
-
return new SyncPromise(
|
|
2557
|
+
return new SyncPromise(/** @type {ResolveReject} */
|
|
2557
2558
|
(resolve, reject) => {
|
|
2558
2559
|
reject(val);
|
|
2559
2560
|
});
|
|
@@ -2657,7 +2658,7 @@ const keyTypeToEncodedChar = {
|
|
|
2657
2658
|
};
|
|
2658
2659
|
const keyTypes = /** @type {(KeyType|"invalid")[]} */Object.keys(keyTypeToEncodedChar);
|
|
2659
2660
|
keyTypes.forEach(k => {
|
|
2660
|
-
keyTypeToEncodedChar[k] = String.fromCodePoint(
|
|
2661
|
+
keyTypeToEncodedChar[k] = String.fromCodePoint(/** @type {number} */keyTypeToEncodedChar[k]);
|
|
2661
2662
|
});
|
|
2662
2663
|
const encodedCharToKeyType = keyTypes.reduce((o, k) => {
|
|
2663
2664
|
o[keyTypeToEncodedChar[k]] = k;
|
|
@@ -3021,7 +3022,7 @@ function getKeyType(key) {
|
|
|
3021
3022
|
return 'binary';
|
|
3022
3023
|
}
|
|
3023
3024
|
const keyType = typeof key;
|
|
3024
|
-
return ['string', 'number'].includes(keyType) ? (
|
|
3025
|
+
return ['string', 'number'].includes(keyType) ? (/** @type {"string"|"number"} */keyType) : 'invalid';
|
|
3025
3026
|
}
|
|
3026
3027
|
|
|
3027
3028
|
/**
|
|
@@ -3129,7 +3130,7 @@ function convertValueToKeyValueDecoded(input, seen, multiEntry, fullKeys) {
|
|
|
3129
3130
|
// May throw (if detached)
|
|
3130
3131
|
// Get a copy of the bytes held by the buffer source
|
|
3131
3132
|
// https://heycam.github.io/webidl/#ref-for-dfn-get-buffer-source-copy-2
|
|
3132
|
-
const octets = getCopyBytesHeldByBufferSource(
|
|
3133
|
+
const octets = getCopyBytesHeldByBufferSource(/** @type {BufferSource} */input);
|
|
3133
3134
|
return {
|
|
3134
3135
|
type: 'binary',
|
|
3135
3136
|
value: octets
|
|
@@ -3352,7 +3353,7 @@ function evaluateKeyPathOnValueToDecodedValue(value, keyPath, multiEntry, fullKe
|
|
|
3352
3353
|
value = /** @type {File} */value[idntfr];
|
|
3353
3354
|
break;
|
|
3354
3355
|
case 'lastModifiedDate':
|
|
3355
|
-
value = new Date(
|
|
3356
|
+
value = new Date(/** @type {File} */value.lastModified);
|
|
3356
3357
|
break;
|
|
3357
3358
|
}
|
|
3358
3359
|
} else if (!isObj(value) || !Object.hasOwn(value, idntfr)) {
|
|
@@ -3386,7 +3387,7 @@ function injectKeyIntoValueUsingKeyPath(value, key, keyPath) {
|
|
|
3386
3387
|
}
|
|
3387
3388
|
value = value[identifier];
|
|
3388
3389
|
});
|
|
3389
|
-
value[(
|
|
3390
|
+
value[(/** @type {string} */last)] = key; // key is already a `keyValue` in our processing so no need to convert
|
|
3390
3391
|
}
|
|
3391
3392
|
|
|
3392
3393
|
/**
|
|
@@ -3667,7 +3668,7 @@ function generateKeyForStore(tx, store, cb, sqlFailCb) {
|
|
|
3667
3668
|
getCurrentNumber(tx, store, function (key) {
|
|
3668
3669
|
if (key > MAX_ALLOWED_CURRENT_NUMBER) {
|
|
3669
3670
|
// 2 ^ 53 (See <https://github.com/w3c/IndexedDB/issues/147>)
|
|
3670
|
-
cb('failure');
|
|
3671
|
+
cb('failure');
|
|
3671
3672
|
return;
|
|
3672
3673
|
}
|
|
3673
3674
|
// Increment current number by 1 (we cannot leverage SQLite's
|
|
@@ -3793,7 +3794,7 @@ IDBKeyRange.__createInstance = function (lower, upper, lowerOpen, upperOpen) {
|
|
|
3793
3794
|
convertValueToKeyRethrowingAndIfInvalid(upper);
|
|
3794
3795
|
}
|
|
3795
3796
|
if (lower !== undefined && upper !== undefined && lower !== upper) {
|
|
3796
|
-
if (
|
|
3797
|
+
if (/** @type {string} */encode$1(lower) > (/** @type {string} */encode$1(upper))) {
|
|
3797
3798
|
throw createDOMException('DataError', '`lower` must not be greater than `upper` argument in `bound()` call.');
|
|
3798
3799
|
}
|
|
3799
3800
|
}
|
|
@@ -3844,7 +3845,7 @@ IDBKeyRange.lowerBound = function (value /* , open */) {
|
|
|
3844
3845
|
if (!arguments.length) {
|
|
3845
3846
|
throw new TypeError('IDBKeyRange.lowerBound requires a value argument');
|
|
3846
3847
|
}
|
|
3847
|
-
// eslint-disable-next-line prefer-rest-params
|
|
3848
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
3848
3849
|
return IDBKeyRange.__createInstance(value, undefined, arguments[1], true);
|
|
3849
3850
|
};
|
|
3850
3851
|
|
|
@@ -3856,7 +3857,7 @@ IDBKeyRange.upperBound = function (value /* , open */) {
|
|
|
3856
3857
|
if (!arguments.length) {
|
|
3857
3858
|
throw new TypeError('IDBKeyRange.upperBound requires a value argument');
|
|
3858
3859
|
}
|
|
3859
|
-
// eslint-disable-next-line prefer-rest-params
|
|
3860
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
3860
3861
|
return IDBKeyRange.__createInstance(undefined, value, true, arguments[1]);
|
|
3861
3862
|
};
|
|
3862
3863
|
|
|
@@ -3869,7 +3870,7 @@ IDBKeyRange.bound = function (lower, upper /* , lowerOpen, upperOpen */) {
|
|
|
3869
3870
|
if (arguments.length <= 1) {
|
|
3870
3871
|
throw new TypeError('IDBKeyRange.bound requires lower and upper arguments');
|
|
3871
3872
|
}
|
|
3872
|
-
// eslint-disable-next-line prefer-rest-params
|
|
3873
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
3873
3874
|
return IDBKeyRange.__createInstance(lower, upper, arguments[2], arguments[3]);
|
|
3874
3875
|
};
|
|
3875
3876
|
IDBKeyRange.prototype[Symbol.toStringTag] = 'IDBKeyRangePrototype';
|
|
@@ -3934,7 +3935,7 @@ function setSQLForKeyRange(range, quotedKeyColumnName, sql, sqlValues, addAnd, c
|
|
|
3934
3935
|
encodedUpperKey = checkCached ? range.__upperCached : encode$1(range.upper);
|
|
3935
3936
|
}
|
|
3936
3937
|
if (hasLower) {
|
|
3937
|
-
sqlValues.push(escapeSQLiteStatement(
|
|
3938
|
+
sqlValues.push(escapeSQLiteStatement(/** @type {string} */encodedLowerKey));
|
|
3938
3939
|
if (hasUpper && encodedLowerKey === encodedUpperKey && !range.lowerOpen && !range.upperOpen) {
|
|
3939
3940
|
sql.push(quotedKeyColumnName, '=', '?');
|
|
3940
3941
|
return;
|
|
@@ -3946,7 +3947,7 @@ function setSQLForKeyRange(range, quotedKeyColumnName, sql, sqlValues, addAnd, c
|
|
|
3946
3947
|
}
|
|
3947
3948
|
if (hasUpper) {
|
|
3948
3949
|
sql.push(quotedKeyColumnName, range.upperOpen ? '<' : '<=', '?');
|
|
3949
|
-
sqlValues.push(escapeSQLiteStatement(
|
|
3950
|
+
sqlValues.push(escapeSQLiteStatement(/** @type {string} */encodedUpperKey));
|
|
3950
3951
|
}
|
|
3951
3952
|
}
|
|
3952
3953
|
}
|
|
@@ -4008,7 +4009,8 @@ if (Object.defineProperty) {
|
|
|
4008
4009
|
if (testObject.test) {
|
|
4009
4010
|
cleanInterface = true;
|
|
4010
4011
|
}
|
|
4011
|
-
|
|
4012
|
+
// eslint-disable-next-line no-unused-vars -- Problem with commonJS rollup
|
|
4013
|
+
} catch (err) {
|
|
4012
4014
|
// Object.defineProperty does not work as intended.
|
|
4013
4015
|
}
|
|
4014
4016
|
}
|
|
@@ -4091,7 +4093,7 @@ DOMStringList.prototype = {
|
|
|
4091
4093
|
* @returns {void}
|
|
4092
4094
|
*/
|
|
4093
4095
|
forEach(cb, thisArg) {
|
|
4094
|
-
// eslint-disable-next-line unicorn/no-array-callback-reference, unicorn/no-array-method-this-argument
|
|
4096
|
+
// eslint-disable-next-line unicorn/no-array-callback-reference, unicorn/no-array-method-this-argument -- Convenient
|
|
4095
4097
|
this._items.forEach(cb, thisArg);
|
|
4096
4098
|
},
|
|
4097
4099
|
/**
|
|
@@ -4100,7 +4102,7 @@ DOMStringList.prototype = {
|
|
|
4100
4102
|
* @returns {any[]}
|
|
4101
4103
|
*/
|
|
4102
4104
|
map(cb, thisArg) {
|
|
4103
|
-
// eslint-disable-next-line unicorn/no-array-callback-reference, unicorn/no-array-method-this-argument
|
|
4105
|
+
// eslint-disable-next-line unicorn/no-array-callback-reference, unicorn/no-array-method-this-argument -- Convenient
|
|
4104
4106
|
return this._items.map(cb, thisArg);
|
|
4105
4107
|
},
|
|
4106
4108
|
/**
|
|
@@ -4356,7 +4358,6 @@ IDBTransaction.__createInstance = function (db, storeNames, mode) {
|
|
|
4356
4358
|
|
|
4357
4359
|
// @ts-expect-error It's ok
|
|
4358
4360
|
IDBTransaction.prototype = EventTargetFactory.createInstance({
|
|
4359
|
-
// eslint-disable-next-line n/no-sync -- API
|
|
4360
4361
|
defaultSync: true,
|
|
4361
4362
|
// Ensure EventTarget preserves our properties
|
|
4362
4363
|
extraProperties: ['complete']
|
|
@@ -4511,7 +4512,7 @@ IDBTransaction.prototype.__executeRequests = function () {
|
|
|
4511
4512
|
}
|
|
4512
4513
|
q.op(tx, q.args, success, error, executeNextRequest);
|
|
4513
4514
|
} catch (e) {
|
|
4514
|
-
error(
|
|
4515
|
+
error(/** @type {Error} */e);
|
|
4515
4516
|
}
|
|
4516
4517
|
}
|
|
4517
4518
|
}
|
|
@@ -4522,7 +4523,7 @@ IDBTransaction.prototype.__executeRequests = function () {
|
|
|
4522
4523
|
// Not a genuine SQL error
|
|
4523
4524
|
return;
|
|
4524
4525
|
}
|
|
4525
|
-
const err = webSQLErrback(
|
|
4526
|
+
const err = webSQLErrback(/** @type {SQLError} */webSQLErr);
|
|
4526
4527
|
me.__abortTransaction(err);
|
|
4527
4528
|
}, function () {
|
|
4528
4529
|
// For Node, we don't need to try running here as we can keep
|
|
@@ -4723,7 +4724,7 @@ IDBTransaction.prototype.objectStore = function (objectStoreName) {
|
|
|
4723
4724
|
}
|
|
4724
4725
|
IDBTransaction.__assertNotFinished(me);
|
|
4725
4726
|
if (me.__objectStoreNames.indexOf(objectStoreName) === -1) {
|
|
4726
|
-
// eslint-disable-line unicorn/prefer-includes
|
|
4727
|
+
// eslint-disable-line unicorn/prefer-includes -- Not supported
|
|
4727
4728
|
throw createDOMException('NotFoundError', objectStoreName + ' is not participating in this transaction');
|
|
4728
4729
|
}
|
|
4729
4730
|
const store = me.db.__objectStores[objectStoreName];
|
|
@@ -4760,7 +4761,7 @@ IDBTransaction.prototype.__abortTransaction = function (err) {
|
|
|
4760
4761
|
me.__objectStoreNames = me.db.__oldObjectStoreNames;
|
|
4761
4762
|
Object.values(me.db.__objectStores).concat(Object.values(me.__storeHandles)).forEach(function (store) {
|
|
4762
4763
|
// Store was already created so we restore to name before the rename
|
|
4763
|
-
if ('__pendingName' in store && me.db.__oldObjectStoreNames.indexOf(store.__pendingName) > -1 // eslint-disable-line unicorn/prefer-includes
|
|
4764
|
+
if ('__pendingName' in store && me.db.__oldObjectStoreNames.indexOf(store.__pendingName) > -1 // eslint-disable-line unicorn/prefer-includes -- Not supported
|
|
4764
4765
|
) {
|
|
4765
4766
|
store.__name = store.__originalName;
|
|
4766
4767
|
}
|
|
@@ -4768,7 +4769,7 @@ IDBTransaction.prototype.__abortTransaction = function (err) {
|
|
|
4768
4769
|
delete store.__pendingDelete;
|
|
4769
4770
|
Object.values(store.__indexes).concat(Object.values(store.__indexHandles)).forEach(function (index) {
|
|
4770
4771
|
// Index was already created so we restore to name before the rename
|
|
4771
|
-
if ('__pendingName' in index && store.__oldIndexNames.indexOf(index.__pendingName) > -1 // eslint-disable-line unicorn/prefer-includes
|
|
4772
|
+
if ('__pendingName' in index && store.__oldIndexNames.indexOf(index.__pendingName) > -1 // eslint-disable-line unicorn/prefer-includes -- Not supported
|
|
4772
4773
|
) {
|
|
4773
4774
|
index.__name = index.__originalName;
|
|
4774
4775
|
}
|
|
@@ -4808,7 +4809,7 @@ IDBTransaction.prototype.__abortTransaction = function (err) {
|
|
|
4808
4809
|
}
|
|
4809
4810
|
me.dispatchEvent(createEvent('__preabort'));
|
|
4810
4811
|
me.__requests.filter(function (q, i, arr) {
|
|
4811
|
-
// eslint-disable-line promise/no-promise-in-callback
|
|
4812
|
+
// eslint-disable-line promise/no-promise-in-callback -- Sync promise
|
|
4812
4813
|
return q.req && !q.req.__done && [i, -1].includes(arr.map(q => q.req).lastIndexOf(q.req));
|
|
4813
4814
|
}).reduce(function (promises, q) {
|
|
4814
4815
|
// We reduce to a chain of promises to be queued in order, so we cannot
|
|
@@ -4827,7 +4828,7 @@ IDBTransaction.prototype.__abortTransaction = function (err) {
|
|
|
4827
4828
|
bubbles: true,
|
|
4828
4829
|
cancelable: true
|
|
4829
4830
|
});
|
|
4830
|
-
return new SyncPromise(
|
|
4831
|
+
return new SyncPromise(/** @type {() => void} */
|
|
4831
4832
|
resolve => {
|
|
4832
4833
|
setTimeout(() => {
|
|
4833
4834
|
if (!q.req) {
|
|
@@ -4872,6 +4873,7 @@ IDBTransaction.prototype.__abortTransaction = function (err) {
|
|
|
4872
4873
|
}
|
|
4873
4874
|
try {
|
|
4874
4875
|
me.__tx.executeSql('ROLLBACK', [], abort, /** @type {SQLStatementErrorCallback} */abort); // Not working in some circumstances, even in Node
|
|
4876
|
+
// eslint-disable-next-line no-unused-vars -- Problem with commonJS rollup
|
|
4875
4877
|
} catch (err) {
|
|
4876
4878
|
// Browser errs when transaction has ended and since it most likely already erred here,
|
|
4877
4879
|
// we call to abort
|
|
@@ -6185,7 +6187,7 @@ const E = {
|
|
|
6185
6187
|
},
|
|
6186
6188
|
BooleanObject: {
|
|
6187
6189
|
test: e => "Boolean" === toStringTag(e) && "object" == typeof e,
|
|
6188
|
-
replace:
|
|
6190
|
+
replace: e => e.valueOf(),
|
|
6189
6191
|
revive: e => new Boolean(e)
|
|
6190
6192
|
},
|
|
6191
6193
|
NumberObject: {
|
|
@@ -6335,7 +6337,6 @@ function register(func) {
|
|
|
6335
6337
|
function encode(obj, func) {
|
|
6336
6338
|
let ret;
|
|
6337
6339
|
try {
|
|
6338
|
-
// eslint-disable-next-line n/no-sync
|
|
6339
6340
|
ret = typeson.stringifySync(obj);
|
|
6340
6341
|
} catch (err) {
|
|
6341
6342
|
// SCA in typeson-registry using `DOMException` which is not defined (e.g., in Node)
|
|
@@ -6471,7 +6472,7 @@ IDBIndex.__createInstance = function (store, indexProperties) {
|
|
|
6471
6472
|
* @returns {string}
|
|
6472
6473
|
*/
|
|
6473
6474
|
get() {
|
|
6474
|
-
return '__pendingName' in me ? (
|
|
6475
|
+
return '__pendingName' in me ? (/** @type {string} */me.__pendingName) : me.name;
|
|
6475
6476
|
}
|
|
6476
6477
|
});
|
|
6477
6478
|
Object.defineProperty(me, 'name', {
|
|
@@ -6650,7 +6651,8 @@ IDBIndex.__createIndex = function (store, index) {
|
|
|
6650
6651
|
tx.executeSql('UPDATE ' + escapeStoreNameForSQL(storeName) + ' SET ' + escapeIndexNameForSQL(indexName) + ' = ? WHERE "key" = ?', [escapeSQLiteStatement(indexKeyStr), data.rows.item(i).key], function () {
|
|
6651
6652
|
addIndexEntry(i + 1);
|
|
6652
6653
|
}, /** @type {SQLStatementErrorCallback} */error);
|
|
6653
|
-
|
|
6654
|
+
// eslint-disable-next-line no-unused-vars -- Problem with commonJS rollup
|
|
6655
|
+
} catch (err) {
|
|
6654
6656
|
// Not a valid value to insert into index, so just continue
|
|
6655
6657
|
addIndexEntry(i + 1);
|
|
6656
6658
|
}
|
|
@@ -6839,7 +6841,7 @@ IDBIndex.prototype.__fetchIndexData = function (range, opType, nullDisallowed, c
|
|
|
6839
6841
|
IDBIndex.prototype.openCursor = function /* query, direction */
|
|
6840
6842
|
() {
|
|
6841
6843
|
const me = this;
|
|
6842
|
-
// eslint-disable-next-line prefer-rest-params
|
|
6844
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
6843
6845
|
const [query, direction] = arguments;
|
|
6844
6846
|
const cursor = IDBCursorWithValue.__createInstance(query, direction, me.objectStore, me, escapeIndexNameForSQLKeyColumn(me.name), 'value');
|
|
6845
6847
|
me.__objectStore.__cursors.push(cursor);
|
|
@@ -6854,7 +6856,7 @@ IDBIndex.prototype.openCursor = function /* query, direction */
|
|
|
6854
6856
|
IDBIndex.prototype.openKeyCursor = function /* query, direction */
|
|
6855
6857
|
() {
|
|
6856
6858
|
const me = this;
|
|
6857
|
-
// eslint-disable-next-line prefer-rest-params
|
|
6859
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
6858
6860
|
const [query, direction] = arguments;
|
|
6859
6861
|
const cursor = IDBCursor.__createInstance(query, direction, me.objectStore, me, escapeIndexNameForSQLKeyColumn(me.name), 'key');
|
|
6860
6862
|
me.__objectStore.__cursors.push(cursor);
|
|
@@ -6897,7 +6899,7 @@ IDBIndex.prototype.getKey = function (query) {
|
|
|
6897
6899
|
*/
|
|
6898
6900
|
IDBIndex.prototype.getAll = function /* query, count */
|
|
6899
6901
|
() {
|
|
6900
|
-
// eslint-disable-next-line prefer-rest-params
|
|
6902
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
6901
6903
|
const [query, count] = arguments;
|
|
6902
6904
|
return this.__fetchIndexData(query, 'value', false, count);
|
|
6903
6905
|
};
|
|
@@ -6908,7 +6910,7 @@ IDBIndex.prototype.getAll = function /* query, count */
|
|
|
6908
6910
|
*/
|
|
6909
6911
|
IDBIndex.prototype.getAllKeys = function /* query, count */
|
|
6910
6912
|
() {
|
|
6911
|
-
// eslint-disable-next-line prefer-rest-params
|
|
6913
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
6912
6914
|
const [query, count] = arguments;
|
|
6913
6915
|
return this.__fetchIndexData(query, 'key', false, count);
|
|
6914
6916
|
};
|
|
@@ -6920,7 +6922,7 @@ IDBIndex.prototype.getAllKeys = function /* query, count */
|
|
|
6920
6922
|
IDBIndex.prototype.count = function /* query */
|
|
6921
6923
|
() {
|
|
6922
6924
|
const me = this;
|
|
6923
|
-
// eslint-disable-next-line prefer-rest-params
|
|
6925
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
6924
6926
|
const query = arguments[0];
|
|
6925
6927
|
// With the exception of needing to check whether the index has been
|
|
6926
6928
|
// deleted, we could, for greater spec parity (if not accuracy),
|
|
@@ -7147,7 +7149,7 @@ function executeFetchIndexData(count, unboundedDisallowed, index, hasKey, range,
|
|
|
7147
7149
|
*/
|
|
7148
7150
|
check => rowKey.includes(check)) ||
|
|
7149
7151
|
// More precise than our SQL
|
|
7150
|
-
isMultiEntryMatch(
|
|
7152
|
+
isMultiEntryMatch(/** @type {string} */
|
|
7151
7153
|
encodedKey, row[escapedIndexNameForKeyCol]))) {
|
|
7152
7154
|
recordCount++;
|
|
7153
7155
|
record = row;
|
|
@@ -7216,12 +7218,12 @@ function buildFetchIndexDataSQL(nullDisallowed, index, range, opType, multiCheck
|
|
|
7216
7218
|
sql.push('OR');
|
|
7217
7219
|
}
|
|
7218
7220
|
sql.push(escapeIndexNameForSQL(index.name), "LIKE ? ESCAPE '^' ");
|
|
7219
|
-
sqlValues.push('%' + sqlLIKEEscape(
|
|
7221
|
+
sqlValues.push('%' + sqlLIKEEscape(/** @type {string} */encode$1(innerKey, index.multiEntry)) + '%');
|
|
7220
7222
|
});
|
|
7221
7223
|
sql.push(')');
|
|
7222
7224
|
} else if (index.multiEntry) {
|
|
7223
7225
|
sql.push('AND', escapeIndexNameForSQL(index.name), "LIKE ? ESCAPE '^'");
|
|
7224
|
-
sqlValues.push('%' + sqlLIKEEscape(
|
|
7226
|
+
sqlValues.push('%' + sqlLIKEEscape(/** @type {string} */encode$1(range, index.multiEntry)) + '%');
|
|
7225
7227
|
} else {
|
|
7226
7228
|
const convertedRange = convertValueToKeyRange(range, nullDisallowed);
|
|
7227
7229
|
setSQLForKeyRange(convertedRange, escapeIndexNameForSQL(index.name), sql, sqlValues, true, false);
|
|
@@ -7728,6 +7730,7 @@ IDBObjectStore.prototype.__insertData = function (tx, encoded, value, clonedKeyO
|
|
|
7728
7730
|
if ('invalid' in indexKey && indexKey.invalid || 'failure' in indexKey && indexKey.failure) {
|
|
7729
7731
|
throw new Error('Go to catch');
|
|
7730
7732
|
}
|
|
7733
|
+
// eslint-disable-next-line no-unused-vars -- Problem with commonJS rollup
|
|
7731
7734
|
} catch (err) {
|
|
7732
7735
|
resolve(undefined);
|
|
7733
7736
|
return;
|
|
@@ -7769,7 +7772,7 @@ IDBObjectStore.prototype.__insertData = function (tx, encoded, value, clonedKeyO
|
|
|
7769
7772
|
// Key.convertValueToKey(primaryKey); // Already run
|
|
7770
7773
|
sqlStart.push(sqlQuote('key'), ',');
|
|
7771
7774
|
sqlEnd.push('?,');
|
|
7772
|
-
insertSqlValues.push(escapeSQLiteStatement(
|
|
7775
|
+
insertSqlValues.push(escapeSQLiteStatement(/** @type {string} */encode$1(clonedKeyOrCurrentNumber)));
|
|
7773
7776
|
}
|
|
7774
7777
|
Object.entries(paramMap).forEach(([key, stmt]) => {
|
|
7775
7778
|
sqlStart.push(escapeIndexNameForSQL(key) + ',');
|
|
@@ -7819,7 +7822,7 @@ IDBObjectStore.prototype.__insertData = function (tx, encoded, value, clonedKeyO
|
|
|
7819
7822
|
*/
|
|
7820
7823
|
IDBObjectStore.prototype.add = function (value /* , key */) {
|
|
7821
7824
|
const me = this;
|
|
7822
|
-
// eslint-disable-next-line prefer-rest-params
|
|
7825
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
7823
7826
|
const key = arguments[1];
|
|
7824
7827
|
if (!(me instanceof IDBObjectStore)) {
|
|
7825
7828
|
throw new TypeError('Illegal invocation');
|
|
@@ -7846,7 +7849,7 @@ IDBObjectStore.prototype.add = function (value /* , key */) {
|
|
|
7846
7849
|
*/
|
|
7847
7850
|
IDBObjectStore.prototype.put = function (value /* , key */) {
|
|
7848
7851
|
const me = this;
|
|
7849
|
-
// eslint-disable-next-line prefer-rest-params
|
|
7852
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
7850
7853
|
const key = arguments[1];
|
|
7851
7854
|
if (!(me instanceof IDBObjectStore)) {
|
|
7852
7855
|
throw new TypeError('Illegal invocation');
|
|
@@ -7900,7 +7903,7 @@ IDBObjectStore.prototype.__overwrite = function (tx, key, cb, error) {
|
|
|
7900
7903
|
* @returns {void}
|
|
7901
7904
|
*/
|
|
7902
7905
|
IDBObjectStore.__storingRecordObjectStore = function (request, store, invalidateCache, value, noOverwrite /* , key */) {
|
|
7903
|
-
// eslint-disable-next-line prefer-rest-params
|
|
7906
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
7904
7907
|
const key = arguments[5];
|
|
7905
7908
|
/** @type {import('./IDBTransaction.js').IDBTransactionFull} */
|
|
7906
7909
|
store.transaction.__pushToQueue(request, function (tx, args, success, error) {
|
|
@@ -8045,7 +8048,7 @@ IDBObjectStore.prototype.getKey = function (query) {
|
|
|
8045
8048
|
*/
|
|
8046
8049
|
IDBObjectStore.prototype.getAll = function /* query, count */
|
|
8047
8050
|
() {
|
|
8048
|
-
// eslint-disable-next-line prefer-rest-params
|
|
8051
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
8049
8052
|
const [query, count] = arguments;
|
|
8050
8053
|
return this.__get(query, false, true, count);
|
|
8051
8054
|
};
|
|
@@ -8056,7 +8059,7 @@ IDBObjectStore.prototype.getAll = function /* query, count */
|
|
|
8056
8059
|
*/
|
|
8057
8060
|
IDBObjectStore.prototype.getAllKeys = function /* query, count */
|
|
8058
8061
|
() {
|
|
8059
|
-
// eslint-disable-next-line prefer-rest-params
|
|
8062
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
8060
8063
|
const [query, count] = arguments;
|
|
8061
8064
|
return this.__get(query, true, true, count);
|
|
8062
8065
|
};
|
|
@@ -8141,7 +8144,7 @@ IDBObjectStore.prototype.clear = function () {
|
|
|
8141
8144
|
IDBObjectStore.prototype.count = function /* query */
|
|
8142
8145
|
() {
|
|
8143
8146
|
const me = this;
|
|
8144
|
-
// eslint-disable-next-line prefer-rest-params
|
|
8147
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
8145
8148
|
const query = arguments[0];
|
|
8146
8149
|
if (!(me instanceof IDBObjectStore)) {
|
|
8147
8150
|
throw new TypeError('Illegal invocation');
|
|
@@ -8160,7 +8163,7 @@ IDBObjectStore.prototype.count = function /* query */
|
|
|
8160
8163
|
IDBObjectStore.prototype.openCursor = function /* query, direction */
|
|
8161
8164
|
() {
|
|
8162
8165
|
const me = this;
|
|
8163
|
-
// eslint-disable-next-line prefer-rest-params
|
|
8166
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
8164
8167
|
const [query, direction] = arguments;
|
|
8165
8168
|
if (!(me instanceof IDBObjectStore)) {
|
|
8166
8169
|
throw new TypeError('Illegal invocation');
|
|
@@ -8182,7 +8185,7 @@ IDBObjectStore.prototype.openKeyCursor = function /* query, direction */
|
|
|
8182
8185
|
throw new TypeError('Illegal invocation');
|
|
8183
8186
|
}
|
|
8184
8187
|
IDBObjectStore.__invalidStateIfDeleted(me);
|
|
8185
|
-
// eslint-disable-next-line prefer-rest-params
|
|
8188
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
8186
8189
|
const [query, direction] = arguments;
|
|
8187
8190
|
const cursor = IDBCursor.__createInstance(query, direction, me, me, 'key', 'key');
|
|
8188
8191
|
me.__cursors.push(cursor);
|
|
@@ -8224,7 +8227,7 @@ IDBObjectStore.prototype.index = function (indexName) {
|
|
|
8224
8227
|
*/
|
|
8225
8228
|
IDBObjectStore.prototype.createIndex = function (indexName, keyPath /* , optionalParameters */) {
|
|
8226
8229
|
const me = this;
|
|
8227
|
-
// eslint-disable-next-line prefer-rest-params
|
|
8230
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
8228
8231
|
let optionalParameters = arguments[2];
|
|
8229
8232
|
if (!(me instanceof IDBObjectStore)) {
|
|
8230
8233
|
throw new TypeError('Illegal invocation');
|
|
@@ -8433,7 +8436,7 @@ IDBDatabase.prototype[Symbol.toStringTag] = 'IDBDatabasePrototype';
|
|
|
8433
8436
|
* @returns {IDBObjectStore}
|
|
8434
8437
|
*/
|
|
8435
8438
|
IDBDatabase.prototype.createObjectStore = function (storeName /* , createOptions */) {
|
|
8436
|
-
// eslint-disable-next-line prefer-rest-params
|
|
8439
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
8437
8440
|
let createOptions = arguments[1];
|
|
8438
8441
|
storeName = String(storeName); // W3C test within IDBObjectStore.js seems to accept string conversion
|
|
8439
8442
|
if (!(this instanceof IDBDatabase)) {
|
|
@@ -8525,7 +8528,7 @@ IDBDatabase.prototype.transaction = function (storeNames /* , mode */) {
|
|
|
8525
8528
|
if (arguments.length === 0) {
|
|
8526
8529
|
throw new TypeError('You must supply a valid `storeNames` to `IDBDatabase.transaction`');
|
|
8527
8530
|
}
|
|
8528
|
-
// eslint-disable-next-line prefer-rest-params
|
|
8531
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
8529
8532
|
let mode = arguments[1];
|
|
8530
8533
|
storeNames = isIterable(storeNames)
|
|
8531
8534
|
// Creating new array also ensures sequence is passed by value: https://heycam.github.io/webidl/#idl-sequence
|
|
@@ -8624,6 +8627,8 @@ Object.defineProperty(IDBDatabase, 'prototype', {
|
|
|
8624
8627
|
writable: false
|
|
8625
8628
|
});
|
|
8626
8629
|
|
|
8630
|
+
// eslint-disable-next-line no-restricted-imports -- Can be polyfilled
|
|
8631
|
+
|
|
8627
8632
|
/**
|
|
8628
8633
|
* @typedef {number} Integer
|
|
8629
8634
|
*/
|
|
@@ -8648,6 +8653,7 @@ const setFS = _fs => {
|
|
|
8648
8653
|
* @returns {string}
|
|
8649
8654
|
*/
|
|
8650
8655
|
const getOrigin = () => {
|
|
8656
|
+
// eslint-disable-next-line no-undef -- If browser/polyfilled
|
|
8651
8657
|
return typeof location !== 'object' || !location ? 'null' : location.origin;
|
|
8652
8658
|
};
|
|
8653
8659
|
const hasNullOrigin = () => CFG.checkOrigin !== false && getOrigin() === 'null';
|
|
@@ -8696,7 +8702,7 @@ function processNextInConnectionQueue(name, origin = getOrigin()) {
|
|
|
8696
8702
|
cb(req);
|
|
8697
8703
|
}
|
|
8698
8704
|
|
|
8699
|
-
/* eslint-disable default-param-last */
|
|
8705
|
+
/* eslint-disable default-param-last -- Keep cb at end */
|
|
8700
8706
|
/**
|
|
8701
8707
|
* @param {import('./IDBRequest.js').IDBOpenDBRequestFull} req
|
|
8702
8708
|
* @param {string} name
|
|
@@ -8705,7 +8711,7 @@ function processNextInConnectionQueue(name, origin = getOrigin()) {
|
|
|
8705
8711
|
* @returns {void}
|
|
8706
8712
|
*/
|
|
8707
8713
|
function addRequestToConnectionQueue(req, name, origin = getOrigin(), cb) {
|
|
8708
|
-
/* eslint-enable default-param-last */
|
|
8714
|
+
/* eslint-enable default-param-last -- Keep cb at end */
|
|
8709
8715
|
if (!connectionQueue[origin][name]) {
|
|
8710
8716
|
connectionQueue[origin][name] = [];
|
|
8711
8717
|
}
|
|
@@ -8934,7 +8940,7 @@ function createSysDB(__openDatabase, success, failure) {
|
|
|
8934
8940
|
* @returns {void}
|
|
8935
8941
|
*/
|
|
8936
8942
|
function sysDbCreateError(tx, err) {
|
|
8937
|
-
const er = webSQLErrback(
|
|
8943
|
+
const er = webSQLErrback(/** @type {SQLError} */err || tx);
|
|
8938
8944
|
if (CFG.DEBUG) {
|
|
8939
8945
|
console.log('Error in sysdb transaction - when creating dbVersions', err);
|
|
8940
8946
|
}
|
|
@@ -9010,7 +9016,7 @@ IDBFactory.prototype.open = function (name /* , version */) {
|
|
|
9010
9016
|
if (!(me instanceof IDBFactory)) {
|
|
9011
9017
|
throw new TypeError('Illegal invocation');
|
|
9012
9018
|
}
|
|
9013
|
-
// eslint-disable-next-line prefer-rest-params
|
|
9019
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
9014
9020
|
let version = arguments[1];
|
|
9015
9021
|
if (arguments.length === 0) {
|
|
9016
9022
|
throw new TypeError('Database name is required');
|
|
@@ -9036,10 +9042,10 @@ IDBFactory.prototype.open = function (name /* , version */) {
|
|
|
9036
9042
|
|
|
9037
9043
|
/** @type {string} */
|
|
9038
9044
|
let escapedDatabaseName;
|
|
9039
|
-
// eslint-disable-next-line no-useless-catch
|
|
9045
|
+
// eslint-disable-next-line no-useless-catch -- Possible refactoring
|
|
9040
9046
|
try {
|
|
9041
9047
|
escapedDatabaseName = escapeDatabaseNameForSQLAndFiles(name);
|
|
9042
|
-
// eslint-disable-next-line sonarjs/no-useless-catch
|
|
9048
|
+
// eslint-disable-next-line sonarjs/no-useless-catch -- Possible refactoring
|
|
9043
9049
|
} catch (err) {
|
|
9044
9050
|
throw err; // new TypeError('You have supplied a database name which does not match the currently supported configuration, possibly due to a length limit enforced for Node compatibility.');
|
|
9045
9051
|
}
|
|
@@ -9054,7 +9060,7 @@ IDBFactory.prototype.open = function (name /* , version */) {
|
|
|
9054
9060
|
if (calledDbCreateError) {
|
|
9055
9061
|
return false;
|
|
9056
9062
|
}
|
|
9057
|
-
const er = err ? webSQLErrback(err) : (
|
|
9063
|
+
const er = err ? webSQLErrback(err) : (/** @type {Error} */tx);
|
|
9058
9064
|
calledDbCreateError = true;
|
|
9059
9065
|
// Re: why bubbling here (and how cancelable is only really relevant for `window.onerror`) see: https://github.com/w3c/IndexedDB/issues/86
|
|
9060
9066
|
const evt = createEvent('error', er, {
|
|
@@ -9104,7 +9110,8 @@ IDBFactory.prototype.open = function (name /* , version */) {
|
|
|
9104
9110
|
if (err) {
|
|
9105
9111
|
try {
|
|
9106
9112
|
systx.executeSql('ROLLBACK', [], cb, cb);
|
|
9107
|
-
|
|
9113
|
+
// eslint-disable-next-line no-unused-vars -- Problem with commonJS rollup
|
|
9114
|
+
} catch (err) {
|
|
9108
9115
|
// Browser may fail with expired transaction above so
|
|
9109
9116
|
// no choice but to manually revert
|
|
9110
9117
|
sysdb.transaction(function (systx) {
|
|
@@ -9122,7 +9129,7 @@ IDBFactory.prototype.open = function (name /* , version */) {
|
|
|
9122
9129
|
if (oldVersion === 0) {
|
|
9123
9130
|
systx.executeSql('DELETE FROM dbVersions WHERE "name" = ?', [sqlSafeName], function () {
|
|
9124
9131
|
// @ts-expect-error Force to work
|
|
9125
|
-
cb(reportError); // eslint-disable-line promise/no-callback-in-promise
|
|
9132
|
+
cb(reportError); // eslint-disable-line promise/no-callback-in-promise -- Convenient
|
|
9126
9133
|
},
|
|
9127
9134
|
// @ts-expect-error Force to work
|
|
9128
9135
|
reportError);
|
|
@@ -9136,7 +9143,7 @@ IDBFactory.prototype.open = function (name /* , version */) {
|
|
|
9136
9143
|
return;
|
|
9137
9144
|
}
|
|
9138
9145
|
// In browser, should auto-commit
|
|
9139
|
-
cb(); // eslint-disable-line promise/no-callback-in-promise
|
|
9146
|
+
cb(); // eslint-disable-line promise/no-callback-in-promise -- Convenient
|
|
9140
9147
|
};
|
|
9141
9148
|
sysdb.transaction(function (systx) {
|
|
9142
9149
|
/**
|
|
@@ -9214,7 +9221,7 @@ IDBFactory.prototype.open = function (name /* , version */) {
|
|
|
9214
9221
|
if (pos > -1) {
|
|
9215
9222
|
connection.__transactions.splice(pos, 1);
|
|
9216
9223
|
}
|
|
9217
|
-
if (
|
|
9224
|
+
if (/** @type {import('./IDBDatabase.js').IDBDatabaseFull} */req.__result.__closePending) {
|
|
9218
9225
|
req.__transaction = null;
|
|
9219
9226
|
const err = createDOMException('AbortError', 'The connection has been closed.');
|
|
9220
9227
|
dbCreateError(err);
|
|
@@ -9369,10 +9376,10 @@ IDBFactory.prototype.deleteDatabase = function (name) {
|
|
|
9369
9376
|
|
|
9370
9377
|
/** @type {string} */
|
|
9371
9378
|
let escapedDatabaseName;
|
|
9372
|
-
// eslint-disable-next-line no-useless-catch
|
|
9379
|
+
// eslint-disable-next-line no-useless-catch -- Possible refactoring
|
|
9373
9380
|
try {
|
|
9374
9381
|
escapedDatabaseName = escapeDatabaseNameForSQLAndFiles(name);
|
|
9375
|
-
// eslint-disable-next-line sonarjs/no-useless-catch
|
|
9382
|
+
// eslint-disable-next-line sonarjs/no-useless-catch -- Possible refactoring
|
|
9376
9383
|
} catch (err) {
|
|
9377
9384
|
throw err; // throw new TypeError('You have supplied a database name which does not match the currently supported configuration, possibly due to a length limit enforced for Node compatibility.');
|
|
9378
9385
|
}
|
|
@@ -9405,7 +9412,7 @@ IDBFactory.prototype.deleteDatabase = function (name) {
|
|
|
9405
9412
|
if (calledDBError || err === true) {
|
|
9406
9413
|
return false;
|
|
9407
9414
|
}
|
|
9408
|
-
const er = webSQLErrback(
|
|
9415
|
+
const er = webSQLErrback(/** @type {SQLError} */err || tx);
|
|
9409
9416
|
sysdbFinishedCbDelete(true, function () {
|
|
9410
9417
|
req.__done = true;
|
|
9411
9418
|
req.__error = er;
|
|
@@ -9460,7 +9467,7 @@ IDBFactory.prototype.deleteDatabase = function (name) {
|
|
|
9460
9467
|
} = data.rows.item(0));
|
|
9461
9468
|
const openConnections = me.__connections[name] || [];
|
|
9462
9469
|
triggerAnyVersionChangeAndBlockedEvents(openConnections, req, version, null).then(function () {
|
|
9463
|
-
// eslint-disable-line promise/catch-or-return
|
|
9470
|
+
// eslint-disable-line promise/catch-or-return -- Sync promise
|
|
9464
9471
|
// Since we need two databases which can't be in a single transaction, we
|
|
9465
9472
|
// do this deleting from `dbVersions` first since the `__sys__` deleting
|
|
9466
9473
|
// only impacts file memory whereas this one is critical for avoiding it
|
|
@@ -9532,7 +9539,7 @@ IDBFactory.prototype.databases = function () {
|
|
|
9532
9539
|
const me = this;
|
|
9533
9540
|
let calledDbCreateError = false;
|
|
9534
9541
|
return new Promise(function (resolve, reject) {
|
|
9535
|
-
// eslint-disable-line promise/avoid-new
|
|
9542
|
+
// eslint-disable-line promise/avoid-new -- Own polyfill
|
|
9536
9543
|
if (!(me instanceof IDBFactory)) {
|
|
9537
9544
|
throw new TypeError('Illegal invocation');
|
|
9538
9545
|
}
|
|
@@ -9549,7 +9556,7 @@ IDBFactory.prototype.databases = function () {
|
|
|
9549
9556
|
if (calledDbCreateError) {
|
|
9550
9557
|
return false;
|
|
9551
9558
|
}
|
|
9552
|
-
const er = err ? webSQLErrback(
|
|
9559
|
+
const er = err ? webSQLErrback(/** @type {SQLError} */err) : tx;
|
|
9553
9560
|
calledDbCreateError = true;
|
|
9554
9561
|
reject(er);
|
|
9555
9562
|
return false;
|
|
@@ -9684,7 +9691,7 @@ function IDBCursor() {
|
|
|
9684
9691
|
}
|
|
9685
9692
|
const IDBCursorAlias = IDBCursor;
|
|
9686
9693
|
|
|
9687
|
-
/* eslint-disable func-name-matching */
|
|
9694
|
+
/* eslint-disable func-name-matching -- API */
|
|
9688
9695
|
/**
|
|
9689
9696
|
* The IndexedDB Cursor Object.
|
|
9690
9697
|
* @see http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBCursor
|
|
@@ -9700,14 +9707,14 @@ const IDBCursorAlias = IDBCursor;
|
|
|
9700
9707
|
* @returns {void}
|
|
9701
9708
|
*/
|
|
9702
9709
|
IDBCursor.__super = function IDBCursor(query, direction, store, source, keyColumnName, valueColumnName, count) {
|
|
9703
|
-
/* eslint-enable func-name-matching */
|
|
9710
|
+
/* eslint-enable func-name-matching -- API */
|
|
9704
9711
|
// @ts-expect-error Should be ok
|
|
9705
9712
|
this[Symbol.toStringTag] = 'IDBCursor';
|
|
9706
9713
|
defineReadonlyProperties(this, ['key', 'primaryKey', 'request']);
|
|
9707
9714
|
IDBObjectStore.__invalidStateIfDeleted(store);
|
|
9708
9715
|
this.__indexSource = instanceOf(source, IDBIndex);
|
|
9709
9716
|
if (this.__indexSource) {
|
|
9710
|
-
IDBIndex.__invalidStateIfDeleted(
|
|
9717
|
+
IDBIndex.__invalidStateIfDeleted(/** @type {import('./IDBIndex.js').IDBIndexFull} */source);
|
|
9711
9718
|
}
|
|
9712
9719
|
IDBTransaction.__assertActive(store.transaction);
|
|
9713
9720
|
const range = convertValueToKeyRange(query);
|
|
@@ -9821,16 +9828,16 @@ IDBCursor.prototype.__findBasic = function (key, primaryKey, tx, success, error,
|
|
|
9821
9828
|
if (primaryKey !== undefined) {
|
|
9822
9829
|
sql.push('AND', quotedKey, op + '= ?');
|
|
9823
9830
|
// Key.convertValueToKey(primaryKey); // Already checked by `continuePrimaryKey`
|
|
9824
|
-
sqlValues.push(
|
|
9831
|
+
sqlValues.push(/** @type {string} */encode$1(primaryKey));
|
|
9825
9832
|
}
|
|
9826
9833
|
if (key !== undefined) {
|
|
9827
9834
|
sql.push('AND', quotedKeyColumnName, op + '= ?');
|
|
9828
9835
|
// Key.convertValueToKey(key); // Already checked by `continue` or `continuePrimaryKey`
|
|
9829
|
-
sqlValues.push(
|
|
9836
|
+
sqlValues.push(/** @type {string} */encode$1(key));
|
|
9830
9837
|
} else if (continueCall && me.__key !== undefined) {
|
|
9831
9838
|
sql.push('AND', quotedKeyColumnName, op + ' ?');
|
|
9832
9839
|
// Key.convertValueToKey(me.__key); // Already checked when stored
|
|
9833
|
-
sqlValues.push(
|
|
9840
|
+
sqlValues.push(/** @type {string} */encode$1(me.__key));
|
|
9834
9841
|
}
|
|
9835
9842
|
if (!me.__count) {
|
|
9836
9843
|
// 1. Sort by key
|
|
@@ -9911,7 +9918,7 @@ IDBCursor.prototype.__findMultiEntry = function (key, primaryKey, tx, success, e
|
|
|
9911
9918
|
if (me.__range && me.__range.lower !== undefined && Array.isArray(me.__range.upper)) {
|
|
9912
9919
|
if (me.__range.upper.indexOf(me.__range.lower) === 0) {
|
|
9913
9920
|
sql.push('AND', quotedKeyColumnName, "LIKE ? ESCAPE '^'");
|
|
9914
|
-
sqlValues.push('%' + sqlLIKEEscape(
|
|
9921
|
+
sqlValues.push('%' + sqlLIKEEscape(/** @type {string} */me.__range.__lowerCached.slice(0, -1)) + '%');
|
|
9915
9922
|
}
|
|
9916
9923
|
}
|
|
9917
9924
|
|
|
@@ -9922,16 +9929,16 @@ IDBCursor.prototype.__findMultiEntry = function (key, primaryKey, tx, success, e
|
|
|
9922
9929
|
if (primaryKey !== undefined) {
|
|
9923
9930
|
sql.push('AND', quotedKey, op + '= ?');
|
|
9924
9931
|
// Key.convertValueToKey(primaryKey); // Already checked by `continuePrimaryKey`
|
|
9925
|
-
sqlValues.push(
|
|
9932
|
+
sqlValues.push(/** @type {string} */encode$1(primaryKey));
|
|
9926
9933
|
}
|
|
9927
9934
|
if (key !== undefined) {
|
|
9928
9935
|
sql.push('AND', quotedKeyColumnName, op + '= ?');
|
|
9929
9936
|
// Key.convertValueToKey(key); // Already checked by `continue` or `continuePrimaryKey`
|
|
9930
|
-
sqlValues.push(
|
|
9937
|
+
sqlValues.push(/** @type {string} */encode$1(key));
|
|
9931
9938
|
} else if (me.__key !== undefined) {
|
|
9932
9939
|
sql.push('AND', quotedKeyColumnName, op + ' ?');
|
|
9933
9940
|
// Key.convertValueToKey(me.__key); // Already checked when entered
|
|
9934
|
-
sqlValues.push(
|
|
9941
|
+
sqlValues.push(/** @type {string} */encode$1(me.__key));
|
|
9935
9942
|
}
|
|
9936
9943
|
if (!me.__count) {
|
|
9937
9944
|
// 1. Sort by key
|
|
@@ -9978,7 +9985,7 @@ IDBCursor.prototype.__findMultiEntry = function (key, primaryKey, tx, success, e
|
|
|
9978
9985
|
* @type {RowItemNonNull}
|
|
9979
9986
|
*/
|
|
9980
9987
|
const clone = {
|
|
9981
|
-
matchingKey: (
|
|
9988
|
+
matchingKey: (/** @type {string} */
|
|
9982
9989
|
encode$1(matchingKey, true)),
|
|
9983
9990
|
key: rowItem.key
|
|
9984
9991
|
};
|
|
@@ -10141,7 +10148,7 @@ IDBCursor.prototype.__decode = function (rowItem, callback) {
|
|
|
10141
10148
|
IDBCursor.prototype.__sourceOrEffectiveObjStoreDeleted = function () {
|
|
10142
10149
|
IDBObjectStore.__invalidStateIfDeleted(this.__store, "The cursor's effective object store has been deleted");
|
|
10143
10150
|
if (this.__indexSource) {
|
|
10144
|
-
IDBIndex.__invalidStateIfDeleted(
|
|
10151
|
+
IDBIndex.__invalidStateIfDeleted(/** @type {import('./IDBIndex.js').IDBIndexFull} */this.source, "The cursor's index source has been deleted");
|
|
10145
10152
|
}
|
|
10146
10153
|
};
|
|
10147
10154
|
|
|
@@ -10257,7 +10264,7 @@ IDBCursor.prototype.__continueFinish = function (key, primaryKey, advanceState)
|
|
|
10257
10264
|
*/
|
|
10258
10265
|
IDBCursor.prototype.continue = function /* key */
|
|
10259
10266
|
() {
|
|
10260
|
-
// eslint-disable-next-line prefer-rest-params
|
|
10267
|
+
// eslint-disable-next-line prefer-rest-params -- API
|
|
10261
10268
|
this.__continue(arguments[0]);
|
|
10262
10269
|
};
|
|
10263
10270
|
|
|
@@ -10400,7 +10407,7 @@ IDBCursor.prototype.delete = function () {
|
|
|
10400
10407
|
console.log(sql, key, primaryKey);
|
|
10401
10408
|
}
|
|
10402
10409
|
// Key.convertValueToKey(primaryKey); // Already checked when entered
|
|
10403
|
-
tx.executeSql(sql, [escapeSQLiteStatement(
|
|
10410
|
+
tx.executeSql(sql, [escapeSQLiteStatement(/** @type {string} */encode$1(primaryKey))], function (tx, data) {
|
|
10404
10411
|
if (data.rowsAffected === 1) {
|
|
10405
10412
|
// We don't invalidate the cache (as we don't access it anymore
|
|
10406
10413
|
// and it will set the index off)
|
|
@@ -10483,7 +10490,7 @@ Object.defineProperty(IDBCursorWithValue, 'prototype', {
|
|
|
10483
10490
|
function setConfig(prop, val) {
|
|
10484
10491
|
if (prop && typeof prop === 'object') {
|
|
10485
10492
|
Object.entries(prop).forEach(([p, val]) => {
|
|
10486
|
-
setConfig(
|
|
10493
|
+
setConfig(/** @type {import('./CFG.js').KeyofConfigValues} */
|
|
10487
10494
|
p, val);
|
|
10488
10495
|
});
|
|
10489
10496
|
return;
|
|
@@ -10604,14 +10611,15 @@ function setGlobalVars(idb, initialConfig) {
|
|
|
10604
10611
|
* @returns {AnyValue}
|
|
10605
10612
|
*/
|
|
10606
10613
|
get [name]() {
|
|
10607
|
-
return /** @type {AnyFunction} */(
|
|
10614
|
+
return /** @type {AnyFunction} */(/** @type {PropertyDescriptor} */propDesc.get).call(this);
|
|
10608
10615
|
}
|
|
10609
10616
|
};
|
|
10610
10617
|
desc = /** @type {PropertyDescriptor} */
|
|
10611
10618
|
Object.getOwnPropertyDescriptor(o, name);
|
|
10612
10619
|
}
|
|
10613
10620
|
Object.defineProperty(IDB, name, desc);
|
|
10614
|
-
|
|
10621
|
+
// eslint-disable-next-line no-unused-vars -- Problem with commonJS rollup
|
|
10622
|
+
} catch (err) {
|
|
10615
10623
|
// With `indexedDB`, PhantomJS fails here and below but
|
|
10616
10624
|
// not above, while Chrome is reverse (and Firefox doesn't
|
|
10617
10625
|
// get here since no WebSQL to use for shimming)
|
|
@@ -10777,7 +10785,9 @@ function setGlobalVars(idb, initialConfig) {
|
|
|
10777
10785
|
// Exclude genuine Safari: http://stackoverflow.com/a/7768006/271577
|
|
10778
10786
|
// Detect iOS: http://stackoverflow.com/questions/9038625/detect-if-device-is-ios/9039885#9039885
|
|
10779
10787
|
// and detect version 9: http://stackoverflow.com/a/26363560/271577
|
|
10780
|
-
/(iPad|iPhone|iPod).* os 9_/ui.test(navigator.userAgent) &&
|
|
10788
|
+
/(iPad|iPhone|iPod).* os 9_/ui.test(navigator.userAgent) && typeof window !== 'undefined' &&
|
|
10789
|
+
// eslint-disable-next-line no-undef -- Extra check
|
|
10790
|
+
!('MSStream' in window) // But avoid IE11
|
|
10781
10791
|
)) {
|
|
10782
10792
|
poorIndexedDbSupport = true;
|
|
10783
10793
|
}
|
|
@@ -11904,10 +11914,10 @@ function wrappedSQLiteDatabase(name) {
|
|
|
11904
11914
|
const nodeWebSQL = customOpenDatabase(wrappedSQLiteDatabase, {});
|
|
11905
11915
|
|
|
11906
11916
|
// ID_Start (includes Other_ID_Start)
|
|
11907
|
-
const UnicodeIDStart =
|
|
11917
|
+
const UnicodeIDStart = String.raw`(?:[$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])`;
|
|
11908
11918
|
|
|
11909
11919
|
// ID_Continue (includes Other_ID_Continue)
|
|
11910
|
-
const UnicodeIDContinue =
|
|
11920
|
+
const UnicodeIDContinue = String.raw`(?:[$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])`;
|
|
11911
11921
|
|
|
11912
11922
|
var UnicodeIdentifiers = /*#__PURE__*/Object.freeze({
|
|
11913
11923
|
__proto__: null,
|