UNPKG

@firesystem/indexeddb

Version:

IndexedDB implementation of Virtual File System

1,466 lines (1,452 loc) 136 kB
import { IndexedDBFileSystem } from "./chunk-I74V6NX4.js"; import { __commonJS, __publicField } from "./chunk-JVWSFFO4.js"; // ../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/errors.js var require_errors = __commonJS({ "../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/errors.js"( exports, ) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true, }); exports.VersionError = exports.TransactionInactiveError = exports.ReadOnlyError = exports.NotFoundError = exports.InvalidStateError = exports.InvalidAccessError = exports.DataError = exports.DataCloneError = exports.ConstraintError = exports.AbortError = void 0; var messages = { AbortError: "A request was aborted, for example through a call to IDBTransaction.abort.", ConstraintError: "A mutation operation in the transaction failed because a constraint was not satisfied. For example, an object such as an object store or index already exists and a request attempted to create a new one.", DataCloneError: "The data being stored could not be cloned by the internal structured cloning algorithm.", DataError: "Data provided to an operation does not meet requirements.", InvalidAccessError: "An invalid operation was performed on an object. For example transaction creation attempt was made, but an empty scope was provided.", InvalidStateError: "An operation was called on an object on which it is not allowed or at a time when it is not allowed. Also occurs if a request is made on a source object that has been deleted or removed. Use TransactionInactiveError or ReadOnlyError when possible, as they are more specific variations of InvalidStateError.", NotFoundError: "The operation failed because the requested database object could not be found. For example, an object store did not exist but was being opened.", ReadOnlyError: 'The mutating operation was attempted in a "readonly" transaction.', TransactionInactiveError: "A request was placed against a transaction which is currently not active, or which is finished.", VersionError: "An attempt was made to open a database using a lower version than the existing version.", }; var AbortError = class extends DOMException { constructor(message = messages.AbortError) { super(message, "AbortError"); } }; exports.AbortError = AbortError; var ConstraintError = class extends DOMException { constructor(message = messages.ConstraintError) { super(message, "ConstraintError"); } }; exports.ConstraintError = ConstraintError; var DataCloneError = class extends DOMException { constructor(message = messages.DataCloneError) { super(message, "DataCloneError"); } }; exports.DataCloneError = DataCloneError; var DataError = class extends DOMException { constructor(message = messages.DataError) { super(message, "DataError"); } }; exports.DataError = DataError; var InvalidAccessError = class extends DOMException { constructor(message = messages.InvalidAccessError) { super(message, "InvalidAccessError"); } }; exports.InvalidAccessError = InvalidAccessError; var InvalidStateError = class extends DOMException { constructor(message = messages.InvalidStateError) { super(message, "InvalidStateError"); } }; exports.InvalidStateError = InvalidStateError; var NotFoundError = class extends DOMException { constructor(message = messages.NotFoundError) { super(message, "NotFoundError"); } }; exports.NotFoundError = NotFoundError; var ReadOnlyError = class extends DOMException { constructor(message = messages.ReadOnlyError) { super(message, "ReadOnlyError"); } }; exports.ReadOnlyError = ReadOnlyError; var TransactionInactiveError = class extends DOMException { constructor(message = messages.TransactionInactiveError) { super(message, "TransactionInactiveError"); } }; exports.TransactionInactiveError = TransactionInactiveError; var VersionError = class extends DOMException { constructor(message = messages.VersionError) { super(message, "VersionError"); } }; exports.VersionError = VersionError; }, }); // ../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/valueToKey.js var require_valueToKey = __commonJS({ "../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/valueToKey.js"( exports, module, ) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true, }); exports.default = void 0; var _errors = require_errors(); var valueToKey = (input, seen) => { if (typeof input === "number") { if (isNaN(input)) { throw new _errors.DataError(); } return input; } else if (Object.prototype.toString.call(input) === "[object Date]") { const ms = input.valueOf(); if (isNaN(ms)) { throw new _errors.DataError(); } return new Date(ms); } else if (typeof input === "string") { return input; } else if ( input instanceof ArrayBuffer || (typeof SharedArrayBuffer !== "undefined" && input instanceof SharedArrayBuffer) || (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView && ArrayBuffer.isView(input)) ) { let arrayBuffer; let offset = 0; let length = 0; if ( input instanceof ArrayBuffer || (typeof SharedArrayBuffer !== "undefined" && input instanceof SharedArrayBuffer) ) { arrayBuffer = input; length = input.byteLength; } else { arrayBuffer = input.buffer; offset = input.byteOffset; length = input.byteLength; } if (arrayBuffer.detached) { return new ArrayBuffer(0); } return arrayBuffer.slice(offset, offset + length); } else if (Array.isArray(input)) { if (seen === void 0) { seen = /* @__PURE__ */ new Set(); } else if (seen.has(input)) { throw new _errors.DataError(); } seen.add(input); const keys = []; for (let i = 0; i < input.length; i++) { const hop = Object.hasOwn(input, i); if (!hop) { throw new _errors.DataError(); } const entry = input[i]; const key = valueToKey(entry, seen); keys.push(key); } return keys; } else { throw new _errors.DataError(); } }; var _default = (exports.default = valueToKey); module.exports = exports.default; }, }); // ../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/cmp.js var require_cmp = __commonJS({ "../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/cmp.js"( exports, module, ) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true, }); exports.default = void 0; var _errors = require_errors(); var _valueToKey = _interopRequireDefault(require_valueToKey()); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } var getType = (x) => { if (typeof x === "number") { return "Number"; } if (Object.prototype.toString.call(x) === "[object Date]") { return "Date"; } if (Array.isArray(x)) { return "Array"; } if (typeof x === "string") { return "String"; } if (x instanceof ArrayBuffer) { return "Binary"; } throw new _errors.DataError(); }; var cmp = (first, second) => { if (second === void 0) { throw new TypeError(); } first = (0, _valueToKey.default)(first); second = (0, _valueToKey.default)(second); const t1 = getType(first); const t2 = getType(second); if (t1 !== t2) { if (t1 === "Array") { return 1; } if ( t1 === "Binary" && (t2 === "String" || t2 === "Date" || t2 === "Number") ) { return 1; } if (t1 === "String" && (t2 === "Date" || t2 === "Number")) { return 1; } if (t1 === "Date" && t2 === "Number") { return 1; } return -1; } if (t1 === "Binary") { first = new Uint8Array(first); second = new Uint8Array(second); } if (t1 === "Array" || t1 === "Binary") { const length = Math.min(first.length, second.length); for (let i = 0; i < length; i++) { const result = cmp(first[i], second[i]); if (result !== 0) { return result; } } if (first.length > second.length) { return 1; } if (first.length < second.length) { return -1; } return 0; } if (t1 === "Date") { if (first.getTime() === second.getTime()) { return 0; } } else { if (first === second) { return 0; } } return first > second ? 1 : -1; }; var _default = (exports.default = cmp); module.exports = exports.default; }, }); // ../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/FDBKeyRange.js var require_FDBKeyRange = __commonJS({ "../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/FDBKeyRange.js"( exports, module, ) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true, }); exports.default = void 0; var _cmp = _interopRequireDefault(require_cmp()); var _errors = require_errors(); var _valueToKey = _interopRequireDefault(require_valueToKey()); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } var FDBKeyRange = class _FDBKeyRange { static only(value) { if (arguments.length === 0) { throw new TypeError(); } value = (0, _valueToKey.default)(value); return new _FDBKeyRange(value, value, false, false); } static lowerBound(lower, open = false) { if (arguments.length === 0) { throw new TypeError(); } lower = (0, _valueToKey.default)(lower); return new _FDBKeyRange(lower, void 0, open, true); } static upperBound(upper, open = false) { if (arguments.length === 0) { throw new TypeError(); } upper = (0, _valueToKey.default)(upper); return new _FDBKeyRange(void 0, upper, true, open); } static bound(lower, upper, lowerOpen = false, upperOpen = false) { if (arguments.length < 2) { throw new TypeError(); } const cmpResult = (0, _cmp.default)(lower, upper); if (cmpResult === 1 || (cmpResult === 0 && (lowerOpen || upperOpen))) { throw new _errors.DataError(); } lower = (0, _valueToKey.default)(lower); upper = (0, _valueToKey.default)(upper); return new _FDBKeyRange(lower, upper, lowerOpen, upperOpen); } constructor(lower, upper, lowerOpen, upperOpen) { this.lower = lower; this.upper = upper; this.lowerOpen = lowerOpen; this.upperOpen = upperOpen; } // https://w3c.github.io/IndexedDB/#dom-idbkeyrange-includes includes(key) { if (arguments.length === 0) { throw new TypeError(); } key = (0, _valueToKey.default)(key); if (this.lower !== void 0) { const cmpResult = (0, _cmp.default)(this.lower, key); if (cmpResult === 1 || (cmpResult === 0 && this.lowerOpen)) { return false; } } if (this.upper !== void 0) { const cmpResult = (0, _cmp.default)(this.upper, key); if (cmpResult === -1 || (cmpResult === 0 && this.upperOpen)) { return false; } } return true; } toString() { return "[object IDBKeyRange]"; } }; var _default = (exports.default = FDBKeyRange); module.exports = exports.default; }, }); // ../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/extractKey.js var require_extractKey = __commonJS({ "../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/extractKey.js"( exports, module, ) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true, }); exports.default = void 0; var _valueToKey = _interopRequireDefault(require_valueToKey()); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } var extractKey = (keyPath, value) => { if (Array.isArray(keyPath)) { const result = []; for (let item of keyPath) { if ( item !== void 0 && item !== null && typeof item !== "string" && item.toString ) { item = item.toString(); } const key = extractKey(item, value).key; result.push((0, _valueToKey.default)(key)); } return { type: "found", key: result, }; } if (keyPath === "") { return { type: "found", key: value, }; } let remainingKeyPath = keyPath; let object = value; while (remainingKeyPath !== null) { let identifier; const i = remainingKeyPath.indexOf("."); if (i >= 0) { identifier = remainingKeyPath.slice(0, i); remainingKeyPath = remainingKeyPath.slice(i + 1); } else { identifier = remainingKeyPath; remainingKeyPath = null; } if ( object === void 0 || object === null || !Object.hasOwn(object, identifier) ) { return { type: "notFound", }; } object = object[identifier]; } return { type: "found", key: object, }; }; var _default = (exports.default = extractKey); module.exports = exports.default; }, }); // ../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/FDBCursor.js var require_FDBCursor = __commonJS({ "../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/FDBCursor.js"( exports, module, ) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true, }); exports.default = void 0; var _FDBKeyRange = _interopRequireDefault(require_FDBKeyRange()); var _FDBObjectStore = _interopRequireDefault(require_FDBObjectStore()); var _cmp = _interopRequireDefault(require_cmp()); var _errors = require_errors(); var _extractKey = _interopRequireDefault(require_extractKey()); var _valueToKey = _interopRequireDefault(require_valueToKey()); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } var getEffectiveObjectStore = (cursor) => { if (cursor.source instanceof _FDBObjectStore.default) { return cursor.source; } return cursor.source.objectStore; }; var makeKeyRange = (range, lowers, uppers) => { let lower = range !== void 0 ? range.lower : void 0; let upper = range !== void 0 ? range.upper : void 0; for (const lowerTemp of lowers) { if (lowerTemp === void 0) { continue; } if (lower === void 0 || (0, _cmp.default)(lower, lowerTemp) === 1) { lower = lowerTemp; } } for (const upperTemp of uppers) { if (upperTemp === void 0) { continue; } if (upper === void 0 || (0, _cmp.default)(upper, upperTemp) === -1) { upper = upperTemp; } } if (lower !== void 0 && upper !== void 0) { return _FDBKeyRange.default.bound(lower, upper); } if (lower !== void 0) { return _FDBKeyRange.default.lowerBound(lower); } if (upper !== void 0) { return _FDBKeyRange.default.upperBound(upper); } }; var FDBCursor = class { constructor(source, range, direction = "next", request, keyOnly = false) { __publicField(this, "_gotValue", false); __publicField(this, "_position"); // Key of previously returned record __publicField(this, "_objectStorePosition"); __publicField(this, "_keyOnly", false); __publicField(this, "_key"); __publicField(this, "_primaryKey"); this._range = range; this._source = source; this._direction = direction; this._request = request; this._keyOnly = keyOnly; } // Read only properties get source() { return this._source; } set source(val) {} get request() { return this._request; } set request(val) {} get direction() { return this._direction; } set direction(val) {} get key() { return this._key; } set key(val) {} get primaryKey() { return this._primaryKey; } set primaryKey(val) {} // https://w3c.github.io/IndexedDB/#iterate-a-cursor _iterate(key, primaryKey) { const sourceIsObjectStore = this.source instanceof _FDBObjectStore.default; const records = this.source instanceof _FDBObjectStore.default ? this.source._rawObjectStore.records : this.source._rawIndex.records; let foundRecord; if (this.direction === "next") { const range = makeKeyRange(this._range, [key, this._position], []); for (const record of records.values(range)) { const cmpResultKey = key !== void 0 ? (0, _cmp.default)(record.key, key) : void 0; const cmpResultPosition = this._position !== void 0 ? (0, _cmp.default)(record.key, this._position) : void 0; if (key !== void 0) { if (cmpResultKey === -1) { continue; } } if (primaryKey !== void 0) { if (cmpResultKey === -1) { continue; } const cmpResultPrimaryKey = (0, _cmp.default)( record.value, primaryKey, ); if (cmpResultKey === 0 && cmpResultPrimaryKey === -1) { continue; } } if (this._position !== void 0 && sourceIsObjectStore) { if (cmpResultPosition !== 1) { continue; } } if (this._position !== void 0 && !sourceIsObjectStore) { if (cmpResultPosition === -1) { continue; } if ( cmpResultPosition === 0 && (0, _cmp.default)(record.value, this._objectStorePosition) !== 1 ) { continue; } } if (this._range !== void 0) { if (!this._range.includes(record.key)) { continue; } } foundRecord = record; break; } } else if (this.direction === "nextunique") { const range = makeKeyRange(this._range, [key, this._position], []); for (const record of records.values(range)) { if (key !== void 0) { if ((0, _cmp.default)(record.key, key) === -1) { continue; } } if (this._position !== void 0) { if ((0, _cmp.default)(record.key, this._position) !== 1) { continue; } } if (this._range !== void 0) { if (!this._range.includes(record.key)) { continue; } } foundRecord = record; break; } } else if (this.direction === "prev") { const range = makeKeyRange(this._range, [], [key, this._position]); for (const record of records.values(range, "prev")) { const cmpResultKey = key !== void 0 ? (0, _cmp.default)(record.key, key) : void 0; const cmpResultPosition = this._position !== void 0 ? (0, _cmp.default)(record.key, this._position) : void 0; if (key !== void 0) { if (cmpResultKey === 1) { continue; } } if (primaryKey !== void 0) { if (cmpResultKey === 1) { continue; } const cmpResultPrimaryKey = (0, _cmp.default)( record.value, primaryKey, ); if (cmpResultKey === 0 && cmpResultPrimaryKey === 1) { continue; } } if (this._position !== void 0 && sourceIsObjectStore) { if (cmpResultPosition !== -1) { continue; } } if (this._position !== void 0 && !sourceIsObjectStore) { if (cmpResultPosition === 1) { continue; } if ( cmpResultPosition === 0 && (0, _cmp.default)(record.value, this._objectStorePosition) !== -1 ) { continue; } } if (this._range !== void 0) { if (!this._range.includes(record.key)) { continue; } } foundRecord = record; break; } } else if (this.direction === "prevunique") { let tempRecord; const range = makeKeyRange(this._range, [], [key, this._position]); for (const record of records.values(range, "prev")) { if (key !== void 0) { if ((0, _cmp.default)(record.key, key) === 1) { continue; } } if (this._position !== void 0) { if ((0, _cmp.default)(record.key, this._position) !== -1) { continue; } } if (this._range !== void 0) { if (!this._range.includes(record.key)) { continue; } } tempRecord = record; break; } if (tempRecord) { foundRecord = records.get(tempRecord.key); } } let result; if (!foundRecord) { this._key = void 0; if (!sourceIsObjectStore) { this._objectStorePosition = void 0; } if ( !this._keyOnly && this.toString() === "[object IDBCursorWithValue]" ) { this.value = void 0; } result = null; } else { this._position = foundRecord.key; if (!sourceIsObjectStore) { this._objectStorePosition = foundRecord.value; } this._key = foundRecord.key; if (sourceIsObjectStore) { this._primaryKey = structuredClone(foundRecord.key); if ( !this._keyOnly && this.toString() === "[object IDBCursorWithValue]" ) { this.value = structuredClone(foundRecord.value); } } else { this._primaryKey = structuredClone(foundRecord.value); if ( !this._keyOnly && this.toString() === "[object IDBCursorWithValue]" ) { if (this.source instanceof _FDBObjectStore.default) { throw new Error("This should never happen"); } const value = this.source.objectStore._rawObjectStore.getValue( foundRecord.value, ); this.value = structuredClone(value); } } this._gotValue = true; result = this; } return result; } // http://www.w3.org/TR/2015/REC-IndexedDB-20150108/#widl-IDBCursor-update-IDBRequest-any-value update(value) { if (value === void 0) { throw new TypeError(); } const effectiveObjectStore = getEffectiveObjectStore(this); const effectiveKey = Object.hasOwn(this.source, "_rawIndex") ? this.primaryKey : this._position; const transaction = effectiveObjectStore.transaction; if (transaction._state !== "active") { throw new _errors.TransactionInactiveError(); } if (transaction.mode === "readonly") { throw new _errors.ReadOnlyError(); } if (effectiveObjectStore._rawObjectStore.deleted) { throw new _errors.InvalidStateError(); } if ( !(this.source instanceof _FDBObjectStore.default) && this.source._rawIndex.deleted ) { throw new _errors.InvalidStateError(); } if (!this._gotValue || !Object.hasOwn(this, "value")) { throw new _errors.InvalidStateError(); } const clone = structuredClone(value); if (effectiveObjectStore.keyPath !== null) { let tempKey; try { tempKey = (0, _extractKey.default)( effectiveObjectStore.keyPath, clone, ).key; } catch (err) {} if ((0, _cmp.default)(tempKey, effectiveKey) !== 0) { throw new _errors.DataError(); } } const record = { key: effectiveKey, value: clone, }; return transaction._execRequestAsync({ operation: effectiveObjectStore._rawObjectStore.storeRecord.bind( effectiveObjectStore._rawObjectStore, record, false, transaction._rollbackLog, ), source: this, }); } // http://www.w3.org/TR/2015/REC-IndexedDB-20150108/#widl-IDBCursor-advance-void-unsigned-long-count advance(count) { if (!Number.isInteger(count) || count <= 0) { throw new TypeError(); } const effectiveObjectStore = getEffectiveObjectStore(this); const transaction = effectiveObjectStore.transaction; if (transaction._state !== "active") { throw new _errors.TransactionInactiveError(); } if (effectiveObjectStore._rawObjectStore.deleted) { throw new _errors.InvalidStateError(); } if ( !(this.source instanceof _FDBObjectStore.default) && this.source._rawIndex.deleted ) { throw new _errors.InvalidStateError(); } if (!this._gotValue) { throw new _errors.InvalidStateError(); } if (this._request) { this._request.readyState = "pending"; } transaction._execRequestAsync({ operation: () => { let result; for (let i = 0; i < count; i++) { result = this._iterate(); if (!result) { break; } } return result; }, request: this._request, source: this.source, }); this._gotValue = false; } // http://www.w3.org/TR/2015/REC-IndexedDB-20150108/#widl-IDBCursor-continue-void-any-key continue(key) { const effectiveObjectStore = getEffectiveObjectStore(this); const transaction = effectiveObjectStore.transaction; if (transaction._state !== "active") { throw new _errors.TransactionInactiveError(); } if (effectiveObjectStore._rawObjectStore.deleted) { throw new _errors.InvalidStateError(); } if ( !(this.source instanceof _FDBObjectStore.default) && this.source._rawIndex.deleted ) { throw new _errors.InvalidStateError(); } if (!this._gotValue) { throw new _errors.InvalidStateError(); } if (key !== void 0) { key = (0, _valueToKey.default)(key); const cmpResult = (0, _cmp.default)(key, this._position); if ( (cmpResult <= 0 && (this.direction === "next" || this.direction === "nextunique")) || (cmpResult >= 0 && (this.direction === "prev" || this.direction === "prevunique")) ) { throw new _errors.DataError(); } } if (this._request) { this._request.readyState = "pending"; } transaction._execRequestAsync({ operation: this._iterate.bind(this, key), request: this._request, source: this.source, }); this._gotValue = false; } // hthttps://w3c.github.io/IndexedDB/#dom-idbcursor-continueprimarykey continuePrimaryKey(key, primaryKey) { const effectiveObjectStore = getEffectiveObjectStore(this); const transaction = effectiveObjectStore.transaction; if (transaction._state !== "active") { throw new _errors.TransactionInactiveError(); } if (effectiveObjectStore._rawObjectStore.deleted) { throw new _errors.InvalidStateError(); } if ( !(this.source instanceof _FDBObjectStore.default) && this.source._rawIndex.deleted ) { throw new _errors.InvalidStateError(); } if ( this.source instanceof _FDBObjectStore.default || (this.direction !== "next" && this.direction !== "prev") ) { throw new _errors.InvalidAccessError(); } if (!this._gotValue) { throw new _errors.InvalidStateError(); } if (key === void 0 || primaryKey === void 0) { throw new _errors.DataError(); } key = (0, _valueToKey.default)(key); const cmpResult = (0, _cmp.default)(key, this._position); if ( (cmpResult === -1 && this.direction === "next") || (cmpResult === 1 && this.direction === "prev") ) { throw new _errors.DataError(); } const cmpResult2 = (0, _cmp.default)( primaryKey, this._objectStorePosition, ); if (cmpResult === 0) { if ( (cmpResult2 <= 0 && this.direction === "next") || (cmpResult2 >= 0 && this.direction === "prev") ) { throw new _errors.DataError(); } } if (this._request) { this._request.readyState = "pending"; } transaction._execRequestAsync({ operation: this._iterate.bind(this, key, primaryKey), request: this._request, source: this.source, }); this._gotValue = false; } delete() { const effectiveObjectStore = getEffectiveObjectStore(this); const effectiveKey = Object.hasOwn(this.source, "_rawIndex") ? this.primaryKey : this._position; const transaction = effectiveObjectStore.transaction; if (transaction._state !== "active") { throw new _errors.TransactionInactiveError(); } if (transaction.mode === "readonly") { throw new _errors.ReadOnlyError(); } if (effectiveObjectStore._rawObjectStore.deleted) { throw new _errors.InvalidStateError(); } if ( !(this.source instanceof _FDBObjectStore.default) && this.source._rawIndex.deleted ) { throw new _errors.InvalidStateError(); } if (!this._gotValue || !Object.hasOwn(this, "value")) { throw new _errors.InvalidStateError(); } return transaction._execRequestAsync({ operation: effectiveObjectStore._rawObjectStore.deleteRecord.bind( effectiveObjectStore._rawObjectStore, effectiveKey, transaction._rollbackLog, ), source: this, }); } toString() { return "[object IDBCursor]"; } }; var _default = (exports.default = FDBCursor); module.exports = exports.default; }, }); // ../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/FDBCursorWithValue.js var require_FDBCursorWithValue = __commonJS({ "../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/FDBCursorWithValue.js"( exports, module, ) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true, }); exports.default = void 0; var _FDBCursor = _interopRequireDefault(require_FDBCursor()); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } var FDBCursorWithValue = class extends _FDBCursor.default { constructor(source, range, direction, request) { super(source, range, direction, request); __publicField(this, "value"); } toString() { return "[object IDBCursorWithValue]"; } }; var _default = (exports.default = FDBCursorWithValue); module.exports = exports.default; }, }); // ../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/FakeEventTarget.js var require_FakeEventTarget = __commonJS({ "../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/FakeEventTarget.js"( exports, module, ) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true, }); exports.default = void 0; var _errors = require_errors(); var stopped = (event, listener) => { return ( event.immediatePropagationStopped || (event.eventPhase === event.CAPTURING_PHASE && listener.capture === false) || (event.eventPhase === event.BUBBLING_PHASE && listener.capture === true) ); }; var invokeEventListeners = (event, obj) => { event.currentTarget = obj; for (const listener of obj.listeners.slice()) { if (event.type !== listener.type || stopped(event, listener)) { continue; } listener.callback.call(event.currentTarget, event); } const typeToProp = { abort: "onabort", blocked: "onblocked", complete: "oncomplete", error: "onerror", success: "onsuccess", upgradeneeded: "onupgradeneeded", versionchange: "onversionchange", }; const prop = typeToProp[event.type]; if (prop === void 0) { throw new Error(`Unknown event type: "${event.type}"`); } const callback = event.currentTarget[prop]; if (callback) { const listener = { callback, capture: false, type: event.type, }; if (!stopped(event, listener)) { listener.callback.call(event.currentTarget, event); } } }; var FakeEventTarget = class { constructor() { __publicField(this, "listeners", []); } // These will be overridden in individual subclasses and made not readonly addEventListener(type, callback, capture = false) { this.listeners.push({ callback, capture, type, }); } removeEventListener(type, callback, capture = false) { const i = this.listeners.findIndex((listener) => { return ( listener.type === type && listener.callback === callback && listener.capture === capture ); }); this.listeners.splice(i, 1); } // http://www.w3.org/TR/dom/#dispatching-events dispatchEvent(event) { if (event.dispatched || !event.initialized) { throw new _errors.InvalidStateError( "The object is in an invalid state.", ); } event.isTrusted = false; event.dispatched = true; event.target = this; event.eventPhase = event.CAPTURING_PHASE; for (const obj of event.eventPath) { if (!event.propagationStopped) { invokeEventListeners(event, obj); } } event.eventPhase = event.AT_TARGET; if (!event.propagationStopped) { invokeEventListeners(event, event.target); } if (event.bubbles) { event.eventPath.reverse(); event.eventPhase = event.BUBBLING_PHASE; for (const obj of event.eventPath) { if (!event.propagationStopped) { invokeEventListeners(event, obj); } } } event.dispatched = false; event.eventPhase = event.NONE; event.currentTarget = null; if (event.canceled) { return false; } return true; } }; var _default = (exports.default = FakeEventTarget); module.exports = exports.default; }, }); // ../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/FDBRequest.js var require_FDBRequest = __commonJS({ "../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/FDBRequest.js"( exports, module, ) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true, }); exports.default = void 0; var _errors = require_errors(); var _FakeEventTarget = _interopRequireDefault(require_FakeEventTarget()); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } var FDBRequest = class extends _FakeEventTarget.default { constructor() { super(...arguments); __publicField(this, "_result", null); __publicField(this, "_error", null); __publicField(this, "source", null); __publicField(this, "transaction", null); __publicField(this, "readyState", "pending"); __publicField(this, "onsuccess", null); __publicField(this, "onerror", null); } get error() { if (this.readyState === "pending") { throw new _errors.InvalidStateError(); } return this._error; } set error(value) { this._error = value; } get result() { if (this.readyState === "pending") { throw new _errors.InvalidStateError(); } return this._result; } set result(value) { this._result = value; } toString() { return "[object IDBRequest]"; } }; var _default = (exports.default = FDBRequest); module.exports = exports.default; }, }); // ../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/enforceRange.js var require_enforceRange = __commonJS({ "../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/enforceRange.js"( exports, module, ) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true, }); exports.default = void 0; var enforceRange = (num, type) => { const min = 0; const max = type === "unsigned long" ? 4294967295 : 9007199254740991; if (isNaN(num) || num < min || num > max) { throw new TypeError(); } if (num >= 0) { return Math.floor(num); } }; var _default = (exports.default = enforceRange); module.exports = exports.default; }, }); // ../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/FakeDOMStringList.js var require_FakeDOMStringList = __commonJS({ "../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/FakeDOMStringList.js"( exports, module, ) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true, }); exports.default = void 0; var FakeDOMStringList = class extends Array { contains(value) { for (const value2 of this) { if (value === value2) { return true; } } return false; } item(i) { if (i < 0 || i >= this.length) { return null; } return this[i]; } // Used internally, should not be used by others. I could maybe get rid of these and replace rather than mutate, but too lazy to check the spec. _push(...values) { return Array.prototype.push.call(this, ...values); } _sort(...values) { return Array.prototype.sort.call(this, ...values); } }; var _default = (exports.default = FakeDOMStringList); module.exports = exports.default; }, }); // ../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/valueToKeyRange.js var require_valueToKeyRange = __commonJS({ "../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/lib/valueToKeyRange.js"( exports, module, ) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true, }); exports.default = void 0; var _FDBKeyRange = _interopRequireDefault(require_FDBKeyRange()); var _errors = require_errors(); var _valueToKey = _interopRequireDefault(require_valueToKey()); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } var valueToKeyRange = (value, nullDisallowedFlag = false) => { if (value instanceof _FDBKeyRange.default) { return value; } if (value === null || value === void 0) { if (nullDisallowedFlag) { throw new _errors.DataError(); } return new _FDBKeyRange.default(void 0, void 0, false, false); } const key = (0, _valueToKey.default)(value); return _FDBKeyRange.default.only(key); }; var _default = (exports.default = valueToKeyRange); module.exports = exports.default; }, }); // ../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/FDBIndex.js var require_FDBIndex = __commonJS({ "../../node_modules/.pnpm/fake-indexeddb@6.0.1/node_modules/fake-indexeddb/build/cjs/FDBIndex.js"( exports, module, ) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true, }); exports.default = void 0; var _FDBCursor = _interopRequireDefault(require_FDBCursor()); var _FDBCursorWithValue = _interopRequireDefault( require_FDBCursorWithValue(), ); var _FDBKeyRange = _interopRequireDefault(require_FDBKeyRange()); var _FDBRequest = _interopRequireDefault(require_FDBRequest()); var _enforceRange = _interopRequireDefault(require_enforceRange()); var _errors = require_errors(); var _FakeDOMStringList = _interopRequireDefault( require_FakeDOMStringList(), ); var _valueToKey = _interopRequireDefault(require_valueToKey()); var _valueToKeyRange = _interopRequireDefault(require_valueToKeyRange()); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } var confirmActiveTransaction = (index) => { if ( index._rawIndex.deleted || index.objectStore._rawObjectStore.deleted ) { throw new _errors.InvalidStateError(); } if (index.objectStore.transaction._state !== "active") { throw new _errors.TransactionInactiveError(); } }; var FDBIndex = class { constructor(objectStore, rawIndex) { this._rawIndex = rawIndex; this._name = rawIndex.name; this.objectStore = objectStore; this.keyPath = rawIndex.keyPath; this.multiEntry = rawIndex.multiEntry; this.unique = rawIndex.unique; } get name() { return this._name; } // https://w3c.github.io/IndexedDB/#dom-idbindex-name set name(name) { const transaction = this.objectStore.transaction; if (!transaction.db._runningVersionchangeTransaction) { throw new _errors.InvalidStateError(); } if (transaction._state !== "active") { throw new _errors.TransactionInactiveError(); } if ( this._rawIndex.deleted || this.objectStore._rawObjectStore.deleted ) { throw new _errors.InvalidStateError(); } name = String(name); if (name === this._name) { return; } if (this.objectStore.indexNames.contains(name)) { throw new _errors.ConstraintError(); } const oldName = this._name; const oldIndexNames = [...this.objectStore.indexNames]; this._name = name; this._rawIndex.name = name; this.objectStore._indexesCache.delete(oldName); this.objectStore._indexesCache.set(name, this); this.objectStore._rawObjectStore.rawIndexes.delete(oldName); this.objectStore._rawObjectStore.rawIndexes.set(name, this._rawIndex); this.objectStore.indexNames = new _FakeDOMStringList.default( ...Array.from(this.objectStore._rawObjectStore.rawIndexes.keys()) .filter((indexName) => { const index = this.objectStore._rawObjectStore.rawIndexes.get(indexName); return index && !index.deleted; }) .sort(), ); transaction._rollbackLog.push(() => { this._name = oldName; this._rawIndex.name = oldName; this.objectStore._indexesCache.delete(name); this.objectStore._indexesCache.set(oldName, this); this.objectStore._rawObjectStore.rawIndexes.delete(name); this.objectStore._rawObjectStore.rawIndexes.set( oldName, this._rawIndex, ); this.objectStore.indexNames = new _FakeDOMStringList.default( ...oldIndexNames, ); }); } // http://www.w3.org/TR/2015/REC-IndexedDB-20150108/#widl-IDBIndex-openCursor-IDBRequest-any-range-IDBCursorDirection-direction openCursor(range, direction) { confirmActiveTransaction(this); if (range === null) { range = void 0; } if (range !== void 0 && !(range instanceof _FDBKeyRange.default)) { range = _FDBKeyRange.default.only((0, _valueToKey.default)(range)); } const request = new _FDBRequest.default(); request.source = this; request.transaction = this.objectStore.transaction; const cursor = new _FDBCursorWithValue.default( this, range, direction, request, ); return this.objectStore.transaction._execRequestAsync({ operation: cursor._iterate.bind(cursor), request, source: this, }); } // http://www.w3.org/TR/2015/REC-IndexedDB-20150108/#widl-IDBIndex-openKeyCursor-IDBRequest-any-range-IDBCursorDirection-direction openKeyCursor(range, direction) { confirmActiveTransaction(this); if (range === null) { range = void 0; } if (range !== void 0 && !(range instanceof _FDBKeyRange.default)) { range = _FDBKeyRange.default.only((0, _valueToKey.default)(range)); } const request = new _FDBRequest.default(); request.source = this; request.transaction = this.objectStore.transaction; const cursor = new _FDBCursor.default( this, range, direction, request, true, ); return this.objectStore.transaction._execRequestAsync({ operation: cursor._iterate.bind(cursor), request, source: this, }); } get(key) { confirmActiveTransaction(this); if (!(key instanceof _FDBKeyRange.default)) { key = (0, _valueToKey.default)(key); } return this.objectStore.transaction._execRequestAsync({ operation: this._rawIndex.getValue.bind(this._rawIndex, key), source: this, }); } // http://w3c.github.io/IndexedDB/#dom-idbindex-getall getAll(query, count) { if (arguments.length > 1 && count !== void 0) { count = (0, _enforceRange.default)(count, "unsigned long"); } confirmActiveTransaction(this); const range = (0, _valueToKeyRange.default)(query); return this.objectStore.transaction._execRequestAsync({ operation: this._rawIndex.getAllValues.bind( this._rawIndex, range, count, ), source: this, }); } // http://www.w3.org/TR/2015/REC-IndexedDB-20150108/#widl-IDBIndex-getKey-IDBRequest-any-key getKey(key) { confirmActiveTransaction(this); if (!(key instanceof _FDBKeyRange.default)) { key = (0, _valueToKey.default)(key); } return this.objectStore.transaction._execRequestAsync({ operation: this._rawIndex.getKey.bind(this._rawIndex, key), source: this, });