dexie-cloud-addon 4.2.0-alpha.3 → 4.2.0-alpha.4

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.
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * ==========================================================================
10
10
  *
11
- * Version 4.2.0-alpha.3, Fri Aug 01 2025
11
+ * Version 4.2.0-alpha.4, Fri Aug 01 2025
12
12
  *
13
13
  * https://dexie.org
14
14
  *
@@ -6145,7 +6145,7 @@ function dexieCloud(dexie) {
6145
6145
  const syncComplete = new Subject();
6146
6146
  dexie.cloud = {
6147
6147
  // @ts-ignore
6148
- version: "4.2.0-alpha.3",
6148
+ version: "4.2.0-alpha.4",
6149
6149
  options: Object.assign({}, DEFAULT_OPTIONS),
6150
6150
  schema: null,
6151
6151
  get currentUserId() {
@@ -6462,7 +6462,7 @@ function dexieCloud(dexie) {
6462
6462
  }
6463
6463
  }
6464
6464
  // @ts-ignore
6465
- dexieCloud.version = "4.2.0-alpha.3";
6465
+ dexieCloud.version = "4.2.0-alpha.4";
6466
6466
  Dexie.Cloud = dexieCloud;
6467
6467
 
6468
6468
  export { dexieCloud as default, defineYDocTrigger, dexieCloud, getTiedObjectId, getTiedRealmId, resolveText };
@@ -1,2 +1,2 @@
1
- import e,{PropModification as t,cmp as n,RangeSet as r,liveQuery as o}from"dexie";import{Encoder as s,writeVarString as i,writeAny as a,writeVarUint8Array as l,writeBigUint64 as c,toUint8Array as u}from"lib0/encoding";import{Decoder as d,readVarString as f,readAny as p,readVarUint8Array as y,readBigUint64 as h,hasContent as v,readUint8 as m}from"lib0/decoding";import{firstValueFrom as b,from as g,filter as _,Observable as w,BehaviorSubject as k,Subject as S,of as x,fromEvent as I,merge as E,switchMap as O,tap as C,mergeMap as T,Subscription as j,throwError as U,combineLatest as A,map as P,share as $,timer as D,startWith as L}from"rxjs";import{filter as R,switchMap as N,delay as B,distinctUntilChanged as M,map as F,tap as W,take as K,catchError as V,debounceTime as H,startWith as q,skip as z}from"rxjs/operators";import*as J from"yjs";import{DexieYProvider as G}from"y-dexie";function Y(e,t,n,r){return new(n||(n=Promise))((function(o,s){function i(e){try{l(r.next(e))}catch(e){s(e)}}function a(e){try{l(r.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}l((r=r.apply(e,t||[])).next())}))}function Z(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function X(e){return this instanceof X?(this.v=e,this):new X(e)}function Q(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,o=n.apply(e,t||[]),s=[];return r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r;function i(e){o[e]&&(r[e]=function(t){return new Promise((function(n,r){s.push([e,t,n,r])>1||a(e,t)}))})}function a(e,t){try{!function(e){e.value instanceof X?Promise.resolve(e.value.v).then(l,c):u(s[0][2],e)}(o[e](t))}catch(e){u(s[0][3],e)}}function l(e){a("next",e)}function c(e){a("throw",e)}function u(e,t){e(t),s.shift(),s.length&&a(s[0][0],s[0][1])}}function ee(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=Z(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,o){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,o,(t=e[n](t)).done,t.value)}))}}}const te={}.hasOwnProperty;function ne(e,t,n){if(e&&void 0!==t&&(!("isFrozen"in Object)||!Object.isFrozen(e)))if("string"!=typeof t&&"length"in t){!function(e){if(!e)throw new Error("Assertion Failed")}("string"!=typeof n&&"length"in n);for(var r=0,o=t.length;r<o;++r)ne(e,t[r],n[r])}else{var s=t.indexOf(".");if(-1!==s){var i=t.substr(0,s),a=t.substr(s+1);if(""===a)void 0===n?Array.isArray(e)?isNaN(parseInt(i))||e.splice(parseInt(i),1):delete e[i]:e[i]=n;else{var l=e[i];l&&function(e,t){return te.call(e,t)}(e,i)||(l=e[i]={}),ne(l,a,n)}}else void 0===n?Array.isArray(e)&&!isNaN(parseInt(t))?e.splice(t,1):delete e[t]:e[t]=n}}const re="undefined"!=typeof self&&"undefined"!=typeof crypto?(e,t=crypto.getRandomValues.bind(crypto))=>{const n=new Uint8Array(e);return t(n),self.btoa(String.fromCharCode.apply(null,n))}:"undefined"!=typeof Buffer?(e,t=oe)=>{const n=Buffer.alloc(e);return t(n),n.toString("base64")}:()=>{throw new Error("No implementation of randomString was found")};function oe(e){for(let t=0;t<e.length;++t)e[t]=Math.floor(256*Math.random())}function se(e){return"string"==typeof e||!!(Array.isArray(e)&&e.some((e=>se(e)))&&e.every(ie))}function ie(e){return"string"==typeof e||"number"==typeof e||Array.isArray(e)&&e.every(ie)}function ae(e,t,n){const r=e[t]||(e[t]={}),o=n.keys.map((e=>"string"==typeof e?e:JSON.stringify(e)));switch(n.type){case"insert":case"upsert":o.forEach(((e,t)=>{r[e]={type:"ups",val:n.values[t]}}));break;case"update":case"modify":o.forEach(((e,t)=>{const o="update"===n.type?n.changeSpecs[t]:n.changeSpec,s=r[e];if(s)switch(s.type){case"ups":for(const[e,t]of Object.entries(o))ne(s.val,e,t);break;case"del":break;case"upd":Object.assign(s.mod,o)}else r[e]={type:"upd",mod:o}}));break;case"delete":o.forEach((e=>{r[e]={type:"del"}}))}return e}function le(e,t){for(const{table:n,muts:r}of t)for(const t of r)ae(e,n,t)}function ce(e){return Q(this,arguments,(function*(){var t,n,r,o;let s=0,i=new Uint8Array(4),a=0,l=[],c=0;try{for(var u,d=!0,f=ee(e);!(t=(u=yield X(f.next())).done);d=!0){o=u.value,d=!1;const e=o,t=new DataView(e.buffer,e.byteOffset,e.byteLength);let n=0;for(;n<e.byteLength;)switch(s){case 0:if(n+4>e.byteLength){for(const t of e.slice(n)){if(4===a)break;i[a++]=t,++n}if(a<4)break}else if(a>0&&a<4)for(const t of e.slice(n,n+4-a))i[a++]=t,++n;case 1:c=4===a?new DataView(i.buffer,0,4).getUint32(0,!1):t.getUint32(n,!1),a?a=0:n+=4;case 2:if(n>=e.byteLength){s=2;break}if(n+c>e.byteLength)l.push(e.slice(n)),c-=e.byteLength-n,s=2,n=e.byteLength;else{if(l.length>0){const t=new Uint8Array(l.reduce(((e,t)=>e+t.byteLength),c));let r=0;for(const e of l)t.set(e,r),r+=e.byteLength;t.set(e.slice(n,n+c),r),l=[],yield yield X(t)}else yield yield X(e.slice(n,n+c));n+=c,s=0}}}}catch(e){n={error:e}}finally{try{d||t||!(r=f.return)||(yield X(r.call(f)))}finally{if(n)throw n.error}}}))}let ue=!1;function de(e,t){return Y(this,void 0,void 0,(function*(){try{const n=yield navigator.serviceWorker.ready;if("push"===t&&n.sync&&(yield n.sync.register(`dexie-cloud:${e.name}`)),!n.active)throw new Error("Failed to trigger sync - there's no active service worker");return void n.active.postMessage({type:"dexie-cloud-sync",dbName:e.name,purpose:t})}catch(e){ue||(ue=!0)}}))}function fe(e,t){e.cloud.usingServiceWorker?de(e,t):e.localSyncEvent.next({purpose:t})}const pe="fromBase64"in Uint8Array,ye="toBase64"in Uint8Array.prototype,he="undefined"!=typeof Buffer?e=>Buffer.from(e,"base64"):pe?e=>Uint8Array.fromBase64(e):e=>{const t=atob(e),n=t.length,r=new Uint8Array(n);for(var o=0;o<n;o++)r[o]=t.charCodeAt(o);return r},ve="undefined"!=typeof Buffer?e=>ArrayBuffer.isView(e)?Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("base64"):Buffer.from(e).toString("base64"):ye?e=>(ArrayBuffer.isView(e)?e:new Uint8Array(e)).toBase64():e=>{const t=ArrayBuffer.isView(e)?e:new Uint8Array(e),n=[];for(let e=0,r=t.length;e<r;e+=4096){const r=t.subarray(e,e+4096);n.push(String.fromCharCode.apply(null,r))}return btoa(n.join(""))};class me extends Error{constructor({title:e,message:t,messageCode:n,messageParams:r}){super(t),this.name="TokenErrorResponseError",this.title=e,this.messageCode=n,this.messageParams=r}}function be(t,n){return new Promise(((r,o)=>{const s=Object.assign(Object.assign({submitLabel:"Submit",cancelLabel:"Cancel"},n),{onSubmit:e=>{t.next(void 0),r(e)},onCancel:()=>{t.next(void 0),o(new e.AbortError("User cancelled"))}});t.next(s)}))}function ge(e,t,...n){return be(e,{type:"message-alert",title:t,alerts:n,fields:{},submitLabel:"OK",cancelLabel:null})}function _e(e,t,n){return Y(this,void 0,void 0,(function*(){let r=n||"";for(;!r||!/^[\w-+.]+@([\w-]+\.)+[\w-]{2,10}(\sas\s[\w-+.]+@([\w-]+\.)+[\w-]{2,10})?$/.test(r);)r=(yield be(e,{type:"email",title:t,alerts:r?[{type:"error",messageCode:"INVALID_EMAIL",message:"Please enter a valid email address",messageParams:{}}]:[],fields:{email:{type:"email",placeholder:"you@somedomain.com"}}})).email;return r}))}function we(e,t,n){return Y(this,void 0,void 0,(function*(){const r=[{type:"info",messageCode:"OTP_SENT",message:"A One-Time password has been sent to {email}",messageParams:{email:t}}];n&&r.push(n);const{otp:o}=yield be(e,{type:"otp",title:"Enter OTP",alerts:r,fields:{otp:{type:"otp",label:"OTP",placeholder:"Paste OTP here"}}});return o}))}function ke(e){return Y(this,void 0,void 0,(function*(){var t,n,r;const o=yield e.getCurrentUser(),{accessToken:s,accessTokenExpiration:i,refreshToken:a,refreshTokenExpiration:l,claims:c}=o;if(!s)return null;if((null!==(t=null==i?void 0:i.getTime())&&void 0!==t?t:1/0)>Date.now()&&"ok"===((null===(n=o.license)||void 0===n?void 0:n.status)||"ok"))return o;if(!a)throw new Error("Refresh token missing");if((null!==(r=null==l?void 0:l.getTime())&&void 0!==r?r:1/0)<=Date.now())throw new Error("Refresh token has expired");const u=yield xe(e.cloud.options.databaseUrl,o);return yield e.table("$logins").update(c.sub,{accessToken:u.accessToken,accessTokenExpiration:u.accessTokenExpiration,claims:u.claims,license:u.license,data:u.data}),u}))}function Se(t,n,r,o,s){return Y(this,void 0,void 0,(function*(){return n.accessToken&&n.accessTokenExpiration.getTime()>Date.now()?n:n.refreshToken&&(!n.refreshTokenExpiration||n.refreshTokenExpiration.getTime()>Date.now())?yield xe(t,n):yield function(t,n,r,o){return Y(this,void 0,void 0,(function*(){if(!crypto.subtle)throw"undefined"!=typeof location&&"http:"===location.protocol?new Error("Dexie Cloud Addon needs to use WebCrypto, but your browser has disabled it due to being served from an insecure location. Please serve it from https or http://localhost:<port> (See https://stackoverflow.com/questions/46670556/how-to-enable-crypto-subtle-for-unsecure-origins-in-chrome/46671627#46671627)"):new Error("This browser does not support WebCrypto.");const{privateKey:s,publicKey:i}=yield crypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!1,["sign","verify"]);if(!s||!i)throw new Error("Could not generate RSA keypair");t.nonExportablePrivateKey=s;const a=function(e){const t=ve(e);return function(e){let t="-----BEGIN PUBLIC KEY-----\n";for(;e.length>0;)t+=e.substring(0,64)+"\n",e=e.substring(64);return t+="-----END PUBLIC KEY-----",t}(t)}(yield crypto.subtle.exportKey("spki",i));t.publicKey=i;try{const e=yield n({public_key:a,hints:o});if("error"===e.type)throw new me(e);if("tokens"!==e.type)throw new Error(`Unexpected response type from token endpoint: ${e.type}`);return t.accessToken=e.accessToken,t.accessTokenExpiration=new Date(e.accessTokenExpiration),t.refreshToken=e.refreshToken,e.refreshTokenExpiration&&(t.refreshTokenExpiration=new Date(e.refreshTokenExpiration)),t.userId=e.claims.sub,t.email=e.claims.email,t.name=e.claims.name,t.claims=e.claims,t.license={type:e.userType,status:e.claims.license||"ok"},t.data=e.data,null!=e.evalDaysLeft&&(t.license.evalDaysLeft=e.evalDaysLeft),null!=e.userValidUntil&&(t.license.validUntil=new Date(e.userValidUntil)),e.alerts&&e.alerts.length>0&&(yield be(r,{type:"message-alert",title:"Authentication Alert",fields:{},alerts:e.alerts})),t}catch(t){if(t instanceof me)throw yield ge(r,t.title,{type:"error",messageCode:t.messageCode,message:t.message,messageParams:{}}),t;let n="We're having a problem authenticating right now.";if(t instanceof TypeError){n=void 0!==typeof navigator&&!navigator.onLine?"You seem to be offline. Please connect to the internet and try again.":e.debug||"undefined"!=typeof location&&("localhost"===location.hostname||"127.0.0.1"===location.hostname)?`Could not connect to server. Please verify that your origin '${location.origin}' is whitelisted using \`npx dexie-cloud whitelist\``:"Could not connect to server. Please verify the connection.",yield ge(r,"Authentication Failed",{type:"error",messageCode:"GENERIC_ERROR",message:n,messageParams:{}}).catch((()=>{}))}throw t}}))}(n,r,o,s)}))}function xe(e,t){return Y(this,void 0,void 0,(function*(){if(!t.refreshToken)throw new Error("Cannot refresh token - refresh token is missing.");if(!t.nonExportablePrivateKey)throw new Error("login.nonExportablePrivateKey is missing - cannot sign refresh token without a private key.");const n=Date.now(),r="RSASSA-PKCS1-v1_5",o=(new TextEncoder).encode(t.refreshToken+n),s=yield crypto.subtle.sign(r,t.nonExportablePrivateKey,o),i=ve(s),a={grant_type:"refresh_token",refresh_token:t.refreshToken,scopes:["ACCESS_DB"],signature:i,signing_algorithm:r,time_stamp:n},l=yield fetch(`${e}/token`,{body:JSON.stringify(a),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"});if(200!==l.status)throw new Error(`RefreshToken: Status ${l.status} from ${e}/token`);const c=yield l.json();if("error"===c.type)throw new me(c);return t.accessToken=c.accessToken,t.accessTokenExpiration=c.accessTokenExpiration?new Date(c.accessTokenExpiration):void 0,t.claims=c.claims,t.license={type:c.userType,status:c.claims.license||"ok"},null!=c.evalDaysLeft&&(t.license.evalDaysLeft=c.evalDaysLeft),null!=c.userValidUntil&&(t.license.validUntil=new Date(c.userValidUntil)),c.data&&(t.data=c.data),t}))}const Ie=new WeakMap;class Ee{constructor(e,t){Ie.set(this,e),Object.assign(this,t)}static load(e,t){return e.table("$logins").get(t).then((n=>new Ee(e,n||{userId:t,claims:{sub:t},lastLogin:new Date(0)})))}save(){return Y(this,void 0,void 0,(function*(){Ie.get(this).table("$logins").put(this)}))}}const Oe={userId:"unauthorized",name:"Unauthorized",claims:{sub:"unauthorized"},lastLogin:new Date(0)};try{Object.freeze(Oe),Object.freeze(Oe.claims)}catch(e){}function Ce(e,t){return b(g(e).pipe(_(t)))}function Te(e){return Y(this,void 0,void 0,(function*(){const t=yield je(e);if(t){if(!(yield function(e,t,n){return Y(this,void 0,void 0,(function*(){const r=[{type:"warning",messageCode:"LOGOUT_CONFIRMATION",message:"{numUnsyncedChanges} unsynced changes will get lost!\n Logout anyway?",messageParams:{currentUserId:t,numUnsyncedChanges:n.toString()}}];return yield be(e,{type:"logout-confirmation",title:"Confirm Logout",alerts:r,fields:{},submitLabel:"Confirm logout",cancelLabel:"Cancel"}).then((()=>!0)).catch((()=>!1))}))}(e.cloud.userInteraction,e.cloud.currentUserId,t)))throw new Error("User cancelled logout due to unsynced changes");yield je(e,{deleteUnsyncedData:!0})}}))}function je(e){return Y(this,arguments,void 0,(function*(e,{deleteUnsyncedData:t=!1}={}){const[n,r]=yield e.dx.transaction("rw",e.dx.tables,(n=>Y(this,void 0,void 0,(function*(){const r=n.idbtrans;r.disableChangeTracking=!0,r.disableAccessControl=!0;const o=n.storeNames.filter((e=>e.endsWith("_mutations"))),s=(yield Promise.all(o.map((e=>n.table(e).count())))).reduce(((e,t)=>e+t),0);if(s>0&&!t)return[s,!1];e.$syncState.delete("syncState");for(const t of e.dx.tables)"$jobs"!==t.name&&"$syncState"!==t.name&&t.clear();return[s,!0]}))));return r&&(yield Ce(e.cloud.currentUser,(e=>e.userId===Oe.userId)),yield e.cloud.sync({purpose:"pull",wait:!0})),n}))}class Ue extends Error{constructor(e,t){super(t||`${e.status} ${e.statusText}`),this.httpStatus=e.status}get name(){return"HttpError"}}function Ae(e,...t){globalThis.console[e](...t)}function Pe(e,t){return Y(this,void 0,void 0,(function*(){var n;const r=yield e.getCurrentUser(),o=r.userId;if(r.isLoggedIn&&(!t||!t.email&&!t.userId)){if("ok"===((null===(n=r.license)||void 0===n?void 0:n.status)||"ok")&&r.accessToken&&(!r.accessTokenExpiration||r.accessTokenExpiration.getTime()>Date.now()))return!1;if(r.refreshToken&&(!r.refreshTokenExpiration||r.refreshTokenExpiration.getTime()>Date.now()))return yield ke(e),!1}const s=new Ee(e,{claims:{},lastLogin:new Date(0)});return yield Se(e.cloud.options.databaseUrl,s,e.cloud.options.fetchTokens||function(e){const{userInteraction:t}=e.cloud;return function(n){return Y(this,arguments,void 0,(function*({public_key:n,hints:r}){var o;let s;const i=null===(o=e.cloud.options)||void 0===o?void 0:o.databaseUrl;if(!i)throw new Error("No database URL given.");if("demo"===(null==r?void 0:r.grant_type))s={demo_user:yield _e(t,"Enter a demo user email",(null==r?void 0:r.email)||(null==r?void 0:r.userId)),grant_type:"demo",scopes:["ACCESS_DB"],public_key:n};else if((null==r?void 0:r.otpId)&&r.otp)s={grant_type:"otp",otp_id:r.otpId,otp:r.otp,scopes:["ACCESS_DB"],public_key:n};else{const e=yield _e(t,"Enter email address",null==r?void 0:r.email);s=/@demo.local$/.test(e)?{demo_user:e,grant_type:"demo",scopes:["ACCESS_DB"],public_key:n}:{email:e,grant_type:"otp",scopes:["ACCESS_DB"]}}const a=yield fetch(`${i}/token`,{body:JSON.stringify(s),method:"post",headers:{"Content-Type":"application/json",mode:"cors"}});if(200!==a.status){const e=yield a.text();throw yield ge(t,"Token request failed",{type:"error",messageCode:"GENERIC_ERROR",message:e,messageParams:{}}).catch((()=>{})),new Ue(a,e)}const l=yield a.json();if("tokens"===l.type||"error"===l.type)return l;if("otp"===s.grant_type&&"email"in s){if("otp-sent"!==l.type)throw new Error(`Unexpected response from ${i}/token`);const e=yield we(t,s.email),r=Object.assign(Object.assign({},s),{otp:e||"",otp_id:l.otp_id,public_key:n});let o=yield fetch(`${i}/token`,{body:JSON.stringify(r),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"});for(;401===o.status;){const e=yield o.text();r.otp=yield we(t,s.email,{type:"error",messageCode:"INVALID_OTP",message:e,messageParams:{}}),o=yield fetch(`${i}/token`,{body:JSON.stringify(r),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"})}if(200!==o.status){const e=yield o.text();throw new Ue(o,e)}return yield o.json()}throw new Error(`Unexpected response from ${i}/token`)}))}}(e),e.cloud.userInteraction,t),o!==Oe.userId&&s.userId!==o&&(yield Te(e)),yield function(e,t){return Y(this,void 0,void 0,(function*(){const n=e.table("$logins");yield e.transaction("rw",n,(e=>Y(this,void 0,void 0,(function*(){const e=yield n.toArray();yield Promise.all(e.filter((e=>e.userId!==t.userId&&e.isLoggedIn)).map((e=>(e.isLoggedIn=!1,n.put(e))))),t.isLoggedIn=!0,t.lastLogin=new Date;try{yield t.save()}catch(e){try{"DataCloneError"===e.name&&(Ae("debug","Login context property names:",Object.keys(t)),Ae("debug","Login context property names:",Object.keys(t)),Ae("debug","Login context:",t),Ae("debug","Login context JSON:",JSON.stringify(t)))}catch(e){}throw e}})))),yield Ce(e.cloud.currentUser,(e=>e.userId===t.userId))}))}(e,s),fe(e,"pull"),s.userId!==o}))}const $e={},De="undefined"!=typeof self&&self.document&&"undefined"!=typeof navigator&&navigator.serviceWorker;De&&De.ready.then((e=>$e.registration=e)),"undefined"!=typeof self&&"clients"in self&&!self.document&&addEventListener("message",(e=>{var t,n;(null===(n=null===(t=e.data)||void 0===t?void 0:t.type)||void 0===n?void 0:n.startsWith("sw-broadcast-"))&&[...self.clients.matchAll({includeUncontrolled:!0})].forEach((t=>{var n;return t.id!==(null===(n=e.source)||void 0===n?void 0:n.id)&&t.postMessage(e.data)}))}));class Le{constructor(e){this.name=e}subscribe(e){if(!De)return()=>{};const t=t=>{var n;(null===(n=t.data)||void 0===n?void 0:n.type)===`sw-broadcast-${this.name}`&&e(t.data.message)};return De.addEventListener("message",t),()=>De.removeEventListener("message",t)}postMessage(e){var t;"object"==typeof self.clients?[...self.clients.matchAll({includeUncontrolled:!0})].forEach((t=>t.postMessage({type:`sw-broadcast-${this.name}`,message:e}))):$e.registration&&(null===(t=$e.registration.active)||void 0===t||t.postMessage({type:`sw-broadcast-${this.name}`,message:e}))}}const Re=globalThis["lbc-events"]||(globalThis["lbc-events"]=new Map);class Ne extends w{constructor(e){const t="undefined"==typeof BroadcastChannel?new Le(e):new BroadcastChannel(e);super((n=>{function r(e){n.next(e.detail)}function o(e){n.next(e.data)}let s;!function(e,t){Re.has(e)?Re.get(e).push(t):Re.set(e,[t])}(`lbc-${e}`,r);try{t instanceof Le?s=t.subscribe((e=>n.next(e))):t.addEventListener("message",o)}catch(e){}return()=>{!function(e,t){const n=Re.get(e);if(n){const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}(`lbc-${e}`,r),t instanceof Le?s():t.removeEventListener("message",o)}})),this.name=e,this.bc=t}next(e){this.bc.postMessage(e);!function(e){const t=Re.get(e.type);t&&t.forEach((t=>{try{t(e)}catch(e){}}))}(new CustomEvent(`lbc-${this.name}`,{detail:e}))}}function Be(e){return Y(this,arguments,void 0,(function*({realms:e,inviteRealms:t}){const n=JSON.stringify([...e.map((e=>({realmId:e,accepted:!0}))),...t.map((e=>({realmId:e,accepted:!1})))].sort(((e,t)=>e.realmId<t.realmId?-1:e.realmId>t.realmId?1:0))),r=(new TextEncoder).encode(n),o=yield crypto.subtle.digest("SHA-1",r);return ve(o)}))}function Me(e){return Object.entries(e.cloud.schema||{}).filter((([,{markedForSync:e}])=>e)).map((([t])=>e.tables.filter((({name:e})=>e===t))[0])).filter((e=>e))}function Fe(e){return`$${e}_mutations`}function We(e){var t;const n=null===(t=/^\$(.*)_mutations$/.exec(e))||void 0===t?void 0:t[1];if(!n)throw new Error(`Given mutationTable ${e} is not correct`);return n}const Ke=[].concat;function Ve(e){return Ke.apply([],e)}function He(e,t){return Y(this,arguments,void 0,(function*(e,t,{since:n={},limit:r=1/0}={}){const o=Ve(yield Promise.all(e.map((e=>Y(this,void 0,void 0,(function*(){const t=We(e.name),o=n[t];let s=o?e.where("rev").above(o):e;r<1/0&&(s=s.limit(r));return(yield s.toArray()).map((e=>({table:t,mut:e})))})))))).sort(((e,t)=>e.mut.txid===t.mut.txid?e.mut.opNo-t.mut.opNo:e.mut.ts-t.mut.ts)),s=[];let i=null,a=null;for(const{table:e,mut:t}of o)i&&i.table===e&&a===t.txid?i.muts.push(t):(i={table:e,muts:[t]},a=t.txid,s.push(i));return s}))}function qe(e){const t=new Uint8Array(e);if("undefined"!=typeof crypto)crypto.getRandomValues(t);else for(let n=0;n<e;n++)t[n]=Math.floor(256*Math.random());if("undefined"!=typeof Buffer&&Buffer.from)return Buffer.from(t).toString("base64");if("undefined"!=typeof btoa)return btoa(String.fromCharCode.apply(null,t));throw new Error("No btoa or Buffer available")}const{toString:ze}={};const Je={replace:function(e){const t=Object.keys(e);let n=null;for(let e=0,r=t.length;e<r;++e)"$"===t[e][0]&&(n=n||[],n.push(t[e]));if(!n)return e;const r={...e};for(const e of n)delete r[e];for(const t of n)r["$"+t]=e[t];return r}};function Ge(...e){const t=e.reduce(((e,t)=>({...e,...t})),e.reduce(((e,t)=>({...t,...e})),{})),n=new WeakMap;return{stringify(e,r,o){const s=JSON.stringify(e,(function(e){const o=this[e],s=function(e){const r=typeof e;switch(typeof e){case"object":case"function":{if(null===e)return null;const r=Object.getPrototypeOf(e);if(!r)return Je;let s=n.get(r);if(void 0!==s)return s;const i=(o=e,ze.call(o).slice(8,-1)),a=Object.entries(t).find((([t,n])=>{var r,o;return null!==(o=null===(r=null==n?void 0:n.test)||void 0===r?void 0:r.call(n,e,i))&&void 0!==o?o:t===i}));return s=null==a?void 0:a[1],s||(s=Array.isArray(e)?null:"function"==typeof e?t.function||null:Je),n.set(r,s),s}default:return t[r]}var o}(o);return s?s.replace(o,r,t):o}),o);return s},parse(e,n){const r=[];return JSON.parse(e,(function(e,o){const s=null==o?void 0:o.$t;if(s){const e=t[s];o=e?e.revive(o,n,t):o}let i=r[r.length-1];if(i&&i[0]===o){o={...o};for(const e of i[1])delete o[e];for(const[e,t]of Object.entries(i[2]))o[e]=t;r.pop()}if(void 0===o||"$"===e[0]&&"$t"!==e){let t,n;i=r[r.length-1],i&&i[0]===this?(t=i[1],n=i[2]):r.push([this,t=[],n={}]),"$"===e[0]&&"$t"!==e?(t.push(e),n[e.substr(1)]=o):n[e]=void 0}return o}))}}}const Ye={Blob:{test:(e,t)=>"Blob"===t,replace:(e,t)=>{const n=t.length;return t.push(e),{$t:"Blob",mimeType:e.type,i:n}},revive:({i:e,mimeType:t},n)=>new Blob([n[e]],{type:t})}};var Ze={number:{replace:e=>{switch(!0){case isNaN(e):return{$t:"number",v:"NaN"};case e===1/0:return{$t:"number",v:"Infinity"};case e===-1/0:return{$t:"number",v:"-Infinity"};default:return e}},revive:({v:e})=>Number(e)}};const Xe={bigint:{replace:e=>({$t:"bigint",v:""+e}),revive:e=>BigInt(e.v)}};var Qe={Date:{replace:e=>({$t:"Date",v:isNaN(e.getTime())?"NaN":e.toISOString()}),revive:({v:e})=>new Date("NaN"===e?NaN:Date.parse(e))}},et={Set:{replace:e=>({$t:"Set",v:Array.from(e.entries())}),revive:({v:e})=>new Set(e)}},tt={Map:{replace:e=>({$t:"Map",v:Array.from(e.entries())}),revive:({v:e})=>new Map(e)}};const nt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0;var rt=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","DataView","BigInt64Array","BigUint64Array"].reduce(((e,t)=>({...e,[t]:{replace:(e,n,r)=>({$t:t,v:r.ArrayBuffer.replace(0===e.byteOffset&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength),n,r).v}),revive:({v:e},n,r)=>{const o=nt[t];return o&&new o(r.ArrayBuffer.revive({v:e},n,r))}}})),{});function ot(e){return function(e){for(var t="",n=0,r=e.length;n<r;n++)t+=at[e[n]];return t}(ve(e))}function st(e){return he(function(e){if("string"!=typeof e)throw new Error("invalid decoder input: "+e);for(var t="",n=0,r=e.length;n<r;n++)t+=it[e[n]];return t}(e))}const it={"-":"=",0:"A",1:"B",2:"C",3:"D",4:"E",5:"F",6:"G",7:"H",8:"I",9:"J",A:"K",B:"L",C:"M",D:"N",E:"O",F:"P",G:"Q",H:"R",I:"S",J:"T",K:"U",L:"V",M:"W",N:"X",O:"Y",P:"Z",Q:"a",R:"b",S:"c",T:"d",U:"e",V:"f",W:"g",X:"h",Y:"i",Z:"j",_:"k",a:"l",b:"m",c:"n",d:"o",e:"p",f:"q",g:"r",h:"s",i:"t",j:"u",k:"v",l:"w",m:"x",n:"y",o:"z",p:"0",q:"1",r:"2",s:"3",t:"4",u:"5",v:"6",w:"7",x:"8",y:"9",z:"+","|":"/"},at={};for(const e of Object.keys(it))at[it[e]]=e;var lt={ArrayBuffer:{replace:e=>({$t:"ArrayBuffer",v:ot(e)}),revive:({v:e})=>{const t=st(e);return t.buffer.byteLength===t.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}}};class ct{constructor(e,t){this.buf=e,this.type=t}}function ut(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 t.responseText}function dt(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;++n)t[n]=e.charCodeAt(n);return t.buffer}var ft={Blob:{test:(e,t)=>"Blob"===t||e instanceof ct,replace:e=>({$t:"Blob",v:ve(e instanceof ct?e.buf:dt(ut(e))),type:e.type}),revive:({type:e,v:t})=>{const n=he(t);return void 0!==typeof Blob?new Blob([n]):new ct(n.buffer,e)}}};const pt={...Ze,...Xe,...Qe,...et,...tt,...rt,...lt,...ft};function yt(e){return new Promise(((t,n)=>{const r=new FileReader;r.onabort=e=>n(new Error("file read aborted")),r.onerror=e=>n(e.target.error),r.onload=e=>t(e.target.result),r.readAsArrayBuffer(e)}))}var ht={undefined:{replace:()=>({$t:"undefined"}),revive:()=>{}}},vt={File:{test:(e,t)=>"File"===t,replace:e=>({$t:"File",v:ve(dt(ut(e))),type:e.type,name:e.name,lastModified:new Date(e.lastModified).toISOString()}),revive:({type:e,v:t,name:n,lastModified:r})=>{const o=he(t);return new File([o],n,{type:e,lastModified:new Date(r).getTime()})}}};const mt="function"==typeof BigInt&&"bigint"==typeof BigInt(0);class bt{toString(){return this.v}constructor(e){this.v=e}}const gt=mt?{}:{bigint:{test:e=>e instanceof bt,replace:e=>Object.assign({$t:"bigint"},e),revive:({v:e})=>new bt(e)}},_t=Object.assign(Object.assign(Object.assign(Object.assign({},ht),gt),vt),{PropModification:{test:e=>e instanceof t,replace:e=>Object.assign({$t:"PropModification"},e["@@propmod"]),revive:e=>{var n=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}(e,["$t"]);return new t(n)}}}),wt=Ge(pt,_t),kt=function(...e){const t=Ge(pt,Ye,...e);return{toBinary(e){const[t,n]=this.stringify(e),r=new ArrayBuffer(4);return new DataView(r).setUint32(0,t.size),new Blob([r,t,n])},stringify(e){const n=[],r=t.stringify(e,n),o=new Blob(n.map((e=>{const t=new ArrayBuffer(4);return new DataView(t).setUint32(0,"byteLength"in e?e.byteLength:e.size),new Blob([t,e])})));return[o,r]},async parse(e,n){let r=0;const o=[],s=await yt(n),i=new DataView(s);for(;r<s.byteLength;){const e=i.getUint32(r);r+=4;const t=s.slice(r,r+e);r+=e,o.push(t)}return t.parse(e,o)},async fromBinary(e){const t=new DataView(await yt(e.slice(0,4))).getUint32(0),n=e.slice(4,t+4),r=await function(e){return new Promise(((t,n)=>{const r=new FileReader;r.onabort=e=>n(new Error("file read aborted")),r.onerror=e=>n(e.target.error),r.onload=e=>t(e.target.result),r.readAsText(e)}))}(e.slice(t+4));return await this.parse(r,n)}}}(_t);function St(t,n,r){const o=[];for(let s of r){const{table:r,muts:i}=s,a=t.tables.find((e=>e.name===r));if(!a)throw new Error(`Internal error: table ${r} not found in DBCore schema`);const{primaryKey:l}=a;let c=s;i.forEach(((t,r)=>{const o=!l.outbound&&("upsert"===t.type||"insert"===t.type);t.keys.forEach(((t,i)=>{if(Array.isArray(t)){c===s&&(c=xt(s,o));const e=c.muts[r],n=JSON.stringify(t);e.keys[i]=n}else if("#"===t[0]){c===s&&(c=xt(s,o));const a=c.muts[r];if(!n.isLoggedIn)throw new Error("Internal error: Cannot sync private IDs before authenticated");const u=`${t}:${n.userId}`;a.keys[i]=u,o&&e.setByKeyPath(a.values[i],l.keyPath,u)}}))})),o.push(c)}return o}function xt(e,t){return Object.assign(Object.assign({},e),{muts:t?e.muts.map((e=>"insert"!==e.type&&"upsert"!==e.type||!e.values?Object.assign(Object.assign({},e),{keys:e.keys.slice()}):Object.assign(Object.assign({},e),{keys:e.keys.slice(),values:e.values.slice()}))):e.muts.map((e=>Object.assign(Object.assign({},e),{keys:e.keys.slice()})))})}let It=new WeakMap;function Et(e){return Y(this,void 0,void 0,(function*(){var t,n;const r=(null!==(n=null===(t=It.get(e))||void 0===t?void 0:t.getTime())&&void 0!==n?n:0)-Date.now();r>0&&(yield new Promise((e=>setTimeout(e,r))))}))}function Ot(e,t,n,r,o,s,i,a,l){return Y(this,void 0,void 0,(function*(){const c={Accept:"application/json, application/x-bison, application/x-bison-stream","Content-Type":"application/tson"},u=yield ke(o),d=null==u?void 0:u.accessToken;d&&(c.Authorization=`Bearer ${d}`);const f={v:2,dbID:null==n?void 0:n.remoteDbId,clientIdentity:a,schema:i||{},lastPull:n?{serverRevision:n.serverRevision,yServerRevision:n.yServerRevision,realms:n.realms,inviteRealms:n.inviteRealms}:void 0,baseRevs:r,changes:St(o.dx.core.schema,l,e),y:t,dxcv:o.cloud.version};o.syncStateChangedEvent.next({phase:"pushing"});const p=wt.stringify(f),y=yield fetch(`${s}/sync`,{method:"post",headers:c,credentials:"include",body:p});if(o.syncStateChangedEvent.next({phase:"pulling"}),function(e,t){const n=t.headers.get("Ratelimit-Limit"),r=t.headers.get("Ratelimit-Remaining"),o=t.headers.get("Ratelimit-Reset");if(n&&r&&o){const t=Number(n),s=Math.max(0,Number(r)),i=Number(o);if(s<t/2){const t=Math.ceil(i/(s+1));It.set(e,new Date(Date.now()+1e3*t))}else It.delete(e)}}(o,y),!y.ok)throw new Ue(y);if("application/x-bison"===y.headers.get("content-type"))return kt.fromBinary(yield y.blob());{const e=yield y.text();return wt.parse(e)}}))}function Ct(t){if(null==t?void 0:t.cancelled)throw new e.AbortError("Operation was cancelled")}let Tt=!1;function jt(e,t,n,r){return Y(this,void 0,void 0,(function*(){yield e.$baseRevs.bulkPut(Object.keys(t).filter((e=>t[e].markedForSync)).map((e=>({tableName:e,clientRev:(n[e]||0)+1,serverRev:r})))),yield e.$baseRevs.where("tableName").noneOf(Object.keys(t).filter((e=>t[e].markedForSync))).delete()}))}function Ut(e,t={}){for(const{table:n,muts:r}of e){const e=r.length>0?r[r.length-1].rev:null;t[n]=e||t[n]||0}return t}function At(t,r,o){return Y(this,void 0,void 0,(function*(){const s=yield t.bulkGet(r),i=[],a=[];r.forEach(((r,l)=>{const c=s[l];if(c){for(const[s,i]of Object.entries(o[l]))if(s===t.schema.primKey.keyPath){if(0!==n(i,r))throw new Error("Cannot change primary key")}else e.setByKeyPath(c,s,i);i.push(r),a.push(c)}})),yield null==t.schema.primKey.keyPath?t.bulkPut(a,i):t.bulkPut(a)}))}function Pt(t,n){return Y(this,void 0,void 0,(function*(){for(const{table:r,muts:o}of t){if(!n.dx._allTables[r])continue;const t=n.table(r),{primaryKey:s}=t.core.schema,i=e=>{switch(e[0]){case"[":if(e.endsWith("]"))try{return JSON.parse(e)}catch(e){}return e;case"#":return e.endsWith(":"+n.cloud.currentUserId)?e.substr(0,e.length-n.cloud.currentUserId.length-1):e;default:return e}};for(const n of o){const r=n.keys.map(i);switch(n.type){case"insert":s.outbound?yield t.bulkAdd(n.values,r):(r.forEach(((t,r)=>{e.setByKeyPath(n.values[r],s.keyPath,t)})),yield t.bulkAdd(n.values));break;case"upsert":s.outbound?yield t.bulkPut(n.values,r):(r.forEach(((t,r)=>{e.setByKeyPath(n.values[r],s.keyPath,t)})),yield t.bulkPut(n.values));break;case"modify":1===r.length?yield t.update(r[0],n.changeSpec):yield t.where(":id").anyOf(r).modify(n.changeSpec);break;case"update":yield At(t,r,n.changeSpecs);break;case"delete":yield t.bulkDelete(r)}}}}))}"undefined"!=typeof self&&"undefined"!=typeof navigator&&(Tt=navigator.onLine,self.addEventListener("online",(()=>Tt=!0)),self.addEventListener("offline",(()=>Tt=!1)));const $t="dexie-cloud-syncer";function Dt(e,t){return e.where("i").between(t,1/0,!0).toArray()}function Lt(e,t,n){var r,o,s;if(!e.dx._allTables[t])return;const i=null===(s=null===(o=null===(r=e.table(t))||void 0===r?void 0:r.schema.yProps)||void 0===o?void 0:o.find((e=>e.prop===n)))||void 0===s?void 0:s.updatesTable;return i&&e.dx._allTables[i]?e.table(i):void 0}function Rt(e,t){return Y(this,void 0,void 0,(function*(){var r;const o={};let s,i=!1;for(const a of e)try{switch(a.type){case"u-s":{const e=Lt(t,a.table,a.prop);if(e){const t={k:a.k,u:a.u};a.r&&(t.r=a.r,s=a.r),o[e.name]=yield e.add(t)}break}case"u-ack":{const e=Lt(t,a.table,a.prop);e&&(yield t.transaction("rw",e,(t=>Y(this,void 0,void 0,(function*(){let n=yield t.table(e.name).get($t);yield t.table(e.name).put(Object.assign(Object.assign({},n||{i:$t}),{unsentFrom:Math.max((null==n?void 0:n.unsentFrom)||1,a.i+1)}))})))));break}case"u-reject":{const e=Lt(t,a.table,a.prop);if(!e)break;const o=null===(r=yield e.get(a.i))||void 0===r?void 0:r.k;if(null!=o){yield t.transaction("rw",e,(t=>(t.idbtrans._rejecting_y_ypdate=!0,e.where("i").aboveOrEqual(a.i).filter((e=>0===n(e.k,o)&&1==(1&(e.f||0)))).delete())));const r=G.getDocCache(t.dx).find(a.table,o,a.prop);r&&r.destroy()}break}case"in-sync":{const e=G.getDocCache(t.dx).find(a.table,a.k,a.prop);e&&!e.isSynced&&e.emit("sync",[!0,e]);break}case"y-complete-sync-done":s=a.yServerRev;break;case"outdated-server-rev":i=!0}}catch(e){}return{receivedUntils:o,resyncNeeded:i,yServerRevision:s}}))}const Nt=1,Bt=2,Mt=3;function Ft(t,n,r){return Y(this,arguments,void 0,(function*(t,n,{yDownloadedRealms:r,realms:o}){if(r&&o&&o.every((e=>"*"===r[e])))return;const s=yield ke(t),i={"Content-Type":"application/json",Accept:"application/octet-stream"};s&&(i.Authorization=`Bearer ${s.accessToken}`);const a=yield fetch(`${n}/y/download`,{body:wt.stringify({downloadedRealms:r||{}}),method:"POST",headers:i,credentials:"include"});if(!a.ok)throw new Error(`Failed to download Yjs documents from server. Status: ${a.status}`);yield async function(e,...t){var n,r,o;let s=e();for(let e=0;e<t.length;e++)s=t[e](s);try{for(var i,a=!0,l=ee(s);!(n=(i=await l.next()).done);a=!0)i.value,a=!1}catch(e){r={error:e}}finally{try{a||n||!(o=l.return)||await o.call(l)}finally{if(r)throw r.error}}}(function(e){return function(){return Q(this,arguments,(function*(){if(!e.body)throw new Error("Response body is not readable");const t=e.body.getReader();try{for(;;){const{done:e,value:n}=yield X(t.read());if(e)return yield X(void 0);yield yield X(n)}}finally{t.releaseLock()}}))}}(a),ce,(function(r){return Q(this,arguments,(function*(){var o,s,i,a;let l=null,c=null,u=null,h=[];function b(e){return Y(this,void 0,void 0,(function*(){const r=h[h.length-1];if(h.length>0){if(!l||!c||!u)throw new Error(`Protocol error from ${n}/y/download`);const e=Lt(t,c,u);e&&(yield e.bulkAdd(h)),h=[]}l&&(c&&u&&r||e)&&(yield t.$syncState.update("syncState",(t=>{const n=t.yDownloadedRealms||{};n[l]=e?"*":{tbl:c,prop:u,key:r.k},t.yDownloadedRealms=n})))}))}try{try{for(var g,_=!0,w=ee(r);!(o=(g=yield X(w.next())).done);_=!0){a=g.value,_=!1;const e=new d(a);for(;v(e);)switch(m(e)){case Nt:yield X(b(!0)),l=f(e);break;case Bt:yield X(b(!1)),c=f(e),u=f(e);break;case Mt:{const t=p(e),n=y(e);h.push({k:t,u:n});break}}yield X(b(!1))}}catch(e){s={error:e}}finally{try{_||o||!(i=w.return)||(yield X(i.call(w)))}finally{if(s)throw s.error}}yield X(b(!0))}catch(t){throw t instanceof e.DexieError||(yield X(b(!1))),t}}))}))}))}const Wt="currentSyncWorker";function Kt(e,t,n,r){return Vt(e,t,n,r).then((t=>((null==r?void 0:r.justCheckIfNeeded)||e.syncStateChangedEvent.next({phase:"in-sync"}),t))).catch((o=>Y(this,void 0,void 0,(function*(){return(null==r?void 0:r.justCheckIfNeeded)?Promise.reject(o):Tt&&(null==r?void 0:r.retryImmediatelyOnFetchError)&&"TypeError"===(null==o?void 0:o.name)&&/fetch/.test(null==o?void 0:o.message)?(e.syncStateChangedEvent.next({phase:"error",error:o}),yield new Promise((e=>setTimeout(e,500))),yield Kt(e,t,n,Object.assign(Object.assign({},r),{retryImmediatelyOnFetchError:!1}))):(yield e.$syncState.update("syncState",{timestamp:new Date,error:""+o}),e.syncStateChangedEvent.next({phase:Tt?"error":"offline",error:new Error(""+(null==o?void 0:o.message)||o)}),Promise.reject(o))}))))}function Vt(e,t,n){return Y(this,arguments,void 0,(function*(e,t,n,{isInitialSync:r,cancelToken:o,justCheckIfNeeded:s,purpose:i}={isInitialSync:!1}){var a;if(!(null===(a=e.cloud.options)||void 0===a?void 0:a.databaseUrl))throw new Error("Internal error: sync must not be called when no databaseUrl is configured");const{databaseUrl:l}=t,c=yield e.getCurrentUser(),u=c.isLoggedIn?Me(e):[],d=u.map((t=>e.table(Fe(t.name)))),f=yield e.getPersistedSyncState(),p=c.isLoggedIn,y=p?function(e,t){const n=(null==t?void 0:t.syncedTables)||[];return Me(e).filter((e=>!n.includes(e.name)))}(e,f):[];Ct(o);const h=y.length>0;if(h){if(s)return!0;yield e.transaction("rw",y,(e=>Y(this,void 0,void 0,(function*(){e.idbtrans.disableChangeTracking=!0,e.idbtrans.disableAccessControl=!0,yield function(e,t,n){return Y(this,void 0,void 0,(function*(){const r=new Set(n||[]);for(const n of e)"members"===n.name?yield n.toCollection().modify((e=>{r.has(e.realmId)||e.userId&&e.userId!==Oe.userId||(e.userId=t.userId)})):"roles"===n.name||("realms"===n.name?yield n.toCollection().modify((e=>{r.has(e.realmId)||void 0!==e.owner&&e.owner!==Oe.userId||(e.owner=t.userId)})):yield n.toCollection().modify((e=>{e.realmId&&r.has(e.realmId)||(e.owner&&e.owner!==Oe.userId||(e.owner=t.userId),e.realmId&&e.realmId!==Oe.userId||(e.realmId=t.userId))})))}))}(y,c,null==f?void 0:f.realms)})))),Ct(o)}const[v,m,b,{yMessages:g,lastUpdateIds:_}]=yield e.transaction("r",e.tables,(()=>Y(this,void 0,void 0,(function*(){const t=yield e.getPersistedSyncState();let r=yield e.$baseRevs.toArray();r=r.filter((e=>u.some((t=>t.name===e.tableName))));let s=yield He(d,e);const i=yield function(e,t){return Y(this,void 0,void 0,(function*(){const n=[],r={};for(const o of t)if(o.schema.yProps)for(const t of o.schema.yProps){const s=e.table(t.updatesTable),i=yield s.get($t),a=(null==i?void 0:i.unsentFrom)||1,l=(null==i?void 0:i.receivedUntil)||0,c=Math.min(a,l+1),u=yield Dt(s,c);u.length>0&&(r[s.name]=u[u.length-1].i);const d={};for(const e of u){const t=1==(1&(e.f||0));if(t&&e.i<a)continue;const n=JSON.stringify(e.k)+"/"+t;let r=d[n];r?(r.u.push(e.u),r.i=Math.max(e.i,r.i)):(d[n]=r={i:e.i,k:e.k,isLocal:t,u:[]},r.u.push(e.u))}for(const{k:e,isLocal:r,u:s,i:i}of Object.values(d)){const a=1===s.length?s[0]:J.mergeUpdatesV2(s);if(r)n.push({type:"u-c",table:o.name,prop:t.prop,k:e,u:a,i:i});else{const r=J.encodeStateVectorFromUpdateV2(a);n.push({type:"sv",table:o.name,prop:t.prop,k:e,sv:r})}}}return{yMessages:n,lastUpdateIds:r}}))}(e,u);if(Ct(o),h){const e=[...(null==f?void 0:f.realms)||[],...(null==f?void 0:f.inviteRealms)||[]],a=yield function(e,t,n,r){return Y(this,void 0,void 0,(function*(){const o=`upload-${qe(8)}`;if(t.isLoggedIn&&e.length>0){const s=new Set(r||[]);return(yield Promise.all(e.map((e=>Y(this,void 0,void 0,(function*(){const{extractKey:r}=e.core.schema.primaryKey;if(!r)return{table:e.name,muts:[]};const i=n[e.name],a=(null==i?void 0:i.generatedGlobalId)?e.filter((e=>{return r(e),!s.has(e.realmId||"")&&(t=r(e),!(n=null==i?void 0:i.idPrefix)||"string"==typeof t&&t.startsWith(n));var t,n})):e.filter((e=>{const t=r(e);return!s.has(e.realmId||"")&&se(t)})),l=yield a.toArray();if(l.length>0){const n={type:"upsert",values:l,keys:l.map(r),userId:t.userId,txid:o};return{table:e.name,muts:[n]}}return{table:e.name,muts:[]}})))))).filter((e=>e.muts.length>0))}return[]}))}(y,c,n,e);return Ct(o),s=s.concat(a),[s,t,r,i]}return[s,t,r,i]})))),w=v.some((e=>e.muts.some((e=>e.keys.length>0))))||g.some((e=>"u-c"===e.type));if(s)return w;if("push"===i&&!w)return!1;const k=Ut(v,null==m?void 0:m.latestRevisions),S=(null==m?void 0:m.clientIdentity)||re(16);Ct(o);const x=yield Ot(v,g,m,b,e,l,n,S,c),{done:I,newSyncState:E}=yield e.transaction("rw",e.tables,(t=>Y(this,void 0,void 0,(function*(){t.idbtrans.disableChangeTracking=!0,t.idbtrans.disableAccessControl=!0;for(const e of Object.keys(n))x.schema[e]&&(n[e]=x.schema[e]);yield e.$syncState.put(n,"schema");const r=yield He(d,e,{since:k});for(const t of d){const n=We(t.name);if(r.some((e=>e.table===n&&e.muts.length>0))){if(k[n]){const r=k[n]||0;yield Promise.all([t.where("rev").belowOrEqual(r).delete(),e.$baseRevs.where(":id").between([n,-1/0],[n,r+1],!0,!0).reverse().offset(1).delete()])}}else yield Promise.all([t.clear(),e.$baseRevs.where({tableName:n}).delete()])}Ut(r,k),yield jt(e,n,k,x.serverRevision);const o=yield e.getPersistedSyncState();yield function(e,t,n){return Y(this,void 0,void 0,(function*(){const r=new Set,o=new Set,s=n?n.realms:[],i=n?n.inviteRealms:[],a=new Set(t.realms),l=new Set(t.realms.concat(t.inviteRealms));for(const e of s)a.has(e)||(o.add(e),l.has(e)||r.add(e));for(const e of i.concat(s))l.has(e)||r.add(e);if(r.size>0||o.size>0){const t=Me(e);for(const e of t){let t=["realms","members","roles"].includes(e.name)?r:o;0!==t.size&&(e.schema.indexes.some((e=>"realmId"===e.keyPath||Array.isArray(e.keyPath)&&"realmId"===e.keyPath[0]))?yield e.where("realmId").anyOf([...t]).delete():yield e.filter((e=>!!(null==e?void 0:e.realmId)&&t.has(e.realmId))).delete())}}if(o.size>0&&(null==n?void 0:n.yDownloadedRealms))for(const e of o)delete n.yDownloadedRealms[e]}))}(e,x,o);const s=o||{syncedTables:[],latestRevisions:{},realms:[],inviteRealms:[],clientIdentity:S};p&&(s.syncedTables=u.map((e=>e.name)).concat(y.map((e=>e.name)))),s.latestRevisions=k,s.remoteDbId=x.dbId,s.initiallySynced=!0,s.realms=x.realms,s.inviteRealms=x.inviteRealms,s.serverRevision=x.serverRevision,s.yServerRevision=x.serverRevision,s.timestamp=new Date,delete s.error;const i=Ht(x.changes,r);if(yield Pt(i,e),x.yMessages){const{receivedUntils:t,resyncNeeded:n,yServerRevision:r}=yield Rt(x.yMessages,e);r&&(s.yServerRevision=r),yield function(e,t,n){return Y(this,void 0,void 0,(function*(){var r,o,s,i,a;const l={};for(const[t,n]of Object.entries(e))null!==(r=l[t])&&void 0!==r||(l[t]={}),l[t].unsentFrom=n+1;for(const[e,n]of Object.entries(t))null!==(o=l[e])&&void 0!==o||(l[e]={}),l[e].receivedUntil=n;const c=Object.values(n.dx._dbSchema).filter((e=>e.yProps)).map((e=>e.yProps.map((e=>e.updatesTable)))).flat();for(const e of c){const t=l[e],r=null!==(s=null==t?void 0:t.unsentFrom)&&void 0!==s?s:1,o=null!==(a=null!==(i=null==t?void 0:t.receivedUntil)&&void 0!==i?i:(yield n.table(e).where("i").between(1,1/0).reverse().limit(1).primaryKeys())[0])&&void 0!==a?a:0;yield n.transaction("rw",e,(()=>Y(this,void 0,void 0,(function*(){const t=yield n.table(e).get($t);t?(t.unsentFrom=Math.max(r,t.unsentFrom||1),t.receivedUntil=Math.max(o,t.receivedUntil||0),yield n.table(e).put(t)):yield n.table(e).add({i:$t,unsentFrom:r,receivedUntil:o})}))))}}))}(_,t,e),n&&(s.yDownloadedRealms={})}return e.$syncState.put(s,"syncState"),{done:0===r.length,newSyncState:s}}))));if(!I)return yield Et(e),yield Vt(e,t,n,{isInitialSync:r,cancelToken:o});const O=Object.values(n).some((e=>{var t;return null===(t=e.yProps)||void 0===t?void 0:t.length})),C=!!x.yMessages;if(O&&C)try{yield Ft(e,l,E)}catch(e){}return e.syncCompleteEvent.next(),!1}))}function Ht(e,t){const n={};le(n,e);const r={};return le(r,t),function(e,t){var n,r,o;for(const[s,i]of Object.entries(t))for(const[t,a]of Object.entries(i))switch(a.type){case"ups":{const r=null===(n=e[s])||void 0===n?void 0:n[t];if(r)switch(r.type){case"ups":case"upd":delete e[s][t]}}break;case"del":null===(r=e[s])||void 0===r||delete r[t];break;case"upd":{const n=null===(o=e[s])||void 0===o?void 0:o[t];if(n)switch(n.type){case"ups":for(const[e,t]of Object.entries(a.mod))ne(n.val,e,t);break;case"del":break;case"upd":for(const e of Object.keys(a.mod))delete n.mod[e]}break}}}(n,r),function(e,t=""){t||(t=re(16));const n={};for(const[t,r]of Object.entries(e))for(const[e,o]of Object.entries(r)){const r=n[t]||(n[t]={});(r[o.type]||(r[o.type]=[])).push(Object.assign({key:e},o))}const r=[];for(const[e,o]of Object.entries(n)){const n={table:e,muts:[]};for(const[e,r]of Object.entries(o))switch(e){case"ups":{const e={type:"upsert",keys:r.map((e=>e.key)),values:r.map((e=>e.val)),txid:t};n.muts.push(e);break}case"upd":{const e={type:"update",keys:r.map((e=>e.key)),changeSpecs:r.map((e=>e.mod)),txid:t};n.muts.push(e);break}case"del":{const e={type:"delete",keys:r.map((e=>e.key)),txid:t};n.muts.push(e);break}}r.push(n)}return r}(n)}const qt=10,zt=1e4,Jt=1e3;function Gt(t){const n=[],r=new k(!0),o=new k(null);let s=!1,i=new Array(qt).fill(0);return o.subscribe((()=>Y(this,void 0,void 0,(function*(){if(!s&&n.length>0){s=!0,i.shift(),i.push(Date.now()),r.next(!1);try{yield function(){return Y(this,void 0,void 0,(function*(){for(var r,o,s,i,a,l;n.length>0;){const c=n.shift();try{yield b(t.cloud.syncState.pipe(R((({phase:e})=>"in-sync"===e||"error"===e))));const n=t.cloud.persistedSyncState.value;if(!c)continue;switch(c.type){case"token-expired":const u=t.cloud.currentUser.value,d=yield xe(t.cloud.options.databaseUrl,u);yield t.table("$logins").update(u.userId,{accessToken:d.accessToken,accessTokenExpiration:d.accessTokenExpiration,claims:d.claims,license:d.license,data:d.data});break;case"realm-added":(null===(r=null==n?void 0:n.realms)||void 0===r?void 0:r.includes(c.realm))||(null===(o=null==n?void 0:n.inviteRealms)||void 0===o?void 0:o.includes(c.realm))||(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realm-accepted":(null===(s=null==n?void 0:n.realms)||void 0===s?void 0:s.includes(c.realm))||(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realm-removed":((null===(i=null==n?void 0:n.realms)||void 0===i?void 0:i.includes(c.realm))||(null===(a=null==n?void 0:n.inviteRealms)||void 0===a?void 0:a.includes(c.realm)))&&(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realms-changed":yield t.cloud.sync({purpose:"pull",wait:!0});break;case"changes":if("error"===(null===(l=t.cloud.syncState.value)||void 0===l?void 0:l.phase)){fe(t,"pull");break}yield t.transaction("rw",t.dx.tables,(n=>Y(this,void 0,void 0,(function*(){n.idbtrans.disableChangeTracking=!0,n.idbtrans.disableAccessControl=!0;const[r,o,s]=yield Promise.all([t.getSchema(),t.getPersistedSyncState(),t.getCurrentUser()]);if(!o||!r||!s)return;if(c.baseRev!==o.serverRevision)return void("string"!=typeof c.baseRev||"bigint"!=typeof o.serverRevision&&"object"!=typeof o.serverRevision||fe(t,"pull"));if((yield e.waitFor(Be(o)))!==c.realmSetHash)return void fe(t,"pull");let i=[];if(s.isLoggedIn){const e=Me(t).map((e=>t.table(Fe(e.name))));i=yield He(e,t)}if(c.changes.length>0){const e=Ht(c.changes,i);yield Pt(e,t)}o.latestRevisions=Ut(i,o.latestRevisions),o.serverRevision=c.newRev,yield jt(t,r,o.latestRevisions,c.newRev),yield t.$syncState.put(o,"syncState")}))))}}catch(e){}}}))}()}finally{i[i.length-1]-i[0]<zt&&(yield new Promise((e=>setTimeout(e,Jt)))),s=!1,r.next(!0)}}})))),{enqueue:function(e){n.push(e),o.next(null)},readyToServe:r}}const Yt=new WeakMap,Zt={members:"@id, [userId+realmId], [email+realmId], realmId",roles:"[realmId+name]",realms:"@realmId",$jobs:"",$syncState:"",$baseRevs:"[tableName+clientRev]",$logins:"claims.sub, lastLogin"};let Xt=0;function Qt(e){"vip"in e&&(e=e.vip);let t=Yt.get(e.cloud);if(!t){const n=new S;let r=new Ne(`syncstatechanged-${e.name}`),o=new Ne(`synccomplete-${e.name}`);n.id=++Xt;let s=!1;t={get name(){return e.name},close:()=>e.close(),transaction:e.transaction.bind(e),table:e.table.bind(e),get tables(){return e.tables},cloud:e.cloud,get $jobs(){return e.table("$jobs")},get $syncState(){return e.table("$syncState")},get $baseRevs(){return e.table("$baseRevs")},get $logins(){return e.table("$logins")},get realms(){return e.realms},get members(){return e.members},get roles(){return e.roles},get initiallySynced(){return s},localSyncEvent:n,get syncStateChangedEvent(){return r},get syncCompleteEvent(){return o},dx:e};const i={getCurrentUser:()=>t.$logins.toArray().then((e=>e.find((e=>e.isLoggedIn))||Oe)),getPersistedSyncState:()=>t.$syncState.get("syncState"),getSchema:()=>t.$syncState.get("schema").then((e=>{if(e)for(const r of t.tables)r.schema.primKey&&r.schema.primKey.keyPath&&e[r.name]&&(e[r.name].primaryKey="string"==typeof(n=r.schema.primKey.keyPath)?n:n?"["+[].join.call(n,"+")+"]":"");var n;return e})),getOptions:()=>t.$syncState.get("options"),setInitiallySynced(e){s=e},reconfigure(){r=new Ne(`syncstatechanged-${e.name}`),o=new Ne(`synccomplete-${e.name}`)}};Object.assign(t,i),t.messageConsumer=Gt(t),t.messageProducer=new S,Yt.set(e.cloud,t)}return t}const en="undefined"!=typeof InstallTrigger,tn="undefined"!=typeof navigator&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\/|Edge\//.test(navigator.userAgent),nn=tn?[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]:NaN,rn=tn&&nn<=605||en,on="undefined"!=typeof self&&"clients"in self&&!self.document;const{toString:sn}={};function an(e){return sn.call(e).slice(8,-1)}function ln(e,t){var n;return"delete"===t.type?t.keys:(null===(n=t.keys)||void 0===n?void 0:n.slice())||t.values.map(e.extractKey)}const cn=/b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|x|y|z/i;let un=0;function dn(e,t){const n=new Uint8Array(18),r=new Uint8Array(n.buffer,0,6),o=Date.now();un>=o?++un:un=o,r[0]=un/1099511627776,r[1]=un/4294967296,r[2]=un/16777216,r[3]=un/65536,r[4]=un/256,r[5]=un;const s=new Uint8Array(n.buffer,6);crypto.getRandomValues(s);return e+ot(new Uint8Array(n.buffer))+(t||"")}function fn(t){return{stack:"dbcore",name:"idGenerationMiddleware",level:1,create:n=>Object.assign(Object.assign({},n),{table:r=>{const o=n.table(r);return Object.assign(Object.assign({},o),{mutate:n=>{var s,i;const a=n.trans;if("versionchange"===a.mode&&(a.disableChangeTracking=!0,a.disableAccessControl=!0),a.disableChangeTracking)return o.mutate(n);if("add"===n.type||"put"===n.type){const a=null===(s=t.cloud.schema)||void 0===s?void 0:s[r];if(null==a?void 0:a.generatedGlobalId){if((null===(i=t.cloud.options)||void 0===i?void 0:i.databaseUrl)&&!t.initiallySynced){const e=ln(o.schema.primaryKey,n);return o.getMany({keys:e,trans:n.trans,cache:"immutable"}).then((t=>{if(t.length<e.length)throw new Error("Unable to create new objects without an initial sync having been performed.");return o.mutate(n)}))}return function(n,s){let i=null;const a=ln(o.schema.primaryKey,n);return a.forEach(((l,c)=>{if(void 0===l){const r=n.values[c].realmId||t.cloud.currentUserId,l=r.substr(r.length-3);a[c]=dn(s,l),o.schema.primaryKey.outbound||(i||(i=n.values.slice()),i[c]=e.deepClone(i[c]),e.setByKeyPath(i[c],o.schema.primaryKey.keyPath,a[c]))}else if("string"!=typeof l||!l.startsWith(s)&&!l.startsWith("#"+s))throw new e.ConstraintError(`The ID "${l}" is not valid for table "${r}". Primary '@' keys requires the key to be prefixed with "${s}" (or "#${s}).\nIf you want to generate IDs programmatically, remove '@' from the schema to get rid of this constraint. Dexie Cloud supports custom IDs as long as they are random and globally unique.`)})),o.mutate(Object.assign(Object.assign({},n),{keys:a,values:i||n.values}))}(n,a.idPrefix)}if(null==a?void 0:a.markedForSync){ln(o.schema.primaryKey,n).forEach(((t,n)=>{if(!se(t)){const n=Array.isArray(t)?t.map(an).join(","):an(t);throw new e.ConstraintError(`Invalid primary key type ${n} for table ${r}. Tables marked for sync has primary keys of type string or Array of string (and optional numbers)`)}}))}}return o.mutate(n)}})}})}}let pn=0;function yn(e,t){return function(n){const{readers:r,writers:o}=n.trans[t]||(n.trans[t]={writers:[],readers:[]}),s=o.length,i=(s>0?o[s-1].then((()=>e(n)),(()=>e(n))):e(n)).finally((()=>{r.splice(r.indexOf(i))}));return r.push(i),i}}function hn(e,t){return function(n){const{readers:r,writers:o}=n.trans[t]||(n.trans[t]={writers:[],readers:[]});let s=(o.length>0?o[o.length-1].then((()=>e(n)),(()=>e(n))):r.length>0?(i=r,new Promise((e=>{0===i.length&&e([]);let t=i.length;const n=new Array(t);i.forEach(((r,o)=>Promise.resolve(r).then((e=>n[o]={status:"fulfilled",value:e}),(e=>n[o]={status:"rejected",reason:e})).then((()=>--t||e(n)))))}))).then((()=>e(n))):e(n)).finally((()=>{o.shift()}));var i;return o.push(s),s}}const vn=new k(new Set);function mn(e){var t,n,r,o;return(null===(t=e.cloud.options)||void 0===t?void 0:t.disableEagerSync)||"ok"!==(null===(r=null===(n=e.cloud.currentUser.value)||void 0===n?void 0:n.license)||void 0===r?void 0:r.status)||!(null===(o=e.cloud.options)||void 0===o?void 0:o.databaseUrl)}function bn({currentUserObservable:e,db:t}){return{stack:"dbcore",name:"MutationTrackingMiddleware",level:1,create:n=>{const o=new Set(n.schema.tables.map((e=>e.name))),s=n.schema.tables.filter((e=>!/^\$/.test(e.name))),i=new Map;for(const e of s){const t=`$${e.name}_mutations`;o.has(t)&&i.set(e.name,n.table(t))}return Object.assign(Object.assign({},n),{transaction:(r,o)=>{let s;if("readwrite"===o){const e=r.filter((e=>{var n,r;return null===(r=null===(n=t.cloud.schema)||void 0===n?void 0:n[e])||void 0===r?void 0:r.markedForSync})).map((e=>Fe(e)));s=n.transaction([...r,...e],o)}else s=n.transaction(r,o);if("readwrite"===o){s.txid=qe(16),s.opCount=0,s.currentUser=e.value,vn.value.add(s),vn.next(vn.value);const n=()=>{s.removeEventListener("complete",r),s.removeEventListener("error",n),s.removeEventListener("abort",n),vn.value.delete(s),vn.next(vn.value)},r=()=>{s.mutationsAdded&&!mn(t)&&fe(t,"push"),n()};s.addEventListener("complete",r),s.addEventListener("error",n),s.addEventListener("abort",n)}return s},table:e=>{const o=n.table(e);if(/^\$/.test(e))return e.endsWith("_mutations")?Object.assign(Object.assign({},o),{mutate:e=>("add"!==e.type&&"put"!==e.type||(e.trans.mutationsAdded=!0),o.mutate(e))}):"$logins"===e?Object.assign(Object.assign({},o),{mutate:e=>o.mutate(e).then((t=>(e.trans.mutationsAdded=!0,t))).catch((e=>Promise.reject(e)))}):o;const{schema:s}=o,a=i.get(e);return a?function(e){const t="$lock"+ ++pn;return Object.assign(Object.assign({},e),{count:yn(e.count,t),get:yn(e.get,t),getMany:yn(e.getMany,t),openCursor:yn(e.openCursor,t),query:yn(e.query,t),mutate:hn(e.mutate,t)})}(Object.assign(Object.assign({},o),{mutate:n=>{var r,i,a;const c=n.trans;return c.txid?c.disableChangeTracking?o.mutate(n):(null===(i=null===(r=t.cloud.schema)||void 0===r?void 0:r[e])||void 0===i?void 0:i.markedForSync)&&(null===(a=c.currentUser)||void 0===a?void 0:a.isLoggedIn)?"deleteRange"===n.type?o.query({query:{range:n.range,index:s.primaryKey},trans:n.trans,values:!1}).then((e=>l({type:"delete",keys:e.result,trans:n.trans,criteria:{index:null,range:n.range}}))):l(n):o.mutate(n):o.mutate(n)}})):o;function l(n){var i,l;const c=n.trans,u=null===(l=null===(i=t.cloud.options)||void 0===i?void 0:i.unsyncedProperties)||void 0===l?void 0:l[e],{txid:d,currentUser:{userId:f}}=c,{type:p}=n,y=++c.opCount;function h(e){if(!u)return e;let t=e;for(const n of Object.keys(e))u.some((e=>n===e||n.startsWith(e+".")))&&(t===e&&(t=Object.assign({},e)),delete t[n]);return t}return o.mutate(n).then((e=>{var t;const{numFailures:o,failures:i}=e;let l="delete"===p?n.keys:e.results,v="values"in n?n.values:[],m="changeSpec"in n?n.changeSpec:void 0,b="updates"in n?n.updates:void 0;if(o&&(l=l.filter(((e,t)=>!i[t])),v=v.filter(((e,t)=>!i[t]))),u){if(v=v.map((e=>{const t=Object.assign({},e);for(const e of u)delete t[e];return t})),m&&(m=h(m),0===Object.keys(m).length))return e;if(b){let e=b.changeSpecs.map(h),t={keys:[],changeSpecs:[]};const n=new r;let o=!1;for(let r=0,s=e.length;r<s;++r)Object.keys(e[r]).length>0?(t.keys.push(b.keys[r]),t.changeSpecs.push(e[r]),n.addKey(b.keys[r])):o=!0;if(b=t,o){let e=[],t=[];for(let r=0,o=l.length;r<o;++r)n.hasKey(l[r])&&(e.push(l[r]),t.push(v[r]));l=e,v=t}}}const g=Date.now();let _="criteria"in n&&n.criteria?Object.assign(Object.assign({},n.criteria),{index:n.criteria.index===s.primaryKey.keyPath?null:n.criteria.index}):void 0;if(u&&(null==_?void 0:_.index)){const e=null===(t=s.indexes.find((e=>e.name===_.index)))||void 0===t?void 0:t.keyPath;(e?"string"==typeof e?[e]:e:[]).some((e=>null==u?void 0:u.includes(e)))&&(_=void 0)}const w="delete"===n.type?{type:"delete",ts:g,opNo:y,keys:l,criteria:_,txid:d,userId:f}:"add"===n.type?{type:"insert",ts:g,opNo:y,keys:l,txid:d,userId:f,values:v}:_&&m?{type:"modify",ts:g,opNo:y,keys:l,criteria:_,changeSpec:m,txid:d,userId:f}:m?{type:"update",ts:g,opNo:y,keys:l,changeSpecs:l.map((()=>m)),txid:d,userId:f}:b?{type:"update",ts:g,opNo:y,keys:b.keys,changeSpecs:b.changeSpecs,txid:d,userId:f}:{type:"upsert",ts:g,opNo:y,keys:l,values:v,txid:d,userId:f};return"isAdditionalChunk"in n&&n.isAdditionalChunk&&(w.isAdditionalChunk=!0),l.length>0||_?a.mutate({type:"add",trans:c,values:[w]}).then((()=>(c.mutationsAdded=!0,e))):e}))}}})}}}function gn(e,t){return function(n,r){var o;const s=Object.assign(Object.assign({},Zt),n);Object.keys(Zt).forEach((e=>{const t=s[e];if(null==t)throw new Error(`Cannot delete table ${e} as it is needed for access control of Dexie Cloud`);if(!n[e])return;const r=t.split(",").map((e=>e.trim())),o=Zt[e].split(",").map((e=>e.trim())),i=new Set(r.map((e=>e.replace(/([&*]|\+\+)/g,""))));if(r[0]!==o[0])throw new Error(`Cannot override primary key of table ${e}. Please declare it as {${e}: ${JSON.stringify(Zt[e])}`);for(let t=1;t<o.length;++t){const n=o[t];i.has(n.replace(/([&*]|\+\+)/g,""))||(s[e]+=`,${n}`)}}));const i=t.cloud.schema||(t.cloud.schema={}),a=new Set;Object.keys(s).forEach((e=>{const t=s[e],n=i[e]||(i[e]={});null!=t?(/^\@/.test(t)&&(s[e]=s[e].substr(1),n.generatedGlobalId=!0,n.idPrefix=function(e,t){let n=e[0].toLocaleLowerCase();for(let t=1,o=e.length;t<o&&n.length<3;++t)(cn.test(e[t])||(r=e[t])>="A"&&r<="Z")&&(n+=e[t].toLowerCase());for(var r,o,s;t.has(n);){if(/\d/g.test(n)){if(n=n.substr(0,n.length-1)+(n[n.length-1]+1),!(n.length>3))continue;n=n.substr(0,3)}else if(n.length<3){n+="2";continue}let e=1,r=n;for(;t.has(r)&&e<8;)o=n,r=(1&(s=e)?o[0].toUpperCase():o[0].toLowerCase())+(2&s?o[1].toUpperCase():o[1].toLowerCase())+(4&s?o[2].toUpperCase():o[2].toLowerCase()),++e;if(e<8)n=r;else{let e=n.charCodeAt(2)+1&127;n=n.substr(0,2)+String.fromCharCode(e)}}return n}(e,a),a.add(n.idPrefix)),/^\$/.test(e)||(s[`$${e}_mutations`]="++rev",n.markedForSync=!0),n.deleted&&(n.deleted=!1)):(n.deleted=!0,n.markedForSync=!1,s[`$${e}_mutations`]=null)}));const l=e.call(this,s,r);for(const[e,t]of Object.entries(r))if(null===(o=t.yProps)||void 0===o?void 0:o.length){const n=i[e];n&&(n.yProps=t.yProps.map((e=>e.prop)))}return l}}function _n(e,t,n){return"undefined"!=typeof navigator&&navigator.locks?navigator.locks.request(e.name+"|"+t,(()=>n())):n()}const wn=new k(!0),kn=new k(!0);wn.pipe(N((e=>e?x(!0):x(!1).pipe(B(2e4)))),M()).subscribe(kn);const Sn="undefined"!=typeof document?I(document,"visibilitychange"):x({}),xn=Sn.pipe(R((()=>"hidden"===document.visibilityState))),In=Sn.pipe(R((()=>"visible"===document.visibilityState))),En="undefined"!=typeof window?E(In,I(window,"mousedown"),I(window,"mousemove"),I(window,"keydown"),I(window,"wheel"),I(window,"touchmove")):x({});"undefined"!=typeof document&&E(x(!0),xn,En).pipe(F((()=>"visible"===document.visibilityState)),W((e=>{wn.value!==e&&wn.next(e)})),N((e=>e?x(0).pipe(B(16e4),W((()=>wn.next(!1)))):x(0)))).subscribe((()=>{}));class On extends Error{constructor(){super(...arguments),this.name="TokenExpiredError"}}function Cn(t){var n,r;if(!(null===(n=t.cloud.options)||void 0===n?void 0:n.awarenessProtocol))throw new e.MissingAPIError('awarenessProtocol was not provided to db.cloud.configure(). Please import * as awarenessProtocol from "y-protocols/awareness".');return null===(r=t.cloud.options)||void 0===r?void 0:r.awarenessProtocol}const Tn=new WeakMap,jn=new WeakMap;function Un(e){let t=jn.get(e);return t||(t=new S,jn.set(e,t)),t}class An extends w{constructor(e,t,n,r,o,s,i,a){super((l=>new $n(e,t,n,r,o,a,l,s,i)))}}let Pn=0;class $n extends j{constructor(e,t,n,r,o,s,i,a,l){super((()=>this.teardown())),this.id=++Pn,this.subscriptions=new Set,this.reconnecting=!1,this.db=e,this.databaseUrl=e.cloud.options.databaseUrl,this.rev=t,this.yrev=n,this.realmSetHash=r,this.clientIdentity=o,this.user=s,this.subscriber=i,this.lastUserActivity=new Date,this.messageProducer=a,this.webSocketStatus=l,this.connect()}teardown(){this.disconnect()}disconnect(){if(this.webSocketStatus.next("disconnected"),this.pinger&&(clearInterval(this.pinger),this.pinger=null),this.ws)try{this.ws.close()}catch(e){}this.ws=null;for(const e of this.subscriptions)e.unsubscribe();this.subscriptions.clear()}reconnect(){if(!this.reconnecting){this.reconnecting=!0;try{this.disconnect()}catch(e){}this.connect().catch((()=>{})).then((()=>this.reconnecting=!1))}}connect(){return Y(this,void 0,void 0,(function*(){if(this.lastServerActivity=new Date,this.pauseUntil&&this.pauseUntil>new Date)return;if(this.ws)throw new Error("Called connect() when a connection is already open");if(!this.databaseUrl)throw new Error("Cannot connect without a database URL");if(this.closed)return;const e=this.user.accessTokenExpiration;if(e&&e<new Date)return void this.subscriber.error(new On);this.webSocketStatus.next("connecting"),this.pinger=setInterval((()=>Y(this,void 0,void 0,(function*(){if(this.closed)this.teardown();else if(this.ws)try{this.ws.send(JSON.stringify({type:"ping"})),setTimeout((()=>{this.pinger&&(this.closed?this.teardown():this.lastServerActivity<new Date(Date.now()-2e4)&&this.reconnect())}),2e4)}catch(e){this.reconnect()}else this.reconnect()}))),3e4);const t=new URL(this.databaseUrl);t.protocol="http:"===t.protocol?"ws":"wss";const n=new URLSearchParams;if(this.subscriber.closed)return;n.set("v","2"),this.rev&&n.set("rev",this.rev),this.yrev&&n.set("yrev",this.yrev),n.set("realmsHash",this.realmSetHash),n.set("clientId",this.clientIdentity),n.set("dxcv",this.db.cloud.version),this.user.accessToken&&n.set("token",this.user.accessToken);const r=this.ws=new WebSocket(`${t}/changes?${n}`);r.binaryType="arraybuffer",r.onclose=e=>{this.pinger&&this.reconnect()},r.onmessage=e=>{if(this.pinger){this.lastServerActivity=new Date;try{const t="string"==typeof e.data?wt.parse(e.data):function(e){const t=new d(e),n=f(t);if("outdated-server-rev"===n)return{type:n};if("y-complete-sync-done"===n)return{type:n,yServerRev:f(t)};const r=f(t),o=f(t);switch(n){case"u-ack":case"u-reject":return{type:n,table:r,prop:o,i:Number(h(t))};default:{const e=p(t);switch(n){case"in-sync":case"doc-close":return{type:n,table:r,prop:o,k:e};case"aware":return{type:n,table:r,prop:o,k:e,u:y(t)};case"doc-open":return{type:n,table:r,prop:o,k:e,serverRev:p(t),sv:p(t)};case"sv":return{type:n,table:r,prop:o,k:e,sv:y(t)};case"u-c":return{type:n,table:r,prop:o,k:e,u:y(t),i:Number(h(t))};case"u-s":return{type:n,table:r,prop:o,k:e,u:y(t),r:t.pos<t.arr.length&&f(t)||void 0};default:throw new TypeError(`Unknown message type: ${n}`)}}}}(new Uint8Array(e.data));if("error"===t.type)throw new Error(`Error message from dexie-cloud: ${t.error}`);if("aware"===t.type){const e=G.getDocCache(this.db.dx).find(t.table,t.k,t.prop);if(e){const n=(e=>Tn.get(e))(e);if(n){Cn(this.db).applyAwarenessUpdate(n,t.u,"server")}}}else if("pong"===t.type);else if("doc-open"===t.type){const e=G.getDocCache(this.db.dx).find(t.table,t.k,t.prop);e&&Un(e).next()}else"u-ack"===t.type||"u-reject"===t.type||"u-s"===t.type||"in-sync"===t.type||"outdated-server-rev"===t.type||"y-complete-sync-done"===t.type?Rt([t],this.db).then((e=>Y(this,[e],void 0,(function*({resyncNeeded:e,yServerRevision:n,receivedUntils:r}){if(n&&(yield this.db.$syncState.update("syncState",{yServerRevision:n})),"u-s"===t.type&&r){const e=Lt(this.db,t.table,t.prop);if(e){const t=r[e.name];t&&(yield e.update($t,{receivedUntil:t}))}}e&&(yield this.db.cloud.sync({purpose:"pull",wait:!0}))})))):this.subscriber.next(t)}catch(e){this.subscriber.error(e)}}};try{let e=!1;yield new Promise(((t,n)=>{r.onopen=n=>{e=!0,t(null)},r.onerror=t=>{if(e)this.reconnect();else{const e=t.error||new Error("WebSocket Error");this.subscriber.error(e),this.webSocketStatus.next("error"),n(e)}}})),this.subscriptions.add(this.messageProducer.subscribe((e=>{var t,n;this.closed||("ready"===e.type&&"connected"!==this.webSocketStatus.value&&this.webSocketStatus.next("connected"),"ready"===e.type?(this.rev=e.rev,null===(t=this.ws)||void 0===t||t.send(wt.stringify(e))):null===(n=this.ws)||void 0===n||n.send(function(e){const t=new s;switch(i(t,e.type),"table"in e&&i(t,e.table),"prop"in e&&i(t,e.prop),e.type){case"u-ack":case"u-reject":c(t,BigInt(e.i));break;case"outdated-server-rev":break;case"y-complete-sync-done":i(t,e.yServerRev);break;default:switch(a(t,e.k),e.type){case"aware":l(t,e.u);break;case"doc-open":a(t,e.serverRev),a(t,e.sv);break;case"doc-close":break;case"sv":l(t,e.sv);break;case"u-c":l(t,e.u),c(t,BigInt(e.i));break;case"u-s":l(t,e.u),i(t,e.r||"")}}return u(t)}(e)))}))),this.user.isLoggedIn&&!mn(this.db)&&this.subscriptions.add(function(e){const t=Ve(e.tables.filter((t=>{var n,r;return(null===(r=null===(n=e.cloud.schema)||void 0===n?void 0:n[t.name])||void 0===r?void 0:r.markedForSync)&&t.schema.yProps})).map((e=>e.schema.yProps.map((t=>({table:e.name,ydocProp:t.prop,updatesTable:t.updatesTable}))))));return E(...t.map((({table:t,ydocProp:n,updatesTable:r})=>{const s=e.table(r);return g(s.get($t)).pipe(O((e=>{let r=(null==e?void 0:e.unsentFrom)||1;return g(o((()=>Y(this,void 0,void 0,(function*(){return(yield Dt(s,r)).filter((e=>e.f&&1&e.f)).map((e=>({type:"u-c",table:t,prop:n,k:e.k,u:e.u,i:e.i})))}))))).pipe(C((e=>{e.length>0&&(r=e.at(-1).i+1)})))})))}))).pipe(T((e=>e)))}(this.db).subscribe(this.db.messageProducer))}catch(e){this.pauseUntil=new Date(Date.now()+6e4)}}))}}class Dn extends Error{constructor(e){super("expired"===e?"License expired":"deactivated"===e?"User deactivated":"Invalid license"),this.name="InvalidLicenseError",e&&(this.license=e)}}function Ln(e){return Y(this,void 0,void 0,(function*(){var e;yield(e=3e3,new Promise((t=>setTimeout(t,e)))),yield b(En)}))}function Rn(e){return Y(this,void 0,void 0,(function*(){var t;return!(!(null===(t=e.cloud.options)||void 0===t?void 0:t.databaseUrl)||!e.cloud.schema)&&(yield Kt(e,e.cloud.options,e.cloud.schema,{justCheckIfNeeded:!0}))}))}const Nn=new WeakMap;function Bn(e,t,n,r){const o=Nn.get(e);if(o){if(o.pull||"push"===(null==r?void 0:r.purpose))return o.promise;{let s=!1;const i=e.cloud.syncState.subscribe((e=>{"pulling"===e.phase&&(s=!0)}));return o.promise.then((()=>{i.unsubscribe()})).catch((e=>(i.unsubscribe(),Promise.reject(e)))).then((()=>{if(!s)return Bn(e,t,n,r)}))}}const s=function(){return Y(this,void 0,void 0,(function*(){try{yield Et(e),yield _n(e,Wt,(()=>Kt(e,t,n,r))),Nn.delete(e)}catch(t){throw Nn.delete(e),t}}))}();return Nn.set(e,{promise:s,pull:"push"!==(null==r?void 0:r.purpose)}),s}const Mn=1e3;function Fn(e,t,n){let r=null,o={cancelled:!1},s=0,i=0;function a(r=1){setTimeout((()=>{const f=l?"pull":"push";i=Date.now(),Bn(e,t,n,{cancelToken:o,retryImmediatelyOnFetchError:!0,purpose:f}).then((()=>{if(o.cancelled)d();else if(l||c)return l=!1,c=!1,a();u=!1,s=0,i=0})).catch((e=>{if(o.cancelled)d(),u=!1,s=0,i=0;else if(r<5){const e=[0,20,40,300,900][r]*Mn;s=Date.now()+e,i=0,setTimeout((()=>a(r+1)),e)}else u=!1,s=0,i=0}))}),0)}let l=!1,c=!1,u=!1;const d=()=>{o.cancelled=!0,r&&r.unsubscribe()};return{start:()=>{r=e.localSyncEvent.subscribe((({purpose:e})=>{(e=>{o.cancelled||("pull"===e&&(l=!0),"push"===e&&(c=!0),u?s||i>0&&Date.now():(u=!0,a()))})(e||"pull")}))},stop:d}}function Wn(e,t){if(e&&t&&t.unsyncedTables)for(const n of t.unsyncedTables)e[n]&&(e[n].markedForSync=!1)}var Kn,Vn,Hn,qn,zn,Jn={},Gn=[],Yn=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function Zn(e,t){for(var n in t)e[n]=t[n];return e}function Xn(e){var t=e.parentNode;t&&t.removeChild(e)}function Qn(e,t,n){var r,o,s,i={};for(s in t)"key"==s?r=t[s]:"ref"==s?o=t[s]:i[s]=t[s];if(arguments.length>2&&(i.children=arguments.length>3?Kn.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(s in e.defaultProps)void 0===i[s]&&(i[s]=e.defaultProps[s]);return er(e,i,r,o,null)}function er(e,t,n,r,o){var s={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++Hn:o};return null==o&&null!=Vn.vnode&&Vn.vnode(s),s}function tr(e){return e.children}function nr(e,t){this.props=e,this.context=t}function rr(e,t){if(null==t)return e.__?rr(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?rr(e):null}function or(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return or(e)}}function sr(e){(!e.__d&&(e.__d=!0)&&qn.push(e)&&!ir.__r++||zn!==Vn.debounceRendering)&&((zn=Vn.debounceRendering)||setTimeout)(ir)}function ir(){for(var e;ir.__r=qn.length;)e=qn.sort((function(e,t){return e.__v.__b-t.__v.__b})),qn=[],e.some((function(e){var t,n,r,o,s,i;e.__d&&(s=(o=(t=e).__v).__e,(i=t.__P)&&(n=[],(r=Zn({},o)).__v=o.__v+1,yr(i,o,r,t.__n,void 0!==i.ownerSVGElement,null!=o.__h?[s]:null,n,null==s?rr(o):s,o.__h),hr(n,o),o.__e!=s&&or(o)))}))}function ar(e,t,n,r,o,s,i,a,l,c){var u,d,f,p,y,h,v,m=r&&r.__k||Gn,b=m.length;for(n.__k=[],u=0;u<t.length;u++)if(null!=(p=n.__k[u]=null==(p=t[u])||"boolean"==typeof p?null:"string"==typeof p||"number"==typeof p||"bigint"==typeof p?er(null,p,null,null,p):Array.isArray(p)?er(tr,{children:p},null,null,null):p.__b>0?er(p.type,p.props,p.key,null,p.__v):p)){if(p.__=n,p.__b=n.__b+1,null===(f=m[u])||f&&p.key==f.key&&p.type===f.type)m[u]=void 0;else for(d=0;d<b;d++){if((f=m[d])&&p.key==f.key&&p.type===f.type){m[d]=void 0;break}f=null}yr(e,p,f=f||Jn,o,s,i,a,l,c),y=p.__e,(d=p.ref)&&f.ref!=d&&(v||(v=[]),f.ref&&v.push(f.ref,null,p),v.push(d,p.__c||y,p)),null!=y?(null==h&&(h=y),"function"==typeof p.type&&p.__k===f.__k?p.__d=l=lr(p,l,e):l=cr(e,p,f,m,y,l),"function"==typeof n.type&&(n.__d=l)):l&&f.__e==l&&l.parentNode!=e&&(l=rr(f))}for(n.__e=h,u=b;u--;)null!=m[u]&&("function"==typeof n.type&&null!=m[u].__e&&m[u].__e==n.__d&&(n.__d=rr(r,u+1)),br(m[u],m[u]));if(v)for(u=0;u<v.length;u++)mr(v[u],v[++u],v[++u])}function lr(e,t,n){for(var r,o=e.__k,s=0;o&&s<o.length;s++)(r=o[s])&&(r.__=e,t="function"==typeof r.type?lr(r,t,n):cr(n,r,r,o,r.__e,t));return t}function cr(e,t,n,r,o,s){var i,a,l;if(void 0!==t.__d)i=t.__d,t.__d=void 0;else if(null==n||o!=s||null==o.parentNode)e:if(null==s||s.parentNode!==e)e.appendChild(o),i=null;else{for(a=s,l=0;(a=a.nextSibling)&&l<r.length;l+=2)if(a==o)break e;e.insertBefore(o,s),i=s}return void 0!==i?i:o.nextSibling}function ur(e,t,n){"-"===t[0]?e.setProperty(t,n):e[t]=null==n?"":"number"!=typeof n||Yn.test(t)?n:n+"px"}function dr(e,t,n,r,o){var s;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||ur(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||ur(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])s=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+s]=n,n?r||e.addEventListener(t,s?pr:fr,s):e.removeEventListener(t,s?pr:fr,s);else if("dangerouslySetInnerHTML"!==t){if(o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null!=n&&(!1!==n||"a"===t[0]&&"r"===t[1])?e.setAttribute(t,n):e.removeAttribute(t))}}function fr(e){this.l[e.type+!1](Vn.event?Vn.event(e):e)}function pr(e){this.l[e.type+!0](Vn.event?Vn.event(e):e)}function yr(e,t,n,r,o,s,i,a,l){var c,u,d,f,p,y,h,v,m,b,g,_,w,k=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(l=n.__h,a=t.__e=n.__e,t.__h=null,s=[a]),(c=Vn.__b)&&c(t);try{e:if("function"==typeof k){if(v=t.props,m=(c=k.contextType)&&r[c.__c],b=c?m?m.props.value:c.__:r,n.__c?h=(u=t.__c=n.__c).__=u.__E:("prototype"in k&&k.prototype.render?t.__c=u=new k(v,b):(t.__c=u=new nr(v,b),u.constructor=k,u.render=gr),m&&m.sub(u),u.props=v,u.state||(u.state={}),u.context=b,u.__n=r,d=u.__d=!0,u.__h=[]),null==u.__s&&(u.__s=u.state),null!=k.getDerivedStateFromProps&&(u.__s==u.state&&(u.__s=Zn({},u.__s)),Zn(u.__s,k.getDerivedStateFromProps(v,u.__s))),f=u.props,p=u.state,d)null==k.getDerivedStateFromProps&&null!=u.componentWillMount&&u.componentWillMount(),null!=u.componentDidMount&&u.__h.push(u.componentDidMount);else{if(null==k.getDerivedStateFromProps&&v!==f&&null!=u.componentWillReceiveProps&&u.componentWillReceiveProps(v,b),!u.__e&&null!=u.shouldComponentUpdate&&!1===u.shouldComponentUpdate(v,u.__s,b)||t.__v===n.__v){u.props=v,u.state=u.__s,t.__v!==n.__v&&(u.__d=!1),u.__v=t,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),u.__h.length&&i.push(u);break e}null!=u.componentWillUpdate&&u.componentWillUpdate(v,u.__s,b),null!=u.componentDidUpdate&&u.__h.push((function(){u.componentDidUpdate(f,p,y)}))}if(u.context=b,u.props=v,u.__v=t,u.__P=e,g=Vn.__r,_=0,"prototype"in k&&k.prototype.render)u.state=u.__s,u.__d=!1,g&&g(t),c=u.render(u.props,u.state,u.context);else do{u.__d=!1,g&&g(t),c=u.render(u.props,u.state,u.context),u.state=u.__s}while(u.__d&&++_<25);u.state=u.__s,null!=u.getChildContext&&(r=Zn(Zn({},r),u.getChildContext())),d||null==u.getSnapshotBeforeUpdate||(y=u.getSnapshotBeforeUpdate(f,p)),w=null!=c&&c.type===tr&&null==c.key?c.props.children:c,ar(e,Array.isArray(w)?w:[w],t,n,r,o,s,i,a,l),u.base=t.__e,t.__h=null,u.__h.length&&i.push(u),h&&(u.__E=u.__=null),u.__e=!1}else null==s&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=vr(n.__e,t,n,r,o,s,i,l);(c=Vn.diffed)&&c(t)}catch(e){t.__v=null,(l||null!=s)&&(t.__e=a,t.__h=!!l,s[s.indexOf(a)]=null),Vn.__e(e,t,n)}}function hr(e,t){Vn.__c&&Vn.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){Vn.__e(e,t.__v)}}))}function vr(e,t,n,r,o,s,i,a){var l,c,u,d=n.props,f=t.props,p=t.type,y=0;if("svg"===p&&(o=!0),null!=s)for(;y<s.length;y++)if((l=s[y])&&"setAttribute"in l==!!p&&(p?l.localName===p:3===l.nodeType)){e=l,s[y]=null;break}if(null==e){if(null===p)return document.createTextNode(f);e=o?document.createElementNS("http://www.w3.org/2000/svg",p):document.createElement(p,f.is&&f),s=null,a=!1}if(null===p)d===f||a&&e.data===f||(e.data=f);else{if(s=s&&Kn.call(e.childNodes),c=(d=n.props||Jn).dangerouslySetInnerHTML,u=f.dangerouslySetInnerHTML,!a){if(null!=s)for(d={},y=0;y<e.attributes.length;y++)d[e.attributes[y].name]=e.attributes[y].value;(u||c)&&(u&&(c&&u.__html==c.__html||u.__html===e.innerHTML)||(e.innerHTML=u&&u.__html||""))}if(function(e,t,n,r,o){var s;for(s in n)"children"===s||"key"===s||s in t||dr(e,s,null,n[s],r);for(s in t)o&&"function"!=typeof t[s]||"children"===s||"key"===s||"value"===s||"checked"===s||n[s]===t[s]||dr(e,s,t[s],n[s],r)}(e,f,d,o,a),u)t.__k=[];else if(y=t.props.children,ar(e,Array.isArray(y)?y:[y],t,n,r,o&&"foreignObject"!==p,s,i,s?s[0]:n.__k&&rr(n,0),a),null!=s)for(y=s.length;y--;)null!=s[y]&&Xn(s[y]);a||("value"in f&&void 0!==(y=f.value)&&(y!==e.value||"progress"===p&&!y||"option"===p&&y!==d.value)&&dr(e,"value",y,d.value,!1),"checked"in f&&void 0!==(y=f.checked)&&y!==e.checked&&dr(e,"checked",y,d.checked,!1))}return e}function mr(e,t,n){try{"function"==typeof e?e(t):e.current=t}catch(e){Vn.__e(e,n)}}function br(e,t,n){var r,o;if(Vn.unmount&&Vn.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||mr(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){Vn.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&br(r[o],t,"function"!=typeof e.type);n||null==e.__e||Xn(e.__e),e.__e=e.__d=void 0}function gr(e,t,n){return this.constructor(e,n)}function _r(e,t,n){var r,o,s;Vn.__&&Vn.__(e,t),o=(r="function"==typeof n)?null:n&&n.__k||t.__k,s=[],yr(t,e=(!r&&n||t).__k=Qn(tr,null,[e]),o||Jn,Jn,void 0!==t.ownerSVGElement,!r&&n?[n]:o?null:t.firstChild?Kn.call(t.childNodes):null,s,!r&&n?n:o?o.__e:t.firstChild,r),hr(s,e)}Kn=Gn.slice,Vn={__e:function(e,t,n,r){for(var o,s,i;t=t.__;)if((o=t.__c)&&!o.__)try{if((s=o.constructor)&&null!=s.getDerivedStateFromError&&(o.setState(s.getDerivedStateFromError(e)),i=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,r||{}),i=o.__d),i)return o.__E=o}catch(t){e=t}throw e}},Hn=0,nr.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=Zn({},this.state),"function"==typeof e&&(e=e(Zn({},n),this.props)),e&&Zn(n,e),null!=e&&this.__v&&(t&&this.__h.push(t),sr(this))},nr.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),sr(this))},nr.prototype.render=tr,qn=[],ir.__r=0;const wr={Error:{color:"red"},Alert:{error:{color:"red",fontWeight:"bold"},warning:{color:"#f80",fontWeight:"bold"},info:{color:"black"}},Darken:{position:"fixed",top:0,left:0,opacity:.5,backgroundColor:"#000",width:"100vw",height:"100vh",zIndex:150,webkitBackdropFilter:"blur(2px)",backdropFilter:"blur(2px)"},DialogOuter:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",zIndex:150,alignItems:"center",display:"flex",justifyContent:"center"},DialogInner:{position:"relative",color:"#222",backgroundColor:"#fff",padding:"30px",marginBottom:"2em",maxWidth:"90%",maxHeight:"90%",overflowY:"auto",border:"3px solid #3d3d5d",borderRadius:"8px",boxShadow:"0 0 80px 10px #666",width:"auto",fontFamily:"sans-serif"},Input:{height:"35px",width:"17em",borderColor:"#ccf4",outline:"none",fontSize:"17pt",padding:"8px"}};function kr({children:e,className:t}){return Qn("div",{className:t},Qn("div",{style:wr.Darken}),Qn("div",{style:wr.DialogOuter},Qn("div",{style:wr.DialogInner},e)))}var Sr,xr,Ir,Er,Or=0,Cr=[],Tr=[],jr=Vn.__b,Ur=Vn.__r,Ar=Vn.diffed,Pr=Vn.__c,$r=Vn.unmount;function Dr(e,t){Vn.__h&&Vn.__h(xr,e,Or||t),Or=0;var n=xr.__H||(xr.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({__V:Tr}),n.__[e]}function Lr(e){return Or=1,function(e,t,n){var r=Dr(Sr++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):Kr(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=xr,!xr.u)){xr.u=!0;var o=xr.shouldComponentUpdate;xr.shouldComponentUpdate=function(e,t,n){if(!r.__c.__H)return!0;var s=r.__c.__H.__.filter((function(e){return e.__c}));if(s.every((function(e){return!e.__N})))return!o||o.call(this,e,t,n);var i=!1;return s.forEach((function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(i=!0)}})),!!i&&(!o||o.call(this,e,t,n))}}return r.__N||r.__}(Kr,e)}function Rr(e){return Or=5,function(e,t){var n=Dr(Sr++,7);return Wr(n.__H,t)?(n.__V=e(),n.i=t,n.__h=e,n.__V):n.__}((function(){return{current:e}}),[])}function Nr(){for(var e;e=Cr.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(Mr),e.__H.__h.forEach(Fr),e.__H.__h=[]}catch(t){e.__H.__h=[],Vn.__e(t,e.__v)}}Vn.__b=function(e){xr=null,jr&&jr(e)},Vn.__r=function(e){Ur&&Ur(e),Sr=0;var t=(xr=e.__c).__H;t&&(Ir===xr?(t.__h=[],xr.__h=[],t.__.forEach((function(e){e.__N&&(e.__=e.__N),e.__V=Tr,e.__N=e.i=void 0}))):(t.__h.forEach(Mr),t.__h.forEach(Fr),t.__h=[])),Ir=xr},Vn.diffed=function(e){Ar&&Ar(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==Cr.push(t)&&Er===Vn.requestAnimationFrame||((Er=Vn.requestAnimationFrame)||function(e){var t,n=function(){clearTimeout(r),Br&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,100);Br&&(t=requestAnimationFrame(n))})(Nr)),t.__H.__.forEach((function(e){e.i&&(e.__H=e.i),e.__V!==Tr&&(e.__=e.__V),e.i=void 0,e.__V=Tr}))),Ir=xr=null},Vn.__c=function(e,t){t.some((function(e){try{e.__h.forEach(Mr),e.__h=e.__h.filter((function(e){return!e.__||Fr(e)}))}catch(n){t.some((function(e){e.__h&&(e.__h=[])})),t=[],Vn.__e(n,e.__v)}})),Pr&&Pr(e,t)},Vn.unmount=function(e){$r&&$r(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach((function(e){try{Mr(e)}catch(e){t=e}})),t&&Vn.__e(t,n.__v))};var Br="function"==typeof requestAnimationFrame;function Mr(e){var t=xr,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),xr=t}function Fr(e){var t=xr;e.__c=e.__(),xr=t}function Wr(e,t){return!e||e.length!==t.length||t.some((function(t,n){return t!==e[n]}))}function Kr(e,t){return"function"==typeof t?t(e):t}function Vr({message:e,messageCode:t,messageParams:n}){return e.replace(/\{\w+\}/gi,(e=>n[e.substring(1,e.length-1)]))}function Hr({title:e,type:t,alerts:n,fields:r,submitLabel:o,cancelLabel:s,onCancel:i,onSubmit:a}){const[l,c]=Lr({}),u=Rr(null);return function(e,t){var n=Dr(Sr++,4);!Vn.__s&&Wr(n.__H,t)&&(n.__=e,n.i=t,xr.__h.push(n))}((()=>{var e;return null===(e=u.current)||void 0===e?void 0:e.focus()}),[]),Qn(kr,{className:"dxc-login-dlg"},Qn(tr,null,Qn("h3",{style:wr.WindowHeader},e),n.map((e=>Qn("p",{style:wr.Alert[e.type]},Vr(e)))),Qn("form",{onSubmit:e=>{e.preventDefault(),a(l)}},Object.entries(r).map((([e,{type:t,label:n,placeholder:r}],o)=>Qn("label",{style:wr.Label,key:o},n?`${n}: `:"",Qn("input",{ref:0===o?u:void 0,type:t,name:e,autoComplete:"on",style:wr.Input,autoFocus:!0,placeholder:r,value:l[e]||"",onInput:n=>{var r;const o=function(e,t){switch(e){case"email":return t.toLowerCase();case"otp":return t.toUpperCase();default:return t}}(t,null===(r=n.target)||void 0===r?void 0:r.value);let s=Object.assign(Object.assign({},l),{[e]:o});c(s),"otp"===t&&8===(null==o?void 0:o.trim().length)&&a(s)}})))))),Qn("div",{style:wr.ButtonsDiv},Qn(tr,null,Qn("button",{type:"submit",style:wr.Button,onClick:()=>a(l)},o),s&&Qn("button",{style:wr.Button,onClick:i},s))))}class qr extends nr{constructor(e){super(e),this.observer=e=>this.setState({userInteraction:e}),this.state={userInteraction:void 0}}componentDidMount(){this.subscription=g(this.props.db.cloud.userInteraction).subscribe(this.observer)}componentWillUnmount(){this.subscription&&(this.subscription.unsubscribe(),delete this.subscription)}render(e,{userInteraction:t}){return t?Qn(Hr,Object.assign({},t)):null}}function zr(e){const t=new WeakMap;return n=>{let r=t.get(n);return r||(r=e(n),t.set(n,r)),r}}const Jr=zr((e=>new k(Oe)));function Gr(e,t){let n=t,r=g(e).pipe(P((e=>n=e)),$({resetOnRefCountZero:()=>D(1e3)}));const o=new w((e=>{let t=!1;const o=r.subscribe({next(n){t=!0,e.next(n)},error(t){e.error(t)},complete(){e.complete()}});return t||o.closed||e.next(n),o}));return o.getValue=()=>n,o}const Yr=zr((e=>Gr(o((()=>e.roles.where({realmId:"rlm-public"}).toArray().then((e=>{const t={};for(const n of e.slice().sort(((e,t)=>(e.sortOrder||0)-(t.sortOrder||0))))t[n.name]=n;return t})))),{}))),Zr=zr((e=>Gr(Jr(e._novip).pipe(N((t=>o((()=>e.transaction("r","realms","members",(()=>Promise.all([e.members.where({userId:t.userId}).toArray(),e.realms.toArray(),t.userId]).then((([e,t,n])=>({selfMembers:e,realms:t,userId:n})))))))))),{selfMembers:[],realms:[],get userId(){return e.cloud.currentUserId}})));function Xr(...e){if(0===e.length)return{};const t=e.reduce(((e,t)=>{const n=Object.assign({},e);for(const[e,r]of Object.entries(t))if(e in n&&n[e]){if("*"===n[e])continue;if("*"===r)n[e]="*";else if(Array.isArray(r)&&Array.isArray(n[e])){const t=n,o=t[e];t[e]=[...new Set([...o,...r])]}else if("object"==typeof r&&r&&"object"==typeof n[e]){const t=n[e];for(const[e,n]of Object.entries(r))"*"!==t[e]&&("*"===n?t[e]="*":Array.isArray(t[e])&&Array.isArray(n)&&(t[e]=[...new Set([...t[e],...n])]))}}else n[e]=t[e];return n}));return t}const Qr=zr((e=>function(e,t){let n;const r=e.pipe(P((e=>n=t(e))));return r.getValue=()=>void 0!==n?n:n=t(e.getValue()),r}(Gr(A([Zr(e._novip),Yr(e._novip)]).pipe(F((([{selfMembers:e,realms:t,userId:n},r])=>({selfMembers:e,realms:t,userId:n,globalRoles:r})))),{selfMembers:[],realms:[],userId:Oe.userId,globalRoles:{}}),(({selfMembers:e,realms:t,userId:n,globalRoles:r})=>{const o=t.map((t=>{const o=e.filter((e=>e.realmId===t.realmId)),s=o.map((e=>e.permissions)).filter((e=>e)),i=Ve(o.map((e=>e.roles)).filter((e=>e))).map((e=>r[e])).filter((e=>e)).map((e=>e.permissions));return Object.assign(Object.assign({},t),{permissions:t.owner===n?{manage:"*"}:Xr(...s,...i)})})).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.realmId]:t})),{[n]:{realmId:n,owner:n,name:n,permissions:{manage:"*"}}});return o}))));class eo{constructor(e,t,n){this.permissions=e||{},this.tableName=t,this.isOwner=n}add(...e){var t;return"*"===this.permissions.manage||(!!(null===(t=this.permissions.manage)||void 0===t?void 0:t.includes(this.tableName))||("*"===this.permissions.add||!!e.every((e=>{var t;return null===(t=this.permissions.add)||void 0===t?void 0:t.includes(e)}))))}update(...e){var t,n;if(this.isOwner||"*"===this.permissions.manage)return!0;if(null===(t=this.permissions.manage)||void 0===t?void 0:t.includes(this.tableName))return!0;if("*"===this.permissions.update)return e.every((e=>"owner"!==e));const r=null===(n=this.permissions.update)||void 0===n?void 0:n[this.tableName];return"*"===r?e.every((e=>"owner"!==e)):e.every((e=>null==r?void 0:r.some((t=>t===e||"*"===t&&"owner"!==e))))}delete(){var e;return!(!this.isOwner&&"*"!==this.permissions.manage)||!!(null===(e=this.permissions.manage)||void 0===e?void 0:e.includes(this.tableName))}}const to=zr((e=>{const t=Jr(e._novip).pipe(N((t=>o((()=>e.members.where({email:t.email||""}).toArray()))))),n=Qr(e._novip),r=Zr(e._novip);return Gr(A([t,r,n]).pipe(F((([t,n,r])=>{const o=(e,t)=>Object.assign(Object.assign({},e),{[t.id]:Object.assign(Object.assign({},t),{realm:r[t.realmId]})}),s=t.reduce(o,{}),i=n.selfMembers.reduce(o,s);return Object.values(i).filter((e=>!e.accepted)).map((t=>Object.assign(Object.assign({},t),{accept(){return Y(this,void 0,void 0,(function*(){yield e.members.update(t.id,{accepted:new Date})}))},reject(){return Y(this,void 0,void 0,(function*(){yield e.members.update(t.id,{rejected:new Date})}))}})))}))),[])}));function no(e){return t=>{var r;const o=t.doc;if(!o)throw new Error("Internal error: DexieYProvider.createYHandler called without a doc. This is unexpected.");const{parentTable:s}=o.meta||{};if(!(null===(r=e.cloud.schema)||void 0===r?void 0:r[s].markedForSync))return;let i;Object.defineProperty(t,"awareness",{get:()=>i||(i=function(e,t,r){const{parentTable:o,parentId:s,parentProp:i,updatesTable:a}=t.meta,l=Cn(e),c=new l.Awareness(t),u=Un(t);return c.on("update",(({added:n,updated:s,removed:a},u)=>{const d=n.concat(s).concat(a),f=e.cloud.currentUser.value;if("server"!==u&&f.isLoggedIn&&!mn(e)){const n=l.encodeAwarenessUpdate(c,d);e.messageProducer.next({type:"aware",table:o,prop:i,k:t.meta.parentId,u:n}),r.destroyed&&e.messageProducer.next({type:"doc-close",table:o,prop:i,k:t.meta.parentId})}})),c.on("destroy",(()=>{l.removeAwarenessStates(c,[t.clientID],"provider destroyed")})),(()=>{Y(this,void 0,void 0,(function*(){if(r.destroyed)return;let t=!1,l=1;const c=A([e.cloud.webSocketStatus,u.pipe(L(null))]).subscribe((([n])=>{if(r.destroyed)return;t="connected"===n;const o=e.cloud.currentUser.value;"connected"===n&&o.isLoggedIn&&!mn(e)&&(++l,d().catch((e=>{})))}));function d(){return Y(this,void 0,void 0,(function*(){const c=l,u=e.table(a),d=e.$syncState,[f,p]=yield e.transaction("r",d,u,(()=>Y(this,void 0,void 0,(function*(){const e=yield u.get($t),t=yield d.get("syncState");return[(null==e?void 0:e.receivedUntil)||0,(null==t?void 0:t.yServerRevision)||(null==t?void 0:t.serverRevision)]}))));if(r.destroyed||l!==c||!t)return;const y={type:"doc-open",table:o,prop:i,k:s,serverRev:p},h=yield u.where("i").between(f,1/0,!1).filter((e=>0===n(e.k,s)&&0==(1&(e.f||0)))).toArray();if(!r.destroyed&&l===c&&t){if(h.length>0){const e=J.mergeUpdatesV2(h.map((e=>e.u))),t=J.encodeStateVectorFromUpdateV2(e);y.sv=t}e.messageProducer.next(y)}}))}r.addCleanupHandler(c)}))})(),c}(e,o,t),Tn.set(o,i),i)})}}function ro(e){return"rlm~"+e}function oo(e){return e.startsWith("rlm~")?e.substr(4):null}const so={},io=new WeakMap,ao=co("tx"),lo=co("unload");function co(e){let t=null,n=!1,r=new Map;return{name:e,run(){return Y(this,void 0,void 0,(function*(){!n&&r.size>0&&(n=!0,t&&(yield t.catch((()=>{}))),setTimeout((()=>{n=!1;const e=r;r=new Map,t=function(e){return Y(this,void 0,void 0,(function*(){for(const{db:t,parentId:n,triggers:r,parentTable:o,prop:s}of e.values()){const e=G.getOrCreateDocument(t,o,s,n);try{const t=G.load(e);yield t.whenLoaded;for(const t of r)yield t(e,n)}catch(e){null==e||e.name}finally{G.release(e)}}}))}(e).finally((()=>{t=null}))}),0))}))},enqueue(e,t,n,o,s){const i=`${e.name}:${t}:${n}:${o}`;let a=r.get(i);a||(a={db:e,parentTable:t,parentId:n,prop:o,triggers:new Set},r.set(i,a)),a.triggers.add(s)}}}function uo(){ao.run()}function fo(){lo.run()}function po(e,t,n){var o,s;const i=null===(s=null===(o=e.schema.yProps)||void 0===o?void 0:o.find((e=>e.prop===t)))||void 0===s?void 0:s.updatesTable;if(!i)throw new Error(`Table ${e.name} does not have a Yjs property named ${t}`);so[i]={trigger:n,parentTable:e.name,prop:t};const a=e.db._novip;let l=io.get(a);l||(l=(e=>({stack:"dbcore",level:10,name:"yTriggerMiddleware",create:t=>Object.assign(Object.assign({},t),{transaction:(e,n,r)=>{const o=t.transaction(e,n,r);return"readonly"===n?o:e.some((e=>so[e]))?(o.addEventListener("complete",uo),o):o},table:n=>{const o=t.table(n),s=so[n];if(!s)return o;const{trigger:i,parentTable:a,prop:l}=s;return Object.assign(Object.assign({},o),{mutate(t){var n;switch(t.type){case"add":for(const r of t.values){if(null==r.k)continue;const t=r.k,o=G.getDocCache(e).find(a,t,l);(o&&(null===(n=G.for(o))||void 0===n?void 0:n.refCount)?lo:ao).enqueue(e,a,t,l,i)}break;case"delete":t.trans._rejecting_y_ypdate&&o.getMany({keys:t.keys,trans:t.trans,cache:"immutable"}).then((t=>{const n=new r;for(const{k:e}of t)null!=e&&n.addKey(e);for(const t of n)ao.enqueue(e,a,t.from,l,i)}))}return o.mutate(t)}})}})}))(a),io.set(a,l)),a.use(l),G.on("beforeunload",fo)}const yo={nameSuffix:!0};function ho(t){const n=t.name,r=Jr(t),s=[];let i=!1,a=null;t.on("ready",(t=>Y(this,void 0,void 0,(function*(){try{yield function(t){return Y(this,void 0,void 0,(function*(){var n,d,f,p,y,h,v;l=!1;const m=Qt(t);"undefined"!=typeof window&&"undefined"!=typeof document&&((null===(n=m.cloud.options)||void 0===n?void 0:n.customLoginGui)||s.push(function(e){let t=!1;const n=document.createElement("div");return document.body?(document.body.appendChild(n),_r(Qn(qr,{db:e.vip}),n)):addEventListener("DOMContentLoaded",(()=>{t||(document.body.appendChild(n),_r(Qn(qr,{db:e.vip}),n))})),{unsubscribe(){try{n.remove()}catch(e){}t=!0},get closed(){return t}}}(t))),m.cloud.isServiceWorkerDB||s.push(function(e){let t=e.cloud.webSocketStatus.value;const n=e.cloud.webSocketStatus.pipe(N((e=>{const n=t;t=e;const r=x(e);switch(e){case"disconnected":return wn.value?r.pipe(H(500)):r;case"connecting":return"not-started"===n||"error"===n?r:r.pipe(H(4e3));default:return r}})));return A([n,e.syncStateChangedEvent.pipe(q({phase:"initial"})),Jr(e.dx._novip),kn]).pipe(F((([t,n,r,o])=>{var s;if((null===(s=r.license)||void 0===s?void 0:s.status)&&"ok"!==r.license.status)return{phase:"offline",status:"offline",license:r.license.status};let{phase:i,error:a,progress:l}=n,c=t;return"error"===i&&(c="error"),"not-started"===t&&("pushing"!==i&&"pulling"!==i||(c="connecting")),"error"!==e.cloud.syncState.value.phase||"pushing"!==n.phase&&"pulling"!==n.phase||(c="connecting"),o||(c="disconnected"),{phase:i,error:a,progress:l,status:Tt?c:"offline",license:"ok"}})))}(m).subscribe(t.cloud.syncState)),s.push(m.syncCompleteEvent.subscribe(u)),m.tables.every((e=>e.core))||function(){throw new e.SchemaError("Version increment needed to allow dexie-cloud change tracking")}();const _="serviceWorker"in navigator?yield navigator.serviceWorker.getRegistrations():[],[w,S]=yield m.transaction("rw",m.$syncState,(()=>Y(this,void 0,void 0,(function*(){var e,t;const{options:n,schema:r}=m.cloud,[o,s,a]=yield Promise.all([m.getOptions(),m.getSchema(),m.getPersistedSyncState()]);if(i){if(!o||JSON.stringify(o)!==JSON.stringify(n)){if(!n)throw new Error("Internal error");const e=Object.assign({},n);delete e.fetchTokens,delete e.awarenessProtocol,yield m.$syncState.put(e,"options")}}else m.cloud.options=o||null;if((null===(e=m.cloud.options)||void 0===e?void 0:e.tryUseServiceWorker)&&"serviceWorker"in navigator&&_.length>0&&!rn?m.cloud.usingServiceWorker=!0:((null===(t=m.cloud.options)||void 0===t?void 0:t.tryUseServiceWorker)&&m.cloud.isServiceWorkerDB,m.cloud.usingServiceWorker=!1),Wn(r,m.cloud.options),Wn(s,m.cloud.options),r){if(!s||JSON.stringify(s)!==JSON.stringify(r)){const e=s||{};for(const[t,n]of Object.entries(r)){const r=e[t];r?(r.markedForSync=n.markedForSync,n.deleted=r.deleted,r.generatedGlobalId=n.generatedGlobalId):e[t]=Object.assign({},n)}yield m.$syncState.put(e,"schema"),Object.assign(r,e)}}else m.cloud.schema=s||null;return[null==a?void 0:a.initiallySynced,null==a?void 0:a.realms]}))));if(w&&m.setInitiallySynced(!0),function(t){var n,r;for(const o of t.tables)if(null===(r=null===(n=t.cloud.schema)||void 0===n?void 0:n[o.name])||void 0===r?void 0:r.markedForSync){if(o.schema.primKey.auto)throw new e.SchemaError(`Table ${o.name} is both autoIncremented and synced. Use db.cloud.configure({unsyncedTables: [${JSON.stringify(o.name)}]}) to blacklist it from sync`);if(!o.schema.primKey.keyPath)throw new e.SchemaError(`Table ${o.name} cannot be both synced and outbound. Use db.cloud.configure({unsyncedTables: [${JSON.stringify(o.name)}]}) to blacklist it from sync`)}}(m),c(),!m.cloud.isServiceWorkerDB){s.push(o((()=>m.getCurrentUser())).subscribe(r)),s.push(o((()=>m.getPersistedSyncState())).subscribe(m.cloud.persistedSyncState)),yield b(A([r.pipe(z(1),K(1)),m.cloud.persistedSyncState.pipe(z(1),K(1))]));const e=no(m);G.on.new.subscribe(e),m.dx.once("close",(()=>{G.on.new.unsubscribe(e)}))}let O=!1;const C=yield m.getCurrentUser(),T=null===(d=m.cloud.options)||void 0===d?void 0:d.requireAuth;T&&(m.cloud.isServiceWorkerDB?yield b(r.pipe(R((e=>!!e.isLoggedIn)),K(1))):"object"==typeof T?(!C.isLoggedIn||T.userId&&C.userId!==T.userId||T.email&&C.email!==T.email)&&(O=yield Pe(m,T)):C.isLoggedIn||(O=yield Pe(m))),!C.isLoggedIn||S&&S.includes(C.userId)||(O=!0),a&&a.stop(),a=null,c();const j=(null===(f=m.cloud.options)||void 0===f?void 0:f.databaseUrl)&&(!w||O);j&&(yield function(e,t,n){return Y(this,void 0,void 0,(function*(){yield _n(e,Wt,(()=>Kt(e,t,n,{isInitialSync:!0})))}))}(m,m.cloud.options,m.cloud.schema),m.setInitiallySynced(!0)),c(),m.cloud.usingServiceWorker&&(null===(p=m.cloud.options)||void 0===p?void 0:p.databaseUrl)?(j||de(m,"push").catch((()=>{})),function(e){return Y(this,void 0,void 0,(function*(){var t;try{const{periodicSync:n}=yield navigator.serviceWorker.ready;if(n)try{yield n.register(`dexie-cloud:${e.name}`,null===(t=e.cloud.options)||void 0===t?void 0:t.periodicSync)}catch(e){}}catch(e){}}))}(m).catch((()=>{}))):(null===(y=m.cloud.options)||void 0===y?void 0:y.databaseUrl)&&m.cloud.schema&&!m.cloud.isServiceWorkerDB&&(a=Fn(m,m.cloud.options,m.cloud.schema),a.start(),j||fe(m,"push")),c(),m.cloud.isServiceWorkerDB||s.push(I(self,"online").subscribe((()=>{m.syncStateChangedEvent.next({phase:"not-in-sync"}),mn(m)||fe(m,"push")})),I(self,"offline").subscribe((()=>{m.syncStateChangedEvent.next({phase:"offline"})}))),!(null===(h=m.cloud.options)||void 0===h?void 0:h.databaseUrl)||(null===(v=m.cloud.options)||void 0===v?void 0:v.disableWebSocket)||on||s.push(function(e){var t;if(!(null===(t=e.cloud.options)||void 0===t?void 0:t.databaseUrl))throw new Error("No database URL to connect WebSocket to");const n=e.messageConsumer.readyToServe.pipe(R((e=>e)),N((()=>e.getPersistedSyncState())),R((e=>e&&e.serverRevision)),N((e=>Y(this,void 0,void 0,(function*(){return{type:"ready",rev:e.serverRevision,realmSetHash:yield Be(e)}}))))),r=E(n,e.messageProducer);return function t(){return e.cloud.persistedSyncState.pipe(R((e=>null==e?void 0:e.serverRevision)),K(1),N((t=>e.cloud.currentUser.pipe(F((e=>[e,t]))))),N((([e,t])=>kn.pipe(F((n=>[n?e:null,t]))))),N((([t,n])=>(null==t?void 0:t.isLoggedIn)&&!(null==n?void 0:n.realms.includes(t.userId))?e.cloud.persistedSyncState.pipe(R((e=>(null==e?void 0:e.realms.includes(t.userId))||!1)),K(1),F((e=>[t,e]))):new k([t,n]))),N((e=>Y(this,[e],void 0,(function*([e,t]){return[e,yield Be(t)]})))),M((([e,t],[n,r])=>e===n&&t===r)),N((([n,o])=>{var s;return(null===(s=e.cloud.persistedSyncState)||void 0===s?void 0:s.value)?n?new An(e,e.cloud.persistedSyncState.value.serverRevision,e.cloud.persistedSyncState.value.yServerRevision,o,e.cloud.persistedSyncState.value.clientIdentity,r,e.cloud.webSocketStatus,n):g([]):t()})),V((n=>"TokenExpiredError"===(null==n?void 0:n.name)?x(!0).pipe(N((()=>Y(this,void 0,void 0,(function*(){const t=yield e.getCurrentUser(),n=yield xe(e.cloud.options.databaseUrl,t);yield e.table("$logins").update(t.userId,{accessToken:n.accessToken,accessTokenExpiration:n.accessTokenExpiration,claims:n.claims,license:n.license,data:n.data})})))),N((()=>t()))):U((()=>n)))),V((n=>(e.cloud.webSocketStatus.next("error"),n instanceof Dn?U((()=>n)):g(Ln()).pipe(N((()=>t())))))))}().subscribe({next:t=>{t&&e.messageConsumer.enqueue(t)},error:e=>{},complete:()=>{}})}(m))}))}(t)}catch(e){}}))),!0);let l=!1;function c(){if(l)throw new e.DatabaseClosedError}t.once("close",(()=>{s.forEach((e=>e.unsubscribe())),s.splice(0,s.length),l=!0,a&&a.stop(),a=null,r.next(Oe)}));const u=new S;var d;t.cloud={version:"4.2.0-alpha.3",options:Object.assign({},yo),schema:null,get currentUserId(){return r.value.userId||Oe.userId},currentUser:r,syncState:new k({phase:"initial",status:"not-started"}),events:{syncComplete:u},persistedSyncState:new k(void 0),userInteraction:new k(void 0),webSocketStatus:new k("not-started"),login(e){return Y(this,void 0,void 0,(function*(){const n=Qt(t);yield n.cloud.sync(),yield Pe(n,e)}))},invites:to(t),roles:Yr(t),configure(e){e=t.cloud.options=Object.assign(Object.assign({},t.cloud.options),e),i=!0,e.databaseUrl&&e.nameSuffix&&(t.name=`${n}-${function(e){const t=new URL(e);return"/"===t.pathname?t.hostname.split(".")[0]:t.pathname.split("/")[1]}(e.databaseUrl)}`,Qt(t).reconfigure()),Wn(t.cloud.schema,t.cloud.options)},logout(){return Y(this,arguments,void 0,(function*({force:e}={}){e?yield je(Qt(t),{deleteUnsyncedData:!0}):yield Te(Qt(t))}))},sync(){return Y(this,arguments,void 0,(function*({wait:e,purpose:n}={wait:!0,purpose:"push"}){var r;void 0===e&&(e=!0);const s=Qt(t);if("ok"!==((null===(r=s.cloud.currentUser.value.license)||void 0===r?void 0:r.status)||"ok")&&(yield ke(s)),"pull"===n){const t=s.cloud.persistedSyncState.value;if(fe(s,n),e){const e=yield b(s.cloud.persistedSyncState.pipe(R((e=>null!=(null==e?void 0:e.timestamp)&&(!t||e.timestamp>t.timestamp)))));if(null==e?void 0:e.error)throw new Error("Sync error: "+e.error)}}else if(yield Rn(s)){const t=s.cloud.persistedSyncState.value;fe(s,n),e&&(yield b(g(o((()=>Y(this,void 0,void 0,(function*(){const e=yield Rn(s),n=yield s.getPersistedSyncState();if((null==n?void 0:n.timestamp)!==(null==t?void 0:t.timestamp)&&(null==n?void 0:n.error))throw new Error("Sync error: "+n.error);return e}))))).pipe(R((e=>!e)))))}}))},permissions:(e,n)=>function(e,t,n){if(!t)throw new TypeError("Cannot check permissions of undefined or null. A Dexie Cloud object with realmId and owner expected.");const{owner:r,realmId:o}=t;if(!n){if("function"!=typeof t.table)throw new TypeError("Missing 'table' argument to permissions and table could not be extracted from entity");n=t.table()}const s=Qr(e),i=t=>{const s=t[o||e.cloud.currentUserId];return s?new eo(s.permissions,n,void 0===o||o===e.cloud.currentUserId||r===e.cloud.currentUserId):new eo({},n,!r||r===e.cloud.currentUserId)},a=s.pipe(F(i));return a.getValue=()=>i(s.getValue()),a}(t._novip,e,n)},t.Version.prototype._parseStoresSpec=e.override(t.Version.prototype._parseStoresSpec,(e=>gn(e,t))),t.Table.prototype.newId=function({colocateWith:e}={}){const n=e&&e.substr(e.length-3);return dn(t.cloud.schema[this.name].idPrefix||"",n)},t.Table.prototype.idPrefix=function(){var e,t;return(null===(t=null===(e=this.db.cloud.schema)||void 0===e?void 0:e[this.name])||void 0===t?void 0:t.idPrefix)||""},t.use(bn({currentUserObservable:t.cloud.currentUser,db:Qt(t)})),t.use((d=Qt(t),{stack:"dbcore",name:"implicitPropSetterMiddleware",level:1,create:e=>Object.assign(Object.assign({},e),{table:t=>{const n=e.table(t);return Object.assign(Object.assign({},n),{mutate:e=>{var r,o,s,i,a,l;const c=e.trans;if(c.disableChangeTracking)return n.mutate(e);const u=null!==(o=null===(r=c.currentUser)||void 0===r?void 0:r.userId)&&void 0!==o?o:Oe.userId;if((null===(i=null===(s=d.cloud.schema)||void 0===s?void 0:s[t])||void 0===i?void 0:i.markedForSync)&&("add"===e.type||"put"===e.type)){if("members"===t)for(const t of e.values)"string"==typeof t.email&&(t.email=t.email.trim().toLowerCase());for(const t of e.values){t.owner||(t.owner=u),t.realmId||(t.realmId=u);const r=null===(l=(a=n.schema.primaryKey).extractKey)||void 0===l?void 0:l.call(a,t);"string"==typeof r&&"#"===r[0]&&"put"===e.type&&(delete e.criteria,delete e.changeSpec,delete e.updates,t.$ts=Date.now())}}return n.mutate(e)}})}})})),t.use(fn(Qt(t)))}ho.version="4.2.0-alpha.3",e.Cloud=ho;export{ho as default,po as defineYDocTrigger,ho as dexieCloud,oo as getTiedObjectId,ro as getTiedRealmId,Vr as resolveText};
1
+ import e,{PropModification as t,cmp as n,RangeSet as r,liveQuery as o}from"dexie";import{Encoder as s,writeVarString as i,writeAny as a,writeVarUint8Array as l,writeBigUint64 as c,toUint8Array as u}from"lib0/encoding";import{Decoder as d,readVarString as f,readAny as p,readVarUint8Array as y,readBigUint64 as h,hasContent as v,readUint8 as m}from"lib0/decoding";import{firstValueFrom as b,from as g,filter as _,Observable as w,BehaviorSubject as k,Subject as S,of as x,fromEvent as I,merge as E,switchMap as O,tap as C,mergeMap as T,Subscription as j,throwError as U,combineLatest as A,map as P,share as $,timer as D,startWith as L}from"rxjs";import{filter as R,switchMap as N,delay as B,distinctUntilChanged as M,map as F,tap as W,take as K,catchError as V,debounceTime as H,startWith as q,skip as z}from"rxjs/operators";import*as J from"yjs";import{DexieYProvider as G}from"y-dexie";function Y(e,t,n,r){return new(n||(n=Promise))((function(o,s){function i(e){try{l(r.next(e))}catch(e){s(e)}}function a(e){try{l(r.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}l((r=r.apply(e,t||[])).next())}))}function Z(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function X(e){return this instanceof X?(this.v=e,this):new X(e)}function Q(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,o=n.apply(e,t||[]),s=[];return r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r;function i(e){o[e]&&(r[e]=function(t){return new Promise((function(n,r){s.push([e,t,n,r])>1||a(e,t)}))})}function a(e,t){try{!function(e){e.value instanceof X?Promise.resolve(e.value.v).then(l,c):u(s[0][2],e)}(o[e](t))}catch(e){u(s[0][3],e)}}function l(e){a("next",e)}function c(e){a("throw",e)}function u(e,t){e(t),s.shift(),s.length&&a(s[0][0],s[0][1])}}function ee(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=Z(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,o){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,o,(t=e[n](t)).done,t.value)}))}}}const te={}.hasOwnProperty;function ne(e,t,n){if(e&&void 0!==t&&(!("isFrozen"in Object)||!Object.isFrozen(e)))if("string"!=typeof t&&"length"in t){!function(e){if(!e)throw new Error("Assertion Failed")}("string"!=typeof n&&"length"in n);for(var r=0,o=t.length;r<o;++r)ne(e,t[r],n[r])}else{var s=t.indexOf(".");if(-1!==s){var i=t.substr(0,s),a=t.substr(s+1);if(""===a)void 0===n?Array.isArray(e)?isNaN(parseInt(i))||e.splice(parseInt(i),1):delete e[i]:e[i]=n;else{var l=e[i];l&&function(e,t){return te.call(e,t)}(e,i)||(l=e[i]={}),ne(l,a,n)}}else void 0===n?Array.isArray(e)&&!isNaN(parseInt(t))?e.splice(t,1):delete e[t]:e[t]=n}}const re="undefined"!=typeof self&&"undefined"!=typeof crypto?(e,t=crypto.getRandomValues.bind(crypto))=>{const n=new Uint8Array(e);return t(n),self.btoa(String.fromCharCode.apply(null,n))}:"undefined"!=typeof Buffer?(e,t=oe)=>{const n=Buffer.alloc(e);return t(n),n.toString("base64")}:()=>{throw new Error("No implementation of randomString was found")};function oe(e){for(let t=0;t<e.length;++t)e[t]=Math.floor(256*Math.random())}function se(e){return"string"==typeof e||!!(Array.isArray(e)&&e.some((e=>se(e)))&&e.every(ie))}function ie(e){return"string"==typeof e||"number"==typeof e||Array.isArray(e)&&e.every(ie)}function ae(e,t,n){const r=e[t]||(e[t]={}),o=n.keys.map((e=>"string"==typeof e?e:JSON.stringify(e)));switch(n.type){case"insert":case"upsert":o.forEach(((e,t)=>{r[e]={type:"ups",val:n.values[t]}}));break;case"update":case"modify":o.forEach(((e,t)=>{const o="update"===n.type?n.changeSpecs[t]:n.changeSpec,s=r[e];if(s)switch(s.type){case"ups":for(const[e,t]of Object.entries(o))ne(s.val,e,t);break;case"del":break;case"upd":Object.assign(s.mod,o)}else r[e]={type:"upd",mod:o}}));break;case"delete":o.forEach((e=>{r[e]={type:"del"}}))}return e}function le(e,t){for(const{table:n,muts:r}of t)for(const t of r)ae(e,n,t)}function ce(e){return Q(this,arguments,(function*(){var t,n,r,o;let s=0,i=new Uint8Array(4),a=0,l=[],c=0;try{for(var u,d=!0,f=ee(e);!(t=(u=yield X(f.next())).done);d=!0){o=u.value,d=!1;const e=o,t=new DataView(e.buffer,e.byteOffset,e.byteLength);let n=0;for(;n<e.byteLength;)switch(s){case 0:if(n+4>e.byteLength){for(const t of e.slice(n)){if(4===a)break;i[a++]=t,++n}if(a<4)break}else if(a>0&&a<4)for(const t of e.slice(n,n+4-a))i[a++]=t,++n;case 1:c=4===a?new DataView(i.buffer,0,4).getUint32(0,!1):t.getUint32(n,!1),a?a=0:n+=4;case 2:if(n>=e.byteLength){s=2;break}if(n+c>e.byteLength)l.push(e.slice(n)),c-=e.byteLength-n,s=2,n=e.byteLength;else{if(l.length>0){const t=new Uint8Array(l.reduce(((e,t)=>e+t.byteLength),c));let r=0;for(const e of l)t.set(e,r),r+=e.byteLength;t.set(e.slice(n,n+c),r),l=[],yield yield X(t)}else yield yield X(e.slice(n,n+c));n+=c,s=0}}}}catch(e){n={error:e}}finally{try{d||t||!(r=f.return)||(yield X(r.call(f)))}finally{if(n)throw n.error}}}))}let ue=!1;function de(e,t){return Y(this,void 0,void 0,(function*(){try{const n=yield navigator.serviceWorker.ready;if("push"===t&&n.sync&&(yield n.sync.register(`dexie-cloud:${e.name}`)),!n.active)throw new Error("Failed to trigger sync - there's no active service worker");return void n.active.postMessage({type:"dexie-cloud-sync",dbName:e.name,purpose:t})}catch(e){ue||(ue=!0)}}))}function fe(e,t){e.cloud.usingServiceWorker?de(e,t):e.localSyncEvent.next({purpose:t})}const pe="fromBase64"in Uint8Array,ye="toBase64"in Uint8Array.prototype,he="undefined"!=typeof Buffer?e=>Buffer.from(e,"base64"):pe?e=>Uint8Array.fromBase64(e):e=>{const t=atob(e),n=t.length,r=new Uint8Array(n);for(var o=0;o<n;o++)r[o]=t.charCodeAt(o);return r},ve="undefined"!=typeof Buffer?e=>ArrayBuffer.isView(e)?Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("base64"):Buffer.from(e).toString("base64"):ye?e=>(ArrayBuffer.isView(e)?e:new Uint8Array(e)).toBase64():e=>{const t=ArrayBuffer.isView(e)?e:new Uint8Array(e),n=[];for(let e=0,r=t.length;e<r;e+=4096){const r=t.subarray(e,e+4096);n.push(String.fromCharCode.apply(null,r))}return btoa(n.join(""))};class me extends Error{constructor({title:e,message:t,messageCode:n,messageParams:r}){super(t),this.name="TokenErrorResponseError",this.title=e,this.messageCode=n,this.messageParams=r}}function be(t,n){return new Promise(((r,o)=>{const s=Object.assign(Object.assign({submitLabel:"Submit",cancelLabel:"Cancel"},n),{onSubmit:e=>{t.next(void 0),r(e)},onCancel:()=>{t.next(void 0),o(new e.AbortError("User cancelled"))}});t.next(s)}))}function ge(e,t,...n){return be(e,{type:"message-alert",title:t,alerts:n,fields:{},submitLabel:"OK",cancelLabel:null})}function _e(e,t,n){return Y(this,void 0,void 0,(function*(){let r=n||"";for(;!r||!/^[\w-+.]+@([\w-]+\.)+[\w-]{2,10}(\sas\s[\w-+.]+@([\w-]+\.)+[\w-]{2,10})?$/.test(r);)r=(yield be(e,{type:"email",title:t,alerts:r?[{type:"error",messageCode:"INVALID_EMAIL",message:"Please enter a valid email address",messageParams:{}}]:[],fields:{email:{type:"email",placeholder:"you@somedomain.com"}}})).email;return r}))}function we(e,t,n){return Y(this,void 0,void 0,(function*(){const r=[{type:"info",messageCode:"OTP_SENT",message:"A One-Time password has been sent to {email}",messageParams:{email:t}}];n&&r.push(n);const{otp:o}=yield be(e,{type:"otp",title:"Enter OTP",alerts:r,fields:{otp:{type:"otp",label:"OTP",placeholder:"Paste OTP here"}}});return o}))}function ke(e){return Y(this,void 0,void 0,(function*(){var t,n,r;const o=yield e.getCurrentUser(),{accessToken:s,accessTokenExpiration:i,refreshToken:a,refreshTokenExpiration:l,claims:c}=o;if(!s)return null;if((null!==(t=null==i?void 0:i.getTime())&&void 0!==t?t:1/0)>Date.now()&&"ok"===((null===(n=o.license)||void 0===n?void 0:n.status)||"ok"))return o;if(!a)throw new Error("Refresh token missing");if((null!==(r=null==l?void 0:l.getTime())&&void 0!==r?r:1/0)<=Date.now())throw new Error("Refresh token has expired");const u=yield xe(e.cloud.options.databaseUrl,o);return yield e.table("$logins").update(c.sub,{accessToken:u.accessToken,accessTokenExpiration:u.accessTokenExpiration,claims:u.claims,license:u.license,data:u.data}),u}))}function Se(t,n,r,o,s){return Y(this,void 0,void 0,(function*(){return n.accessToken&&n.accessTokenExpiration.getTime()>Date.now()?n:n.refreshToken&&(!n.refreshTokenExpiration||n.refreshTokenExpiration.getTime()>Date.now())?yield xe(t,n):yield function(t,n,r,o){return Y(this,void 0,void 0,(function*(){if(!crypto.subtle)throw"undefined"!=typeof location&&"http:"===location.protocol?new Error("Dexie Cloud Addon needs to use WebCrypto, but your browser has disabled it due to being served from an insecure location. Please serve it from https or http://localhost:<port> (See https://stackoverflow.com/questions/46670556/how-to-enable-crypto-subtle-for-unsecure-origins-in-chrome/46671627#46671627)"):new Error("This browser does not support WebCrypto.");const{privateKey:s,publicKey:i}=yield crypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!1,["sign","verify"]);if(!s||!i)throw new Error("Could not generate RSA keypair");t.nonExportablePrivateKey=s;const a=function(e){const t=ve(e);return function(e){let t="-----BEGIN PUBLIC KEY-----\n";for(;e.length>0;)t+=e.substring(0,64)+"\n",e=e.substring(64);return t+="-----END PUBLIC KEY-----",t}(t)}(yield crypto.subtle.exportKey("spki",i));t.publicKey=i;try{const e=yield n({public_key:a,hints:o});if("error"===e.type)throw new me(e);if("tokens"!==e.type)throw new Error(`Unexpected response type from token endpoint: ${e.type}`);return t.accessToken=e.accessToken,t.accessTokenExpiration=new Date(e.accessTokenExpiration),t.refreshToken=e.refreshToken,e.refreshTokenExpiration&&(t.refreshTokenExpiration=new Date(e.refreshTokenExpiration)),t.userId=e.claims.sub,t.email=e.claims.email,t.name=e.claims.name,t.claims=e.claims,t.license={type:e.userType,status:e.claims.license||"ok"},t.data=e.data,null!=e.evalDaysLeft&&(t.license.evalDaysLeft=e.evalDaysLeft),null!=e.userValidUntil&&(t.license.validUntil=new Date(e.userValidUntil)),e.alerts&&e.alerts.length>0&&(yield be(r,{type:"message-alert",title:"Authentication Alert",fields:{},alerts:e.alerts})),t}catch(t){if(t instanceof me)throw yield ge(r,t.title,{type:"error",messageCode:t.messageCode,message:t.message,messageParams:{}}),t;let n="We're having a problem authenticating right now.";if(t instanceof TypeError){n=void 0!==typeof navigator&&!navigator.onLine?"You seem to be offline. Please connect to the internet and try again.":e.debug||"undefined"!=typeof location&&("localhost"===location.hostname||"127.0.0.1"===location.hostname)?`Could not connect to server. Please verify that your origin '${location.origin}' is whitelisted using \`npx dexie-cloud whitelist\``:"Could not connect to server. Please verify the connection.",yield ge(r,"Authentication Failed",{type:"error",messageCode:"GENERIC_ERROR",message:n,messageParams:{}}).catch((()=>{}))}throw t}}))}(n,r,o,s)}))}function xe(e,t){return Y(this,void 0,void 0,(function*(){if(!t.refreshToken)throw new Error("Cannot refresh token - refresh token is missing.");if(!t.nonExportablePrivateKey)throw new Error("login.nonExportablePrivateKey is missing - cannot sign refresh token without a private key.");const n=Date.now(),r="RSASSA-PKCS1-v1_5",o=(new TextEncoder).encode(t.refreshToken+n),s=yield crypto.subtle.sign(r,t.nonExportablePrivateKey,o),i=ve(s),a={grant_type:"refresh_token",refresh_token:t.refreshToken,scopes:["ACCESS_DB"],signature:i,signing_algorithm:r,time_stamp:n},l=yield fetch(`${e}/token`,{body:JSON.stringify(a),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"});if(200!==l.status)throw new Error(`RefreshToken: Status ${l.status} from ${e}/token`);const c=yield l.json();if("error"===c.type)throw new me(c);return t.accessToken=c.accessToken,t.accessTokenExpiration=c.accessTokenExpiration?new Date(c.accessTokenExpiration):void 0,t.claims=c.claims,t.license={type:c.userType,status:c.claims.license||"ok"},null!=c.evalDaysLeft&&(t.license.evalDaysLeft=c.evalDaysLeft),null!=c.userValidUntil&&(t.license.validUntil=new Date(c.userValidUntil)),c.data&&(t.data=c.data),t}))}const Ie=new WeakMap;class Ee{constructor(e,t){Ie.set(this,e),Object.assign(this,t)}static load(e,t){return e.table("$logins").get(t).then((n=>new Ee(e,n||{userId:t,claims:{sub:t},lastLogin:new Date(0)})))}save(){return Y(this,void 0,void 0,(function*(){Ie.get(this).table("$logins").put(this)}))}}const Oe={userId:"unauthorized",name:"Unauthorized",claims:{sub:"unauthorized"},lastLogin:new Date(0)};try{Object.freeze(Oe),Object.freeze(Oe.claims)}catch(e){}function Ce(e,t){return b(g(e).pipe(_(t)))}function Te(e){return Y(this,void 0,void 0,(function*(){const t=yield je(e);if(t){if(!(yield function(e,t,n){return Y(this,void 0,void 0,(function*(){const r=[{type:"warning",messageCode:"LOGOUT_CONFIRMATION",message:"{numUnsyncedChanges} unsynced changes will get lost!\n Logout anyway?",messageParams:{currentUserId:t,numUnsyncedChanges:n.toString()}}];return yield be(e,{type:"logout-confirmation",title:"Confirm Logout",alerts:r,fields:{},submitLabel:"Confirm logout",cancelLabel:"Cancel"}).then((()=>!0)).catch((()=>!1))}))}(e.cloud.userInteraction,e.cloud.currentUserId,t)))throw new Error("User cancelled logout due to unsynced changes");yield je(e,{deleteUnsyncedData:!0})}}))}function je(e){return Y(this,arguments,void 0,(function*(e,{deleteUnsyncedData:t=!1}={}){const[n,r]=yield e.dx.transaction("rw",e.dx.tables,(n=>Y(this,void 0,void 0,(function*(){const r=n.idbtrans;r.disableChangeTracking=!0,r.disableAccessControl=!0;const o=n.storeNames.filter((e=>e.endsWith("_mutations"))),s=(yield Promise.all(o.map((e=>n.table(e).count())))).reduce(((e,t)=>e+t),0);if(s>0&&!t)return[s,!1];e.$syncState.delete("syncState");for(const t of e.dx.tables)"$jobs"!==t.name&&"$syncState"!==t.name&&t.clear();return[s,!0]}))));return r&&(yield Ce(e.cloud.currentUser,(e=>e.userId===Oe.userId)),yield e.cloud.sync({purpose:"pull",wait:!0})),n}))}class Ue extends Error{constructor(e,t){super(t||`${e.status} ${e.statusText}`),this.httpStatus=e.status}get name(){return"HttpError"}}function Ae(e,...t){globalThis.console[e](...t)}function Pe(e,t){return Y(this,void 0,void 0,(function*(){var n;const r=yield e.getCurrentUser(),o=r.userId;if(r.isLoggedIn&&(!t||!t.email&&!t.userId)){if("ok"===((null===(n=r.license)||void 0===n?void 0:n.status)||"ok")&&r.accessToken&&(!r.accessTokenExpiration||r.accessTokenExpiration.getTime()>Date.now()))return!1;if(r.refreshToken&&(!r.refreshTokenExpiration||r.refreshTokenExpiration.getTime()>Date.now()))return yield ke(e),!1}const s=new Ee(e,{claims:{},lastLogin:new Date(0)});return yield Se(e.cloud.options.databaseUrl,s,e.cloud.options.fetchTokens||function(e){const{userInteraction:t}=e.cloud;return function(n){return Y(this,arguments,void 0,(function*({public_key:n,hints:r}){var o;let s;const i=null===(o=e.cloud.options)||void 0===o?void 0:o.databaseUrl;if(!i)throw new Error("No database URL given.");if("demo"===(null==r?void 0:r.grant_type))s={demo_user:yield _e(t,"Enter a demo user email",(null==r?void 0:r.email)||(null==r?void 0:r.userId)),grant_type:"demo",scopes:["ACCESS_DB"],public_key:n};else if((null==r?void 0:r.otpId)&&r.otp)s={grant_type:"otp",otp_id:r.otpId,otp:r.otp,scopes:["ACCESS_DB"],public_key:n};else{const e=yield _e(t,"Enter email address",null==r?void 0:r.email);s=/@demo.local$/.test(e)?{demo_user:e,grant_type:"demo",scopes:["ACCESS_DB"],public_key:n}:{email:e,grant_type:"otp",scopes:["ACCESS_DB"]}}const a=yield fetch(`${i}/token`,{body:JSON.stringify(s),method:"post",headers:{"Content-Type":"application/json",mode:"cors"}});if(200!==a.status){const e=yield a.text();throw yield ge(t,"Token request failed",{type:"error",messageCode:"GENERIC_ERROR",message:e,messageParams:{}}).catch((()=>{})),new Ue(a,e)}const l=yield a.json();if("tokens"===l.type||"error"===l.type)return l;if("otp"===s.grant_type&&"email"in s){if("otp-sent"!==l.type)throw new Error(`Unexpected response from ${i}/token`);const e=yield we(t,s.email),r=Object.assign(Object.assign({},s),{otp:e||"",otp_id:l.otp_id,public_key:n});let o=yield fetch(`${i}/token`,{body:JSON.stringify(r),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"});for(;401===o.status;){const e=yield o.text();r.otp=yield we(t,s.email,{type:"error",messageCode:"INVALID_OTP",message:e,messageParams:{}}),o=yield fetch(`${i}/token`,{body:JSON.stringify(r),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"})}if(200!==o.status){const e=yield o.text();throw new Ue(o,e)}return yield o.json()}throw new Error(`Unexpected response from ${i}/token`)}))}}(e),e.cloud.userInteraction,t),o!==Oe.userId&&s.userId!==o&&(yield Te(e)),yield function(e,t){return Y(this,void 0,void 0,(function*(){const n=e.table("$logins");yield e.transaction("rw",n,(e=>Y(this,void 0,void 0,(function*(){const e=yield n.toArray();yield Promise.all(e.filter((e=>e.userId!==t.userId&&e.isLoggedIn)).map((e=>(e.isLoggedIn=!1,n.put(e))))),t.isLoggedIn=!0,t.lastLogin=new Date;try{yield t.save()}catch(e){try{"DataCloneError"===e.name&&(Ae("debug","Login context property names:",Object.keys(t)),Ae("debug","Login context property names:",Object.keys(t)),Ae("debug","Login context:",t),Ae("debug","Login context JSON:",JSON.stringify(t)))}catch(e){}throw e}})))),yield Ce(e.cloud.currentUser,(e=>e.userId===t.userId))}))}(e,s),fe(e,"pull"),s.userId!==o}))}const $e={},De="undefined"!=typeof self&&self.document&&"undefined"!=typeof navigator&&navigator.serviceWorker;De&&De.ready.then((e=>$e.registration=e)),"undefined"!=typeof self&&"clients"in self&&!self.document&&addEventListener("message",(e=>{var t,n;(null===(n=null===(t=e.data)||void 0===t?void 0:t.type)||void 0===n?void 0:n.startsWith("sw-broadcast-"))&&[...self.clients.matchAll({includeUncontrolled:!0})].forEach((t=>{var n;return t.id!==(null===(n=e.source)||void 0===n?void 0:n.id)&&t.postMessage(e.data)}))}));class Le{constructor(e){this.name=e}subscribe(e){if(!De)return()=>{};const t=t=>{var n;(null===(n=t.data)||void 0===n?void 0:n.type)===`sw-broadcast-${this.name}`&&e(t.data.message)};return De.addEventListener("message",t),()=>De.removeEventListener("message",t)}postMessage(e){var t;"object"==typeof self.clients?[...self.clients.matchAll({includeUncontrolled:!0})].forEach((t=>t.postMessage({type:`sw-broadcast-${this.name}`,message:e}))):$e.registration&&(null===(t=$e.registration.active)||void 0===t||t.postMessage({type:`sw-broadcast-${this.name}`,message:e}))}}const Re=globalThis["lbc-events"]||(globalThis["lbc-events"]=new Map);class Ne extends w{constructor(e){const t="undefined"==typeof BroadcastChannel?new Le(e):new BroadcastChannel(e);super((n=>{function r(e){n.next(e.detail)}function o(e){n.next(e.data)}let s;!function(e,t){Re.has(e)?Re.get(e).push(t):Re.set(e,[t])}(`lbc-${e}`,r);try{t instanceof Le?s=t.subscribe((e=>n.next(e))):t.addEventListener("message",o)}catch(e){}return()=>{!function(e,t){const n=Re.get(e);if(n){const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}(`lbc-${e}`,r),t instanceof Le?s():t.removeEventListener("message",o)}})),this.name=e,this.bc=t}next(e){this.bc.postMessage(e);!function(e){const t=Re.get(e.type);t&&t.forEach((t=>{try{t(e)}catch(e){}}))}(new CustomEvent(`lbc-${this.name}`,{detail:e}))}}function Be(e){return Y(this,arguments,void 0,(function*({realms:e,inviteRealms:t}){const n=JSON.stringify([...e.map((e=>({realmId:e,accepted:!0}))),...t.map((e=>({realmId:e,accepted:!1})))].sort(((e,t)=>e.realmId<t.realmId?-1:e.realmId>t.realmId?1:0))),r=(new TextEncoder).encode(n),o=yield crypto.subtle.digest("SHA-1",r);return ve(o)}))}function Me(e){return Object.entries(e.cloud.schema||{}).filter((([,{markedForSync:e}])=>e)).map((([t])=>e.tables.filter((({name:e})=>e===t))[0])).filter((e=>e))}function Fe(e){return`$${e}_mutations`}function We(e){var t;const n=null===(t=/^\$(.*)_mutations$/.exec(e))||void 0===t?void 0:t[1];if(!n)throw new Error(`Given mutationTable ${e} is not correct`);return n}const Ke=[].concat;function Ve(e){return Ke.apply([],e)}function He(e,t){return Y(this,arguments,void 0,(function*(e,t,{since:n={},limit:r=1/0}={}){const o=Ve(yield Promise.all(e.map((e=>Y(this,void 0,void 0,(function*(){const t=We(e.name),o=n[t];let s=o?e.where("rev").above(o):e;r<1/0&&(s=s.limit(r));return(yield s.toArray()).map((e=>({table:t,mut:e})))})))))).sort(((e,t)=>e.mut.txid===t.mut.txid?e.mut.opNo-t.mut.opNo:e.mut.ts-t.mut.ts)),s=[];let i=null,a=null;for(const{table:e,mut:t}of o)i&&i.table===e&&a===t.txid?i.muts.push(t):(i={table:e,muts:[t]},a=t.txid,s.push(i));return s}))}function qe(e){const t=new Uint8Array(e);if("undefined"!=typeof crypto)crypto.getRandomValues(t);else for(let n=0;n<e;n++)t[n]=Math.floor(256*Math.random());if("undefined"!=typeof Buffer&&Buffer.from)return Buffer.from(t).toString("base64");if("undefined"!=typeof btoa)return btoa(String.fromCharCode.apply(null,t));throw new Error("No btoa or Buffer available")}const{toString:ze}={};const Je={replace:function(e){const t=Object.keys(e);let n=null;for(let e=0,r=t.length;e<r;++e)"$"===t[e][0]&&(n=n||[],n.push(t[e]));if(!n)return e;const r={...e};for(const e of n)delete r[e];for(const t of n)r["$"+t]=e[t];return r}};function Ge(...e){const t=e.reduce(((e,t)=>({...e,...t})),e.reduce(((e,t)=>({...t,...e})),{})),n=new WeakMap;return{stringify(e,r,o){const s=JSON.stringify(e,(function(e){const o=this[e],s=function(e){const r=typeof e;switch(typeof e){case"object":case"function":{if(null===e)return null;const r=Object.getPrototypeOf(e);if(!r)return Je;let s=n.get(r);if(void 0!==s)return s;const i=(o=e,ze.call(o).slice(8,-1)),a=Object.entries(t).find((([t,n])=>{var r,o;return null!==(o=null===(r=null==n?void 0:n.test)||void 0===r?void 0:r.call(n,e,i))&&void 0!==o?o:t===i}));return s=null==a?void 0:a[1],s||(s=Array.isArray(e)?null:"function"==typeof e?t.function||null:Je),n.set(r,s),s}default:return t[r]}var o}(o);return s?s.replace(o,r,t):o}),o);return s},parse(e,n){const r=[];return JSON.parse(e,(function(e,o){const s=null==o?void 0:o.$t;if(s){const e=t[s];o=e?e.revive(o,n,t):o}let i=r[r.length-1];if(i&&i[0]===o){o={...o};for(const e of i[1])delete o[e];for(const[e,t]of Object.entries(i[2]))o[e]=t;r.pop()}if(void 0===o||"$"===e[0]&&"$t"!==e){let t,n;i=r[r.length-1],i&&i[0]===this?(t=i[1],n=i[2]):r.push([this,t=[],n={}]),"$"===e[0]&&"$t"!==e?(t.push(e),n[e.substr(1)]=o):n[e]=void 0}return o}))}}}const Ye={Blob:{test:(e,t)=>"Blob"===t,replace:(e,t)=>{const n=t.length;return t.push(e),{$t:"Blob",mimeType:e.type,i:n}},revive:({i:e,mimeType:t},n)=>new Blob([n[e]],{type:t})}};var Ze={number:{replace:e=>{switch(!0){case isNaN(e):return{$t:"number",v:"NaN"};case e===1/0:return{$t:"number",v:"Infinity"};case e===-1/0:return{$t:"number",v:"-Infinity"};default:return e}},revive:({v:e})=>Number(e)}};const Xe={bigint:{replace:e=>({$t:"bigint",v:""+e}),revive:e=>BigInt(e.v)}};var Qe={Date:{replace:e=>({$t:"Date",v:isNaN(e.getTime())?"NaN":e.toISOString()}),revive:({v:e})=>new Date("NaN"===e?NaN:Date.parse(e))}},et={Set:{replace:e=>({$t:"Set",v:Array.from(e.entries())}),revive:({v:e})=>new Set(e)}},tt={Map:{replace:e=>({$t:"Map",v:Array.from(e.entries())}),revive:({v:e})=>new Map(e)}};const nt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0;var rt=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","DataView","BigInt64Array","BigUint64Array"].reduce(((e,t)=>({...e,[t]:{replace:(e,n,r)=>({$t:t,v:r.ArrayBuffer.replace(0===e.byteOffset&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength),n,r).v}),revive:({v:e},n,r)=>{const o=nt[t];return o&&new o(r.ArrayBuffer.revive({v:e},n,r))}}})),{});function ot(e){return function(e){for(var t="",n=0,r=e.length;n<r;n++)t+=at[e[n]];return t}(ve(e))}function st(e){return he(function(e){if("string"!=typeof e)throw new Error("invalid decoder input: "+e);for(var t="",n=0,r=e.length;n<r;n++)t+=it[e[n]];return t}(e))}const it={"-":"=",0:"A",1:"B",2:"C",3:"D",4:"E",5:"F",6:"G",7:"H",8:"I",9:"J",A:"K",B:"L",C:"M",D:"N",E:"O",F:"P",G:"Q",H:"R",I:"S",J:"T",K:"U",L:"V",M:"W",N:"X",O:"Y",P:"Z",Q:"a",R:"b",S:"c",T:"d",U:"e",V:"f",W:"g",X:"h",Y:"i",Z:"j",_:"k",a:"l",b:"m",c:"n",d:"o",e:"p",f:"q",g:"r",h:"s",i:"t",j:"u",k:"v",l:"w",m:"x",n:"y",o:"z",p:"0",q:"1",r:"2",s:"3",t:"4",u:"5",v:"6",w:"7",x:"8",y:"9",z:"+","|":"/"},at={};for(const e of Object.keys(it))at[it[e]]=e;var lt={ArrayBuffer:{replace:e=>({$t:"ArrayBuffer",v:ot(e)}),revive:({v:e})=>{const t=st(e);return t.buffer.byteLength===t.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}}};class ct{constructor(e,t){this.buf=e,this.type=t}}function ut(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 t.responseText}function dt(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;++n)t[n]=e.charCodeAt(n);return t.buffer}var ft={Blob:{test:(e,t)=>"Blob"===t||e instanceof ct,replace:e=>({$t:"Blob",v:ve(e instanceof ct?e.buf:dt(ut(e))),type:e.type}),revive:({type:e,v:t})=>{const n=he(t);return void 0!==typeof Blob?new Blob([n]):new ct(n.buffer,e)}}};const pt={...Ze,...Xe,...Qe,...et,...tt,...rt,...lt,...ft};function yt(e){return new Promise(((t,n)=>{const r=new FileReader;r.onabort=e=>n(new Error("file read aborted")),r.onerror=e=>n(e.target.error),r.onload=e=>t(e.target.result),r.readAsArrayBuffer(e)}))}var ht={undefined:{replace:()=>({$t:"undefined"}),revive:()=>{}}},vt={File:{test:(e,t)=>"File"===t,replace:e=>({$t:"File",v:ve(dt(ut(e))),type:e.type,name:e.name,lastModified:new Date(e.lastModified).toISOString()}),revive:({type:e,v:t,name:n,lastModified:r})=>{const o=he(t);return new File([o],n,{type:e,lastModified:new Date(r).getTime()})}}};const mt="function"==typeof BigInt&&"bigint"==typeof BigInt(0);class bt{toString(){return this.v}constructor(e){this.v=e}}const gt=mt?{}:{bigint:{test:e=>e instanceof bt,replace:e=>Object.assign({$t:"bigint"},e),revive:({v:e})=>new bt(e)}},_t=Object.assign(Object.assign(Object.assign(Object.assign({},ht),gt),vt),{PropModification:{test:e=>e instanceof t,replace:e=>Object.assign({$t:"PropModification"},e["@@propmod"]),revive:e=>{var n=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}(e,["$t"]);return new t(n)}}}),wt=Ge(pt,_t),kt=function(...e){const t=Ge(pt,Ye,...e);return{toBinary(e){const[t,n]=this.stringify(e),r=new ArrayBuffer(4);return new DataView(r).setUint32(0,t.size),new Blob([r,t,n])},stringify(e){const n=[],r=t.stringify(e,n),o=new Blob(n.map((e=>{const t=new ArrayBuffer(4);return new DataView(t).setUint32(0,"byteLength"in e?e.byteLength:e.size),new Blob([t,e])})));return[o,r]},async parse(e,n){let r=0;const o=[],s=await yt(n),i=new DataView(s);for(;r<s.byteLength;){const e=i.getUint32(r);r+=4;const t=s.slice(r,r+e);r+=e,o.push(t)}return t.parse(e,o)},async fromBinary(e){const t=new DataView(await yt(e.slice(0,4))).getUint32(0),n=e.slice(4,t+4),r=await function(e){return new Promise(((t,n)=>{const r=new FileReader;r.onabort=e=>n(new Error("file read aborted")),r.onerror=e=>n(e.target.error),r.onload=e=>t(e.target.result),r.readAsText(e)}))}(e.slice(t+4));return await this.parse(r,n)}}}(_t);function St(t,n,r){const o=[];for(let s of r){const{table:r,muts:i}=s,a=t.tables.find((e=>e.name===r));if(!a)throw new Error(`Internal error: table ${r} not found in DBCore schema`);const{primaryKey:l}=a;let c=s;i.forEach(((t,r)=>{const o=!l.outbound&&("upsert"===t.type||"insert"===t.type);t.keys.forEach(((t,i)=>{if(Array.isArray(t)){c===s&&(c=xt(s,o));const e=c.muts[r],n=JSON.stringify(t);e.keys[i]=n}else if("#"===t[0]){c===s&&(c=xt(s,o));const a=c.muts[r];if(!n.isLoggedIn)throw new Error("Internal error: Cannot sync private IDs before authenticated");const u=`${t}:${n.userId}`;a.keys[i]=u,o&&e.setByKeyPath(a.values[i],l.keyPath,u)}}))})),o.push(c)}return o}function xt(e,t){return Object.assign(Object.assign({},e),{muts:t?e.muts.map((e=>"insert"!==e.type&&"upsert"!==e.type||!e.values?Object.assign(Object.assign({},e),{keys:e.keys.slice()}):Object.assign(Object.assign({},e),{keys:e.keys.slice(),values:e.values.slice()}))):e.muts.map((e=>Object.assign(Object.assign({},e),{keys:e.keys.slice()})))})}let It=new WeakMap;function Et(e){return Y(this,void 0,void 0,(function*(){var t,n;const r=(null!==(n=null===(t=It.get(e))||void 0===t?void 0:t.getTime())&&void 0!==n?n:0)-Date.now();r>0&&(yield new Promise((e=>setTimeout(e,r))))}))}function Ot(e,t,n,r,o,s,i,a,l){return Y(this,void 0,void 0,(function*(){const c={Accept:"application/json, application/x-bison, application/x-bison-stream","Content-Type":"application/tson"},u=yield ke(o),d=null==u?void 0:u.accessToken;d&&(c.Authorization=`Bearer ${d}`);const f={v:2,dbID:null==n?void 0:n.remoteDbId,clientIdentity:a,schema:i||{},lastPull:n?{serverRevision:n.serverRevision,yServerRevision:n.yServerRevision,realms:n.realms,inviteRealms:n.inviteRealms}:void 0,baseRevs:r,changes:St(o.dx.core.schema,l,e),y:t,dxcv:o.cloud.version};o.syncStateChangedEvent.next({phase:"pushing"});const p=wt.stringify(f),y=yield fetch(`${s}/sync`,{method:"post",headers:c,credentials:"include",body:p});if(o.syncStateChangedEvent.next({phase:"pulling"}),function(e,t){const n=t.headers.get("Ratelimit-Limit"),r=t.headers.get("Ratelimit-Remaining"),o=t.headers.get("Ratelimit-Reset");if(n&&r&&o){const t=Number(n),s=Math.max(0,Number(r)),i=Number(o);if(s<t/2){const t=Math.ceil(i/(s+1));It.set(e,new Date(Date.now()+1e3*t))}else It.delete(e)}}(o,y),!y.ok)throw new Ue(y);if("application/x-bison"===y.headers.get("content-type"))return kt.fromBinary(yield y.blob());{const e=yield y.text();return wt.parse(e)}}))}function Ct(t){if(null==t?void 0:t.cancelled)throw new e.AbortError("Operation was cancelled")}let Tt=!1;function jt(e,t,n,r){return Y(this,void 0,void 0,(function*(){yield e.$baseRevs.bulkPut(Object.keys(t).filter((e=>t[e].markedForSync)).map((e=>({tableName:e,clientRev:(n[e]||0)+1,serverRev:r})))),yield e.$baseRevs.where("tableName").noneOf(Object.keys(t).filter((e=>t[e].markedForSync))).delete()}))}function Ut(e,t={}){for(const{table:n,muts:r}of e){const e=r.length>0?r[r.length-1].rev:null;t[n]=e||t[n]||0}return t}function At(t,r,o){return Y(this,void 0,void 0,(function*(){const s=yield t.bulkGet(r),i=[],a=[];r.forEach(((r,l)=>{const c=s[l];if(c){for(const[s,i]of Object.entries(o[l]))if(s===t.schema.primKey.keyPath){if(0!==n(i,r))throw new Error("Cannot change primary key")}else e.setByKeyPath(c,s,i);i.push(r),a.push(c)}})),yield null==t.schema.primKey.keyPath?t.bulkPut(a,i):t.bulkPut(a)}))}function Pt(t,n){return Y(this,void 0,void 0,(function*(){for(const{table:r,muts:o}of t){if(!n.dx._allTables[r])continue;const t=n.table(r),{primaryKey:s}=t.core.schema,i=e=>{switch(e[0]){case"[":if(e.endsWith("]"))try{return JSON.parse(e)}catch(e){}return e;case"#":return e.endsWith(":"+n.cloud.currentUserId)?e.substr(0,e.length-n.cloud.currentUserId.length-1):e;default:return e}};for(const n of o){const r=n.keys.map(i);switch(n.type){case"insert":s.outbound?yield t.bulkAdd(n.values,r):(r.forEach(((t,r)=>{e.setByKeyPath(n.values[r],s.keyPath,t)})),yield t.bulkAdd(n.values));break;case"upsert":s.outbound?yield t.bulkPut(n.values,r):(r.forEach(((t,r)=>{e.setByKeyPath(n.values[r],s.keyPath,t)})),yield t.bulkPut(n.values));break;case"modify":1===r.length?yield t.update(r[0],n.changeSpec):yield t.where(":id").anyOf(r).modify(n.changeSpec);break;case"update":yield At(t,r,n.changeSpecs);break;case"delete":yield t.bulkDelete(r)}}}}))}"undefined"!=typeof self&&"undefined"!=typeof navigator&&(Tt=navigator.onLine,self.addEventListener("online",(()=>Tt=!0)),self.addEventListener("offline",(()=>Tt=!1)));const $t="dexie-cloud-syncer";function Dt(e,t){return e.where("i").between(t,1/0,!0).toArray()}function Lt(e,t,n){var r,o,s;if(!e.dx._allTables[t])return;const i=null===(s=null===(o=null===(r=e.table(t))||void 0===r?void 0:r.schema.yProps)||void 0===o?void 0:o.find((e=>e.prop===n)))||void 0===s?void 0:s.updatesTable;return i&&e.dx._allTables[i]?e.table(i):void 0}function Rt(e,t){return Y(this,void 0,void 0,(function*(){var r;const o={};let s,i=!1;for(const a of e)try{switch(a.type){case"u-s":{const e=Lt(t,a.table,a.prop);if(e){const t={k:a.k,u:a.u};a.r&&(t.r=a.r,s=a.r),o[e.name]=yield e.add(t)}break}case"u-ack":{const e=Lt(t,a.table,a.prop);e&&(yield t.transaction("rw",e,(t=>Y(this,void 0,void 0,(function*(){let n=yield t.table(e.name).get($t);yield t.table(e.name).put(Object.assign(Object.assign({},n||{i:$t}),{unsentFrom:Math.max((null==n?void 0:n.unsentFrom)||1,a.i+1)}))})))));break}case"u-reject":{const e=Lt(t,a.table,a.prop);if(!e)break;const o=null===(r=yield e.get(a.i))||void 0===r?void 0:r.k;if(null!=o){yield t.transaction("rw",e,(t=>(t.idbtrans._rejecting_y_ypdate=!0,e.where("i").aboveOrEqual(a.i).filter((e=>0===n(e.k,o)&&1==(1&(e.f||0)))).delete())));const r=G.getDocCache(t.dx).find(a.table,o,a.prop);r&&r.destroy()}break}case"in-sync":{const e=G.getDocCache(t.dx).find(a.table,a.k,a.prop);e&&!e.isSynced&&e.emit("sync",[!0,e]);break}case"y-complete-sync-done":s=a.yServerRev;break;case"outdated-server-rev":i=!0}}catch(e){}return{receivedUntils:o,resyncNeeded:i,yServerRevision:s}}))}const Nt=1,Bt=2,Mt=3;function Ft(t,n,r){return Y(this,arguments,void 0,(function*(t,n,{yDownloadedRealms:r,realms:o}){if(r&&o&&o.every((e=>"*"===r[e])))return;const s=yield ke(t),i={"Content-Type":"application/json",Accept:"application/octet-stream"};s&&(i.Authorization=`Bearer ${s.accessToken}`);const a=yield fetch(`${n}/y/download`,{body:wt.stringify({downloadedRealms:r||{}}),method:"POST",headers:i,credentials:"include"});if(!a.ok)throw new Error(`Failed to download Yjs documents from server. Status: ${a.status}`);yield async function(e,...t){var n,r,o;let s=e();for(let e=0;e<t.length;e++)s=t[e](s);try{for(var i,a=!0,l=ee(s);!(n=(i=await l.next()).done);a=!0)i.value,a=!1}catch(e){r={error:e}}finally{try{a||n||!(o=l.return)||await o.call(l)}finally{if(r)throw r.error}}}(function(e){return function(){return Q(this,arguments,(function*(){if(!e.body)throw new Error("Response body is not readable");const t=e.body.getReader();try{for(;;){const{done:e,value:n}=yield X(t.read());if(e)return yield X(void 0);yield yield X(n)}}finally{t.releaseLock()}}))}}(a),ce,(function(r){return Q(this,arguments,(function*(){var o,s,i,a;let l=null,c=null,u=null,h=[];function b(e){return Y(this,void 0,void 0,(function*(){const r=h[h.length-1];if(h.length>0){if(!l||!c||!u)throw new Error(`Protocol error from ${n}/y/download`);const e=Lt(t,c,u);e&&(yield e.bulkAdd(h)),h=[]}l&&(c&&u&&r||e)&&(yield t.$syncState.update("syncState",(t=>{const n=t.yDownloadedRealms||{};n[l]=e?"*":{tbl:c,prop:u,key:r.k},t.yDownloadedRealms=n})))}))}try{try{for(var g,_=!0,w=ee(r);!(o=(g=yield X(w.next())).done);_=!0){a=g.value,_=!1;const e=new d(a);for(;v(e);)switch(m(e)){case Nt:yield X(b(!0)),l=f(e);break;case Bt:yield X(b(!1)),c=f(e),u=f(e);break;case Mt:{const t=p(e),n=y(e);h.push({k:t,u:n});break}}yield X(b(!1))}}catch(e){s={error:e}}finally{try{_||o||!(i=w.return)||(yield X(i.call(w)))}finally{if(s)throw s.error}}yield X(b(!0))}catch(t){throw t instanceof e.DexieError||(yield X(b(!1))),t}}))}))}))}const Wt="currentSyncWorker";function Kt(e,t,n,r){return Vt(e,t,n,r).then((t=>((null==r?void 0:r.justCheckIfNeeded)||e.syncStateChangedEvent.next({phase:"in-sync"}),t))).catch((o=>Y(this,void 0,void 0,(function*(){return(null==r?void 0:r.justCheckIfNeeded)?Promise.reject(o):Tt&&(null==r?void 0:r.retryImmediatelyOnFetchError)&&"TypeError"===(null==o?void 0:o.name)&&/fetch/.test(null==o?void 0:o.message)?(e.syncStateChangedEvent.next({phase:"error",error:o}),yield new Promise((e=>setTimeout(e,500))),yield Kt(e,t,n,Object.assign(Object.assign({},r),{retryImmediatelyOnFetchError:!1}))):(yield e.$syncState.update("syncState",{timestamp:new Date,error:""+o}),e.syncStateChangedEvent.next({phase:Tt?"error":"offline",error:new Error(""+(null==o?void 0:o.message)||o)}),Promise.reject(o))}))))}function Vt(e,t,n){return Y(this,arguments,void 0,(function*(e,t,n,{isInitialSync:r,cancelToken:o,justCheckIfNeeded:s,purpose:i}={isInitialSync:!1}){var a;if(!(null===(a=e.cloud.options)||void 0===a?void 0:a.databaseUrl))throw new Error("Internal error: sync must not be called when no databaseUrl is configured");const{databaseUrl:l}=t,c=yield e.getCurrentUser(),u=c.isLoggedIn?Me(e):[],d=u.map((t=>e.table(Fe(t.name)))),f=yield e.getPersistedSyncState(),p=c.isLoggedIn,y=p?function(e,t){const n=(null==t?void 0:t.syncedTables)||[];return Me(e).filter((e=>!n.includes(e.name)))}(e,f):[];Ct(o);const h=y.length>0;if(h){if(s)return!0;yield e.transaction("rw",y,(e=>Y(this,void 0,void 0,(function*(){e.idbtrans.disableChangeTracking=!0,e.idbtrans.disableAccessControl=!0,yield function(e,t,n){return Y(this,void 0,void 0,(function*(){const r=new Set(n||[]);for(const n of e)"members"===n.name?yield n.toCollection().modify((e=>{r.has(e.realmId)||e.userId&&e.userId!==Oe.userId||(e.userId=t.userId)})):"roles"===n.name||("realms"===n.name?yield n.toCollection().modify((e=>{r.has(e.realmId)||void 0!==e.owner&&e.owner!==Oe.userId||(e.owner=t.userId)})):yield n.toCollection().modify((e=>{e.realmId&&r.has(e.realmId)||(e.owner&&e.owner!==Oe.userId||(e.owner=t.userId),e.realmId&&e.realmId!==Oe.userId||(e.realmId=t.userId))})))}))}(y,c,null==f?void 0:f.realms)})))),Ct(o)}const[v,m,b,{yMessages:g,lastUpdateIds:_}]=yield e.transaction("r",e.tables,(()=>Y(this,void 0,void 0,(function*(){const t=yield e.getPersistedSyncState();let r=yield e.$baseRevs.toArray();r=r.filter((e=>u.some((t=>t.name===e.tableName))));let s=yield He(d,e);const i=yield function(e,t){return Y(this,void 0,void 0,(function*(){const n=[],r={};for(const o of t)if(o.schema.yProps)for(const t of o.schema.yProps){const s=e.table(t.updatesTable),i=yield s.get($t),a=(null==i?void 0:i.unsentFrom)||1,l=(null==i?void 0:i.receivedUntil)||0,c=Math.min(a,l+1),u=yield Dt(s,c);u.length>0&&(r[s.name]=u[u.length-1].i);const d={};for(const e of u){const t=1==(1&(e.f||0));if(t&&e.i<a)continue;const n=JSON.stringify(e.k)+"/"+t;let r=d[n];r?(r.u.push(e.u),r.i=Math.max(e.i,r.i)):(d[n]=r={i:e.i,k:e.k,isLocal:t,u:[]},r.u.push(e.u))}for(const{k:e,isLocal:r,u:s,i:i}of Object.values(d)){const a=1===s.length?s[0]:J.mergeUpdatesV2(s);if(r)n.push({type:"u-c",table:o.name,prop:t.prop,k:e,u:a,i:i});else{const r=J.encodeStateVectorFromUpdateV2(a);n.push({type:"sv",table:o.name,prop:t.prop,k:e,sv:r})}}}return{yMessages:n,lastUpdateIds:r}}))}(e,u);if(Ct(o),h){const e=[...(null==f?void 0:f.realms)||[],...(null==f?void 0:f.inviteRealms)||[]],a=yield function(e,t,n,r){return Y(this,void 0,void 0,(function*(){const o=`upload-${qe(8)}`;if(t.isLoggedIn&&e.length>0){const s=new Set(r||[]);return(yield Promise.all(e.map((e=>Y(this,void 0,void 0,(function*(){const{extractKey:r}=e.core.schema.primaryKey;if(!r)return{table:e.name,muts:[]};const i=n[e.name],a=(null==i?void 0:i.generatedGlobalId)?e.filter((e=>{return r(e),!s.has(e.realmId||"")&&(t=r(e),!(n=null==i?void 0:i.idPrefix)||"string"==typeof t&&t.startsWith(n));var t,n})):e.filter((e=>{const t=r(e);return!s.has(e.realmId||"")&&se(t)})),l=yield a.toArray();if(l.length>0){const n={type:"upsert",values:l,keys:l.map(r),userId:t.userId,txid:o};return{table:e.name,muts:[n]}}return{table:e.name,muts:[]}})))))).filter((e=>e.muts.length>0))}return[]}))}(y,c,n,e);return Ct(o),s=s.concat(a),[s,t,r,i]}return[s,t,r,i]})))),w=v.some((e=>e.muts.some((e=>e.keys.length>0))))||g.some((e=>"u-c"===e.type));if(s)return w;if("push"===i&&!w)return!1;const k=Ut(v,null==m?void 0:m.latestRevisions),S=(null==m?void 0:m.clientIdentity)||re(16);Ct(o);const x=yield Ot(v,g,m,b,e,l,n,S,c),{done:I,newSyncState:E}=yield e.transaction("rw",e.tables,(t=>Y(this,void 0,void 0,(function*(){t.idbtrans.disableChangeTracking=!0,t.idbtrans.disableAccessControl=!0;for(const e of Object.keys(n))x.schema[e]&&(n[e]=x.schema[e]);yield e.$syncState.put(n,"schema");const r=yield He(d,e,{since:k});for(const t of d){const n=We(t.name);if(r.some((e=>e.table===n&&e.muts.length>0))){if(k[n]){const r=k[n]||0;yield Promise.all([t.where("rev").belowOrEqual(r).delete(),e.$baseRevs.where(":id").between([n,-1/0],[n,r+1],!0,!0).reverse().offset(1).delete()])}}else yield Promise.all([t.clear(),e.$baseRevs.where({tableName:n}).delete()])}Ut(r,k),yield jt(e,n,k,x.serverRevision);const o=yield e.getPersistedSyncState();yield function(e,t,n){return Y(this,void 0,void 0,(function*(){const r=new Set,o=new Set,s=n?n.realms:[],i=n?n.inviteRealms:[],a=new Set(t.realms),l=new Set(t.realms.concat(t.inviteRealms));for(const e of s)a.has(e)||(o.add(e),l.has(e)||r.add(e));for(const e of i.concat(s))l.has(e)||r.add(e);if(r.size>0||o.size>0){const t=Me(e);for(const e of t){let t=["realms","members","roles"].includes(e.name)?r:o;0!==t.size&&(e.schema.indexes.some((e=>"realmId"===e.keyPath||Array.isArray(e.keyPath)&&"realmId"===e.keyPath[0]))?yield e.where("realmId").anyOf([...t]).delete():yield e.filter((e=>!!(null==e?void 0:e.realmId)&&t.has(e.realmId))).delete())}}if(o.size>0&&(null==n?void 0:n.yDownloadedRealms))for(const e of o)delete n.yDownloadedRealms[e]}))}(e,x,o);const s=o||{syncedTables:[],latestRevisions:{},realms:[],inviteRealms:[],clientIdentity:S};p&&(s.syncedTables=u.map((e=>e.name)).concat(y.map((e=>e.name)))),s.latestRevisions=k,s.remoteDbId=x.dbId,s.initiallySynced=!0,s.realms=x.realms,s.inviteRealms=x.inviteRealms,s.serverRevision=x.serverRevision,s.yServerRevision=x.serverRevision,s.timestamp=new Date,delete s.error;const i=Ht(x.changes,r);if(yield Pt(i,e),x.yMessages){const{receivedUntils:t,resyncNeeded:n,yServerRevision:r}=yield Rt(x.yMessages,e);r&&(s.yServerRevision=r),yield function(e,t,n){return Y(this,void 0,void 0,(function*(){var r,o,s,i,a;const l={};for(const[t,n]of Object.entries(e))null!==(r=l[t])&&void 0!==r||(l[t]={}),l[t].unsentFrom=n+1;for(const[e,n]of Object.entries(t))null!==(o=l[e])&&void 0!==o||(l[e]={}),l[e].receivedUntil=n;const c=Object.values(n.dx._dbSchema).filter((e=>e.yProps)).map((e=>e.yProps.map((e=>e.updatesTable)))).flat();for(const e of c){const t=l[e],r=null!==(s=null==t?void 0:t.unsentFrom)&&void 0!==s?s:1,o=null!==(a=null!==(i=null==t?void 0:t.receivedUntil)&&void 0!==i?i:(yield n.table(e).where("i").between(1,1/0).reverse().limit(1).primaryKeys())[0])&&void 0!==a?a:0;yield n.transaction("rw",e,(()=>Y(this,void 0,void 0,(function*(){const t=yield n.table(e).get($t);t?(t.unsentFrom=Math.max(r,t.unsentFrom||1),t.receivedUntil=Math.max(o,t.receivedUntil||0),yield n.table(e).put(t)):yield n.table(e).add({i:$t,unsentFrom:r,receivedUntil:o})}))))}}))}(_,t,e),n&&(s.yDownloadedRealms={})}return e.$syncState.put(s,"syncState"),{done:0===r.length,newSyncState:s}}))));if(!I)return yield Et(e),yield Vt(e,t,n,{isInitialSync:r,cancelToken:o});const O=Object.values(n).some((e=>{var t;return null===(t=e.yProps)||void 0===t?void 0:t.length})),C=!!x.yMessages;if(O&&C)try{yield Ft(e,l,E)}catch(e){}return e.syncCompleteEvent.next(),!1}))}function Ht(e,t){const n={};le(n,e);const r={};return le(r,t),function(e,t){var n,r,o;for(const[s,i]of Object.entries(t))for(const[t,a]of Object.entries(i))switch(a.type){case"ups":{const r=null===(n=e[s])||void 0===n?void 0:n[t];if(r)switch(r.type){case"ups":case"upd":delete e[s][t]}}break;case"del":null===(r=e[s])||void 0===r||delete r[t];break;case"upd":{const n=null===(o=e[s])||void 0===o?void 0:o[t];if(n)switch(n.type){case"ups":for(const[e,t]of Object.entries(a.mod))ne(n.val,e,t);break;case"del":break;case"upd":for(const e of Object.keys(a.mod))delete n.mod[e]}break}}}(n,r),function(e,t=""){t||(t=re(16));const n={};for(const[t,r]of Object.entries(e))for(const[e,o]of Object.entries(r)){const r=n[t]||(n[t]={});(r[o.type]||(r[o.type]=[])).push(Object.assign({key:e},o))}const r=[];for(const[e,o]of Object.entries(n)){const n={table:e,muts:[]};for(const[e,r]of Object.entries(o))switch(e){case"ups":{const e={type:"upsert",keys:r.map((e=>e.key)),values:r.map((e=>e.val)),txid:t};n.muts.push(e);break}case"upd":{const e={type:"update",keys:r.map((e=>e.key)),changeSpecs:r.map((e=>e.mod)),txid:t};n.muts.push(e);break}case"del":{const e={type:"delete",keys:r.map((e=>e.key)),txid:t};n.muts.push(e);break}}r.push(n)}return r}(n)}const qt=10,zt=1e4,Jt=1e3;function Gt(t){const n=[],r=new k(!0),o=new k(null);let s=!1,i=new Array(qt).fill(0);return o.subscribe((()=>Y(this,void 0,void 0,(function*(){if(!s&&n.length>0){s=!0,i.shift(),i.push(Date.now()),r.next(!1);try{yield function(){return Y(this,void 0,void 0,(function*(){for(var r,o,s,i,a,l;n.length>0;){const c=n.shift();try{yield b(t.cloud.syncState.pipe(R((({phase:e})=>"in-sync"===e||"error"===e))));const n=t.cloud.persistedSyncState.value;if(!c)continue;switch(c.type){case"token-expired":const u=t.cloud.currentUser.value,d=yield xe(t.cloud.options.databaseUrl,u);yield t.table("$logins").update(u.userId,{accessToken:d.accessToken,accessTokenExpiration:d.accessTokenExpiration,claims:d.claims,license:d.license,data:d.data});break;case"realm-added":(null===(r=null==n?void 0:n.realms)||void 0===r?void 0:r.includes(c.realm))||(null===(o=null==n?void 0:n.inviteRealms)||void 0===o?void 0:o.includes(c.realm))||(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realm-accepted":(null===(s=null==n?void 0:n.realms)||void 0===s?void 0:s.includes(c.realm))||(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realm-removed":((null===(i=null==n?void 0:n.realms)||void 0===i?void 0:i.includes(c.realm))||(null===(a=null==n?void 0:n.inviteRealms)||void 0===a?void 0:a.includes(c.realm)))&&(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realms-changed":yield t.cloud.sync({purpose:"pull",wait:!0});break;case"changes":if("error"===(null===(l=t.cloud.syncState.value)||void 0===l?void 0:l.phase)){fe(t,"pull");break}yield t.transaction("rw",t.dx.tables,(n=>Y(this,void 0,void 0,(function*(){n.idbtrans.disableChangeTracking=!0,n.idbtrans.disableAccessControl=!0;const[r,o,s]=yield Promise.all([t.getSchema(),t.getPersistedSyncState(),t.getCurrentUser()]);if(!o||!r||!s)return;if(c.baseRev!==o.serverRevision)return void("string"!=typeof c.baseRev||"bigint"!=typeof o.serverRevision&&"object"!=typeof o.serverRevision||fe(t,"pull"));if((yield e.waitFor(Be(o)))!==c.realmSetHash)return void fe(t,"pull");let i=[];if(s.isLoggedIn){const e=Me(t).map((e=>t.table(Fe(e.name))));i=yield He(e,t)}if(c.changes.length>0){const e=Ht(c.changes,i);yield Pt(e,t)}o.latestRevisions=Ut(i,o.latestRevisions),o.serverRevision=c.newRev,yield jt(t,r,o.latestRevisions,c.newRev),yield t.$syncState.put(o,"syncState")}))))}}catch(e){}}}))}()}finally{i[i.length-1]-i[0]<zt&&(yield new Promise((e=>setTimeout(e,Jt)))),s=!1,r.next(!0)}}})))),{enqueue:function(e){n.push(e),o.next(null)},readyToServe:r}}const Yt=new WeakMap,Zt={members:"@id, [userId+realmId], [email+realmId], realmId",roles:"[realmId+name]",realms:"@realmId",$jobs:"",$syncState:"",$baseRevs:"[tableName+clientRev]",$logins:"claims.sub, lastLogin"};let Xt=0;function Qt(e){"vip"in e&&(e=e.vip);let t=Yt.get(e.cloud);if(!t){const n=new S;let r=new Ne(`syncstatechanged-${e.name}`),o=new Ne(`synccomplete-${e.name}`);n.id=++Xt;let s=!1;t={get name(){return e.name},close:()=>e.close(),transaction:e.transaction.bind(e),table:e.table.bind(e),get tables(){return e.tables},cloud:e.cloud,get $jobs(){return e.table("$jobs")},get $syncState(){return e.table("$syncState")},get $baseRevs(){return e.table("$baseRevs")},get $logins(){return e.table("$logins")},get realms(){return e.realms},get members(){return e.members},get roles(){return e.roles},get initiallySynced(){return s},localSyncEvent:n,get syncStateChangedEvent(){return r},get syncCompleteEvent(){return o},dx:e};const i={getCurrentUser:()=>t.$logins.toArray().then((e=>e.find((e=>e.isLoggedIn))||Oe)),getPersistedSyncState:()=>t.$syncState.get("syncState"),getSchema:()=>t.$syncState.get("schema").then((e=>{if(e)for(const r of t.tables)r.schema.primKey&&r.schema.primKey.keyPath&&e[r.name]&&(e[r.name].primaryKey="string"==typeof(n=r.schema.primKey.keyPath)?n:n?"["+[].join.call(n,"+")+"]":"");var n;return e})),getOptions:()=>t.$syncState.get("options"),setInitiallySynced(e){s=e},reconfigure(){r=new Ne(`syncstatechanged-${e.name}`),o=new Ne(`synccomplete-${e.name}`)}};Object.assign(t,i),t.messageConsumer=Gt(t),t.messageProducer=new S,Yt.set(e.cloud,t)}return t}const en="undefined"!=typeof InstallTrigger,tn="undefined"!=typeof navigator&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\/|Edge\//.test(navigator.userAgent),nn=tn?[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]:NaN,rn=tn&&nn<=605||en,on="undefined"!=typeof self&&"clients"in self&&!self.document;const{toString:sn}={};function an(e){return sn.call(e).slice(8,-1)}function ln(e,t){var n;return"delete"===t.type?t.keys:(null===(n=t.keys)||void 0===n?void 0:n.slice())||t.values.map(e.extractKey)}const cn=/b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|x|y|z/i;let un=0;function dn(e,t){const n=new Uint8Array(18),r=new Uint8Array(n.buffer,0,6),o=Date.now();un>=o?++un:un=o,r[0]=un/1099511627776,r[1]=un/4294967296,r[2]=un/16777216,r[3]=un/65536,r[4]=un/256,r[5]=un;const s=new Uint8Array(n.buffer,6);crypto.getRandomValues(s);return e+ot(new Uint8Array(n.buffer))+(t||"")}function fn(t){return{stack:"dbcore",name:"idGenerationMiddleware",level:1,create:n=>Object.assign(Object.assign({},n),{table:r=>{const o=n.table(r);return Object.assign(Object.assign({},o),{mutate:n=>{var s,i;const a=n.trans;if("versionchange"===a.mode&&(a.disableChangeTracking=!0,a.disableAccessControl=!0),a.disableChangeTracking)return o.mutate(n);if("add"===n.type||"put"===n.type){const a=null===(s=t.cloud.schema)||void 0===s?void 0:s[r];if(null==a?void 0:a.generatedGlobalId){if((null===(i=t.cloud.options)||void 0===i?void 0:i.databaseUrl)&&!t.initiallySynced){const e=ln(o.schema.primaryKey,n);return o.getMany({keys:e,trans:n.trans,cache:"immutable"}).then((t=>{if(t.length<e.length)throw new Error("Unable to create new objects without an initial sync having been performed.");return o.mutate(n)}))}return function(n,s){let i=null;const a=ln(o.schema.primaryKey,n);return a.forEach(((l,c)=>{if(void 0===l){const r=n.values[c].realmId||t.cloud.currentUserId,l=r.substr(r.length-3);a[c]=dn(s,l),o.schema.primaryKey.outbound||(i||(i=n.values.slice()),i[c]=e.deepClone(i[c]),e.setByKeyPath(i[c],o.schema.primaryKey.keyPath,a[c]))}else if("string"!=typeof l||!l.startsWith(s)&&!l.startsWith("#"+s))throw new e.ConstraintError(`The ID "${l}" is not valid for table "${r}". Primary '@' keys requires the key to be prefixed with "${s}" (or "#${s}).\nIf you want to generate IDs programmatically, remove '@' from the schema to get rid of this constraint. Dexie Cloud supports custom IDs as long as they are random and globally unique.`)})),o.mutate(Object.assign(Object.assign({},n),{keys:a,values:i||n.values}))}(n,a.idPrefix)}if(null==a?void 0:a.markedForSync){ln(o.schema.primaryKey,n).forEach(((t,n)=>{if(!se(t)){const n=Array.isArray(t)?t.map(an).join(","):an(t);throw new e.ConstraintError(`Invalid primary key type ${n} for table ${r}. Tables marked for sync has primary keys of type string or Array of string (and optional numbers)`)}}))}}return o.mutate(n)}})}})}}let pn=0;function yn(e,t){return function(n){const{readers:r,writers:o}=n.trans[t]||(n.trans[t]={writers:[],readers:[]}),s=o.length,i=(s>0?o[s-1].then((()=>e(n)),(()=>e(n))):e(n)).finally((()=>{r.splice(r.indexOf(i))}));return r.push(i),i}}function hn(e,t){return function(n){const{readers:r,writers:o}=n.trans[t]||(n.trans[t]={writers:[],readers:[]});let s=(o.length>0?o[o.length-1].then((()=>e(n)),(()=>e(n))):r.length>0?(i=r,new Promise((e=>{0===i.length&&e([]);let t=i.length;const n=new Array(t);i.forEach(((r,o)=>Promise.resolve(r).then((e=>n[o]={status:"fulfilled",value:e}),(e=>n[o]={status:"rejected",reason:e})).then((()=>--t||e(n)))))}))).then((()=>e(n))):e(n)).finally((()=>{o.shift()}));var i;return o.push(s),s}}const vn=new k(new Set);function mn(e){var t,n,r,o;return(null===(t=e.cloud.options)||void 0===t?void 0:t.disableEagerSync)||"ok"!==(null===(r=null===(n=e.cloud.currentUser.value)||void 0===n?void 0:n.license)||void 0===r?void 0:r.status)||!(null===(o=e.cloud.options)||void 0===o?void 0:o.databaseUrl)}function bn({currentUserObservable:e,db:t}){return{stack:"dbcore",name:"MutationTrackingMiddleware",level:1,create:n=>{const o=new Set(n.schema.tables.map((e=>e.name))),s=n.schema.tables.filter((e=>!/^\$/.test(e.name))),i=new Map;for(const e of s){const t=`$${e.name}_mutations`;o.has(t)&&i.set(e.name,n.table(t))}return Object.assign(Object.assign({},n),{transaction:(r,o)=>{let s;if("readwrite"===o){const e=r.filter((e=>{var n,r;return null===(r=null===(n=t.cloud.schema)||void 0===n?void 0:n[e])||void 0===r?void 0:r.markedForSync})).map((e=>Fe(e)));s=n.transaction([...r,...e],o)}else s=n.transaction(r,o);if("readwrite"===o){s.txid=qe(16),s.opCount=0,s.currentUser=e.value,vn.value.add(s),vn.next(vn.value);const n=()=>{s.removeEventListener("complete",r),s.removeEventListener("error",n),s.removeEventListener("abort",n),vn.value.delete(s),vn.next(vn.value)},r=()=>{s.mutationsAdded&&!mn(t)&&fe(t,"push"),n()};s.addEventListener("complete",r),s.addEventListener("error",n),s.addEventListener("abort",n)}return s},table:e=>{const o=n.table(e);if(/^\$/.test(e))return e.endsWith("_mutations")?Object.assign(Object.assign({},o),{mutate:e=>("add"!==e.type&&"put"!==e.type||(e.trans.mutationsAdded=!0),o.mutate(e))}):"$logins"===e?Object.assign(Object.assign({},o),{mutate:e=>o.mutate(e).then((t=>(e.trans.mutationsAdded=!0,t))).catch((e=>Promise.reject(e)))}):o;const{schema:s}=o,a=i.get(e);return a?function(e){const t="$lock"+ ++pn;return Object.assign(Object.assign({},e),{count:yn(e.count,t),get:yn(e.get,t),getMany:yn(e.getMany,t),openCursor:yn(e.openCursor,t),query:yn(e.query,t),mutate:hn(e.mutate,t)})}(Object.assign(Object.assign({},o),{mutate:n=>{var r,i,a;const c=n.trans;return c.txid?c.disableChangeTracking?o.mutate(n):(null===(i=null===(r=t.cloud.schema)||void 0===r?void 0:r[e])||void 0===i?void 0:i.markedForSync)&&(null===(a=c.currentUser)||void 0===a?void 0:a.isLoggedIn)?"deleteRange"===n.type?o.query({query:{range:n.range,index:s.primaryKey},trans:n.trans,values:!1}).then((e=>l({type:"delete",keys:e.result,trans:n.trans,criteria:{index:null,range:n.range}}))):l(n):o.mutate(n):o.mutate(n)}})):o;function l(n){var i,l;const c=n.trans,u=null===(l=null===(i=t.cloud.options)||void 0===i?void 0:i.unsyncedProperties)||void 0===l?void 0:l[e],{txid:d,currentUser:{userId:f}}=c,{type:p}=n,y=++c.opCount;function h(e){if(!u)return e;let t=e;for(const n of Object.keys(e))u.some((e=>n===e||n.startsWith(e+".")))&&(t===e&&(t=Object.assign({},e)),delete t[n]);return t}return o.mutate(n).then((e=>{var t;const{numFailures:o,failures:i}=e;let l="delete"===p?n.keys:e.results,v="values"in n?n.values:[],m="changeSpec"in n?n.changeSpec:void 0,b="updates"in n?n.updates:void 0;if(o&&(l=l.filter(((e,t)=>!i[t])),v=v.filter(((e,t)=>!i[t]))),u){if(v=v.map((e=>{const t=Object.assign({},e);for(const e of u)delete t[e];return t})),m&&(m=h(m),0===Object.keys(m).length))return e;if(b){let e=b.changeSpecs.map(h),t={keys:[],changeSpecs:[]};const n=new r;let o=!1;for(let r=0,s=e.length;r<s;++r)Object.keys(e[r]).length>0?(t.keys.push(b.keys[r]),t.changeSpecs.push(e[r]),n.addKey(b.keys[r])):o=!0;if(b=t,o){let e=[],t=[];for(let r=0,o=l.length;r<o;++r)n.hasKey(l[r])&&(e.push(l[r]),t.push(v[r]));l=e,v=t}}}const g=Date.now();let _="criteria"in n&&n.criteria?Object.assign(Object.assign({},n.criteria),{index:n.criteria.index===s.primaryKey.keyPath?null:n.criteria.index}):void 0;if(u&&(null==_?void 0:_.index)){const e=null===(t=s.indexes.find((e=>e.name===_.index)))||void 0===t?void 0:t.keyPath;(e?"string"==typeof e?[e]:e:[]).some((e=>null==u?void 0:u.includes(e)))&&(_=void 0)}const w="delete"===n.type?{type:"delete",ts:g,opNo:y,keys:l,criteria:_,txid:d,userId:f}:"add"===n.type?{type:"insert",ts:g,opNo:y,keys:l,txid:d,userId:f,values:v}:_&&m?{type:"modify",ts:g,opNo:y,keys:l,criteria:_,changeSpec:m,txid:d,userId:f}:m?{type:"update",ts:g,opNo:y,keys:l,changeSpecs:l.map((()=>m)),txid:d,userId:f}:b?{type:"update",ts:g,opNo:y,keys:b.keys,changeSpecs:b.changeSpecs,txid:d,userId:f}:{type:"upsert",ts:g,opNo:y,keys:l,values:v,txid:d,userId:f};return"isAdditionalChunk"in n&&n.isAdditionalChunk&&(w.isAdditionalChunk=!0),l.length>0||_?a.mutate({type:"add",trans:c,values:[w]}).then((()=>(c.mutationsAdded=!0,e))):e}))}}})}}}function gn(e,t){return function(n,r){var o;const s=Object.assign(Object.assign({},Zt),n);Object.keys(Zt).forEach((e=>{const t=s[e];if(null==t)throw new Error(`Cannot delete table ${e} as it is needed for access control of Dexie Cloud`);if(!n[e])return;const r=t.split(",").map((e=>e.trim())),o=Zt[e].split(",").map((e=>e.trim())),i=new Set(r.map((e=>e.replace(/([&*]|\+\+)/g,""))));if(r[0]!==o[0])throw new Error(`Cannot override primary key of table ${e}. Please declare it as {${e}: ${JSON.stringify(Zt[e])}`);for(let t=1;t<o.length;++t){const n=o[t];i.has(n.replace(/([&*]|\+\+)/g,""))||(s[e]+=`,${n}`)}}));const i=t.cloud.schema||(t.cloud.schema={}),a=new Set;Object.keys(s).forEach((e=>{const t=s[e],n=i[e]||(i[e]={});null!=t?(/^\@/.test(t)&&(s[e]=s[e].substr(1),n.generatedGlobalId=!0,n.idPrefix=function(e,t){let n=e[0].toLocaleLowerCase();for(let t=1,o=e.length;t<o&&n.length<3;++t)(cn.test(e[t])||(r=e[t])>="A"&&r<="Z")&&(n+=e[t].toLowerCase());for(var r,o,s;t.has(n);){if(/\d/g.test(n)){if(n=n.substr(0,n.length-1)+(n[n.length-1]+1),!(n.length>3))continue;n=n.substr(0,3)}else if(n.length<3){n+="2";continue}let e=1,r=n;for(;t.has(r)&&e<8;)o=n,r=(1&(s=e)?o[0].toUpperCase():o[0].toLowerCase())+(2&s?o[1].toUpperCase():o[1].toLowerCase())+(4&s?o[2].toUpperCase():o[2].toLowerCase()),++e;if(e<8)n=r;else{let e=n.charCodeAt(2)+1&127;n=n.substr(0,2)+String.fromCharCode(e)}}return n}(e,a),a.add(n.idPrefix)),/^\$/.test(e)||(s[`$${e}_mutations`]="++rev",n.markedForSync=!0),n.deleted&&(n.deleted=!1)):(n.deleted=!0,n.markedForSync=!1,s[`$${e}_mutations`]=null)}));const l=e.call(this,s,r);for(const[e,t]of Object.entries(r))if(null===(o=t.yProps)||void 0===o?void 0:o.length){const n=i[e];n&&(n.yProps=t.yProps.map((e=>e.prop)))}return l}}function _n(e,t,n){return"undefined"!=typeof navigator&&navigator.locks?navigator.locks.request(e.name+"|"+t,(()=>n())):n()}const wn=new k(!0),kn=new k(!0);wn.pipe(N((e=>e?x(!0):x(!1).pipe(B(2e4)))),M()).subscribe(kn);const Sn="undefined"!=typeof document?I(document,"visibilitychange"):x({}),xn=Sn.pipe(R((()=>"hidden"===document.visibilityState))),In=Sn.pipe(R((()=>"visible"===document.visibilityState))),En="undefined"!=typeof window?E(In,I(window,"mousedown"),I(window,"mousemove"),I(window,"keydown"),I(window,"wheel"),I(window,"touchmove")):x({});"undefined"!=typeof document&&E(x(!0),xn,En).pipe(F((()=>"visible"===document.visibilityState)),W((e=>{wn.value!==e&&wn.next(e)})),N((e=>e?x(0).pipe(B(16e4),W((()=>wn.next(!1)))):x(0)))).subscribe((()=>{}));class On extends Error{constructor(){super(...arguments),this.name="TokenExpiredError"}}function Cn(t){var n,r;if(!(null===(n=t.cloud.options)||void 0===n?void 0:n.awarenessProtocol))throw new e.MissingAPIError('awarenessProtocol was not provided to db.cloud.configure(). Please import * as awarenessProtocol from "y-protocols/awareness".');return null===(r=t.cloud.options)||void 0===r?void 0:r.awarenessProtocol}const Tn=new WeakMap,jn=new WeakMap;function Un(e){let t=jn.get(e);return t||(t=new S,jn.set(e,t)),t}class An extends w{constructor(e,t,n,r,o,s,i,a){super((l=>new $n(e,t,n,r,o,a,l,s,i)))}}let Pn=0;class $n extends j{constructor(e,t,n,r,o,s,i,a,l){super((()=>this.teardown())),this.id=++Pn,this.subscriptions=new Set,this.reconnecting=!1,this.db=e,this.databaseUrl=e.cloud.options.databaseUrl,this.rev=t,this.yrev=n,this.realmSetHash=r,this.clientIdentity=o,this.user=s,this.subscriber=i,this.lastUserActivity=new Date,this.messageProducer=a,this.webSocketStatus=l,this.connect()}teardown(){this.disconnect()}disconnect(){if(this.webSocketStatus.next("disconnected"),this.pinger&&(clearInterval(this.pinger),this.pinger=null),this.ws)try{this.ws.close()}catch(e){}this.ws=null;for(const e of this.subscriptions)e.unsubscribe();this.subscriptions.clear()}reconnect(){if(!this.reconnecting){this.reconnecting=!0;try{this.disconnect()}catch(e){}this.connect().catch((()=>{})).then((()=>this.reconnecting=!1))}}connect(){return Y(this,void 0,void 0,(function*(){if(this.lastServerActivity=new Date,this.pauseUntil&&this.pauseUntil>new Date)return;if(this.ws)throw new Error("Called connect() when a connection is already open");if(!this.databaseUrl)throw new Error("Cannot connect without a database URL");if(this.closed)return;const e=this.user.accessTokenExpiration;if(e&&e<new Date)return void this.subscriber.error(new On);this.webSocketStatus.next("connecting"),this.pinger=setInterval((()=>Y(this,void 0,void 0,(function*(){if(this.closed)this.teardown();else if(this.ws)try{this.ws.send(JSON.stringify({type:"ping"})),setTimeout((()=>{this.pinger&&(this.closed?this.teardown():this.lastServerActivity<new Date(Date.now()-2e4)&&this.reconnect())}),2e4)}catch(e){this.reconnect()}else this.reconnect()}))),3e4);const t=new URL(this.databaseUrl);t.protocol="http:"===t.protocol?"ws":"wss";const n=new URLSearchParams;if(this.subscriber.closed)return;n.set("v","2"),this.rev&&n.set("rev",this.rev),this.yrev&&n.set("yrev",this.yrev),n.set("realmsHash",this.realmSetHash),n.set("clientId",this.clientIdentity),n.set("dxcv",this.db.cloud.version),this.user.accessToken&&n.set("token",this.user.accessToken);const r=this.ws=new WebSocket(`${t}/changes?${n}`);r.binaryType="arraybuffer",r.onclose=e=>{this.pinger&&this.reconnect()},r.onmessage=e=>{if(this.pinger){this.lastServerActivity=new Date;try{const t="string"==typeof e.data?wt.parse(e.data):function(e){const t=new d(e),n=f(t);if("outdated-server-rev"===n)return{type:n};if("y-complete-sync-done"===n)return{type:n,yServerRev:f(t)};const r=f(t),o=f(t);switch(n){case"u-ack":case"u-reject":return{type:n,table:r,prop:o,i:Number(h(t))};default:{const e=p(t);switch(n){case"in-sync":case"doc-close":return{type:n,table:r,prop:o,k:e};case"aware":return{type:n,table:r,prop:o,k:e,u:y(t)};case"doc-open":return{type:n,table:r,prop:o,k:e,serverRev:p(t),sv:p(t)};case"sv":return{type:n,table:r,prop:o,k:e,sv:y(t)};case"u-c":return{type:n,table:r,prop:o,k:e,u:y(t),i:Number(h(t))};case"u-s":return{type:n,table:r,prop:o,k:e,u:y(t),r:t.pos<t.arr.length&&f(t)||void 0};default:throw new TypeError(`Unknown message type: ${n}`)}}}}(new Uint8Array(e.data));if("error"===t.type)throw new Error(`Error message from dexie-cloud: ${t.error}`);if("aware"===t.type){const e=G.getDocCache(this.db.dx).find(t.table,t.k,t.prop);if(e){const n=(e=>Tn.get(e))(e);if(n){Cn(this.db).applyAwarenessUpdate(n,t.u,"server")}}}else if("pong"===t.type);else if("doc-open"===t.type){const e=G.getDocCache(this.db.dx).find(t.table,t.k,t.prop);e&&Un(e).next()}else"u-ack"===t.type||"u-reject"===t.type||"u-s"===t.type||"in-sync"===t.type||"outdated-server-rev"===t.type||"y-complete-sync-done"===t.type?Rt([t],this.db).then((e=>Y(this,[e],void 0,(function*({resyncNeeded:e,yServerRevision:n,receivedUntils:r}){if(n&&(yield this.db.$syncState.update("syncState",{yServerRevision:n})),"u-s"===t.type&&r){const e=Lt(this.db,t.table,t.prop);if(e){const t=r[e.name];t&&(yield e.update($t,{receivedUntil:t}))}}e&&(yield this.db.cloud.sync({purpose:"pull",wait:!0}))})))):this.subscriber.next(t)}catch(e){this.subscriber.error(e)}}};try{let e=!1;yield new Promise(((t,n)=>{r.onopen=n=>{e=!0,t(null)},r.onerror=t=>{if(e)this.reconnect();else{const e=t.error||new Error("WebSocket Error");this.subscriber.error(e),this.webSocketStatus.next("error"),n(e)}}})),this.subscriptions.add(this.messageProducer.subscribe((e=>{var t,n;this.closed||("ready"===e.type&&"connected"!==this.webSocketStatus.value&&this.webSocketStatus.next("connected"),"ready"===e.type?(this.rev=e.rev,null===(t=this.ws)||void 0===t||t.send(wt.stringify(e))):null===(n=this.ws)||void 0===n||n.send(function(e){const t=new s;switch(i(t,e.type),"table"in e&&i(t,e.table),"prop"in e&&i(t,e.prop),e.type){case"u-ack":case"u-reject":c(t,BigInt(e.i));break;case"outdated-server-rev":break;case"y-complete-sync-done":i(t,e.yServerRev);break;default:switch(a(t,e.k),e.type){case"aware":l(t,e.u);break;case"doc-open":a(t,e.serverRev),a(t,e.sv);break;case"doc-close":break;case"sv":l(t,e.sv);break;case"u-c":l(t,e.u),c(t,BigInt(e.i));break;case"u-s":l(t,e.u),i(t,e.r||"")}}return u(t)}(e)))}))),this.user.isLoggedIn&&!mn(this.db)&&this.subscriptions.add(function(e){const t=Ve(e.tables.filter((t=>{var n,r;return(null===(r=null===(n=e.cloud.schema)||void 0===n?void 0:n[t.name])||void 0===r?void 0:r.markedForSync)&&t.schema.yProps})).map((e=>e.schema.yProps.map((t=>({table:e.name,ydocProp:t.prop,updatesTable:t.updatesTable}))))));return E(...t.map((({table:t,ydocProp:n,updatesTable:r})=>{const s=e.table(r);return g(s.get($t)).pipe(O((e=>{let r=(null==e?void 0:e.unsentFrom)||1;return g(o((()=>Y(this,void 0,void 0,(function*(){return(yield Dt(s,r)).filter((e=>e.f&&1&e.f)).map((e=>({type:"u-c",table:t,prop:n,k:e.k,u:e.u,i:e.i})))}))))).pipe(C((e=>{e.length>0&&(r=e.at(-1).i+1)})))})))}))).pipe(T((e=>e)))}(this.db).subscribe(this.db.messageProducer))}catch(e){this.pauseUntil=new Date(Date.now()+6e4)}}))}}class Dn extends Error{constructor(e){super("expired"===e?"License expired":"deactivated"===e?"User deactivated":"Invalid license"),this.name="InvalidLicenseError",e&&(this.license=e)}}function Ln(e){return Y(this,void 0,void 0,(function*(){var e;yield(e=3e3,new Promise((t=>setTimeout(t,e)))),yield b(En)}))}function Rn(e){return Y(this,void 0,void 0,(function*(){var t;return!(!(null===(t=e.cloud.options)||void 0===t?void 0:t.databaseUrl)||!e.cloud.schema)&&(yield Kt(e,e.cloud.options,e.cloud.schema,{justCheckIfNeeded:!0}))}))}const Nn=new WeakMap;function Bn(e,t,n,r){const o=Nn.get(e);if(o){if(o.pull||"push"===(null==r?void 0:r.purpose))return o.promise;{let s=!1;const i=e.cloud.syncState.subscribe((e=>{"pulling"===e.phase&&(s=!0)}));return o.promise.then((()=>{i.unsubscribe()})).catch((e=>(i.unsubscribe(),Promise.reject(e)))).then((()=>{if(!s)return Bn(e,t,n,r)}))}}const s=function(){return Y(this,void 0,void 0,(function*(){try{yield Et(e),yield _n(e,Wt,(()=>Kt(e,t,n,r))),Nn.delete(e)}catch(t){throw Nn.delete(e),t}}))}();return Nn.set(e,{promise:s,pull:"push"!==(null==r?void 0:r.purpose)}),s}const Mn=1e3;function Fn(e,t,n){let r=null,o={cancelled:!1},s=0,i=0;function a(r=1){setTimeout((()=>{const f=l?"pull":"push";i=Date.now(),Bn(e,t,n,{cancelToken:o,retryImmediatelyOnFetchError:!0,purpose:f}).then((()=>{if(o.cancelled)d();else if(l||c)return l=!1,c=!1,a();u=!1,s=0,i=0})).catch((e=>{if(o.cancelled)d(),u=!1,s=0,i=0;else if(r<5){const e=[0,20,40,300,900][r]*Mn;s=Date.now()+e,i=0,setTimeout((()=>a(r+1)),e)}else u=!1,s=0,i=0}))}),0)}let l=!1,c=!1,u=!1;const d=()=>{o.cancelled=!0,r&&r.unsubscribe()};return{start:()=>{r=e.localSyncEvent.subscribe((({purpose:e})=>{(e=>{o.cancelled||("pull"===e&&(l=!0),"push"===e&&(c=!0),u?s||i>0&&Date.now():(u=!0,a()))})(e||"pull")}))},stop:d}}function Wn(e,t){if(e&&t&&t.unsyncedTables)for(const n of t.unsyncedTables)e[n]&&(e[n].markedForSync=!1)}var Kn,Vn,Hn,qn,zn,Jn={},Gn=[],Yn=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function Zn(e,t){for(var n in t)e[n]=t[n];return e}function Xn(e){var t=e.parentNode;t&&t.removeChild(e)}function Qn(e,t,n){var r,o,s,i={};for(s in t)"key"==s?r=t[s]:"ref"==s?o=t[s]:i[s]=t[s];if(arguments.length>2&&(i.children=arguments.length>3?Kn.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(s in e.defaultProps)void 0===i[s]&&(i[s]=e.defaultProps[s]);return er(e,i,r,o,null)}function er(e,t,n,r,o){var s={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++Hn:o};return null==o&&null!=Vn.vnode&&Vn.vnode(s),s}function tr(e){return e.children}function nr(e,t){this.props=e,this.context=t}function rr(e,t){if(null==t)return e.__?rr(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?rr(e):null}function or(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return or(e)}}function sr(e){(!e.__d&&(e.__d=!0)&&qn.push(e)&&!ir.__r++||zn!==Vn.debounceRendering)&&((zn=Vn.debounceRendering)||setTimeout)(ir)}function ir(){for(var e;ir.__r=qn.length;)e=qn.sort((function(e,t){return e.__v.__b-t.__v.__b})),qn=[],e.some((function(e){var t,n,r,o,s,i;e.__d&&(s=(o=(t=e).__v).__e,(i=t.__P)&&(n=[],(r=Zn({},o)).__v=o.__v+1,yr(i,o,r,t.__n,void 0!==i.ownerSVGElement,null!=o.__h?[s]:null,n,null==s?rr(o):s,o.__h),hr(n,o),o.__e!=s&&or(o)))}))}function ar(e,t,n,r,o,s,i,a,l,c){var u,d,f,p,y,h,v,m=r&&r.__k||Gn,b=m.length;for(n.__k=[],u=0;u<t.length;u++)if(null!=(p=n.__k[u]=null==(p=t[u])||"boolean"==typeof p?null:"string"==typeof p||"number"==typeof p||"bigint"==typeof p?er(null,p,null,null,p):Array.isArray(p)?er(tr,{children:p},null,null,null):p.__b>0?er(p.type,p.props,p.key,null,p.__v):p)){if(p.__=n,p.__b=n.__b+1,null===(f=m[u])||f&&p.key==f.key&&p.type===f.type)m[u]=void 0;else for(d=0;d<b;d++){if((f=m[d])&&p.key==f.key&&p.type===f.type){m[d]=void 0;break}f=null}yr(e,p,f=f||Jn,o,s,i,a,l,c),y=p.__e,(d=p.ref)&&f.ref!=d&&(v||(v=[]),f.ref&&v.push(f.ref,null,p),v.push(d,p.__c||y,p)),null!=y?(null==h&&(h=y),"function"==typeof p.type&&p.__k===f.__k?p.__d=l=lr(p,l,e):l=cr(e,p,f,m,y,l),"function"==typeof n.type&&(n.__d=l)):l&&f.__e==l&&l.parentNode!=e&&(l=rr(f))}for(n.__e=h,u=b;u--;)null!=m[u]&&("function"==typeof n.type&&null!=m[u].__e&&m[u].__e==n.__d&&(n.__d=rr(r,u+1)),br(m[u],m[u]));if(v)for(u=0;u<v.length;u++)mr(v[u],v[++u],v[++u])}function lr(e,t,n){for(var r,o=e.__k,s=0;o&&s<o.length;s++)(r=o[s])&&(r.__=e,t="function"==typeof r.type?lr(r,t,n):cr(n,r,r,o,r.__e,t));return t}function cr(e,t,n,r,o,s){var i,a,l;if(void 0!==t.__d)i=t.__d,t.__d=void 0;else if(null==n||o!=s||null==o.parentNode)e:if(null==s||s.parentNode!==e)e.appendChild(o),i=null;else{for(a=s,l=0;(a=a.nextSibling)&&l<r.length;l+=2)if(a==o)break e;e.insertBefore(o,s),i=s}return void 0!==i?i:o.nextSibling}function ur(e,t,n){"-"===t[0]?e.setProperty(t,n):e[t]=null==n?"":"number"!=typeof n||Yn.test(t)?n:n+"px"}function dr(e,t,n,r,o){var s;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||ur(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||ur(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])s=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+s]=n,n?r||e.addEventListener(t,s?pr:fr,s):e.removeEventListener(t,s?pr:fr,s);else if("dangerouslySetInnerHTML"!==t){if(o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null!=n&&(!1!==n||"a"===t[0]&&"r"===t[1])?e.setAttribute(t,n):e.removeAttribute(t))}}function fr(e){this.l[e.type+!1](Vn.event?Vn.event(e):e)}function pr(e){this.l[e.type+!0](Vn.event?Vn.event(e):e)}function yr(e,t,n,r,o,s,i,a,l){var c,u,d,f,p,y,h,v,m,b,g,_,w,k=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(l=n.__h,a=t.__e=n.__e,t.__h=null,s=[a]),(c=Vn.__b)&&c(t);try{e:if("function"==typeof k){if(v=t.props,m=(c=k.contextType)&&r[c.__c],b=c?m?m.props.value:c.__:r,n.__c?h=(u=t.__c=n.__c).__=u.__E:("prototype"in k&&k.prototype.render?t.__c=u=new k(v,b):(t.__c=u=new nr(v,b),u.constructor=k,u.render=gr),m&&m.sub(u),u.props=v,u.state||(u.state={}),u.context=b,u.__n=r,d=u.__d=!0,u.__h=[]),null==u.__s&&(u.__s=u.state),null!=k.getDerivedStateFromProps&&(u.__s==u.state&&(u.__s=Zn({},u.__s)),Zn(u.__s,k.getDerivedStateFromProps(v,u.__s))),f=u.props,p=u.state,d)null==k.getDerivedStateFromProps&&null!=u.componentWillMount&&u.componentWillMount(),null!=u.componentDidMount&&u.__h.push(u.componentDidMount);else{if(null==k.getDerivedStateFromProps&&v!==f&&null!=u.componentWillReceiveProps&&u.componentWillReceiveProps(v,b),!u.__e&&null!=u.shouldComponentUpdate&&!1===u.shouldComponentUpdate(v,u.__s,b)||t.__v===n.__v){u.props=v,u.state=u.__s,t.__v!==n.__v&&(u.__d=!1),u.__v=t,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),u.__h.length&&i.push(u);break e}null!=u.componentWillUpdate&&u.componentWillUpdate(v,u.__s,b),null!=u.componentDidUpdate&&u.__h.push((function(){u.componentDidUpdate(f,p,y)}))}if(u.context=b,u.props=v,u.__v=t,u.__P=e,g=Vn.__r,_=0,"prototype"in k&&k.prototype.render)u.state=u.__s,u.__d=!1,g&&g(t),c=u.render(u.props,u.state,u.context);else do{u.__d=!1,g&&g(t),c=u.render(u.props,u.state,u.context),u.state=u.__s}while(u.__d&&++_<25);u.state=u.__s,null!=u.getChildContext&&(r=Zn(Zn({},r),u.getChildContext())),d||null==u.getSnapshotBeforeUpdate||(y=u.getSnapshotBeforeUpdate(f,p)),w=null!=c&&c.type===tr&&null==c.key?c.props.children:c,ar(e,Array.isArray(w)?w:[w],t,n,r,o,s,i,a,l),u.base=t.__e,t.__h=null,u.__h.length&&i.push(u),h&&(u.__E=u.__=null),u.__e=!1}else null==s&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=vr(n.__e,t,n,r,o,s,i,l);(c=Vn.diffed)&&c(t)}catch(e){t.__v=null,(l||null!=s)&&(t.__e=a,t.__h=!!l,s[s.indexOf(a)]=null),Vn.__e(e,t,n)}}function hr(e,t){Vn.__c&&Vn.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){Vn.__e(e,t.__v)}}))}function vr(e,t,n,r,o,s,i,a){var l,c,u,d=n.props,f=t.props,p=t.type,y=0;if("svg"===p&&(o=!0),null!=s)for(;y<s.length;y++)if((l=s[y])&&"setAttribute"in l==!!p&&(p?l.localName===p:3===l.nodeType)){e=l,s[y]=null;break}if(null==e){if(null===p)return document.createTextNode(f);e=o?document.createElementNS("http://www.w3.org/2000/svg",p):document.createElement(p,f.is&&f),s=null,a=!1}if(null===p)d===f||a&&e.data===f||(e.data=f);else{if(s=s&&Kn.call(e.childNodes),c=(d=n.props||Jn).dangerouslySetInnerHTML,u=f.dangerouslySetInnerHTML,!a){if(null!=s)for(d={},y=0;y<e.attributes.length;y++)d[e.attributes[y].name]=e.attributes[y].value;(u||c)&&(u&&(c&&u.__html==c.__html||u.__html===e.innerHTML)||(e.innerHTML=u&&u.__html||""))}if(function(e,t,n,r,o){var s;for(s in n)"children"===s||"key"===s||s in t||dr(e,s,null,n[s],r);for(s in t)o&&"function"!=typeof t[s]||"children"===s||"key"===s||"value"===s||"checked"===s||n[s]===t[s]||dr(e,s,t[s],n[s],r)}(e,f,d,o,a),u)t.__k=[];else if(y=t.props.children,ar(e,Array.isArray(y)?y:[y],t,n,r,o&&"foreignObject"!==p,s,i,s?s[0]:n.__k&&rr(n,0),a),null!=s)for(y=s.length;y--;)null!=s[y]&&Xn(s[y]);a||("value"in f&&void 0!==(y=f.value)&&(y!==e.value||"progress"===p&&!y||"option"===p&&y!==d.value)&&dr(e,"value",y,d.value,!1),"checked"in f&&void 0!==(y=f.checked)&&y!==e.checked&&dr(e,"checked",y,d.checked,!1))}return e}function mr(e,t,n){try{"function"==typeof e?e(t):e.current=t}catch(e){Vn.__e(e,n)}}function br(e,t,n){var r,o;if(Vn.unmount&&Vn.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||mr(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){Vn.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&br(r[o],t,"function"!=typeof e.type);n||null==e.__e||Xn(e.__e),e.__e=e.__d=void 0}function gr(e,t,n){return this.constructor(e,n)}function _r(e,t,n){var r,o,s;Vn.__&&Vn.__(e,t),o=(r="function"==typeof n)?null:n&&n.__k||t.__k,s=[],yr(t,e=(!r&&n||t).__k=Qn(tr,null,[e]),o||Jn,Jn,void 0!==t.ownerSVGElement,!r&&n?[n]:o?null:t.firstChild?Kn.call(t.childNodes):null,s,!r&&n?n:o?o.__e:t.firstChild,r),hr(s,e)}Kn=Gn.slice,Vn={__e:function(e,t,n,r){for(var o,s,i;t=t.__;)if((o=t.__c)&&!o.__)try{if((s=o.constructor)&&null!=s.getDerivedStateFromError&&(o.setState(s.getDerivedStateFromError(e)),i=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,r||{}),i=o.__d),i)return o.__E=o}catch(t){e=t}throw e}},Hn=0,nr.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=Zn({},this.state),"function"==typeof e&&(e=e(Zn({},n),this.props)),e&&Zn(n,e),null!=e&&this.__v&&(t&&this.__h.push(t),sr(this))},nr.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),sr(this))},nr.prototype.render=tr,qn=[],ir.__r=0;const wr={Error:{color:"red"},Alert:{error:{color:"red",fontWeight:"bold"},warning:{color:"#f80",fontWeight:"bold"},info:{color:"black"}},Darken:{position:"fixed",top:0,left:0,opacity:.5,backgroundColor:"#000",width:"100vw",height:"100vh",zIndex:150,webkitBackdropFilter:"blur(2px)",backdropFilter:"blur(2px)"},DialogOuter:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",zIndex:150,alignItems:"center",display:"flex",justifyContent:"center"},DialogInner:{position:"relative",color:"#222",backgroundColor:"#fff",padding:"30px",marginBottom:"2em",maxWidth:"90%",maxHeight:"90%",overflowY:"auto",border:"3px solid #3d3d5d",borderRadius:"8px",boxShadow:"0 0 80px 10px #666",width:"auto",fontFamily:"sans-serif"},Input:{height:"35px",width:"17em",borderColor:"#ccf4",outline:"none",fontSize:"17pt",padding:"8px"}};function kr({children:e,className:t}){return Qn("div",{className:t},Qn("div",{style:wr.Darken}),Qn("div",{style:wr.DialogOuter},Qn("div",{style:wr.DialogInner},e)))}var Sr,xr,Ir,Er,Or=0,Cr=[],Tr=[],jr=Vn.__b,Ur=Vn.__r,Ar=Vn.diffed,Pr=Vn.__c,$r=Vn.unmount;function Dr(e,t){Vn.__h&&Vn.__h(xr,e,Or||t),Or=0;var n=xr.__H||(xr.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({__V:Tr}),n.__[e]}function Lr(e){return Or=1,function(e,t,n){var r=Dr(Sr++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):Kr(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=xr,!xr.u)){xr.u=!0;var o=xr.shouldComponentUpdate;xr.shouldComponentUpdate=function(e,t,n){if(!r.__c.__H)return!0;var s=r.__c.__H.__.filter((function(e){return e.__c}));if(s.every((function(e){return!e.__N})))return!o||o.call(this,e,t,n);var i=!1;return s.forEach((function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(i=!0)}})),!!i&&(!o||o.call(this,e,t,n))}}return r.__N||r.__}(Kr,e)}function Rr(e){return Or=5,function(e,t){var n=Dr(Sr++,7);return Wr(n.__H,t)?(n.__V=e(),n.i=t,n.__h=e,n.__V):n.__}((function(){return{current:e}}),[])}function Nr(){for(var e;e=Cr.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(Mr),e.__H.__h.forEach(Fr),e.__H.__h=[]}catch(t){e.__H.__h=[],Vn.__e(t,e.__v)}}Vn.__b=function(e){xr=null,jr&&jr(e)},Vn.__r=function(e){Ur&&Ur(e),Sr=0;var t=(xr=e.__c).__H;t&&(Ir===xr?(t.__h=[],xr.__h=[],t.__.forEach((function(e){e.__N&&(e.__=e.__N),e.__V=Tr,e.__N=e.i=void 0}))):(t.__h.forEach(Mr),t.__h.forEach(Fr),t.__h=[])),Ir=xr},Vn.diffed=function(e){Ar&&Ar(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==Cr.push(t)&&Er===Vn.requestAnimationFrame||((Er=Vn.requestAnimationFrame)||function(e){var t,n=function(){clearTimeout(r),Br&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,100);Br&&(t=requestAnimationFrame(n))})(Nr)),t.__H.__.forEach((function(e){e.i&&(e.__H=e.i),e.__V!==Tr&&(e.__=e.__V),e.i=void 0,e.__V=Tr}))),Ir=xr=null},Vn.__c=function(e,t){t.some((function(e){try{e.__h.forEach(Mr),e.__h=e.__h.filter((function(e){return!e.__||Fr(e)}))}catch(n){t.some((function(e){e.__h&&(e.__h=[])})),t=[],Vn.__e(n,e.__v)}})),Pr&&Pr(e,t)},Vn.unmount=function(e){$r&&$r(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach((function(e){try{Mr(e)}catch(e){t=e}})),t&&Vn.__e(t,n.__v))};var Br="function"==typeof requestAnimationFrame;function Mr(e){var t=xr,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),xr=t}function Fr(e){var t=xr;e.__c=e.__(),xr=t}function Wr(e,t){return!e||e.length!==t.length||t.some((function(t,n){return t!==e[n]}))}function Kr(e,t){return"function"==typeof t?t(e):t}function Vr({message:e,messageCode:t,messageParams:n}){return e.replace(/\{\w+\}/gi,(e=>n[e.substring(1,e.length-1)]))}function Hr({title:e,type:t,alerts:n,fields:r,submitLabel:o,cancelLabel:s,onCancel:i,onSubmit:a}){const[l,c]=Lr({}),u=Rr(null);return function(e,t){var n=Dr(Sr++,4);!Vn.__s&&Wr(n.__H,t)&&(n.__=e,n.i=t,xr.__h.push(n))}((()=>{var e;return null===(e=u.current)||void 0===e?void 0:e.focus()}),[]),Qn(kr,{className:"dxc-login-dlg"},Qn(tr,null,Qn("h3",{style:wr.WindowHeader},e),n.map((e=>Qn("p",{style:wr.Alert[e.type]},Vr(e)))),Qn("form",{onSubmit:e=>{e.preventDefault(),a(l)}},Object.entries(r).map((([e,{type:t,label:n,placeholder:r}],o)=>Qn("label",{style:wr.Label,key:o},n?`${n}: `:"",Qn("input",{ref:0===o?u:void 0,type:t,name:e,autoComplete:"on",style:wr.Input,autoFocus:!0,placeholder:r,value:l[e]||"",onInput:n=>{var r;const o=function(e,t){switch(e){case"email":return t.toLowerCase();case"otp":return t.toUpperCase();default:return t}}(t,null===(r=n.target)||void 0===r?void 0:r.value);let s=Object.assign(Object.assign({},l),{[e]:o});c(s),"otp"===t&&8===(null==o?void 0:o.trim().length)&&a(s)}})))))),Qn("div",{style:wr.ButtonsDiv},Qn(tr,null,Qn("button",{type:"submit",style:wr.Button,onClick:()=>a(l)},o),s&&Qn("button",{style:wr.Button,onClick:i},s))))}class qr extends nr{constructor(e){super(e),this.observer=e=>this.setState({userInteraction:e}),this.state={userInteraction:void 0}}componentDidMount(){this.subscription=g(this.props.db.cloud.userInteraction).subscribe(this.observer)}componentWillUnmount(){this.subscription&&(this.subscription.unsubscribe(),delete this.subscription)}render(e,{userInteraction:t}){return t?Qn(Hr,Object.assign({},t)):null}}function zr(e){const t=new WeakMap;return n=>{let r=t.get(n);return r||(r=e(n),t.set(n,r)),r}}const Jr=zr((e=>new k(Oe)));function Gr(e,t){let n=t,r=g(e).pipe(P((e=>n=e)),$({resetOnRefCountZero:()=>D(1e3)}));const o=new w((e=>{let t=!1;const o=r.subscribe({next(n){t=!0,e.next(n)},error(t){e.error(t)},complete(){e.complete()}});return t||o.closed||e.next(n),o}));return o.getValue=()=>n,o}const Yr=zr((e=>Gr(o((()=>e.roles.where({realmId:"rlm-public"}).toArray().then((e=>{const t={};for(const n of e.slice().sort(((e,t)=>(e.sortOrder||0)-(t.sortOrder||0))))t[n.name]=n;return t})))),{}))),Zr=zr((e=>Gr(Jr(e._novip).pipe(N((t=>o((()=>e.transaction("r","realms","members",(()=>Promise.all([e.members.where({userId:t.userId}).toArray(),e.realms.toArray(),t.userId]).then((([e,t,n])=>({selfMembers:e,realms:t,userId:n})))))))))),{selfMembers:[],realms:[],get userId(){return e.cloud.currentUserId}})));function Xr(...e){if(0===e.length)return{};const t=e.reduce(((e,t)=>{const n=Object.assign({},e);for(const[e,r]of Object.entries(t))if(e in n&&n[e]){if("*"===n[e])continue;if("*"===r)n[e]="*";else if(Array.isArray(r)&&Array.isArray(n[e])){const t=n,o=t[e];t[e]=[...new Set([...o,...r])]}else if("object"==typeof r&&r&&"object"==typeof n[e]){const t=n[e];for(const[e,n]of Object.entries(r))"*"!==t[e]&&("*"===n?t[e]="*":Array.isArray(t[e])&&Array.isArray(n)&&(t[e]=[...new Set([...t[e],...n])]))}}else n[e]=t[e];return n}));return t}const Qr=zr((e=>function(e,t){let n;const r=e.pipe(P((e=>n=t(e))));return r.getValue=()=>void 0!==n?n:n=t(e.getValue()),r}(Gr(A([Zr(e._novip),Yr(e._novip)]).pipe(F((([{selfMembers:e,realms:t,userId:n},r])=>({selfMembers:e,realms:t,userId:n,globalRoles:r})))),{selfMembers:[],realms:[],userId:Oe.userId,globalRoles:{}}),(({selfMembers:e,realms:t,userId:n,globalRoles:r})=>{const o=t.map((t=>{const o=e.filter((e=>e.realmId===t.realmId)),s=o.map((e=>e.permissions)).filter((e=>e)),i=Ve(o.map((e=>e.roles)).filter((e=>e))).map((e=>r[e])).filter((e=>e)).map((e=>e.permissions));return Object.assign(Object.assign({},t),{permissions:t.owner===n?{manage:"*"}:Xr(...s,...i)})})).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.realmId]:t})),{[n]:{realmId:n,owner:n,name:n,permissions:{manage:"*"}}});return o}))));class eo{constructor(e,t,n){this.permissions=e||{},this.tableName=t,this.isOwner=n}add(...e){var t;return"*"===this.permissions.manage||(!!(null===(t=this.permissions.manage)||void 0===t?void 0:t.includes(this.tableName))||("*"===this.permissions.add||!!e.every((e=>{var t;return null===(t=this.permissions.add)||void 0===t?void 0:t.includes(e)}))))}update(...e){var t,n;if(this.isOwner||"*"===this.permissions.manage)return!0;if(null===(t=this.permissions.manage)||void 0===t?void 0:t.includes(this.tableName))return!0;if("*"===this.permissions.update)return e.every((e=>"owner"!==e));const r=null===(n=this.permissions.update)||void 0===n?void 0:n[this.tableName];return"*"===r?e.every((e=>"owner"!==e)):e.every((e=>null==r?void 0:r.some((t=>t===e||"*"===t&&"owner"!==e))))}delete(){var e;return!(!this.isOwner&&"*"!==this.permissions.manage)||!!(null===(e=this.permissions.manage)||void 0===e?void 0:e.includes(this.tableName))}}const to=zr((e=>{const t=Jr(e._novip).pipe(N((t=>o((()=>e.members.where({email:t.email||""}).toArray()))))),n=Qr(e._novip),r=Zr(e._novip);return Gr(A([t,r,n]).pipe(F((([t,n,r])=>{const o=(e,t)=>Object.assign(Object.assign({},e),{[t.id]:Object.assign(Object.assign({},t),{realm:r[t.realmId]})}),s=t.reduce(o,{}),i=n.selfMembers.reduce(o,s);return Object.values(i).filter((e=>!e.accepted)).map((t=>Object.assign(Object.assign({},t),{accept(){return Y(this,void 0,void 0,(function*(){yield e.members.update(t.id,{accepted:new Date})}))},reject(){return Y(this,void 0,void 0,(function*(){yield e.members.update(t.id,{rejected:new Date})}))}})))}))),[])}));function no(e){return t=>{var r;const o=t.doc;if(!o)throw new Error("Internal error: DexieYProvider.createYHandler called without a doc. This is unexpected.");const{parentTable:s}=o.meta||{};if(!(null===(r=e.cloud.schema)||void 0===r?void 0:r[s].markedForSync))return;let i;Object.defineProperty(t,"awareness",{get:()=>i||(i=function(e,t,r){const{parentTable:o,parentId:s,parentProp:i,updatesTable:a}=t.meta,l=Cn(e),c=new l.Awareness(t),u=Un(t);return c.on("update",(({added:n,updated:s,removed:a},u)=>{const d=n.concat(s).concat(a),f=e.cloud.currentUser.value;if("server"!==u&&f.isLoggedIn&&!mn(e)){const n=l.encodeAwarenessUpdate(c,d);e.messageProducer.next({type:"aware",table:o,prop:i,k:t.meta.parentId,u:n}),r.destroyed&&e.messageProducer.next({type:"doc-close",table:o,prop:i,k:t.meta.parentId})}})),c.on("destroy",(()=>{l.removeAwarenessStates(c,[t.clientID],"provider destroyed")})),(()=>{Y(this,void 0,void 0,(function*(){if(r.destroyed)return;let t=!1,l=1;const c=A([e.cloud.webSocketStatus,u.pipe(L(null))]).subscribe((([n])=>{if(r.destroyed)return;t="connected"===n;const o=e.cloud.currentUser.value;"connected"===n&&o.isLoggedIn&&!mn(e)&&(++l,d().catch((e=>{})))}));function d(){return Y(this,void 0,void 0,(function*(){const c=l,u=e.table(a),d=e.$syncState,[f,p]=yield e.transaction("r",d,u,(()=>Y(this,void 0,void 0,(function*(){const e=yield u.get($t),t=yield d.get("syncState");return[(null==e?void 0:e.receivedUntil)||0,(null==t?void 0:t.yServerRevision)||(null==t?void 0:t.serverRevision)]}))));if(r.destroyed||l!==c||!t)return;const y={type:"doc-open",table:o,prop:i,k:s,serverRev:p},h=yield u.where("i").between(f,1/0,!1).filter((e=>0===n(e.k,s)&&0==(1&(e.f||0)))).toArray();if(!r.destroyed&&l===c&&t){if(h.length>0){const e=J.mergeUpdatesV2(h.map((e=>e.u))),t=J.encodeStateVectorFromUpdateV2(e);y.sv=t}e.messageProducer.next(y)}}))}r.addCleanupHandler(c)}))})(),c}(e,o,t),Tn.set(o,i),i)})}}function ro(e){return"rlm~"+e}function oo(e){return e.startsWith("rlm~")?e.substr(4):null}const so={},io=new WeakMap,ao=co("tx"),lo=co("unload");function co(e){let t=null,n=!1,r=new Map;return{name:e,run(){return Y(this,void 0,void 0,(function*(){!n&&r.size>0&&(n=!0,t&&(yield t.catch((()=>{}))),setTimeout((()=>{n=!1;const e=r;r=new Map,t=function(e){return Y(this,void 0,void 0,(function*(){for(const{db:t,parentId:n,triggers:r,parentTable:o,prop:s}of e.values()){const e=G.getOrCreateDocument(t,o,s,n);try{const t=G.load(e);yield t.whenLoaded;for(const t of r)yield t(e,n)}catch(e){null==e||e.name}finally{G.release(e)}}}))}(e).finally((()=>{t=null}))}),0))}))},enqueue(e,t,n,o,s){const i=`${e.name}:${t}:${n}:${o}`;let a=r.get(i);a||(a={db:e,parentTable:t,parentId:n,prop:o,triggers:new Set},r.set(i,a)),a.triggers.add(s)}}}function uo(){ao.run()}function fo(){lo.run()}function po(e,t,n){var o,s;const i=null===(s=null===(o=e.schema.yProps)||void 0===o?void 0:o.find((e=>e.prop===t)))||void 0===s?void 0:s.updatesTable;if(!i)throw new Error(`Table ${e.name} does not have a Yjs property named ${t}`);so[i]={trigger:n,parentTable:e.name,prop:t};const a=e.db._novip;let l=io.get(a);l||(l=(e=>({stack:"dbcore",level:10,name:"yTriggerMiddleware",create:t=>Object.assign(Object.assign({},t),{transaction:(e,n,r)=>{const o=t.transaction(e,n,r);return"readonly"===n?o:e.some((e=>so[e]))?(o.addEventListener("complete",uo),o):o},table:n=>{const o=t.table(n),s=so[n];if(!s)return o;const{trigger:i,parentTable:a,prop:l}=s;return Object.assign(Object.assign({},o),{mutate(t){var n;switch(t.type){case"add":for(const r of t.values){if(null==r.k)continue;const t=r.k,o=G.getDocCache(e).find(a,t,l);(o&&(null===(n=G.for(o))||void 0===n?void 0:n.refCount)?lo:ao).enqueue(e,a,t,l,i)}break;case"delete":t.trans._rejecting_y_ypdate&&o.getMany({keys:t.keys,trans:t.trans,cache:"immutable"}).then((t=>{const n=new r;for(const{k:e}of t)null!=e&&n.addKey(e);for(const t of n)ao.enqueue(e,a,t.from,l,i)}))}return o.mutate(t)}})}})}))(a),io.set(a,l)),a.use(l),G.on("beforeunload",fo)}const yo={nameSuffix:!0};function ho(t){const n=t.name,r=Jr(t),s=[];let i=!1,a=null;t.on("ready",(t=>Y(this,void 0,void 0,(function*(){try{yield function(t){return Y(this,void 0,void 0,(function*(){var n,d,f,p,y,h,v;l=!1;const m=Qt(t);"undefined"!=typeof window&&"undefined"!=typeof document&&((null===(n=m.cloud.options)||void 0===n?void 0:n.customLoginGui)||s.push(function(e){let t=!1;const n=document.createElement("div");return document.body?(document.body.appendChild(n),_r(Qn(qr,{db:e.vip}),n)):addEventListener("DOMContentLoaded",(()=>{t||(document.body.appendChild(n),_r(Qn(qr,{db:e.vip}),n))})),{unsubscribe(){try{n.remove()}catch(e){}t=!0},get closed(){return t}}}(t))),m.cloud.isServiceWorkerDB||s.push(function(e){let t=e.cloud.webSocketStatus.value;const n=e.cloud.webSocketStatus.pipe(N((e=>{const n=t;t=e;const r=x(e);switch(e){case"disconnected":return wn.value?r.pipe(H(500)):r;case"connecting":return"not-started"===n||"error"===n?r:r.pipe(H(4e3));default:return r}})));return A([n,e.syncStateChangedEvent.pipe(q({phase:"initial"})),Jr(e.dx._novip),kn]).pipe(F((([t,n,r,o])=>{var s;if((null===(s=r.license)||void 0===s?void 0:s.status)&&"ok"!==r.license.status)return{phase:"offline",status:"offline",license:r.license.status};let{phase:i,error:a,progress:l}=n,c=t;return"error"===i&&(c="error"),"not-started"===t&&("pushing"!==i&&"pulling"!==i||(c="connecting")),"error"!==e.cloud.syncState.value.phase||"pushing"!==n.phase&&"pulling"!==n.phase||(c="connecting"),o||(c="disconnected"),{phase:i,error:a,progress:l,status:Tt?c:"offline",license:"ok"}})))}(m).subscribe(t.cloud.syncState)),s.push(m.syncCompleteEvent.subscribe(u)),m.tables.every((e=>e.core))||function(){throw new e.SchemaError("Version increment needed to allow dexie-cloud change tracking")}();const _="serviceWorker"in navigator?yield navigator.serviceWorker.getRegistrations():[],[w,S]=yield m.transaction("rw",m.$syncState,(()=>Y(this,void 0,void 0,(function*(){var e,t;const{options:n,schema:r}=m.cloud,[o,s,a]=yield Promise.all([m.getOptions(),m.getSchema(),m.getPersistedSyncState()]);if(i){if(!o||JSON.stringify(o)!==JSON.stringify(n)){if(!n)throw new Error("Internal error");const e=Object.assign({},n);delete e.fetchTokens,delete e.awarenessProtocol,yield m.$syncState.put(e,"options")}}else m.cloud.options=o||null;if((null===(e=m.cloud.options)||void 0===e?void 0:e.tryUseServiceWorker)&&"serviceWorker"in navigator&&_.length>0&&!rn?m.cloud.usingServiceWorker=!0:((null===(t=m.cloud.options)||void 0===t?void 0:t.tryUseServiceWorker)&&m.cloud.isServiceWorkerDB,m.cloud.usingServiceWorker=!1),Wn(r,m.cloud.options),Wn(s,m.cloud.options),r){if(!s||JSON.stringify(s)!==JSON.stringify(r)){const e=s||{};for(const[t,n]of Object.entries(r)){const r=e[t];r?(r.markedForSync=n.markedForSync,n.deleted=r.deleted,r.generatedGlobalId=n.generatedGlobalId):e[t]=Object.assign({},n)}yield m.$syncState.put(e,"schema"),Object.assign(r,e)}}else m.cloud.schema=s||null;return[null==a?void 0:a.initiallySynced,null==a?void 0:a.realms]}))));if(w&&m.setInitiallySynced(!0),function(t){var n,r;for(const o of t.tables)if(null===(r=null===(n=t.cloud.schema)||void 0===n?void 0:n[o.name])||void 0===r?void 0:r.markedForSync){if(o.schema.primKey.auto)throw new e.SchemaError(`Table ${o.name} is both autoIncremented and synced. Use db.cloud.configure({unsyncedTables: [${JSON.stringify(o.name)}]}) to blacklist it from sync`);if(!o.schema.primKey.keyPath)throw new e.SchemaError(`Table ${o.name} cannot be both synced and outbound. Use db.cloud.configure({unsyncedTables: [${JSON.stringify(o.name)}]}) to blacklist it from sync`)}}(m),c(),!m.cloud.isServiceWorkerDB){s.push(o((()=>m.getCurrentUser())).subscribe(r)),s.push(o((()=>m.getPersistedSyncState())).subscribe(m.cloud.persistedSyncState)),yield b(A([r.pipe(z(1),K(1)),m.cloud.persistedSyncState.pipe(z(1),K(1))]));const e=no(m);G.on.new.subscribe(e),m.dx.once("close",(()=>{G.on.new.unsubscribe(e)}))}let O=!1;const C=yield m.getCurrentUser(),T=null===(d=m.cloud.options)||void 0===d?void 0:d.requireAuth;T&&(m.cloud.isServiceWorkerDB?yield b(r.pipe(R((e=>!!e.isLoggedIn)),K(1))):"object"==typeof T?(!C.isLoggedIn||T.userId&&C.userId!==T.userId||T.email&&C.email!==T.email)&&(O=yield Pe(m,T)):C.isLoggedIn||(O=yield Pe(m))),!C.isLoggedIn||S&&S.includes(C.userId)||(O=!0),a&&a.stop(),a=null,c();const j=(null===(f=m.cloud.options)||void 0===f?void 0:f.databaseUrl)&&(!w||O);j&&(yield function(e,t,n){return Y(this,void 0,void 0,(function*(){yield _n(e,Wt,(()=>Kt(e,t,n,{isInitialSync:!0})))}))}(m,m.cloud.options,m.cloud.schema),m.setInitiallySynced(!0)),c(),m.cloud.usingServiceWorker&&(null===(p=m.cloud.options)||void 0===p?void 0:p.databaseUrl)?(j||de(m,"push").catch((()=>{})),function(e){return Y(this,void 0,void 0,(function*(){var t;try{const{periodicSync:n}=yield navigator.serviceWorker.ready;if(n)try{yield n.register(`dexie-cloud:${e.name}`,null===(t=e.cloud.options)||void 0===t?void 0:t.periodicSync)}catch(e){}}catch(e){}}))}(m).catch((()=>{}))):(null===(y=m.cloud.options)||void 0===y?void 0:y.databaseUrl)&&m.cloud.schema&&!m.cloud.isServiceWorkerDB&&(a=Fn(m,m.cloud.options,m.cloud.schema),a.start(),j||fe(m,"push")),c(),m.cloud.isServiceWorkerDB||s.push(I(self,"online").subscribe((()=>{m.syncStateChangedEvent.next({phase:"not-in-sync"}),mn(m)||fe(m,"push")})),I(self,"offline").subscribe((()=>{m.syncStateChangedEvent.next({phase:"offline"})}))),!(null===(h=m.cloud.options)||void 0===h?void 0:h.databaseUrl)||(null===(v=m.cloud.options)||void 0===v?void 0:v.disableWebSocket)||on||s.push(function(e){var t;if(!(null===(t=e.cloud.options)||void 0===t?void 0:t.databaseUrl))throw new Error("No database URL to connect WebSocket to");const n=e.messageConsumer.readyToServe.pipe(R((e=>e)),N((()=>e.getPersistedSyncState())),R((e=>e&&e.serverRevision)),N((e=>Y(this,void 0,void 0,(function*(){return{type:"ready",rev:e.serverRevision,realmSetHash:yield Be(e)}}))))),r=E(n,e.messageProducer);return function t(){return e.cloud.persistedSyncState.pipe(R((e=>null==e?void 0:e.serverRevision)),K(1),N((t=>e.cloud.currentUser.pipe(F((e=>[e,t]))))),N((([e,t])=>kn.pipe(F((n=>[n?e:null,t]))))),N((([t,n])=>(null==t?void 0:t.isLoggedIn)&&!(null==n?void 0:n.realms.includes(t.userId))?e.cloud.persistedSyncState.pipe(R((e=>(null==e?void 0:e.realms.includes(t.userId))||!1)),K(1),F((e=>[t,e]))):new k([t,n]))),N((e=>Y(this,[e],void 0,(function*([e,t]){return[e,yield Be(t)]})))),M((([e,t],[n,r])=>e===n&&t===r)),N((([n,o])=>{var s;return(null===(s=e.cloud.persistedSyncState)||void 0===s?void 0:s.value)?n?new An(e,e.cloud.persistedSyncState.value.serverRevision,e.cloud.persistedSyncState.value.yServerRevision,o,e.cloud.persistedSyncState.value.clientIdentity,r,e.cloud.webSocketStatus,n):g([]):t()})),V((n=>"TokenExpiredError"===(null==n?void 0:n.name)?x(!0).pipe(N((()=>Y(this,void 0,void 0,(function*(){const t=yield e.getCurrentUser(),n=yield xe(e.cloud.options.databaseUrl,t);yield e.table("$logins").update(t.userId,{accessToken:n.accessToken,accessTokenExpiration:n.accessTokenExpiration,claims:n.claims,license:n.license,data:n.data})})))),N((()=>t()))):U((()=>n)))),V((n=>(e.cloud.webSocketStatus.next("error"),n instanceof Dn?U((()=>n)):g(Ln()).pipe(N((()=>t())))))))}().subscribe({next:t=>{t&&e.messageConsumer.enqueue(t)},error:e=>{},complete:()=>{}})}(m))}))}(t)}catch(e){}}))),!0);let l=!1;function c(){if(l)throw new e.DatabaseClosedError}t.once("close",(()=>{s.forEach((e=>e.unsubscribe())),s.splice(0,s.length),l=!0,a&&a.stop(),a=null,r.next(Oe)}));const u=new S;var d;t.cloud={version:"4.2.0-alpha.4",options:Object.assign({},yo),schema:null,get currentUserId(){return r.value.userId||Oe.userId},currentUser:r,syncState:new k({phase:"initial",status:"not-started"}),events:{syncComplete:u},persistedSyncState:new k(void 0),userInteraction:new k(void 0),webSocketStatus:new k("not-started"),login(e){return Y(this,void 0,void 0,(function*(){const n=Qt(t);yield n.cloud.sync(),yield Pe(n,e)}))},invites:to(t),roles:Yr(t),configure(e){e=t.cloud.options=Object.assign(Object.assign({},t.cloud.options),e),i=!0,e.databaseUrl&&e.nameSuffix&&(t.name=`${n}-${function(e){const t=new URL(e);return"/"===t.pathname?t.hostname.split(".")[0]:t.pathname.split("/")[1]}(e.databaseUrl)}`,Qt(t).reconfigure()),Wn(t.cloud.schema,t.cloud.options)},logout(){return Y(this,arguments,void 0,(function*({force:e}={}){e?yield je(Qt(t),{deleteUnsyncedData:!0}):yield Te(Qt(t))}))},sync(){return Y(this,arguments,void 0,(function*({wait:e,purpose:n}={wait:!0,purpose:"push"}){var r;void 0===e&&(e=!0);const s=Qt(t);if("ok"!==((null===(r=s.cloud.currentUser.value.license)||void 0===r?void 0:r.status)||"ok")&&(yield ke(s)),"pull"===n){const t=s.cloud.persistedSyncState.value;if(fe(s,n),e){const e=yield b(s.cloud.persistedSyncState.pipe(R((e=>null!=(null==e?void 0:e.timestamp)&&(!t||e.timestamp>t.timestamp)))));if(null==e?void 0:e.error)throw new Error("Sync error: "+e.error)}}else if(yield Rn(s)){const t=s.cloud.persistedSyncState.value;fe(s,n),e&&(yield b(g(o((()=>Y(this,void 0,void 0,(function*(){const e=yield Rn(s),n=yield s.getPersistedSyncState();if((null==n?void 0:n.timestamp)!==(null==t?void 0:t.timestamp)&&(null==n?void 0:n.error))throw new Error("Sync error: "+n.error);return e}))))).pipe(R((e=>!e)))))}}))},permissions:(e,n)=>function(e,t,n){if(!t)throw new TypeError("Cannot check permissions of undefined or null. A Dexie Cloud object with realmId and owner expected.");const{owner:r,realmId:o}=t;if(!n){if("function"!=typeof t.table)throw new TypeError("Missing 'table' argument to permissions and table could not be extracted from entity");n=t.table()}const s=Qr(e),i=t=>{const s=t[o||e.cloud.currentUserId];return s?new eo(s.permissions,n,void 0===o||o===e.cloud.currentUserId||r===e.cloud.currentUserId):new eo({},n,!r||r===e.cloud.currentUserId)},a=s.pipe(F(i));return a.getValue=()=>i(s.getValue()),a}(t._novip,e,n)},t.Version.prototype._parseStoresSpec=e.override(t.Version.prototype._parseStoresSpec,(e=>gn(e,t))),t.Table.prototype.newId=function({colocateWith:e}={}){const n=e&&e.substr(e.length-3);return dn(t.cloud.schema[this.name].idPrefix||"",n)},t.Table.prototype.idPrefix=function(){var e,t;return(null===(t=null===(e=this.db.cloud.schema)||void 0===e?void 0:e[this.name])||void 0===t?void 0:t.idPrefix)||""},t.use(bn({currentUserObservable:t.cloud.currentUser,db:Qt(t)})),t.use((d=Qt(t),{stack:"dbcore",name:"implicitPropSetterMiddleware",level:1,create:e=>Object.assign(Object.assign({},e),{table:t=>{const n=e.table(t);return Object.assign(Object.assign({},n),{mutate:e=>{var r,o,s,i,a,l;const c=e.trans;if(c.disableChangeTracking)return n.mutate(e);const u=null!==(o=null===(r=c.currentUser)||void 0===r?void 0:r.userId)&&void 0!==o?o:Oe.userId;if((null===(i=null===(s=d.cloud.schema)||void 0===s?void 0:s[t])||void 0===i?void 0:i.markedForSync)&&("add"===e.type||"put"===e.type)){if("members"===t)for(const t of e.values)"string"==typeof t.email&&(t.email=t.email.trim().toLowerCase());for(const t of e.values){t.owner||(t.owner=u),t.realmId||(t.realmId=u);const r=null===(l=(a=n.schema.primaryKey).extractKey)||void 0===l?void 0:l.call(a,t);"string"==typeof r&&"#"===r[0]&&"put"===e.type&&(delete e.criteria,delete e.changeSpec,delete e.updates,t.$ts=Date.now())}}return n.mutate(e)}})}})})),t.use(fn(Qt(t)))}ho.version="4.2.0-alpha.4",e.Cloud=ho;export{ho as default,po as defineYDocTrigger,ho as dexieCloud,oo as getTiedObjectId,ro as getTiedRealmId,Vr as resolveText};
2
2
  //# sourceMappingURL=dexie-cloud-addon.min.js.map
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * ==========================================================================
10
10
  *
11
- * Version 4.2.0-alpha.3, Fri Aug 01 2025
11
+ * Version 4.2.0-alpha.4, Fri Aug 01 2025
12
12
  *
13
13
  * https://dexie.org
14
14
  *
@@ -5974,7 +5974,7 @@ function dexieCloud(dexie) {
5974
5974
  const syncComplete = new Subject();
5975
5975
  dexie.cloud = {
5976
5976
  // @ts-ignore
5977
- version: "4.2.0-alpha.3",
5977
+ version: "4.2.0-alpha.4",
5978
5978
  options: Object.assign({}, DEFAULT_OPTIONS),
5979
5979
  schema: null,
5980
5980
  get currentUserId() {
@@ -6291,7 +6291,7 @@ function dexieCloud(dexie) {
6291
6291
  }
6292
6292
  }
6293
6293
  // @ts-ignore
6294
- dexieCloud.version = "4.2.0-alpha.3";
6294
+ dexieCloud.version = "4.2.0-alpha.4";
6295
6295
  Dexie.Cloud = dexieCloud;
6296
6296
 
6297
6297
  // In case the SW lives for a while, let it reuse already opened connections: