indexeddbshim 16.0.0 → 17.0.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.
- package/README.md +4 -4
- package/badges/licenses-badge-dev.svg +1 -1
- package/badges/licenses-badge.svg +1 -1
- package/dist/CFG.d.ts.map +1 -1
- package/dist/DOMException.d.ts.map +1 -1
- package/dist/DOMStringList.d.ts.map +1 -1
- package/dist/IDBCursor.d.ts +5 -2
- package/dist/IDBCursor.d.ts.map +1 -1
- package/dist/IDBDatabase.d.ts +2 -1
- package/dist/IDBDatabase.d.ts.map +1 -1
- package/dist/IDBFactory.d.ts +2 -1
- package/dist/IDBFactory.d.ts.map +1 -1
- package/dist/IDBIndex.d.ts +2 -1
- package/dist/IDBIndex.d.ts.map +1 -1
- package/dist/IDBKeyRange.d.ts +1 -1
- package/dist/IDBKeyRange.d.ts.map +1 -1
- package/dist/IDBObjectStore.d.ts +2 -1
- package/dist/IDBObjectStore.d.ts.map +1 -1
- package/dist/IDBRequest.d.ts +5 -3
- package/dist/IDBRequest.d.ts.map +1 -1
- package/dist/IDBTransaction.d.ts +2 -1
- package/dist/IDBTransaction.d.ts.map +1 -1
- package/dist/Key.d.ts.map +1 -1
- package/dist/Sca.d.ts.map +1 -1
- package/dist/UnicodeIdentifiers.d.ts.map +1 -1
- package/dist/browser-noninvasive.d.ts.map +1 -1
- package/dist/indexeddbshim-Key.js +32 -27
- package/dist/indexeddbshim-Key.js.map +1 -1
- package/dist/indexeddbshim-Key.min.js +2 -2
- package/dist/indexeddbshim-Key.min.js.map +1 -1
- package/dist/indexeddbshim-UnicodeIdentifiers-node.cjs +984 -1092
- package/dist/indexeddbshim-UnicodeIdentifiers-node.cjs.map +1 -1
- package/dist/indexeddbshim-UnicodeIdentifiers.js +1220 -1233
- package/dist/indexeddbshim-UnicodeIdentifiers.js.map +1 -1
- package/dist/indexeddbshim-UnicodeIdentifiers.min.js +8 -3
- package/dist/indexeddbshim-UnicodeIdentifiers.min.js.map +1 -1
- package/dist/indexeddbshim-node.cjs +984 -1092
- package/dist/indexeddbshim-node.cjs.map +1 -1
- package/dist/indexeddbshim-noninvasive.js +1219 -1232
- package/dist/indexeddbshim-noninvasive.js.map +1 -1
- package/dist/indexeddbshim-noninvasive.min.js +8 -3
- package/dist/indexeddbshim-noninvasive.min.js.map +1 -1
- package/dist/indexeddbshim.js +1219 -1232
- package/dist/indexeddbshim.js.map +1 -1
- package/dist/indexeddbshim.min.js +8 -3
- package/dist/indexeddbshim.min.js.map +1 -1
- package/dist/node-UnicodeIdentifiers.d.ts +2 -2
- package/dist/node-UnicodeIdentifiers.d.ts.map +1 -1
- package/dist/node.d.ts +2 -2
- package/dist/node.d.ts.map +1 -1
- package/dist/setGlobalVars.d.ts.map +1 -1
- package/dist/util.d.ts.map +1 -1
- package/package.json +112 -105
- package/src/CFG.js +2 -3
- package/src/DOMException.js +11 -9
- package/src/DOMStringList.js +8 -3
- package/src/Event.js +2 -0
- package/src/IDBCursor.js +22 -11
- package/src/IDBDatabase.js +9 -6
- package/src/IDBFactory.js +21 -15
- package/src/IDBIndex.js +82 -77
- package/src/IDBKeyRange.js +42 -35
- package/src/IDBObjectStore.js +83 -77
- package/src/IDBRequest.js +28 -15
- package/src/IDBTransaction.js +8 -4
- package/src/IDBVersionChangeEvent.js +2 -0
- package/src/Key.js +22 -12
- package/src/Sca.js +2 -1
- package/src/UnicodeIdentifiers.js +2 -2
- package/src/browser-UnicodeIdentifiers.js +1 -2
- package/src/browser-noninvasive.js +0 -1
- package/src/browser.js +0 -1
- package/src/node-UnicodeIdentifiers.js +1 -1
- package/src/node.js +1 -1
- package/src/setGlobalVars.js +13 -15
- package/src/unicode-regex.js +1 -1
- package/src/util.js +13 -12
package/src/IDBObjectStore.js
CHANGED
|
@@ -18,8 +18,9 @@ const readonlyProperties = ['keyPath', 'indexNames', 'transaction', 'autoIncreme
|
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* IndexedDB Object Store.
|
|
21
|
-
* @see
|
|
21
|
+
* @see https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBObjectStore
|
|
22
22
|
* @class
|
|
23
|
+
* @throws {TypeError}
|
|
23
24
|
*/
|
|
24
25
|
function IDBObjectStore () {
|
|
25
26
|
throw new TypeError('Illegal constructor');
|
|
@@ -85,89 +86,93 @@ IDBObjectStore.__createInstance = function (storeProperties, transaction) {
|
|
|
85
86
|
me.__indexNames = DOMStringList.__createInstance();
|
|
86
87
|
const {indexList} = storeProperties;
|
|
87
88
|
for (const indexName in indexList) {
|
|
88
|
-
if (Object.hasOwn(indexList, indexName)) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
89
|
+
if (!Object.hasOwn(indexList, indexName)) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const index = IDBIndex.__createInstance(me, indexList[indexName]);
|
|
94
|
+
me.__indexes[index.name] = index;
|
|
95
|
+
if (!index.__deleted) {
|
|
96
|
+
me.indexNames.push(index.name);
|
|
94
97
|
}
|
|
95
98
|
}
|
|
96
99
|
me.__oldIndexNames = me.indexNames.clone();
|
|
97
|
-
Object.
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
});
|
|
102
|
-
Object.defineProperty(this, 'name', {
|
|
103
|
-
enumerable: false,
|
|
104
|
-
configurable: false,
|
|
105
|
-
/**
|
|
106
|
-
* @this {IDBObjectStoreFull}
|
|
107
|
-
* @returns {string}
|
|
108
|
-
*/
|
|
109
|
-
get () {
|
|
110
|
-
return this.__name;
|
|
111
|
-
},
|
|
112
|
-
/**
|
|
113
|
-
* @param {string} name
|
|
114
|
-
* @this {IDBObjectStoreFull}
|
|
115
|
-
* @returns {void}
|
|
116
|
-
*/
|
|
117
|
-
set (name) {
|
|
118
|
-
const me = this;
|
|
119
|
-
name = util.convertToDOMString(name);
|
|
120
|
-
const oldName = me.name;
|
|
121
|
-
IDBObjectStoreAlias.__invalidStateIfDeleted(me);
|
|
122
|
-
IDBTransaction.__assertVersionChange(me.transaction);
|
|
123
|
-
IDBTransaction.__assertActive(me.transaction);
|
|
124
|
-
if (oldName === name) {
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
if (me.__idbdb.__objectStores[name] && !me.__idbdb.__objectStores[name].__pendingDelete) {
|
|
128
|
-
throw createDOMException('ConstraintError', 'Object store "' + name + '" already exists in ' + me.__idbdb.name);
|
|
100
|
+
Object.defineProperties(this, {
|
|
101
|
+
__currentName: {
|
|
102
|
+
get () {
|
|
103
|
+
return '__pendingName' in this ? this.__pendingName : this.name;
|
|
129
104
|
}
|
|
105
|
+
},
|
|
106
|
+
name: {
|
|
107
|
+
enumerable: false,
|
|
108
|
+
configurable: false,
|
|
109
|
+
/**
|
|
110
|
+
* @this {IDBObjectStoreFull}
|
|
111
|
+
* @returns {string}
|
|
112
|
+
*/
|
|
113
|
+
get () {
|
|
114
|
+
return this.__name;
|
|
115
|
+
},
|
|
116
|
+
/**
|
|
117
|
+
* @param {string} name
|
|
118
|
+
* @this {IDBObjectStoreFull}
|
|
119
|
+
* @returns {void}
|
|
120
|
+
*/
|
|
121
|
+
set (name) {
|
|
122
|
+
const me = this;
|
|
123
|
+
name = util.convertToDOMString(name);
|
|
124
|
+
const oldName = me.name;
|
|
125
|
+
IDBObjectStoreAlias.__invalidStateIfDeleted(me);
|
|
126
|
+
IDBTransaction.__assertVersionChange(me.transaction);
|
|
127
|
+
IDBTransaction.__assertActive(me.transaction);
|
|
128
|
+
if (oldName === name) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (Object.hasOwn(me.__idbdb.__objectStores, name) && !me.__idbdb.__objectStores[name].__pendingDelete) {
|
|
132
|
+
throw createDOMException('ConstraintError', 'Object store "' + name + '" already exists in ' + me.__idbdb.name);
|
|
133
|
+
}
|
|
130
134
|
|
|
131
|
-
|
|
135
|
+
me.__name = name;
|
|
132
136
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
+
const oldStore = me.__idbdb.__objectStores[oldName];
|
|
138
|
+
oldStore.__name = name; // Fix old references
|
|
139
|
+
me.__idbdb.__objectStores[name] = oldStore; // Ensure new reference accessible
|
|
140
|
+
delete me.__idbdb.__objectStores[oldName]; // Ensure won't be found
|
|
137
141
|
|
|
138
|
-
|
|
142
|
+
me.__idbdb.objectStoreNames.splice(me.__idbdb.objectStoreNames.indexOf(oldName), 1, name);
|
|
139
143
|
|
|
140
|
-
|
|
144
|
+
const oldHandle = /** @type {IDBObjectStoreFull} */ (
|
|
145
|
+
/** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (
|
|
146
|
+
me.transaction
|
|
147
|
+
).__storeHandles[oldName]
|
|
148
|
+
);
|
|
149
|
+
oldHandle.__name = name; // Fix old references
|
|
141
150
|
/** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (
|
|
142
151
|
me.transaction
|
|
143
|
-
).__storeHandles[
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
success();
|
|
152
|
+
).__storeHandles[name] = oldHandle; // Ensure new reference accessible
|
|
153
|
+
|
|
154
|
+
me.__pendingName = oldName;
|
|
155
|
+
|
|
156
|
+
const sql = 'UPDATE __sys__ SET "name" = ? WHERE "name" = ?';
|
|
157
|
+
const sqlValues = [util.escapeSQLiteStatement(name), util.escapeSQLiteStatement(oldName)];
|
|
158
|
+
if (CFG.DEBUG) { console.log(sql, sqlValues); }
|
|
159
|
+
/** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (
|
|
160
|
+
me.transaction
|
|
161
|
+
).__addNonRequestToTransactionQueue(function objectStoreClear (tx, args, success, error) {
|
|
162
|
+
tx.executeSql(sql, sqlValues, function (tx) {
|
|
163
|
+
// This SQL preserves indexes per https://www.sqlite.org/lang_altertable.html
|
|
164
|
+
const sql = 'ALTER TABLE ' + util.escapeStoreNameForSQL(oldName) + ' RENAME TO ' + util.escapeStoreNameForSQL(name);
|
|
165
|
+
if (CFG.DEBUG) { console.log(sql); }
|
|
166
|
+
tx.executeSql(sql, [], function () {
|
|
167
|
+
delete me.__pendingName;
|
|
168
|
+
success();
|
|
169
|
+
});
|
|
170
|
+
}, function (tx, err) {
|
|
171
|
+
error(err);
|
|
172
|
+
return false;
|
|
165
173
|
});
|
|
166
|
-
}, function (tx, err) {
|
|
167
|
-
error(err);
|
|
168
|
-
return false;
|
|
169
174
|
});
|
|
170
|
-
}
|
|
175
|
+
}
|
|
171
176
|
}
|
|
172
177
|
});
|
|
173
178
|
}
|
|
@@ -239,7 +244,7 @@ IDBObjectStore.__createObjectStore = function (db, store) {
|
|
|
239
244
|
);
|
|
240
245
|
|
|
241
246
|
const storeHandles = transaction.__storeHandles;
|
|
242
|
-
if (!storeHandles
|
|
247
|
+
if (!Object.hasOwn(storeHandles, storeName) ||
|
|
243
248
|
// These latter conditions are to allow store
|
|
244
249
|
// recreation to create new clone object
|
|
245
250
|
storeHandles[storeName].__pendingDelete ||
|
|
@@ -609,7 +614,6 @@ IDBObjectStore.prototype.__insertData = function (tx, encoded, value, clonedKeyO
|
|
|
609
614
|
return false;
|
|
610
615
|
});
|
|
611
616
|
return undefined;
|
|
612
|
-
// eslint-disable-next-line sonarjs/no-invariant-returns -- Convenient
|
|
613
617
|
}).catch(function (err) {
|
|
614
618
|
/**
|
|
615
619
|
* @returns {void}
|
|
@@ -1036,7 +1040,7 @@ IDBObjectStore.prototype.index = function (indexName) {
|
|
|
1036
1040
|
throw createDOMException('NotFoundError', 'Index "' + indexName + '" does not exist on ' + me.__currentName);
|
|
1037
1041
|
}
|
|
1038
1042
|
|
|
1039
|
-
if (!me.__indexHandles
|
|
1043
|
+
if (!Object.hasOwn(me.__indexHandles, indexName) ||
|
|
1040
1044
|
me.__indexes[indexName].__pendingDelete ||
|
|
1041
1045
|
me.__indexes[indexName].__deleted
|
|
1042
1046
|
) {
|
|
@@ -1069,7 +1073,7 @@ IDBObjectStore.prototype.createIndex = function (indexName, keyPath /* , optiona
|
|
|
1069
1073
|
IDBTransaction.__assertVersionChange(me.transaction);
|
|
1070
1074
|
IDBObjectStore.__invalidStateIfDeleted(me);
|
|
1071
1075
|
IDBTransaction.__assertActive(me.transaction);
|
|
1072
|
-
if (me.__indexes
|
|
1076
|
+
if (Object.hasOwn(me.__indexes, indexName) && !me.__indexes[indexName].__deleted && !me.__indexes[indexName].__pendingDelete) {
|
|
1073
1077
|
throw createDOMException('ConstraintError', 'Index "' + indexName + '" already exists on ' + me.__currentName);
|
|
1074
1078
|
}
|
|
1075
1079
|
|
|
@@ -1081,7 +1085,7 @@ IDBObjectStore.prototype.createIndex = function (indexName, keyPath /* , optiona
|
|
|
1081
1085
|
throw createDOMException('InvalidAccessError', 'The keyPath argument was an array and the multiEntry option is true.');
|
|
1082
1086
|
}
|
|
1083
1087
|
|
|
1084
|
-
optionalParameters
|
|
1088
|
+
optionalParameters ||= {};
|
|
1085
1089
|
/** @type {import('./IDBIndex.js').IDBIndexProperties} */
|
|
1086
1090
|
const indexProperties = {
|
|
1087
1091
|
columnName: indexName,
|
|
@@ -1121,6 +1125,7 @@ IDBObjectStore.prototype.deleteIndex = function (name) {
|
|
|
1121
1125
|
IDBIndex.__deleteIndex(me, index);
|
|
1122
1126
|
};
|
|
1123
1127
|
|
|
1128
|
+
/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */
|
|
1124
1129
|
util.defineReadonlyOuterInterface(IDBObjectStore.prototype, readonlyProperties);
|
|
1125
1130
|
util.defineOuterInterface(IDBObjectStore.prototype, ['name']);
|
|
1126
1131
|
|
|
@@ -1129,5 +1134,6 @@ IDBObjectStore.prototype[Symbol.toStringTag] = 'IDBObjectStorePrototype';
|
|
|
1129
1134
|
Object.defineProperty(IDBObjectStore, 'prototype', {
|
|
1130
1135
|
writable: false
|
|
1131
1136
|
});
|
|
1137
|
+
/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */
|
|
1132
1138
|
|
|
1133
1139
|
export default IDBObjectStore;
|
package/src/IDBRequest.js
CHANGED
|
@@ -8,8 +8,9 @@ const doneFlagGetters = ['result', 'error'];
|
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* The IDBRequest Object that is returns for all async calls.
|
|
11
|
-
* @see
|
|
11
|
+
* @see https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#request-api
|
|
12
12
|
* @class
|
|
13
|
+
* @throws {TypeError}
|
|
13
14
|
*/
|
|
14
15
|
function IDBRequest () {
|
|
15
16
|
throw new TypeError('Illegal constructor');
|
|
@@ -48,21 +49,26 @@ IDBRequest.__super = function IDBRequest () {
|
|
|
48
49
|
legacyOutputDidListenersThrowFlag: true // Event hook for IndexedB
|
|
49
50
|
});
|
|
50
51
|
doneFlagGetters.forEach((prop) => {
|
|
51
|
-
Object.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
52
|
+
Object.defineProperties(
|
|
53
|
+
this,
|
|
54
|
+
{
|
|
55
|
+
['__' + prop]: {
|
|
56
|
+
enumerable: false,
|
|
57
|
+
configurable: false,
|
|
58
|
+
writable: true
|
|
59
|
+
},
|
|
60
|
+
[prop]: {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
configurable: true,
|
|
63
|
+
get () {
|
|
64
|
+
if (!this.__done) {
|
|
65
|
+
throw createDOMException('InvalidStateError', "Can't get " + prop + '; the request is still pending.');
|
|
66
|
+
}
|
|
67
|
+
return this['__' + prop];
|
|
68
|
+
}
|
|
62
69
|
}
|
|
63
|
-
return this['__' + prop];
|
|
64
70
|
}
|
|
65
|
-
|
|
71
|
+
);
|
|
66
72
|
});
|
|
67
73
|
util.defineReadonlyProperties(this, readonlyProperties, {
|
|
68
74
|
readyState: {
|
|
@@ -106,6 +112,7 @@ IDBRequest.prototype.__getParent = function () {
|
|
|
106
112
|
return this.__transaction;
|
|
107
113
|
};
|
|
108
114
|
|
|
115
|
+
/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */
|
|
109
116
|
// Illegal invocations
|
|
110
117
|
util.defineReadonlyOuterInterface(IDBRequest.prototype, readonlyProperties);
|
|
111
118
|
util.defineReadonlyOuterInterface(IDBRequest.prototype, doneFlagGetters);
|
|
@@ -123,16 +130,18 @@ IDBRequest.__super.prototype = IDBRequest.prototype;
|
|
|
123
130
|
Object.defineProperty(IDBRequest, 'prototype', {
|
|
124
131
|
writable: false
|
|
125
132
|
});
|
|
133
|
+
/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */
|
|
126
134
|
|
|
127
135
|
const openListeners = ['onblocked', 'onupgradeneeded'];
|
|
128
136
|
|
|
129
137
|
/**
|
|
130
|
-
* @typedef {IDBRequestFull & IDBOpenDBRequest
|
|
138
|
+
* @typedef {IDBRequestFull & IDBOpenDBRequest} IDBOpenDBRequestFull
|
|
131
139
|
*/
|
|
132
140
|
|
|
133
141
|
/**
|
|
134
142
|
* The IDBOpenDBRequest called when a database is opened.
|
|
135
143
|
* @class
|
|
144
|
+
* @throws {TypeError}
|
|
136
145
|
*/
|
|
137
146
|
function IDBOpenDBRequest () {
|
|
138
147
|
throw new TypeError('Illegal constructor');
|
|
@@ -141,12 +150,14 @@ function IDBOpenDBRequest () {
|
|
|
141
150
|
// @ts-expect-error It's ok
|
|
142
151
|
IDBOpenDBRequest.prototype = Object.create(IDBRequest.prototype);
|
|
143
152
|
|
|
153
|
+
/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */
|
|
144
154
|
Object.defineProperty(IDBOpenDBRequest.prototype, 'constructor', {
|
|
145
155
|
enumerable: false,
|
|
146
156
|
writable: true,
|
|
147
157
|
configurable: true,
|
|
148
158
|
value: IDBOpenDBRequest
|
|
149
159
|
});
|
|
160
|
+
/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */
|
|
150
161
|
|
|
151
162
|
const IDBOpenDBRequestAlias = IDBOpenDBRequest;
|
|
152
163
|
/**
|
|
@@ -175,6 +186,7 @@ IDBOpenDBRequest.__createInstance = function () {
|
|
|
175
186
|
return new IDBOpenDBRequest();
|
|
176
187
|
};
|
|
177
188
|
|
|
189
|
+
/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */
|
|
178
190
|
util.defineOuterInterface(IDBOpenDBRequest.prototype, openListeners);
|
|
179
191
|
|
|
180
192
|
IDBOpenDBRequest.prototype[Symbol.toStringTag] = 'IDBOpenDBRequestPrototype';
|
|
@@ -182,5 +194,6 @@ IDBOpenDBRequest.prototype[Symbol.toStringTag] = 'IDBOpenDBRequestPrototype';
|
|
|
182
194
|
Object.defineProperty(IDBOpenDBRequest, 'prototype', {
|
|
183
195
|
writable: false
|
|
184
196
|
});
|
|
197
|
+
/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */
|
|
185
198
|
|
|
186
199
|
export {IDBRequest, IDBOpenDBRequest};
|
package/src/IDBTransaction.js
CHANGED
|
@@ -85,8 +85,9 @@ const readonlyProperties = ['objectStoreNames', 'mode', 'db', 'error'];
|
|
|
85
85
|
|
|
86
86
|
/**
|
|
87
87
|
* The IndexedDB Transaction.
|
|
88
|
-
* @see
|
|
88
|
+
* @see https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBTransaction
|
|
89
89
|
* @class
|
|
90
|
+
* @throws {TypeError}
|
|
90
91
|
*/
|
|
91
92
|
function IDBTransaction () {
|
|
92
93
|
throw new TypeError('Illegal constructor');
|
|
@@ -108,6 +109,7 @@ IDBTransaction.__createInstance = function (db, storeNames, mode) {
|
|
|
108
109
|
// @ts-expect-error It's ok
|
|
109
110
|
me[Symbol.toStringTag] = 'IDBTransaction';
|
|
110
111
|
util.defineReadonlyProperties(me, readonlyProperties);
|
|
112
|
+
// eslint-disable-next-line unicorn/no-top-level-assignment-in-function -- Debugging only
|
|
111
113
|
me.__id = ++uniqueID; // for debugging simultaneous transactions
|
|
112
114
|
me.__active = true;
|
|
113
115
|
me.__running = false;
|
|
@@ -509,7 +511,7 @@ IDBTransaction.prototype.objectStore = function (objectStoreName) {
|
|
|
509
511
|
throw createDOMException('NotFoundError', objectStoreName + ' does not exist in ' + me.db.name);
|
|
510
512
|
}
|
|
511
513
|
|
|
512
|
-
if (!me.__storeHandles
|
|
514
|
+
if (!Object.hasOwn(me.__storeHandles, objectStoreName) ||
|
|
513
515
|
// These latter conditions are to allow store
|
|
514
516
|
// recreation to create new clone object
|
|
515
517
|
me.__storeHandles[objectStoreName].__pendingDelete ||
|
|
@@ -615,7 +617,7 @@ IDBTransaction.prototype.__abortTransaction = function (err) {
|
|
|
615
617
|
}
|
|
616
618
|
q.req.dispatchEvent(reqEvt); // No need to catch errors
|
|
617
619
|
resolve();
|
|
618
|
-
});
|
|
620
|
+
}, 0);
|
|
619
621
|
}
|
|
620
622
|
);
|
|
621
623
|
});
|
|
@@ -626,7 +628,7 @@ IDBTransaction.prototype.__abortTransaction = function (err) {
|
|
|
626
628
|
me.dispatchEvent(evt);
|
|
627
629
|
me.__storeHandles = {};
|
|
628
630
|
me.dispatchEvent(createEvent('__abort'));
|
|
629
|
-
});
|
|
631
|
+
}, 0);
|
|
630
632
|
return undefined;
|
|
631
633
|
}).catch((err) => {
|
|
632
634
|
console.log('Abort error');
|
|
@@ -752,6 +754,7 @@ IDBTransaction.prototype.__getParent = function () {
|
|
|
752
754
|
return this.db;
|
|
753
755
|
};
|
|
754
756
|
|
|
757
|
+
/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */
|
|
755
758
|
util.defineOuterInterface(IDBTransaction.prototype, listeners);
|
|
756
759
|
util.defineReadonlyOuterInterface(IDBTransaction.prototype, readonlyProperties);
|
|
757
760
|
|
|
@@ -765,5 +768,6 @@ Object.defineProperty(IDBTransaction.prototype, 'constructor', {
|
|
|
765
768
|
Object.defineProperty(IDBTransaction, 'prototype', {
|
|
766
769
|
writable: false
|
|
767
770
|
});
|
|
771
|
+
/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */
|
|
768
772
|
|
|
769
773
|
export default IDBTransaction;
|
|
@@ -29,6 +29,7 @@ IDBVersionChangeEvent.prototype[Symbol.toStringTag] = 'IDBVersionChangeEventProt
|
|
|
29
29
|
* @typedef {number} Integer
|
|
30
30
|
*/
|
|
31
31
|
|
|
32
|
+
/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */
|
|
32
33
|
readonlyProperties.forEach((prop) => {
|
|
33
34
|
// Ensure for proper interface testing that "get <name>" is the function name
|
|
34
35
|
const o = {
|
|
@@ -73,5 +74,6 @@ Object.defineProperty(IDBVersionChangeEvent.prototype, 'constructor', {
|
|
|
73
74
|
Object.defineProperty(IDBVersionChangeEvent, 'prototype', {
|
|
74
75
|
writable: false
|
|
75
76
|
});
|
|
77
|
+
/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */
|
|
76
78
|
|
|
77
79
|
export default IDBVersionChangeEvent;
|
package/src/Key.js
CHANGED
|
@@ -64,12 +64,15 @@ const keyTypeToEncodedChar = {
|
|
|
64
64
|
binary: 500,
|
|
65
65
|
array: 600
|
|
66
66
|
};
|
|
67
|
+
|
|
68
|
+
/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */
|
|
67
69
|
const keyTypes = /** @type {(KeyType|"invalid")[]} */ (Object.keys(keyTypeToEncodedChar));
|
|
68
70
|
keyTypes.forEach((k) => {
|
|
69
71
|
keyTypeToEncodedChar[k] = String.fromCodePoint(
|
|
70
72
|
/** @type {number} */ (keyTypeToEncodedChar[k])
|
|
71
73
|
);
|
|
72
74
|
});
|
|
75
|
+
/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */
|
|
73
76
|
|
|
74
77
|
const encodedCharToKeyType = keyTypes.reduce((o, k) => {
|
|
75
78
|
o[keyTypeToEncodedChar[k]] = k;
|
|
@@ -160,15 +163,14 @@ const types = {
|
|
|
160
163
|
if (key > -1) {
|
|
161
164
|
sign = signValues.indexOf('smallNegative');
|
|
162
165
|
exponent = padBase32Exponent(significantDigitIndex);
|
|
163
|
-
mantissa = flipBase32(padBase32Mantissa(key32));
|
|
164
166
|
// Non-negative exponent case:
|
|
165
167
|
} else {
|
|
166
168
|
sign = signValues.indexOf('bigNegative');
|
|
167
169
|
exponent = flipBase32(padBase32Exponent(
|
|
168
170
|
(decimalIndex !== -1) ? decimalIndex : key32.length
|
|
169
171
|
));
|
|
170
|
-
mantissa = flipBase32(padBase32Mantissa(key32));
|
|
171
172
|
}
|
|
173
|
+
mantissa = flipBase32(padBase32Mantissa(key32));
|
|
172
174
|
// Non-negative cases:
|
|
173
175
|
// Negative exponent case:
|
|
174
176
|
} else if (key < 1) {
|
|
@@ -208,9 +210,9 @@ const types = {
|
|
|
208
210
|
|
|
209
211
|
switch (signValues[sign]) {
|
|
210
212
|
case 'negativeInfinity':
|
|
211
|
-
return
|
|
213
|
+
return -Infinity;
|
|
212
214
|
case 'positiveInfinity':
|
|
213
|
-
return
|
|
215
|
+
return Infinity;
|
|
214
216
|
case 'bigPositive':
|
|
215
217
|
return pow32(mantissa, exponent);
|
|
216
218
|
case 'smallPositive':
|
|
@@ -336,7 +338,7 @@ const types = {
|
|
|
336
338
|
decode (key) {
|
|
337
339
|
// Set the entries in buffer's [[ArrayBufferData]] to those in `value`
|
|
338
340
|
const k = key.slice(2);
|
|
339
|
-
const arr = k.length ? k.split(',').map(
|
|
341
|
+
const arr = k.length ? k.split(',').map(Number) : [];
|
|
340
342
|
const buffer = new ArrayBuffer(arr.length);
|
|
341
343
|
const uint8 = new Uint8Array(buffer);
|
|
342
344
|
uint8.set(arr);
|
|
@@ -417,7 +419,7 @@ function pow32 (mantissa, exponent) {
|
|
|
417
419
|
* @returns {Float}
|
|
418
420
|
*/
|
|
419
421
|
function roundToPrecision (num, precision = 16) {
|
|
420
|
-
return Number
|
|
422
|
+
return Number(num.toPrecision(precision));
|
|
421
423
|
}
|
|
422
424
|
|
|
423
425
|
/**
|
|
@@ -481,7 +483,7 @@ function convertValueToMultiEntryKey (input) {
|
|
|
481
483
|
*/
|
|
482
484
|
function getCopyBytesHeldByBufferSource (O) {
|
|
483
485
|
let offset = 0;
|
|
484
|
-
let length
|
|
486
|
+
let length;
|
|
485
487
|
if (ArrayBuffer.isView(O)) { // Has [[ViewedArrayBuffer]] internal slot
|
|
486
488
|
const arrayBuffer = O.buffer;
|
|
487
489
|
if (arrayBuffer === undefined) {
|
|
@@ -518,7 +520,7 @@ function getCopyBytesHeldByBufferSource (O) {
|
|
|
518
520
|
* @returns {KeyValueObject}
|
|
519
521
|
*/
|
|
520
522
|
function convertValueToKeyValueDecoded (input, seen, multiEntry, fullKeys) {
|
|
521
|
-
seen
|
|
523
|
+
seen ||= [];
|
|
522
524
|
if (seen.includes(input)) {
|
|
523
525
|
return {
|
|
524
526
|
type: 'array',
|
|
@@ -728,6 +730,8 @@ function evaluateKeyPathOnValueToDecodedValue (value, keyPath, multiEntry, fullK
|
|
|
728
730
|
case 'size': case 'type':
|
|
729
731
|
value = /** @type {Blob} */ (value)[idntfr];
|
|
730
732
|
break;
|
|
733
|
+
default:
|
|
734
|
+
break;
|
|
731
735
|
}
|
|
732
736
|
} else if (util.isFile(value)) {
|
|
733
737
|
switch (idntfr) {
|
|
@@ -737,6 +741,8 @@ function evaluateKeyPathOnValueToDecodedValue (value, keyPath, multiEntry, fullK
|
|
|
737
741
|
case 'lastModifiedDate':
|
|
738
742
|
value = new Date(/** @type {File} */ (value).lastModified);
|
|
739
743
|
break;
|
|
744
|
+
default:
|
|
745
|
+
break;
|
|
740
746
|
}
|
|
741
747
|
} else if (!util.isObj(value) || !Object.hasOwn(value, idntfr)) {
|
|
742
748
|
return true;
|
|
@@ -864,7 +870,6 @@ function findMultiEntryMatches (keyEntry, range) {
|
|
|
864
870
|
continue;
|
|
865
871
|
}
|
|
866
872
|
if (key.length === 1) {
|
|
867
|
-
// eslint-disable-next-line sonarjs/updated-loop-counter -- Convenient
|
|
868
873
|
key = key[0];
|
|
869
874
|
} else {
|
|
870
875
|
const nested = findMultiEntryMatches(key, range);
|
|
@@ -1037,9 +1042,14 @@ function assignCurrentNumber (tx, store, num, successCb, failCb) {
|
|
|
1037
1042
|
* @returns {void}
|
|
1038
1043
|
*/
|
|
1039
1044
|
function setCurrentNumber (tx, store, num, successCb, failCb) {
|
|
1040
|
-
num = num === MAX_ALLOWED_CURRENT_NUMBER
|
|
1041
|
-
|
|
1042
|
-
|
|
1045
|
+
num = 1 + (num === MAX_ALLOWED_CURRENT_NUMBER
|
|
1046
|
+
// Since incrementing by one will have no effect in JavaScript on this
|
|
1047
|
+
// unsafe max, we represent the max as a number incremented by two.
|
|
1048
|
+
// The getting of the current number is never returned to the user and
|
|
1049
|
+
// is only used in safe comparisons, so it is safe for us to represent
|
|
1050
|
+
// it in this manner
|
|
1051
|
+
? num + 1
|
|
1052
|
+
: num);
|
|
1043
1053
|
return assignCurrentNumber(tx, store, num, successCb, failCb);
|
|
1044
1054
|
}
|
|
1045
1055
|
|
package/src/Sca.js
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
|
|
5
5
|
import {createDOMException, ShimDOMException} from './DOMException.js';
|
|
6
6
|
|
|
7
|
-
// See:
|
|
7
|
+
// See: https://stackoverflow.com/questions/42170826/categories-for-rejection-by-the-structured-cloning-algorithm
|
|
8
8
|
|
|
9
9
|
let typeson = new Typeson().register(structuredCloningThrowing);
|
|
10
10
|
|
|
@@ -14,6 +14,7 @@ let typeson = new Typeson().register(structuredCloningThrowing);
|
|
|
14
14
|
* @returns {void}
|
|
15
15
|
*/
|
|
16
16
|
function register (func) {
|
|
17
|
+
// eslint-disable-next-line unicorn/no-top-level-assignment-in-function -- Should be one-time cache
|
|
17
18
|
typeson = new Typeson().register(func(structuredCloningThrowing));
|
|
18
19
|
}
|
|
19
20
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// ID_Start (includes Other_ID_Start)
|
|
2
2
|
const UnicodeIDStart =
|
|
3
|
-
|
|
3
|
+
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])`;
|
|
4
4
|
|
|
5
5
|
// ID_Continue (includes Other_ID_Continue)
|
|
6
6
|
const UnicodeIDContinue =
|
|
7
|
-
|
|
7
|
+
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])`;
|
|
8
8
|
|
|
9
9
|
export {UnicodeIDStart, UnicodeIDContinue};
|