indexeddbshim 19.0.1 → 19.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.
@@ -1 +1 @@
1
- {"version":3,"file":"indexeddbshim-node.cjs","sources":["../node_modules/eventtargeter/dist/index-es.js","../src/CFG.js","../src/unicode-regex.js","../src/util.js","../src/Event.js","../src/IDBVersionChangeEvent.js","../src/DOMException.js","../src/IDBRequest.js","../node_modules/sync-promise-expanded/index.js","../src/cmp.js","../src/Key.js","../src/IDBKeyRange.js","../src/DOMStringList.js","../src/IDBTransaction.js","../node_modules/typeson-registry/dist/index.min.js","../src/Sca.js","../src/IDBIndex.js","../src/IDBObjectStore.js","../src/IDBDatabase.js","../src/IDBFactory.js","../src/IDBRecord.js","../src/IDBCursor.js","../src/setGlobalVars.js","../src/nodeWebSQL.js","../src/node.js"],"sourcesContent":["/* eslint-disable no-restricted-syntax -- Instanceof checks */\n/* eslint-disable unicorn/no-this-assignment -- TS */\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @callback InvokeCurrentListeners\n * @param {AllListeners} listeners\n * @param {EventWithProps} eventCopy\n * @param {string} type\n * @param {boolean} [checkOnListeners]\n * @returns {boolean}\n */\n\n/**\n * @typedef {{\n * defaultSync?: boolean,\n * extraProperties?: string[],\n * legacyOutputDidListenersThrowFlag?: boolean\n * }} CustomOptions\n */\n\n/**\n * @typedef {(\n * type: string, listener: Listener|{handleEvent: Listener}, options?: boolean|ListenerOptions\n * ) => void} AddOrRemoveListenerMethod\n */\n/**\n * @typedef {(\n * type: string, listener: Listener|{handleEvent: Listener}, options?: boolean|ListenerOptions\n * ) => boolean} HasListenerMethod\n */\n\n/**\n * @typedef {{\n * _defaultSync?: boolean,\n * _extraProperties?: string[],\n * _legacyOutputDidListenersThrowCheck?: boolean,\n * _earlyListeners?: AllListeners,\n * _listeners?: AllListeners,\n * _lateListeners?: AllListeners,\n * _defaultListeners?: AllListeners,\n * _parent?: EventTargetInstance|null,\n * __getParent?: () => EventTargetInstance|null,\n * tryCatch: (evt: EventWithProps, cb: () => void) => void,\n * triggerErrorEvent: (err: unknown, evt: EventWithProps) => void,\n * invokeCurrentListeners: InvokeCurrentListeners,\n * dispatchEvent: (e: EventWithProps) => boolean,\n * _dispatchEvent: (e: EventWithProps, setTarget: boolean) => boolean,\n * __setOptions: (customOptions?: CustomOptions) => void,\n * addEventListener: AddOrRemoveListenerMethod,\n * removeEventListener: AddOrRemoveListenerMethod,\n * hasEventListener: HasListenerMethod,\n * addEarlyEventListener: AddOrRemoveListenerMethod,\n * removeEarlyEventListener: AddOrRemoveListenerMethod,\n * hasEarlyEventListener: HasListenerMethod,\n * addLateEventListener: AddOrRemoveListenerMethod,\n * removeLateEventListener: AddOrRemoveListenerMethod,\n * hasLateEventListener: HasListenerMethod,\n * addDefaultEventListener: AddOrRemoveListenerMethod,\n * removeDefaultEventListener: AddOrRemoveListenerMethod,\n * hasDefaultEventListener: HasListenerMethod,\n * [key: string]: any\n * }} EventTargetInstance\n */\n/**\n * @typedef {{\n * __legacyOutputDidListenersThrowError?: unknown,\n * target?: EventTargetInstance,\n * composed?: boolean,\n * currentTarget?: EventTargetInstance|null,\n * eventPhase?: 0|1|2|3\n * defaultPrevented?: boolean,\n * type?: string,\n * bubbles?: boolean,\n * cancelable?: boolean,\n * isTrusted?: boolean,\n * timeStamp?: Integer,\n * initEvent?: (type: string, bubbles: boolean, cancelable: boolean) => void,\n * preventDefault?: () => void,\n * composedPath?: () => void,\n * detail?: any,\n * initCustomEvent?: (\n * type: string, canBubble: boolean, cancelable: boolean,\n * detail: any\n * ) => void,\n * [key: string]: any\n * }} EventWithProps\n */\n\n// Todo: Switch to ES6 classes\n\n/** @type {{NONE: 0, CAPTURING_PHASE: 1, AT_TARGET: 2, BUBBLING_PHASE: 3}} */\nconst phases = {\n NONE: 0,\n CAPTURING_PHASE: 1,\n AT_TARGET: 2,\n BUBBLING_PHASE: 3\n};\nconst ShimDOMException = typeof DOMException === 'undefined'\n// Todo: Better polyfill (if even needed here)\n/* eslint-disable no-shadow -- Polyfill */\n// eslint-disable-next-line @stylistic/operator-linebreak -- TS/JSDoc needs\n?\n/**\n * @param {string} msg\n * @param {string} name\n * @returns {Error}\n */\nfunction DOMException(msg, name) {\n // No need for `toString` as same as for `Error`\n /* eslint-enable no-shadow -- Polyfill */\n const err = new Error(msg);\n Object.defineProperty(err, 'name', {\n value: name,\n writable: true,\n configurable: true\n });\n return err;\n} : DOMException;\n\n/** @type {WeakMap<object, any>} */\nconst ev = new WeakMap();\n/** @type {WeakMap<object, EventWithProps>} */\nconst evCfg = new WeakMap();\n\n/**\n * Retrieves the internal config bag for an event known to have already\n * been registered in `evCfg` (i.e., not the very first, possibly-unset\n * lookup on an incoming event).\n * @param {object} key\n * @returns {EventWithProps}\n */\nfunction getEvCfg(key) {\n return /** @type {EventWithProps} */evCfg.get(key);\n}\n\n// Todo: Set _ev argument outside of this function\n\n/**\n * Defines own-property getters on `instance` for each named prop, each\n * preferring `_evCfg`'s own value (e.g. set by `initEvent`), falling\n * back to whatever the wrapped `_ev` (a real native event, or another\n * `Event` this one is copying, per `copyEvent`) has, and finally a\n * spec-shaped default. Shared by `Event`'s own base properties and, via\n * its own extra call, `CustomEvent`'s `detail`/`initCustomEvent` --\n * factored out so neither needs any special-casing of the other to know\n * which extra properties to define.\n * @param {EventWithProps} instance\n * @param {string[]} props\n * @param {EventWithProps} _evCfg\n * @param {EventWithProps} _ev\n * @returns {void}\n */\nfunction definePassthroughProps(instance, props, _evCfg, _ev) {\n Object.defineProperties(instance, props.reduce((obj, pr) => {\n const prop =\n /**\n * @type {\"type\"|\"bubbles\"|\"cancelable\"|\"isTrusted\"|\n * \"timeStamp\"|\"initEvent\"|\"composedPath\"|\"composed\"|\n * \"detail\"|\"initCustomEvent\"\n * }\n */\n pr;\n obj[prop] = {\n configurable: true,\n get() {\n return Object.hasOwn(_evCfg, prop) ? _evCfg[prop] : Reflect.has(_ev, prop) ? _ev[prop] : ['bubbles', 'cancelable', 'composed'].includes(prop) ? false : undefined;\n }\n };\n return obj;\n }, /** @type {{[key: string]: any}} */{}));\n}\n\n/**\n * A single, shared getter function (not a fresh closure per instance,\n * unlike the rest of the passthrough props): idlharness.js's own\n * `[LegacyUnforgeable]`-attribute check expects the *same* getter\n * function reference across every instance's own `isTrusted` property\n * descriptor (real browsers back this with a shared native accessor over\n * an internal slot). Still installed as an *own* property per instance\n * (see `initEventInternal`, below) -- not on the prototype -- since\n * `[LegacyUnforgeable]` also requires it be defined directly on each\n * instance (undeletable/unshadowable there), which idlharness.js checks\n * for via `Object.getOwnPropertyDescriptor(new Event(...), \"isTrusted\")`.\n * @this {EventWithProps}\n * @throws {TypeError}\n * @returns {boolean}\n */\nfunction getIsTrusted() {\n if (!(this instanceof ShimEvent)) {\n throw new TypeError('Illegal invocation');\n }\n const _evCfg = getEvCfg(this);\n const _ev = ev.get(this);\n return Boolean(Object.hasOwn(_evCfg, 'isTrusted') ? _evCfg.isTrusted : Reflect.has(_ev, 'isTrusted') && _ev.isTrusted);\n}\n\n/**\n * The shared setup behind `Event`'s own constructor: populates the\n * WeakMap-backed internal state and defines the base `Event` own-\n * property getters on `instance`. Kept as a plain, reusable function\n * (not just inlined into the constructor) so\n * `CustomEvent.prototype.initCustomEvent` -- which, per the legacy DOM\n * Level 3 `initEvent`-family API, must remain callable *after*\n * construction to reinitialize an existing instance, not only from\n * within the constructor -- can re-run this directly on an existing\n * instance without trying to re-invoke a class constructor (illegal\n * outside of `new`/`super()`).\n * @param {EventWithProps} instance\n * @param {string} type\n * @param {EventInit} [evInit]\n * @param {EventWithProps} [_ev]\n * @returns {void}\n */\nfunction initEventInternal(instance, type, evInit, _ev) {\n evInit ||= {};\n _ev ||= {};\n\n /** @type {EventWithProps} */\n const _evCfg = {};\n if ('composed' in evInit) {\n _evCfg.composed = evInit.composed;\n }\n\n // _evCfg.isTrusted = true; // We are not always using this for user-created events\n // Per spec, a `DOMHighResTimeStamp` (`performance.now()`-based, where\n // available) rather than a wall-clock `Date`-based one.\n _evCfg.timeStamp = typeof performance !== 'undefined' && typeof performance.now === 'function' ? performance.now() : Date.now();\n ev.set(instance, _ev);\n evCfg.set(instance, _evCfg);\n /** @type {(type: string, bubbles?: boolean, cancelable?: boolean) => void} */\n instance.initEvent(type, evInit.bubbles, evInit.cancelable);\n ['target', 'currentTarget', 'eventPhase', 'defaultPrevented'].forEach(pr => {\n const prop = /** @type {\"target\"|\"currentTarget\"|\"eventPhase\"|\"defaultPrevented\"} */\n pr;\n Object.defineProperty(instance, prop, {\n configurable: true,\n get() {\n return (/* prop in _evCfg && */_evCfg[prop] !== undefined) ? _evCfg[prop] : Reflect.has(_ev, prop) ? _ev[prop] :\n // Defaults\n prop === 'eventPhase' ? 0 : prop === 'defaultPrevented' ? false : null;\n }\n });\n });\n Object.defineProperties(instance, {\n // `[LegacyUnforgeable]` per spec: a real, shared getter function\n // (see `getIsTrusted`, above), but still installed as an *own*\n // property of each instance rather than the prototype.\n isTrusted: {\n enumerable: true,\n configurable: false,\n get: getIsTrusted\n },\n // Legacy alias of `.target`.\n srcElement: {\n configurable: true,\n get() {\n return instance.target;\n }\n },\n // Legacy alias of `.defaultPrevented`/`.preventDefault()`; not\n // backed by `_evCfg` like the rest since it's derived, not stored.\n returnValue: {\n enumerable: true,\n configurable: true,\n get() {\n return !instance.defaultPrevented;\n },\n set(val) {\n if (val === false) {\n /** @type {() => void} */instance.preventDefault();\n }\n }\n }\n });\n definePassthroughProps(instance, [\n // Event\n 'type', 'bubbles', 'cancelable',\n // Defaults to false\n 'timeStamp',\n // `initEvent` deliberately excluded: it's an *operation*, not a data\n // attribute -- shadowing it here (the same way `type`/`bubbles`/\n // etc. legitimately need to reflect a wrapped/copied event) would\n // permanently replace the real, callable prototype method with a\n // plain data getter (returning `undefined` for any event not\n // wrapping a native one with its own `initEvent`), breaking both\n // re-callability and idlharness's \"operation\" conformance checks.\n // `isTrusted` deliberately excluded too: idlharness.js's own\n // \"attribute exists on prototype\" checks expect the *same*\n // getter function reference for every instance (matching a real\n // `[LegacyUnforgeable]` accessor backed by an internal slot), not\n // a fresh own-property closure per instance -- see the shared\n // `ShimEventProto.isTrusted` accessor defined below instead.\n // Other event properties (not used by our code)\n 'composed'], _evCfg, _ev);\n}\n\n/* eslint-disable no-shadow -- Polyfilling */\n/**\n * We use an adapter class rather than a proxy not only for compatibility\n * but also since we have to clone native event properties anyways in order\n * to properly set `target`, etc.\n * The regular DOM method `dispatchEvent` won't work with this polyfill as\n * it expects a native event.\n */\nclass Event {\n /* eslint-enable no-shadow -- Polyfilling */\n /**\n * @param {string} type\n */\n constructor(type) {\n // eslint-disable-next-line consistent-this -- TS constructors can't use `@this`\n const me = /** @type {EventWithProps} */ /** @type {unknown} */this;\n // @ts-expect-error Symbol not part of the string index signature\n me[Symbol.toStringTag] = 'Event';\n me.toString = () => {\n return '[object Event]';\n };\n // For WebIDL checks of function's `length`, we check `arguments` for the optional arguments\n // eslint-disable-next-line prefer-rest-params -- Don't want to change signature\n const [, evInit, _ev] = arguments;\n if (!arguments.length) {\n throw new TypeError(\"Failed to construct 'Event': 1 argument required, but only 0 present.\");\n }\n // WebIDL coerces `type` to a `DOMString`: a `type` with a custom\n // `toString`/`Symbol.toPrimitive` that throws must have that\n // error propagate out of the constructor.\n type = String(type);\n initEventInternal(me, type, evInit, _ev);\n }\n}\nconst ShimEvent = Event;\n\n// Named function expressions (rather than anonymous ones assigned via\n// member-expression `=`, which per spec never get an inferred `.name`)\n// so `.name` matches the WebIDL operation identifier, e.g. for\n// `idlharness.js`'s \"property has wrong .name\" checks.\n\n// A real class's own declared shape doesn't include methods added to its\n// `.prototype` afterward (unlike the plain-function `.prototype` this\n// used to be, which TS treats far more loosely) -- assigning through\n// this untyped alias, rather than `ShimEvent.prototype` directly, keeps\n// that dynamic-augmentation pattern working without a `@ts-expect-error`\n// on every single line below.\n/** @type {any} */\nconst ShimEventProto = ShimEvent.prototype;\n\n/** @this {EventWithProps} */\nShimEventProto.preventDefault = function preventDefault() {\n if (!(this instanceof ShimEvent)) {\n throw new TypeError('Illegal invocation');\n }\n const _ev = ev.get(this);\n const _evCfg = getEvCfg(this);\n if (this.cancelable && !_evCfg._passive) {\n _evCfg.defaultPrevented = true;\n if (typeof _ev.preventDefault === 'function') {\n // Prevent any predefined defaults\n _ev.preventDefault();\n }\n }\n};\n\n/**\n * Per spec, returns the empty list once dispatch has finished (or hasn't\n * started); while an event is actively being dispatched, returns the\n * full target-to-root propagation path computed once up front by\n * `_dispatchEvent` (see there), regardless of which phase dispatch is\n * currently in.\n * @this {EventWithProps}\n * @returns {EventTargetInstance[]}\n */\nShimEventProto.composedPath = function composedPath() {\n if (!(this instanceof ShimEvent)) {\n throw new TypeError('Illegal invocation');\n }\n const _evCfg = getEvCfg(this);\n if (!_evCfg._dispatchFlag || !_evCfg._path) {\n return [];\n }\n return [..._evCfg._path];\n};\n\n/** @this {EventWithProps} */\nShimEventProto.stopImmediatePropagation = function stopImmediatePropagation() {\n const _evCfg = getEvCfg(this);\n _evCfg._stopImmediatePropagation = true;\n};\n\n/** @this {EventWithProps} */\nShimEventProto.stopPropagation = function stopPropagation() {\n const _evCfg = getEvCfg(this);\n _evCfg._stopPropagation = true;\n};\n\n/**\n * @param {string} type\n * @param {boolean} [bubbles]\n * @param {boolean} [cancelable]\n * @this {EventWithProps}\n */\nShimEventProto.initEvent = function initEvent(type, bubbles = false, cancelable = false) {\n // WebIDL's optional args (defaulted here) keep `.length` at 1, matching real browsers\n const _evCfg = getEvCfg(this);\n if (_evCfg._dispatched) {\n return;\n }\n Object.defineProperties(this, {\n type: {\n enumerable: true,\n configurable: true,\n get() {\n return type;\n }\n },\n bubbles: {\n enumerable: true,\n configurable: true,\n get() {\n return bubbles;\n }\n },\n cancelable: {\n enumerable: true,\n configurable: true,\n get() {\n return cancelable;\n }\n }\n });\n _evCfg.type = type;\n if (bubbles !== undefined) {\n _evCfg.bubbles = bubbles;\n }\n if (cancelable !== undefined) {\n _evCfg.cancelable = cancelable;\n }\n};\n\n// These attribute getters exist on the prototype only so idlharness-style\n// interface checks find them there (matching real DOM implementations,\n// where these are shared prototype accessors, not per-instance ones);\n// accessing one directly on the prototype itself (rather than a real\n// instance, which shadows these with the working per-instance getters\n// set up in the constructor above) throws, same as a real browser's\n// native accessor would for an unbound `this`. Each throw-stub's `.name`\n// is set explicitly to `\"get \" + prop` since `{get () {...}}` -- a\n// literal `get` key, not `get`-shorthand syntax -- names the function\n// `\"get\"`, not `\"get \" + prop`.\n['type', 'target', 'currentTarget', 'eventPhase', 'defaultPrevented', 'bubbles', 'cancelable', 'timeStamp', 'composed'].forEach(prop => {\n const get = function () {\n throw new TypeError('Illegal invocation');\n };\n Object.defineProperty(get, 'name', {\n value: 'get ' + prop,\n configurable: true\n });\n Object.defineProperty(ShimEvent.prototype, prop, {\n enumerable: true,\n configurable: true,\n get\n });\n});\n{\n const get = function () {\n throw new TypeError('Illegal invocation');\n };\n // Setters are always spec'd with one formal parameter, so `.length`\n // must be 1 even though this throws unconditionally.\n /**\n * @param {boolean} _val\n */\n // eslint-disable-next-line no-unused-vars -- Needed for `.length`\n const set = function (_val) {\n throw new TypeError('Illegal invocation');\n };\n Object.defineProperty(get, 'name', {\n value: 'get returnValue',\n configurable: true\n });\n Object.defineProperty(set, 'name', {\n value: 'set returnValue',\n configurable: true\n });\n Object.defineProperty(ShimEvent.prototype, 'returnValue', {\n enumerable: true,\n configurable: true,\n get,\n set\n });\n}\n['NONE', 'CAPTURING_PHASE', 'AT_TARGET', 'BUBBLING_PHASE'].forEach((prop, i) => {\n Object.defineProperty(ShimEvent, prop, {\n enumerable: true,\n writable: false,\n value: i\n });\n Object.defineProperty(ShimEvent.prototype, prop, {\n writable: false,\n value: i\n });\n});\n// @ts-expect-error Not part of the class body itself\nShimEvent[Symbol.toStringTag] = 'Function';\nShimEventProto[Symbol.toStringTag] = 'EventPrototype';\n// A real class's own `.prototype` is already non-writable/non-configurable\n// per spec, so no explicit freeze is needed here.\n\n/* eslint-disable no-shadow -- Polyfill */\n/**\n * `CustomEvent extends Event` via a real `class`: `super()`'s call into\n * `Event`'s own constructor already gives this the correct prototype\n * chain (`CustomEvent.prototype.__proto__ === Event.prototype`) and\n * `new.target` propagation for any further subclass.\n */\nclass CustomEvent extends Event {\n /* eslint-enable no-shadow -- Polyfill */\n /**\n * @param {string} type\n */\n constructor(type) {\n // eslint-disable-next-line prefer-const, prefer-rest-params -- Keep signature\n let [, evInit, _ev] = arguments;\n // @ts-expect-error Casting doesn't work\n super(type, evInit, _ev);\n // eslint-disable-next-line consistent-this -- TS constructors can't use `@this`\n const me = /** @type {EventWithProps} */ /** @type {unknown} */this;\n // @ts-expect-error Symbol not part of the string index signature\n me[Symbol.toStringTag] = 'CustomEvent';\n me.toString = () => {\n return '[object CustomEvent]';\n };\n evInit ||= {};\n // @ts-ignore\n me.initCustomEvent(type, evInit.bubbles, evInit.cancelable, 'detail' in evInit ? evInit.detail : null);\n }\n}\nconst ShimCustomEvent = CustomEvent;\n/** @type {any} */\nconst ShimCustomEventProto = ShimCustomEvent.prototype;\n/**\n * @param {string} type\n * @param {boolean} [bubbles]\n * @param {boolean} [cancelable]\n * @param {any} [detail]\n * @this {EventWithProps}\n */\nShimCustomEventProto.initCustomEvent = function initCustomEvent(type, bubbles = false, cancelable = false, detail = null) {\n // WebIDL's optional args (defaulted here) keep `.length` at 1\n if (!(this instanceof ShimCustomEvent)) {\n throw new TypeError('Illegal invocation');\n }\n const _evCfg = getEvCfg(this);\n // @ts-expect-error `detail` isn't part of `EventInit`, only used internally here\n // eslint-disable-next-line prefer-rest-params -- Keep signature\n initEventInternal(this, type, {\n bubbles,\n cancelable,\n detail\n }, arguments[4]);\n if (_evCfg._dispatched) {\n return;\n }\n if (detail !== undefined) {\n _evCfg.detail = detail;\n }\n // `initCustomEvent` deliberately excluded -- see the matching comment\n // in `initEventInternal` for `initEvent`, above; the same reasoning\n // applies here.\n definePassthroughProps(this, ['detail'], _evCfg, ev.get(this));\n};\n// @ts-expect-error Not part of the class body itself\nShimCustomEvent[Symbol.toStringTag] = 'Function';\nShimCustomEventProto[Symbol.toStringTag] = 'CustomEventPrototype';\n{\n const get = function () {\n throw new TypeError('Illegal invocation');\n };\n Object.defineProperty(get, 'name', {\n value: 'get detail',\n configurable: true\n });\n Object.defineProperty(ShimCustomEvent.prototype, 'detail', {\n enumerable: true,\n configurable: true,\n get\n });\n}\n// A real class's own `.prototype` is already non-writable/non-configurable\n// per spec, so no explicit freeze is needed here.\n\n/**\n *\n * @param {EventWithProps} e\n * @returns {EventWithProps}\n */\nfunction copyEvent(e) {\n const {\n bubbles,\n cancelable,\n detail,\n type\n } = e;\n if ('detail' in e) {\n // @ts-expect-error Casting doesn't work\n return new ShimCustomEvent(type, {\n bubbles,\n cancelable,\n detail\n }, e);\n }\n // @ts-expect-error Casting doesn't work\n return new ShimEvent(type, {\n bubbles,\n cancelable\n }, e);\n}\n\n/**\n * @typedef {object} ListenerOptions\n * @property {boolean} [once] Remove listener after invoking once\n * @property {boolean} [passive] Don't allow `preventDefault`\n * @property {boolean} [capture] Use `_children` and set `eventPhase`\n * @property {AbortSignal} [signal] Remove the listener when this aborts\n */\n\n/**\n * @typedef {object} ListenerAndOptions\n * @property {Listener} listener\n * @property {ListenerOptions} options\n */\n\n/**\n * @typedef {object} ListenerInfo\n * @property {ListenerAndOptions[]} listenersByTypeOptions\n * @property {ListenerOptions} options\n * @property {ListenerAndOptions[]} listenersByType\n */\n\n/**\n * @callback Listener\n * @param {EventWithProps} e\n * @returns {boolean|void}\n */\n\n/**\n * Keys are event types.\n * @typedef {{[key: string]: Listener[]}} Listeners\n */\n\n/**\n * @typedef {{\n * [type: string]: ListenerAndOptions[]\n * }} AllListeners\n */\n\n/**\n * Per spec, two `addEventListener`/`removeEventListener` calls refer to\n * the *same* listener registration if and only if their `type`,\n * `listener`, and `capture` all match -- `passive`/`once`/`signal` play\n * no part in that identity (they're just per-registration behavior\n * flags). The non-standard early/late/default listener variants\n * (IndexedDBShim's own extension, not part of any spec) keep the\n * original full-options-equality behavior instead, via `captureOnly`.\n * @param {ListenerOptions} a\n * @param {ListenerOptions} b\n * @param {boolean} captureOnly\n * @returns {boolean}\n */\nfunction optionsMatch(a, b, captureOnly) {\n if (captureOnly) {\n return Boolean(a.capture) === Boolean(b.capture);\n }\n return JSON.stringify(a) === JSON.stringify(b);\n}\n\n/**\n *\n * @param {AllListeners} listeners\n * @param {string} type\n * @param {boolean|ListenerOptions} options\n * @param {boolean} captureOnly\n * @returns {ListenerInfo}\n */\nfunction getListenersOptions(listeners, type, options, captureOnly) {\n let listenersByType = listeners[type];\n if (listenersByType === undefined) {\n listeners[type] = listenersByType = [];\n }\n const opts = typeof options === 'boolean' ? {\n capture: options\n } : options || {};\n const listenersByTypeOptions = listenersByType.filter(obj => {\n return optionsMatch(opts, obj.options, captureOnly);\n });\n return {\n listenersByTypeOptions,\n options: opts,\n listenersByType\n };\n}\nconst methods = {\n /**\n * @param {AllListeners} listeners\n * @param {Listener} listener\n * @param {string} type\n * @param {boolean|ListenerOptions} options\n * @param {boolean} captureOnly\n * @returns {void}\n */\n addListener(listeners, listener, type, options, captureOnly) {\n const listenersOptions = getListenersOptions(listeners, type, options, captureOnly);\n const {\n listenersByTypeOptions\n } = listenersOptions;\n ({\n options\n } = listenersOptions);\n const {\n listenersByType\n } = listenersOptions;\n if (listenersByTypeOptions.some(l => {\n return l.listener === listener;\n })) {\n return;\n }\n listenersByType.push({\n listener,\n options\n });\n },\n /**\n * @param {AllListeners} listeners\n * @param {Listener} listener\n * @param {string} type\n * @param {boolean|ListenerOptions} options\n * @param {boolean} captureOnly\n * @returns {void}\n */\n removeListener(listeners, listener, type, options, captureOnly) {\n const listenersOptions = getListenersOptions(listeners, type, options, captureOnly);\n const {\n listenersByType\n } = listenersOptions;\n listenersByType.some((l, i) => {\n if (l.listener === listener && optionsMatch(listenersOptions.options, l.options, captureOnly)) {\n listenersByType.splice(i, 1);\n if (!listenersByType.length) {\n delete listeners[type];\n }\n return true;\n }\n return false;\n });\n },\n /**\n *\n * @param {AllListeners} listeners\n * @param {Listener} listener\n * @param {string} type\n * @param {boolean|ListenerOptions} options\n * @param {boolean} captureOnly\n * @returns {boolean}\n */\n hasListener(listeners, listener, type, options, captureOnly) {\n const listenersOptions = getListenersOptions(listeners, type, options, captureOnly);\n const {\n listenersByTypeOptions\n } = listenersOptions;\n return listenersByTypeOptions.some(l => {\n return l.listener === listener;\n });\n }\n};\n\n/* eslint-disable no-shadow -- Polyfill */\n/**\n * A real, constructible, subclassable `EventTarget`: `new EventTarget()`\n * works directly, and so does `class Foo extends EventTarget {}` (its\n * `super()` call runs this same constructor body, with `new.target` set\n * to `Foo`, which is all a plain, non-`class` base needs to support\n * subclassing correctly -- the engine already gives `this` the\n * subclass's own prototype).\n */\nclass EventTarget {\n /* eslint-enable no-shadow -- Polyfill */\n /**\n * Per WebIDL (`constructor();`), this takes no arguments -- declaring a\n * formal parameter here (even an optional one) would give\n * `EventTarget.length` the wrong value for idlharness.js's own\n * \"interface object length\" check. `EventTargetFactory.createInstance`\n * (the only place custom, non-standard per-instance options are\n * actually used) never calls this constructor at all -- it borrows\n * this class's `.prototype` directly for its own separate function --\n * so there's no internal caller that needs to pass options through\n * here either.\n */\n constructor() {\n // eslint-disable-next-line consistent-this -- TS constructors can't use `@this`\n const me = /** @type {EventTargetInstance} */ /** @type {unknown} */this;\n me.__setOptions();\n }\n}\n\n/**\n * @typedef {\"addEarlyEventListener\"|\"removeEarlyEventListener\"|\"hasEarlyEventListener\"\n * |\"addEventListener\"|\"removeEventListener\"|\"hasEventListener\"\n * |\"addLateEventListener\"|\"removeLateEventListener\"|\"hasLateEventListener\"\n * |\"addDefaultEventListener\"|\"removeDefaultEventListener\"|\"hasDefaultEventListener\"\n * } ListenerName\n */\nObject.assign(EventTarget.prototype, ['Early', '', 'Late', 'Default'].reduce(function (/** @type {{[key: string]: Function}} */\nobj, listenerType) {\n ['add', 'remove', 'has'].forEach(function (method) {\n const mainMethod = /** @type {ListenerName} */method + listenerType + 'EventListener';\n /**\n * @param {string} type\n * @param {Listener|{handleEvent: Listener}} listener\n * @this {EventTargetInstance}\n * @returns {boolean|void}\n */\n obj[mainMethod] = function (type, listener) {\n if (!(this instanceof EventTarget)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length < 2) {\n throw new TypeError('2 or more arguments required');\n }\n if (typeof type !== 'string') {\n // @ts-expect-error It's ok to construct\n throw new ShimDOMException('UNSPECIFIED_EVENT_TYPE_ERR', 'UNSPECIFIED_EVENT_TYPE_ERR');\n }\n // eslint-disable-next-line prefer-rest-params -- Keep signature\n const options = arguments[2]; // We keep the listener `length` as per WebIDL\n try {\n // `listener` is nullable per WebIDL (`EventListener?`), and\n // the `in` operator throws for a `null`/non-object RHS,\n // so only look for `handleEvent` on an actual object.\n // As per code such as the following, handleEvent may throw,\n // but is uncaught\n // https://github.com/web-platform-tests/wpt/blob/master/IndexedDB/fire-error-event-exception.html#L54-L56\n if (listener && typeof listener === 'object' && 'handleEvent' in listener && listener.handleEvent.bind) {\n listener = listener.handleEvent.bind(listener);\n }\n } catch (err) {\n // eslint-disable-next-line no-console -- Feedback to user\n console.log('Uncaught `handleEvent` error', err);\n }\n const arrStr = /** @type {\"_earlyListeners\"|\"_listeners\"|\"_lateListeners\"|\"_defaultListeners\"} */\n '_' + listenerType.toLowerCase() + (listenerType === '' ? 'l' : 'L') + 'isteners';\n if (!Object.hasOwn(this, arrStr)) {\n Object.defineProperty(this, arrStr, {\n value: {}\n });\n }\n const meth = /** @type {\"addListener\"|\"removeListener\"|\"hasListener\"} */\n method + 'Listener';\n // Per spec, only `capture` distinguishes one standard listener\n // registration from another (`passive`/`once`/`signal` don't);\n // the non-standard early/late/default variants keep comparing\n // the full options object instead -- see `optionsMatch`.\n const captureOnly = listenerType === '';\n let finalOptions = options;\n if (captureOnly && method === 'add') {\n // Per spec, `addEventListener`'s options argument is\n // converted to a full `AddEventListenerOptions` dictionary\n // -- reading `capture`/`once`/`passive` (and `signal`, if\n // present) off it -- the moment the call is made,\n // regardless of whether all of those values end up used\n // (e.g. `passive`/`once` aren't part of the identity\n // comparison above, but a getter on them must still be\n // observed to have run). `removeEventListener`/\n // `hasEventListener` only accept `EventListenerOptions`\n // (just `capture`), so they're deliberately excluded here.\n const rawOptions = typeof options === 'boolean' ? {\n capture: options\n } : options || {};\n finalOptions = /** @type {ListenerOptions} */{\n capture: Boolean(rawOptions.capture),\n once: Boolean(rawOptions.once),\n passive: Boolean(rawOptions.passive)\n };\n if ('signal' in rawOptions) {\n finalOptions.signal = rawOptions.signal;\n }\n }\n if (method === 'add' && finalOptions && typeof finalOptions === 'object' && 'signal' in finalOptions) {\n const {\n signal\n } = finalOptions;\n // `AddEventListenerOptions.signal` is a non-nullable `AbortSignal`\n // per WebIDL, so converting `null` (or anything else that\n // isn't a real `AbortSignal`) throws, matching a real\n // browser's dictionary-member type conversion. Duck-typed\n // rather than `instanceof AbortSignal`: a caller's signal\n // may come from a different realm than this module's own\n // (e.g. constructed inside a `vm` sandbox), whose\n // `AbortSignal` is a distinct class with its own separate\n // identity, failing a same-realm `instanceof` check\n // despite being a perfectly genuine signal.\n if (!signal || typeof signal !== 'object' || typeof signal.aborted !== 'boolean' || typeof signal.addEventListener !== 'function') {\n throw new TypeError(\"Failed to convert value to 'AbortSignal'.\");\n }\n if (signal.aborted) {\n return undefined;\n }\n const removeMethod = /** @type {\"removeEventListener\"|\"removeEarlyEventListener\"|\"removeLateEventListener\"|\"removeDefaultEventListener\"} */\n 'remove' + listenerType + 'EventListener';\n signal.addEventListener('abort', () => {\n this[removeMethod](type, listener, finalOptions);\n }, {\n once: true\n });\n }\n return methods[meth](/** @type {AllListeners} */this[arrStr], /** @type {Listener} */listener, type, finalOptions, captureOnly);\n };\n // Assigned via a computed (`obj[mainMethod] = ...`) member\n // expression, so per spec it never gets an inferred `.name` --\n // matters for idlharness.js's \"property has wrong .name\" checks on\n // e.g. `addEventListener`/`removeEventListener`.\n Object.defineProperty(obj[mainMethod], 'name', {\n value: mainMethod,\n configurable: true\n });\n });\n return obj;\n}, {}));\nObject.assign(EventTarget.prototype, {\n _legacyOutputDidListenersThrowCheck: undefined,\n /**\n * @param {CustomOptions} [customOptions]\n * @this {EventTargetInstance}\n * @returns {void}\n */\n __setOptions(customOptions) {\n customOptions ||= {};\n // Todo: Make into event properties?\n this._defaultSync = customOptions.defaultSync;\n this._extraProperties = customOptions.extraProperties || [];\n if (customOptions.legacyOutputDidListenersThrowFlag) {\n // IndexedDB\n this._legacyOutputDidListenersThrowCheck = true;\n this._extraProperties.push('__legacyOutputDidListenersThrowError');\n }\n },\n /**\n * @param {EventWithProps} e\n * @this {EventTargetInstance & {\n * _dispatchEvent: (e: EventWithProps, setTarget: boolean) => boolean,\n * }}\n * @returns {boolean}\n */\n dispatchEvent(e) {\n return this._dispatchEvent(e, true);\n },\n /**\n * @param {EventWithProps} e\n * @param {boolean} setTarget\n * @this {EventTargetInstance}\n * @returns {boolean}\n */\n _dispatchEvent(e, setTarget) {\n ['early', '', 'late', 'default'].forEach(listenerType => {\n const arrStr = /** @type {\"_earlyListeners\"|\"_listeners\"|\"_lateListeners\"|\"_defaultListeners\"} */\n '_' + listenerType + (listenerType === '' ? 'l' : 'L') + 'isteners';\n if (!Object.hasOwn(this, arrStr)) {\n Object.defineProperty(this, arrStr, {\n value: {}\n });\n }\n });\n let _evCfg = evCfg.get(e);\n if (_evCfg && setTarget && _evCfg._dispatched) {\n // @ts-expect-error It's ok to construct\n throw new ShimDOMException('The object is in an invalid state.', 'InvalidStateError');\n }\n\n /** @type {EventWithProps} */\n let eventCopy;\n if (_evCfg) {\n eventCopy = e;\n } else {\n eventCopy = copyEvent(e);\n _evCfg = getEvCfg(eventCopy);\n _evCfg._dispatched = true;\n\n /** @type {string[]} */\n this._extraProperties.forEach(prop => {\n if (Reflect.has(e, prop)) {\n /** @type {{[key: string]: any}} */eventCopy[prop] = /** @type {{[key: string]: any}} */e[prop]; // Todo: Put internal to `ShimEvent`?\n }\n });\n }\n const {\n type: rawType\n } = eventCopy;\n const type = /** @type {string} */rawType;\n const cfg = getEvCfg(eventCopy);\n\n /**\n * @returns {EventTargetInstance}\n */\n function getTarget() {\n return /** @type {EventTargetInstance} */eventCopy.target;\n }\n\n /**\n *\n * @returns {void}\n */\n function finishEventDispatch() {\n cfg.eventPhase = phases.NONE;\n cfg.currentTarget = null;\n cfg._dispatchFlag = false;\n delete cfg._children;\n }\n /**\n *\n * @returns {void}\n */\n function invokeDefaults() {\n // Ignore stopPropagation from defaults\n cfg._stopImmediatePropagation = undefined;\n cfg._stopPropagation = undefined;\n // We check here for whether we should invoke since may have changed since timeout (if late listener prevented default)\n if (!eventCopy.defaultPrevented || !cfg.cancelable) {\n // 2nd check should be redundant\n cfg.eventPhase = phases.AT_TARGET; // Temporarily set before we invoke default listeners\n getTarget().invokeCurrentListeners(/** @type {AllListeners} */getTarget()._defaultListeners, eventCopy, type);\n }\n finishEventDispatch();\n }\n const continueEventDispatch = () => {\n // Ignore stop propagation of user now\n cfg._stopImmediatePropagation = undefined;\n cfg._stopPropagation = undefined;\n if (!this._defaultSync) {\n setTimeout(invokeDefaults, 0);\n } else {\n invokeDefaults();\n }\n cfg.eventPhase = phases.AT_TARGET; // Temporarily set before we invoke late listeners\n // Sync default might have stopped\n if (!cfg._stopPropagation) {\n cfg._stopImmediatePropagation = undefined;\n cfg._stopPropagation = undefined;\n // We could allow stopPropagation by only executing upon (cfg._stopPropagation)\n getTarget().invokeCurrentListeners(/** @type {AllListeners} */getTarget()._lateListeners, eventCopy, type);\n }\n finishEventDispatch();\n return !eventCopy.defaultPrevented;\n };\n if (setTarget) {\n cfg.target = this;\n }\n switch ('eventPhase' in eventCopy && eventCopy.eventPhase) {\n case phases.CAPTURING_PHASE:\n {\n if (cfg._stopPropagation) {\n return continueEventDispatch();\n }\n this.invokeCurrentListeners(/** @type {AllListeners} */this._listeners, eventCopy, type);\n const child = cfg._children && cfg._children.length && cfg._children.pop();\n if (!child || child === eventCopy.target) {\n cfg.eventPhase = phases.AT_TARGET;\n }\n if (child) {\n child._defaultSync = this._defaultSync;\n }\n return (child || this)._dispatchEvent(eventCopy, false);\n }\n case phases.AT_TARGET:\n if (cfg._stopPropagation) {\n return continueEventDispatch();\n }\n this.invokeCurrentListeners(/** @type {AllListeners} */this._listeners, eventCopy, type, true);\n if (!cfg.bubbles) {\n return continueEventDispatch();\n }\n cfg.eventPhase = phases.BUBBLING_PHASE;\n return this._dispatchEvent(eventCopy, false);\n case phases.BUBBLING_PHASE:\n {\n if (cfg._stopPropagation) {\n return continueEventDispatch();\n }\n const parent = this.__getParent && this.__getParent();\n if (!parent) {\n return continueEventDispatch();\n }\n parent.invokeCurrentListeners(/** @type {AllListeners} */parent._listeners, eventCopy, type, true);\n parent._defaultSync = this._defaultSync;\n return parent._dispatchEvent(eventCopy, false);\n }\n case phases.NONE:\n default:\n {\n // The full target-to-root path, computed once up front (used\n // by `composedPath()`) -- kept separate from `cfg._children`\n // below, which is consumed as a stack while walking back\n // down during the capturing phase.\n /* eslint-disable consistent-this -- Readability */\n /** @type {EventTargetInstance[]} */\n const path = [this];\n /** @type {EventTargetInstance|null} */\n let pathNode = this;\n /* eslint-enable consistent-this -- Readability */\n while (pathNode.__getParent && (pathNode = pathNode.__getParent()) !== null) {\n path.push(pathNode);\n }\n cfg._path = path;\n cfg._dispatchFlag = true;\n cfg.eventPhase = phases.AT_TARGET; // Temporarily set before we invoke early listeners\n this.invokeCurrentListeners(/** @type {AllListeners} */this._earlyListeners, eventCopy, type);\n if (!('__getParent' in this)) {\n cfg.eventPhase = phases.AT_TARGET;\n return this._dispatchEvent(eventCopy, false);\n }\n\n /* eslint-disable consistent-this -- Readability */\n /** @type {EventTargetInstance|null} */\n let par = this;\n let root_ = this;\n /* eslint-enable consistent-this -- Readability */\n while (par.__getParent && (par = par.__getParent()) !== null) {\n if (!cfg._children) {\n cfg._children = [];\n }\n cfg._children.push(root_);\n root_ = par;\n }\n root_._defaultSync = this._defaultSync;\n cfg.eventPhase = phases.CAPTURING_PHASE;\n return root_._dispatchEvent(eventCopy, false);\n }\n }\n },\n /**\n * @param {AllListeners} listeners\n * @param {EventWithProps} eventCopy\n * @param {string} type\n * @param {boolean} [checkOnListeners]\n * @this {EventTargetInstance}\n * @returns {boolean}\n */\n invokeCurrentListeners(listeners, eventCopy, type, checkOnListeners) {\n const _evCfg = getEvCfg(eventCopy);\n _evCfg.currentTarget = this;\n\n // `captureOnly` is irrelevant here: only `listOpts.listenersByType`\n // (the full, unfiltered list for this type) is used below, never\n // the options-filtered `listenersByTypeOptions`.\n const listOpts = getListenersOptions(listeners, type, {}, false);\n const liveListenersByType = listOpts.listenersByType;\n // eslint-disable-next-line unicorn/prefer-spread -- Performance?\n const listenersByType = liveListenersByType.concat();\n const dummyIPos = listenersByType.length ? 1 : 0;\n\n // eslint-disable-next-line unicorn/no-unused-array-method-return -- Shortcircuiting\n listenersByType.some((listenerObj, i) => {\n if (_evCfg._stopImmediatePropagation) {\n return true;\n }\n // A listener removed by an earlier callback in this same pass\n // (e.g. via an aborted `signal`, or a plain `removeEventListener`\n // call from within a sibling listener) must not be invoked,\n // even though it was still present in the snapshot taken at\n // the start of this pass.\n if (!liveListenersByType.includes(listenerObj)) {\n return false;\n }\n const onListener = checkOnListeners ? this['on' + type] : null;\n if (i === dummyIPos && typeof onListener === 'function') {\n // We don't splice this in as could be overwritten; executes here per\n // https://html.spec.whatwg.org/multipage/webappapis.html#event-handler-attributes:event-handlers-14\n this.tryCatch(eventCopy, () => {\n const ret = onListener.call(eventCopy.currentTarget, eventCopy);\n if (ret === false) {\n /** @type {() => void} */eventCopy.preventDefault();\n }\n });\n }\n const {\n options\n } = listenerObj;\n const {\n once,\n passive,\n capture\n } = options;\n _evCfg._passive = passive;\n if (capture && eventCopy.target !== eventCopy.currentTarget && eventCopy.eventPhase === phases.CAPTURING_PHASE || eventCopy.eventPhase === phases.AT_TARGET || !capture && eventCopy.target !== eventCopy.currentTarget && eventCopy.eventPhase === phases.BUBBLING_PHASE) {\n const {\n listener\n } = listenerObj;\n // Per spec, a `once` listener is removed *before* it's\n // invoked, not after: a reentrant dispatch from within the\n // listener itself (e.g. dispatching the same event type\n // again synchronously) must not see it as still registered.\n if (once) {\n this.removeEventListener(type, listener, options);\n }\n this.tryCatch(eventCopy, () => {\n listener.call(eventCopy.currentTarget, eventCopy);\n });\n }\n return false;\n });\n this.tryCatch(eventCopy, () => {\n const onListener = checkOnListeners ? this['on' + type] : null;\n if (typeof onListener === 'function' && listenersByType.length < 2) {\n const ret = onListener.call(eventCopy.currentTarget, eventCopy); // Won't have executed if too short\n if (ret === false) {\n /** @type {() => void} */eventCopy.preventDefault();\n }\n }\n });\n return !eventCopy.defaultPrevented;\n },\n /* eslint-disable promise/prefer-await-to-callbacks -- Try-catch */\n /**\n * @param {EventWithProps} evt\n * @param {() => void} cb\n * @returns {void}\n */\n tryCatch(evt, cb) {\n /* eslint-enable promise/prefer-await-to-callbacks -- Try-catch */\n try {\n // Per MDN: Exceptions thrown by event handlers are reported\n // as uncaught exceptions; the event handlers run on a nested\n // callstack: they block the caller until they complete, but\n // exceptions do not propagate to the caller.\n // eslint-disable-next-line promise/prefer-await-to-callbacks -- Try-catch\n cb();\n } catch (err) {\n this.triggerErrorEvent(err, evt);\n }\n },\n /**\n * @param {unknown} err\n * @param {EventWithProps} evt\n * @returns {void}\n */\n triggerErrorEvent(err, evt) {\n const error = typeof err === 'string' ? new Error('Uncaught exception: ' + err) : err;\n let triggerGlobalErrorEvent;\n let useNodeImpl = false;\n if (typeof window === 'undefined' || typeof ErrorEvent === 'undefined' || window && typeof window === 'object' && !window.dispatchEvent) {\n useNodeImpl = true;\n triggerGlobalErrorEvent = () => {\n setTimeout(() => {\n // Node won't be able to catch in this way if we throw in the main thread\n // console.log(err); // Should we auto-log for user?\n throw error; // Let user listen to `process.on('uncaughtException', (err) => {});`\n }, 0);\n };\n } else {\n triggerGlobalErrorEvent = () => {\n // See https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror\n // and https://github.com/w3c/IndexedDB/issues/49\n\n // Note that a regular Event will properly trigger\n // `window.addEventListener('error')` handlers, but it will not trigger\n // `window.onerror` as per https://html.spec.whatwg.org/multipage/webappapis.html#handler-onerror\n // Note also that the following line won't handle `window.addEventListener` handlers\n // if (window.onerror) window.onerror(error.message, err.fileName, err.lineNumber, error.columnNumber, error);\n\n // `ErrorEvent` properly triggers `window.onerror` and `window.addEventListener('error')` handlers\n const errEv = new ErrorEvent('error', {\n error: err,\n message: /** @type {Error} */error.message || '',\n // We can't get the actually useful user's values!\n filename: /** @type {Error & {fileName: string}} */error.fileName || '',\n lineno: /** @type {Error & {lineNumber: Integer}} */error.lineNumber || 0,\n colno: /** @type {Error & {columnNumber: Integer}} */error.columnNumber || 0\n });\n window.dispatchEvent(errEv);\n // console.log(err); // Should we auto-log for user?\n };\n }\n\n // Todo: This really should always run here but as we can't set the global\n // `window` (e.g., using jsdom) since `setGlobalVars` becomes unable to\n // shim `indexedDB` in such a case currently (apparently due to\n // <https://github.com/axemclion/IndexedDBShim/issues/280>), we can't\n // avoid the above Node implementation (which, while providing some\n // fallback mechanism, is unstable)\n if (!useNodeImpl || !this._legacyOutputDidListenersThrowCheck) {\n triggerGlobalErrorEvent();\n }\n\n // See https://dom.spec.whatwg.org/#concept-event-listener-inner-invoke and\n // https://github.com/w3c/IndexedDB/issues/140 (also https://github.com/w3c/IndexedDB/issues/49 )\n if (this._legacyOutputDidListenersThrowCheck) {\n evt.__legacyOutputDidListenersThrowError = error;\n }\n }\n});\n// @ts-expect-error Not part of the class body itself\nEventTarget.prototype[Symbol.toStringTag] = 'EventTargetPrototype';\n// A real class's own `.prototype` is already non-writable/non-configurable\n// per spec, so no explicit freeze is needed here (unlike `ShimEvent`/\n// `ShimCustomEvent`, which remain plain functions for now).\n\nconst ShimEventTarget = EventTarget;\nconst EventTargetFactory = {\n /**\n * @param {CustomOptions} [customOptions]\n * @returns {EventTarget}\n */\n createInstance(customOptions) {\n /* eslint-disable func-name-matching -- Shim vs. Polyfill */\n /* eslint-disable no-shadow -- Polyfill */\n /**\n * @class\n * @this {EventTargetInstance}\n */\n const ET = function EventTarget() {\n /* eslint-enable no-shadow -- Polyfill */\n /* eslint-enable func-name-matching -- Shim vs. Polyfill */\n this.__setOptions(customOptions);\n };\n ET.prototype = ShimEventTarget.prototype;\n // @ts-expect-error Casting doesn't work\n return new ET();\n }\n};\nEventTarget.ShimEvent = ShimEvent;\nEventTarget.ShimCustomEvent = ShimCustomEvent;\nEventTarget.ShimDOMException = ShimDOMException;\nEventTarget.ShimEventTarget = EventTarget;\nEventTarget.EventTargetFactory = EventTargetFactory;\n\nexport { EventTargetFactory, ShimCustomEvent, ShimDOMException, ShimEvent, EventTarget as ShimEventTarget };\n","/**\n * @typedef {T[keyof T]} ValueOf<T>\n * @template T\n */\n\n/**\n * @typedef {{unlink: (path: string, cb: import('fs').NoParamCallback) => void}} FSApi\n */\n\n/**\n * @typedef {{\n * DEBUG: boolean,\n * cacheDatabaseInstances: boolean,\n * autoName: boolean,\n * fullIDLSupport: boolean,\n * checkOrigin: boolean,\n * cursorPreloadPackSize: number,\n * UnicodeIDStart: string,\n * UnicodeIDContinue: string,\n * registerSCA: (\n * preset: import('typeson').Preset\n * ) => import('typeson').Preset,\n * avoidAutoShim: boolean,\n * win: {\n * openDatabase: (name: string, version: string, displayName: string, estimatedSize: number) =>\n * import('websql-configurable/lib/websql/WebSQLDatabase.js').default\n * },\n * DEFAULT_DB_SIZE: number,\n * useSQLiteIndexes: boolean,\n * fs: FSApi,\n * addNonIDBGlobals: boolean,\n * replaceNonIDBGlobals: boolean,\n * escapeDatabaseName: (name: string) => string,\n * unescapeDatabaseName: (name: string) => string,\n * databaseCharacterEscapeList: string|false,\n * databaseNameLengthLimit: number|false,\n * escapeNFDForDatabaseNames: boolean,\n * addSQLiteExtension: boolean,\n * memoryDatabase: string,\n * deleteDatabaseFiles: boolean,\n * databaseBasePath: string,\n * sysDatabaseBasePath: string,\n * sqlBusyTimeout: number,\n * sqlTrace: () => void,\n * sqlProfile: () => void,\n * sqlMemoryQuota: number,\n * escapeNULForSQLiteStatements: boolean,\n * createIndexes: boolean\n * }} ConfigValues\n */\n\n/**\n * @typedef {ValueOf<ConfigValues>} ConfigValue\n */\n\n/** @type {{[key: string]: ConfigValue}} */\nconst map = {};\n\nconst CFG = /** @type {ConfigValues} */ ({});\n\n/**\n * @typedef {keyof ConfigValues} KeyofConfigValues\n */\n\n/**\n * @typedef {KeyofConfigValues[]} Config\n */\n\n/** @type {Config} */\n// eslint-disable-next-line unicorn/no-top-level-side-effects -- Would be good\n([\n // Boolean for verbose reporting\n 'DEBUG', // Effectively defaults to false (ignored unless `true`)\n\n // Boolean (effectively defaults to true) on whether to cache WebSQL\n // `openDatabase` instances\n 'cacheDatabaseInstances',\n\n // Boolean on whether to auto-name databases (based on an\n // auto-increment) when the empty string is supplied; useful with\n // `memoryDatabase`; defaults to `false` which means the empty string\n // will be used as the (valid) database name\n 'autoName',\n\n // Determines whether the slow-performing `Object.setPrototypeOf`\n // calls required for full WebIDL compliance will be used. Probably\n // only needed for testing or environments where full introspection\n // on class relationships is required; see\n // https://stackoverflow.com/questions/41927589/rationales-consequences-of-webidl-class-inheritance-requirements\n 'fullIDLSupport', // Effectively defaults to false (ignored unless `true`)\n\n // Boolean on whether to perform origin checks in `IDBFactory` methods\n // Effectively defaults to `true` (must be set to `false` to cancel checks)\n 'checkOrigin',\n\n // Used by `IDBCursor` continue methods for number of records to cache;\n // Defaults to 100\n 'cursorPreloadPackSize',\n\n // See optional API (`shimIndexedDB.__setUnicodeIdentifiers`);\n // or just use the Unicode builds which invoke this method\n // automatically using the large, fully spec-compliant, regular\n // expression strings of `src/UnicodeIdentifiers.js`)\n // In the non-Unicode builds, defaults to /[$A-Z_a-z]/\n 'UnicodeIDStart',\n // In the non-Unicode builds, defaults to /[$0-9A-Z_a-z]/\n 'UnicodeIDContinue',\n\n // Used by SCA.js for optional restructuring of typeson-registry\n // Structured Cloning Algorithm; should only be needed for ensuring data\n // created in 3.* versions of IndexedDBShim continue to work; see the\n // library `typeson-registry-sca-reverter` to get a function to do this\n 'registerSCA',\n\n // BROWSER-SPECIFIC CONFIG\n 'avoidAutoShim', // Where WebSQL is detected but where `indexedDB` is\n // missing or poor support is known (non-Chrome Android or\n // non-Safari iOS9), the shim will be auto-applied without\n // `shimIndexedDB.__useShim()`. Set this to `true` to avoid forcing\n // the shim for such cases.\n\n // -----------SQL CONFIG----------\n // Object (`window` in the browser) on which there may be an\n // `openDatabase` method (if any) for WebSQL. (The browser\n // throws if attempting to call `openDatabase` without the window\n // so this is why the config doesn't just allow the function.)\n // Defaults to `window` or `self` in browser builds or\n // a singleton object with the `openDatabase` method set to\n // the \"websql\" package in Node.\n 'win',\n\n // For internal `openDatabase` calls made by `IDBFactory` methods;\n // per the WebSQL spec, \"User agents are expected to use the display name\n // and the estimated database size to optimize the user experience.\n // For example, a user agent could use the estimated size to suggest an\n // initial quota to the user. This allows a site that is aware that it\n // will try to use hundreds of megabytes to declare this upfront, instead\n // of the user agent prompting the user for permission to increase the\n // quota every five megabytes.\"\n // Defaults to (4 * 1024 * 1024) or (25 * 1024 * 1024) in Safari\n 'DEFAULT_DB_SIZE',\n // Whether to create indexes on SQLite tables (and also whether to try\n // dropping)\n // Effectively defaults to `false` (ignored unless `true`)\n 'useSQLiteIndexes',\n\n // NODE-IMPINGING SETTINGS (created for sake of limitations in Node\n // or desktop file system implementation but applied by default in\n // browser for parity)\n\n // File system module with `unlink` to remove deleted database files\n 'fs',\n\n // Used when setting global shims to determine whether to try to add\n // other globals shimmed by the library (`ShimDOMException`,\n // `ShimDOMStringList`, `ShimEvent`, `ShimCustomEvent`, `ShimEventTarget`)\n // Effectively defaults to `false` (ignored unless `true`)\n 'addNonIDBGlobals',\n // Used when setting global shims to determine whether to try to overwrite\n // other globals shimmed by the library (`DOMException`, `DOMStringList`,\n // `Event`, `CustomEvent`, `EventTarget`)\n // Effectively defaults to `false` (ignored unless `true`)\n 'replaceNonIDBGlobals',\n\n // Overcoming limitations with node-sqlite3/storing database name on\n // file systems\n // https://en.wikipedia.org/wiki/Filename#Reserved_characters_and_words\n // Defaults to prefixing database with `D_`, escaping\n // `databaseCharacterEscapeList`, escaping NUL, and\n // escaping upper case letters, as well as enforcing\n // `databaseNameLengthLimit`\n 'escapeDatabaseName',\n // Not used internally; usable as a convenience method\n 'unescapeDatabaseName',\n\n // Defaults to global regex representing the following\n // (characters nevertheless commonly reserved in modern,\n // Unicode-supporting systems): 0x00-0x1F 0x7F \" * / : < > ? \\ |\n 'databaseCharacterEscapeList',\n // Defaults to 254 (shortest typical modern file length limit)\n 'databaseNameLengthLimit',\n\n // Boolean defaulting to true on whether to escape NFD-escaping\n // characters to avoid clashes on MacOS which performs NFD on files\n 'escapeNFDForDatabaseNames',\n\n // Boolean on whether to add the `.sqlite` extension to file names;\n // defaults to `true`\n 'addSQLiteExtension',\n // Various types of in-memory databases that can auto-delete\n [\n 'memoryDatabase',\n /**\n * @param {string} val\n * @throws {TypeError}\n * @returns {void}\n */\n (val) => {\n if (!(/^(?::memory:|file::memory:(\\?[^#]*)?(#.*)?)?$/u).test(\n /** @type {string} */ (val)\n )) {\n throw new TypeError(\n '`memoryDatabase` must be the empty string, \":memory:\", or a ' +\n '\"file::memory:[?queryString][#hash] URL\".'\n );\n }\n }\n ],\n\n // NODE-SPECIFIC CONFIG\n // Boolean on whether to delete the database file itself after\n // `deleteDatabase`; defaults to `true` as the database will be empty\n 'deleteDatabaseFiles',\n 'databaseBasePath',\n 'sysDatabaseBasePath',\n\n // NODE-SPECIFIC WEBSQL CONFIG\n 'sqlBusyTimeout', // Defaults to 1000\n 'sqlTrace', // Callback not used by default\n 'sqlProfile', // Callback not used by default\n // Defaults to true except in Node builds where we can preserve literal NUL with better-sqlite3\n 'escapeNULForSQLiteStatements',\n\n 'sqlMemoryQuota',\n 'createIndexes'\n]).forEach((prop) => {\n /** @type {(val: ConfigValue) => void} */\n let validator;\n if (Array.isArray(prop)) {\n [prop, validator] = prop;\n }\n Object.defineProperty(CFG, prop, {\n get () {\n return map[prop];\n },\n set (val) {\n if (validator) {\n validator(val);\n }\n map[prop] = val;\n }\n });\n});\n\nexport default CFG;\n","// @ts-nocheck\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar regex$1;\nvar hasRequiredRegex;\n\nfunction requireRegex () {\n\tif (hasRequiredRegex) return regex$1;\n\thasRequiredRegex = 1;\n\tregex$1=/[\\xC0-\\xC5\\xC7-\\xCF\\xD1-\\xD6\\xD9-\\xDD\\xE0-\\xE5\\xE7-\\xEF\\xF1-\\xF6\\xF9-\\xFD\\xFF-\\u010F\\u0112-\\u0125\\u0128-\\u0130\\u0134-\\u0137\\u0139-\\u013E\\u0143-\\u0148\\u014C-\\u0151\\u0154-\\u0165\\u0168-\\u017E\\u01A0\\u01A1\\u01AF\\u01B0\\u01CD-\\u01DC\\u01DE-\\u01E3\\u01E6-\\u01F0\\u01F4\\u01F5\\u01F8-\\u021B\\u021E\\u021F\\u0226-\\u0233\\u0344\\u0385\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u0390\\u03AA-\\u03B0\\u03CA-\\u03CE\\u03D3\\u03D4\\u0400\\u0401\\u0403\\u0407\\u040C-\\u040E\\u0419\\u0439\\u0450\\u0451\\u0453\\u0457\\u045C-\\u045E\\u0476\\u0477\\u04C1\\u04C2\\u04D0-\\u04D3\\u04D6\\u04D7\\u04DA-\\u04DF\\u04E2-\\u04E7\\u04EA-\\u04F5\\u04F8\\u04F9\\u0622-\\u0626\\u06C0\\u06C2\\u06D3\\u0929\\u0931\\u0934\\u0958-\\u095F\\u09CB\\u09CC\\u09DC\\u09DD\\u09DF\\u0A33\\u0A36\\u0A59-\\u0A5B\\u0A5E\\u0B48\\u0B4B\\u0B4C\\u0B5C\\u0B5D\\u0B94\\u0BCA-\\u0BCC\\u0C48\\u0CC0\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0D4A-\\u0D4C\\u0DDA\\u0DDC-\\u0DDE\\u0F43\\u0F4D\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F73\\u0F75\\u0F76\\u0F78\\u0F81\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9\\u1026\\u1B06\\u1B08\\u1B0A\\u1B0C\\u1B0E\\u1B12\\u1B3B\\u1B3D\\u1B40\\u1B41\\u1B43\\u1E00-\\u1E99\\u1E9B\\u1EA0-\\u1EF9\\u1F00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FC1-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-\\u1FEE\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u212B\\u219A\\u219B\\u21AE\\u21CD-\\u21CF\\u2204\\u2209\\u220C\\u2224\\u2226\\u2241\\u2244\\u2247\\u2249\\u2260\\u2262\\u226D-\\u2271\\u2274\\u2275\\u2278\\u2279\\u2280\\u2281\\u2284\\u2285\\u2288\\u2289\\u22AC-\\u22AF\\u22E0-\\u22E3\\u22EA-\\u22ED\\u2ADC\\u304C\\u304E\\u3050\\u3052\\u3054\\u3056\\u3058\\u305A\\u305C\\u305E\\u3060\\u3062\\u3065\\u3067\\u3069\\u3070\\u3071\\u3073\\u3074\\u3076\\u3077\\u3079\\u307A\\u307C\\u307D\\u3094\\u309E\\u30AC\\u30AE\\u30B0\\u30B2\\u30B4\\u30B6\\u30B8\\u30BA\\u30BC\\u30BE\\u30C0\\u30C2\\u30C5\\u30C7\\u30C9\\u30D0\\u30D1\\u30D3\\u30D4\\u30D6\\u30D7\\u30D9\\u30DA\\u30DC\\u30DD\\u30F4\\u30F7-\\u30FA\\u30FE\\uAC00-\\uD7A3\\uFB1D\\uFB1F\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFB4E]|\\uD801[\\uDDC9\\uDDE4]|\\uD804[\\uDC9A\\uDC9C\\uDCAB\\uDD2E\\uDD2F\\uDF4B\\uDF4C\\uDF83\\uDF85\\uDF8E\\uDF91\\uDFC5\\uDFC7\\uDFC8]|\\uD805[\\uDCBB\\uDCBC\\uDCBE\\uDDBA\\uDDBB]|\\uD806\\uDD38|\\uD818[\\uDD21-\\uDD28]|\\uD81B[\\uDD68-\\uDD6A]|\\uD834[\\uDD5E-\\uDD64\\uDDBB-\\uDDC0]/;\n\treturn regex$1;\n}\n\nvar regexExports = requireRegex();\nvar regex = /*@__PURE__*/getDefaultExportFromCjs(regexExports);\n\nexport { regex as default };\n","/* eslint-disable new-cap -- ToString is how it is defined */\nimport CFG from './CFG.js';\nimport expandsOnNFD from './unicode-regex.js';\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @param {string} arg\n * @returns {string}\n */\nfunction escapeUnmatchedSurrogates (arg) {\n // https://stackoverflow.com/a/6701665/271577\n return arg.replaceAll(\n /([\\uD800-\\uDBFF])(?![\\uDC00-\\uDFFF])|(^|[^\\uD800-\\uDBFF])([\\uDC00-\\uDFFF])/gu,\n function (_, unmatchedHighSurrogate, precedingLow, unmatchedLowSurrogate) {\n // Could add a corresponding surrogate for compatibility with `node-sqlite3`: https://bugs.python.org/issue12569 and https://stackoverflow.com/a/6701665/271577\n // but Chrome having problems\n if (unmatchedHighSurrogate) {\n return '^2' + unmatchedHighSurrogate.codePointAt()\n .toString(16).padStart(4, '0');\n }\n return (precedingLow || '') + '^3' +\n unmatchedLowSurrogate.codePointAt().toString(16).padStart(4, '0');\n }\n );\n}\n\n/**\n * @param {string} arg\n * @returns {string}\n */\nfunction escapeNameForSQLiteIdentifier (arg) {\n // https://stackoverflow.com/a/6701665/271577\n return '_' + // Prevent empty string\n escapeUnmatchedSurrogates(\n arg.replaceAll('^', '^^') // Escape our escape\n // https://www.sqlite.org/src/tktview?name=57c971fc74\n .replaceAll('\\0', '^0')\n // We need to avoid identifiers being treated as duplicates based on SQLite's ASCII-only case-insensitive table and column names\n // (For SQL in general, however, see https://stackoverflow.com/a/17215009/271577\n // See also https://www.sqlite.org/faq.html#q18 re: Unicode (non-ASCII) case-insensitive not working\n .replaceAll(/([A-Z])/gu, '^$1')\n );\n}\n\n/**\n * The escaping of unmatched surrogates was needed by Chrome but not Node.\n * @param {string} arg\n * @returns {string}\n */\nfunction escapeSQLiteStatement (arg) {\n const escaped = arg.replaceAll('^', '^^');\n return escapeUnmatchedSurrogates(\n CFG.escapeNULForSQLiteStatements === false\n ? escaped\n : escaped.replaceAll('\\0', '^0')\n );\n}\n\n/**\n * @param {string} arg\n * @returns {string}\n */\nfunction unescapeSQLiteResponse (arg) {\n const unescaped = unescapeUnmatchedSurrogates(arg);\n if (CFG.escapeNULForSQLiteStatements === false) {\n return unescaped.replaceAll('^^', '^');\n }\n return unescaped\n .replaceAll(/(\\^+)0/gu, (_, esc) => {\n return esc.length % 2\n ? esc.slice(1) + '\\0'\n : _;\n })\n .replaceAll('^^', '^');\n}\n\n/**\n * @param {string} arg\n * @returns {string}\n */\nfunction sqlEscape (arg) {\n // https://www.sqlite.org/lang_keywords.html\n // https://stackoverflow.com/a/6701665/271577\n // There is no need to escape ', `, or [], as\n // we should always be within double quotes\n // NUL should have already been stripped\n return arg.replaceAll('\"', '\"\"');\n}\n\n/**\n * @param {string} arg\n * @returns {string}\n */\nfunction sqlQuote (arg) {\n return '\"' + sqlEscape(arg) + '\"';\n}\n\n/**\n * @param {string} db\n * @throws {Error}\n * @returns {string}\n */\nfunction escapeDatabaseNameForSQLAndFiles (db) {\n if (CFG.escapeDatabaseName) {\n // We at least ensure NUL is escaped by default, but we need to still\n // handle empty string and possibly also length (potentially\n // throwing if too long), escaping casing (including Unicode?),\n // and escaping special characters depending on file system\n return CFG.escapeDatabaseName(escapeSQLiteStatement(db));\n }\n db = 'D' + escapeNameForSQLiteIdentifier(db);\n if (CFG.escapeNFDForDatabaseNames !== false) {\n // ES6 copying of regex with different flags\n db = db.replaceAll(new RegExp(expandsOnNFD, 'gu'), function (expandable) {\n return '^4' + /** @type {Integer} */ (expandable.codePointAt(0)).toString(16).padStart(6, '0');\n });\n }\n if (CFG.databaseCharacterEscapeList !== false) {\n db = db.replace(\n (CFG.databaseCharacterEscapeList\n ? new RegExp(CFG.databaseCharacterEscapeList, 'gu')\n : /[\\u{0000}-\\u{001F}\\u{007F}\"*/:<>?\\\\|]/gu), // eslint-disable-line no-control-regex -- Controls needed\n function (n0) {\n // eslint-disable-next-line unicorn/prefer-code-point -- Switch to `codePointAt`?\n return '^1' + n0.charCodeAt(0).toString(16).padStart(2, '0');\n }\n );\n }\n if (CFG.databaseNameLengthLimit !== false &&\n db.length >= ((CFG.databaseNameLengthLimit || 254) - (CFG.addSQLiteExtension !== false ? 7 /* '.sqlite'.length */ : 0))) {\n throw new Error(\n 'Unexpectedly long database name supplied; length limit required for Node compatibility; passed length: ' +\n db.length + '; length limit setting: ' + (CFG.databaseNameLengthLimit || 254) + '.'\n );\n }\n return db + (CFG.addSQLiteExtension !== false ? '.sqlite' : ''); // Shouldn't have quoting (do we even need NUL/case escaping here?)\n}\n\n/**\n * @param {string} arg\n * @returns {string}\n */\nfunction unescapeUnmatchedSurrogates (arg) {\n return arg\n .replaceAll(/(\\^+)3(d[0-9a-f]{3})/gu, (_, esc, lowSurr) => {\n return esc.length % 2\n ? esc.slice(1) + String.fromCodePoint(Number.parseInt(lowSurr, 16))\n : _;\n }).replaceAll(/(\\^+)2(d[0-9a-f]{3})/gu, (_, esc, highSurr) => {\n return esc.length % 2\n ? esc.slice(1) + String.fromCodePoint(Number.parseInt(highSurr, 16))\n : _;\n });\n}\n\n/**\n * Not in use internally but supplied for convenience.\n * @param {string} db\n * @returns {string}\n */\nfunction unescapeDatabaseNameForSQLAndFiles (db) {\n if (CFG.unescapeDatabaseName) {\n // We at least ensure NUL is unescaped by default, but we need to still\n // handle empty string and possibly also length (potentially\n // throwing if too long), unescaping casing (including Unicode?),\n // and unescaping special characters depending on file system\n return CFG.unescapeDatabaseName(unescapeSQLiteResponse(db));\n }\n\n return unescapeUnmatchedSurrogates(\n db.slice(2) // D_\n // CFG.databaseCharacterEscapeList\n .replaceAll(/(\\^+)1([0-9a-f]{2})/gu, (_, esc, hex) => {\n return esc.length % 2\n ? esc.slice(1) + String.fromCodePoint(Number.parseInt(hex, 16))\n : _;\n // CFG.escapeNFDForDatabaseNames\n }).replaceAll(/(\\^+)4([0-9a-f]{6})/gu, (_, esc, hex) => {\n return esc.length % 2\n ? esc.slice(1) + String.fromCodePoint(Number.parseInt(hex, 16))\n : _;\n })\n // escapeNameForSQLiteIdentifier (including unescapeUnmatchedSurrogates() above)\n ).replaceAll(/(\\^+)([A-Z])/gu, (_, esc, upperCase) => {\n return esc.length % 2\n ? esc.slice(1) + upperCase\n : _;\n }).replaceAll(/(\\^+)0/gu, (_, esc) => {\n return esc.length % 2\n ? esc.slice(1) + '\\0'\n : _;\n }).replaceAll('^^', '^');\n}\n\n/**\n * @param {string} store\n * @returns {string}\n */\nfunction escapeStoreNameForSQL (store) {\n return sqlQuote('S' + escapeNameForSQLiteIdentifier(store));\n}\n\n/**\n * @param {string} index\n * @returns {string}\n */\nfunction escapeIndexNameForSQL (index) {\n return sqlQuote('I' + escapeNameForSQLiteIdentifier(index));\n}\n\n/**\n * @param {string} index\n * @returns {string}\n */\nfunction escapeIndexNameForSQLKeyColumn (index) {\n return 'I' + escapeNameForSQLiteIdentifier(index);\n}\n\n/**\n * @todo Didn't need to escape `%`. Do we still need this escape?\n * @param {string} str\n * @returns {string}\n */\nfunction sqlLIKEEscape (str) {\n // https://www.sqlite.org/lang_expr.html#like\n return str.replaceAll('^', '^^');\n}\n\n/**\n * Minimal replacement for `path.join(base, name)` covering our only use case:\n * `name` is always a bare file name (no separators and no `.`/`..`), and\n * `base` is a directory path expected to be absolute and normalized (an\n * empty string means the current working directory). Unlike `path.join`,\n * this performs no `.`/`..` resolution. It reuses the separator style of\n * `base` (backslash only when `base` uses backslashes and no forward\n * slashes, i.e. a Windows path), otherwise `/`; Node's `fs`, SQLite, and\n * `websql-configurable` accept either separator on Windows regardless.\n * Avoiding `node:path` keeps browser bundles free of a path polyfill.\n * @param {string} base\n * @param {string} name\n * @returns {string}\n */\nfunction joinPath (base, name) {\n if (!base) {\n return name;\n }\n const sep = base.includes('\\\\') && !base.includes('/') ? '\\\\' : '/';\n return base.replace(/[/\\\\]+$/u, '') + sep + name;\n}\n\n/* eslint-disable jsdoc/valid-types -- Bug */\n/**\n * @typedef {{[Symbol.hasInstance]: (value: unknown) => boolean}} AnyClass\n */\n/* eslint-enable jsdoc/valid-types -- Bug */\n\n// Babel doesn't seem to provide a means of using the `instanceof` operator with Symbol.hasInstance (yet?)\n/**\n *\n * @param {AnyValue} obj\n * @param {AnyClass} Clss\n * @returns {boolean}\n */\nfunction instanceOf (obj, Clss) {\n return Clss[Symbol.hasInstance](obj);\n}\n\n/**\n *\n * @param {AnyValue} obj\n * @returns {obj is object}\n */\nfunction isObj (obj) {\n return obj !== null && typeof obj === 'object';\n}\n\n/**\n *\n * @param {AnyValue} obj\n * @returns {boolean}\n */\nfunction isDate (obj) {\n return isObj(obj) && 'getDate' in obj && typeof obj.getDate === 'function';\n}\n\n/**\n *\n * @param {AnyValue} obj\n * @returns {boolean}\n */\nfunction isBlob (obj) {\n return isObj(obj) && 'size' in obj && typeof obj.size === 'number' &&\n 'slice' in obj && typeof obj.slice === 'function' && !('lastModified' in obj);\n}\n\n/**\n *\n * @param {AnyValue} obj\n * @returns {boolean}\n */\nfunction isRegExp (obj) {\n return isObj(obj) && 'flags' in obj && typeof obj.flags === 'string' &&\n 'exec' in obj && typeof obj.exec === 'function';\n}\n\n/**\n *\n * @param {AnyValue} obj\n * @returns {boolean}\n */\nfunction isFile (obj) {\n return isObj(obj) && 'name' in obj && typeof obj.name === 'string' &&\n 'slice' in obj && typeof obj.slice === 'function' && 'lastModified' in obj;\n}\n\n/**\n *\n * @param {AnyValue} obj\n * @returns {boolean}\n */\nfunction isBinary (obj) {\n return isObj(obj) && 'byteLength' in obj && typeof obj.byteLength === 'number' && (\n ('slice' in obj && typeof obj.slice === 'function') || // `TypedArray` (view on buffer) or `ArrayBuffer`\n ('getFloat64' in obj && typeof obj.getFloat64 === 'function') // `DataView` (view on buffer)\n );\n}\n\n/**\n *\n * @param {AnyValue} obj\n * @returns {obj is Iterable<unknown>}\n */\nfunction isIterable (obj) {\n return isObj(obj) &&\n // eslint-disable-next-line unicorn/no-computed-property-existence-check -- May not be \"own\"\n Symbol.iterator in obj &&\n typeof obj[Symbol.iterator] === 'function';\n}\n\n/**\n *\n * @param {object} obj\n * @param {string[]} props\n * @returns {void}\n */\nfunction defineOuterInterface (obj, props) {\n props.forEach((prop) => {\n const o = {\n get [prop] () {\n throw new TypeError('Illegal invocation');\n },\n // @ts-expect-error Deliberately errs\n set [prop] (val) {\n throw new TypeError('Illegal invocation');\n }\n };\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, prop)\n );\n Object.defineProperty(obj, prop, desc);\n });\n}\n\n/**\n *\n * @param {object} obj\n * @param {string[]} props\n * @returns {void}\n */\nfunction defineReadonlyOuterInterface (obj, props) {\n props.forEach((prop) => {\n const o = {\n get [prop] () {\n throw new TypeError('Illegal invocation');\n }\n };\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, prop)\n );\n Object.defineProperty(obj, prop, desc);\n });\n}\n\n/**\n *\n * @param {object} obj\n * @param {string[]} listeners\n * @returns {void}\n */\nfunction defineListenerProperties (obj, listeners) {\n listeners = typeof listeners === 'string' ? [listeners] : listeners;\n listeners.forEach((listener) => {\n const o = {\n get [listener] () {\n return Reflect.get(obj, '__' + listener);\n },\n /**\n * @param {AnyValue} val\n */\n set [listener] (val) {\n Reflect.set(obj, '__' + listener, val);\n }\n };\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, listener)\n );\n // desc.enumerable = true; // Default\n // desc.configurable = true; // Default // Needed by support.js in W3C IndexedDB tests (for openListeners)\n Object.defineProperty(obj, listener, desc);\n });\n listeners.forEach((l) => {\n Reflect.set(obj, l, null);\n });\n}\n\n/**\n *\n * @param {object} obj\n * @param {string|string[]} props\n * @param {null|{\n * [key: string]: unknown\n * }} getter\n * @returns {void}\n */\nfunction defineReadonlyProperties (obj, props, getter = null) {\n props = typeof props === 'string' ? [props] : props;\n props.forEach(function (prop) {\n let o;\n if (getter && Object.hasOwn(getter, prop)) {\n o = getter[prop];\n } else {\n Object.defineProperty(obj, '__' + prop, {\n enumerable: false,\n configurable: false,\n writable: true\n });\n // We must resort to this to get \"get <name>\" as\n // the function `name` for proper IDL\n o = {\n get [prop] () {\n return this['__' + prop];\n }\n };\n }\n\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, prop)\n );\n // desc.enumerable = true; // Default\n // desc.configurable = true; // Default\n Object.defineProperty(obj, prop, desc);\n });\n}\n\n/**\n * `X.prototype.method = function (...) {}` (an assignment to a\n * `MemberExpression`, as used throughout this codebase for IDB\n * interface operations) does not get its `name` inferred by the\n * engine the way object-literal method shorthand or a plain variable\n * assignment would, so it is left as `''`. Per Web IDL, an operation's\n * function object must have its `name` set to the operation's\n * identifier, so call this once all of an interface's own-property\n * operations have been assigned onto its prototype (or, for static\n * operations, onto the constructor itself) to patch any still-empty\n * names in place.\n * @param {object} obj\n * @returns {void}\n */\nfunction setOperationNames (obj) {\n Object.getOwnPropertyNames(obj).forEach((key) => {\n if (key === 'constructor') {\n return;\n }\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(obj, key)\n );\n if (typeof desc.value === 'function' && desc.value.name === '') {\n Object.defineProperty(desc.value, 'name', {value: key, configurable: true});\n }\n });\n}\n\n/**\n *\n * @param {string} item\n * @returns {boolean}\n */\nfunction isIdentifier (item) {\n // For load-time and run-time performance, we don't provide the complete regular\n // expression for identifiers, but these can be passed in, using the expressions\n // found at https://gist.github.com/brettz9/b4cd6821d990daa023b2e604de371407\n // ID_Start (includes Other_ID_Start)\n const UnicodeIDStart = CFG.UnicodeIDStart || '[$A-Z_a-z]';\n // ID_Continue (includes Other_ID_Continue)\n const UnicodeIDContinue = CFG.UnicodeIDContinue || '[$0-9A-Z_a-z]';\n const IdentifierStart = '(?:' + UnicodeIDStart + '|[$_])';\n const IdentifierPart = '(?:' + UnicodeIDContinue + '|[$_\\u{200C}\\u{200D}])';\n return (new RegExp('^' + IdentifierStart + IdentifierPart + '*$', 'u')).test(item);\n}\n\n/**\n *\n * @param {string|string[]} keyPathString\n * @returns {boolean}\n */\nfunction isValidKeyPathString (keyPathString) {\n return typeof keyPathString === 'string' &&\n (keyPathString === '' || isIdentifier(keyPathString) || keyPathString.split('.').every((pathComponent) => {\n return isIdentifier(pathComponent);\n }));\n}\n\n/**\n *\n * @param {string|string[]} keyPath\n * @returns {boolean}\n */\nfunction isValidKeyPath (keyPath) {\n return isValidKeyPathString(keyPath) || (\n Array.isArray(keyPath) && Boolean(keyPath.length) &&\n // Convert array from sparse to dense https://www.2ality.com/2012/06/dense-arrays.html\n // See also https://heycam.github.io/webidl/#idl-DOMString\n [...keyPath].every((pathComponent) => {\n return isValidKeyPathString(pathComponent);\n })\n );\n}\n\n/**\n * @param {number} number\n * @param {\"unsigned long long\"|\"unsigned long\"} type\n * @throws {Error|TypeError}\n * @returns {number}\n */\nfunction enforceRange (number, type) {\n number = Math.floor(Number(number));\n let max, min;\n switch (type) {\n case 'unsigned long long': {\n max = 0x1FFFFFFFFFFFFF; // 2^53 - 1\n min = 0;\n break;\n }\n case 'unsigned long': {\n max = 0xFFFFFFFF; // 2^32 - 1\n min = 0;\n break;\n }\n default:\n throw new Error('Unrecognized type supplied to enforceRange');\n }\n if (!Number.isFinite(number) ||\n number > max ||\n number < min) {\n throw new TypeError('Invalid range: ' + number);\n }\n return number;\n}\n\n/**\n * @typedef {unknown} AnyValue\n */\n\n/**\n * @param {AnyValue} v\n * @param {boolean} [treatNullAs]\n * @returns {string}\n */\nfunction convertToDOMString (v, treatNullAs) {\n return v === null && treatNullAs ? '' : ToString(v);\n}\n\n/**\n * @param {AnyValue} o\n * @returns {string}\n */\nfunction ToString (o) { // Todo: See `es-abstract/es7`\n // `String()` will not throw with Symbols, but the unchecked `+ ''`\n // coercion deliberately does (Web IDL requires converting a symbol\n // to `DOMString` to throw a `TypeError`); the assertion only tells\n // the compiler to allow the coercion it cannot model.\n return '' + /** @type {string} */ (o); // eslint-disable-line no-implicit-coercion -- Need to throw with symbols\n}\n\n/**\n *\n * @param {AnyValue} val\n * @returns {string|string[]}\n */\nfunction convertToSequenceDOMString (val) {\n // Per <https://heycam.github.io/webidl/#idl-sequence>, converting to a sequence works with iterables\n if (isIterable(val)) { // We don't want conversion to array to convert primitives\n // Per <https://heycam.github.io/webidl/#es-DOMString>, converting to a `DOMString` to be via `ToString`: https://tc39.github.io/ecma262/#sec-tostring\n return [...val].map((item) => {\n return ToString(item);\n });\n }\n return ToString(val);\n}\n\n/**\n * @param {AnyValue} v\n * @returns {v is null|undefined}\n */\nfunction isNullish (v) {\n return v === null || v === undefined;\n}\n\n/**\n * Cursor/request continuation chains can call each other synchronously\n * (e.g. walking a large prefetched buffer, or advancing many interleaved\n * cursors in one transaction) which, for large enough record counts, can\n * exceed the JS engine's call stack (\"Maximum call stack size exceeded\").\n *\n * This can't be fixed by deferring continuations to a microtask/macrotask:\n * the transaction machinery synchronously checks (once the current call\n * stack unwinds) whether there are any pending requests left in order to\n * decide it's safe to commit; deferring a continuation opens a real gap in\n * which that check runs first and the transaction completes prematurely,\n * with the deferred continuation then acting on an already-finished\n * transaction (a hang, since it can never resolve).\n *\n * Instead, this implements a true trampoline: the first call starts a\n * synchronous work queue and drains it in a flat loop; any call made while\n * already draining (i.e. a continuation triggering another continuation)\n * is simply appended to that same queue and returns immediately instead of\n * recursing. This keeps everything synchronous (so no completion-check\n * race is introduced) while preventing the call stack from growing with\n * each successive continuation.\n */\nconst continuationState = {\n /** @type {Array<() => void>|null} */\n queue: null\n};\n\n/**\n * @param {() => void} fn\n * @returns {void}\n */\nfunction runContinuationSafely (fn) {\n if (continuationState.queue) {\n continuationState.queue.push(fn);\n return;\n }\n const queue = [fn];\n continuationState.queue = queue;\n try {\n while (queue.length) {\n const next = /** @type {() => void} */ (queue.shift());\n next();\n }\n } finally {\n // Ensure a thrown exception can't leave the queue permanently\n // stuck (which would silently swallow all future continuations).\n continuationState.queue = null;\n }\n}\n\nexport {escapeSQLiteStatement, unescapeSQLiteResponse,\n escapeDatabaseNameForSQLAndFiles, unescapeDatabaseNameForSQLAndFiles,\n escapeStoreNameForSQL, escapeIndexNameForSQL, escapeIndexNameForSQLKeyColumn,\n sqlLIKEEscape, sqlQuote, joinPath,\n instanceOf,\n isObj, isDate, isBlob, isRegExp, isFile, isBinary, isIterable,\n defineOuterInterface, defineReadonlyOuterInterface,\n defineListenerProperties, defineReadonlyProperties,\n setOperationNames,\n isValidKeyPath, enforceRange,\n convertToDOMString, convertToSequenceDOMString,\n isNullish, runContinuationSafely};\n","import {ShimEventTarget, ShimEvent, ShimCustomEvent} from 'eventtargeter';\nimport * as util from './util.js';\n\n/**\n * @typedef {Error} DebuggingError\n */\n\n/**\n * @typedef {Event & {\n * __legacyOutputDidListenersThrowError?: boolean,\n * debug?: DebuggingError|null\n * }} EventFull\n */\n\n/**\n *\n * @param {string} type\n * @param {DebuggingError|null} [debug]\n * @param {EventInit} [evInit]\n * @returns {EventFull}\n */\nfunction createEvent (type, debug, evInit) {\n // @ts-expect-error It's ok\n const ev = /** @type {EventFull} */ (new ShimEvent(type, evInit));\n ev.debug = debug;\n return ev;\n}\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\n// We don't add within polyfill repo as might not always be the desired implementation\nObject.defineProperty(ShimEvent, Symbol.hasInstance, {\n /* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n value:\n /**\n * @param {unknown} obj\n * @returns {boolean}\n */\n (obj) => util.isObj(obj) && 'target' in obj && 'bubbles' in obj && typeof obj.bubbles === 'boolean'\n});\n\nexport {createEvent, ShimEvent, ShimCustomEvent, ShimEventTarget};\n","import {ShimEvent} from './Event.js';\nimport * as util from './util.js';\n\nconst readonlyProperties = ['oldVersion', 'newVersion'];\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {globalThis.Event & {\n * __eventInitDict: {oldVersion?: Integer, newVersion?: Integer|null}\n * }} IDBVersionChangeEventFull\n */\n\n/**\n * `extends ShimEvent` via a real `class`, now that `Event` (`ShimEvent`)\n * is itself a real, constructible class in `eventtargeter` -- the old\n * `ShimEvent.call(this, type)` + `Object.create(ShimEvent.prototype)`\n * pattern this used to use is illegal for a real class constructor\n * (only callable via `new`/`super()`).\n */\nclass IDBVersionChangeEvent extends ShimEvent {\n /**\n * @param {string} type\n */\n constructor (type /* , eventInitDict */) { // eventInitDict is a IDBVersionChangeEventInit (but is not defined as a global)\n super(type);\n const me = /** @type {IDBVersionChangeEventFull} */ (/** @type {unknown} */ (this));\n // @ts-expect-error It's ok\n me[Symbol.toStringTag] = 'IDBVersionChangeEvent';\n me.toString = function () {\n return '[object IDBVersionChangeEvent]';\n };\n // eslint-disable-next-line prefer-rest-params -- API\n me.__eventInitDict = arguments[1] || {};\n }\n}\n\n// @ts-expect-error Not part of the class body itself\nIDBVersionChangeEvent.prototype[Symbol.toStringTag] = 'IDBVersionChangeEventPrototype';\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nreadonlyProperties.forEach((prop) => {\n // Ensure for proper interface testing that \"get <name>\" is the function name\n const o = {\n /**\n * @returns {Integer|null}\n */\n get [prop] () {\n if (!(this instanceof IDBVersionChangeEvent)) {\n throw new TypeError('Illegal invocation');\n }\n const me = /** @type {IDBVersionChangeEventFull} */ (/** @type {unknown} */ (this));\n return (me.__eventInitDict && me.__eventInitDict[\n /** @type {keyof IDBVersionChangeEventFull['__eventInitDict']} */ (prop)\n ]) || (prop === 'oldVersion' ? 0 : null);\n }\n };\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, prop)\n );\n // desc.enumerable = true; // Default\n // desc.configurable = true; // Default\n Object.defineProperty(IDBVersionChangeEvent.prototype, prop, desc);\n});\n\nObject.defineProperty(IDBVersionChangeEvent, Symbol.hasInstance, {\n value:\n /**\n * @param {unknown} obj\n * @returns {boolean}\n */\n (obj) => util.isObj(obj) && 'oldVersion' in obj &&\n 'defaultPrevented' in obj && typeof obj.defaultPrevented === 'boolean'\n});\n\n// A real class's own `.prototype` (and its `.constructor` back-reference)\n// is already set up correctly and non-writable/non-configurable per\n// spec, so no explicit setup is needed here.\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nexport default IDBVersionChangeEvent;\n","import CFG from './CFG.js';\n\n/**\n * Creates a native DOMException, for browsers that support it.\n * @param {string} name\n * @param {string} message\n * @returns {DOMException}\n */\nfunction createNativeDOMException (name, message) {\n // @ts-expect-error It's ok\n return new DOMException.prototype.constructor(\n message,\n name || 'DOMException'\n );\n}\n\n// From web-platform-tests testharness.js name_code_map (though not in new spec)\n\n/**\n * @typedef {\"IndexSizeError\"|\"HierarchyRequestError\"|\"WrongDocumentError\"|\n * \"InvalidCharacterError\"|\"NoModificationAllowedError\"|\"NotFoundError\"|\n * \"NotSupportedError\"|\"InUseAttributeError\"|\"InvalidStateError\"|\n * \"SyntaxError\"|\"InvalidModificationError\"|\"NamespaceError\"|\n * \"InvalidAccessError\"|\"TypeMismatchError\"|\"SecurityError\"|\n * \"NetworkError\"|\"AbortError\"|\"URLMismatchError\"|\"QuotaExceededError\"|\n * \"TimeoutError\"|\"InvalidNodeTypeError\"|\"DataCloneError\"|\"EncodingError\"|\n * \"NotReadableError\"|\"UnknownError\"|\"ConstraintError\"|\"DataError\"|\n * \"TransactionInactiveError\"|\"ReadOnlyError\"|\"VersionError\"|\n * \"OperationError\"|\"NotAllowedError\"} Code\n */\n\nconst codes = {\n IndexSizeError: 1,\n HierarchyRequestError: 3,\n WrongDocumentError: 4,\n InvalidCharacterError: 5,\n NoModificationAllowedError: 7,\n NotFoundError: 8,\n NotSupportedError: 9,\n InUseAttributeError: 10,\n InvalidStateError: 11,\n SyntaxError: 12,\n InvalidModificationError: 13,\n NamespaceError: 14,\n InvalidAccessError: 15,\n TypeMismatchError: 17,\n SecurityError: 18,\n NetworkError: 19,\n AbortError: 20,\n URLMismatchError: 21,\n QuotaExceededError: 22,\n TimeoutError: 23,\n InvalidNodeTypeError: 24,\n DataCloneError: 25,\n\n EncodingError: 0,\n NotReadableError: 0,\n UnknownError: 0,\n ConstraintError: 0,\n DataError: 0,\n TransactionInactiveError: 0,\n ReadOnlyError: 0,\n VersionError: 0,\n OperationError: 0,\n NotAllowedError: 0\n};\n\n/**\n * @typedef {\"INDEX_SIZE_ERR\"|\"DOMSTRING_SIZE_ERR\"|\"HIERARCHY_REQUEST_ERR\"|\n * \"WRONG_DOCUMENT_ERR\"|\"INVALID_CHARACTER_ERR\"|\"NO_DATA_ALLOWED_ERR\"|\n * \"NO_MODIFICATION_ALLOWED_ERR\"|\"NOT_FOUND_ERR\"|\"NOT_SUPPORTED_ERR\"|\n * \"INUSE_ATTRIBUTE_ERR\"|\"INVALID_STATE_ERR\"|\"SYNTAX_ERR\"|\n * \"INVALID_MODIFICATION_ERR\"|\"NAMESPACE_ERR\"|\"INVALID_ACCESS_ERR\"|\n * \"VALIDATION_ERR\"|\"TYPE_MISMATCH_ERR\"|\"SECURITY_ERR\"|\"NETWORK_ERR\"|\n * \"ABORT_ERR\"|\"URL_MISMATCH_ERR\"|\"QUOTA_EXCEEDED_ERR\"|\"TIMEOUT_ERR\"|\n * \"INVALID_NODE_TYPE_ERR\"|\"DATA_CLONE_ERR\"} LegacyCode\n */\n\nconst legacyCodes = {\n INDEX_SIZE_ERR: 1,\n DOMSTRING_SIZE_ERR: 2,\n HIERARCHY_REQUEST_ERR: 3,\n WRONG_DOCUMENT_ERR: 4,\n INVALID_CHARACTER_ERR: 5,\n NO_DATA_ALLOWED_ERR: 6,\n NO_MODIFICATION_ALLOWED_ERR: 7,\n NOT_FOUND_ERR: 8,\n NOT_SUPPORTED_ERR: 9,\n INUSE_ATTRIBUTE_ERR: 10,\n INVALID_STATE_ERR: 11,\n SYNTAX_ERR: 12,\n INVALID_MODIFICATION_ERR: 13,\n NAMESPACE_ERR: 14,\n INVALID_ACCESS_ERR: 15,\n VALIDATION_ERR: 16,\n TYPE_MISMATCH_ERR: 17,\n SECURITY_ERR: 18,\n NETWORK_ERR: 19,\n ABORT_ERR: 20,\n URL_MISMATCH_ERR: 21,\n QUOTA_EXCEEDED_ERR: 22,\n TIMEOUT_ERR: 23,\n INVALID_NODE_TYPE_ERR: 24,\n DATA_CLONE_ERR: 25\n};\n\n/**\n * @typedef {globalThis.DOMException & {\n * _code: number,\n * _name: string|Code|LegacyCode,\n * _message: string\n * }} DOMExceptionFull\n */\n\n/**\n *\n * @returns {typeof DOMException}\n */\nfunction createNonNativeDOMExceptionClass () {\n /**\n * @class\n * @param {string|undefined} message\n * @param {Code|LegacyCode} name\n * @this {DOMExceptionFull}\n * @returns {void}\n */\n function DOMException (message, name) {\n // const err = Error.prototype.constructor.call(this, message); // Any use to this? Won't set this.message\n // @ts-expect-error It's ok\n this[Symbol.toStringTag] = 'DOMException';\n this._code = Object.hasOwn(codes, name)\n ? codes[/** @type {Code} */ (name)]\n : (legacyCodes[/** @type {LegacyCode} */ (name)] || 0);\n this._name = name || 'Error';\n // We avoid `String()` in this next line as it converts Symbols\n this._message = message === undefined ? '' : ('' + message); // eslint-disable-line no-implicit-coercion -- Don't convert symbols\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: this._code\n });\n if (name !== undefined) {\n Object.defineProperty(this, 'name', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: this._name\n });\n }\n if (message !== undefined) {\n Object.defineProperty(this, 'message', {\n configurable: true,\n enumerable: false,\n writable: true,\n value: this._message\n });\n }\n }\n\n // Necessary for W3C tests which complains if `DOMException` has properties on its \"own\" prototype\n\n // class DummyDOMException extends Error {}; // Sometimes causing problems in Node\n /* eslint-disable func-name-matching -- See above */\n /**\n * @class\n */\n const DummyDOMException = function DOMException () { /* */ };\n /* eslint-enable func-name-matching -- See above */\n DummyDOMException.prototype = Object.create(Error.prototype); // Intended for subclassing\n /** @type {const} */ (['name', 'message']).forEach((prop) => {\n Object.defineProperty(DummyDOMException.prototype, prop, {\n enumerable: true,\n /**\n * @this {DOMException}\n * @returns {string}\n */\n get () {\n if (!(this instanceof DOMException ||\n // @ts-ignore Just checking; needed under some TS versions\n this instanceof DummyDOMException ||\n // @ts-ignore Just checking; needed under some TS versions\n this instanceof Error)) {\n throw new TypeError('Illegal invocation');\n }\n const me = /** @type {DOMExceptionFull} */ (/** @type {unknown} */ (this));\n return me[prop === 'name' ? '_name' : '_message'];\n }\n });\n });\n // DOMException uses the same `toString` as `Error`\n Object.defineProperty(DummyDOMException.prototype, 'code', {\n configurable: true,\n enumerable: true,\n get () {\n throw new TypeError('Illegal invocation');\n }\n });\n // @ts-expect-error It's ok\n DOMException.prototype = new DummyDOMException();\n\n DOMException.prototype[Symbol.toStringTag] = 'DOMExceptionPrototype';\n Object.defineProperty(DOMException, 'prototype', {\n writable: false\n });\n\n const keys = Object.keys(codes);\n\n /** @type {(keyof typeof codes)[]} */ (keys).forEach(\n (codeName) => {\n Object.defineProperty(DOMException.prototype, codeName, {\n enumerable: true,\n configurable: false,\n value: codes[codeName]\n });\n Object.defineProperty(DOMException, codeName, {\n enumerable: true,\n configurable: false,\n value: codes[codeName]\n });\n }\n );\n /** @type {(keyof typeof legacyCodes)[]} */ (Object.keys(legacyCodes)).forEach((\n codeName\n ) => {\n Object.defineProperty(DOMException.prototype, codeName, {\n enumerable: true,\n configurable: false,\n value: legacyCodes[codeName]\n });\n Object.defineProperty(DOMException, codeName, {\n enumerable: true,\n configurable: false,\n value: legacyCodes[codeName]\n });\n });\n Object.defineProperty(DOMException.prototype, 'constructor', {\n writable: true,\n configurable: true,\n enumerable: false,\n value: DOMException\n });\n\n // @ts-ignore We don't need all its properties; needed under some TS versions\n return DOMException;\n}\n\nconst ShimNonNativeDOMException = createNonNativeDOMExceptionClass();\n\n/**\n * Creates a generic Error object.\n * @param {string} name\n * @param {string} message\n * @returns {Error}\n */\nfunction createNonNativeDOMException (name, message) {\n // @ts-ignore It's ok; needed under some TS versions\n return new ShimNonNativeDOMException(message, name);\n}\n\n/**\n * @typedef {{\n * message: string\n * }} ErrorLike\n */\n\n/**\n * Logs detailed error information to the console.\n * @param {string} name\n * @param {string} message\n * @param {string|ErrorLike|boolean|null} [error]\n * @returns {void}\n */\nfunction logError (name, message, error) {\n if (!CFG.DEBUG) {\n return;\n }\n\n const msg = error && typeof error === 'object' && error.message\n ? error.message\n : /** @type {string} */ (error);\n\n const method = typeof (console.error) === 'function' ? 'error' : 'log';\n console[method](name + ': ' + message + '. ' + (msg || ''));\n if (console.trace) { console.trace(); }\n}\n\n/**\n * @param {unknown} obj\n * @returns {boolean}\n */\nfunction isErrorOrDOMErrorOrDOMException (obj) {\n // We don't use util.isObj here as mutual dependency causing problems in Babel with browser\n return typeof obj === 'object' && obj !== null &&\n 'name' in obj && typeof obj.name === 'string';\n}\n\n/**\n * Finds the error argument. This is useful because some WebSQL callbacks\n * pass the error as the first argument, and some pass it as the second\n * argument.\n * @param {unknown[]} args\n * @returns {unknown}\n */\nfunction findError (args) {\n let err;\n if (args) {\n if (args.length === 1) {\n return args[0];\n }\n for (const arg of args) {\n if (isErrorOrDOMErrorOrDOMException(arg)) {\n return arg;\n }\n if (typeof arg === 'object' && arg !== null &&\n 'message' in arg && typeof arg.message === 'string') {\n err = arg;\n }\n }\n }\n return err;\n}\n\n/**\n * The `websql-configurable` driver never constructs a real, spec-conformant\n * `SQLError` (with a required numeric `.code`) -- errors it reports are\n * always plain `Error`s from the underlying SQL driver, so `.code` is\n * optional here and, in practice, always `undefined` today (the `case 4`/\n * `case 7` branches below are effectively unreachable pending upstream\n * support for surfacing a real error code).\n * @param {Error & {code?: number|string}} webSQLErr\n * @returns {(DOMException|Error) & {\n * sqlError: Error & {code?: number|string}\n * }|QuotaExceededError}\n */\nfunction webSQLErrback (webSQLErr) {\n let name, message, useQuotaExceededError = false;\n if (webSQLErr.code === 4 || webSQLErr.code === 'SQLITE_FULL') { // SQLError.QUOTA_ERR or better-sqlite3 SQLITE_FULL\n name = 'QuotaExceededError';\n message = 'The operation failed because there was not enough ' +\n 'remaining storage space, or the storage quota was reached ' +\n 'and the user declined to give more space to the database.';\n if (typeof QuotaExceededError !== 'undefined') {\n useQuotaExceededError = true;\n }\n } else {\n switch (webSQLErr.code) {\n /*\n // Should a WebSQL timeout treat as IndexedDB `TransactionInactiveError` or `UnknownError`?\n case 7: { // SQLError.TIMEOUT_ERR\n // All transaction errors abort later, so no need to mark inactive\n name = 'TransactionInactiveError';\n message = 'A request was placed against a transaction which is currently not active, or which is finished (Internal SQL Timeout).';\n break;\n }\n */\n default: {\n name = 'UnknownError';\n message = 'The operation failed for reasons unrelated to the database itself and not covered by any other errors.';\n break;\n }\n }\n }\n message += ' (' + webSQLErr.message + ')--(' + webSQLErr.code + ')';\n\n if (useQuotaExceededError) {\n return new QuotaExceededError(message);\n }\n\n const err =\n /**\n * @type {(Error | DOMException) & {\n * sqlError: Error & {code?: number|string}\n * }}\n */\n (createDOMException(name, message));\n err.sqlError = webSQLErr;\n return err;\n}\n\nlet test, useNativeDOMException = false;\n\n// Test whether we can use the browser's native DOMException class\ntry {\n test = createNativeDOMException('test name', 'test message');\n if (isErrorOrDOMErrorOrDOMException(test) && test.name === 'test name' && test.message === 'test message') {\n // Native DOMException works as expected\n useNativeDOMException = true;\n }\n} catch (err) {}\n\nconst createDOMException = useNativeDOMException\n // eslint-disable-next-line @stylistic/operator-linebreak -- Need JSDoc\n ? /**\n * @param {string} name\n * @param {string} message\n * @param {ErrorLike} [error]\n * @returns {DOMException}\n */\n function (name, message, error) {\n logError(name, message, error);\n return createNativeDOMException(name, message);\n }\n // eslint-disable-next-line @stylistic/operator-linebreak -- Need JSDoc\n : /**\n * @param {string} name\n * @param {string} message\n * @param {ErrorLike} [error]\n * @returns {Error}\n */\n function (name, message, error) {\n logError(name, message, error);\n return createNonNativeDOMException(name, message);\n };\n\nconst ShimDOMException = useNativeDOMException\n ? DOMException\n : ShimNonNativeDOMException;\n\nexport {logError, findError, ShimDOMException, createDOMException, webSQLErrback};\n","import {EventTargetFactory} from 'eventtargeter';\nimport {createDOMException} from './DOMException.js';\nimport * as util from './util.js';\n\nconst listeners = ['onsuccess', 'onerror'];\nconst readonlyProperties = ['source', 'transaction', 'readyState'];\nconst doneFlagGetters = ['result', 'error'];\n\n/**\n * The IDBRequest Object that is returns for all async calls.\n * @see https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#request-api\n * @class\n * @throws {TypeError}\n */\nfunction IDBRequest () {\n throw new TypeError('Illegal constructor');\n}\n\n/**\n * @typedef {IDBRequest & EventTarget & import('eventtargeter').EventTargetInstance & {\n * transaction: import('./IDBTransaction.js').IDBTransactionFull,\n * __done: boolean,\n * __result: unknown,\n * __error: null|DOMException|Error,\n * __source: null|import('./IDBDatabase.js').IDBDatabaseFull|\n * import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull,\n * __transaction: undefined|null|\n * import('./IDBTransaction.js').IDBTransactionFull,\n * addLateEventListener: (ev: string, listener: (e: Event & {\n * __legacyOutputDidListenersThrowError: boolean\n * }) => void) => void\n * addDefaultEventListener: (ev: string, listener: (e: Event & {\n * __legacyOutputDidListenersThrowError: boolean\n * }) => void) => void\n * }} IDBRequestFull\n */\n\n/* eslint-disable func-name-matching -- Polyfill */\n/**\n * @class\n * @this {IDBRequestFull}\n */\nIDBRequest.__super = function IDBRequest () {\n // @ts-ignore It's ok\n this[Symbol.toStringTag] = 'IDBRequest';\n // @ts-ignore Part of `ShimEventTarget`\n this.__setOptions({\n legacyOutputDidListenersThrowFlag: true // Event hook for IndexedB\n });\n doneFlagGetters.forEach((prop) => {\n Object.defineProperties(\n this,\n {\n ['__' + prop]: {\n enumerable: false,\n configurable: false,\n writable: true\n },\n [prop]: {\n enumerable: true,\n configurable: true,\n get () {\n if (!this.__done) {\n throw createDOMException('InvalidStateError', \"Can't get \" + prop + '; the request is still pending.');\n }\n return this['__' + prop];\n }\n }\n }\n );\n });\n util.defineReadonlyProperties(this, readonlyProperties, {\n readyState: {\n /**\n * @returns {\"done\"|\"pending\"}\n */\n get readyState () {\n const me = /** @type {IDBRequestFull} */ (/** @type {unknown} */ (this));\n return me.__done ? 'done' : 'pending';\n }\n }\n });\n util.defineListenerProperties(this, listeners);\n\n this.__result = undefined;\n this.__error = this.__source = this.__transaction = null;\n this.__done = false;\n};\n/* eslint-enable func-name-matching -- Polyfill */\n\n/**\n * @returns {IDBRequestFull}\n */\nIDBRequest.__createInstance = function () {\n // @ts-expect-error Casting this causes other errors\n return new IDBRequest.__super();\n};\n\n// @ts-expect-error It's ok\nIDBRequest.prototype = EventTargetFactory.createInstance({extraProperties: ['debug']});\nIDBRequest.prototype[Symbol.toStringTag] = 'IDBRequestPrototype';\n\n/**\n * @this {IDBRequestFull}\n * @returns {import('./IDBTransaction.js').IDBTransactionFull|null|undefined}\n */\nIDBRequest.prototype.__getParent = function () {\n if (this.toString() === '[object IDBOpenDBRequest]') {\n return null;\n }\n return this.__transaction;\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\n// Illegal invocations\nutil.defineReadonlyOuterInterface(IDBRequest.prototype, readonlyProperties);\nutil.defineReadonlyOuterInterface(IDBRequest.prototype, doneFlagGetters);\n\nutil.defineOuterInterface(IDBRequest.prototype, listeners);\n\nObject.defineProperty(IDBRequest.prototype, 'constructor', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: IDBRequest\n});\nIDBRequest.__super.prototype = IDBRequest.prototype;\n\nObject.defineProperty(IDBRequest, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nconst openListeners = ['onblocked', 'onupgradeneeded'];\n\n/**\n * @typedef {IDBRequestFull & IDBOpenDBRequest} IDBOpenDBRequestFull\n */\n\n/**\n * The IDBOpenDBRequest called when a database is opened.\n * @class\n * @throws {TypeError}\n */\nfunction IDBOpenDBRequest () {\n throw new TypeError('Illegal constructor');\n}\n\n// @ts-expect-error It's ok\nIDBOpenDBRequest.prototype = Object.create(IDBRequest.prototype);\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nObject.defineProperty(IDBOpenDBRequest.prototype, 'constructor', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: IDBOpenDBRequest\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nconst IDBOpenDBRequestAlias = IDBOpenDBRequest;\n/**\n * @returns {IDBRequestFull & IDBOpenDBRequest}\n */\nIDBOpenDBRequest.__createInstance = function () {\n /**\n * @class\n * @this {IDBOpenDBRequestFull}\n */\n function IDBOpenDBRequest () {\n IDBRequest.__super.call(this);\n\n // @ts-ignore It's ok\n this[Symbol.toStringTag] = 'IDBOpenDBRequest';\n // @ts-ignore It's ok\n this.__setOptions({\n legacyOutputDidListenersThrowFlag: true, // Event hook for IndexedB\n extraProperties: ['oldVersion', 'newVersion', 'debug']\n }); // Ensure EventTarget preserves our properties\n util.defineListenerProperties(this, openListeners);\n }\n IDBOpenDBRequest.prototype = IDBOpenDBRequestAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBOpenDBRequest();\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.defineOuterInterface(IDBOpenDBRequest.prototype, openListeners);\n\nIDBOpenDBRequest.prototype[Symbol.toStringTag] = 'IDBOpenDBRequestPrototype';\n\nObject.defineProperty(IDBOpenDBRequest, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nexport {IDBRequest, IDBOpenDBRequest};\n","/* eslint-disable promise/prefer-await-to-callbacks -- Needed for API */\n/* eslint-disable promise/catch-or-return, n/callback-return,\n promise/always-return -- Not needed */\n// Since [immediate](https://github.com/calvinmetcalf/immediate) is\n// not doing the trick for our WebSQL transactions (at least in Node),\n// we are forced to make the promises run fully synchronously.\n\n/* eslint-disable jsdoc/reject-any-type -- Truly arbitrary */\n/**\n * @typedef {any} ArbitraryValue\n */\n/* eslint-enable jsdoc/reject-any-type -- Truly arbitrary */\n\n/**\n * @callback Resolve\n * @param {ArbitraryValue} val\n * @returns {void}\n */\n/**\n * @callback Reject\n * @param {ArbitraryValue} reason\n * @returns {void}\n */\n/**\n * @callback Settle\n * @returns {void}\n */\n\n/**\n * @callback ResolveReject\n * @param {Resolve} resolve\n * @param {Reject} reject\n * @returns {void}\n */\n\n/**\n * @callback OnFulfilled\n * @param {ArbitraryValue} resolve\n * @returns {void}\n */\n\n/**\n * @typedef {[(Settle|Resolve)[], (Settle|Reject)[]]} Callbacks\n */\n\n/**\n *\n * @param {PromiseLike<ArbitraryValue>} p\n * @returns {boolean}\n */\nfunction isPromise (p) {\n return p && typeof p.then === 'function';\n}\n/**\n *\n * @param {PromiseLike<ArbitraryValue>} prom\n * @param {(err: Error) => void} reject\n * @returns {void}\n */\nfunction addReject (prom, reject) {\n // Use this style for sake of non-Promise thenables (e.g., jQuery Deferred)\n prom.then(null, reject);\n}\n\n// States\nconst PENDING = 2,\n FULFILLED = 0, // We later abuse these as array indices\n REJECTED = 1;\n\n/**\n *\n */\nclass SyncPromise {\n /**\n * @param {unknown[]|[]} promises\n * @returns {SyncPromise}\n */\n static all (promises) {\n return new SyncPromise(\n /** @type {ResolveReject} */\n (resolve, reject) => {\n let l = promises.length;\n /** @type {ArbitraryValue[]} */\n const newPromises = [];\n if (!l) {\n resolve(newPromises);\n return;\n }\n promises.forEach((p, i) => {\n if (isPromise(/** @type {PromiseLike<ArbitraryValue>} */ (p))) {\n addReject(/** @type {PromiseLike<ArbitraryValue>} */ (p).then(\n /** @type {OnFulfilled} */\n (res) => {\n newPromises[i] = res;\n --l;\n if (!l) {\n resolve(newPromises);\n }\n }\n ), reject);\n } else {\n newPromises[i] = p;\n --l;\n if (!l) {\n resolve(promises);\n }\n }\n });\n }\n );\n }\n\n /**\n * @param {unknown[]|[]} promises\n * @returns {SyncPromise}\n */\n static race (promises) {\n let resolved = false;\n return new SyncPromise(\n /** @type {ResolveReject} */\n (resolve, reject) => {\n // eslint-disable-next-line @stylistic/max-len -- Long\n // eslint-disable-next-line unicorn/no-unused-array-method-return -- Shortcuts\n promises.some((p) => {\n if (isPromise(/** @type {PromiseLike<ArbitraryValue>} */ (p))) {\n addReject(/** @type {PromiseLike<ArbitraryValue>} */ (p).then(\n /** @type {OnFulfilled} */\n (res) => {\n if (resolved) {\n return;\n }\n resolve(res);\n resolved = true;\n }\n ), reject);\n return false;\n }\n resolve(p);\n resolved = true;\n return true;\n });\n }\n );\n }\n\n /**\n * @param {ArbitraryValue} val\n * @returns {SyncPromise}\n */\n static resolve (val) {\n return new SyncPromise(\n /** @type {ResolveReject} */\n (resolve) => {\n resolve(val);\n }\n );\n }\n\n /**\n * @param {ArbitraryValue} val\n * @returns {SyncPromise}\n */\n static reject (val) {\n return new SyncPromise(\n /** @type {ResolveReject} */\n (resolve, reject) => {\n reject(val);\n }\n );\n }\n\n // Value, this will be set to either a resolved value or rejected reason\n v = 0;\n\n /**\n * @param {(\n * resolve: (value: ArbitraryValue | PromiseLike<ArbitraryValue>) => void,\n * reject: (reason?: ArbitraryValue) => void\n * ) => void} fn\n */\n constructor (fn) {\n // State of the promise\n this.s = PENDING;\n // Callbacks c[0] is fulfillment and c[1] contains rejection callbacks\n /** @type {Callbacks|null} */\n this.c = [[], []];\n /**\n *\n * @param {ArbitraryValue} val\n * @param {0|1} state\n * @returns {void}\n */\n const transist = (val, state) => {\n this.v = val;\n this.s = state;\n\n // console.log('state', state);\n /** @type {Callbacks} */ (\n this.c\n )[state].forEach((func) => {\n func(val);\n });\n // Release memory, but if no handlers have been added, as we\n // assume that we will resolve/reject (truly) synchronously\n // and thus we avoid flagging checks about whether we've\n // already resolved/rejected.\n if (/** @type {Callbacks} */(this.c)[state].length) {\n this.c = null;\n }\n };\n\n /** @type {Resolve} */\n const resolve = (val) => {\n if (!this.c) {\n // Already resolved (or will be resolved), do nothing.\n } else if (isPromise(val)) {\n addReject(val.then(resolve), reject);\n } else {\n transist(val, FULFILLED);\n }\n };\n\n /** @type {Reject} */\n const reject = (reason) => {\n if (!this.c) {\n // Already resolved (or will be resolved), do nothing.\n } else if (isPromise(reason)) {\n addReject(reason.then(reject), reject);\n } else {\n transist(reason, REJECTED);\n }\n };\n\n try {\n fn(resolve, reject);\n } catch (err) {\n reject(err);\n }\n }\n\n /* eslint-disable unicorn/no-thenable -- Promise API */\n /**\n * @param {((value: ArbitraryValue) => ArbitraryValue)|null|undefined} [cb]\n * @param {(reason: ArbitraryValue) => PromiseLike<never>} [errBack]\n * @returns {SyncPromise}\n */\n then (cb, errBack) {\n /* eslint-enable unicorn/no-thenable -- Promise API */\n return new SyncPromise(\n /** @type {ResolveReject} */\n (resolve, reject) => {\n const rej = typeof errBack === 'function' ? errBack : reject;\n\n /** @type {Settle} */\n const settle = () => {\n try {\n resolve(cb ? cb(this.v) : this.v);\n } catch (e) {\n rej(e);\n }\n };\n if (this.s === FULFILLED) {\n settle();\n } else if (this.s === REJECTED) {\n rej(this.v);\n } else {\n /** @type {Callbacks} */ (this.c)[FULFILLED].push(settle);\n /** @type {Callbacks} */ (this.c)[REJECTED].push(rej);\n }\n }\n );\n }\n\n /**\n * @param {(reason: ArbitraryValue) => PromiseLike<never>|null|undefined} cb\n * @returns {SyncPromise}\n */\n catch (cb) {\n return new SyncPromise(\n /** @type {ResolveReject} */\n (resolve, reject) => {\n /**\n * @returns {void}\n */\n const settle = () => {\n try {\n resolve(cb(this.v));\n } catch (e) {\n reject(e);\n }\n };\n\n if (this.s === REJECTED) {\n settle();\n } else if (this.s === FULFILLED) {\n resolve(this.v);\n } else {\n /** @type {Callbacks} */ (this.c)[REJECTED].push(settle);\n /** @type {Callbacks} */ (this.c)[FULFILLED].push(resolve);\n }\n }\n );\n }\n}\n\nexport default SyncPromise;\n","import CFG from './CFG.js';\nimport {encode as keyEncode, decode as keyDecode} from './Key.js';\n\n/**\n * Compares two keys.\n * @param {import('./Key.js').Key|null|undefined} first\n * @param {import('./Key.js').Key|null|undefined} second\n * @returns {0|1|-1}\n */\nfunction cmp (first, second) {\n const encodedKey1 = /** @type {string} */ (keyEncode(first));\n const encodedKey2 = /** @type {string} */ (keyEncode(second));\n const result = encodedKey1 > encodedKey2\n ? 1\n : encodedKey1 === encodedKey2 ? 0 : -1;\n\n if (CFG.DEBUG) {\n // verify that the keys encoded correctly\n let decodedKey1 = keyDecode(encodedKey1);\n let decodedKey2 = keyDecode(encodedKey2);\n if (typeof first === 'object') {\n first = JSON.stringify(first);\n decodedKey1 = JSON.stringify(decodedKey1);\n }\n if (typeof second === 'object') {\n second = JSON.stringify(second);\n decodedKey2 = JSON.stringify(decodedKey2);\n }\n\n // Encoding/decoding mismatches are usually due to a loss of\n // floating-point precision\n if (decodedKey1 !== first) {\n console.warn(\n first + ' was incorrectly encoded as ' + decodedKey1\n );\n }\n if (decodedKey2 !== second) {\n console.warn(\n second + ' was incorrectly encoded as ' + decodedKey2\n );\n }\n }\n\n return result;\n}\n\nexport default cmp;\n","/**\n * @param {unknown[]} arr\n * @param {number} index\n * @param {unknown} val\n * @returns {void}\n */\nconst setArrayValue = (arr, index, val) => {\n if (Reflect.has(Array.prototype, index)) {\n Object.defineProperty(arr, index, {value: val, enumerable: true, writable: true, configurable: true});\n } else {\n arr[index] = val;\n }\n};\n/**\n * @param {unknown[]} arr\n * @param {unknown} val\n * @returns {void}\n */\nconst safePush = (arr, val) => setArrayValue(arr, arr.length, val);\nimport {createDOMException} from './DOMException.js';\nimport * as util from './util.js';\nimport cmp from './cmp.js';\nimport CFG from './CFG.js';\n\n/**\n * @typedef {NodeJS.TypedArray|DataView} ArrayBufferView\n */\n\n/**\n * @typedef {ArrayBufferView|ArrayBuffer} BufferSource\n */\n\n/**\n * @typedef {\"number\"|\"date\"|\"string\"|\"binary\"|\"array\"} KeyType\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLTransaction.js').default} WebSQLTransaction\n */\n\n/**\n * @typedef {unknown} Value\n */\n\n/**\n * @typedef {IDBValidKey} Key\n */\n\n/**\n * @typedef {KeyPath[]} KeyPathArray\n */\n/**\n * @typedef {string|KeyPathArray} KeyPath\n */\n\n/**\n * @typedef {object} KeyValueObject\n * @property {KeyType|\"NaN\"|\"null\"|\"undefined\"|\"boolean\"|\"object\"|\"symbol\"|\n * \"function\"|\"bigint\"} type If not `KeyType`, indicates invalid value\n * @property {Value} [value]\n * @property {boolean} [invalid]\n * @property {string} [message]\n * @todo Specify acceptable `value` more precisely\n */\n\n/**\n * @typedef {number|string|Date|ArrayBuffer} ValueTypePrimitive\n */\n/**\n * @typedef {ValueType[]} ValueTypeArray\n */\n/**\n * @typedef {ValueTypePrimitive|ValueTypeArray} ValueType\n */\n\n/**\n * Encodes the keys based on their types. This is required to maintain collations\n * We leave space for future keys.\n * @type {{[key: string]: Integer|string}}\n */\nconst keyTypeToEncodedChar = {\n invalid: 100,\n number: 200,\n date: 300,\n string: 400,\n binary: 500,\n array: 600\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nconst keyTypes = /** @type {(KeyType|\"invalid\")[]} */ (Object.keys(keyTypeToEncodedChar));\nkeyTypes.forEach((k) => {\n keyTypeToEncodedChar[k] = String.fromCodePoint(\n /** @type {number} */ (keyTypeToEncodedChar[k])\n );\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nconst encodedCharToKeyType = keyTypes.reduce((o, k) => {\n o[keyTypeToEncodedChar[k]] = k;\n return o;\n}, /** @type {{[key: string]: KeyType|\"invalid\"}} */ ({}));\n\n/**\n * The sign values for numbers, ordered from least to greatest.\n * - \"negativeInfinity\": Sorts below all other values.\n * - \"bigNegative\": Negative values less than or equal to negative one.\n * - \"smallNegative\": Negative values between negative one and zero, noninclusive.\n * - \"smallPositive\": Positive values between zero and one, including zero but not one.\n * - \"largePositive\": Positive values greater than or equal to one.\n * - \"positiveInfinity\": Sorts above all other values.\n */\nconst signValues = ['negativeInfinity', 'bigNegative', 'smallNegative', 'smallPositive', 'bigPositive', 'positiveInfinity'];\n\n/**\n * @type {{\n * [key: string]: {\n * encode(param: unknown, inArray?: boolean): string,\n * decode(param: string, inArray?: boolean): ValueType|undefined\n * }\n * }}\n */\nconst types = {\n invalid: {\n /**\n * @returns {string}\n */\n encode () {\n return keyTypeToEncodedChar.invalid + '-';\n },\n /**\n * @returns {undefined}\n */\n decode () {\n return undefined;\n }\n },\n\n // Numbers are represented in a lexically sortable base-32 sign-exponent-mantissa\n // notation.\n //\n // sign: takes a value between zero and five, inclusive. Represents infinite cases\n // and the signs of both the exponent and the fractional part of the number.\n // exponent: padded to two base-32 digits, represented by the 32's compliment in the\n // \"smallPositive\" and \"bigNegative\" cases to ensure proper lexical sorting.\n // mantissa: also called the fractional part. Normed 11-digit base-32 representation.\n // Represented by the 32's compliment in the \"smallNegative\" and \"bigNegative\"\n // cases to ensure proper lexical sorting.\n number: {\n // The encode step checks for six numeric cases and generates 14-digit encoded\n // sign-exponent-mantissa strings.\n /**\n * @param {number} key\n * @returns {string}\n */\n encode (key) {\n let key32 = key === Number.MIN_VALUE\n // Mocha test `IDBFactory/cmp-spec.js` exposed problem for some\n // Node (and Chrome) versions with `Number.MIN_VALUE` being treated\n // as 0\n // https://stackoverflow.com/questions/43305403/number-min-value-and-tostring\n ? '0.' + '0'.repeat(214) + '2'\n : Math.abs(key).toString(32);\n // Get the index of the decimal.\n const decimalIndex = key32.indexOf('.');\n // Remove the decimal.\n key32 = (decimalIndex !== -1) ? key32.replace('.', '') : key32;\n // Get the index of the first significant digit.\n const significantDigitIndex = key32.search(/[^0]/u);\n // Truncate leading zeros.\n key32 = key32.slice(significantDigitIndex);\n let sign, exponent, mantissa;\n\n // Finite cases:\n if (Number.isFinite(\n Number(key)\n )) {\n // Negative cases:\n if (key < 0) {\n // Negative exponent case:\n if (key > -1) {\n sign = signValues.indexOf('smallNegative');\n exponent = padBase32Exponent(significantDigitIndex);\n // Non-negative exponent case:\n } else {\n sign = signValues.indexOf('bigNegative');\n exponent = flipBase32(padBase32Exponent(\n (decimalIndex !== -1) ? decimalIndex : key32.length\n ));\n }\n mantissa = flipBase32(padBase32Mantissa(key32));\n // Non-negative cases:\n // Negative exponent case:\n } else if (key < 1) {\n sign = signValues.indexOf('smallPositive');\n exponent = flipBase32(padBase32Exponent(significantDigitIndex));\n mantissa = padBase32Mantissa(key32);\n // Non-negative exponent case:\n } else {\n sign = signValues.indexOf('bigPositive');\n exponent = padBase32Exponent(\n (decimalIndex !== -1) ? decimalIndex : key32.length\n );\n mantissa = padBase32Mantissa(key32);\n }\n // Infinite cases:\n } else {\n exponent = zeros(2);\n mantissa = zeros(11);\n sign = signValues.indexOf(\n key > 0 ? 'positiveInfinity' : 'negativeInfinity'\n );\n }\n\n return keyTypeToEncodedChar.number + '-' + sign + exponent + mantissa;\n },\n // The decode step must interpret the sign, reflip values encoded as the 32's complements,\n // apply signs to the exponent and mantissa, do the base-32 power operation, and return\n // the original JavaScript number values.\n /**\n * @param {string} key\n * @returns {number}\n */\n decode (key) {\n const sign = Number(key.slice(2, 3));\n let exponent = key.slice(3, 5);\n let mantissa = key.slice(5, 16);\n\n switch (signValues[sign]) {\n case 'negativeInfinity':\n return -Infinity;\n case 'positiveInfinity':\n return Infinity;\n case 'bigPositive':\n return pow32(mantissa, exponent);\n case 'smallPositive':\n exponent = negate(flipBase32(exponent));\n return pow32(mantissa, exponent);\n case 'smallNegative':\n exponent = negate(exponent);\n mantissa = flipBase32(mantissa);\n return -pow32(mantissa, exponent);\n case 'bigNegative':\n exponent = flipBase32(exponent);\n mantissa = flipBase32(mantissa);\n return -pow32(mantissa, exponent);\n default:\n throw new Error('Invalid number.');\n }\n }\n },\n\n // Strings are encoded as JSON strings (with quotes and unicode characters escaped).\n //\n // If the strings are in an array, then some extra encoding is done to make sorting work correctly:\n // Since we can't force all strings to be the same length, we need to ensure that characters line-up properly\n // for sorting, while also accounting for the extra characters that are added when the array itself is encoded as JSON.\n // To do this, each character of the string is prepended with a dash (\"-\"), and a space is added to the end of the string.\n // This effectively doubles the size of every string, but it ensures that when two arrays of strings are compared,\n // the indexes of each string's characters line up with each other.\n string: {\n /**\n * @param {string} key\n * @param {boolean} [inArray]\n * @returns {string}\n */\n encode (key, inArray) {\n if (inArray) {\n // prepend each character with a dash, and append a space to the end\n key = key.replaceAll(/(.)/gu, '-$1') + ' ';\n }\n return keyTypeToEncodedChar.string + '-' + key;\n },\n /**\n * @param {string} key\n * @param {boolean} [inArray]\n * @returns {string}\n */\n decode (key, inArray) {\n key = key.slice(2);\n if (inArray) {\n // remove the space at the end, and the dash before each character\n key = key.slice(0, -1).replaceAll(/-(.)/gu, '$1');\n }\n return key;\n }\n },\n\n // Arrays are encoded as JSON strings.\n // An extra, value is added to each array during encoding to make\n // empty arrays sort correctly.\n array: {\n /**\n * @param {ValueTypeArray} key\n * @returns {string}\n */\n encode (key) {\n /** @type {(string|null)[]} */\n const encoded = [];\n for (const [i, item] of key.entries()) {\n const encodedItem = encode(item, true); // encode the array item\n setArrayValue(encoded, i, encodedItem);\n }\n safePush(encoded, keyTypeToEncodedChar.invalid + '-'); // append an extra item, so empty arrays sort correctly\n let encodedKey = JSON.stringify(encoded);\n if (CFG.escapeNULForSQLiteStatements === false) {\n encodedKey = encodedKey.replaceAll(String.raw`\\u0000`, '\\0');\n }\n return keyTypeToEncodedChar.array + '-' + encodedKey;\n },\n /**\n * @param {string} key\n * @returns {ValueTypeArray}\n */\n decode (key) {\n let decodedKey = key.slice(2);\n if (CFG.escapeNULForSQLiteStatements === false) {\n decodedKey = decodedKey.replaceAll('\\0', String.raw`\\u0000`);\n }\n const decoded = JSON.parse(decodedKey);\n decoded.pop(); // remove the extra item\n for (let i = 0; i < decoded.length; i++) {\n const item = decoded[i];\n const decodedItem = decode(item, true); // decode the item\n setArrayValue(decoded, i, decodedItem);\n }\n return decoded;\n }\n },\n\n // Dates are encoded as ISO 8601 strings, in UTC time zone.\n date: {\n /**\n * @param {Date} key\n * @returns {string}\n */\n encode (key) {\n return keyTypeToEncodedChar.date + '-' + key.toJSON();\n },\n /**\n * @param {string} key\n * @returns {Date}\n */\n decode (key) {\n return new Date(key.slice(2));\n }\n },\n binary: {\n // `ArrayBuffer`/Views on buffers (`TypedArray` or `DataView`)\n /**\n * @param {BufferSource} key\n * @returns {string}\n */\n encode (key) {\n return keyTypeToEncodedChar.binary + '-' + (key.byteLength\n ? [...getCopyBytesHeldByBufferSource(key)].map(\n (b) => String(b).padStart(3, '0')\n ) // e.g., '255,005,254,000,001,033'\n : '');\n },\n /**\n * @param {string} key\n * @returns {ArrayBuffer}\n */\n decode (key) {\n // Set the entries in buffer's [[ArrayBufferData]] to those in `value`\n const k = key.slice(2);\n const arr = k.length ? k.split(',').map(Number) : [];\n const buffer = new ArrayBuffer(arr.length);\n const uint8 = new Uint8Array(buffer);\n uint8.set(arr);\n return buffer;\n }\n }\n};\n\n/**\n * Return a padded base-32 exponent value.\n * @param {number} n\n * @returns {string}\n */\nfunction padBase32Exponent (n) {\n const exp = n.toString(32);\n return (exp.length === 1) ? '0' + exp : exp;\n}\n\n/**\n * Return a padded base-32 mantissa.\n * @param {string} s\n * @returns {string}\n */\nfunction padBase32Mantissa (s) {\n return (s + zeros(11)).slice(0, 11);\n}\n\n/**\n * Flips each digit of a base-32 encoded string.\n * @param {string} encoded\n * @returns {string}\n */\nfunction flipBase32 (encoded) {\n let flipped = '';\n for (const ch of encoded) {\n flipped += (31 - Number.parseInt(ch, 32)).toString(32);\n }\n return flipped;\n}\n\n/**\n * Base-32 power function.\n * RESEARCH: This function does not precisely decode floats because it performs\n * floating point arithmetic to recover values. But can the original values be\n * recovered exactly?\n * Someone may have already figured out a good way to store JavaScript floats as\n * binary strings and convert back. Barring a better method, however, one route\n * may be to generate decimal strings that `parseFloat` decodes predictably.\n * @param {string} mantissa\n * @param {string} exponent\n * @returns {number}\n */\nfunction pow32 (mantissa, exponent) {\n const exp = Number.parseInt(exponent, 32);\n if (exp < 0) {\n return roundToPrecision(\n Number.parseInt(mantissa, 32) * (32 ** (exp - 10))\n );\n }\n if (exp < 11) {\n const whole = mantissa.slice(0, exp);\n const wholeNum = Number.parseInt(whole, 32);\n const fraction = mantissa.slice(exp);\n const fractionNum = Number.parseInt(fraction, 32) * (32 ** (exp - 11));\n return roundToPrecision(wholeNum + fractionNum);\n }\n const expansion = mantissa + zeros(exp - 11);\n return Number.parseInt(expansion, 32);\n}\n\n/**\n * @typedef {number} Float\n */\n\n/**\n * @param {Float} num\n * @param {Float} [precision]\n * @returns {Float}\n */\nfunction roundToPrecision (num, precision = 16) {\n return Number(num.toPrecision(precision));\n}\n\n/**\n * Returns a string of n zeros.\n * @param {number} n\n * @returns {string}\n */\nfunction zeros (n) {\n return '0'.repeat(n);\n}\n\n/**\n * Negates numeric strings.\n * @param {string} s\n * @returns {string}\n */\nfunction negate (s) {\n return '-' + s;\n}\n\n/**\n * @param {Value} key\n * @returns {KeyType|\"invalid\"}\n */\nfunction getKeyType (key) {\n if (Array.isArray(key)) { return 'array'; }\n if (util.isDate(key)) { return 'date'; }\n if (util.isBinary(key)) { return 'binary'; }\n const keyType = typeof key;\n return ['string', 'number'].includes(keyType)\n ? /** @type {\"string\"|\"number\"} */ (keyType)\n : 'invalid';\n}\n\n/**\n * Keys must be strings, numbers (besides `NaN`), Dates (if value is not\n * `NaN`), binary objects or Arrays.\n * @param {Value} input The key input\n * @param {Value[]|null|undefined} [seen] An array of already seen keys\n * @returns {KeyValueObject}\n */\nfunction convertValueToKey (input, seen) {\n return convertValueToKeyValueDecoded(input, seen, false, true);\n}\n\n/**\n * Currently not in use.\n * @param {Value} input\n * @returns {KeyValueObject}\n */\nfunction convertValueToMultiEntryKey (input) {\n return convertValueToKeyValueDecoded(input, null, true, true);\n}\n\n/**\n *\n * @param {BufferSource} O\n * @throws {TypeError}\n * @see https://heycam.github.io/webidl/#ref-for-dfn-get-buffer-source-copy-2\n * @returns {Uint8Array}\n */\nfunction getCopyBytesHeldByBufferSource (O) {\n let offset = 0;\n let length;\n if (ArrayBuffer.isView(O)) { // Has [[ViewedArrayBuffer]] internal slot\n const arrayBuffer = O.buffer;\n if (arrayBuffer === undefined) {\n throw new TypeError(\n 'Could not copy the bytes held by a buffer source as the buffer was undefined.'\n );\n }\n offset = O.byteOffset; // [[ByteOffset]] (will also throw as desired if detached)\n length = O.byteLength; // [[ByteLength]] (will also throw as desired if detached)\n } else {\n length = O.byteLength; // [[ArrayBufferByteLength]] on ArrayBuffer (will also throw as desired if detached)\n }\n // const octets = new Uint8Array(input);\n // const octets = types.binary.decode(types.binary.encode(input));\n return new Uint8Array(\n // Should allow DataView\n /** @type {ArrayBuffer} */\n (('buffer' in O && O.buffer) || O),\n offset,\n length\n );\n}\n\n/**\n * Shortcut utility to avoid returning full keys from `convertValueToKey`\n * and subsequent need to process in calling code unless `fullKeys` is\n * set; may throw.\n * @param {Value} input\n * @param {Value[]|null} [seen]\n * @param {boolean} [multiEntry]\n * @param {boolean} [fullKeys]\n * @throws {TypeError} See `getCopyBytesHeldByBufferSource`\n * @todo Document other allowable `input`\n * @returns {KeyValueObject}\n */\nfunction convertValueToKeyValueDecoded (input, seen, multiEntry, fullKeys) {\n seen ||= [];\n if (seen.includes(input)) {\n return {\n type: 'array',\n invalid: true,\n message: 'An array key cannot be circular'\n };\n }\n const type = getKeyType(input);\n const ret = {type, value: input};\n switch (type) {\n case 'number': {\n if (Number.isNaN(input)) {\n // List as 'NaN' type for convenience of consumers in reporting errors\n return {type: 'NaN', invalid: true};\n }\n\n // https://github.com/w3c/IndexedDB/issues/375\n // https://github.com/w3c/IndexedDB/pull/386\n if (Object.is(input, -0)) {\n return {type, value: 0};\n }\n return /** @type {{type: KeyType; value: Value}} */ (ret);\n } case 'string': {\n return /** @type {{type: KeyType; value: Value}} */ (ret);\n } case 'binary': {\n // Get a copy of the bytes held by the buffer source\n // https://heycam.github.io/webidl/#ref-for-dfn-get-buffer-source-copy-2\n // A detached buffer/view can't be read -- the engine itself throws\n // (e.g. \"Cannot perform Construct on a detached ArrayBuffer\")\n // rather than us being able to detect this up front, so treat any\n // such failure the same as any other invalid key rather than\n // letting that native error escape uncaught.\n let octets;\n try {\n octets = getCopyBytesHeldByBufferSource(\n /** @type {BufferSource} */ (input)\n );\n } catch {\n return {type, invalid: true, message: 'Could not read the buffer source (it may be detached)'};\n }\n return {type: 'binary', value: octets};\n } case 'array': { // May throw (from binary)\n const arr = /** @type {unknown[]} */ (input);\n const len = arr.length;\n safePush(seen, input);\n\n /** @type {(KeyValueObject|Value)[]} */\n const keys = [];\n for (let i = 0; i < len; i++) { // We cannot iterate here with array extras as we must ensure sparse arrays are invalidated\n if (!multiEntry && !Object.hasOwn(arr, i)) {\n return {type, invalid: true, message: 'Does not have own index property'};\n }\n try {\n const entry = arr[i];\n const key = convertValueToKeyValueDecoded(entry, seen, false, fullKeys); // Though steps do not list rethrowing, the next is returnifabrupt when not multiEntry\n if (key.invalid) {\n if (multiEntry) {\n continue;\n }\n return {type, invalid: true, message: 'Bad array entry value-to-key conversion'};\n }\n if (!multiEntry ||\n (!fullKeys && keys.every((k) => cmp(\n /** @type {Key} */ (k), /** @type {Key} */ (key.value)\n ) !== 0)) ||\n (fullKeys && keys.every((k) => cmp(\n /** @type {Key} */ (k), /** @type {Key} */ (/** @type {unknown} */ (key))\n ) !== 0))\n ) {\n safePush(keys, fullKeys ? key : key.value);\n }\n } catch (err) {\n if (!multiEntry) {\n throw err;\n }\n }\n }\n return {type, value: keys};\n } case 'date': {\n const date = /** @type {Date} */ (input);\n if (!Number.isNaN(date.getTime())) {\n return fullKeys\n ? {type, value: date.getTime()}\n : {type, value: new Date(date)};\n }\n return {type, invalid: true, message: 'Not a valid date'};\n // Falls through\n } case 'invalid': default: {\n // Other `typeof` types which are not valid keys:\n // 'undefined', 'boolean', 'object' (including `null`), 'symbol', 'function'\n const type = input === null ? 'null' : typeof input; // Convert `null` for convenience of consumers in reporting errors\n return {type, invalid: true, message: 'Not a valid key; type ' + type};\n }\n }\n}\n\n/**\n *\n * @param {Value} key\n * @param {boolean} [fullKeys]\n * @returns {KeyValueObject}\n * @todo Document other allowable `key`?\n */\nfunction convertValueToMultiEntryKeyDecoded (key, fullKeys) {\n return convertValueToKeyValueDecoded(key, null, true, fullKeys);\n}\n\n/**\n * An internal utility.\n * @param {Value} input\n * @param {Value[]|null|undefined} [seen]\n * @throws {DOMException} `DataError`\n * @returns {KeyValueObject}\n */\nfunction convertValueToKeyRethrowingAndIfInvalid (input, seen) {\n const key = convertValueToKey(input, seen);\n if (key.invalid) {\n throw createDOMException('DataError', key.message || 'Not a valid key; type: ' + key.type);\n }\n return key;\n}\n\n/**\n *\n * @param {Value} value\n * @param {KeyPath} keyPath\n * @param {boolean} multiEntry\n * @returns {KeyValueObject|KeyPathEvaluateValue}\n * @todo Document other possible return?\n */\nfunction extractKeyFromValueUsingKeyPath (value, keyPath, multiEntry) {\n return extractKeyValueDecodedFromValueUsingKeyPath(value, keyPath, multiEntry, true);\n}\n/**\n * Not currently in use.\n * @param {Value} value\n * @param {KeyPath} keyPath\n * @param {boolean} multiEntry\n * @returns {KeyPathEvaluateValue}\n */\nfunction evaluateKeyPathOnValue (value, keyPath, multiEntry) {\n return evaluateKeyPathOnValueToDecodedValue(value, keyPath, multiEntry, true);\n}\n\n/**\n * May throw, return `{failure: true}` (e.g., non-object on keyPath resolution)\n * or `{invalid: true}` (e.g., `NaN`).\n * @param {Value} value\n * @param {KeyPath} keyPath\n * @param {boolean} [multiEntry]\n * @param {boolean} [fullKeys]\n * @returns {KeyValueObject|KeyPathEvaluateValue}\n * @todo Document other possible return?\n */\nfunction extractKeyValueDecodedFromValueUsingKeyPath (value, keyPath, multiEntry, fullKeys) {\n const r = evaluateKeyPathOnValueToDecodedValue(value, keyPath, multiEntry, fullKeys);\n if (r.failure) {\n return r;\n }\n if (!multiEntry) {\n return convertValueToKeyValueDecoded(r.value, null, false, fullKeys);\n }\n return convertValueToMultiEntryKeyDecoded(r.value, fullKeys);\n}\n\n/**\n * Unused?\n * @typedef {object} KeyPathEvaluateFailure\n * @property {boolean} failure\n */\n\n/**\n * @typedef {KeyPathEvaluateValueValue[]} KeyPathEvaluateValueValueArray\n */\n\n/**\n * @typedef {undefined|number|string|Date|object|KeyPathEvaluateValueValueArray} KeyPathEvaluateValueValue\n */\n\n/**\n * @typedef {object} KeyPathEvaluateValue\n * @property {KeyPathEvaluateValueValue} [value]\n * @property {boolean} [failure]\n */\n\n/**\n * Returns the value of an inline key based on a key path (wrapped in an\n * object with key `value`) or `{failure: true}`\n * @param {Value} value\n * @param {KeyPath} keyPath\n * @param {boolean} [multiEntry]\n * @param {boolean} [fullKeys]\n * @returns {KeyPathEvaluateValue}\n */\nfunction evaluateKeyPathOnValueToDecodedValue (value, keyPath, multiEntry, fullKeys) {\n if (Array.isArray(keyPath)) {\n /** @type {KeyPathEvaluateValueValueArray} */\n const result = [];\n return keyPath.some((item) => {\n const key = evaluateKeyPathOnValueToDecodedValue(value, item, multiEntry, fullKeys);\n if (key.failure) {\n return true;\n }\n safePush(result, key.value);\n return false;\n })\n ? {failure: true}\n : {value: result};\n }\n if (keyPath === '') {\n return {value: /** @type {KeyPathEvaluateValueValue} */ (value)};\n }\n const identifiers = keyPath.split('.');\n return identifiers.some((idntfr) => {\n if (idntfr === 'length' && (\n typeof value === 'string' || Array.isArray(value)\n )) {\n value = value.length;\n } else if (util.isBlob(value)) {\n switch (idntfr) {\n case 'size': case 'type':\n value = /** @type {Blob} */ (value)[idntfr];\n break;\n default:\n break;\n }\n } else if (util.isFile(value)) {\n switch (idntfr) {\n case 'name': case 'lastModified':\n value = /** @type {File} */ (value)[idntfr];\n break;\n case 'lastModifiedDate':\n value = new Date(/** @type {File} */ (value).lastModified);\n break;\n default:\n break;\n }\n } else if (!util.isObj(value) || !Object.hasOwn(value, idntfr)) {\n return true;\n } else {\n value = /** @type {{[key: string]: KeyPathEvaluateValueValue}} */ (\n value\n )[idntfr];\n return value === undefined;\n }\n return false;\n })\n ? {failure: true}\n : {value: /** @type {KeyPathEvaluateValueValue} */ (value)};\n}\n\n/**\n * Sets the inline key value.\n * @param {{[key: string]: Value}} value\n * @param {Key} key\n * @param {string} keyPath\n * @returns {void}\n */\nfunction injectKeyIntoValueUsingKeyPath (value, key, keyPath) {\n const identifiers = keyPath.split('.');\n const last = identifiers.pop();\n identifiers.forEach((identifier) => {\n const hop = Object.hasOwn(value, identifier);\n if (!hop) {\n Object.defineProperty(value, identifier, {value: {}, enumerable: true, writable: true, configurable: true});\n }\n value = /** @type {{[key: string]: Value}} */ (value[identifier]);\n });\n Object.defineProperty(value, /** @type {string} */ (last), {value: key, enumerable: true, writable: true, configurable: true}); // key is already a `keyValue` in our processing so no need to convert\n}\n\n/**\n *\n * @param {Value} value\n * @param {string} keyPath\n * @see https://github.com/w3c/IndexedDB/pull/146\n * @returns {boolean}\n */\nfunction checkKeyCouldBeInjectedIntoValue (value, keyPath) {\n const identifiers = keyPath.split('.');\n identifiers.pop();\n for (const identifier of identifiers) {\n if (!util.isObj(value)) {\n return false;\n }\n const hop = Object.hasOwn(value, identifier);\n if (!hop) {\n return true;\n }\n value = /** @type {{[key: string]: Value}} */ (value)[identifier];\n }\n return util.isObj(value);\n}\n\n/**\n *\n * @param {Key} key\n * @param {import('./IDBKeyRange.js').IDBKeyRangeFull} range\n * @param {boolean} [checkCached]\n * @returns {boolean}\n */\nfunction isKeyInRange (key, range, checkCached) {\n let lowerMatch = range.lower === undefined;\n let upperMatch = range.upper === undefined;\n const encodedKey = encode(key, true);\n const lower = checkCached ? range.__lowerCached : encode(range.lower, true);\n const upper = checkCached ? range.__upperCached : encode(range.upper, true);\n\n if (!lowerMatch && (\n (range.lowerOpen &&\n encodedKey !== null && lower !== null && encodedKey > lower) ||\n (!range.lowerOpen && (\n (!encodedKey && !lower) ||\n (encodedKey !== null && lower !== null && encodedKey >= lower))\n )\n )) {\n lowerMatch = true;\n }\n if (!upperMatch && (\n (range.upperOpen &&\n encodedKey !== null && upper !== null && encodedKey < upper) ||\n (!range.upperOpen && (\n (!encodedKey && !upper) ||\n (encodedKey !== null && upper !== null && encodedKey <= upper))\n )\n )) {\n upperMatch = true;\n }\n\n return lowerMatch && upperMatch;\n}\n\n/**\n * Determines whether an index entry matches a multi-entry key value.\n * @param {string} encodedEntry The entry value (already encoded)\n * @param {string} encodedKey The full index key (already encoded)\n * @returns {boolean}\n */\nfunction isMultiEntryMatch (encodedEntry, encodedKey) {\n const keyType = encodedCharToKeyType[encodedKey.slice(0, 1)];\n\n if (keyType === 'array') {\n return encodedKey.indexOf(encodedEntry) > 1;\n }\n return encodedKey === encodedEntry;\n}\n\n/**\n *\n * @param {Key} keyEntry\n * @param {import('./IDBKeyRange.js').IDBKeyRangeFull|undefined} range\n * @returns {Key[]}\n */\nfunction findMultiEntryMatches (keyEntry, range) {\n /** @type {Key[]} */\n const matches = [];\n\n if (Array.isArray(keyEntry)) {\n for (let key of keyEntry) {\n if (Array.isArray(key)) {\n if (range && range.lower === range.upper) {\n continue;\n }\n if (key.length === 1) {\n key = key[0];\n } else {\n const nested = findMultiEntryMatches(key, range);\n if (nested.length > 0) {\n safePush(matches, key);\n }\n continue;\n }\n }\n\n if (util.isNullish(range) || isKeyInRange(key, range, true)) {\n safePush(matches, key);\n }\n }\n } else if (util.isNullish(range) || isKeyInRange(keyEntry, range, true)) {\n safePush(matches, keyEntry);\n }\n return matches;\n}\n\n/**\n * Not currently in use but keeping for spec parity.\n * @param {KeyValueObject} key\n * @throws {Error} Upon a \"bad key\"\n * @returns {ValueType}\n */\nfunction convertKeyToValue (key) {\n const {type, value} = key;\n switch (type) {\n case 'number': case 'string': {\n return /** @type {number|string} */ (value);\n } case 'array': {\n /** @type {ValueType[]} */\n const array = [];\n const arrValue = /** @type {KeyValueObject[]} */ (value);\n const len = arrValue.length;\n let index = 0;\n while (index < len) {\n const entry = convertKeyToValue(arrValue[index]);\n setArrayValue(array, index, entry);\n index++;\n }\n return array;\n } case 'date': {\n return new Date(/** @type {number} */ (value));\n } case 'binary': {\n const binValue = /** @type {Uint8Array} */ (value);\n const len = binValue.length;\n const buffer = new ArrayBuffer(len);\n // Set the entries in buffer's [[ArrayBufferData]] to those in `value`\n const uint8 = new Uint8Array(buffer, binValue.byteOffset || 0, binValue.byteLength);\n uint8.set(binValue);\n return buffer;\n } default:\n throw new Error('Bad key');\n }\n}\n\n/**\n *\n * @param {Value} key\n * @param {boolean} [inArray]\n * @returns {string|null}\n */\nfunction encode (key, inArray) {\n // Bad keys like `null`, `object`, `boolean`, 'function', 'symbol' should not be passed here due to prior validation\n if (key === undefined) {\n return null;\n }\n // array, date, number, string, binary (should already have detected \"invalid\")\n return types[getKeyType(key)].encode(key, inArray);\n}\n\n/**\n *\n * @param {string|null} key\n * @param {boolean} [inArray]\n * @throws {Error} Invalid number\n * @returns {undefined|ValueType}\n */\nfunction decode (key, inArray) {\n if (typeof key !== 'string') {\n return undefined;\n }\n return types[encodedCharToKeyType[key.slice(0, 1)]].decode(key, inArray);\n}\n\n/**\n *\n * @param {Value} key\n * @param {boolean} [inArray]\n * @returns {undefined|ValueType}\n */\nfunction roundTrip (key, inArray) {\n return decode(encode(key, inArray), inArray);\n}\n\nconst MAX_ALLOWED_CURRENT_NUMBER = 9007199254740992; // 2 ^ 53 (Also equal to `Number.MAX_SAFE_INTEGER + 1`)\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @callback CurrentNumberCallback\n * @param {Integer} cn The current number\n * @returns {void}\n */\n\n/**\n * @callback SQLFailureCallback\n * @param {DOMException|Error} exception\n * @returns {void}\n */\n\n/**\n *\n * @param {WebSQLTransaction} tx\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {CurrentNumberCallback} func\n * @param {SQLFailureCallback} sqlFailCb\n * @returns {void}\n */\nfunction getCurrentNumber (tx, store, func, sqlFailCb) {\n tx.executeSql('SELECT \"currNum\" FROM __sys__ WHERE \"name\" = ?', [\n util.escapeSQLiteStatement(store.__currentName)\n ], function (tx, data) {\n if (data.rows.length !== 1) {\n func(1);\n } else {\n func(/** @type {{currNum: number}} */ (data.rows.item(0)).currNum);\n }\n }, function (tx, error) {\n sqlFailCb(createDOMException(\n 'DataError',\n 'Could not get the auto increment value for key',\n error\n ));\n return false;\n });\n}\n\n/**\n *\n * @param {WebSQLTransaction} tx\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {Integer} num\n * @param {CurrentNumberCallback} successCb\n * @param {SQLFailureCallback} failCb\n * @returns {void}\n */\nfunction assignCurrentNumber (tx, store, num, successCb, failCb) {\n const sql = 'UPDATE __sys__ SET \"currNum\" = ? WHERE \"name\" = ?';\n const sqlValues = [num, util.escapeSQLiteStatement(store.__currentName)];\n if (CFG.DEBUG) { console.log(sql, sqlValues); }\n tx.executeSql(sql, sqlValues, function () {\n successCb(num);\n }, function (tx, err) {\n failCb(createDOMException('UnknownError', 'Could not set the auto increment value for key', err));\n return false;\n });\n}\n\n/**\n * Bump up the auto-inc counter if the key path-resolved value is valid\n * (greater than old value and >=1) OR if a manually passed in key is\n * valid (numeric and >= 1) and >= any primaryKey.\n * @param {WebSQLTransaction} tx\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {Integer} num\n * @param {CurrentNumberCallback} successCb\n * @param {SQLFailureCallback} failCb\n * @returns {void}\n */\nfunction setCurrentNumber (tx, store, num, successCb, failCb) {\n // Since incrementing by one has no effect in JavaScript on this unsafe\n // max (`MAX_ALLOWED_CURRENT_NUMBER + 1 === MAX_ALLOWED_CURRENT_NUMBER`\n // in IEEE 754 double precision), we represent the max as a number\n // incremented by two instead -- computed as a single `+ 2` rather\n // than two chained `+ 1`s, as the latter *also* rounds back to the\n // original value (each addition independently hits the same\n // unrepresentable `+ 1` and rounds down, so the two `+ 1`s don't\n // compose into a `+ 2`).\n // The getting of the current number is never returned to the user and\n // is only used in safe comparisons, so it is safe for us to represent\n // it in this manner\n num += num === MAX_ALLOWED_CURRENT_NUMBER ? 2 : 1;\n return assignCurrentNumber(tx, store, num, successCb, failCb);\n}\n\n/**\n * @callback KeyForStoreCallback\n * @param {\"failure\"|null} arg1\n * @param {Integer} [arg2]\n * @param {Integer} [arg3]\n * @returns {void}\n */\n\n/**\n *\n * @param {WebSQLTransaction} tx\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {KeyForStoreCallback} cb\n * @param {SQLFailureCallback} sqlFailCb\n * @returns {void}\n */\nfunction generateKeyForStore (tx, store, cb, sqlFailCb) {\n getCurrentNumber(tx, store, function (key) {\n if (key > MAX_ALLOWED_CURRENT_NUMBER) { // 2 ^ 53 (See <https://github.com/w3c/IndexedDB/issues/147>)\n cb('failure');\n return;\n }\n // Increment current number by 1 (we cannot leverage SQLite's\n // autoincrement (and decrement when not needed), as decrementing\n // will be overwritten/ignored upon the next insert)\n setCurrentNumber(\n tx, store, key,\n function () {\n cb(null, key, key);\n },\n sqlFailCb\n );\n }, sqlFailCb);\n}\n\n// Fractional or numbers exceeding the max do not get changed in the result\n// per https://github.com/w3c/IndexedDB/issues/147\n// so we do not return a key\n/**\n *\n * @param {WebSQLTransaction} tx\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {Key} key\n * @param {(num?: Integer) => void} successCb\n * @param {SQLFailureCallback} sqlFailCb\n * @returns {void}\n */\nfunction possiblyUpdateKeyGenerator (tx, store, key, successCb, sqlFailCb) {\n // Per https://github.com/w3c/IndexedDB/issues/147 , non-finite numbers\n // (or numbers larger than the max) are now to have the explicit effect of\n // setting the current number (up to the max), so we do not optimize them\n // out here\n if (typeof key !== 'number' || key < 1) { // Optimize with no need to get the current number\n // Auto-increment attempted with a bad key;\n // we are not to change the current number, but the steps don't call for failure\n // Numbers < 1 are optimized out as they will never be greater than the current number which must be at least 1\n successCb();\n } else {\n // If auto-increment and the keyPath item is a valid numeric key, get the old auto-increment to compare if the new is higher\n // to determine which to use and whether to update the current number\n getCurrentNumber(tx, store, function (cn) {\n const value = Math.floor(\n Math.min(key, MAX_ALLOWED_CURRENT_NUMBER)\n );\n const useNewKeyForAutoInc = value >= cn;\n if (useNewKeyForAutoInc) {\n setCurrentNumber(tx, store, value, function () {\n successCb(cn); // Supply old current number in case needs to be reverted\n }, sqlFailCb);\n } else { // Not updated\n successCb();\n }\n }, sqlFailCb);\n }\n}\n\nexport {encode, decode, roundTrip, convertKeyToValue, convertValueToKeyValueDecoded,\n convertValueToMultiEntryKeyDecoded,\n convertValueToKey,\n convertValueToMultiEntryKey, convertValueToKeyRethrowingAndIfInvalid,\n extractKeyFromValueUsingKeyPath, evaluateKeyPathOnValue,\n extractKeyValueDecodedFromValueUsingKeyPath, injectKeyIntoValueUsingKeyPath, checkKeyCouldBeInjectedIntoValue,\n isMultiEntryMatch, isKeyInRange, findMultiEntryMatches,\n assignCurrentNumber,\n generateKeyForStore, possiblyUpdateKeyGenerator};\n","import {createDOMException} from './DOMException.js';\nimport * as Key from './Key.js';\nimport * as util from './util.js';\n\nconst readonlyProperties = /** @type {const} */ (['lower', 'upper', 'lowerOpen', 'upperOpen']);\n\n/**\n * @typedef {globalThis.IDBKeyRange & {\n * __lower: import('./Key.js').Key|undefined,\n * __upper: import('./Key.js').Key|undefined,\n * __lowerCached: string|null|false,\n * __upperCached: string|null|false,\n * __lowerOpen: boolean,\n * __upperOpen: boolean,\n * }} IDBKeyRangeFull\n */\n\n/**\n * The IndexedDB KeyRange object.\n * @see https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#dfn-key-range\n * @throws {TypeError}\n * @class\n */\nfunction IDBKeyRange () {\n throw new TypeError('Illegal constructor');\n}\nconst IDBKeyRangeAlias = IDBKeyRange;\n\n/**\n * @param {import('./Key.js').Value} lower\n * @param {import('./Key.js').Value} upper\n * @param {boolean} lowerOpen\n * @param {boolean} upperOpen\n * @returns {import('./IDBKeyRange.js').IDBKeyRangeFull}\n */\nIDBKeyRange.__createInstance = function (lower, upper, lowerOpen, upperOpen) {\n /**\n * @class\n * @this {IDBKeyRangeFull}\n * @throws {DOMException|Error}\n */\n function IDBKeyRange () {\n // @ts-expect-error Should be ok\n this[Symbol.toStringTag] = 'IDBKeyRange';\n if (lower === undefined && upper === undefined) {\n throw createDOMException('DataError', 'Both arguments to the key range method cannot be undefined');\n }\n let lowerConverted, upperConverted;\n if (lower !== undefined) {\n lowerConverted = Key.roundTrip(lower); // Todo: does this make the \"conversions\" redundant\n Key.convertValueToKeyRethrowingAndIfInvalid(lower);\n }\n if (upper !== undefined) {\n upperConverted = Key.roundTrip(upper); // Todo: does this make the \"conversions\" redundant\n Key.convertValueToKeyRethrowingAndIfInvalid(upper);\n }\n if (lower !== undefined && upper !== undefined && lower !== upper) {\n if (\n /** @type {string} */ (Key.encode(lower)) >\n /** @type {string} */ (Key.encode(upper))\n ) {\n throw createDOMException('DataError', '`lower` must not be greater than `upper` argument in `bound()` call.');\n }\n }\n\n this.__lower = lowerConverted;\n this.__upper = upperConverted;\n this.__lowerOpen = Boolean(lowerOpen);\n this.__upperOpen = Boolean(upperOpen);\n }\n IDBKeyRange.prototype = IDBKeyRangeAlias.prototype;\n\n // @ts-expect-error Properties added by `defineProperty/ies`\n return new IDBKeyRange();\n};\n\n/**\n * @param {import('./Key.js').Key} key\n * @this {IDBKeyRangeFull}\n * @returns {boolean}\n */\nIDBKeyRange.prototype.includes = function (key) {\n // We can't do a regular instanceof check as it will create a loop given our hasInstance implementation\n if (!util.isObj(this) || typeof this.__lowerOpen !== 'boolean') {\n throw new TypeError('Illegal invocation');\n }\n if (!arguments.length) {\n throw new TypeError('IDBKeyRange.includes requires a key argument');\n }\n Key.convertValueToKeyRethrowingAndIfInvalid(key);\n return Key.isKeyInRange(key, this);\n};\n\n/**\n * @param {import('./Key.js').Value} value\n * @returns {import('./IDBKeyRange.js').IDBKeyRangeFull}\n */\nIDBKeyRange.only = function (value) {\n if (!arguments.length) {\n throw new TypeError('IDBKeyRange.only requires a value argument');\n }\n return IDBKeyRange.__createInstance(value, value, false, false);\n};\n\n/**\n * @param {import('./Key.js').Value} value\n * @returns {globalThis.IDBKeyRange}\n */\nIDBKeyRange.lowerBound = function (value /* , open */) {\n if (!arguments.length) {\n throw new TypeError('IDBKeyRange.lowerBound requires a value argument');\n }\n // eslint-disable-next-line prefer-rest-params -- API\n return IDBKeyRange.__createInstance(value, undefined, arguments[1], true);\n};\n\n/**\n * @param {import('./Key.js').Value} value\n * @returns {globalThis.IDBKeyRange}\n */\nIDBKeyRange.upperBound = function (value /* , open */) {\n if (!arguments.length) {\n throw new TypeError('IDBKeyRange.upperBound requires a value argument');\n }\n // eslint-disable-next-line prefer-rest-params -- API\n return IDBKeyRange.__createInstance(undefined, value, true, arguments[1]);\n};\n\n/**\n * @param {import('./Key.js').Value} lower\n * @param {import('./Key.js').Value} upper\n * @returns {globalThis.IDBKeyRange}\n */\nIDBKeyRange.bound = function (lower, upper /* , lowerOpen, upperOpen */) {\n if (arguments.length <= 1) {\n throw new TypeError('IDBKeyRange.bound requires lower and upper arguments');\n }\n // eslint-disable-next-line prefer-rest-params -- API\n return IDBKeyRange.__createInstance(lower, upper, arguments[2], arguments[3]);\n};\nIDBKeyRange.prototype[Symbol.toStringTag] = 'IDBKeyRangePrototype';\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.setOperationNames(IDBKeyRange.prototype);\nutil.setOperationNames(IDBKeyRange);\n\nreadonlyProperties.forEach((prop) => {\n Object.defineProperty(IDBKeyRange.prototype, '__' + prop, {\n enumerable: false,\n configurable: false,\n writable: true\n });\n // Ensure for proper interface testing that \"get <name>\" is the function name\n const o = {\n /**\n * @returns {import('./Key.js').Key|null|boolean}\n */\n get [prop] () {\n // We can't do a regular instanceof check as it will create a loop given our hasInstance implementation\n if (!util.isObj(this) || typeof this.__lowerOpen !== 'boolean') {\n throw new TypeError('Illegal invocation');\n }\n return this['__' + prop];\n }\n };\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, prop)\n );\n // desc.enumerable = true; // Default\n // desc.configurable = true; // Default\n Object.defineProperty(IDBKeyRange.prototype, prop, desc);\n});\n\nObject.defineProperties(IDBKeyRange, {\n [Symbol.hasInstance]: {\n value:\n /**\n * @param {object} obj\n * @returns {boolean}\n */\n (obj) => util.isObj(obj) && 'upper' in obj && 'lowerOpen' in obj &&\n typeof obj.lowerOpen === 'boolean'\n },\n prototype: {\n writable: false\n }\n});\n\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\n/**\n * @param {IDBKeyRangeFull|undefined} range\n * @param {string} quotedKeyColumnName\n * @param {string[]} sql\n * @param {string[]} sqlValues\n * @param {boolean} [addAnd]\n * @param {boolean} [checkCached]\n * @returns {void}\n */\nfunction setSQLForKeyRange (\n range, quotedKeyColumnName, sql, sqlValues, addAnd, checkCached\n) {\n if (!(range && (range.lower !== undefined || range.upper !== undefined))) {\n return;\n }\n\n if (addAnd) { sql.push('AND'); }\n let encodedLowerKey, encodedUpperKey;\n const hasLower = range.lower !== undefined;\n const hasUpper = range.upper !== undefined;\n if (hasLower) {\n encodedLowerKey = checkCached ? range.__lowerCached : Key.encode(range.lower);\n }\n if (hasUpper) {\n encodedUpperKey = checkCached ? range.__upperCached : Key.encode(range.upper);\n }\n if (hasLower) {\n sqlValues.push(util.escapeSQLiteStatement(/** @type {string} */ (encodedLowerKey)));\n if (hasUpper && encodedLowerKey === encodedUpperKey && !range.lowerOpen && !range.upperOpen) {\n sql.push(quotedKeyColumnName, '=', '?');\n return;\n }\n sql.push(quotedKeyColumnName, (range.lowerOpen ? '>' : '>='), '?');\n }\n if (hasLower && hasUpper) { sql.push('AND'); }\n if (hasUpper) {\n sql.push(quotedKeyColumnName, (range.upperOpen ? '<' : '<='), '?');\n sqlValues.push(util.escapeSQLiteStatement(/** @type {string} */ (encodedUpperKey)));\n }\n}\n\n/**\n * @param {import('./Key.js').Value} value\n * @param {boolean} [nullDisallowed]\n * @throws {DOMException}\n * @returns {import('./IDBKeyRange.js').IDBKeyRangeFull|undefined}\n */\nfunction convertValueToKeyRange (value, nullDisallowed) {\n if (util.instanceOf(value, IDBKeyRange)) {\n // We still need to validate IDBKeyRange-like objects (the above check is based on loose duck-typing)\n const range = /** @type {IDBKeyRangeFull} */ (value);\n if (range.toString() !== '[object IDBKeyRange]') {\n return IDBKeyRange.__createInstance(range.lower, range.upper, range.lowerOpen, range.upperOpen);\n }\n return range;\n }\n if (util.isNullish(value)) {\n if (nullDisallowed) {\n throw createDOMException('DataError', 'No key or range was specified');\n }\n return undefined; // Represents unbounded\n }\n Key.convertValueToKeyRethrowingAndIfInvalid(value);\n return IDBKeyRange.only(value);\n}\n\n// eslint-disable-next-line unicorn/no-named-default -- Had some reason for this\nexport {setSQLForKeyRange, IDBKeyRange, convertValueToKeyRange, IDBKeyRange as default};\n","/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {{\n * _items: string[],\n * _length: Integer,\n * [key: number]: string,\n * addIndexes: () => void,\n * sortList: () => string[],\n * push: (item: string) => void,\n * clone: () => DOMStringListFull,\n * contains: (str: string) => boolean,\n * indexOf: (str: string) => Integer,\n * splice: (index: Integer, howmany: Integer, ...args: string[]) => void\n * length: Integer\n * }} DOMStringListFull\n */\n\nlet cleanInterface = false;\n\nconst testObject = {test: true};\n// Test whether Object.defineProperty really works.\nif (Object.defineProperty) {\n try {\n Object.defineProperty(testObject, 'test', {enumerable: false});\n if (testObject.test) {\n cleanInterface = true;\n }\n } catch (err) {\n // Object.defineProperty does not work as intended.\n }\n}\n\n/**\n * Shim the DOMStringList object.\n * @throws {TypeError}\n * @class\n */\n/**\n * @this {DOMStringListFull}\n * @returns {never}\n */\nconst DOMStringList = function () {\n /** @type {string[]} */\n this._items = [];\n /** @type {Integer} */\n this._length = 0;\n throw new TypeError('Illegal constructor');\n};\n\n// @ts-expect-error It's ok\nDOMStringList.prototype = {\n constructor: DOMStringList,\n // Interface.\n\n /**\n * @param {string} str\n * @this {DOMStringListFull}\n * @returns {boolean}\n */\n contains (str) {\n if (!arguments.length) {\n throw new TypeError('DOMStringList.contains must be supplied a value');\n }\n return this._items.includes(str);\n },\n\n /**\n * @param {number} key\n * @this {DOMStringListFull}\n * @returns {string|null}\n */\n item (key) {\n if (!arguments.length) {\n throw new TypeError('DOMStringList.item must be supplied a value');\n }\n if (key < 0 || key >= this.length ||\n // eslint-disable-next-line unicorn/prefer-number-is-safe-integer -- We want all\n !Number.isInteger(key)) {\n return null;\n }\n return this._items[key];\n },\n\n // Helpers. Should only be used internally.\n /**\n * @this {DOMStringListFull}\n * @returns {DOMStringListFull}\n */\n clone () {\n const stringList = DOMStringList.__createInstance();\n stringList._items = this._items.slice();\n stringList._length = this.length;\n stringList.addIndexes();\n return stringList;\n },\n /**\n * @this {DOMStringListFull}\n * @returns {void}\n */\n addIndexes () {\n for (let i = 0; i < this._items.length; i++) {\n this[i] = this._items[i];\n }\n },\n /**\n * @this {DOMStringListFull}\n * @returns {string[]}\n */\n sortList () {\n // https://w3c.github.io/IndexedDB/#sorted-list\n // https://tc39.github.io/ecma262/#sec-abstract-relational-comparison\n // eslint-disable-next-line unicorn/require-array-sort-compare -- IndexedDB requires code unit comparison (default behavior)\n this._items.sort();\n this.addIndexes();\n return this._items;\n },\n /**\n * @this {DOMStringListFull}\n * @param {(value: string, i: Integer, arr: string[]) => void} cb\n * @param {object} thisArg\n * @returns {void}\n */\n forEach (cb, thisArg) {\n // eslint-disable-next-line unicorn/no-array-callback-reference, unicorn/no-array-method-this-argument -- Convenient\n this._items.forEach(cb, thisArg);\n },\n /**\n * @this {DOMStringListFull}\n * @template T\n * @param {(value: string, i: Integer, arr: string[]) => T} cb\n * @param {object} thisArg\n * @returns {T[]}\n */\n map (cb, thisArg) {\n // eslint-disable-next-line unicorn/no-array-callback-reference, unicorn/no-array-method-this-argument -- Convenient\n return this._items.map(cb, thisArg);\n },\n /**\n * @param {string} str\n * @this {DOMStringListFull}\n * @returns {Integer}\n */\n indexOf (str) {\n return this._items.indexOf(str);\n },\n /**\n * @param {string} item\n * @this {DOMStringListFull}\n * @returns {void}\n */\n push (item) {\n this._items.push(item);\n this._length++;\n this.sortList();\n },\n /**\n * @param {[index: Integer, howmany: Integer, ...args: string[]]} args\n * @this {DOMStringListFull}\n * @returns {void}\n */\n splice (...args /* index, howmany, item1, ..., itemX */) {\n this._items.splice(...args);\n this._length = this._items.length;\n for (const i in this) {\n if (i === String(Math.trunc(Number(i)))) {\n delete this[i];\n }\n }\n this.sortList();\n },\n [Symbol.toStringTag]: 'DOMStringListPrototype',\n // At least because `DOMStringList`, as a [list](https://infra.spec.whatwg.org/#list)\n // can be converted to a sequence per https://infra.spec.whatwg.org/#list-iterate\n // and particularly as some methods, e.g., `IDBDatabase.transaction`\n // expect such sequence<DOMString> (or DOMString), we need an iterator (some of\n // the Mocha tests rely on these)\n /**\n * @this {DOMStringListFull}\n * @yields {string}\n * @returns {Generator<string, void, undefined>}\n */\n *[Symbol.iterator] () {\n let i = 0;\n while (i < this._items.length) {\n yield this._items[i++];\n }\n }\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nObject.defineProperty(DOMStringList, Symbol.hasInstance, {\n /**\n * @param {unknown} obj\n * @returns {boolean}\n */\n value (obj) {\n return Object.prototype.toString.call(obj) === 'DOMStringListPrototype';\n }\n});\nconst DOMStringListAlias = DOMStringList;\nObject.defineProperty(DOMStringList, '__createInstance', {\n /* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n /**\n * @returns {DOMStringListFull}\n */\n value () {\n /**\n * @class\n * @this {DOMStringListFull}\n */\n const DOMStringList = function DOMStringList () {\n this.toString = function () {\n return '[object DOMStringList]';\n };\n // Internal functions on the prototype have been made non-enumerable below.\n Object.defineProperty(this, 'length', {\n enumerable: true,\n /**\n * @this {DOMStringListFull}\n * @returns {Integer}\n */\n get () {\n return this._length;\n }\n });\n this._items = /** @type {string[]} */ ([]);\n this._length = 0;\n };\n DOMStringList.prototype = DOMStringListAlias.prototype;\n // @ts-ignore It's ok; needed under some TS versions\n return /** @type {DOMStringListFull} */ (new DOMStringList());\n }\n});\n\nif (cleanInterface) {\n Object.defineProperty(DOMStringList, 'prototype', {\n writable: false\n });\n\n const nonenumerableReadonly = ['addIndexes', 'sortList', 'forEach', 'map', 'indexOf', 'push', 'splice', 'constructor', '__createInstance'];\n nonenumerableReadonly.forEach((nonenumerableReadonly) => {\n Object.defineProperty(DOMStringList.prototype, nonenumerableReadonly, {\n enumerable: false\n });\n });\n\n // Illegal invocations\n Object.defineProperty(DOMStringList.prototype, 'length', {\n configurable: true,\n enumerable: true,\n get () {\n throw new TypeError('Illegal invocation');\n }\n });\n\n const nonenumerableWritable = ['_items', '_length'];\n nonenumerableWritable.forEach((nonenumerableWritable) => {\n Object.defineProperty(DOMStringList.prototype, nonenumerableWritable, {\n enumerable: false,\n writable: true\n });\n });\n}\n\nexport default DOMStringList;\n","import {EventTargetFactory} from 'eventtargeter';\nimport SyncPromise from 'sync-promise-expanded';\nimport {createEvent} from './Event.js';\nimport {logError, findError, webSQLErrback, createDOMException} from './DOMException.js';\nimport {IDBRequest} from './IDBRequest.js';\nimport * as util from './util.js';\nimport IDBObjectStore from './IDBObjectStore.js';\nimport CFG from './CFG.js';\n\nlet uniqueID = 0;\nconst activeTransactions = new Set();\nconst listeners = ['onabort', 'oncomplete', 'onerror'];\nconst readonlyProperties = ['objectStoreNames', 'mode', 'durability', 'db', 'error'];\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {{\n * op: SQLCallback,\n * args: unknown[],\n * req: import('./IDBRequest.js').IDBRequestFull|null\n * }} RequestInfo\n */\n\n/**\n * @typedef {EventTarget & {\n * mode: \"readonly\"|\"readwrite\"|\"versionchange\",\n * durability: \"default\"|\"strict\"|\"relaxed\",\n * db: import('./IDBDatabase.js').IDBDatabaseFull,\n * on__abort: () => void,\n * on__complete: () => void,\n * on__beforecomplete: (ev: Event & {\n * complete: () => void\n * }) => void,\n * on__preabort: () => void,\n * __abortTransaction: (err: Error|DOMException|null) => void,\n * __executeRequests: () => void,\n * __tx: import('websql-configurable/lib/websql/WebSQLTransaction.js').default,\n * __id: Integer,\n * __active: boolean,\n * __handlerActive: boolean,\n * __running: boolean,\n * __errored: boolean,\n * __committed: boolean,\n * __requests: RequestInfo[],\n * __db: import('./IDBDatabase.js').IDBDatabaseFull,\n * __mode: string,\n * __durability: string,\n * __error: null|DOMException|Error,\n * __objectStoreNames: import('./DOMStringList.js').DOMStringListFull,\n * __storeHandles: {\n * [key: string]: import('./IDBObjectStore.js').IDBObjectStoreFull\n * },\n * __requestsFinished: boolean,\n * __transFinishedCb: (err: boolean, cb: ((bool?: boolean) => void)) => void,\n * __callTransFinishedCb: (err: boolean, cb: ((bool?: boolean) => void)) => void,\n * __transactionEndCallback: (() => void)|undefined,\n * __transactionFinished: boolean,\n * __completed: boolean,\n * __transFinishedCbFired: boolean,\n * __internal: boolean,\n * __abortFinished: boolean,\n * __createRequest: (\n * source: import('./IDBDatabase.js').IDBDatabaseFull|\n * import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull|\n * import('./IDBCursor.js').IDBCursorFull\n * ) => import('./IDBRequest.js').IDBRequestFull,\n * __pushToQueue: (\n * request: import('./IDBRequest.js').IDBRequestFull|null,\n * callback: SQLCallback,\n * args?: unknown[]\n * ) => void,\n * __assertActive: () => void,\n * commit: () => void,\n * __addNonRequestToTransactionQueue: (\n * callback: SQLCallback,\n * args?: unknown[]\n * ) => void\n * __addToTransactionQueue: (\n * callback: SQLCallback,\n * args: unknown[]|undefined,\n * source: import('./IDBDatabase.js').IDBDatabaseFull|\n * import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull|\n * import('./IDBCursor.js').IDBCursorFull\n * ) => import('./IDBRequest.js').IDBRequestFull\n * __assertWritable: () => void,\n * }} IDBTransactionFull\n */\n\n/**\n * @param {IDBTransactionFull} tx\n * @returns {void}\n */\nfunction releaseFinishedTransaction (tx) {\n const pos = tx.db.__transactions.indexOf(tx);\n if (pos !== -1) {\n tx.db.__transactions.splice(pos, 1);\n }\n tx.__transactionEndCallback = undefined;\n tx.__requests = [];\n}\n\n/**\n * The IndexedDB Transaction.\n * @see https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBTransaction\n * @class\n * @throws {TypeError}\n */\nfunction IDBTransaction () {\n throw new TypeError('Illegal constructor');\n}\nconst IDBTransactionAlias = IDBTransaction;\n/**\n * @param {import('./IDBDatabase.js').IDBDatabaseFull} db\n * @param {import('./DOMStringList.js').DOMStringListFull} storeNames\n * @param {string} mode\n * @param {string} [durability]\n * @returns {IDBTransactionFull}\n */\nIDBTransaction.__createInstance = function (db, storeNames, mode, durability = 'default') {\n /**\n * @class\n * @this {IDBTransactionFull}\n */\n function IDBTransaction () {\n const me = this;\n // @ts-expect-error It's ok\n me[Symbol.toStringTag] = 'IDBTransaction';\n util.defineReadonlyProperties(me, readonlyProperties);\n // eslint-disable-next-line unicorn/no-top-level-assignment-in-function -- Debugging only\n me.__id = ++uniqueID; // for debugging simultaneous transactions\n me.__active = true;\n // Tracks the spec's \"active\" flag for the purpose of validating new\n // requests/`commit()`: true only during the initial synchronous\n // script that created the transaction and during each dispatched\n // request's synchronous `success`/`error` handler. Deliberately\n // kept separate from `__active` above, which additionally (and\n // permanently, once false) signals that request-queue processing\n // has stopped -- `executeNextRequest` relies on that to know\n // whether it's still safe to finish the transaction normally.\n me.__handlerActive = true;\n me.__running = false;\n me.__errored = false;\n me.__committed = false;\n me.__requests = [];\n me.__objectStoreNames = storeNames;\n me.__mode = mode;\n me.__durability = durability;\n me.__db = db;\n activeTransactions.add(me);\n me.__error = null;\n // @ts-expect-error Part of `ShimEventTarget`\n me.__setOptions({\n legacyOutputDidListenersThrowFlag: true // Event hook for IndexedB\n });\n\n readonlyProperties.forEach((readonlyProp) => {\n Object.defineProperty(this, readonlyProp, {\n configurable: true\n });\n });\n util.defineListenerProperties(this, listeners);\n me.__storeHandles = {};\n\n // Kick off the transaction as soon as all synchronous code is done\n setTimeout(() => { me.__executeRequests(); }, 0);\n }\n IDBTransaction.prototype = IDBTransactionAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBTransaction();\n};\n\n// @ts-expect-error It's ok\nIDBTransaction.prototype = EventTargetFactory.createInstance({\n defaultSync: true,\n // Ensure EventTarget preserves our properties\n extraProperties: ['complete']\n});\n\n/**\n *\n * @param {boolean} err\n * @param {(bool: boolean) => void} cb\n * @returns {void}\n */\nIDBTransaction.prototype.__transFinishedCb = function (err, cb) {\n cb(Boolean(err));\n};\n\n/**\n * In Node, the real (SQL-commit-capable) `__transFinishedCb` is only\n * installed once the underlying WebSQL driver's own SQL-queue-idle check\n * has fired at least once for this transaction (asynchronously, via the\n * `nonstandardTransCb` passed to `db.transaction`/`.readTransaction`).\n * Since our own request processing can now finish synchronously (e.g., a\n * trivial upgrade using a synchronous SQL driver), it is possible to reach\n * transaction completion here before that has happened, in which case\n * `__transFinishedCb` is still the non-committing default above. Calling\n * that default directly would silently skip the actual SQL commit and\n * leave the underlying WebSQL transaction \"running\" forever, hanging any\n * later transaction on that same database connection. So, if the real\n * callback isn't installed yet, defer and retry until it is.\n * @this {IDBTransactionFull}\n * @param {boolean} err\n * @param {(bool?: boolean) => void} cb\n * @returns {void}\n */\nIDBTransaction.prototype.__callTransFinishedCb = function (err, cb) {\n const me = this;\n if (me.__completed || me.__transFinishedCbFired) {\n // Either this transaction's `nonstandardTransCb` installation (see\n // `__executeRequests`) already found `__transactionEndCallback` set\n // and fired `__transFinishedCb` itself in the meantime -- a race with\n // this call's own (possibly `setTimeout`-deferred) retry below -- or\n // this same call already fired it on an earlier retry. Either way,\n // don't fire a second commit/rollback for the same transaction.\n // `__transFinishedCbFired` is checked in addition to `__completed`\n // because `__completed` isn't set until the resulting SQL commit/\n // rollback round trip actually finishes, which is too late to stop\n // the other side from *also* firing while that's still in flight.\n return;\n }\n if (me.__transFinishedCb === IDBTransaction.prototype.__transFinishedCb) {\n // Standard (3-argument) `transaction()`/`readTransaction()` implementations\n // (browser WebSQL, `cordova-plugin-sqlite-2`, etc.) never invoke the\n // non-standard 4th callback that installs the real `__transFinishedCb`,\n // so waiting for it here would defer forever. Detect that via arity\n // (checking whichever of the two methods this transaction's own mode\n // actually uses -- see `__executeRequests`) and, if it's not supported,\n // just call the default (the driver auto-commits on its own).\n const dbConn = me.db && me.db.__db;\n const dbMethodName = me.mode === 'readonly' ? 'readTransaction' : 'transaction';\n const supportsNonstandardTransCb = Boolean(\n dbConn && typeof dbConn[dbMethodName] === 'function' && dbConn[dbMethodName].length >= 4\n );\n if (!supportsNonstandardTransCb) {\n me.__transFinishedCbFired = true;\n me.__transFinishedCb(err, cb);\n return;\n }\n setTimeout(() => {\n me.__callTransFinishedCb(err, cb);\n }, 0);\n return;\n }\n me.__transFinishedCbFired = true;\n me.__transFinishedCb(err, cb);\n};\n/**\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.__executeRequests = function () {\n const me = this;\n if (me.__running) {\n if (CFG.DEBUG) { console.log('Looks like the request set is already running', me.mode); }\n return;\n }\n\n // The synchronous script that created this transaction (and\n // synchronously queued whatever requests it wanted to) has now\n // definitely returned control to the event loop -- this callback was\n // itself deferred via `setTimeout(..., 0)` for exactly that reason.\n // So the transaction's initial \"active\" window closes here, until the\n // first dispatched request's handler (see `success`/`error` below)\n // reopens it.\n me.__handlerActive = false;\n\n me.__running = true;\n\n me.db.__db[me.mode === 'readonly' ? 'readTransaction' : 'transaction']( // `readTransaction` is optimized, at least in `node-websql`\n function executeRequests (tx) {\n me.__tx = tx;\n /** @type {RequestInfo} */\n let q,\n i = -1;\n\n /**\n * @typedef {unknown} IDBRequestResult\n */\n\n /**\n * @param {IDBRequestResult} [result]\n * @param {import('./IDBRequest.js').IDBRequestFull} [req]\n * @returns {void}\n */\n function success (result, req) {\n if (me.__errored || me.__requestsFinished) {\n // We've already called \"onerror\", \"onabort\", or thrown within the transaction, so don't do it again.\n return;\n }\n if (req) {\n q.req = req; // Need to do this in case of cursors\n }\n if (!q.req) { // TS guard\n return;\n }\n if (q.req.__done) { // Avoid continuing with aborted requests\n return;\n }\n q.req.__done = true;\n q.req.__result = result;\n q.req.__error = null;\n\n me.__active = true;\n me.__handlerActive = true;\n const e = createEvent('success');\n q.req.dispatchEvent(e);\n // Do not set __active or __handlerActive flags to false yet:\n // https://github.com/w3c/IndexedDB/issues/87 -- a follow-up\n // request queued from an `await`-based continuation of this\n // one (a microtask, not a further synchronous call within\n // this handler) must still pass `__assertActive`'s check of\n // both flags. `checkQueueEntry` (see `executeNextRequest`)\n // is what actually resets `__handlerActive`, once it's\n // confirmed (across its own bounded microtask wait) that no\n // such continuation queued anything.\n if (e.__legacyOutputDidListenersThrowError) {\n logError('Error', 'An error occurred in a success handler attached to request chain', e.__legacyOutputDidListenersThrowError); // We do nothing else with this error as per spec\n if (!me.__committed) { // An explicit `commit()` locks in the commit, so errors thrown afterward must not abort it\n // me.__active = false;\n me.__abortTransaction(createDOMException('AbortError', 'A request was aborted (in user handler after success).'));\n return;\n }\n }\n util.runContinuationSafely(advanceAfterDispatch);\n }\n\n /**\n * @param {[\n * tx: import('websql-configurable/lib/websql/WebSQLTransaction.js').default|DOMException|Error,\n * err?: Error & {code?: number}\n * ]} args\n * @returns {void}\n */\n function error (...args /* tx, err */) {\n if (me.__errored || me.__requestsFinished) {\n // We've already called \"onerror\", \"onabort\", or thrown within\n // the transaction, so don't do it again.\n return;\n }\n if (q.req && q.req.__done) { // Avoid continuing with aborted requests\n return;\n }\n const err = /** @type {Error|DOMException} */ (findError(args));\n if (!q.req) {\n me.__abortTransaction(err);\n return;\n }\n\n // Fire an error event for the current IDBRequest\n q.req.__done = true;\n q.req.__error = err;\n q.req.__result = undefined; // Must be undefined if an error per `result` getter\n q.req.addLateEventListener(\n 'error',\n /**\n * @param {Event & {__legacyOutputDidListenersThrowError: boolean}} e\n * @returns {void}\n */\n function (e) {\n if (e.cancelable && e.defaultPrevented && !e.__legacyOutputDidListenersThrowError) {\n advanceAfterDispatch();\n }\n }\n );\n q.req.addDefaultEventListener('error', function () {\n if (!q.req) { // TS guard\n return;\n }\n me.__abortTransaction(q.req.__error);\n });\n\n me.__active = true;\n me.__handlerActive = true;\n const e = createEvent('error', err, {bubbles: true, cancelable: true});\n q.req.dispatchEvent(e);\n // Do not set __active or __handlerActive flags to false yet --\n // see the matching comment in `success`, above.\n if (e.__legacyOutputDidListenersThrowError) {\n logError('Error', 'An error occurred in an error handler attached to request chain', e.__legacyOutputDidListenersThrowError); // We do nothing else with this error as per spec\n e.preventDefault(); // Prevent 'error' default as steps indicate we should abort with `AbortError` even without cancellation\n if (me.__committed) { // An explicit `commit()` locks in the commit, so errors thrown afterward must not abort it\n util.runContinuationSafely(advanceAfterDispatch);\n return;\n }\n me.__abortTransaction(createDOMException('AbortError', 'A request was aborted (in user handler after error).'));\n }\n }\n\n /**\n * Sets up `q` for the current queue index and, for a genuine\n * request (not one of our internal non-request queue entries),\n * deactivates the transaction for the duration of its\n * (possibly async) work. Returns `false` if there's nothing to\n * do (an already-aborted request).\n * @returns {boolean}\n */\n function prepareNextRequest () {\n q = me.__requests[i];\n if (!q.req) {\n // Non-standard, non-`IDBRequest` queue entries (e.g.\n // the internal `onupgradeneeded` dispatch op in\n // `IDBFactory.js`) dispatch straight to user code\n // without going through `success`/`error` below --\n // unlike those, they never restore `__active`/\n // `__handlerActive` to `true` before doing so, so\n // they rely on the flags being left as they are\n // (not reset here).\n return true;\n }\n if (q.req.__done) { // Avoid continuing with aborted requests\n return false;\n }\n // We're now handing off to (possibly async) work for\n // this request, so the transaction is no longer active\n // until its own `success`/`error` dispatch (below)\n // sets these flags again -- a check that happens to\n // run during this gap (e.g. `commit()` called from an\n // unrelated `setTimeout`) must see the transaction as\n // inactive, per spec.\n me.__active = false;\n me.__handlerActive = false;\n return true;\n }\n\n /**\n * @returns {void}\n */\n function launchQueuedOp () {\n try {\n if (!q.req) {\n q.op(tx, q.args, () => util.runContinuationSafely(executeNextRequest), error);\n return;\n }\n q.op(tx, q.args, success, error, executeNextRequest);\n } catch (e) {\n error(/** @type {Error} */ (e));\n }\n }\n\n /**\n * @returns {void}\n */\n function runQueuedRequest () {\n if (!prepareNextRequest()) {\n return;\n }\n launchQueuedOp();\n }\n\n /**\n * A request's `success`/`error` event fires (and any `await`-based\n * continuation watching it resolves) before this check runs, since\n * that dispatch happens synchronously above, one call frame up.\n * If such a continuation queues a follow-up request, it does so\n * from a microtask -- so if the JS-level queue is merely found\n * empty here, that doesn't yet mean no more work is coming, only\n * that none has been queued *yet*. Re-check across a small, bounded\n * number of further microtask turns (letting a typical `await`\n * chain like `await store.put(...); await store.get(...)` catch\n * up) before finally concluding the transaction is genuinely done.\n * Applies to `readonly` transactions too, not just `readwrite`/\n * `versionchange`: a `readonly` transaction's `complete` event\n * can otherwise fire synchronously, immediately after its last\n * request's `success` handler returns -- before an `await`-based\n * consumer of that same handler (e.g. one that resolves a\n * promise from within `onsuccess` and only attaches `oncomplete`\n * afterward) ever gets a turn to run, so it can miss `complete`\n * entirely. `readonly` requests don't hold a real SQL\n * transaction open, though, so there's no file-lock/connection\n * collision risk in waiting the same bounded amount here.\n * @param {number} attemptsLeft\n * @returns {void}\n */\n function checkQueueEntry (attemptsLeft) {\n if (me.__errored || me.__requestsFinished) {\n return;\n }\n if (i < me.__requests.length) {\n runQueuedRequest();\n return;\n }\n if (attemptsLeft <= 0) {\n // All requests in the transaction are done\n me.__requests = [];\n if (me.__active) {\n requestsFinished();\n }\n return;\n }\n queueMicrotask(() => {\n checkQueueEntry(attemptsLeft - 1);\n });\n }\n\n /**\n * @returns {void}\n */\n function executeNextRequest () {\n if (me.__errored || me.__requestsFinished) {\n // We've already called \"onerror\", \"onabort\", or thrown within the transaction, so don't do it again.\n return;\n }\n i++;\n if (i >= me.__requests.length) {\n checkQueueEntry(10);\n return;\n }\n runQueuedRequest();\n }\n\n /**\n * Same as `executeNextRequest`, but used specifically as the\n * continuation from a request's own `success`/`error` dispatch\n * (see call sites above): gives same-tick microtasks scheduled\n * from within that handler (e.g. a plain\n * `Promise.resolve().then(...)`) a chance to run -- and still\n * observe the transaction as active -- before we deactivate it\n * again for the next queued request, per\n * https://github.com/w3c/IndexedDB/issues/87.\n *\n * This is safe for `readonly` transactions too only because\n * `__executeRequests` now passes a `nonstandardTransCb` to\n * `readTransaction()` (matching `.transaction()`) and\n * `requestsFinished` defers `readonly` completion through\n * `__transactionEndCallback`/`__callTransFinishedCb` the same\n * way `readwrite` already did: the WebSQL driver's\n * \"optimized\" `readTransaction` path used to finalize the\n * underlying transaction as soon as no further `executeSql`\n * call was already in flight or queued, which -- before that\n * fix -- meant even a microtask-long gap here would let the\n * driver consider the transaction done, silently dropping\n * every subsequent queued request (never firing\n * `success`/`error` for it at all).\n * @returns {void}\n */\n function advanceAfterDispatch () {\n if (me.__errored || me.__requestsFinished) {\n return;\n }\n i++;\n if (i >= me.__requests.length) {\n checkQueueEntry(10);\n return;\n }\n queueMicrotask(() => {\n if (me.__errored || me.__requestsFinished) {\n return;\n }\n if (!prepareNextRequest()) {\n return;\n }\n launchQueuedOp();\n });\n }\n\n executeNextRequest();\n },\n function webSQLError (webSQLErr) {\n // @ts-expect-error It's ok\n if (webSQLErr === true) { // Not a genuine SQL error\n return;\n }\n const err = webSQLErrback(/** @type {Error & {code?: number}} */ (webSQLErr));\n me.__abortTransaction(err);\n },\n function () {\n // For Node, we don't need to try running here as we can keep\n // the transaction running long enough to rollback (in the\n // next (non-standard) callback for this transaction call)\n if (me.__transFinishedCb !== IDBTransaction.prototype.__transFinishedCb) { // Node\n return;\n }\n if (!me.__transactionEndCallback && !me.__requestsFinished) {\n me.__transactionFinished = true;\n return;\n }\n if (me.__transactionEndCallback && !me.__completed && !me.__transFinishedCbFired) {\n me.__transFinishedCbFired = true;\n me.__transFinishedCb(me.__errored, me.__transactionEndCallback);\n }\n },\n function (currentTask, err, done, rollback, commit) {\n if (err) {\n return true;\n }\n // `readonly` transactions never hold a real SQL transaction open\n // (see `WebSQLTransaction`'s constructor skipping `BEGIN;` for\n // them), so there's no commit/rollback round trip to defer --\n // `done` itself is the \"genuinely finished\" signal for them,\n // called synchronously once `requestsFinished` (via\n // `__callTransFinishedCb`) confirms no further request is\n // coming.\n me.__transFinishedCb = currentTask.readOnly\n ? function (err, cb) {\n done(err);\n if (cb) {\n cb();\n }\n }\n : function (err, cb) {\n if (err) {\n rollback(err, cb);\n } else {\n commit(cb);\n }\n };\n // Guarded by `__transFinishedCbFired`, not just `__completed`: this\n // installation can race `IDBTransaction.prototype.__callTransFinishedCb`'s\n // own `setTimeout` retry (see there) -- both watch for\n // `__transFinishedCb` to become installed and `__transactionEndCallback`\n // to become set, and either could observe both conditions first.\n // `__completed` alone isn't set until the resulting SQL commit/rollback\n // round trip actually finishes, which is too late to prevent the other\n // side from *also* firing in the meantime.\n if (me.__transactionEndCallback && !me.__completed && !me.__transFinishedCbFired) {\n me.__transFinishedCbFired = true;\n me.__transFinishedCb(me.__errored, me.__transactionEndCallback);\n }\n return false;\n }\n );\n\n /**\n * @returns {void}\n */\n function requestsFinished () {\n me.__active = false;\n me.__handlerActive = false;\n me.__requestsFinished = true;\n\n /**\n * @throws {Error}\n * @returns {void}\n */\n function complete () {\n me.__completed = true;\n if (CFG.DEBUG) { console.log('Transaction completed'); }\n const evt = createEvent('complete');\n try {\n me.__internal = true;\n me.dispatchEvent(evt);\n me.__internal = false;\n me.dispatchEvent(createEvent('__complete'));\n } catch (e) {\n me.__internal = false;\n // An error occurred in the \"oncomplete\" handler.\n // It's too late to call \"onerror\" or \"onabort\". Throw a global error instead.\n // (this may seem odd/bad, but it's how all native IndexedDB implementations work)\n me.__errored = true;\n throw e;\n } finally {\n activeTransactions.delete(me);\n me.__storeHandles = {};\n releaseFinishedTransaction(me);\n }\n }\n if (me.mode === 'readwrite' || me.mode === 'readonly') {\n if (me.__transactionFinished) {\n complete();\n return;\n }\n me.__transactionEndCallback = complete;\n // The underlying SQL driver's own \"queue empty\" check\n // (`nonstandardTransCb`, above) typically already ran and\n // installed the real `__transFinishedCb` *before* this point --\n // it fires synchronously once the last SQL batch's results are\n // processed, whereas `requestsFinished` can now be reached only\n // after `checkQueueEntry`'s bounded microtask wait, i.e. later.\n // When that happens, its check for `me.__transactionEndCallback`\n // (not yet set at that earlier time) finds nothing to do and\n // just returns, so nothing else will ever re-trigger the actual\n // commit unless this explicitly does so now. For `readonly`,\n // `__transFinishedCb` (installed by the `nonstandardTransCb`\n // passed to `readTransaction()`, above) just calls the WebSQL\n // driver's own `done` -- there's no real commit/rollback SQL\n // step for a `readonly` transaction.\n me.__callTransFinishedCb(me.__errored, complete);\n return;\n }\n const ev = /** @type {Event & {complete: () => void}} */ (\n createEvent('__beforecomplete')\n );\n ev.complete = complete;\n me.dispatchEvent(ev);\n }\n};\n\n/**\n * Creates a new IDBRequest for the transaction.\n * NOTE: The transaction is not queued until you call {@link IDBTransaction#__pushToQueue}.\n * @param {import('./IDBDatabase.js').IDBDatabaseFull} source\n * @this {IDBTransactionFull}\n * @returns {IDBRequest}\n */\nIDBTransaction.prototype.__createRequest = function (source) {\n const me = this;\n const request = IDBRequest.__createInstance();\n request.__source = source !== undefined ? source : me.db;\n request.__transaction = me;\n return request;\n};\n\n/**\n * @typedef {(\n * tx: import('websql-configurable/lib/websql/WebSQLTransaction.js').default,\n * args: unknown[],\n * success: (result?: unknown, req?: import('./IDBRequest.js').IDBRequestFull) => void,\n * error: (\n * tx: import('websql-configurable/lib/websql/WebSQLTransaction.js').default|Error|DOMException,\n * err?: Error & {code?: number}\n * ) => void,\n * executeNextRequest?: () => void\n * ) => void} SQLCallback\n */\n\n/**\n * Adds a callback function to the transaction queue.\n * @param {SQLCallback} callback\n * @param {unknown[]} args\n * @param {import('./IDBDatabase.js').IDBDatabaseFull|\n * import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull} source\n * @this {IDBTransactionFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBTransaction.prototype.__addToTransactionQueue = function (callback, args, source) {\n const request = this.__createRequest(source);\n this.__pushToQueue(request, callback, args);\n return request;\n};\n\n/**\n * Adds a callback function to the transaction queue without generating a\n * request.\n * @param {SQLCallback} callback\n * @param {unknown[]} args\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.__addNonRequestToTransactionQueue = function (callback, args) {\n this.__pushToQueue(null, callback, args);\n};\n\n/**\n * Adds an IDBRequest to the transaction queue.\n * @param {import('./IDBRequest.js').IDBRequestFull|null} request\n * @param {SQLCallback} callback\n * @param {unknown[]} args\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.__pushToQueue = function (request, callback, args) {\n this.__assertActive();\n this.__requests.push({\n op: callback,\n args,\n req: request\n });\n};\n\n/**\n * @throws {DOMException}\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.__assertActive = function () {\n if (!this.__active || !this.__handlerActive || this.__committed) {\n throw createDOMException('TransactionInactiveError', 'A request was placed against a transaction which is currently not active, or which is finished');\n }\n};\n\n/**\n * @throws {DOMException}\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.__assertWritable = function () {\n if (this.mode === 'readonly') {\n throw createDOMException('ReadOnlyError', 'The transaction is read only');\n }\n};\n\n/**\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.__assertVersionChange = function () {\n IDBTransaction.__assertVersionChange(this);\n};\n\n/**\n * Returns the specified object store.\n * @param {string} objectStoreName\n * @this {IDBTransactionFull}\n * @returns {IDBObjectStore}\n */\nIDBTransaction.prototype.objectStore = function (objectStoreName) {\n const me = this;\n if (!(me instanceof IDBTransaction)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('No object store name was specified');\n }\n IDBTransaction.__assertNotFinished(me);\n if (me.__objectStoreNames.indexOf(objectStoreName) === -1) { // eslint-disable-line unicorn/prefer-includes -- Not supported\n throw createDOMException('NotFoundError', objectStoreName + ' is not participating in this transaction');\n }\n const store = me.db.__objectStores[objectStoreName];\n if (!store) {\n throw createDOMException('NotFoundError', objectStoreName + ' does not exist in ' + me.db.name);\n }\n\n if (!Object.hasOwn(me.__storeHandles, objectStoreName) ||\n // These latter conditions are to allow store\n // recreation to create new clone object\n me.__storeHandles[objectStoreName].__pendingDelete ||\n me.__storeHandles[objectStoreName].__deleted) {\n me.__storeHandles[objectStoreName] = IDBObjectStore.__clone(store, me);\n }\n return me.__storeHandles[objectStoreName];\n};\n\n/**\n *\n * @param {Error|DOMException|null} err\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.__abortTransaction = function (err) {\n const me = this;\n logError('Error', 'An error occurred in a transaction', err);\n if (me.__errored) {\n // We've already called \"onerror\", \"onabort\", or thrown, so don't do it again.\n return;\n }\n me.__errored = true;\n\n if (me.mode === 'versionchange') { // Steps for aborting an upgrade transaction\n me.db.__version = me.db.__oldVersion;\n me.db.__objectStoreNames = me.db.__oldObjectStoreNames;\n me.__objectStoreNames = me.db.__oldObjectStoreNames;\n Object.values(me.db.__objectStores).concat(\n Object.values(me.__storeHandles)\n ).forEach(function (store) {\n // Store was already created so we restore to name before the rename\n if ('__pendingName' in store &&\n me.db.__oldObjectStoreNames.indexOf(/** @type {string} */ (store.__pendingName)) > -1 // eslint-disable-line unicorn/prefer-includes -- Not supported\n ) {\n store.__name = store.__originalName;\n }\n store.__indexNames = store.__oldIndexNames;\n delete store.__pendingDelete;\n Object.values(store.__indexes).concat(\n Object.values(store.__indexHandles)\n ).forEach(function (index) {\n // Index was already created so we restore to name before the rename\n if ('__pendingName' in index &&\n store.__oldIndexNames.indexOf(/** @type {string} */ (index.__pendingName)) > -1 // eslint-disable-line unicorn/prefer-includes -- Not supported\n ) {\n index.__name = index.__originalName;\n }\n delete index.__pendingDelete;\n });\n });\n }\n me.__active = false; // Setting here and in requestsFinished for https://github.com/w3c/IndexedDB/issues/87\n activeTransactions.delete(me);\n\n if (err !== null) {\n me.__error = err;\n }\n\n if (me.__requestsFinished && err !== null) {\n // The transaction has already completed, so we can't call \"onerror\" or \"onabort\".\n // So throw the error instead. `err` is only ever `null` here via\n // `IDBTransaction.prototype.abort`'s own `__abortTransaction(null)`\n // call, which now checks `__requestsFinished` itself first and\n // throws `InvalidStateError` synchronously before ever reaching\n // this point -- so this guard is just defense in depth against\n // `err` somehow being `null` some other way, not something this\n // path should see in practice.\n setTimeout(() => {\n throw err;\n }, 0);\n }\n\n /**\n * @param {import('websql-configurable/lib/websql/WebSQLTransaction.js').default|null} [tx]\n * @param {import('websql-configurable/lib/websql/WebSQLResultSet.js').default|(Error & {code?: number})|{code: 0}} [errOrResult]\n * @returns {void}\n */\n function abort (tx, errOrResult) {\n if (!tx) {\n if (CFG.DEBUG) { console.log('Rollback not possible due to missing transaction', me); }\n } else if (errOrResult && 'code' in errOrResult && typeof errOrResult.code === 'number') {\n if (CFG.DEBUG) { console.log('Rollback erred; feature is probably not supported as per WebSQL', me); }\n } else if (CFG.DEBUG) { console.log('Rollback succeeded', me); }\n\n me.dispatchEvent(createEvent('__preabort'));\n me.__requests.filter(function (q, i, arr) { // eslint-disable-line promise/no-promise-in-callback -- Sync promise\n return q.req && !q.req.__done && [i, -1].includes(\n arr.map((q) => q.req).lastIndexOf(q.req)\n );\n }).reduce(function (promises, q) {\n // We reduce to a chain of promises to be queued in order, so we cannot\n // use `Promise.all`, and I'm unsure whether `setTimeout` currently\n // behaves first-in-first-out with the same timeout so we could\n // just use a `forEach`.\n return promises.then(function () {\n if (!q.req) { // TS guard\n throw new Error('Missing request');\n }\n q.req.__done = true;\n q.req.__result = undefined;\n q.req.__error = createDOMException('AbortError', 'A request was aborted (an unfinished request).');\n const reqEvt = createEvent('error', q.req.__error, {bubbles: true, cancelable: true});\n return new SyncPromise(\n /** @type {(resolve: (value?: unknown) => void) => void} */\n (resolve) => {\n setTimeout(() => {\n if (!q.req) { // TS guard\n throw new Error('Missing request');\n }\n q.req.dispatchEvent(reqEvt); // No need to catch errors\n resolve();\n }, 0);\n }\n );\n });\n }, SyncPromise.resolve(undefined)).then(function () { // Also works when there are no pending requests\n const evt = createEvent('abort', err, {bubbles: true, cancelable: false});\n setTimeout(() => {\n me.__abortFinished = true;\n me.dispatchEvent(evt);\n me.__storeHandles = {};\n me.dispatchEvent(createEvent('__abort'));\n releaseFinishedTransaction(me);\n }, 0);\n return undefined;\n }).catch((err) => {\n console.log('Abort error');\n throw err;\n });\n }\n\n me.__transFinishedCb(true, function (rollback) {\n if (rollback && me.__tx) { // Not supported in standard SQL (and WebSQL errors should\n // rollback automatically), but for Node.js, etc., we give chance for\n // manual aborts which would otherwise not work.\n if (me.mode === 'readwrite') {\n if (me.__transactionFinished) {\n abort();\n return;\n }\n me.__transactionEndCallback = abort;\n return;\n }\n try {\n me.__tx.executeSql(\n 'ROLLBACK',\n [],\n abort,\n /** @type {import('websql-configurable/lib/websql/WebSQLTransaction.js').SqlErrorCallback} */ (abort)\n ); // Not working in some circumstances, even in Node\n } catch (err) {\n // Browser errs when transaction has ended and since it most likely already erred here,\n // we call to abort\n abort();\n }\n } else {\n abort(null, {code: 0});\n }\n });\n};\n\n/**\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.abort = function () {\n const me = this;\n if (!(me instanceof IDBTransaction)) {\n throw new TypeError('Illegal invocation');\n }\n if (CFG.DEBUG) { console.log('The transaction was aborted', me); }\n IDBTransaction.__assertNotFinished(me);\n if (me.__committed) {\n throw createDOMException('InvalidStateError', 'The transaction has already been committed');\n }\n if (me.__requestsFinished) {\n // All requests have already finished and the transaction is\n // auto-committing (the async SQL commit round trip just hasn't\n // resolved yet) -- too late to abort per spec, even though\n // `__committed` itself isn't set until that round trip actually\n // finishes.\n throw createDOMException('InvalidStateError', 'The transaction is already committing');\n }\n me.__abortTransaction(null);\n};\n\n/**\n * @see https://www.w3.org/TR/IndexedDB/#dom-idbtransaction-commit\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.commit = function () {\n const me = this;\n if (!(me instanceof IDBTransaction)) {\n throw new TypeError('Illegal invocation');\n }\n if (!me.__active || !me.__handlerActive || me.__committed) {\n throw createDOMException('InvalidStateError', 'Failed to execute \\'commit\\' on \\'IDBTransaction\\': The transaction is not active.');\n }\n if (CFG.DEBUG) { console.log('The transaction was explicitly committed', me); }\n me.__committed = true;\n};\n\nIDBTransaction.prototype[Symbol.toStringTag] = 'IDBTransactionPrototype';\n\n/**\n *\n * @param {IDBTransactionFull|null|undefined} tx\n * @returns {void}\n */\nIDBTransaction.__assertVersionChange = function (tx) {\n if (!tx || tx.mode !== 'versionchange') {\n throw createDOMException('InvalidStateError', 'Not a version transaction');\n }\n};\n/**\n *\n * @param {IDBTransactionFull|null} tx\n * @throws {DOMException}\n * @returns {void}\n */\nIDBTransaction.__assertNotVersionChange = function (tx) {\n if (tx && tx.mode === 'versionchange') {\n throw createDOMException('InvalidStateError', 'Cannot be called during a version transaction');\n }\n};\n\n/**\n *\n * @param {IDBTransactionFull|null|undefined} tx\n * @throws {DOMException}\n * @returns {void}\n */\nIDBTransaction.__assertNotFinished = function (tx) {\n if (!tx || tx.__completed || tx.__abortFinished || tx.__errored) {\n throw createDOMException('InvalidStateError', 'Transaction finished by commit or abort');\n }\n};\n\n// object store methods behave differently: see https://github.com/w3c/IndexedDB/issues/192\n/**\n *\n * @param {IDBTransactionFull} tx\n * @returns {void}\n */\nIDBTransaction.__assertNotFinishedObjectStoreMethod = function (tx) {\n try {\n IDBTransaction.__assertNotFinished(tx);\n } catch (err) {\n if (tx && !tx.__completed && !tx.__abortFinished) {\n throw createDOMException('TransactionInactiveError', 'A request was placed against a transaction which is currently not active, or which is finished');\n }\n throw err;\n }\n};\n\n/**\n *\n * @param {IDBTransactionFull|null|undefined} tx\n * @throws {DOMException}\n * @returns {void}\n */\nIDBTransaction.__assertActive = function (tx) {\n if (!tx || !tx.__active || !tx.__handlerActive || tx.__committed) {\n throw createDOMException('TransactionInactiveError', 'A request was placed against a transaction which is currently not active, or which is finished');\n }\n};\n\n/**\n * Used by our `EventTarget.prototype` library to implement bubbling/capturing.\n * @this {IDBTransactionFull}\n * @returns {import('./IDBDatabase.js').IDBDatabaseFull}\n */\nIDBTransaction.prototype.__getParent = function () {\n return this.db;\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.defineOuterInterface(IDBTransaction.prototype, listeners);\nutil.defineReadonlyOuterInterface(IDBTransaction.prototype, readonlyProperties);\nutil.setOperationNames(IDBTransaction.prototype);\n\nObject.defineProperty(IDBTransaction.prototype, 'constructor', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: IDBTransaction\n});\n\nObject.defineProperty(IDBTransaction, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nIDBTransaction.activeTransactions = activeTransactions;\n\nexport default IDBTransaction;\n","class TypesonPromise{constructor(e){this.p=new Promise(e)}}TypesonPromise.__typeson__type__=\"TypesonPromise\",\"undefined\"!=typeof Symbol&&Object.defineProperty(TypesonPromise.prototype,Symbol.toStringTag,{get:()=>\"TypesonPromise\"}),TypesonPromise.prototype.then=function(e,t){return new TypesonPromise((r,n)=>{this.p.then(function(t){r(e?e(t):t)}).catch(function(e){return t?t(e):Promise.reject(e)}).then(r,n)})},TypesonPromise.prototype.catch=function(e){return this.then(void 0,e)},TypesonPromise.resolve=function(e){return new TypesonPromise(t=>{t(e)})},TypesonPromise.reject=function(e){return new TypesonPromise((t,r)=>{r(e)})},TypesonPromise.all=function(e){return new TypesonPromise(function(t,r){Promise.all(e.map(e=>e?.constructor&&\"__typeson__type__\"in e.constructor&&\"TypesonPromise\"===e.constructor.__typeson__type__?e.p:e)).then(t,r)})},TypesonPromise.race=function(e){return new TypesonPromise(function(t,r){Promise.race(e.map(e=>e?.constructor&&\"__typeson__type__\"in e.constructor&&\"TypesonPromise\"===e.constructor.__typeson__type__?e.p:e)).then(t,r)})},TypesonPromise.allSettled=function(e){return new TypesonPromise(function(t,r){Promise.allSettled(e.map(e=>e?.constructor&&\"__typeson__type__\"in e.constructor&&\"TypesonPromise\"===e.constructor.__typeson__type__?e.p:e)).then(t,r)})};const{hasOwn:e}=Object,t=Object.getPrototypeOf;function isThenable(e,t){return isObject(e)&&\"function\"==typeof e.then&&(!t||\"function\"==typeof e.catch)}function toStringTag(e){return Object.prototype.toString.call(e).slice(8,-1)}function hasConstructorOf(r,n){if(!r||\"object\"!=typeof r)return!1;const o=t(r);if(!o)return null===n;const a=e(o,\"constructor\")&&o.constructor;return\"function\"!=typeof a?null===n:n===a||null!==n&&Function.prototype.toString.call(a)===Function.prototype.toString.call(n)||\"function\"==typeof n&&\"string\"==typeof a.__typeson__type__&&a.__typeson__type__===n.__typeson__type__}function isPlainObject(e){return!(!e||\"Object\"!==toStringTag(e))&&(!t(e)||hasConstructorOf(e,Object))}function isUserObject(e){if(!e||\"Object\"!==toStringTag(e))return!1;const r=t(e);return!r||hasConstructorOf(e,Object)||isUserObject(r)}function isObject(e){return null!==e&&\"object\"==typeof e}function escapeKeyPathComponent(e){return e.replaceAll(\"''\",\"''''\").replace(/^$/u,\"''\").replaceAll(\"~\",\"~0\").replaceAll(\".\",\"~1\")}function unescapeKeyPathComponent(e){return e.replaceAll(\"~1\",\".\").replaceAll(\"~0\",\"~\").replace(/^''$/u,\"\").replaceAll(\"''''\",\"''\")}function getByKeyPath(t,r,n){if(\"\"===r)return t;if(null===t||\"object\"!=typeof t)throw new TypeError(\"Unexpected non-object type\");const o=r.indexOf(\".\"),a=unescapeKeyPathComponent(-1===o?r:r.slice(0,o));if(!n||e(t,a)){if(-1!==o){const e=t[a];return void 0===e?void 0:getByKeyPath(e,r.slice(o+1),n)}return t[a]}}function setAtKeyPath(t,r,n,o){if(\"\"===r)return n;let a=t,s=r;for(;;){if(!a||\"object\"!=typeof a)throw new TypeError(\"Unexpected non-object type\");const r=s.indexOf(\".\"),i=unescapeKeyPathComponent(-1===r?s:s.slice(0,r));if(\"__proto__\"===i)throw new TypeError(\"Invalid property\");if(-1===r)return a[i]=n,t;if(o&&!e(a,i))throw new TypeError(\"Invalid property\");a=a[i],s=s.slice(r+1)}}function getJSONType(e){return null===e?\"null\":Array.isArray(e)?\"array\":typeof e}\n/**\n * @file Typeson - JSON with types.\n * @license The MIT License (MIT)\n * @copyright (c) 2016-2018 David Fahlander, Brett Zamir\n */const{keys:r,hasOwn:n}=Object,{isArray:o}=Array,a=[\"type\",\"replaced\",\"iterateIn\",\"iterateUnsetNumeric\",\"iterateSymbols\",\"addLength\"];function setOwnEnumerable(e,t,r){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0})}const s=[\"asyncIterator\",\"hasInstance\",\"isConcatSpreadable\",\"iterator\",\"match\",\"matchAll\",\"replace\",\"search\",\"species\",\"split\",\"toPrimitive\",\"toStringTag\",\"unscopables\"];function nestedPathsFirst(e,t){if(\"\"===e.keypath)return-1;let r=e.keypath.match(/\\./gu)??0,n=t.keypath.match(/\\./gu)??0;return r&&(r=r.length),n&&(n=n.length),r>n?-1:r<n?1:e.keypath<t.keypath?-1:e.keypath>t.keypath?1:0}class Typeson{constructor(e){this.options=e,this.plainObjectReplacers=[],this.nonplainObjectReplacers=[],this.revivers={},this.types={},this.symbolsByName=Object.create(null),this.symbolsByValue=new Map;const t=e?.symbols;t&&Object.entries(t).forEach(([e,t])=>{if(\"symbol\"!=typeof t)throw new TypeError(\"Non-symbol value supplied for `symbols` entry: \"+e);this.symbolsByName[e]=t,this.symbolsByValue.set(t,e)})}stringify(e,t,r,n){n={...this.options,...n,stringification:!0};const a=this.encapsulate(e,null,n);return o(a)?JSON.stringify(a[0],t,r):a.then(e=>JSON.stringify(e,t,r))}stringifySync(e,t,r,n){return this.stringify(e,t,r,{throwOnBadSyncType:!0,...n,sync:!0})}stringifyAsync(e,t,r,n){return this.stringify(e,t,r,{throwOnBadSyncType:!0,...n,sync:!1})}parse(e,t,r){return r={...this.options,...r,parse:!0},this.revive(JSON.parse(e,t),r)}parseSync(e,t,r){return this.parse(e,t,{throwOnBadSyncType:!0,...r,sync:!0})}parseAsync(e,t,r){return this.parse(e,t,{throwOnBadSyncType:!0,...r,sync:!1})}specialTypeNames(e,t,r={}){return this.encapsulate(e,t,{...r,returnTypeNames:!0})}rootTypeName(e,t,r={}){return this.encapsulate(e,t,{...r,iterateNone:!0})}encapsulate(e,t,i){const c={sync:!0,...this.options,...i},{sync:l}=c,y={},u={},p=[],f=[],d=[],m=!(\"cyclic\"in c)||c.cyclic,{encapsulateObserver:h,encapsulateError:b}=c,finish=e=>{const t=Object.values(y);if(c.iterateNone)return t.length?t[0]:getJSONType(e);if(c.returnTypeNames)return!!t.length&&[...new Set(t)];const r=Object.keys(u).length>0,o=isObject(e)&&(n(e,\"$types\")||n(e,\"$symbolKeys\"));return r||t.length?(!o&&e&&isPlainObject(e)?t.length&&(e.$types=y):e={$:e,$types:{$:y}},r&&(e.$symbolKeys=u)):o&&(e={$:e,$types:!0}),e},checkPromises=async(e,t)=>{const r=await Promise.all(t.map(e=>e[1].p));return await Promise.all(r.map(async function(r){const n=[],[o]=t.splice(0,1),[a,,s,i,c,l,y]=o,u=_encapsulate(a,r,s,i,n,!0,y),p=hasConstructorOf(u,TypesonPromise);return a&&p?(setOwnEnumerable(c,l,await u.p),checkPromises(e,n)):(a?setOwnEnumerable(c,l,u):e=p?u.p:u,checkPromises(e,n))})),e},_adaptBuiltinStateObjectProperties=(e,t,r)=>{Object.assign(e,t);const n=a.map(t=>{const r=e[t];return delete e[t],r});r(),a.forEach((t,r)=>{e[t]=n[r]})},_encapsulate=(e,t,a,i,l,d,m)=>{let g,v={};const w=h?function(r){const n=m??i.type??getJSONType(t);h(Object.assign(r??v,{keypath:e,value:t,cyclic:a,stateObj:i,promisesData:l,resolvingTypesonPromise:d,awaitingTypesonPromise:hasConstructorOf(t,TypesonPromise)},{type:n}))}:null,getEncapsulatedValue=(e,t,r)=>{try{return{value:_encapsulate(e,t[r],Boolean(a),i,l,d)}}catch(n){if(!b)throw n;const o=m??i.type??getJSONType(t),a=b({keypath:e,error:n,parent:t,key:r,stateObj:i,type:o});if(!a)throw n;if(\"substitute\"in a)return{value:a.substitute,substitute:!0};if(a.ignore)return;throw n}};if([\"string\",\"boolean\",\"number\",\"undefined\"].includes(typeof t))return void 0===t||t===1/0||0===t||t===-1/0||Number.isNaN(t)?(g=i.replaced?t:replace(e,t,i,l,!1,d,w),g!==t&&(v={replaced:g})):g=t,w&&w(),g;if(null===t)return w&&w(),t;if(a&&t&&\"object\"==typeof t&&!i.iterateIn&&!i.iterateUnsetNumeric){const r=p.indexOf(t);if(-1!==r)return y[e]=\"#\",w&&w({cyclicKeypath:f[r]}),\"#\"+f[r];!0===a&&(p.push(t),f.push(e))}const O=isPlainObject(t),A=o(t),T=(O||A)&&(!this.plainObjectReplacers.length||i.replaced)||i.iterateIn?t:replace(e,t,i,l,O||A,null,w);let S;if(T!==t?(g=T,v={replaced:T}):\"\"===e&&hasConstructorOf(t,TypesonPromise)?(l.push([e,t,a,i,void 0,void 0,i.type]),g=t):A&&\"object\"!==i.iterateIn||\"array\"===i.iterateIn?(S=new Array(t.length),v={clone:S}):!O&&(\"object\"!=typeof t||\"toJSON\"in t||hasConstructorOf(t,TypesonPromise)||hasConstructorOf(t,Promise)||hasConstructorOf(t,ArrayBuffer))&&\"object\"!==i.iterateIn?g=t:(S={},i.addLength&&(S.length=t.length),v={clone:S}),w&&w(),c.iterateNone)return S??g;if(!S)return g;if(i.iterateIn){for(const r in t){const o={ownKeys:n(t,r)};_adaptBuiltinStateObjectProperties(i,o,()=>{const n=e+(e?\".\":\"\")+escapeKeyPathComponent(r),o=getEncapsulatedValue(n,t,r),s=o&&o.value;hasConstructorOf(s,TypesonPromise)?l.push([n,s,Boolean(a),i,S,r,i.type]):o&&(void 0!==s||\"substitute\"in o)&&setOwnEnumerable(S,r,s)})}w&&w({endIterateIn:!0,end:!0})}else r(t).forEach(function(r){const n=e+(e?\".\":\"\")+escapeKeyPathComponent(r);_adaptBuiltinStateObjectProperties(i,{ownKeys:!0},()=>{const e=getEncapsulatedValue(n,t,r),o=e&&e.value;hasConstructorOf(o,TypesonPromise)?l.push([n,o,Boolean(a),i,S,r,i.type]):e&&(void 0!==o||\"substitute\"in e)&&setOwnEnumerable(S,r,o)})}),w&&w({endIterateOwn:!0,end:!0}),(i.iterateSymbols||c.iterateSymbols)&&(Object.getOwnPropertySymbols(t).filter(e=>Object.prototype.propertyIsEnumerable.call(t,e)).forEach(r=>{const n=function resolveSymbolIdentity(e,t){const r=Symbol.keyFor(e);if(void 0!==r)return{for:r};const n=s.find(t=>Symbol[t]===e);if(n)return{wellKnown:n};const o=t.get(e);return void 0!==o?{registered:o}:null}(r,this.symbolsByValue);if(!n){if(c.throwOnUnregisteredSymbol)throw new TypeError(\"Cannot serialize a Symbol-keyed property whose Symbol has no portable identity (not global, not well-known, and not in the `symbols` option): \"+String(r));return}const o=u[e]??=[],y={key:n};o.push(y);const p=o.length-1,f=`$symbolKeys.${escapeKeyPathComponent(e)}.${String(p)}.value`,d={value:t[r]};_adaptBuiltinStateObjectProperties(i,{ownKeys:!0},()=>{const e=getEncapsulatedValue(f,d,\"value\"),t=e&&e.value;hasConstructorOf(t,TypesonPromise)?l.push([f,t,Boolean(a),i,y,\"value\",i.type]):e&&(void 0!==t||\"substitute\"in e)&&setOwnEnumerable(y,\"value\",t)})}),w&&w({endIterateSymbols:!0,end:!0}));if(i.iterateUnsetNumeric){const r=t.length;for(let n=0;n<r;n++){if(n in t)continue;const r=`${e}${e?\".\":\"\"}${String(n)}`;_adaptBuiltinStateObjectProperties(i,{ownKeys:!1},()=>{const e=_encapsulate(r,void 0,Boolean(a),i,l,d);hasConstructorOf(e,TypesonPromise)?l.push([r,e,Boolean(a),i,S,n,i.type]):void 0!==e&&setOwnEnumerable(S,n,e)})}w&&w({endIterateUnsetNumeric:!0,end:!0})}return S},replace=(e,t,r,n,o,a,s)=>{const i=o?this.plainObjectReplacers:this.nonplainObjectReplacers;let c=i.length;for(;c--;){const o=i[c];if(o.test(t,r)){const{type:i}=o;if(Object.hasOwn(this.revivers,i)){const t=y[e];y[e]=t?[i].concat(t):i}if(Object.assign(r,{type:i,replaced:!0}),(l||!o.replaceAsync)&&!o.replace)return s&&s({typeDetected:!0}),_encapsulate(e,t,m&&\"readonly\",r,n,a,i);let c;if(s&&s({replacing:!0}),l||!o.replaceAsync){if(void 0===o.replace)throw new TypeError(\"Missing replacer\");c=o.replace(t,r)}else c=o.replaceAsync(t,r);return _encapsulate(e,c,m&&\"readonly\",r,n,a,i)}}return t},g=_encapsulate(\"\",e,m,t??{},d);if(d.length)return l&&c.throwOnBadSyncType?(()=>{throw new TypeError(\"Sync method requested but async result obtained\")})():Promise.resolve(checkPromises(g,d)).then(finish);if(!l&&c.throwOnBadSyncType)throw new TypeError(\"Async method requested but sync result obtained\");return l&&c.stringification?[finish(g)]:l?finish(g):Promise.resolve(finish(g))}encapsulateSync(e,t,r){return this.encapsulate(e,t,{throwOnBadSyncType:!0,...r,sync:!0})}encapsulateAsync(e,t,r){return this.encapsulate(e,t,{throwOnBadSyncType:!0,...r,sync:!1})}revive(e,t){const a={sync:!0,...this.options,...t},{sync:i}=a;function finishRevival(e){if(i)return e;if(a.throwOnBadSyncType)throw new TypeError(\"Async method requested but sync result obtained\");return Promise.resolve(e)}if(!e||\"object\"!=typeof e||Array.isArray(e))return finishRevival(e);let c=e.$types;if(!0===c)return finishRevival(e.$);const l=e.$symbolKeys;let y=void 0!==l;if(!c||\"object\"!=typeof c||Array.isArray(c)){if(!l)return finishRevival(e);c={}}const u=[],p=Object.create(null),f={};let d=!0;c.$&&isPlainObject(c.$)&&(e=e.$,c=c.$,d=!1,y=!1,void 0!==l&&isObject(e)&&!n(e,\"$symbolKeys\")&&(e.$symbolKeys=l,y=!0));const executeReviver=(e,t)=>{const[r]=this.revivers[e]??[];if(!r)throw new Error(\"Unregistered type: \"+e);if(i&&!(\"revive\"in r))return t;if(!i&&r.reviveAsync)return r.reviveAsync(t,f);if(r.revive)return r.revive(t,f);throw new Error(\"Missing reviver\")},m=[];function checkUndefined(e){return hasConstructorOf(e,Undefined)?void 0:e}const reHomeSymbolKeys=e=>{if(!isObject(e))return;const t=y?e.$symbolKeys:l;t&&(Object.entries(t).forEach(([t,r])=>{const o=getByKeyPath(e,t,!0);isObject(o)&&r.forEach(e=>{if(!n(e,\"value\"))return;const t=function resolveSymbolFromIdentity(e,t){if(\"for\"in e)return Symbol.for(e.for);if(\"wellKnown\"in e){const t=s.find(t=>t===e.wellKnown);if(!t)throw new Error(\"Unknown well-known Symbol: \"+e.wellKnown);return Symbol[t]}if(!n(t,e.registered))throw new Error(\"Unregistered symbol: \"+e.registered);return t[e.registered]}(e.key,this.symbolsByName),r=checkUndefined(e.value);e.descriptor?Object.defineProperty(o,t,{configurable:!0,enumerable:!0,writable:!0,...e.descriptor,value:r}):o[t]=r})}),y&&delete e.$symbolKeys)},h=(()=>{if(!c)throw new Error(\"Found bad `types`\");const t=[];if(Object.entries(c).forEach(([e,r])=>{\"#\"!==r&&[].concat(r).forEach(r=>{const[,{plain:n}]=this.revivers[r]??[null,{}];n&&(t.push({keypath:e,type:r}),delete c[e])})}),t.length)return t.sort(nestedPathsFirst),t.reduce(function reducer(t,{keypath:r,type:n}){if(isThenable(t))return t.then(e=>reducer(e,{keypath:r,type:n}));let o=getByKeyPath(e,r,!0);if(o=executeReviver(n,o),hasConstructorOf(o,TypesonPromise))return o.then(t=>{const n=setAtKeyPath(e,r,t,!0);n===t&&(e=n)});const a=setAtKeyPath(e,r,o,!0);a===o&&(e=a)},void 0)})();let b;return hasConstructorOf(h,TypesonPromise)?b=h.then(()=>e):(b=function _revive(e,t,a,s,l){if(d&&\"$types\"===e)return;const y=m.length,f=n(c,e)?c[e]:void 0,h=o(t);if(h||isPlainObject(t)){const o=h?new Array(t.length):{};for(r(t).forEach(r=>{const n=_revive(e+(e?\".\":\"\")+escapeKeyPathComponent(r),t[r],a??o,o,r),set=e=>(hasConstructorOf(e,Undefined)?setOwnEnumerable(o,r,void 0):void 0!==e&&setOwnEnumerable(o,r,e),e);hasConstructorOf(n,TypesonPromise)?m.push(n.then(e=>set(e))):set(n)}),t=o;u.length;){const[[e,t,r,o]]=u,a=n(p,t),s=a?p[t]:getByKeyPath(e,t,!0);if(!a&&void 0===s)break;setOwnEnumerable(r,o,s),u.shift()}}if(!f)return p[e]=t,t;if(\"#\"===f){const e=t.slice(1),r=n(p,e),o=r?p[e]:getByKeyPath(a,e,!0);return r||void 0!==o||u.push([a,e,s,l]),o}const applyType=t=>{const r=[].concat(f).reduce(function reducer(e,t){if(hasConstructorOf(e,TypesonPromise))return e.then(e=>reducer(e,t));if(\"string\"!=typeof t)throw new TypeError(\"Bad type JSON\");return executeReviver(t,e)},t);return hasConstructorOf(r,TypesonPromise)?r.then(t=>(p[e]=t,t)):(p[e]=r,r)};return!i&&m.length>y?TypesonPromise.all(m.slice(y)).then(()=>applyType(t)):applyType(t)}(\"\",e,null),m.length&&(b=TypesonPromise.resolve(b).then(e=>TypesonPromise.all([e,...m])).then(([e])=>e))),l&&(isThenable(b)?b=b.then(e=>(reHomeSymbolKeys(e),e)):reHomeSymbolKeys(b)),isThenable(b)?i&&a.throwOnBadSyncType?(()=>{throw new TypeError(\"Sync method requested but async result obtained\")})():hasConstructorOf(b,TypesonPromise)?b.p.then(checkUndefined):b:!i&&a.throwOnBadSyncType?(()=>{throw new TypeError(\"Async method requested but sync result obtained\")})():i?checkUndefined(b):Promise.resolve(checkUndefined(b))}reviveSync(e,t){return this.revive(e,{throwOnBadSyncType:!0,...t,sync:!0})}reviveAsync(e,t){return this.revive(e,{throwOnBadSyncType:!0,...t,sync:!1})}register(e,t){const n=t??{},reg=e=>{o(e)?e.forEach(e=>{reg(e)}):r(e).forEach(t=>{if(\"#\"===t)throw new TypeError(\"# cannot be used as a type name as it is reserved for cyclic objects\");if(i.includes(t))throw new TypeError(\"Plain JSON object types are reserved as type names\");let r=e[t];if([this.plainObjectReplacers,this.nonplainObjectReplacers].forEach(e=>{const r=e.findIndex(e=>e.type===t);-1!==r&&e.splice(r,1)}),delete this.revivers[t],delete this.types[t],\"function\"==typeof r){const e=r;r={test:t=>t&&t.constructor===e,replace:e=>({...e}),revive:t=>Object.assign(Object.create(e.prototype),t)}}else if(o(r)){const[e,t,n]=r;r={test:e,replace:t,revive:n}}if(!r?.test)return;const a={type:t,test:r.test.bind(r)};r.replace&&(a.replace=r.replace.bind(r)),r.replaceAsync&&(a.replaceAsync=r.replaceAsync.bind(r));const s=\"number\"==typeof n.fallback?n.fallback:n.fallback?0:1/0;if(r.testPlainObjects?this.plainObjectReplacers.splice(s,0,a):this.nonplainObjectReplacers.splice(s,0,a),r.revive||r.reviveAsync){const e={};r.revive&&(e.revive=r.revive.bind(r)),r.reviveAsync&&(e.reviveAsync=r.reviveAsync.bind(r)),this.revivers[t]=[e,{plain:r.testPlainObjects}]}this.types[t]=r})};return[].concat(e).forEach(e=>{reg(e)}),this}}class Undefined{}Undefined.__typeson__type__=\"TypesonUndefined\";const i=[\"null\",\"boolean\",\"number\",\"string\",\"array\",\"object\"];for(var c=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",l=new Uint8Array(256),y=0;y<64;y++)l[c.codePointAt(y)]=y;var u=function encode(e,t,r){null==r&&(r=e.byteLength);for(var n=new Uint8Array(e,0,r),o=n.length,a=\"\",s=0;s<o;s+=3)a+=c[n[s]>>2],a+=c[(3&n[s])<<4|n[s+1]>>4],a+=c[(15&n[s+1])<<2|n[s+2]>>6],a+=c[63&n[s+2]];return o%3==2?a=a.slice(0,-1)+\"=\":o%3==1&&(a=a.slice(0,-2)+\"==\"),a},p=function decode(e,t){var r=e.length;if(r%4)throw new Error(\"Bad base64 length: not divisible by four\");var n,o,a,s,i=.75*e.length,c=0;\"=\"===e[e.length-1]&&(i--,\"=\"===e[e.length-2]&&i--);for(var y=new ArrayBuffer(i,t),u=new Uint8Array(y),p=0;p<r;p+=4)n=l[e.codePointAt(p)],o=l[e.codePointAt(p+1)],a=l[e.codePointAt(p+2)],s=l[e.codePointAt(p+3)],u[c++]=n<<2|o>>4,u[c++]=(15&o)<<4|a>>2,u[c++]=(3&a)<<6|63&s;return y};const f={arraybuffer:{test:e=>\"ArrayBuffer\"===toStringTag(e),replace(e,t){t.buffers||(t.buffers=[]);const r=t.buffers.indexOf(e);return-1!==r?{index:r}:(t.buffers.push(e),{s:u(e),maxByteLength:e.maxByteLength,resizable:e.resizable})},revive(e,t){if(t.buffers||(t.buffers=[]),Object.hasOwn(e,\"index\"))return t.buffers[e.index];const r=p(e.s,e.resizable?{maxByteLength:e.maxByteLength}:void 0);return t.buffers.push(r),r}}},d={audiodata:{test:e=>\"AudioData\"===toStringTag(e),replace(e){const{format:t,sampleRate:r,numberOfFrames:n,numberOfChannels:o,timestamp:a}=e,s=t.endsWith(\"-planar\")?o:1,i=[];let c=0;for(let t=0;t<s;t++){const r=e.allocationSize({planeIndex:t});i.push(r),c+=r}const l=new ArrayBuffer(c);let y=0;for(let t=0;t<s;t++){const r=new Uint8Array(l,y,i[t]);e.copyTo(r,{planeIndex:t}),y+=i[t]}return{format:t,sampleRate:r,numberOfFrames:n,numberOfChannels:o,timestamp:a,data:l}},revive:({format:e,sampleRate:t,numberOfFrames:r,numberOfChannels:n,timestamp:o,data:a})=>new AudioData({format:e,sampleRate:t,numberOfFrames:r,numberOfChannels:n,timestamp:o,data:new Uint8Array(a)})}},m={bigintObject:{test:e=>\"object\"==typeof e&&hasConstructorOf(e,BigInt),replace:String,revive:e=>new Object(BigInt(e))}},h={bigint:{test:e=>\"bigint\"==typeof e,replace:String,revive:e=>BigInt(e)}};function arraybuffer2string(e){return new Uint8Array(e).reduce((e,t)=>e+String.fromCodePoint(t),\"\")}function string2arraybuffer(e){const t=new Uint8Array(e.length);for(let r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return t.buffer}const b={blob:{test:e=>\"Blob\"===toStringTag(e),replace(e){const t=new XMLHttpRequest;if(t.overrideMimeType(\"text/plain; charset=x-user-defined\"),t.open(\"GET\",URL.createObjectURL(e),!1),t.send(),200!==t.status&&0!==t.status)throw new Error(\"Bad Blob access: \"+t.status);return{type:e.type,stringContents:t.responseText}},revive(e){const{type:t,stringContents:r}=e;return new Blob([string2arraybuffer(r)],{type:t})},replaceAsync:e=>new TypesonPromise((t,r)=>{const n=new FileReader;n.addEventListener(\"load\",()=>{t({type:e.type,stringContents:arraybuffer2string(n.result)})}),n.addEventListener(\"error\",()=>{r(n.error)}),n.readAsArrayBuffer(e)})}};function generateUUID(){let e=Date.now();return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replaceAll(/[xy]/gu,function(t){const r=Math.trunc((e+16*Math.random())%16);return e=Math.floor(e/16),(\"x\"===t?r:3&r|8).toString(16)})}const g={},v={cloneable:{test:e=>e&&\"object\"==typeof e&&\"function\"==typeof e[Symbol.for(\"cloneEncapsulate\")],replace(e){const t=e[Symbol.for(\"cloneEncapsulate\")](),r=generateUUID();return g[r]=e,{uuid:r,encapsulated:t}},revive(e){const{uuid:t,encapsulated:r}=e;return g[t][Symbol.for(\"cloneRevive\")](r)}}},w={cryptokey:{test:e=>\"CryptoKey\"===toStringTag(e)&&e.extractable,replaceAsync:e=>new TypesonPromise(async(t,r)=>{let n;try{n=await crypto.subtle.exportKey(\"jwk\",e)}catch(e){return void r(e)}t({jwk:n,algorithm:e.algorithm,usages:e.usages})}),revive(e){const{jwk:t,algorithm:r,usages:n}=e;return crypto.subtle.importKey(\"jwk\",t,r,!0,n)}}},O={dataview:{test:e=>\"DataView\"===toStringTag(e),replace({buffer:e,byteOffset:t,byteLength:r},n){n.buffers||(n.buffers=[]);const o=n.buffers.indexOf(e);return-1!==o?{index:o,byteOffset:t,byteLength:r}:(n.buffers.push(e),{encoded:u(e),maxByteLength:e.maxByteLength,resizable:e.resizable,byteOffset:t,byteLength:r})},revive(e,t){t.buffers||(t.buffers=[]);const{byteOffset:r,byteLength:n,encoded:o,index:a,maxByteLength:s,resizable:i}=e;let c;return\"index\"in e?c=t.buffers[a]:(c=p(o,i?{maxByteLength:s}:s),t.buffers.push(c)),new DataView(c,r,n)}}},A={date:{test:e=>\"Date\"===toStringTag(e),replace(e){const t=e.getTime();return Number.isNaN(t)?\"NaN\":t},revive:e=>\"NaN\"===e?new Date(NaN):new Date(e)}},T={domexception:{test:e=>\"DOMException\"===toStringTag(e),replace:e=>({name:e.name,message:e.message}),revive:({message:e,name:t})=>new DOMException(e,t)}},S={};function create$5(e){S[e.name.toLowerCase()]={test:t=>toStringTag(t)===e.name,replace:e=>e.is2D?{a:e.a,b:e.b,c:e.c,d:e.d,e:e.e,f:e.f}:{m11:e.m11,m12:e.m12,m13:e.m13,m14:e.m14,m21:e.m21,m22:e.m22,m23:e.m23,m24:e.m24,m31:e.m31,m32:e.m32,m33:e.m33,m34:e.m34,m41:e.m41,m42:e.m42,m43:e.m43,m44:e.m44},revive:t=>Object.hasOwn(t,\"a\")?new e([t.a,t.b,t.c,t.d,t.e,t.f]):new e([t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.m41,t.m42,t.m43,t.m44])}}\"undefined\"!=typeof DOMMatrix&&create$5(DOMMatrix),\"undefined\"!=typeof DOMMatrixReadOnly&&create$5(DOMMatrixReadOnly);const P={};function create$4(e){P[e.name.toLowerCase()]={test:t=>toStringTag(t)===e.name,replace:e=>({x:e.x,y:e.y,z:e.z,w:e.w}),revive:({x:t,y:r,z:n,w:o})=>new e(t,r,n,o)}}\"undefined\"!=typeof DOMPoint&&create$4(DOMPoint),\"undefined\"!=typeof DOMPointReadOnly&&create$4(DOMPointReadOnly);const E={domquad:{test:e=>\"DOMQuad\"===toStringTag(e),replace:e=>({p1:e.p1,p2:e.p2,p3:e.p3,p4:e.p4}),revive:({p1:e,p2:t,p3:r,p4:n})=>new DOMQuad(e,t,r,n)}},x={};function create$3(e){x[e.name.toLowerCase()]={test:t=>toStringTag(t)===e.name,replace:e=>({x:e.x,y:e.y,width:e.width,height:e.height}),revive:({x:t,y:r,width:n,height:o})=>new e(t,r,n,o)}}\"undefined\"!=typeof DOMRect&&create$3(DOMRect),\"undefined\"!=typeof DOMRectReadOnly&&create$3(DOMRectReadOnly);const j={encodedaudiochunk:{test:e=>\"EncodedAudioChunk\"===toStringTag(e),replace(e){const{type:t,timestamp:r,duration:n,byteLength:o}=e,a=new ArrayBuffer(o);return e.copyTo(a),{type:t,timestamp:r,duration:n,data:a}},revive({type:e,timestamp:t,duration:r,data:n}){const o={type:e,timestamp:t,data:new Uint8Array(n)};return null!=r&&(o.duration=r),new EncodedAudioChunk(o)}}},B={encodedvideochunk:{test:e=>\"EncodedVideoChunk\"===toStringTag(e),replace(e){const{type:t,timestamp:r,duration:n,byteLength:o}=e,a=new ArrayBuffer(o);return e.copyTo(a),{type:t,timestamp:r,duration:n,data:a}},revive({type:e,timestamp:t,duration:r,data:n}){const o={type:e,timestamp:t,data:new Uint8Array(n)};return null!=r&&(o.duration=r),new EncodedVideoChunk(o)}}},N={error:{test:e=>\"Error\"===toStringTag(e),replace:({name:e,message:t,cause:r,stack:n,fileName:o,lineNumber:a,columnNumber:s})=>({name:e,message:t,cause:r,stack:n,fileName:o,lineNumber:a,columnNumber:s}),revive(e){const t=new Error(e.message);return t.name=e.name,t.cause=e.cause,t.stack=e.stack,t.fileName=e.fileName,t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}}},C={};function create$2(e){C[e.name.toLowerCase()]={test:t=>hasConstructorOf(t,e),replace:({name:e,message:t,cause:r,stack:n,fileName:o,lineNumber:a,columnNumber:s,errors:i})=>({name:e,message:t,cause:r,stack:n,fileName:o,lineNumber:a,columnNumber:s,errors:i}),revive(t){const r=\"undefined\"!=typeof AggregateError&&e===AggregateError?new e(t.errors,t.message):new e(t.message);return r.name=t.name,r.cause=t.cause,r.stack=t.stack,r.fileName=t.fileName,r.lineNumber=t.lineNumber,r.columnNumber=t.columnNumber,r}}}[TypeError,RangeError,SyntaxError,ReferenceError,EvalError,URIError].forEach(e=>create$2(e)),\"undefined\"!=typeof AggregateError&&create$2(AggregateError),\"function\"==typeof InternalError&&create$2(InternalError);const I={file:{test:e=>\"File\"===toStringTag(e),replace(e){const t=new XMLHttpRequest;if(t.overrideMimeType(\"text/plain; charset=x-user-defined\"),t.open(\"GET\",URL.createObjectURL(e),!1),t.send(),200!==t.status&&0!==t.status)throw new Error(\"Bad File access: \"+t.status);return{type:e.type,stringContents:t.responseText,name:e.name,lastModified:e.lastModified}},revive:({name:e,type:t,stringContents:r,lastModified:n})=>new File([string2arraybuffer(r)],e,{type:t,lastModified:n}),replaceAsync:e=>new TypesonPromise(function(t,r){const n=new FileReader;n.addEventListener(\"load\",function(){t({type:e.type,stringContents:arraybuffer2string(n.result),name:e.name,lastModified:e.lastModified})}),n.addEventListener(\"error\",function(){r(n.error)}),n.readAsArrayBuffer(e)})}},U={file:I.file,filelist:{test:e=>\"FileList\"===toStringTag(e),replace(e){const t=[];for(let r=0;r<e.length;r++)t[r]=e.item(r);return t},revive(e){class FileList{constructor(){this._files=arguments[0],this.length=this._files.length}item(e){return this._files[e]}get[Symbol.toStringTag](){return\"FileList\"}}return new FileList(e)}}},_={imagebitmap:{test:e=>\"ImageBitmap\"===toStringTag(e)||e&&e.dataset&&\"ImageBitmap\"===e.dataset.toStringTag,replace(e){const t=document.createElement(\"canvas\");return t.getContext(\"2d\").drawImage(e,0,0),{width:e.width,height:e.height,dataURL:t.toDataURL()}},revive(e){const t=\"undefined\"==typeof OffscreenCanvas?document.createElement(\"canvas\"):new OffscreenCanvas(e.width,e.height),r=t.getContext(\"2d\"),n=document.createElement(\"img\");return n.addEventListener(\"load\",function(){r.drawImage(n,0,0)}),n.src=e.dataURL,\"undefined\"==typeof OffscreenCanvas?t:t.transferToImageBitmap()},reviveAsync(e){const t=document.createElement(\"canvas\"),r=t.getContext(\"2d\"),n=document.createElement(\"img\");return n.addEventListener(\"load\",function(){r.drawImage(n,0,0)}),n.src=e.dataURL,new TypesonPromise(async(e,r)=>{try{e(await createImageBitmap(t))}catch(e){r(e)}})}}},k={imagedata:{test:e=>\"ImageData\"===toStringTag(e),replace(e){const t=\"Float16Array\"===toStringTag(e.data)?\"rgba-float16\":\"rgba-unorm8\";return{array:[...e.data],width:e.width,height:e.height,pixelFormat:t,colorSpace:e.colorSpace}},revive(e){const{array:t,width:r,height:n,colorSpace:o,pixelFormat:a}=e;return\"rgba-float16\"===a?new ImageData(new Float16Array(t),r,n,{colorSpace:o,pixelFormat:a}):new ImageData(new Uint8ClampedArray(t),r,n,{colorSpace:o,pixelFormat:a})}}},M={infinity:{test:e=>e===1/0,replace:()=>\"Infinity\",revive:()=>1/0}},D={test:e=>hasConstructorOf(e,Intl.Collator),replace:e=>e.resolvedOptions(),revive:e=>new Intl.Collator(e.locale,e)},R={IntlCollator:D,IntlDateTimeFormat:{test:e=>hasConstructorOf(e,Intl.DateTimeFormat),replace:e=>e.resolvedOptions(),revive:e=>new Intl.DateTimeFormat(e.locale,e)},IntlNumberFormat:{test:e=>hasConstructorOf(e,Intl.NumberFormat),replace:e=>e.resolvedOptions(),revive:e=>new Intl.NumberFormat(e.locale,e)}},L={map:{test:e=>\"Map\"===toStringTag(e),replace:e=>e.entries().toArray(),revive:e=>new Map(e)}},F={nan:{test:e=>Number.isNaN(e),replace:()=>\"NaN\",revive:()=>NaN}},K={negativeInfinity:{test:e=>e===-1/0,replace:()=>\"-Infinity\",revive:()=>-1/0}},$={negativeZero:{test:e=>Object.is(e,-0),replace:()=>0,revive:()=>-0}},q={nonbuiltinIgnore:{test:e=>e&&\"object\"==typeof e&&!Array.isArray(e)&&![\"Object\",\"Boolean\",\"Number\",\"String\",\"Error\",\"RegExp\",\"Math\",\"Date\",\"Map\",\"Set\",\"JSON\",\"ArrayBuffer\",\"SharedArrayBuffer\",\"DataView\",\"Int8Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"Int16Array\",\"Uint16Array\",\"Int32Array\",\"Uint32Array\",\"Float32Array\",\"Float64Array\",\"Promise\",\"String Iterator\",\"Array Iterator\",\"Map Iterator\",\"Set Iterator\",\"WeakMap\",\"WeakSet\",\"Atomics\",\"Module\"].includes(toStringTag(e)),replace(){}}},W={StringObject:{test:e=>\"String\"===toStringTag(e)&&\"object\"==typeof e,replace:String,revive:e=>new String(e)},BooleanObject:{test:e=>\"Boolean\"===toStringTag(e)&&\"object\"==typeof e,replace:e=>e.valueOf(),revive:e=>new Boolean(e)},NumberObject:{test:e=>\"Number\"===toStringTag(e)&&\"object\"==typeof e,replace(e){const t=e.valueOf();return Number.isNaN(t)?\"NaN\":t===1/0?\"Infinity\":t===-1/0?\"-Infinity\":Object.is(t,-0)?\"-0\":t},revive:e=>new Number(\"NaN\"===e?NaN:\"Infinity\"===e?1/0:\"-Infinity\"===e?-1/0:\"-0\"===e?-0:e)}},z={promise:{test:e=>\"Promise\"===toStringTag(e),replaceAsync:e=>new TypesonPromise(async t=>{try{t({value:await e})}catch(e){t({error:e})}}),revive:e=>e.error?Promise.reject(e.error):Promise.resolve(e.value)}},V={quotaexceedederror:{test:e=>\"QuotaExceededError\"===toStringTag(e),replace:({message:e,quota:t,requested:r})=>({message:e,quota:t,requested:r}),revive({message:e,quota:t,requested:r}){const n={};return null!=t&&(n.quota=t),null!=r&&(n.requested=r),new QuotaExceededError(e,n)}}},J={regexp:{test:e=>\"RegExp\"===toStringTag(e),replace:e=>({source:e.source,flags:(e.global?\"g\":\"\")+(e.ignoreCase?\"i\":\"\")+(e.multiline?\"m\":\"\")+(e.sticky?\"y\":\"\")+(e.unicode?\"u\":\"\")+(e.unicodeSets?\"v\":\"\")+(e.hasIndices?\"d\":\"\")+(e.dotAll?\"s\":\"\")}),revive:({source:e,flags:t})=>new RegExp(e,t)}},H={},Q={resurrectable:{test:e=>e&&!Array.isArray(e)&&[\"object\",\"function\",\"symbol\"].includes(typeof e),replace(e){const t=generateUUID();return H[t]=e,t},revive:e=>H[e]}},G={set:{test:e=>\"Set\"===toStringTag(e),replace:e=>e.values().toArray(),revive:e=>new Set(e)}},X={symbol:{test:e=>\"symbol\"==typeof e,replace:e=>({global:void 0!==Symbol.keyFor(e),sym:String(e).slice(7,-1)}),revive:e=>e.global?Symbol.for(e.sym):Symbol(e.sym)}},Y={};\"function\"==typeof Int8Array&&[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,...\"function\"==typeof BigInt64Array?[BigInt64Array,BigUint64Array]:[],...\"function\"==typeof Float16Array?[Float16Array]:[]].forEach(e=>function create$1(e){const t=e.name;Y[t.toLowerCase()]={test:e=>toStringTag(e)===t,replace:e=>(0===e.byteOffset&&e.byteLength===e.buffer.byteLength?e:e.slice(0)).buffer,revive:t=>\"ArrayBuffer\"===toStringTag(t)?new e(t):t}}(e));const Z={};\"function\"==typeof Int8Array&&[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,...\"function\"==typeof BigInt64Array?[BigInt64Array,BigUint64Array]:[],...\"function\"==typeof Float16Array?[Float16Array]:[]].forEach(e=>function create(e){const t=e.name;Z[t.toLowerCase()]={test:e=>toStringTag(e)===t,replace({buffer:e,byteOffset:t,length:r},n){n.buffers||(n.buffers=[]);const o=n.buffers.indexOf(e);return-1!==o?{index:o,byteOffset:t,length:r}:(n.buffers.push(e),{maxByteLength:e.maxByteLength,resizable:e.resizable,encoded:u(e),byteOffset:t,length:r})},revive(t,r){r.buffers||(r.buffers=[]);const{byteOffset:n,length:o,encoded:a,index:s,maxByteLength:i,resizable:c}=t;let l;return\"index\"in t?l=r.buffers[s]:(l=p(a,c?{maxByteLength:i}:void 0),r.buffers.push(l)),new e(l,n,o)}}}(e));const ee={undef:{test:(e,t)=>void 0===e&&(t.ownKeys||!(\"ownKeys\"in t)),replace:()=>0,revive:()=>new Undefined}},te={userObject:{test:e=>isUserObject(e),replace:e=>({...e}),revive:e=>e}},re={videoframe:{test:e=>\"VideoFrame\"===toStringTag(e),replaceAsync:e=>new TypesonPromise(async(t,r)=>{try{const{format:r,codedWidth:n,codedHeight:o,timestamp:a,duration:s,visibleRect:i,displayWidth:c,displayHeight:l,colorSpace:y}=e,u=new ArrayBuffer(e.allocationSize());await e.copyTo(u),t({format:r,codedWidth:n,codedHeight:o,timestamp:a,duration:s,visibleRect:{x:i.x,y:i.y,width:i.width,height:i.height},displayWidth:c,displayHeight:l,colorSpace:{primaries:y.primaries,transfer:y.transfer,matrix:y.matrix,fullRange:y.fullRange},data:u})}catch(e){r(e)}}),revive({format:e,codedWidth:t,codedHeight:r,timestamp:n,duration:o,visibleRect:a,displayWidth:s,displayHeight:i,colorSpace:c,data:l}){const y={format:e,codedWidth:t,codedHeight:r,timestamp:n,visibleRect:a,displayWidth:s,displayHeight:i,colorSpace:c};return null!=o&&(y.duration=o),new VideoFrame(new Uint8Array(l),y)}}},ne={webtransporterror:{test:e=>\"WebTransportError\"===toStringTag(e),replace:({message:e,streamErrorCode:t})=>({message:e,streamErrorCode:t}),revive:({message:e,streamErrorCode:t})=>new WebTransportError({message:e,streamErrorCode:t})}},oe=[{arrayNonindexKeys:{testPlainObjects:!0,test:(e,t)=>!!Array.isArray(e)&&(Object.keys(e).some(e=>String(Number(e))!==e)&&(t.iterateIn=\"object\",t.addLength=!0),!0),replace:(e,t)=>(t.iterateUnsetNumeric=!0,e),revive(e){if(Array.isArray(e))return e;const t=[];return Object.entries(e).forEach(([e,r])=>{t[e]=r}),t}}},{sparseUndefined:{test:(e,t)=>void 0===e&&!1===t.ownKeys,replace:()=>0,revive(){}}}],ae=[F,M,K,$],se=[ee,oe,W,ae,A,N,C,J].concat(\"function\"==typeof Map?L:[],\"function\"==typeof Set?G:[],\"function\"==typeof ArrayBuffer?f:[],\"function\"==typeof Uint8Array?Z:[],\"function\"==typeof DataView?O:[],\"undefined\"!=typeof Intl?R:[],\"undefined\"!=typeof BigInt?[h,m]:[]),ie=[N,C],ce=[se,{arraybuffer:null},Y],le=[{sparseArrays:{testPlainObjects:!0,test:e=>Array.isArray(e),replace:(e,t)=>(t.iterateUnsetNumeric=!0,e)}},{sparseUndefined:{test:(e,t)=>void 0===e&&!1===t.ownKeys,replace:()=>0,revive(){}}}],ye=[te,ee,oe,W,ae,A,J,k,_,I,U,b,N,C].concat(\"function\"==typeof Map?L:[],\"function\"==typeof Set?G:[],\"function\"==typeof ArrayBuffer?f:[],\"function\"==typeof Uint8Array?Z:[],\"function\"==typeof DataView?O:[],\"undefined\"!=typeof crypto?w:[],\"undefined\"!=typeof BigInt?[h,m]:[],\"undefined\"!=typeof DOMException?T:[],\"undefined\"!=typeof QuotaExceededError?V:[],\"undefined\"!=typeof WebTransportError?ne:[],\"undefined\"!=typeof DOMRect?x:[],\"undefined\"!=typeof DOMPoint?P:[],\"undefined\"!=typeof DOMQuad?E:[],\"undefined\"!=typeof DOMMatrix?S:[],\"undefined\"!=typeof AudioData?d:[],\"undefined\"!=typeof EncodedAudioChunk?j:[],\"undefined\"!=typeof EncodedVideoChunk?B:[],\"undefined\"!=typeof VideoFrame?re:[]);const ue=ye.concat({checkDataCloneException:{test(e){const t={}.toString.call(e).slice(8,-1);if([\"symbol\",\"function\"].includes(typeof e)||[\"Arguments\",\"Module\",\"Promise\",\"WeakMap\",\"WeakSet\",\"Event\",\"MessageChannel\",\"MessagePort\"].includes(t)||e&&e.constructor&&[\"MessageChannel\",\"MessagePort\"].includes(e.constructor.name)||[\"ArrayBuffer\",\"DataView\",\"Int8Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"Int16Array\",\"Uint16Array\",\"Int32Array\",\"Uint32Array\",\"Float32Array\",\"Float64Array\",\"BigInt64Array\",\"BigUint64Array\"].includes(t)&&function isBufferDetached(e){if(\"boolean\"==typeof e.detached)return e.detached;if(0!==e.byteLength)return!1;try{return new Uint8Array(e),!1}catch{return!0}}(e)||e&&\"object\"==typeof e&&\"number\"==typeof e.nodeType&&\"function\"==typeof e.insertBefore)throw new DOMException(\"The object cannot be cloned.\",\"DataCloneError\");return!1}}}),pe=ue.concat({checkSharedArrayBufferException:{test(e){if(\"SharedArrayBuffer\"==={}.toString.call(e).slice(8,-1))throw new DOMException(\"The object cannot be cloned.\",\"DataCloneError\");return!1}}}),fe=[le,ee],de=[se];export{i as JSON_TYPES,Typeson,TypesonPromise,Undefined,oe as arrayNonindexKeys,f as arraybuffer,d as audiodata,h as bigint,m as bigintObject,b as blob,se as builtin,v as cloneable,w as cryptokey,O as dataview,A as date,T as domexception,S as dommatrix,P as dompoint,E as domquad,x as domrect,j as encodedaudiochunk,B as encodedvideochunk,N as error,C as errors,escapeKeyPathComponent,I as file,U as filelist,getByKeyPath,getJSONType,hasConstructorOf,_ as imagebitmap,k as imagedata,M as infinity,R as intlTypes,isObject,isPlainObject,isThenable,isUserObject,L as map,F as nan,K as negativeInfinity,$ as negativeZero,q as nonbuiltinIgnore,ie as postmessage,W as primitiveObjects,z as promise,V as quotaexceedederror,J as regexp,Q as resurrectable,G as set,setAtKeyPath,ce as socketio,le as sparseUndefined,ae as specialNumbers,ye as structuredCloning,pe as structuredCloningForStorage,ue as structuredCloningThrowing,X as symbol,toStringTag,Z as typedArrays,Y as typedArraysSocketio,ee as undef,fe as undefPreset,unescapeKeyPathComponent,de as universal,te as userObject,re as videoframe,ne as webtransporterror};\n//# sourceMappingURL=index.min.js.map\n","import {\n Typeson, hasConstructorOf, structuredCloningForStorage\n} from 'typeson-registry';\n\nimport {createDOMException, ShimDOMException} from './DOMException.js';\n\n// See: https://stackoverflow.com/questions/42170826/categories-for-rejection-by-the-structured-cloning-algorithm\n\n// Although typeson-registry already has a FileList type in its structured cloning presets,\n// we need to override it so it works with our tests\n\nconst specSet = structuredCloningForStorage\n .flatMap((preset) => (Array.isArray(preset) ? preset : [preset]))\n .find((preset) => preset && !Array.isArray(preset) && 'filelist' in preset);\n\nconst origFileList = specSet && !Array.isArray(specSet) && 'filelist' in specSet\n ? specSet.filelist\n : undefined;\n\nconst origTest = origFileList && typeof origFileList === 'object' && 'test' in origFileList && typeof origFileList.test === 'function'\n ? origFileList.test\n : undefined;\n\nconst origRevive = origFileList && typeof origFileList === 'object' && 'revive' in origFileList && typeof origFileList.revive === 'function'\n ? origFileList.revive\n : undefined;\n\nconst customFileList = origFileList\n ? {\n ...origFileList,\n /**\n * @param {unknown} x\n * @param {import('typeson').StateObject} state\n * @returns {boolean}\n */\n test (x, state) {\n if (typeof FileList !== 'undefined') {\n return x instanceof FileList;\n }\n return typeof origTest === 'function' ? origTest(x, state) : false;\n },\n /**\n * @param {unknown} x\n * @param {import('typeson').StateObject} state\n * @returns {unknown}\n */\n revive (x, state) {\n if (typeof FileList !== 'undefined') {\n return Reflect.construct(FileList, [x]);\n }\n return typeof origRevive === 'function' ? origRevive(x, state) : undefined;\n }\n }\n : undefined;\n\nlet typeson = new Typeson().register([\n structuredCloningForStorage,\n customFileList ? {filelist: customFileList} : {}\n]);\n\n/**\n * @param {(preset: import('typeson-registry').Preset) =>\n * import('typeson-registry').Preset} func\n * @returns {void}\n */\nfunction register (func) {\n // eslint-disable-next-line unicorn/no-top-level-assignment-in-function -- Should be one-time cache\n typeson = new Typeson().register(func(structuredCloningForStorage));\n}\n\n/**\n * We are keeping the callback approach for now in case we wish to reexpose\n * `Blob`, `File`, `FileList` asynchronously (though in such a case, we\n * should probably refactor as a Promise).\n * @param {AnyValue} obj\n * @param {(str: string) => void} [func]\n * @throws {Error}\n * @returns {string}\n */\nfunction encode (obj, func) {\n let ret;\n try {\n ret = typeson.stringifySync(obj);\n } catch (err) {\n // SCA in typeson-registry using `DOMException` which is not defined (e.g., in Node)\n if (hasConstructorOf(err, ReferenceError) ||\n // SCA in typeson-registry threw a cloning error and we are in a\n // supporting environment (e.g., the browser) where `ShimDOMException` is\n // an alias for `DOMException`; if typeson-registry ever uses our shim\n // to throw, we can use this condition alone.\n hasConstructorOf(err, ShimDOMException)) {\n throw createDOMException('DataCloneError', 'The object cannot be cloned.');\n }\n // We should rethrow non-cloning exceptions like from\n // throwing getters (as in the W3C test, key-conversion-exceptions.htm)\n throw err;\n }\n if (func) {\n func(ret);\n }\n return ret;\n}\n\n/**\n * @typedef {import('./Key.js').Value} AnyValue\n */\n\n/**\n * @param {string} obj\n * @returns {AnyValue}\n */\nfunction decode (obj) {\n return typeson.parse(obj);\n}\n\n/**\n * @param {AnyValue} val\n * @returns {AnyValue}\n */\nfunction clone (val) {\n // We don't return the intermediate `encode` as we'll need to reencode\n // the clone as it may differ\n return decode(encode(val));\n}\n\n/**\n * Per spec, a transaction must appear inactive to any code that runs\n * reentrantly *during* the structured clone of a value passed to\n * `add()`/`put()`/`IDBCursor#update()` (e.g. a getter on the value being\n * stored) -- even though the transaction is otherwise active for the\n * duration of that same call. `__active` is restored in a `finally` so a\n * `DataCloneError` (or any other throw from `clone()`) can't leave the\n * transaction permanently stuck inactive.\n * @param {{__active: boolean}} transaction\n * @param {AnyValue} val\n * @returns {AnyValue}\n */\nfunction cloneWithInactiveTransaction (transaction, val) {\n transaction.__active = false;\n try {\n return clone(val);\n } finally {\n transaction.__active = true;\n }\n}\n\nexport {encode, decode, clone, cloneWithInactiveTransaction, register};\n","import SyncPromise from 'sync-promise-expanded';\nimport {createDOMException} from './DOMException.js';\nimport {IDBCursor, IDBCursorWithValue, parseGetAllArgs, parseGetAllRecordsArgs, collectAll} from './IDBCursor.js';\nimport * as util from './util.js';\nimport * as Key from './Key.js';\nimport {setSQLForKeyRange, IDBKeyRange, convertValueToKeyRange} from './IDBKeyRange.js';\nimport IDBTransaction from './IDBTransaction.js';\nimport * as Sca from './Sca.js';\nimport CFG from './CFG.js';\nimport IDBObjectStore from './IDBObjectStore.js';\n\nconst readonlyProperties = ['objectStore', 'keyPath', 'multiEntry', 'unique'];\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLTransaction.js').default} WebSQLTransaction\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLTransaction.js').SqlErrorCallback} SqlErrorCallback\n */\n\n/**\n * @typedef {{\n * columnName: string,\n * keyPath: import('./Key.js').KeyPath,\n * optionalParams: {\n * unique: boolean,\n * multiEntry: boolean\n * }\n * deleted?: boolean,\n * __deleted?: boolean,\n * cursors?: import('./IDBCursor.js').IDBCursorWithValueFull[],\n * }} IDBIndexProperties\n */\n\n/**\n * IDB Index.\n * @see https://www.w3.org/TR/IndexedDB/#idl-def-IDBIndex\n * @throws {TypeError}\n * @class\n */\nfunction IDBIndex () {\n throw new TypeError('Illegal constructor');\n}\nconst IDBIndexAlias = IDBIndex;\n\n/**\n * @typedef {IDBIndex & {\n * name: string,\n * keyPath: import('./Key.js').KeyPath,\n * multiEntry: boolean,\n * unique: boolean,\n * objectStore: import('./IDBObjectStore.js').IDBObjectStoreFull,\n * __pendingCreate?: boolean,\n * __deleted?: boolean,\n * __originalName: string,\n * __currentName: string,\n * __pendingName?: string,\n * __pendingDelete?: boolean,\n * __name: string,\n * __multiEntry: boolean,\n * __unique: boolean,\n * __objectStore: import('./IDBObjectStore.js').IDBObjectStoreFull,\n * __keyPath: import('./Key.js').KeyPath,\n * __recreated?: boolean,\n * __fetchIndexData: (\n * range: Query,\n * opType: \"value\"|\"key\"|\"count\",\n * nullDisallowed: boolean,\n * count?: number\n * ) => import('./IDBRequest.js').IDBRequestFull,\n * __renameIndex: (\n * store: import('./IDBObjectStore.js').IDBObjectStoreFull,\n * oldName: string,\n * newName: string,\n * colInfoToPreserveArr?: string[][],\n * cb?: null|((\n * tx: WebSQLTransaction,\n * success: ((store: IDBObjectStore) => void)\n * ) => void)\n * ) => void\n * }} IDBIndexFull\n */\n\n/**\n *\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {IDBIndexProperties} indexProperties\n * @returns {IDBIndexFull}\n */\nIDBIndex.__createInstance = function (store, indexProperties) {\n /**\n * @class\n * @this {IDBIndexFull}\n */\n function IDBIndex () {\n const me = this;\n // @ts-expect-error It's ok\n me[Symbol.toStringTag] = 'IDBIndex';\n util.defineReadonlyProperties(me, readonlyProperties);\n me.__objectStore = store;\n me.__name = me.__originalName = indexProperties.columnName;\n me.__keyPath = Array.isArray(indexProperties.keyPath) ? indexProperties.keyPath.slice() : indexProperties.keyPath;\n const {optionalParams} = indexProperties;\n me.__multiEntry = Boolean(optionalParams && optionalParams.multiEntry);\n me.__unique = Boolean(optionalParams && optionalParams.unique);\n me.__deleted = Boolean(indexProperties.__deleted);\n me.__objectStore.__cursors = indexProperties.cursors || [];\n Object.defineProperties(me, {\n __currentName: {\n /**\n * @this {IDBIndexFull}\n * @returns {string}\n */\n get () {\n return '__pendingName' in me\n ? /** @type {string} */ (me.__pendingName)\n : me.name;\n }\n },\n name: {\n enumerable: false,\n configurable: false,\n /**\n * @this {IDBIndexFull}\n * @returns {string}\n */\n get () {\n return this.__name;\n },\n /**\n * @param {string} newName\n * @this {IDBIndexFull}\n * @returns {void}\n */\n set (newName) {\n const me = this;\n newName = util.convertToDOMString(newName);\n const oldName = me.name;\n IDBTransaction.__assertVersionChange(me.objectStore.transaction);\n IDBTransaction.__assertActive(me.objectStore.transaction);\n IDBIndexAlias.__invalidStateIfDeleted(me);\n IDBObjectStore.__invalidStateIfDeleted(me);\n if (newName === oldName) {\n return;\n }\n\n if (Object.hasOwn(me.objectStore.__indexes, newName) && !me.objectStore.__indexes[newName].__deleted &&\n !me.objectStore.__indexes[newName].__pendingDelete) {\n throw createDOMException('ConstraintError', 'Index \"' + newName + '\" already exists on ' + me.objectStore.__currentName);\n }\n\n me.__name = newName;\n\n const {objectStore} = me;\n delete objectStore.__indexes[oldName];\n objectStore.__indexes[newName] = me;\n objectStore.indexNames.splice(objectStore.indexNames.indexOf(oldName), 1, newName);\n\n const storeHandle = /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n objectStore.transaction\n ).__storeHandles[objectStore.name];\n const oldIndexHandle = storeHandle.__indexHandles[oldName];\n oldIndexHandle.__name = newName; // Fix old references\n storeHandle.__indexHandles[newName] = oldIndexHandle; // Ensure new reference accessible\n me.__pendingName = oldName;\n\n const colInfoToPreserveArr = [\n ['key', 'BLOB ' + (objectStore.autoIncrement ? 'UNIQUE, inc INTEGER PRIMARY KEY AUTOINCREMENT' : 'PRIMARY KEY')],\n ['value', 'BLOB']\n ].concat(\n // @ts-ignore Has numeric indexes instead of iterator; needed under some TS versions\n [...objectStore.indexNames]\n .filter((indexName) => indexName !== newName)\n .map((indexName) => [util.escapeIndexNameForSQL(indexName), 'BLOB'])\n );\n\n me.__renameIndex(\n objectStore, oldName, newName, colInfoToPreserveArr,\n function (tx, success) {\n IDBIndexAlias.__updateIndexList(store, tx, function (store) {\n delete storeHandle.__pendingName;\n success(store);\n });\n }\n );\n }\n }\n });\n }\n IDBIndex.prototype = IDBIndexAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBIndex();\n};\n\n/**\n *\n * @param {IDBIndexFull} index\n * @param {string} [msg]\n * @throws {DOMException}\n * @returns {void}\n */\nIDBIndex.__invalidStateIfDeleted = function (index, msg) {\n if (index.__deleted || index.__pendingDelete || (\n index.__pendingCreate && index.objectStore.transaction && index.objectStore.transaction.__errored\n )) {\n throw createDOMException('InvalidStateError', msg || 'This index has been deleted');\n }\n};\n\n/**\n * Clones an IDBIndex instance for a different IDBObjectStore instance.\n * @param {IDBIndexFull} index\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @returns {IDBIndexFull}\n */\nIDBIndex.__clone = function (index, store) {\n const idx = IDBIndex.__createInstance(store, {\n columnName: index.name,\n keyPath: index.keyPath,\n optionalParams: {\n multiEntry: index.multiEntry,\n unique: index.unique\n }\n });\n /** @type {const} */ ([\n '__pendingCreate', '__pendingDelete', '__deleted',\n '__originalName', '__recreated'\n ]).forEach((p) => {\n // @ts-expect-error Why is this type \"never\"?\n idx[p] = index[p];\n });\n return idx;\n};\n\n/**\n * Creates a new index on an object store.\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {IDBIndexFull} index\n * @returns {void}\n */\nIDBIndex.__createIndex = function (store, index) {\n const indexName = index.name;\n const storeName = store.__currentName;\n const idx = store.__indexes[indexName];\n\n index.__pendingCreate = true;\n\n // Add the index to the IDBObjectStore\n store.indexNames.push(indexName);\n store.__indexes[indexName] = index; // We add to indexes as needs to be available, e.g., if there is a subsequent deleteIndex call\n\n let indexHandle = store.__indexHandles[indexName];\n if (!indexHandle ||\n index.__pendingDelete ||\n index.__deleted ||\n indexHandle.__pendingDelete ||\n indexHandle.__deleted\n ) {\n indexHandle = store.__indexHandles[indexName] = IDBIndex.__clone(index, store);\n }\n\n // Create the index in WebSQL\n const {transaction} = store;\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n transaction\n ).__addNonRequestToTransactionQueue(function createIndex (tx, args, success, failure) {\n const columnExists = idx && (idx.__deleted || idx.__recreated); // This check must occur here rather than earlier as properties may not have been set yet otherwise\n\n /** @type {{[key: string]: boolean}} */\n let indexValues = {};\n\n /**\n * @param {WebSQLTransaction} tx\n * @param {(Error & {code?: number})} err\n * @returns {void}\n */\n function error (tx, err) {\n failure(createDOMException('UnknownError', 'Could not create index \"' + indexName + '\"' + err.code + '::' + err.message, err));\n }\n\n /**\n * @param {WebSQLTransaction} tx\n * @returns {void}\n */\n function applyIndex (tx) {\n // Update the object store's index list\n IDBIndex.__updateIndexList(store, tx, function () {\n // Add index entries for all existing records\n tx.executeSql('SELECT \"key\", \"value\" FROM ' + util.escapeStoreNameForSQL(storeName), [], function (tx, data) {\n if (CFG.DEBUG) { console.log('Adding existing ' + storeName + ' records to the ' + indexName + ' index'); }\n addIndexEntry(0);\n\n /**\n * @param {Integer} i\n * @returns {void}\n */\n function addIndexEntry (i) {\n if (i < data.rows.length) {\n try {\n const row = /** @type {{key: string, value: string}} */ (data.rows.item(i));\n const value = Sca.decode(util.unescapeSQLiteResponse(row.value));\n const indexKey = Key.extractKeyValueDecodedFromValueUsingKeyPath(value, index.keyPath, index.multiEntry); // Todo: Do we need this stricter error checking?\n if (\n ('invalid' in indexKey && indexKey.invalid) ||\n ('failure' in indexKey && indexKey.failure)\n ) { // Todo: Do we need invalid checks and should we instead treat these as being duplicates?\n throw new Error('Go to catch; ignore bad indexKey');\n }\n const indexKeyStr = /** @type {string} */ (\n Key.encode(indexKey.value, index.multiEntry)\n );\n if (index.unique) {\n if (Object.hasOwn(indexValues, indexKeyStr)) {\n indexValues = {};\n failure(createDOMException(\n 'ConstraintError',\n 'Duplicate values already exist within the store'\n ));\n return;\n }\n indexValues[indexKeyStr] = true;\n }\n\n tx.executeSql(\n 'UPDATE ' + util.escapeStoreNameForSQL(storeName) + ' SET ' +\n util.escapeIndexNameForSQL(indexName) + ' = ? WHERE \"key\" = ?',\n [util.escapeSQLiteStatement(indexKeyStr), row.key],\n function () {\n addIndexEntry(i + 1);\n },\n /** @type {SqlErrorCallback} */ (error)\n );\n } catch (err) {\n // Not a valid value to insert into index, so just continue\n addIndexEntry(i + 1);\n }\n } else {\n delete index.__pendingCreate;\n delete indexHandle.__pendingCreate;\n if (index.__deleted) {\n delete index.__deleted;\n delete indexHandle.__deleted;\n index.__recreated = true;\n indexHandle.__recreated = true;\n }\n indexValues = {};\n success(store);\n }\n }\n }, /** @type {SqlErrorCallback} */ (error));\n }, /** @type {SqlErrorCallback} */ (error));\n }\n\n const escapedStoreNameSQL = util.escapeStoreNameForSQL(storeName);\n const escapedIndexNameSQL = util.escapeIndexNameForSQL(index.name);\n\n /**\n * @param {WebSQLTransaction} tx\n * @returns {void}\n */\n function addIndexSQL (tx) {\n if (!CFG.useSQLiteIndexes) {\n applyIndex(tx);\n return;\n }\n tx.executeSql(\n 'CREATE INDEX IF NOT EXISTS \"' +\n // The escaped index name must be unique among indexes in the whole database;\n // so we prefix with store name; as prefixed, will also not conflict with\n // index on `key`\n // Avoid quotes and separate with special escape sequence\n escapedStoreNameSQL.slice(1, -1) + '^5' + escapedIndexNameSQL.slice(1, -1) +\n '\" ON ' + escapedStoreNameSQL + '(' + escapedIndexNameSQL + ')',\n [],\n applyIndex,\n /** @type {SqlErrorCallback} */ (error)\n );\n }\n\n if (columnExists) {\n // For a previously existing index, just update the index entries in the existing column;\n // no need to add SQLite index to it either as should already exist\n applyIndex(tx);\n } else {\n // For a new index, add a new column to the object store, then apply the index\n const sql = ['ALTER TABLE', escapedStoreNameSQL, 'ADD', escapedIndexNameSQL, 'BLOB'].join(' ');\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(\n sql, [], addIndexSQL, /** @type {SqlErrorCallback} */ (error)\n );\n }\n });\n};\n\n/**\n * Deletes an index from an object store.\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {IDBIndexFull} index\n * @returns {void}\n */\nIDBIndex.__deleteIndex = function (store, index) {\n // Remove the index from the IDBObjectStore\n index.__pendingDelete = true;\n const indexHandle = store.__indexHandles[index.name];\n if (indexHandle) {\n indexHandle.__pendingDelete = true;\n }\n\n store.indexNames.splice(store.indexNames.indexOf(index.name), 1);\n\n // Remove the index in WebSQL\n const {transaction} = store;\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n transaction\n ).__addNonRequestToTransactionQueue(function deleteIndex (tx, args, success, failure) {\n /**\n * @param {WebSQLTransaction} tx\n * @param {(Error & {code?: number})} err\n * @returns {void}\n */\n function error (tx, err) {\n failure(createDOMException('UnknownError', 'Could not delete index \"' + index.name + '\"', err));\n }\n\n /**\n * @returns {void}\n */\n function finishDeleteIndex () {\n // Update the object store's index list\n IDBIndex.__updateIndexList(store, tx, function (store) {\n delete index.__pendingDelete;\n delete index.__recreated;\n index.__deleted = true;\n if (indexHandle) {\n indexHandle.__deleted = true;\n delete indexHandle.__pendingDelete;\n }\n success(store);\n }, /** @type {SqlErrorCallback} */ (error));\n }\n\n if (!CFG.useSQLiteIndexes) {\n finishDeleteIndex();\n return;\n }\n tx.executeSql(\n 'DROP INDEX IF EXISTS ' +\n util.sqlQuote(\n util.escapeStoreNameForSQL(store.name).slice(1, -1) + '^5' +\n util.escapeIndexNameForSQL(index.name).slice(1, -1)\n ),\n [],\n finishDeleteIndex,\n /** @type {SqlErrorCallback} */ (error)\n );\n });\n};\n\n/**\n * @typedef {{[key: string]: IDBIndexProperties}} IndexList\n */\n\n/**\n * Updates index list for the given object store.\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {WebSQLTransaction} tx\n * @param {(store: IDBObjectStore) => void} success\n * @param {SqlErrorCallback} [failure]\n * @returns {void}\n */\nIDBIndex.__updateIndexList = function (store, tx, success, failure) {\n /** @type {IndexList} **/\n const indexList = {};\n for (let i = 0; i < store.indexNames.length; i++) {\n const idx = store.__indexes[store.indexNames[i]];\n indexList[idx.name] = {\n columnName: idx.name,\n keyPath: idx.keyPath,\n optionalParams: {\n unique: idx.unique,\n multiEntry: idx.multiEntry\n },\n deleted: Boolean(idx.__deleted)\n };\n }\n\n if (CFG.DEBUG) { console.log('Updating the index list for ' + store.__currentName, indexList); }\n tx.executeSql('UPDATE __sys__ SET \"indexList\" = ? WHERE \"name\" = ?', [JSON.stringify(indexList), util.escapeSQLiteStatement(store.__currentName)], function () {\n success(store);\n }, /** @type {SqlErrorCallback} */ (failure));\n};\n\n/**\n * @typedef {IDBValidKey|IDBKeyRange} Query\n */\n\n/**\n * Retrieves index data for the given key.\n * @param {Query} range\n * @param {\"value\"|\"key\"|\"count\"} opType\n * @param {boolean} nullDisallowed\n * @param {number} [count]\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.__fetchIndexData = function (range, opType, nullDisallowed, count) {\n const me = this;\n if (count !== undefined) {\n count = util.enforceRange(count, 'unsigned long');\n }\n\n IDBIndex.__invalidStateIfDeleted(me);\n IDBObjectStore.__invalidStateIfDeleted(me.objectStore);\n if (me.objectStore.__deleted) {\n throw createDOMException('InvalidStateError', \"This index's object store has been deleted\");\n }\n IDBTransaction.__assertActive(me.objectStore.transaction);\n\n if (nullDisallowed && util.isNullish(range)) {\n throw createDOMException('DataError', 'No key or range was specified');\n }\n\n const fetchArgs = buildFetchIndexDataSQL(nullDisallowed, me, range, opType, false);\n return /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.objectStore.transaction\n ).__addToTransactionQueue(function (...args) {\n executeFetchIndexData(\n count,\n ...fetchArgs,\n // @ts-expect-error It's ok\n ...args\n );\n }, undefined, me);\n};\n\n/**\n * Opens a cursor over the given key range.\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.openCursor = function (/* query, direction */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n const [query, direction] = arguments;\n const cursor = IDBCursorWithValue.__createInstance(query, direction, me.objectStore, me, util.escapeIndexNameForSQLKeyColumn(me.name), 'value');\n me.__objectStore.__cursors.push(cursor);\n return cursor.__request;\n};\n\n/**\n * Opens a cursor over the given key range. The cursor only includes key values, not data.\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.openKeyCursor = function (/* query, direction */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n const [query, direction] = arguments;\n const cursor = IDBCursor.__createInstance(query, direction, me.objectStore, me, util.escapeIndexNameForSQLKeyColumn(me.name), 'key');\n me.__objectStore.__cursors.push(cursor);\n return cursor.__request;\n};\n\n/**\n *\n * @param {Query} query\n * @throws {TypeError}\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.get = function (query) {\n if (!arguments.length) { // Per https://heycam.github.io/webidl/\n throw new TypeError('A parameter was missing for `IDBIndex.get`.');\n }\n return this.__fetchIndexData(query, 'value', true);\n};\n\n/**\n *\n * @param {Query} query\n * @throws {TypeError}\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.getKey = function (query) {\n if (!arguments.length) { // Per https://heycam.github.io/webidl/\n throw new TypeError('A parameter was missing for `IDBIndex.getKey`.');\n }\n return this.__fetchIndexData(query, 'key', true);\n};\n\n/**\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.getAll = function (/* queryOrOptions, count */) {\n // eslint-disable-next-line prefer-rest-params -- API\n const {query, count, direction} = parseGetAllArgs(arguments);\n return collectAll(this, query, count, direction, 'value');\n};\n\n/**\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.getAllKeys = function (/* queryOrOptions, count */) {\n // eslint-disable-next-line prefer-rest-params -- API\n const {query, count, direction} = parseGetAllArgs(arguments);\n return collectAll(this, query, count, direction, 'key');\n};\n\n/**\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.getAllRecords = function (/* options */) {\n // eslint-disable-next-line prefer-rest-params -- API\n const {query, count, direction} = parseGetAllRecordsArgs(arguments);\n return collectAll(this, query, count, direction, 'record');\n};\n\n/**\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.count = function (/* query */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n const query = arguments[0];\n // With the exception of needing to check whether the index has been\n // deleted, we could, for greater spec parity (if not accuracy),\n // just call:\n // `return me.__objectStore.count(query);`\n\n if (util.instanceOf(query, IDBKeyRange)) { // Todo: Do we need this block?\n // We don't need to add to cursors array since has the count parameter which won't cache\n return IDBCursorWithValue.__createInstance(query, 'next', me.objectStore, me, util.escapeIndexNameForSQLKeyColumn(me.name), 'value', true).__request;\n }\n return me.__fetchIndexData(query, 'count', false);\n};\n\n/**\n *\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {string} oldName\n * @param {string} newName\n * @param {string[][]} colInfoToPreserveArr\n * @param {null|((\n * tx: WebSQLTransaction,\n * success: ((store: IDBObjectStore) => void)\n * ) => void)} cb\n * @this {IDBIndexFull}\n * @returns {void}\n */\nIDBIndex.prototype.__renameIndex = function (store, oldName, newName, colInfoToPreserveArr = [], cb = null) {\n const newNameType = 'BLOB';\n const storeName = store.__currentName;\n const escapedStoreNameSQL = util.escapeStoreNameForSQL(storeName);\n const escapedNewIndexNameSQL = util.escapeIndexNameForSQL(newName);\n const escapedTmpStoreNameSQL = util.sqlQuote('tmp_' + util.escapeStoreNameForSQL(storeName).slice(1, -1));\n const colNamesToPreserve = colInfoToPreserveArr.map((colInfo) => colInfo[0]);\n const colInfoToPreserve = colInfoToPreserveArr.map((colInfo) => colInfo.join(' '));\n const listColInfoToPreserve = (colInfoToPreserve.length ? (colInfoToPreserve.join(', ') + ', ') : '');\n const listColsToPreserve = (colNamesToPreserve.length ? (colNamesToPreserve.join(', ') + ', ') : '');\n\n // We could adapt the approach at https://stackoverflow.com/a/8430746/271577\n // to make the approach reusable without passing column names, but it is a bit fragile\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n store.transaction\n ).__addNonRequestToTransactionQueue(function renameIndex (tx, args, success, error) {\n /**\n * @param {WebSQLTransaction} tx\n * @param {(Error & {code?: number})} err\n * @returns {void}\n */\n function sqlError (tx, err) {\n error(err);\n }\n /**\n * @returns {void}\n */\n function finish () {\n if (cb) {\n cb(tx, success);\n return;\n }\n success();\n }\n // See https://www.sqlite.org/lang_altertable.html#otheralter\n // We don't query for indexes as we already have the info\n // This approach has the advantage of auto-deleting indexes via the DROP TABLE\n const sql = 'CREATE TABLE ' + escapedTmpStoreNameSQL +\n '(' + listColInfoToPreserve + escapedNewIndexNameSQL + ' ' + newNameType + ')';\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(sql, [], function () {\n const sql = 'INSERT INTO ' + escapedTmpStoreNameSQL + '(' +\n listColsToPreserve + escapedNewIndexNameSQL +\n ') SELECT ' + listColsToPreserve + util.escapeIndexNameForSQL(oldName) + ' FROM ' + escapedStoreNameSQL;\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(sql, [], function () {\n const sql = 'DROP TABLE ' + escapedStoreNameSQL;\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(sql, [], function () {\n const sql = 'ALTER TABLE ' + escapedTmpStoreNameSQL + ' RENAME TO ' + escapedStoreNameSQL;\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(sql, [], function (tx) {\n if (!CFG.useSQLiteIndexes) {\n finish();\n return;\n }\n const indexCreations = colNamesToPreserve\n .slice(2) // Doing `key` separately and no need for index on `value`\n .map((escapedIndexNameSQL) => new SyncPromise(function (resolve, reject) {\n const escapedIndexToRecreate = util.sqlQuote(\n escapedStoreNameSQL.slice(1, -1) + '^5' + escapedIndexNameSQL.slice(1, -1)\n );\n // const sql = 'DROP INDEX IF EXISTS ' + escapedIndexToRecreate;\n // if (CFG.DEBUG) { console.log(sql); }\n // tx.executeSql(sql, [], function () {\n const sql = 'CREATE INDEX ' +\n escapedIndexToRecreate + ' ON ' + escapedStoreNameSQL + '(' + escapedIndexNameSQL + ')';\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(\n sql,\n [],\n resolve,\n /** @type {SqlErrorCallback} */\n (function (tx, err) {\n reject(err);\n })\n );\n // }, function (tx, err) {\n // reject(err);\n // });\n }));\n indexCreations.push(\n new SyncPromise(function (resolve, reject) {\n const escapedIndexToRecreate = util.sqlQuote('sk_' + escapedStoreNameSQL.slice(1, -1));\n // Chrome erring here if not dropped first; Node does not\n const sql = 'DROP INDEX IF EXISTS ' + escapedIndexToRecreate;\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(\n sql, [], function () {\n const sql = 'CREATE INDEX ' + escapedIndexToRecreate +\n ' ON ' + escapedStoreNameSQL + '(\"key\")';\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(\n sql, [], resolve,\n /** @type {SqlErrorCallback} */\n (function (tx, err) {\n reject(err);\n })\n );\n },\n /** @type {SqlErrorCallback} */\n (function (tx, err) {\n reject(err);\n })\n );\n })\n );\n SyncPromise.all(indexCreations).then(finish).catch(\n /** @type {(reason: unknown) => PromiseLike<never>} */\n (error)\n ).catch((err) => {\n console.log('Index rename error');\n throw err;\n });\n }, /** @type {SqlErrorCallback} */ (sqlError));\n }, /** @type {SqlErrorCallback} */ (sqlError));\n }, /** @type {SqlErrorCallback} */ (sqlError));\n }, /** @type {SqlErrorCallback} */ (sqlError));\n });\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nObject.defineProperty(IDBIndex, Symbol.hasInstance, {\n /**\n * @param {unknown} obj\n * @returns {boolean}\n */\n value: (obj) => util.isObj(obj) &&\n 'openCursor' in obj &&\n typeof obj.openCursor === 'function' &&\n 'multiEntry' in obj &&\n typeof obj.multiEntry === 'boolean'\n});\n\nutil.defineReadonlyOuterInterface(IDBIndex.prototype, readonlyProperties);\nutil.defineOuterInterface(IDBIndex.prototype, ['name']);\nutil.setOperationNames(IDBIndex.prototype);\n\nIDBIndex.prototype[Symbol.toStringTag] = 'IDBIndexPrototype';\n\nObject.defineProperty(IDBIndex, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\n/**\n * @param {number|null} count\n * @param {boolean} unboundedDisallowed\n * @param {IDBIndexFull} index\n * @param {boolean} hasKey\n * @param {import('./Key.js').Value|import('./Key.js').Key} range\n * @param {\"value\"|\"key\"|\"count\"} opType\n * @param {boolean} multiChecks\n * @param {string[]} sql\n * @param {string[]} sqlValues\n * @param {WebSQLTransaction} tx\n * @param {null|undefined} args\n * @param {(\n * result: number|undefined|[]|import('./Key.js').Value|import('./Key.js').Value[]\n * ) => void} success\n * @param {(tx: WebSQLTransaction, err: (Error & {code?: number})) => void} error\n * @returns {void}\n */\nfunction executeFetchIndexData (\n count, unboundedDisallowed, index, hasKey, range, opType,\n multiChecks, sql, sqlValues, tx, args, success, error\n) {\n if (unboundedDisallowed) {\n count = 1;\n }\n if (count) {\n sql.push('LIMIT', String(count));\n }\n const isCount = opType === 'count';\n if (CFG.DEBUG) { console.log('Trying to fetch data for Index', sql.join(' '), sqlValues); }\n tx.executeSql(sql.join(' '), sqlValues, function (tx, data) {\n const records = [];\n let recordCount = 0;\n const decode = isCount\n ? () => { /* */ }\n : (opType === 'key'\n // eslint-disable-next-line @stylistic/operator-linebreak -- JSDoc\n ?\n /**\n * @param {{\n * key: string\n * }} record\n * @returns {import('./Key.js').ValueType|undefined}\n */\n (record) => {\n // Key.convertValueToKey(record.key); // Already validated before storage\n return Key.decode(util.unescapeSQLiteResponse(record.key));\n }\n // eslint-disable-next-line @stylistic/operator-linebreak -- JSDoc\n :\n /**\n * @param {{\n * value: string\n * }} record\n * @returns {import('./Key.js').Value}\n */\n (record) => { // when opType is value\n return Sca.decode(util.unescapeSQLiteResponse(record.value));\n });\n if (index.multiEntry) {\n const escapedIndexNameForKeyCol = util.escapeIndexNameForSQLKeyColumn(index.name);\n const encodedKey = Key.encode(range, index.multiEntry);\n for (let i = 0; i < data.rows.length; i++) {\n const row = /** @type {{key: string, value: string, [k: string]: string}} */ (data.rows.item(i));\n const rowKey = /** @type {import('./Key.js').ValueTypeArray} */ (\n Key.decode(row[escapedIndexNameForKeyCol])\n );\n let record;\n if (hasKey && (\n (multiChecks && /** @type {import('./Key.js').ValueType[]} */ (range).some(\n /**\n * @param {import('./Key.js').ValueType} check\n * @returns {boolean}\n */\n (check) => rowKey.includes(check)\n )) || // More precise than our SQL\n Key.isMultiEntryMatch(\n // Added `JSON.stringify` as was having problems with\n // `JSON.stringify` encoding added to nested\n // array keys\n JSON.stringify(encodedKey).slice(1, -1),\n row[escapedIndexNameForKeyCol]\n )\n )) {\n recordCount++;\n record = row;\n } else if (!hasKey && !multiChecks) {\n if (rowKey !== undefined) {\n recordCount += (Array.isArray(rowKey) ? rowKey.length : 1);\n record = row;\n }\n }\n if (record) {\n records.push(decode(record));\n if (unboundedDisallowed) {\n break;\n }\n }\n }\n } else {\n for (let i = 0; i < data.rows.length; i++) {\n const record = /** @type {{key: string, value: string}} */ (data.rows.item(i));\n if (record) {\n records.push(decode(record));\n }\n }\n recordCount = records.length;\n }\n if (isCount) {\n success(recordCount);\n } else if (recordCount === 0) {\n success(unboundedDisallowed ? undefined : []);\n } else {\n success(unboundedDisallowed ? records[0] : records);\n }\n }, /** @type {SqlErrorCallback} */ (error));\n}\n\n/**\n * @param {boolean} nullDisallowed\n * @param {IDBIndexFull} index\n * @param {import('./Key.js').Value|import('./Key.js').Key} range\n * @param {\"value\"|\"key\"|\"count\"} opType\n * @param {boolean} multiChecks\n * @returns {[\n * nullDisallowed: boolean,\n * index: IDBIndexFull,\n * hasRange: boolean,\n * range: import('./Key.js').Value|import('./Key.js').Key,\n * opType: \"value\"|\"key\"|\"count\",\n * multiChecks: boolean,\n * sql: string[],\n * sqlValues: string[]\n * ]}\n */\nfunction buildFetchIndexDataSQL (\n nullDisallowed, index, range, opType, multiChecks\n) {\n const hasRange = nullDisallowed || !util.isNullish(range);\n const col = opType === 'count' ? 'key' : opType; // It doesn't matter which column we use for 'count' as long as it is valid\n const sql = [\n 'SELECT', util.sqlQuote(col) + (\n index.multiEntry ? ', ' + util.escapeIndexNameForSQL(index.name) : ''\n ),\n 'FROM', util.escapeStoreNameForSQL(index.objectStore.__currentName),\n 'WHERE', util.escapeIndexNameForSQL(index.name), 'NOT NULL'\n ];\n\n /** @type {string[]} */\n const sqlValues = [];\n if (hasRange) {\n if (multiChecks) {\n sql.push('AND (');\n /** @type {import('./Key.js').KeyPathArray} */ (\n range\n ).forEach((innerKey, i) => {\n if (i > 0) { sql.push('OR'); }\n sql.push(util.escapeIndexNameForSQL(index.name), \"LIKE ? ESCAPE '^' \");\n sqlValues.push('%' + util.sqlLIKEEscape(\n /** @type {string} */ (Key.encode(innerKey, index.multiEntry))\n ) + '%');\n });\n sql.push(')');\n } else if (index.multiEntry) {\n sql.push('AND', util.escapeIndexNameForSQL(index.name), \"LIKE ? ESCAPE '^'\");\n\n if (Array.isArray(range)) {\n // Todo: For nesting deeper than one level, we probably need to\n // run `JSON.stringify` again\n sqlValues.push('%' + util.sqlLIKEEscape(\n JSON.stringify(\n /** @type {string} */ (Key.encode(range, index.multiEntry))\n ).slice(1, -1)\n ) + '%');\n } else {\n sqlValues.push('%' + util.sqlLIKEEscape(\n /** @type {string} */ (Key.encode(range, index.multiEntry))\n ) + '%');\n }\n } else {\n const convertedRange = convertValueToKeyRange(range, nullDisallowed);\n setSQLForKeyRange(convertedRange, util.escapeIndexNameForSQL(index.name), sql, sqlValues, true, false);\n }\n }\n return [nullDisallowed, index, hasRange, range, opType, multiChecks, sql, sqlValues];\n}\n\n// eslint-disable-next-line unicorn/no-named-default -- Had some reason\nexport {buildFetchIndexDataSQL, executeFetchIndexData, IDBIndex, IDBIndex as default};\n","import SyncPromise from 'sync-promise-expanded';\nimport {createDOMException} from './DOMException.js';\nimport {IDBCursor, IDBCursorWithValue, parseGetAllArgs, parseGetAllRecordsArgs, collectAll} from './IDBCursor.js';\nimport {setSQLForKeyRange, convertValueToKeyRange} from './IDBKeyRange.js';\nimport DOMStringList from './DOMStringList.js';\nimport * as util from './util.js';\nimport * as Key from './Key.js';\nimport {executeFetchIndexData, buildFetchIndexDataSQL, IDBIndex} from './IDBIndex.js';\nimport cmp from './cmp.js';\nimport IDBTransaction from './IDBTransaction.js';\nimport * as Sca from './Sca.js';\nimport CFG from './CFG.js';\n\nconst readonlyProperties = ['keyPath', 'indexNames', 'transaction', 'autoIncrement'];\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLTransaction.js').default} WebSQLTransaction\n */\n\n/**\n * IndexedDB Object Store.\n * @see https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBObjectStore\n * @class\n * @throws {TypeError}\n */\nfunction IDBObjectStore () {\n throw new TypeError('Illegal constructor');\n}\nconst IDBObjectStoreAlias = IDBObjectStore;\n\n/**\n * @typedef {IDBObjectStore & {\n * name: string,\n * keyPath: import('./Key.js').KeyPath,\n * transaction?: import('./IDBTransaction.js').IDBTransactionFull|null,\n * indexNames: import('./DOMStringList.js').DOMStringListFull,\n * autoIncrement: boolean,\n * __autoIncrement: boolean,\n * __indexes: {[key: string]: import('./IDBIndex.js').IDBIndexFull},\n * __indexHandles: {[key: string]: import('./IDBIndex.js').IDBIndexFull},\n * __indexNames: import('./DOMStringList.js').DOMStringListFull,\n * __oldIndexNames: import('./DOMStringList.js').DOMStringListFull,\n * __transaction?: import('./IDBTransaction.js').IDBTransactionFull|null,\n * __name: string,\n * __keyPath: import('./Key.js').KeyPath,\n * __originalName: string,\n * __currentName: string,\n * __pendingName?: string,\n * __pendingDelete?: boolean,\n * __pendingCreate?: boolean,\n * __deleted?: boolean,\n * __cursors: (\n * import('./IDBCursor.js').IDBCursorFull|\n * import('./IDBCursor.js').IDBCursorWithValueFull\n * )[],\n * __idbdb: import('./IDBDatabase.js').IDBDatabaseFull,\n * __validateKeyAndValueAndCloneValue: (\n * value: import('./Key.js').Value,\n * key: import('./Key.js').Key|undefined,\n * cursorUpdate: boolean\n * ) => KeyValueArray,\n * __deriveKey: (\n * tx: WebSQLTransaction,\n * value: import('./Key.js').Value,\n * key: import('./Key.js').Key|undefined,\n * success: (key: import('./Key.js').Value, cn?: Integer) => void,\n * failCb: import('./Key.js').SQLFailureCallback\n * ) => void,\n * __checkIndexConstraints: (\n * tx: WebSQLTransaction,\n * value: import('./Key.js').Value,\n * excludeKey: import('./Key.js').Key|Integer|undefined\n * ) => SyncPromise,\n * __insertData: (\n * tx: WebSQLTransaction,\n * encoded: string,\n * value: import('./Key.js').Value,\n * clonedKeyOrCurrentNumber: import('./Key.js').Key|Integer,\n * oldCn: Integer|undefined,\n * success: (clonedKeyOrCurrentNumber: import('./Key.js').Key|Integer) => void,\n * error: (err: Error|DOMException) => void\n * ) => SyncPromise,\n * __overwrite: (\n * tx: WebSQLTransaction,\n * key: import('./Key.js').Key,\n * cb: (tx: WebSQLTransaction) => void,\n * error: (err: (Error & {code?: number})) => void\n * ) => void,\n * __get: (\n * query: import('./IDBIndex.js').Query,\n * getKey?: boolean,\n * getAll?: boolean,\n * count?: Integer\n * ) => import('./IDBRequest.js').IDBRequestFull,\n * }} IDBObjectStoreFull\n */\n\n/**\n *\n * @param {import('./IDBDatabase.js').IDBObjectStoreProperties} storeProperties\n * @param {import('./IDBTransaction.js').IDBTransactionFull|null} [transaction]\n * @returns {IDBObjectStoreFull}\n */\nIDBObjectStore.__createInstance = function (storeProperties, transaction) {\n /**\n * @class\n * @this {IDBObjectStoreFull}\n */\n function IDBObjectStore () {\n const me = this;\n // @ts-expect-error It's ok\n me[Symbol.toStringTag] = 'IDBObjectStore';\n util.defineReadonlyProperties(this, readonlyProperties);\n me.__name = me.__originalName = storeProperties.name;\n me.__keyPath = Array.isArray(storeProperties.keyPath) ? storeProperties.keyPath.slice() : storeProperties.keyPath;\n me.__transaction = transaction;\n me.__idbdb = storeProperties.idbdb;\n me.__cursors = storeProperties.cursors || [];\n\n // autoInc is numeric (0/1) on WinPhone\n me.__autoIncrement = Boolean(storeProperties.autoInc);\n\n me.__indexes = {};\n me.__indexHandles = {};\n me.__indexNames = DOMStringList.__createInstance();\n const {indexList} = storeProperties;\n for (const indexName in indexList) {\n if (!Object.hasOwn(indexList, indexName)) {\n continue;\n }\n\n const index = IDBIndex.__createInstance(me, indexList[indexName]);\n me.__indexes[index.name] = index;\n if (!index.__deleted) {\n me.indexNames.push(index.name);\n }\n }\n me.__oldIndexNames = me.indexNames.clone();\n Object.defineProperties(this, {\n __currentName: {\n get () {\n return '__pendingName' in this ? this.__pendingName : this.name;\n }\n },\n name: {\n enumerable: false,\n configurable: false,\n /**\n * @this {IDBObjectStoreFull}\n * @returns {string}\n */\n get () {\n return this.__name;\n },\n /**\n * @param {string} name\n * @this {IDBObjectStoreFull}\n * @returns {void}\n */\n set (name) {\n const me = this;\n name = util.convertToDOMString(name);\n const oldName = me.name;\n IDBObjectStoreAlias.__invalidStateIfDeleted(me);\n IDBTransaction.__assertVersionChange(me.transaction);\n IDBTransaction.__assertActive(me.transaction);\n if (oldName === name) {\n return;\n }\n if (Object.hasOwn(me.__idbdb.__objectStores, name) && !me.__idbdb.__objectStores[name].__pendingDelete) {\n throw createDOMException('ConstraintError', 'Object store \"' + name + '\" already exists in ' + me.__idbdb.name);\n }\n\n me.__name = name;\n\n const oldStore = me.__idbdb.__objectStores[oldName];\n oldStore.__name = name; // Fix old references\n me.__idbdb.__objectStores[name] = oldStore; // Ensure new reference accessible\n delete me.__idbdb.__objectStores[oldName]; // Ensure won't be found\n\n me.__idbdb.objectStoreNames.splice(me.__idbdb.objectStoreNames.indexOf(oldName), 1, name);\n\n const oldHandle = /** @type {IDBObjectStoreFull} */ (\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__storeHandles[oldName]\n );\n oldHandle.__name = name; // Fix old references\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__storeHandles[name] = oldHandle; // Ensure new reference accessible\n\n me.__pendingName = oldName;\n\n const sql = 'UPDATE __sys__ SET \"name\" = ? WHERE \"name\" = ?';\n const sqlValues = [util.escapeSQLiteStatement(name), util.escapeSQLiteStatement(oldName)];\n if (CFG.DEBUG) { console.log(sql, sqlValues); }\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__addNonRequestToTransactionQueue(function objectStoreClear (tx, args, success, error) {\n tx.executeSql(sql, sqlValues, function (tx) {\n // This SQL preserves indexes per https://www.sqlite.org/lang_altertable.html\n const sql = 'ALTER TABLE ' + util.escapeStoreNameForSQL(oldName) + ' RENAME TO ' + util.escapeStoreNameForSQL(name);\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(sql, [], function () {\n delete me.__pendingName;\n success();\n });\n }, function (tx, err) {\n error(err);\n return false;\n });\n });\n }\n }\n });\n }\n IDBObjectStore.prototype = IDBObjectStoreAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBObjectStore();\n};\n\n/**\n * Clones an IDBObjectStore instance for a different IDBTransaction instance.\n * @param {IDBObjectStoreFull} store\n * @param {import('./IDBTransaction.js').IDBTransactionFull} transaction\n * @returns {IDBObjectStoreFull}\n */\nIDBObjectStore.__clone = function (store, transaction) {\n const newStore = IDBObjectStore.__createInstance({\n name: store.__currentName,\n keyPath: Array.isArray(store.keyPath) ? store.keyPath.slice() : store.keyPath,\n autoInc: store.autoIncrement,\n indexList: {},\n idbdb: store.__idbdb,\n cursors: store.__cursors\n }, transaction);\n\n /** @type {const} */ ([\n '__indexes', '__indexNames', '__oldIndexNames',\n '__deleted', '__pendingDelete', '__pendingCreate', '__originalName'\n ]).forEach((p) => {\n // @ts-expect-error It's ok\n newStore[p] = store[p];\n });\n return newStore;\n};\n\n/**\n *\n * @param {IDBObjectStoreFull|import('./IDBIndex.js').IDBIndexFull} store\n * @param {string} [msg]\n * @throws {DOMException}\n * @returns {void}\n */\nIDBObjectStore.__invalidStateIfDeleted = function (store, msg) {\n if (\n store.__deleted || store.__pendingDelete || (store.__pendingCreate && (\n 'transaction' in store && store.transaction && store.transaction.__errored\n ))\n ) {\n throw createDOMException('InvalidStateError', msg || 'This store has been deleted');\n }\n};\n\n/**\n * Creates a new object store in the database.\n * @param {import('./IDBDatabase.js').IDBDatabaseFull} db\n * @param {IDBObjectStoreFull} store\n * @returns {IDBObjectStore}\n */\nIDBObjectStore.__createObjectStore = function (db, store) {\n // Add the object store to the IDBDatabase\n const storeName = store.__currentName;\n store.__pendingCreate = true;\n db.__objectStores[storeName] = store;\n db.objectStoreNames.push(storeName);\n\n // Add the object store to WebSQL\n const transaction =/** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n db.__versionTransaction\n );\n\n const storeHandles = transaction.__storeHandles;\n if (!Object.hasOwn(storeHandles, storeName) ||\n // These latter conditions are to allow store\n // recreation to create new clone object\n storeHandles[storeName].__pendingDelete ||\n storeHandles[storeName].__deleted) {\n storeHandles[storeName] = IDBObjectStore.__clone(store, transaction);\n }\n\n transaction.__addNonRequestToTransactionQueue(function createObjectStore (tx, args, success, failure) {\n /**\n * @param {WebSQLTransaction} tx\n * @param {(Error & {code?: number})} [err]\n * @returns {boolean}\n */\n function error (tx, err) {\n if (CFG.DEBUG) { console.log(err); }\n failure(createDOMException('UnknownError', 'Could not create object store \"' + storeName + '\"', err));\n return false;\n }\n\n const escapedStoreNameSQL = util.escapeStoreNameForSQL(storeName);\n // key INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE\n const sql = ['CREATE TABLE', escapedStoreNameSQL, '(key BLOB', store.autoIncrement ? 'UNIQUE, inc INTEGER PRIMARY KEY AUTOINCREMENT' : 'PRIMARY KEY', ', value BLOB)'].join(' ');\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(sql, [], function (tx) {\n /**\n * @returns {void}\n */\n function insertStoreInfo () {\n const encodedKeyPath = JSON.stringify(store.keyPath);\n tx.executeSql('INSERT INTO __sys__ VALUES (?,?,?,?,?)', [\n util.escapeSQLiteStatement(storeName),\n encodedKeyPath,\n // For why converting here, see comment and following\n // discussion at:\n // https://github.com/indexeddbshim/IndexedDBShim/issues/313#issuecomment-590086778\n Number(store.autoIncrement),\n '{}',\n 1\n ], function () {\n delete store.__pendingCreate;\n delete store.__deleted;\n success(store);\n }, error);\n }\n if (!CFG.useSQLiteIndexes) {\n insertStoreInfo();\n return;\n }\n tx.executeSql('CREATE INDEX IF NOT EXISTS ' + (\n util.sqlQuote('sk_' + escapedStoreNameSQL.slice(1, -1))\n ) + ' ON ' + escapedStoreNameSQL + '(\"key\")', [], insertStoreInfo, error);\n }, error);\n });\n return storeHandles[storeName];\n};\n\n/**\n * Deletes an object store from the database.\n * @param {import('./IDBDatabase.js').IDBDatabaseFull} db\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @returns {void}\n */\nIDBObjectStore.__deleteObjectStore = function (db, store) {\n // Remove the object store from the IDBDatabase\n store.__pendingDelete = true;\n // We don't delete the other index holders in case need reversion\n store.__indexNames = DOMStringList.__createInstance();\n\n db.objectStoreNames.splice(db.objectStoreNames.indexOf(store.__currentName), 1);\n\n const transaction = /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n db.__versionTransaction\n );\n const storeHandle = transaction.__storeHandles[store.__currentName];\n if (storeHandle) {\n storeHandle.__indexNames = DOMStringList.__createInstance();\n storeHandle.__pendingDelete = true;\n }\n\n // Remove the object store from WebSQL\n transaction.__addNonRequestToTransactionQueue(function deleteObjectStore (tx, args, success, failure) {\n /**\n * @param {WebSQLTransaction} tx\n * @param {(Error & {code?: number})} [err]\n * @returns {boolean}\n */\n function error (tx, err) {\n if (CFG.DEBUG) { console.log(err); }\n failure(createDOMException('UnknownError', 'Could not delete ObjectStore', err));\n return false;\n }\n\n tx.executeSql('SELECT \"name\" FROM __sys__ WHERE \"name\" = ?', [util.escapeSQLiteStatement(store.__currentName)], function (tx, data) {\n if (data.rows.length > 0) {\n tx.executeSql('DROP TABLE ' + util.escapeStoreNameForSQL(store.__currentName), [], function () {\n tx.executeSql('DELETE FROM __sys__ WHERE \"name\" = ?', [util.escapeSQLiteStatement(store.__currentName)], function () {\n delete store.__pendingDelete;\n store.__deleted = true;\n if (storeHandle) {\n delete storeHandle.__pendingDelete;\n storeHandle.__deleted = true;\n }\n success();\n }, error);\n }, error);\n }\n });\n });\n};\n\n/**\n * @typedef {[import('./Key.js').Key|undefined, import('./Key.js').Value]} KeyValueArray\n */\n\n// Todo: Although we may end up needing to do cloning genuinely asynchronously (for Blobs and FileLists),\n// and we'll want to ensure the queue starts up synchronously, we nevertheless do the cloning\n// before entering the queue and its callback since the encoding we do is preceded by validation\n// which we must do synchronously anyways. If we reimplement Blobs and FileLists asynchronously,\n// we can detect these types (though validating synchronously as possible) and once entering the\n// queue callback, ensure they load before triggering success or failure (perhaps by returning and\n// a `SyncPromise` from the `Sca.clone` operation and later detecting and ensuring it is resolved\n// before continuing).\n/**\n * Determines whether the given inline or out-of-line key is valid,\n * according to the object store's schema.\n * @param {import('./Key.js').Value} value Used for inline keys\n * @param {import('./Key.js').Key|undefined} key Used for out-of-line keys\n * @param {boolean} cursorUpdate\n * @throws {DOMException}\n * @this {IDBObjectStoreFull}\n * @returns {KeyValueArray}\n */\nIDBObjectStore.prototype.__validateKeyAndValueAndCloneValue = function (value, key, cursorUpdate) {\n const me = this;\n if (me.keyPath !== null) {\n if (key !== undefined) {\n throw createDOMException('DataError', 'The object store uses in-line keys and the key parameter was provided');\n }\n // Todo Binary: Avoid blobs loading async to ensure cloning (and errors therein)\n // occurs sync; then can make cloning and this method without callbacks (except where ok\n // to be async)\n const clonedValue = Sca.cloneWithInactiveTransaction(\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (me.transaction),\n value\n );\n const extractedKey = Key.extractKeyValueDecodedFromValueUsingKeyPath(clonedValue, me.keyPath); // May throw so \"rethrow\"\n if ('invalid' in extractedKey && extractedKey.invalid) {\n throw createDOMException('DataError', 'KeyPath was specified, but key was invalid.');\n }\n if ('failure' in extractedKey && extractedKey.failure) {\n if (!cursorUpdate) {\n if (!me.autoIncrement) {\n throw createDOMException('DataError', 'Could not evaluate a key from keyPath and there is no key generator');\n }\n // Todo: Could the keyPath not be an array?\n if (!Key.checkKeyCouldBeInjectedIntoValue(clonedValue, /** @type {string} */ (me.keyPath))) {\n throw createDOMException('DataError', 'A key could not be injected into a value');\n }\n // A key will be generated\n return [undefined, clonedValue];\n }\n throw createDOMException('DataError', 'Could not evaluate a key from keyPath');\n }\n // An `IDBCursor.update` call will also throw if not equal to the cursor’s effective key\n return [(/** @type {import('./Key.js').Key} */ (extractedKey.value)), clonedValue];\n }\n if (key === undefined) {\n if (!me.autoIncrement) {\n throw createDOMException('DataError', 'The object store uses out-of-line keys and has no key generator and the key parameter was not provided.');\n }\n // A key will be generated\n } else {\n Key.convertValueToKeyRethrowingAndIfInvalid(key);\n }\n const clonedValue = Sca.cloneWithInactiveTransaction(\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (me.transaction),\n value\n );\n return [key, clonedValue];\n};\n\n/**\n * From the store properties and object, extracts the value for the key in\n * the object store\n * If the table has auto increment, get the current number (unless it has\n * a keyPath leading to a valid but non-numeric or < 1 key).\n * @param {WebSQLTransaction} tx\n * @param {import('./Key.js').Value} value\n * @param {import('./Key.js').Key|undefined} key\n * @param {(key: import('./Key.js').Value, cn?: Integer) => void} success\n * @param {import('./Key.js').SQLFailureCallback} failCb\n * @this {IDBObjectStoreFull}\n * @returns {void}\n */\nIDBObjectStore.prototype.__deriveKey = function (tx, value, key, success, failCb) {\n const me = this;\n\n // Only run if cloning is needed\n /**\n * @param {Integer} [oldCn]\n * @returns {void}\n */\n function keyCloneThenSuccess (oldCn) { // We want to return the original key, so we don't need to accept an argument here\n Sca.encode(key, function (encodedKey) {\n success(Sca.decode(encodedKey), oldCn);\n });\n }\n\n if (me.autoIncrement) {\n // If auto-increment and no valid primaryKey found on the keyPath, get and set the new value, and use\n if (key === undefined) {\n Key.generateKeyForStore(tx, me, function (failure, key, oldCn) {\n if (failure) {\n failCb(createDOMException('ConstraintError', 'The key generator\\'s current number has reached the maximum safe integer limit'));\n return;\n }\n if (me.keyPath !== null) {\n // Should not throw now as checked earlier\n // Todo: Could this not be an array here?\n Key.injectKeyIntoValueUsingKeyPath(\n /** @type {{[key: string]: import('./Key.js').Value}} */ (value),\n /** @type {import('./Key.js').Key} */ (key),\n /** @type {string} */ (me.keyPath)\n );\n }\n success(key, oldCn);\n }, failCb);\n } else {\n Key.possiblyUpdateKeyGenerator(tx, me, key, keyCloneThenSuccess, failCb);\n }\n // Not auto-increment\n } else {\n keyCloneThenSuccess();\n }\n};\n\n/**\n * Validates `value`'s unique index entries against the table's *current*\n * state without mutating anything -- used by `__storingRecordObjectStore`\n * to check a `put()`'s constraints *before* `__overwrite` deletes the\n * existing row for that key, so a rejected `put()` can't end up losing\n * the record it was trying to replace (see\n * `idbobjectstore-put-unique-index-constraint-is-atomic.any.js`).\n * `excludeKey`, when given, treats a conflicting record as a non-conflict\n * if it's the very record being overwritten (its own current entry would\n * otherwise self-conflict on every no-op `put()` of an unchanged value).\n * `__insertData` below still runs its own (now redundant, but harmless --\n * the old row is gone by then) equivalent check as its first step; this\n * isn't merged into it because `__insertData` also performs the actual\n * `INSERT`, which cannot safely run before `__overwrite`'s `DELETE` when\n * overwriting an existing key.\n * @param {WebSQLTransaction} tx\n * @param {import('./Key.js').Value} value\n * @param {import('./Key.js').Key|Integer|undefined} excludeKey\n * @this {IDBObjectStoreFull}\n * @returns {SyncPromise}\n */\nIDBObjectStore.prototype.__checkIndexConstraints = function (tx, value, excludeKey) {\n const me = this;\n const indexPromises = Object.keys(me.__indexes).map((indexName) => {\n return new SyncPromise((resolve, reject) => {\n const index = me.__indexes[indexName];\n if (index.__pendingCreate || index.__deleted || !index.unique) {\n resolve(undefined);\n return;\n }\n /**\n * @type {import('./Key.js').KeyValueObject|\n * import('./Key.js').KeyPathEvaluateValue}\n */\n let indexKey;\n try {\n indexKey = Key.extractKeyValueDecodedFromValueUsingKeyPath(value, index.keyPath, index.multiEntry);\n if (\n ('invalid' in indexKey && indexKey.invalid) ||\n ('failure' in indexKey && indexKey.failure)\n ) {\n throw new Error('Go to catch');\n }\n } catch (err) {\n resolve(undefined);\n return;\n }\n const indexKeyValue = indexKey.value;\n if (indexKeyValue === undefined) {\n resolve(undefined);\n return;\n }\n const multiCheck = index.multiEntry && Array.isArray(indexKeyValue);\n const fetchArgs = buildFetchIndexDataSQL(true, index, indexKeyValue, 'key', multiCheck);\n executeFetchIndexData(null, ...fetchArgs, tx, null, function success (key) {\n if (key === undefined || (excludeKey !== undefined && cmp(\n /** @type {import('./Key.js').Key} */ (key), excludeKey\n ) === 0)) {\n resolve(undefined);\n return;\n }\n reject(createDOMException(\n 'ConstraintError',\n 'Index already contains a record equal to ' +\n (multiCheck ? 'one of the subkeys of' : '') +\n '`indexKey`'\n ));\n }, reject);\n });\n });\n return SyncPromise.all(indexPromises);\n};\n\n/**\n *\n * @param {WebSQLTransaction} tx\n * @param {string} encoded\n * @param {import('./Key.js').Value} value\n * @param {import('./Key.js').Key|Integer} clonedKeyOrCurrentNumber\n * @param {Integer|undefined} oldCn\n * @param {(\n * clonedKeyOrCurrentNumber: import('./Key.js').Key|Integer\n * ) => void} success\n * @param {(err: Error|DOMException) => void} error\n * @this {IDBObjectStoreFull}\n * @returns {SyncPromise}\n */\nIDBObjectStore.prototype.__insertData = function (tx, encoded, value, clonedKeyOrCurrentNumber, oldCn, success, error) {\n const me = this;\n // The `ConstraintError` to occur for `add` upon a duplicate will occur naturally in attempting an insert\n // We process the index information first as it will stored in the same table as the store\n /** @type {{[key: string]: string}} */\n const paramMap = {};\n const indexPromises = Object.keys(\n // We do not iterate `indexNames` as those can be modified synchronously (e.g.,\n // `deleteIndex` could, by its synchronous removal from `indexNames`, prevent\n // iteration here of an index though per IndexedDB test\n // `idbobjectstore_createIndex4-deleteIndex-event_order.js`, `createIndex`\n // should be allowed to first fail even in such a case).\n me.__indexes\n ).map((indexName) => {\n // While this may sometimes resolve sync and sometimes async, the\n // idea is to avoid, where possible, unnecessary delays (and\n // consuming code ought to only see a difference in the browser\n // where we can't control the transaction timeout anyways).\n return new SyncPromise((resolve, reject) => {\n const index = me.__indexes[indexName];\n if (\n // `createIndex` was called synchronously after the current insertion was added to\n // the transaction queue so although it was added to `__indexes`, it is not yet\n // ready to be checked here for the insertion as it will be when running the\n // `createIndex` operation (e.g., if two items with the same key were added and\n // *then* a unique index was created, it should not continue to err and abort\n // yet, as we're still handling the insertions which must be processed (e.g., to\n // add duplicates which then cause a unique index to fail))\n index.__pendingCreate ||\n // If already deleted (and not just slated for deletion (by `__pendingDelete`\n // after this add), we avoid checks\n index.__deleted\n ) {\n resolve(undefined);\n return;\n }\n /**\n * @type {import('./Key.js').KeyValueObject|\n * import('./Key.js').KeyPathEvaluateValue}\n */\n let indexKey;\n try {\n indexKey = Key.extractKeyValueDecodedFromValueUsingKeyPath(value, index.keyPath, index.multiEntry); // Add as necessary to this and skip past this index if exceptions here)\n if (\n ('invalid' in indexKey && indexKey.invalid) ||\n ('failure' in indexKey && indexKey.failure)\n ) {\n throw new Error('Go to catch');\n }\n } catch (err) {\n resolve(undefined);\n return;\n }\n const indexKeyValue = indexKey.value;\n /**\n * @param {import('./IDBIndex.js').IDBIndexFull} index\n * @returns {void}\n */\n function setIndexInfo (index) {\n if (indexKeyValue === undefined) {\n return;\n }\n paramMap[index.__currentName] = /** @type {string} */ (\n Key.encode(indexKeyValue, index.multiEntry)\n );\n }\n if (index.unique) {\n const multiCheck = index.multiEntry && Array.isArray(indexKeyValue);\n const fetchArgs = buildFetchIndexDataSQL(true, index, indexKeyValue, 'key', multiCheck);\n executeFetchIndexData(null, ...fetchArgs, tx, null, function success (key) {\n if (key === undefined) {\n setIndexInfo(index);\n resolve(undefined);\n return;\n }\n reject(createDOMException(\n 'ConstraintError',\n 'Index already contains a record equal to ' +\n (multiCheck ? 'one of the subkeys of' : '') +\n '`indexKey`'\n ));\n }, reject);\n } else {\n setIndexInfo(index);\n resolve(undefined);\n }\n });\n });\n return SyncPromise.all(indexPromises).then(() => {\n const sqlStart = ['INSERT INTO', util.escapeStoreNameForSQL(me.__currentName), '('];\n const sqlEnd = [' VALUES ('];\n const insertSqlValues = [];\n if (clonedKeyOrCurrentNumber !== undefined) {\n // Key.convertValueToKey(primaryKey); // Already run\n sqlStart.push(util.sqlQuote('key'), ',');\n sqlEnd.push('?,');\n insertSqlValues.push(\n util.escapeSQLiteStatement(\n /** @type {string} */ (Key.encode(clonedKeyOrCurrentNumber))\n )\n );\n }\n Object.entries(paramMap).forEach(([key, stmt]) => {\n sqlStart.push(util.escapeIndexNameForSQL(key) + ',');\n sqlEnd.push('?,');\n insertSqlValues.push(util.escapeSQLiteStatement(stmt));\n });\n // removing the trailing comma\n sqlStart.push(util.sqlQuote('value') + ' )');\n sqlEnd.push('?)');\n insertSqlValues.push(util.escapeSQLiteStatement(encoded));\n\n const insertSql = sqlStart.join(' ') + sqlEnd.join(' ');\n if (CFG.DEBUG) { console.log('SQL for adding', insertSql, insertSqlValues); }\n\n tx.executeSql(insertSql, insertSqlValues, function () {\n success(clonedKeyOrCurrentNumber);\n }, function (tx, err) {\n // Should occur for `add` operation\n error(createDOMException(\n 'ConstraintError', /** @type {string} */ (err.message), err\n ));\n return false;\n });\n return undefined;\n }).catch(function (err) {\n /**\n * @returns {void}\n */\n function fail () {\n // Todo: Add a different error object here if `assignCurrentNumber`\n // fails in reverting?\n error(err);\n }\n if (typeof oldCn === 'number') {\n Key.assignCurrentNumber(tx, me, oldCn, fail, fail);\n return null;\n }\n fail();\n return null;\n });\n};\n\n/**\n *\n * @param {import('./Key.js').Value} value\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.add = function (value /* , key */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n const key = arguments[1];\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('No value was specified');\n }\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__assertWritable();\n\n const request = /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__createRequest(me);\n const [ky, clonedValue] = me.__validateKeyAndValueAndCloneValue(value, key, false);\n // @ts-ignore -- Private API\n IDBObjectStore.__storingRecordObjectStore(request, me, true, clonedValue, true, ky);\n return request;\n};\n\n/**\n *\n * @param {import('./Key.js').Value} value\n * @throws {TypeError}\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.put = function (value /* , key */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n const key = arguments[1];\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('No value was specified');\n }\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__assertWritable();\n\n const request = /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__createRequest(me);\n const [ky, clonedValue] = me.__validateKeyAndValueAndCloneValue(value, key, false);\n // @ts-ignore -- Private API\n IDBObjectStore.__storingRecordObjectStore(request, me, true, clonedValue, false, ky);\n return request;\n};\n\n/**\n *\n * @param {WebSQLTransaction} tx\n * @param {import('./Key.js').Key} key\n * @param {(tx: WebSQLTransaction) => void} cb\n * @param {(err: (Error & {code?: number})) => void} error\n * @this {IDBObjectStoreFull}\n * @returns {void}\n */\nIDBObjectStore.prototype.__overwrite = function (tx, key, cb, error) {\n const me = this;\n // First try to delete if the record exists\n // Key.convertValueToKey(key); // Already run\n const sql = 'DELETE FROM ' + util.escapeStoreNameForSQL(me.__currentName) + ' WHERE \"key\" = ?';\n const encodedKey = /** @type {string} */ (Key.encode(key));\n tx.executeSql(sql, [util.escapeSQLiteStatement(encodedKey)], function (tx, data) {\n if (CFG.DEBUG) { console.log('Did the row with the', key, 'exist?', data.rowsAffected); }\n cb(tx);\n }, function (tx, err) {\n error(err);\n return false;\n });\n};\n\n/**\n *\n * @param {import('./IDBRequest.js').IDBRequestFull} request\n * @param {IDBObjectStoreFull} store\n * @param {boolean} invalidateCache\n * @param {import('./Key.js').Value} value\n * @param {boolean} noOverwrite\n * @returns {void}\n */\nIDBObjectStore.__storingRecordObjectStore = function (request, store, invalidateCache, value, noOverwrite /* , key */) {\n // eslint-disable-next-line prefer-rest-params -- API\n const key = arguments[5];\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n store.transaction\n ).__pushToQueue(request, function (tx, args, success, error) {\n store.__deriveKey(tx, value, key, function (clonedKeyOrCurrentNumberRaw, oldCn) {\n const clonedKeyOrCurrentNumber = /** @type {import('./Key.js').Key|Integer} */ (\n clonedKeyOrCurrentNumberRaw\n );\n Sca.encode(value, function (encoded) {\n /**\n * @param {WebSQLTransaction} tx\n * @returns {void}\n */\n function insert (tx) {\n store.__insertData(tx, encoded, value, clonedKeyOrCurrentNumber, oldCn, function (...args) {\n if (invalidateCache) {\n store.__cursors.forEach((cursor) => {\n cursor.__invalidateCache();\n });\n }\n success(...args);\n }, error);\n }\n if (!noOverwrite) {\n // Validate unique index constraints *before* `__overwrite`\n // deletes the existing row at this key -- otherwise a\n // `put()` that ends up rejected still permanently loses\n // the record it was trying to replace (see\n // `idbobjectstore-put-unique-index-constraint-is-atomic.any.js`).\n store.__checkIndexConstraints(tx, value, clonedKeyOrCurrentNumber).then(() => {\n store.__overwrite(tx, clonedKeyOrCurrentNumber, insert, error);\n return undefined;\n /**\n * @param {Error|DOMException} err\n * @returns {null}\n */\n }).catch(function (err) {\n /**\n * @returns {void}\n */\n function fail () {\n error(err);\n }\n if (typeof oldCn === 'number') {\n Key.assignCurrentNumber(tx, store, oldCn, fail, fail);\n return null;\n }\n fail();\n return null;\n });\n return;\n }\n insert(tx);\n });\n }, error);\n });\n};\n\n/**\n *\n * @param {import('./IDBIndex.js').Query} query\n * @param {boolean} [getKey]\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.__get = function (query, getKey) {\n const me = this;\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n\n const range = convertValueToKeyRange(query, true);\n\n const col = getKey ? 'key' : 'value';\n const sql = ['SELECT', util.sqlQuote(col), 'FROM', util.escapeStoreNameForSQL(me.__currentName)];\n /** @type {string[]} */\n const sqlValues = [];\n if (range !== undefined) {\n sql.push('WHERE');\n setSQLForKeyRange(range, util.sqlQuote('key'), sql, sqlValues);\n }\n sql.push('LIMIT', '1');\n const sqlStr = sql.join(' ');\n return /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__addToTransactionQueue(function objectStoreGet (tx, args, success, error) {\n if (CFG.DEBUG) { console.log('Fetching', me.__currentName, sqlValues); }\n tx.executeSql(sqlStr, sqlValues, function (tx, data) {\n if (CFG.DEBUG) { console.log('Fetched data', data); }\n let ret;\n try {\n // Opera can't deal with the try-catch here.\n if (data.rows.length === 0) {\n success();\n return;\n }\n ret = getKey\n ? Key.decode(util.unescapeSQLiteResponse(/** @type {{key: string}} */ (data.rows.item(0)).key), false)\n : Sca.decode(util.unescapeSQLiteResponse(/** @type {{value: string}} */ (data.rows.item(0)).value));\n } catch (e) {\n // If no result is returned, or error occurs when parsing JSON\n if (CFG.DEBUG) { console.log(e); }\n }\n success(ret);\n }, function (tx, err) {\n error(err);\n return false;\n });\n }, undefined, me);\n};\n\n/**\n *\n * @param {import('./IDBIndex.js').Query} query\n * @throws {TypeError}\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.get = function (query) {\n if (!arguments.length) {\n throw new TypeError('A parameter was missing for `IDBObjectStore.get`.');\n }\n return this.__get(query);\n};\n\n/**\n *\n * @param {import('./IDBIndex.js').Query} query\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.getKey = function (query) {\n if (!arguments.length) {\n throw new TypeError('A parameter was missing for `IDBObjectStore.getKey`.');\n }\n return this.__get(query, true);\n};\n\n/**\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.getAll = function (/* queryOrOptions, count */) {\n // eslint-disable-next-line prefer-rest-params -- API\n const {query, count, direction} = parseGetAllArgs(arguments);\n return collectAll(this, query, count, direction, 'value');\n};\n\n/**\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.getAllKeys = function (/* queryOrOptions, count */) {\n // eslint-disable-next-line prefer-rest-params -- API\n const {query, count, direction} = parseGetAllArgs(arguments);\n return collectAll(this, query, count, direction, 'key');\n};\n\n/**\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.getAllRecords = function (/* options */) {\n // eslint-disable-next-line prefer-rest-params -- API\n const {query, count, direction} = parseGetAllRecordsArgs(arguments);\n return collectAll(this, query, count, direction, 'record');\n};\n\n/**\n *\n * @param {import('./IDBIndex.js').Query} query\n * @throws {TypeError}\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.delete = function (query) {\n const me = this;\n if (!(this instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n if (!arguments.length) {\n throw new TypeError('A parameter was missing for `IDBObjectStore.delete`.');\n }\n\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__assertWritable();\n\n const range = convertValueToKeyRange(query, true);\n\n const sqlArr = ['DELETE FROM', util.escapeStoreNameForSQL(me.__currentName), 'WHERE'];\n /** @type {string[]} */\n const sqlValues = [];\n setSQLForKeyRange(range, util.sqlQuote('key'), sqlArr, sqlValues);\n const sql = sqlArr.join(' ');\n\n return /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__addToTransactionQueue(function objectStoreDelete (tx, args, success, error) {\n if (CFG.DEBUG) { console.log('Deleting', me.__currentName, sqlValues); }\n tx.executeSql(sql, sqlValues, function (tx, data) {\n if (CFG.DEBUG) { console.log('Deleted from database', data.rowsAffected); }\n me.__cursors.forEach((cursor) => {\n cursor.__invalidateCache(); // Delete\n });\n success();\n }, function (tx, err) {\n error(err);\n return false;\n });\n }, undefined, me);\n};\n\n/**\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.clear = function () {\n const me = this;\n if (!(this instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__assertWritable();\n\n return /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__addToTransactionQueue(function objectStoreClear (tx, args, success, error) {\n tx.executeSql('DELETE FROM ' + util.escapeStoreNameForSQL(me.__currentName), [], function (tx, data) {\n if (CFG.DEBUG) { console.log('Cleared all records from database', data.rowsAffected); }\n me.__cursors.forEach((cursor) => {\n cursor.__invalidateCache(); // Clear\n });\n success();\n }, function (tx, err) {\n error(err);\n return false;\n });\n }, undefined, me);\n};\n\n/**\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.count = function (/* query */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n const query = arguments[0];\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n\n // We don't need to add to cursors array since has the count parameter which won't cache\n return IDBCursorWithValue.__createInstance(query, 'next', me, me, 'key', 'value', true).__request;\n};\n\n/**\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.openCursor = function (/* query, direction */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n const [query, direction] = arguments;\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n IDBObjectStore.__invalidStateIfDeleted(me);\n const cursor = IDBCursorWithValue.__createInstance(query, direction, me, me, 'key', 'value');\n me.__cursors.push(cursor);\n return cursor.__request;\n};\n\n/**\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.openKeyCursor = function (/* query, direction */) {\n const me = this;\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n IDBObjectStore.__invalidStateIfDeleted(me);\n // eslint-disable-next-line prefer-rest-params -- API\n const [query, direction] = arguments;\n const cursor = IDBCursor.__createInstance(query, direction, me, me, 'key', 'key');\n me.__cursors.push(cursor);\n return cursor.__request;\n};\n\n/**\n *\n * @param {string} indexName\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBIndex.js').IDBIndexFull}\n */\nIDBObjectStore.prototype.index = function (indexName) {\n const me = this;\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('No index name was specified');\n }\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertNotFinished(me.transaction);\n const index = me.__indexes[indexName];\n if (!index || index.__deleted) {\n throw createDOMException('NotFoundError', 'Index \"' + indexName + '\" does not exist on ' + me.__currentName);\n }\n\n if (!Object.hasOwn(me.__indexHandles, indexName) ||\n me.__indexes[indexName].__pendingDelete ||\n me.__indexes[indexName].__deleted\n ) {\n me.__indexHandles[indexName] = IDBIndex.__clone(index, me);\n }\n return me.__indexHandles[indexName];\n};\n\n/**\n * Creates a new index on the object store.\n * @param {string} indexName\n * @param {string|string[]} keyPath\n * @this {IDBObjectStoreFull}\n * @returns {IDBIndex}\n */\nIDBObjectStore.prototype.createIndex = function (indexName, keyPath /* , optionalParameters */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n let optionalParameters = arguments[2];\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n indexName = String(indexName); // W3C test within IDBObjectStore.js seems to accept string conversion\n if (arguments.length === 0) {\n throw new TypeError('No index name was specified');\n }\n if (arguments.length === 1) {\n throw new TypeError('No key path was specified');\n }\n IDBTransaction.__assertVersionChange(me.transaction);\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n if (Object.hasOwn(me.__indexes, indexName) && !me.__indexes[indexName].__deleted && !me.__indexes[indexName].__pendingDelete) {\n throw createDOMException('ConstraintError', 'Index \"' + indexName + '\" already exists on ' + me.__currentName);\n }\n\n keyPath = util.convertToSequenceDOMString(keyPath);\n if (!util.isValidKeyPath(keyPath)) {\n throw createDOMException('SyntaxError', 'A valid keyPath must be supplied');\n }\n if (Array.isArray(keyPath) && optionalParameters && optionalParameters.multiEntry) {\n throw createDOMException('InvalidAccessError', 'The keyPath argument was an array and the multiEntry option is true.');\n }\n\n optionalParameters ||= {};\n /** @type {import('./IDBIndex.js').IDBIndexProperties} */\n const indexProperties = {\n columnName: indexName,\n keyPath,\n optionalParams: {\n unique: Boolean(optionalParameters.unique),\n multiEntry: Boolean(optionalParameters.multiEntry)\n }\n };\n const index = IDBIndex.__createInstance(me, indexProperties);\n IDBIndex.__createIndex(me, index);\n return index;\n};\n\n/**\n *\n * @param {string} name\n * @this {IDBObjectStoreFull}\n * @returns {void}\n */\nIDBObjectStore.prototype.deleteIndex = function (name) {\n const me = this;\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('No index name was specified');\n }\n IDBTransaction.__assertVersionChange(me.transaction);\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n const index = me.__indexes[name];\n if (!index) {\n throw createDOMException('NotFoundError', 'Index \"' + name + '\" does not exist on ' + me.__currentName);\n }\n\n IDBIndex.__deleteIndex(me, index);\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.defineReadonlyOuterInterface(IDBObjectStore.prototype, readonlyProperties);\nutil.defineOuterInterface(IDBObjectStore.prototype, ['name']);\nutil.setOperationNames(IDBObjectStore.prototype);\n\nIDBObjectStore.prototype[Symbol.toStringTag] = 'IDBObjectStorePrototype';\n\nObject.defineProperty(IDBObjectStore, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nexport default IDBObjectStore;\n","import {EventTargetFactory} from 'eventtargeter';\nimport {createDOMException} from './DOMException.js';\nimport {createEvent} from './Event.js';\nimport * as util from './util.js';\nimport DOMStringList from './DOMStringList.js';\nimport IDBObjectStore from './IDBObjectStore.js';\nimport IDBTransaction from './IDBTransaction.js';\n\nconst listeners = ['onabort', 'onclose', 'onerror', 'onversionchange'];\nconst readonlyProperties = ['name', 'version', 'objectStoreNames'];\n\n/**\n * @typedef {{\n * name: string,\n * keyPath: import('./Key.js').KeyPath,\n * autoInc: boolean,\n * indexList: {[key: string]: import('./IDBIndex.js').IDBIndexProperties},\n * idbdb: IDBDatabaseFull,\n * cursors?: (import('./IDBCursor.js').IDBCursorFull|\n * import('./IDBCursor.js').IDBCursorWithValueFull)[],\n * }} IDBObjectStoreProperties\n */\n\n/**\n * IDB Database Object.\n * @see https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#database-interface\n * @class\n * @this {IDBDatabaseFull}\n * @throws {TypeError}\n */\nfunction IDBDatabase () {\n this.__versionTransaction = null;\n this.__objectStores = {};\n /** @type {import('./IDBTransaction.js').IDBTransactionFull[]} */\n this.__transactions = [];\n throw new TypeError('Illegal constructor');\n}\nconst IDBDatabaseAlias = IDBDatabase;\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {IDBDatabase & EventTarget & {\n * createObjectStore: (storeName: string) => IDBObjectStore,\n * deleteObjectStore: (storeName: string) => void,\n * close: () => void,\n * transaction: (storeNames: string|string[], mode: string) => IDBTransaction,\n * throwIfUpgradeTransactionNull: () => void,\n * objectStoreNames: import('./DOMStringList.js').DOMStringListFull,\n * name: string,\n * __forceClose: (msg: string) => void,\n * __db: import('websql-configurable/lib/websql/WebSQLDatabase.js').default,\n * __closePending: boolean,\n * __oldVersion: Integer,\n * __version: Integer,\n * __name: string,\n * __upgradeTransaction: null|import('./IDBTransaction.js').IDBTransactionFull,\n * __versionTransaction: null|import('./IDBTransaction.js').IDBTransactionFull,\n * __transactions: import('./IDBTransaction.js').IDBTransactionFull[],\n * __objectStores: {[key: string]: import('./IDBObjectStore.js').IDBObjectStoreFull},\n * __objectStoreNames: import('./DOMStringList.js').DOMStringListFull,\n * __oldObjectStoreNames: import('./DOMStringList.js').DOMStringListFull,\n * __unblocking: {\n * check: () => void\n * }[]\n * }} IDBDatabaseFull\n */\n\n/**\n * @param {import('websql-configurable/lib/websql/WebSQLDatabase.js').default} db\n * @param {string} name\n * @param {Integer} oldVersion\n * @param {Integer} version\n * @param {import('websql-configurable/lib/websql/WebSQLResultSet.js').default} storeProperties\n * @returns {IDBDatabaseFull}\n */\nIDBDatabase.__createInstance = function (db, name, oldVersion, version, storeProperties) {\n /**\n * @class\n * @this {IDBDatabaseFull}\n */\n function IDBDatabase () {\n // @ts-expect-error It's ok\n this[Symbol.toStringTag] = 'IDBDatabase';\n util.defineReadonlyProperties(this, readonlyProperties);\n this.__db = db;\n this.__closePending = false;\n /** @type {{check: () => void}[]} */\n this.__unblocking = [];\n this.__oldVersion = oldVersion;\n this.__version = version;\n this.__name = name;\n this.__upgradeTransaction = null;\n util.defineListenerProperties(this, listeners);\n // @ts-expect-error Part of `ShimEventTarget`\n this.__setOptions({\n legacyOutputDidListenersThrowFlag: true // Event hook for IndexedB\n });\n\n /** @type {import('./IDBTransaction.js').IDBTransactionFull[]} */\n this.__transactions = [];\n\n /** @type {{[key: string]: IDBObjectStore}} */\n this.__objectStores = {};\n this.__objectStoreNames = DOMStringList.__createInstance();\n\n const itemCopy = /** @type {IDBObjectStoreProperties} */ ({});\n for (let i = 0; i < storeProperties.rows.length; i++) {\n const item = /** @type {{name: string, keyPath: string, autoInc: string, indexList: string}} */ (storeProperties.rows.item(i));\n // Safari implements `item` getter return object's properties\n // as readonly, so we copy all its properties (except our\n // custom `currNum` which we don't need) onto a new object\n itemCopy.name = item.name;\n itemCopy.keyPath = JSON.parse(item.keyPath);\n // Though `autoInc` is coming from the database as a NUMERIC\n // type (how SQLite stores BOOLEAN set in CREATE TABLE),\n // and should thus be parsed into a number here (0 or 1),\n // `IDBObjectStore.__createInstance` will convert to a boolean\n // when setting the store's `autoIncrement`.\n /** @type {const} */ (['autoInc', 'indexList']).forEach((prop) => {\n itemCopy[prop] = JSON.parse(item[prop]);\n });\n\n itemCopy.idbdb = this;\n const store = IDBObjectStore.__createInstance(itemCopy);\n this.__objectStores[store.name] = store;\n this.objectStoreNames.push(store.name);\n }\n this.__oldObjectStoreNames = this.objectStoreNames.clone();\n }\n IDBDatabase.prototype = IDBDatabaseAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBDatabase();\n};\n\n// @ts-expect-error It's ok\nIDBDatabase.prototype = EventTargetFactory.createInstance();\nIDBDatabase.prototype[Symbol.toStringTag] = 'IDBDatabasePrototype';\n\n/**\n * Creates a new object store.\n * @param {string} storeName\n * @this {IDBDatabaseFull}\n * @returns {IDBObjectStore}\n */\nIDBDatabase.prototype.createObjectStore = function (storeName /* , createOptions */) {\n // eslint-disable-next-line prefer-rest-params -- API\n let createOptions = arguments[1];\n storeName = String(storeName); // W3C test within IDBObjectStore.js seems to accept string conversion\n if (!(this instanceof IDBDatabase)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('No object store name was specified');\n }\n IDBTransaction.__assertVersionChange(this.__versionTransaction); // this.__versionTransaction may not exist if called mistakenly by user in onsuccess\n this.throwIfUpgradeTransactionNull();\n IDBTransaction.__assertActive(this.__versionTransaction);\n\n createOptions = {...createOptions};\n let {keyPath} = createOptions;\n keyPath = keyPath === undefined ? null : util.convertToSequenceDOMString(keyPath);\n if (keyPath !== null && !util.isValidKeyPath(keyPath)) {\n throw createDOMException('SyntaxError', 'The keyPath argument contains an invalid key path.');\n }\n\n if (Object.hasOwn(this.__objectStores, storeName) && !this.__objectStores[storeName].__pendingDelete) {\n throw createDOMException('ConstraintError', 'Object store \"' + storeName + '\" already exists in ' + this.name);\n }\n\n const autoInc = createOptions.autoIncrement;\n if (autoInc && (keyPath === '' || Array.isArray(keyPath))) {\n throw createDOMException('InvalidAccessError', 'With autoIncrement set, the keyPath argument must not be an array or empty string.');\n }\n\n /** @type {IDBObjectStoreProperties} */\n const storeProperties = {\n name: storeName,\n keyPath,\n autoInc,\n indexList: {},\n idbdb: this\n };\n const store = IDBObjectStore.__createInstance(storeProperties, this.__versionTransaction);\n return IDBObjectStore.__createObjectStore(this, store);\n};\n\n/**\n * Deletes an object store.\n * @param {string} storeName\n * @throws {TypeError|DOMException}\n * @this {IDBDatabaseFull}\n * @returns {void}\n */\nIDBDatabase.prototype.deleteObjectStore = function (storeName) {\n if (!(this instanceof IDBDatabase)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('No object store name was specified');\n }\n IDBTransaction.__assertVersionChange(this.__versionTransaction);\n this.throwIfUpgradeTransactionNull();\n IDBTransaction.__assertActive(this.__versionTransaction);\n\n const store = this.__objectStores[storeName];\n if (!store) {\n throw createDOMException('NotFoundError', 'Object store \"' + storeName + '\" does not exist in ' + this.name);\n }\n\n IDBObjectStore.__deleteObjectStore(this, store);\n};\n\n/**\n * @throws {TypeError}\n * @this {IDBDatabaseFull}\n * @returns {void}\n */\nIDBDatabase.prototype.close = function () {\n if (!(this instanceof IDBDatabase)) {\n throw new TypeError('Illegal invocation');\n }\n this.__closePending = true;\n // Multiple, separately-issued `open`/`deleteDatabase` requests can each\n // be waiting (concurrently) on this same connection to close -- e.g.\n // when an earlier one is still \"blocked\" but has already let the\n // connection queue move on to the next request -- so every registered\n // waiter must be notified, not just the most recently registered one.\n this.__unblocking.forEach(function (/** @type {{check: () => void}} */ u) { u.check(); });\n /** @type {{check: () => void}[]} */\n this.__unblocking = [];\n this.__transactions = [];\n};\n\n/**\n * Starts a new transaction.\n * @param {string|string[]} storeNames\n * @this {IDBDatabaseFull}\n * @returns {import('./IDBTransaction.js').IDBTransactionFull}\n */\nIDBDatabase.prototype.transaction = function (storeNames /* , mode, options */) {\n if (arguments.length === 0) {\n throw new TypeError('You must supply a valid `storeNames` to `IDBDatabase.transaction`');\n }\n // eslint-disable-next-line prefer-rest-params -- API\n let mode = arguments[1];\n // eslint-disable-next-line prefer-rest-params -- API\n const options = arguments[2];\n storeNames = util.isIterable(storeNames)\n // Creating new array also ensures sequence is passed by value: https://heycam.github.io/webidl/#idl-sequence\n ? [...new Set( // to be unique\n util.convertToSequenceDOMString(storeNames) // iterables have `ToString` applied (and we convert to array for convenience)\n // eslint-disable-next-line unicorn/require-array-sort-compare -- IndexedDB requires code unit comparison (default behavior)\n )].toSorted() // must be sorted\n : [util.convertToDOMString(storeNames)];\n\n /* (function () {\n throw new TypeError('You must supply a valid `storeNames` to `IDBDatabase.transaction`');\n }())); */\n\n // Since SQLite (at least node-websql and definitely WebSQL) requires\n // locking of the whole database, to allow simultaneous readwrite\n // operations on transactions without overlapping stores, we'd probably\n // need to save the stores in separate databases (we could also consider\n // prioritizing readonly but not starving readwrite).\n // Even for readonly transactions, due to [issue 17](https://github.com/nolanlawson/node-websql/issues/17),\n // we're not currently actually running the SQL requests in parallel.\n mode ||= 'readonly';\n\n IDBTransaction.__assertNotVersionChange(this.__versionTransaction);\n if (this.__closePending) {\n throw createDOMException('InvalidStateError', 'An attempt was made to start a new transaction on a database connection that is not open');\n }\n\n const objectStoreNames = DOMStringList.__createInstance();\n storeNames.forEach((storeName) => {\n if (!this.objectStoreNames.contains(storeName)) {\n throw createDOMException('NotFoundError', 'The \"' + storeName + '\" object store does not exist');\n }\n objectStoreNames.push(storeName);\n });\n\n if (storeNames.length === 0) {\n throw createDOMException('InvalidAccessError', 'No valid object store names were specified');\n }\n\n if (mode !== 'readonly' && mode !== 'readwrite') {\n throw new TypeError('Invalid transaction mode: ' + mode);\n }\n\n // Validated and reflected via `IDBTransaction.durability` for spec conformance only;\n // the SQLite/WebSQL backend has no equivalent flush/fsync knob to wire this to.\n let durability = options && options.durability;\n durability ||= 'default';\n if (durability !== 'default' && durability !== 'strict' && durability !== 'relaxed') {\n throw new TypeError('Invalid transaction durability: ' + durability);\n }\n\n // Do not set transaction state to \"inactive\" yet (will be set after\n // timeout on creating transaction instance):\n // https://github.com/w3c/IndexedDB/issues/87\n const trans = IDBTransaction.__createInstance(this, objectStoreNames, mode, durability);\n this.__transactions.push(trans);\n return trans;\n};\n\n/**\n * @see https://github.com/w3c/IndexedDB/issues/192\n * @throws {DOMException}\n * @this {IDBDatabaseFull}\n * @returns {void}\n */\nIDBDatabase.prototype.throwIfUpgradeTransactionNull = function () {\n if (this.__upgradeTransaction === null) {\n throw createDOMException('InvalidStateError', 'No upgrade transaction associated with database.');\n }\n};\n\n// Todo __forceClose: Add tests for `__forceClose`\n/**\n *\n * @param {string} msg\n * @this {IDBDatabaseFull}\n * @returns {void}\n */\nIDBDatabase.prototype.__forceClose = function (msg) {\n const me = this;\n me.close();\n let ct = 0;\n me.__transactions.forEach(function (trans) {\n // eslint-disable-next-line camelcase -- Clear API\n trans.on__abort = function () {\n ct++;\n if (ct === me.__transactions.length) {\n // Todo __forceClose: unblock any pending `upgradeneeded` or `deleteDatabase` calls\n const evt = createEvent('close');\n setTimeout(() => {\n me.dispatchEvent(evt);\n }, 0);\n }\n };\n trans.__abortTransaction(createDOMException(\n 'AbortError',\n 'The connection was force-closed: ' + (msg || '')\n ));\n });\n me.__transactions = [];\n};\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.defineOuterInterface(IDBDatabase.prototype, listeners);\nutil.defineReadonlyOuterInterface(IDBDatabase.prototype, readonlyProperties);\nutil.setOperationNames(IDBDatabase.prototype);\n\nObject.defineProperty(IDBDatabase.prototype, 'constructor', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: IDBDatabase\n});\n\nObject.defineProperty(IDBDatabase, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nexport default IDBDatabase;\n","/* eslint-disable sonarjs/no-invariant-returns -- Convenient here */\nimport SyncPromise from 'sync-promise-expanded';\n\nimport {createEvent} from './Event.js';\nimport IDBVersionChangeEvent from './IDBVersionChangeEvent.js';\nimport {logError, webSQLErrback, createDOMException} from './DOMException.js';\nimport {IDBOpenDBRequest} from './IDBRequest.js';\nimport cmp from './cmp.js';\nimport * as util from './util.js';\nimport * as Key from './Key.js';\nimport IDBTransaction from './IDBTransaction.js';\nimport IDBDatabase from './IDBDatabase.js';\nimport CFG from './CFG.js';\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLTransaction.js').default} WebSQLTransaction\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLTransaction.js').SqlErrorCallback} SqlErrorCallback\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLResultSet.js').default} WebSQLResultSet\n */\n\n/**\n * @callback DatabaseDeleted\n * @returns {void}\n */\n\n/** @type {import('./CFG.js').FSApi} */\nlet fs;\n\n/**\n * @param {import('./CFG.js').FSApi} _fs\n * @returns {void}\n */\nconst setFS = (_fs) => {\n // eslint-disable-next-line unicorn/no-top-level-assignment-in-function -- Necessary?\n fs = _fs;\n};\n\n/**\n * @returns {string}\n */\nconst getOrigin = () => {\n return (typeof location !== 'object' || !location) ? 'null' : location.origin;\n};\nconst hasNullOrigin = () => CFG.checkOrigin !== false && (getOrigin() === 'null');\n\n// Todo: This really should be process and tab-independent so the\n// origin could vary; in the browser, this might be through a\n// `SharedWorker`\n\n/**\n * @type {{\n * [key: string]: {\n * [key: string]: {\n * req: import('./IDBRequest.js').IDBOpenDBRequestFull,\n * cb: (req: import('./IDBRequest.js').IDBOpenDBRequestFull) => void,\n * }[]\n * }\n * }}\n */\nconst connectionQueue = {};\n\n/**\n * @param {string} name\n * @param {string} origin\n * @returns {void}\n */\nfunction processNextInConnectionQueue (name, origin = getOrigin()) {\n const queueItems = connectionQueue[origin][name];\n if (!queueItems[0]) { // Nothing left to process\n return;\n }\n const {req, cb} = queueItems[0]; // Keep in queue to prevent continuation\n\n /**\n * @returns {void}\n */\n function removeFromQueue () {\n queueItems.shift();\n processNextInConnectionQueue(name, origin);\n }\n // Only a terminal (`success`/`error`) event advances the queue --\n // `blocked` means this request is still pending (waiting on other\n // connections to close), so later requests for the same database must\n // keep waiting behind it rather than starting concurrently, per\n // https://w3c.github.io/IndexedDB/#request-connection-queue.\n req.addEventListener('success', removeFromQueue);\n req.addEventListener('error', removeFromQueue);\n cb(req);\n}\n\n/* eslint-disable default-param-last -- Keep cb at end */\n/**\n * @param {import('./IDBRequest.js').IDBOpenDBRequestFull} req\n * @param {string} name\n * @param {string} origin\n * @param {(req: import('./IDBRequest.js').IDBOpenDBRequestFull) => void} cb\n * @returns {void}\n */\nfunction addRequestToConnectionQueue (req, name, origin = getOrigin(), cb) {\n /* eslint-enable default-param-last -- Keep cb at end */\n if (!Object.hasOwn(connectionQueue[origin], name)) {\n connectionQueue[origin][name] = [];\n }\n connectionQueue[origin][name].push({req, cb});\n\n if (connectionQueue[origin][name].length === 1) { // If there are no items in the queue, we have to start it\n processNextInConnectionQueue(name, origin);\n }\n}\n\n/**\n * @param {import('./IDBDatabase.js').IDBDatabaseFull[]} openConnections\n * @param {import('./IDBRequest.js').IDBRequestFull} req\n * @param {Integer} oldVersion\n * @param {Integer|null} newVersion\n * @returns {SyncPromise}\n */\nfunction triggerAnyVersionChangeAndBlockedEvents (openConnections, req, oldVersion, newVersion) {\n // Todo: For Node (and in browser using service workers if available?) the\n // connections ought to involve those in any process; should also\n // auto-close if unloading\n\n /**\n * @param {import('./IDBDatabase.js').IDBDatabaseFull} connection\n * @returns {boolean|undefined}\n */\n const connectionIsClosed = (connection) => connection.__closePending;\n const connectionsClosed = () => openConnections.every((conn) => {\n return connectionIsClosed(conn);\n });\n return openConnections.reduce(function (promises, entry) {\n if (connectionIsClosed(entry)) {\n return promises;\n }\n return promises.then(function () {\n if (connectionIsClosed(entry)) {\n // Prior onversionchange must have caused this connection to be closed\n return undefined;\n }\n const e = /** @type {Event & IDBVersionChangeEvent} */ (\n // @ts-ignore It's ok; needed under some TS versions\n new IDBVersionChangeEvent('versionchange', {oldVersion, newVersion})\n );\n return new SyncPromise(function (resolve) {\n setTimeout(() => {\n entry.dispatchEvent(e); // No need to catch errors\n // Unlike a native `Promise`, `SyncPromise#then` chains\n // synchronously off `resolve()` (verified directly:\n // `SyncPromise.resolve().then(cb)` runs `cb` before\n // even the calling code below it finishes) -- so\n // resolving immediately here would let the\n // `connectionsClosed()` check below run before a\n // same-task-but-microtask-later continuation of a\n // `versionchange` listener above (e.g. an `await`-\n // based one that then calls `db.close()`, as in\n // `transaction-lifetime.any.js`) ever gets a turn,\n // incorrectly firing `blocked` even though the\n // connection was about to close in time. Give real\n // microtask-deferred continuations a small, bounded\n // number of turns first -- same pattern as\n // `IDBTransaction.js`'s `checkQueueEntry`.\n let attemptsLeft = 10;\n (function wait () {\n if (attemptsLeft-- <= 0) {\n resolve(undefined);\n return;\n }\n queueMicrotask(wait);\n }());\n }, 0);\n });\n });\n }, SyncPromise.resolve(undefined)).then(function () {\n if (connectionsClosed()) {\n return undefined;\n }\n return new SyncPromise(function (resolve) {\n const unblocking = {\n check () {\n if (connectionsClosed()) {\n resolve(undefined);\n }\n }\n };\n const e = /** @type {Event & IDBVersionChangeEvent} */ (\n // @ts-ignore It's ok; needed under some TS versions\n new IDBVersionChangeEvent('blocked', {oldVersion, newVersion})\n );\n setTimeout(() => {\n req.dispatchEvent(e); // No need to catch errors\n if (!connectionsClosed()) {\n openConnections.forEach((connection) => {\n if (!connectionIsClosed(connection)) {\n // Several concurrently-blocked requests can each be\n // waiting on this same connection, so append\n // rather than overwrite -- see `IDBDatabase.close`.\n connection.__unblocking.push(unblocking);\n }\n });\n } else {\n resolve(undefined);\n }\n }, 0);\n });\n });\n}\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLDatabase.js').default & {\n * _db: {\n * close: (errBack: (err: Error) => void) => void\n * }\n * }} DatabaseFull\n */\n\n/**\n * @type {{\n * [key: string]: {\n * [key: string]: DatabaseFull\n * }\n * }}\n */\nconst websqlDBCache = {};\n\n/**\n * Tracks databases with a creation/upgrade currently in flight but not yet\n * committed or aborted -- keyed by (unescaped) database name. The\n * `dbVersions` row in `sysdb` these entries shadow is written *before*\n * `upgradeneeded` is even dispatched to user code (as the success\n * callback of that very `INSERT`/`UPDATE`), on the same shared `sysdb`\n * connection `databases()` itself reads from -- so, absent this, a\n * `databases()` call made while an upgrade is still pending would see\n * the new row (or new version) immediately, rather than only once the\n * corresponding `versionchange` transaction has genuinely committed, as\n * required by `get-databases.any.js`'s \"doesn't pick up changes that\n * haven't committed\" test. `IDBFactory.prototype.databases` filters\n * its SQL results against this map.\n * @type {Map<string, {oldVersion: Integer, newVersion: Integer}>}\n */\nconst pendingVersionChanges = new Map();\n\n/** @type {import('websql-configurable/lib/websql/WebSQLDatabase.js').default} */\nlet sysdb;\nlet nameCounter = 0;\n\n/**\n * @param {string} name\n * @returns {Integer}\n */\nfunction getLatestCachedWebSQLVersion (name) {\n return Object.keys(websqlDBCache[name]).map(Number).reduce(\n (prev, curr) => {\n return Math.max(curr, prev);\n }, 0\n );\n}\n\n/**\n * @param {string} name\n * @returns {DatabaseFull}\n */\nfunction getLatestCachedWebSQLDB (name) {\n return websqlDBCache[name] && websqlDBCache[name][\n getLatestCachedWebSQLVersion(name)\n ];\n}\n\n/**\n * A cached WebSQL connection (e.g., from a prior `open()`) can keep the\n * underlying SQLite file handle open even after `IDBDatabase#close()`\n * (which only flags the connection for closing without releasing the\n * handle, to allow instance reuse). On Windows, deleting a file while a\n * handle to it is still open fails with `EBUSY`, so any cached connections\n * for `name` must be actually closed (and evicted, since they're no longer\n * usable) before attempting to remove the file.\n * @param {string} name\n * @param {() => void} cb\n * @returns {void}\n */\nfunction closeCachedWebSQLConnections (name, cb) {\n if (!Object.hasOwn(websqlDBCache, name)) {\n cb();\n return;\n }\n const dbs = Object.values(websqlDBCache[name]);\n delete websqlDBCache[name];\n let remaining = dbs.length;\n if (remaining === 0) {\n cb();\n return;\n }\n dbs.forEach((db) => {\n const sqliteDB = db._db;\n if (!sqliteDB || !sqliteDB.close) {\n remaining--;\n if (remaining === 0) {\n cb();\n }\n return;\n }\n sqliteDB.close(\n /**\n * @param {Error} err\n * @returns {void}\n */\n (err) => {\n if (err) {\n console.warn('Error closing database connection prior to file removal: ' + err);\n }\n remaining--;\n if (remaining === 0) {\n cb();\n }\n }\n );\n });\n}\n\n/**\n * @param {OpenDatabase} __openDatabase\n * @param {string} name\n * @param {string} escapedDatabaseName\n * @param {DatabaseDeleted} databaseDeleted\n * @param {(tx: WebSQLTransaction|Error|(Error & {code?: number}), err?: (Error & {code?: number})) => boolean} dbError\n * @returns {void}\n */\nfunction cleanupDatabaseResources (__openDatabase, name, escapedDatabaseName, databaseDeleted, dbError) {\n const useMemoryDatabase = typeof CFG.memoryDatabase === 'string';\n if (useMemoryDatabase) {\n const latestSQLiteDBCached = Object.hasOwn(websqlDBCache, name) ? getLatestCachedWebSQLDB(name) : null;\n if (!latestSQLiteDBCached) {\n console.warn('Could not find a memory database instance to delete.');\n databaseDeleted();\n return;\n }\n const sqliteDB = latestSQLiteDBCached._db;\n if (!sqliteDB || !sqliteDB.close) {\n console.error('The `openDatabase` implementation does not have the expected `._db.close` method for closing the database');\n return;\n }\n sqliteDB.close(\n /**\n * @param {Error} err\n * @returns {void}\n */\n (err) => {\n if (err) {\n console.warn('Error closing (destroying) memory database');\n return;\n }\n databaseDeleted();\n }\n );\n return;\n }\n if (fs && CFG.deleteDatabaseFiles !== false) {\n closeCachedWebSQLConnections(name, () => {\n fs.unlink(util.joinPath(CFG.databaseBasePath || '', escapedDatabaseName), (err) => {\n if (err && err.code !== 'ENOENT') { // Ignore if file is already deleted\n const removalError = /** @type {Error & {code?: number}} */ (\n new Error('Error removing database file: ' + escapedDatabaseName + ' ' + err)\n );\n removalError.code = 0;\n dbError(removalError);\n return;\n }\n databaseDeleted();\n });\n });\n return;\n }\n\n const sqliteDB = __openDatabase(\n util.joinPath(CFG.databaseBasePath || '', escapedDatabaseName),\n '1',\n name,\n CFG.DEFAULT_DB_SIZE\n );\n sqliteDB.transaction(function (tx) {\n tx.executeSql('SELECT \"name\" FROM __sys__', [], function (tx, data) {\n const tables = data.rows;\n (function deleteTables (i) {\n if (i >= tables.length) {\n // If all tables are deleted, delete the housekeeping tables\n tx.executeSql('DROP TABLE IF EXISTS __sys__', [], function () {\n databaseDeleted();\n }, dbError);\n } else {\n // Delete all tables in this database, maintained in the sys table\n tx.executeSql('DROP TABLE ' + util.escapeStoreNameForSQL(\n util.unescapeSQLiteResponse( // Avoid double-escaping\n /** @type {{name: string}} */ (tables.item(i)).name\n )\n ), [], function () {\n deleteTables(i + 1);\n }, function () {\n deleteTables(i + 1);\n return false;\n });\n }\n }(0));\n }, function () {\n // __sys__ table does not exist, but that does not mean delete did not happen\n databaseDeleted();\n return false;\n });\n });\n}\n\n/**\n * @callback CreateSysDBSuccessCallback\n * @returns {void}\n */\n\n/**\n * Creates the sysDB to keep track of version numbers for databases.\n * @param {OpenDatabase} __openDatabase\n * @param {CreateSysDBSuccessCallback} success\n * @param {(tx: WebSQLTransaction|(Error & {code?: number})|Error, err?: (Error & {code?: number})) => void} failure\n * @returns {void}\n */\nfunction createSysDB (__openDatabase, success, failure) {\n /**\n *\n * @param {boolean|WebSQLTransaction|(Error & {code?: number})} tx\n * @param {(Error & {code?: number})} [err]\n * @returns {void}\n */\n function sysDbCreateError (tx, err) {\n const er = webSQLErrback(/** @type {(Error & {code?: number})} */ (err) || tx);\n if (CFG.DEBUG) { console.log('Error in sysdb transaction - when creating dbVersions', err); }\n failure(er);\n }\n\n if (sysdb) {\n success();\n } else {\n // eslint-disable-next-line unicorn/no-top-level-assignment-in-function -- Necessary?\n sysdb = __openDatabase(\n typeof CFG.memoryDatabase === 'string'\n ? CFG.memoryDatabase\n : util.joinPath(\n (typeof CFG.sysDatabaseBasePath === 'string'\n ? CFG.sysDatabaseBasePath\n : (CFG.databaseBasePath || '')),\n '__sysdb__' + (CFG.addSQLiteExtension !== false ? '.sqlite' : '')\n ),\n '1',\n 'System Database',\n CFG.DEFAULT_DB_SIZE\n );\n sysdb.transaction(function (systx) {\n systx.executeSql('CREATE TABLE IF NOT EXISTS dbVersions (name BLOB, version INT);', [], function (systx) {\n if (!CFG.useSQLiteIndexes) {\n success();\n return;\n }\n systx.executeSql(\n 'CREATE INDEX IF NOT EXISTS dbvname ON dbVersions(name)',\n [],\n success,\n /** @type {SqlErrorCallback} */ (sysDbCreateError)\n );\n }, /** @type {SqlErrorCallback} */ (sysDbCreateError));\n }, sysDbCreateError);\n }\n}\n\n/**\n * IDBFactory Class.\n * @see https://w3c.github.io/IndexedDB/#idl-def-IDBFactory\n * @throws {TypeError}\n * @class\n */\nfunction IDBFactory () {\n throw new TypeError('Illegal constructor');\n}\n\n/**\n * @typedef {(\n * name: string, version: string, displayName: string, estimatedSize: number\n * ) => import('websql-configurable/lib/websql/WebSQLDatabase.js').default} OpenDatabase\n */\n\n/**\n * @typedef {globalThis.IDBFactory & {\n * __openDatabase: OpenDatabase,\n * __connections: {\n * [key: string]: import('./IDBDatabase.js').IDBDatabaseFull[]\n * },\n * __forceClose: (dbName: string, connIdx: Integer, msg: string) => void,\n * __setConnectionQueueOrigin: (origin?: string) => void\n * }} IDBFactoryFull\n */\n\nconst IDBFactoryAlias = IDBFactory;\n/**\n * @returns {IDBFactoryFull}\n */\nIDBFactory.__createInstance = function () {\n /**\n * @class\n * @this {IDBFactoryFull}\n */\n function IDBFactory () {\n // @ts-expect-error It's ok\n this[Symbol.toStringTag] = 'IDBFactory';\n this.__connections = {};\n }\n IDBFactory.prototype = IDBFactoryAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBFactory();\n};\n\n/**\n * The IndexedDB Method to create a new database and return the DB.\n * @param {string} name\n * @this {IDBFactoryFull}\n * @throws {TypeError} Illegal invocation or no arguments (for database name)\n * @returns {IDBOpenDBRequest}\n */\nIDBFactory.prototype.open = function (name /* , version */) {\n const me = this;\n if (!(me instanceof IDBFactory)) {\n throw new TypeError('Illegal invocation');\n }\n // eslint-disable-next-line prefer-rest-params -- API\n let version = arguments[1];\n\n if (arguments.length === 0) {\n throw new TypeError('Database name is required');\n }\n if (version !== undefined) {\n version = util.enforceRange(version, 'unsigned long long');\n if (version === 0) {\n throw new TypeError('Version cannot be 0');\n }\n }\n if (hasNullOrigin()) {\n throw createDOMException('SecurityError', 'Cannot open an IndexedDB database from an opaque origin.');\n }\n\n const req = IDBOpenDBRequest.__createInstance();\n let calledDbCreateError = false;\n let isRevertingSysdb = false;\n\n if (CFG.autoName && name === '') {\n // eslint-disable-next-line unicorn/no-top-level-assignment-in-function -- Necessary?\n name = 'autoNamedDatabase_' + nameCounter++;\n }\n name = String(name); // cast to a string\n const sqlSafeName = util.escapeSQLiteStatement(name);\n\n const useMemoryDatabase = typeof CFG.memoryDatabase === 'string';\n const useDatabaseCache = CFG.cacheDatabaseInstances !== false || useMemoryDatabase;\n\n /** @type {string} */\n let escapedDatabaseName;\n // eslint-disable-next-line no-useless-catch -- Possible refactoring\n try {\n escapedDatabaseName = util.escapeDatabaseNameForSQLAndFiles(name);\n // eslint-disable-next-line sonarjs/no-useless-catch -- Possible refactoring\n } catch (err) {\n 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.');\n }\n\n /**\n *\n * @param {WebSQLTransaction|Error|(Error & {code?: number})} tx\n * @param {(Error & {code?: number})} [err]\n * @returns {boolean}\n */\n function dbCreateError (tx, err) {\n if (calledDbCreateError || isRevertingSysdb) {\n return false;\n }\n // Defensive cleanup: `pendingVersionChanges.set(name, ...)` (see\n // below) runs *before* the `dbVersions` `INSERT`/`UPDATE` it\n // guards is even attempted, but only `versionSet`'s own\n // `on__beforecomplete`/`on__preabort` handlers ever clear it --\n // and `versionSet` never runs at all if that `INSERT`/`UPDATE`,\n // or an earlier step in this same `open()` flow, fails first.\n // Without this, such a failure would leave the entry orphaned\n // forever, silently corrupting `databases()` for any *other*,\n // unrelated later `open()` call that happens to reuse the same\n // database name (common in WPT tests, e.g. generic names like\n // \"DB1\"/\"TestDatabase\" reused across different test files in\n // the same process). A no-op if no entry was ever set.\n pendingVersionChanges.delete(name);\n const er = err ? webSQLErrback(err) : /** @type {Error} */ (tx);\n calledDbCreateError = true;\n // Re: why bubbling here (and how cancelable is only really relevant for `window.onerror`) see: https://github.com/w3c/IndexedDB/issues/86\n const evt = createEvent('error', er, {bubbles: true, cancelable: true});\n req.__done = true;\n req.__error = er;\n req.__result = undefined; // Must be undefined if an error per `result` getter\n req.dispatchEvent(evt);\n return false;\n }\n\n /**\n *\n * @param {WebSQLTransaction} tx\n * @param {DatabaseFull} db\n * @param {Integer} oldVersion\n * @returns {void}\n */\n function setupDatabase (tx, db, oldVersion) {\n tx.executeSql('SELECT \"name\", \"keyPath\", \"autoInc\", \"indexList\" FROM __sys__', [], function (tx, data) {\n /**\n * @returns {void}\n */\n function finishRequest () {\n req.__result = connection;\n req.__done = true;\n }\n const connection = IDBDatabase.__createInstance(db, name, oldVersion, version, data);\n if (!Object.hasOwn(me.__connections, name)) {\n me.__connections[name] = [];\n }\n me.__connections[name].push(connection);\n\n if (oldVersion < version) {\n const openConnections = me.__connections[name].slice(0, -1);\n triggerAnyVersionChangeAndBlockedEvents(openConnections, req, oldVersion, version).then(function () {\n // DB Upgrade in progress\n /**\n *\n * @param {WebSQLTransaction} systx\n * @param {boolean|(Error & {code?: number})|DOMException|Error} err\n * @param {(tx?: WebSQLTransaction|(Error & {code?: number}), err?: (Error & {code?: number})|WebSQLResultSet) => boolean} cb\n * @returns {void}\n */\n let sysdbFinishedCb = function (systx, err, cb) {\n if (err) {\n /**\n * @param {unknown} [errorToShow]\n * @returns {void}\n */\n const manualRevert = function (errorToShow) {\n /**\n * @param {string} [msg]\n * @throws {Error}\n * @returns {never}\n */\n function reportError (msg) {\n throw new Error('Unable to roll back upgrade transaction!' + (msg || ''));\n }\n\n sysdb.transaction(\n function (systx) {\n // Attempt to revert\n if (oldVersion === 0) {\n systx.executeSql(\n 'DELETE FROM dbVersions WHERE \"name\" = ?',\n [sqlSafeName]\n );\n } else {\n systx.executeSql(\n 'UPDATE dbVersions SET \"version\" = ? WHERE \"name\" = ?',\n [oldVersion, sqlSafeName]\n );\n }\n },\n function (sqlErr) {\n isRevertingSysdb = false;\n cb(sqlErr); // eslint-disable-line promise/no-callback-in-promise -- Convenient\n },\n function () {\n isRevertingSysdb = false;\n // eslint-disable-next-line promise/no-callback-in-promise -- Convenient\n cb(/** @type {(Error & {code?: number})|undefined} */ (\n errorToShow || reportError\n ));\n }\n );\n };\n\n try {\n systx.executeSql(\n 'ROLLBACK',\n [],\n function () {\n cb(); // eslint-disable-line promise/no-callback-in-promise -- Convenient\n },\n function (tx, sqlErr) {\n // Browser/Node may fail with expired transaction, so manually revert\n manualRevert(sqlErr);\n return false;\n }\n );\n } catch (e) {\n // Browser may fail with expired transaction above so\n // no choice but to manually revert\n manualRevert(e);\n }\n return;\n }\n // In browser, should auto-commit\n cb(); // eslint-disable-line promise/no-callback-in-promise -- Convenient\n };\n\n sysdb.transaction(function (systx) {\n /**\n * @returns {void}\n */\n function versionSet () {\n const e = /** @type {import('eventtargeter').EventWithProps & Event & IDBVersionChangeEvent} */ (\n // @ts-ignore It's ok; needed under some TS versions\n new IDBVersionChangeEvent('upgradeneeded', {oldVersion, newVersion: version})\n );\n req.__result = connection;\n connection.__upgradeTransaction = req.__transaction = connection.__versionTransaction = IDBTransaction.__createInstance(connection, connection.objectStoreNames, 'versionchange');\n req.__done = true;\n\n req.transaction.__addNonRequestToTransactionQueue(\n /**\n * @param {import('websql-configurable/lib/websql/WebSQLTransaction.js').default} tx\n * @param {unknown[]} args\n * @param {(result?: unknown, req?: import('./IDBRequest.js').IDBRequestFull) => void} finished\n * @returns {void}\n */\n function onupgradeneeded (tx, args, finished /* , error */) {\n // Unlike ordinary requests, this dispatch doesn't go through\n // `IDBTransaction`'s own `success`/`error` closures, so it must\n // open/close the transaction's active-handler window itself.\n req.transaction.__handlerActive = true;\n req.dispatchEvent(e);\n // Give any microtask-scheduled continuation of the\n // `upgradeneeded` handler (e.g. a plain\n // `Promise.resolve().then(...)`, or an `await`-based\n // continuation of a promise resolved from within the handler,\n // such as testharness.js's own `EventWatcher`) a chance to\n // run -- and still observe the transaction as active -- before\n // we deactivate it again, per\n // https://github.com/w3c/IndexedDB/issues/87. A single deferred\n // tick isn't always enough: an `await`-based continuation can\n // take more than one microtask turn to resume (e.g.\n // `transaction-lifetime.any.js`'s `EventWatcher`-based\n // `await eventWatcher.wait_for('upgradeneeded')`), so retry a\n // small, bounded number of times first -- same pattern as\n // `IDBTransaction.js`'s `checkQueueEntry` -- rather than\n // resetting after only one. Only the flag reset itself is\n // deferred here -- unlike `IDBTransaction.js`'s\n // `advanceAfterDispatch`, `finished()` (this transaction's own\n // queue-advancement/completion signal) still runs\n // synchronously, at exactly its previous timing: an earlier\n // attempt at deferring `finished()` too raced against unrelated\n // test setup that assumed a freshly deleted/created database's\n // upgrade transaction had already fully completed by the time\n // this function returns.\n /**\n * @param {Integer} attemptsLeft\n * @returns {void}\n */\n function deferHandlerActiveReset (attemptsLeft) {\n if (attemptsLeft <= 0) {\n req.transaction.__handlerActive = false;\n return;\n }\n queueMicrotask(() => {\n deferHandlerActiveReset(attemptsLeft - 1);\n });\n }\n deferHandlerActiveReset(10);\n\n if (e.__legacyOutputDidListenersThrowError) {\n logError('Error', 'An error occurred in an upgradeneeded handler attached to request chain', /** @type {Error} */ (e.__legacyOutputDidListenersThrowError)); // We do nothing else with this error as per spec\n req.transaction.__abortTransaction(createDOMException('AbortError', 'A request was aborted.'));\n return;\n }\n finished();\n }\n );\n\n // eslint-disable-next-line camelcase -- Clear API\n req.transaction.on__beforecomplete =\n /**\n * @param {Event & {complete: () => void}} ev\n * @returns {void}\n */\n function (ev) {\n pendingVersionChanges.delete(name);\n connection.__upgradeTransaction = null;\n /** @type {import('./IDBDatabase.js').IDBDatabaseFull} */ (\n req.__result\n ).__versionTransaction = null;\n sysdbFinishedCb(systx, false, function () {\n req.transaction.__callTransFinishedCb(false, function () {\n ev.complete();\n req.__transaction = null;\n });\n return false;\n });\n };\n\n // eslint-disable-next-line camelcase -- Clear API\n req.transaction.on__preabort = function () {\n isRevertingSysdb = true;\n pendingVersionChanges.delete(name);\n connection.__upgradeTransaction = null;\n // We ensure any cache is deleted before any request error events fire and try to reopen\n if (useDatabaseCache) {\n if (Object.hasOwn(websqlDBCache, name)) {\n delete websqlDBCache[name][version];\n }\n }\n };\n\n // eslint-disable-next-line camelcase -- Clear API\n req.transaction.on__abort = function () {\n req.__transaction = null;\n // `readyState` and `result` will be reset anyways by `dbCreateError` but we follow spec.\n req.__result = undefined;\n req.__done = false;\n\n connection.close();\n isRevertingSysdb = true;\n setTimeout(() => {\n const err = createDOMException('AbortError', 'The upgrade transaction was aborted.');\n sysdbFinishedCb(systx, err, function (reportError) {\n if (oldVersion === 0) {\n cleanupDatabaseResources(\n me.__openDatabase,\n name,\n escapedDatabaseName,\n dbCreateError.bind(null, err),\n // @ts-expect-error It's ok\n reportError || dbCreateError\n );\n return false;\n }\n dbCreateError(err);\n return false;\n });\n }, 0);\n };\n\n // eslint-disable-next-line camelcase -- Clear API\n req.transaction.on__complete = function () {\n const pos = connection.__transactions.indexOf(req.transaction);\n if (pos !== -1) {\n connection.__transactions.splice(pos, 1);\n }\n\n if (/** @type {import('./IDBDatabase.js').IDBDatabaseFull} */ (\n req.__result\n ).__closePending) {\n req.__transaction = null;\n const err = createDOMException('AbortError', 'The connection has been closed.');\n dbCreateError(err);\n return;\n }\n // Since this is running directly after `IDBTransaction.complete`,\n // there should be a new task. However, while increasing the\n // timeout 1ms in `IDBTransaction.__executeRequests` can allow\n // `IDBOpenDBRequest.onsuccess` to trigger faster than a new\n // transaction as required by \"transaction-create_in_versionchange\" in\n // w3c/Transaction.js (though still on a timeout separate from this\n // preceding `IDBTransaction.oncomplete`), this causes a race condition\n // somehow with old transactions (e.g., for the Mocha test,\n // in `IDBObjectStore.deleteIndex`, \"should delete an index that was\n // created in a previous transaction\").\n // setTimeout(() => {\n\n finishRequest();\n\n req.__transaction = null;\n const e = createEvent('success');\n req.dispatchEvent(e);\n // });\n };\n }\n\n pendingVersionChanges.set(name, {oldVersion, newVersion: version});\n if (oldVersion === 0) {\n systx.executeSql('INSERT INTO dbVersions VALUES (?,?)', [sqlSafeName, version], versionSet, dbCreateError);\n } else {\n systx.executeSql('UPDATE dbVersions SET \"version\" = ? WHERE \"name\" = ?', [version, sqlSafeName], versionSet, dbCreateError);\n }\n }, dbCreateError, undefined, function (currentTask, err, done, rollback, commit) {\n if (currentTask.readOnly || err) {\n return true;\n }\n sysdbFinishedCb = function (systx, err, cb) {\n if (err) {\n rollback(err,\n /**\n * @param {Error} [reportError]\n * @returns {void}\n */\n function (reportError) {\n sysdb.transaction(\n function (systx) {\n if (oldVersion === 0) {\n systx.executeSql(\n 'DELETE FROM dbVersions WHERE \"name\" = ?',\n [sqlSafeName]\n );\n } else {\n systx.executeSql(\n 'UPDATE dbVersions SET \"version\" = ? WHERE \"name\" = ?',\n [oldVersion, sqlSafeName]\n );\n }\n },\n function (sqlErr) {\n isRevertingSysdb = false;\n cb(sqlErr); // eslint-disable-line promise/no-callback-in-promise -- Convenient\n },\n function () {\n isRevertingSysdb = false;\n cb(reportError); // eslint-disable-line promise/no-callback-in-promise -- Convenient\n }\n );\n });\n } else {\n commit(cb);\n }\n };\n return false;\n });\n return undefined;\n }).catch((err) => {\n console.log('Error within `triggerAnyVersionChangeAndBlockedEvents`');\n throw err;\n });\n } else {\n finishRequest();\n\n const e = createEvent('success');\n req.dispatchEvent(e);\n }\n }, dbCreateError);\n }\n\n /**\n *\n * @param {Integer} oldVersion\n * @returns {void}\n */\n function openDB (oldVersion) {\n /** @type {DatabaseFull} */\n let db;\n if (version === undefined) {\n // Resolve before use as a cache key below, or a `open(name)` call\n // (no explicit version) would cache/look up under `undefined`\n // instead of the actual version, causing a second, separate\n // connection to be opened for the same database on reopen.\n version = oldVersion || 1;\n }\n if ((useMemoryDatabase || useDatabaseCache) && Object.hasOwn(websqlDBCache, name) && Object.hasOwn(websqlDBCache[name], version)) {\n db = websqlDBCache[name][version];\n } else {\n db = /** @type {DatabaseFull} */ (me.__openDatabase(\n useMemoryDatabase ? CFG.memoryDatabase : util.joinPath(CFG.databaseBasePath || '', escapedDatabaseName),\n '1',\n name,\n CFG.DEFAULT_DB_SIZE\n ));\n if (useDatabaseCache) {\n if (!(Object.hasOwn(websqlDBCache, name))) {\n websqlDBCache[name] = {};\n }\n websqlDBCache[name][version] = db;\n }\n }\n\n if (oldVersion > version) {\n const err = createDOMException('VersionError', 'An attempt was made to open a database using a lower version than the existing version.', version);\n if (useDatabaseCache) {\n setTimeout(() => {\n dbCreateError(err);\n }, 0);\n } else {\n dbCreateError(err);\n }\n return;\n }\n\n db.transaction(function (tx) {\n tx.executeSql('CREATE TABLE IF NOT EXISTS __sys__ (name BLOB, keyPath BLOB, autoInc BOOLEAN, indexList BLOB, currNum INTEGER)', [], function () {\n /**\n * @returns {void}\n */\n function setup () {\n setupDatabase(tx, db, oldVersion);\n }\n if (!CFG.createIndexes) {\n setup();\n return;\n }\n tx.executeSql('CREATE INDEX IF NOT EXISTS sysname ON __sys__(name)', [], setup, dbCreateError);\n }, /** @type {SqlErrorCallback} */ (dbCreateError));\n }, dbCreateError);\n }\n\n addRequestToConnectionQueue(req, name, /* origin */ undefined, function () {\n let latestCachedVersion;\n if (useDatabaseCache) {\n if (!Object.hasOwn(websqlDBCache, name)) {\n websqlDBCache[name] = {};\n }\n latestCachedVersion = getLatestCachedWebSQLVersion(name);\n }\n if (latestCachedVersion) {\n openDB(latestCachedVersion);\n } else {\n createSysDB(me.__openDatabase, function () {\n sysdb.readTransaction(function (sysReadTx) {\n sysReadTx.executeSql('SELECT \"version\" FROM dbVersions WHERE \"name\" = ?', [sqlSafeName], function (sysReadTx, data) {\n if (data.rows.length === 0) {\n // Database with this name does not exist\n openDB(0);\n } else {\n openDB(/** @type {{version: Integer}} */ (data.rows.item(0)).version);\n }\n }, dbCreateError);\n }, dbCreateError);\n }, dbCreateError);\n }\n });\n\n return req;\n};\n\n/**\n * Deletes a database.\n * @param {string} name\n * @this {IDBFactoryFull}\n * @returns {IDBOpenDBRequest}\n */\nIDBFactory.prototype.deleteDatabase = function (name) {\n const me = this;\n if (!(me instanceof IDBFactory)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('Database name is required');\n }\n if (hasNullOrigin()) {\n throw createDOMException('SecurityError', 'Cannot delete an IndexedDB database from an opaque origin.');\n }\n\n name = String(name); // cast to a string\n const sqlSafeName = util.escapeSQLiteStatement(name);\n\n /** @type {string} */\n let escapedDatabaseName;\n // eslint-disable-next-line no-useless-catch -- Possible refactoring\n try {\n escapedDatabaseName = util.escapeDatabaseNameForSQLAndFiles(name);\n // eslint-disable-next-line sonarjs/no-useless-catch -- Possible refactoring\n } catch (err) {\n 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.');\n }\n\n const useMemoryDatabase = typeof CFG.memoryDatabase === 'string';\n const useDatabaseCache = CFG.cacheDatabaseInstances !== false || useMemoryDatabase;\n\n const req = IDBOpenDBRequest.__createInstance();\n let calledDBError = false;\n let version = 0;\n\n /**\n *\n * @param {boolean} err\n * @param {(erred?: boolean) => void} cb\n * @returns {void}\n */\n let sysdbFinishedCbDelete = function (err, cb) {\n cb(err);\n };\n\n // Although the spec has no specific conditions where an error\n // may occur in `deleteDatabase`, it does provide for\n // `UnknownError` as we may require upon a SQL deletion error\n /**\n *\n * @param {WebSQLTransaction|(Error & {code?: number})|Error} tx\n * @param {(Error & {code?: number})|boolean} [err]\n * @returns {boolean}\n */\n function dbError (tx, err) {\n if (calledDBError) {\n return false;\n }\n // Must be set synchronously (not inside the `sysdbFinishedCbDelete` callback below) to\n // guard against reentrancy: `sysdbFinishedCbDelete` -> `rollback`/`commit` -> websql-configurable's\n // `done()` -> `currentTask.errorCallback(er)`, which is this very `dbError`, calling back into\n // us before the first invocation has finished. Without this, a second rollback/commit gets\n // issued on the shared `sysdb` connection after it has already moved on to the next queued\n // transaction, corrupting that connection's task queue (see issue with unrelated `open()` calls\n // failing/crashing after a `deleteDatabase` file-removal error).\n calledDBError = true;\n const er = webSQLErrback(/** @type {(Error & {code?: number})} */ (err || tx));\n sysdbFinishedCbDelete(true, function () {\n req.__done = true;\n req.__error = er;\n req.__result = undefined; // Must be undefined if an error per `result` getter\n // Re: why bubbling here (and how cancelable is only really relevant for `window.onerror`) see: https://github.com/w3c/IndexedDB/issues/86\n const e = createEvent('error', er, {bubbles: true, cancelable: true});\n req.dispatchEvent(e);\n });\n return false;\n }\n\n addRequestToConnectionQueue(req, name, /* origin */ undefined, function (req) {\n createSysDB(me.__openDatabase, function () {\n // function callback (cb) { cb(); }\n // callback(function () {\n\n /**\n * @returns {void}\n */\n function completeDatabaseDelete () {\n req.__result = undefined;\n req.__done = true;\n const e = /** @type {Event & IDBVersionChangeEvent} */ (\n // @ts-ignore It's ok; needed under some TS versions\n new IDBVersionChangeEvent('success', {oldVersion: version, newVersion: null})\n );\n req.dispatchEvent(e);\n }\n\n /** @type {DatabaseDeleted} */\n function databaseDeleted () {\n sysdbFinishedCbDelete(false, function () {\n if (useDatabaseCache && Object.hasOwn(websqlDBCache, name)) {\n delete websqlDBCache[name]; // New calls will treat as though never existed\n }\n delete me.__connections[name];\n\n completeDatabaseDelete();\n });\n }\n sysdb.readTransaction(function (sysReadTx) {\n sysReadTx.executeSql('SELECT \"version\" FROM dbVersions WHERE \"name\" = ?', [sqlSafeName], function (sysReadTx, data) {\n if (data.rows.length === 0) {\n completeDatabaseDelete();\n return undefined;\n }\n ({version} = /** @type {{version: Integer}} */ (data.rows.item(0)));\n\n const openConnections = me.__connections[name] || [];\n triggerAnyVersionChangeAndBlockedEvents(openConnections, req, version, null).then(function () {\n // Since we need two databases which can't be in a single transaction, we\n // do this deleting from `dbVersions` first since the `__sys__` deleting\n // only impacts file memory whereas this one is critical for avoiding it\n // being found via `open` or `databases`; however, we will\n // avoid committing anyways until all deletions are made and rollback the\n // `dbVersions` change if they fail\n sysdb.transaction(function (systx) {\n systx.executeSql('DELETE FROM dbVersions WHERE \"name\" = ? ', [sqlSafeName], function () {\n // Todo: We should also check whether `dbVersions` is empty and if so, delete upon\n // `deleteDatabaseFiles` config. We also ought to do this when aborting (see\n // above code with `DELETE FROM dbVersions`)\n cleanupDatabaseResources(me.__openDatabase, name, escapedDatabaseName, databaseDeleted, dbError);\n }, dbError);\n }, dbError, undefined, function (currentTask, err, done, rollback, commit) {\n if (currentTask.readOnly || err) {\n return true;\n }\n sysdbFinishedCbDelete = function (err, cb) {\n if (err) {\n rollback(err, cb);\n } else {\n commit(cb);\n }\n };\n return false;\n });\n return undefined;\n // @ts-expect-error It's ok\n }).catch(dbError);\n return undefined;\n }, dbError);\n });\n }, dbError);\n });\n\n return req;\n};\n\n/**\n *\n * @param {import('./Key.js').Key} key1\n * @param {import('./Key.js').Key} key2\n * @throws {TypeError}\n * @returns {number}\n */\nIDBFactory.prototype.cmp = function (key1, key2) {\n if (!(this instanceof IDBFactory)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length < 2) {\n throw new TypeError('You must provide two keys to be compared');\n }\n // We use encoding facilities already built for proper sorting;\n // the following \"conversions\" are for validation only\n Key.convertValueToKeyRethrowingAndIfInvalid(key1);\n Key.convertValueToKeyRethrowingAndIfInvalid(key2);\n return cmp(key1, key2);\n};\n\n/**\n * May return outdated information if a database has since been deleted.\n * @see https://github.com/w3c/IndexedDB/pull/240/files\n * @this {IDBFactoryFull}\n * @returns {Promise<{\n * name?: string,\n * version?: Integer\n * }[]>}\n */\nIDBFactory.prototype.databases = function () {\n const me = this;\n let calledDbCreateError = false;\n // Snapshotted *now*, synchronously, at call time -- not read later\n // from inside the SQL query's callback below, which runs on a\n // deferred macrotask (see `websql-configurable`'s `SQLiteDatabase#exec`) and so\n // could otherwise race against (and lose to) an in-flight upgrade's\n // own commit/abort handler clearing its `pendingVersionChanges`\n // entry in the meantime -- which would make this method incorrectly\n // reflect a since-committed change that hadn't committed yet when\n // it was actually called.\n const pendingVersionChangesSnapshot = new Map(pendingVersionChanges);\n return new Promise(function (resolve, reject) { // eslint-disable-line promise/avoid-new -- Own polyfill\n if (!(me instanceof IDBFactory)) {\n throw new TypeError('Illegal invocation');\n }\n if (hasNullOrigin()) {\n throw createDOMException('SecurityError', 'Cannot get IndexedDB database names from an opaque origin.');\n }\n /**\n *\n * @param {true|WebSQLTransaction|(Error & {code?: number})|DOMException|Error} tx\n * @param {(Error & {code?: number})|DOMException|Error} [err]\n * @returns {boolean}\n */\n function dbGetDatabaseNamesError (tx, err) {\n if (calledDbCreateError) {\n return false;\n }\n const er = err ? webSQLErrback(/** @type {(Error & {code?: number})} */ (err)) : tx;\n calledDbCreateError = true;\n reject(er);\n return false;\n }\n createSysDB(me.__openDatabase, function () {\n sysdb.readTransaction(function (sysReadTx) {\n sysReadTx.executeSql('SELECT \"name\", \"version\" FROM dbVersions', [], function (sysReadTx, data) {\n const dbNames = [];\n for (let i = 0; i < data.rows.length; i++) {\n const {name: encodedName, version} = /** @type {{name: string, version: Integer}} */ (data.rows.item(i));\n const name = util.unescapeSQLiteResponse(encodedName);\n // A row for a database whose creation/upgrade hasn't\n // committed yet (see `pendingVersionChanges`) must\n // not reflect that in-flight change: a brand new\n // database (`oldVersion === 0`) isn't reported at\n // all until its creation commits, and an existing\n // database being upgraded is still reported, but\n // with its pre-upgrade version.\n const pending = pendingVersionChangesSnapshot.get(name);\n if (pending) {\n if (pending.oldVersion === 0) {\n continue;\n }\n dbNames.push({name, version: pending.oldVersion});\n continue;\n }\n dbNames.push({name, version});\n }\n resolve(dbNames);\n }, dbGetDatabaseNamesError);\n }, dbGetDatabaseNamesError);\n }, dbGetDatabaseNamesError);\n });\n};\n\n/**\n * @todo forceClose: Test\n * This is provided to facilitate unit-testing of the\n * closing of a database connection with a forced flag:\n * <https://w3c.github.io/IndexedDB/#steps-for-closing-a-database-connection>\n * @param {string} dbName\n * @param {Integer} connIdx\n * @param {string} msg\n * @throws {TypeError}\n * @this {IDBFactoryFull}\n * @returns {void}\n */\nIDBFactory.prototype.__forceClose = function (dbName, connIdx, msg) {\n const me = this;\n /**\n *\n * @param {import('./IDBDatabase.js').IDBDatabaseFull} conn\n * @returns {void}\n */\n function forceClose (conn) {\n conn.__forceClose(msg);\n }\n if (util.isNullish(dbName)) {\n (Object.values(me.__connections)).forEach((connections) => {\n connections.forEach((connection) => {\n forceClose(connection);\n });\n });\n } else if (!Object.hasOwn(me.__connections, dbName)) {\n console.log('No database connections with that name to force close');\n } else if (util.isNullish(connIdx)) {\n me.__connections[dbName].forEach((conn) => {\n forceClose(conn);\n });\n // eslint-disable-next-line unicorn/prefer-number-is-safe-integer -- Ok\n } else if (!Number.isInteger(connIdx) || connIdx < 0 || connIdx > me.__connections[dbName].length - 1) {\n throw new TypeError(\n 'If providing an argument, __forceClose must be called with a ' +\n 'numeric index to indicate a specific connection to close'\n );\n } else {\n forceClose(me.__connections[dbName][connIdx]);\n }\n};\n\n/**\n *\n * @param {string} [origin]\n * @returns {void}\n */\nIDBFactory.prototype.__setConnectionQueueOrigin = function (origin = getOrigin()) {\n connectionQueue[origin] = {};\n};\n\nIDBFactory.prototype[Symbol.toStringTag] = 'IDBFactoryPrototype';\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.setOperationNames(IDBFactory.prototype);\nObject.defineProperty(IDBFactory, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nconst shimIndexedDB = IDBFactory.__createInstance();\nexport {IDBFactory, cmp, shimIndexedDB, setFS};\n","import * as util from './util.js';\n\nconst readonlyProperties = /** @type {const} */ (['key', 'primaryKey', 'value']);\n\n/* eslint-disable jsdoc/valid-types -- pratt parser bug */\n/**\n * @typedef {{\n * [Symbol.toStringTag]: 'IDBRecord',\n * __key: import('./Key.js').Key,\n * __primaryKey: import('./Key.js').Key,\n * __value: import('./Key.js').Value,\n * key: import('./Key.js').Key,\n * primaryKey: import('./Key.js').Key,\n * value: import('./Key.js').Value\n * }} IDBRecordFull\n */\n/* eslint-enable jsdoc/valid-types -- pratt parser bug */\n\n/**\n * The record type returned by `IDBObjectStore`/`IDBIndex#getAllRecords()`\n * (IndexedDB 3.0). Structured the same way as `IDBCursor` -- a public\n * constructor that always throws, with real instances only ever produced\n * internally via `__createInstance` -- so a record can't be directly\n * instantiated by script.\n * @see https://w3c.github.io/IndexedDB/#record-interface\n * @throws {TypeError}\n * @class\n */\nfunction IDBRecord () {\n throw new TypeError('Illegal constructor');\n}\nconst IDBRecordAlias = IDBRecord;\n\n/**\n * @param {import('./Key.js').Key} key\n * @param {import('./Key.js').Key} primaryKey\n * @param {import('./Key.js').Value} value\n * @returns {IDBRecordFull}\n */\nIDBRecord.__createInstance = function (key, primaryKey, value) {\n /**\n * @class\n * @this {IDBRecordFull}\n */\n function IDBRecord () {\n // @ts-ignore Should be ok\n this[Symbol.toStringTag] = 'IDBRecord';\n this.__key = key;\n this.__primaryKey = primaryKey;\n this.__value = value;\n }\n IDBRecord.prototype = IDBRecordAlias.prototype;\n\n // @ts-expect-error Properties added below on the shared prototype\n return new IDBRecord();\n};\n\nIDBRecord.prototype[Symbol.toStringTag] = 'IDBRecordPrototype';\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.setOperationNames(IDBRecord.prototype);\nutil.setOperationNames(IDBRecord);\n\n// Defined once on the shared prototype (rather than per-instance, as\n// `util.defineReadonlyProperties` would) since WPT's `assert_idl_attribute`\n// specifically requires these to be inherited, not own, properties.\nreadonlyProperties.forEach((prop) => {\n Object.defineProperty(IDBRecord.prototype, '__' + prop, {\n enumerable: false,\n configurable: false,\n writable: true\n });\n // We must resort to this to get \"get <name>\" as the function `name` for\n // proper IDL.\n const o = {\n /**\n * @returns {import('./Key.js').Key|import('./Key.js').Value}\n */\n get [prop] () {\n // This is defined on the *shared* prototype (see above), so,\n // unlike a per-instance getter, it's reachable by calling it\n // directly on `IDBRecord.prototype` itself (not a real\n // instance) -- WebIDL requires that to throw.\n if (!(this instanceof IDBRecordAlias)) {\n throw new TypeError('Illegal invocation');\n }\n // @ts-ignore `this` is a real instance past the check above (not an issue in TS7)\n return this['__' + prop];\n }\n };\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, prop)\n );\n Object.defineProperty(IDBRecord.prototype, prop, desc);\n});\n\nObject.defineProperty(IDBRecord, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nexport {IDBRecord};\n\nexport default IDBRecord;\n","import {IDBRequest} from './IDBRequest.js';\nimport IDBObjectStore from './IDBObjectStore.js';\nimport {createDOMException} from './DOMException.js';\nimport {setSQLForKeyRange, convertValueToKeyRange} from './IDBKeyRange.js';\nimport {cmp} from './IDBFactory.js';\nimport * as util from './util.js';\nimport IDBTransaction from './IDBTransaction.js';\nimport * as Key from './Key.js';\nimport * as Sca from './Sca.js';\nimport {IDBIndex} from './IDBIndex.js';\nimport CFG from './CFG.js';\nimport IDBRecord from './IDBRecord.js';\n\nconst cursorDirections = ['next', 'prev', 'nextunique', 'prevunique'];\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLTransaction.js').default} WebSQLTransaction\n */\n\n/**\n * @typedef {IDBCursor & {\n * primaryKey: import('./Key.js').Key|null|undefined,\n * key: import('./Key.js').Key|null|undefined,\n * direction: string,\n * source: import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull,\n * __request: import('./IDBRequest.js').IDBRequestFull,\n * __advanceCount: Integer|undefined,\n * __indexSource: boolean,\n * __key: import('./Key.js').Key|null|undefined,\n * __primaryKey: import('./Key.js').Key|null|undefined,\n * __value: import('./Key.js').Value,\n * __store: import('./IDBObjectStore.js').IDBObjectStoreFull,\n * __range: import('./IDBKeyRange.js').IDBKeyRangeFull|undefined,\n * __keyColumnName: string,\n * __valueColumnName: string,\n * __keyOnly: boolean,\n * __valueDecoder: {\n * decode: (str: string) => import('./Key.js').Value,\n * },\n * __count: boolean,\n * __prefetchedIndex: Integer,\n * __prefetchedData: null|{\n * length: number;\n * item(index: number): unknown;\n * }|{\n * data: RowItemNonNull[],\n * length: Integer,\n * item: (index: Integer) => RowItemNonNull\n * },\n * __multiEntryIndex: boolean,\n * __unique: boolean,\n * __sqlDirection: \"DESC\"|\"ASC\",\n * __matchedKeys: {[key: string]: true},\n * __continuationKey: import('./Key.js').Key|undefined,\n * __continuationPrimaryKey: import('./Key.js').Key|undefined,\n * __multiEntryExhausted: boolean,\n * __invalidateCache: () => void,\n * __gotValue: boolean,\n * __find: (\n * key: import('./Key.js').Key|undefined,\n * primaryKey: import('./Key.js').Key|undefined,\n * tx: WebSQLTransaction,\n * success: KeySuccess,\n * error: FindError,\n * recordsToLoad?: Integer\n * ) => void,\n * __findBasic: (\n * key: import('./Key.js').Key|undefined,\n * primaryKey: import('./Key.js').Key|undefined,\n * tx: WebSQLTransaction,\n * success: KeySuccess,\n * error: FindError,\n * recordsToLoad: Integer|undefined\n * ) => void,\n * __findMultiEntry: (\n * key: import('./Key.js').Key|undefined,\n * primaryKey: import('./Key.js').Key|undefined,\n * tx: WebSQLTransaction,\n * success: KeySuccess,\n * error: FindError,\n * recordsToLoad?: Integer\n * ) => void,\n * __onsuccess: (success: SuccessArg) => SuccessCallback,\n * __decode: (\n * rowItem: RowItemNonNull,\n * callback: (\n * key: import('./Key.js').Key|undefined,\n * val: import('./Key.js').Value,\n * primaryKey: import('./Key.js').Key|undefined,\n * encKey?: string\n * ) => void\n * ) => void,\n * __sourceOrEffectiveObjStoreDeleted: () => void,\n * __continue: (key?: import('./Key.js').Key, advanceContinue?: boolean) => void,\n * __continueFinish: (\n * key: import('./Key.js').Key|undefined,\n * primaryKey: import('./Key.js').Key|undefined,\n * advanceState: boolean\n * ) => void\n * }} IDBCursorFull\n */\n\n/**\n * @typedef {IDBCursorFull & {\n * __request: import('./IDBRequest.js').IDBRequestFull,\n * value: import('./Key.js').Value,\n * }} IDBCursorWithValueFull\n */\n\n/**\n * @class\n * @throws {TypeError}\n */\nfunction IDBCursor () {\n throw new TypeError('Illegal constructor');\n}\nconst IDBCursorAlias = IDBCursor;\n\n/* eslint-disable func-name-matching -- API */\n/**\n * The IndexedDB Cursor Object.\n * @see https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBCursor\n * @param {IDBKeyRange} query\n * @param {string} direction\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull} source\n * @param {string} keyColumnName\n * @param {string} valueColumnName\n * @param {boolean} [count]\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.__super = function IDBCursor (query, direction, store, source, keyColumnName, valueColumnName, count) {\n /* eslint-enable func-name-matching -- API */\n // @ts-expect-error Should be ok\n this[Symbol.toStringTag] = 'IDBCursor';\n util.defineReadonlyProperties(this, ['key', 'primaryKey', 'request']);\n IDBObjectStore.__invalidStateIfDeleted(store);\n this.__indexSource = util.instanceOf(source, IDBIndex);\n if (this.__indexSource) {\n IDBIndex.__invalidStateIfDeleted(\n /** @type {import('./IDBIndex.js').IDBIndexFull} */ (source)\n );\n }\n IDBTransaction.__assertActive(store.transaction);\n const range = convertValueToKeyRange(query);\n if (direction !== undefined && !cursorDirections.includes(direction)) {\n throw new TypeError(direction + 'is not a valid cursor direction');\n }\n\n Object.defineProperties(this, {\n // Babel is not respecting default writable false here, so make explicit\n source: {writable: false, value: source},\n direction: {writable: false, value: direction || 'next'}\n });\n this.__key = undefined;\n this.__primaryKey = undefined;\n\n this.__store = store;\n this.__range = range;\n this.__request = IDBRequest.__createInstance();\n this.__request.__source = source;\n this.__request.__transaction = this.__store.transaction;\n this.__keyColumnName = keyColumnName;\n this.__valueColumnName = valueColumnName;\n this.__keyOnly = valueColumnName === 'key';\n this.__valueDecoder = this.__keyOnly ? Key : Sca;\n this.__count = Boolean(count);\n this.__prefetchedIndex = -1;\n this.__continuationKey = undefined;\n this.__continuationPrimaryKey = undefined;\n this.__multiEntryExhausted = false;\n this.__multiEntryIndex = this.__indexSource\n ? 'multiEntry' in source && source.multiEntry\n : false;\n this.__unique = this.direction.includes('unique');\n this.__sqlDirection = ['prev', 'prevunique'].includes(this.direction) ? 'DESC' : 'ASC';\n\n if (range !== undefined) {\n // Encode the key range and cache the encoded values, so we don't have to re-encode them over and over\n range.__lowerCached = range.lower !== undefined && Key.encode(range.lower, this.__multiEntryIndex);\n range.__upperCached = range.upper !== undefined && Key.encode(range.upper, this.__multiEntryIndex);\n }\n this.__gotValue = true;\n this.continue();\n};\n\n/**\n *\n * @param {IDBKeyRange} query\n * @param {string} direction\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull} source\n * @param {string} keyColumnName\n * @param {string} valueColumnName\n * @param {boolean} [count]\n * @returns {IDBCursorFull}\n */\nIDBCursor.__createInstance = function (query, direction, store, source, keyColumnName, valueColumnName, count) {\n const IDBCursor = IDBCursorAlias.__super;\n IDBCursor.prototype = IDBCursorAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBCursor(\n query, direction, store, source, keyColumnName, valueColumnName, count\n );\n};\n\n/**\n *\n * @param {import('./Key.js').Key|undefined} key\n * @param {import('./Key.js').Key|undefined} primaryKey\n * @param {WebSQLTransaction} tx\n * @param {KeySuccess} success\n * @param {FindError} error\n * @param {Integer} [recordsToLoad]\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__find = function (key, primaryKey, tx, success, error, recordsToLoad) {\n if (this.__multiEntryIndex) {\n this.__findMultiEntry(key, primaryKey, tx, success, error, recordsToLoad);\n } else {\n this.__findBasic(key, primaryKey, tx, success, error, recordsToLoad);\n }\n};\n\n/**\n * @typedef {(\n * k: import('./Key.js').Key|undefined,\n * val: import('./Key.js').Value,\n * primKey: import('./Key.js').Key|undefined\n * ) => void} KeySuccess\n */\n\n/**\n * @typedef {(tx: WebSQLTransaction|Error|DOMException|(Error & {code?: number}), err?: (Error & {code?: number})) => void} FindError\n */\n\n/**\n *\n * @param {undefined|import('./Key.js').Key} key\n * @param {undefined|import('./Key.js').Key} primaryKey\n * @param {WebSQLTransaction} tx\n * @param {KeySuccess} success\n * @param {FindError} error\n * @param {Integer|undefined} recordsToLoad\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__findBasic = function (key, primaryKey, tx, success, error, recordsToLoad) {\n const continueCall = recordsToLoad !== undefined;\n recordsToLoad ||= 1;\n\n const me = this;\n const quotedKeyColumnName = util.sqlQuote(me.__keyColumnName);\n const quotedKey = util.sqlQuote('key');\n const sql = ['SELECT * FROM', util.escapeStoreNameForSQL(me.__store.__currentName)];\n\n /** @type {string[]} */\n const sqlValues = [];\n sql.push('WHERE', quotedKeyColumnName, 'NOT NULL');\n setSQLForKeyRange(me.__range, quotedKeyColumnName, sql, sqlValues, true, true);\n\n // Determine the ORDER BY direction based on the cursor.\n const direction = me.__sqlDirection;\n const op = direction === 'ASC' ? '>' : '<';\n\n if (primaryKey !== undefined) {\n sql.push('AND', quotedKey, op + '= ?');\n // Key.convertValueToKey(primaryKey); // Already checked by `continuePrimaryKey`\n sqlValues.push(/** @type {string} */ (Key.encode(primaryKey)));\n }\n if (key !== undefined) {\n sql.push('AND', quotedKeyColumnName, op + '= ?');\n // Key.convertValueToKey(key); // Already checked by `continue` or `continuePrimaryKey`\n sqlValues.push(/** @type {string} */ (Key.encode(key)));\n } else if (continueCall && me.__key !== undefined) {\n // Key.convertValueToKey(me.__key); // Already checked when stored\n if (!me.__unique && me.__keyColumnName !== 'key' && me.__primaryKey !== undefined) {\n // A plain `continue()` on a non-unique index cursor must find\n // the next record strictly after the (key, primaryKey) pair\n // this cursor last returned -- a scalar `key > lastKey` alone\n // would wrongly exclude a *different*, not-yet-visited record\n // that's still tied on key with the last one (e.g. another\n // record that always had that same indexed value), and would\n // also wrongly re-admit the *same* record forever if a\n // same-transaction `update()` bumped its own key back above\n // the threshold, since a scalar comparison can't distinguish\n // \"some other record newly tied\" from \"this record moved\n // past its own last position.\" Comparing the full tuple (via\n // this OR) against both key and primary key resolves both.\n sql.push(\n 'AND (', quotedKeyColumnName, op, '?',\n 'OR (', quotedKeyColumnName, '= ?', 'AND', quotedKey, op, '?))'\n );\n sqlValues.push(\n /** @type {string} */ (Key.encode(me.__key)),\n /** @type {string} */ (Key.encode(me.__key)),\n /** @type {string} */ (Key.encode(me.__primaryKey))\n );\n } else {\n sql.push('AND', quotedKeyColumnName, op + ' ?');\n sqlValues.push(/** @type {string} */ (Key.encode(me.__key)));\n }\n }\n\n if (!me.__count) {\n // 1. Sort by key\n sql.push('ORDER BY', quotedKeyColumnName, direction);\n\n if (me.__keyColumnName !== 'key') { // Avoid adding 'key' twice\n if (!me.__unique) {\n // 2. Sort by primaryKey (if defined and not unique)\n // 3. Sort by position (if defined)\n sql.push(',', quotedKey, direction);\n } else if (me.direction === 'prevunique') {\n // Sort by first record with key matching\n sql.push(',', quotedKey, 'ASC');\n }\n }\n\n if (!me.__unique && me.__indexSource) {\n // 4. Sort by object store position (if defined and not unique)\n sql.push(',', util.sqlQuote(me.__valueColumnName), direction);\n }\n sql.push('LIMIT', String(recordsToLoad));\n }\n const sqlStr = sql.join(' ');\n if (CFG.DEBUG) { console.log(sqlStr, sqlValues); }\n\n tx.executeSql(sqlStr, sqlValues, function (tx, data) {\n if (me.__count) {\n success(undefined, data.rows.length, undefined);\n } else if (data.rows.length > 1) {\n me.__prefetchedIndex = 0;\n me.__prefetchedData = data.rows;\n if (CFG.DEBUG) { console.log('Preloaded ' + data.rows.length + ' records for cursor'); }\n me.__decode(/** @type {RowItemNonNull} */ (data.rows.item(0)), success);\n } else if (data.rows.length === 1) {\n me.__decode(/** @type {RowItemNonNull} */ (data.rows.item(0)), success);\n } else {\n if (CFG.DEBUG) { console.log('Reached end of cursors'); }\n success(undefined, undefined, undefined);\n }\n }, function (tx, err) {\n if (CFG.DEBUG) { console.log('Could not execute Cursor.continue', sqlStr, sqlValues); }\n error(err);\n return false;\n });\n};\n\nconst leftBracketRegex = /\\[/gu;\n\n/**\n *\n * @param {undefined|import('./Key.js').Key} key\n * @param {undefined|import('./Key.js').Key} primaryKey\n * @param {WebSQLTransaction} tx\n * @param {KeySuccess} success\n * @param {FindError} error\n * @param {Integer} [recordsToLoad]\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__findMultiEntry = function (key, primaryKey, tx, success, error, recordsToLoad = 1) {\n const me = this;\n\n if (me.__multiEntryExhausted) {\n if (CFG.DEBUG) { console.log('[multiEntry] Reached end of multiEntry cursor (already exhausted)'); }\n success(undefined, undefined, undefined);\n return;\n }\n\n const quotedKeyColumnName = util.sqlQuote(me.__keyColumnName);\n const quotedKey = util.sqlQuote('key');\n\n // Determine the ORDER BY direction based on the cursor.\n const direction = me.__sqlDirection;\n const op = direction === 'ASC' ? '>' : '<';\n\n /**\n * Runs (and, if a batch of underlying rows produces no matching\n * multi-entry values, repeatedly re-runs) the query for the next batch\n * of underlying rows, advancing `me.__continuationKey`/\n * `me.__continuationPrimaryKey` (tracking the last *physical* row\n * scanned) each time, until either some matches are found or the\n * underlying table is exhausted.\n * @returns {void}\n */\n function runQuery () {\n const sql = ['SELECT * FROM', util.escapeStoreNameForSQL(me.__store.__currentName)];\n /** @type {string[]} */\n const sqlValues = [];\n sql.push('WHERE', quotedKeyColumnName, 'NOT NULL');\n if (me.__range && (me.__range.lower !== undefined && Array.isArray(me.__range.upper))) {\n if (me.__range.upper.indexOf(me.__range.lower) === 0) {\n sql.push('AND', quotedKeyColumnName, \"LIKE ? ESCAPE '^'\");\n sqlValues.push(\n '%' + util.sqlLIKEEscape(\n /** @type {string} */ (me.__range.__lowerCached).slice(0, -1)\n ) + '%'\n );\n }\n }\n\n if (primaryKey !== undefined) {\n sql.push('AND', quotedKey, op + '= ?');\n // Key.convertValueToKey(primaryKey); // Already checked by `continuePrimaryKey`\n sqlValues.push(/** @type {string} */ (Key.encode(primaryKey)));\n }\n if (key !== undefined) {\n sql.push('AND', quotedKeyColumnName, op + '= ?');\n // Key.convertValueToKey(key); // Already checked by `continue` or `continuePrimaryKey`\n sqlValues.push(/** @type {string} */ (Key.encode(key)));\n } else if (me.__continuationKey !== undefined) {\n // Resume from the last underlying (physical) row we scanned, not\n // from the last *matching* multi-entry value (which lives in a\n // different key-space than the raw index column and cannot be\n // reliably compared against it, e.g. for array index keys).\n sql.push(\n 'AND (', quotedKeyColumnName, op, '?',\n 'OR (', quotedKeyColumnName, '= ?', 'AND', quotedKey, op, '?))'\n );\n const encodedContinuationKey = /** @type {string} */ (\n Key.encode(me.__continuationKey, true)\n );\n sqlValues.push(\n encodedContinuationKey,\n encodedContinuationKey,\n /** @type {string} */ (Key.encode(me.__continuationPrimaryKey))\n );\n }\n\n if (!me.__count) {\n // 1. Sort by key\n sql.push('ORDER BY', quotedKeyColumnName, direction);\n\n // 2. Sort by primaryKey (if defined and not unique)\n if (!me.__unique && me.__keyColumnName !== 'key') { // Avoid adding 'key' twice\n sql.push(',', util.sqlQuote('key'), direction);\n }\n\n // 3. Sort by position (if defined)\n\n if (!me.__unique && me.__indexSource) {\n // 4. Sort by object store position (if defined and not unique)\n sql.push(',', util.sqlQuote(me.__valueColumnName), direction);\n }\n sql.push('LIMIT', String(recordsToLoad));\n }\n const sqlStr = sql.join(' ');\n if (CFG.DEBUG) { console.log('[multiEntry] query', sqlStr, sqlValues); }\n\n tx.executeSql(sqlStr, sqlValues, function (tx, data) {\n if (data.rows.length === 0) {\n me.__multiEntryExhausted = true;\n if (CFG.DEBUG) { console.log('[multiEntry] Reached end of multiEntry cursor (no more rows)'); }\n success(undefined, undefined, undefined);\n return;\n }\n\n if (me.__count) { // Avoid caching and other processing below\n let ct = 0;\n for (let i = 0; i < data.rows.length; i++) {\n const rowItem = /** @type {RowItemNonNull} */ (data.rows.item(i));\n const rowKey = Key.decode(rowItem[me.__keyColumnName], true);\n const matches = Key.findMultiEntryMatches(\n /** @type {import('./Key.js').Key} */ (rowKey), me.__range\n );\n ct += matches.length;\n }\n success(undefined, ct, undefined);\n return;\n }\n\n // Track how far we've physically scanned, regardless of whether\n // this batch produced any matches, so the next batch (if any)\n // resumes after this one instead of re-scanning or stopping early.\n const lastRawRow = /** @type {RowItemNonNull} */ (data.rows.item(data.rows.length - 1));\n me.__continuationKey = Key.decode(lastRawRow[me.__keyColumnName], true);\n me.__continuationPrimaryKey = Key.decode(lastRawRow.key);\n if (data.rows.length < recordsToLoad) {\n me.__multiEntryExhausted = true;\n }\n\n const rows = [];\n for (let i = 0; i < data.rows.length; i++) {\n const rowItem = /** @type {RowItemNonNull} */ (data.rows.item(i));\n const rowKey = Key.decode(rowItem[me.__keyColumnName], true);\n const matches = Key.findMultiEntryMatches(\n /** @type {import('./Key.js').Key} */ (rowKey), me.__range\n );\n\n for (const matchingKey of matches) {\n /**\n * @type {RowItemNonNull}\n */\n const clone = {\n matchingKey: /** @type {string} */ (\n Key.encode(matchingKey, true)\n ),\n key: rowItem.key,\n [me.__keyColumnName]: rowItem[me.__keyColumnName],\n [me.__valueColumnName]: rowItem[me.__valueColumnName]\n };\n rows.push(clone);\n }\n }\n\n if (rows.length === 0) {\n if (me.__multiEntryExhausted) {\n if (CFG.DEBUG) { console.log('[multiEntry] Reached end of multiEntry cursor (last batch had no matches)'); }\n success(undefined, undefined, undefined);\n return;\n }\n if (CFG.DEBUG) { console.log('[multiEntry] batch had no matches; fetching next batch'); }\n runQuery();\n return;\n }\n\n const reverse = me.direction.indexOf('prev') === 0;\n rows.sort(function (a, b) {\n if (a.matchingKey.replaceAll(leftBracketRegex, 'z') < b.matchingKey.replaceAll(leftBracketRegex, 'z')) {\n return reverse ? 1 : -1;\n }\n if (a.matchingKey.replaceAll(leftBracketRegex, 'z') > b.matchingKey.replaceAll(leftBracketRegex, 'z')) {\n return reverse ? -1 : 1;\n }\n if (a.key < b.key) {\n return me.direction === 'prev' ? 1 : -1;\n }\n if (a.key > b.key) {\n return me.direction === 'prev' ? -1 : 1;\n }\n return 0;\n });\n\n me.__prefetchedIndex = 0;\n me.__prefetchedData = {\n data: rows,\n length: rows.length,\n /**\n * @param {Integer} index\n * @this {{data: RowItemNonNull[]}}\n * @returns {RowItemNonNull}\n */\n item (index) {\n return this.data[index];\n }\n };\n if (CFG.DEBUG) { console.log('[multiEntry] Preloaded ' + me.__prefetchedData.length + ' records for multiEntry cursor'); }\n me.__decode(rows[0], success);\n }, function (tx, err) {\n if (CFG.DEBUG) { console.log('[multiEntry] Could not execute Cursor.continue', sqlStr, sqlValues); }\n error(err);\n return false;\n });\n }\n\n runQuery();\n};\n\n/**\n * @typedef {import('./Key.js').Value} StructuredCloneValue\n */\n\n/**\n * @typedef {import('./Key.js').Key} IndexedDBKey\n */\n\n/**\n * @callback SuccessArg\n * @param {StructuredCloneValue} value\n * @param {import('./IDBRequest.js').IDBRequestFull} req\n * @returns {void}\n */\n\n/**\n * @callback SuccessCallback\n * @param {IndexedDBKey|undefined} key\n * @param {StructuredCloneValue} value\n * @param {IndexedDBKey|undefined} primaryKey\n * @returns {void}\n */\n\n/**\n * Creates an \"onsuccess\" callback.\n * @param {SuccessArg} success\n * @this {IDBCursorFull}\n * @returns {SuccessCallback}\n */\nIDBCursor.prototype.__onsuccess = function (success) {\n const me = this;\n return function (key, value, primaryKey) {\n if (me.__count) {\n success(value, me.__request);\n } else {\n if (key !== undefined) {\n me.__gotValue = true;\n }\n me.__key = key === undefined ? null : key;\n me.__primaryKey = primaryKey === undefined ? null : primaryKey;\n me.__value = value === undefined ? null : value;\n const result = key === undefined ? null : me;\n success(result, me.__request);\n }\n };\n};\n\n/**\n * @typedef {{\n * matchingKey: string,\n * key: string,\n * [k: string]: string\n * }} RowItemNonNull\n */\n\n/**\n *\n * @param {RowItemNonNull} rowItem\n * @param {(\n * key: import('./Key.js').Key|undefined,\n * val: import('./Key.js').Value,\n * primaryKey: import('./Key.js').Key|undefined,\n * encKey?: string\n * ) => void} callback\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__decode = function (rowItem, callback) {\n const me = this;\n if (me.__multiEntryIndex && me.__unique) {\n if (!me.__matchedKeys) {\n me.__matchedKeys = {};\n }\n if (me.__matchedKeys[rowItem.matchingKey] === true) {\n callback(undefined, undefined, undefined);\n return;\n }\n me.__matchedKeys[rowItem.matchingKey] = true;\n }\n const encKey = util.unescapeSQLiteResponse(\n me.__multiEntryIndex\n ? rowItem.matchingKey\n : rowItem[me.__keyColumnName]\n );\n const encVal = util.unescapeSQLiteResponse(rowItem[me.__valueColumnName]);\n const encPrimaryKey = util.unescapeSQLiteResponse(rowItem.key);\n\n const key = Key.decode(\n encKey,\n me.__multiEntryIndex\n );\n const val = me.__valueDecoder.decode(encVal);\n const primaryKey = Key.decode(encPrimaryKey);\n callback(key, val, primaryKey, encKey /* , encVal, encPrimaryKey */);\n};\n\n/**\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__sourceOrEffectiveObjStoreDeleted = function () {\n IDBObjectStore.__invalidStateIfDeleted(this.__store, \"The cursor's effective object store has been deleted\");\n if (this.__indexSource) {\n IDBIndex.__invalidStateIfDeleted(\n /** @type {import('./IDBIndex.js').IDBIndexFull} */ (this.source),\n \"The cursor's index source has been deleted\"\n );\n }\n};\n\n/**\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__invalidateCache = function () {\n // @ts-ignore Why is this not being found?; needed under some TS versions\n this.__prefetchedData = null;\n this.__multiEntryExhausted = false;\n};\n\n/**\n *\n * @param {import('./Key.js').Key} [key]\n * @param {boolean} [advanceContinue]\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__continue = function (key, advanceContinue) {\n const me = this;\n const advanceState = me.__advanceCount !== undefined;\n IDBTransaction.__assertActive(me.__store.transaction);\n me.__sourceOrEffectiveObjStoreDeleted();\n if (!me.__gotValue && !advanceContinue) {\n throw createDOMException('InvalidStateError', 'The cursor is being iterated or has iterated past its end.');\n }\n if (key !== undefined) {\n Key.convertValueToKeyRethrowingAndIfInvalid(key);\n const cmpResult = cmp(key, me.key);\n if (cmpResult === 0 ||\n (me.direction.includes('next') && cmpResult === -1) ||\n (me.direction.includes('prev') && cmpResult === 1)\n ) {\n throw createDOMException('DataError', 'Cannot ' + (advanceState ? 'advance' : 'continue') + ' the cursor in an unexpected direction');\n }\n }\n this.__continueFinish(key, undefined, advanceState);\n};\n\n/**\n *\n * @param {import('./Key.js').Key|undefined} key\n * @param {import('./Key.js').Key|undefined} primaryKey\n * @param {boolean} advanceState\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__continueFinish = function (key, primaryKey, advanceState) {\n const me = this;\n const recordsToPreloadOnContinue = me.__advanceCount || CFG.cursorPreloadPackSize || 100;\n me.__gotValue = false;\n me.__request.__done = false;\n\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.__store.transaction\n ).__pushToQueue(me.__request, function cursorContinue (tx, args, success, error, executeNextRequest) {\n /**\n * @param {import('./Key.js').Key|undefined} k\n * @param {import('./Key.js').Value} val\n * @param {import('./Key.js').Key|undefined} primKey\n * @returns {void}\n */\n function triggerSuccess (k, val, primKey) {\n if (advanceState) {\n if (me.__advanceCount && me.__advanceCount >= 2 && k !== undefined) {\n me.__advanceCount--;\n me.__key = k;\n me.__sourceOrEffectiveObjStoreDeleted();\n // This is an internal continuation step within a single\n // `advance()` call, not a fresh user-facing dispatch --\n // it's already part of an in-flight, already-validated\n // operation, so briefly reopen the active-handler\n // window `__pushToQueue` (via `__continueFinish`)\n // checks, rather than routing back through the public\n // `__continue()` (which would apply that check as if\n // this were new activity from user code).\n const {transaction} = /** @type {{transaction: import('./IDBTransaction.js').IDBTransactionFull}} */ (\n me.__store\n );\n // `runQueuedRequest` (in `IDBTransaction.js`) resets both\n // `__active` and `__handlerActive` to `false` right\n // before invoking this op, so both -- not just\n // `__handlerActive` -- need reopening here for\n // `__pushToQueue`'s `__assertActive()` check below to\n // pass.\n transaction.__active = true;\n transaction.__handlerActive = true;\n me.__continueFinish(undefined, undefined, true);\n transaction.__active = false;\n transaction.__handlerActive = false;\n // We don't call success yet but do need to advance the transaction queue\n util.runContinuationSafely(/** @type {() => void} */ (executeNextRequest));\n return;\n }\n me.__advanceCount = undefined;\n }\n me.__onsuccess(success)(k, val, primKey);\n }\n if (me.__prefetchedData) {\n // We have pre-loaded data for the cursor\n me.__prefetchedIndex++;\n if (me.__prefetchedIndex < me.__prefetchedData.length) {\n me.__decode(/** @type {RowItemNonNull} */ (me.__prefetchedData.item(me.__prefetchedIndex)), function (k, val, primKey, encKey) {\n /**\n * @returns {void}\n */\n function checkKey () {\n if (key === undefined) {\n // No target key to compare against -- always accept the next\n // prefetched record, regardless of direction.\n triggerSuccess(k, val, primKey);\n return;\n }\n // `cmp(k, key) > 0` (\"has this record passed the target key?\")\n // only holds for an ascending (`next`) cursor; a descending\n // (`prev`) one passes the target once `k` has dropped *below*\n // it, i.e. `cmp(k, key) < 0` -- matching `continuePrimaryKey`'s\n // own direction-aware comparisons above.\n const isPrev = me.direction.includes('prev');\n const keyCmp = cmp(k, key);\n const passedKey = isPrev ? keyCmp < 0 : keyCmp > 0;\n const atKey = keyCmp === 0;\n if (passedKey || (\n atKey && (\n me.__unique || primaryKey === undefined ||\n (isPrev ? cmp(primKey, primaryKey) <= 0 : cmp(primKey, primaryKey) >= 0)\n )\n )) {\n triggerSuccess(k, val, primKey);\n return;\n }\n // @ts-expect-error Todo: Our bug to fix\n util.runContinuationSafely(() => cursorContinue(tx, args, success, error));\n }\n if (me.__multiEntryIndex && me.__unique && encKey === undefined) {\n // `__decode` found this row's matching key already seen\n // (tracked via `__matchedKeys`) and signaled a skip by\n // omitting `encKey`; move on to the next prefetched\n // row instead of treating the missing key as the end\n // of the cursor.\n // @ts-expect-error Todo: Our bug to fix\n util.runContinuationSafely(() => cursorContinue(tx, args, success, error));\n return;\n }\n if (me.__unique && !me.__multiEntryIndex &&\n encKey === Key.encode(me.key, me.__multiEntryIndex)) {\n // @ts-expect-error Todo: Our bug to fix\n util.runContinuationSafely(() => cursorContinue(tx, args, success, error));\n return;\n }\n checkKey();\n });\n return;\n }\n }\n\n // No (or not enough) pre-fetched data, do query\n me.__find(\n key, primaryKey, tx, triggerSuccess,\n /** @type {FindError} */\n function (...args) {\n me.__advanceCount = undefined;\n const [t, err] = args;\n error(t, err);\n }, recordsToPreloadOnContinue\n );\n });\n};\n\n/**\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.continue = function (/* key */) {\n // eslint-disable-next-line prefer-rest-params -- API\n this.__continue(arguments[0]);\n};\n\n/**\n *\n * @param {import('./Key.js').Key} key\n * @param {import('./Key.js').Key} primaryKey\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.continuePrimaryKey = function (key, primaryKey) {\n const me = this;\n IDBTransaction.__assertActive(me.__store.transaction);\n me.__sourceOrEffectiveObjStoreDeleted();\n if (!me.__indexSource) {\n throw createDOMException('InvalidAccessError', '`continuePrimaryKey` may only be called on an index source.');\n }\n if (!['next', 'prev'].includes(me.direction)) {\n throw createDOMException('InvalidAccessError', '`continuePrimaryKey` may not be called with unique cursors.');\n }\n if (!me.__gotValue) {\n throw createDOMException('InvalidStateError', 'The cursor is being iterated or has iterated past its end.');\n }\n Key.convertValueToKeyRethrowingAndIfInvalid(key);\n Key.convertValueToKeyRethrowingAndIfInvalid(primaryKey);\n\n const cmpResult = cmp(key, me.key);\n if (\n (me.direction === 'next' && cmpResult === -1) ||\n (me.direction === 'prev' && cmpResult === 1)\n ) {\n throw createDOMException('DataError', 'Cannot continue the cursor in an unexpected direction');\n }\n\n /**\n * @returns {void}\n */\n function noErrors () {\n me.__continueFinish(key, primaryKey, false);\n }\n if (cmpResult === 0) {\n Sca.encode(primaryKey, function (encPrimaryKey) {\n Sca.encode(me.primaryKey, function (encObjectStorePos) {\n if (encPrimaryKey === encObjectStorePos ||\n (me.direction === 'next' && encPrimaryKey < encObjectStorePos) ||\n (me.direction === 'prev' && encPrimaryKey > encObjectStorePos)\n ) {\n throw createDOMException('DataError', 'Cannot continue the cursor in an unexpected direction');\n }\n noErrors();\n });\n });\n } else {\n noErrors();\n }\n};\n\n/**\n *\n * @param {Integer} count\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.advance = function (count) {\n const me = this;\n count = util.enforceRange(count, 'unsigned long');\n if (count === 0) {\n throw new TypeError('Calling advance() with count argument 0');\n }\n if (me.__gotValue) { // Only set the count if not running in error (otherwise will override earlier good advance calls)\n me.__advanceCount = count;\n }\n me.__continue();\n};\n\n/**\n * The `{query, count, direction}` options shape shared by\n * `getAll`/`getAllKeys`/`getAllRecords`.\n * @typedef {{\n * query?: import('./IDBIndex.js').Query|null,\n * count?: Integer,\n * direction?: IDBCursorDirection\n * }} GetAllOptions\n */\n\n/**\n *\n * @param {import('./Key.js').Value} valueToUpdate\n * @this {IDBCursorFull}\n * @returns {IDBRequest}\n */\nIDBCursor.prototype.update = function (valueToUpdate) {\n const me = this;\n if (!arguments.length) {\n throw new TypeError('A value must be passed to update()');\n }\n IDBTransaction.__assertActive(me.__store.transaction);\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.__store.transaction\n ).__assertWritable();\n me.__sourceOrEffectiveObjStoreDeleted();\n if (!me.__gotValue) {\n throw createDOMException('InvalidStateError', 'The cursor is being iterated or has iterated past its end.');\n }\n if (me.__keyOnly) {\n throw createDOMException('InvalidStateError', 'This cursor method cannot be called when the key only flag has been set.');\n }\n const request = /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.__store.transaction\n ).__createRequest(me);\n const key = me.primaryKey;\n\n /**\n * @param {import('./Key.js').Value} clonedValue\n * @returns {void}\n */\n function addToQueue (clonedValue) {\n // `invalidateCache: true` so any cursor on this store (including\n // this one) drops its prefetched row batch, forcing its next\n // `continue()` to re-query live rather than serve rows snapshotted\n // before this update -- needed for the compound-tuple\n // continuation logic in `__findBasic` to see this update's\n // effect on ordering (see \"Modify records during cursor\n // iteration\" in idbcursor_update_index.any.js).\n // @ts-ignore -- API (not erring in TS 6)\n IDBObjectStore.__storingRecordObjectStore(request, me.__store, true, clonedValue, false, key);\n }\n if (me.__store.keyPath !== null) {\n const [evaluatedKey, clonedValue] = me.__store.__validateKeyAndValueAndCloneValue(valueToUpdate, undefined, true);\n if (cmp(me.primaryKey, evaluatedKey) !== 0) {\n throw createDOMException('DataError', 'The key of the supplied value to `update` is not equal to the cursor\\'s effective key');\n }\n // eslint-disable-next-line unicorn/prefer-hoisting-branch-code -- Different\n addToQueue(clonedValue);\n } else {\n const clonedValue = Sca.cloneWithInactiveTransaction(\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (me.__store.transaction),\n valueToUpdate\n );\n addToQueue(clonedValue);\n }\n return request;\n};\n\n/**\n * @this {IDBCursorFull}\n * @returns {IDBRequest}\n */\nIDBCursor.prototype.delete = function () {\n const me = this;\n IDBTransaction.__assertActive(me.__store.transaction);\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.__store.transaction\n ).__assertWritable();\n me.__sourceOrEffectiveObjStoreDeleted();\n if (!me.__gotValue) {\n throw createDOMException('InvalidStateError', 'The cursor is being iterated or has iterated past its end.');\n }\n if (me.__keyOnly) {\n throw createDOMException('InvalidStateError', 'This cursor method cannot be called when the key only flag has been set.');\n }\n return /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n this.__store.transaction\n ).__addToTransactionQueue(function cursorDelete (tx, args, success, error) {\n me.__find(\n undefined, undefined, tx,\n /** @type {KeySuccess} */\n function (key, value, primaryKey) {\n const sql = 'DELETE FROM ' + util.escapeStoreNameForSQL(me.__store.__currentName) + ' WHERE \"key\" = ?';\n if (CFG.DEBUG) { console.log(sql, key, primaryKey); }\n // Key.convertValueToKey(primaryKey); // Already checked when entered\n tx.executeSql(sql, [util.escapeSQLiteStatement(\n /** @type {string} */ (Key.encode(primaryKey))\n )], function (tx, data) {\n if (data.rowsAffected === 1) {\n // We don't invalidate the cache (as we don't access it anymore\n // and it will set the index off)\n success(undefined);\n } else {\n // @ts-expect-error Apparently ok\n error('No rows with key found' + key);\n }\n }, function (tx, data) {\n error(data);\n return false;\n });\n }, error\n );\n }, undefined, me);\n};\n\nIDBCursor.prototype[Symbol.toStringTag] = 'IDBCursorPrototype';\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.defineReadonlyOuterInterface(\n IDBCursor.prototype,\n ['source', 'direction', 'key', 'primaryKey', 'request']\n);\nutil.setOperationNames(IDBCursor.prototype);\nObject.defineProperty(IDBCursor, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\n/**\n * @class\n * @throws {TypeError}\n */\nfunction IDBCursorWithValue () {\n throw new TypeError('Illegal constructor');\n}\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\n// @ts-expect-error It's ok\nIDBCursorWithValue.prototype = Object.create(IDBCursor.prototype);\nObject.defineProperty(IDBCursorWithValue.prototype, 'constructor', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: IDBCursorWithValue\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nconst IDBCursorWithValueAlias = IDBCursorWithValue;\n/**\n *\n * @param {IDBKeyRange} query\n * @param {string} direction\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull} source\n * @param {string} keyColumnName\n * @param {string} valueColumnName\n * @param {boolean} [count]\n * @returns {IDBCursorWithValueFull}\n */\nIDBCursorWithValue.__createInstance = function (query, direction, store, source, keyColumnName, valueColumnName, count) {\n /**\n * @class\n * @this {IDBCursorWithValueFull}\n */\n function IDBCursorWithValue () {\n IDBCursor.__super.call(this, query, direction, store, source, keyColumnName, valueColumnName, count);\n // @ts-expect-error It's ok\n this[Symbol.toStringTag] = 'IDBCursorWithValue';\n util.defineReadonlyProperties(this, 'value');\n }\n IDBCursorWithValue.prototype = IDBCursorWithValueAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBCursorWithValue();\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.defineReadonlyOuterInterface(IDBCursorWithValue.prototype, ['value']);\nIDBCursorWithValue.prototype[Symbol.toStringTag] = 'IDBCursorWithValuePrototype';\n\nObject.defineProperty(IDBCursorWithValue, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\n/**\n * Validates `direction` and fills in defaults for the `{query, count,\n * direction}` shape shared by `getAll`/`getAllKeys`/`getAllRecords`.\n * @param {unknown} options\n * @throws {TypeError}\n * @returns {{\n * query: import('./IDBIndex.js').Query|null|undefined,\n * count: Integer|undefined,\n * direction: string\n * }}\n */\nfunction normalizeGetAllOptions (options) {\n const {query, count, direction = 'next'} = /** @type {GetAllOptions} */ (options ?? {});\n if (!cursorDirections.includes(direction)) {\n throw new TypeError('`' + direction + '` is not a valid direction');\n }\n return {query, count, direction};\n}\n\n/**\n * `getAll`/`getAllKeys` accept either the legacy `(query, count)` signature\n * or, per the IndexedDB 3 draft's `getAllRecords` options shape, a single\n * `{query, count, direction}` options object -- including an *empty*\n * `{}` (WPT's own tests call `getAll({})` expecting every record back,\n * the same as `getAll()`, not a `DataError` from treating `{}` as an\n * invalid key). A plain object is never a valid IndexedDB key (or key\n * range), so the two forms can be told apart unambiguously by the shape\n * of the first argument alone -- WPT's own `get_all_with_options_and_count_test`\n * deliberately calls `getAll(options, count)` (an extra, non-overload-matching\n * second argument, which JS simply ignores) to confirm the options-shaped\n * first argument wins regardless of how many arguments were actually passed.\n * @param {IArguments} args\n * @throws {TypeError}\n * @returns {{\n * query: import('./IDBIndex.js').Query|null|undefined,\n * count: Integer|undefined,\n * direction: string\n * }}\n */\nfunction parseGetAllArgs (args) {\n const arg0 = args[0];\n if (util.isObj(arg0) && !Array.isArray(arg0) && !util.isDate(arg0) &&\n !util.isBinary(arg0) &&\n !('upper' in arg0 && 'lowerOpen' in arg0 && typeof arg0.lowerOpen === 'boolean') // IDBKeyRange-like\n ) {\n return normalizeGetAllOptions(arg0);\n }\n const [query, count] = args;\n return normalizeGetAllOptions({query, count});\n}\n\n/**\n * `getAllRecords` (IndexedDB 3.0) takes a single, optional `IDBGetAllOptions`\n * dictionary -- `{query, count, direction}` -- with no legacy positional\n * form to disambiguate against.\n * @param {IArguments} args\n * @throws {TypeError}\n * @returns {{\n * query: import('./IDBIndex.js').Query|null|undefined,\n * count: Integer|undefined,\n * direction: string\n * }}\n */\nfunction parseGetAllRecordsArgs (args) {\n return normalizeGetAllOptions(args[0]);\n}\n\n/**\n * Shared implementation backing `getAll`/`getAllKeys`/`getAllRecords` on both\n * `IDBObjectStore` and `IDBIndex`. This walks a `find`/`decode` state\n * object using the exact same low-level primitives\n * (`__find`/`__findBasic`/`__findMultiEntry`/`__decode`) a real cursor's\n * `continue()` uses internally, so ordering and uniqueness semantics --\n * including `nextunique`/`prevunique` over `multiEntry` indexes -- always\n * match what iterating that same cursor manually would produce.\n *\n * Unlike a real cursor, none of the intermediate steps go through the\n * transaction's shared request queue (`__pushToQueue`): each step re-enters\n * the same queue slot's op function via a plain synchronous/callback chain\n * and only calls the queue's real `success` once, when every record has\n * been collected. This makes the whole operation occupy exactly one slot,\n * at its true issuance position, so its result event can't be reordered\n * relative to sibling requests queued around the same time -- which\n * driving this through the public, queue-based `openCursor()`/`continue()`\n * API (as this used to) cannot guarantee, since each subsequent `continue()`\n * step is appended to the end of the (by-then-longer) queue rather than\n * staying next to the steps before it.\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull} source\n * @param {import('./Key.js').Value} query\n * @param {Integer|undefined} count\n * @param {string} direction\n * @param {\"value\"|\"key\"|\"record\"} mode\n * @throws {TypeError}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nfunction collectAll (source, query, count, direction, mode) {\n const isIndexSource = util.instanceOf(source, IDBIndex);\n if (!isIndexSource && !util.instanceOf(source, IDBObjectStore)) {\n // Per Web IDL, an operation invoked on a `this` that isn't an\n // instance of the interface it's defined on must throw a\n // TypeError (\"illegal invocation\") -- checked here, rather than\n // left to fall through to `store.transaction`/`__assertActive`\n // below, since those instead throw `TransactionInactiveError`\n // for a `this` with no real `transaction` property.\n throw new TypeError('Illegal invocation');\n }\n if (count !== undefined) {\n count = util.enforceRange(count, 'unsigned long');\n }\n const indexSource = /** @type {import('./IDBIndex.js').IDBIndexFull} */ (source);\n const store = /** @type {import('./IDBObjectStore.js').IDBObjectStoreFull} */ (\n isIndexSource ? indexSource.objectStore : source\n );\n const tx = /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (store.transaction);\n\n IDBObjectStore.__invalidStateIfDeleted(store);\n if (isIndexSource) {\n IDBIndex.__invalidStateIfDeleted(indexSource);\n }\n IDBTransaction.__assertActive(tx);\n const range = convertValueToKeyRange(query);\n const multiEntryIndex = isIndexSource && Boolean(indexSource.multiEntry);\n if (range !== undefined) {\n // Encode the key range and cache the encoded values, matching what a\n // real cursor's constructor does, since `__findMultiEntry` reads\n // these cached values back off the range.\n range.__lowerCached = range.lower !== undefined && Key.encode(range.lower, multiEntryIndex);\n range.__upperCached = range.upper !== undefined && Key.encode(range.upper, multiEntryIndex);\n }\n\n // `getAllRecords` needs each record's value, so it (like `getAll`) must\n // decode the `value` column rather than the lighter-weight `key`-only\n // reads `getAllKeys` can get away with.\n const needsValue = mode !== 'key';\n const keyColumnName = isIndexSource ? util.escapeIndexNameForSQLKeyColumn(indexSource.name) : 'key';\n const valueColumnName = needsValue ? 'value' : 'key';\n\n // Inherits from `IDBCursor.prototype` (rather than being a plain object)\n // because `__find` dispatches to `this.__findBasic`/`this.__findMultiEntry`\n // as methods on `this`, not as functions looked up separately.\n /** @type {IDBCursorFull} */\n const state = /** @type {IDBCursorFull} */ (/** @type {unknown} */ (Object.assign(Object.create(IDBCursor.prototype), {\n __store: store,\n __indexSource: isIndexSource,\n __range: range,\n __keyColumnName: keyColumnName,\n __valueColumnName: valueColumnName,\n __valueDecoder: valueColumnName === 'key' ? Key : Sca,\n __count: false,\n __prefetchedIndex: -1,\n __prefetchedData: null,\n __continuationKey: undefined,\n __continuationPrimaryKey: undefined,\n __multiEntryExhausted: false,\n __multiEntryIndex: multiEntryIndex,\n __unique: direction.includes('unique'),\n __sqlDirection: ['prev', 'prevunique'].includes(direction) ? 'DESC' : 'ASC',\n __key: undefined\n })));\n // `direction` (unlike the `__`-prefixed internals above) is exposed as a\n // readonly getter on `IDBCursor.prototype` (via `defineReadonlyOuterInterface`)\n // that throws unless shadowed by an own property, exactly as a real\n // cursor's constructor shadows it -- a plain assignment would instead\n // hit that inherited accessor, which has no setter.\n Object.defineProperty(state, 'direction', {writable: false, value: direction});\n\n return tx.__addToTransactionQueue(function collectAllOp (sqlTx, args, success, error) {\n /** @type {unknown[]} */\n const results = [];\n const recordsToLoad = count || CFG.cursorPreloadPackSize || 100;\n\n /**\n * @param {import('./Key.js').Key} k\n * @param {import('./Key.js').Value} val\n * @param {import('./Key.js').Key} primKey\n * @returns {void}\n */\n function acceptOrFinish (k, val, primKey) {\n if (k === undefined) {\n success(results);\n return;\n }\n state.__key = k;\n switch (mode) {\n case 'key':\n results.push(primKey);\n break;\n case 'record':\n results.push(IDBRecord.__createInstance(k, primKey, val));\n break;\n default:\n results.push(val);\n }\n if (count && results.length >= count) {\n success(results);\n return;\n }\n util.runContinuationSafely(step);\n }\n\n /**\n * @returns {void}\n */\n function step () {\n if (state.__prefetchedData) {\n state.__prefetchedIndex++;\n if (state.__prefetchedIndex < state.__prefetchedData.length) {\n IDBCursor.prototype.__decode.call(\n state, /** @type {RowItemNonNull} */ (state.__prefetchedData.item(state.__prefetchedIndex)),\n /**\n * @param {import('./Key.js').Key} k\n * @param {import('./Key.js').Value} val\n * @param {import('./Key.js').Key} primKey\n * @param {string} [encKey]\n * @returns {void}\n */\n function (k, val, primKey, encKey) {\n if (state.__multiEntryIndex && state.__unique && encKey === undefined) {\n // `__decode` already saw this matching key (tracked\n // via `__matchedKeys`) and signaled a skip.\n util.runContinuationSafely(step);\n return;\n }\n if (state.__unique && !state.__multiEntryIndex &&\n encKey === Key.encode(state.__key, state.__multiEntryIndex)) {\n util.runContinuationSafely(step);\n return;\n }\n acceptOrFinish(k, val, primKey);\n }\n );\n return;\n }\n }\n IDBCursor.prototype.__find.call(\n state, undefined, undefined, sqlTx, acceptOrFinish, error, recordsToLoad\n );\n }\n\n step();\n }, undefined, source);\n}\n\nexport {IDBCursor, IDBCursorWithValue, parseGetAllArgs, parseGetAllRecordsArgs, collectAll};\n","import shimIDBVersionChangeEvent from './IDBVersionChangeEvent.js';\nimport {IDBCursor as shimIDBCursor, IDBCursorWithValue as shimIDBCursorWithValue} from './IDBCursor.js';\nimport shimIDBRecord from './IDBRecord.js';\nimport {IDBRequest as shimIDBRequest, IDBOpenDBRequest as shimIDBOpenDBRequest} from './IDBRequest.js';\nimport {createDOMException, ShimDOMException} from './DOMException.js';\nimport {shimIndexedDB, IDBFactory, setFS} from './IDBFactory.js';\nimport DOMStringList from './DOMStringList.js';\nimport {ShimEvent, ShimCustomEvent, ShimEventTarget} from './Event.js';\nimport {register} from './Sca.js';\nimport shimIDBKeyRange from './IDBKeyRange.js';\nimport shimIDBObjectStore from './IDBObjectStore.js';\nimport shimIDBIndex from './IDBIndex.js';\nimport shimIDBTransaction from './IDBTransaction.js';\nimport shimIDBDatabase from './IDBDatabase.js';\nimport CFG from './CFG.js';\nimport {isNullish} from './util.js';\n\n/**\n * @callback SetConfig\n * @param {import('./CFG.js').KeyofConfigValues|\n * Partial<import('./CFG.js').ConfigValues>} prop\n * @param {import('./CFG.js').ConfigValue} [val]\n * @throws {Error}\n * @returns {void}\n */\n\n/** @type {SetConfig} */\nfunction setConfig (prop, val) {\n if (prop && typeof prop === 'object') {\n Object.entries(prop).forEach(([p, val]) => {\n setConfig(\n /** @type {import('./CFG.js').KeyofConfigValues} */\n (p),\n val\n );\n });\n return;\n }\n if (!Object.hasOwn(CFG, prop)) {\n throw new Error(prop + ' is not a valid configuration property');\n }\n // @ts-expect-error Should not be `never` here!\n CFG[prop] = val;\n if (prop === 'registerSCA' && typeof val === 'function') {\n register(\n /**\n * @type {(\n * preset: import('typeson').Preset\n * ) => import('typeson').Preset}\n */ (\n val\n )\n );\n }\n}\n\n/**\n * @typedef {(\n * prop: import('./CFG.js').KeyofConfigValues\n * ) => import('./CFG.js').ConfigValue} GetConfig\n */\n\n/**\n * @typedef {(cfg: {\n * UnicodeIDStart: string,\n * UnicodeIDContinue: string\n * }) => void} SetUnicodeIdentifiers\n */\n\n/**\n * @typedef {(IDBFactory|object) & {\n * __useShim: () => void,\n * __debug: (val: boolean) => void,\n * __setConfig: SetConfig,\n * __getConfig: GetConfig,\n * __setUnicodeIdentifiers: SetUnicodeIdentifiers,\n * __setConnectionQueueOrigin: (origin?: string) => void\n * }} ShimIndexedDB\n */\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {(typeof globalThis|Record<string, unknown>) & {\n * indexedDB?: Partial<IDBFactory>,\n * IDBFactory: typeof IDBFactory,\n * IDBOpenDBRequest: typeof IDBOpenDBRequest,\n * IDBRequest: typeof IDBRequest,\n * IDBCursorWithValue: typeof IDBCursorWithValue,\n * IDBCursor: typeof IDBCursor,\n * IDBDatabase: typeof IDBDatabase,\n * IDBTransaction: typeof IDBTransaction,\n * IDBKeyRange: typeof IDBKeyRange,\n * shimIndexedDB?: ShimIndexedDB\n * }} ShimmedObject\n */\n\n/**\n *\n * @param {typeof globalThis | Record<string, unknown>} [idb]\n * @param {Partial<import('./CFG.js').ConfigValues>} [initialConfig]\n * @returns {ShimmedObject}\n */\nfunction setGlobalVars (idb, initialConfig) {\n if (initialConfig) {\n setConfig(initialConfig);\n }\n const IDB = /** @type {ShimmedObject & {[key: string]: unknown}} */ (\n /** @type {unknown} */ (idb || globalThis || {})\n );\n /**\n * @param {string} name\n * @param {unknown} value\n * @param {PropertyDescriptor & {\n * shimNS?: object\n * }|undefined} [propDesc]\n * @returns {void}\n */\n function shim (name, value, propDesc) {\n if (!propDesc || !Object.defineProperty) {\n try {\n // Try setting the property. This will fail if the property is read-only.\n IDB[name] = value;\n } catch (e) {\n console.log(e);\n }\n }\n if (\n IDB[name] !== value &&\n Object.defineProperty\n ) {\n // Setting a read-only property failed, so try re-defining the property\n try {\n let desc = propDesc || {};\n if (!('get' in desc)) {\n if (!('value' in desc)) {\n desc.value = value;\n }\n if (!('writable' in desc)) {\n desc.writable = true;\n }\n } else {\n const o = {\n /**\n * @returns {unknown}\n */\n get [name] () {\n return /** @type {() => unknown} */ (\n /** @type {PropertyDescriptor} */ (\n propDesc\n ).get\n ).call(this);\n }\n };\n desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, name)\n );\n }\n Object.defineProperty(IDB, name, desc);\n } catch (err) {\n // With `indexedDB`, PhantomJS fails here and below but\n // not above, while Chrome is reverse (and Firefox doesn't\n // get here since no WebSQL to use for shimming)\n }\n }\n\n if (IDB[name] !== value) {\n if (typeof console !== 'undefined' && console.warn) {\n console.warn('Unable to shim ' + name);\n }\n }\n }\n if (CFG.win.openDatabase !== undefined) {\n shim('shimIndexedDB', shimIndexedDB, {\n enumerable: false,\n configurable: true\n });\n }\n if ('shimIndexedDB' in IDB && IDB.shimIndexedDB) {\n IDB.shimIndexedDB.__useShim = function () {\n /**\n *\n * @param {\"Shim\"|\"\"} [prefix]\n * @returns {void}\n */\n function setNonIDBGlobals (prefix = '') {\n shim(prefix + 'DOMException', ShimDOMException);\n shim(prefix + 'DOMStringList', DOMStringList, {\n enumerable: false,\n configurable: true,\n writable: true,\n value: DOMStringList\n });\n shim(prefix + 'Event', ShimEvent, {\n configurable: true,\n writable: true,\n value: ShimEvent,\n enumerable: false\n });\n shim(prefix + 'CustomEvent', ShimCustomEvent, {\n configurable: true,\n writable: true,\n value: ShimCustomEvent,\n enumerable: false\n });\n shim(prefix + 'EventTarget', ShimEventTarget, {\n configurable: true,\n writable: true,\n value: ShimEventTarget,\n enumerable: false\n });\n }\n const shimIDBFactory = IDBFactory;\n if (CFG.win.openDatabase !== undefined) {\n shimIndexedDB.__openDatabase = CFG.win.openDatabase.bind(CFG.win); // We cache here in case the function is overwritten later as by the IndexedDB support promises tests\n // Polyfill ALL of IndexedDB, using WebSQL\n shim('indexedDB', shimIndexedDB, {\n enumerable: true,\n configurable: true,\n get () {\n if (this !== IDB && !isNullish(this) && !this.shimNS) { // Latter is hack for test environment\n throw new TypeError('Illegal invocation');\n }\n return shimIndexedDB;\n }\n });\n /** @type {[string, unknown][]} */\n ([\n ['IDBFactory', shimIDBFactory],\n ['IDBDatabase', shimIDBDatabase],\n ['IDBObjectStore', shimIDBObjectStore],\n ['IDBIndex', shimIDBIndex],\n ['IDBTransaction', shimIDBTransaction],\n ['IDBCursor', shimIDBCursor],\n ['IDBCursorWithValue', shimIDBCursorWithValue],\n ['IDBRecord', shimIDBRecord],\n ['IDBKeyRange', shimIDBKeyRange],\n ['IDBRequest', shimIDBRequest],\n ['IDBOpenDBRequest', shimIDBOpenDBRequest],\n ['IDBVersionChangeEvent', shimIDBVersionChangeEvent]\n ]).forEach(([prop, obj]) => {\n shim(prop, obj, {\n enumerable: false,\n configurable: true\n });\n });\n // For Node environments\n if (CFG.fs) {\n setFS(CFG.fs);\n }\n if (CFG.fullIDLSupport) {\n // Slow per MDN so off by default! Though apparently needed for WebIDL: https://stackoverflow.com/questions/41927589/rationales-consequences-of-webidl-class-inheritance-requirements\n\n Object.setPrototypeOf(IDB.IDBOpenDBRequest, IDB.IDBRequest);\n Object.setPrototypeOf(IDB.IDBCursorWithValue, IDB.IDBCursor);\n\n Object.setPrototypeOf(shimIDBDatabase, ShimEventTarget);\n Object.setPrototypeOf(shimIDBRequest, ShimEventTarget);\n Object.setPrototypeOf(shimIDBTransaction, ShimEventTarget);\n Object.setPrototypeOf(shimIDBVersionChangeEvent, ShimEvent);\n // `ShimDOMException` is the real native `DOMException` when one\n // is available (see `DOMException.js`'s `useNativeDOMException`)\n // -- which, unlike the shim classes above, is a single,\n // process-wide singleton shared by reference across every\n // sandbox this library gets installed into (see\n // `node-idb-test.js`'s `sandboxObj`). A native `DOMException`\n // already has the correct prototype chain out of the box\n // (`Object.getPrototypeOf(DOMException) === Function.prototype`,\n // not `Error`), so forcing it here isn't just unneeded but\n // actively wrong -- and, because it's shared, permanently\n // wrong for every later use of `DOMException` in the same\n // process (e.g. a later WPT test file's own idlharness-style\n // check that `DOMException` does *not* inherit from `Error`\n // on the class side), not just this one shim install.\n if (typeof DOMException === 'undefined' || ShimDOMException !== DOMException) {\n Object.setPrototypeOf(ShimDOMException, Error);\n Object.setPrototypeOf(ShimDOMException.prototype, Error.prototype);\n }\n }\n if (IDB.indexedDB && !IDB.indexedDB.toString().includes('[native code]')) {\n if (CFG.addNonIDBGlobals) {\n // As `DOMStringList` exists per IDL (and Chrome) in the global\n // thread (but not in workers), we prefix the name to avoid\n // shadowing or conflicts\n setNonIDBGlobals('Shim');\n }\n if (CFG.replaceNonIDBGlobals) {\n setNonIDBGlobals();\n }\n }\n /* istanbul ignore next -- TS guard */\n if (!IDB.shimIndexedDB) {\n return;\n }\n IDB.shimIndexedDB.__setConnectionQueueOrigin();\n }\n };\n\n IDB.shimIndexedDB.__debug = /** @type {(val: boolean) => void} */ (function (val) {\n CFG.DEBUG = val;\n });\n IDB.shimIndexedDB.__setConfig = setConfig;\n\n /** @type {GetConfig} */\n IDB.shimIndexedDB.__getConfig = function (prop) {\n if (!Object.hasOwn(CFG, prop)) {\n throw new Error(prop + ' is not a valid configuration property');\n }\n return CFG[prop];\n };\n\n /** @type {SetUnicodeIdentifiers} */\n IDB.shimIndexedDB.__setUnicodeIdentifiers = function ({\n UnicodeIDStart, UnicodeIDContinue\n }) {\n setConfig({UnicodeIDStart, UnicodeIDContinue});\n };\n } else {\n // We no-op the harmless set-up properties and methods with a warning; the `IDBFactory` methods,\n // however (including our non-standard methods), are not stubbed as they ought\n // to fail earlier rather than potentially having side effects.\n IDB.shimIndexedDB = /** @type {ShimIndexedDB} */ ({});\n /** @type {const} */ ([\n '__useShim', '__debug', '__setConfig',\n '__getConfig', '__setUnicodeIdentifiers'\n ]).forEach((prop) => {\n /** @type {{[key: string]: () => void}} */ (\n /** @type {unknown} */ (IDB.shimIndexedDB)\n )[prop] = function () {\n console.warn('This browser does not have WebSQL to shim.');\n };\n });\n }\n\n // Workaround to prevent an error in Firefox\n if (!('indexedDB' in IDB) && typeof window !== 'undefined') { // 2nd condition avoids problems in Node\n IDB.indexedDB ||= /** @type {IDBFactory} */ (\n ('webkitIndexedDB' in IDB && IDB.webkitIndexedDB) ||\n ('mozIndexedDB' in IDB && IDB.mozIndexedDB) ||\n ('oIndexedDB' in IDB && IDB.oIndexedDB) ||\n ('msIndexedDB' in IDB && IDB.msIndexedDB)\n );\n }\n\n // Detect browsers with known IndexedDB issues (e.g. Android pre-4.4)\n const poorIndexedDbSupport = (\n typeof navigator !== 'undefined' &&\n // Not apparently defined in React Native\n navigator.userAgent &&\n ( // Ignore Node or other environments\n (\n // Bad non-Chrome Android support\n (/Android (?:2|3|4\\.[0-3])/u).test(navigator.userAgent) &&\n !navigator.userAgent.includes('Chrome')\n ) ||\n (\n // Bad non-Safari iOS9 support (see <https://github.com/indexeddbshim/IndexedDBShim/issues/252>)\n (!navigator.userAgent.includes('Safari') || navigator.userAgent.includes('Chrome')) && // Exclude genuine Safari: https://stackoverflow.com/a/7768006/271577\n // Detect iOS: https://stackoverflow.com/questions/9038625/detect-if-device-is-ios/9039885#9039885\n // and detect version 9: https://stackoverflow.com/a/26363560/271577\n (/(iPad|iPhone|iPod).* os 9_/ui).test(navigator.userAgent) &&\n (typeof window !== 'undefined' &&\n !('MSStream' in window)) // But avoid IE11\n )\n )\n );\n if (!CFG.DEFAULT_DB_SIZE) {\n CFG.DEFAULT_DB_SIZE = (\n ( // Safari currently requires larger size: (We don't need a larger size for Node as node-websql doesn't use this info)\n // https://github.com/indexeddbshim/IndexedDBShim/issues/41\n // https://github.com/indexeddbshim/IndexedDBShim/issues/115\n typeof navigator !== 'undefined' &&\n // React Native\n navigator.userAgent &&\n navigator.userAgent.includes('Safari') &&\n !navigator.userAgent.includes('Chrome')\n )\n ? 25\n : 4\n ) * 1024 * 1024;\n }\n if (!CFG.avoidAutoShim &&\n (!IDB.indexedDB || poorIndexedDbSupport) &&\n CFG.win.openDatabase !== undefined\n ) {\n IDB.shimIndexedDB.__useShim();\n } else {\n /* eslint-disable unicorn/logical-assignment-operators -- TS */\n IDB.IDBDatabase = IDB.IDBDatabase ||\n ('webkitIDBDatabase' in IDB && IDB.webkitIDBDatabase);\n IDB.IDBTransaction = IDB.IDBTransaction ||\n ('webkitIDBTransaction' in IDB && IDB.webkitIDBTransaction) || {};\n IDB.IDBCursor = IDB.IDBCursor ||\n ('webkitIDBCursor' in IDB && IDB.webkitIDBCursor);\n IDB.IDBKeyRange = IDB.IDBKeyRange ||\n ('webkitIDBKeyRange' in IDB && IDB.webkitIDBKeyRange);\n /* eslint-enable unicorn/logical-assignment-operators -- TS */\n }\n return /** @type {ShimmedObject} */ (IDB);\n}\n\n// Expose for ease in simulating such exceptions during testing\nexport {createDOMException};\n\nexport default setGlobalVars;\n","import customOpenDatabase from 'websql-configurable/custom/index.js';\nimport SQLiteDatabase from 'websql-configurable/lib/sqlite/SQLiteDatabase.js';\nimport CFG from './CFG.js';\n\n/**\n * @typedef {{\n * _db: unknown,\n * exec: typeof SQLiteDatabase['prototype']['exec']\n * }} SQLiteDatabaseInstance\n */\n\n/**\n * `websql-configurable`'s `customOpenDatabase` always calls this via `new`\n * (see its `custom.js`: `new SQLiteDatabase(dbName, sqliteOpts)`), so this\n * is typed with a construct signature even though `wrappedSQLiteDatabase`\n * below is written as a plain function -- that's a deliberate, working JS\n * idiom (a plain function invoked with `new` that explicitly `return`s an\n * object yields that object as the `new` expression's result, overriding\n * the default \"return `this`\" behavior), not something TypeScript can\n * verify structurally.\n * @typedef {new (\n * name: string,\n * opts?: import('websql-configurable/lib/sqlite/SQLiteDatabase.js').SQLiteDatabaseOptions\n * ) => SQLiteDatabaseInstance} SQLiteDatabaseConstructor\n */\n\n/**\n * @param {string} name\n * @returns {SQLiteDatabaseInstance}\n */\nfunction wrappedSQLiteDatabase (name) {\n // @ts-ignore It's ok; needed under some TS versions\n const db = new SQLiteDatabase(name, {});\n if (CFG.sqlBusyTimeout) {\n db.configure('busyTimeout', /** @type {number} */ (CFG.sqlBusyTimeout)); // Default is 1000\n }\n if (CFG.sqlTrace) {\n db.configure('trace', CFG.sqlTrace);\n }\n if (CFG.sqlProfile) {\n db.configure('profile', CFG.sqlProfile);\n }\n if (CFG.sqlMemoryQuota) {\n db.configure('memoryQuota', /** @type {number} */ (CFG.sqlMemoryQuota));\n }\n return db;\n}\n\n// `concurrentReaders` is off by default in `websql-configurable` itself (to\n// preserve the WebSQL spec's strict, one-at-a-time transaction ordering\n// that library's own test suite depends on), but IndexedDBShim only ever\n// uses it as an internal SQL execution engine -- it doesn't need or expose\n// that ordering guarantee itself -- so it's safe, and needed, to opt in\n// here: without it, two same-scope `readonly` IDBTransactions can deadlock\n// waiting on each other (see `transaction-scheduling-within-database.any.js`).\nconst nodeWebSQL = customOpenDatabase(/** @type {SQLiteDatabaseConstructor} */ (/** @type {unknown} */ (wrappedSQLiteDatabase)), {websql: {concurrentReaders: true}});\nexport default nodeWebSQL;\n","import fs from 'node:fs';\n\nimport setGlobalVars from './setGlobalVars.js';\nimport nodeWebSQL from './nodeWebSQL.js'; // Importing \"websql\" would not gain us SQLite config ability\nimport CFG from './CFG.js';\n\nCFG.win = {openDatabase: nodeWebSQL};\n\n/**\n * @param {typeof globalThis | Record<string, unknown>} [idb]\n * @param {Partial<import('./CFG.js').ConfigValues>} [initialConfig]\n * @returns {import('./setGlobalVars.js').ShimmedObject|Window}\n */\nconst __setGlobalVars = function (idb, initialConfig = {}) {\n return setGlobalVars(idb, {\n fs,\n escapeNULForSQLiteStatements: false,\n ...initialConfig\n });\n};\n\nexport default __setGlobalVars;\n"],"names":["ShimDOMException","expandsOnNFD","util.isObj","readonlyProperties","listeners","util.defineReadonlyProperties","util.defineListenerProperties","util.defineReadonlyOuterInterface","util.defineOuterInterface","keyEncode","keyDecode","encode","decode","util.isDate","util.isBinary","util.isBlob","util.isFile","util.isNullish","util.escapeSQLiteStatement","Key.roundTrip","Key.convertValueToKeyRethrowingAndIfInvalid","Key.encode","Key.isKeyInRange","util.setOperationNames","util.instanceOf","util.runContinuationSafely","n","r","s","i","c","a","y","l","p","u","h","f","b","d","m","structuredCloningForStorage","util.convertToDOMString","util.escapeIndexNameForSQL","util.escapeStoreNameForSQL","Sca.decode","util.unescapeSQLiteResponse","Key.extractKeyValueDecodedFromValueUsingKeyPath","util.sqlQuote","util.enforceRange","util.escapeIndexNameForSQLKeyColumn","Key.decode","Key.isMultiEntryMatch","util.sqlLIKEEscape","Sca.cloneWithInactiveTransaction","Key.checkKeyCouldBeInjectedIntoValue","Sca.encode","Key.generateKeyForStore","Key.injectKeyIntoValueUsingKeyPath","Key.possiblyUpdateKeyGenerator","Key.assignCurrentNumber","util.convertToSequenceDOMString","util.isValidKeyPath","util.isIterable","util.joinPath","util.escapeDatabaseNameForSQLAndFiles","Key.findMultiEntryMatches","ShimEventTarget","shimIDBDatabase","shimIDBObjectStore","shimIDBIndex","shimIDBTransaction","shimIDBCursor","shimIDBCursorWithValue","shimIDBRecord","shimIDBKeyRange","shimIDBRequest","shimIDBOpenDBRequest","shimIDBVersionChangeEvent","fs"],"mappings":";;;;;;;;AAAA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,MAAM,MAAM,GAAG;AACb,EAAA,IAAI,EAAE,CAAC;AACP,EAAA,eAAe,EAAE,CAAC;AAClB,EAAA,SAAS,EAAE,CAAC;AACZ,EAAA,cAAc,EAAE;AAClB,CAAC;AACD,MAAMA,kBAAgB,GAAG,OAAO,YAAY,KAAK;AACjD;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;AAC/B;AACA;AACA,EAAA,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC;AAC1B,EAAA,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE;AACjC,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,YAAY,EAAE;AAChB,GAAC,CAAC;AACF,EAAA,OAAO,GAAG;AACZ,CAAC,GAAG,YAAY;;AAEhB;AACA,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE;AACxB;AACA,MAAM,KAAK,GAAG,IAAI,OAAO,EAAE;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACrB,EAAA,oCAAoC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACpD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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AACzB;AACF;AACA;AACA;EACE,cAAc,CAAC,aAAa,EAAE;AAC5B;AACA;AACA;AACJ;AACA;AACA;AACI,IAAA,MAAM,EAAE,GAAG,SAAS,WAAW,GAAG;AAChC;AACA;AACA,MAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;IAClC,CAAC;AACD,IAAA,EAAE,CAAC,SAAS,GAAG,eAAe,CAAC,SAAS;AACxC;IACA,OAAO,IAAI,EAAE,EAAE;AACjB,EAAA;AACF,CAAC;AACD,WAAW,CAAC,SAAS,GAAG,SAAS;AACjC,WAAW,CAAC,eAAe,GAAG,eAAe;AAC7C,WAAW,CAAC,gBAAgB,GAAGA,kBAAgB;AAC/C,WAAW,CAAC,eAAe,GAAG,WAAW;AACzC,WAAW,CAAC,kBAAkB,GAAG,kBAAkB;;ACtzCnD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM,GAAG,GAAG,EAAE;AAEd,MAAM,GAAG,8BAAgC,EAAG;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACC;AACG;AACA,OAAO;AAAE;;AAET;AACA;AACA,wBAAwB;AAExB;AACA;AACA;AACA;AACA,UAAU;AAEV;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAAE;;AAElB;AACA;AACA,aAAa;AAEb;AACA;AACA,uBAAuB;AAEvB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA,mBAAmB;AAEnB;AACA;AACA;AACA;AACA,aAAa;AAEb;AACA,eAAe;AAAE;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBA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C,GAAG;AACN;AACR;AACA;AACQ,IAAA,KAAK,IAAI,CAAA,GAAK;AACV;AACA;AACA;AACA;AACA,MAAA,IAAI,EAAE,IAAI,YAAY,cAAc,CAAC,EAAE;AACnC,QAAA,MAAM,IAAI,SAAS,CAAC,oBAAoB,CAAC;AAC7C,MAAA;AACA;AACA,MAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAC5B,IAAA;GACH;AACD,EAAA,MAAM,IAAI;AACN,EAAA,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,IAAI,CAC1C;EACD,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE;AAC1C,EAAA,QAAQ,EAAE;AACd,CAAC,CAAC;;ACrFF,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC;;AAErE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,SAAS,GAAI;AAClB,EAAA,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC;AAC9C;AACA,MAAM,cAAc,GAAG,SAAS;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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","x_google_ignoreList":[0,8,14]}
1
+ {"version":3,"file":"indexeddbshim-node.cjs","sources":["../node_modules/eventtargeter/dist/index-es.js","../src/CFG.js","../src/unicode-regex.js","../src/util.js","../src/Event.js","../src/IDBVersionChangeEvent.js","../src/DOMException.js","../src/IDBRequest.js","../node_modules/sync-promise-expanded/index.js","../src/cmp.js","../src/Key.js","../src/IDBKeyRange.js","../src/DOMStringList.js","../src/IDBTransaction.js","../node_modules/typeson-registry/dist/index.min.js","../src/Sca.js","../src/IDBIndex.js","../src/IDBObjectStore.js","../src/IDBDatabase.js","../src/IDBFactory.js","../src/IDBRecord.js","../src/IDBCursor.js","../src/setGlobalVars.js","../src/nodeWebSQL.js","../src/node.js"],"sourcesContent":["/* eslint-disable no-restricted-syntax -- Instanceof checks */\n/* eslint-disable unicorn/no-this-assignment -- TS */\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @callback InvokeCurrentListeners\n * @param {AllListeners} listeners\n * @param {EventWithProps} eventCopy\n * @param {string} type\n * @param {boolean} [checkOnListeners]\n * @returns {boolean}\n */\n\n/**\n * @typedef {{\n * defaultSync?: boolean,\n * extraProperties?: string[],\n * legacyOutputDidListenersThrowFlag?: boolean\n * }} CustomOptions\n */\n\n/**\n * @typedef {(\n * type: string, listener: Listener|{handleEvent: Listener}, options?: boolean|ListenerOptions\n * ) => void} AddOrRemoveListenerMethod\n */\n/**\n * @typedef {(\n * type: string, listener: Listener|{handleEvent: Listener}, options?: boolean|ListenerOptions\n * ) => boolean} HasListenerMethod\n */\n\n/**\n * @typedef {{\n * _defaultSync?: boolean,\n * _extraProperties?: string[],\n * _legacyOutputDidListenersThrowCheck?: boolean,\n * _earlyListeners?: AllListeners,\n * _listeners?: AllListeners,\n * _lateListeners?: AllListeners,\n * _defaultListeners?: AllListeners,\n * _parent?: EventTargetInstance|null,\n * __getParent?: () => EventTargetInstance|null,\n * tryCatch: (evt: EventWithProps, cb: () => void) => void,\n * triggerErrorEvent: (err: unknown, evt: EventWithProps) => void,\n * invokeCurrentListeners: InvokeCurrentListeners,\n * dispatchEvent: (e: EventWithProps) => boolean,\n * _dispatchEvent: (e: EventWithProps, setTarget: boolean) => boolean,\n * __setOptions: (customOptions?: CustomOptions) => void,\n * addEventListener: AddOrRemoveListenerMethod,\n * removeEventListener: AddOrRemoveListenerMethod,\n * hasEventListener: HasListenerMethod,\n * addEarlyEventListener: AddOrRemoveListenerMethod,\n * removeEarlyEventListener: AddOrRemoveListenerMethod,\n * hasEarlyEventListener: HasListenerMethod,\n * addLateEventListener: AddOrRemoveListenerMethod,\n * removeLateEventListener: AddOrRemoveListenerMethod,\n * hasLateEventListener: HasListenerMethod,\n * addDefaultEventListener: AddOrRemoveListenerMethod,\n * removeDefaultEventListener: AddOrRemoveListenerMethod,\n * hasDefaultEventListener: HasListenerMethod,\n * [key: string]: any\n * }} EventTargetInstance\n */\n/**\n * @typedef {{\n * __legacyOutputDidListenersThrowError?: unknown,\n * target?: EventTargetInstance,\n * composed?: boolean,\n * currentTarget?: EventTargetInstance|null,\n * eventPhase?: 0|1|2|3\n * defaultPrevented?: boolean,\n * type?: string,\n * bubbles?: boolean,\n * cancelable?: boolean,\n * isTrusted?: boolean,\n * timeStamp?: Integer,\n * initEvent?: (type: string, bubbles: boolean, cancelable: boolean) => void,\n * preventDefault?: () => void,\n * composedPath?: () => void,\n * detail?: any,\n * initCustomEvent?: (\n * type: string, canBubble: boolean, cancelable: boolean,\n * detail: any\n * ) => void,\n * [key: string]: any\n * }} EventWithProps\n */\n\n// Todo: Switch to ES6 classes\n\n/** @type {{NONE: 0, CAPTURING_PHASE: 1, AT_TARGET: 2, BUBBLING_PHASE: 3}} */\nconst phases = {\n NONE: 0,\n CAPTURING_PHASE: 1,\n AT_TARGET: 2,\n BUBBLING_PHASE: 3\n};\nconst ShimDOMException = typeof DOMException === 'undefined'\n// Todo: Better polyfill (if even needed here)\n/* eslint-disable no-shadow -- Polyfill */\n// eslint-disable-next-line @stylistic/operator-linebreak -- TS/JSDoc needs\n?\n/**\n * @param {string} msg\n * @param {string} name\n * @returns {Error}\n */\nfunction DOMException(msg, name) {\n // No need for `toString` as same as for `Error`\n /* eslint-enable no-shadow -- Polyfill */\n const err = new Error(msg);\n Object.defineProperty(err, 'name', {\n value: name,\n writable: true,\n configurable: true\n });\n return err;\n} : DOMException;\n\n/** @type {WeakMap<object, any>} */\nconst ev = new WeakMap();\n/** @type {WeakMap<object, EventWithProps>} */\nconst evCfg = new WeakMap();\n\n/**\n * Retrieves the internal config bag for an event known to have already\n * been registered in `evCfg` (i.e., not the very first, possibly-unset\n * lookup on an incoming event).\n * @param {object} key\n * @returns {EventWithProps}\n */\nfunction getEvCfg(key) {\n return /** @type {EventWithProps} */evCfg.get(key);\n}\n\n// Todo: Set _ev argument outside of this function\n\n/**\n * Defines own-property getters on `instance` for each named prop, each\n * preferring `_evCfg`'s own value (e.g. set by `initEvent`), falling\n * back to whatever the wrapped `_ev` (a real native event, or another\n * `Event` this one is copying, per `copyEvent`) has, and finally a\n * spec-shaped default. Shared by `Event`'s own base properties and, via\n * its own extra call, `CustomEvent`'s `detail`/`initCustomEvent` --\n * factored out so neither needs any special-casing of the other to know\n * which extra properties to define.\n * @param {EventWithProps} instance\n * @param {string[]} props\n * @param {EventWithProps} _evCfg\n * @param {EventWithProps} _ev\n * @returns {void}\n */\nfunction definePassthroughProps(instance, props, _evCfg, _ev) {\n Object.defineProperties(instance, props.reduce((obj, pr) => {\n const prop =\n /**\n * @type {\"type\"|\"bubbles\"|\"cancelable\"|\"isTrusted\"|\n * \"timeStamp\"|\"initEvent\"|\"composedPath\"|\"composed\"|\n * \"detail\"|\"initCustomEvent\"\n * }\n */\n pr;\n obj[prop] = {\n configurable: true,\n get() {\n return Object.hasOwn(_evCfg, prop) ? _evCfg[prop] : Reflect.has(_ev, prop) ? _ev[prop] : ['bubbles', 'cancelable', 'composed'].includes(prop) ? false : undefined;\n }\n };\n return obj;\n }, /** @type {{[key: string]: any}} */{}));\n}\n\n/**\n * A single, shared getter function (not a fresh closure per instance,\n * unlike the rest of the passthrough props): idlharness.js's own\n * `[LegacyUnforgeable]`-attribute check expects the *same* getter\n * function reference across every instance's own `isTrusted` property\n * descriptor (real browsers back this with a shared native accessor over\n * an internal slot). Still installed as an *own* property per instance\n * (see `initEventInternal`, below) -- not on the prototype -- since\n * `[LegacyUnforgeable]` also requires it be defined directly on each\n * instance (undeletable/unshadowable there), which idlharness.js checks\n * for via `Object.getOwnPropertyDescriptor(new Event(...), \"isTrusted\")`.\n * @this {EventWithProps}\n * @throws {TypeError}\n * @returns {boolean}\n */\nfunction getIsTrusted() {\n if (!(this instanceof ShimEvent)) {\n throw new TypeError('Illegal invocation');\n }\n const _evCfg = getEvCfg(this);\n const _ev = ev.get(this);\n return Boolean(Object.hasOwn(_evCfg, 'isTrusted') ? _evCfg.isTrusted : Reflect.has(_ev, 'isTrusted') && _ev.isTrusted);\n}\n\n/**\n * The shared setup behind `Event`'s own constructor: populates the\n * WeakMap-backed internal state and defines the base `Event` own-\n * property getters on `instance`. Kept as a plain, reusable function\n * (not just inlined into the constructor) so\n * `CustomEvent.prototype.initCustomEvent` -- which, per the legacy DOM\n * Level 3 `initEvent`-family API, must remain callable *after*\n * construction to reinitialize an existing instance, not only from\n * within the constructor -- can re-run this directly on an existing\n * instance without trying to re-invoke a class constructor (illegal\n * outside of `new`/`super()`).\n * @param {EventWithProps} instance\n * @param {string} type\n * @param {EventInit} [evInit]\n * @param {EventWithProps} [_ev]\n * @returns {void}\n */\nfunction initEventInternal(instance, type, evInit, _ev) {\n evInit ||= {};\n _ev ||= {};\n\n /** @type {EventWithProps} */\n const _evCfg = {};\n if ('composed' in evInit) {\n _evCfg.composed = evInit.composed;\n }\n\n // _evCfg.isTrusted = true; // We are not always using this for user-created events\n // Per spec, a `DOMHighResTimeStamp` (`performance.now()`-based, where\n // available) rather than a wall-clock `Date`-based one.\n _evCfg.timeStamp = typeof performance !== 'undefined' && typeof performance.now === 'function' ? performance.now() : Date.now();\n ev.set(instance, _ev);\n evCfg.set(instance, _evCfg);\n /** @type {(type: string, bubbles?: boolean, cancelable?: boolean) => void} */\n instance.initEvent(type, evInit.bubbles, evInit.cancelable);\n ['target', 'currentTarget', 'eventPhase', 'defaultPrevented'].forEach(pr => {\n const prop = /** @type {\"target\"|\"currentTarget\"|\"eventPhase\"|\"defaultPrevented\"} */\n pr;\n Object.defineProperty(instance, prop, {\n configurable: true,\n get() {\n return (/* prop in _evCfg && */_evCfg[prop] !== undefined) ? _evCfg[prop] : Reflect.has(_ev, prop) ? _ev[prop] :\n // Defaults\n prop === 'eventPhase' ? 0 : prop === 'defaultPrevented' ? false : null;\n }\n });\n });\n Object.defineProperties(instance, {\n // `[LegacyUnforgeable]` per spec: a real, shared getter function\n // (see `getIsTrusted`, above), but still installed as an *own*\n // property of each instance rather than the prototype.\n isTrusted: {\n enumerable: true,\n configurable: false,\n get: getIsTrusted\n },\n // Legacy alias of `.target`.\n srcElement: {\n configurable: true,\n get() {\n return instance.target;\n }\n },\n // Legacy alias of `.defaultPrevented`/`.preventDefault()`; not\n // backed by `_evCfg` like the rest since it's derived, not stored.\n returnValue: {\n enumerable: true,\n configurable: true,\n get() {\n return !instance.defaultPrevented;\n },\n set(val) {\n if (val === false) {\n /** @type {() => void} */instance.preventDefault();\n }\n }\n }\n });\n definePassthroughProps(instance, [\n // Event\n 'type', 'bubbles', 'cancelable',\n // Defaults to false\n 'timeStamp',\n // `initEvent` deliberately excluded: it's an *operation*, not a data\n // attribute -- shadowing it here (the same way `type`/`bubbles`/\n // etc. legitimately need to reflect a wrapped/copied event) would\n // permanently replace the real, callable prototype method with a\n // plain data getter (returning `undefined` for any event not\n // wrapping a native one with its own `initEvent`), breaking both\n // re-callability and idlharness's \"operation\" conformance checks.\n // `isTrusted` deliberately excluded too: idlharness.js's own\n // \"attribute exists on prototype\" checks expect the *same*\n // getter function reference for every instance (matching a real\n // `[LegacyUnforgeable]` accessor backed by an internal slot), not\n // a fresh own-property closure per instance -- see the shared\n // `ShimEventProto.isTrusted` accessor defined below instead.\n // Other event properties (not used by our code)\n 'composed'], _evCfg, _ev);\n}\n\n/* eslint-disable no-shadow -- Polyfilling */\n/**\n * We use an adapter class rather than a proxy not only for compatibility\n * but also since we have to clone native event properties anyways in order\n * to properly set `target`, etc.\n * The regular DOM method `dispatchEvent` won't work with this polyfill as\n * it expects a native event.\n */\nclass Event {\n /* eslint-enable no-shadow -- Polyfilling */\n /**\n * @param {string} type\n */\n constructor(type) {\n // eslint-disable-next-line consistent-this -- TS constructors can't use `@this`\n const me = /** @type {EventWithProps} */ /** @type {unknown} */this;\n // @ts-expect-error Symbol not part of the string index signature\n me[Symbol.toStringTag] = 'Event';\n me.toString = () => {\n return '[object Event]';\n };\n // For WebIDL checks of function's `length`, we check `arguments` for the optional arguments\n // eslint-disable-next-line prefer-rest-params -- Don't want to change signature\n const [, evInit, _ev] = arguments;\n if (!arguments.length) {\n throw new TypeError(\"Failed to construct 'Event': 1 argument required, but only 0 present.\");\n }\n // WebIDL coerces `type` to a `DOMString`: a `type` with a custom\n // `toString`/`Symbol.toPrimitive` that throws must have that\n // error propagate out of the constructor.\n type = String(type);\n initEventInternal(me, type, evInit, _ev);\n }\n}\nconst ShimEvent = Event;\n\n// Named function expressions (rather than anonymous ones assigned via\n// member-expression `=`, which per spec never get an inferred `.name`)\n// so `.name` matches the WebIDL operation identifier, e.g. for\n// `idlharness.js`'s \"property has wrong .name\" checks.\n\n// A real class's own declared shape doesn't include methods added to its\n// `.prototype` afterward (unlike the plain-function `.prototype` this\n// used to be, which TS treats far more loosely) -- assigning through\n// this untyped alias, rather than `ShimEvent.prototype` directly, keeps\n// that dynamic-augmentation pattern working without a `@ts-expect-error`\n// on every single line below.\n/** @type {any} */\nconst ShimEventProto = ShimEvent.prototype;\n\n/** @this {EventWithProps} */\nShimEventProto.preventDefault = function preventDefault() {\n if (!(this instanceof ShimEvent)) {\n throw new TypeError('Illegal invocation');\n }\n const _ev = ev.get(this);\n const _evCfg = getEvCfg(this);\n if (this.cancelable && !_evCfg._passive) {\n _evCfg.defaultPrevented = true;\n if (typeof _ev.preventDefault === 'function') {\n // Prevent any predefined defaults\n _ev.preventDefault();\n }\n }\n};\n\n/**\n * Per spec, returns the empty list once dispatch has finished (or hasn't\n * started); while an event is actively being dispatched, returns the\n * full target-to-root propagation path computed once up front by\n * `_dispatchEvent` (see there), regardless of which phase dispatch is\n * currently in.\n * @this {EventWithProps}\n * @returns {EventTargetInstance[]}\n */\nShimEventProto.composedPath = function composedPath() {\n if (!(this instanceof ShimEvent)) {\n throw new TypeError('Illegal invocation');\n }\n const _evCfg = getEvCfg(this);\n if (!_evCfg._dispatchFlag || !_evCfg._path) {\n return [];\n }\n return [..._evCfg._path];\n};\n\n/** @this {EventWithProps} */\nShimEventProto.stopImmediatePropagation = function stopImmediatePropagation() {\n const _evCfg = getEvCfg(this);\n _evCfg._stopImmediatePropagation = true;\n};\n\n/** @this {EventWithProps} */\nShimEventProto.stopPropagation = function stopPropagation() {\n const _evCfg = getEvCfg(this);\n _evCfg._stopPropagation = true;\n};\n\n/**\n * @param {string} type\n * @param {boolean} [bubbles]\n * @param {boolean} [cancelable]\n * @this {EventWithProps}\n */\nShimEventProto.initEvent = function initEvent(type, bubbles = false, cancelable = false) {\n // WebIDL's optional args (defaulted here) keep `.length` at 1, matching real browsers\n const _evCfg = getEvCfg(this);\n if (_evCfg._dispatched) {\n return;\n }\n Object.defineProperties(this, {\n type: {\n enumerable: true,\n configurable: true,\n get() {\n return type;\n }\n },\n bubbles: {\n enumerable: true,\n configurable: true,\n get() {\n return bubbles;\n }\n },\n cancelable: {\n enumerable: true,\n configurable: true,\n get() {\n return cancelable;\n }\n }\n });\n _evCfg.type = type;\n if (bubbles !== undefined) {\n _evCfg.bubbles = bubbles;\n }\n if (cancelable !== undefined) {\n _evCfg.cancelable = cancelable;\n }\n};\n\n// These attribute getters exist on the prototype only so idlharness-style\n// interface checks find them there (matching real DOM implementations,\n// where these are shared prototype accessors, not per-instance ones);\n// accessing one directly on the prototype itself (rather than a real\n// instance, which shadows these with the working per-instance getters\n// set up in the constructor above) throws, same as a real browser's\n// native accessor would for an unbound `this`. Each throw-stub's `.name`\n// is set explicitly to `\"get \" + prop` since `{get () {...}}` -- a\n// literal `get` key, not `get`-shorthand syntax -- names the function\n// `\"get\"`, not `\"get \" + prop`.\n['type', 'target', 'currentTarget', 'eventPhase', 'defaultPrevented', 'bubbles', 'cancelable', 'timeStamp', 'composed'].forEach(prop => {\n const get = function () {\n throw new TypeError('Illegal invocation');\n };\n Object.defineProperty(get, 'name', {\n value: 'get ' + prop,\n configurable: true\n });\n Object.defineProperty(ShimEvent.prototype, prop, {\n enumerable: true,\n configurable: true,\n get\n });\n});\n{\n const get = function () {\n throw new TypeError('Illegal invocation');\n };\n // Setters are always spec'd with one formal parameter, so `.length`\n // must be 1 even though this throws unconditionally.\n /**\n * @param {boolean} _val\n */\n // eslint-disable-next-line no-unused-vars -- Needed for `.length`\n const set = function (_val) {\n throw new TypeError('Illegal invocation');\n };\n Object.defineProperty(get, 'name', {\n value: 'get returnValue',\n configurable: true\n });\n Object.defineProperty(set, 'name', {\n value: 'set returnValue',\n configurable: true\n });\n Object.defineProperty(ShimEvent.prototype, 'returnValue', {\n enumerable: true,\n configurable: true,\n get,\n set\n });\n}\n['NONE', 'CAPTURING_PHASE', 'AT_TARGET', 'BUBBLING_PHASE'].forEach((prop, i) => {\n Object.defineProperty(ShimEvent, prop, {\n enumerable: true,\n writable: false,\n value: i\n });\n Object.defineProperty(ShimEvent.prototype, prop, {\n writable: false,\n value: i\n });\n});\n// @ts-expect-error Not part of the class body itself\nShimEvent[Symbol.toStringTag] = 'Function';\nShimEventProto[Symbol.toStringTag] = 'EventPrototype';\n// A real class's own `.prototype` is already non-writable/non-configurable\n// per spec, so no explicit freeze is needed here.\n\n/* eslint-disable no-shadow -- Polyfill */\n/**\n * `CustomEvent extends Event` via a real `class`: `super()`'s call into\n * `Event`'s own constructor already gives this the correct prototype\n * chain (`CustomEvent.prototype.__proto__ === Event.prototype`) and\n * `new.target` propagation for any further subclass.\n */\nclass CustomEvent extends Event {\n /* eslint-enable no-shadow -- Polyfill */\n /**\n * @param {string} type\n */\n constructor(type) {\n // eslint-disable-next-line prefer-const, prefer-rest-params -- Keep signature\n let [, evInit, _ev] = arguments;\n // @ts-expect-error Casting doesn't work\n super(type, evInit, _ev);\n // eslint-disable-next-line consistent-this -- TS constructors can't use `@this`\n const me = /** @type {EventWithProps} */ /** @type {unknown} */this;\n // @ts-expect-error Symbol not part of the string index signature\n me[Symbol.toStringTag] = 'CustomEvent';\n me.toString = () => {\n return '[object CustomEvent]';\n };\n evInit ||= {};\n // @ts-ignore\n me.initCustomEvent(type, evInit.bubbles, evInit.cancelable, 'detail' in evInit ? evInit.detail : null);\n }\n}\nconst ShimCustomEvent = CustomEvent;\n/** @type {any} */\nconst ShimCustomEventProto = ShimCustomEvent.prototype;\n/**\n * @param {string} type\n * @param {boolean} [bubbles]\n * @param {boolean} [cancelable]\n * @param {any} [detail]\n * @this {EventWithProps}\n */\nShimCustomEventProto.initCustomEvent = function initCustomEvent(type, bubbles = false, cancelable = false, detail = null) {\n // WebIDL's optional args (defaulted here) keep `.length` at 1\n if (!(this instanceof ShimCustomEvent)) {\n throw new TypeError('Illegal invocation');\n }\n const _evCfg = getEvCfg(this);\n // @ts-expect-error `detail` isn't part of `EventInit`, only used internally here\n // eslint-disable-next-line prefer-rest-params -- Keep signature\n initEventInternal(this, type, {\n bubbles,\n cancelable,\n detail\n }, arguments[4]);\n if (_evCfg._dispatched) {\n return;\n }\n if (detail !== undefined) {\n _evCfg.detail = detail;\n }\n // `initCustomEvent` deliberately excluded -- see the matching comment\n // in `initEventInternal` for `initEvent`, above; the same reasoning\n // applies here.\n definePassthroughProps(this, ['detail'], _evCfg, ev.get(this));\n};\n// @ts-expect-error Not part of the class body itself\nShimCustomEvent[Symbol.toStringTag] = 'Function';\nShimCustomEventProto[Symbol.toStringTag] = 'CustomEventPrototype';\n{\n const get = function () {\n throw new TypeError('Illegal invocation');\n };\n Object.defineProperty(get, 'name', {\n value: 'get detail',\n configurable: true\n });\n Object.defineProperty(ShimCustomEvent.prototype, 'detail', {\n enumerable: true,\n configurable: true,\n get\n });\n}\n// A real class's own `.prototype` is already non-writable/non-configurable\n// per spec, so no explicit freeze is needed here.\n\n/**\n *\n * @param {EventWithProps} e\n * @returns {EventWithProps}\n */\nfunction copyEvent(e) {\n const {\n bubbles,\n cancelable,\n detail,\n type\n } = e;\n if ('detail' in e) {\n // @ts-expect-error Casting doesn't work\n return new ShimCustomEvent(type, {\n bubbles,\n cancelable,\n detail\n }, e);\n }\n // @ts-expect-error Casting doesn't work\n return new ShimEvent(type, {\n bubbles,\n cancelable\n }, e);\n}\n\n/**\n * @typedef {object} ListenerOptions\n * @property {boolean} [once] Remove listener after invoking once\n * @property {boolean} [passive] Don't allow `preventDefault`\n * @property {boolean} [capture] Use `_children` and set `eventPhase`\n * @property {AbortSignal} [signal] Remove the listener when this aborts\n */\n\n/**\n * @typedef {object} ListenerAndOptions\n * @property {Listener} listener\n * @property {ListenerOptions} options\n */\n\n/**\n * @typedef {object} ListenerInfo\n * @property {ListenerAndOptions[]} listenersByTypeOptions\n * @property {ListenerOptions} options\n * @property {ListenerAndOptions[]} listenersByType\n */\n\n/**\n * @callback Listener\n * @param {EventWithProps} e\n * @returns {boolean|void}\n */\n\n/**\n * Keys are event types.\n * @typedef {{[key: string]: Listener[]}} Listeners\n */\n\n/**\n * @typedef {{\n * [type: string]: ListenerAndOptions[]\n * }} AllListeners\n */\n\n/**\n * Per spec, two `addEventListener`/`removeEventListener` calls refer to\n * the *same* listener registration if and only if their `type`,\n * `listener`, and `capture` all match -- `passive`/`once`/`signal` play\n * no part in that identity (they're just per-registration behavior\n * flags). The non-standard early/late/default listener variants\n * (IndexedDBShim's own extension, not part of any spec) keep the\n * original full-options-equality behavior instead, via `captureOnly`.\n * @param {ListenerOptions} a\n * @param {ListenerOptions} b\n * @param {boolean} captureOnly\n * @returns {boolean}\n */\nfunction optionsMatch(a, b, captureOnly) {\n if (captureOnly) {\n return Boolean(a.capture) === Boolean(b.capture);\n }\n return JSON.stringify(a) === JSON.stringify(b);\n}\n\n/**\n *\n * @param {AllListeners} listeners\n * @param {string} type\n * @param {boolean|ListenerOptions} options\n * @param {boolean} captureOnly\n * @returns {ListenerInfo}\n */\nfunction getListenersOptions(listeners, type, options, captureOnly) {\n let listenersByType = listeners[type];\n if (listenersByType === undefined) {\n listeners[type] = listenersByType = [];\n }\n const opts = typeof options === 'boolean' ? {\n capture: options\n } : options || {};\n const listenersByTypeOptions = listenersByType.filter(obj => {\n return optionsMatch(opts, obj.options, captureOnly);\n });\n return {\n listenersByTypeOptions,\n options: opts,\n listenersByType\n };\n}\nconst methods = {\n /**\n * @param {AllListeners} listeners\n * @param {Listener} listener\n * @param {string} type\n * @param {boolean|ListenerOptions} options\n * @param {boolean} captureOnly\n * @returns {void}\n */\n addListener(listeners, listener, type, options, captureOnly) {\n const listenersOptions = getListenersOptions(listeners, type, options, captureOnly);\n const {\n listenersByTypeOptions\n } = listenersOptions;\n ({\n options\n } = listenersOptions);\n const {\n listenersByType\n } = listenersOptions;\n if (listenersByTypeOptions.some(l => {\n return l.listener === listener;\n })) {\n return;\n }\n listenersByType.push({\n listener,\n options\n });\n },\n /**\n * @param {AllListeners} listeners\n * @param {Listener} listener\n * @param {string} type\n * @param {boolean|ListenerOptions} options\n * @param {boolean} captureOnly\n * @returns {void}\n */\n removeListener(listeners, listener, type, options, captureOnly) {\n const listenersOptions = getListenersOptions(listeners, type, options, captureOnly);\n const {\n listenersByType\n } = listenersOptions;\n listenersByType.some((l, i) => {\n if (l.listener === listener && optionsMatch(listenersOptions.options, l.options, captureOnly)) {\n listenersByType.splice(i, 1);\n if (!listenersByType.length) {\n delete listeners[type];\n }\n return true;\n }\n return false;\n });\n },\n /**\n *\n * @param {AllListeners} listeners\n * @param {Listener} listener\n * @param {string} type\n * @param {boolean|ListenerOptions} options\n * @param {boolean} captureOnly\n * @returns {boolean}\n */\n hasListener(listeners, listener, type, options, captureOnly) {\n const listenersOptions = getListenersOptions(listeners, type, options, captureOnly);\n const {\n listenersByTypeOptions\n } = listenersOptions;\n return listenersByTypeOptions.some(l => {\n return l.listener === listener;\n });\n }\n};\n\n/* eslint-disable no-shadow -- Polyfill */\n/**\n * A real, constructible, subclassable `EventTarget`: `new EventTarget()`\n * works directly, and so does `class Foo extends EventTarget {}` (its\n * `super()` call runs this same constructor body, with `new.target` set\n * to `Foo`, which is all a plain, non-`class` base needs to support\n * subclassing correctly -- the engine already gives `this` the\n * subclass's own prototype).\n */\nclass EventTarget {\n /* eslint-enable no-shadow -- Polyfill */\n /**\n * Per WebIDL (`constructor();`), this takes no arguments -- declaring a\n * formal parameter here (even an optional one) would give\n * `EventTarget.length` the wrong value for idlharness.js's own\n * \"interface object length\" check. `EventTargetFactory.createInstance`\n * (the only place custom, non-standard per-instance options are\n * actually used) never calls this constructor at all -- it borrows\n * this class's `.prototype` directly for its own separate function --\n * so there's no internal caller that needs to pass options through\n * here either.\n */\n constructor() {\n // eslint-disable-next-line consistent-this -- TS constructors can't use `@this`\n const me = /** @type {EventTargetInstance} */ /** @type {unknown} */this;\n me.__setOptions();\n }\n}\n\n/**\n * @typedef {\"addEarlyEventListener\"|\"removeEarlyEventListener\"|\"hasEarlyEventListener\"\n * |\"addEventListener\"|\"removeEventListener\"|\"hasEventListener\"\n * |\"addLateEventListener\"|\"removeLateEventListener\"|\"hasLateEventListener\"\n * |\"addDefaultEventListener\"|\"removeDefaultEventListener\"|\"hasDefaultEventListener\"\n * } ListenerName\n */\nObject.assign(EventTarget.prototype, ['Early', '', 'Late', 'Default'].reduce(function (/** @type {{[key: string]: Function}} */\nobj, listenerType) {\n ['add', 'remove', 'has'].forEach(function (method) {\n const mainMethod = /** @type {ListenerName} */method + listenerType + 'EventListener';\n /**\n * @param {string} type\n * @param {Listener|{handleEvent: Listener}} listener\n * @this {EventTargetInstance}\n * @returns {boolean|void}\n */\n obj[mainMethod] = function (type, listener) {\n if (!(this instanceof EventTarget)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length < 2) {\n throw new TypeError('2 or more arguments required');\n }\n if (typeof type !== 'string') {\n // @ts-expect-error It's ok to construct\n throw new ShimDOMException('UNSPECIFIED_EVENT_TYPE_ERR', 'UNSPECIFIED_EVENT_TYPE_ERR');\n }\n // eslint-disable-next-line prefer-rest-params -- Keep signature\n const options = arguments[2]; // We keep the listener `length` as per WebIDL\n try {\n // `listener` is nullable per WebIDL (`EventListener?`), and\n // the `in` operator throws for a `null`/non-object RHS,\n // so only look for `handleEvent` on an actual object.\n // As per code such as the following, handleEvent may throw,\n // but is uncaught\n // https://github.com/web-platform-tests/wpt/blob/master/IndexedDB/fire-error-event-exception.html#L54-L56\n if (listener && typeof listener === 'object' && 'handleEvent' in listener && listener.handleEvent.bind) {\n listener = listener.handleEvent.bind(listener);\n }\n } catch (err) {\n // eslint-disable-next-line no-console -- Feedback to user\n console.log('Uncaught `handleEvent` error', err);\n }\n const arrStr = /** @type {\"_earlyListeners\"|\"_listeners\"|\"_lateListeners\"|\"_defaultListeners\"} */\n '_' + listenerType.toLowerCase() + (listenerType === '' ? 'l' : 'L') + 'isteners';\n if (!Object.hasOwn(this, arrStr)) {\n Object.defineProperty(this, arrStr, {\n value: {}\n });\n }\n const meth = /** @type {\"addListener\"|\"removeListener\"|\"hasListener\"} */\n method + 'Listener';\n // Per spec, only `capture` distinguishes one standard listener\n // registration from another (`passive`/`once`/`signal` don't);\n // the non-standard early/late/default variants keep comparing\n // the full options object instead -- see `optionsMatch`.\n const captureOnly = listenerType === '';\n let finalOptions = options;\n if (captureOnly && method === 'add') {\n // Per spec, `addEventListener`'s options argument is\n // converted to a full `AddEventListenerOptions` dictionary\n // -- reading `capture`/`once`/`passive` (and `signal`, if\n // present) off it -- the moment the call is made,\n // regardless of whether all of those values end up used\n // (e.g. `passive`/`once` aren't part of the identity\n // comparison above, but a getter on them must still be\n // observed to have run). `removeEventListener`/\n // `hasEventListener` only accept `EventListenerOptions`\n // (just `capture`), so they're deliberately excluded here.\n const rawOptions = typeof options === 'boolean' ? {\n capture: options\n } : options || {};\n finalOptions = /** @type {ListenerOptions} */{\n capture: Boolean(rawOptions.capture),\n once: Boolean(rawOptions.once),\n passive: Boolean(rawOptions.passive)\n };\n if ('signal' in rawOptions) {\n finalOptions.signal = rawOptions.signal;\n }\n }\n if (method === 'add' && finalOptions && typeof finalOptions === 'object' && 'signal' in finalOptions) {\n const {\n signal\n } = finalOptions;\n // `AddEventListenerOptions.signal` is a non-nullable `AbortSignal`\n // per WebIDL, so converting `null` (or anything else that\n // isn't a real `AbortSignal`) throws, matching a real\n // browser's dictionary-member type conversion. Duck-typed\n // rather than `instanceof AbortSignal`: a caller's signal\n // may come from a different realm than this module's own\n // (e.g. constructed inside a `vm` sandbox), whose\n // `AbortSignal` is a distinct class with its own separate\n // identity, failing a same-realm `instanceof` check\n // despite being a perfectly genuine signal.\n if (!signal || typeof signal !== 'object' || typeof signal.aborted !== 'boolean' || typeof signal.addEventListener !== 'function') {\n throw new TypeError(\"Failed to convert value to 'AbortSignal'.\");\n }\n if (signal.aborted) {\n return undefined;\n }\n const removeMethod = /** @type {\"removeEventListener\"|\"removeEarlyEventListener\"|\"removeLateEventListener\"|\"removeDefaultEventListener\"} */\n 'remove' + listenerType + 'EventListener';\n signal.addEventListener('abort', () => {\n this[removeMethod](type, listener, finalOptions);\n }, {\n once: true\n });\n }\n return methods[meth](/** @type {AllListeners} */this[arrStr], /** @type {Listener} */listener, type, finalOptions, captureOnly);\n };\n // Assigned via a computed (`obj[mainMethod] = ...`) member\n // expression, so per spec it never gets an inferred `.name` --\n // matters for idlharness.js's \"property has wrong .name\" checks on\n // e.g. `addEventListener`/`removeEventListener`.\n Object.defineProperty(obj[mainMethod], 'name', {\n value: mainMethod,\n configurable: true\n });\n });\n return obj;\n}, {}));\nObject.assign(EventTarget.prototype, {\n _legacyOutputDidListenersThrowCheck: undefined,\n /**\n * @param {CustomOptions} [customOptions]\n * @this {EventTargetInstance}\n * @returns {void}\n */\n __setOptions(customOptions) {\n customOptions ||= {};\n // Todo: Make into event properties?\n this._defaultSync = customOptions.defaultSync;\n this._extraProperties = customOptions.extraProperties || [];\n if (customOptions.legacyOutputDidListenersThrowFlag) {\n // IndexedDB\n this._legacyOutputDidListenersThrowCheck = true;\n this._extraProperties.push('__legacyOutputDidListenersThrowError');\n }\n },\n /**\n * @param {EventWithProps} e\n * @this {EventTargetInstance & {\n * _dispatchEvent: (e: EventWithProps, setTarget: boolean) => boolean,\n * }}\n * @returns {boolean}\n */\n dispatchEvent(e) {\n return this._dispatchEvent(e, true);\n },\n /**\n * @param {EventWithProps} e\n * @param {boolean} setTarget\n * @this {EventTargetInstance}\n * @returns {boolean}\n */\n _dispatchEvent(e, setTarget) {\n ['early', '', 'late', 'default'].forEach(listenerType => {\n const arrStr = /** @type {\"_earlyListeners\"|\"_listeners\"|\"_lateListeners\"|\"_defaultListeners\"} */\n '_' + listenerType + (listenerType === '' ? 'l' : 'L') + 'isteners';\n if (!Object.hasOwn(this, arrStr)) {\n Object.defineProperty(this, arrStr, {\n value: {}\n });\n }\n });\n let _evCfg = evCfg.get(e);\n if (_evCfg && setTarget && _evCfg._dispatched) {\n // @ts-expect-error It's ok to construct\n throw new ShimDOMException('The object is in an invalid state.', 'InvalidStateError');\n }\n\n /** @type {EventWithProps} */\n let eventCopy;\n if (_evCfg) {\n eventCopy = e;\n } else {\n eventCopy = copyEvent(e);\n _evCfg = getEvCfg(eventCopy);\n _evCfg._dispatched = true;\n\n /** @type {string[]} */\n this._extraProperties.forEach(prop => {\n if (Reflect.has(e, prop)) {\n /** @type {{[key: string]: any}} */eventCopy[prop] = /** @type {{[key: string]: any}} */e[prop]; // Todo: Put internal to `ShimEvent`?\n }\n });\n }\n const {\n type: rawType\n } = eventCopy;\n const type = /** @type {string} */rawType;\n const cfg = getEvCfg(eventCopy);\n\n /**\n * @returns {EventTargetInstance}\n */\n function getTarget() {\n return /** @type {EventTargetInstance} */eventCopy.target;\n }\n\n /**\n *\n * @returns {void}\n */\n function finishEventDispatch() {\n cfg.eventPhase = phases.NONE;\n cfg.currentTarget = null;\n cfg._dispatchFlag = false;\n delete cfg._children;\n }\n /**\n *\n * @returns {void}\n */\n function invokeDefaults() {\n // Ignore stopPropagation from defaults\n cfg._stopImmediatePropagation = undefined;\n cfg._stopPropagation = undefined;\n // We check here for whether we should invoke since may have changed since timeout (if late listener prevented default)\n if (!eventCopy.defaultPrevented || !cfg.cancelable) {\n // 2nd check should be redundant\n cfg.eventPhase = phases.AT_TARGET; // Temporarily set before we invoke default listeners\n getTarget().invokeCurrentListeners(/** @type {AllListeners} */getTarget()._defaultListeners, eventCopy, type);\n }\n finishEventDispatch();\n }\n const continueEventDispatch = () => {\n // Ignore stop propagation of user now\n cfg._stopImmediatePropagation = undefined;\n cfg._stopPropagation = undefined;\n if (!this._defaultSync) {\n setTimeout(invokeDefaults, 0);\n } else {\n invokeDefaults();\n }\n cfg.eventPhase = phases.AT_TARGET; // Temporarily set before we invoke late listeners\n // Sync default might have stopped\n if (!cfg._stopPropagation) {\n cfg._stopImmediatePropagation = undefined;\n cfg._stopPropagation = undefined;\n // We could allow stopPropagation by only executing upon (cfg._stopPropagation)\n getTarget().invokeCurrentListeners(/** @type {AllListeners} */getTarget()._lateListeners, eventCopy, type);\n }\n finishEventDispatch();\n return !eventCopy.defaultPrevented;\n };\n if (setTarget) {\n cfg.target = this;\n }\n switch ('eventPhase' in eventCopy && eventCopy.eventPhase) {\n case phases.CAPTURING_PHASE:\n {\n if (cfg._stopPropagation) {\n return continueEventDispatch();\n }\n this.invokeCurrentListeners(/** @type {AllListeners} */this._listeners, eventCopy, type);\n const child = cfg._children && cfg._children.length && cfg._children.pop();\n if (!child || child === eventCopy.target) {\n cfg.eventPhase = phases.AT_TARGET;\n }\n if (child) {\n child._defaultSync = this._defaultSync;\n }\n return (child || this)._dispatchEvent(eventCopy, false);\n }\n case phases.AT_TARGET:\n if (cfg._stopPropagation) {\n return continueEventDispatch();\n }\n this.invokeCurrentListeners(/** @type {AllListeners} */this._listeners, eventCopy, type, true);\n if (!cfg.bubbles) {\n return continueEventDispatch();\n }\n cfg.eventPhase = phases.BUBBLING_PHASE;\n return this._dispatchEvent(eventCopy, false);\n case phases.BUBBLING_PHASE:\n {\n if (cfg._stopPropagation) {\n return continueEventDispatch();\n }\n const parent = this.__getParent && this.__getParent();\n if (!parent) {\n return continueEventDispatch();\n }\n parent.invokeCurrentListeners(/** @type {AllListeners} */parent._listeners, eventCopy, type, true);\n parent._defaultSync = this._defaultSync;\n return parent._dispatchEvent(eventCopy, false);\n }\n case phases.NONE:\n default:\n {\n // The full target-to-root path, computed once up front (used\n // by `composedPath()`) -- kept separate from `cfg._children`\n // below, which is consumed as a stack while walking back\n // down during the capturing phase.\n /* eslint-disable consistent-this -- Readability */\n /** @type {EventTargetInstance[]} */\n const path = [this];\n /** @type {EventTargetInstance|null} */\n let pathNode = this;\n /* eslint-enable consistent-this -- Readability */\n while (pathNode.__getParent && (pathNode = pathNode.__getParent()) !== null) {\n path.push(pathNode);\n }\n cfg._path = path;\n cfg._dispatchFlag = true;\n cfg.eventPhase = phases.AT_TARGET; // Temporarily set before we invoke early listeners\n this.invokeCurrentListeners(/** @type {AllListeners} */this._earlyListeners, eventCopy, type);\n if (!('__getParent' in this)) {\n cfg.eventPhase = phases.AT_TARGET;\n return this._dispatchEvent(eventCopy, false);\n }\n\n /* eslint-disable consistent-this -- Readability */\n /** @type {EventTargetInstance|null} */\n let par = this;\n let root_ = this;\n /* eslint-enable consistent-this -- Readability */\n while (par.__getParent && (par = par.__getParent()) !== null) {\n if (!cfg._children) {\n cfg._children = [];\n }\n cfg._children.push(root_);\n root_ = par;\n }\n root_._defaultSync = this._defaultSync;\n cfg.eventPhase = phases.CAPTURING_PHASE;\n return root_._dispatchEvent(eventCopy, false);\n }\n }\n },\n /**\n * @param {AllListeners} listeners\n * @param {EventWithProps} eventCopy\n * @param {string} type\n * @param {boolean} [checkOnListeners]\n * @this {EventTargetInstance}\n * @returns {boolean}\n */\n invokeCurrentListeners(listeners, eventCopy, type, checkOnListeners) {\n const _evCfg = getEvCfg(eventCopy);\n _evCfg.currentTarget = this;\n\n // `captureOnly` is irrelevant here: only `listOpts.listenersByType`\n // (the full, unfiltered list for this type) is used below, never\n // the options-filtered `listenersByTypeOptions`.\n const listOpts = getListenersOptions(listeners, type, {}, false);\n const liveListenersByType = listOpts.listenersByType;\n // eslint-disable-next-line unicorn/prefer-spread -- Performance?\n const listenersByType = liveListenersByType.concat();\n const dummyIPos = listenersByType.length ? 1 : 0;\n\n // eslint-disable-next-line unicorn/no-unused-array-method-return -- Shortcircuiting\n listenersByType.some((listenerObj, i) => {\n if (_evCfg._stopImmediatePropagation) {\n return true;\n }\n // A listener removed by an earlier callback in this same pass\n // (e.g. via an aborted `signal`, or a plain `removeEventListener`\n // call from within a sibling listener) must not be invoked,\n // even though it was still present in the snapshot taken at\n // the start of this pass.\n if (!liveListenersByType.includes(listenerObj)) {\n return false;\n }\n const onListener = checkOnListeners ? this['on' + type] : null;\n if (i === dummyIPos && typeof onListener === 'function') {\n // We don't splice this in as could be overwritten; executes here per\n // https://html.spec.whatwg.org/multipage/webappapis.html#event-handler-attributes:event-handlers-14\n this.tryCatch(eventCopy, () => {\n const ret = onListener.call(eventCopy.currentTarget, eventCopy);\n if (ret === false) {\n /** @type {() => void} */eventCopy.preventDefault();\n }\n });\n }\n const {\n options\n } = listenerObj;\n const {\n once,\n passive,\n capture\n } = options;\n _evCfg._passive = passive;\n if (capture && eventCopy.target !== eventCopy.currentTarget && eventCopy.eventPhase === phases.CAPTURING_PHASE || eventCopy.eventPhase === phases.AT_TARGET || !capture && eventCopy.target !== eventCopy.currentTarget && eventCopy.eventPhase === phases.BUBBLING_PHASE) {\n const {\n listener\n } = listenerObj;\n // Per spec, a `once` listener is removed *before* it's\n // invoked, not after: a reentrant dispatch from within the\n // listener itself (e.g. dispatching the same event type\n // again synchronously) must not see it as still registered.\n if (once) {\n this.removeEventListener(type, listener, options);\n }\n this.tryCatch(eventCopy, () => {\n listener.call(eventCopy.currentTarget, eventCopy);\n });\n }\n return false;\n });\n this.tryCatch(eventCopy, () => {\n const onListener = checkOnListeners ? this['on' + type] : null;\n if (typeof onListener === 'function' && listenersByType.length < 2) {\n const ret = onListener.call(eventCopy.currentTarget, eventCopy); // Won't have executed if too short\n if (ret === false) {\n /** @type {() => void} */eventCopy.preventDefault();\n }\n }\n });\n return !eventCopy.defaultPrevented;\n },\n /* eslint-disable promise/prefer-await-to-callbacks -- Try-catch */\n /**\n * @param {EventWithProps} evt\n * @param {() => void} cb\n * @returns {void}\n */\n tryCatch(evt, cb) {\n /* eslint-enable promise/prefer-await-to-callbacks -- Try-catch */\n try {\n // Per MDN: Exceptions thrown by event handlers are reported\n // as uncaught exceptions; the event handlers run on a nested\n // callstack: they block the caller until they complete, but\n // exceptions do not propagate to the caller.\n // eslint-disable-next-line promise/prefer-await-to-callbacks -- Try-catch\n cb();\n } catch (err) {\n this.triggerErrorEvent(err, evt);\n }\n },\n /**\n * @param {unknown} err\n * @param {EventWithProps} evt\n * @returns {void}\n */\n triggerErrorEvent(err, evt) {\n const error = typeof err === 'string' ? new Error('Uncaught exception: ' + err) : err;\n let triggerGlobalErrorEvent;\n let useNodeImpl = false;\n if (typeof window === 'undefined' || typeof ErrorEvent === 'undefined' || window && typeof window === 'object' && !window.dispatchEvent) {\n useNodeImpl = true;\n triggerGlobalErrorEvent = () => {\n setTimeout(() => {\n // Node won't be able to catch in this way if we throw in the main thread\n // console.log(err); // Should we auto-log for user?\n throw error; // Let user listen to `process.on('uncaughtException', (err) => {});`\n }, 0);\n };\n } else {\n triggerGlobalErrorEvent = () => {\n // See https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror\n // and https://github.com/w3c/IndexedDB/issues/49\n\n // Note that a regular Event will properly trigger\n // `window.addEventListener('error')` handlers, but it will not trigger\n // `window.onerror` as per https://html.spec.whatwg.org/multipage/webappapis.html#handler-onerror\n // Note also that the following line won't handle `window.addEventListener` handlers\n // if (window.onerror) window.onerror(error.message, err.fileName, err.lineNumber, error.columnNumber, error);\n\n // `ErrorEvent` properly triggers `window.onerror` and `window.addEventListener('error')` handlers\n const errEv = new ErrorEvent('error', {\n error: err,\n message: /** @type {Error} */error.message || '',\n // We can't get the actually useful user's values!\n filename: /** @type {Error & {fileName: string}} */error.fileName || '',\n lineno: /** @type {Error & {lineNumber: Integer}} */error.lineNumber || 0,\n colno: /** @type {Error & {columnNumber: Integer}} */error.columnNumber || 0\n });\n window.dispatchEvent(errEv);\n // console.log(err); // Should we auto-log for user?\n };\n }\n\n // Todo: This really should always run here but as we can't set the global\n // `window` (e.g., using jsdom) since `setGlobalVars` becomes unable to\n // shim `indexedDB` in such a case currently (apparently due to\n // <https://github.com/axemclion/IndexedDBShim/issues/280>), we can't\n // avoid the above Node implementation (which, while providing some\n // fallback mechanism, is unstable)\n if (!useNodeImpl || !this._legacyOutputDidListenersThrowCheck) {\n triggerGlobalErrorEvent();\n }\n\n // See https://dom.spec.whatwg.org/#concept-event-listener-inner-invoke and\n // https://github.com/w3c/IndexedDB/issues/140 (also https://github.com/w3c/IndexedDB/issues/49 )\n if (this._legacyOutputDidListenersThrowCheck) {\n evt.__legacyOutputDidListenersThrowError = error;\n }\n }\n});\n// @ts-expect-error Not part of the class body itself\nEventTarget.prototype[Symbol.toStringTag] = 'EventTargetPrototype';\n// A real class's own `.prototype` is already non-writable/non-configurable\n// per spec, so no explicit freeze is needed here (unlike `ShimEvent`/\n// `ShimCustomEvent`, which remain plain functions for now).\n\nconst ShimEventTarget = EventTarget;\nconst EventTargetFactory = {\n /**\n * @param {CustomOptions} [customOptions]\n * @returns {EventTarget}\n */\n createInstance(customOptions) {\n /* eslint-disable func-name-matching -- Shim vs. Polyfill */\n /* eslint-disable no-shadow -- Polyfill */\n /**\n * @class\n * @this {EventTargetInstance}\n */\n const ET = function EventTarget() {\n /* eslint-enable no-shadow -- Polyfill */\n /* eslint-enable func-name-matching -- Shim vs. Polyfill */\n this.__setOptions(customOptions);\n };\n ET.prototype = ShimEventTarget.prototype;\n // @ts-expect-error Casting doesn't work\n return new ET();\n }\n};\nEventTarget.ShimEvent = ShimEvent;\nEventTarget.ShimCustomEvent = ShimCustomEvent;\nEventTarget.ShimDOMException = ShimDOMException;\nEventTarget.ShimEventTarget = EventTarget;\nEventTarget.EventTargetFactory = EventTargetFactory;\n\nexport { EventTargetFactory, ShimCustomEvent, ShimDOMException, ShimEvent, EventTarget as ShimEventTarget };\n","/**\n * @typedef {T[keyof T]} ValueOf<T>\n * @template T\n */\n\n/**\n * @typedef {{unlink: (path: string, cb: import('fs').NoParamCallback) => void}} FSApi\n */\n\n/**\n * @typedef {{\n * DEBUG: boolean,\n * cacheDatabaseInstances: boolean,\n * autoName: boolean,\n * fullIDLSupport: boolean,\n * checkOrigin: boolean,\n * cursorPreloadPackSize: number,\n * UnicodeIDStart: string,\n * UnicodeIDContinue: string,\n * registerSCA: (\n * preset: import('typeson').Preset\n * ) => import('typeson').Preset,\n * avoidAutoShim: boolean,\n * win: {\n * openDatabase: (name: string, version: string, displayName: string, estimatedSize: number) =>\n * import('websql-configurable/lib/websql/WebSQLDatabase.js').default\n * },\n * DEFAULT_DB_SIZE: number,\n * useSQLiteIndexes: boolean,\n * fs: FSApi,\n * addNonIDBGlobals: boolean,\n * replaceNonIDBGlobals: boolean,\n * escapeDatabaseName: (name: string) => string,\n * unescapeDatabaseName: (name: string) => string,\n * databaseCharacterEscapeList: string|false,\n * databaseNameLengthLimit: number|false,\n * escapeNFDForDatabaseNames: boolean,\n * addSQLiteExtension: boolean,\n * memoryDatabase: string,\n * deleteDatabaseFiles: boolean,\n * databaseBasePath: string,\n * sysDatabaseBasePath: string,\n * sqlBusyTimeout: number,\n * sqlTrace: () => void,\n * sqlProfile: () => void,\n * sqlMemoryQuota: number,\n * escapeNULForSQLiteStatements: boolean,\n * createIndexes: boolean\n * }} ConfigValues\n */\n\n/**\n * @typedef {ValueOf<ConfigValues>} ConfigValue\n */\n\n/** @type {{[key: string]: ConfigValue}} */\nconst map = {};\n\nconst CFG = /** @type {ConfigValues} */ ({});\n\n/**\n * @typedef {keyof ConfigValues} KeyofConfigValues\n */\n\n/**\n * @typedef {KeyofConfigValues[]} Config\n */\n\n/** @type {Config} */\n// eslint-disable-next-line unicorn/no-top-level-side-effects -- Would be good\n([\n // Boolean for verbose reporting\n 'DEBUG', // Effectively defaults to false (ignored unless `true`)\n\n // Boolean (effectively defaults to true) on whether to cache WebSQL\n // `openDatabase` instances\n 'cacheDatabaseInstances',\n\n // Boolean on whether to auto-name databases (based on an\n // auto-increment) when the empty string is supplied; useful with\n // `memoryDatabase`; defaults to `false` which means the empty string\n // will be used as the (valid) database name\n 'autoName',\n\n // Determines whether the slow-performing `Object.setPrototypeOf`\n // calls required for full WebIDL compliance will be used. Probably\n // only needed for testing or environments where full introspection\n // on class relationships is required; see\n // https://stackoverflow.com/questions/41927589/rationales-consequences-of-webidl-class-inheritance-requirements\n 'fullIDLSupport', // Effectively defaults to false (ignored unless `true`)\n\n // Boolean on whether to perform origin checks in `IDBFactory` methods\n // Effectively defaults to `true` (must be set to `false` to cancel checks)\n 'checkOrigin',\n\n // Used by `IDBCursor` continue methods for number of records to cache;\n // Defaults to 100\n 'cursorPreloadPackSize',\n\n // See optional API (`shimIndexedDB.__setUnicodeIdentifiers`);\n // or just use the Unicode builds which invoke this method\n // automatically using the large, fully spec-compliant, regular\n // expression strings of `src/UnicodeIdentifiers.js`)\n // In the non-Unicode builds, defaults to /[$A-Z_a-z]/\n 'UnicodeIDStart',\n // In the non-Unicode builds, defaults to /[$0-9A-Z_a-z]/\n 'UnicodeIDContinue',\n\n // Used by SCA.js for optional restructuring of typeson-registry\n // Structured Cloning Algorithm; should only be needed for ensuring data\n // created in 3.* versions of IndexedDBShim continue to work; see the\n // library `typeson-registry-sca-reverter` to get a function to do this\n 'registerSCA',\n\n // BROWSER-SPECIFIC CONFIG\n 'avoidAutoShim', // Where WebSQL is detected but where `indexedDB` is\n // missing or poor support is known (non-Chrome Android or\n // non-Safari iOS9), the shim will be auto-applied without\n // `shimIndexedDB.__useShim()`. Set this to `true` to avoid forcing\n // the shim for such cases.\n\n // -----------SQL CONFIG----------\n // Object (`window` in the browser) on which there may be an\n // `openDatabase` method (if any) for WebSQL. (The browser\n // throws if attempting to call `openDatabase` without the window\n // so this is why the config doesn't just allow the function.)\n // Defaults to `window` or `self` in browser builds or\n // a singleton object with the `openDatabase` method set to\n // the \"websql\" package in Node.\n 'win',\n\n // For internal `openDatabase` calls made by `IDBFactory` methods;\n // per the WebSQL spec, \"User agents are expected to use the display name\n // and the estimated database size to optimize the user experience.\n // For example, a user agent could use the estimated size to suggest an\n // initial quota to the user. This allows a site that is aware that it\n // will try to use hundreds of megabytes to declare this upfront, instead\n // of the user agent prompting the user for permission to increase the\n // quota every five megabytes.\"\n // Defaults to (4 * 1024 * 1024) or (25 * 1024 * 1024) in Safari\n 'DEFAULT_DB_SIZE',\n // Whether to create indexes on SQLite tables (and also whether to try\n // dropping)\n // Effectively defaults to `false` (ignored unless `true`)\n 'useSQLiteIndexes',\n\n // NODE-IMPINGING SETTINGS (created for sake of limitations in Node\n // or desktop file system implementation but applied by default in\n // browser for parity)\n\n // File system module with `unlink` to remove deleted database files\n 'fs',\n\n // Used when setting global shims to determine whether to try to add\n // other globals shimmed by the library (`ShimDOMException`,\n // `ShimDOMStringList`, `ShimEvent`, `ShimCustomEvent`, `ShimEventTarget`)\n // Effectively defaults to `false` (ignored unless `true`)\n 'addNonIDBGlobals',\n // Used when setting global shims to determine whether to try to overwrite\n // other globals shimmed by the library (`DOMException`, `DOMStringList`,\n // `Event`, `CustomEvent`, `EventTarget`)\n // Effectively defaults to `false` (ignored unless `true`)\n 'replaceNonIDBGlobals',\n\n // Overcoming limitations with node-sqlite3/storing database name on\n // file systems\n // https://en.wikipedia.org/wiki/Filename#Reserved_characters_and_words\n // Defaults to prefixing database with `D_`, escaping\n // `databaseCharacterEscapeList`, escaping NUL, and\n // escaping upper case letters, as well as enforcing\n // `databaseNameLengthLimit`\n 'escapeDatabaseName',\n // Not used internally; usable as a convenience method\n 'unescapeDatabaseName',\n\n // Defaults to global regex representing the following\n // (characters nevertheless commonly reserved in modern,\n // Unicode-supporting systems): 0x00-0x1F 0x7F \" * / : < > ? \\ |\n 'databaseCharacterEscapeList',\n // Defaults to 254 (shortest typical modern file length limit)\n 'databaseNameLengthLimit',\n\n // Boolean defaulting to true on whether to escape NFD-escaping\n // characters to avoid clashes on MacOS which performs NFD on files\n 'escapeNFDForDatabaseNames',\n\n // Boolean on whether to add the `.sqlite` extension to file names;\n // defaults to `true`\n 'addSQLiteExtension',\n // Various types of in-memory databases that can auto-delete\n [\n 'memoryDatabase',\n /**\n * @param {string} val\n * @throws {TypeError}\n * @returns {void}\n */\n (val) => {\n if (!(/^(?::memory:|file::memory:(\\?[^#]*)?(#.*)?)?$/u).test(\n /** @type {string} */ (val)\n )) {\n throw new TypeError(\n '`memoryDatabase` must be the empty string, \":memory:\", or a ' +\n '\"file::memory:[?queryString][#hash] URL\".'\n );\n }\n }\n ],\n\n // NODE-SPECIFIC CONFIG\n // Boolean on whether to delete the database file itself after\n // `deleteDatabase`; defaults to `true` as the database will be empty\n 'deleteDatabaseFiles',\n 'databaseBasePath',\n 'sysDatabaseBasePath',\n\n // NODE-SPECIFIC WEBSQL CONFIG\n 'sqlBusyTimeout', // Defaults to 1000\n 'sqlTrace', // Callback not used by default\n 'sqlProfile', // Callback not used by default\n // Defaults to true except in Node builds where we can preserve literal NUL with better-sqlite3\n 'escapeNULForSQLiteStatements',\n\n 'sqlMemoryQuota',\n 'createIndexes'\n]).forEach((prop) => {\n /** @type {(val: ConfigValue) => void} */\n let validator;\n if (Array.isArray(prop)) {\n [prop, validator] = prop;\n }\n Object.defineProperty(CFG, prop, {\n get () {\n return map[prop];\n },\n set (val) {\n if (validator) {\n validator(val);\n }\n map[prop] = val;\n }\n });\n});\n\nexport default CFG;\n","// @ts-nocheck\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar regex$1;\nvar hasRequiredRegex;\n\nfunction requireRegex () {\n\tif (hasRequiredRegex) return regex$1;\n\thasRequiredRegex = 1;\n\tregex$1=/[\\xC0-\\xC5\\xC7-\\xCF\\xD1-\\xD6\\xD9-\\xDD\\xE0-\\xE5\\xE7-\\xEF\\xF1-\\xF6\\xF9-\\xFD\\xFF-\\u010F\\u0112-\\u0125\\u0128-\\u0130\\u0134-\\u0137\\u0139-\\u013E\\u0143-\\u0148\\u014C-\\u0151\\u0154-\\u0165\\u0168-\\u017E\\u01A0\\u01A1\\u01AF\\u01B0\\u01CD-\\u01DC\\u01DE-\\u01E3\\u01E6-\\u01F0\\u01F4\\u01F5\\u01F8-\\u021B\\u021E\\u021F\\u0226-\\u0233\\u0344\\u0385\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u0390\\u03AA-\\u03B0\\u03CA-\\u03CE\\u03D3\\u03D4\\u0400\\u0401\\u0403\\u0407\\u040C-\\u040E\\u0419\\u0439\\u0450\\u0451\\u0453\\u0457\\u045C-\\u045E\\u0476\\u0477\\u04C1\\u04C2\\u04D0-\\u04D3\\u04D6\\u04D7\\u04DA-\\u04DF\\u04E2-\\u04E7\\u04EA-\\u04F5\\u04F8\\u04F9\\u0622-\\u0626\\u06C0\\u06C2\\u06D3\\u0929\\u0931\\u0934\\u0958-\\u095F\\u09CB\\u09CC\\u09DC\\u09DD\\u09DF\\u0A33\\u0A36\\u0A59-\\u0A5B\\u0A5E\\u0B48\\u0B4B\\u0B4C\\u0B5C\\u0B5D\\u0B94\\u0BCA-\\u0BCC\\u0C48\\u0CC0\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0D4A-\\u0D4C\\u0DDA\\u0DDC-\\u0DDE\\u0F43\\u0F4D\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F73\\u0F75\\u0F76\\u0F78\\u0F81\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9\\u1026\\u1B06\\u1B08\\u1B0A\\u1B0C\\u1B0E\\u1B12\\u1B3B\\u1B3D\\u1B40\\u1B41\\u1B43\\u1E00-\\u1E99\\u1E9B\\u1EA0-\\u1EF9\\u1F00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FC1-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-\\u1FEE\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u212B\\u219A\\u219B\\u21AE\\u21CD-\\u21CF\\u2204\\u2209\\u220C\\u2224\\u2226\\u2241\\u2244\\u2247\\u2249\\u2260\\u2262\\u226D-\\u2271\\u2274\\u2275\\u2278\\u2279\\u2280\\u2281\\u2284\\u2285\\u2288\\u2289\\u22AC-\\u22AF\\u22E0-\\u22E3\\u22EA-\\u22ED\\u2ADC\\u304C\\u304E\\u3050\\u3052\\u3054\\u3056\\u3058\\u305A\\u305C\\u305E\\u3060\\u3062\\u3065\\u3067\\u3069\\u3070\\u3071\\u3073\\u3074\\u3076\\u3077\\u3079\\u307A\\u307C\\u307D\\u3094\\u309E\\u30AC\\u30AE\\u30B0\\u30B2\\u30B4\\u30B6\\u30B8\\u30BA\\u30BC\\u30BE\\u30C0\\u30C2\\u30C5\\u30C7\\u30C9\\u30D0\\u30D1\\u30D3\\u30D4\\u30D6\\u30D7\\u30D9\\u30DA\\u30DC\\u30DD\\u30F4\\u30F7-\\u30FA\\u30FE\\uAC00-\\uD7A3\\uFB1D\\uFB1F\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFB4E]|\\uD801[\\uDDC9\\uDDE4]|\\uD804[\\uDC9A\\uDC9C\\uDCAB\\uDD2E\\uDD2F\\uDF4B\\uDF4C\\uDF83\\uDF85\\uDF8E\\uDF91\\uDFC5\\uDFC7\\uDFC8]|\\uD805[\\uDCBB\\uDCBC\\uDCBE\\uDDBA\\uDDBB]|\\uD806\\uDD38|\\uD818[\\uDD21-\\uDD28]|\\uD81B[\\uDD68-\\uDD6A]|\\uD834[\\uDD5E-\\uDD64\\uDDBB-\\uDDC0]/;\n\treturn regex$1;\n}\n\nvar regexExports = requireRegex();\nvar regex = /*@__PURE__*/getDefaultExportFromCjs(regexExports);\n\nexport { regex as default };\n","/* eslint-disable new-cap -- ToString is how it is defined */\nimport CFG from './CFG.js';\nimport expandsOnNFD from './unicode-regex.js';\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @param {string} arg\n * @returns {string}\n */\nfunction escapeUnmatchedSurrogates (arg) {\n // https://stackoverflow.com/a/6701665/271577\n return arg.replaceAll(\n /([\\uD800-\\uDBFF])(?![\\uDC00-\\uDFFF])|(^|[^\\uD800-\\uDBFF])([\\uDC00-\\uDFFF])/gu,\n function (_, unmatchedHighSurrogate, precedingLow, unmatchedLowSurrogate) {\n // Could add a corresponding surrogate for compatibility with `node-sqlite3`: https://bugs.python.org/issue12569 and https://stackoverflow.com/a/6701665/271577\n // but Chrome having problems\n if (unmatchedHighSurrogate) {\n return '^2' + unmatchedHighSurrogate.codePointAt()\n .toString(16).padStart(4, '0');\n }\n return (precedingLow || '') + '^3' +\n unmatchedLowSurrogate.codePointAt().toString(16).padStart(4, '0');\n }\n );\n}\n\n/**\n * @param {string} arg\n * @returns {string}\n */\nfunction escapeNameForSQLiteIdentifier (arg) {\n // https://stackoverflow.com/a/6701665/271577\n return '_' + // Prevent empty string\n escapeUnmatchedSurrogates(\n arg.replaceAll('^', '^^') // Escape our escape\n // https://www.sqlite.org/src/tktview?name=57c971fc74\n .replaceAll('\\0', '^0')\n // We need to avoid identifiers being treated as duplicates based on SQLite's ASCII-only case-insensitive table and column names\n // (For SQL in general, however, see https://stackoverflow.com/a/17215009/271577\n // See also https://www.sqlite.org/faq.html#q18 re: Unicode (non-ASCII) case-insensitive not working\n .replaceAll(/([A-Z])/gu, '^$1')\n );\n}\n\n/**\n * The escaping of unmatched surrogates was needed by Chrome but not Node.\n * @param {string} arg\n * @returns {string}\n */\nfunction escapeSQLiteStatement (arg) {\n const escaped = arg.replaceAll('^', '^^');\n return escapeUnmatchedSurrogates(\n CFG.escapeNULForSQLiteStatements === false\n ? escaped\n : escaped.replaceAll('\\0', '^0')\n );\n}\n\n/**\n * @param {string} arg\n * @returns {string}\n */\nfunction unescapeSQLiteResponse (arg) {\n const unescaped = unescapeUnmatchedSurrogates(arg);\n if (CFG.escapeNULForSQLiteStatements === false) {\n return unescaped.replaceAll('^^', '^');\n }\n return unescaped\n .replaceAll(/(\\^+)0/gu, (_, esc) => {\n return esc.length % 2\n ? esc.slice(1) + '\\0'\n : _;\n })\n .replaceAll('^^', '^');\n}\n\n/**\n * @param {string} arg\n * @returns {string}\n */\nfunction sqlEscape (arg) {\n // https://www.sqlite.org/lang_keywords.html\n // https://stackoverflow.com/a/6701665/271577\n // There is no need to escape ', `, or [], as\n // we should always be within double quotes\n // NUL should have already been stripped\n return arg.replaceAll('\"', '\"\"');\n}\n\n/**\n * @param {string} arg\n * @returns {string}\n */\nfunction sqlQuote (arg) {\n return '\"' + sqlEscape(arg) + '\"';\n}\n\n/**\n * @param {string} db\n * @throws {Error}\n * @returns {string}\n */\nfunction escapeDatabaseNameForSQLAndFiles (db) {\n if (CFG.escapeDatabaseName) {\n // We at least ensure NUL is escaped by default, but we need to still\n // handle empty string and possibly also length (potentially\n // throwing if too long), escaping casing (including Unicode?),\n // and escaping special characters depending on file system\n return CFG.escapeDatabaseName(escapeSQLiteStatement(db));\n }\n db = 'D' + escapeNameForSQLiteIdentifier(db);\n if (CFG.escapeNFDForDatabaseNames !== false) {\n // ES6 copying of regex with different flags\n db = db.replaceAll(new RegExp(expandsOnNFD, 'gu'), function (expandable) {\n return '^4' + /** @type {Integer} */ (expandable.codePointAt(0)).toString(16).padStart(6, '0');\n });\n }\n if (CFG.databaseCharacterEscapeList !== false) {\n db = db.replace(\n (CFG.databaseCharacterEscapeList\n ? new RegExp(CFG.databaseCharacterEscapeList, 'gu')\n : /[\\u{0000}-\\u{001F}\\u{007F}\"*/:<>?\\\\|]/gu), // eslint-disable-line no-control-regex -- Controls needed\n function (n0) {\n // eslint-disable-next-line unicorn/prefer-code-point -- Switch to `codePointAt`?\n return '^1' + n0.charCodeAt(0).toString(16).padStart(2, '0');\n }\n );\n }\n if (CFG.databaseNameLengthLimit !== false &&\n db.length >= ((CFG.databaseNameLengthLimit || 254) - (CFG.addSQLiteExtension !== false ? 7 /* '.sqlite'.length */ : 0))) {\n throw new Error(\n 'Unexpectedly long database name supplied; length limit required for Node compatibility; passed length: ' +\n db.length + '; length limit setting: ' + (CFG.databaseNameLengthLimit || 254) + '.'\n );\n }\n return db + (CFG.addSQLiteExtension !== false ? '.sqlite' : ''); // Shouldn't have quoting (do we even need NUL/case escaping here?)\n}\n\n/**\n * @param {string} arg\n * @returns {string}\n */\nfunction unescapeUnmatchedSurrogates (arg) {\n return arg\n .replaceAll(/(\\^+)3(d[0-9a-f]{3})/gu, (_, esc, lowSurr) => {\n return esc.length % 2\n ? esc.slice(1) + String.fromCodePoint(Number.parseInt(lowSurr, 16))\n : _;\n }).replaceAll(/(\\^+)2(d[0-9a-f]{3})/gu, (_, esc, highSurr) => {\n return esc.length % 2\n ? esc.slice(1) + String.fromCodePoint(Number.parseInt(highSurr, 16))\n : _;\n });\n}\n\n/**\n * Not in use internally but supplied for convenience.\n * @param {string} db\n * @returns {string}\n */\nfunction unescapeDatabaseNameForSQLAndFiles (db) {\n if (CFG.unescapeDatabaseName) {\n // We at least ensure NUL is unescaped by default, but we need to still\n // handle empty string and possibly also length (potentially\n // throwing if too long), unescaping casing (including Unicode?),\n // and unescaping special characters depending on file system\n return CFG.unescapeDatabaseName(unescapeSQLiteResponse(db));\n }\n\n return unescapeUnmatchedSurrogates(\n db.slice(2) // D_\n // CFG.databaseCharacterEscapeList\n .replaceAll(/(\\^+)1([0-9a-f]{2})/gu, (_, esc, hex) => {\n return esc.length % 2\n ? esc.slice(1) + String.fromCodePoint(Number.parseInt(hex, 16))\n : _;\n // CFG.escapeNFDForDatabaseNames\n }).replaceAll(/(\\^+)4([0-9a-f]{6})/gu, (_, esc, hex) => {\n return esc.length % 2\n ? esc.slice(1) + String.fromCodePoint(Number.parseInt(hex, 16))\n : _;\n })\n // escapeNameForSQLiteIdentifier (including unescapeUnmatchedSurrogates() above)\n ).replaceAll(/(\\^+)([A-Z])/gu, (_, esc, upperCase) => {\n return esc.length % 2\n ? esc.slice(1) + upperCase\n : _;\n }).replaceAll(/(\\^+)0/gu, (_, esc) => {\n return esc.length % 2\n ? esc.slice(1) + '\\0'\n : _;\n }).replaceAll('^^', '^');\n}\n\n/**\n * @param {string} store\n * @returns {string}\n */\nfunction escapeStoreNameForSQL (store) {\n return sqlQuote('S' + escapeNameForSQLiteIdentifier(store));\n}\n\n/**\n * @param {string} index\n * @returns {string}\n */\nfunction escapeIndexNameForSQL (index) {\n return sqlQuote('I' + escapeNameForSQLiteIdentifier(index));\n}\n\n/**\n * @param {string} index\n * @returns {string}\n */\nfunction escapeIndexNameForSQLKeyColumn (index) {\n return 'I' + escapeNameForSQLiteIdentifier(index);\n}\n\n/**\n * @todo Didn't need to escape `%`. Do we still need this escape?\n * @param {string} str\n * @returns {string}\n */\nfunction sqlLIKEEscape (str) {\n // https://www.sqlite.org/lang_expr.html#like\n return str.replaceAll('^', '^^');\n}\n\n/**\n * Minimal replacement for `path.join(base, name)` covering our only use case:\n * `name` is always a bare file name (no separators and no `.`/`..`), and\n * `base` is a directory path expected to be absolute and normalized (an\n * empty string means the current working directory). Unlike `path.join`,\n * this performs no `.`/`..` resolution. It reuses the separator style of\n * `base` (backslash only when `base` uses backslashes and no forward\n * slashes, i.e. a Windows path), otherwise `/`; Node's `fs`, SQLite, and\n * `websql-configurable` accept either separator on Windows regardless.\n * Avoiding `node:path` keeps browser bundles free of a path polyfill.\n * @param {string} base\n * @param {string} name\n * @returns {string}\n */\nfunction joinPath (base, name) {\n if (!base) {\n return name;\n }\n const sep = base.includes('\\\\') && !base.includes('/') ? '\\\\' : '/';\n return base.replace(/[/\\\\]+$/u, '') + sep + name;\n}\n\n/* eslint-disable jsdoc/valid-types -- Bug */\n/**\n * @typedef {{[Symbol.hasInstance]: (value: unknown) => boolean}} AnyClass\n */\n/* eslint-enable jsdoc/valid-types -- Bug */\n\n// Babel doesn't seem to provide a means of using the `instanceof` operator with Symbol.hasInstance (yet?)\n/**\n *\n * @param {AnyValue} obj\n * @param {AnyClass} Clss\n * @returns {boolean}\n */\nfunction instanceOf (obj, Clss) {\n return Clss[Symbol.hasInstance](obj);\n}\n\n/**\n *\n * @param {AnyValue} obj\n * @returns {obj is object}\n */\nfunction isObj (obj) {\n return obj !== null && typeof obj === 'object';\n}\n\n/**\n *\n * @param {AnyValue} obj\n * @returns {boolean}\n */\nfunction isDate (obj) {\n return isObj(obj) && 'getDate' in obj && typeof obj.getDate === 'function';\n}\n\n/**\n *\n * @param {AnyValue} obj\n * @returns {boolean}\n */\nfunction isBlob (obj) {\n return isObj(obj) && 'size' in obj && typeof obj.size === 'number' &&\n 'slice' in obj && typeof obj.slice === 'function' && !('lastModified' in obj);\n}\n\n/**\n *\n * @param {AnyValue} obj\n * @returns {boolean}\n */\nfunction isRegExp (obj) {\n return isObj(obj) && 'flags' in obj && typeof obj.flags === 'string' &&\n 'exec' in obj && typeof obj.exec === 'function';\n}\n\n/**\n *\n * @param {AnyValue} obj\n * @returns {boolean}\n */\nfunction isFile (obj) {\n return isObj(obj) && 'name' in obj && typeof obj.name === 'string' &&\n 'slice' in obj && typeof obj.slice === 'function' && 'lastModified' in obj;\n}\n\n/**\n *\n * @param {AnyValue} obj\n * @returns {boolean}\n */\nfunction isBinary (obj) {\n return isObj(obj) && 'byteLength' in obj && typeof obj.byteLength === 'number' && (\n ('slice' in obj && typeof obj.slice === 'function') || // `TypedArray` (view on buffer) or `ArrayBuffer`\n ('getFloat64' in obj && typeof obj.getFloat64 === 'function') // `DataView` (view on buffer)\n );\n}\n\n/**\n *\n * @param {AnyValue} obj\n * @returns {obj is Iterable<unknown>}\n */\nfunction isIterable (obj) {\n return isObj(obj) &&\n // eslint-disable-next-line unicorn/no-computed-property-existence-check -- May not be \"own\"\n Symbol.iterator in obj &&\n typeof obj[Symbol.iterator] === 'function';\n}\n\n/**\n *\n * @param {object} obj\n * @param {string[]} props\n * @returns {void}\n */\nfunction defineOuterInterface (obj, props) {\n props.forEach((prop) => {\n const o = {\n get [prop] () {\n throw new TypeError('Illegal invocation');\n },\n // @ts-expect-error Deliberately errs\n set [prop] (val) {\n throw new TypeError('Illegal invocation');\n }\n };\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, prop)\n );\n Object.defineProperty(obj, prop, desc);\n });\n}\n\n/**\n *\n * @param {object} obj\n * @param {string[]} props\n * @returns {void}\n */\nfunction defineReadonlyOuterInterface (obj, props) {\n props.forEach((prop) => {\n const o = {\n get [prop] () {\n throw new TypeError('Illegal invocation');\n }\n };\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, prop)\n );\n Object.defineProperty(obj, prop, desc);\n });\n}\n\n/**\n *\n * @param {object} obj\n * @param {string[]} listeners\n * @returns {void}\n */\nfunction defineListenerProperties (obj, listeners) {\n listeners = typeof listeners === 'string' ? [listeners] : listeners;\n listeners.forEach((listener) => {\n const o = {\n get [listener] () {\n return Reflect.get(obj, '__' + listener);\n },\n /**\n * @param {AnyValue} val\n */\n set [listener] (val) {\n Reflect.set(obj, '__' + listener, val);\n }\n };\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, listener)\n );\n // desc.enumerable = true; // Default\n // desc.configurable = true; // Default // Needed by support.js in W3C IndexedDB tests (for openListeners)\n Object.defineProperty(obj, listener, desc);\n });\n listeners.forEach((l) => {\n Reflect.set(obj, l, null);\n });\n}\n\n/**\n *\n * @param {object} obj\n * @param {string|string[]} props\n * @param {null|{\n * [key: string]: unknown\n * }} getter\n * @returns {void}\n */\nfunction defineReadonlyProperties (obj, props, getter = null) {\n props = typeof props === 'string' ? [props] : props;\n props.forEach(function (prop) {\n let o;\n if (getter && Object.hasOwn(getter, prop)) {\n o = getter[prop];\n } else {\n Object.defineProperty(obj, '__' + prop, {\n enumerable: false,\n configurable: false,\n writable: true\n });\n // We must resort to this to get \"get <name>\" as\n // the function `name` for proper IDL\n o = {\n get [prop] () {\n return this['__' + prop];\n }\n };\n }\n\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, prop)\n );\n // desc.enumerable = true; // Default\n // desc.configurable = true; // Default\n Object.defineProperty(obj, prop, desc);\n });\n}\n\n/**\n * `X.prototype.method = function (...) {}` (an assignment to a\n * `MemberExpression`, as used throughout this codebase for IDB\n * interface operations) does not get its `name` inferred by the\n * engine the way object-literal method shorthand or a plain variable\n * assignment would, so it is left as `''`. Per Web IDL, an operation's\n * function object must have its `name` set to the operation's\n * identifier, so call this once all of an interface's own-property\n * operations have been assigned onto its prototype (or, for static\n * operations, onto the constructor itself) to patch any still-empty\n * names in place.\n * @param {object} obj\n * @returns {void}\n */\nfunction setOperationNames (obj) {\n Object.getOwnPropertyNames(obj).forEach((key) => {\n if (key === 'constructor') {\n return;\n }\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(obj, key)\n );\n if (typeof desc.value === 'function' && desc.value.name === '') {\n Object.defineProperty(desc.value, 'name', {value: key, configurable: true});\n }\n });\n}\n\n/**\n *\n * @param {string} item\n * @returns {boolean}\n */\nfunction isIdentifier (item) {\n // For load-time and run-time performance, we don't provide the complete regular\n // expression for identifiers, but these can be passed in, using the expressions\n // found at https://gist.github.com/brettz9/b4cd6821d990daa023b2e604de371407\n // ID_Start (includes Other_ID_Start)\n const UnicodeIDStart = CFG.UnicodeIDStart || '[$A-Z_a-z]';\n // ID_Continue (includes Other_ID_Continue)\n const UnicodeIDContinue = CFG.UnicodeIDContinue || '[$0-9A-Z_a-z]';\n const IdentifierStart = '(?:' + UnicodeIDStart + '|[$_])';\n const IdentifierPart = '(?:' + UnicodeIDContinue + '|[$_\\u{200C}\\u{200D}])';\n return (new RegExp('^' + IdentifierStart + IdentifierPart + '*$', 'u')).test(item);\n}\n\n/**\n *\n * @param {string|string[]} keyPathString\n * @returns {boolean}\n */\nfunction isValidKeyPathString (keyPathString) {\n return typeof keyPathString === 'string' &&\n (keyPathString === '' || isIdentifier(keyPathString) || keyPathString.split('.').every((pathComponent) => {\n return isIdentifier(pathComponent);\n }));\n}\n\n/**\n *\n * @param {string|string[]} keyPath\n * @returns {boolean}\n */\nfunction isValidKeyPath (keyPath) {\n return isValidKeyPathString(keyPath) || (\n Array.isArray(keyPath) && Boolean(keyPath.length) &&\n // Convert array from sparse to dense https://www.2ality.com/2012/06/dense-arrays.html\n // See also https://heycam.github.io/webidl/#idl-DOMString\n [...keyPath].every((pathComponent) => {\n return isValidKeyPathString(pathComponent);\n })\n );\n}\n\n/**\n * @param {number} number\n * @param {\"unsigned long long\"|\"unsigned long\"} type\n * @throws {Error|TypeError}\n * @returns {number}\n */\nfunction enforceRange (number, type) {\n number = Math.floor(Number(number));\n let max, min;\n switch (type) {\n case 'unsigned long long': {\n max = 0x1FFFFFFFFFFFFF; // 2^53 - 1\n min = 0;\n break;\n }\n case 'unsigned long': {\n max = 0xFFFFFFFF; // 2^32 - 1\n min = 0;\n break;\n }\n default:\n throw new Error('Unrecognized type supplied to enforceRange');\n }\n if (!Number.isFinite(number) ||\n number > max ||\n number < min) {\n throw new TypeError('Invalid range: ' + number);\n }\n return number;\n}\n\n/**\n * @typedef {unknown} AnyValue\n */\n\n/**\n * @param {AnyValue} v\n * @param {boolean} [treatNullAs]\n * @returns {string}\n */\nfunction convertToDOMString (v, treatNullAs) {\n return v === null && treatNullAs ? '' : ToString(v);\n}\n\n/**\n * @param {AnyValue} o\n * @returns {string}\n */\nfunction ToString (o) { // Todo: See `es-abstract/es7`\n // `String()` will not throw with Symbols, but the unchecked `+ ''`\n // coercion deliberately does (Web IDL requires converting a symbol\n // to `DOMString` to throw a `TypeError`); the assertion only tells\n // the compiler to allow the coercion it cannot model.\n return '' + /** @type {string} */ (o); // eslint-disable-line no-implicit-coercion -- Need to throw with symbols\n}\n\n/**\n *\n * @param {AnyValue} val\n * @returns {string|string[]}\n */\nfunction convertToSequenceDOMString (val) {\n // Per <https://heycam.github.io/webidl/#idl-sequence>, converting to a sequence works with iterables\n if (isIterable(val)) { // We don't want conversion to array to convert primitives\n // Per <https://heycam.github.io/webidl/#es-DOMString>, converting to a `DOMString` to be via `ToString`: https://tc39.github.io/ecma262/#sec-tostring\n return [...val].map((item) => {\n return ToString(item);\n });\n }\n return ToString(val);\n}\n\n/**\n * @param {AnyValue} v\n * @returns {v is null|undefined}\n */\nfunction isNullish (v) {\n return v === null || v === undefined;\n}\n\n/**\n * Cursor/request continuation chains can call each other synchronously\n * (e.g. walking a large prefetched buffer, or advancing many interleaved\n * cursors in one transaction) which, for large enough record counts, can\n * exceed the JS engine's call stack (\"Maximum call stack size exceeded\").\n *\n * This can't be fixed by deferring continuations to a microtask/macrotask:\n * the transaction machinery synchronously checks (once the current call\n * stack unwinds) whether there are any pending requests left in order to\n * decide it's safe to commit; deferring a continuation opens a real gap in\n * which that check runs first and the transaction completes prematurely,\n * with the deferred continuation then acting on an already-finished\n * transaction (a hang, since it can never resolve).\n *\n * Instead, this implements a true trampoline: the first call starts a\n * synchronous work queue and drains it in a flat loop; any call made while\n * already draining (i.e. a continuation triggering another continuation)\n * is simply appended to that same queue and returns immediately instead of\n * recursing. This keeps everything synchronous (so no completion-check\n * race is introduced) while preventing the call stack from growing with\n * each successive continuation.\n */\nconst continuationState = {\n /** @type {Array<() => void>|null} */\n queue: null\n};\n\n/**\n * @param {() => void} fn\n * @returns {void}\n */\nfunction runContinuationSafely (fn) {\n if (continuationState.queue) {\n continuationState.queue.push(fn);\n return;\n }\n const queue = [fn];\n continuationState.queue = queue;\n try {\n while (queue.length) {\n const next = /** @type {() => void} */ (queue.shift());\n next();\n }\n } finally {\n // Ensure a thrown exception can't leave the queue permanently\n // stuck (which would silently swallow all future continuations).\n continuationState.queue = null;\n }\n}\n\nexport {escapeSQLiteStatement, unescapeSQLiteResponse,\n escapeDatabaseNameForSQLAndFiles, unescapeDatabaseNameForSQLAndFiles,\n escapeStoreNameForSQL, escapeIndexNameForSQL, escapeIndexNameForSQLKeyColumn,\n sqlLIKEEscape, sqlQuote, joinPath,\n instanceOf,\n isObj, isDate, isBlob, isRegExp, isFile, isBinary, isIterable,\n defineOuterInterface, defineReadonlyOuterInterface,\n defineListenerProperties, defineReadonlyProperties,\n setOperationNames,\n isValidKeyPath, enforceRange,\n convertToDOMString, convertToSequenceDOMString,\n isNullish, runContinuationSafely};\n","import {ShimEventTarget, ShimEvent, ShimCustomEvent} from 'eventtargeter';\nimport * as util from './util.js';\n\n/**\n * @typedef {Error} DebuggingError\n */\n\n/**\n * @typedef {Event & {\n * __legacyOutputDidListenersThrowError?: boolean,\n * debug?: DebuggingError|null\n * }} EventFull\n */\n\n/**\n *\n * @param {string} type\n * @param {DebuggingError|null} [debug]\n * @param {EventInit} [evInit]\n * @returns {EventFull}\n */\nfunction createEvent (type, debug, evInit) {\n // @ts-expect-error It's ok\n const ev = /** @type {EventFull} */ (new ShimEvent(type, evInit));\n ev.debug = debug;\n return ev;\n}\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\n// We don't add within polyfill repo as might not always be the desired implementation\nObject.defineProperty(ShimEvent, Symbol.hasInstance, {\n /* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n value:\n /**\n * @param {unknown} obj\n * @returns {boolean}\n */\n (obj) => util.isObj(obj) && 'target' in obj && 'bubbles' in obj && typeof obj.bubbles === 'boolean'\n});\n\nexport {createEvent, ShimEvent, ShimCustomEvent, ShimEventTarget};\n","import {ShimEvent} from './Event.js';\nimport * as util from './util.js';\n\nconst readonlyProperties = ['oldVersion', 'newVersion'];\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {globalThis.Event & {\n * __eventInitDict: {oldVersion?: Integer, newVersion?: Integer|null}\n * }} IDBVersionChangeEventFull\n */\n\n/**\n * `extends ShimEvent` via a real `class`, now that `Event` (`ShimEvent`)\n * is itself a real, constructible class in `eventtargeter` -- the old\n * `ShimEvent.call(this, type)` + `Object.create(ShimEvent.prototype)`\n * pattern this used to use is illegal for a real class constructor\n * (only callable via `new`/`super()`).\n */\nclass IDBVersionChangeEvent extends ShimEvent {\n /**\n * @param {string} type\n */\n constructor (type /* , eventInitDict */) { // eventInitDict is a IDBVersionChangeEventInit (but is not defined as a global)\n super(type);\n const me = /** @type {IDBVersionChangeEventFull} */ (/** @type {unknown} */ (this));\n // @ts-expect-error It's ok\n me[Symbol.toStringTag] = 'IDBVersionChangeEvent';\n me.toString = function () {\n return '[object IDBVersionChangeEvent]';\n };\n // eslint-disable-next-line prefer-rest-params -- API\n me.__eventInitDict = arguments[1] || {};\n }\n}\n\n// @ts-expect-error Not part of the class body itself\nIDBVersionChangeEvent.prototype[Symbol.toStringTag] = 'IDBVersionChangeEventPrototype';\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nreadonlyProperties.forEach((prop) => {\n // Ensure for proper interface testing that \"get <name>\" is the function name\n const o = {\n /**\n * @returns {Integer|null}\n */\n get [prop] () {\n if (!(this instanceof IDBVersionChangeEvent)) {\n throw new TypeError('Illegal invocation');\n }\n const me = /** @type {IDBVersionChangeEventFull} */ (/** @type {unknown} */ (this));\n return (me.__eventInitDict && me.__eventInitDict[\n /** @type {keyof IDBVersionChangeEventFull['__eventInitDict']} */ (prop)\n ]) || (prop === 'oldVersion' ? 0 : null);\n }\n };\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, prop)\n );\n // desc.enumerable = true; // Default\n // desc.configurable = true; // Default\n Object.defineProperty(IDBVersionChangeEvent.prototype, prop, desc);\n});\n\nObject.defineProperty(IDBVersionChangeEvent, Symbol.hasInstance, {\n value:\n /**\n * @param {unknown} obj\n * @returns {boolean}\n */\n (obj) => util.isObj(obj) && 'oldVersion' in obj &&\n 'defaultPrevented' in obj && typeof obj.defaultPrevented === 'boolean'\n});\n\n// A real class's own `.prototype` (and its `.constructor` back-reference)\n// is already set up correctly and non-writable/non-configurable per\n// spec, so no explicit setup is needed here.\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nexport default IDBVersionChangeEvent;\n","import CFG from './CFG.js';\n\n/**\n * Creates a native DOMException, for browsers that support it.\n * @param {string} name\n * @param {string} message\n * @returns {DOMException}\n */\nfunction createNativeDOMException (name, message) {\n // @ts-expect-error It's ok\n // eslint-disable-next-line new-cap -- Ok\n return new DOMException.prototype.constructor(\n message,\n name || 'DOMException'\n );\n}\n\n// From web-platform-tests testharness.js name_code_map (though not in new spec)\n\n/**\n * @typedef {\"IndexSizeError\"|\"HierarchyRequestError\"|\"WrongDocumentError\"|\n * \"InvalidCharacterError\"|\"NoModificationAllowedError\"|\"NotFoundError\"|\n * \"NotSupportedError\"|\"InUseAttributeError\"|\"InvalidStateError\"|\n * \"SyntaxError\"|\"InvalidModificationError\"|\"NamespaceError\"|\n * \"InvalidAccessError\"|\"TypeMismatchError\"|\"SecurityError\"|\n * \"NetworkError\"|\"AbortError\"|\"URLMismatchError\"|\"QuotaExceededError\"|\n * \"TimeoutError\"|\"InvalidNodeTypeError\"|\"DataCloneError\"|\"EncodingError\"|\n * \"NotReadableError\"|\"UnknownError\"|\"ConstraintError\"|\"DataError\"|\n * \"TransactionInactiveError\"|\"ReadOnlyError\"|\"VersionError\"|\n * \"OperationError\"|\"NotAllowedError\"} Code\n */\n\nconst codes = {\n IndexSizeError: 1,\n HierarchyRequestError: 3,\n WrongDocumentError: 4,\n InvalidCharacterError: 5,\n NoModificationAllowedError: 7,\n NotFoundError: 8,\n NotSupportedError: 9,\n InUseAttributeError: 10,\n InvalidStateError: 11,\n SyntaxError: 12,\n InvalidModificationError: 13,\n NamespaceError: 14,\n InvalidAccessError: 15,\n TypeMismatchError: 17,\n SecurityError: 18,\n NetworkError: 19,\n AbortError: 20,\n URLMismatchError: 21,\n QuotaExceededError: 22,\n TimeoutError: 23,\n InvalidNodeTypeError: 24,\n DataCloneError: 25,\n\n EncodingError: 0,\n NotReadableError: 0,\n UnknownError: 0,\n ConstraintError: 0,\n DataError: 0,\n TransactionInactiveError: 0,\n ReadOnlyError: 0,\n VersionError: 0,\n OperationError: 0,\n NotAllowedError: 0\n};\n\n/**\n * @typedef {\"INDEX_SIZE_ERR\"|\"DOMSTRING_SIZE_ERR\"|\"HIERARCHY_REQUEST_ERR\"|\n * \"WRONG_DOCUMENT_ERR\"|\"INVALID_CHARACTER_ERR\"|\"NO_DATA_ALLOWED_ERR\"|\n * \"NO_MODIFICATION_ALLOWED_ERR\"|\"NOT_FOUND_ERR\"|\"NOT_SUPPORTED_ERR\"|\n * \"INUSE_ATTRIBUTE_ERR\"|\"INVALID_STATE_ERR\"|\"SYNTAX_ERR\"|\n * \"INVALID_MODIFICATION_ERR\"|\"NAMESPACE_ERR\"|\"INVALID_ACCESS_ERR\"|\n * \"VALIDATION_ERR\"|\"TYPE_MISMATCH_ERR\"|\"SECURITY_ERR\"|\"NETWORK_ERR\"|\n * \"ABORT_ERR\"|\"URL_MISMATCH_ERR\"|\"QUOTA_EXCEEDED_ERR\"|\"TIMEOUT_ERR\"|\n * \"INVALID_NODE_TYPE_ERR\"|\"DATA_CLONE_ERR\"} LegacyCode\n */\n\nconst legacyCodes = {\n INDEX_SIZE_ERR: 1,\n DOMSTRING_SIZE_ERR: 2,\n HIERARCHY_REQUEST_ERR: 3,\n WRONG_DOCUMENT_ERR: 4,\n INVALID_CHARACTER_ERR: 5,\n NO_DATA_ALLOWED_ERR: 6,\n NO_MODIFICATION_ALLOWED_ERR: 7,\n NOT_FOUND_ERR: 8,\n NOT_SUPPORTED_ERR: 9,\n INUSE_ATTRIBUTE_ERR: 10,\n INVALID_STATE_ERR: 11,\n SYNTAX_ERR: 12,\n INVALID_MODIFICATION_ERR: 13,\n NAMESPACE_ERR: 14,\n INVALID_ACCESS_ERR: 15,\n VALIDATION_ERR: 16,\n TYPE_MISMATCH_ERR: 17,\n SECURITY_ERR: 18,\n NETWORK_ERR: 19,\n ABORT_ERR: 20,\n URL_MISMATCH_ERR: 21,\n QUOTA_EXCEEDED_ERR: 22,\n TIMEOUT_ERR: 23,\n INVALID_NODE_TYPE_ERR: 24,\n DATA_CLONE_ERR: 25\n};\n\n/**\n * @typedef {globalThis.DOMException & {\n * _code: number,\n * _name: string|Code|LegacyCode,\n * _message: string\n * }} DOMExceptionFull\n */\n\n/**\n *\n * @returns {typeof DOMException}\n */\nfunction createNonNativeDOMExceptionClass () {\n /**\n * @class\n * @param {string|undefined} message\n * @param {Code|LegacyCode} name\n * @this {DOMExceptionFull}\n * @returns {void}\n */\n function DOMException (message, name) {\n // const err = Error.prototype.constructor.call(this, message); // Any use to this? Won't set this.message\n // @ts-expect-error It's ok\n this[Symbol.toStringTag] = 'DOMException';\n this._code = Object.hasOwn(codes, name)\n ? codes[/** @type {Code} */ (name)]\n : (legacyCodes[/** @type {LegacyCode} */ (name)] || 0);\n this._name = name || 'Error';\n // We avoid `String()` in this next line as it converts Symbols\n this._message = message === undefined ? '' : ('' + message); // eslint-disable-line no-implicit-coercion -- Don't convert symbols\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: this._code\n });\n if (name !== undefined) {\n Object.defineProperty(this, 'name', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: this._name\n });\n }\n if (message !== undefined) {\n Object.defineProperty(this, 'message', {\n configurable: true,\n enumerable: false,\n writable: true,\n value: this._message\n });\n }\n }\n\n // Necessary for W3C tests which complains if `DOMException` has properties on its \"own\" prototype\n\n // class DummyDOMException extends Error {}; // Sometimes causing problems in Node\n /* eslint-disable func-name-matching -- See above */\n /**\n * @class\n */\n const DummyDOMException = function DOMException () { /* */ };\n /* eslint-enable func-name-matching -- See above */\n DummyDOMException.prototype = Object.create(Error.prototype); // Intended for subclassing\n /** @type {const} */ (['name', 'message']).forEach((prop) => {\n Object.defineProperty(DummyDOMException.prototype, prop, {\n enumerable: true,\n /**\n * @this {DOMException}\n * @returns {string}\n */\n get () {\n if (!(this instanceof DOMException ||\n // @ts-ignore Just checking; needed under some TS versions\n this instanceof DummyDOMException ||\n // @ts-ignore Just checking; needed under some TS versions\n this instanceof Error)) {\n throw new TypeError('Illegal invocation');\n }\n const me = /** @type {DOMExceptionFull} */ (/** @type {unknown} */ (this));\n return me[prop === 'name' ? '_name' : '_message'];\n }\n });\n });\n // DOMException uses the same `toString` as `Error`\n Object.defineProperty(DummyDOMException.prototype, 'code', {\n configurable: true,\n enumerable: true,\n get () {\n throw new TypeError('Illegal invocation');\n }\n });\n // @ts-expect-error It's ok\n DOMException.prototype = new DummyDOMException();\n\n DOMException.prototype[Symbol.toStringTag] = 'DOMExceptionPrototype';\n Object.defineProperty(DOMException, 'prototype', {\n writable: false\n });\n\n const keys = Object.keys(codes);\n\n /** @type {(keyof typeof codes)[]} */ (keys).forEach(\n (codeName) => {\n Object.defineProperty(DOMException.prototype, codeName, {\n enumerable: true,\n configurable: false,\n value: codes[codeName]\n });\n Object.defineProperty(DOMException, codeName, {\n enumerable: true,\n configurable: false,\n value: codes[codeName]\n });\n }\n );\n /** @type {(keyof typeof legacyCodes)[]} */ (Object.keys(legacyCodes)).forEach((\n codeName\n ) => {\n Object.defineProperty(DOMException.prototype, codeName, {\n enumerable: true,\n configurable: false,\n value: legacyCodes[codeName]\n });\n Object.defineProperty(DOMException, codeName, {\n enumerable: true,\n configurable: false,\n value: legacyCodes[codeName]\n });\n });\n Object.defineProperty(DOMException.prototype, 'constructor', {\n writable: true,\n configurable: true,\n enumerable: false,\n value: DOMException\n });\n\n // @ts-ignore We don't need all its properties; needed under some TS versions\n return DOMException;\n}\n\nconst ShimNonNativeDOMException = createNonNativeDOMExceptionClass();\n\n/**\n * Creates a generic Error object.\n * @param {string} name\n * @param {string} message\n * @returns {Error}\n */\nfunction createNonNativeDOMException (name, message) {\n // @ts-ignore It's ok; needed under some TS versions\n return new ShimNonNativeDOMException(message, name);\n}\n\n/**\n * @typedef {{\n * message: string\n * }} ErrorLike\n */\n\n/**\n * Logs detailed error information to the console.\n * @param {string} name\n * @param {string} message\n * @param {string|ErrorLike|boolean|null} [error]\n * @returns {void}\n */\nfunction logError (name, message, error) {\n if (!CFG.DEBUG) {\n return;\n }\n\n const msg = error && typeof error === 'object' && error.message\n ? error.message\n : /** @type {string} */ (error);\n\n const method = typeof (console.error) === 'function' ? 'error' : 'log';\n console[method](name + ': ' + message + '. ' + (msg || ''));\n if (console.trace) { console.trace(); }\n}\n\n/**\n * @param {unknown} obj\n * @returns {boolean}\n */\nfunction isErrorOrDOMErrorOrDOMException (obj) {\n // We don't use util.isObj here as mutual dependency causing problems in Babel with browser\n return typeof obj === 'object' && obj !== null &&\n 'name' in obj && typeof obj.name === 'string';\n}\n\n/**\n * Finds the error argument. This is useful because some WebSQL callbacks\n * pass the error as the first argument, and some pass it as the second\n * argument.\n * @param {unknown[]} args\n * @returns {unknown}\n */\nfunction findError (args) {\n let err;\n if (args) {\n if (args.length === 1) {\n return args[0];\n }\n for (const arg of args) {\n if (isErrorOrDOMErrorOrDOMException(arg)) {\n return arg;\n }\n if (typeof arg === 'object' && arg !== null &&\n 'message' in arg && typeof arg.message === 'string') {\n err = arg;\n }\n }\n }\n return err;\n}\n\n/**\n * The `websql-configurable` driver never constructs a real, spec-conformant\n * `SQLError` (with a required numeric `.code`) -- errors it reports are\n * always plain `Error`s from the underlying SQL driver, so `.code` is\n * optional here and, in practice, always `undefined` today (the `case 4`/\n * `case 7` branches below are effectively unreachable pending upstream\n * support for surfacing a real error code).\n * @param {Error & {code?: number|string}} webSQLErr\n * @returns {(DOMException|Error) & {\n * sqlError: Error & {code?: number|string}\n * }|QuotaExceededError}\n */\nfunction webSQLErrback (webSQLErr) {\n let name, message, useQuotaExceededError = false;\n if (webSQLErr.code === 4 || webSQLErr.code === 'SQLITE_FULL') { // SQLError.QUOTA_ERR or better-sqlite3 SQLITE_FULL\n name = 'QuotaExceededError';\n message = 'The operation failed because there was not enough ' +\n 'remaining storage space, or the storage quota was reached ' +\n 'and the user declined to give more space to the database.';\n if (typeof QuotaExceededError !== 'undefined') {\n useQuotaExceededError = true;\n }\n } else {\n switch (webSQLErr.code) {\n /*\n // Should a WebSQL timeout treat as IndexedDB `TransactionInactiveError` or `UnknownError`?\n case 7: { // SQLError.TIMEOUT_ERR\n // All transaction errors abort later, so no need to mark inactive\n name = 'TransactionInactiveError';\n message = 'A request was placed against a transaction which is currently not active, or which is finished (Internal SQL Timeout).';\n break;\n }\n */\n default: {\n name = 'UnknownError';\n message = 'The operation failed for reasons unrelated to the database itself and not covered by any other errors.';\n break;\n }\n }\n }\n message += ' (' + webSQLErr.message + ')--(' + webSQLErr.code + ')';\n\n if (useQuotaExceededError) {\n return new QuotaExceededError(message);\n }\n\n const err =\n /**\n * @type {(Error | DOMException) & {\n * sqlError: Error & {code?: number|string}\n * }}\n */\n (createDOMException(name, message));\n err.sqlError = webSQLErr;\n return err;\n}\n\nlet test, useNativeDOMException = false;\n\n// Test whether we can use the browser's native DOMException class\ntry {\n test = createNativeDOMException('test name', 'test message');\n if (isErrorOrDOMErrorOrDOMException(test) && test.name === 'test name' && test.message === 'test message') {\n // Native DOMException works as expected\n useNativeDOMException = true;\n }\n} catch (err) {}\n\nconst createDOMException = useNativeDOMException\n // eslint-disable-next-line @stylistic/operator-linebreak -- Need JSDoc\n ? /**\n * @param {string} name\n * @param {string} message\n * @param {ErrorLike} [error]\n * @returns {DOMException}\n */\n function (name, message, error) {\n logError(name, message, error);\n return createNativeDOMException(name, message);\n }\n // eslint-disable-next-line @stylistic/operator-linebreak -- Need JSDoc\n : /**\n * @param {string} name\n * @param {string} message\n * @param {ErrorLike} [error]\n * @returns {Error}\n */\n function (name, message, error) {\n logError(name, message, error);\n return createNonNativeDOMException(name, message);\n };\n\nconst ShimDOMException = useNativeDOMException\n ? DOMException\n : ShimNonNativeDOMException;\n\nexport {logError, findError, ShimDOMException, createDOMException, webSQLErrback};\n","import {EventTargetFactory} from 'eventtargeter';\nimport {createDOMException} from './DOMException.js';\nimport * as util from './util.js';\n\nconst listeners = ['onsuccess', 'onerror'];\nconst readonlyProperties = ['source', 'transaction', 'readyState'];\nconst doneFlagGetters = ['result', 'error'];\n\n/**\n * The IDBRequest Object that is returns for all async calls.\n * @see https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#request-api\n * @class\n * @throws {TypeError}\n */\nfunction IDBRequest () {\n throw new TypeError('Illegal constructor');\n}\n\n/**\n * @typedef {IDBRequest & EventTarget & import('eventtargeter').EventTargetInstance & {\n * transaction: import('./IDBTransaction.js').IDBTransactionFull,\n * __done: boolean,\n * __result: unknown,\n * __error: null|DOMException|Error,\n * __source: null|import('./IDBDatabase.js').IDBDatabaseFull|\n * import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull,\n * __transaction: undefined|null|\n * import('./IDBTransaction.js').IDBTransactionFull,\n * addLateEventListener: (ev: string, listener: (e: Event & {\n * __legacyOutputDidListenersThrowError: boolean\n * }) => void) => void\n * addDefaultEventListener: (ev: string, listener: (e: Event & {\n * __legacyOutputDidListenersThrowError: boolean\n * }) => void) => void\n * }} IDBRequestFull\n */\n\n/* eslint-disable func-name-matching -- Polyfill */\n/**\n * @class\n * @this {IDBRequestFull}\n */\nIDBRequest.__super = function IDBRequest () {\n // @ts-ignore It's ok\n this[Symbol.toStringTag] = 'IDBRequest';\n // @ts-ignore Part of `ShimEventTarget`\n this.__setOptions({\n legacyOutputDidListenersThrowFlag: true // Event hook for IndexedB\n });\n doneFlagGetters.forEach((prop) => {\n Object.defineProperties(\n this,\n {\n ['__' + prop]: {\n enumerable: false,\n configurable: false,\n writable: true\n },\n [prop]: {\n enumerable: true,\n configurable: true,\n get () {\n if (!this.__done) {\n throw createDOMException('InvalidStateError', \"Can't get \" + prop + '; the request is still pending.');\n }\n return this['__' + prop];\n }\n }\n }\n );\n });\n util.defineReadonlyProperties(this, readonlyProperties, {\n readyState: {\n /**\n * @returns {\"done\"|\"pending\"}\n */\n get readyState () {\n const me = /** @type {IDBRequestFull} */ (/** @type {unknown} */ (this));\n return me.__done ? 'done' : 'pending';\n }\n }\n });\n util.defineListenerProperties(this, listeners);\n\n this.__result = undefined;\n this.__error = this.__source = this.__transaction = null;\n this.__done = false;\n};\n/* eslint-enable func-name-matching -- Polyfill */\n\n/**\n * @returns {IDBRequestFull}\n */\nIDBRequest.__createInstance = function () {\n // @ts-expect-error Casting this causes other errors\n return new IDBRequest.__super();\n};\n\n// @ts-expect-error It's ok\nIDBRequest.prototype = EventTargetFactory.createInstance({extraProperties: ['debug']});\nIDBRequest.prototype[Symbol.toStringTag] = 'IDBRequestPrototype';\n\n/**\n * @this {IDBRequestFull}\n * @returns {import('./IDBTransaction.js').IDBTransactionFull|null|undefined}\n */\nIDBRequest.prototype.__getParent = function () {\n if (this.toString() === '[object IDBOpenDBRequest]') {\n return null;\n }\n return this.__transaction;\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\n// Illegal invocations\nutil.defineReadonlyOuterInterface(IDBRequest.prototype, readonlyProperties);\nutil.defineReadonlyOuterInterface(IDBRequest.prototype, doneFlagGetters);\n\nutil.defineOuterInterface(IDBRequest.prototype, listeners);\n\nObject.defineProperty(IDBRequest.prototype, 'constructor', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: IDBRequest\n});\nIDBRequest.__super.prototype = IDBRequest.prototype;\n\nObject.defineProperty(IDBRequest, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nconst openListeners = ['onblocked', 'onupgradeneeded'];\n\n/**\n * @typedef {IDBRequestFull & IDBOpenDBRequest} IDBOpenDBRequestFull\n */\n\n/**\n * The IDBOpenDBRequest called when a database is opened.\n * @class\n * @throws {TypeError}\n */\nfunction IDBOpenDBRequest () {\n throw new TypeError('Illegal constructor');\n}\n\n// @ts-expect-error It's ok\nIDBOpenDBRequest.prototype = Object.create(IDBRequest.prototype);\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nObject.defineProperty(IDBOpenDBRequest.prototype, 'constructor', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: IDBOpenDBRequest\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nconst IDBOpenDBRequestAlias = IDBOpenDBRequest;\n/**\n * @returns {IDBRequestFull & IDBOpenDBRequest}\n */\nIDBOpenDBRequest.__createInstance = function () {\n /**\n * @class\n * @this {IDBOpenDBRequestFull}\n */\n function IDBOpenDBRequest () {\n IDBRequest.__super.call(this);\n\n // @ts-ignore It's ok\n this[Symbol.toStringTag] = 'IDBOpenDBRequest';\n // @ts-ignore It's ok\n this.__setOptions({\n legacyOutputDidListenersThrowFlag: true, // Event hook for IndexedB\n extraProperties: ['oldVersion', 'newVersion', 'debug']\n }); // Ensure EventTarget preserves our properties\n util.defineListenerProperties(this, openListeners);\n }\n IDBOpenDBRequest.prototype = IDBOpenDBRequestAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBOpenDBRequest();\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.defineOuterInterface(IDBOpenDBRequest.prototype, openListeners);\n\nIDBOpenDBRequest.prototype[Symbol.toStringTag] = 'IDBOpenDBRequestPrototype';\n\nObject.defineProperty(IDBOpenDBRequest, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nexport {IDBRequest, IDBOpenDBRequest};\n","/* eslint-disable promise/prefer-await-to-callbacks -- Needed for API */\n/* eslint-disable promise/catch-or-return, n/callback-return,\n promise/always-return -- Not needed */\n// Since [immediate](https://github.com/calvinmetcalf/immediate) is\n// not doing the trick for our WebSQL transactions (at least in Node),\n// we are forced to make the promises run fully synchronously.\n\n/* eslint-disable jsdoc/reject-any-type -- Truly arbitrary */\n/**\n * @typedef {any} ArbitraryValue\n */\n/* eslint-enable jsdoc/reject-any-type -- Truly arbitrary */\n\n/**\n * @callback Resolve\n * @param {ArbitraryValue} val\n * @returns {void}\n */\n/**\n * @callback Reject\n * @param {ArbitraryValue} reason\n * @returns {void}\n */\n/**\n * @callback Settle\n * @returns {void}\n */\n\n/**\n * @callback ResolveReject\n * @param {Resolve} resolve\n * @param {Reject} reject\n * @returns {void}\n */\n\n/**\n * @callback OnFulfilled\n * @param {ArbitraryValue} resolve\n * @returns {void}\n */\n\n/**\n * @typedef {[(Settle|Resolve)[], (Settle|Reject)[]]} Callbacks\n */\n\n/**\n *\n * @param {PromiseLike<ArbitraryValue>} p\n * @returns {boolean}\n */\nfunction isPromise (p) {\n return p && typeof p.then === 'function';\n}\n/**\n *\n * @param {PromiseLike<ArbitraryValue>} prom\n * @param {(err: Error) => void} reject\n * @returns {void}\n */\nfunction addReject (prom, reject) {\n // Use this style for sake of non-Promise thenables (e.g., jQuery Deferred)\n prom.then(null, reject);\n}\n\n// States\nconst PENDING = 2,\n FULFILLED = 0, // We later abuse these as array indices\n REJECTED = 1;\n\n/**\n *\n */\nclass SyncPromise {\n /**\n * @param {unknown[]|[]} promises\n * @returns {SyncPromise}\n */\n static all (promises) {\n return new SyncPromise(\n /** @type {ResolveReject} */\n (resolve, reject) => {\n let l = promises.length;\n /** @type {ArbitraryValue[]} */\n const newPromises = [];\n if (!l) {\n resolve(newPromises);\n return;\n }\n promises.forEach((p, i) => {\n if (isPromise(/** @type {PromiseLike<ArbitraryValue>} */ (p))) {\n addReject(/** @type {PromiseLike<ArbitraryValue>} */ (p).then(\n /** @type {OnFulfilled} */\n (res) => {\n newPromises[i] = res;\n --l;\n if (!l) {\n resolve(newPromises);\n }\n }\n ), reject);\n } else {\n newPromises[i] = p;\n --l;\n if (!l) {\n resolve(promises);\n }\n }\n });\n }\n );\n }\n\n /**\n * @param {unknown[]|[]} promises\n * @returns {SyncPromise}\n */\n static race (promises) {\n let resolved = false;\n return new SyncPromise(\n /** @type {ResolveReject} */\n (resolve, reject) => {\n // eslint-disable-next-line @stylistic/max-len -- Long\n // eslint-disable-next-line unicorn/no-unused-array-method-return -- Shortcuts\n promises.some((p) => {\n if (isPromise(/** @type {PromiseLike<ArbitraryValue>} */ (p))) {\n addReject(/** @type {PromiseLike<ArbitraryValue>} */ (p).then(\n /** @type {OnFulfilled} */\n (res) => {\n if (resolved) {\n return;\n }\n resolve(res);\n resolved = true;\n }\n ), reject);\n return false;\n }\n resolve(p);\n resolved = true;\n return true;\n });\n }\n );\n }\n\n /**\n * @param {ArbitraryValue} val\n * @returns {SyncPromise}\n */\n static resolve (val) {\n return new SyncPromise(\n /** @type {ResolveReject} */\n (resolve) => {\n resolve(val);\n }\n );\n }\n\n /**\n * @param {ArbitraryValue} val\n * @returns {SyncPromise}\n */\n static reject (val) {\n return new SyncPromise(\n /** @type {ResolveReject} */\n (resolve, reject) => {\n reject(val);\n }\n );\n }\n\n // Value, this will be set to either a resolved value or rejected reason\n v = 0;\n\n /**\n * @param {(\n * resolve: (value: ArbitraryValue | PromiseLike<ArbitraryValue>) => void,\n * reject: (reason?: ArbitraryValue) => void\n * ) => void} fn\n */\n constructor (fn) {\n // State of the promise\n this.s = PENDING;\n // Callbacks c[0] is fulfillment and c[1] contains rejection callbacks\n /** @type {Callbacks|null} */\n this.c = [[], []];\n /**\n *\n * @param {ArbitraryValue} val\n * @param {0|1} state\n * @returns {void}\n */\n const transist = (val, state) => {\n this.v = val;\n this.s = state;\n\n // console.log('state', state);\n /** @type {Callbacks} */ (\n this.c\n )[state].forEach((func) => {\n func(val);\n });\n // Release memory, but if no handlers have been added, as we\n // assume that we will resolve/reject (truly) synchronously\n // and thus we avoid flagging checks about whether we've\n // already resolved/rejected.\n if (/** @type {Callbacks} */(this.c)[state].length) {\n this.c = null;\n }\n };\n\n /** @type {Resolve} */\n const resolve = (val) => {\n if (!this.c) {\n // Already resolved (or will be resolved), do nothing.\n } else if (isPromise(val)) {\n addReject(val.then(resolve), reject);\n } else {\n transist(val, FULFILLED);\n }\n };\n\n /** @type {Reject} */\n const reject = (reason) => {\n if (!this.c) {\n // Already resolved (or will be resolved), do nothing.\n } else if (isPromise(reason)) {\n addReject(reason.then(reject), reject);\n } else {\n transist(reason, REJECTED);\n }\n };\n\n try {\n fn(resolve, reject);\n } catch (err) {\n reject(err);\n }\n }\n\n /* eslint-disable unicorn/no-thenable -- Promise API */\n /**\n * @param {((value: ArbitraryValue) => ArbitraryValue)|null|undefined} [cb]\n * @param {(reason: ArbitraryValue) => PromiseLike<never>} [errBack]\n * @returns {SyncPromise}\n */\n then (cb, errBack) {\n /* eslint-enable unicorn/no-thenable -- Promise API */\n return new SyncPromise(\n /** @type {ResolveReject} */\n (resolve, reject) => {\n const rej = typeof errBack === 'function' ? errBack : reject;\n\n /** @type {Settle} */\n const settle = () => {\n try {\n resolve(cb ? cb(this.v) : this.v);\n } catch (e) {\n rej(e);\n }\n };\n if (this.s === FULFILLED) {\n settle();\n } else if (this.s === REJECTED) {\n rej(this.v);\n } else {\n /** @type {Callbacks} */ (this.c)[FULFILLED].push(settle);\n /** @type {Callbacks} */ (this.c)[REJECTED].push(rej);\n }\n }\n );\n }\n\n /**\n * @param {(reason: ArbitraryValue) => PromiseLike<never>|null|undefined} cb\n * @returns {SyncPromise}\n */\n catch (cb) {\n return new SyncPromise(\n /** @type {ResolveReject} */\n (resolve, reject) => {\n /**\n * @returns {void}\n */\n const settle = () => {\n try {\n resolve(cb(this.v));\n } catch (e) {\n reject(e);\n }\n };\n\n if (this.s === REJECTED) {\n settle();\n } else if (this.s === FULFILLED) {\n resolve(this.v);\n } else {\n /** @type {Callbacks} */ (this.c)[REJECTED].push(settle);\n /** @type {Callbacks} */ (this.c)[FULFILLED].push(resolve);\n }\n }\n );\n }\n}\n\nexport default SyncPromise;\n","import CFG from './CFG.js';\nimport {encode as keyEncode, decode as keyDecode} from './Key.js';\n\n/**\n * Compares two keys.\n * @param {import('./Key.js').Key|null|undefined} first\n * @param {import('./Key.js').Key|null|undefined} second\n * @returns {0|1|-1}\n */\nfunction cmp (first, second) {\n const encodedKey1 = /** @type {string} */ (keyEncode(first));\n const encodedKey2 = /** @type {string} */ (keyEncode(second));\n const result = encodedKey1 > encodedKey2\n ? 1\n : encodedKey1 === encodedKey2 ? 0 : -1;\n\n if (CFG.DEBUG) {\n // verify that the keys encoded correctly\n let decodedKey1 = keyDecode(encodedKey1);\n let decodedKey2 = keyDecode(encodedKey2);\n if (typeof first === 'object') {\n first = JSON.stringify(first);\n decodedKey1 = JSON.stringify(decodedKey1);\n }\n if (typeof second === 'object') {\n second = JSON.stringify(second);\n decodedKey2 = JSON.stringify(decodedKey2);\n }\n\n // Encoding/decoding mismatches are usually due to a loss of\n // floating-point precision\n if (decodedKey1 !== first) {\n console.warn(\n first + ' was incorrectly encoded as ' + decodedKey1\n );\n }\n if (decodedKey2 !== second) {\n console.warn(\n second + ' was incorrectly encoded as ' + decodedKey2\n );\n }\n }\n\n return result;\n}\n\nexport default cmp;\n","/**\n * @param {unknown[]} arr\n * @param {number} index\n * @param {unknown} val\n * @returns {void}\n */\nconst setArrayValue = (arr, index, val) => {\n if (Reflect.has(Array.prototype, index)) {\n Object.defineProperty(arr, index, {value: val, enumerable: true, writable: true, configurable: true});\n } else {\n arr[index] = val;\n }\n};\n/**\n * @param {unknown[]} arr\n * @param {unknown} val\n * @returns {void}\n */\nconst safePush = (arr, val) => setArrayValue(arr, arr.length, val);\nimport {createDOMException} from './DOMException.js';\nimport * as util from './util.js';\nimport cmp from './cmp.js';\nimport CFG from './CFG.js';\n\n/**\n * @typedef {NodeJS.TypedArray|DataView} ArrayBufferView\n */\n\n/**\n * @typedef {ArrayBufferView|ArrayBuffer} BufferSource\n */\n\n/**\n * @typedef {\"number\"|\"date\"|\"string\"|\"binary\"|\"array\"} KeyType\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLTransaction.js').default} WebSQLTransaction\n */\n\n/**\n * @typedef {unknown} Value\n */\n\n/**\n * @typedef {IDBValidKey} Key\n */\n\n/**\n * @typedef {KeyPath[]} KeyPathArray\n */\n/**\n * @typedef {string|KeyPathArray} KeyPath\n */\n\n/**\n * @typedef {object} KeyValueObject\n * @property {KeyType|\"NaN\"|\"null\"|\"undefined\"|\"boolean\"|\"object\"|\"symbol\"|\n * \"function\"|\"bigint\"} type If not `KeyType`, indicates invalid value\n * @property {Value} [value]\n * @property {boolean} [invalid]\n * @property {string} [message]\n * @todo Specify acceptable `value` more precisely\n */\n\n/**\n * @typedef {number|string|Date|ArrayBuffer} ValueTypePrimitive\n */\n/**\n * @typedef {ValueType[]} ValueTypeArray\n */\n/**\n * @typedef {ValueTypePrimitive|ValueTypeArray} ValueType\n */\n\n/**\n * Encodes the keys based on their types. This is required to maintain collations\n * We leave space for future keys.\n * @type {{[key: string]: Integer|string}}\n */\nconst keyTypeToEncodedChar = {\n invalid: 100,\n number: 200,\n date: 300,\n string: 400,\n binary: 500,\n array: 600\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nconst keyTypes = /** @type {(KeyType|\"invalid\")[]} */ (Object.keys(keyTypeToEncodedChar));\nkeyTypes.forEach((k) => {\n keyTypeToEncodedChar[k] = String.fromCodePoint(\n /** @type {number} */ (keyTypeToEncodedChar[k])\n );\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nconst encodedCharToKeyType = keyTypes.reduce((o, k) => {\n o[keyTypeToEncodedChar[k]] = k;\n return o;\n}, /** @type {{[key: string]: KeyType|\"invalid\"}} */ ({}));\n\n/**\n * The sign values for numbers, ordered from least to greatest.\n * - \"negativeInfinity\": Sorts below all other values.\n * - \"bigNegative\": Negative values less than or equal to negative one.\n * - \"smallNegative\": Negative values between negative one and zero, noninclusive.\n * - \"smallPositive\": Positive values between zero and one, including zero but not one.\n * - \"largePositive\": Positive values greater than or equal to one.\n * - \"positiveInfinity\": Sorts above all other values.\n */\nconst signValues = ['negativeInfinity', 'bigNegative', 'smallNegative', 'smallPositive', 'bigPositive', 'positiveInfinity'];\n\n/**\n * @type {{\n * [key: string]: {\n * encode(param: unknown, inArray?: boolean): string,\n * decode(param: string, inArray?: boolean): ValueType|undefined\n * }\n * }}\n */\nconst types = {\n invalid: {\n /**\n * @returns {string}\n */\n encode () {\n return keyTypeToEncodedChar.invalid + '-';\n },\n /**\n * @returns {undefined}\n */\n decode () {\n return undefined;\n }\n },\n\n // Numbers are represented in a lexically sortable base-32 sign-exponent-mantissa\n // notation.\n //\n // sign: takes a value between zero and five, inclusive. Represents infinite cases\n // and the signs of both the exponent and the fractional part of the number.\n // exponent: padded to two base-32 digits, represented by the 32's compliment in the\n // \"smallPositive\" and \"bigNegative\" cases to ensure proper lexical sorting.\n // mantissa: also called the fractional part. Normed 11-digit base-32 representation.\n // Represented by the 32's compliment in the \"smallNegative\" and \"bigNegative\"\n // cases to ensure proper lexical sorting.\n number: {\n // The encode step checks for six numeric cases and generates 14-digit encoded\n // sign-exponent-mantissa strings.\n /**\n * @param {number} key\n * @returns {string}\n */\n encode (key) {\n let key32 = key === Number.MIN_VALUE\n // Mocha test `IDBFactory/cmp-spec.js` exposed problem for some\n // Node (and Chrome) versions with `Number.MIN_VALUE` being treated\n // as 0\n // https://stackoverflow.com/questions/43305403/number-min-value-and-tostring\n ? '0.' + '0'.repeat(214) + '2'\n : Math.abs(key).toString(32);\n // Get the index of the decimal.\n const decimalIndex = key32.indexOf('.');\n // Remove the decimal.\n key32 = (decimalIndex !== -1) ? key32.replace('.', '') : key32;\n // Get the index of the first significant digit.\n const significantDigitIndex = key32.search(/[^0]/u);\n // Truncate leading zeros.\n key32 = key32.slice(significantDigitIndex);\n let sign, exponent, mantissa;\n\n // Finite cases:\n if (Number.isFinite(\n Number(key)\n )) {\n // Negative cases:\n if (key < 0) {\n // Negative exponent case:\n if (key > -1) {\n sign = signValues.indexOf('smallNegative');\n exponent = padBase32Exponent(significantDigitIndex);\n // Non-negative exponent case:\n } else {\n sign = signValues.indexOf('bigNegative');\n exponent = flipBase32(padBase32Exponent(\n (decimalIndex !== -1) ? decimalIndex : key32.length\n ));\n }\n mantissa = flipBase32(padBase32Mantissa(key32));\n // Non-negative cases:\n // Negative exponent case:\n } else if (key < 1) {\n sign = signValues.indexOf('smallPositive');\n exponent = flipBase32(padBase32Exponent(significantDigitIndex));\n mantissa = padBase32Mantissa(key32);\n // Non-negative exponent case:\n } else {\n sign = signValues.indexOf('bigPositive');\n exponent = padBase32Exponent(\n (decimalIndex !== -1) ? decimalIndex : key32.length\n );\n mantissa = padBase32Mantissa(key32);\n }\n // Infinite cases:\n } else {\n exponent = zeros(2);\n mantissa = zeros(11);\n sign = signValues.indexOf(\n key > 0 ? 'positiveInfinity' : 'negativeInfinity'\n );\n }\n\n return keyTypeToEncodedChar.number + '-' + sign + exponent + mantissa;\n },\n // The decode step must interpret the sign, reflip values encoded as the 32's complements,\n // apply signs to the exponent and mantissa, do the base-32 power operation, and return\n // the original JavaScript number values.\n /**\n * @param {string} key\n * @returns {number}\n */\n decode (key) {\n const sign = Number(key.slice(2, 3));\n let exponent = key.slice(3, 5);\n let mantissa = key.slice(5, 16);\n\n switch (signValues[sign]) {\n case 'negativeInfinity':\n return -Infinity;\n case 'positiveInfinity':\n return Infinity;\n case 'bigPositive':\n return pow32(mantissa, exponent);\n case 'smallPositive':\n exponent = negate(flipBase32(exponent));\n return pow32(mantissa, exponent);\n case 'smallNegative':\n exponent = negate(exponent);\n mantissa = flipBase32(mantissa);\n return -pow32(mantissa, exponent);\n case 'bigNegative':\n exponent = flipBase32(exponent);\n mantissa = flipBase32(mantissa);\n return -pow32(mantissa, exponent);\n default:\n throw new Error('Invalid number.');\n }\n }\n },\n\n // Strings are encoded as JSON strings (with quotes and unicode characters escaped).\n //\n // If the strings are in an array, then some extra encoding is done to make sorting work correctly:\n // Since we can't force all strings to be the same length, we need to ensure that characters line-up properly\n // for sorting, while also accounting for the extra characters that are added when the array itself is encoded as JSON.\n // To do this, each character of the string is prepended with a dash (\"-\"), and a space is added to the end of the string.\n // This effectively doubles the size of every string, but it ensures that when two arrays of strings are compared,\n // the indexes of each string's characters line up with each other.\n string: {\n /**\n * @param {string} key\n * @param {boolean} [inArray]\n * @returns {string}\n */\n encode (key, inArray) {\n if (inArray) {\n // prepend each character with a dash, and append a space to the end\n key = key.replaceAll(/(.)/gu, '-$1') + ' ';\n }\n return keyTypeToEncodedChar.string + '-' + key;\n },\n /**\n * @param {string} key\n * @param {boolean} [inArray]\n * @returns {string}\n */\n decode (key, inArray) {\n key = key.slice(2);\n if (inArray) {\n // remove the space at the end, and the dash before each character\n key = key.slice(0, -1).replaceAll(/-(.)/gu, '$1');\n }\n return key;\n }\n },\n\n // Arrays are encoded as JSON strings.\n // An extra, value is added to each array during encoding to make\n // empty arrays sort correctly.\n array: {\n /**\n * @param {ValueTypeArray} key\n * @returns {string}\n */\n encode (key) {\n /** @type {(string|null)[]} */\n const encoded = [];\n for (const [i, item] of key.entries()) {\n const encodedItem = encode(item, true); // encode the array item\n setArrayValue(encoded, i, encodedItem);\n }\n safePush(encoded, keyTypeToEncodedChar.invalid + '-'); // append an extra item, so empty arrays sort correctly\n let encodedKey = JSON.stringify(encoded);\n if (CFG.escapeNULForSQLiteStatements === false) {\n encodedKey = encodedKey.replaceAll(String.raw`\\u0000`, '\\0');\n }\n return keyTypeToEncodedChar.array + '-' + encodedKey;\n },\n /**\n * @param {string} key\n * @returns {ValueTypeArray}\n */\n decode (key) {\n let decodedKey = key.slice(2);\n if (CFG.escapeNULForSQLiteStatements === false) {\n decodedKey = decodedKey.replaceAll('\\0', String.raw`\\u0000`);\n }\n const decoded = JSON.parse(decodedKey);\n decoded.pop(); // remove the extra item\n for (let i = 0; i < decoded.length; i++) {\n const item = decoded[i];\n const decodedItem = decode(item, true); // decode the item\n setArrayValue(decoded, i, decodedItem);\n }\n return decoded;\n }\n },\n\n // Dates are encoded as ISO 8601 strings, in UTC time zone.\n date: {\n /**\n * @param {Date} key\n * @returns {string}\n */\n encode (key) {\n return keyTypeToEncodedChar.date + '-' + key.toJSON();\n },\n /**\n * @param {string} key\n * @returns {Date}\n */\n decode (key) {\n return new Date(key.slice(2));\n }\n },\n binary: {\n // `ArrayBuffer`/Views on buffers (`TypedArray` or `DataView`)\n /**\n * @param {BufferSource} key\n * @returns {string}\n */\n encode (key) {\n return keyTypeToEncodedChar.binary + '-' + (key.byteLength\n ? [...getCopyBytesHeldByBufferSource(key)].map(\n (b) => String(b).padStart(3, '0')\n ) // e.g., '255,005,254,000,001,033'\n : '');\n },\n /**\n * @param {string} key\n * @returns {ArrayBuffer}\n */\n decode (key) {\n // Set the entries in buffer's [[ArrayBufferData]] to those in `value`\n const k = key.slice(2);\n const arr = k.length ? k.split(',').map(Number) : [];\n const buffer = new ArrayBuffer(arr.length);\n const uint8 = new Uint8Array(buffer);\n uint8.set(arr);\n return buffer;\n }\n }\n};\n\n/**\n * Return a padded base-32 exponent value.\n * @param {number} n\n * @returns {string}\n */\nfunction padBase32Exponent (n) {\n const exp = n.toString(32);\n return (exp.length === 1) ? '0' + exp : exp;\n}\n\n/**\n * Return a padded base-32 mantissa.\n * @param {string} s\n * @returns {string}\n */\nfunction padBase32Mantissa (s) {\n return (s + zeros(11)).slice(0, 11);\n}\n\n/**\n * Flips each digit of a base-32 encoded string.\n * @param {string} encoded\n * @returns {string}\n */\nfunction flipBase32 (encoded) {\n let flipped = '';\n for (const ch of encoded) {\n flipped += (31 - Number.parseInt(ch, 32)).toString(32);\n }\n return flipped;\n}\n\n/**\n * Base-32 power function.\n * RESEARCH: This function does not precisely decode floats because it performs\n * floating point arithmetic to recover values. But can the original values be\n * recovered exactly?\n * Someone may have already figured out a good way to store JavaScript floats as\n * binary strings and convert back. Barring a better method, however, one route\n * may be to generate decimal strings that `parseFloat` decodes predictably.\n * @param {string} mantissa\n * @param {string} exponent\n * @returns {number}\n */\nfunction pow32 (mantissa, exponent) {\n const exp = Number.parseInt(exponent, 32);\n if (exp < 0) {\n return roundToPrecision(\n Number.parseInt(mantissa, 32) * (32 ** (exp - 10))\n );\n }\n if (exp < 11) {\n const whole = mantissa.slice(0, exp);\n const wholeNum = Number.parseInt(whole, 32);\n const fraction = mantissa.slice(exp);\n const fractionNum = Number.parseInt(fraction, 32) * (32 ** (exp - 11));\n return roundToPrecision(wholeNum + fractionNum);\n }\n const expansion = mantissa + zeros(exp - 11);\n return Number.parseInt(expansion, 32);\n}\n\n/**\n * @typedef {number} Float\n */\n\n/**\n * @param {Float} num\n * @param {Float} [precision]\n * @returns {Float}\n */\nfunction roundToPrecision (num, precision = 16) {\n return Number(num.toPrecision(precision));\n}\n\n/**\n * Returns a string of n zeros.\n * @param {number} n\n * @returns {string}\n */\nfunction zeros (n) {\n return '0'.repeat(n);\n}\n\n/**\n * Negates numeric strings.\n * @param {string} s\n * @returns {string}\n */\nfunction negate (s) {\n return '-' + s;\n}\n\n/**\n * @param {Value} key\n * @returns {KeyType|\"invalid\"}\n */\nfunction getKeyType (key) {\n if (Array.isArray(key)) { return 'array'; }\n if (util.isDate(key)) { return 'date'; }\n if (util.isBinary(key)) { return 'binary'; }\n const keyType = typeof key;\n return ['string', 'number'].includes(keyType)\n ? /** @type {\"string\"|\"number\"} */ (keyType)\n : 'invalid';\n}\n\n/**\n * Keys must be strings, numbers (besides `NaN`), Dates (if value is not\n * `NaN`), binary objects or Arrays.\n * @param {Value} input The key input\n * @param {Value[]|null|undefined} [seen] An array of already seen keys\n * @returns {KeyValueObject}\n */\nfunction convertValueToKey (input, seen) {\n return convertValueToKeyValueDecoded(input, seen, false, true);\n}\n\n/**\n * Currently not in use.\n * @param {Value} input\n * @returns {KeyValueObject}\n */\nfunction convertValueToMultiEntryKey (input) {\n return convertValueToKeyValueDecoded(input, null, true, true);\n}\n\n/**\n *\n * @param {BufferSource} O\n * @throws {TypeError}\n * @see https://heycam.github.io/webidl/#ref-for-dfn-get-buffer-source-copy-2\n * @returns {Uint8Array}\n */\nfunction getCopyBytesHeldByBufferSource (O) {\n let offset = 0;\n let length;\n if (ArrayBuffer.isView(O)) { // Has [[ViewedArrayBuffer]] internal slot\n const arrayBuffer = O.buffer;\n if (arrayBuffer === undefined) {\n throw new TypeError(\n 'Could not copy the bytes held by a buffer source as the buffer was undefined.'\n );\n }\n offset = O.byteOffset; // [[ByteOffset]] (will also throw as desired if detached)\n length = O.byteLength; // [[ByteLength]] (will also throw as desired if detached)\n } else {\n length = O.byteLength; // [[ArrayBufferByteLength]] on ArrayBuffer (will also throw as desired if detached)\n }\n // const octets = new Uint8Array(input);\n // const octets = types.binary.decode(types.binary.encode(input));\n return new Uint8Array(\n // Should allow DataView\n /** @type {ArrayBuffer} */\n (('buffer' in O && O.buffer) || O),\n offset,\n length\n );\n}\n\n/**\n * Shortcut utility to avoid returning full keys from `convertValueToKey`\n * and subsequent need to process in calling code unless `fullKeys` is\n * set; may throw.\n * @param {Value} input\n * @param {Value[]|null} [seen]\n * @param {boolean} [multiEntry]\n * @param {boolean} [fullKeys]\n * @throws {TypeError} See `getCopyBytesHeldByBufferSource`\n * @todo Document other allowable `input`\n * @returns {KeyValueObject}\n */\nfunction convertValueToKeyValueDecoded (input, seen, multiEntry, fullKeys) {\n seen ||= [];\n if (seen.includes(input)) {\n return {\n type: 'array',\n invalid: true,\n message: 'An array key cannot be circular'\n };\n }\n const type = getKeyType(input);\n const ret = {type, value: input};\n switch (type) {\n case 'number': {\n if (Number.isNaN(input)) {\n // List as 'NaN' type for convenience of consumers in reporting errors\n return {type: 'NaN', invalid: true};\n }\n\n // https://github.com/w3c/IndexedDB/issues/375\n // https://github.com/w3c/IndexedDB/pull/386\n if (Object.is(input, -0)) {\n return {type, value: 0};\n }\n return /** @type {{type: KeyType; value: Value}} */ (ret);\n } case 'string': {\n return /** @type {{type: KeyType; value: Value}} */ (ret);\n } case 'binary': {\n // Get a copy of the bytes held by the buffer source\n // https://heycam.github.io/webidl/#ref-for-dfn-get-buffer-source-copy-2\n // A detached buffer/view can't be read -- the engine itself throws\n // (e.g. \"Cannot perform Construct on a detached ArrayBuffer\")\n // rather than us being able to detect this up front, so treat any\n // such failure the same as any other invalid key rather than\n // letting that native error escape uncaught.\n let octets;\n try {\n octets = getCopyBytesHeldByBufferSource(\n /** @type {BufferSource} */ (input)\n );\n } catch {\n return {type, invalid: true, message: 'Could not read the buffer source (it may be detached)'};\n }\n return {type: 'binary', value: octets};\n } case 'array': { // May throw (from binary)\n const arr = /** @type {unknown[]} */ (input);\n const len = arr.length;\n safePush(seen, input);\n\n /** @type {(KeyValueObject|Value)[]} */\n const keys = [];\n for (let i = 0; i < len; i++) { // We cannot iterate here with array extras as we must ensure sparse arrays are invalidated\n if (!multiEntry && !Object.hasOwn(arr, i)) {\n return {type, invalid: true, message: 'Does not have own index property'};\n }\n try {\n const entry = arr[i];\n const key = convertValueToKeyValueDecoded(entry, seen, false, fullKeys); // Though steps do not list rethrowing, the next is returnifabrupt when not multiEntry\n if (key.invalid) {\n if (multiEntry) {\n continue;\n }\n return {type, invalid: true, message: 'Bad array entry value-to-key conversion'};\n }\n if (!multiEntry ||\n (!fullKeys && keys.every((k) => cmp(\n /** @type {Key} */ (k), /** @type {Key} */ (key.value)\n ) !== 0)) ||\n (fullKeys && keys.every((k) => cmp(\n /** @type {Key} */ (k), /** @type {Key} */ (/** @type {unknown} */ (key))\n ) !== 0))\n ) {\n safePush(keys, fullKeys ? key : key.value);\n }\n } catch (err) {\n if (!multiEntry) {\n throw err;\n }\n }\n }\n return {type, value: keys};\n } case 'date': {\n const date = /** @type {Date} */ (input);\n if (!Number.isNaN(date.getTime())) {\n return fullKeys\n ? {type, value: date.getTime()}\n : {type, value: new Date(date)};\n }\n return {type, invalid: true, message: 'Not a valid date'};\n // Falls through\n } case 'invalid': default: {\n // Other `typeof` types which are not valid keys:\n // 'undefined', 'boolean', 'object' (including `null`), 'symbol', 'function'\n const type = input === null ? 'null' : typeof input; // Convert `null` for convenience of consumers in reporting errors\n return {type, invalid: true, message: 'Not a valid key; type ' + type};\n }\n }\n}\n\n/**\n *\n * @param {Value} key\n * @param {boolean} [fullKeys]\n * @returns {KeyValueObject}\n * @todo Document other allowable `key`?\n */\nfunction convertValueToMultiEntryKeyDecoded (key, fullKeys) {\n return convertValueToKeyValueDecoded(key, null, true, fullKeys);\n}\n\n/**\n * An internal utility.\n * @param {Value} input\n * @param {Value[]|null|undefined} [seen]\n * @throws {DOMException} `DataError`\n * @returns {KeyValueObject}\n */\nfunction convertValueToKeyRethrowingAndIfInvalid (input, seen) {\n const key = convertValueToKey(input, seen);\n if (key.invalid) {\n throw createDOMException('DataError', key.message || 'Not a valid key; type: ' + key.type);\n }\n return key;\n}\n\n/**\n *\n * @param {Value} value\n * @param {KeyPath} keyPath\n * @param {boolean} multiEntry\n * @returns {KeyValueObject|KeyPathEvaluateValue}\n * @todo Document other possible return?\n */\nfunction extractKeyFromValueUsingKeyPath (value, keyPath, multiEntry) {\n return extractKeyValueDecodedFromValueUsingKeyPath(value, keyPath, multiEntry, true);\n}\n/**\n * Not currently in use.\n * @param {Value} value\n * @param {KeyPath} keyPath\n * @param {boolean} multiEntry\n * @returns {KeyPathEvaluateValue}\n */\nfunction evaluateKeyPathOnValue (value, keyPath, multiEntry) {\n return evaluateKeyPathOnValueToDecodedValue(value, keyPath, multiEntry, true);\n}\n\n/**\n * May throw, return `{failure: true}` (e.g., non-object on keyPath resolution)\n * or `{invalid: true}` (e.g., `NaN`).\n * @param {Value} value\n * @param {KeyPath} keyPath\n * @param {boolean} [multiEntry]\n * @param {boolean} [fullKeys]\n * @returns {KeyValueObject|KeyPathEvaluateValue}\n * @todo Document other possible return?\n */\nfunction extractKeyValueDecodedFromValueUsingKeyPath (value, keyPath, multiEntry, fullKeys) {\n const r = evaluateKeyPathOnValueToDecodedValue(value, keyPath, multiEntry, fullKeys);\n if (r.failure) {\n return r;\n }\n if (!multiEntry) {\n return convertValueToKeyValueDecoded(r.value, null, false, fullKeys);\n }\n return convertValueToMultiEntryKeyDecoded(r.value, fullKeys);\n}\n\n/**\n * Unused?\n * @typedef {object} KeyPathEvaluateFailure\n * @property {boolean} failure\n */\n\n/**\n * @typedef {KeyPathEvaluateValueValue[]} KeyPathEvaluateValueValueArray\n */\n\n/**\n * @typedef {undefined|number|string|Date|object|KeyPathEvaluateValueValueArray} KeyPathEvaluateValueValue\n */\n\n/**\n * @typedef {object} KeyPathEvaluateValue\n * @property {KeyPathEvaluateValueValue} [value]\n * @property {boolean} [failure]\n */\n\n/**\n * Returns the value of an inline key based on a key path (wrapped in an\n * object with key `value`) or `{failure: true}`\n * @param {Value} value\n * @param {KeyPath} keyPath\n * @param {boolean} [multiEntry]\n * @param {boolean} [fullKeys]\n * @returns {KeyPathEvaluateValue}\n */\nfunction evaluateKeyPathOnValueToDecodedValue (value, keyPath, multiEntry, fullKeys) {\n if (Array.isArray(keyPath)) {\n /** @type {KeyPathEvaluateValueValueArray} */\n const result = [];\n return keyPath.some((item) => {\n const key = evaluateKeyPathOnValueToDecodedValue(value, item, multiEntry, fullKeys);\n if (key.failure) {\n return true;\n }\n safePush(result, key.value);\n return false;\n })\n ? {failure: true}\n : {value: result};\n }\n if (keyPath === '') {\n return {value: /** @type {KeyPathEvaluateValueValue} */ (value)};\n }\n const identifiers = keyPath.split('.');\n return identifiers.some((idntfr) => {\n if (idntfr === 'length' && (\n typeof value === 'string' || Array.isArray(value)\n )) {\n value = value.length;\n } else if (util.isBlob(value)) {\n switch (idntfr) {\n case 'size': case 'type':\n value = /** @type {Blob} */ (value)[idntfr];\n break;\n default:\n break;\n }\n } else if (util.isFile(value)) {\n switch (idntfr) {\n case 'name': case 'lastModified':\n value = /** @type {File} */ (value)[idntfr];\n break;\n case 'lastModifiedDate':\n value = new Date(/** @type {File} */ (value).lastModified);\n break;\n default:\n break;\n }\n } else if (!util.isObj(value) || !Object.hasOwn(value, idntfr)) {\n return true;\n } else {\n value = /** @type {{[key: string]: KeyPathEvaluateValueValue}} */ (\n value\n )[idntfr];\n return value === undefined;\n }\n return false;\n })\n ? {failure: true}\n : {value: /** @type {KeyPathEvaluateValueValue} */ (value)};\n}\n\n/**\n * Sets the inline key value.\n * @param {{[key: string]: Value}} value\n * @param {Key} key\n * @param {string} keyPath\n * @returns {void}\n */\nfunction injectKeyIntoValueUsingKeyPath (value, key, keyPath) {\n const identifiers = keyPath.split('.');\n const last = identifiers.pop();\n identifiers.forEach((identifier) => {\n const hop = Object.hasOwn(value, identifier);\n if (!hop) {\n Object.defineProperty(value, identifier, {value: {}, enumerable: true, writable: true, configurable: true});\n }\n value = /** @type {{[key: string]: Value}} */ (value[identifier]);\n });\n Object.defineProperty(value, /** @type {string} */ (last), {value: key, enumerable: true, writable: true, configurable: true}); // key is already a `keyValue` in our processing so no need to convert\n}\n\n/**\n *\n * @param {Value} value\n * @param {string} keyPath\n * @see https://github.com/w3c/IndexedDB/pull/146\n * @returns {boolean}\n */\nfunction checkKeyCouldBeInjectedIntoValue (value, keyPath) {\n const identifiers = keyPath.split('.');\n identifiers.pop();\n for (const identifier of identifiers) {\n if (!util.isObj(value)) {\n return false;\n }\n const hop = Object.hasOwn(value, identifier);\n if (!hop) {\n return true;\n }\n value = /** @type {{[key: string]: Value}} */ (value)[identifier];\n }\n return util.isObj(value);\n}\n\n/**\n *\n * @param {Key} key\n * @param {import('./IDBKeyRange.js').IDBKeyRangeFull} range\n * @param {boolean} [checkCached]\n * @returns {boolean}\n */\nfunction isKeyInRange (key, range, checkCached) {\n let lowerMatch = range.lower === undefined;\n let upperMatch = range.upper === undefined;\n const encodedKey = encode(key, true);\n const lower = checkCached ? range.__lowerCached : encode(range.lower, true);\n const upper = checkCached ? range.__upperCached : encode(range.upper, true);\n\n if (!lowerMatch && (\n (range.lowerOpen &&\n encodedKey !== null && lower !== null && encodedKey > lower) ||\n (!range.lowerOpen && (\n (!encodedKey && !lower) ||\n (encodedKey !== null && lower !== null && encodedKey >= lower))\n )\n )) {\n lowerMatch = true;\n }\n if (!upperMatch && (\n (range.upperOpen &&\n encodedKey !== null && upper !== null && encodedKey < upper) ||\n (!range.upperOpen && (\n (!encodedKey && !upper) ||\n (encodedKey !== null && upper !== null && encodedKey <= upper))\n )\n )) {\n upperMatch = true;\n }\n\n return lowerMatch && upperMatch;\n}\n\n/**\n * Determines whether an index entry matches a multi-entry key value.\n * @param {string} encodedEntry The entry value (already encoded)\n * @param {string} encodedKey The full index key (already encoded)\n * @returns {boolean}\n */\nfunction isMultiEntryMatch (encodedEntry, encodedKey) {\n const keyType = encodedCharToKeyType[encodedKey.slice(0, 1)];\n\n if (keyType === 'array') {\n return encodedKey.indexOf(encodedEntry) > 1;\n }\n return encodedKey === encodedEntry;\n}\n\n/**\n *\n * @param {Key} keyEntry\n * @param {import('./IDBKeyRange.js').IDBKeyRangeFull|undefined} range\n * @returns {Key[]}\n */\nfunction findMultiEntryMatches (keyEntry, range) {\n /** @type {Key[]} */\n const matches = [];\n\n if (Array.isArray(keyEntry)) {\n for (let key of keyEntry) {\n if (Array.isArray(key)) {\n if (range && range.lower === range.upper) {\n continue;\n }\n if (key.length === 1) {\n key = key[0];\n } else {\n const nested = findMultiEntryMatches(key, range);\n if (nested.length > 0) {\n safePush(matches, key);\n }\n continue;\n }\n }\n\n if (util.isNullish(range) || isKeyInRange(key, range, true)) {\n safePush(matches, key);\n }\n }\n } else if (util.isNullish(range) || isKeyInRange(keyEntry, range, true)) {\n safePush(matches, keyEntry);\n }\n return matches;\n}\n\n/**\n * Not currently in use but keeping for spec parity.\n * @param {KeyValueObject} key\n * @throws {Error} Upon a \"bad key\"\n * @returns {ValueType}\n */\nfunction convertKeyToValue (key) {\n const {type, value} = key;\n switch (type) {\n case 'number': case 'string': {\n return /** @type {number|string} */ (value);\n } case 'array': {\n /** @type {ValueType[]} */\n const array = [];\n const arrValue = /** @type {KeyValueObject[]} */ (value);\n const len = arrValue.length;\n let index = 0;\n while (index < len) {\n const entry = convertKeyToValue(arrValue[index]);\n setArrayValue(array, index, entry);\n index++;\n }\n return array;\n } case 'date': {\n return new Date(/** @type {number} */ (value));\n } case 'binary': {\n const binValue = /** @type {Uint8Array} */ (value);\n const len = binValue.length;\n const buffer = new ArrayBuffer(len);\n // Set the entries in buffer's [[ArrayBufferData]] to those in `value`\n const uint8 = new Uint8Array(buffer, binValue.byteOffset || 0, binValue.byteLength);\n uint8.set(binValue);\n return buffer;\n } default:\n throw new Error('Bad key');\n }\n}\n\n/**\n *\n * @param {Value} key\n * @param {boolean} [inArray]\n * @returns {string|null}\n */\nfunction encode (key, inArray) {\n // Bad keys like `null`, `object`, `boolean`, 'function', 'symbol' should not be passed here due to prior validation\n if (key === undefined) {\n return null;\n }\n // array, date, number, string, binary (should already have detected \"invalid\")\n return types[getKeyType(key)].encode(key, inArray);\n}\n\n/**\n *\n * @param {string|null} key\n * @param {boolean} [inArray]\n * @throws {Error} Invalid number\n * @returns {undefined|ValueType}\n */\nfunction decode (key, inArray) {\n if (typeof key !== 'string') {\n return undefined;\n }\n return types[encodedCharToKeyType[key.slice(0, 1)]].decode(key, inArray);\n}\n\n/**\n *\n * @param {Value} key\n * @param {boolean} [inArray]\n * @returns {undefined|ValueType}\n */\nfunction roundTrip (key, inArray) {\n return decode(encode(key, inArray), inArray);\n}\n\nconst MAX_ALLOWED_CURRENT_NUMBER = 9007199254740992; // 2 ^ 53 (Also equal to `Number.MAX_SAFE_INTEGER + 1`)\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @callback CurrentNumberCallback\n * @param {Integer} cn The current number\n * @returns {void}\n */\n\n/**\n * @callback SQLFailureCallback\n * @param {DOMException|Error} exception\n * @returns {void}\n */\n\n/**\n *\n * @param {WebSQLTransaction} tx\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {CurrentNumberCallback} func\n * @param {SQLFailureCallback} sqlFailCb\n * @returns {void}\n */\nfunction getCurrentNumber (tx, store, func, sqlFailCb) {\n tx.executeSql('SELECT \"currNum\" FROM __sys__ WHERE \"name\" = ?', [\n util.escapeSQLiteStatement(store.__currentName)\n ], function (tx, data) {\n if (data.rows.length !== 1) {\n func(1);\n } else {\n func(/** @type {{currNum: number}} */ (data.rows.item(0)).currNum);\n }\n }, function (tx, error) {\n sqlFailCb(createDOMException(\n 'DataError',\n 'Could not get the auto increment value for key',\n error\n ));\n return false;\n });\n}\n\n/**\n *\n * @param {WebSQLTransaction} tx\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {Integer} num\n * @param {CurrentNumberCallback} successCb\n * @param {SQLFailureCallback} failCb\n * @returns {void}\n */\nfunction assignCurrentNumber (tx, store, num, successCb, failCb) {\n const sql = 'UPDATE __sys__ SET \"currNum\" = ? WHERE \"name\" = ?';\n const sqlValues = [num, util.escapeSQLiteStatement(store.__currentName)];\n if (CFG.DEBUG) { console.log(sql, sqlValues); }\n tx.executeSql(sql, sqlValues, function () {\n successCb(num);\n }, function (tx, err) {\n failCb(createDOMException('UnknownError', 'Could not set the auto increment value for key', err));\n return false;\n });\n}\n\n/**\n * Bump up the auto-inc counter if the key path-resolved value is valid\n * (greater than old value and >=1) OR if a manually passed in key is\n * valid (numeric and >= 1) and >= any primaryKey.\n * @param {WebSQLTransaction} tx\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {Integer} num\n * @param {CurrentNumberCallback} successCb\n * @param {SQLFailureCallback} failCb\n * @returns {void}\n */\nfunction setCurrentNumber (tx, store, num, successCb, failCb) {\n // Since incrementing by one has no effect in JavaScript on this unsafe\n // max (`MAX_ALLOWED_CURRENT_NUMBER + 1 === MAX_ALLOWED_CURRENT_NUMBER`\n // in IEEE 754 double precision), we represent the max as a number\n // incremented by two instead -- computed as a single `+ 2` rather\n // than two chained `+ 1`s, as the latter *also* rounds back to the\n // original value (each addition independently hits the same\n // unrepresentable `+ 1` and rounds down, so the two `+ 1`s don't\n // compose into a `+ 2`).\n // The getting of the current number is never returned to the user and\n // is only used in safe comparisons, so it is safe for us to represent\n // it in this manner\n num += num === MAX_ALLOWED_CURRENT_NUMBER ? 2 : 1;\n return assignCurrentNumber(tx, store, num, successCb, failCb);\n}\n\n/**\n * @callback KeyForStoreCallback\n * @param {\"failure\"|null} arg1\n * @param {Integer} [arg2]\n * @param {Integer} [arg3]\n * @returns {void}\n */\n\n/**\n *\n * @param {WebSQLTransaction} tx\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {KeyForStoreCallback} cb\n * @param {SQLFailureCallback} sqlFailCb\n * @returns {void}\n */\nfunction generateKeyForStore (tx, store, cb, sqlFailCb) {\n getCurrentNumber(tx, store, function (key) {\n if (key > MAX_ALLOWED_CURRENT_NUMBER) { // 2 ^ 53 (See <https://github.com/w3c/IndexedDB/issues/147>)\n cb('failure');\n return;\n }\n // Increment current number by 1 (we cannot leverage SQLite's\n // autoincrement (and decrement when not needed), as decrementing\n // will be overwritten/ignored upon the next insert)\n setCurrentNumber(\n tx, store, key,\n function () {\n cb(null, key, key);\n },\n sqlFailCb\n );\n }, sqlFailCb);\n}\n\n// Fractional or numbers exceeding the max do not get changed in the result\n// per https://github.com/w3c/IndexedDB/issues/147\n// so we do not return a key\n/**\n *\n * @param {WebSQLTransaction} tx\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {Key} key\n * @param {(num?: Integer) => void} successCb\n * @param {SQLFailureCallback} sqlFailCb\n * @returns {void}\n */\nfunction possiblyUpdateKeyGenerator (tx, store, key, successCb, sqlFailCb) {\n // Per https://github.com/w3c/IndexedDB/issues/147 , non-finite numbers\n // (or numbers larger than the max) are now to have the explicit effect of\n // setting the current number (up to the max), so we do not optimize them\n // out here\n if (typeof key !== 'number' || key < 1) { // Optimize with no need to get the current number\n // Auto-increment attempted with a bad key;\n // we are not to change the current number, but the steps don't call for failure\n // Numbers < 1 are optimized out as they will never be greater than the current number which must be at least 1\n successCb();\n } else {\n // If auto-increment and the keyPath item is a valid numeric key, get the old auto-increment to compare if the new is higher\n // to determine which to use and whether to update the current number\n getCurrentNumber(tx, store, function (cn) {\n const value = Math.floor(\n Math.min(key, MAX_ALLOWED_CURRENT_NUMBER)\n );\n const useNewKeyForAutoInc = value >= cn;\n if (useNewKeyForAutoInc) {\n setCurrentNumber(tx, store, value, function () {\n successCb(cn); // Supply old current number in case needs to be reverted\n }, sqlFailCb);\n } else { // Not updated\n successCb();\n }\n }, sqlFailCb);\n }\n}\n\nexport {encode, decode, roundTrip, convertKeyToValue, convertValueToKeyValueDecoded,\n convertValueToMultiEntryKeyDecoded,\n convertValueToKey,\n convertValueToMultiEntryKey, convertValueToKeyRethrowingAndIfInvalid,\n extractKeyFromValueUsingKeyPath, evaluateKeyPathOnValue,\n extractKeyValueDecodedFromValueUsingKeyPath, injectKeyIntoValueUsingKeyPath, checkKeyCouldBeInjectedIntoValue,\n isMultiEntryMatch, isKeyInRange, findMultiEntryMatches,\n assignCurrentNumber,\n generateKeyForStore, possiblyUpdateKeyGenerator};\n","import {createDOMException} from './DOMException.js';\nimport * as Key from './Key.js';\nimport * as util from './util.js';\n\nconst readonlyProperties = /** @type {const} */ (['lower', 'upper', 'lowerOpen', 'upperOpen']);\n\n/**\n * @typedef {globalThis.IDBKeyRange & {\n * __lower: import('./Key.js').Key|undefined,\n * __upper: import('./Key.js').Key|undefined,\n * __lowerCached: string|null|false,\n * __upperCached: string|null|false,\n * __lowerOpen: boolean,\n * __upperOpen: boolean,\n * }} IDBKeyRangeFull\n */\n\n/**\n * The IndexedDB KeyRange object.\n * @see https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#dfn-key-range\n * @throws {TypeError}\n * @class\n */\nfunction IDBKeyRange () {\n throw new TypeError('Illegal constructor');\n}\nconst IDBKeyRangeAlias = IDBKeyRange;\n\n/**\n * @param {import('./Key.js').Value} lower\n * @param {import('./Key.js').Value} upper\n * @param {boolean} lowerOpen\n * @param {boolean} upperOpen\n * @returns {import('./IDBKeyRange.js').IDBKeyRangeFull}\n */\nIDBKeyRange.__createInstance = function (lower, upper, lowerOpen, upperOpen) {\n /**\n * @class\n * @this {IDBKeyRangeFull}\n * @throws {DOMException|Error}\n */\n function IDBKeyRange () {\n // @ts-expect-error Should be ok\n this[Symbol.toStringTag] = 'IDBKeyRange';\n if (lower === undefined && upper === undefined) {\n throw createDOMException('DataError', 'Both arguments to the key range method cannot be undefined');\n }\n let lowerConverted, upperConverted;\n if (lower !== undefined) {\n lowerConverted = Key.roundTrip(lower); // Todo: does this make the \"conversions\" redundant\n Key.convertValueToKeyRethrowingAndIfInvalid(lower);\n }\n if (upper !== undefined) {\n upperConverted = Key.roundTrip(upper); // Todo: does this make the \"conversions\" redundant\n Key.convertValueToKeyRethrowingAndIfInvalid(upper);\n }\n if (lower !== undefined && upper !== undefined && lower !== upper) {\n if (\n /** @type {string} */ (Key.encode(lower)) >\n /** @type {string} */ (Key.encode(upper))\n ) {\n throw createDOMException('DataError', '`lower` must not be greater than `upper` argument in `bound()` call.');\n }\n }\n\n this.__lower = lowerConverted;\n this.__upper = upperConverted;\n this.__lowerOpen = Boolean(lowerOpen);\n this.__upperOpen = Boolean(upperOpen);\n }\n IDBKeyRange.prototype = IDBKeyRangeAlias.prototype;\n\n // @ts-expect-error Properties added by `defineProperty/ies`\n return new IDBKeyRange();\n};\n\n/**\n * @param {import('./Key.js').Key} key\n * @this {IDBKeyRangeFull}\n * @returns {boolean}\n */\nIDBKeyRange.prototype.includes = function (key) {\n // We can't do a regular instanceof check as it will create a loop given our hasInstance implementation\n if (!util.isObj(this) || typeof this.__lowerOpen !== 'boolean') {\n throw new TypeError('Illegal invocation');\n }\n if (!arguments.length) {\n throw new TypeError('IDBKeyRange.includes requires a key argument');\n }\n Key.convertValueToKeyRethrowingAndIfInvalid(key);\n return Key.isKeyInRange(key, this);\n};\n\n/**\n * @param {import('./Key.js').Value} value\n * @returns {import('./IDBKeyRange.js').IDBKeyRangeFull}\n */\nIDBKeyRange.only = function (value) {\n if (!arguments.length) {\n throw new TypeError('IDBKeyRange.only requires a value argument');\n }\n return IDBKeyRange.__createInstance(value, value, false, false);\n};\n\n/**\n * @param {import('./Key.js').Value} value\n * @returns {globalThis.IDBKeyRange}\n */\nIDBKeyRange.lowerBound = function (value /* , open */) {\n if (!arguments.length) {\n throw new TypeError('IDBKeyRange.lowerBound requires a value argument');\n }\n // eslint-disable-next-line prefer-rest-params -- API\n return IDBKeyRange.__createInstance(value, undefined, arguments[1], true);\n};\n\n/**\n * @param {import('./Key.js').Value} value\n * @returns {globalThis.IDBKeyRange}\n */\nIDBKeyRange.upperBound = function (value /* , open */) {\n if (!arguments.length) {\n throw new TypeError('IDBKeyRange.upperBound requires a value argument');\n }\n // eslint-disable-next-line prefer-rest-params -- API\n return IDBKeyRange.__createInstance(undefined, value, true, arguments[1]);\n};\n\n/**\n * @param {import('./Key.js').Value} lower\n * @param {import('./Key.js').Value} upper\n * @returns {globalThis.IDBKeyRange}\n */\nIDBKeyRange.bound = function (lower, upper /* , lowerOpen, upperOpen */) {\n if (arguments.length <= 1) {\n throw new TypeError('IDBKeyRange.bound requires lower and upper arguments');\n }\n // eslint-disable-next-line prefer-rest-params -- API\n return IDBKeyRange.__createInstance(lower, upper, arguments[2], arguments[3]);\n};\nIDBKeyRange.prototype[Symbol.toStringTag] = 'IDBKeyRangePrototype';\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.setOperationNames(IDBKeyRange.prototype);\nutil.setOperationNames(IDBKeyRange);\n\nreadonlyProperties.forEach((prop) => {\n Object.defineProperty(IDBKeyRange.prototype, '__' + prop, {\n enumerable: false,\n configurable: false,\n writable: true\n });\n // Ensure for proper interface testing that \"get <name>\" is the function name\n const o = {\n /**\n * @returns {import('./Key.js').Key|null|boolean}\n */\n get [prop] () {\n // We can't do a regular instanceof check as it will create a loop given our hasInstance implementation\n if (!util.isObj(this) || typeof this.__lowerOpen !== 'boolean') {\n throw new TypeError('Illegal invocation');\n }\n return this['__' + prop];\n }\n };\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, prop)\n );\n // desc.enumerable = true; // Default\n // desc.configurable = true; // Default\n Object.defineProperty(IDBKeyRange.prototype, prop, desc);\n});\n\nObject.defineProperties(IDBKeyRange, {\n [Symbol.hasInstance]: {\n value:\n /**\n * @param {object} obj\n * @returns {boolean}\n */\n (obj) => util.isObj(obj) && 'upper' in obj && 'lowerOpen' in obj &&\n typeof obj.lowerOpen === 'boolean'\n },\n prototype: {\n writable: false\n }\n});\n\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\n/**\n * @param {IDBKeyRangeFull|undefined} range\n * @param {string} quotedKeyColumnName\n * @param {string[]} sql\n * @param {string[]} sqlValues\n * @param {boolean} [addAnd]\n * @param {boolean} [checkCached]\n * @returns {void}\n */\nfunction setSQLForKeyRange (\n range, quotedKeyColumnName, sql, sqlValues, addAnd, checkCached\n) {\n if (!(range && (range.lower !== undefined || range.upper !== undefined))) {\n return;\n }\n\n if (addAnd) { sql.push('AND'); }\n let encodedLowerKey, encodedUpperKey;\n const hasLower = range.lower !== undefined;\n const hasUpper = range.upper !== undefined;\n if (hasLower) {\n encodedLowerKey = checkCached ? range.__lowerCached : Key.encode(range.lower);\n }\n if (hasUpper) {\n encodedUpperKey = checkCached ? range.__upperCached : Key.encode(range.upper);\n }\n if (hasLower) {\n sqlValues.push(util.escapeSQLiteStatement(/** @type {string} */ (encodedLowerKey)));\n if (hasUpper && encodedLowerKey === encodedUpperKey && !range.lowerOpen && !range.upperOpen) {\n sql.push(quotedKeyColumnName, '=', '?');\n return;\n }\n sql.push(quotedKeyColumnName, (range.lowerOpen ? '>' : '>='), '?');\n }\n if (hasLower && hasUpper) { sql.push('AND'); }\n if (hasUpper) {\n sql.push(quotedKeyColumnName, (range.upperOpen ? '<' : '<='), '?');\n sqlValues.push(util.escapeSQLiteStatement(/** @type {string} */ (encodedUpperKey)));\n }\n}\n\n/**\n * @param {import('./Key.js').Value} value\n * @param {boolean} [nullDisallowed]\n * @throws {DOMException}\n * @returns {import('./IDBKeyRange.js').IDBKeyRangeFull|undefined}\n */\nfunction convertValueToKeyRange (value, nullDisallowed) {\n if (util.instanceOf(value, IDBKeyRange)) {\n // We still need to validate IDBKeyRange-like objects (the above check is based on loose duck-typing)\n const range = /** @type {IDBKeyRangeFull} */ (value);\n if (range.toString() !== '[object IDBKeyRange]') {\n return IDBKeyRange.__createInstance(range.lower, range.upper, range.lowerOpen, range.upperOpen);\n }\n return range;\n }\n if (util.isNullish(value)) {\n if (nullDisallowed) {\n throw createDOMException('DataError', 'No key or range was specified');\n }\n return undefined; // Represents unbounded\n }\n Key.convertValueToKeyRethrowingAndIfInvalid(value);\n return IDBKeyRange.only(value);\n}\n\n// eslint-disable-next-line unicorn/no-named-default -- Had some reason for this\nexport {setSQLForKeyRange, IDBKeyRange, convertValueToKeyRange, IDBKeyRange as default};\n","/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {{\n * _items: string[],\n * _length: Integer,\n * [key: number]: string,\n * addIndexes: () => void,\n * sortList: () => string[],\n * push: (item: string) => void,\n * clone: () => DOMStringListFull,\n * contains: (str: string) => boolean,\n * indexOf: (str: string) => Integer,\n * splice: (index: Integer, howmany: Integer, ...args: string[]) => void\n * length: Integer\n * }} DOMStringListFull\n */\n\nlet cleanInterface = false;\n\nconst testObject = {test: true};\n// Test whether Object.defineProperty really works.\nif (Object.defineProperty) {\n try {\n Object.defineProperty(testObject, 'test', {enumerable: false});\n if (testObject.test) {\n cleanInterface = true;\n }\n } catch (err) {\n // Object.defineProperty does not work as intended.\n }\n}\n\n/**\n * Shim the DOMStringList object.\n * @throws {TypeError}\n * @class\n */\n/**\n * @this {DOMStringListFull}\n * @returns {never}\n */\nconst DOMStringList = function () {\n /** @type {string[]} */\n this._items = [];\n /** @type {Integer} */\n this._length = 0;\n throw new TypeError('Illegal constructor');\n};\n\n// @ts-expect-error It's ok\nDOMStringList.prototype = {\n constructor: DOMStringList,\n // Interface.\n\n /**\n * @param {string} str\n * @this {DOMStringListFull}\n * @returns {boolean}\n */\n contains (str) {\n if (!arguments.length) {\n throw new TypeError('DOMStringList.contains must be supplied a value');\n }\n return this._items.includes(str);\n },\n\n /**\n * @param {number} key\n * @this {DOMStringListFull}\n * @returns {string|null}\n */\n item (key) {\n if (!arguments.length) {\n throw new TypeError('DOMStringList.item must be supplied a value');\n }\n if (key < 0 || key >= this.length ||\n // eslint-disable-next-line unicorn/prefer-number-is-safe-integer -- We want all\n !Number.isInteger(key)) {\n return null;\n }\n return this._items[key];\n },\n\n // Helpers. Should only be used internally.\n /**\n * @this {DOMStringListFull}\n * @returns {DOMStringListFull}\n */\n clone () {\n const stringList = DOMStringList.__createInstance();\n stringList._items = this._items.slice();\n stringList._length = this.length;\n stringList.addIndexes();\n return stringList;\n },\n /**\n * @this {DOMStringListFull}\n * @returns {void}\n */\n addIndexes () {\n for (let i = 0; i < this._items.length; i++) {\n this[i] = this._items[i];\n }\n },\n /**\n * @this {DOMStringListFull}\n * @returns {string[]}\n */\n sortList () {\n // https://w3c.github.io/IndexedDB/#sorted-list\n // https://tc39.github.io/ecma262/#sec-abstract-relational-comparison\n // eslint-disable-next-line unicorn/require-array-sort-compare -- IndexedDB requires code unit comparison (default behavior)\n this._items.sort();\n this.addIndexes();\n return this._items;\n },\n /**\n * @this {DOMStringListFull}\n * @param {(value: string, i: Integer, arr: string[]) => void} cb\n * @param {object} thisArg\n * @returns {void}\n */\n forEach (cb, thisArg) {\n // eslint-disable-next-line unicorn/no-array-callback-reference, unicorn/no-array-method-this-argument -- Convenient\n this._items.forEach(cb, thisArg);\n },\n /**\n * @this {DOMStringListFull}\n * @template T\n * @param {(value: string, i: Integer, arr: string[]) => T} cb\n * @param {object} thisArg\n * @returns {T[]}\n */\n map (cb, thisArg) {\n // eslint-disable-next-line unicorn/no-array-callback-reference, unicorn/no-array-method-this-argument -- Convenient\n return this._items.map(cb, thisArg);\n },\n /**\n * @param {string} str\n * @this {DOMStringListFull}\n * @returns {Integer}\n */\n indexOf (str) {\n return this._items.indexOf(str);\n },\n /**\n * @param {string} item\n * @this {DOMStringListFull}\n * @returns {void}\n */\n push (item) {\n this._items.push(item);\n this._length++;\n this.sortList();\n },\n /**\n * @param {[index: Integer, howmany: Integer, ...args: string[]]} args\n * @this {DOMStringListFull}\n * @returns {void}\n */\n splice (...args /* index, howmany, item1, ..., itemX */) {\n this._items.splice(...args);\n this._length = this._items.length;\n for (const i in this) {\n if (i === String(Math.trunc(Number(i)))) {\n delete this[i];\n }\n }\n this.sortList();\n },\n [Symbol.toStringTag]: 'DOMStringListPrototype',\n // At least because `DOMStringList`, as a [list](https://infra.spec.whatwg.org/#list)\n // can be converted to a sequence per https://infra.spec.whatwg.org/#list-iterate\n // and particularly as some methods, e.g., `IDBDatabase.transaction`\n // expect such sequence<DOMString> (or DOMString), we need an iterator (some of\n // the Mocha tests rely on these)\n /**\n * @this {DOMStringListFull}\n * @yields {string}\n * @returns {Generator<string, void, undefined>}\n */\n *[Symbol.iterator] () {\n let i = 0;\n while (i < this._items.length) {\n yield this._items[i++];\n }\n }\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nObject.defineProperty(DOMStringList, Symbol.hasInstance, {\n /**\n * @param {unknown} obj\n * @returns {boolean}\n */\n value (obj) {\n return Object.prototype.toString.call(obj) === 'DOMStringListPrototype';\n }\n});\nconst DOMStringListAlias = DOMStringList;\nObject.defineProperty(DOMStringList, '__createInstance', {\n /* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n /**\n * @returns {DOMStringListFull}\n */\n value () {\n /**\n * @class\n * @this {DOMStringListFull}\n */\n const DOMStringList = function DOMStringList () {\n this.toString = function () {\n return '[object DOMStringList]';\n };\n // Internal functions on the prototype have been made non-enumerable below.\n Object.defineProperty(this, 'length', {\n enumerable: true,\n /**\n * @this {DOMStringListFull}\n * @returns {Integer}\n */\n get () {\n return this._length;\n }\n });\n this._items = /** @type {string[]} */ ([]);\n this._length = 0;\n };\n DOMStringList.prototype = DOMStringListAlias.prototype;\n // @ts-ignore It's ok; needed under some TS versions\n return /** @type {DOMStringListFull} */ (new DOMStringList());\n }\n});\n\nif (cleanInterface) {\n Object.defineProperty(DOMStringList, 'prototype', {\n writable: false\n });\n\n const nonenumerableReadonly = ['addIndexes', 'sortList', 'forEach', 'map', 'indexOf', 'push', 'splice', 'constructor', '__createInstance'];\n nonenumerableReadonly.forEach((nonenumerableReadonly) => {\n Object.defineProperty(DOMStringList.prototype, nonenumerableReadonly, {\n enumerable: false\n });\n });\n\n // Illegal invocations\n Object.defineProperty(DOMStringList.prototype, 'length', {\n configurable: true,\n enumerable: true,\n get () {\n throw new TypeError('Illegal invocation');\n }\n });\n\n const nonenumerableWritable = ['_items', '_length'];\n nonenumerableWritable.forEach((nonenumerableWritable) => {\n Object.defineProperty(DOMStringList.prototype, nonenumerableWritable, {\n enumerable: false,\n writable: true\n });\n });\n}\n\nexport default DOMStringList;\n","import {EventTargetFactory} from 'eventtargeter';\nimport SyncPromise from 'sync-promise-expanded';\nimport {createEvent} from './Event.js';\nimport {logError, findError, webSQLErrback, createDOMException} from './DOMException.js';\nimport {IDBRequest} from './IDBRequest.js';\nimport * as util from './util.js';\nimport IDBObjectStore from './IDBObjectStore.js';\nimport CFG from './CFG.js';\n\nlet uniqueID = 0;\nconst activeTransactions = new Set();\nconst listeners = ['onabort', 'oncomplete', 'onerror'];\nconst readonlyProperties = ['objectStoreNames', 'mode', 'durability', 'db', 'error'];\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {{\n * op: SQLCallback,\n * args: unknown[],\n * req: import('./IDBRequest.js').IDBRequestFull|null\n * }} RequestInfo\n */\n\n/**\n * @typedef {EventTarget & {\n * mode: \"readonly\"|\"readwrite\"|\"versionchange\",\n * durability: \"default\"|\"strict\"|\"relaxed\",\n * db: import('./IDBDatabase.js').IDBDatabaseFull,\n * on__abort: () => void,\n * on__complete: () => void,\n * on__beforecomplete: (ev: Event & {\n * complete: () => void\n * }) => void,\n * on__preabort: () => void,\n * __abortTransaction: (err: Error|DOMException|null) => void,\n * __executeRequests: () => void,\n * __tx: import('websql-configurable/lib/websql/WebSQLTransaction.js').default,\n * __id: Integer,\n * __active: boolean,\n * __handlerActive: boolean,\n * __running: boolean,\n * __errored: boolean,\n * __committed: boolean,\n * __requests: RequestInfo[],\n * __db: import('./IDBDatabase.js').IDBDatabaseFull,\n * __mode: string,\n * __durability: string,\n * __error: null|DOMException|Error,\n * __objectStoreNames: import('./DOMStringList.js').DOMStringListFull,\n * __storeHandles: {\n * [key: string]: import('./IDBObjectStore.js').IDBObjectStoreFull\n * },\n * __requestsFinished: boolean,\n * __transFinishedCb: (err: boolean, cb: ((bool?: boolean) => void)) => void,\n * __callTransFinishedCb: (err: boolean, cb: ((bool?: boolean) => void)) => void,\n * __transactionEndCallback: (() => void)|undefined,\n * __transactionFinished: boolean,\n * __completed: boolean,\n * __transFinishedCbFired: boolean,\n * __internal: boolean,\n * __abortFinished: boolean,\n * __createRequest: (\n * source: import('./IDBDatabase.js').IDBDatabaseFull|\n * import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull|\n * import('./IDBCursor.js').IDBCursorFull\n * ) => import('./IDBRequest.js').IDBRequestFull,\n * __pushToQueue: (\n * request: import('./IDBRequest.js').IDBRequestFull|null,\n * callback: SQLCallback,\n * args?: unknown[]\n * ) => void,\n * __assertActive: () => void,\n * commit: () => void,\n * __addNonRequestToTransactionQueue: (\n * callback: SQLCallback,\n * args?: unknown[]\n * ) => void\n * __addToTransactionQueue: (\n * callback: SQLCallback,\n * args: unknown[]|undefined,\n * source: import('./IDBDatabase.js').IDBDatabaseFull|\n * import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull|\n * import('./IDBCursor.js').IDBCursorFull\n * ) => import('./IDBRequest.js').IDBRequestFull\n * __assertWritable: () => void,\n * }} IDBTransactionFull\n */\n\n/**\n * @param {IDBTransactionFull} tx\n * @returns {void}\n */\nfunction releaseFinishedTransaction (tx) {\n const pos = tx.db.__transactions.indexOf(tx);\n if (pos !== -1) {\n tx.db.__transactions.splice(pos, 1);\n }\n tx.__transactionEndCallback = undefined;\n tx.__requests = [];\n}\n\n/**\n * The IndexedDB Transaction.\n * @see https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBTransaction\n * @class\n * @throws {TypeError}\n */\nfunction IDBTransaction () {\n throw new TypeError('Illegal constructor');\n}\nconst IDBTransactionAlias = IDBTransaction;\n/**\n * @param {import('./IDBDatabase.js').IDBDatabaseFull} db\n * @param {import('./DOMStringList.js').DOMStringListFull} storeNames\n * @param {string} mode\n * @param {string} [durability]\n * @returns {IDBTransactionFull}\n */\nIDBTransaction.__createInstance = function (db, storeNames, mode, durability = 'default') {\n /**\n * @class\n * @this {IDBTransactionFull}\n */\n function IDBTransaction () {\n const me = this;\n // @ts-expect-error It's ok\n me[Symbol.toStringTag] = 'IDBTransaction';\n util.defineReadonlyProperties(me, readonlyProperties);\n // eslint-disable-next-line unicorn/no-top-level-assignment-in-function -- Debugging only\n me.__id = ++uniqueID; // for debugging simultaneous transactions\n me.__active = true;\n // Tracks the spec's \"active\" flag for the purpose of validating new\n // requests/`commit()`: true only during the initial synchronous\n // script that created the transaction and during each dispatched\n // request's synchronous `success`/`error` handler. Deliberately\n // kept separate from `__active` above, which additionally (and\n // permanently, once false) signals that request-queue processing\n // has stopped -- `executeNextRequest` relies on that to know\n // whether it's still safe to finish the transaction normally.\n me.__handlerActive = true;\n me.__running = false;\n me.__errored = false;\n me.__committed = false;\n me.__requests = [];\n me.__objectStoreNames = storeNames;\n me.__mode = mode;\n me.__durability = durability;\n me.__db = db;\n activeTransactions.add(me);\n me.__error = null;\n // @ts-expect-error Part of `ShimEventTarget`\n me.__setOptions({\n legacyOutputDidListenersThrowFlag: true // Event hook for IndexedB\n });\n\n readonlyProperties.forEach((readonlyProp) => {\n Object.defineProperty(this, readonlyProp, {\n configurable: true\n });\n });\n util.defineListenerProperties(this, listeners);\n me.__storeHandles = {};\n\n // Kick off the transaction as soon as all synchronous code is done\n setTimeout(() => { me.__executeRequests(); }, 0);\n }\n IDBTransaction.prototype = IDBTransactionAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBTransaction();\n};\n\n// @ts-expect-error It's ok\nIDBTransaction.prototype = EventTargetFactory.createInstance({\n defaultSync: true,\n // Ensure EventTarget preserves our properties\n extraProperties: ['complete']\n});\n\n/**\n *\n * @param {boolean} err\n * @param {(bool: boolean) => void} cb\n * @returns {void}\n */\nIDBTransaction.prototype.__transFinishedCb = function (err, cb) {\n cb(Boolean(err));\n};\n\n/**\n * In Node, the real (SQL-commit-capable) `__transFinishedCb` is only\n * installed once the underlying WebSQL driver's own SQL-queue-idle check\n * has fired at least once for this transaction (asynchronously, via the\n * `nonstandardTransCb` passed to `db.transaction`/`.readTransaction`).\n * Since our own request processing can now finish synchronously (e.g., a\n * trivial upgrade using a synchronous SQL driver), it is possible to reach\n * transaction completion here before that has happened, in which case\n * `__transFinishedCb` is still the non-committing default above. Calling\n * that default directly would silently skip the actual SQL commit and\n * leave the underlying WebSQL transaction \"running\" forever, hanging any\n * later transaction on that same database connection. So, if the real\n * callback isn't installed yet, defer and retry until it is.\n * @this {IDBTransactionFull}\n * @param {boolean} err\n * @param {(bool?: boolean) => void} cb\n * @returns {void}\n */\nIDBTransaction.prototype.__callTransFinishedCb = function (err, cb) {\n const me = this;\n if (me.__completed || me.__transFinishedCbFired) {\n // Either this transaction's `nonstandardTransCb` installation (see\n // `__executeRequests`) already found `__transactionEndCallback` set\n // and fired `__transFinishedCb` itself in the meantime -- a race with\n // this call's own (possibly `setTimeout`-deferred) retry below -- or\n // this same call already fired it on an earlier retry. Either way,\n // don't fire a second commit/rollback for the same transaction.\n // `__transFinishedCbFired` is checked in addition to `__completed`\n // because `__completed` isn't set until the resulting SQL commit/\n // rollback round trip actually finishes, which is too late to stop\n // the other side from *also* firing while that's still in flight.\n return;\n }\n if (me.__transFinishedCb === IDBTransaction.prototype.__transFinishedCb) {\n // Standard (3-argument) `transaction()`/`readTransaction()` implementations\n // (browser WebSQL, `cordova-plugin-sqlite-2`, etc.) never invoke the\n // non-standard 4th callback that installs the real `__transFinishedCb`,\n // so waiting for it here would defer forever. Detect that via arity\n // (checking whichever of the two methods this transaction's own mode\n // actually uses -- see `__executeRequests`) and, if it's not supported,\n // just call the default (the driver auto-commits on its own).\n const dbConn = me.db && me.db.__db;\n const dbMethodName = me.mode === 'readonly' ? 'readTransaction' : 'transaction';\n const supportsNonstandardTransCb = Boolean(\n dbConn && typeof dbConn[dbMethodName] === 'function' && dbConn[dbMethodName].length >= 4\n );\n if (!supportsNonstandardTransCb) {\n me.__transFinishedCbFired = true;\n me.__transFinishedCb(err, cb);\n return;\n }\n setTimeout(() => {\n me.__callTransFinishedCb(err, cb);\n }, 0);\n return;\n }\n me.__transFinishedCbFired = true;\n me.__transFinishedCb(err, cb);\n};\n/**\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.__executeRequests = function () {\n const me = this;\n if (me.__running) {\n if (CFG.DEBUG) { console.log('Looks like the request set is already running', me.mode); }\n return;\n }\n\n // The synchronous script that created this transaction (and\n // synchronously queued whatever requests it wanted to) has now\n // definitely returned control to the event loop -- this callback was\n // itself deferred via `setTimeout(..., 0)` for exactly that reason.\n // So the transaction's initial \"active\" window closes here, until the\n // first dispatched request's handler (see `success`/`error` below)\n // reopens it.\n me.__handlerActive = false;\n\n me.__running = true;\n\n me.db.__db[me.mode === 'readonly' ? 'readTransaction' : 'transaction']( // `readTransaction` is optimized, at least in `node-websql`\n function executeRequests (tx) {\n me.__tx = tx;\n /** @type {RequestInfo} */\n let q,\n i = -1;\n\n /**\n * @typedef {unknown} IDBRequestResult\n */\n\n /**\n * @param {IDBRequestResult} [result]\n * @param {import('./IDBRequest.js').IDBRequestFull} [req]\n * @returns {void}\n */\n function success (result, req) {\n if (me.__errored || me.__requestsFinished) {\n // We've already called \"onerror\", \"onabort\", or thrown within the transaction, so don't do it again.\n return;\n }\n if (req) {\n q.req = req; // Need to do this in case of cursors\n }\n if (!q.req) { // TS guard\n return;\n }\n if (q.req.__done) { // Avoid continuing with aborted requests\n return;\n }\n q.req.__done = true;\n q.req.__result = result;\n q.req.__error = null;\n\n me.__active = true;\n me.__handlerActive = true;\n const e = createEvent('success');\n q.req.dispatchEvent(e);\n // Do not set __active or __handlerActive flags to false yet:\n // https://github.com/w3c/IndexedDB/issues/87 -- a follow-up\n // request queued from an `await`-based continuation of this\n // one (a microtask, not a further synchronous call within\n // this handler) must still pass `__assertActive`'s check of\n // both flags. `checkQueueEntry` (see `executeNextRequest`)\n // is what actually resets `__handlerActive`, once it's\n // confirmed (across its own bounded microtask wait) that no\n // such continuation queued anything.\n if (e.__legacyOutputDidListenersThrowError) {\n logError('Error', 'An error occurred in a success handler attached to request chain', e.__legacyOutputDidListenersThrowError); // We do nothing else with this error as per spec\n if (!me.__committed) { // An explicit `commit()` locks in the commit, so errors thrown afterward must not abort it\n // me.__active = false;\n me.__abortTransaction(createDOMException('AbortError', 'A request was aborted (in user handler after success).'));\n return;\n }\n }\n util.runContinuationSafely(advanceAfterDispatch);\n }\n\n /**\n * @param {[\n * tx: import('websql-configurable/lib/websql/WebSQLTransaction.js').default|DOMException|Error,\n * err?: Error & {code?: number}\n * ]} args\n * @returns {void}\n */\n function error (...args /* tx, err */) {\n if (me.__errored || me.__requestsFinished) {\n // We've already called \"onerror\", \"onabort\", or thrown within\n // the transaction, so don't do it again.\n return;\n }\n if (q.req && q.req.__done) { // Avoid continuing with aborted requests\n return;\n }\n const err = /** @type {Error|DOMException} */ (findError(args));\n if (!q.req) {\n me.__abortTransaction(err);\n return;\n }\n\n // Fire an error event for the current IDBRequest\n q.req.__done = true;\n q.req.__error = err;\n q.req.__result = undefined; // Must be undefined if an error per `result` getter\n q.req.addLateEventListener(\n 'error',\n /**\n * @param {Event & {__legacyOutputDidListenersThrowError: boolean}} e\n * @returns {void}\n */\n function (e) {\n if (e.cancelable && e.defaultPrevented && !e.__legacyOutputDidListenersThrowError) {\n advanceAfterDispatch();\n }\n }\n );\n q.req.addDefaultEventListener('error', function () {\n if (!q.req) { // TS guard\n return;\n }\n me.__abortTransaction(q.req.__error);\n });\n\n me.__active = true;\n me.__handlerActive = true;\n const e = createEvent('error', err, {bubbles: true, cancelable: true});\n q.req.dispatchEvent(e);\n // Do not set __active or __handlerActive flags to false yet --\n // see the matching comment in `success`, above.\n if (e.__legacyOutputDidListenersThrowError) {\n logError('Error', 'An error occurred in an error handler attached to request chain', e.__legacyOutputDidListenersThrowError); // We do nothing else with this error as per spec\n e.preventDefault(); // Prevent 'error' default as steps indicate we should abort with `AbortError` even without cancellation\n if (me.__committed) { // An explicit `commit()` locks in the commit, so errors thrown afterward must not abort it\n util.runContinuationSafely(advanceAfterDispatch);\n return;\n }\n me.__abortTransaction(createDOMException('AbortError', 'A request was aborted (in user handler after error).'));\n }\n }\n\n /**\n * Sets up `q` for the current queue index and, for a genuine\n * request (not one of our internal non-request queue entries),\n * deactivates the transaction for the duration of its\n * (possibly async) work. Returns `false` if there's nothing to\n * do (an already-aborted request).\n * @returns {boolean}\n */\n function prepareNextRequest () {\n q = me.__requests[i];\n if (!q.req) {\n // Non-standard, non-`IDBRequest` queue entries (e.g.\n // the internal `onupgradeneeded` dispatch op in\n // `IDBFactory.js`) dispatch straight to user code\n // without going through `success`/`error` below --\n // unlike those, they never restore `__active`/\n // `__handlerActive` to `true` before doing so, so\n // they rely on the flags being left as they are\n // (not reset here).\n return true;\n }\n if (q.req.__done) { // Avoid continuing with aborted requests\n return false;\n }\n // We're now handing off to (possibly async) work for\n // this request, so the transaction is no longer active\n // until its own `success`/`error` dispatch (below)\n // sets these flags again -- a check that happens to\n // run during this gap (e.g. `commit()` called from an\n // unrelated `setTimeout`) must see the transaction as\n // inactive, per spec.\n me.__active = false;\n me.__handlerActive = false;\n return true;\n }\n\n /**\n * @returns {void}\n */\n function launchQueuedOp () {\n try {\n if (!q.req) {\n q.op(tx, q.args, () => util.runContinuationSafely(executeNextRequest), error);\n return;\n }\n q.op(tx, q.args, success, error, executeNextRequest);\n } catch (e) {\n error(/** @type {Error} */ (e));\n }\n }\n\n /**\n * @returns {void}\n */\n function runQueuedRequest () {\n if (!prepareNextRequest()) {\n return;\n }\n launchQueuedOp();\n }\n\n /**\n * A request's `success`/`error` event fires (and any `await`-based\n * continuation watching it resolves) before this check runs, since\n * that dispatch happens synchronously above, one call frame up.\n * If such a continuation queues a follow-up request, it does so\n * from a microtask -- so if the JS-level queue is merely found\n * empty here, that doesn't yet mean no more work is coming, only\n * that none has been queued *yet*. Re-check across a small, bounded\n * number of further microtask turns (letting a typical `await`\n * chain like `await store.put(...); await store.get(...)` catch\n * up) before finally concluding the transaction is genuinely done.\n * Applies to `readonly` transactions too, not just `readwrite`/\n * `versionchange`: a `readonly` transaction's `complete` event\n * can otherwise fire synchronously, immediately after its last\n * request's `success` handler returns -- before an `await`-based\n * consumer of that same handler (e.g. one that resolves a\n * promise from within `onsuccess` and only attaches `oncomplete`\n * afterward) ever gets a turn to run, so it can miss `complete`\n * entirely. `readonly` requests don't hold a real SQL\n * transaction open, though, so there's no file-lock/connection\n * collision risk in waiting the same bounded amount here.\n * @param {number} attemptsLeft\n * @returns {void}\n */\n function checkQueueEntry (attemptsLeft) {\n if (me.__errored || me.__requestsFinished) {\n return;\n }\n if (i < me.__requests.length) {\n runQueuedRequest();\n return;\n }\n if (attemptsLeft <= 0) {\n // All requests in the transaction are done\n me.__requests = [];\n if (me.__active) {\n requestsFinished();\n }\n return;\n }\n queueMicrotask(() => {\n checkQueueEntry(attemptsLeft - 1);\n });\n }\n\n /**\n * @returns {void}\n */\n function executeNextRequest () {\n if (me.__errored || me.__requestsFinished) {\n // We've already called \"onerror\", \"onabort\", or thrown within the transaction, so don't do it again.\n return;\n }\n i++;\n if (i >= me.__requests.length) {\n checkQueueEntry(10);\n return;\n }\n runQueuedRequest();\n }\n\n /**\n * Same as `executeNextRequest`, but used specifically as the\n * continuation from a request's own `success`/`error` dispatch\n * (see call sites above): gives same-tick microtasks scheduled\n * from within that handler (e.g. a plain\n * `Promise.resolve().then(...)`) a chance to run -- and still\n * observe the transaction as active -- before we deactivate it\n * again for the next queued request, per\n * https://github.com/w3c/IndexedDB/issues/87.\n *\n * This is safe for `readonly` transactions too only because\n * `__executeRequests` now passes a `nonstandardTransCb` to\n * `readTransaction()` (matching `.transaction()`) and\n * `requestsFinished` defers `readonly` completion through\n * `__transactionEndCallback`/`__callTransFinishedCb` the same\n * way `readwrite` already did: the WebSQL driver's\n * \"optimized\" `readTransaction` path used to finalize the\n * underlying transaction as soon as no further `executeSql`\n * call was already in flight or queued, which -- before that\n * fix -- meant even a microtask-long gap here would let the\n * driver consider the transaction done, silently dropping\n * every subsequent queued request (never firing\n * `success`/`error` for it at all).\n * @returns {void}\n */\n function advanceAfterDispatch () {\n if (me.__errored || me.__requestsFinished) {\n return;\n }\n i++;\n if (i >= me.__requests.length) {\n checkQueueEntry(10);\n return;\n }\n queueMicrotask(() => {\n if (me.__errored || me.__requestsFinished) {\n return;\n }\n if (!prepareNextRequest()) {\n return;\n }\n launchQueuedOp();\n });\n }\n\n executeNextRequest();\n },\n function webSQLError (webSQLErr) {\n // @ts-expect-error It's ok\n if (webSQLErr === true) { // Not a genuine SQL error\n return;\n }\n const err = webSQLErrback(/** @type {Error & {code?: number}} */ (webSQLErr));\n me.__abortTransaction(err);\n },\n function () {\n // For Node, we don't need to try running here as we can keep\n // the transaction running long enough to rollback (in the\n // next (non-standard) callback for this transaction call)\n if (me.__transFinishedCb !== IDBTransaction.prototype.__transFinishedCb) { // Node\n return;\n }\n if (!me.__transactionEndCallback && !me.__requestsFinished) {\n me.__transactionFinished = true;\n return;\n }\n if (me.__transactionEndCallback && !me.__completed && !me.__transFinishedCbFired) {\n me.__transFinishedCbFired = true;\n me.__transFinishedCb(me.__errored, me.__transactionEndCallback);\n }\n },\n function (currentTask, err, done, rollback, commit) {\n if (err) {\n return true;\n }\n // `readonly` transactions never hold a real SQL transaction open\n // (see `WebSQLTransaction`'s constructor skipping `BEGIN;` for\n // them), so there's no commit/rollback round trip to defer --\n // `done` itself is the \"genuinely finished\" signal for them,\n // called synchronously once `requestsFinished` (via\n // `__callTransFinishedCb`) confirms no further request is\n // coming.\n me.__transFinishedCb = currentTask.readOnly\n ? function (err, cb) {\n done(err);\n if (cb) {\n cb();\n }\n }\n : function (err, cb) {\n if (err) {\n rollback(err, cb);\n } else {\n commit(cb);\n }\n };\n // Guarded by `__transFinishedCbFired`, not just `__completed`: this\n // installation can race `IDBTransaction.prototype.__callTransFinishedCb`'s\n // own `setTimeout` retry (see there) -- both watch for\n // `__transFinishedCb` to become installed and `__transactionEndCallback`\n // to become set, and either could observe both conditions first.\n // `__completed` alone isn't set until the resulting SQL commit/rollback\n // round trip actually finishes, which is too late to prevent the other\n // side from *also* firing in the meantime.\n if (me.__transactionEndCallback && !me.__completed && !me.__transFinishedCbFired) {\n me.__transFinishedCbFired = true;\n me.__transFinishedCb(me.__errored, me.__transactionEndCallback);\n }\n return false;\n }\n );\n\n /**\n * @returns {void}\n */\n function requestsFinished () {\n me.__active = false;\n me.__handlerActive = false;\n me.__requestsFinished = true;\n\n /**\n * @throws {Error}\n * @returns {void}\n */\n function complete () {\n me.__completed = true;\n if (CFG.DEBUG) { console.log('Transaction completed'); }\n const evt = createEvent('complete');\n try {\n me.__internal = true;\n me.dispatchEvent(evt);\n me.__internal = false;\n me.dispatchEvent(createEvent('__complete'));\n } catch (e) {\n me.__internal = false;\n // An error occurred in the \"oncomplete\" handler.\n // It's too late to call \"onerror\" or \"onabort\". Throw a global error instead.\n // (this may seem odd/bad, but it's how all native IndexedDB implementations work)\n me.__errored = true;\n throw e;\n } finally {\n activeTransactions.delete(me);\n me.__storeHandles = {};\n releaseFinishedTransaction(me);\n }\n }\n if (me.mode === 'readwrite' || me.mode === 'readonly') {\n if (me.__transactionFinished) {\n complete();\n return;\n }\n me.__transactionEndCallback = complete;\n // The underlying SQL driver's own \"queue empty\" check\n // (`nonstandardTransCb`, above) typically already ran and\n // installed the real `__transFinishedCb` *before* this point --\n // it fires synchronously once the last SQL batch's results are\n // processed, whereas `requestsFinished` can now be reached only\n // after `checkQueueEntry`'s bounded microtask wait, i.e. later.\n // When that happens, its check for `me.__transactionEndCallback`\n // (not yet set at that earlier time) finds nothing to do and\n // just returns, so nothing else will ever re-trigger the actual\n // commit unless this explicitly does so now. For `readonly`,\n // `__transFinishedCb` (installed by the `nonstandardTransCb`\n // passed to `readTransaction()`, above) just calls the WebSQL\n // driver's own `done` -- there's no real commit/rollback SQL\n // step for a `readonly` transaction.\n me.__callTransFinishedCb(me.__errored, complete);\n return;\n }\n const ev = /** @type {Event & {complete: () => void}} */ (\n createEvent('__beforecomplete')\n );\n ev.complete = complete;\n me.dispatchEvent(ev);\n }\n};\n\n/**\n * Creates a new IDBRequest for the transaction.\n * NOTE: The transaction is not queued until you call {@link IDBTransaction#__pushToQueue}.\n * @param {import('./IDBDatabase.js').IDBDatabaseFull} source\n * @this {IDBTransactionFull}\n * @returns {IDBRequest}\n */\nIDBTransaction.prototype.__createRequest = function (source) {\n const me = this;\n const request = IDBRequest.__createInstance();\n request.__source = source !== undefined ? source : me.db;\n request.__transaction = me;\n return request;\n};\n\n/**\n * @typedef {(\n * tx: import('websql-configurable/lib/websql/WebSQLTransaction.js').default,\n * args: unknown[],\n * success: (result?: unknown, req?: import('./IDBRequest.js').IDBRequestFull) => void,\n * error: (\n * tx: import('websql-configurable/lib/websql/WebSQLTransaction.js').default|Error|DOMException,\n * err?: Error & {code?: number}\n * ) => void,\n * executeNextRequest?: () => void\n * ) => void} SQLCallback\n */\n\n/**\n * Adds a callback function to the transaction queue.\n * @param {SQLCallback} callback\n * @param {unknown[]} args\n * @param {import('./IDBDatabase.js').IDBDatabaseFull|\n * import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull} source\n * @this {IDBTransactionFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBTransaction.prototype.__addToTransactionQueue = function (callback, args, source) {\n const request = this.__createRequest(source);\n this.__pushToQueue(request, callback, args);\n return request;\n};\n\n/**\n * Adds a callback function to the transaction queue without generating a\n * request.\n * @param {SQLCallback} callback\n * @param {unknown[]} args\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.__addNonRequestToTransactionQueue = function (callback, args) {\n this.__pushToQueue(null, callback, args);\n};\n\n/**\n * Adds an IDBRequest to the transaction queue.\n * @param {import('./IDBRequest.js').IDBRequestFull|null} request\n * @param {SQLCallback} callback\n * @param {unknown[]} args\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.__pushToQueue = function (request, callback, args) {\n this.__assertActive();\n this.__requests.push({\n op: callback,\n args,\n req: request\n });\n};\n\n/**\n * @throws {DOMException}\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.__assertActive = function () {\n if (!this.__active || !this.__handlerActive || this.__committed) {\n throw createDOMException('TransactionInactiveError', 'A request was placed against a transaction which is currently not active, or which is finished');\n }\n};\n\n/**\n * @throws {DOMException}\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.__assertWritable = function () {\n if (this.mode === 'readonly') {\n throw createDOMException('ReadOnlyError', 'The transaction is read only');\n }\n};\n\n/**\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.__assertVersionChange = function () {\n IDBTransaction.__assertVersionChange(this);\n};\n\n/**\n * Returns the specified object store.\n * @param {string} objectStoreName\n * @this {IDBTransactionFull}\n * @returns {IDBObjectStore}\n */\nIDBTransaction.prototype.objectStore = function (objectStoreName) {\n const me = this;\n if (!(me instanceof IDBTransaction)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('No object store name was specified');\n }\n IDBTransaction.__assertNotFinished(me);\n if (me.__objectStoreNames.indexOf(objectStoreName) === -1) { // eslint-disable-line unicorn/prefer-includes -- Not supported\n throw createDOMException('NotFoundError', objectStoreName + ' is not participating in this transaction');\n }\n const store = me.db.__objectStores[objectStoreName];\n if (!store) {\n throw createDOMException('NotFoundError', objectStoreName + ' does not exist in ' + me.db.name);\n }\n\n if (!Object.hasOwn(me.__storeHandles, objectStoreName) ||\n // These latter conditions are to allow store\n // recreation to create new clone object\n me.__storeHandles[objectStoreName].__pendingDelete ||\n me.__storeHandles[objectStoreName].__deleted) {\n me.__storeHandles[objectStoreName] = IDBObjectStore.__clone(store, me);\n }\n return me.__storeHandles[objectStoreName];\n};\n\n/**\n *\n * @param {Error|DOMException|null} err\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.__abortTransaction = function (err) {\n const me = this;\n logError('Error', 'An error occurred in a transaction', err);\n if (me.__errored) {\n // We've already called \"onerror\", \"onabort\", or thrown, so don't do it again.\n return;\n }\n me.__errored = true;\n\n if (me.mode === 'versionchange') { // Steps for aborting an upgrade transaction\n me.db.__version = me.db.__oldVersion;\n me.db.__objectStoreNames = me.db.__oldObjectStoreNames;\n me.__objectStoreNames = me.db.__oldObjectStoreNames;\n Object.values(me.db.__objectStores).concat(\n Object.values(me.__storeHandles)\n ).forEach(function (store) {\n // Store was already created so we restore to name before the rename\n if ('__pendingName' in store &&\n me.db.__oldObjectStoreNames.indexOf(/** @type {string} */ (store.__pendingName)) > -1 // eslint-disable-line unicorn/prefer-includes -- Not supported\n ) {\n store.__name = store.__originalName;\n }\n store.__indexNames = store.__oldIndexNames;\n delete store.__pendingDelete;\n Object.values(store.__indexes).concat(\n Object.values(store.__indexHandles)\n ).forEach(function (index) {\n // Index was already created so we restore to name before the rename\n if ('__pendingName' in index &&\n store.__oldIndexNames.indexOf(/** @type {string} */ (index.__pendingName)) > -1 // eslint-disable-line unicorn/prefer-includes -- Not supported\n ) {\n index.__name = index.__originalName;\n }\n delete index.__pendingDelete;\n });\n });\n }\n me.__active = false; // Setting here and in requestsFinished for https://github.com/w3c/IndexedDB/issues/87\n activeTransactions.delete(me);\n\n if (err !== null) {\n me.__error = err;\n }\n\n if (me.__requestsFinished && err !== null) {\n // The transaction has already completed, so we can't call \"onerror\" or \"onabort\".\n // So throw the error instead. `err` is only ever `null` here via\n // `IDBTransaction.prototype.abort`'s own `__abortTransaction(null)`\n // call, which now checks `__requestsFinished` itself first and\n // throws `InvalidStateError` synchronously before ever reaching\n // this point -- so this guard is just defense in depth against\n // `err` somehow being `null` some other way, not something this\n // path should see in practice.\n setTimeout(() => {\n throw err;\n }, 0);\n }\n\n /**\n * @param {import('websql-configurable/lib/websql/WebSQLTransaction.js').default|null} [tx]\n * @param {import('websql-configurable/lib/websql/WebSQLResultSet.js').default|(Error & {code?: number})|{code: 0}} [errOrResult]\n * @returns {void}\n */\n function abort (tx, errOrResult) {\n if (!tx) {\n if (CFG.DEBUG) { console.log('Rollback not possible due to missing transaction', me); }\n } else if (errOrResult && 'code' in errOrResult && typeof errOrResult.code === 'number') {\n if (CFG.DEBUG) { console.log('Rollback erred; feature is probably not supported as per WebSQL', me); }\n } else if (CFG.DEBUG) { console.log('Rollback succeeded', me); }\n\n me.dispatchEvent(createEvent('__preabort'));\n me.__requests.filter(function (q, i, arr) { // eslint-disable-line promise/no-promise-in-callback -- Sync promise\n return q.req && !q.req.__done && [i, -1].includes(\n arr.map((q) => q.req).lastIndexOf(q.req)\n );\n }).reduce(function (promises, q) {\n // We reduce to a chain of promises to be queued in order, so we cannot\n // use `Promise.all`, and I'm unsure whether `setTimeout` currently\n // behaves first-in-first-out with the same timeout so we could\n // just use a `forEach`.\n return promises.then(function () {\n if (!q.req) { // TS guard\n throw new Error('Missing request');\n }\n q.req.__done = true;\n q.req.__result = undefined;\n q.req.__error = createDOMException('AbortError', 'A request was aborted (an unfinished request).');\n const reqEvt = createEvent('error', q.req.__error, {bubbles: true, cancelable: true});\n return new SyncPromise(\n /** @type {(resolve: (value?: unknown) => void) => void} */\n (resolve) => {\n setTimeout(() => {\n if (!q.req) { // TS guard\n throw new Error('Missing request');\n }\n q.req.dispatchEvent(reqEvt); // No need to catch errors\n resolve();\n }, 0);\n }\n );\n });\n }, SyncPromise.resolve(undefined)).then(function () { // Also works when there are no pending requests\n const evt = createEvent('abort', err, {bubbles: true, cancelable: false});\n setTimeout(() => {\n me.__abortFinished = true;\n me.dispatchEvent(evt);\n me.__storeHandles = {};\n me.dispatchEvent(createEvent('__abort'));\n releaseFinishedTransaction(me);\n }, 0);\n return undefined;\n }).catch((err) => {\n console.log('Abort error');\n throw err;\n });\n }\n\n me.__transFinishedCb(true, function (rollback) {\n if (rollback && me.__tx) { // Not supported in standard SQL (and WebSQL errors should\n // rollback automatically), but for Node.js, etc., we give chance for\n // manual aborts which would otherwise not work.\n if (me.mode === 'readwrite') {\n if (me.__transactionFinished) {\n abort();\n return;\n }\n me.__transactionEndCallback = abort;\n return;\n }\n try {\n me.__tx.executeSql(\n 'ROLLBACK',\n [],\n abort,\n /** @type {import('websql-configurable/lib/websql/WebSQLTransaction.js').SqlErrorCallback} */ (abort)\n ); // Not working in some circumstances, even in Node\n } catch (err) {\n // Browser errs when transaction has ended and since it most likely already erred here,\n // we call to abort\n abort();\n }\n } else {\n abort(null, {code: 0});\n }\n });\n};\n\n/**\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.abort = function () {\n const me = this;\n if (!(me instanceof IDBTransaction)) {\n throw new TypeError('Illegal invocation');\n }\n if (CFG.DEBUG) { console.log('The transaction was aborted', me); }\n IDBTransaction.__assertNotFinished(me);\n if (me.__committed) {\n throw createDOMException('InvalidStateError', 'The transaction has already been committed');\n }\n if (me.__requestsFinished) {\n // All requests have already finished and the transaction is\n // auto-committing (the async SQL commit round trip just hasn't\n // resolved yet) -- too late to abort per spec, even though\n // `__committed` itself isn't set until that round trip actually\n // finishes.\n throw createDOMException('InvalidStateError', 'The transaction is already committing');\n }\n me.__abortTransaction(null);\n};\n\n/**\n * @see https://www.w3.org/TR/IndexedDB/#dom-idbtransaction-commit\n * @this {IDBTransactionFull}\n * @returns {void}\n */\nIDBTransaction.prototype.commit = function () {\n const me = this;\n if (!(me instanceof IDBTransaction)) {\n throw new TypeError('Illegal invocation');\n }\n if (!me.__active || !me.__handlerActive || me.__committed) {\n throw createDOMException('InvalidStateError', 'Failed to execute \\'commit\\' on \\'IDBTransaction\\': The transaction is not active.');\n }\n if (CFG.DEBUG) { console.log('The transaction was explicitly committed', me); }\n me.__committed = true;\n};\n\nIDBTransaction.prototype[Symbol.toStringTag] = 'IDBTransactionPrototype';\n\n/**\n *\n * @param {IDBTransactionFull|null|undefined} tx\n * @returns {void}\n */\nIDBTransaction.__assertVersionChange = function (tx) {\n if (!tx || tx.mode !== 'versionchange') {\n throw createDOMException('InvalidStateError', 'Not a version transaction');\n }\n};\n/**\n *\n * @param {IDBTransactionFull|null} tx\n * @throws {DOMException}\n * @returns {void}\n */\nIDBTransaction.__assertNotVersionChange = function (tx) {\n if (tx && tx.mode === 'versionchange') {\n throw createDOMException('InvalidStateError', 'Cannot be called during a version transaction');\n }\n};\n\n/**\n *\n * @param {IDBTransactionFull|null|undefined} tx\n * @throws {DOMException}\n * @returns {void}\n */\nIDBTransaction.__assertNotFinished = function (tx) {\n if (!tx || tx.__completed || tx.__abortFinished || tx.__errored) {\n throw createDOMException('InvalidStateError', 'Transaction finished by commit or abort');\n }\n};\n\n// object store methods behave differently: see https://github.com/w3c/IndexedDB/issues/192\n/**\n *\n * @param {IDBTransactionFull} tx\n * @returns {void}\n */\nIDBTransaction.__assertNotFinishedObjectStoreMethod = function (tx) {\n try {\n IDBTransaction.__assertNotFinished(tx);\n } catch (err) {\n if (tx && !tx.__completed && !tx.__abortFinished) {\n throw createDOMException('TransactionInactiveError', 'A request was placed against a transaction which is currently not active, or which is finished');\n }\n throw err;\n }\n};\n\n/**\n *\n * @param {IDBTransactionFull|null|undefined} tx\n * @throws {DOMException}\n * @returns {void}\n */\nIDBTransaction.__assertActive = function (tx) {\n if (!tx || !tx.__active || !tx.__handlerActive || tx.__committed) {\n throw createDOMException('TransactionInactiveError', 'A request was placed against a transaction which is currently not active, or which is finished');\n }\n};\n\n/**\n * Used by our `EventTarget.prototype` library to implement bubbling/capturing.\n * @this {IDBTransactionFull}\n * @returns {import('./IDBDatabase.js').IDBDatabaseFull}\n */\nIDBTransaction.prototype.__getParent = function () {\n return this.db;\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.defineOuterInterface(IDBTransaction.prototype, listeners);\nutil.defineReadonlyOuterInterface(IDBTransaction.prototype, readonlyProperties);\nutil.setOperationNames(IDBTransaction.prototype);\n\nObject.defineProperty(IDBTransaction.prototype, 'constructor', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: IDBTransaction\n});\n\nObject.defineProperty(IDBTransaction, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nIDBTransaction.activeTransactions = activeTransactions;\n\nexport default IDBTransaction;\n","class TypesonPromise{constructor(e){this.p=new Promise(e)}}TypesonPromise.__typeson__type__=\"TypesonPromise\",\"undefined\"!=typeof Symbol&&Object.defineProperty(TypesonPromise.prototype,Symbol.toStringTag,{get:()=>\"TypesonPromise\"}),TypesonPromise.prototype.then=function(e,t){return new TypesonPromise((r,n)=>{this.p.then(function(t){r(e?e(t):t)}).catch(function(e){return t?t(e):Promise.reject(e)}).then(r,n)})},TypesonPromise.prototype.catch=function(e){return this.then(void 0,e)},TypesonPromise.resolve=function(e){return new TypesonPromise(t=>{t(e)})},TypesonPromise.reject=function(e){return new TypesonPromise((t,r)=>{r(e)})},TypesonPromise.all=function(e){return new TypesonPromise(function(t,r){Promise.all(e.map(e=>e?.constructor&&\"__typeson__type__\"in e.constructor&&\"TypesonPromise\"===e.constructor.__typeson__type__?e.p:e)).then(t,r)})},TypesonPromise.race=function(e){return new TypesonPromise(function(t,r){Promise.race(e.map(e=>e?.constructor&&\"__typeson__type__\"in e.constructor&&\"TypesonPromise\"===e.constructor.__typeson__type__?e.p:e)).then(t,r)})},TypesonPromise.allSettled=function(e){return new TypesonPromise(function(t,r){Promise.allSettled(e.map(e=>e?.constructor&&\"__typeson__type__\"in e.constructor&&\"TypesonPromise\"===e.constructor.__typeson__type__?e.p:e)).then(t,r)})};const{hasOwn:e}=Object,t=Object.getPrototypeOf;function isThenable(e,t){return isObject(e)&&\"function\"==typeof e.then&&(!t||\"function\"==typeof e.catch)}function toStringTag(e){return Object.prototype.toString.call(e).slice(8,-1)}function hasConstructorOf(r,n){if(!r||\"object\"!=typeof r)return!1;const o=t(r);if(!o)return null===n;const a=e(o,\"constructor\")&&o.constructor;return\"function\"!=typeof a?null===n:n===a||null!==n&&Function.prototype.toString.call(a)===Function.prototype.toString.call(n)||\"function\"==typeof n&&\"string\"==typeof a.__typeson__type__&&a.__typeson__type__===n.__typeson__type__}function isPlainObject(e){return!(!e||\"Object\"!==toStringTag(e))&&(!t(e)||hasConstructorOf(e,Object))}function isUserObject(e){if(!e||\"Object\"!==toStringTag(e))return!1;const r=t(e);return!r||hasConstructorOf(e,Object)||isUserObject(r)}function isObject(e){return null!==e&&\"object\"==typeof e}function escapeKeyPathComponent(e){return e.replaceAll(\"''\",\"''''\").replace(/^$/u,\"''\").replaceAll(\"~\",\"~0\").replaceAll(\".\",\"~1\")}function unescapeKeyPathComponent(e){return e.replaceAll(\"~1\",\".\").replaceAll(\"~0\",\"~\").replace(/^''$/u,\"\").replaceAll(\"''''\",\"''\")}function getByKeyPath(t,r,n){if(\"\"===r)return t;if(null===t||\"object\"!=typeof t)throw new TypeError(\"Unexpected non-object type\");const o=r.indexOf(\".\"),a=unescapeKeyPathComponent(-1===o?r:r.slice(0,o));if(!n||e(t,a)){if(-1!==o){const e=t[a];return void 0===e?void 0:getByKeyPath(e,r.slice(o+1),n)}return t[a]}}function setAtKeyPath(t,r,n,o){if(\"\"===r)return n;let a=t,s=r;for(;;){if(!a||\"object\"!=typeof a)throw new TypeError(\"Unexpected non-object type\");const r=s.indexOf(\".\"),i=unescapeKeyPathComponent(-1===r?s:s.slice(0,r));if(\"__proto__\"===i)throw new TypeError(\"Invalid property\");if(-1===r)return a[i]=n,t;if(o&&!e(a,i))throw new TypeError(\"Invalid property\");a=a[i],s=s.slice(r+1)}}function getJSONType(e){return null===e?\"null\":Array.isArray(e)?\"array\":typeof e}\n/**\n * @file Typeson - JSON with types.\n * @license The MIT License (MIT)\n * @copyright (c) 2016-2018 David Fahlander, Brett Zamir\n */const{keys:r,hasOwn:n}=Object,{isArray:o}=Array,a=[\"type\",\"replaced\",\"iterateIn\",\"iterateUnsetNumeric\",\"iterateSymbols\",\"addLength\"];function setOwnEnumerable(e,t,r){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0})}const s=[\"asyncIterator\",\"hasInstance\",\"isConcatSpreadable\",\"iterator\",\"match\",\"matchAll\",\"replace\",\"search\",\"species\",\"split\",\"toPrimitive\",\"toStringTag\",\"unscopables\"];function nestedPathsFirst(e,t){if(\"\"===e.keypath)return-1;let r=e.keypath.match(/\\./gu)??0,n=t.keypath.match(/\\./gu)??0;return r&&(r=r.length),n&&(n=n.length),r>n?-1:r<n?1:e.keypath<t.keypath?-1:e.keypath>t.keypath?1:0}class Typeson{constructor(e){this.options=e,this.plainObjectReplacers=[],this.nonplainObjectReplacers=[],this.revivers={},this.types={},this.symbolsByName=Object.create(null),this.symbolsByValue=new Map;const t=e?.symbols;t&&Object.entries(t).forEach(([e,t])=>{if(\"symbol\"!=typeof t)throw new TypeError(\"Non-symbol value supplied for `symbols` entry: \"+e);this.symbolsByName[e]=t,this.symbolsByValue.set(t,e)})}stringify(e,t,r,n){n={...this.options,...n,stringification:!0};const a=this.encapsulate(e,null,n);return o(a)?JSON.stringify(a[0],t,r):a.then(e=>JSON.stringify(e,t,r))}stringifySync(e,t,r,n){return this.stringify(e,t,r,{throwOnBadSyncType:!0,...n,sync:!0})}stringifyAsync(e,t,r,n){return this.stringify(e,t,r,{throwOnBadSyncType:!0,...n,sync:!1})}parse(e,t,r){return r={...this.options,...r,parse:!0},this.revive(JSON.parse(e,t),r)}parseSync(e,t,r){return this.parse(e,t,{throwOnBadSyncType:!0,...r,sync:!0})}parseAsync(e,t,r){return this.parse(e,t,{throwOnBadSyncType:!0,...r,sync:!1})}specialTypeNames(e,t,r={}){return this.encapsulate(e,t,{...r,returnTypeNames:!0})}rootTypeName(e,t,r={}){return this.encapsulate(e,t,{...r,iterateNone:!0})}encapsulate(e,t,i){const c={sync:!0,...this.options,...i},{sync:l}=c,u={},y={},p=[],f=[],d=[],m=!(\"cyclic\"in c)||c.cyclic,{encapsulateObserver:h,encapsulateError:b}=c,finish=e=>{const t=Object.values(u);if(c.iterateNone)return t.length?t[0]:getJSONType(e);if(c.returnTypeNames)return!!t.length&&[...new Set(t)];const r=Object.keys(y).length>0,o=isObject(e)&&(n(e,\"$types\")||n(e,\"$symbolKeys\"));return r||t.length?(!o&&e&&isPlainObject(e)?t.length&&(e.$types=u):e={$:e,$types:{$:u}},r&&(e.$symbolKeys=y)):o&&(e={$:e,$types:!0}),e},checkPromises=async(e,t)=>{const r=await Promise.all(t.map(e=>e[1].p));return await Promise.all(r.map(async function(r){const n=[],[o]=t.splice(0,1),[a,,s,i,c,l,u]=o,y=_encapsulate(a,r,s,i,n,!0,u),p=hasConstructorOf(y,TypesonPromise);return a&&p?(setOwnEnumerable(c,l,await y.p),checkPromises(e,n)):(a?setOwnEnumerable(c,l,y):e=p?y.p:y,checkPromises(e,n))})),e},_adaptBuiltinStateObjectProperties=(e,t,r)=>{Object.assign(e,t);const n=a.map(t=>{const r=e[t];return delete e[t],r});r(),a.forEach((t,r)=>{e[t]=n[r]})},_encapsulate=(e,t,a,i,l,d,m)=>{let g,v={};const w=h?function(r){const n=m??i.type??getJSONType(t);h(Object.assign(r??v,{keypath:e,value:t,cyclic:a,stateObj:i,promisesData:l,resolvingTypesonPromise:d,awaitingTypesonPromise:hasConstructorOf(t,TypesonPromise)},{type:n}))}:null,getEncapsulatedValue=(e,t,r)=>{try{return{value:_encapsulate(e,t[r],Boolean(a),i,l,d)}}catch(n){if(!b)throw n;const o=m??i.type??getJSONType(t),a=b({keypath:e,error:n,parent:t,key:r,stateObj:i,type:o});if(!a)throw n;if(\"substitute\"in a)return{value:a.substitute,substitute:!0};if(a.ignore)return;throw n}};if([\"string\",\"boolean\",\"number\",\"undefined\"].includes(typeof t))return void 0===t||t===1/0||0===t||t===-1/0||Number.isNaN(t)?(g=i.replaced?t:replace(e,t,i,l,!1,d,w),g!==t&&(v={replaced:g})):g=t,w&&w(),g;if(null===t)return w&&w(),t;if(a&&t&&\"object\"==typeof t&&!i.iterateIn&&!i.iterateUnsetNumeric){const r=p.indexOf(t);if(-1!==r)return u[e]=\"#\",w&&w({cyclicKeypath:f[r]}),\"#\"+f[r];!0===a&&(p.push(t),f.push(e))}const O=isPlainObject(t),A=o(t),T=(O||A)&&(!this.plainObjectReplacers.length||i.replaced)||i.iterateIn?t:replace(e,t,i,l,O||A,null,w);let S;if(T!==t?(g=T,v={replaced:T}):\"\"===e&&hasConstructorOf(t,TypesonPromise)?(l.push([e,t,a,i,void 0,void 0,i.type]),g=t):A&&\"object\"!==i.iterateIn||\"array\"===i.iterateIn?(S=new Array(t.length),v={clone:S}):!O&&(\"object\"!=typeof t||\"toJSON\"in t||hasConstructorOf(t,TypesonPromise)||hasConstructorOf(t,Promise)||hasConstructorOf(t,ArrayBuffer))&&\"object\"!==i.iterateIn?g=t:(S={},i.addLength&&(S.length=t.length),v={clone:S}),w&&w(),c.iterateNone)return S??g;if(!S)return g;if(i.iterateIn){for(const r in t){const o={ownKeys:n(t,r)};_adaptBuiltinStateObjectProperties(i,o,()=>{const n=e+(e?\".\":\"\")+escapeKeyPathComponent(r),o=getEncapsulatedValue(n,t,r),s=o&&o.value;hasConstructorOf(s,TypesonPromise)?l.push([n,s,Boolean(a),i,S,r,i.type]):o&&(void 0!==s||\"substitute\"in o)&&setOwnEnumerable(S,r,s)})}w&&w({endIterateIn:!0,end:!0})}else r(t).forEach(function(r){const n=e+(e?\".\":\"\")+escapeKeyPathComponent(r);_adaptBuiltinStateObjectProperties(i,{ownKeys:!0},()=>{const e=getEncapsulatedValue(n,t,r),o=e&&e.value;hasConstructorOf(o,TypesonPromise)?l.push([n,o,Boolean(a),i,S,r,i.type]):e&&(void 0!==o||\"substitute\"in e)&&setOwnEnumerable(S,r,o)})}),w&&w({endIterateOwn:!0,end:!0}),(i.iterateSymbols||c.iterateSymbols)&&(Object.getOwnPropertySymbols(t).filter(e=>Object.prototype.propertyIsEnumerable.call(t,e)).forEach(r=>{const n=function resolveSymbolIdentity(e,t){const r=Symbol.keyFor(e);if(void 0!==r)return{for:r};const n=s.find(t=>Symbol[t]===e);if(n)return{wellKnown:n};const o=t.get(e);return void 0!==o?{registered:o}:null}(r,this.symbolsByValue);if(!n){if(c.throwOnUnregisteredSymbol)throw new TypeError(\"Cannot serialize a Symbol-keyed property whose Symbol has no portable identity (not global, not well-known, and not in the `symbols` option): \"+String(r));return}const o=y[e]??=[],u={key:n};o.push(u);const p=o.length-1,f=`$symbolKeys.${escapeKeyPathComponent(e)}.${String(p)}.value`,d={value:t[r]};_adaptBuiltinStateObjectProperties(i,{ownKeys:!0},()=>{const e=getEncapsulatedValue(f,d,\"value\"),t=e&&e.value;hasConstructorOf(t,TypesonPromise)?l.push([f,t,Boolean(a),i,u,\"value\",i.type]):e&&(void 0!==t||\"substitute\"in e)&&setOwnEnumerable(u,\"value\",t)})}),w&&w({endIterateSymbols:!0,end:!0}));if(i.iterateUnsetNumeric){const r=t.length;for(let n=0;n<r;n++){if(n in t)continue;const r=`${e}${e?\".\":\"\"}${String(n)}`;_adaptBuiltinStateObjectProperties(i,{ownKeys:!1},()=>{const e=_encapsulate(r,void 0,Boolean(a),i,l,d);hasConstructorOf(e,TypesonPromise)?l.push([r,e,Boolean(a),i,S,n,i.type]):void 0!==e&&setOwnEnumerable(S,n,e)})}w&&w({endIterateUnsetNumeric:!0,end:!0})}return S},replace=(e,t,r,n,o,a,s)=>{const i=o?this.plainObjectReplacers:this.nonplainObjectReplacers;let c=i.length;for(;c--;){const o=i[c];if(o.test(t,r)){const{type:i}=o;if(Object.hasOwn(this.revivers,i)){const t=u[e];u[e]=t?[i].concat(t):i}if(Object.assign(r,{type:i,replaced:!0}),(l||!o.replaceAsync)&&!o.replace)return s&&s({typeDetected:!0}),_encapsulate(e,t,m&&\"readonly\",r,n,a,i);let c;if(s&&s({replacing:!0}),l||!o.replaceAsync){if(void 0===o.replace)throw new TypeError(\"Missing replacer\");c=o.replace(t,r)}else c=o.replaceAsync(t,r);return _encapsulate(e,c,m&&\"readonly\",r,n,a,i)}}return t},g=_encapsulate(\"\",e,m,t??{},d);if(d.length)return l&&c.throwOnBadSyncType?(()=>{throw new TypeError(\"Sync method requested but async result obtained\")})():Promise.resolve(checkPromises(g,d)).then(finish);if(!l&&c.throwOnBadSyncType)throw new TypeError(\"Async method requested but sync result obtained\");return l&&c.stringification?[finish(g)]:l?finish(g):Promise.resolve(finish(g))}encapsulateSync(e,t,r){return this.encapsulate(e,t,{throwOnBadSyncType:!0,...r,sync:!0})}encapsulateAsync(e,t,r){return this.encapsulate(e,t,{throwOnBadSyncType:!0,...r,sync:!1})}revive(e,t){const a={sync:!0,...this.options,...t},{sync:i}=a;function finishRevival(e){if(i)return e;if(a.throwOnBadSyncType)throw new TypeError(\"Async method requested but sync result obtained\");return Promise.resolve(e)}if(!e||\"object\"!=typeof e||Array.isArray(e))return finishRevival(e);let c=e.$types;if(!0===c)return finishRevival(e.$);const l=e.$symbolKeys;let u=void 0!==l;if(!c||\"object\"!=typeof c||Array.isArray(c)){if(!l)return finishRevival(e);c={}}const y=[],p=Object.create(null),f={};let d=!0;c.$&&isPlainObject(c.$)&&(e=e.$,c=c.$,d=!1,u=!1,void 0!==l&&isObject(e)&&!n(e,\"$symbolKeys\")&&(e.$symbolKeys=l,u=!0));const executeReviver=(e,t)=>{const[r]=this.revivers[e]??[];if(!r)throw new Error(\"Unregistered type: \"+e);if(i&&!(\"revive\"in r))return t;if(!i&&r.reviveAsync)return r.reviveAsync(t,f);if(r.revive)return r.revive(t,f);throw new Error(\"Missing reviver\")},m=[];function checkUndefined(e){return hasConstructorOf(e,Undefined)?void 0:e}const reHomeSymbolKeys=e=>{if(!isObject(e))return;const t=u?e.$symbolKeys:l;t&&(Object.entries(t).forEach(([t,r])=>{const o=getByKeyPath(e,t,!0);isObject(o)&&r.forEach(e=>{if(!n(e,\"value\"))return;const t=function resolveSymbolFromIdentity(e,t){if(\"for\"in e)return Symbol.for(e.for);if(\"wellKnown\"in e){const t=s.find(t=>t===e.wellKnown);if(!t)throw new Error(\"Unknown well-known Symbol: \"+e.wellKnown);return Symbol[t]}if(!n(t,e.registered))throw new Error(\"Unregistered symbol: \"+e.registered);return t[e.registered]}(e.key,this.symbolsByName),r=checkUndefined(e.value);e.descriptor?Object.defineProperty(o,t,{configurable:!0,enumerable:!0,writable:!0,...e.descriptor,value:r}):o[t]=r})}),u&&delete e.$symbolKeys)},h=(()=>{if(!c)throw new Error(\"Found bad `types`\");const t=[];if(Object.entries(c).forEach(([e,r])=>{\"#\"!==r&&[].concat(r).forEach(r=>{const[,{plain:n}]=this.revivers[r]??[null,{}];n&&(t.push({keypath:e,type:r}),delete c[e])})}),t.length)return t.sort(nestedPathsFirst),t.reduce(function reducer(t,{keypath:r,type:n}){if(isThenable(t))return t.then(e=>reducer(e,{keypath:r,type:n}));let o=getByKeyPath(e,r,!0);if(o=executeReviver(n,o),hasConstructorOf(o,TypesonPromise))return o.then(t=>{const n=setAtKeyPath(e,r,t,!0);n===t&&(e=n)});const a=setAtKeyPath(e,r,o,!0);a===o&&(e=a)},void 0)})();let b;return hasConstructorOf(h,TypesonPromise)?b=h.then(()=>e):(b=function _revive(e,t,a,s,l){if(d&&\"$types\"===e)return;const u=m.length,f=n(c,e)?c[e]:void 0,h=o(t);if(h||isPlainObject(t)){const o=h?new Array(t.length):{};for(r(t).forEach(r=>{const n=_revive(e+(e?\".\":\"\")+escapeKeyPathComponent(r),t[r],a??o,o,r),set=e=>(hasConstructorOf(e,Undefined)?setOwnEnumerable(o,r,void 0):void 0!==e&&setOwnEnumerable(o,r,e),e);hasConstructorOf(n,TypesonPromise)?m.push(n.then(e=>set(e))):set(n)}),t=o;y.length;){const[[e,t,r,o]]=y,a=n(p,t),s=a?p[t]:getByKeyPath(e,t,!0);if(!a&&void 0===s)break;setOwnEnumerable(r,o,s),y.shift()}}if(!f)return p[e]=t,t;if(\"#\"===f){const e=t.slice(1),r=n(p,e),o=r?p[e]:getByKeyPath(a,e,!0);return r||void 0!==o||y.push([a,e,s,l]),o}const applyType=t=>{const r=[].concat(f).reduce(function reducer(e,t){if(hasConstructorOf(e,TypesonPromise))return e.then(e=>reducer(e,t));if(\"string\"!=typeof t)throw new TypeError(\"Bad type JSON\");return executeReviver(t,e)},t);return hasConstructorOf(r,TypesonPromise)?r.then(t=>(p[e]=t,t)):(p[e]=r,r)};return!i&&m.length>u?TypesonPromise.all(m.slice(u)).then(()=>applyType(t)):applyType(t)}(\"\",e,null),m.length&&(b=TypesonPromise.resolve(b).then(e=>TypesonPromise.all([e,...m])).then(([e])=>e))),l&&(isThenable(b)?b=b.then(e=>(reHomeSymbolKeys(e),e)):reHomeSymbolKeys(b)),isThenable(b)?i&&a.throwOnBadSyncType?(()=>{throw new TypeError(\"Sync method requested but async result obtained\")})():hasConstructorOf(b,TypesonPromise)?b.p.then(checkUndefined):b:!i&&a.throwOnBadSyncType?(()=>{throw new TypeError(\"Async method requested but sync result obtained\")})():i?checkUndefined(b):Promise.resolve(checkUndefined(b))}reviveSync(e,t){return this.revive(e,{throwOnBadSyncType:!0,...t,sync:!0})}reviveAsync(e,t){return this.revive(e,{throwOnBadSyncType:!0,...t,sync:!1})}register(e,t){const n=t??{},reg=e=>{o(e)?e.forEach(e=>{reg(e)}):r(e).forEach(t=>{if(\"#\"===t)throw new TypeError(\"# cannot be used as a type name as it is reserved for cyclic objects\");if(i.includes(t))throw new TypeError(\"Plain JSON object types are reserved as type names\");let r=e[t];if([this.plainObjectReplacers,this.nonplainObjectReplacers].forEach(e=>{const r=e.findIndex(e=>e.type===t);-1!==r&&e.splice(r,1)}),delete this.revivers[t],delete this.types[t],\"function\"==typeof r){const e=r;r={test:t=>t&&t.constructor===e,replace:e=>({...e}),revive:t=>Object.assign(Object.create(e.prototype),t)}}else if(o(r)){const[e,t,n]=r;r={test:e,replace:t,revive:n}}if(!r?.test)return;const a={type:t,test:r.test.bind(r)};r.replace&&(a.replace=r.replace.bind(r)),r.replaceAsync&&(a.replaceAsync=r.replaceAsync.bind(r));const s=\"number\"==typeof n.fallback?n.fallback:n.fallback?0:1/0;if(r.testPlainObjects?this.plainObjectReplacers.splice(s,0,a):this.nonplainObjectReplacers.splice(s,0,a),r.revive||r.reviveAsync){const e={};r.revive&&(e.revive=r.revive.bind(r)),r.reviveAsync&&(e.reviveAsync=r.reviveAsync.bind(r)),this.revivers[t]=[e,{plain:r.testPlainObjects}]}this.types[t]=r})};return[].concat(e).forEach(e=>{reg(e)}),this}}class Undefined{}Undefined.__typeson__type__=\"TypesonUndefined\";const i=[\"null\",\"boolean\",\"number\",\"string\",\"array\",\"object\"];for(var c=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",l=new Uint8Array(256),u=0;u<64;u++)l[c.codePointAt(u)]=u;var y=function encode(e,t,r){null==r&&(r=e.byteLength);for(var n=new Uint8Array(e,0,r),o=n.length,a=\"\",s=0;s<o;s+=3)a+=c[n[s]>>2],a+=c[(3&n[s])<<4|n[s+1]>>4],a+=c[(15&n[s+1])<<2|n[s+2]>>6],a+=c[63&n[s+2]];return o%3==2?a=a.slice(0,-1)+\"=\":o%3==1&&(a=a.slice(0,-2)+\"==\"),a},p=function decode(e,t){var r=e.length;if(r%4)throw new Error(\"Bad base64 length: not divisible by four\");var n,o,a,s,i=.75*e.length,c=0;\"=\"===e[e.length-1]&&(i--,\"=\"===e[e.length-2]&&i--);for(var u=new ArrayBuffer(i,t),y=new Uint8Array(u),p=0;p<r;p+=4)n=l[e.codePointAt(p)],o=l[e.codePointAt(p+1)],a=l[e.codePointAt(p+2)],s=l[e.codePointAt(p+3)],y[c++]=n<<2|o>>4,y[c++]=(15&o)<<4|a>>2,y[c++]=(3&a)<<6|63&s;return u};const f={arraybuffer:{test:e=>\"ArrayBuffer\"===toStringTag(e),replace(e,t){t.buffers||(t.buffers=[]);const r=t.buffers.indexOf(e);return-1!==r?{index:r}:(t.buffers.push(e),{s:y(e),maxByteLength:e.maxByteLength,resizable:e.resizable})},revive(e,t){if(t.buffers||(t.buffers=[]),Object.hasOwn(e,\"index\"))return t.buffers[e.index];const r=p(e.s,e.resizable?{maxByteLength:e.maxByteLength}:void 0);return t.buffers.push(r),r}}},d={audiodata:{test:e=>\"AudioData\"===toStringTag(e),replace(e){const{format:t,sampleRate:r,numberOfFrames:n,numberOfChannels:o,timestamp:a}=e,s=t.endsWith(\"-planar\")?o:1,i=[];let c=0;for(let t=0;t<s;t++){const r=e.allocationSize({planeIndex:t});i.push(r),c+=r}const l=new ArrayBuffer(c);let u=0;for(let t=0;t<s;t++){const r=new Uint8Array(l,u,i[t]);e.copyTo(r,{planeIndex:t}),u+=i[t]}return{format:t,sampleRate:r,numberOfFrames:n,numberOfChannels:o,timestamp:a,data:l}},revive:({format:e,sampleRate:t,numberOfFrames:r,numberOfChannels:n,timestamp:o,data:a})=>new AudioData({format:e,sampleRate:t,numberOfFrames:r,numberOfChannels:n,timestamp:o,data:new Uint8Array(a)})}},m={bigintObject:{test:e=>\"object\"==typeof e&&hasConstructorOf(e,BigInt),replace:String,revive:e=>new Object(BigInt(e))}},h={bigint:{test:e=>\"bigint\"==typeof e,replace:String,revive:e=>BigInt(e)}};function arraybuffer2string(e){return new Uint8Array(e).reduce((e,t)=>e+String.fromCodePoint(t),\"\")}function string2arraybuffer(e){const t=new Uint8Array(e.length);for(let r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return t.buffer}const b={blob:{test:e=>\"Blob\"===toStringTag(e),replace(e){const t=new XMLHttpRequest;if(t.overrideMimeType(\"text/plain; charset=x-user-defined\"),t.open(\"GET\",URL.createObjectURL(e),!1),t.send(),200!==t.status&&0!==t.status)throw new Error(\"Bad Blob access: \"+t.status);return{type:e.type,stringContents:t.responseText}},revive(e){const{type:t,stringContents:r}=e;return new Blob([string2arraybuffer(r)],{type:t})},replaceAsync:e=>new TypesonPromise((t,r)=>{const n=new FileReader;n.addEventListener(\"load\",()=>{t({type:e.type,stringContents:arraybuffer2string(n.result)})}),n.addEventListener(\"error\",()=>{r(n.error)}),n.readAsArrayBuffer(e)})}};function generateUUID(){let e=Date.now();return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replaceAll(/[xy]/gu,function(t){const r=Math.trunc((e+16*Math.random())%16);return e=Math.floor(e/16),(\"x\"===t?r:3&r|8).toString(16)})}const g={},v={cloneable:{test:e=>e&&\"object\"==typeof e&&\"function\"==typeof e[Symbol.for(\"cloneEncapsulate\")],replace(e){const t=e[Symbol.for(\"cloneEncapsulate\")](),r=generateUUID();return g[r]=e,{uuid:r,encapsulated:t}},revive(e){const{uuid:t,encapsulated:r}=e;return g[t][Symbol.for(\"cloneRevive\")](r)}}},w={cryptokey:{test:e=>\"CryptoKey\"===toStringTag(e)&&e.extractable,replaceAsync:e=>new TypesonPromise(async(t,r)=>{let n;try{n=await crypto.subtle.exportKey(\"jwk\",e)}catch(e){return void r(e)}t({jwk:n,algorithm:e.algorithm,usages:e.usages})}),revive(e){const{jwk:t,algorithm:r,usages:n}=e;return crypto.subtle.importKey(\"jwk\",t,r,!0,n)}}},O={dataview:{test:e=>\"DataView\"===toStringTag(e),replace({buffer:e,byteOffset:t,byteLength:r},n){n.buffers||(n.buffers=[]);const o=n.buffers.indexOf(e);return-1!==o?{index:o,byteOffset:t,byteLength:r}:(n.buffers.push(e),{encoded:y(e),maxByteLength:e.maxByteLength,resizable:e.resizable,byteOffset:t,byteLength:r})},revive(e,t){t.buffers||(t.buffers=[]);const{byteOffset:r,byteLength:n,encoded:o,index:a,maxByteLength:s,resizable:i}=e;let c;return\"index\"in e?c=t.buffers[a]:(c=p(o,i?{maxByteLength:s}:s),t.buffers.push(c)),new DataView(c,r,n)}}},A={date:{test:e=>\"Date\"===toStringTag(e),replace(e){const t=e.getTime();return Number.isNaN(t)?\"NaN\":t},revive:e=>\"NaN\"===e?new Date(NaN):new Date(e)}},T={domexception:{test:e=>\"DOMException\"===toStringTag(e),replace:e=>({name:e.name,message:e.message}),revive:({message:e,name:t})=>new DOMException(e,t)}},S={};function create$5(e){S[e.name.toLowerCase()]={test:t=>toStringTag(t)===e.name,replace:e=>e.is2D?{a:e.a,b:e.b,c:e.c,d:e.d,e:e.e,f:e.f}:{m11:e.m11,m12:e.m12,m13:e.m13,m14:e.m14,m21:e.m21,m22:e.m22,m23:e.m23,m24:e.m24,m31:e.m31,m32:e.m32,m33:e.m33,m34:e.m34,m41:e.m41,m42:e.m42,m43:e.m43,m44:e.m44},revive:t=>Object.hasOwn(t,\"a\")?new e([t.a,t.b,t.c,t.d,t.e,t.f]):new e([t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.m41,t.m42,t.m43,t.m44])}}\"undefined\"!=typeof DOMMatrix&&create$5(DOMMatrix),\"undefined\"!=typeof DOMMatrixReadOnly&&create$5(DOMMatrixReadOnly);const P={};function create$4(e){P[e.name.toLowerCase()]={test:t=>toStringTag(t)===e.name,replace:e=>({x:e.x,y:e.y,z:e.z,w:e.w}),revive:({x:t,y:r,z:n,w:o})=>new e(t,r,n,o)}}\"undefined\"!=typeof DOMPoint&&create$4(DOMPoint),\"undefined\"!=typeof DOMPointReadOnly&&create$4(DOMPointReadOnly);const E={domquad:{test:e=>\"DOMQuad\"===toStringTag(e),replace:e=>({p1:e.p1,p2:e.p2,p3:e.p3,p4:e.p4}),revive:({p1:e,p2:t,p3:r,p4:n})=>new DOMQuad(e,t,r,n)}},N={};function create$3(e){N[e.name.toLowerCase()]={test:t=>toStringTag(t)===e.name,replace:e=>({x:e.x,y:e.y,width:e.width,height:e.height}),revive:({x:t,y:r,width:n,height:o})=>new e(t,r,n,o)}}\"undefined\"!=typeof DOMRect&&create$3(DOMRect),\"undefined\"!=typeof DOMRectReadOnly&&create$3(DOMRectReadOnly);const x={encodedaudiochunk:{test:e=>\"EncodedAudioChunk\"===toStringTag(e),replace(e){const{type:t,timestamp:r,duration:n,byteLength:o}=e,a=new ArrayBuffer(o);return e.copyTo(a),{type:t,timestamp:r,duration:n,data:a}},revive({type:e,timestamp:t,duration:r,data:n}){const o={type:e,timestamp:t,data:new Uint8Array(n)};return null!=r&&(o.duration=r),new EncodedAudioChunk(o)}}},j={encodedvideochunk:{test:e=>\"EncodedVideoChunk\"===toStringTag(e),replace(e){const{type:t,timestamp:r,duration:n,byteLength:o}=e,a=new ArrayBuffer(o);return e.copyTo(a),{type:t,timestamp:r,duration:n,data:a}},revive({type:e,timestamp:t,duration:r,data:n}){const o={type:e,timestamp:t,data:new Uint8Array(n)};return null!=r&&(o.duration=r),new EncodedVideoChunk(o)}}},B={error:{test:e=>\"Error\"===toStringTag(e),replace:({name:e,message:t,cause:r,stack:n,fileName:o,lineNumber:a,columnNumber:s})=>({name:e,message:t,cause:r,stack:n,fileName:o,lineNumber:a,columnNumber:s}),revive(e){const t=new Error(e.message);return t.name=e.name,t.cause=e.cause,t.stack=e.stack,t.fileName=e.fileName,t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}}},C={};function create$2(e){C[e.name.toLowerCase()]={test:t=>hasConstructorOf(t,e),replace:({name:e,message:t,cause:r,stack:n,fileName:o,lineNumber:a,columnNumber:s,errors:i})=>({name:e,message:t,cause:r,stack:n,fileName:o,lineNumber:a,columnNumber:s,errors:i}),revive(t){const r=\"undefined\"!=typeof AggregateError&&e===AggregateError?new e(t.errors,t.message):new e(t.message);return r.name=t.name,r.cause=t.cause,r.stack=t.stack,r.fileName=t.fileName,r.lineNumber=t.lineNumber,r.columnNumber=t.columnNumber,r}}}[TypeError,RangeError,SyntaxError,ReferenceError,EvalError,URIError].forEach(e=>create$2(e)),\"undefined\"!=typeof AggregateError&&create$2(AggregateError),\"function\"==typeof InternalError&&create$2(InternalError);const I={file:{test:e=>\"File\"===toStringTag(e),replace(e){const t=new XMLHttpRequest;if(t.overrideMimeType(\"text/plain; charset=x-user-defined\"),t.open(\"GET\",URL.createObjectURL(e),!1),t.send(),200!==t.status&&0!==t.status)throw new Error(\"Bad File access: \"+t.status);return{type:e.type,stringContents:t.responseText,name:e.name,lastModified:e.lastModified}},revive:({name:e,type:t,stringContents:r,lastModified:n})=>new File([string2arraybuffer(r)],e,{type:t,lastModified:n}),replaceAsync:e=>new TypesonPromise(function(t,r){const n=new FileReader;n.addEventListener(\"load\",function(){t({type:e.type,stringContents:arraybuffer2string(n.result),name:e.name,lastModified:e.lastModified})}),n.addEventListener(\"error\",function(){r(n.error)}),n.readAsArrayBuffer(e)})}},U={file:I.file,filelist:{test:e=>\"FileList\"===toStringTag(e),replace(e){const t=[];for(let r=0;r<e.length;r++)t[r]=e.item(r);return t},revive(e){class FileList{constructor(){this._files=arguments[0],this.length=this._files.length}item(e){return this._files[e]}get[Symbol.toStringTag](){return\"FileList\"}}return new FileList(e)}}},_={idbkeyrange:{test:e=>\"IDBKeyRange\"===toStringTag(e),replace:({lower:e,upper:t,lowerOpen:r,upperOpen:n})=>({lower:e,upper:t,lowerOpen:r,upperOpen:n}),revive:({lower:e,upper:t,lowerOpen:r,upperOpen:n})=>IDBKeyRange.bound(e,t,r,n)}},k={imagebitmap:{test:e=>\"ImageBitmap\"===toStringTag(e)||e&&e.dataset&&\"ImageBitmap\"===e.dataset.toStringTag,replace(e){const t=document.createElement(\"canvas\");return t.getContext(\"2d\").drawImage(e,0,0),{width:e.width,height:e.height,dataURL:t.toDataURL()}},revive(e){const t=\"undefined\"==typeof OffscreenCanvas?document.createElement(\"canvas\"):new OffscreenCanvas(e.width,e.height),r=t.getContext(\"2d\"),n=document.createElement(\"img\");return n.addEventListener(\"load\",function(){r.drawImage(n,0,0)}),n.src=e.dataURL,\"undefined\"==typeof OffscreenCanvas?t:t.transferToImageBitmap()},reviveAsync(e){const t=document.createElement(\"canvas\"),r=t.getContext(\"2d\"),n=document.createElement(\"img\");return n.addEventListener(\"load\",function(){r.drawImage(n,0,0)}),n.src=e.dataURL,new TypesonPromise(async(e,r)=>{try{e(await createImageBitmap(t))}catch(e){r(e)}})}}},M={imagedata:{test:e=>\"ImageData\"===toStringTag(e),replace(e){const t=\"Float16Array\"===toStringTag(e.data)?\"rgba-float16\":\"rgba-unorm8\";return{array:[...e.data],width:e.width,height:e.height,pixelFormat:t,colorSpace:e.colorSpace}},revive(e){const{array:t,width:r,height:n,colorSpace:o,pixelFormat:a}=e;return\"rgba-float16\"===a?new ImageData(new Float16Array(t),r,n,{colorSpace:o,pixelFormat:a}):new ImageData(new Uint8ClampedArray(t),r,n,{colorSpace:o,pixelFormat:a})}}},D={infinity:{test:e=>e===1/0,replace:()=>\"Infinity\",revive:()=>1/0}},R={test:e=>hasConstructorOf(e,Intl.Collator),replace:e=>e.resolvedOptions(),revive:e=>new Intl.Collator(e.locale,e)},L={IntlCollator:R,IntlDateTimeFormat:{test:e=>hasConstructorOf(e,Intl.DateTimeFormat),replace:e=>e.resolvedOptions(),revive:e=>new Intl.DateTimeFormat(e.locale,e)},IntlNumberFormat:{test:e=>hasConstructorOf(e,Intl.NumberFormat),replace:e=>e.resolvedOptions(),revive:e=>new Intl.NumberFormat(e.locale,e)}},F={map:{test:e=>\"Map\"===toStringTag(e),replace:e=>e.entries().toArray(),revive:e=>new Map(e)}},K={nan:{test:e=>Number.isNaN(e),replace:()=>\"NaN\",revive:()=>NaN}},$={negativeInfinity:{test:e=>e===-1/0,replace:()=>\"-Infinity\",revive:()=>-1/0}},q={negativeZero:{test:e=>Object.is(e,-0),replace:()=>0,revive:()=>-0}},W={nonbuiltinIgnore:{test:e=>e&&\"object\"==typeof e&&!Array.isArray(e)&&![\"Object\",\"Boolean\",\"Number\",\"String\",\"Error\",\"RegExp\",\"Math\",\"Date\",\"Map\",\"Set\",\"JSON\",\"ArrayBuffer\",\"SharedArrayBuffer\",\"DataView\",\"Int8Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"Int16Array\",\"Uint16Array\",\"Int32Array\",\"Uint32Array\",\"Float32Array\",\"Float64Array\",\"Promise\",\"String Iterator\",\"Array Iterator\",\"Map Iterator\",\"Set Iterator\",\"WeakMap\",\"WeakSet\",\"Atomics\",\"Module\"].includes(toStringTag(e)),replace(){}}},z={StringObject:{test:e=>\"String\"===toStringTag(e)&&\"object\"==typeof e,replace:String,revive:e=>new String(e)},BooleanObject:{test:e=>\"Boolean\"===toStringTag(e)&&\"object\"==typeof e,replace:e=>e.valueOf(),revive:e=>new Boolean(e)},NumberObject:{test:e=>\"Number\"===toStringTag(e)&&\"object\"==typeof e,replace(e){const t=e.valueOf();return Number.isNaN(t)?\"NaN\":t===1/0?\"Infinity\":t===-1/0?\"-Infinity\":Object.is(t,-0)?\"-0\":t},revive:e=>new Number(\"NaN\"===e?NaN:\"Infinity\"===e?1/0:\"-Infinity\"===e?-1/0:\"-0\"===e?-0:e)}},V={promise:{test:e=>\"Promise\"===toStringTag(e),replaceAsync:e=>new TypesonPromise(async t=>{try{t({value:await e})}catch(e){t({error:e})}}),revive:e=>e.error?Promise.reject(e.error):Promise.resolve(e.value)}},J={quotaexceedederror:{test:e=>\"QuotaExceededError\"===toStringTag(e),replace:({message:e,quota:t,requested:r,cause:n,stack:o,fileName:a,lineNumber:s,columnNumber:i})=>({message:e,quota:t,requested:r,cause:n,stack:o,fileName:a,lineNumber:s,columnNumber:i}),revive(e){const{message:t,quota:r,requested:n}=e,o={};null!=r&&(o.quota=r),null!=n&&(o.requested=n);const a=new QuotaExceededError(t,o);return a.cause=e.cause,a.stack=e.stack,a.fileName=e.fileName,a.lineNumber=e.lineNumber,a.columnNumber=e.columnNumber,a}}},H={regexp:{test:e=>\"RegExp\"===toStringTag(e),replace:e=>({source:e.source,flags:(e.global?\"g\":\"\")+(e.ignoreCase?\"i\":\"\")+(e.multiline?\"m\":\"\")+(e.sticky?\"y\":\"\")+(e.unicode?\"u\":\"\")+(e.unicodeSets?\"v\":\"\")+(e.hasIndices?\"d\":\"\")+(e.dotAll?\"s\":\"\")}),revive:({source:e,flags:t})=>new RegExp(e,t)}},Q={},G={resurrectable:{test:e=>e&&!Array.isArray(e)&&[\"object\",\"function\",\"symbol\"].includes(typeof e),replace(e){const t=generateUUID();return Q[t]=e,t},revive:e=>Q[e]}},X={set:{test:e=>\"Set\"===toStringTag(e),replace:e=>e.values().toArray(),revive:e=>new Set(e)}},Y={symbol:{test:e=>\"symbol\"==typeof e,replace:e=>({global:void 0!==Symbol.keyFor(e),sym:String(e).slice(7,-1)}),revive:e=>e.global?Symbol.for(e.sym):Symbol(e.sym)}},Z={};\"function\"==typeof Int8Array&&[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,...\"function\"==typeof BigInt64Array?[BigInt64Array,BigUint64Array]:[],...\"function\"==typeof Float16Array?[Float16Array]:[]].forEach(e=>function create$1(e){const t=e.name;Z[t.toLowerCase()]={test:e=>toStringTag(e)===t,replace:e=>(0===e.byteOffset&&e.byteLength===e.buffer.byteLength?e:e.slice(0)).buffer,revive:t=>\"ArrayBuffer\"===toStringTag(t)?new e(t):t}}(e));const ee={};\"function\"==typeof Int8Array&&[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,...\"function\"==typeof BigInt64Array?[BigInt64Array,BigUint64Array]:[],...\"function\"==typeof Float16Array?[Float16Array]:[]].forEach(e=>function create(e){const t=e.name;ee[t.toLowerCase()]={test:e=>toStringTag(e)===t,replace({buffer:e,byteOffset:t,length:r},n){n.buffers||(n.buffers=[]);const o=n.buffers.indexOf(e);return-1!==o?{index:o,byteOffset:t,length:r}:(n.buffers.push(e),{maxByteLength:e.maxByteLength,resizable:e.resizable,encoded:y(e),byteOffset:t,length:r})},revive(t,r){r.buffers||(r.buffers=[]);const{byteOffset:n,length:o,encoded:a,index:s,maxByteLength:i,resizable:c}=t;let l;return\"index\"in t?l=r.buffers[s]:(l=p(a,c?{maxByteLength:i}:void 0),r.buffers.push(l)),new e(l,n,o)}}}(e));const te={undef:{test:(e,t)=>void 0===e&&(t.ownKeys||!(\"ownKeys\"in t)),replace:()=>0,revive:()=>new Undefined}},re={userObject:{test:e=>isUserObject(e),replace:e=>({...e}),revive:e=>e}},ne={videoframe:{test:e=>\"VideoFrame\"===toStringTag(e),replaceAsync:e=>new TypesonPromise(async(t,r)=>{try{const{format:r,codedWidth:n,codedHeight:o,timestamp:a,duration:s,visibleRect:i,displayWidth:c,displayHeight:l,colorSpace:u}=e,y=new ArrayBuffer(e.allocationSize());await e.copyTo(y),t({format:r,codedWidth:n,codedHeight:o,timestamp:a,duration:s,visibleRect:{x:i.x,y:i.y,width:i.width,height:i.height},displayWidth:c,displayHeight:l,colorSpace:{primaries:u.primaries,transfer:u.transfer,matrix:u.matrix,fullRange:u.fullRange},data:y})}catch(e){r(e)}}),revive({format:e,codedWidth:t,codedHeight:r,timestamp:n,duration:o,visibleRect:a,displayWidth:s,displayHeight:i,colorSpace:c,data:l}){const u={format:e,codedWidth:t,codedHeight:r,timestamp:n,visibleRect:a,displayWidth:s,displayHeight:i,colorSpace:c};return null!=o&&(u.duration=o),new VideoFrame(new Uint8Array(l),u)}}},oe={webtransporterror:{test:e=>\"WebTransportError\"===toStringTag(e),replace:({message:e,streamErrorCode:t,cause:r,stack:n,fileName:o,lineNumber:a,columnNumber:s})=>({message:e,streamErrorCode:t,cause:r,stack:n,fileName:o,lineNumber:a,columnNumber:s}),revive(e){const{message:t,streamErrorCode:r}=e,n=new WebTransportError({message:t,streamErrorCode:r});return n.cause=e.cause,n.stack=e.stack,n.fileName=e.fileName,n.lineNumber=e.lineNumber,n.columnNumber=e.columnNumber,n}}},ae=[{arrayNonindexKeys:{testPlainObjects:!0,test:(e,t)=>!!Array.isArray(e)&&(Object.keys(e).some(e=>String(Number(e))!==e)&&(t.iterateIn=\"object\",t.addLength=!0),!0),replace:(e,t)=>(t.iterateUnsetNumeric=!0,e),revive(e){if(Array.isArray(e))return e;const t=[];return Object.entries(e).forEach(([e,r])=>{t[e]=r}),t}}},{sparseUndefined:{test:(e,t)=>void 0===e&&!1===t.ownKeys,replace:()=>0,revive(){}}}],se=[K,D,$,q],ie=[te,ae,z,se,A,B,C,H].concat(\"function\"==typeof Map?F:[],\"function\"==typeof Set?X:[],\"function\"==typeof ArrayBuffer?f:[],\"function\"==typeof Uint8Array?ee:[],\"function\"==typeof DataView?O:[],\"undefined\"!=typeof Intl?L:[],\"undefined\"!=typeof BigInt?[h,m]:[]),ce=[B,C],le=[ie,{arraybuffer:null},Z],ue=[{sparseArrays:{testPlainObjects:!0,test:e=>Array.isArray(e),replace:(e,t)=>(t.iterateUnsetNumeric=!0,e)}},{sparseUndefined:{test:(e,t)=>void 0===e&&!1===t.ownKeys,replace:()=>0,revive(){}}}],ye=[re,te,ae,z,se,A,H,M,k,I,U,b,B,C].concat(\"function\"==typeof Map?F:[],\"function\"==typeof Set?X:[],\"function\"==typeof ArrayBuffer?f:[],\"function\"==typeof Uint8Array?ee:[],\"function\"==typeof DataView?O:[],\"undefined\"!=typeof crypto?w:[],\"undefined\"!=typeof BigInt?[h,m]:[],\"undefined\"!=typeof DOMException?T:[],\"undefined\"!=typeof QuotaExceededError?J:[],\"undefined\"!=typeof WebTransportError?oe:[],\"undefined\"!=typeof DOMRect?N:[],\"undefined\"!=typeof DOMPoint?P:[],\"undefined\"!=typeof DOMQuad?E:[],\"undefined\"!=typeof DOMMatrix?S:[],\"undefined\"!=typeof AudioData?d:[],\"undefined\"!=typeof EncodedAudioChunk?x:[],\"undefined\"!=typeof EncodedVideoChunk?j:[],\"undefined\"!=typeof VideoFrame?ne:[]);const pe=ye.concat({checkDataCloneException:{test(e){const t={}.toString.call(e).slice(8,-1);if([\"symbol\",\"function\"].includes(typeof e)||[\"Arguments\",\"Module\",\"Promise\",\"WeakMap\",\"WeakSet\",\"Event\",\"MessageChannel\",\"MessagePort\"].includes(t)||e&&e.constructor&&[\"MessageChannel\",\"MessagePort\"].includes(e.constructor.name)||[\"ArrayBuffer\",\"DataView\",\"Int8Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"Int16Array\",\"Uint16Array\",\"Int32Array\",\"Uint32Array\",\"Float32Array\",\"Float64Array\",\"BigInt64Array\",\"BigUint64Array\"].includes(t)&&function isBufferDetached(e){if(\"boolean\"==typeof e.detached)return e.detached;if(0!==e.byteLength)return!1;try{return new Uint8Array(e),!1}catch{return!0}}(e)||e&&\"object\"==typeof e&&\"number\"==typeof e.nodeType&&\"function\"==typeof e.insertBefore)throw new DOMException(\"The object cannot be cloned.\",\"DataCloneError\");return!1}}}),fe=pe.concat({checkSharedArrayBufferException:{test(e){if(\"SharedArrayBuffer\"==={}.toString.call(e).slice(8,-1))throw new DOMException(\"The object cannot be cloned.\",\"DataCloneError\");return!1}}}),de=[ue,te],me=[ie];export{i as JSON_TYPES,Typeson,TypesonPromise,Undefined,ae as arrayNonindexKeys,f as arraybuffer,d as audiodata,h as bigint,m as bigintObject,b as blob,ie as builtin,v as cloneable,w as cryptokey,O as dataview,A as date,T as domexception,S as dommatrix,P as dompoint,E as domquad,N as domrect,x as encodedaudiochunk,j as encodedvideochunk,B as error,C as errors,escapeKeyPathComponent,I as file,U as filelist,getByKeyPath,getJSONType,hasConstructorOf,_ as idbkeyrange,k as imagebitmap,M as imagedata,D as infinity,L as intlTypes,isObject,isPlainObject,isThenable,isUserObject,F as map,K as nan,$ as negativeInfinity,q as negativeZero,W as nonbuiltinIgnore,ce as postmessage,z as primitiveObjects,V as promise,J as quotaexceedederror,H as regexp,G as resurrectable,X as set,setAtKeyPath,le as socketio,ue as sparseUndefined,se as specialNumbers,ye as structuredCloning,fe as structuredCloningForStorage,pe as structuredCloningThrowing,Y as symbol,toStringTag,ee as typedArrays,Z as typedArraysSocketio,te as undef,de as undefPreset,unescapeKeyPathComponent,me as universal,re as userObject,ne as videoframe,oe as webtransporterror};\n//# sourceMappingURL=index.min.js.map\n","import {\n Typeson, hasConstructorOf, structuredCloningForStorage\n} from 'typeson-registry';\n\nimport {createDOMException, ShimDOMException} from './DOMException.js';\n\n// See: https://stackoverflow.com/questions/42170826/categories-for-rejection-by-the-structured-cloning-algorithm\n\n// Although typeson-registry already has a FileList type in its structured cloning presets,\n// we need to override it so it works with our tests\n\nconst specSet = structuredCloningForStorage\n .flatMap((preset) => (Array.isArray(preset) ? preset : [preset]))\n .find((preset) => preset && !Array.isArray(preset) && 'filelist' in preset);\n\nconst origFileList = specSet && !Array.isArray(specSet) && 'filelist' in specSet\n ? specSet.filelist\n : undefined;\n\nconst origTest = origFileList && typeof origFileList === 'object' && 'test' in origFileList && typeof origFileList.test === 'function'\n ? origFileList.test\n : undefined;\n\nconst origRevive = origFileList && typeof origFileList === 'object' && 'revive' in origFileList && typeof origFileList.revive === 'function'\n ? origFileList.revive\n : undefined;\n\nconst customFileList = origFileList\n ? {\n ...origFileList,\n /**\n * @param {unknown} x\n * @param {import('typeson').StateObject} state\n * @returns {boolean}\n */\n test (x, state) {\n if (typeof FileList !== 'undefined') {\n return x instanceof FileList;\n }\n return typeof origTest === 'function' ? origTest(x, state) : false;\n },\n /**\n * @param {unknown} x\n * @param {import('typeson').StateObject} state\n * @returns {unknown}\n */\n revive (x, state) {\n if (typeof FileList !== 'undefined') {\n return Reflect.construct(FileList, [x]);\n }\n return typeof origRevive === 'function' ? origRevive(x, state) : undefined;\n }\n }\n : undefined;\n\nlet typeson = new Typeson().register([\n structuredCloningForStorage,\n customFileList ? {filelist: customFileList} : {}\n]);\n\n/**\n * @param {(preset: import('typeson-registry').Preset) =>\n * import('typeson-registry').Preset} func\n * @returns {void}\n */\nfunction register (func) {\n // eslint-disable-next-line unicorn/no-top-level-assignment-in-function -- Should be one-time cache\n typeson = new Typeson().register(func(structuredCloningForStorage));\n}\n\n/**\n * We are keeping the callback approach for now in case we wish to reexpose\n * `Blob`, `File`, `FileList` asynchronously (though in such a case, we\n * should probably refactor as a Promise).\n * @param {AnyValue} obj\n * @param {(str: string) => void} [func]\n * @throws {Error}\n * @returns {string}\n */\nfunction encode (obj, func) {\n let ret;\n try {\n ret = typeson.stringifySync(obj);\n } catch (err) {\n // SCA in typeson-registry using `DOMException` which is not defined (e.g., in Node)\n if (hasConstructorOf(err, ReferenceError) ||\n // SCA in typeson-registry threw a cloning error and we are in a\n // supporting environment (e.g., the browser) where `ShimDOMException` is\n // an alias for `DOMException`; if typeson-registry ever uses our shim\n // to throw, we can use this condition alone.\n hasConstructorOf(err, ShimDOMException)) {\n throw createDOMException('DataCloneError', 'The object cannot be cloned.');\n }\n // We should rethrow non-cloning exceptions like from\n // throwing getters (as in the W3C test, key-conversion-exceptions.htm)\n throw err;\n }\n if (func) {\n func(ret);\n }\n return ret;\n}\n\n/**\n * @typedef {import('./Key.js').Value} AnyValue\n */\n\n/**\n * @param {string} obj\n * @returns {AnyValue}\n */\nfunction decode (obj) {\n return typeson.parse(obj);\n}\n\n/**\n * @param {AnyValue} val\n * @returns {AnyValue}\n */\nfunction clone (val) {\n // We don't return the intermediate `encode` as we'll need to reencode\n // the clone as it may differ\n return decode(encode(val));\n}\n\n/**\n * Per spec, a transaction must appear inactive to any code that runs\n * reentrantly *during* the structured clone of a value passed to\n * `add()`/`put()`/`IDBCursor#update()` (e.g. a getter on the value being\n * stored) -- even though the transaction is otherwise active for the\n * duration of that same call. `__active` is restored in a `finally` so a\n * `DataCloneError` (or any other throw from `clone()`) can't leave the\n * transaction permanently stuck inactive.\n * @param {{__active: boolean}} transaction\n * @param {AnyValue} val\n * @returns {AnyValue}\n */\nfunction cloneWithInactiveTransaction (transaction, val) {\n transaction.__active = false;\n try {\n return clone(val);\n } finally {\n transaction.__active = true;\n }\n}\n\nexport {encode, decode, clone, cloneWithInactiveTransaction, register};\n","import SyncPromise from 'sync-promise-expanded';\nimport {createDOMException} from './DOMException.js';\nimport {IDBCursor, IDBCursorWithValue, parseGetAllArgs, parseGetAllRecordsArgs, collectAll} from './IDBCursor.js';\nimport * as util from './util.js';\nimport * as Key from './Key.js';\nimport {setSQLForKeyRange, IDBKeyRange, convertValueToKeyRange} from './IDBKeyRange.js';\nimport IDBTransaction from './IDBTransaction.js';\nimport * as Sca from './Sca.js';\nimport CFG from './CFG.js';\nimport IDBObjectStore from './IDBObjectStore.js';\n\nconst readonlyProperties = ['objectStore', 'keyPath', 'multiEntry', 'unique'];\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLTransaction.js').default} WebSQLTransaction\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLTransaction.js').SqlErrorCallback} SqlErrorCallback\n */\n\n/**\n * @typedef {{\n * columnName: string,\n * keyPath: import('./Key.js').KeyPath,\n * optionalParams: {\n * unique: boolean,\n * multiEntry: boolean\n * }\n * deleted?: boolean,\n * __deleted?: boolean,\n * cursors?: import('./IDBCursor.js').IDBCursorWithValueFull[],\n * }} IDBIndexProperties\n */\n\n/**\n * IDB Index.\n * @see https://www.w3.org/TR/IndexedDB/#idl-def-IDBIndex\n * @throws {TypeError}\n * @class\n */\nfunction IDBIndex () {\n throw new TypeError('Illegal constructor');\n}\nconst IDBIndexAlias = IDBIndex;\n\n/**\n * @typedef {IDBIndex & {\n * name: string,\n * keyPath: import('./Key.js').KeyPath,\n * multiEntry: boolean,\n * unique: boolean,\n * objectStore: import('./IDBObjectStore.js').IDBObjectStoreFull,\n * __pendingCreate?: boolean,\n * __deleted?: boolean,\n * __originalName: string,\n * __currentName: string,\n * __pendingName?: string,\n * __pendingDelete?: boolean,\n * __name: string,\n * __multiEntry: boolean,\n * __unique: boolean,\n * __objectStore: import('./IDBObjectStore.js').IDBObjectStoreFull,\n * __keyPath: import('./Key.js').KeyPath,\n * __recreated?: boolean,\n * __fetchIndexData: (\n * range: Query,\n * opType: \"value\"|\"key\"|\"count\",\n * nullDisallowed: boolean,\n * count?: number\n * ) => import('./IDBRequest.js').IDBRequestFull,\n * __renameIndex: (\n * store: import('./IDBObjectStore.js').IDBObjectStoreFull,\n * oldName: string,\n * newName: string,\n * colInfoToPreserveArr?: string[][],\n * cb?: null|((\n * tx: WebSQLTransaction,\n * success: ((store: IDBObjectStore) => void)\n * ) => void)\n * ) => void\n * }} IDBIndexFull\n */\n\n/**\n *\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {IDBIndexProperties} indexProperties\n * @returns {IDBIndexFull}\n */\nIDBIndex.__createInstance = function (store, indexProperties) {\n /**\n * @class\n * @this {IDBIndexFull}\n */\n function IDBIndex () {\n const me = this;\n // @ts-expect-error It's ok\n me[Symbol.toStringTag] = 'IDBIndex';\n util.defineReadonlyProperties(me, readonlyProperties);\n me.__objectStore = store;\n me.__name = me.__originalName = indexProperties.columnName;\n me.__keyPath = Array.isArray(indexProperties.keyPath) ? indexProperties.keyPath.slice() : indexProperties.keyPath;\n const {optionalParams} = indexProperties;\n me.__multiEntry = Boolean(optionalParams && optionalParams.multiEntry);\n me.__unique = Boolean(optionalParams && optionalParams.unique);\n me.__deleted = Boolean(indexProperties.__deleted);\n me.__objectStore.__cursors = indexProperties.cursors || [];\n Object.defineProperties(me, {\n __currentName: {\n /**\n * @this {IDBIndexFull}\n * @returns {string}\n */\n get () {\n return '__pendingName' in me\n ? /** @type {string} */ (me.__pendingName)\n : me.name;\n }\n },\n name: {\n enumerable: false,\n configurable: false,\n /**\n * @this {IDBIndexFull}\n * @returns {string}\n */\n get () {\n return this.__name;\n },\n /**\n * @param {string} newName\n * @this {IDBIndexFull}\n * @returns {void}\n */\n set (newName) {\n const me = this;\n newName = util.convertToDOMString(newName);\n const oldName = me.name;\n IDBTransaction.__assertVersionChange(me.objectStore.transaction);\n IDBTransaction.__assertActive(me.objectStore.transaction);\n IDBIndexAlias.__invalidStateIfDeleted(me);\n IDBObjectStore.__invalidStateIfDeleted(me);\n if (newName === oldName) {\n return;\n }\n\n if (Object.hasOwn(me.objectStore.__indexes, newName) && !me.objectStore.__indexes[newName].__deleted &&\n !me.objectStore.__indexes[newName].__pendingDelete) {\n throw createDOMException('ConstraintError', 'Index \"' + newName + '\" already exists on ' + me.objectStore.__currentName);\n }\n\n me.__name = newName;\n\n const {objectStore} = me;\n delete objectStore.__indexes[oldName];\n objectStore.__indexes[newName] = me;\n objectStore.indexNames.splice(objectStore.indexNames.indexOf(oldName), 1, newName);\n\n const storeHandle = /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n objectStore.transaction\n ).__storeHandles[objectStore.name];\n const oldIndexHandle = storeHandle.__indexHandles[oldName];\n oldIndexHandle.__name = newName; // Fix old references\n storeHandle.__indexHandles[newName] = oldIndexHandle; // Ensure new reference accessible\n me.__pendingName = oldName;\n\n const colInfoToPreserveArr = [\n ['key', 'BLOB ' + (objectStore.autoIncrement ? 'UNIQUE, inc INTEGER PRIMARY KEY AUTOINCREMENT' : 'PRIMARY KEY')],\n ['value', 'BLOB']\n ].concat(\n // @ts-ignore Has numeric indexes instead of iterator; needed under some TS versions\n [...objectStore.indexNames]\n .filter((indexName) => indexName !== newName)\n .map((indexName) => [util.escapeIndexNameForSQL(indexName), 'BLOB'])\n );\n\n me.__renameIndex(\n objectStore, oldName, newName, colInfoToPreserveArr,\n function (tx, success) {\n IDBIndexAlias.__updateIndexList(store, tx, function (store) {\n delete storeHandle.__pendingName;\n success(store);\n });\n }\n );\n }\n }\n });\n }\n IDBIndex.prototype = IDBIndexAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBIndex();\n};\n\n/**\n *\n * @param {IDBIndexFull} index\n * @param {string} [msg]\n * @throws {DOMException}\n * @returns {void}\n */\nIDBIndex.__invalidStateIfDeleted = function (index, msg) {\n if (index.__deleted || index.__pendingDelete || (\n index.__pendingCreate && index.objectStore.transaction && index.objectStore.transaction.__errored\n )) {\n throw createDOMException('InvalidStateError', msg || 'This index has been deleted');\n }\n};\n\n/**\n * Clones an IDBIndex instance for a different IDBObjectStore instance.\n * @param {IDBIndexFull} index\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @returns {IDBIndexFull}\n */\nIDBIndex.__clone = function (index, store) {\n const idx = IDBIndex.__createInstance(store, {\n columnName: index.name,\n keyPath: index.keyPath,\n optionalParams: {\n multiEntry: index.multiEntry,\n unique: index.unique\n }\n });\n /** @type {const} */ ([\n '__pendingCreate', '__pendingDelete', '__deleted',\n '__originalName', '__recreated'\n ]).forEach((p) => {\n // @ts-expect-error Why is this type \"never\"?\n idx[p] = index[p];\n });\n return idx;\n};\n\n/**\n * Creates a new index on an object store.\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {IDBIndexFull} index\n * @returns {void}\n */\nIDBIndex.__createIndex = function (store, index) {\n const indexName = index.name;\n const storeName = store.__currentName;\n const idx = store.__indexes[indexName];\n\n index.__pendingCreate = true;\n\n // Add the index to the IDBObjectStore\n store.indexNames.push(indexName);\n store.__indexes[indexName] = index; // We add to indexes as needs to be available, e.g., if there is a subsequent deleteIndex call\n\n let indexHandle = store.__indexHandles[indexName];\n if (!indexHandle ||\n index.__pendingDelete ||\n index.__deleted ||\n indexHandle.__pendingDelete ||\n indexHandle.__deleted\n ) {\n indexHandle = store.__indexHandles[indexName] = IDBIndex.__clone(index, store);\n }\n\n // Create the index in WebSQL\n const {transaction} = store;\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n transaction\n ).__addNonRequestToTransactionQueue(function createIndex (tx, args, success, failure) {\n const columnExists = idx && (idx.__deleted || idx.__recreated); // This check must occur here rather than earlier as properties may not have been set yet otherwise\n\n /** @type {{[key: string]: boolean}} */\n let indexValues = {};\n\n /**\n * @param {WebSQLTransaction} tx\n * @param {(Error & {code?: number})} err\n * @returns {void}\n */\n function error (tx, err) {\n failure(createDOMException('UnknownError', 'Could not create index \"' + indexName + '\"' + err.code + '::' + err.message, err));\n }\n\n /**\n * @param {WebSQLTransaction} tx\n * @returns {void}\n */\n function applyIndex (tx) {\n // Update the object store's index list\n IDBIndex.__updateIndexList(store, tx, function () {\n // Add index entries for all existing records\n tx.executeSql('SELECT \"key\", \"value\" FROM ' + util.escapeStoreNameForSQL(storeName), [], function (tx, data) {\n if (CFG.DEBUG) { console.log('Adding existing ' + storeName + ' records to the ' + indexName + ' index'); }\n addIndexEntry(0);\n\n /**\n * @param {Integer} i\n * @returns {void}\n */\n function addIndexEntry (i) {\n if (i < data.rows.length) {\n try {\n const row = /** @type {{key: string, value: string}} */ (data.rows.item(i));\n const value = Sca.decode(util.unescapeSQLiteResponse(row.value));\n const indexKey = Key.extractKeyValueDecodedFromValueUsingKeyPath(value, index.keyPath, index.multiEntry); // Todo: Do we need this stricter error checking?\n if (\n ('invalid' in indexKey && indexKey.invalid) ||\n ('failure' in indexKey && indexKey.failure)\n ) { // Todo: Do we need invalid checks and should we instead treat these as being duplicates?\n throw new Error('Go to catch; ignore bad indexKey');\n }\n const indexKeyStr = /** @type {string} */ (\n Key.encode(indexKey.value, index.multiEntry)\n );\n if (index.unique) {\n if (Object.hasOwn(indexValues, indexKeyStr)) {\n indexValues = {};\n failure(createDOMException(\n 'ConstraintError',\n 'Duplicate values already exist within the store'\n ));\n return;\n }\n indexValues[indexKeyStr] = true;\n }\n\n tx.executeSql(\n 'UPDATE ' + util.escapeStoreNameForSQL(storeName) + ' SET ' +\n util.escapeIndexNameForSQL(indexName) + ' = ? WHERE \"key\" = ?',\n [util.escapeSQLiteStatement(indexKeyStr), row.key],\n function () {\n addIndexEntry(i + 1);\n },\n /** @type {SqlErrorCallback} */ (error)\n );\n } catch (err) {\n // Not a valid value to insert into index, so just continue\n addIndexEntry(i + 1);\n }\n } else {\n delete index.__pendingCreate;\n delete indexHandle.__pendingCreate;\n if (index.__deleted) {\n delete index.__deleted;\n delete indexHandle.__deleted;\n index.__recreated = true;\n indexHandle.__recreated = true;\n }\n indexValues = {};\n success(store);\n }\n }\n }, /** @type {SqlErrorCallback} */ (error));\n }, /** @type {SqlErrorCallback} */ (error));\n }\n\n const escapedStoreNameSQL = util.escapeStoreNameForSQL(storeName);\n const escapedIndexNameSQL = util.escapeIndexNameForSQL(index.name);\n\n /**\n * @param {WebSQLTransaction} tx\n * @returns {void}\n */\n function addIndexSQL (tx) {\n if (!CFG.useSQLiteIndexes) {\n applyIndex(tx);\n return;\n }\n tx.executeSql(\n 'CREATE INDEX IF NOT EXISTS \"' +\n // The escaped index name must be unique among indexes in the whole database;\n // so we prefix with store name; as prefixed, will also not conflict with\n // index on `key`\n // Avoid quotes and separate with special escape sequence\n escapedStoreNameSQL.slice(1, -1) + '^5' + escapedIndexNameSQL.slice(1, -1) +\n '\" ON ' + escapedStoreNameSQL + '(' + escapedIndexNameSQL + ')',\n [],\n applyIndex,\n /** @type {SqlErrorCallback} */ (error)\n );\n }\n\n if (columnExists) {\n // For a previously existing index, just update the index entries in the existing column;\n // no need to add SQLite index to it either as should already exist\n applyIndex(tx);\n } else {\n // For a new index, add a new column to the object store, then apply the index\n const sql = ['ALTER TABLE', escapedStoreNameSQL, 'ADD', escapedIndexNameSQL, 'BLOB'].join(' ');\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(\n sql, [], addIndexSQL, /** @type {SqlErrorCallback} */ (error)\n );\n }\n });\n};\n\n/**\n * Deletes an index from an object store.\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {IDBIndexFull} index\n * @returns {void}\n */\nIDBIndex.__deleteIndex = function (store, index) {\n // Remove the index from the IDBObjectStore\n index.__pendingDelete = true;\n const indexHandle = store.__indexHandles[index.name];\n if (indexHandle) {\n indexHandle.__pendingDelete = true;\n }\n\n store.indexNames.splice(store.indexNames.indexOf(index.name), 1);\n\n // Remove the index in WebSQL\n const {transaction} = store;\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n transaction\n ).__addNonRequestToTransactionQueue(function deleteIndex (tx, args, success, failure) {\n /**\n * @param {WebSQLTransaction} tx\n * @param {(Error & {code?: number})} err\n * @returns {void}\n */\n function error (tx, err) {\n failure(createDOMException('UnknownError', 'Could not delete index \"' + index.name + '\"', err));\n }\n\n /**\n * @returns {void}\n */\n function finishDeleteIndex () {\n // Update the object store's index list\n IDBIndex.__updateIndexList(store, tx, function (store) {\n delete index.__pendingDelete;\n delete index.__recreated;\n index.__deleted = true;\n if (indexHandle) {\n indexHandle.__deleted = true;\n delete indexHandle.__pendingDelete;\n }\n success(store);\n }, /** @type {SqlErrorCallback} */ (error));\n }\n\n if (!CFG.useSQLiteIndexes) {\n finishDeleteIndex();\n return;\n }\n tx.executeSql(\n 'DROP INDEX IF EXISTS ' +\n util.sqlQuote(\n util.escapeStoreNameForSQL(store.name).slice(1, -1) + '^5' +\n util.escapeIndexNameForSQL(index.name).slice(1, -1)\n ),\n [],\n finishDeleteIndex,\n /** @type {SqlErrorCallback} */ (error)\n );\n });\n};\n\n/**\n * @typedef {{[key: string]: IDBIndexProperties}} IndexList\n */\n\n/**\n * Updates index list for the given object store.\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {WebSQLTransaction} tx\n * @param {(store: IDBObjectStore) => void} success\n * @param {SqlErrorCallback} [failure]\n * @returns {void}\n */\nIDBIndex.__updateIndexList = function (store, tx, success, failure) {\n /** @type {IndexList} **/\n const indexList = {};\n for (let i = 0; i < store.indexNames.length; i++) {\n const idx = store.__indexes[store.indexNames[i]];\n indexList[idx.name] = {\n columnName: idx.name,\n keyPath: idx.keyPath,\n optionalParams: {\n unique: idx.unique,\n multiEntry: idx.multiEntry\n },\n deleted: Boolean(idx.__deleted)\n };\n }\n\n if (CFG.DEBUG) { console.log('Updating the index list for ' + store.__currentName, indexList); }\n tx.executeSql('UPDATE __sys__ SET \"indexList\" = ? WHERE \"name\" = ?', [JSON.stringify(indexList), util.escapeSQLiteStatement(store.__currentName)], function () {\n success(store);\n }, /** @type {SqlErrorCallback} */ (failure));\n};\n\n/**\n * @typedef {IDBValidKey|IDBKeyRange} Query\n */\n\n/**\n * Retrieves index data for the given key.\n * @param {Query} range\n * @param {\"value\"|\"key\"|\"count\"} opType\n * @param {boolean} nullDisallowed\n * @param {number} [count]\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.__fetchIndexData = function (range, opType, nullDisallowed, count) {\n const me = this;\n if (count !== undefined) {\n count = util.enforceRange(count, 'unsigned long');\n }\n\n IDBIndex.__invalidStateIfDeleted(me);\n IDBObjectStore.__invalidStateIfDeleted(me.objectStore);\n if (me.objectStore.__deleted) {\n throw createDOMException('InvalidStateError', \"This index's object store has been deleted\");\n }\n IDBTransaction.__assertActive(me.objectStore.transaction);\n\n if (nullDisallowed && util.isNullish(range)) {\n throw createDOMException('DataError', 'No key or range was specified');\n }\n\n const fetchArgs = buildFetchIndexDataSQL(nullDisallowed, me, range, opType, false);\n return /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.objectStore.transaction\n ).__addToTransactionQueue(function (...args) {\n executeFetchIndexData(\n count,\n ...fetchArgs,\n // @ts-expect-error It's ok\n ...args\n );\n }, undefined, me);\n};\n\n/**\n * Opens a cursor over the given key range.\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.openCursor = function (/* query, direction */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n const [query, direction] = arguments;\n const cursor = IDBCursorWithValue.__createInstance(query, direction, me.objectStore, me, util.escapeIndexNameForSQLKeyColumn(me.name), 'value');\n me.__objectStore.__cursors.push(cursor);\n return cursor.__request;\n};\n\n/**\n * Opens a cursor over the given key range. The cursor only includes key values, not data.\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.openKeyCursor = function (/* query, direction */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n const [query, direction] = arguments;\n const cursor = IDBCursor.__createInstance(query, direction, me.objectStore, me, util.escapeIndexNameForSQLKeyColumn(me.name), 'key');\n me.__objectStore.__cursors.push(cursor);\n return cursor.__request;\n};\n\n/**\n *\n * @param {Query} query\n * @throws {TypeError}\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.get = function (query) {\n if (!arguments.length) { // Per https://heycam.github.io/webidl/\n throw new TypeError('A parameter was missing for `IDBIndex.get`.');\n }\n return this.__fetchIndexData(query, 'value', true);\n};\n\n/**\n *\n * @param {Query} query\n * @throws {TypeError}\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.getKey = function (query) {\n if (!arguments.length) { // Per https://heycam.github.io/webidl/\n throw new TypeError('A parameter was missing for `IDBIndex.getKey`.');\n }\n return this.__fetchIndexData(query, 'key', true);\n};\n\n/**\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.getAll = function (/* queryOrOptions, count */) {\n // eslint-disable-next-line prefer-rest-params -- API\n const {query, count, direction} = parseGetAllArgs(arguments);\n return collectAll(this, query, count, direction, 'value');\n};\n\n/**\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.getAllKeys = function (/* queryOrOptions, count */) {\n // eslint-disable-next-line prefer-rest-params -- API\n const {query, count, direction} = parseGetAllArgs(arguments);\n return collectAll(this, query, count, direction, 'key');\n};\n\n/**\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.getAllRecords = function (/* options */) {\n // eslint-disable-next-line prefer-rest-params -- API\n const {query, count, direction} = parseGetAllRecordsArgs(arguments);\n return collectAll(this, query, count, direction, 'record');\n};\n\n/**\n * @this {IDBIndexFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBIndex.prototype.count = function (/* query */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n const query = arguments[0];\n // With the exception of needing to check whether the index has been\n // deleted, we could, for greater spec parity (if not accuracy),\n // just call:\n // `return me.__objectStore.count(query);`\n\n if (util.instanceOf(query, IDBKeyRange)) { // Todo: Do we need this block?\n // We don't need to add to cursors array since has the count parameter which won't cache\n return IDBCursorWithValue.__createInstance(query, 'next', me.objectStore, me, util.escapeIndexNameForSQLKeyColumn(me.name), 'value', true).__request;\n }\n return me.__fetchIndexData(query, 'count', false);\n};\n\n/**\n *\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {string} oldName\n * @param {string} newName\n * @param {string[][]} colInfoToPreserveArr\n * @param {null|((\n * tx: WebSQLTransaction,\n * success: ((store: IDBObjectStore) => void)\n * ) => void)} cb\n * @this {IDBIndexFull}\n * @returns {void}\n */\nIDBIndex.prototype.__renameIndex = function (store, oldName, newName, colInfoToPreserveArr = [], cb = null) {\n const newNameType = 'BLOB';\n const storeName = store.__currentName;\n const escapedStoreNameSQL = util.escapeStoreNameForSQL(storeName);\n const escapedNewIndexNameSQL = util.escapeIndexNameForSQL(newName);\n const escapedTmpStoreNameSQL = util.sqlQuote('tmp_' + util.escapeStoreNameForSQL(storeName).slice(1, -1));\n const colNamesToPreserve = colInfoToPreserveArr.map((colInfo) => colInfo[0]);\n const colInfoToPreserve = colInfoToPreserveArr.map((colInfo) => colInfo.join(' '));\n const listColInfoToPreserve = (colInfoToPreserve.length ? (colInfoToPreserve.join(', ') + ', ') : '');\n const listColsToPreserve = (colNamesToPreserve.length ? (colNamesToPreserve.join(', ') + ', ') : '');\n\n // We could adapt the approach at https://stackoverflow.com/a/8430746/271577\n // to make the approach reusable without passing column names, but it is a bit fragile\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n store.transaction\n ).__addNonRequestToTransactionQueue(function renameIndex (tx, args, success, error) {\n /**\n * @param {WebSQLTransaction} tx\n * @param {(Error & {code?: number})} err\n * @returns {void}\n */\n function sqlError (tx, err) {\n error(err);\n }\n /**\n * @returns {void}\n */\n function finish () {\n if (cb) {\n cb(tx, success);\n return;\n }\n success();\n }\n // See https://www.sqlite.org/lang_altertable.html#otheralter\n // We don't query for indexes as we already have the info\n // This approach has the advantage of auto-deleting indexes via the DROP TABLE\n const sql = 'CREATE TABLE ' + escapedTmpStoreNameSQL +\n '(' + listColInfoToPreserve + escapedNewIndexNameSQL + ' ' + newNameType + ')';\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(sql, [], function () {\n const sql = 'INSERT INTO ' + escapedTmpStoreNameSQL + '(' +\n listColsToPreserve + escapedNewIndexNameSQL +\n ') SELECT ' + listColsToPreserve + util.escapeIndexNameForSQL(oldName) + ' FROM ' + escapedStoreNameSQL;\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(sql, [], function () {\n const sql = 'DROP TABLE ' + escapedStoreNameSQL;\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(sql, [], function () {\n const sql = 'ALTER TABLE ' + escapedTmpStoreNameSQL + ' RENAME TO ' + escapedStoreNameSQL;\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(sql, [], function (tx) {\n if (!CFG.useSQLiteIndexes) {\n finish();\n return;\n }\n const indexCreations = colNamesToPreserve\n .slice(2) // Doing `key` separately and no need for index on `value`\n .map((escapedIndexNameSQL) => new SyncPromise(function (resolve, reject) {\n const escapedIndexToRecreate = util.sqlQuote(\n escapedStoreNameSQL.slice(1, -1) + '^5' + escapedIndexNameSQL.slice(1, -1)\n );\n // const sql = 'DROP INDEX IF EXISTS ' + escapedIndexToRecreate;\n // if (CFG.DEBUG) { console.log(sql); }\n // tx.executeSql(sql, [], function () {\n const sql = 'CREATE INDEX ' +\n escapedIndexToRecreate + ' ON ' + escapedStoreNameSQL + '(' + escapedIndexNameSQL + ')';\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(\n sql,\n [],\n resolve,\n /** @type {SqlErrorCallback} */\n (function (tx, err) {\n reject(err);\n })\n );\n // }, function (tx, err) {\n // reject(err);\n // });\n }));\n indexCreations.push(\n new SyncPromise(function (resolve, reject) {\n const escapedIndexToRecreate = util.sqlQuote('sk_' + escapedStoreNameSQL.slice(1, -1));\n // Chrome erring here if not dropped first; Node does not\n const sql = 'DROP INDEX IF EXISTS ' + escapedIndexToRecreate;\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(\n sql, [], function () {\n const sql = 'CREATE INDEX ' + escapedIndexToRecreate +\n ' ON ' + escapedStoreNameSQL + '(\"key\")';\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(\n sql, [], resolve,\n /** @type {SqlErrorCallback} */\n (function (tx, err) {\n reject(err);\n })\n );\n },\n /** @type {SqlErrorCallback} */\n (function (tx, err) {\n reject(err);\n })\n );\n })\n );\n SyncPromise.all(indexCreations).then(finish).catch(\n /** @type {(reason: unknown) => PromiseLike<never>} */\n (error)\n ).catch((err) => {\n console.log('Index rename error');\n throw err;\n });\n }, /** @type {SqlErrorCallback} */ (sqlError));\n }, /** @type {SqlErrorCallback} */ (sqlError));\n }, /** @type {SqlErrorCallback} */ (sqlError));\n }, /** @type {SqlErrorCallback} */ (sqlError));\n });\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nObject.defineProperty(IDBIndex, Symbol.hasInstance, {\n /**\n * @param {unknown} obj\n * @returns {boolean}\n */\n value: (obj) => util.isObj(obj) &&\n 'openCursor' in obj &&\n typeof obj.openCursor === 'function' &&\n 'multiEntry' in obj &&\n typeof obj.multiEntry === 'boolean'\n});\n\nutil.defineReadonlyOuterInterface(IDBIndex.prototype, readonlyProperties);\nutil.defineOuterInterface(IDBIndex.prototype, ['name']);\nutil.setOperationNames(IDBIndex.prototype);\n\nIDBIndex.prototype[Symbol.toStringTag] = 'IDBIndexPrototype';\n\nObject.defineProperty(IDBIndex, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\n/**\n * @param {number|null} count\n * @param {boolean} unboundedDisallowed\n * @param {IDBIndexFull} index\n * @param {boolean} hasKey\n * @param {import('./Key.js').Value|import('./Key.js').Key} range\n * @param {\"value\"|\"key\"|\"count\"} opType\n * @param {boolean} multiChecks\n * @param {string[]} sql\n * @param {string[]} sqlValues\n * @param {WebSQLTransaction} tx\n * @param {null|undefined} args\n * @param {(\n * result: number|undefined|[]|import('./Key.js').Value|import('./Key.js').Value[]\n * ) => void} success\n * @param {(tx: WebSQLTransaction, err: (Error & {code?: number})) => void} error\n * @returns {void}\n */\nfunction executeFetchIndexData (\n count, unboundedDisallowed, index, hasKey, range, opType,\n multiChecks, sql, sqlValues, tx, args, success, error\n) {\n if (unboundedDisallowed) {\n count = 1;\n }\n if (count) {\n sql.push('LIMIT', String(count));\n }\n const isCount = opType === 'count';\n if (CFG.DEBUG) { console.log('Trying to fetch data for Index', sql.join(' '), sqlValues); }\n tx.executeSql(sql.join(' '), sqlValues, function (tx, data) {\n const records = [];\n let recordCount = 0;\n const decode = isCount\n ? () => { /* */ }\n : (opType === 'key'\n // eslint-disable-next-line @stylistic/operator-linebreak -- JSDoc\n ?\n /**\n * @param {{\n * key: string\n * }} record\n * @returns {import('./Key.js').ValueType|undefined}\n */\n (record) => {\n // Key.convertValueToKey(record.key); // Already validated before storage\n return Key.decode(util.unescapeSQLiteResponse(record.key));\n }\n // eslint-disable-next-line @stylistic/operator-linebreak -- JSDoc\n :\n /**\n * @param {{\n * value: string\n * }} record\n * @returns {import('./Key.js').Value}\n */\n (record) => { // when opType is value\n return Sca.decode(util.unescapeSQLiteResponse(record.value));\n });\n if (index.multiEntry) {\n const escapedIndexNameForKeyCol = util.escapeIndexNameForSQLKeyColumn(index.name);\n const encodedKey = Key.encode(range, index.multiEntry);\n for (let i = 0; i < data.rows.length; i++) {\n const row = /** @type {{key: string, value: string, [k: string]: string}} */ (data.rows.item(i));\n const rowKey = /** @type {import('./Key.js').ValueTypeArray} */ (\n Key.decode(row[escapedIndexNameForKeyCol])\n );\n let record;\n if (hasKey && (\n (multiChecks && /** @type {import('./Key.js').ValueType[]} */ (range).some(\n /**\n * @param {import('./Key.js').ValueType} check\n * @returns {boolean}\n */\n (check) => rowKey.includes(check)\n )) || // More precise than our SQL\n Key.isMultiEntryMatch(\n // Added `JSON.stringify` as was having problems with\n // `JSON.stringify` encoding added to nested\n // array keys\n JSON.stringify(encodedKey).slice(1, -1),\n row[escapedIndexNameForKeyCol]\n )\n )) {\n recordCount++;\n record = row;\n } else if (!hasKey && !multiChecks) {\n if (rowKey !== undefined) {\n recordCount += (Array.isArray(rowKey) ? rowKey.length : 1);\n record = row;\n }\n }\n if (record) {\n records.push(decode(record));\n if (unboundedDisallowed) {\n break;\n }\n }\n }\n } else {\n for (let i = 0; i < data.rows.length; i++) {\n const record = /** @type {{key: string, value: string}} */ (data.rows.item(i));\n if (record) {\n records.push(decode(record));\n }\n }\n recordCount = records.length;\n }\n if (isCount) {\n success(recordCount);\n } else if (recordCount === 0) {\n success(unboundedDisallowed ? undefined : []);\n } else {\n success(unboundedDisallowed ? records[0] : records);\n }\n }, /** @type {SqlErrorCallback} */ (error));\n}\n\n/**\n * @param {boolean} nullDisallowed\n * @param {IDBIndexFull} index\n * @param {import('./Key.js').Value|import('./Key.js').Key} range\n * @param {\"value\"|\"key\"|\"count\"} opType\n * @param {boolean} multiChecks\n * @returns {[\n * nullDisallowed: boolean,\n * index: IDBIndexFull,\n * hasRange: boolean,\n * range: import('./Key.js').Value|import('./Key.js').Key,\n * opType: \"value\"|\"key\"|\"count\",\n * multiChecks: boolean,\n * sql: string[],\n * sqlValues: string[]\n * ]}\n */\nfunction buildFetchIndexDataSQL (\n nullDisallowed, index, range, opType, multiChecks\n) {\n const hasRange = nullDisallowed || !util.isNullish(range);\n const col = opType === 'count' ? 'key' : opType; // It doesn't matter which column we use for 'count' as long as it is valid\n const sql = [\n 'SELECT', util.sqlQuote(col) + (\n index.multiEntry ? ', ' + util.escapeIndexNameForSQL(index.name) : ''\n ),\n 'FROM', util.escapeStoreNameForSQL(index.objectStore.__currentName),\n 'WHERE', util.escapeIndexNameForSQL(index.name), 'NOT NULL'\n ];\n\n /** @type {string[]} */\n const sqlValues = [];\n if (hasRange) {\n if (multiChecks) {\n sql.push('AND (');\n /** @type {import('./Key.js').KeyPathArray} */ (\n range\n ).forEach((innerKey, i) => {\n if (i > 0) { sql.push('OR'); }\n sql.push(util.escapeIndexNameForSQL(index.name), \"LIKE ? ESCAPE '^' \");\n sqlValues.push('%' + util.sqlLIKEEscape(\n /** @type {string} */ (Key.encode(innerKey, index.multiEntry))\n ) + '%');\n });\n sql.push(')');\n } else if (index.multiEntry) {\n sql.push('AND', util.escapeIndexNameForSQL(index.name), \"LIKE ? ESCAPE '^'\");\n\n if (Array.isArray(range)) {\n // Todo: For nesting deeper than one level, we probably need to\n // run `JSON.stringify` again\n sqlValues.push('%' + util.sqlLIKEEscape(\n JSON.stringify(\n /** @type {string} */ (Key.encode(range, index.multiEntry))\n ).slice(1, -1)\n ) + '%');\n } else {\n sqlValues.push('%' + util.sqlLIKEEscape(\n /** @type {string} */ (Key.encode(range, index.multiEntry))\n ) + '%');\n }\n } else {\n const convertedRange = convertValueToKeyRange(range, nullDisallowed);\n setSQLForKeyRange(convertedRange, util.escapeIndexNameForSQL(index.name), sql, sqlValues, true, false);\n }\n }\n return [nullDisallowed, index, hasRange, range, opType, multiChecks, sql, sqlValues];\n}\n\n// eslint-disable-next-line unicorn/no-named-default -- Had some reason\nexport {buildFetchIndexDataSQL, executeFetchIndexData, IDBIndex, IDBIndex as default};\n","import SyncPromise from 'sync-promise-expanded';\nimport {createDOMException} from './DOMException.js';\nimport {IDBCursor, IDBCursorWithValue, parseGetAllArgs, parseGetAllRecordsArgs, collectAll} from './IDBCursor.js';\nimport {setSQLForKeyRange, convertValueToKeyRange} from './IDBKeyRange.js';\nimport DOMStringList from './DOMStringList.js';\nimport * as util from './util.js';\nimport * as Key from './Key.js';\nimport {executeFetchIndexData, buildFetchIndexDataSQL, IDBIndex} from './IDBIndex.js';\nimport cmp from './cmp.js';\nimport IDBTransaction from './IDBTransaction.js';\nimport * as Sca from './Sca.js';\nimport CFG from './CFG.js';\n\nconst readonlyProperties = ['keyPath', 'indexNames', 'transaction', 'autoIncrement'];\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLTransaction.js').default} WebSQLTransaction\n */\n\n/**\n * IndexedDB Object Store.\n * @see https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBObjectStore\n * @class\n * @throws {TypeError}\n */\nfunction IDBObjectStore () {\n throw new TypeError('Illegal constructor');\n}\nconst IDBObjectStoreAlias = IDBObjectStore;\n\n/**\n * @typedef {IDBObjectStore & {\n * name: string,\n * keyPath: import('./Key.js').KeyPath,\n * transaction?: import('./IDBTransaction.js').IDBTransactionFull|null,\n * indexNames: import('./DOMStringList.js').DOMStringListFull,\n * autoIncrement: boolean,\n * __autoIncrement: boolean,\n * __indexes: {[key: string]: import('./IDBIndex.js').IDBIndexFull},\n * __indexHandles: {[key: string]: import('./IDBIndex.js').IDBIndexFull},\n * __indexNames: import('./DOMStringList.js').DOMStringListFull,\n * __oldIndexNames: import('./DOMStringList.js').DOMStringListFull,\n * __transaction?: import('./IDBTransaction.js').IDBTransactionFull|null,\n * __name: string,\n * __keyPath: import('./Key.js').KeyPath,\n * __originalName: string,\n * __currentName: string,\n * __pendingName?: string,\n * __pendingDelete?: boolean,\n * __pendingCreate?: boolean,\n * __deleted?: boolean,\n * __cursors: (\n * import('./IDBCursor.js').IDBCursorFull|\n * import('./IDBCursor.js').IDBCursorWithValueFull\n * )[],\n * __idbdb: import('./IDBDatabase.js').IDBDatabaseFull,\n * __validateKeyAndValueAndCloneValue: (\n * value: import('./Key.js').Value,\n * key: import('./Key.js').Key|undefined,\n * cursorUpdate: boolean\n * ) => KeyValueArray,\n * __deriveKey: (\n * tx: WebSQLTransaction,\n * value: import('./Key.js').Value,\n * key: import('./Key.js').Key|undefined,\n * success: (key: import('./Key.js').Value, cn?: Integer) => void,\n * failCb: import('./Key.js').SQLFailureCallback\n * ) => void,\n * __checkIndexConstraints: (\n * tx: WebSQLTransaction,\n * value: import('./Key.js').Value,\n * excludeKey: import('./Key.js').Key|Integer|undefined\n * ) => SyncPromise,\n * __insertData: (\n * tx: WebSQLTransaction,\n * encoded: string,\n * value: import('./Key.js').Value,\n * clonedKeyOrCurrentNumber: import('./Key.js').Key|Integer,\n * oldCn: Integer|undefined,\n * success: (clonedKeyOrCurrentNumber: import('./Key.js').Key|Integer) => void,\n * error: (err: Error|DOMException) => void\n * ) => SyncPromise,\n * __overwrite: (\n * tx: WebSQLTransaction,\n * key: import('./Key.js').Key,\n * cb: (tx: WebSQLTransaction) => void,\n * error: (err: (Error & {code?: number})) => void\n * ) => void,\n * __get: (\n * query: import('./IDBIndex.js').Query,\n * getKey?: boolean,\n * getAll?: boolean,\n * count?: Integer\n * ) => import('./IDBRequest.js').IDBRequestFull,\n * }} IDBObjectStoreFull\n */\n\n/**\n *\n * @param {import('./IDBDatabase.js').IDBObjectStoreProperties} storeProperties\n * @param {import('./IDBTransaction.js').IDBTransactionFull|null} [transaction]\n * @returns {IDBObjectStoreFull}\n */\nIDBObjectStore.__createInstance = function (storeProperties, transaction) {\n /**\n * @class\n * @this {IDBObjectStoreFull}\n */\n function IDBObjectStore () {\n const me = this;\n // @ts-expect-error It's ok\n me[Symbol.toStringTag] = 'IDBObjectStore';\n util.defineReadonlyProperties(this, readonlyProperties);\n me.__name = me.__originalName = storeProperties.name;\n me.__keyPath = Array.isArray(storeProperties.keyPath) ? storeProperties.keyPath.slice() : storeProperties.keyPath;\n me.__transaction = transaction;\n me.__idbdb = storeProperties.idbdb;\n me.__cursors = storeProperties.cursors || [];\n\n // autoInc is numeric (0/1) on WinPhone\n me.__autoIncrement = Boolean(storeProperties.autoInc);\n\n me.__indexes = {};\n me.__indexHandles = {};\n me.__indexNames = DOMStringList.__createInstance();\n const {indexList} = storeProperties;\n for (const indexName in indexList) {\n if (!Object.hasOwn(indexList, indexName)) {\n continue;\n }\n\n const index = IDBIndex.__createInstance(me, indexList[indexName]);\n me.__indexes[index.name] = index;\n if (!index.__deleted) {\n me.indexNames.push(index.name);\n }\n }\n me.__oldIndexNames = me.indexNames.clone();\n Object.defineProperties(this, {\n __currentName: {\n get () {\n return '__pendingName' in this ? this.__pendingName : this.name;\n }\n },\n name: {\n enumerable: false,\n configurable: false,\n /**\n * @this {IDBObjectStoreFull}\n * @returns {string}\n */\n get () {\n return this.__name;\n },\n /**\n * @param {string} name\n * @this {IDBObjectStoreFull}\n * @returns {void}\n */\n set (name) {\n const me = this;\n name = util.convertToDOMString(name);\n const oldName = me.name;\n IDBObjectStoreAlias.__invalidStateIfDeleted(me);\n IDBTransaction.__assertVersionChange(me.transaction);\n IDBTransaction.__assertActive(me.transaction);\n if (oldName === name) {\n return;\n }\n if (Object.hasOwn(me.__idbdb.__objectStores, name) && !me.__idbdb.__objectStores[name].__pendingDelete) {\n throw createDOMException('ConstraintError', 'Object store \"' + name + '\" already exists in ' + me.__idbdb.name);\n }\n\n me.__name = name;\n\n const oldStore = me.__idbdb.__objectStores[oldName];\n oldStore.__name = name; // Fix old references\n me.__idbdb.__objectStores[name] = oldStore; // Ensure new reference accessible\n delete me.__idbdb.__objectStores[oldName]; // Ensure won't be found\n\n me.__idbdb.objectStoreNames.splice(me.__idbdb.objectStoreNames.indexOf(oldName), 1, name);\n\n const oldHandle = /** @type {IDBObjectStoreFull} */ (\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__storeHandles[oldName]\n );\n oldHandle.__name = name; // Fix old references\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__storeHandles[name] = oldHandle; // Ensure new reference accessible\n\n me.__pendingName = oldName;\n\n const sql = 'UPDATE __sys__ SET \"name\" = ? WHERE \"name\" = ?';\n const sqlValues = [util.escapeSQLiteStatement(name), util.escapeSQLiteStatement(oldName)];\n if (CFG.DEBUG) { console.log(sql, sqlValues); }\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__addNonRequestToTransactionQueue(function objectStoreClear (tx, args, success, error) {\n tx.executeSql(sql, sqlValues, function (tx) {\n // This SQL preserves indexes per https://www.sqlite.org/lang_altertable.html\n const sql = 'ALTER TABLE ' + util.escapeStoreNameForSQL(oldName) + ' RENAME TO ' + util.escapeStoreNameForSQL(name);\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(sql, [], function () {\n delete me.__pendingName;\n success();\n });\n }, function (tx, err) {\n error(err);\n return false;\n });\n });\n }\n }\n });\n }\n IDBObjectStore.prototype = IDBObjectStoreAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBObjectStore();\n};\n\n/**\n * Clones an IDBObjectStore instance for a different IDBTransaction instance.\n * @param {IDBObjectStoreFull} store\n * @param {import('./IDBTransaction.js').IDBTransactionFull} transaction\n * @returns {IDBObjectStoreFull}\n */\nIDBObjectStore.__clone = function (store, transaction) {\n const newStore = IDBObjectStore.__createInstance({\n name: store.__currentName,\n keyPath: Array.isArray(store.keyPath) ? store.keyPath.slice() : store.keyPath,\n autoInc: store.autoIncrement,\n indexList: {},\n idbdb: store.__idbdb,\n cursors: store.__cursors\n }, transaction);\n\n /** @type {const} */ ([\n '__indexes', '__indexNames', '__oldIndexNames',\n '__deleted', '__pendingDelete', '__pendingCreate', '__originalName'\n ]).forEach((p) => {\n // @ts-expect-error It's ok\n newStore[p] = store[p];\n });\n return newStore;\n};\n\n/**\n *\n * @param {IDBObjectStoreFull|import('./IDBIndex.js').IDBIndexFull} store\n * @param {string} [msg]\n * @throws {DOMException}\n * @returns {void}\n */\nIDBObjectStore.__invalidStateIfDeleted = function (store, msg) {\n if (\n store.__deleted || store.__pendingDelete || (store.__pendingCreate && (\n 'transaction' in store && store.transaction && store.transaction.__errored\n ))\n ) {\n throw createDOMException('InvalidStateError', msg || 'This store has been deleted');\n }\n};\n\n/**\n * Creates a new object store in the database.\n * @param {import('./IDBDatabase.js').IDBDatabaseFull} db\n * @param {IDBObjectStoreFull} store\n * @returns {IDBObjectStore}\n */\nIDBObjectStore.__createObjectStore = function (db, store) {\n // Add the object store to the IDBDatabase\n const storeName = store.__currentName;\n store.__pendingCreate = true;\n db.__objectStores[storeName] = store;\n db.objectStoreNames.push(storeName);\n\n // Add the object store to WebSQL\n const transaction =/** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n db.__versionTransaction\n );\n\n const storeHandles = transaction.__storeHandles;\n if (!Object.hasOwn(storeHandles, storeName) ||\n // These latter conditions are to allow store\n // recreation to create new clone object\n storeHandles[storeName].__pendingDelete ||\n storeHandles[storeName].__deleted) {\n storeHandles[storeName] = IDBObjectStore.__clone(store, transaction);\n }\n\n transaction.__addNonRequestToTransactionQueue(function createObjectStore (tx, args, success, failure) {\n /**\n * @param {WebSQLTransaction} tx\n * @param {(Error & {code?: number})} [err]\n * @returns {boolean}\n */\n function error (tx, err) {\n if (CFG.DEBUG) { console.log(err); }\n failure(createDOMException('UnknownError', 'Could not create object store \"' + storeName + '\"', err));\n return false;\n }\n\n const escapedStoreNameSQL = util.escapeStoreNameForSQL(storeName);\n // key INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE\n const sql = ['CREATE TABLE', escapedStoreNameSQL, '(key BLOB', store.autoIncrement ? 'UNIQUE, inc INTEGER PRIMARY KEY AUTOINCREMENT' : 'PRIMARY KEY', ', value BLOB)'].join(' ');\n if (CFG.DEBUG) { console.log(sql); }\n tx.executeSql(sql, [], function (tx) {\n /**\n * @returns {void}\n */\n function insertStoreInfo () {\n const encodedKeyPath = JSON.stringify(store.keyPath);\n tx.executeSql('INSERT INTO __sys__ VALUES (?,?,?,?,?)', [\n util.escapeSQLiteStatement(storeName),\n encodedKeyPath,\n // For why converting here, see comment and following\n // discussion at:\n // https://github.com/indexeddbshim/IndexedDBShim/issues/313#issuecomment-590086778\n Number(store.autoIncrement),\n '{}',\n 1\n ], function () {\n delete store.__pendingCreate;\n delete store.__deleted;\n success(store);\n }, error);\n }\n if (!CFG.useSQLiteIndexes) {\n insertStoreInfo();\n return;\n }\n tx.executeSql('CREATE INDEX IF NOT EXISTS ' + (\n util.sqlQuote('sk_' + escapedStoreNameSQL.slice(1, -1))\n ) + ' ON ' + escapedStoreNameSQL + '(\"key\")', [], insertStoreInfo, error);\n }, error);\n });\n return storeHandles[storeName];\n};\n\n/**\n * Deletes an object store from the database.\n * @param {import('./IDBDatabase.js').IDBDatabaseFull} db\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @returns {void}\n */\nIDBObjectStore.__deleteObjectStore = function (db, store) {\n // Remove the object store from the IDBDatabase\n store.__pendingDelete = true;\n // We don't delete the other index holders in case need reversion\n store.__indexNames = DOMStringList.__createInstance();\n\n db.objectStoreNames.splice(db.objectStoreNames.indexOf(store.__currentName), 1);\n\n const transaction = /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n db.__versionTransaction\n );\n const storeHandle = transaction.__storeHandles[store.__currentName];\n if (storeHandle) {\n storeHandle.__indexNames = DOMStringList.__createInstance();\n storeHandle.__pendingDelete = true;\n }\n\n // Remove the object store from WebSQL\n transaction.__addNonRequestToTransactionQueue(function deleteObjectStore (tx, args, success, failure) {\n /**\n * @param {WebSQLTransaction} tx\n * @param {(Error & {code?: number})} [err]\n * @returns {boolean}\n */\n function error (tx, err) {\n if (CFG.DEBUG) { console.log(err); }\n failure(createDOMException('UnknownError', 'Could not delete ObjectStore', err));\n return false;\n }\n\n tx.executeSql('SELECT \"name\" FROM __sys__ WHERE \"name\" = ?', [util.escapeSQLiteStatement(store.__currentName)], function (tx, data) {\n if (data.rows.length > 0) {\n tx.executeSql('DROP TABLE ' + util.escapeStoreNameForSQL(store.__currentName), [], function () {\n tx.executeSql('DELETE FROM __sys__ WHERE \"name\" = ?', [util.escapeSQLiteStatement(store.__currentName)], function () {\n delete store.__pendingDelete;\n store.__deleted = true;\n if (storeHandle) {\n delete storeHandle.__pendingDelete;\n storeHandle.__deleted = true;\n }\n success();\n }, error);\n }, error);\n }\n });\n });\n};\n\n/**\n * @typedef {[import('./Key.js').Key|undefined, import('./Key.js').Value]} KeyValueArray\n */\n\n// Todo: Although we may end up needing to do cloning genuinely asynchronously (for Blobs and FileLists),\n// and we'll want to ensure the queue starts up synchronously, we nevertheless do the cloning\n// before entering the queue and its callback since the encoding we do is preceded by validation\n// which we must do synchronously anyways. If we reimplement Blobs and FileLists asynchronously,\n// we can detect these types (though validating synchronously as possible) and once entering the\n// queue callback, ensure they load before triggering success or failure (perhaps by returning and\n// a `SyncPromise` from the `Sca.clone` operation and later detecting and ensuring it is resolved\n// before continuing).\n/**\n * Determines whether the given inline or out-of-line key is valid,\n * according to the object store's schema.\n * @param {import('./Key.js').Value} value Used for inline keys\n * @param {import('./Key.js').Key|undefined} key Used for out-of-line keys\n * @param {boolean} cursorUpdate\n * @throws {DOMException}\n * @this {IDBObjectStoreFull}\n * @returns {KeyValueArray}\n */\nIDBObjectStore.prototype.__validateKeyAndValueAndCloneValue = function (value, key, cursorUpdate) {\n const me = this;\n if (me.keyPath !== null) {\n if (key !== undefined) {\n throw createDOMException('DataError', 'The object store uses in-line keys and the key parameter was provided');\n }\n // Todo Binary: Avoid blobs loading async to ensure cloning (and errors therein)\n // occurs sync; then can make cloning and this method without callbacks (except where ok\n // to be async)\n const clonedValue = Sca.cloneWithInactiveTransaction(\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (me.transaction),\n value\n );\n const extractedKey = Key.extractKeyValueDecodedFromValueUsingKeyPath(clonedValue, me.keyPath); // May throw so \"rethrow\"\n if ('invalid' in extractedKey && extractedKey.invalid) {\n throw createDOMException('DataError', 'KeyPath was specified, but key was invalid.');\n }\n if ('failure' in extractedKey && extractedKey.failure) {\n if (!cursorUpdate) {\n if (!me.autoIncrement) {\n throw createDOMException('DataError', 'Could not evaluate a key from keyPath and there is no key generator');\n }\n // Todo: Could the keyPath not be an array?\n if (!Key.checkKeyCouldBeInjectedIntoValue(clonedValue, /** @type {string} */ (me.keyPath))) {\n throw createDOMException('DataError', 'A key could not be injected into a value');\n }\n // A key will be generated\n return [undefined, clonedValue];\n }\n throw createDOMException('DataError', 'Could not evaluate a key from keyPath');\n }\n // An `IDBCursor.update` call will also throw if not equal to the cursor’s effective key\n return [(/** @type {import('./Key.js').Key} */ (extractedKey.value)), clonedValue];\n }\n if (key === undefined) {\n if (!me.autoIncrement) {\n throw createDOMException('DataError', 'The object store uses out-of-line keys and has no key generator and the key parameter was not provided.');\n }\n // A key will be generated\n } else {\n Key.convertValueToKeyRethrowingAndIfInvalid(key);\n }\n const clonedValue = Sca.cloneWithInactiveTransaction(\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (me.transaction),\n value\n );\n return [key, clonedValue];\n};\n\n/**\n * From the store properties and object, extracts the value for the key in\n * the object store\n * If the table has auto increment, get the current number (unless it has\n * a keyPath leading to a valid but non-numeric or < 1 key).\n * @param {WebSQLTransaction} tx\n * @param {import('./Key.js').Value} value\n * @param {import('./Key.js').Key|undefined} key\n * @param {(key: import('./Key.js').Value, cn?: Integer) => void} success\n * @param {import('./Key.js').SQLFailureCallback} failCb\n * @this {IDBObjectStoreFull}\n * @returns {void}\n */\nIDBObjectStore.prototype.__deriveKey = function (tx, value, key, success, failCb) {\n const me = this;\n\n // Only run if cloning is needed\n /**\n * @param {Integer} [oldCn]\n * @returns {void}\n */\n function keyCloneThenSuccess (oldCn) { // We want to return the original key, so we don't need to accept an argument here\n Sca.encode(key, function (encodedKey) {\n success(Sca.decode(encodedKey), oldCn);\n });\n }\n\n if (me.autoIncrement) {\n // If auto-increment and no valid primaryKey found on the keyPath, get and set the new value, and use\n if (key === undefined) {\n Key.generateKeyForStore(tx, me, function (failure, key, oldCn) {\n if (failure) {\n failCb(createDOMException('ConstraintError', 'The key generator\\'s current number has reached the maximum safe integer limit'));\n return;\n }\n if (me.keyPath !== null) {\n // Should not throw now as checked earlier\n // Todo: Could this not be an array here?\n Key.injectKeyIntoValueUsingKeyPath(\n /** @type {{[key: string]: import('./Key.js').Value}} */ (value),\n /** @type {import('./Key.js').Key} */ (key),\n /** @type {string} */ (me.keyPath)\n );\n }\n success(key, oldCn);\n }, failCb);\n } else {\n Key.possiblyUpdateKeyGenerator(tx, me, key, keyCloneThenSuccess, failCb);\n }\n // Not auto-increment\n } else {\n keyCloneThenSuccess();\n }\n};\n\n/**\n * Validates `value`'s unique index entries against the table's *current*\n * state without mutating anything -- used by `__storingRecordObjectStore`\n * to check a `put()`'s constraints *before* `__overwrite` deletes the\n * existing row for that key, so a rejected `put()` can't end up losing\n * the record it was trying to replace (see\n * `idbobjectstore-put-unique-index-constraint-is-atomic.any.js`).\n * `excludeKey`, when given, treats a conflicting record as a non-conflict\n * if it's the very record being overwritten (its own current entry would\n * otherwise self-conflict on every no-op `put()` of an unchanged value).\n * `__insertData` below still runs its own (now redundant, but harmless --\n * the old row is gone by then) equivalent check as its first step; this\n * isn't merged into it because `__insertData` also performs the actual\n * `INSERT`, which cannot safely run before `__overwrite`'s `DELETE` when\n * overwriting an existing key.\n * @param {WebSQLTransaction} tx\n * @param {import('./Key.js').Value} value\n * @param {import('./Key.js').Key|Integer|undefined} excludeKey\n * @this {IDBObjectStoreFull}\n * @returns {SyncPromise}\n */\nIDBObjectStore.prototype.__checkIndexConstraints = function (tx, value, excludeKey) {\n const me = this;\n const indexPromises = Object.keys(me.__indexes).map((indexName) => {\n return new SyncPromise((resolve, reject) => {\n const index = me.__indexes[indexName];\n if (index.__pendingCreate || index.__deleted || !index.unique) {\n resolve(undefined);\n return;\n }\n /**\n * @type {import('./Key.js').KeyValueObject|\n * import('./Key.js').KeyPathEvaluateValue}\n */\n let indexKey;\n try {\n indexKey = Key.extractKeyValueDecodedFromValueUsingKeyPath(value, index.keyPath, index.multiEntry);\n if (\n ('invalid' in indexKey && indexKey.invalid) ||\n ('failure' in indexKey && indexKey.failure)\n ) {\n throw new Error('Go to catch');\n }\n } catch (err) {\n resolve(undefined);\n return;\n }\n const indexKeyValue = indexKey.value;\n if (indexKeyValue === undefined) {\n resolve(undefined);\n return;\n }\n const multiCheck = index.multiEntry && Array.isArray(indexKeyValue);\n const fetchArgs = buildFetchIndexDataSQL(true, index, indexKeyValue, 'key', multiCheck);\n executeFetchIndexData(null, ...fetchArgs, tx, null, function success (key) {\n if (key === undefined || (excludeKey !== undefined && cmp(\n /** @type {import('./Key.js').Key} */ (key), excludeKey\n ) === 0)) {\n resolve(undefined);\n return;\n }\n reject(createDOMException(\n 'ConstraintError',\n 'Index already contains a record equal to ' +\n (multiCheck ? 'one of the subkeys of' : '') +\n '`indexKey`'\n ));\n }, reject);\n });\n });\n return SyncPromise.all(indexPromises);\n};\n\n/**\n *\n * @param {WebSQLTransaction} tx\n * @param {string} encoded\n * @param {import('./Key.js').Value} value\n * @param {import('./Key.js').Key|Integer} clonedKeyOrCurrentNumber\n * @param {Integer|undefined} oldCn\n * @param {(\n * clonedKeyOrCurrentNumber: import('./Key.js').Key|Integer\n * ) => void} success\n * @param {(err: Error|DOMException) => void} error\n * @this {IDBObjectStoreFull}\n * @returns {SyncPromise}\n */\nIDBObjectStore.prototype.__insertData = function (tx, encoded, value, clonedKeyOrCurrentNumber, oldCn, success, error) {\n const me = this;\n // The `ConstraintError` to occur for `add` upon a duplicate will occur naturally in attempting an insert\n // We process the index information first as it will stored in the same table as the store\n /** @type {{[key: string]: string}} */\n const paramMap = {};\n const indexPromises = Object.keys(\n // We do not iterate `indexNames` as those can be modified synchronously (e.g.,\n // `deleteIndex` could, by its synchronous removal from `indexNames`, prevent\n // iteration here of an index though per IndexedDB test\n // `idbobjectstore_createIndex4-deleteIndex-event_order.js`, `createIndex`\n // should be allowed to first fail even in such a case).\n me.__indexes\n ).map((indexName) => {\n // While this may sometimes resolve sync and sometimes async, the\n // idea is to avoid, where possible, unnecessary delays (and\n // consuming code ought to only see a difference in the browser\n // where we can't control the transaction timeout anyways).\n return new SyncPromise((resolve, reject) => {\n const index = me.__indexes[indexName];\n if (\n // `createIndex` was called synchronously after the current insertion was added to\n // the transaction queue so although it was added to `__indexes`, it is not yet\n // ready to be checked here for the insertion as it will be when running the\n // `createIndex` operation (e.g., if two items with the same key were added and\n // *then* a unique index was created, it should not continue to err and abort\n // yet, as we're still handling the insertions which must be processed (e.g., to\n // add duplicates which then cause a unique index to fail))\n index.__pendingCreate ||\n // If already deleted (and not just slated for deletion (by `__pendingDelete`\n // after this add), we avoid checks\n index.__deleted\n ) {\n resolve(undefined);\n return;\n }\n /**\n * @type {import('./Key.js').KeyValueObject|\n * import('./Key.js').KeyPathEvaluateValue}\n */\n let indexKey;\n try {\n indexKey = Key.extractKeyValueDecodedFromValueUsingKeyPath(value, index.keyPath, index.multiEntry); // Add as necessary to this and skip past this index if exceptions here)\n if (\n ('invalid' in indexKey && indexKey.invalid) ||\n ('failure' in indexKey && indexKey.failure)\n ) {\n throw new Error('Go to catch');\n }\n } catch (err) {\n resolve(undefined);\n return;\n }\n const indexKeyValue = indexKey.value;\n /**\n * @param {import('./IDBIndex.js').IDBIndexFull} index\n * @returns {void}\n */\n function setIndexInfo (index) {\n if (indexKeyValue === undefined) {\n return;\n }\n paramMap[index.__currentName] = /** @type {string} */ (\n Key.encode(indexKeyValue, index.multiEntry)\n );\n }\n if (index.unique) {\n const multiCheck = index.multiEntry && Array.isArray(indexKeyValue);\n const fetchArgs = buildFetchIndexDataSQL(true, index, indexKeyValue, 'key', multiCheck);\n executeFetchIndexData(null, ...fetchArgs, tx, null, function success (key) {\n if (key === undefined) {\n setIndexInfo(index);\n resolve(undefined);\n return;\n }\n reject(createDOMException(\n 'ConstraintError',\n 'Index already contains a record equal to ' +\n (multiCheck ? 'one of the subkeys of' : '') +\n '`indexKey`'\n ));\n }, reject);\n } else {\n setIndexInfo(index);\n resolve(undefined);\n }\n });\n });\n return SyncPromise.all(indexPromises).then(() => {\n const sqlStart = ['INSERT INTO', util.escapeStoreNameForSQL(me.__currentName), '('];\n const sqlEnd = [' VALUES ('];\n const insertSqlValues = [];\n if (clonedKeyOrCurrentNumber !== undefined) {\n // Key.convertValueToKey(primaryKey); // Already run\n sqlStart.push(util.sqlQuote('key'), ',');\n sqlEnd.push('?,');\n insertSqlValues.push(\n util.escapeSQLiteStatement(\n /** @type {string} */ (Key.encode(clonedKeyOrCurrentNumber))\n )\n );\n }\n Object.entries(paramMap).forEach(([key, stmt]) => {\n sqlStart.push(util.escapeIndexNameForSQL(key) + ',');\n sqlEnd.push('?,');\n insertSqlValues.push(util.escapeSQLiteStatement(stmt));\n });\n // removing the trailing comma\n sqlStart.push(util.sqlQuote('value') + ' )');\n sqlEnd.push('?)');\n insertSqlValues.push(util.escapeSQLiteStatement(encoded));\n\n const insertSql = sqlStart.join(' ') + sqlEnd.join(' ');\n if (CFG.DEBUG) { console.log('SQL for adding', insertSql, insertSqlValues); }\n\n tx.executeSql(insertSql, insertSqlValues, function () {\n success(clonedKeyOrCurrentNumber);\n }, function (tx, err) {\n // Should occur for `add` operation\n error(createDOMException(\n 'ConstraintError', /** @type {string} */ (err.message), err\n ));\n return false;\n });\n return undefined;\n }).catch(function (err) {\n /**\n * @returns {void}\n */\n function fail () {\n // Todo: Add a different error object here if `assignCurrentNumber`\n // fails in reverting?\n error(err);\n }\n if (typeof oldCn === 'number') {\n Key.assignCurrentNumber(tx, me, oldCn, fail, fail);\n return null;\n }\n fail();\n return null;\n });\n};\n\n/**\n *\n * @param {import('./Key.js').Value} value\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.add = function (value /* , key */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n const key = arguments[1];\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('No value was specified');\n }\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__assertWritable();\n\n const request = /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__createRequest(me);\n const [ky, clonedValue] = me.__validateKeyAndValueAndCloneValue(value, key, false);\n // @ts-ignore -- Private API\n IDBObjectStore.__storingRecordObjectStore(request, me, true, clonedValue, true, ky);\n return request;\n};\n\n/**\n *\n * @param {import('./Key.js').Value} value\n * @throws {TypeError}\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.put = function (value /* , key */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n const key = arguments[1];\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('No value was specified');\n }\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__assertWritable();\n\n const request = /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__createRequest(me);\n const [ky, clonedValue] = me.__validateKeyAndValueAndCloneValue(value, key, false);\n // @ts-ignore -- Private API\n IDBObjectStore.__storingRecordObjectStore(request, me, true, clonedValue, false, ky);\n return request;\n};\n\n/**\n *\n * @param {WebSQLTransaction} tx\n * @param {import('./Key.js').Key} key\n * @param {(tx: WebSQLTransaction) => void} cb\n * @param {(err: (Error & {code?: number})) => void} error\n * @this {IDBObjectStoreFull}\n * @returns {void}\n */\nIDBObjectStore.prototype.__overwrite = function (tx, key, cb, error) {\n const me = this;\n // First try to delete if the record exists\n // Key.convertValueToKey(key); // Already run\n const sql = 'DELETE FROM ' + util.escapeStoreNameForSQL(me.__currentName) + ' WHERE \"key\" = ?';\n const encodedKey = /** @type {string} */ (Key.encode(key));\n tx.executeSql(sql, [util.escapeSQLiteStatement(encodedKey)], function (tx, data) {\n if (CFG.DEBUG) { console.log('Did the row with the', key, 'exist?', data.rowsAffected); }\n cb(tx);\n }, function (tx, err) {\n error(err);\n return false;\n });\n};\n\n/**\n *\n * @param {import('./IDBRequest.js').IDBRequestFull} request\n * @param {IDBObjectStoreFull} store\n * @param {boolean} invalidateCache\n * @param {import('./Key.js').Value} value\n * @param {boolean} noOverwrite\n * @returns {void}\n */\nIDBObjectStore.__storingRecordObjectStore = function (request, store, invalidateCache, value, noOverwrite /* , key */) {\n // eslint-disable-next-line prefer-rest-params -- API\n const key = arguments[5];\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n store.transaction\n ).__pushToQueue(request, function (tx, args, success, error) {\n store.__deriveKey(tx, value, key, function (clonedKeyOrCurrentNumberRaw, oldCn) {\n const clonedKeyOrCurrentNumber = /** @type {import('./Key.js').Key|Integer} */ (\n clonedKeyOrCurrentNumberRaw\n );\n Sca.encode(value, function (encoded) {\n /**\n * @param {WebSQLTransaction} tx\n * @returns {void}\n */\n function insert (tx) {\n store.__insertData(tx, encoded, value, clonedKeyOrCurrentNumber, oldCn, function (...args) {\n if (invalidateCache) {\n store.__cursors.forEach((cursor) => {\n cursor.__invalidateCache();\n });\n }\n success(...args);\n }, error);\n }\n if (!noOverwrite) {\n // Validate unique index constraints *before* `__overwrite`\n // deletes the existing row at this key -- otherwise a\n // `put()` that ends up rejected still permanently loses\n // the record it was trying to replace (see\n // `idbobjectstore-put-unique-index-constraint-is-atomic.any.js`).\n store.__checkIndexConstraints(tx, value, clonedKeyOrCurrentNumber).then(() => {\n store.__overwrite(tx, clonedKeyOrCurrentNumber, insert, error);\n return undefined;\n /**\n * @param {Error|DOMException} err\n * @returns {null}\n */\n }).catch(function (err) {\n /**\n * @returns {void}\n */\n function fail () {\n error(err);\n }\n if (typeof oldCn === 'number') {\n Key.assignCurrentNumber(tx, store, oldCn, fail, fail);\n return null;\n }\n fail();\n return null;\n });\n return;\n }\n insert(tx);\n });\n }, error);\n });\n};\n\n/**\n *\n * @param {import('./IDBIndex.js').Query} query\n * @param {boolean} [getKey]\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.__get = function (query, getKey) {\n const me = this;\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n\n const range = convertValueToKeyRange(query, true);\n\n const col = getKey ? 'key' : 'value';\n const sql = ['SELECT', util.sqlQuote(col), 'FROM', util.escapeStoreNameForSQL(me.__currentName)];\n /** @type {string[]} */\n const sqlValues = [];\n if (range !== undefined) {\n sql.push('WHERE');\n setSQLForKeyRange(range, util.sqlQuote('key'), sql, sqlValues);\n }\n sql.push('LIMIT', '1');\n const sqlStr = sql.join(' ');\n return /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__addToTransactionQueue(function objectStoreGet (tx, args, success, error) {\n if (CFG.DEBUG) { console.log('Fetching', me.__currentName, sqlValues); }\n tx.executeSql(sqlStr, sqlValues, function (tx, data) {\n if (CFG.DEBUG) { console.log('Fetched data', data); }\n let ret;\n try {\n // Opera can't deal with the try-catch here.\n if (data.rows.length === 0) {\n success();\n return;\n }\n ret = getKey\n ? Key.decode(util.unescapeSQLiteResponse(/** @type {{key: string}} */ (data.rows.item(0)).key), false)\n : Sca.decode(util.unescapeSQLiteResponse(/** @type {{value: string}} */ (data.rows.item(0)).value));\n } catch (e) {\n // If no result is returned, or error occurs when parsing JSON\n if (CFG.DEBUG) { console.log(e); }\n }\n success(ret);\n }, function (tx, err) {\n error(err);\n return false;\n });\n }, undefined, me);\n};\n\n/**\n *\n * @param {import('./IDBIndex.js').Query} query\n * @throws {TypeError}\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.get = function (query) {\n if (!arguments.length) {\n throw new TypeError('A parameter was missing for `IDBObjectStore.get`.');\n }\n return this.__get(query);\n};\n\n/**\n *\n * @param {import('./IDBIndex.js').Query} query\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.getKey = function (query) {\n if (!arguments.length) {\n throw new TypeError('A parameter was missing for `IDBObjectStore.getKey`.');\n }\n return this.__get(query, true);\n};\n\n/**\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.getAll = function (/* queryOrOptions, count */) {\n // eslint-disable-next-line prefer-rest-params -- API\n const {query, count, direction} = parseGetAllArgs(arguments);\n return collectAll(this, query, count, direction, 'value');\n};\n\n/**\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.getAllKeys = function (/* queryOrOptions, count */) {\n // eslint-disable-next-line prefer-rest-params -- API\n const {query, count, direction} = parseGetAllArgs(arguments);\n return collectAll(this, query, count, direction, 'key');\n};\n\n/**\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.getAllRecords = function (/* options */) {\n // eslint-disable-next-line prefer-rest-params -- API\n const {query, count, direction} = parseGetAllRecordsArgs(arguments);\n return collectAll(this, query, count, direction, 'record');\n};\n\n/**\n *\n * @param {import('./IDBIndex.js').Query} query\n * @throws {TypeError}\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.delete = function (query) {\n const me = this;\n if (!(this instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n if (!arguments.length) {\n throw new TypeError('A parameter was missing for `IDBObjectStore.delete`.');\n }\n\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__assertWritable();\n\n const range = convertValueToKeyRange(query, true);\n\n const sqlArr = ['DELETE FROM', util.escapeStoreNameForSQL(me.__currentName), 'WHERE'];\n /** @type {string[]} */\n const sqlValues = [];\n setSQLForKeyRange(range, util.sqlQuote('key'), sqlArr, sqlValues);\n const sql = sqlArr.join(' ');\n\n return /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__addToTransactionQueue(function objectStoreDelete (tx, args, success, error) {\n if (CFG.DEBUG) { console.log('Deleting', me.__currentName, sqlValues); }\n tx.executeSql(sql, sqlValues, function (tx, data) {\n if (CFG.DEBUG) { console.log('Deleted from database', data.rowsAffected); }\n me.__cursors.forEach((cursor) => {\n cursor.__invalidateCache(); // Delete\n });\n success();\n }, function (tx, err) {\n error(err);\n return false;\n });\n }, undefined, me);\n};\n\n/**\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.clear = function () {\n const me = this;\n if (!(this instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__assertWritable();\n\n return /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.transaction\n ).__addToTransactionQueue(function objectStoreClear (tx, args, success, error) {\n tx.executeSql('DELETE FROM ' + util.escapeStoreNameForSQL(me.__currentName), [], function (tx, data) {\n if (CFG.DEBUG) { console.log('Cleared all records from database', data.rowsAffected); }\n me.__cursors.forEach((cursor) => {\n cursor.__invalidateCache(); // Clear\n });\n success();\n }, function (tx, err) {\n error(err);\n return false;\n });\n }, undefined, me);\n};\n\n/**\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.count = function (/* query */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n const query = arguments[0];\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n\n // We don't need to add to cursors array since has the count parameter which won't cache\n return IDBCursorWithValue.__createInstance(query, 'next', me, me, 'key', 'value', true).__request;\n};\n\n/**\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.openCursor = function (/* query, direction */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n const [query, direction] = arguments;\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n IDBObjectStore.__invalidStateIfDeleted(me);\n const cursor = IDBCursorWithValue.__createInstance(query, direction, me, me, 'key', 'value');\n me.__cursors.push(cursor);\n return cursor.__request;\n};\n\n/**\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nIDBObjectStore.prototype.openKeyCursor = function (/* query, direction */) {\n const me = this;\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n IDBObjectStore.__invalidStateIfDeleted(me);\n // eslint-disable-next-line prefer-rest-params -- API\n const [query, direction] = arguments;\n const cursor = IDBCursor.__createInstance(query, direction, me, me, 'key', 'key');\n me.__cursors.push(cursor);\n return cursor.__request;\n};\n\n/**\n *\n * @param {string} indexName\n * @this {IDBObjectStoreFull}\n * @returns {import('./IDBIndex.js').IDBIndexFull}\n */\nIDBObjectStore.prototype.index = function (indexName) {\n const me = this;\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('No index name was specified');\n }\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertNotFinished(me.transaction);\n const index = me.__indexes[indexName];\n if (!index || index.__deleted) {\n throw createDOMException('NotFoundError', 'Index \"' + indexName + '\" does not exist on ' + me.__currentName);\n }\n\n if (!Object.hasOwn(me.__indexHandles, indexName) ||\n me.__indexes[indexName].__pendingDelete ||\n me.__indexes[indexName].__deleted\n ) {\n me.__indexHandles[indexName] = IDBIndex.__clone(index, me);\n }\n return me.__indexHandles[indexName];\n};\n\n/**\n * Creates a new index on the object store.\n * @param {string} indexName\n * @param {string|string[]} keyPath\n * @this {IDBObjectStoreFull}\n * @returns {IDBIndex}\n */\nIDBObjectStore.prototype.createIndex = function (indexName, keyPath /* , optionalParameters */) {\n const me = this;\n // eslint-disable-next-line prefer-rest-params -- API\n let optionalParameters = arguments[2];\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n indexName = String(indexName); // W3C test within IDBObjectStore.js seems to accept string conversion\n if (arguments.length === 0) {\n throw new TypeError('No index name was specified');\n }\n if (arguments.length === 1) {\n throw new TypeError('No key path was specified');\n }\n IDBTransaction.__assertVersionChange(me.transaction);\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n if (Object.hasOwn(me.__indexes, indexName) && !me.__indexes[indexName].__deleted && !me.__indexes[indexName].__pendingDelete) {\n throw createDOMException('ConstraintError', 'Index \"' + indexName + '\" already exists on ' + me.__currentName);\n }\n\n keyPath = util.convertToSequenceDOMString(keyPath);\n if (!util.isValidKeyPath(keyPath)) {\n throw createDOMException('SyntaxError', 'A valid keyPath must be supplied');\n }\n if (Array.isArray(keyPath) && optionalParameters && optionalParameters.multiEntry) {\n throw createDOMException('InvalidAccessError', 'The keyPath argument was an array and the multiEntry option is true.');\n }\n\n optionalParameters ||= {};\n /** @type {import('./IDBIndex.js').IDBIndexProperties} */\n const indexProperties = {\n columnName: indexName,\n keyPath,\n optionalParams: {\n unique: Boolean(optionalParameters.unique),\n multiEntry: Boolean(optionalParameters.multiEntry)\n }\n };\n const index = IDBIndex.__createInstance(me, indexProperties);\n IDBIndex.__createIndex(me, index);\n return index;\n};\n\n/**\n *\n * @param {string} name\n * @this {IDBObjectStoreFull}\n * @returns {void}\n */\nIDBObjectStore.prototype.deleteIndex = function (name) {\n const me = this;\n if (!(me instanceof IDBObjectStore)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('No index name was specified');\n }\n IDBTransaction.__assertVersionChange(me.transaction);\n IDBObjectStore.__invalidStateIfDeleted(me);\n IDBTransaction.__assertActive(me.transaction);\n const index = me.__indexes[name];\n if (!index) {\n throw createDOMException('NotFoundError', 'Index \"' + name + '\" does not exist on ' + me.__currentName);\n }\n\n IDBIndex.__deleteIndex(me, index);\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.defineReadonlyOuterInterface(IDBObjectStore.prototype, readonlyProperties);\nutil.defineOuterInterface(IDBObjectStore.prototype, ['name']);\nutil.setOperationNames(IDBObjectStore.prototype);\n\nIDBObjectStore.prototype[Symbol.toStringTag] = 'IDBObjectStorePrototype';\n\nObject.defineProperty(IDBObjectStore, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nexport default IDBObjectStore;\n","import {EventTargetFactory} from 'eventtargeter';\nimport {createDOMException} from './DOMException.js';\nimport {createEvent} from './Event.js';\nimport * as util from './util.js';\nimport DOMStringList from './DOMStringList.js';\nimport IDBObjectStore from './IDBObjectStore.js';\nimport IDBTransaction from './IDBTransaction.js';\n\nconst listeners = ['onabort', 'onclose', 'onerror', 'onversionchange'];\nconst readonlyProperties = ['name', 'version', 'objectStoreNames'];\n\n/**\n * @typedef {{\n * name: string,\n * keyPath: import('./Key.js').KeyPath,\n * autoInc: boolean,\n * indexList: {[key: string]: import('./IDBIndex.js').IDBIndexProperties},\n * idbdb: IDBDatabaseFull,\n * cursors?: (import('./IDBCursor.js').IDBCursorFull|\n * import('./IDBCursor.js').IDBCursorWithValueFull)[],\n * }} IDBObjectStoreProperties\n */\n\n/**\n * IDB Database Object.\n * @see https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#database-interface\n * @class\n * @this {IDBDatabaseFull}\n * @throws {TypeError}\n */\nfunction IDBDatabase () {\n this.__versionTransaction = null;\n this.__objectStores = {};\n /** @type {import('./IDBTransaction.js').IDBTransactionFull[]} */\n this.__transactions = [];\n throw new TypeError('Illegal constructor');\n}\nconst IDBDatabaseAlias = IDBDatabase;\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {IDBDatabase & EventTarget & {\n * createObjectStore: (storeName: string) => IDBObjectStore,\n * deleteObjectStore: (storeName: string) => void,\n * close: () => void,\n * transaction: (storeNames: string|string[], mode: string) => IDBTransaction,\n * throwIfUpgradeTransactionNull: () => void,\n * objectStoreNames: import('./DOMStringList.js').DOMStringListFull,\n * name: string,\n * __forceClose: (msg: string) => void,\n * __db: import('websql-configurable/lib/websql/WebSQLDatabase.js').default,\n * __closePending: boolean,\n * __oldVersion: Integer,\n * __version: Integer,\n * __name: string,\n * __upgradeTransaction: null|import('./IDBTransaction.js').IDBTransactionFull,\n * __versionTransaction: null|import('./IDBTransaction.js').IDBTransactionFull,\n * __transactions: import('./IDBTransaction.js').IDBTransactionFull[],\n * __objectStores: {[key: string]: import('./IDBObjectStore.js').IDBObjectStoreFull},\n * __objectStoreNames: import('./DOMStringList.js').DOMStringListFull,\n * __oldObjectStoreNames: import('./DOMStringList.js').DOMStringListFull,\n * __unblocking: {\n * check: () => void\n * }[]\n * }} IDBDatabaseFull\n */\n\n/**\n * @param {import('websql-configurable/lib/websql/WebSQLDatabase.js').default} db\n * @param {string} name\n * @param {Integer} oldVersion\n * @param {Integer} version\n * @param {import('websql-configurable/lib/websql/WebSQLResultSet.js').default} storeProperties\n * @returns {IDBDatabaseFull}\n */\nIDBDatabase.__createInstance = function (db, name, oldVersion, version, storeProperties) {\n /**\n * @class\n * @this {IDBDatabaseFull}\n */\n function IDBDatabase () {\n // @ts-expect-error It's ok\n this[Symbol.toStringTag] = 'IDBDatabase';\n util.defineReadonlyProperties(this, readonlyProperties);\n this.__db = db;\n this.__closePending = false;\n /** @type {{check: () => void}[]} */\n this.__unblocking = [];\n this.__oldVersion = oldVersion;\n this.__version = version;\n this.__name = name;\n this.__upgradeTransaction = null;\n util.defineListenerProperties(this, listeners);\n // @ts-expect-error Part of `ShimEventTarget`\n this.__setOptions({\n legacyOutputDidListenersThrowFlag: true // Event hook for IndexedB\n });\n\n /** @type {import('./IDBTransaction.js').IDBTransactionFull[]} */\n this.__transactions = [];\n\n /** @type {{[key: string]: IDBObjectStore}} */\n this.__objectStores = {};\n this.__objectStoreNames = DOMStringList.__createInstance();\n\n const itemCopy = /** @type {IDBObjectStoreProperties} */ ({});\n for (let i = 0; i < storeProperties.rows.length; i++) {\n const item = /** @type {{name: string, keyPath: string, autoInc: string, indexList: string}} */ (storeProperties.rows.item(i));\n // Safari implements `item` getter return object's properties\n // as readonly, so we copy all its properties (except our\n // custom `currNum` which we don't need) onto a new object\n itemCopy.name = item.name;\n itemCopy.keyPath = JSON.parse(item.keyPath);\n // Though `autoInc` is coming from the database as a NUMERIC\n // type (how SQLite stores BOOLEAN set in CREATE TABLE),\n // and should thus be parsed into a number here (0 or 1),\n // `IDBObjectStore.__createInstance` will convert to a boolean\n // when setting the store's `autoIncrement`.\n /** @type {const} */ (['autoInc', 'indexList']).forEach((prop) => {\n itemCopy[prop] = JSON.parse(item[prop]);\n });\n\n itemCopy.idbdb = this;\n const store = IDBObjectStore.__createInstance(itemCopy);\n this.__objectStores[store.name] = store;\n this.objectStoreNames.push(store.name);\n }\n this.__oldObjectStoreNames = this.objectStoreNames.clone();\n }\n IDBDatabase.prototype = IDBDatabaseAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBDatabase();\n};\n\n// @ts-expect-error It's ok\nIDBDatabase.prototype = EventTargetFactory.createInstance();\nIDBDatabase.prototype[Symbol.toStringTag] = 'IDBDatabasePrototype';\n\n/**\n * Creates a new object store.\n * @param {string} storeName\n * @this {IDBDatabaseFull}\n * @returns {IDBObjectStore}\n */\nIDBDatabase.prototype.createObjectStore = function (storeName /* , createOptions */) {\n // eslint-disable-next-line prefer-rest-params -- API\n let createOptions = arguments[1];\n storeName = String(storeName); // W3C test within IDBObjectStore.js seems to accept string conversion\n if (!(this instanceof IDBDatabase)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('No object store name was specified');\n }\n IDBTransaction.__assertVersionChange(this.__versionTransaction); // this.__versionTransaction may not exist if called mistakenly by user in onsuccess\n this.throwIfUpgradeTransactionNull();\n IDBTransaction.__assertActive(this.__versionTransaction);\n\n createOptions = {...createOptions};\n let {keyPath} = createOptions;\n keyPath = keyPath === undefined ? null : util.convertToSequenceDOMString(keyPath);\n if (keyPath !== null && !util.isValidKeyPath(keyPath)) {\n throw createDOMException('SyntaxError', 'The keyPath argument contains an invalid key path.');\n }\n\n if (Object.hasOwn(this.__objectStores, storeName) && !this.__objectStores[storeName].__pendingDelete) {\n throw createDOMException('ConstraintError', 'Object store \"' + storeName + '\" already exists in ' + this.name);\n }\n\n const autoInc = createOptions.autoIncrement;\n if (autoInc && (keyPath === '' || Array.isArray(keyPath))) {\n throw createDOMException('InvalidAccessError', 'With autoIncrement set, the keyPath argument must not be an array or empty string.');\n }\n\n /** @type {IDBObjectStoreProperties} */\n const storeProperties = {\n name: storeName,\n keyPath,\n autoInc,\n indexList: {},\n idbdb: this\n };\n const store = IDBObjectStore.__createInstance(storeProperties, this.__versionTransaction);\n return IDBObjectStore.__createObjectStore(this, store);\n};\n\n/**\n * Deletes an object store.\n * @param {string} storeName\n * @throws {TypeError|DOMException}\n * @this {IDBDatabaseFull}\n * @returns {void}\n */\nIDBDatabase.prototype.deleteObjectStore = function (storeName) {\n if (!(this instanceof IDBDatabase)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('No object store name was specified');\n }\n IDBTransaction.__assertVersionChange(this.__versionTransaction);\n this.throwIfUpgradeTransactionNull();\n IDBTransaction.__assertActive(this.__versionTransaction);\n\n const store = this.__objectStores[storeName];\n if (!store) {\n throw createDOMException('NotFoundError', 'Object store \"' + storeName + '\" does not exist in ' + this.name);\n }\n\n IDBObjectStore.__deleteObjectStore(this, store);\n};\n\n/**\n * @throws {TypeError}\n * @this {IDBDatabaseFull}\n * @returns {void}\n */\nIDBDatabase.prototype.close = function () {\n if (!(this instanceof IDBDatabase)) {\n throw new TypeError('Illegal invocation');\n }\n this.__closePending = true;\n // Multiple, separately-issued `open`/`deleteDatabase` requests can each\n // be waiting (concurrently) on this same connection to close -- e.g.\n // when an earlier one is still \"blocked\" but has already let the\n // connection queue move on to the next request -- so every registered\n // waiter must be notified, not just the most recently registered one.\n this.__unblocking.forEach(function (/** @type {{check: () => void}} */ u) { u.check(); });\n /** @type {{check: () => void}[]} */\n this.__unblocking = [];\n this.__transactions = [];\n};\n\n/**\n * Starts a new transaction.\n * @param {string|string[]} storeNames\n * @this {IDBDatabaseFull}\n * @returns {import('./IDBTransaction.js').IDBTransactionFull}\n */\nIDBDatabase.prototype.transaction = function (storeNames /* , mode, options */) {\n if (arguments.length === 0) {\n throw new TypeError('You must supply a valid `storeNames` to `IDBDatabase.transaction`');\n }\n // eslint-disable-next-line prefer-rest-params -- API\n let mode = arguments[1];\n // eslint-disable-next-line prefer-rest-params -- API\n const options = arguments[2];\n storeNames = util.isIterable(storeNames)\n // Creating new array also ensures sequence is passed by value: https://heycam.github.io/webidl/#idl-sequence\n ? [...new Set( // to be unique\n util.convertToSequenceDOMString(storeNames) // iterables have `ToString` applied (and we convert to array for convenience)\n // eslint-disable-next-line unicorn/require-array-sort-compare -- IndexedDB requires code unit comparison (default behavior)\n )].toSorted() // must be sorted\n : [util.convertToDOMString(storeNames)];\n\n /* (function () {\n throw new TypeError('You must supply a valid `storeNames` to `IDBDatabase.transaction`');\n }())); */\n\n // Since SQLite (at least node-websql and definitely WebSQL) requires\n // locking of the whole database, to allow simultaneous readwrite\n // operations on transactions without overlapping stores, we'd probably\n // need to save the stores in separate databases (we could also consider\n // prioritizing readonly but not starving readwrite).\n // Even for readonly transactions, due to [issue 17](https://github.com/nolanlawson/node-websql/issues/17),\n // we're not currently actually running the SQL requests in parallel.\n mode ||= 'readonly';\n\n IDBTransaction.__assertNotVersionChange(this.__versionTransaction);\n if (this.__closePending) {\n throw createDOMException('InvalidStateError', 'An attempt was made to start a new transaction on a database connection that is not open');\n }\n\n const objectStoreNames = DOMStringList.__createInstance();\n storeNames.forEach((storeName) => {\n if (!this.objectStoreNames.contains(storeName)) {\n throw createDOMException('NotFoundError', 'The \"' + storeName + '\" object store does not exist');\n }\n objectStoreNames.push(storeName);\n });\n\n if (storeNames.length === 0) {\n throw createDOMException('InvalidAccessError', 'No valid object store names were specified');\n }\n\n if (mode !== 'readonly' && mode !== 'readwrite') {\n throw new TypeError('Invalid transaction mode: ' + mode);\n }\n\n // Validated and reflected via `IDBTransaction.durability` for spec conformance only;\n // the SQLite/WebSQL backend has no equivalent flush/fsync knob to wire this to.\n let durability = options && options.durability;\n durability ||= 'default';\n if (durability !== 'default' && durability !== 'strict' && durability !== 'relaxed') {\n throw new TypeError('Invalid transaction durability: ' + durability);\n }\n\n // Do not set transaction state to \"inactive\" yet (will be set after\n // timeout on creating transaction instance):\n // https://github.com/w3c/IndexedDB/issues/87\n const trans = IDBTransaction.__createInstance(this, objectStoreNames, mode, durability);\n this.__transactions.push(trans);\n return trans;\n};\n\n/**\n * @see https://github.com/w3c/IndexedDB/issues/192\n * @throws {DOMException}\n * @this {IDBDatabaseFull}\n * @returns {void}\n */\nIDBDatabase.prototype.throwIfUpgradeTransactionNull = function () {\n if (this.__upgradeTransaction === null) {\n throw createDOMException('InvalidStateError', 'No upgrade transaction associated with database.');\n }\n};\n\n// Todo __forceClose: Add tests for `__forceClose`\n/**\n *\n * @param {string} msg\n * @this {IDBDatabaseFull}\n * @returns {void}\n */\nIDBDatabase.prototype.__forceClose = function (msg) {\n const me = this;\n me.close();\n let ct = 0;\n me.__transactions.forEach(function (trans) {\n // eslint-disable-next-line camelcase -- Clear API\n trans.on__abort = function () {\n ct++;\n if (ct === me.__transactions.length) {\n // Todo __forceClose: unblock any pending `upgradeneeded` or `deleteDatabase` calls\n const evt = createEvent('close');\n setTimeout(() => {\n me.dispatchEvent(evt);\n }, 0);\n }\n };\n trans.__abortTransaction(createDOMException(\n 'AbortError',\n 'The connection was force-closed: ' + (msg || '')\n ));\n });\n me.__transactions = [];\n};\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.defineOuterInterface(IDBDatabase.prototype, listeners);\nutil.defineReadonlyOuterInterface(IDBDatabase.prototype, readonlyProperties);\nutil.setOperationNames(IDBDatabase.prototype);\n\nObject.defineProperty(IDBDatabase.prototype, 'constructor', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: IDBDatabase\n});\n\nObject.defineProperty(IDBDatabase, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nexport default IDBDatabase;\n","/* eslint-disable sonarjs/no-invariant-returns -- Convenient here */\nimport SyncPromise from 'sync-promise-expanded';\n\nimport {createEvent} from './Event.js';\nimport IDBVersionChangeEvent from './IDBVersionChangeEvent.js';\nimport {logError, webSQLErrback, createDOMException} from './DOMException.js';\nimport {IDBOpenDBRequest} from './IDBRequest.js';\nimport cmp from './cmp.js';\nimport * as util from './util.js';\nimport * as Key from './Key.js';\nimport IDBTransaction from './IDBTransaction.js';\nimport IDBDatabase from './IDBDatabase.js';\nimport CFG from './CFG.js';\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLTransaction.js').default} WebSQLTransaction\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLTransaction.js').SqlErrorCallback} SqlErrorCallback\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLResultSet.js').default} WebSQLResultSet\n */\n\n/**\n * @callback DatabaseDeleted\n * @returns {void}\n */\n\n/** @type {import('./CFG.js').FSApi} */\nlet fs;\n\n/**\n * @param {import('./CFG.js').FSApi} _fs\n * @returns {void}\n */\nconst setFS = (_fs) => {\n // eslint-disable-next-line unicorn/no-top-level-assignment-in-function -- Necessary?\n fs = _fs;\n};\n\n/**\n * @returns {string}\n */\nconst getOrigin = () => {\n return (typeof location !== 'object' || !location) ? 'null' : location.origin;\n};\nconst hasNullOrigin = () => CFG.checkOrigin !== false && (getOrigin() === 'null');\n\n// Todo: This really should be process and tab-independent so the\n// origin could vary; in the browser, this might be through a\n// `SharedWorker`\n\n/**\n * @type {{\n * [key: string]: {\n * [key: string]: {\n * req: import('./IDBRequest.js').IDBOpenDBRequestFull,\n * cb: (req: import('./IDBRequest.js').IDBOpenDBRequestFull) => void,\n * }[]\n * }\n * }}\n */\nconst connectionQueue = {};\n\n/**\n * @param {string} name\n * @param {string} origin\n * @returns {void}\n */\nfunction processNextInConnectionQueue (name, origin = getOrigin()) {\n const queueItems = connectionQueue[origin][name];\n if (!queueItems[0]) { // Nothing left to process\n return;\n }\n const {req, cb} = queueItems[0]; // Keep in queue to prevent continuation\n\n /**\n * @returns {void}\n */\n function removeFromQueue () {\n queueItems.shift();\n processNextInConnectionQueue(name, origin);\n }\n // Only a terminal (`success`/`error`) event advances the queue --\n // `blocked` means this request is still pending (waiting on other\n // connections to close), so later requests for the same database must\n // keep waiting behind it rather than starting concurrently, per\n // https://w3c.github.io/IndexedDB/#request-connection-queue.\n req.addEventListener('success', removeFromQueue);\n req.addEventListener('error', removeFromQueue);\n cb(req);\n}\n\n/* eslint-disable default-param-last -- Keep cb at end */\n/**\n * @param {import('./IDBRequest.js').IDBOpenDBRequestFull} req\n * @param {string} name\n * @param {string} origin\n * @param {(req: import('./IDBRequest.js').IDBOpenDBRequestFull) => void} cb\n * @returns {void}\n */\nfunction addRequestToConnectionQueue (req, name, origin = getOrigin(), cb) {\n /* eslint-enable default-param-last -- Keep cb at end */\n if (!Object.hasOwn(connectionQueue[origin], name)) {\n connectionQueue[origin][name] = [];\n }\n connectionQueue[origin][name].push({req, cb});\n\n if (connectionQueue[origin][name].length === 1) { // If there are no items in the queue, we have to start it\n processNextInConnectionQueue(name, origin);\n }\n}\n\n/**\n * @param {import('./IDBDatabase.js').IDBDatabaseFull[]} openConnections\n * @param {import('./IDBRequest.js').IDBRequestFull} req\n * @param {Integer} oldVersion\n * @param {Integer|null} newVersion\n * @returns {SyncPromise}\n */\nfunction triggerAnyVersionChangeAndBlockedEvents (openConnections, req, oldVersion, newVersion) {\n // Todo: For Node (and in browser using service workers if available?) the\n // connections ought to involve those in any process; should also\n // auto-close if unloading\n\n /**\n * @param {import('./IDBDatabase.js').IDBDatabaseFull} connection\n * @returns {boolean|undefined}\n */\n const connectionIsClosed = (connection) => connection.__closePending;\n const connectionsClosed = () => openConnections.every((conn) => {\n return connectionIsClosed(conn);\n });\n return openConnections.reduce(function (promises, entry) {\n if (connectionIsClosed(entry)) {\n return promises;\n }\n return promises.then(function () {\n if (connectionIsClosed(entry)) {\n // Prior onversionchange must have caused this connection to be closed\n return undefined;\n }\n const e = /** @type {Event & IDBVersionChangeEvent} */ (\n // @ts-ignore It's ok; needed under some TS versions\n new IDBVersionChangeEvent('versionchange', {oldVersion, newVersion})\n );\n return new SyncPromise(function (resolve) {\n setTimeout(() => {\n entry.dispatchEvent(e); // No need to catch errors\n // Unlike a native `Promise`, `SyncPromise#then` chains\n // synchronously off `resolve()` (verified directly:\n // `SyncPromise.resolve().then(cb)` runs `cb` before\n // even the calling code below it finishes) -- so\n // resolving immediately here would let the\n // `connectionsClosed()` check below run before a\n // same-task-but-microtask-later continuation of a\n // `versionchange` listener above (e.g. an `await`-\n // based one that then calls `db.close()`, as in\n // `transaction-lifetime.any.js`) ever gets a turn,\n // incorrectly firing `blocked` even though the\n // connection was about to close in time. Give real\n // microtask-deferred continuations a small, bounded\n // number of turns first -- same pattern as\n // `IDBTransaction.js`'s `checkQueueEntry`.\n let attemptsLeft = 10;\n (function wait () {\n if (attemptsLeft-- <= 0) {\n resolve(undefined);\n return;\n }\n queueMicrotask(wait);\n }());\n }, 0);\n });\n });\n }, SyncPromise.resolve(undefined)).then(function () {\n if (connectionsClosed()) {\n return undefined;\n }\n return new SyncPromise(function (resolve) {\n const unblocking = {\n check () {\n if (connectionsClosed()) {\n resolve(undefined);\n }\n }\n };\n const e = /** @type {Event & IDBVersionChangeEvent} */ (\n // @ts-ignore It's ok; needed under some TS versions\n new IDBVersionChangeEvent('blocked', {oldVersion, newVersion})\n );\n setTimeout(() => {\n req.dispatchEvent(e); // No need to catch errors\n if (!connectionsClosed()) {\n openConnections.forEach((connection) => {\n if (!connectionIsClosed(connection)) {\n // Several concurrently-blocked requests can each be\n // waiting on this same connection, so append\n // rather than overwrite -- see `IDBDatabase.close`.\n connection.__unblocking.push(unblocking);\n }\n });\n } else {\n resolve(undefined);\n }\n }, 0);\n });\n });\n}\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLDatabase.js').default & {\n * _db: {\n * close: (errBack: (err: Error) => void) => void\n * }\n * }} DatabaseFull\n */\n\n/**\n * @type {{\n * [key: string]: {\n * [key: string]: DatabaseFull\n * }\n * }}\n */\nconst websqlDBCache = {};\n\n/**\n * Tracks databases with a creation/upgrade currently in flight but not yet\n * committed or aborted -- keyed by (unescaped) database name. The\n * `dbVersions` row in `sysdb` these entries shadow is written *before*\n * `upgradeneeded` is even dispatched to user code (as the success\n * callback of that very `INSERT`/`UPDATE`), on the same shared `sysdb`\n * connection `databases()` itself reads from -- so, absent this, a\n * `databases()` call made while an upgrade is still pending would see\n * the new row (or new version) immediately, rather than only once the\n * corresponding `versionchange` transaction has genuinely committed, as\n * required by `get-databases.any.js`'s \"doesn't pick up changes that\n * haven't committed\" test. `IDBFactory.prototype.databases` filters\n * its SQL results against this map.\n * @type {Map<string, {oldVersion: Integer, newVersion: Integer}>}\n */\nconst pendingVersionChanges = new Map();\n\n/** @type {import('websql-configurable/lib/websql/WebSQLDatabase.js').default} */\nlet sysdb;\nlet nameCounter = 0;\n\n/**\n * @param {string} name\n * @returns {Integer}\n */\nfunction getLatestCachedWebSQLVersion (name) {\n return Object.keys(websqlDBCache[name]).map(Number).reduce(\n (prev, curr) => {\n return Math.max(curr, prev);\n }, 0\n );\n}\n\n/**\n * @param {string} name\n * @returns {DatabaseFull}\n */\nfunction getLatestCachedWebSQLDB (name) {\n return websqlDBCache[name] && websqlDBCache[name][\n getLatestCachedWebSQLVersion(name)\n ];\n}\n\n/**\n * A cached WebSQL connection (e.g., from a prior `open()`) can keep the\n * underlying SQLite file handle open even after `IDBDatabase#close()`\n * (which only flags the connection for closing without releasing the\n * handle, to allow instance reuse). On Windows, deleting a file while a\n * handle to it is still open fails with `EBUSY`, so any cached connections\n * for `name` must be actually closed (and evicted, since they're no longer\n * usable) before attempting to remove the file.\n * @param {string} name\n * @param {() => void} cb\n * @returns {void}\n */\nfunction closeCachedWebSQLConnections (name, cb) {\n if (!Object.hasOwn(websqlDBCache, name)) {\n cb();\n return;\n }\n const dbs = Object.values(websqlDBCache[name]);\n delete websqlDBCache[name];\n let remaining = dbs.length;\n if (remaining === 0) {\n cb();\n return;\n }\n dbs.forEach((db) => {\n const sqliteDB = db._db;\n if (!sqliteDB || !sqliteDB.close) {\n remaining--;\n if (remaining === 0) {\n cb();\n }\n return;\n }\n sqliteDB.close(\n /**\n * @param {Error} err\n * @returns {void}\n */\n (err) => {\n if (err) {\n console.warn('Error closing database connection prior to file removal: ' + err);\n }\n remaining--;\n if (remaining === 0) {\n cb();\n }\n }\n );\n });\n}\n\n/**\n * @param {OpenDatabase} __openDatabase\n * @param {string} name\n * @param {string} escapedDatabaseName\n * @param {DatabaseDeleted} databaseDeleted\n * @param {(tx: WebSQLTransaction|Error|(Error & {code?: number}), err?: (Error & {code?: number})) => boolean} dbError\n * @returns {void}\n */\nfunction cleanupDatabaseResources (__openDatabase, name, escapedDatabaseName, databaseDeleted, dbError) {\n const useMemoryDatabase = typeof CFG.memoryDatabase === 'string';\n if (useMemoryDatabase) {\n const latestSQLiteDBCached = Object.hasOwn(websqlDBCache, name) ? getLatestCachedWebSQLDB(name) : null;\n if (!latestSQLiteDBCached) {\n console.warn('Could not find a memory database instance to delete.');\n databaseDeleted();\n return;\n }\n const sqliteDB = latestSQLiteDBCached._db;\n if (!sqliteDB || !sqliteDB.close) {\n console.error('The `openDatabase` implementation does not have the expected `._db.close` method for closing the database');\n return;\n }\n sqliteDB.close(\n /**\n * @param {Error} err\n * @returns {void}\n */\n (err) => {\n if (err) {\n console.warn('Error closing (destroying) memory database');\n return;\n }\n databaseDeleted();\n }\n );\n return;\n }\n if (fs && CFG.deleteDatabaseFiles !== false) {\n closeCachedWebSQLConnections(name, () => {\n fs.unlink(util.joinPath(CFG.databaseBasePath || '', escapedDatabaseName), (err) => {\n if (err && err.code !== 'ENOENT') { // Ignore if file is already deleted\n const removalError = /** @type {Error & {code?: number}} */ (\n new Error('Error removing database file: ' + escapedDatabaseName + ' ' + err)\n );\n removalError.code = 0;\n dbError(removalError);\n return;\n }\n databaseDeleted();\n });\n });\n return;\n }\n\n const sqliteDB = __openDatabase(\n util.joinPath(CFG.databaseBasePath || '', escapedDatabaseName),\n '1',\n name,\n CFG.DEFAULT_DB_SIZE\n );\n sqliteDB.transaction(function (tx) {\n tx.executeSql('SELECT \"name\" FROM __sys__', [], function (tx, data) {\n const tables = data.rows;\n (function deleteTables (i) {\n if (i >= tables.length) {\n // If all tables are deleted, delete the housekeeping tables\n tx.executeSql('DROP TABLE IF EXISTS __sys__', [], function () {\n databaseDeleted();\n }, dbError);\n } else {\n // Delete all tables in this database, maintained in the sys table\n tx.executeSql('DROP TABLE ' + util.escapeStoreNameForSQL(\n util.unescapeSQLiteResponse( // Avoid double-escaping\n /** @type {{name: string}} */ (tables.item(i)).name\n )\n ), [], function () {\n deleteTables(i + 1);\n }, function () {\n deleteTables(i + 1);\n return false;\n });\n }\n }(0));\n }, function () {\n // __sys__ table does not exist, but that does not mean delete did not happen\n databaseDeleted();\n return false;\n });\n });\n}\n\n/**\n * @callback CreateSysDBSuccessCallback\n * @returns {void}\n */\n\n/**\n * Creates the sysDB to keep track of version numbers for databases.\n * @param {OpenDatabase} __openDatabase\n * @param {CreateSysDBSuccessCallback} success\n * @param {(tx: WebSQLTransaction|(Error & {code?: number})|Error, err?: (Error & {code?: number})) => void} failure\n * @returns {void}\n */\nfunction createSysDB (__openDatabase, success, failure) {\n /**\n *\n * @param {boolean|WebSQLTransaction|(Error & {code?: number})} tx\n * @param {(Error & {code?: number})} [err]\n * @returns {void}\n */\n function sysDbCreateError (tx, err) {\n const er = webSQLErrback(/** @type {(Error & {code?: number})} */ (err) || tx);\n if (CFG.DEBUG) { console.log('Error in sysdb transaction - when creating dbVersions', err); }\n failure(er);\n }\n\n if (sysdb) {\n success();\n } else {\n // eslint-disable-next-line unicorn/no-top-level-assignment-in-function -- Necessary?\n sysdb = __openDatabase(\n typeof CFG.memoryDatabase === 'string'\n ? CFG.memoryDatabase\n : util.joinPath(\n (typeof CFG.sysDatabaseBasePath === 'string'\n ? CFG.sysDatabaseBasePath\n : (CFG.databaseBasePath || '')),\n '__sysdb__' + (CFG.addSQLiteExtension !== false ? '.sqlite' : '')\n ),\n '1',\n 'System Database',\n CFG.DEFAULT_DB_SIZE\n );\n sysdb.transaction(function (systx) {\n systx.executeSql('CREATE TABLE IF NOT EXISTS dbVersions (name BLOB, version INT);', [], function (systx) {\n if (!CFG.useSQLiteIndexes) {\n success();\n return;\n }\n systx.executeSql(\n 'CREATE INDEX IF NOT EXISTS dbvname ON dbVersions(name)',\n [],\n success,\n /** @type {SqlErrorCallback} */ (sysDbCreateError)\n );\n }, /** @type {SqlErrorCallback} */ (sysDbCreateError));\n }, sysDbCreateError);\n }\n}\n\n/**\n * IDBFactory Class.\n * @see https://w3c.github.io/IndexedDB/#idl-def-IDBFactory\n * @throws {TypeError}\n * @class\n */\nfunction IDBFactory () {\n throw new TypeError('Illegal constructor');\n}\n\n/**\n * @typedef {(\n * name: string, version: string, displayName: string, estimatedSize: number\n * ) => import('websql-configurable/lib/websql/WebSQLDatabase.js').default} OpenDatabase\n */\n\n/**\n * @typedef {globalThis.IDBFactory & {\n * __openDatabase: OpenDatabase,\n * __connections: {\n * [key: string]: import('./IDBDatabase.js').IDBDatabaseFull[]\n * },\n * __forceClose: (dbName: string, connIdx: Integer, msg: string) => void,\n * __setConnectionQueueOrigin: (origin?: string) => void\n * }} IDBFactoryFull\n */\n\nconst IDBFactoryAlias = IDBFactory;\n/**\n * @returns {IDBFactoryFull}\n */\nIDBFactory.__createInstance = function () {\n /**\n * @class\n * @this {IDBFactoryFull}\n */\n function IDBFactory () {\n // @ts-expect-error It's ok\n this[Symbol.toStringTag] = 'IDBFactory';\n this.__connections = {};\n }\n IDBFactory.prototype = IDBFactoryAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBFactory();\n};\n\n/**\n * The IndexedDB Method to create a new database and return the DB.\n * @param {string} name\n * @this {IDBFactoryFull}\n * @throws {TypeError} Illegal invocation or no arguments (for database name)\n * @returns {IDBOpenDBRequest}\n */\nIDBFactory.prototype.open = function (name /* , version */) {\n const me = this;\n if (!(me instanceof IDBFactory)) {\n throw new TypeError('Illegal invocation');\n }\n // eslint-disable-next-line prefer-rest-params -- API\n let version = arguments[1];\n\n if (arguments.length === 0) {\n throw new TypeError('Database name is required');\n }\n if (version !== undefined) {\n version = util.enforceRange(version, 'unsigned long long');\n if (version === 0) {\n throw new TypeError('Version cannot be 0');\n }\n }\n if (hasNullOrigin()) {\n throw createDOMException('SecurityError', 'Cannot open an IndexedDB database from an opaque origin.');\n }\n\n const req = IDBOpenDBRequest.__createInstance();\n let calledDbCreateError = false;\n let isRevertingSysdb = false;\n\n if (CFG.autoName && name === '') {\n // eslint-disable-next-line unicorn/no-top-level-assignment-in-function -- Necessary?\n name = 'autoNamedDatabase_' + nameCounter++;\n }\n name = String(name); // cast to a string\n const sqlSafeName = util.escapeSQLiteStatement(name);\n\n const useMemoryDatabase = typeof CFG.memoryDatabase === 'string';\n const useDatabaseCache = CFG.cacheDatabaseInstances !== false || useMemoryDatabase;\n\n /** @type {string} */\n let escapedDatabaseName;\n // eslint-disable-next-line no-useless-catch -- Possible refactoring\n try {\n escapedDatabaseName = util.escapeDatabaseNameForSQLAndFiles(name);\n // eslint-disable-next-line sonarjs/no-useless-catch -- Possible refactoring\n } catch (err) {\n 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.');\n }\n\n /**\n *\n * @param {WebSQLTransaction|Error|(Error & {code?: number})} tx\n * @param {(Error & {code?: number})} [err]\n * @returns {boolean}\n */\n function dbCreateError (tx, err) {\n if (calledDbCreateError || isRevertingSysdb) {\n return false;\n }\n // Defensive cleanup: `pendingVersionChanges.set(name, ...)` (see\n // below) runs *before* the `dbVersions` `INSERT`/`UPDATE` it\n // guards is even attempted, but only `versionSet`'s own\n // `on__beforecomplete`/`on__preabort` handlers ever clear it --\n // and `versionSet` never runs at all if that `INSERT`/`UPDATE`,\n // or an earlier step in this same `open()` flow, fails first.\n // Without this, such a failure would leave the entry orphaned\n // forever, silently corrupting `databases()` for any *other*,\n // unrelated later `open()` call that happens to reuse the same\n // database name (common in WPT tests, e.g. generic names like\n // \"DB1\"/\"TestDatabase\" reused across different test files in\n // the same process). A no-op if no entry was ever set.\n pendingVersionChanges.delete(name);\n const er = err ? webSQLErrback(err) : /** @type {Error} */ (tx);\n calledDbCreateError = true;\n // Re: why bubbling here (and how cancelable is only really relevant for `window.onerror`) see: https://github.com/w3c/IndexedDB/issues/86\n const evt = createEvent('error', er, {bubbles: true, cancelable: true});\n req.__done = true;\n req.__error = er;\n req.__result = undefined; // Must be undefined if an error per `result` getter\n req.dispatchEvent(evt);\n return false;\n }\n\n /**\n *\n * @param {WebSQLTransaction} tx\n * @param {DatabaseFull} db\n * @param {Integer} oldVersion\n * @returns {void}\n */\n function setupDatabase (tx, db, oldVersion) {\n tx.executeSql('SELECT \"name\", \"keyPath\", \"autoInc\", \"indexList\" FROM __sys__', [], function (tx, data) {\n /**\n * @returns {void}\n */\n function finishRequest () {\n req.__result = connection;\n req.__done = true;\n }\n const connection = IDBDatabase.__createInstance(db, name, oldVersion, version, data);\n if (!Object.hasOwn(me.__connections, name)) {\n me.__connections[name] = [];\n }\n me.__connections[name].push(connection);\n\n if (oldVersion < version) {\n const openConnections = me.__connections[name].slice(0, -1);\n triggerAnyVersionChangeAndBlockedEvents(openConnections, req, oldVersion, version).then(function () {\n // DB Upgrade in progress\n /**\n *\n * @param {WebSQLTransaction} systx\n * @param {boolean|(Error & {code?: number})|DOMException|Error} err\n * @param {(tx?: WebSQLTransaction|(Error & {code?: number}), err?: (Error & {code?: number})|WebSQLResultSet) => boolean} cb\n * @returns {void}\n */\n let sysdbFinishedCb = function (systx, err, cb) {\n if (err) {\n /**\n * @param {unknown} [errorToShow]\n * @returns {void}\n */\n const manualRevert = function (errorToShow) {\n /**\n * @param {string} [msg]\n * @throws {Error}\n * @returns {never}\n */\n function reportError (msg) {\n throw new Error('Unable to roll back upgrade transaction!' + (msg || ''));\n }\n\n sysdb.transaction(\n function (systx) {\n // Attempt to revert\n if (oldVersion === 0) {\n systx.executeSql(\n 'DELETE FROM dbVersions WHERE \"name\" = ?',\n [sqlSafeName]\n );\n } else {\n systx.executeSql(\n 'UPDATE dbVersions SET \"version\" = ? WHERE \"name\" = ?',\n [oldVersion, sqlSafeName]\n );\n }\n },\n function (sqlErr) {\n isRevertingSysdb = false;\n cb(sqlErr); // eslint-disable-line promise/no-callback-in-promise -- Convenient\n },\n function () {\n isRevertingSysdb = false;\n // eslint-disable-next-line promise/no-callback-in-promise -- Convenient\n cb(/** @type {(Error & {code?: number})|undefined} */ (\n errorToShow || reportError\n ));\n }\n );\n };\n\n try {\n systx.executeSql(\n 'ROLLBACK',\n [],\n function () {\n cb(); // eslint-disable-line promise/no-callback-in-promise -- Convenient\n },\n function (tx, sqlErr) {\n // Browser/Node may fail with expired transaction, so manually revert\n manualRevert(sqlErr);\n return false;\n }\n );\n } catch (e) {\n // Browser may fail with expired transaction above so\n // no choice but to manually revert\n manualRevert(e);\n }\n return;\n }\n // In browser, should auto-commit\n cb(); // eslint-disable-line promise/no-callback-in-promise -- Convenient\n };\n\n sysdb.transaction(function (systx) {\n /**\n * @returns {void}\n */\n function versionSet () {\n const e = /** @type {import('eventtargeter').EventWithProps & Event & IDBVersionChangeEvent} */ (\n // @ts-ignore It's ok; needed under some TS versions\n new IDBVersionChangeEvent('upgradeneeded', {oldVersion, newVersion: version})\n );\n req.__result = connection;\n connection.__upgradeTransaction = req.__transaction = connection.__versionTransaction = IDBTransaction.__createInstance(connection, connection.objectStoreNames, 'versionchange');\n req.__done = true;\n\n req.transaction.__addNonRequestToTransactionQueue(\n /**\n * @param {import('websql-configurable/lib/websql/WebSQLTransaction.js').default} tx\n * @param {unknown[]} args\n * @param {(result?: unknown, req?: import('./IDBRequest.js').IDBRequestFull) => void} finished\n * @returns {void}\n */\n function onupgradeneeded (tx, args, finished /* , error */) {\n // Unlike ordinary requests, this dispatch doesn't go through\n // `IDBTransaction`'s own `success`/`error` closures, so it must\n // open/close the transaction's active-handler window itself.\n req.transaction.__handlerActive = true;\n req.dispatchEvent(e);\n // Give any microtask-scheduled continuation of the\n // `upgradeneeded` handler (e.g. a plain\n // `Promise.resolve().then(...)`, or an `await`-based\n // continuation of a promise resolved from within the handler,\n // such as testharness.js's own `EventWatcher`) a chance to\n // run -- and still observe the transaction as active -- before\n // we deactivate it again, per\n // https://github.com/w3c/IndexedDB/issues/87. A single deferred\n // tick isn't always enough: an `await`-based continuation can\n // take more than one microtask turn to resume (e.g.\n // `transaction-lifetime.any.js`'s `EventWatcher`-based\n // `await eventWatcher.wait_for('upgradeneeded')`), so retry a\n // small, bounded number of times first -- same pattern as\n // `IDBTransaction.js`'s `checkQueueEntry` -- rather than\n // resetting after only one. Only the flag reset itself is\n // deferred here -- unlike `IDBTransaction.js`'s\n // `advanceAfterDispatch`, `finished()` (this transaction's own\n // queue-advancement/completion signal) still runs\n // synchronously, at exactly its previous timing: an earlier\n // attempt at deferring `finished()` too raced against unrelated\n // test setup that assumed a freshly deleted/created database's\n // upgrade transaction had already fully completed by the time\n // this function returns.\n /**\n * @param {Integer} attemptsLeft\n * @returns {void}\n */\n function deferHandlerActiveReset (attemptsLeft) {\n if (attemptsLeft <= 0) {\n req.transaction.__handlerActive = false;\n return;\n }\n queueMicrotask(() => {\n deferHandlerActiveReset(attemptsLeft - 1);\n });\n }\n deferHandlerActiveReset(10);\n\n if (e.__legacyOutputDidListenersThrowError) {\n logError('Error', 'An error occurred in an upgradeneeded handler attached to request chain', /** @type {Error} */ (e.__legacyOutputDidListenersThrowError)); // We do nothing else with this error as per spec\n req.transaction.__abortTransaction(createDOMException('AbortError', 'A request was aborted.'));\n return;\n }\n finished();\n }\n );\n\n // eslint-disable-next-line camelcase -- Clear API\n req.transaction.on__beforecomplete =\n /**\n * @param {Event & {complete: () => void}} ev\n * @returns {void}\n */\n function (ev) {\n pendingVersionChanges.delete(name);\n connection.__upgradeTransaction = null;\n /** @type {import('./IDBDatabase.js').IDBDatabaseFull} */ (\n req.__result\n ).__versionTransaction = null;\n sysdbFinishedCb(systx, false, function () {\n req.transaction.__callTransFinishedCb(false, function () {\n ev.complete();\n req.__transaction = null;\n });\n return false;\n });\n };\n\n // eslint-disable-next-line camelcase -- Clear API\n req.transaction.on__preabort = function () {\n isRevertingSysdb = true;\n pendingVersionChanges.delete(name);\n connection.__upgradeTransaction = null;\n // We ensure any cache is deleted before any request error events fire and try to reopen\n if (useDatabaseCache) {\n if (Object.hasOwn(websqlDBCache, name)) {\n delete websqlDBCache[name][version];\n }\n }\n };\n\n // eslint-disable-next-line camelcase -- Clear API\n req.transaction.on__abort = function () {\n req.__transaction = null;\n // `readyState` and `result` will be reset anyways by `dbCreateError` but we follow spec.\n req.__result = undefined;\n req.__done = false;\n\n connection.close();\n isRevertingSysdb = true;\n setTimeout(() => {\n const err = createDOMException('AbortError', 'The upgrade transaction was aborted.');\n sysdbFinishedCb(systx, err, function (reportError) {\n if (oldVersion === 0) {\n cleanupDatabaseResources(\n me.__openDatabase,\n name,\n escapedDatabaseName,\n dbCreateError.bind(null, err),\n // @ts-expect-error It's ok\n reportError || dbCreateError\n );\n return false;\n }\n dbCreateError(err);\n return false;\n });\n }, 0);\n };\n\n // eslint-disable-next-line camelcase -- Clear API\n req.transaction.on__complete = function () {\n const pos = connection.__transactions.indexOf(req.transaction);\n if (pos !== -1) {\n connection.__transactions.splice(pos, 1);\n }\n\n if (/** @type {import('./IDBDatabase.js').IDBDatabaseFull} */ (\n req.__result\n ).__closePending) {\n req.__transaction = null;\n const err = createDOMException('AbortError', 'The connection has been closed.');\n dbCreateError(err);\n return;\n }\n // Since this is running directly after `IDBTransaction.complete`,\n // there should be a new task. However, while increasing the\n // timeout 1ms in `IDBTransaction.__executeRequests` can allow\n // `IDBOpenDBRequest.onsuccess` to trigger faster than a new\n // transaction as required by \"transaction-create_in_versionchange\" in\n // w3c/Transaction.js (though still on a timeout separate from this\n // preceding `IDBTransaction.oncomplete`), this causes a race condition\n // somehow with old transactions (e.g., for the Mocha test,\n // in `IDBObjectStore.deleteIndex`, \"should delete an index that was\n // created in a previous transaction\").\n // setTimeout(() => {\n\n finishRequest();\n\n req.__transaction = null;\n const e = createEvent('success');\n req.dispatchEvent(e);\n // });\n };\n }\n\n pendingVersionChanges.set(name, {oldVersion, newVersion: version});\n if (oldVersion === 0) {\n systx.executeSql('INSERT INTO dbVersions VALUES (?,?)', [sqlSafeName, version], versionSet, dbCreateError);\n } else {\n systx.executeSql('UPDATE dbVersions SET \"version\" = ? WHERE \"name\" = ?', [version, sqlSafeName], versionSet, dbCreateError);\n }\n }, dbCreateError, undefined, function (currentTask, err, done, rollback, commit) {\n if (currentTask.readOnly || err) {\n return true;\n }\n sysdbFinishedCb = function (systx, err, cb) {\n if (err) {\n rollback(err,\n /**\n * @param {Error} [reportError]\n * @returns {void}\n */\n function (reportError) {\n sysdb.transaction(\n function (systx) {\n if (oldVersion === 0) {\n systx.executeSql(\n 'DELETE FROM dbVersions WHERE \"name\" = ?',\n [sqlSafeName]\n );\n } else {\n systx.executeSql(\n 'UPDATE dbVersions SET \"version\" = ? WHERE \"name\" = ?',\n [oldVersion, sqlSafeName]\n );\n }\n },\n function (sqlErr) {\n isRevertingSysdb = false;\n cb(sqlErr); // eslint-disable-line promise/no-callback-in-promise -- Convenient\n },\n function () {\n isRevertingSysdb = false;\n cb(reportError); // eslint-disable-line promise/no-callback-in-promise -- Convenient\n }\n );\n });\n } else {\n commit(cb);\n }\n };\n return false;\n });\n return undefined;\n }).catch((err) => {\n console.log('Error within `triggerAnyVersionChangeAndBlockedEvents`');\n throw err;\n });\n } else {\n finishRequest();\n\n const e = createEvent('success');\n req.dispatchEvent(e);\n }\n }, dbCreateError);\n }\n\n /**\n *\n * @param {Integer} oldVersion\n * @returns {void}\n */\n function openDB (oldVersion) {\n /** @type {DatabaseFull} */\n let db;\n if (version === undefined) {\n // Resolve before use as a cache key below, or a `open(name)` call\n // (no explicit version) would cache/look up under `undefined`\n // instead of the actual version, causing a second, separate\n // connection to be opened for the same database on reopen.\n version = oldVersion || 1;\n }\n if ((useMemoryDatabase || useDatabaseCache) && Object.hasOwn(websqlDBCache, name) && Object.hasOwn(websqlDBCache[name], version)) {\n db = websqlDBCache[name][version];\n } else {\n db = /** @type {DatabaseFull} */ (me.__openDatabase(\n useMemoryDatabase ? CFG.memoryDatabase : util.joinPath(CFG.databaseBasePath || '', escapedDatabaseName),\n '1',\n name,\n CFG.DEFAULT_DB_SIZE\n ));\n if (useDatabaseCache) {\n if (!(Object.hasOwn(websqlDBCache, name))) {\n websqlDBCache[name] = {};\n }\n websqlDBCache[name][version] = db;\n }\n }\n\n if (oldVersion > version) {\n const err = createDOMException('VersionError', 'An attempt was made to open a database using a lower version than the existing version.', version);\n if (useDatabaseCache) {\n setTimeout(() => {\n dbCreateError(err);\n }, 0);\n } else {\n dbCreateError(err);\n }\n return;\n }\n\n db.transaction(function (tx) {\n tx.executeSql('CREATE TABLE IF NOT EXISTS __sys__ (name BLOB, keyPath BLOB, autoInc BOOLEAN, indexList BLOB, currNum INTEGER)', [], function () {\n /**\n * @returns {void}\n */\n function setup () {\n setupDatabase(tx, db, oldVersion);\n }\n if (!CFG.createIndexes) {\n setup();\n return;\n }\n tx.executeSql('CREATE INDEX IF NOT EXISTS sysname ON __sys__(name)', [], setup, dbCreateError);\n }, /** @type {SqlErrorCallback} */ (dbCreateError));\n }, dbCreateError);\n }\n\n addRequestToConnectionQueue(req, name, /* origin */ undefined, function () {\n let latestCachedVersion;\n if (useDatabaseCache) {\n if (!Object.hasOwn(websqlDBCache, name)) {\n websqlDBCache[name] = {};\n }\n latestCachedVersion = getLatestCachedWebSQLVersion(name);\n }\n if (latestCachedVersion) {\n openDB(latestCachedVersion);\n } else {\n createSysDB(me.__openDatabase, function () {\n sysdb.readTransaction(function (sysReadTx) {\n sysReadTx.executeSql('SELECT \"version\" FROM dbVersions WHERE \"name\" = ?', [sqlSafeName], function (sysReadTx, data) {\n if (data.rows.length === 0) {\n // Database with this name does not exist\n openDB(0);\n } else {\n openDB(/** @type {{version: Integer}} */ (data.rows.item(0)).version);\n }\n }, dbCreateError);\n }, dbCreateError);\n }, dbCreateError);\n }\n });\n\n return req;\n};\n\n/**\n * Deletes a database.\n * @param {string} name\n * @this {IDBFactoryFull}\n * @returns {IDBOpenDBRequest}\n */\nIDBFactory.prototype.deleteDatabase = function (name) {\n const me = this;\n if (!(me instanceof IDBFactory)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length === 0) {\n throw new TypeError('Database name is required');\n }\n if (hasNullOrigin()) {\n throw createDOMException('SecurityError', 'Cannot delete an IndexedDB database from an opaque origin.');\n }\n\n name = String(name); // cast to a string\n const sqlSafeName = util.escapeSQLiteStatement(name);\n\n /** @type {string} */\n let escapedDatabaseName;\n // eslint-disable-next-line no-useless-catch -- Possible refactoring\n try {\n escapedDatabaseName = util.escapeDatabaseNameForSQLAndFiles(name);\n // eslint-disable-next-line sonarjs/no-useless-catch -- Possible refactoring\n } catch (err) {\n 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.');\n }\n\n const useMemoryDatabase = typeof CFG.memoryDatabase === 'string';\n const useDatabaseCache = CFG.cacheDatabaseInstances !== false || useMemoryDatabase;\n\n const req = IDBOpenDBRequest.__createInstance();\n let calledDBError = false;\n let version = 0;\n\n /**\n *\n * @param {boolean} err\n * @param {(erred?: boolean) => void} cb\n * @returns {void}\n */\n let sysdbFinishedCbDelete = function (err, cb) {\n cb(err);\n };\n\n // Although the spec has no specific conditions where an error\n // may occur in `deleteDatabase`, it does provide for\n // `UnknownError` as we may require upon a SQL deletion error\n /**\n *\n * @param {WebSQLTransaction|(Error & {code?: number})|Error} tx\n * @param {(Error & {code?: number})|boolean} [err]\n * @returns {boolean}\n */\n function dbError (tx, err) {\n if (calledDBError) {\n return false;\n }\n // Must be set synchronously (not inside the `sysdbFinishedCbDelete` callback below) to\n // guard against reentrancy: `sysdbFinishedCbDelete` -> `rollback`/`commit` -> websql-configurable's\n // `done()` -> `currentTask.errorCallback(er)`, which is this very `dbError`, calling back into\n // us before the first invocation has finished. Without this, a second rollback/commit gets\n // issued on the shared `sysdb` connection after it has already moved on to the next queued\n // transaction, corrupting that connection's task queue (see issue with unrelated `open()` calls\n // failing/crashing after a `deleteDatabase` file-removal error).\n calledDBError = true;\n const er = webSQLErrback(/** @type {(Error & {code?: number})} */ (err || tx));\n sysdbFinishedCbDelete(true, function () {\n req.__done = true;\n req.__error = er;\n req.__result = undefined; // Must be undefined if an error per `result` getter\n // Re: why bubbling here (and how cancelable is only really relevant for `window.onerror`) see: https://github.com/w3c/IndexedDB/issues/86\n const e = createEvent('error', er, {bubbles: true, cancelable: true});\n req.dispatchEvent(e);\n });\n return false;\n }\n\n addRequestToConnectionQueue(req, name, /* origin */ undefined, function (req) {\n createSysDB(me.__openDatabase, function () {\n // function callback (cb) { cb(); }\n // callback(function () {\n\n /**\n * @returns {void}\n */\n function completeDatabaseDelete () {\n req.__result = undefined;\n req.__done = true;\n const e = /** @type {Event & IDBVersionChangeEvent} */ (\n // @ts-ignore It's ok; needed under some TS versions\n new IDBVersionChangeEvent('success', {oldVersion: version, newVersion: null})\n );\n req.dispatchEvent(e);\n }\n\n /** @type {DatabaseDeleted} */\n function databaseDeleted () {\n sysdbFinishedCbDelete(false, function () {\n if (useDatabaseCache && Object.hasOwn(websqlDBCache, name)) {\n delete websqlDBCache[name]; // New calls will treat as though never existed\n }\n delete me.__connections[name];\n\n completeDatabaseDelete();\n });\n }\n sysdb.readTransaction(function (sysReadTx) {\n sysReadTx.executeSql('SELECT \"version\" FROM dbVersions WHERE \"name\" = ?', [sqlSafeName], function (sysReadTx, data) {\n if (data.rows.length === 0) {\n completeDatabaseDelete();\n return undefined;\n }\n ({version} = /** @type {{version: Integer}} */ (data.rows.item(0)));\n\n const openConnections = me.__connections[name] || [];\n triggerAnyVersionChangeAndBlockedEvents(openConnections, req, version, null).then(function () {\n // Since we need two databases which can't be in a single transaction, we\n // do this deleting from `dbVersions` first since the `__sys__` deleting\n // only impacts file memory whereas this one is critical for avoiding it\n // being found via `open` or `databases`; however, we will\n // avoid committing anyways until all deletions are made and rollback the\n // `dbVersions` change if they fail\n sysdb.transaction(function (systx) {\n systx.executeSql('DELETE FROM dbVersions WHERE \"name\" = ? ', [sqlSafeName], function () {\n // Todo: We should also check whether `dbVersions` is empty and if so, delete upon\n // `deleteDatabaseFiles` config. We also ought to do this when aborting (see\n // above code with `DELETE FROM dbVersions`)\n cleanupDatabaseResources(me.__openDatabase, name, escapedDatabaseName, databaseDeleted, dbError);\n }, dbError);\n }, dbError, undefined, function (currentTask, err, done, rollback, commit) {\n if (currentTask.readOnly || err) {\n return true;\n }\n sysdbFinishedCbDelete = function (err, cb) {\n if (err) {\n rollback(err, cb);\n } else {\n commit(cb);\n }\n };\n return false;\n });\n return undefined;\n // @ts-expect-error It's ok\n }).catch(dbError);\n return undefined;\n }, dbError);\n });\n }, dbError);\n });\n\n return req;\n};\n\n/**\n *\n * @param {import('./Key.js').Key} key1\n * @param {import('./Key.js').Key} key2\n * @throws {TypeError}\n * @returns {number}\n */\nIDBFactory.prototype.cmp = function (key1, key2) {\n if (!(this instanceof IDBFactory)) {\n throw new TypeError('Illegal invocation');\n }\n if (arguments.length < 2) {\n throw new TypeError('You must provide two keys to be compared');\n }\n // We use encoding facilities already built for proper sorting;\n // the following \"conversions\" are for validation only\n Key.convertValueToKeyRethrowingAndIfInvalid(key1);\n Key.convertValueToKeyRethrowingAndIfInvalid(key2);\n return cmp(key1, key2);\n};\n\n/**\n * May return outdated information if a database has since been deleted.\n * @see https://github.com/w3c/IndexedDB/pull/240/files\n * @this {IDBFactoryFull}\n * @returns {Promise<{\n * name?: string,\n * version?: Integer\n * }[]>}\n */\nIDBFactory.prototype.databases = function () {\n const me = this;\n let calledDbCreateError = false;\n // Snapshotted *now*, synchronously, at call time -- not read later\n // from inside the SQL query's callback below, which runs on a\n // deferred macrotask (see `websql-configurable`'s `SQLiteDatabase#exec`) and so\n // could otherwise race against (and lose to) an in-flight upgrade's\n // own commit/abort handler clearing its `pendingVersionChanges`\n // entry in the meantime -- which would make this method incorrectly\n // reflect a since-committed change that hadn't committed yet when\n // it was actually called.\n const pendingVersionChangesSnapshot = new Map(pendingVersionChanges);\n return new Promise(function (resolve, reject) { // eslint-disable-line promise/avoid-new -- Own polyfill\n if (!(me instanceof IDBFactory)) {\n throw new TypeError('Illegal invocation');\n }\n if (hasNullOrigin()) {\n throw createDOMException('SecurityError', 'Cannot get IndexedDB database names from an opaque origin.');\n }\n /**\n *\n * @param {true|WebSQLTransaction|(Error & {code?: number})|DOMException|Error} tx\n * @param {(Error & {code?: number})|DOMException|Error} [err]\n * @returns {boolean}\n */\n function dbGetDatabaseNamesError (tx, err) {\n if (calledDbCreateError) {\n return false;\n }\n const er = err ? webSQLErrback(/** @type {(Error & {code?: number})} */ (err)) : tx;\n calledDbCreateError = true;\n reject(er);\n return false;\n }\n createSysDB(me.__openDatabase, function () {\n sysdb.readTransaction(function (sysReadTx) {\n sysReadTx.executeSql('SELECT \"name\", \"version\" FROM dbVersions', [], function (sysReadTx, data) {\n const dbNames = [];\n for (let i = 0; i < data.rows.length; i++) {\n const {name: encodedName, version} = /** @type {{name: string, version: Integer}} */ (data.rows.item(i));\n const name = util.unescapeSQLiteResponse(encodedName);\n // A row for a database whose creation/upgrade hasn't\n // committed yet (see `pendingVersionChanges`) must\n // not reflect that in-flight change: a brand new\n // database (`oldVersion === 0`) isn't reported at\n // all until its creation commits, and an existing\n // database being upgraded is still reported, but\n // with its pre-upgrade version.\n const pending = pendingVersionChangesSnapshot.get(name);\n if (pending) {\n if (pending.oldVersion === 0) {\n continue;\n }\n dbNames.push({name, version: pending.oldVersion});\n continue;\n }\n dbNames.push({name, version});\n }\n resolve(dbNames);\n }, dbGetDatabaseNamesError);\n }, dbGetDatabaseNamesError);\n }, dbGetDatabaseNamesError);\n });\n};\n\n/**\n * @todo forceClose: Test\n * This is provided to facilitate unit-testing of the\n * closing of a database connection with a forced flag:\n * <https://w3c.github.io/IndexedDB/#steps-for-closing-a-database-connection>\n * @param {string} dbName\n * @param {Integer} connIdx\n * @param {string} msg\n * @throws {TypeError}\n * @this {IDBFactoryFull}\n * @returns {void}\n */\nIDBFactory.prototype.__forceClose = function (dbName, connIdx, msg) {\n const me = this;\n /**\n *\n * @param {import('./IDBDatabase.js').IDBDatabaseFull} conn\n * @returns {void}\n */\n function forceClose (conn) {\n conn.__forceClose(msg);\n }\n if (util.isNullish(dbName)) {\n (Object.values(me.__connections)).forEach((connections) => {\n connections.forEach((connection) => {\n forceClose(connection);\n });\n });\n } else if (!Object.hasOwn(me.__connections, dbName)) {\n console.log('No database connections with that name to force close');\n } else if (util.isNullish(connIdx)) {\n me.__connections[dbName].forEach((conn) => {\n forceClose(conn);\n });\n // eslint-disable-next-line unicorn/prefer-number-is-safe-integer -- Ok\n } else if (!Number.isInteger(connIdx) || connIdx < 0 || connIdx > me.__connections[dbName].length - 1) {\n throw new TypeError(\n 'If providing an argument, __forceClose must be called with a ' +\n 'numeric index to indicate a specific connection to close'\n );\n } else {\n forceClose(me.__connections[dbName][connIdx]);\n }\n};\n\n/**\n *\n * @param {string} [origin]\n * @returns {void}\n */\nIDBFactory.prototype.__setConnectionQueueOrigin = function (origin = getOrigin()) {\n connectionQueue[origin] = {};\n};\n\nIDBFactory.prototype[Symbol.toStringTag] = 'IDBFactoryPrototype';\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.setOperationNames(IDBFactory.prototype);\nObject.defineProperty(IDBFactory, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nconst shimIndexedDB = IDBFactory.__createInstance();\nexport {IDBFactory, cmp, shimIndexedDB, setFS};\n","import * as util from './util.js';\n\nconst readonlyProperties = /** @type {const} */ (['key', 'primaryKey', 'value']);\n\n/* eslint-disable jsdoc/valid-types -- pratt parser bug */\n/**\n * @typedef {{\n * [Symbol.toStringTag]: 'IDBRecord',\n * __key: import('./Key.js').Key,\n * __primaryKey: import('./Key.js').Key,\n * __value: import('./Key.js').Value,\n * key: import('./Key.js').Key,\n * primaryKey: import('./Key.js').Key,\n * value: import('./Key.js').Value\n * }} IDBRecordFull\n */\n/* eslint-enable jsdoc/valid-types -- pratt parser bug */\n\n/**\n * The record type returned by `IDBObjectStore`/`IDBIndex#getAllRecords()`\n * (IndexedDB 3.0). Structured the same way as `IDBCursor` -- a public\n * constructor that always throws, with real instances only ever produced\n * internally via `__createInstance` -- so a record can't be directly\n * instantiated by script.\n * @see https://w3c.github.io/IndexedDB/#record-interface\n * @throws {TypeError}\n * @class\n */\nfunction IDBRecord () {\n throw new TypeError('Illegal constructor');\n}\nconst IDBRecordAlias = IDBRecord;\n\n/**\n * @param {import('./Key.js').Key} key\n * @param {import('./Key.js').Key} primaryKey\n * @param {import('./Key.js').Value} value\n * @returns {IDBRecordFull}\n */\nIDBRecord.__createInstance = function (key, primaryKey, value) {\n /**\n * @class\n * @this {IDBRecordFull}\n */\n function IDBRecord () {\n // @ts-ignore Should be ok\n this[Symbol.toStringTag] = 'IDBRecord';\n this.__key = key;\n this.__primaryKey = primaryKey;\n this.__value = value;\n }\n IDBRecord.prototype = IDBRecordAlias.prototype;\n\n // @ts-expect-error Properties added below on the shared prototype\n return new IDBRecord();\n};\n\nIDBRecord.prototype[Symbol.toStringTag] = 'IDBRecordPrototype';\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.setOperationNames(IDBRecord.prototype);\nutil.setOperationNames(IDBRecord);\n\n// Defined once on the shared prototype (rather than per-instance, as\n// `util.defineReadonlyProperties` would) since WPT's `assert_idl_attribute`\n// specifically requires these to be inherited, not own, properties.\nreadonlyProperties.forEach((prop) => {\n Object.defineProperty(IDBRecord.prototype, '__' + prop, {\n enumerable: false,\n configurable: false,\n writable: true\n });\n // We must resort to this to get \"get <name>\" as the function `name` for\n // proper IDL.\n const o = {\n /**\n * @returns {import('./Key.js').Key|import('./Key.js').Value}\n */\n get [prop] () {\n // This is defined on the *shared* prototype (see above), so,\n // unlike a per-instance getter, it's reachable by calling it\n // directly on `IDBRecord.prototype` itself (not a real\n // instance) -- WebIDL requires that to throw.\n if (!(this instanceof IDBRecordAlias)) {\n throw new TypeError('Illegal invocation');\n }\n // @ts-ignore `this` is a real instance past the check above (not an issue in TS7)\n return this['__' + prop];\n }\n };\n const desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, prop)\n );\n Object.defineProperty(IDBRecord.prototype, prop, desc);\n});\n\nObject.defineProperty(IDBRecord, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nexport {IDBRecord};\n\nexport default IDBRecord;\n","import {IDBRequest} from './IDBRequest.js';\nimport IDBObjectStore from './IDBObjectStore.js';\nimport {createDOMException} from './DOMException.js';\nimport {setSQLForKeyRange, convertValueToKeyRange} from './IDBKeyRange.js';\nimport {cmp} from './IDBFactory.js';\nimport * as util from './util.js';\nimport IDBTransaction from './IDBTransaction.js';\nimport * as Key from './Key.js';\nimport * as Sca from './Sca.js';\nimport {IDBIndex} from './IDBIndex.js';\nimport CFG from './CFG.js';\nimport IDBRecord from './IDBRecord.js';\n\nconst cursorDirections = ['next', 'prev', 'nextunique', 'prevunique'];\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {import('websql-configurable/lib/websql/WebSQLTransaction.js').default} WebSQLTransaction\n */\n\n/**\n * @typedef {IDBCursor & {\n * primaryKey: import('./Key.js').Key|null|undefined,\n * key: import('./Key.js').Key|null|undefined,\n * direction: string,\n * source: import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull,\n * __request: import('./IDBRequest.js').IDBRequestFull,\n * __advanceCount: Integer|undefined,\n * __indexSource: boolean,\n * __key: import('./Key.js').Key|null|undefined,\n * __primaryKey: import('./Key.js').Key|null|undefined,\n * __value: import('./Key.js').Value,\n * __store: import('./IDBObjectStore.js').IDBObjectStoreFull,\n * __range: import('./IDBKeyRange.js').IDBKeyRangeFull|undefined,\n * __keyColumnName: string,\n * __valueColumnName: string,\n * __keyOnly: boolean,\n * __valueDecoder: {\n * decode: (str: string) => import('./Key.js').Value,\n * },\n * __count: boolean,\n * __prefetchedIndex: Integer,\n * __prefetchedData: null|{\n * length: number;\n * item(index: number): unknown;\n * }|{\n * data: RowItemNonNull[],\n * length: Integer,\n * item: (index: Integer) => RowItemNonNull\n * },\n * __multiEntryIndex: boolean,\n * __unique: boolean,\n * __sqlDirection: \"DESC\"|\"ASC\",\n * __matchedKeys: {[key: string]: true},\n * __continuationKey: import('./Key.js').Key|undefined,\n * __continuationPrimaryKey: import('./Key.js').Key|undefined,\n * __multiEntryExhausted: boolean,\n * __invalidateCache: () => void,\n * __gotValue: boolean,\n * __find: (\n * key: import('./Key.js').Key|undefined,\n * primaryKey: import('./Key.js').Key|undefined,\n * tx: WebSQLTransaction,\n * success: KeySuccess,\n * error: FindError,\n * recordsToLoad?: Integer\n * ) => void,\n * __findBasic: (\n * key: import('./Key.js').Key|undefined,\n * primaryKey: import('./Key.js').Key|undefined,\n * tx: WebSQLTransaction,\n * success: KeySuccess,\n * error: FindError,\n * recordsToLoad: Integer|undefined\n * ) => void,\n * __findMultiEntry: (\n * key: import('./Key.js').Key|undefined,\n * primaryKey: import('./Key.js').Key|undefined,\n * tx: WebSQLTransaction,\n * success: KeySuccess,\n * error: FindError,\n * recordsToLoad?: Integer\n * ) => void,\n * __onsuccess: (success: SuccessArg) => SuccessCallback,\n * __decode: (\n * rowItem: RowItemNonNull,\n * callback: (\n * key: import('./Key.js').Key|undefined,\n * val: import('./Key.js').Value,\n * primaryKey: import('./Key.js').Key|undefined,\n * encKey?: string\n * ) => void\n * ) => void,\n * __sourceOrEffectiveObjStoreDeleted: () => void,\n * __continue: (key?: import('./Key.js').Key, advanceContinue?: boolean) => void,\n * __continueFinish: (\n * key: import('./Key.js').Key|undefined,\n * primaryKey: import('./Key.js').Key|undefined,\n * advanceState: boolean\n * ) => void\n * }} IDBCursorFull\n */\n\n/**\n * @typedef {IDBCursorFull & {\n * __request: import('./IDBRequest.js').IDBRequestFull,\n * value: import('./Key.js').Value,\n * }} IDBCursorWithValueFull\n */\n\n/**\n * @class\n * @throws {TypeError}\n */\nfunction IDBCursor () {\n throw new TypeError('Illegal constructor');\n}\nconst IDBCursorAlias = IDBCursor;\n\n/* eslint-disable func-name-matching -- API */\n/**\n * The IndexedDB Cursor Object.\n * @see https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBCursor\n * @param {IDBKeyRange} query\n * @param {string} direction\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull} source\n * @param {string} keyColumnName\n * @param {string} valueColumnName\n * @param {boolean} [count]\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.__super = function IDBCursor (query, direction, store, source, keyColumnName, valueColumnName, count) {\n /* eslint-enable func-name-matching -- API */\n // @ts-expect-error Should be ok\n this[Symbol.toStringTag] = 'IDBCursor';\n util.defineReadonlyProperties(this, ['key', 'primaryKey', 'request']);\n IDBObjectStore.__invalidStateIfDeleted(store);\n this.__indexSource = util.instanceOf(source, IDBIndex);\n if (this.__indexSource) {\n IDBIndex.__invalidStateIfDeleted(\n /** @type {import('./IDBIndex.js').IDBIndexFull} */ (source)\n );\n }\n IDBTransaction.__assertActive(store.transaction);\n const range = convertValueToKeyRange(query);\n if (direction !== undefined && !cursorDirections.includes(direction)) {\n throw new TypeError(direction + 'is not a valid cursor direction');\n }\n\n Object.defineProperties(this, {\n // Babel is not respecting default writable false here, so make explicit\n source: {writable: false, value: source},\n direction: {writable: false, value: direction || 'next'}\n });\n this.__key = undefined;\n this.__primaryKey = undefined;\n\n this.__store = store;\n this.__range = range;\n this.__request = IDBRequest.__createInstance();\n this.__request.__source = source;\n this.__request.__transaction = this.__store.transaction;\n this.__keyColumnName = keyColumnName;\n this.__valueColumnName = valueColumnName;\n this.__keyOnly = valueColumnName === 'key';\n this.__valueDecoder = this.__keyOnly ? Key : Sca;\n this.__count = Boolean(count);\n this.__prefetchedIndex = -1;\n this.__continuationKey = undefined;\n this.__continuationPrimaryKey = undefined;\n this.__multiEntryExhausted = false;\n this.__multiEntryIndex = this.__indexSource\n ? 'multiEntry' in source && source.multiEntry\n : false;\n this.__unique = this.direction.includes('unique');\n this.__sqlDirection = ['prev', 'prevunique'].includes(this.direction) ? 'DESC' : 'ASC';\n\n if (range !== undefined) {\n // Encode the key range and cache the encoded values, so we don't have to re-encode them over and over\n range.__lowerCached = range.lower !== undefined && Key.encode(range.lower, this.__multiEntryIndex);\n range.__upperCached = range.upper !== undefined && Key.encode(range.upper, this.__multiEntryIndex);\n }\n this.__gotValue = true;\n this.continue();\n};\n\n/**\n *\n * @param {IDBKeyRange} query\n * @param {string} direction\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull} source\n * @param {string} keyColumnName\n * @param {string} valueColumnName\n * @param {boolean} [count]\n * @returns {IDBCursorFull}\n */\nIDBCursor.__createInstance = function (query, direction, store, source, keyColumnName, valueColumnName, count) {\n const IDBCursor = IDBCursorAlias.__super;\n IDBCursor.prototype = IDBCursorAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBCursor(\n query, direction, store, source, keyColumnName, valueColumnName, count\n );\n};\n\n/**\n *\n * @param {import('./Key.js').Key|undefined} key\n * @param {import('./Key.js').Key|undefined} primaryKey\n * @param {WebSQLTransaction} tx\n * @param {KeySuccess} success\n * @param {FindError} error\n * @param {Integer} [recordsToLoad]\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__find = function (key, primaryKey, tx, success, error, recordsToLoad) {\n if (this.__multiEntryIndex) {\n this.__findMultiEntry(key, primaryKey, tx, success, error, recordsToLoad);\n } else {\n this.__findBasic(key, primaryKey, tx, success, error, recordsToLoad);\n }\n};\n\n/**\n * @typedef {(\n * k: import('./Key.js').Key|undefined,\n * val: import('./Key.js').Value,\n * primKey: import('./Key.js').Key|undefined\n * ) => void} KeySuccess\n */\n\n/**\n * @typedef {(tx: WebSQLTransaction|Error|DOMException|(Error & {code?: number}), err?: (Error & {code?: number})) => void} FindError\n */\n\n/**\n *\n * @param {undefined|import('./Key.js').Key} key\n * @param {undefined|import('./Key.js').Key} primaryKey\n * @param {WebSQLTransaction} tx\n * @param {KeySuccess} success\n * @param {FindError} error\n * @param {Integer|undefined} recordsToLoad\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__findBasic = function (key, primaryKey, tx, success, error, recordsToLoad) {\n const continueCall = recordsToLoad !== undefined;\n recordsToLoad ||= 1;\n\n const me = this;\n const quotedKeyColumnName = util.sqlQuote(me.__keyColumnName);\n const quotedKey = util.sqlQuote('key');\n const sql = ['SELECT * FROM', util.escapeStoreNameForSQL(me.__store.__currentName)];\n\n /** @type {string[]} */\n const sqlValues = [];\n sql.push('WHERE', quotedKeyColumnName, 'NOT NULL');\n setSQLForKeyRange(me.__range, quotedKeyColumnName, sql, sqlValues, true, true);\n\n // Determine the ORDER BY direction based on the cursor.\n const direction = me.__sqlDirection;\n const op = direction === 'ASC' ? '>' : '<';\n\n if (primaryKey !== undefined) {\n sql.push('AND', quotedKey, op + '= ?');\n // Key.convertValueToKey(primaryKey); // Already checked by `continuePrimaryKey`\n sqlValues.push(/** @type {string} */ (Key.encode(primaryKey)));\n }\n if (key !== undefined) {\n sql.push('AND', quotedKeyColumnName, op + '= ?');\n // Key.convertValueToKey(key); // Already checked by `continue` or `continuePrimaryKey`\n sqlValues.push(/** @type {string} */ (Key.encode(key)));\n } else if (continueCall && me.__key !== undefined) {\n // Key.convertValueToKey(me.__key); // Already checked when stored\n if (!me.__unique && me.__keyColumnName !== 'key' && me.__primaryKey !== undefined) {\n // A plain `continue()` on a non-unique index cursor must find\n // the next record strictly after the (key, primaryKey) pair\n // this cursor last returned -- a scalar `key > lastKey` alone\n // would wrongly exclude a *different*, not-yet-visited record\n // that's still tied on key with the last one (e.g. another\n // record that always had that same indexed value), and would\n // also wrongly re-admit the *same* record forever if a\n // same-transaction `update()` bumped its own key back above\n // the threshold, since a scalar comparison can't distinguish\n // \"some other record newly tied\" from \"this record moved\n // past its own last position.\" Comparing the full tuple (via\n // this OR) against both key and primary key resolves both.\n sql.push(\n 'AND (', quotedKeyColumnName, op, '?',\n 'OR (', quotedKeyColumnName, '= ?', 'AND', quotedKey, op, '?))'\n );\n sqlValues.push(\n /** @type {string} */ (Key.encode(me.__key)),\n /** @type {string} */ (Key.encode(me.__key)),\n /** @type {string} */ (Key.encode(me.__primaryKey))\n );\n } else {\n sql.push('AND', quotedKeyColumnName, op + ' ?');\n sqlValues.push(/** @type {string} */ (Key.encode(me.__key)));\n }\n }\n\n if (!me.__count) {\n // 1. Sort by key\n sql.push('ORDER BY', quotedKeyColumnName, direction);\n\n if (me.__keyColumnName !== 'key') { // Avoid adding 'key' twice\n if (!me.__unique) {\n // 2. Sort by primaryKey (if defined and not unique)\n // 3. Sort by position (if defined)\n sql.push(',', quotedKey, direction);\n } else if (me.direction === 'prevunique') {\n // Sort by first record with key matching\n sql.push(',', quotedKey, 'ASC');\n }\n }\n\n if (!me.__unique && me.__indexSource) {\n // 4. Sort by object store position (if defined and not unique)\n sql.push(',', util.sqlQuote(me.__valueColumnName), direction);\n }\n sql.push('LIMIT', String(recordsToLoad));\n }\n const sqlStr = sql.join(' ');\n if (CFG.DEBUG) { console.log(sqlStr, sqlValues); }\n\n tx.executeSql(sqlStr, sqlValues, function (tx, data) {\n if (me.__count) {\n success(undefined, data.rows.length, undefined);\n } else if (data.rows.length > 1) {\n me.__prefetchedIndex = 0;\n me.__prefetchedData = data.rows;\n if (CFG.DEBUG) { console.log('Preloaded ' + data.rows.length + ' records for cursor'); }\n me.__decode(/** @type {RowItemNonNull} */ (data.rows.item(0)), success);\n } else if (data.rows.length === 1) {\n me.__decode(/** @type {RowItemNonNull} */ (data.rows.item(0)), success);\n } else {\n if (CFG.DEBUG) { console.log('Reached end of cursors'); }\n success(undefined, undefined, undefined);\n }\n }, function (tx, err) {\n if (CFG.DEBUG) { console.log('Could not execute Cursor.continue', sqlStr, sqlValues); }\n error(err);\n return false;\n });\n};\n\nconst leftBracketRegex = /\\[/gu;\n\n/**\n *\n * @param {undefined|import('./Key.js').Key} key\n * @param {undefined|import('./Key.js').Key} primaryKey\n * @param {WebSQLTransaction} tx\n * @param {KeySuccess} success\n * @param {FindError} error\n * @param {Integer} [recordsToLoad]\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__findMultiEntry = function (key, primaryKey, tx, success, error, recordsToLoad = 1) {\n const me = this;\n\n if (me.__multiEntryExhausted) {\n if (CFG.DEBUG) { console.log('[multiEntry] Reached end of multiEntry cursor (already exhausted)'); }\n success(undefined, undefined, undefined);\n return;\n }\n\n const quotedKeyColumnName = util.sqlQuote(me.__keyColumnName);\n const quotedKey = util.sqlQuote('key');\n\n // Determine the ORDER BY direction based on the cursor.\n const direction = me.__sqlDirection;\n const op = direction === 'ASC' ? '>' : '<';\n\n /**\n * Runs (and, if a batch of underlying rows produces no matching\n * multi-entry values, repeatedly re-runs) the query for the next batch\n * of underlying rows, advancing `me.__continuationKey`/\n * `me.__continuationPrimaryKey` (tracking the last *physical* row\n * scanned) each time, until either some matches are found or the\n * underlying table is exhausted.\n * @returns {void}\n */\n function runQuery () {\n const sql = ['SELECT * FROM', util.escapeStoreNameForSQL(me.__store.__currentName)];\n /** @type {string[]} */\n const sqlValues = [];\n sql.push('WHERE', quotedKeyColumnName, 'NOT NULL');\n if (me.__range && (me.__range.lower !== undefined && Array.isArray(me.__range.upper))) {\n if (me.__range.upper.indexOf(me.__range.lower) === 0) {\n sql.push('AND', quotedKeyColumnName, \"LIKE ? ESCAPE '^'\");\n sqlValues.push(\n '%' + util.sqlLIKEEscape(\n /** @type {string} */ (me.__range.__lowerCached).slice(0, -1)\n ) + '%'\n );\n }\n }\n\n if (primaryKey !== undefined) {\n sql.push('AND', quotedKey, op + '= ?');\n // Key.convertValueToKey(primaryKey); // Already checked by `continuePrimaryKey`\n sqlValues.push(/** @type {string} */ (Key.encode(primaryKey)));\n }\n if (key !== undefined) {\n sql.push('AND', quotedKeyColumnName, op + '= ?');\n // Key.convertValueToKey(key); // Already checked by `continue` or `continuePrimaryKey`\n sqlValues.push(/** @type {string} */ (Key.encode(key)));\n } else if (me.__continuationKey !== undefined) {\n // Resume from the last underlying (physical) row we scanned, not\n // from the last *matching* multi-entry value (which lives in a\n // different key-space than the raw index column and cannot be\n // reliably compared against it, e.g. for array index keys).\n sql.push(\n 'AND (', quotedKeyColumnName, op, '?',\n 'OR (', quotedKeyColumnName, '= ?', 'AND', quotedKey, op, '?))'\n );\n const encodedContinuationKey = /** @type {string} */ (\n Key.encode(me.__continuationKey, true)\n );\n sqlValues.push(\n encodedContinuationKey,\n encodedContinuationKey,\n /** @type {string} */ (Key.encode(me.__continuationPrimaryKey))\n );\n }\n\n if (!me.__count) {\n // 1. Sort by key\n sql.push('ORDER BY', quotedKeyColumnName, direction);\n\n // 2. Sort by primaryKey (if defined and not unique)\n if (!me.__unique && me.__keyColumnName !== 'key') { // Avoid adding 'key' twice\n sql.push(',', util.sqlQuote('key'), direction);\n }\n\n // 3. Sort by position (if defined)\n\n if (!me.__unique && me.__indexSource) {\n // 4. Sort by object store position (if defined and not unique)\n sql.push(',', util.sqlQuote(me.__valueColumnName), direction);\n }\n sql.push('LIMIT', String(recordsToLoad));\n }\n const sqlStr = sql.join(' ');\n if (CFG.DEBUG) { console.log('[multiEntry] query', sqlStr, sqlValues); }\n\n tx.executeSql(sqlStr, sqlValues, function (tx, data) {\n if (data.rows.length === 0) {\n me.__multiEntryExhausted = true;\n if (CFG.DEBUG) { console.log('[multiEntry] Reached end of multiEntry cursor (no more rows)'); }\n success(undefined, undefined, undefined);\n return;\n }\n\n if (me.__count) { // Avoid caching and other processing below\n let ct = 0;\n for (let i = 0; i < data.rows.length; i++) {\n const rowItem = /** @type {RowItemNonNull} */ (data.rows.item(i));\n const rowKey = Key.decode(rowItem[me.__keyColumnName], true);\n const matches = Key.findMultiEntryMatches(\n /** @type {import('./Key.js').Key} */ (rowKey), me.__range\n );\n ct += matches.length;\n }\n success(undefined, ct, undefined);\n return;\n }\n\n // Track how far we've physically scanned, regardless of whether\n // this batch produced any matches, so the next batch (if any)\n // resumes after this one instead of re-scanning or stopping early.\n const lastRawRow = /** @type {RowItemNonNull} */ (data.rows.item(data.rows.length - 1));\n me.__continuationKey = Key.decode(lastRawRow[me.__keyColumnName], true);\n me.__continuationPrimaryKey = Key.decode(lastRawRow.key);\n if (data.rows.length < recordsToLoad) {\n me.__multiEntryExhausted = true;\n }\n\n const rows = [];\n for (let i = 0; i < data.rows.length; i++) {\n const rowItem = /** @type {RowItemNonNull} */ (data.rows.item(i));\n const rowKey = Key.decode(rowItem[me.__keyColumnName], true);\n const matches = Key.findMultiEntryMatches(\n /** @type {import('./Key.js').Key} */ (rowKey), me.__range\n );\n\n for (const matchingKey of matches) {\n /**\n * @type {RowItemNonNull}\n */\n const clone = {\n matchingKey: /** @type {string} */ (\n Key.encode(matchingKey, true)\n ),\n key: rowItem.key,\n [me.__keyColumnName]: rowItem[me.__keyColumnName],\n [me.__valueColumnName]: rowItem[me.__valueColumnName]\n };\n rows.push(clone);\n }\n }\n\n if (rows.length === 0) {\n if (me.__multiEntryExhausted) {\n if (CFG.DEBUG) { console.log('[multiEntry] Reached end of multiEntry cursor (last batch had no matches)'); }\n success(undefined, undefined, undefined);\n return;\n }\n if (CFG.DEBUG) { console.log('[multiEntry] batch had no matches; fetching next batch'); }\n runQuery();\n return;\n }\n\n const reverse = me.direction.indexOf('prev') === 0;\n rows.sort(function (a, b) {\n if (a.matchingKey.replaceAll(leftBracketRegex, 'z') < b.matchingKey.replaceAll(leftBracketRegex, 'z')) {\n return reverse ? 1 : -1;\n }\n if (a.matchingKey.replaceAll(leftBracketRegex, 'z') > b.matchingKey.replaceAll(leftBracketRegex, 'z')) {\n return reverse ? -1 : 1;\n }\n if (a.key < b.key) {\n return me.direction === 'prev' ? 1 : -1;\n }\n if (a.key > b.key) {\n return me.direction === 'prev' ? -1 : 1;\n }\n return 0;\n });\n\n me.__prefetchedIndex = 0;\n me.__prefetchedData = {\n data: rows,\n length: rows.length,\n /**\n * @param {Integer} index\n * @this {{data: RowItemNonNull[]}}\n * @returns {RowItemNonNull}\n */\n item (index) {\n return this.data[index];\n }\n };\n if (CFG.DEBUG) { console.log('[multiEntry] Preloaded ' + me.__prefetchedData.length + ' records for multiEntry cursor'); }\n me.__decode(rows[0], success);\n }, function (tx, err) {\n if (CFG.DEBUG) { console.log('[multiEntry] Could not execute Cursor.continue', sqlStr, sqlValues); }\n error(err);\n return false;\n });\n }\n\n runQuery();\n};\n\n/**\n * @typedef {import('./Key.js').Value} StructuredCloneValue\n */\n\n/**\n * @typedef {import('./Key.js').Key} IndexedDBKey\n */\n\n/**\n * @callback SuccessArg\n * @param {StructuredCloneValue} value\n * @param {import('./IDBRequest.js').IDBRequestFull} req\n * @returns {void}\n */\n\n/**\n * @callback SuccessCallback\n * @param {IndexedDBKey|undefined} key\n * @param {StructuredCloneValue} value\n * @param {IndexedDBKey|undefined} primaryKey\n * @returns {void}\n */\n\n/**\n * Creates an \"onsuccess\" callback.\n * @param {SuccessArg} success\n * @this {IDBCursorFull}\n * @returns {SuccessCallback}\n */\nIDBCursor.prototype.__onsuccess = function (success) {\n const me = this;\n return function (key, value, primaryKey) {\n if (me.__count) {\n success(value, me.__request);\n } else {\n if (key !== undefined) {\n me.__gotValue = true;\n }\n me.__key = key === undefined ? null : key;\n me.__primaryKey = primaryKey === undefined ? null : primaryKey;\n me.__value = value === undefined ? null : value;\n const result = key === undefined ? null : me;\n success(result, me.__request);\n }\n };\n};\n\n/**\n * @typedef {{\n * matchingKey: string,\n * key: string,\n * [k: string]: string\n * }} RowItemNonNull\n */\n\n/**\n *\n * @param {RowItemNonNull} rowItem\n * @param {(\n * key: import('./Key.js').Key|undefined,\n * val: import('./Key.js').Value,\n * primaryKey: import('./Key.js').Key|undefined,\n * encKey?: string\n * ) => void} callback\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__decode = function (rowItem, callback) {\n const me = this;\n if (me.__multiEntryIndex && me.__unique) {\n if (!me.__matchedKeys) {\n me.__matchedKeys = {};\n }\n if (me.__matchedKeys[rowItem.matchingKey] === true) {\n callback(undefined, undefined, undefined);\n return;\n }\n me.__matchedKeys[rowItem.matchingKey] = true;\n }\n const encKey = util.unescapeSQLiteResponse(\n me.__multiEntryIndex\n ? rowItem.matchingKey\n : rowItem[me.__keyColumnName]\n );\n const encVal = util.unescapeSQLiteResponse(rowItem[me.__valueColumnName]);\n const encPrimaryKey = util.unescapeSQLiteResponse(rowItem.key);\n\n const key = Key.decode(\n encKey,\n me.__multiEntryIndex\n );\n const val = me.__valueDecoder.decode(encVal);\n const primaryKey = Key.decode(encPrimaryKey);\n callback(key, val, primaryKey, encKey /* , encVal, encPrimaryKey */);\n};\n\n/**\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__sourceOrEffectiveObjStoreDeleted = function () {\n IDBObjectStore.__invalidStateIfDeleted(this.__store, \"The cursor's effective object store has been deleted\");\n if (this.__indexSource) {\n IDBIndex.__invalidStateIfDeleted(\n /** @type {import('./IDBIndex.js').IDBIndexFull} */ (this.source),\n \"The cursor's index source has been deleted\"\n );\n }\n};\n\n/**\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__invalidateCache = function () {\n // @ts-ignore Why is this not being found?; needed under some TS versions\n this.__prefetchedData = null;\n this.__multiEntryExhausted = false;\n};\n\n/**\n *\n * @param {import('./Key.js').Key} [key]\n * @param {boolean} [advanceContinue]\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__continue = function (key, advanceContinue) {\n const me = this;\n const advanceState = me.__advanceCount !== undefined;\n IDBTransaction.__assertActive(me.__store.transaction);\n me.__sourceOrEffectiveObjStoreDeleted();\n if (!me.__gotValue && !advanceContinue) {\n throw createDOMException('InvalidStateError', 'The cursor is being iterated or has iterated past its end.');\n }\n if (key !== undefined) {\n Key.convertValueToKeyRethrowingAndIfInvalid(key);\n const cmpResult = cmp(key, me.key);\n if (cmpResult === 0 ||\n (me.direction.includes('next') && cmpResult === -1) ||\n (me.direction.includes('prev') && cmpResult === 1)\n ) {\n throw createDOMException('DataError', 'Cannot ' + (advanceState ? 'advance' : 'continue') + ' the cursor in an unexpected direction');\n }\n }\n this.__continueFinish(key, undefined, advanceState);\n};\n\n/**\n *\n * @param {import('./Key.js').Key|undefined} key\n * @param {import('./Key.js').Key|undefined} primaryKey\n * @param {boolean} advanceState\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.__continueFinish = function (key, primaryKey, advanceState) {\n const me = this;\n const recordsToPreloadOnContinue = me.__advanceCount || CFG.cursorPreloadPackSize || 100;\n me.__gotValue = false;\n me.__request.__done = false;\n\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.__store.transaction\n ).__pushToQueue(me.__request, function cursorContinue (tx, args, success, error, executeNextRequest) {\n /**\n * @param {import('./Key.js').Key|undefined} k\n * @param {import('./Key.js').Value} val\n * @param {import('./Key.js').Key|undefined} primKey\n * @returns {void}\n */\n function triggerSuccess (k, val, primKey) {\n if (advanceState) {\n if (me.__advanceCount && me.__advanceCount >= 2 && k !== undefined) {\n me.__advanceCount--;\n me.__key = k;\n me.__sourceOrEffectiveObjStoreDeleted();\n // This is an internal continuation step within a single\n // `advance()` call, not a fresh user-facing dispatch --\n // it's already part of an in-flight, already-validated\n // operation, so briefly reopen the active-handler\n // window `__pushToQueue` (via `__continueFinish`)\n // checks, rather than routing back through the public\n // `__continue()` (which would apply that check as if\n // this were new activity from user code).\n const {transaction} = /** @type {{transaction: import('./IDBTransaction.js').IDBTransactionFull}} */ (\n me.__store\n );\n // `runQueuedRequest` (in `IDBTransaction.js`) resets both\n // `__active` and `__handlerActive` to `false` right\n // before invoking this op, so both -- not just\n // `__handlerActive` -- need reopening here for\n // `__pushToQueue`'s `__assertActive()` check below to\n // pass.\n transaction.__active = true;\n transaction.__handlerActive = true;\n me.__continueFinish(undefined, undefined, true);\n transaction.__active = false;\n transaction.__handlerActive = false;\n // We don't call success yet but do need to advance the transaction queue\n util.runContinuationSafely(/** @type {() => void} */ (executeNextRequest));\n return;\n }\n me.__advanceCount = undefined;\n }\n me.__onsuccess(success)(k, val, primKey);\n }\n if (me.__prefetchedData) {\n // We have pre-loaded data for the cursor\n me.__prefetchedIndex++;\n if (me.__prefetchedIndex < me.__prefetchedData.length) {\n me.__decode(/** @type {RowItemNonNull} */ (me.__prefetchedData.item(me.__prefetchedIndex)), function (k, val, primKey, encKey) {\n /**\n * @returns {void}\n */\n function checkKey () {\n if (key === undefined) {\n // No target key to compare against -- always accept the next\n // prefetched record, regardless of direction.\n triggerSuccess(k, val, primKey);\n return;\n }\n // `cmp(k, key) > 0` (\"has this record passed the target key?\")\n // only holds for an ascending (`next`) cursor; a descending\n // (`prev`) one passes the target once `k` has dropped *below*\n // it, i.e. `cmp(k, key) < 0` -- matching `continuePrimaryKey`'s\n // own direction-aware comparisons above.\n const isPrev = me.direction.includes('prev');\n const keyCmp = cmp(k, key);\n const passedKey = isPrev ? keyCmp < 0 : keyCmp > 0;\n const atKey = keyCmp === 0;\n if (passedKey || (\n atKey && (\n me.__unique || primaryKey === undefined ||\n (isPrev ? cmp(primKey, primaryKey) <= 0 : cmp(primKey, primaryKey) >= 0)\n )\n )) {\n triggerSuccess(k, val, primKey);\n return;\n }\n // @ts-expect-error Todo: Our bug to fix\n util.runContinuationSafely(() => cursorContinue(tx, args, success, error));\n }\n if (me.__multiEntryIndex && me.__unique && encKey === undefined) {\n // `__decode` found this row's matching key already seen\n // (tracked via `__matchedKeys`) and signaled a skip by\n // omitting `encKey`; move on to the next prefetched\n // row instead of treating the missing key as the end\n // of the cursor.\n // @ts-expect-error Todo: Our bug to fix\n util.runContinuationSafely(() => cursorContinue(tx, args, success, error));\n return;\n }\n if (me.__unique && !me.__multiEntryIndex &&\n encKey === Key.encode(me.key, me.__multiEntryIndex)) {\n // @ts-expect-error Todo: Our bug to fix\n util.runContinuationSafely(() => cursorContinue(tx, args, success, error));\n return;\n }\n checkKey();\n });\n return;\n }\n }\n\n // No (or not enough) pre-fetched data, do query\n me.__find(\n key, primaryKey, tx, triggerSuccess,\n /** @type {FindError} */\n function (...args) {\n me.__advanceCount = undefined;\n const [t, err] = args;\n error(t, err);\n }, recordsToPreloadOnContinue\n );\n });\n};\n\n/**\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.continue = function (/* key */) {\n // eslint-disable-next-line prefer-rest-params -- API\n this.__continue(arguments[0]);\n};\n\n/**\n *\n * @param {import('./Key.js').Key} key\n * @param {import('./Key.js').Key} primaryKey\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.continuePrimaryKey = function (key, primaryKey) {\n const me = this;\n IDBTransaction.__assertActive(me.__store.transaction);\n me.__sourceOrEffectiveObjStoreDeleted();\n if (!me.__indexSource) {\n throw createDOMException('InvalidAccessError', '`continuePrimaryKey` may only be called on an index source.');\n }\n if (!['next', 'prev'].includes(me.direction)) {\n throw createDOMException('InvalidAccessError', '`continuePrimaryKey` may not be called with unique cursors.');\n }\n if (!me.__gotValue) {\n throw createDOMException('InvalidStateError', 'The cursor is being iterated or has iterated past its end.');\n }\n Key.convertValueToKeyRethrowingAndIfInvalid(key);\n Key.convertValueToKeyRethrowingAndIfInvalid(primaryKey);\n\n const cmpResult = cmp(key, me.key);\n if (\n (me.direction === 'next' && cmpResult === -1) ||\n (me.direction === 'prev' && cmpResult === 1)\n ) {\n throw createDOMException('DataError', 'Cannot continue the cursor in an unexpected direction');\n }\n\n /**\n * @returns {void}\n */\n function noErrors () {\n me.__continueFinish(key, primaryKey, false);\n }\n if (cmpResult === 0) {\n Sca.encode(primaryKey, function (encPrimaryKey) {\n Sca.encode(me.primaryKey, function (encObjectStorePos) {\n if (encPrimaryKey === encObjectStorePos ||\n (me.direction === 'next' && encPrimaryKey < encObjectStorePos) ||\n (me.direction === 'prev' && encPrimaryKey > encObjectStorePos)\n ) {\n throw createDOMException('DataError', 'Cannot continue the cursor in an unexpected direction');\n }\n noErrors();\n });\n });\n } else {\n noErrors();\n }\n};\n\n/**\n *\n * @param {Integer} count\n * @this {IDBCursorFull}\n * @returns {void}\n */\nIDBCursor.prototype.advance = function (count) {\n const me = this;\n count = util.enforceRange(count, 'unsigned long');\n if (count === 0) {\n throw new TypeError('Calling advance() with count argument 0');\n }\n if (me.__gotValue) { // Only set the count if not running in error (otherwise will override earlier good advance calls)\n me.__advanceCount = count;\n }\n me.__continue();\n};\n\n/**\n * The `{query, count, direction}` options shape shared by\n * `getAll`/`getAllKeys`/`getAllRecords`.\n * @typedef {{\n * query?: import('./IDBIndex.js').Query|null,\n * count?: Integer,\n * direction?: IDBCursorDirection\n * }} GetAllOptions\n */\n\n/**\n *\n * @param {import('./Key.js').Value} valueToUpdate\n * @this {IDBCursorFull}\n * @returns {IDBRequest}\n */\nIDBCursor.prototype.update = function (valueToUpdate) {\n const me = this;\n if (!arguments.length) {\n throw new TypeError('A value must be passed to update()');\n }\n IDBTransaction.__assertActive(me.__store.transaction);\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.__store.transaction\n ).__assertWritable();\n me.__sourceOrEffectiveObjStoreDeleted();\n if (!me.__gotValue) {\n throw createDOMException('InvalidStateError', 'The cursor is being iterated or has iterated past its end.');\n }\n if (me.__keyOnly) {\n throw createDOMException('InvalidStateError', 'This cursor method cannot be called when the key only flag has been set.');\n }\n const request = /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.__store.transaction\n ).__createRequest(me);\n const key = me.primaryKey;\n\n /**\n * @param {import('./Key.js').Value} clonedValue\n * @returns {void}\n */\n function addToQueue (clonedValue) {\n // `invalidateCache: true` so any cursor on this store (including\n // this one) drops its prefetched row batch, forcing its next\n // `continue()` to re-query live rather than serve rows snapshotted\n // before this update -- needed for the compound-tuple\n // continuation logic in `__findBasic` to see this update's\n // effect on ordering (see \"Modify records during cursor\n // iteration\" in idbcursor_update_index.any.js).\n // @ts-ignore -- API (not erring in TS 6)\n IDBObjectStore.__storingRecordObjectStore(request, me.__store, true, clonedValue, false, key);\n }\n if (me.__store.keyPath !== null) {\n const [evaluatedKey, clonedValue] = me.__store.__validateKeyAndValueAndCloneValue(valueToUpdate, undefined, true);\n if (cmp(me.primaryKey, evaluatedKey) !== 0) {\n throw createDOMException('DataError', 'The key of the supplied value to `update` is not equal to the cursor\\'s effective key');\n }\n // eslint-disable-next-line unicorn/prefer-hoisting-branch-code -- Different\n addToQueue(clonedValue);\n } else {\n const clonedValue = Sca.cloneWithInactiveTransaction(\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (me.__store.transaction),\n valueToUpdate\n );\n addToQueue(clonedValue);\n }\n return request;\n};\n\n/**\n * @this {IDBCursorFull}\n * @returns {IDBRequest}\n */\nIDBCursor.prototype.delete = function () {\n const me = this;\n IDBTransaction.__assertActive(me.__store.transaction);\n /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n me.__store.transaction\n ).__assertWritable();\n me.__sourceOrEffectiveObjStoreDeleted();\n if (!me.__gotValue) {\n throw createDOMException('InvalidStateError', 'The cursor is being iterated or has iterated past its end.');\n }\n if (me.__keyOnly) {\n throw createDOMException('InvalidStateError', 'This cursor method cannot be called when the key only flag has been set.');\n }\n return /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (\n this.__store.transaction\n ).__addToTransactionQueue(function cursorDelete (tx, args, success, error) {\n me.__find(\n undefined, undefined, tx,\n /** @type {KeySuccess} */\n function (key, value, primaryKey) {\n const sql = 'DELETE FROM ' + util.escapeStoreNameForSQL(me.__store.__currentName) + ' WHERE \"key\" = ?';\n if (CFG.DEBUG) { console.log(sql, key, primaryKey); }\n // Key.convertValueToKey(primaryKey); // Already checked when entered\n tx.executeSql(sql, [util.escapeSQLiteStatement(\n /** @type {string} */ (Key.encode(primaryKey))\n )], function (tx, data) {\n if (data.rowsAffected === 1) {\n // We don't invalidate the cache (as we don't access it anymore\n // and it will set the index off)\n success(undefined);\n } else {\n // @ts-expect-error Apparently ok\n error('No rows with key found' + key);\n }\n }, function (tx, data) {\n error(data);\n return false;\n });\n }, error\n );\n }, undefined, me);\n};\n\nIDBCursor.prototype[Symbol.toStringTag] = 'IDBCursorPrototype';\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.defineReadonlyOuterInterface(\n IDBCursor.prototype,\n ['source', 'direction', 'key', 'primaryKey', 'request']\n);\nutil.setOperationNames(IDBCursor.prototype);\nObject.defineProperty(IDBCursor, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\n/**\n * @class\n * @throws {TypeError}\n */\nfunction IDBCursorWithValue () {\n throw new TypeError('Illegal constructor');\n}\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\n// @ts-expect-error It's ok\nIDBCursorWithValue.prototype = Object.create(IDBCursor.prototype);\nObject.defineProperty(IDBCursorWithValue.prototype, 'constructor', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: IDBCursorWithValue\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\nconst IDBCursorWithValueAlias = IDBCursorWithValue;\n/**\n *\n * @param {IDBKeyRange} query\n * @param {string} direction\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull} store\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull} source\n * @param {string} keyColumnName\n * @param {string} valueColumnName\n * @param {boolean} [count]\n * @returns {IDBCursorWithValueFull}\n */\nIDBCursorWithValue.__createInstance = function (query, direction, store, source, keyColumnName, valueColumnName, count) {\n /**\n * @class\n * @this {IDBCursorWithValueFull}\n */\n function IDBCursorWithValue () {\n IDBCursor.__super.call(this, query, direction, store, source, keyColumnName, valueColumnName, count);\n // @ts-expect-error It's ok\n this[Symbol.toStringTag] = 'IDBCursorWithValue';\n util.defineReadonlyProperties(this, 'value');\n }\n IDBCursorWithValue.prototype = IDBCursorWithValueAlias.prototype;\n\n // @ts-expect-error It's ok\n return new IDBCursorWithValue();\n};\n\n/* eslint-disable unicorn/no-top-level-side-effects -- Would be good */\nutil.defineReadonlyOuterInterface(IDBCursorWithValue.prototype, ['value']);\nIDBCursorWithValue.prototype[Symbol.toStringTag] = 'IDBCursorWithValuePrototype';\n\nObject.defineProperty(IDBCursorWithValue, 'prototype', {\n writable: false\n});\n/* eslint-enable unicorn/no-top-level-side-effects -- Would be good */\n\n/**\n * Validates `direction` and fills in defaults for the `{query, count,\n * direction}` shape shared by `getAll`/`getAllKeys`/`getAllRecords`.\n * @param {unknown} options\n * @throws {TypeError}\n * @returns {{\n * query: import('./IDBIndex.js').Query|null|undefined,\n * count: Integer|undefined,\n * direction: string\n * }}\n */\nfunction normalizeGetAllOptions (options) {\n const {query, count, direction = 'next'} = /** @type {GetAllOptions} */ (options ?? {});\n if (!cursorDirections.includes(direction)) {\n throw new TypeError('`' + direction + '` is not a valid direction');\n }\n return {query, count, direction};\n}\n\n/**\n * `getAll`/`getAllKeys` accept either the legacy `(query, count)` signature\n * or, per the IndexedDB 3 draft's `getAllRecords` options shape, a single\n * `{query, count, direction}` options object -- including an *empty*\n * `{}` (WPT's own tests call `getAll({})` expecting every record back,\n * the same as `getAll()`, not a `DataError` from treating `{}` as an\n * invalid key). A plain object is never a valid IndexedDB key (or key\n * range), so the two forms can be told apart unambiguously by the shape\n * of the first argument alone -- WPT's own `get_all_with_options_and_count_test`\n * deliberately calls `getAll(options, count)` (an extra, non-overload-matching\n * second argument, which JS simply ignores) to confirm the options-shaped\n * first argument wins regardless of how many arguments were actually passed.\n * @param {IArguments} args\n * @throws {TypeError}\n * @returns {{\n * query: import('./IDBIndex.js').Query|null|undefined,\n * count: Integer|undefined,\n * direction: string\n * }}\n */\nfunction parseGetAllArgs (args) {\n const arg0 = args[0];\n if (util.isObj(arg0) && !Array.isArray(arg0) && !util.isDate(arg0) &&\n !util.isBinary(arg0) &&\n !('upper' in arg0 && 'lowerOpen' in arg0 && typeof arg0.lowerOpen === 'boolean') // IDBKeyRange-like\n ) {\n return normalizeGetAllOptions(arg0);\n }\n const [query, count] = args;\n return normalizeGetAllOptions({query, count});\n}\n\n/**\n * `getAllRecords` (IndexedDB 3.0) takes a single, optional `IDBGetAllOptions`\n * dictionary -- `{query, count, direction}` -- with no legacy positional\n * form to disambiguate against.\n * @param {IArguments} args\n * @throws {TypeError}\n * @returns {{\n * query: import('./IDBIndex.js').Query|null|undefined,\n * count: Integer|undefined,\n * direction: string\n * }}\n */\nfunction parseGetAllRecordsArgs (args) {\n return normalizeGetAllOptions(args[0]);\n}\n\n/**\n * Shared implementation backing `getAll`/`getAllKeys`/`getAllRecords` on both\n * `IDBObjectStore` and `IDBIndex`. This walks a `find`/`decode` state\n * object using the exact same low-level primitives\n * (`__find`/`__findBasic`/`__findMultiEntry`/`__decode`) a real cursor's\n * `continue()` uses internally, so ordering and uniqueness semantics --\n * including `nextunique`/`prevunique` over `multiEntry` indexes -- always\n * match what iterating that same cursor manually would produce.\n *\n * Unlike a real cursor, none of the intermediate steps go through the\n * transaction's shared request queue (`__pushToQueue`): each step re-enters\n * the same queue slot's op function via a plain synchronous/callback chain\n * and only calls the queue's real `success` once, when every record has\n * been collected. This makes the whole operation occupy exactly one slot,\n * at its true issuance position, so its result event can't be reordered\n * relative to sibling requests queued around the same time -- which\n * driving this through the public, queue-based `openCursor()`/`continue()`\n * API (as this used to) cannot guarantee, since each subsequent `continue()`\n * step is appended to the end of the (by-then-longer) queue rather than\n * staying next to the steps before it.\n * @param {import('./IDBObjectStore.js').IDBObjectStoreFull|\n * import('./IDBIndex.js').IDBIndexFull} source\n * @param {import('./Key.js').Value} query\n * @param {Integer|undefined} count\n * @param {string} direction\n * @param {\"value\"|\"key\"|\"record\"} mode\n * @throws {TypeError}\n * @returns {import('./IDBRequest.js').IDBRequestFull}\n */\nfunction collectAll (source, query, count, direction, mode) {\n const isIndexSource = util.instanceOf(source, IDBIndex);\n if (!isIndexSource && !util.instanceOf(source, IDBObjectStore)) {\n // Per Web IDL, an operation invoked on a `this` that isn't an\n // instance of the interface it's defined on must throw a\n // TypeError (\"illegal invocation\") -- checked here, rather than\n // left to fall through to `store.transaction`/`__assertActive`\n // below, since those instead throw `TransactionInactiveError`\n // for a `this` with no real `transaction` property.\n throw new TypeError('Illegal invocation');\n }\n if (count !== undefined) {\n count = util.enforceRange(count, 'unsigned long');\n }\n const indexSource = /** @type {import('./IDBIndex.js').IDBIndexFull} */ (source);\n const store = /** @type {import('./IDBObjectStore.js').IDBObjectStoreFull} */ (\n isIndexSource ? indexSource.objectStore : source\n );\n const tx = /** @type {import('./IDBTransaction.js').IDBTransactionFull} */ (store.transaction);\n\n IDBObjectStore.__invalidStateIfDeleted(store);\n if (isIndexSource) {\n IDBIndex.__invalidStateIfDeleted(indexSource);\n }\n IDBTransaction.__assertActive(tx);\n const range = convertValueToKeyRange(query);\n const multiEntryIndex = isIndexSource && Boolean(indexSource.multiEntry);\n if (range !== undefined) {\n // Encode the key range and cache the encoded values, matching what a\n // real cursor's constructor does, since `__findMultiEntry` reads\n // these cached values back off the range.\n range.__lowerCached = range.lower !== undefined && Key.encode(range.lower, multiEntryIndex);\n range.__upperCached = range.upper !== undefined && Key.encode(range.upper, multiEntryIndex);\n }\n\n // `getAllRecords` needs each record's value, so it (like `getAll`) must\n // decode the `value` column rather than the lighter-weight `key`-only\n // reads `getAllKeys` can get away with.\n const needsValue = mode !== 'key';\n const keyColumnName = isIndexSource ? util.escapeIndexNameForSQLKeyColumn(indexSource.name) : 'key';\n const valueColumnName = needsValue ? 'value' : 'key';\n\n // Inherits from `IDBCursor.prototype` (rather than being a plain object)\n // because `__find` dispatches to `this.__findBasic`/`this.__findMultiEntry`\n // as methods on `this`, not as functions looked up separately.\n /** @type {IDBCursorFull} */\n const state = /** @type {IDBCursorFull} */ (/** @type {unknown} */ (Object.assign(Object.create(IDBCursor.prototype), {\n __store: store,\n __indexSource: isIndexSource,\n __range: range,\n __keyColumnName: keyColumnName,\n __valueColumnName: valueColumnName,\n __valueDecoder: valueColumnName === 'key' ? Key : Sca,\n __count: false,\n __prefetchedIndex: -1,\n __prefetchedData: null,\n __continuationKey: undefined,\n __continuationPrimaryKey: undefined,\n __multiEntryExhausted: false,\n __multiEntryIndex: multiEntryIndex,\n __unique: direction.includes('unique'),\n __sqlDirection: ['prev', 'prevunique'].includes(direction) ? 'DESC' : 'ASC',\n __key: undefined\n })));\n // `direction` (unlike the `__`-prefixed internals above) is exposed as a\n // readonly getter on `IDBCursor.prototype` (via `defineReadonlyOuterInterface`)\n // that throws unless shadowed by an own property, exactly as a real\n // cursor's constructor shadows it -- a plain assignment would instead\n // hit that inherited accessor, which has no setter.\n Object.defineProperty(state, 'direction', {writable: false, value: direction});\n\n return tx.__addToTransactionQueue(function collectAllOp (sqlTx, args, success, error) {\n /** @type {unknown[]} */\n const results = [];\n const recordsToLoad = count || CFG.cursorPreloadPackSize || 100;\n\n /**\n * @param {import('./Key.js').Key} k\n * @param {import('./Key.js').Value} val\n * @param {import('./Key.js').Key} primKey\n * @returns {void}\n */\n function acceptOrFinish (k, val, primKey) {\n if (k === undefined) {\n success(results);\n return;\n }\n state.__key = k;\n switch (mode) {\n case 'key':\n results.push(primKey);\n break;\n case 'record':\n results.push(IDBRecord.__createInstance(k, primKey, val));\n break;\n default:\n results.push(val);\n }\n if (count && results.length >= count) {\n success(results);\n return;\n }\n util.runContinuationSafely(step);\n }\n\n /**\n * @returns {void}\n */\n function step () {\n if (state.__prefetchedData) {\n state.__prefetchedIndex++;\n if (state.__prefetchedIndex < state.__prefetchedData.length) {\n IDBCursor.prototype.__decode.call(\n state, /** @type {RowItemNonNull} */ (state.__prefetchedData.item(state.__prefetchedIndex)),\n /**\n * @param {import('./Key.js').Key} k\n * @param {import('./Key.js').Value} val\n * @param {import('./Key.js').Key} primKey\n * @param {string} [encKey]\n * @returns {void}\n */\n function (k, val, primKey, encKey) {\n if (state.__multiEntryIndex && state.__unique && encKey === undefined) {\n // `__decode` already saw this matching key (tracked\n // via `__matchedKeys`) and signaled a skip.\n util.runContinuationSafely(step);\n return;\n }\n if (state.__unique && !state.__multiEntryIndex &&\n encKey === Key.encode(state.__key, state.__multiEntryIndex)) {\n util.runContinuationSafely(step);\n return;\n }\n acceptOrFinish(k, val, primKey);\n }\n );\n return;\n }\n }\n IDBCursor.prototype.__find.call(\n state, undefined, undefined, sqlTx, acceptOrFinish, error, recordsToLoad\n );\n }\n\n step();\n }, undefined, source);\n}\n\nexport {IDBCursor, IDBCursorWithValue, parseGetAllArgs, parseGetAllRecordsArgs, collectAll};\n","import shimIDBVersionChangeEvent from './IDBVersionChangeEvent.js';\nimport {IDBCursor as shimIDBCursor, IDBCursorWithValue as shimIDBCursorWithValue} from './IDBCursor.js';\nimport shimIDBRecord from './IDBRecord.js';\nimport {IDBRequest as shimIDBRequest, IDBOpenDBRequest as shimIDBOpenDBRequest} from './IDBRequest.js';\nimport {createDOMException, ShimDOMException} from './DOMException.js';\nimport {shimIndexedDB, IDBFactory, setFS} from './IDBFactory.js';\nimport DOMStringList from './DOMStringList.js';\nimport {ShimEvent, ShimCustomEvent, ShimEventTarget} from './Event.js';\nimport {register} from './Sca.js';\nimport shimIDBKeyRange from './IDBKeyRange.js';\nimport shimIDBObjectStore from './IDBObjectStore.js';\nimport shimIDBIndex from './IDBIndex.js';\nimport shimIDBTransaction from './IDBTransaction.js';\nimport shimIDBDatabase from './IDBDatabase.js';\nimport CFG from './CFG.js';\nimport {isNullish} from './util.js';\n\n/**\n * @callback SetConfig\n * @param {import('./CFG.js').KeyofConfigValues|\n * Partial<import('./CFG.js').ConfigValues>} prop\n * @param {import('./CFG.js').ConfigValue} [val]\n * @throws {Error}\n * @returns {void}\n */\n\n/** @type {SetConfig} */\nfunction setConfig (prop, val) {\n if (prop && typeof prop === 'object') {\n Object.entries(prop).forEach(([p, val]) => {\n setConfig(\n /** @type {import('./CFG.js').KeyofConfigValues} */\n (p),\n val\n );\n });\n return;\n }\n if (!Object.hasOwn(CFG, prop)) {\n throw new Error(prop + ' is not a valid configuration property');\n }\n // @ts-expect-error Should not be `never` here!\n CFG[prop] = val;\n if (prop === 'registerSCA' && typeof val === 'function') {\n register(\n /**\n * @type {(\n * preset: import('typeson').Preset\n * ) => import('typeson').Preset}\n */ (\n val\n )\n );\n }\n}\n\n/**\n * @typedef {(\n * prop: import('./CFG.js').KeyofConfigValues\n * ) => import('./CFG.js').ConfigValue} GetConfig\n */\n\n/**\n * @typedef {(cfg: {\n * UnicodeIDStart: string,\n * UnicodeIDContinue: string\n * }) => void} SetUnicodeIdentifiers\n */\n\n/**\n * @typedef {(IDBFactory|object) & {\n * __useShim: () => void,\n * __debug: (val: boolean) => void,\n * __setConfig: SetConfig,\n * __getConfig: GetConfig,\n * __setUnicodeIdentifiers: SetUnicodeIdentifiers,\n * __setConnectionQueueOrigin: (origin?: string) => void\n * }} ShimIndexedDB\n */\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {(typeof globalThis|Record<string, unknown>) & {\n * indexedDB?: Partial<IDBFactory>,\n * IDBFactory: typeof IDBFactory,\n * IDBOpenDBRequest: typeof IDBOpenDBRequest,\n * IDBRequest: typeof IDBRequest,\n * IDBCursorWithValue: typeof IDBCursorWithValue,\n * IDBCursor: typeof IDBCursor,\n * IDBDatabase: typeof IDBDatabase,\n * IDBTransaction: typeof IDBTransaction,\n * IDBKeyRange: typeof IDBKeyRange,\n * shimIndexedDB?: ShimIndexedDB\n * }} ShimmedObject\n */\n\n/**\n *\n * @param {typeof globalThis | Record<string, unknown>} [idb]\n * @param {Partial<import('./CFG.js').ConfigValues>} [initialConfig]\n * @returns {ShimmedObject}\n */\nfunction setGlobalVars (idb, initialConfig) {\n if (initialConfig) {\n setConfig(initialConfig);\n }\n const IDB = /** @type {ShimmedObject & {[key: string]: unknown}} */ (\n /** @type {unknown} */ (idb || globalThis || {})\n );\n /**\n * @param {string} name\n * @param {unknown} value\n * @param {PropertyDescriptor & {\n * shimNS?: object\n * }|undefined} [propDesc]\n * @returns {void}\n */\n function shim (name, value, propDesc) {\n if (!propDesc || !Object.defineProperty) {\n try {\n // Try setting the property. This will fail if the property is read-only.\n IDB[name] = value;\n } catch (e) {\n console.log(e);\n }\n }\n if (\n IDB[name] !== value &&\n Object.defineProperty\n ) {\n // Setting a read-only property failed, so try re-defining the property\n try {\n let desc = propDesc || {};\n if (!('get' in desc)) {\n if (!('value' in desc)) {\n desc.value = value;\n }\n if (!('writable' in desc)) {\n desc.writable = true;\n }\n } else {\n const o = {\n /**\n * @returns {unknown}\n */\n get [name] () {\n return /** @type {() => unknown} */ (\n /** @type {PropertyDescriptor} */ (\n propDesc\n ).get\n ).call(this);\n }\n };\n desc = /** @type {PropertyDescriptor} */ (\n Object.getOwnPropertyDescriptor(o, name)\n );\n }\n Object.defineProperty(IDB, name, desc);\n } catch (err) {\n // With `indexedDB`, PhantomJS fails here and below but\n // not above, while Chrome is reverse (and Firefox doesn't\n // get here since no WebSQL to use for shimming)\n }\n }\n\n if (IDB[name] !== value) {\n if (typeof console !== 'undefined' && console.warn) {\n console.warn('Unable to shim ' + name);\n }\n }\n }\n if (CFG.win.openDatabase !== undefined) {\n shim('shimIndexedDB', shimIndexedDB, {\n enumerable: false,\n configurable: true\n });\n }\n if ('shimIndexedDB' in IDB && IDB.shimIndexedDB) {\n IDB.shimIndexedDB.__useShim = function () {\n /**\n *\n * @param {\"Shim\"|\"\"} [prefix]\n * @returns {void}\n */\n function setNonIDBGlobals (prefix = '') {\n shim(prefix + 'DOMException', ShimDOMException);\n shim(prefix + 'DOMStringList', DOMStringList, {\n enumerable: false,\n configurable: true,\n writable: true,\n value: DOMStringList\n });\n shim(prefix + 'Event', ShimEvent, {\n configurable: true,\n writable: true,\n value: ShimEvent,\n enumerable: false\n });\n shim(prefix + 'CustomEvent', ShimCustomEvent, {\n configurable: true,\n writable: true,\n value: ShimCustomEvent,\n enumerable: false\n });\n shim(prefix + 'EventTarget', ShimEventTarget, {\n configurable: true,\n writable: true,\n value: ShimEventTarget,\n enumerable: false\n });\n }\n const shimIDBFactory = IDBFactory;\n if (CFG.win.openDatabase !== undefined) {\n shimIndexedDB.__openDatabase = CFG.win.openDatabase.bind(CFG.win); // We cache here in case the function is overwritten later as by the IndexedDB support promises tests\n // Polyfill ALL of IndexedDB, using WebSQL\n shim('indexedDB', shimIndexedDB, {\n enumerable: true,\n configurable: true,\n get () {\n if (this !== IDB && !isNullish(this) && !this.shimNS) { // Latter is hack for test environment\n throw new TypeError('Illegal invocation');\n }\n return shimIndexedDB;\n }\n });\n /** @type {[string, unknown][]} */\n ([\n ['IDBFactory', shimIDBFactory],\n ['IDBDatabase', shimIDBDatabase],\n ['IDBObjectStore', shimIDBObjectStore],\n ['IDBIndex', shimIDBIndex],\n ['IDBTransaction', shimIDBTransaction],\n ['IDBCursor', shimIDBCursor],\n ['IDBCursorWithValue', shimIDBCursorWithValue],\n ['IDBRecord', shimIDBRecord],\n ['IDBKeyRange', shimIDBKeyRange],\n ['IDBRequest', shimIDBRequest],\n ['IDBOpenDBRequest', shimIDBOpenDBRequest],\n ['IDBVersionChangeEvent', shimIDBVersionChangeEvent]\n ]).forEach(([prop, obj]) => {\n shim(prop, obj, {\n enumerable: false,\n configurable: true\n });\n });\n // For Node environments\n if (CFG.fs) {\n setFS(CFG.fs);\n }\n if (CFG.fullIDLSupport) {\n // Slow per MDN so off by default! Though apparently needed for WebIDL: https://stackoverflow.com/questions/41927589/rationales-consequences-of-webidl-class-inheritance-requirements\n\n Object.setPrototypeOf(IDB.IDBOpenDBRequest, IDB.IDBRequest);\n Object.setPrototypeOf(IDB.IDBCursorWithValue, IDB.IDBCursor);\n\n Object.setPrototypeOf(shimIDBDatabase, ShimEventTarget);\n Object.setPrototypeOf(shimIDBRequest, ShimEventTarget);\n Object.setPrototypeOf(shimIDBTransaction, ShimEventTarget);\n Object.setPrototypeOf(shimIDBVersionChangeEvent, ShimEvent);\n // `ShimDOMException` is the real native `DOMException` when one\n // is available (see `DOMException.js`'s `useNativeDOMException`)\n // -- which, unlike the shim classes above, is a single,\n // process-wide singleton shared by reference across every\n // sandbox this library gets installed into (see\n // `node-idb-test.js`'s `sandboxObj`). A native `DOMException`\n // already has the correct prototype chain out of the box\n // (`Object.getPrototypeOf(DOMException) === Function.prototype`,\n // not `Error`), so forcing it here isn't just unneeded but\n // actively wrong -- and, because it's shared, permanently\n // wrong for every later use of `DOMException` in the same\n // process (e.g. a later WPT test file's own idlharness-style\n // check that `DOMException` does *not* inherit from `Error`\n // on the class side), not just this one shim install.\n if (typeof DOMException === 'undefined' || ShimDOMException !== DOMException) {\n Object.setPrototypeOf(ShimDOMException, Error);\n Object.setPrototypeOf(ShimDOMException.prototype, Error.prototype);\n }\n }\n if (IDB.indexedDB && !IDB.indexedDB.toString().includes('[native code]')) {\n if (CFG.addNonIDBGlobals) {\n // As `DOMStringList` exists per IDL (and Chrome) in the global\n // thread (but not in workers), we prefix the name to avoid\n // shadowing or conflicts\n setNonIDBGlobals('Shim');\n }\n if (CFG.replaceNonIDBGlobals) {\n setNonIDBGlobals();\n }\n }\n /* istanbul ignore next -- TS guard */\n if (!IDB.shimIndexedDB) {\n return;\n }\n IDB.shimIndexedDB.__setConnectionQueueOrigin();\n }\n };\n\n IDB.shimIndexedDB.__debug = /** @type {(val: boolean) => void} */ (function (val) {\n CFG.DEBUG = val;\n });\n IDB.shimIndexedDB.__setConfig = setConfig;\n\n /** @type {GetConfig} */\n IDB.shimIndexedDB.__getConfig = function (prop) {\n if (!Object.hasOwn(CFG, prop)) {\n throw new Error(prop + ' is not a valid configuration property');\n }\n return CFG[prop];\n };\n\n /** @type {SetUnicodeIdentifiers} */\n IDB.shimIndexedDB.__setUnicodeIdentifiers = function ({\n UnicodeIDStart, UnicodeIDContinue\n }) {\n setConfig({UnicodeIDStart, UnicodeIDContinue});\n };\n } else {\n // We no-op the harmless set-up properties and methods with a warning; the `IDBFactory` methods,\n // however (including our non-standard methods), are not stubbed as they ought\n // to fail earlier rather than potentially having side effects.\n IDB.shimIndexedDB = /** @type {ShimIndexedDB} */ ({});\n /** @type {const} */ ([\n '__useShim', '__debug', '__setConfig',\n '__getConfig', '__setUnicodeIdentifiers'\n ]).forEach((prop) => {\n /** @type {{[key: string]: () => void}} */ (\n /** @type {unknown} */ (IDB.shimIndexedDB)\n )[prop] = function () {\n console.warn('This browser does not have WebSQL to shim.');\n };\n });\n }\n\n // Workaround to prevent an error in Firefox\n if (!('indexedDB' in IDB) && typeof window !== 'undefined') { // 2nd condition avoids problems in Node\n IDB.indexedDB ||= /** @type {IDBFactory} */ (\n ('webkitIndexedDB' in IDB && IDB.webkitIndexedDB) ||\n ('mozIndexedDB' in IDB && IDB.mozIndexedDB) ||\n ('oIndexedDB' in IDB && IDB.oIndexedDB) ||\n ('msIndexedDB' in IDB && IDB.msIndexedDB)\n );\n }\n\n // Detect browsers with known IndexedDB issues (e.g. Android pre-4.4)\n const poorIndexedDbSupport = (\n typeof navigator !== 'undefined' &&\n // Not apparently defined in React Native\n navigator.userAgent &&\n ( // Ignore Node or other environments\n (\n // Bad non-Chrome Android support\n (/Android (?:2|3|4\\.[0-3])/u).test(navigator.userAgent) &&\n !navigator.userAgent.includes('Chrome')\n ) ||\n (\n // Bad non-Safari iOS9 support (see <https://github.com/indexeddbshim/IndexedDBShim/issues/252>)\n (!navigator.userAgent.includes('Safari') || navigator.userAgent.includes('Chrome')) && // Exclude genuine Safari: https://stackoverflow.com/a/7768006/271577\n // Detect iOS: https://stackoverflow.com/questions/9038625/detect-if-device-is-ios/9039885#9039885\n // and detect version 9: https://stackoverflow.com/a/26363560/271577\n (/(iPad|iPhone|iPod).* os 9_/ui).test(navigator.userAgent) &&\n (typeof window !== 'undefined' &&\n !('MSStream' in window)) // But avoid IE11\n )\n )\n );\n if (!CFG.DEFAULT_DB_SIZE) {\n CFG.DEFAULT_DB_SIZE = (\n ( // Safari currently requires larger size: (We don't need a larger size for Node as node-websql doesn't use this info)\n // https://github.com/indexeddbshim/IndexedDBShim/issues/41\n // https://github.com/indexeddbshim/IndexedDBShim/issues/115\n typeof navigator !== 'undefined' &&\n // React Native\n navigator.userAgent &&\n navigator.userAgent.includes('Safari') &&\n !navigator.userAgent.includes('Chrome')\n )\n ? 25\n : 4\n ) * 1024 * 1024;\n }\n if (!CFG.avoidAutoShim &&\n (!IDB.indexedDB || poorIndexedDbSupport) &&\n CFG.win.openDatabase !== undefined\n ) {\n IDB.shimIndexedDB.__useShim();\n } else {\n /* eslint-disable unicorn/logical-assignment-operators -- TS */\n IDB.IDBDatabase = IDB.IDBDatabase ||\n ('webkitIDBDatabase' in IDB && IDB.webkitIDBDatabase);\n IDB.IDBTransaction = IDB.IDBTransaction ||\n ('webkitIDBTransaction' in IDB && IDB.webkitIDBTransaction) || {};\n IDB.IDBCursor = IDB.IDBCursor ||\n ('webkitIDBCursor' in IDB && IDB.webkitIDBCursor);\n IDB.IDBKeyRange = IDB.IDBKeyRange ||\n ('webkitIDBKeyRange' in IDB && IDB.webkitIDBKeyRange);\n /* eslint-enable unicorn/logical-assignment-operators -- TS */\n }\n return /** @type {ShimmedObject} */ (IDB);\n}\n\n// Expose for ease in simulating such exceptions during testing\nexport {createDOMException};\n\nexport default setGlobalVars;\n","import customOpenDatabase from 'websql-configurable/custom/index.js';\nimport SQLiteDatabase from 'websql-configurable/lib/sqlite/SQLiteDatabase.js';\nimport CFG from './CFG.js';\n\n/**\n * @typedef {{\n * _db: unknown,\n * exec: typeof SQLiteDatabase['prototype']['exec']\n * }} SQLiteDatabaseInstance\n */\n\n/**\n * `websql-configurable`'s `customOpenDatabase` always calls this via `new`\n * (see its `custom.js`: `new SQLiteDatabase(dbName, sqliteOpts)`), so this\n * is typed with a construct signature even though `wrappedSQLiteDatabase`\n * below is written as a plain function -- that's a deliberate, working JS\n * idiom (a plain function invoked with `new` that explicitly `return`s an\n * object yields that object as the `new` expression's result, overriding\n * the default \"return `this`\" behavior), not something TypeScript can\n * verify structurally.\n * @typedef {new (\n * name: string,\n * opts?: import('websql-configurable/lib/sqlite/SQLiteDatabase.js').SQLiteDatabaseOptions\n * ) => SQLiteDatabaseInstance} SQLiteDatabaseConstructor\n */\n\n/**\n * @param {string} name\n * @returns {SQLiteDatabaseInstance}\n */\nfunction wrappedSQLiteDatabase (name) {\n // @ts-ignore It's ok; needed under some TS versions\n const db = new SQLiteDatabase(name, {});\n if (CFG.sqlBusyTimeout) {\n db.configure('busyTimeout', /** @type {number} */ (CFG.sqlBusyTimeout)); // Default is 1000\n }\n if (CFG.sqlTrace) {\n db.configure('trace', CFG.sqlTrace);\n }\n if (CFG.sqlProfile) {\n db.configure('profile', CFG.sqlProfile);\n }\n if (CFG.sqlMemoryQuota) {\n db.configure('memoryQuota', /** @type {number} */ (CFG.sqlMemoryQuota));\n }\n return db;\n}\n\n// `concurrentReaders` is off by default in `websql-configurable` itself (to\n// preserve the WebSQL spec's strict, one-at-a-time transaction ordering\n// that library's own test suite depends on), but IndexedDBShim only ever\n// uses it as an internal SQL execution engine -- it doesn't need or expose\n// that ordering guarantee itself -- so it's safe, and needed, to opt in\n// here: without it, two same-scope `readonly` IDBTransactions can deadlock\n// waiting on each other (see `transaction-scheduling-within-database.any.js`).\nconst nodeWebSQL = customOpenDatabase(/** @type {SQLiteDatabaseConstructor} */ (/** @type {unknown} */ (wrappedSQLiteDatabase)), {websql: {concurrentReaders: true}});\nexport default nodeWebSQL;\n","import fs from 'node:fs';\n\nimport setGlobalVars from './setGlobalVars.js';\nimport nodeWebSQL from './nodeWebSQL.js'; // Importing \"websql\" would not gain us SQLite config ability\nimport CFG from './CFG.js';\n\nCFG.win = {openDatabase: nodeWebSQL};\n\n/**\n * @param {typeof globalThis | Record<string, unknown>} [idb]\n * @param {Partial<import('./CFG.js').ConfigValues>} [initialConfig]\n * @returns {import('./setGlobalVars.js').ShimmedObject|Window}\n */\nconst __setGlobalVars = function (idb, initialConfig = {}) {\n return setGlobalVars(idb, {\n fs,\n escapeNULForSQLiteStatements: false,\n ...initialConfig\n });\n};\n\nexport default __setGlobalVars;\n"],"names":["ShimDOMException","expandsOnNFD","util.isObj","readonlyProperties","listeners","util.defineReadonlyProperties","util.defineListenerProperties","util.defineReadonlyOuterInterface","util.defineOuterInterface","keyEncode","keyDecode","encode","decode","util.isDate","util.isBinary","util.isBlob","util.isFile","util.isNullish","util.escapeSQLiteStatement","Key.roundTrip","Key.convertValueToKeyRethrowingAndIfInvalid","Key.encode","Key.isKeyInRange","util.setOperationNames","util.instanceOf","util.runContinuationSafely","n","r","s","i","c","a","y","l","p","u","h","f","b","d","m","structuredCloningForStorage","util.convertToDOMString","util.escapeIndexNameForSQL","util.escapeStoreNameForSQL","Sca.decode","util.unescapeSQLiteResponse","Key.extractKeyValueDecodedFromValueUsingKeyPath","util.sqlQuote","util.enforceRange","util.escapeIndexNameForSQLKeyColumn","Key.decode","Key.isMultiEntryMatch","util.sqlLIKEEscape","Sca.cloneWithInactiveTransaction","Key.checkKeyCouldBeInjectedIntoValue","Sca.encode","Key.generateKeyForStore","Key.injectKeyIntoValueUsingKeyPath","Key.possiblyUpdateKeyGenerator","Key.assignCurrentNumber","util.convertToSequenceDOMString","util.isValidKeyPath","util.isIterable","util.joinPath","util.escapeDatabaseNameForSQLAndFiles","Key.findMultiEntryMatches","ShimEventTarget","shimIDBDatabase","shimIDBObjectStore","shimIDBIndex","shimIDBTransaction","shimIDBCursor","shimIDBCursorWithValue","shimIDBRecord","shimIDBKeyRange","shimIDBRequest","shimIDBOpenDBRequest","shimIDBVersionChangeEvent","fs"],"mappings":";;;;;;;;AAAA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,MAAM,MAAM,GAAG;AACb,EAAA,IAAI,EAAE,CAAC;AACP,EAAA,eAAe,EAAE,CAAC;AAClB,EAAA,SAAS,EAAE,CAAC;AACZ,EAAA,cAAc,EAAE;AAClB,CAAC;AACD,MAAMA,kBAAgB,GAAG,OAAO,YAAY,KAAK;AACjD;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;AAC/B;AACA;AACA,EAAA,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC;AAC1B,EAAA,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE;AACjC,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,YAAY,EAAE;AAChB,GAAC,CAAC;AACF,EAAA,OAAO,GAAG;AACZ,CAAC,GAAG,YAAY;;AAEhB;AACA,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE;AACxB;AACA,MAAM,KAAK,GAAG,IAAI,OAAO,EAAE;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACrB,EAAA,oCAAoC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACpD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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AACzB;AACF;AACA;AACA;EACE,cAAc,CAAC,aAAa,EAAE;AAC5B;AACA;AACA;AACJ;AACA;AACA;AACI,IAAA,MAAM,EAAE,GAAG,SAAS,WAAW,GAAG;AAChC;AACA;AACA,MAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;IAClC,CAAC;AACD,IAAA,EAAE,CAAC,SAAS,GAAG,eAAe,CAAC,SAAS;AACxC;IACA,OAAO,IAAI,EAAE,EAAE;AACjB,EAAA;AACF,CAAC;AACD,WAAW,CAAC,SAAS,GAAG,SAAS;AACjC,WAAW,CAAC,eAAe,GAAG,eAAe;AAC7C,WAAW,CAAC,gBAAgB,GAAGA,kBAAgB;AAC/C,WAAW,CAAC,eAAe,GAAG,WAAW;AACzC,WAAW,CAAC,kBAAkB,GAAG,kBAAkB;;ACtzCnD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM,GAAG,GAAG,EAAE;AAEd,MAAM,GAAG,8BAAgC,EAAG;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACC;AACG;AACA,OAAO;AAAE;;AAET;AACA;AACA,wBAAwB;AAExB;AACA;AACA;AACA;AACA,UAAU;AAEV;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAAE;;AAElB;AACA;AACA,aAAa;AAEb;AACA;AACA,uBAAuB;AAEvB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA,mBAAmB;AAEnB;AACA;AACA;AACA;AACA,aAAa;AAEb;AACA,eAAe;AAAE;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBA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AAC;AACF;AACA;AACA,EAAA,MAAM,CAAC,GAAG;AACN;AACR;AACA;AACQ,IAAA,KAAK,IAAI,CAAA,GAAK;AACV;AACA;AACA;AACA;AACA,MAAA,IAAI,EAAE,IAAI,YAAY,cAAc,CAAC,EAAE;AACnC,QAAA,MAAM,IAAI,SAAS,CAAC,oBAAoB,CAAC;AAC7C,MAAA;AACA;AACA,MAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAC5B,IAAA;GACH;AACD,EAAA,MAAM,IAAI;AACN,EAAA,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,IAAI,CAC1C;EACD,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE;AAC1C,EAAA,QAAQ,EAAE;AACd,CAAC,CAAC;;ACrFF,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC;;AAErE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,SAAS,GAAI;AAClB,EAAA,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC;AAC9C;AACA,MAAM,cAAc,GAAG,SAAS;;AAEhC;AACA;AACA;AACA;AACA;AACA;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","x_google_ignoreList":[0,8,14]}