indexeddbshim 17.3.1 → 17.3.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.
@@ -29,6 +29,7 @@ export type IDBObjectStoreFull = IDBObjectStore & {
29
29
  __idbdb: import("./IDBDatabase.js").IDBDatabaseFull;
30
30
  __validateKeyAndValueAndCloneValue: (value: import("./Key.js").Value, key: import("./Key.js").Key, cursorUpdate: boolean) => KeyValueArray;
31
31
  __deriveKey: (tx: WebSQLTransaction, value: import("./Key.js").Value, key: import("./Key.js").Key, success: (key: import("./Key.js").Key, cn?: Integer) => void, failCb: import("./Key.js").SQLFailureCallback) => void;
32
+ __checkIndexConstraints: (tx: WebSQLTransaction, value: import("./Key.js").Value, excludeKey: import("./Key.js").Key | Integer | undefined) => SyncPromise;
32
33
  __insertData: (tx: WebSQLTransaction, encoded: string, value: import("./Key.js").Value, clonedKeyOrCurrentNumber: import("./Key.js").Key | Integer, oldCn: Integer | undefined, success: (clonedKeyOrCurrentNumber: import("./Key.js").Key | Integer) => void, error: (err: Error | DOMException) => void) => SyncPromise;
33
34
  __overwrite: (tx: WebSQLTransaction, key: import("./Key.js").Key, cb: (tx: WebSQLTransaction) => void, error: (err: (Error & {
34
35
  code?: number;
@@ -78,6 +79,28 @@ declare class IDBObjectStore {
78
79
  * @returns {void}
79
80
  */
80
81
  __deriveKey(this: IDBObjectStoreFull, tx: WebSQLTransaction, value: import("./Key.js").Value, key: import("./Key.js").Key, success: (key: import("./Key.js").Key, cn?: Integer) => void, failCb: import("./Key.js").SQLFailureCallback): void;
82
+ /**
83
+ * Validates `value`'s unique index entries against the table's *current*
84
+ * state without mutating anything -- used by `__storingRecordObjectStore`
85
+ * to check a `put()`'s constraints *before* `__overwrite` deletes the
86
+ * existing row for that key, so a rejected `put()` can't end up losing
87
+ * the record it was trying to replace (see
88
+ * `idbobjectstore-put-unique-index-constraint-is-atomic.any.js`).
89
+ * `excludeKey`, when given, treats a conflicting record as a non-conflict
90
+ * if it's the very record being overwritten (its own current entry would
91
+ * otherwise self-conflict on every no-op `put()` of an unchanged value).
92
+ * `__insertData` below still runs its own (now redundant, but harmless --
93
+ * the old row is gone by then) equivalent check as its first step; this
94
+ * isn't merged into it because `__insertData` also performs the actual
95
+ * `INSERT`, which cannot safely run before `__overwrite`'s `DELETE` when
96
+ * overwriting an existing key.
97
+ * @param {WebSQLTransaction} tx
98
+ * @param {import('./Key.js').Value} value
99
+ * @param {import('./Key.js').Key|Integer|undefined} excludeKey
100
+ * @this {IDBObjectStoreFull}
101
+ * @returns {SyncPromise}
102
+ */
103
+ __checkIndexConstraints(this: IDBObjectStoreFull, tx: WebSQLTransaction, value: import("./Key.js").Value, excludeKey: import("./Key.js").Key | Integer | undefined): SyncPromise;
81
104
  /**
82
105
  *
83
106
  * @param {WebSQLTransaction} tx
@@ -248,6 +271,11 @@ declare namespace IDBObjectStore {
248
271
  * success: (key: import('./Key.js').Key, cn?: Integer) => void,
249
272
  * failCb: import('./Key.js').SQLFailureCallback
250
273
  * ) => void,
274
+ * __checkIndexConstraints: (
275
+ * tx: WebSQLTransaction,
276
+ * value: import('./Key.js').Value,
277
+ * excludeKey: import('./Key.js').Key|Integer|undefined
278
+ * ) => SyncPromise,
251
279
  * __insertData: (
252
280
  * tx: WebSQLTransaction,
253
281
  * encoded: string,
@@ -1 +1 @@
1
- {"version":3,"file":"IDBObjectStore.d.ts","sourceRoot":"","sources":["../src/IDBObjectStore.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IDBObjectStore.d.ts","sourceRoot":"","sources":["../src/IDBObjectStore.js"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! indexeddbshim - v17.3.1 - 8/24/2026 */
1
+ /*! indexeddbshim - v17.3.2 - 8/24/2026 */
2
2
 
3
3
  (function (global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
@@ -1,3 +1,3 @@
1
- /*! indexeddbshim - v17.3.1 - 8/24/2026 */
1
+ /*! indexeddbshim - v17.3.2 - 8/24/2026 */
2
2
  !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).IDBKeyUtils={})}(this,function(e){"use strict";function r(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function t(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=u(e))||r){t&&(e=t);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return i=e.done,e},e:function(e){c=!0,o=e},f:function(){try{i||null==t.return||t.return()}finally{if(c)throw o}}}}function n(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,a,o,i,u=[],c=!0,l=!1;try{if(o=(t=t.call(e)).next,0===r);else for(;!(c=(n=o.call(t)).done)&&(u.push(n.value),u.length!==r);c=!0);}catch(e){l=!0,a=e}finally{try{if(!c&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(l)throw a}}return u}}(e,r)||u(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,r){return r||(r=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(r)}}))}function o(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||u(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function u(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}var c={},l={};function s(e,r){return new DOMException.prototype.constructor(r,e||"DOMException")}["DEBUG","cacheDatabaseInstances","autoName","fullIDLSupport","checkOrigin","cursorPreloadPackSize","UnicodeIDStart","UnicodeIDContinue","registerSCA","avoidAutoShim","win","DEFAULT_DB_SIZE","useSQLiteIndexes","fs","addNonIDBGlobals","replaceNonIDBGlobals","escapeDatabaseName","unescapeDatabaseName","databaseCharacterEscapeList","databaseNameLengthLimit","escapeNFDForDatabaseNames","addSQLiteExtension",["memoryDatabase",function(e){if(!/^(?::memory:|file::memory:(\?(?:[\0-"\$-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?(#(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?)?$/.test(e))throw new TypeError('`memoryDatabase` must be the empty string, ":memory:", or a "file::memory:[?queryString][#hash] URL".')}],"deleteDatabaseFiles","databaseBasePath","sysDatabaseBasePath","sqlBusyTimeout","sqlTrace","sqlProfile","escapeNULForSQLiteStatements","createIndexes"].forEach(function(e){var r;if(Array.isArray(e)){var t=n(e,2);e=t[0],r=t[1]}Object.defineProperty(l,e,{get:function(){return c[e]},set:function(t){r&&r(t),c[e]=t}})});var f={IndexSizeError:1,HierarchyRequestError:3,WrongDocumentError:4,InvalidCharacterError:5,NoModificationAllowedError:7,NotFoundError:8,NotSupportedError:9,InUseAttributeError:10,InvalidStateError:11,SyntaxError:12,InvalidModificationError:13,NamespaceError:14,InvalidAccessError:15,TypeMismatchError:17,SecurityError:18,NetworkError:19,AbortError:20,URLMismatchError:21,QuotaExceededError:22,TimeoutError:23,InvalidNodeTypeError:24,DataCloneError:25,EncodingError:0,NotReadableError:0,UnknownError:0,ConstraintError:0,DataError:0,TransactionInactiveError:0,ReadOnlyError:0,VersionError:0,OperationError:0,NotAllowedError:0},y={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};var d=function(){function e(e,r){this[Symbol.toStringTag]="DOMException",this._code=Object.hasOwn(f,r)?f[r]:y[r]||0,this._name=r||"Error",this._message=void 0===e?"":""+e,Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,writable:!0,value:this._code}),void 0!==r&&Object.defineProperty(this,"name",{configurable:!0,enumerable:!0,writable:!0,value:this._name}),void 0!==e&&Object.defineProperty(this,"message",{configurable:!0,enumerable:!1,writable:!0,value:this._message})}var r=function(){};return r.prototype=Object.create(Error.prototype),["name","message"].forEach(function(t){Object.defineProperty(r.prototype,t,{enumerable:!0,get:function(){if(!(this instanceof e||this instanceof r||this instanceof Error))throw new TypeError("Illegal invocation");return this["name"===t?"_name":"_message"]}})}),Object.defineProperty(r.prototype,"code",{configurable:!0,enumerable:!0,get:function(){throw new TypeError("Illegal invocation")}}),e.prototype=new r,e.prototype[Symbol.toStringTag]="DOMExceptionPrototype",Object.defineProperty(e,"prototype",{writable:!1}),Object.keys(f).forEach(function(r){Object.defineProperty(e.prototype,r,{enumerable:!0,configurable:!1,value:f[r]}),Object.defineProperty(e,r,{enumerable:!0,configurable:!1,value:f[r]})}),Object.keys(y).forEach(function(r){Object.defineProperty(e.prototype,r,{enumerable:!0,configurable:!1,value:y[r]}),Object.defineProperty(e,r,{enumerable:!0,configurable:!1,value:y[r]})}),Object.defineProperty(e.prototype,"constructor",{writable:!0,configurable:!0,enumerable:!1,value:e}),e}();function p(e,r,t){if(l.DEBUG){var n=t&&"object"===i(t)&&t.message?t.message:t,a="function"==typeof console.error?"error":"log";console[a](e+": "+r+". "+(n||"")),console.trace&&console.trace()}}var v,b,m=!1;try{v=s("test name","test message"),(b=v)&&"object"===i(b)&&"string"==typeof b.name&&"test name"===v.name&&"test message"===v.message&&(m=!0)}catch(e){}var F,D,E=m?function(e,r,t){return p(e,r,t),s(e,r)}:function(e,r,t){return p(e,r,t),function(e,r){return new d(r,e)}(e,r)};function h(e){var r=e.replaceAll("^","^^");return function(e){return e.replaceAll(/((?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])))(?!(?:(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]))|(^|(?:[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]))((?:(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]))/g,function(e,r,t,n){return r?"^2"+r.codePointAt().toString(16).padStart(4,"0"):(t||"")+"^3"+n.codePointAt().toString(16).padStart(4,"0")})}(!1===l.escapeNULForSQLiteStatements?r:r.replaceAll("\0","^0"))}function g(e){return null!==e&&"object"===i(e)}function N(e){return null==e}function O(e,r){var t=H(e),n=H(r),a=t>n?1:t===n?0:-1;if(l.DEBUG){var o=q(t),u=q(n);"object"===i(e)&&(e=JSON.stringify(e),o=JSON.stringify(o)),"object"===i(r)&&(r=JSON.stringify(r),u=JSON.stringify(u)),o!==e&&console.warn(e+" was incorrectly encoded as "+o),u!==r&&console.warn(r+" was incorrectly encoded as "+u)}return a}var A={invalid:100,number:200,date:300,string:400,binary:500,array:600},S=Object.keys(A);S.forEach(function(e){A[e]=String.fromCodePoint(A[e])});var w=S.reduce(function(e,r){return e[A[r]]=r,e},{}),I=["negativeInfinity","bigNegative","smallNegative","smallPositive","bigPositive","positiveInfinity"],R={invalid:{encode:function(){return A.invalid+"-"},decode:function(){}},number:{encode:function(e){var r,t,n,a=e===Number.MIN_VALUE?"0."+"0".repeat(214)+"2":Math.abs(e).toString(32),o=a.indexOf("."),i=(a=-1!==o?a.replace(".",""):a).search(/(?:[\0-\/1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/);return a=a.slice(i),Number.isFinite(Number(e))?e<0?(e>-1?(r=I.indexOf("smallNegative"),t=_(i)):(r=I.indexOf("bigNegative"),t=C(_(-1!==o?o:a.length))),n=C(T(a))):e<1?(r=I.indexOf("smallPositive"),t=C(_(i)),n=T(a)):(r=I.indexOf("bigPositive"),t=_(-1!==o?o:a.length),n=T(a)):(t=j(2),n=j(11),r=I.indexOf(e>0?"positiveInfinity":"negativeInfinity")),A.number+"-"+r+t+n},decode:function(e){var r=Number(e.slice(2,3)),t=e.slice(3,5),n=e.slice(5,16);switch(I[r]){case"negativeInfinity":return-1/0;case"positiveInfinity":return 1/0;case"bigPositive":return B(n,t);case"smallPositive":return B(n,t=L(C(t)));case"smallNegative":return t=L(t),-B(n=C(n),t);case"bigNegative":return t=C(t),-B(n=C(n),t);default:throw new Error("Invalid number.")}}},string:{encode:function(e,r){return r&&(e=e.replaceAll(/((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]))/g,"-$1")+" "),A.string+"-"+e},decode:function(e,r){return e=e.slice(2),r&&(e=e.slice(0,-1).replaceAll(/-((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]))/g,"$1")),e}},array:{encode:function(e){var r,o=[],i=t(e.entries());try{for(i.s();!(r=i.n()).done;){var u=n(r.value,2),c=u[0],s=H(u[1],!0);o[c]=s}}catch(e){i.e(e)}finally{i.f()}o.push(A.invalid+"-");var f=JSON.stringify(o);return!1===l.escapeNULForSQLiteStatements&&(f=f.replaceAll(String.raw(F||(F=a(["\0"],["\\u0000"]))),"\0")),A.array+"-"+f},decode:function(e){var r=e.slice(2);!1===l.escapeNULForSQLiteStatements&&(r=r.replaceAll("\0",String.raw(D||(D=a(["\0"],["\\u0000"])))));var t=JSON.parse(r);t.pop();for(var n=0;n<t.length;n++){var o=q(t[n],!0);t[n]=o}return t}},date:{encode:function(e){return A.date+"-"+e.toJSON()},decode:function(e){return new Date(e.slice(2))}},binary:{encode:function(e){return A.binary+"-"+(e.byteLength?o(x(e)).map(function(e){return String(e).padStart(3,"0")}):"")},decode:function(e){var r=e.slice(2),t=r.length?r.split(",").map(Number):[],n=new ArrayBuffer(t.length);return new Uint8Array(n).set(t),n}}};function _(e){var r=e.toString(32);return 1===r.length?"0"+r:r}function T(e){return(e+j(11)).slice(0,11)}function C(e){var r,n="",a=t(e);try{for(a.s();!(r=a.n()).done;){var o=r.value;n+=(31-Number.parseInt(o,32)).toString(32)}}catch(e){a.e(e)}finally{a.f()}return n}function B(e,r){var t=Number.parseInt(r,32);if(t<0)return P(Number.parseInt(e,32)*Math.pow(32,t-10));if(t<11){var n=e.slice(0,t),a=Number.parseInt(n,32),o=e.slice(t);return P(a+Number.parseInt(o,32)*Math.pow(32,t-11))}var i=e+j(t-11);return Number.parseInt(i,32)}function P(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:16;return Number(e.toPrecision(r))}function j(e){return"0".repeat(e)}function L(e){return"-"+e}function M(e){if(Array.isArray(e))return"array";if(function(e){return g(e)&&"getDate"in e&&"function"==typeof e.getDate}(e))return"date";if(function(e){return g(e)&&"byteLength"in e&&"number"==typeof e.byteLength&&("slice"in e&&"function"==typeof e.slice||"getFloat64"in e&&"function"==typeof e.getFloat64)}(e))return"binary";var r=i(e);return["string","number"].includes(r)?r:"invalid"}function U(e,r){return V(e,r,!1,!0)}function x(e){var r,t=0;if(ArrayBuffer.isView(e)){if(void 0===e.buffer)throw new TypeError("Could not copy the bytes held by a buffer source as the buffer was undefined.");t=e.byteOffset,r=e.byteLength}else r=e.byteLength;return new Uint8Array("buffer"in e&&e.buffer||e,t,r)}function V(e,r,t,n){if(r||(r=[]),r.includes(e))return{type:"array",invalid:!0,message:"An array key cannot be circular"};var a=M(e),o={type:a,value:e};switch(a){case"number":return Number.isNaN(e)?{type:"NaN",invalid:!0}:Object.is(e,-0)?{type:a,value:0}:o;case"string":return o;case"binary":var u;try{u=x(e)}catch(e){return{type:a,invalid:!0,message:"Could not read the buffer source (it may be detached)"}}return{type:"binary",value:u};case"array":var c=e,l=c.length;r.push(e);for(var s,f=[],y=function(){if(!t&&!Object.hasOwn(c,d))return{v:{type:a,invalid:!0,message:"Does not have own index property"}};try{var e=V(c[d],r,!1,n);if(e.invalid)return t?0:{v:{type:a,invalid:!0,message:"Bad array entry value-to-key conversion"}};(!t||!n&&f.every(function(r){return 0!==O(r,e.value)})||n&&f.every(function(r){return 0!==O(r,e)}))&&f.push(n?e:e.value)}catch(e){if(!t)throw e}},d=0;d<l;d++)if(0!==(s=y())&&s)return s.v;return{type:a,value:f};case"date":var p=e;return Number.isNaN(p.getTime())?{type:a,invalid:!0,message:"Not a valid date"}:n?{type:a,value:p.getTime()}:{type:a,value:new Date(p)};default:var v=null===e?"null":i(e);return{type:v,invalid:!0,message:"Not a valid key; type "+v}}}function K(e,r){return V(e,null,!0,r)}function k(e,r,t,n){var a=G(e,r);return a.failure?a:t?K(a.value,n):V(a.value,null,!1,n)}function G(e,r,t,n){if(Array.isArray(r)){var a=[];return r.some(function(r){var t=G(e,r);return!!t.failure||(a.push(t.value),!1)})?{failure:!0}:{value:a}}return""===r?{value:e}:r.split(".").some(function(r){if("length"!==r||"string"!=typeof e&&!Array.isArray(e))if(function(e){return g(e)&&"size"in e&&"number"==typeof e.size&&"slice"in e&&"function"==typeof e.slice&&!("lastModified"in e)}(e))switch(r){case"size":case"type":e=e[r]}else{if(!function(e){return g(e)&&"name"in e&&"string"==typeof e.name&&"slice"in e&&"function"==typeof e.slice&&"lastModified"in e}(e))return!g(e)||!Object.hasOwn(e,r)||void 0===(e=e[r]);switch(r){case"name":case"lastModified":e=e[r];break;case"lastModifiedDate":e=new Date(e.lastModified)}}else e=e.length;return!1})?{failure:!0}:{value:e}}function Q(e,r,t){var n=void 0===r.lower,a=void 0===r.upper,o=H(e,!0),i=t?r.__lowerCached:H(r.lower,!0),u=t?r.__upperCached:H(r.upper,!0);return!n&&(r.lowerOpen&&null!==o&&null!==i&&o>i||!r.lowerOpen&&(!o&&!i||null!==o&&null!==i&&o>=i))&&(n=!0),!a&&(r.upperOpen&&null!==o&&null!==u&&o<u||!r.upperOpen&&(!o&&!u||null!==o&&null!==u&&o<=u))&&(a=!0),n&&a}function H(e,r){return void 0===e?null:R[M(e)].encode(e,r)}function q(e,r){if("string"==typeof e)return R[w[e.slice(0,1)]].decode(e,r)}var z=9007199254740992;function J(e,r,t,n){e.executeSql('SELECT "currNum" FROM __sys__ WHERE "name" = ?',[h(r.__currentName)],function(e,r){1!==r.rows.length?t(1):t(r.rows.item(0).currNum)},function(e,r){return n(E("DataError","Could not get the auto increment value for key",r)),!1})}function W(e,r,t,n,a){var o='UPDATE __sys__ SET "currNum" = ? WHERE "name" = ?',i=[t,h(r.__currentName)];l.DEBUG&&console.log(o,i),e.executeSql(o,i,function(){n(t)},function(e,r){return a(E("UnknownError","Could not set the auto increment value for key",r)),!1})}function Y(e,r,t,n,a){return W(e,r,t+=t===z?2:1,n,a)}e.assignCurrentNumber=W,e.checkKeyCouldBeInjectedIntoValue=function(e,r){var n=r.split(".");n.pop();var a,o=t(n);try{for(o.s();!(a=o.n()).done;){var i=a.value;if(!g(e))return!1;if(!Object.hasOwn(e,i))return!0;e=e[i]}}catch(e){o.e(e)}finally{o.f()}return g(e)},e.convertKeyToValue=function e(r){var t=r.type,n=r.value;switch(t){case"number":case"string":return n;case"array":for(var a=[],o=n.length,i=0;i<o;){var u=e(n[i]);a[i]=u,i++}return a;case"date":return new Date(n);case"binary":var c=n.length,l=new ArrayBuffer(c);return new Uint8Array(l,n.byteOffset||0,n.byteLength).set(n),l;default:throw new Error("Bad key")}},e.convertValueToKey=U,e.convertValueToKeyRethrowingAndIfInvalid=function(e,r){var t=U(e,r);if(t.invalid)throw E("DataError",t.message||"Not a valid key; type: "+t.type);return t},e.convertValueToKeyValueDecoded=V,e.convertValueToMultiEntryKey=function(e){return V(e,null,!0,!0)},e.convertValueToMultiEntryKeyDecoded=K,e.decode=q,e.encode=H,e.evaluateKeyPathOnValue=function(e,r,t){return G(e,r)},e.extractKeyFromValueUsingKeyPath=function(e,r,t){return k(e,r,t,!0)},e.extractKeyValueDecodedFromValueUsingKeyPath=k,e.findMultiEntryMatches=function e(r,n){var a=[];if(Array.isArray(r)){var o,i=t(r);try{for(i.s();!(o=i.n()).done;){var u=o.value;if(Array.isArray(u)){if(n&&n.lower===n.upper)continue;if(1!==u.length){e(u,n).length>0&&a.push(u);continue}u=u[0]}(N(n)||Q(u,n,!0))&&a.push(u)}}catch(e){i.e(e)}finally{i.f()}}else(N(n)||Q(r,n,!0))&&a.push(r);return a},e.generateKeyForStore=function(e,r,t,n){J(e,r,function(a){a>z?t("failure"):Y(e,r,a,function(){t(null,a,a)},n)},n)},e.injectKeyIntoValueUsingKeyPath=function(e,r,t){var n=t.split("."),a=n.pop();n.forEach(function(r){Object.hasOwn(e,r)||(e[r]={}),e=e[r]}),e[a]=r},e.isKeyInRange=Q,e.isMultiEntryMatch=function(e,r){return"array"===w[r.slice(0,1)]?r.indexOf(e)>1:r===e},e.possiblyUpdateKeyGenerator=function(e,r,t,n,a){"number"!=typeof t||t<1?n():J(e,r,function(o){var i=Math.floor(Math.min(t,z));i>=o?Y(e,r,i,function(){n(o)},a):n()},a)},e.roundTrip=function(e,r){return q(H(e,r),r)}});
3
3
  //# sourceMappingURL=indexeddbshim-Key.min.js.map
@@ -1,4 +1,4 @@
1
- /*! indexeddbshim - v17.3.1 - 8/24/2026 */
1
+ /*! indexeddbshim - v17.3.2 - 8/24/2026 */
2
2
 
3
3
  'use strict';
4
4
 
@@ -6135,8 +6135,8 @@ class Typeson {
6135
6135
  {
6136
6136
  sync: c
6137
6137
  } = i,
6138
- y = {},
6139
- u = [],
6138
+ u = {},
6139
+ y = [],
6140
6140
  l = [],
6141
6141
  p = [],
6142
6142
  f = !("cyclic" in i) || i.cyclic,
@@ -6145,14 +6145,14 @@ class Typeson {
6145
6145
  encapsulateError: m
6146
6146
  } = i,
6147
6147
  finish = e => {
6148
- const t = Object.values(y);
6148
+ const t = Object.values(u);
6149
6149
  if (i.iterateNone) return t.length ? t[0] : getJSONType(e);
6150
6150
  if (t.length) {
6151
6151
  if (i.returnTypeNames) return [...new Set(t)];
6152
- e && isPlainObject(e) && !n(e, "$types") ? e.$types = y : e = {
6152
+ e && isPlainObject(e) && !n(e, "$types") ? e.$types = u : e = {
6153
6153
  $: e,
6154
6154
  $types: {
6155
- $: y
6155
+ $: u
6156
6156
  }
6157
6157
  };
6158
6158
  } else isObject(e) && n(e, "$types") && (e = {
@@ -6166,10 +6166,10 @@ class Typeson {
6166
6166
  return await Promise.all(r.map(async function (r) {
6167
6167
  const n = [],
6168
6168
  [a] = t.splice(0, 1),
6169
- [o,, s, i, c, y, u] = a,
6170
- l = _encapsulate(o, r, s, i, n, true, u),
6169
+ [o,, s, i, c, u, y] = a,
6170
+ l = _encapsulate(o, r, s, i, n, true, y),
6171
6171
  p = hasConstructorOf(l, TypesonPromise);
6172
- return o && p ? (setOwnEnumerable(c, y, await l.p), checkPromises(e, n)) : (o ? setOwnEnumerable(c, y, l) : e = p ? l.p : l, checkPromises(e, n));
6172
+ return o && p ? (setOwnEnumerable(c, u, await l.p), checkPromises(e, n)) : (o ? setOwnEnumerable(c, u, l) : e = p ? l.p : l, checkPromises(e, n));
6173
6173
  })), e;
6174
6174
  },
6175
6175
  _adaptBuiltinStateObjectProperties = (e, t, r) => {
@@ -6229,11 +6229,11 @@ class Typeson {
6229
6229
  })) : h = t, b && b(), h;
6230
6230
  if (null === t) return b && b(), t;
6231
6231
  if (o && t && "object" == typeof t && !s.iterateIn && !s.iterateUnsetNumeric) {
6232
- const r = u.indexOf(t);
6233
- if (-1 !== r) return y[e] = "#", b && b({
6232
+ const r = y.indexOf(t);
6233
+ if (-1 !== r) return u[e] = "#", b && b({
6234
6234
  cyclicKeypath: l[r]
6235
6235
  }), "#" + l[r];
6236
- true === o && (u.push(t), l.push(e));
6236
+ true === o && (y.push(t), l.push(e));
6237
6237
  }
6238
6238
  const v = isPlainObject(t),
6239
6239
  w = a(t),
@@ -6297,16 +6297,16 @@ class Typeson {
6297
6297
  },
6298
6298
  replace = (e, t, r, n, a, o, s) => {
6299
6299
  const i = a ? this.plainObjectReplacers : this.nonplainObjectReplacers;
6300
- let u = i.length;
6301
- for (; u--;) {
6302
- const a = i[u];
6300
+ let y = i.length;
6301
+ for (; y--;) {
6302
+ const a = i[y];
6303
6303
  if (a.test(t, r)) {
6304
6304
  const {
6305
6305
  type: i
6306
6306
  } = a;
6307
6307
  if (Object.hasOwn(this.revivers, i)) {
6308
- const t = y[e];
6309
- y[e] = t ? [i].concat(t) : i;
6308
+ const t = u[e];
6309
+ u[e] = t ? [i].concat(t) : i;
6310
6310
  }
6311
6311
  if (Object.assign(r, {
6312
6312
  type: i,
@@ -6314,14 +6314,14 @@ class Typeson {
6314
6314
  }), (c || !a.replaceAsync) && !a.replace) return s && s({
6315
6315
  typeDetected: true
6316
6316
  }), _encapsulate(e, t, f && "readonly", r, n, o, i);
6317
- let u;
6317
+ let y;
6318
6318
  if (s && s({
6319
6319
  replacing: true
6320
6320
  }), c || !a.replaceAsync) {
6321
6321
  if (void 0 === a.replace) throw new TypeError("Missing replacer");
6322
- u = a.replace(t, r);
6323
- } else u = a.replaceAsync(t, r);
6324
- return _encapsulate(e, u, f && "readonly", r, n, o, i);
6322
+ y = a.replace(t, r);
6323
+ } else y = a.replaceAsync(t, r);
6324
+ return _encapsulate(e, y, f && "readonly", r, n, o, i);
6325
6325
  }
6326
6326
  }
6327
6327
  return t;
@@ -6366,16 +6366,16 @@ class Typeson {
6366
6366
  if (true === i) return finishRevival(e.$);
6367
6367
  if (!i || "object" != typeof i || Array.isArray(i)) return finishRevival(e);
6368
6368
  const c = [],
6369
- y = Object.create(null),
6370
- u = {};
6369
+ u = Object.create(null),
6370
+ y = {};
6371
6371
  let l = true;
6372
6372
  i.$ && isPlainObject(i.$) && (e = e.$, i = i.$, l = false);
6373
6373
  const executeReviver = (e, t) => {
6374
6374
  const [r] = this.revivers[e] ?? [];
6375
6375
  if (!r) throw new Error("Unregistered type: " + e);
6376
6376
  if (s && !("revive" in r)) return t;
6377
- if (!s && r.reviveAsync) return r.reviveAsync(t, u);
6378
- if (r.revive) return r.revive(t, u);
6377
+ if (!s && r.reviveAsync) return r.reviveAsync(t, y);
6378
+ if (r.revive) return r.revive(t, y);
6379
6379
  throw new Error("Missing reviver");
6380
6380
  },
6381
6381
  p = [];
@@ -6413,7 +6413,7 @@ class Typeson {
6413
6413
  }, void 0);
6414
6414
  })();
6415
6415
  let d;
6416
- return hasConstructorOf(f, TypesonPromise) ? d = f.then(() => e) : (d = function _revive(e, t, o, u, f) {
6416
+ return hasConstructorOf(f, TypesonPromise) ? d = f.then(() => e) : (d = function _revive(e, t, o, y, f) {
6417
6417
  if (l && "$types" === e) return;
6418
6418
  const d = p.length,
6419
6419
  m = n(i, e) ? i[e] : void 0,
@@ -6426,18 +6426,18 @@ class Typeson {
6426
6426
  hasConstructorOf(n, TypesonPromise) ? p.push(n.then(e => set(e))) : set(n);
6427
6427
  }), t = a; c.length;) {
6428
6428
  const [[e, t, r, a]] = c,
6429
- o = n(y, t),
6430
- s = o ? y[t] : getByKeyPath(e, t);
6429
+ o = n(u, t),
6430
+ s = o ? u[t] : getByKeyPath(e, t);
6431
6431
  if (!o && void 0 === s) break;
6432
6432
  setOwnEnumerable(r, a, s), c.shift();
6433
6433
  }
6434
6434
  }
6435
- if (!m) return y[e] = t, t;
6435
+ if (!m) return u[e] = t, t;
6436
6436
  if ("#" === m) {
6437
6437
  const e = t.slice(1),
6438
- r = n(y, e),
6439
- a = r ? y[e] : getByKeyPath(o, e);
6440
- return r || void 0 !== a || c.push([o, e, u, f]), a;
6438
+ r = n(u, e),
6439
+ a = r ? u[e] : getByKeyPath(o, e);
6440
+ return r || void 0 !== a || c.push([o, e, y, f]), a;
6441
6441
  }
6442
6442
  const applyType = t => {
6443
6443
  const r = [].concat(m).reduce(function reducer(e, t) {
@@ -6445,7 +6445,7 @@ class Typeson {
6445
6445
  if ("string" != typeof t) throw new TypeError("Bad type JSON");
6446
6446
  return executeReviver(t, e);
6447
6447
  }, t);
6448
- return hasConstructorOf(r, TypesonPromise) ? r.then(t => (y[e] = t, t)) : (y[e] = r, r);
6448
+ return hasConstructorOf(r, TypesonPromise) ? r.then(t => (u[e] = t, t)) : (u[e] = r, r);
6449
6449
  };
6450
6450
  return !s && p.length > d ? TypesonPromise.all(p.slice(d)).then(() => applyType(t)) : applyType(t);
6451
6451
  }("", e, null), p.length && (d = TypesonPromise.resolve(d).then(e => TypesonPromise.all([e, ...p])).then(([e]) => e))), isThenable(d) ? s && o.throwOnBadSyncType ? (() => {
@@ -6521,8 +6521,8 @@ class Typeson {
6521
6521
  class Undefined {}
6522
6522
  Undefined.__typeson__type__ = "TypesonUndefined";
6523
6523
  const s = ["null", "boolean", "number", "string", "array", "object"];
6524
- for (var i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", c = new Uint8Array(256), y = 0; y < 64; y++) c[i.codePointAt(y)] = y;
6525
- var u = function encode(e, t, r) {
6524
+ for (var i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", c = new Uint8Array(256), u = 0; u < 64; u++) c[i.codePointAt(u)] = u;
6525
+ var y = function encode(e, t, r) {
6526
6526
  null == r && (r = e.byteLength);
6527
6527
  for (var n = new Uint8Array(e, 0, r), a = n.length, o = "", s = 0; s < a; s += 3) o += i[n[s] >> 2], o += i[(3 & n[s]) << 4 | n[s + 1] >> 4], o += i[(15 & n[s + 1]) << 2 | n[s + 2] >> 6], o += i[63 & n[s + 2]];
6528
6528
  return a % 3 == 2 ? o = o.slice(0, -1) + "=" : a % 3 == 1 && (o = o.slice(0, -2) + "=="), o;
@@ -6535,10 +6535,10 @@ var u = function encode(e, t, r) {
6535
6535
  o,
6536
6536
  s,
6537
6537
  i = .75 * e.length,
6538
- y = 0;
6538
+ u = 0;
6539
6539
  "=" === e[e.length - 1] && (i--, "=" === e[e.length - 2] && i--);
6540
- for (var u = new ArrayBuffer(i, t), l = new Uint8Array(u), p = 0; p < r; p += 4) n = c[e.codePointAt(p)], a = c[e.codePointAt(p + 1)], o = c[e.codePointAt(p + 2)], s = c[e.codePointAt(p + 3)], l[y++] = n << 2 | a >> 4, l[y++] = (15 & a) << 4 | o >> 2, l[y++] = (3 & o) << 6 | 63 & s;
6541
- return u;
6540
+ for (var y = new ArrayBuffer(i, t), l = new Uint8Array(y), p = 0; p < r; p += 4) n = c[e.codePointAt(p)], a = c[e.codePointAt(p + 1)], o = c[e.codePointAt(p + 2)], s = c[e.codePointAt(p + 3)], l[u++] = n << 2 | a >> 4, l[u++] = (15 & a) << 4 | o >> 2, l[u++] = (3 & o) << 6 | 63 & s;
6541
+ return y;
6542
6542
  };
6543
6543
  const p = {
6544
6544
  arraybuffer: {
@@ -6549,7 +6549,7 @@ const p = {
6549
6549
  return -1 !== r ? {
6550
6550
  index: r
6551
6551
  } : (t.buffers.push(e), {
6552
- s: u(e),
6552
+ s: y(e),
6553
6553
  maxByteLength: e.maxByteLength,
6554
6554
  resizable: e.resizable
6555
6555
  });
@@ -6583,13 +6583,13 @@ const p = {
6583
6583
  });
6584
6584
  i.push(r), c += r;
6585
6585
  }
6586
- const y = new ArrayBuffer(c);
6587
- let u = 0;
6586
+ const u = new ArrayBuffer(c);
6587
+ let y = 0;
6588
6588
  for (let t = 0; t < s; t++) {
6589
- const r = new Uint8Array(y, u, i[t]);
6589
+ const r = new Uint8Array(u, y, i[t]);
6590
6590
  e.copyTo(r, {
6591
6591
  planeIndex: t
6592
- }), u += i[t];
6592
+ }), y += i[t];
6593
6593
  }
6594
6594
  return {
6595
6595
  format: t,
@@ -6597,7 +6597,7 @@ const p = {
6597
6597
  numberOfFrames: n,
6598
6598
  numberOfChannels: a,
6599
6599
  timestamp: o,
6600
- data: y
6600
+ data: u
6601
6601
  };
6602
6602
  },
6603
6603
  revive: ({
@@ -6713,7 +6713,7 @@ const v = {
6713
6713
  byteOffset: t,
6714
6714
  byteLength: r
6715
6715
  } : (n.buffers.push(e), {
6716
- encoded: u(e),
6716
+ encoded: y(e),
6717
6717
  maxByteLength: e.maxByteLength,
6718
6718
  resizable: e.resizable,
6719
6719
  byteOffset: t,
@@ -7199,7 +7199,7 @@ const X = {};
7199
7199
  } : (n.buffers.push(e), {
7200
7200
  maxByteLength: e.maxByteLength,
7201
7201
  resizable: e.resizable,
7202
- encoded: u(e),
7202
+ encoded: y(e),
7203
7203
  byteOffset: t,
7204
7204
  length: r
7205
7205
  });
@@ -7214,10 +7214,10 @@ const X = {};
7214
7214
  maxByteLength: i,
7215
7215
  resizable: c
7216
7216
  } = t;
7217
- let y;
7218
- return "index" in t ? y = r.buffers[s] : (y = l(o, c ? {
7217
+ let u;
7218
+ return "index" in t ? u = r.buffers[s] : (u = l(o, c ? {
7219
7219
  maxByteLength: i
7220
- } : void 0), r.buffers.push(y)), new e(y, n, a);
7220
+ } : void 0), r.buffers.push(u)), new e(u, n, a);
7221
7221
  }
7222
7222
  };
7223
7223
  }(e));
@@ -7250,8 +7250,8 @@ const Y = {
7250
7250
  duration: s,
7251
7251
  visibleRect: i,
7252
7252
  displayWidth: c,
7253
- displayHeight: y,
7254
- colorSpace: u
7253
+ displayHeight: u,
7254
+ colorSpace: y
7255
7255
  } = e,
7256
7256
  l = new ArrayBuffer(e.allocationSize());
7257
7257
  await e.copyTo(l), t({
@@ -7267,12 +7267,12 @@ const Y = {
7267
7267
  height: i.height
7268
7268
  },
7269
7269
  displayWidth: c,
7270
- displayHeight: y,
7270
+ displayHeight: u,
7271
7271
  colorSpace: {
7272
- primaries: u.primaries,
7273
- transfer: u.transfer,
7274
- matrix: u.matrix,
7275
- fullRange: u.fullRange
7272
+ primaries: y.primaries,
7273
+ transfer: y.transfer,
7274
+ matrix: y.matrix,
7275
+ fullRange: y.fullRange
7276
7276
  },
7277
7277
  data: l
7278
7278
  });
@@ -7290,8 +7290,8 @@ const Y = {
7290
7290
  displayWidth: s,
7291
7291
  displayHeight: i,
7292
7292
  colorSpace: c,
7293
- data: y
7294
- }) => new VideoFrame(new Uint8Array(y), {
7293
+ data: u
7294
+ }) => new VideoFrame(new Uint8Array(u), {
7295
7295
  format: e,
7296
7296
  codedWidth: t,
7297
7297
  codedHeight: r,
@@ -7345,11 +7345,11 @@ const Y = {
7345
7345
  }],
7346
7346
  ne = [D, M, L, F],
7347
7347
  ce = [Z, Y, re, K, ne, O, z, U, _, B, I, h, N, C].concat("function" == typeof Map ? k : [], "function" == typeof Set ? H : [], "function" == typeof ArrayBuffer ? p : [], "function" == typeof Uint8Array ? X : [], "function" == typeof DataView ? w : [], "undefined" != typeof crypto ? v : [], "undefined" != typeof BigInt ? [m, d] : [], "undefined" != typeof DOMException ? A : [], "undefined" != typeof QuotaExceededError ? W : [], "undefined" != typeof WebTransportError ? te : [], "undefined" != typeof DOMRect ? x : [], "undefined" != typeof DOMPoint ? S : [], "undefined" != typeof DOMQuad ? P : [], "undefined" != typeof DOMMatrix ? T : [], "undefined" != typeof AudioData ? f : [], "undefined" != typeof EncodedAudioChunk ? E : [], "undefined" != typeof EncodedVideoChunk ? j : [], "undefined" != typeof VideoFrame ? ee : []);
7348
- const ye = ce.concat({
7348
+ const ue = ce.concat({
7349
7349
  checkDataCloneException: {
7350
7350
  test(e) {
7351
7351
  const t = {}.toString.call(e).slice(8, -1);
7352
- if (["symbol", "function"].includes(typeof e) || ["Arguments", "Module", "Promise", "WeakMap", "WeakSet", "Event", "MessageChannel"].includes(t) || ["ArrayBuffer", "DataView", "Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Uint16Array", "Int32Array", "Uint32Array", "Float32Array", "Float64Array", "BigInt64Array", "BigUint64Array"].includes(t) && function isBufferDetached(e) {
7352
+ 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) {
7353
7353
  if ("boolean" == typeof e.detached) return e.detached;
7354
7354
  if (0 !== e.byteLength) return false;
7355
7355
  try {
@@ -7365,7 +7365,7 @@ const ye = ce.concat({
7365
7365
 
7366
7366
  // See: https://stackoverflow.com/questions/42170826/categories-for-rejection-by-the-structured-cloning-algorithm
7367
7367
 
7368
- let typeson = new Typeson().register(ye);
7368
+ let typeson = new Typeson().register(ue);
7369
7369
 
7370
7370
  /**
7371
7371
  * @param {(preset: import('typeson-registry').Preset) =>
@@ -7374,7 +7374,7 @@ let typeson = new Typeson().register(ye);
7374
7374
  */
7375
7375
  function register(func) {
7376
7376
  // eslint-disable-next-line unicorn/no-top-level-assignment-in-function -- Should be one-time cache
7377
- typeson = new Typeson().register(func(ye));
7377
+ typeson = new Typeson().register(func(ue));
7378
7378
  }
7379
7379
 
7380
7380
  /**
@@ -8424,6 +8424,11 @@ const IDBObjectStoreAlias = IDBObjectStore;
8424
8424
  * success: (key: import('./Key.js').Key, cn?: Integer) => void,
8425
8425
  * failCb: import('./Key.js').SQLFailureCallback
8426
8426
  * ) => void,
8427
+ * __checkIndexConstraints: (
8428
+ * tx: WebSQLTransaction,
8429
+ * value: import('./Key.js').Value,
8430
+ * excludeKey: import('./Key.js').Key|Integer|undefined
8431
+ * ) => SyncPromise,
8427
8432
  * __insertData: (
8428
8433
  * tx: WebSQLTransaction,
8429
8434
  * encoded: string,
@@ -8844,6 +8849,69 @@ IDBObjectStore.prototype.__deriveKey = function (tx, value, key, success, failCb
8844
8849
  }
8845
8850
  };
8846
8851
 
8852
+ /**
8853
+ * Validates `value`'s unique index entries against the table's *current*
8854
+ * state without mutating anything -- used by `__storingRecordObjectStore`
8855
+ * to check a `put()`'s constraints *before* `__overwrite` deletes the
8856
+ * existing row for that key, so a rejected `put()` can't end up losing
8857
+ * the record it was trying to replace (see
8858
+ * `idbobjectstore-put-unique-index-constraint-is-atomic.any.js`).
8859
+ * `excludeKey`, when given, treats a conflicting record as a non-conflict
8860
+ * if it's the very record being overwritten (its own current entry would
8861
+ * otherwise self-conflict on every no-op `put()` of an unchanged value).
8862
+ * `__insertData` below still runs its own (now redundant, but harmless --
8863
+ * the old row is gone by then) equivalent check as its first step; this
8864
+ * isn't merged into it because `__insertData` also performs the actual
8865
+ * `INSERT`, which cannot safely run before `__overwrite`'s `DELETE` when
8866
+ * overwriting an existing key.
8867
+ * @param {WebSQLTransaction} tx
8868
+ * @param {import('./Key.js').Value} value
8869
+ * @param {import('./Key.js').Key|Integer|undefined} excludeKey
8870
+ * @this {IDBObjectStoreFull}
8871
+ * @returns {SyncPromise}
8872
+ */
8873
+ IDBObjectStore.prototype.__checkIndexConstraints = function (tx, value, excludeKey) {
8874
+ const me = this;
8875
+ const indexPromises = Object.keys(me.__indexes).map(indexName => {
8876
+ return new SyncPromise((resolve, reject) => {
8877
+ const index = me.__indexes[indexName];
8878
+ if (index.__pendingCreate || index.__deleted || !index.unique) {
8879
+ resolve(undefined);
8880
+ return;
8881
+ }
8882
+ /**
8883
+ * @type {import('./Key.js').KeyValueObject|
8884
+ * import('./Key.js').KeyPathEvaluateValue}
8885
+ */
8886
+ let indexKey;
8887
+ try {
8888
+ indexKey = extractKeyValueDecodedFromValueUsingKeyPath(value, index.keyPath, index.multiEntry);
8889
+ if ('invalid' in indexKey && indexKey.invalid || 'failure' in indexKey && indexKey.failure) {
8890
+ throw new Error('Go to catch');
8891
+ }
8892
+ } catch (err) {
8893
+ resolve(undefined);
8894
+ return;
8895
+ }
8896
+ indexKey = indexKey.value;
8897
+ if (indexKey === undefined) {
8898
+ resolve(undefined);
8899
+ return;
8900
+ }
8901
+ const multiCheck = index.multiEntry && Array.isArray(indexKey);
8902
+ const fetchArgs = buildFetchIndexDataSQL(true, index, indexKey, 'key', multiCheck);
8903
+ executeFetchIndexData(null, ...fetchArgs, tx, null, function success(key) {
8904
+ if (key === undefined || excludeKey !== undefined && cmp(key, excludeKey) === 0) {
8905
+ resolve(undefined);
8906
+ return;
8907
+ }
8908
+ reject(createDOMException('ConstraintError', 'Index already contains a record equal to ' + (multiCheck ? 'one of the subkeys of' : '') + '`indexKey`'));
8909
+ }, reject);
8910
+ });
8911
+ });
8912
+ return SyncPromise.all(indexPromises);
8913
+ };
8914
+
8847
8915
  /**
8848
8916
  *
8849
8917
  * @param {WebSQLTransaction} tx
@@ -9096,7 +9164,32 @@ IDBObjectStore.__storingRecordObjectStore = function (request, store, invalidate
9096
9164
  }, error);
9097
9165
  }
9098
9166
  if (!noOverwrite) {
9099
- store.__overwrite(tx, clonedKeyOrCurrentNumber, insert, error);
9167
+ // Validate unique index constraints *before* `__overwrite`
9168
+ // deletes the existing row at this key -- otherwise a
9169
+ // `put()` that ends up rejected still permanently loses
9170
+ // the record it was trying to replace (see
9171
+ // `idbobjectstore-put-unique-index-constraint-is-atomic.any.js`).
9172
+ store.__checkIndexConstraints(tx, value, clonedKeyOrCurrentNumber).then(() => {
9173
+ store.__overwrite(tx, clonedKeyOrCurrentNumber, insert, error);
9174
+ return undefined;
9175
+ /**
9176
+ * @param {Error|DOMException} err
9177
+ * @returns {null}
9178
+ */
9179
+ }).catch(function (err) {
9180
+ /**
9181
+ * @returns {void}
9182
+ */
9183
+ function fail() {
9184
+ error(err);
9185
+ }
9186
+ if (typeof oldCn === 'number') {
9187
+ assignCurrentNumber(tx, store, oldCn, fail, fail);
9188
+ return null;
9189
+ }
9190
+ fail();
9191
+ return null;
9192
+ });
9100
9193
  return;
9101
9194
  }
9102
9195
  insert(tx);
@@ -11034,6 +11127,14 @@ readonlyProperties.forEach(prop => {
11034
11127
  * @returns {import('./Key.js').Key|import('./Key.js').Value}
11035
11128
  */
11036
11129
  get [prop]() {
11130
+ // This is defined on the *shared* prototype (see above), so,
11131
+ // unlike a per-instance getter, it's reachable by calling it
11132
+ // directly on `IDBRecord.prototype` itself (not a real
11133
+ // instance) -- WebIDL requires that to throw.
11134
+ if (!(this instanceof IDBRecordAlias)) {
11135
+ throw new TypeError('Illegal invocation');
11136
+ }
11137
+ // @ts-ignore `this` is a real instance past the check above (not an issue in TS7)
11037
11138
  return this['__' + prop];
11038
11139
  }
11039
11140
  };