aboutsummaryrefslogtreecommitdiff
path: root/ext/js/data
diff options
context:
space:
mode:
Diffstat (limited to 'ext/js/data')
-rw-r--r--ext/js/data/database.js21
-rw-r--r--ext/js/data/options-util.js10
2 files changed, 26 insertions, 5 deletions
diff --git a/ext/js/data/database.js b/ext/js/data/database.js
index e8575be2..7f37347b 100644
--- a/ext/js/data/database.js
+++ b/ext/js/data/database.js
@@ -194,7 +194,8 @@ export class Database {
request.onsuccess = (e) => {
const cursor = /** @type {IDBRequest<?IDBCursorWithValue>} */ (e.target).result;
if (cursor) {
- const {value} = cursor;
+ /** @type {TResult} */
+ const value = cursor.value;
if (noPredicate || predicate(value, predicateArg)) {
resolve(value, data);
} else {
@@ -353,7 +354,9 @@ export class Database {
for (const {version, stores} of upgrades) {
if (oldVersion >= version) { continue; }
- for (const [objectStoreName, {primaryKey, indices}] of Object.entries(stores)) {
+ /** @type {[objectStoreName: string, value: import('database').StoreDefinition][]} */
+ const entries = Object.entries(stores);
+ for (const [objectStoreName, {primaryKey, indices}] of entries) {
const existingObjectStoreNames = transaction.objectStoreNames || db.objectStoreNames;
const objectStore = (
this._listContains(existingObjectStoreNames, objectStoreName) ?
@@ -394,8 +397,14 @@ export class Database {
*/
_getAllFast(objectStoreOrIndex, query, onSuccess, onReject, data) {
const request = objectStoreOrIndex.getAll(query);
- request.onerror = (e) => onReject(/** @type {IDBRequest<import('core').SafeAny[]>} */ (e.target).error, data);
- request.onsuccess = (e) => onSuccess(/** @type {IDBRequest<import('core').SafeAny[]>} */ (e.target).result, data);
+ request.onerror = (e) => {
+ const target = /** @type {IDBRequest<TResult[]>} */ (e.target);
+ onReject(target.error, data);
+ };
+ request.onsuccess = (e) => {
+ const target = /** @type {IDBRequest<TResult[]>} */ (e.target);
+ onSuccess(target.result, data);
+ };
}
/**
@@ -415,7 +424,9 @@ export class Database {
request.onsuccess = (e) => {
const cursor = /** @type {IDBRequest<?IDBCursorWithValue>} */ (e.target).result;
if (cursor) {
- results.push(cursor.value);
+ /** @type {TResult} */
+ const value = cursor.value;
+ results.push(value);
cursor.continue();
} else {
onSuccess(results, data);
diff --git a/ext/js/data/options-util.js b/ext/js/data/options-util.js
index 8ef52972..de30f52a 100644
--- a/ext/js/data/options-util.js
+++ b/ext/js/data/options-util.js
@@ -22,6 +22,11 @@ import {escapeRegExp, isObject} from '../core/utilities.js';
import {TemplatePatcher} from '../templates/template-patcher.js';
import {JsonSchema} from './json-schema.js';
+// Some type safety rules are disabled for this file since it deals with upgrading an older format
+// of the options object to a newer format. SafeAny is used for much of this, since every single
+// legacy format does not contain type definitions.
+/* eslint-disable @typescript-eslint/no-unsafe-argument */
+
export class OptionsUtil {
constructor() {
/** @type {?TemplatePatcher} */
@@ -119,6 +124,9 @@ export class OptionsUtil {
}
});
});
+ if (typeof optionsStr !== 'string') {
+ throw new Error('Invalid value for options');
+ }
options = parseJson(optionsStr);
} catch (e) {
// NOP
@@ -1197,3 +1205,5 @@ export class OptionsUtil {
});
}
}
+
+/* eslint-enable @typescript-eslint/no-unsafe-argument */