dexie-cloud-addon 4.3.4 → 4.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- import e,{PropModification as t,cmp as n,RangeSet as r,liveQuery as o}from"dexie";import{Encoder as i,writeVarString as s,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 C,switchMap as O,tap as E,mergeMap as j,Subscription as T,throwError as P,combineLatest as U,map as A,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 W,tap as F,take as H,catchError as K,debounceTime as z,startWith as V,skip as q}from"rxjs/operators";import*as J from"yjs";import{DexieYProvider as G}from"y-dexie";import*as Y from"y-protocols/awareness";function Z(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{l(r.next(e))}catch(e){i(e)}}function a(e){try{l(r.throw(e))}catch(e){i(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(s,a)}l((r=r.apply(e,t||[])).next())})}function X(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 Q(e){return this instanceof Q?(this.v=e,this):new Q(e)}function ee(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,o=n.apply(e,t||[]),i=[];return r=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",function(e){return function(t){return Promise.resolve(t).then(e,c)}}),r[Symbol.asyncIterator]=function(){return this},r;function s(e,t){o[e]&&(r[e]=function(t){return new Promise(function(n,r){i.push([e,t,n,r])>1||a(e,t)})},t&&(r[e]=t(r[e])))}function a(e,t){try{!function(e){e.value instanceof Q?Promise.resolve(e.value.v).then(l,c):u(i[0][2],e)}(o[e](t))}catch(e){u(i[0][3],e)}}function l(e){a("next",e)}function c(e){a("throw",e)}function u(e,t){e(t),i.shift(),i.length&&a(i[0][0],i[0][1])}}function te(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=X(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)})}}}"function"==typeof SuppressedError&&SuppressedError;const ne={}.hasOwnProperty;function re(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)re(e,t[r],n[r])}else{var i=t.indexOf(".");if(-1!==i){var s=t.substr(0,i),a=t.substr(i+1);if(""===a)void 0===n?Array.isArray(e)?isNaN(parseInt(s))||e.splice(parseInt(s),1):delete e[s]:e[s]=n;else{var l=e[s];l&&function(e,t){return ne.call(e,t)}(e,s)||(l=e[s]={}),re(l,a,n)}}else void 0===n?Array.isArray(e)&&!isNaN(parseInt(t))?e.splice(t,1):delete e[t]:e[t]=n}}const oe="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=ie)=>{const n=Buffer.alloc(e);return t(n),n.toString("base64")}:()=>{throw new Error("No implementation of randomString was found")};function ie(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(ae))}function ae(e){return"string"==typeof e||"number"==typeof e||Array.isArray(e)&&e.every(ae)}function le(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,i=r[e];if(i)switch(i.type){case"ups":for(const[e,t]of Object.entries(o))re(i.val,e,t);break;case"del":break;case"upd":Object.assign(i.mod,o)}else r[e]={type:"upd",mod:o}});break;case"delete":o.forEach(e=>{r[e]={type:"del"}})}return e}function ce(e,t){for(const{table:n,muts:r}of t)for(const t of r)le(e,n,t)}async function*ue(e){let t=0,n=new Uint8Array(4),r=0,o=[],i=0;for await(const s of e){const e=new DataView(s.buffer,s.byteOffset,s.byteLength);let a=0;for(;a<s.byteLength;)switch(t){case 0:if(a+4>s.byteLength){for(const e of s.slice(a)){if(4===r)break;n[r++]=e,++a}if(r<4)break}else if(r>0&&r<4)for(const e of s.slice(a,a+4-r))n[r++]=e,++a;case 1:i=4===r?new DataView(n.buffer,0,4).getUint32(0,!1):e.getUint32(a,!1),r?r=0:a+=4;case 2:if(a>=s.byteLength){t=2;break}if(a+i>s.byteLength)o.push(s.slice(a)),i-=s.byteLength-a,t=2,a=s.byteLength;else{if(o.length>0){const e=new Uint8Array(o.reduce((e,t)=>e+t.byteLength,i));let t=0;for(const n of o)e.set(n,t),t+=n.byteLength;e.set(s.slice(a,a+i),t),o=[],yield e}else yield s.slice(a,a+i);a+=i,t=0}}}}let de=!1;function fe(e,t){return Z(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){de||(de=!0)}})}function pe(e,t){e.cloud.usingServiceWorker?fe(e,t):e.localSyncEvent.next({purpose:t})}const ye="fromBase64"in Uint8Array,he="toBase64"in Uint8Array.prototype,ve="undefined"!=typeof Buffer?e=>Buffer.from(e,"base64"):ye?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},me="undefined"!=typeof Buffer?e=>ArrayBuffer.isView(e)?Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("base64"):Buffer.from(e).toString("base64"):he?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 be 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}}const ge={},_e={google:'<svg viewBox="0 0 24 24" width="20" height="20"><path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/><path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"/><path fill="#FBBC05" d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"/><path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"/></svg>',github:'<svg viewBox="0 0 24 24" width="20" height="20" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"/></svg>',microsoft:'<svg viewBox="0 0 24 24" width="20" height="20"><rect fill="#F25022" x="1" y="1" width="10" height="10"/><rect fill="#00A4EF" x="1" y="13" width="10" height="10"/><rect fill="#7FBA00" x="13" y="1" width="10" height="10"/><rect fill="#FFB900" x="13" y="13" width="10" height="10"/></svg>',apple:'<svg viewBox="0 0 24 24" width="20" height="20" fill="currentColor"><path d="M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.81-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.19-.69.85-1.83 1.51-2.95 1.42-.15-1.15.41-2.35 1.05-3.11z"/></svg>'};function we(e){return Z(this,void 0,void 0,function*(){var t;let n;if(_e[e.type])n=_e[e.type];else if(null===(t=e.iconUrl)||void 0===t?void 0:t.toLowerCase().endsWith(".svg")){const t=yield function(e){return Z(this,void 0,void 0,function*(){if(ge[e])return ge[e];try{const t=yield fetch(e);if(t.ok){const n=yield t.text();if(n.includes("<svg"))return ge[e]=n,n}}catch(e){}return null})}(e.iconUrl);t&&(n=t)}return{name:"provider",value:e.name,displayName:`Continue with ${e.displayName}`,iconSvg:n,iconUrl:!n&&e.iconUrl?e.iconUrl:void 0,styleHint:e.type}})}function ke(t,n){return new Promise((r,o)=>{const i=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(i)})}function Se(e,t,...n){return ke(e,{type:"message-alert",title:t,alerts:n,fields:{},submitLabel:"OK",cancelLabel:null})}function xe(e,t,n){return Z(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 ke(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 Ie(e,t,n){return Z(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 ke(e,{type:"otp",title:"Enter OTP",alerts:r,fields:{otp:{type:"otp",label:"OTP",placeholder:"Paste OTP here"}}});return o})}class Ce extends Error{constructor(e){super(`OAuth redirect initiated for provider: ${e}`),this.name="OAuthRedirectError",this.provider=e}}function Oe(e){return Z(this,void 0,void 0,function*(){var t,n,r;const o=yield e.getCurrentUser(),{accessToken:i,accessTokenExpiration:s,refreshToken:a,refreshTokenExpiration:l,claims:c}=o;if(!i)return null;if((null!==(t=null==s?void 0:s.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 je(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 Ee(t,n,r,o,i){return Z(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 je(t,n):yield function(t,n,r,o){return Z(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:i,publicKey:s}=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(!i||!s)throw new Error("Could not generate RSA keypair");t.nonExportablePrivateKey=i;const a=function(e){const t=me(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",s));t.publicKey=s;try{const e=yield n({public_key:a,hints:o});if("error"===e.type)throw new be(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 ke(r,{type:"message-alert",title:"Authentication Alert",fields:{},alerts:e.alerts})),t}catch(t){if(t instanceof Ce||"OAuthRedirectError"===(null==t?void 0:t.name))throw t;if(t instanceof be)throw yield Se(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 Se(r,"Authentication Failed",{type:"error",messageCode:"GENERIC_ERROR",message:n,messageParams:{}}).catch(()=>{})}throw t}})}(n,r,o,i)})}function je(e,t){return Z(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),i=yield crypto.subtle.sign(r,t.nonExportablePrivateKey,o),s=me(i),a={grant_type:"refresh_token",refresh_token:t.refreshToken,scopes:["ACCESS_DB"],signature:s,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 be(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 Te=new WeakMap;class Pe{constructor(e,t){Te.set(this,e),Object.assign(this,t)}static load(e,t){return e.table("$logins").get(t).then(n=>new Pe(e,n||{userId:t,claims:{sub:t},lastLogin:new Date(0)}))}save(){return Z(this,void 0,void 0,function*(){Te.get(this).table("$logins").put(this)})}}const Ue={userId:"unauthorized",name:"Unauthorized",claims:{sub:"unauthorized"},lastLogin:new Date(0)};try{Object.freeze(Ue),Object.freeze(Ue.claims)}catch(e){}function Ae(e,t){return b(g(e).pipe(_(t)))}function $e(e){return Z(this,void 0,void 0,function*(){const t=yield De(e);if(t){if(!(yield function(e,t,n){return Z(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 ke(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 De(e,{deleteUnsyncedData:!0})}})}function De(e){return Z(this,arguments,void 0,function*(e,{deleteUnsyncedData:t=!1}={}){const[n,r]=yield e.dx.transaction("rw",e.dx.tables,n=>Z(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")),i=(yield Promise.all(o.map(e=>n.table(e).count()))).reduce((e,t)=>e+t,0);if(i>0&&!t)return[i,!1];e.$syncState.delete("syncState");for(const t of e.dx.tables)"$jobs"!==t.name&&"$syncState"!==t.name&&t.clear();return[i,!0]}));return r&&(yield Ae(e.cloud.currentUser,e=>e.userId===Ue.userId),yield e.cloud.sync({purpose:"pull",wait:!0})),n})}class Le extends Error{constructor(e,t){super(t||`${e.status} ${e.statusText}`),this.httpStatus=e.status}get name(){return"HttpError"}}const Re={access_denied:"Access was denied by the authentication provider.",invalid_state:"The authentication response could not be verified. Please try again.",email_not_verified:"Your email address must be verified before you can log in.",expired_code:"The authentication code has expired. Please try again.",provider_error:"An error occurred with the authentication provider.",network_error:"A network error occurred during authentication. Please check your connection and try again."};class Ne extends Error{constructor(e,t,n){super(n||Re[e]),this.name="OAuthError",this.code=e,this.provider=t}get userMessage(){return Re[this.code]||this.message}}const Be={providers:[],otpEnabled:!0};function Me(e){return Z(this,arguments,void 0,function*(e,t=!0){if(!t)return Be;try{const t=yield fetch(`${e}/auth-providers`,{method:"GET",headers:{Accept:"application/json"},mode:"cors"});return 404===t.status?Be:t.ok?yield t.json():Be}catch(e){return Be}})}function We(e){"undefined"!=typeof sessionStorage&&sessionStorage.setItem("dexie-cloud-oauth-provider",e.provider);const t=function(e){const t=new URL(`${e.databaseUrl}/oauth/login/${e.provider}`),n=e.redirectUri||("undefined"!=typeof window?window.location.href:"");return n&&t.searchParams.set("redirect_uri",n),t.toString()}(e);window.location.href=t}function Fe(t){const{userInteraction:n}=t.cloud;return function(r){return Z(this,arguments,void 0,function*({public_key:r,hints:o}){var i,s;let a;const l=null===(i=t.cloud.options)||void 0===i?void 0:i.databaseUrl;if(!l)throw new Error("No database URL given.");if((null==o?void 0:o.oauthCode)&&o.provider)return yield function(e){return Z(this,void 0,void 0,function*(){const{databaseUrl:t,code:n,publicKey:r,scopes:o=["ACCESS_DB"]}=e,i={grant_type:"authorization_code",code:n,public_key:r,scopes:o};try{const e=yield fetch(`${t}/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i),mode:"cors"});if(!e.ok){if(400===e.status||401===e.status)try{const t=yield e.json();if("error"===t.type){if("INVALID_OTP"===t.messageCode)throw new Ne("expired_code",void 0,t.message);throw new be(t)}}catch(e){if(e instanceof Ne||e instanceof be)throw e}const t=yield e.text().catch(()=>e.statusText);throw new Ne("provider_error",void 0,`Token exchange failed: ${e.status} ${t}`)}const n=yield e.json();if("error"===n.type)throw new be(n);if("tokens"!==n.type)throw new Ne("provider_error",void 0,`Unexpected response type: ${n.type}`);return n}catch(e){if(e instanceof Ne||e instanceof be)throw e;if(e instanceof TypeError)throw new Ne("network_error");throw e}})}({databaseUrl:l,code:o.oauthCode,publicKey:r,scopes:["ACCESS_DB"]});if(null==o?void 0:o.provider)throw He(t,o.provider),new Ce(o.provider);if("demo"===(null==o?void 0:o.grant_type)){a={demo_user:yield xe(n,"Enter a demo user email",(null==o?void 0:o.email)||(null==o?void 0:o.userId)),grant_type:"demo",scopes:["ACCESS_DB"],public_key:r}}else if((null==o?void 0:o.otpId)&&o.otp)a={grant_type:"otp",otp_id:o.otpId,otp:o.otp,scopes:["ACCESS_DB"],public_key:r};else{const i=!1!==(null===(s=t.cloud.options)||void 0===s?void 0:s.socialAuth),c=yield Me(l,i);if(c.providers.length>0){const r=yield function(t,n,r){return Z(this,arguments,void 0,function*(t,n,r,o="Choose login method",i=[]){const s=[...yield Promise.all(n.map(we))];return r&&s.push({name:"otp",value:"email",displayName:"Continue with email",iconSvg:'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="M22 6L12 13 2 6"/></svg>',styleHint:"otp"}),new Promise((n,r)=>{const a={type:"generic",title:o,alerts:i,options:s,fields:{},submitLabel:"",cancelLabel:"Cancel",onSubmit:e=>{t.next(void 0),n("otp"in e?{type:"otp"}:"provider"in e?{type:"provider",provider:e.provider}:{type:"otp"})},onCancel:()=>{t.next(void 0),r(new e.AbortError("User cancelled"))}};t.next(a)})})}(n,c.providers,c.otpEnabled,"Sign in");if("provider"===r.type)throw He(t,r.provider),new Ce(r.provider)}const u=yield xe(n,"Enter email address",null==o?void 0:o.email);a=/@demo.local$/.test(u)?{demo_user:u,grant_type:"demo",scopes:["ACCESS_DB"],public_key:r}:{email:u,grant_type:"otp",scopes:["ACCESS_DB"]}}const c=yield fetch(`${l}/token`,{body:JSON.stringify(a),method:"post",headers:{"Content-Type":"application/json",mode:"cors"}});if(200!==c.status){const e=yield c.text();throw yield Se(n,"Token request failed",{type:"error",messageCode:"GENERIC_ERROR",message:e,messageParams:{}}).catch(()=>{}),new Le(c,e)}const u=yield c.json();if("tokens"===u.type||"error"===u.type)return u;if("otp"===a.grant_type&&"email"in a){if("otp-sent"!==u.type)throw new Error(`Unexpected response from ${l}/token`);const e=yield Ie(n,a.email),t=Object.assign(Object.assign({},a),{otp:e||"",otp_id:u.otp_id,public_key:r});let o=yield fetch(`${l}/token`,{body:JSON.stringify(t),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"});for(;401===o.status;){const e=yield o.text();t.otp=yield Ie(n,a.email,{type:"error",messageCode:"INVALID_OTP",message:e,messageParams:{}}),o=yield fetch(`${l}/token`,{body:JSON.stringify(t),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"})}if(200!==o.status){const e=yield o.text();throw new Le(o,e)}return yield o.json()}throw new Error(`Unexpected response from ${l}/token`)})}}function He(e,t){var n,r;const o=null===(n=e.cloud.options)||void 0===n?void 0:n.databaseUrl;if(!o)throw new Error("No database URL given.");We({databaseUrl:o,provider:t,redirectUri:(null===(r=e.cloud.options)||void 0===r?void 0:r.oauthRedirectUri)||("undefined"!=typeof window?window.location.href:void 0)})}function Ke(e,...t){globalThis.console[e](...t)}function ze(e,t){return Z(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 Oe(e),!1}const i=new Pe(e,{claims:{},lastLogin:new Date(0)});try{yield Ee(e.cloud.options.databaseUrl,i,e.cloud.options.fetchTokens||Fe(e),e.cloud.userInteraction,t)}catch(e){if("OAuthRedirectError"===e.name)return!1;throw e}return o!==Ue.userId&&i.userId!==o&&(yield $e(e)),yield function(e,t){return Z(this,void 0,void 0,function*(){const n=e.table("$logins");yield e.transaction("rw",n,e=>Z(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&&(Ke("debug","Login context property names:",Object.keys(t)),Ke("debug","Login context property names:",Object.keys(t)),Ke("debug","Login context:",t),Ke("debug","Login context JSON:",JSON.stringify(t)))}catch(e){}throw e}})),yield Ae(e.cloud.currentUser,e=>e.userId===t.userId)})}(e,i),pe(e,"pull"),i.userId!==o})}const Ve={},qe="undefined"!=typeof self&&self.document&&"undefined"!=typeof navigator&&navigator.serviceWorker;qe&&qe.ready.then(e=>Ve.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 Je{constructor(e){this.name=e}subscribe(e){if(!qe)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 qe.addEventListener("message",t),()=>qe.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})):Ve.registration&&(null===(t=Ve.registration.active)||void 0===t||t.postMessage({type:`sw-broadcast-${this.name}`,message:e}))}}const Ge=globalThis["lbc-events"]||(globalThis["lbc-events"]=new Map);class Ye extends w{constructor(e){const t="undefined"==typeof BroadcastChannel?new Je(e):new BroadcastChannel(e);super(n=>{function r(e){n.next(e.detail)}function o(e){n.next(e.data)}let i;!function(e,t){Ge.has(e)?Ge.get(e).push(t):Ge.set(e,[t])}(`lbc-${e}`,r);try{t instanceof Je?i=t.subscribe(e=>n.next(e)):t.addEventListener("message",o)}catch(e){}return()=>{!function(e,t){const n=Ge.get(e);if(n){const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}(`lbc-${e}`,r),t instanceof Je?i():t.removeEventListener("message",o)}}),this.name=e,this.bc=t}next(e){this.bc.postMessage(e);!function(e){const t=Ge.get(e.type);t&&t.forEach(t=>{try{t(e)}catch(e){}})}(new CustomEvent(`lbc-${this.name}`,{detail:e}))}}function Ze(e){return Z(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 me(o)})}function Xe(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 Qe(e){return`$${e}_mutations`}function et(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 tt=[].concat;function nt(e){return tt.apply([],e)}function rt(e,t){return Z(this,arguments,void 0,function*(e,t,{since:n={},limit:r=1/0}={}){const o=yield Promise.all(e.map(e=>Z(this,void 0,void 0,function*(){const t=et(e.name),o=n[t];let i=o?e.where("rev").above(o):e;r<1/0&&(i=i.limit(r));let s=yield i.toArray();s=function(e){return e=e.map(e=>{if("modify"===e.type&&null===e.criteria.index){const t=Object.assign(Object.assign({},e),{criteria:void 0,changeSpec:void 0,type:"update",keys:e.keys,changeSpecs:[e.changeSpec]});return delete t.criteria,delete t.changeSpec,t}return e}),e}(s),s=function(e){const t=new Map;for(const n of e)if("update"===n.type){if(1!==n.keys.length||1!==n.changeSpecs.length)continue;const e=""+n.keys[0],r=n.changeSpecs[0];if(Object.values(r).some(e=>"object"==typeof e&&e&&"@@propmod"in e))continue;let o=t.get(e);o?o.push({txid:n.txid,updateSpec:r}):t.set(e,[{txid:n.txid,updateSpec:r}])}return e=e.filter(e=>{if("update"!==e.type)return!0;if(1!==e.keys.length||1!==e.changeSpecs.length)return!0;const n=e.changeSpecs[0];if(Object.values(n).some(e=>"object"==typeof e&&e&&"@@propmod"in e))return!0;const r=new Set(Object.keys(e.changeSpecs[0])),o=""+e.keys[0],i=t.get(o);if(!i)return!0;for(let t=i.length-1;t>=0;--t){const{txid:n,updateSpec:o}=i[t];if(n===e.txid)break;for(const e of Object.keys(o))r.delete(e)}return 0!==r.size}),e}(s);return s.map(e=>({table:t,mut:e}))}))),i=nt(o).sort((e,t)=>e.mut.txid===t.mut.txid?e.mut.opNo-t.mut.opNo:e.mut.ts-t.mut.ts),s=[];let a=null,l=null;for(const{table:e,mut:t}of i)a&&a.table===e&&l===t.txid?a.muts.push(t):(a={table:e,muts:[t]},l=t.txid,s.push(a));return s})}function ot(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:it}={};const st={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 at(...e){const t=e.reduce((e,t)=>({...e,...t}),e.reduce((e,t)=>({...t,...e}),{})),n=new WeakMap;return{stringify(e,r,o){const i=JSON.stringify(e,function(e){const o=this[e],i=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 st;let i=n.get(r);if(void 0!==i)return i;const s=(o=e,it.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,s))&&void 0!==o?o:t===s});return i=null==a?void 0:a[1],i||(i=Array.isArray(e)?null:"function"==typeof e?t.function||null:st),n.set(r,i),i}default:return t[r]}var o}(o);return i?i.replace(o,r,t):o},o);return i},parse(e,n){const r=[];return JSON.parse(e,function(e,o){const i=null==o?void 0:o.$t;if(i){const e=t[i];o=e?e.revive(o,n,t):o}let s=r[r.length-1];if(s&&s[0]===o){o={...o};for(const e of s[1])delete o[e];for(const[e,t]of Object.entries(s[2]))o[e]=t;r.pop()}if(void 0===o||"$"===e[0]&&"$t"!==e){let t,n;s=r[r.length-1],s&&s[0]===this?(t=s[1],n=s[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 lt={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 ct={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 ut={bigint:{replace:e=>({$t:"bigint",v:""+e}),revive:e=>BigInt(e.v)}};var dt={Date:{replace:e=>({$t:"Date",v:isNaN(e.getTime())?"NaN":e.toISOString()}),revive:({v:e})=>new Date("NaN"===e?NaN:Date.parse(e))}},ft={Set:{replace:e=>({$t:"Set",v:Array.from(e.entries())}),revive:({v:e})=>new Set(e)}},pt={Map:{replace:e=>({$t:"Map",v:Array.from(e.entries())}),revive:({v:e})=>new Map(e)}};const yt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0;var ht=["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=yt[t];return o&&new o(r.ArrayBuffer.revive({v:e},n,r))}}}),{});function vt(e){return function(e){for(var t="",n=0,r=e.length;n<r;n++)t+=gt[e[n]];return t}(me(e))}function mt(e){return ve(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+=bt[e[n]];return t}(e))}const bt={"-":"=",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:"+","|":"/"},gt={};for(const e of Object.keys(bt))gt[bt[e]]=e;var _t={ArrayBuffer:{replace:e=>({$t:"ArrayBuffer",v:vt(e)}),revive:({v:e})=>{const t=mt(e);return t.buffer.byteLength===t.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}}};class wt{constructor(e,t){this.buf=e,this.type=t}}function kt(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 St(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;++n)t[n]=e.charCodeAt(n);return t.buffer}var xt={Blob:{test:(e,t)=>"Blob"===t||e instanceof wt,replace:e=>({$t:"Blob",v:me(e instanceof wt?e.buf:St(kt(e))),type:e.type}),revive:({type:e,v:t})=>{const n=ve(t);return void 0!==typeof Blob?new Blob([n]):new wt(n.buffer,e)}}};const It={...ct,...ut,...dt,...ft,...pt,...ht,..._t,...xt};function Ct(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 Ot={undefined:{replace:()=>({$t:"undefined"}),revive:()=>{}}},Et={File:{test:(e,t)=>"File"===t,replace:e=>({$t:"File",v:me(St(kt(e))),type:e.type,name:e.name,lastModified:new Date(e.lastModified).toISOString()}),revive:({type:e,v:t,name:n,lastModified:r})=>{const o=ve(t);return new File([o],n,{type:e,lastModified:new Date(r).getTime()})}}};const jt="function"==typeof BigInt&&"bigint"==typeof BigInt(0);class Tt{toString(){return this.v}constructor(e){this.v=e}}const Pt=jt?{}:{bigint:{test:e=>e instanceof Tt,replace:e=>Object.assign({$t:"bigint"},e),revive:({v:e})=>new Tt(e)}},Ut=Object.assign(Object.assign(Object.assign(Object.assign({},Ot),Pt),Et),{PropModification:{test:e=>e instanceof t,replace:e=>Object.assign({$t:"PropModification"},e["@@propmod"]),revive:e=>{var{$t:n}=e,r=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(r)}}}),At=at(It,Ut),$t=function(...e){const t=at(It,lt,...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);return[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])})),r]},async parse(e,n){let r=0;const o=[],i=await Ct(n),s=new DataView(i);for(;r<i.byteLength;){const e=s.getUint32(r);r+=4;const t=i.slice(r,r+e);r+=e,o.push(t)}return t.parse(e,o)},async fromBinary(e){const t=new DataView(await Ct(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)}}}(Ut);function Dt(t,n,r){const o=[];for(let i of r){const{table:r,muts:s}=i,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=i;s.forEach((t,r)=>{const o=!l.outbound&&("upsert"===t.type||"insert"===t.type);t.keys.forEach((t,s)=>{if(Array.isArray(t)){c===i&&(c=Lt(i,o));const e=c.muts[r],n=JSON.stringify(t);e.keys[s]=n}else if("#"===t[0]){c===i&&(c=Lt(i,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[s]=u,o&&e.setByKeyPath(a.values[s],l.keyPath,u)}})}),o.push(c)}return o}function Lt(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 Rt=new WeakMap;function Nt(e){return Z(this,void 0,void 0,function*(){var t,n;const r=(null!==(n=null===(t=Rt.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 Bt(e,t,n,r,o,i,s,a,l){return Z(this,void 0,void 0,function*(){const c={Accept:"application/json, application/x-bison, application/x-bison-stream","Content-Type":"application/tson"},u=yield Oe(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:s||{},lastPull:n?{serverRevision:n.serverRevision,yServerRevision:n.yServerRevision,realms:n.realms,inviteRealms:n.inviteRealms}:void 0,baseRevs:r,changes:Dt(o.dx.core.schema,l,e),y:t,dxcv:o.cloud.version};o.syncStateChangedEvent.next({phase:"pushing"});const p=At.stringify(f),y=yield fetch(`${i}/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),i=Math.max(0,Number(r)),s=Number(o);if(i<t/2){const t=Math.ceil(s/(i+1));Rt.set(e,new Date(Date.now()+1e3*t))}else Rt.delete(e)}}(o,y),!y.ok)throw new Le(y);if("application/x-bison"===y.headers.get("content-type"))return $t.fromBinary(yield y.blob());{const e=yield y.text();return At.parse(e)}})}function Mt(t){if(null==t?void 0:t.cancelled)throw new e.AbortError("Operation was cancelled")}let Wt=!1;function Ft(e,t,n,r){return Z(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 Ht(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 Kt(t,r,o){return Z(this,void 0,void 0,function*(){const i=yield t.bulkGet(r),s=[],a=[];r.forEach((r,l)=>{const c=i[l];if(c){for(const[i,s]of Object.entries(o[l]))if(i===t.schema.primKey.keyPath){if(0!==n(s,r))throw new Error("Cannot change primary key")}else e.setByKeyPath(c,i,s);s.push(r),a.push(c)}}),yield null==t.schema.primKey.keyPath?t.bulkPut(a,s):t.bulkPut(a)})}function zt(t,n){return Z(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:i}=t.core.schema,s=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(s);switch(n.type){case"insert":i.outbound?yield t.bulkAdd(n.values,r):(r.forEach((t,r)=>{e.setByKeyPath(n.values[r],i.keyPath,t)}),yield t.bulkAdd(n.values));break;case"upsert":i.outbound?yield t.bulkPut(n.values,r):(r.forEach((t,r)=>{e.setByKeyPath(n.values[r],i.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 Kt(t,r,n.changeSpecs);break;case"delete":yield t.bulkDelete(r)}}}})}"undefined"!=typeof self&&"undefined"!=typeof navigator&&(Wt=navigator.onLine,self.addEventListener("online",()=>Wt=!0),self.addEventListener("offline",()=>Wt=!1));const Vt="dexie-cloud-syncer";function qt(e,t){return e.where("i").between(t,1/0,!0).toArray()}function Jt(e,t,n){var r,o,i;if(!e.dx._allTables[t])return;const s=null===(i=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===i?void 0:i.updatesTable;return s&&e.dx._allTables[s]?e.table(s):void 0}function Gt(e,t){return Z(this,void 0,void 0,function*(){var r;const o={};let i,s=!1;for(const a of e)try{switch(a.type){case"u-s":{const e=Jt(t,a.table,a.prop);if(e){const t={k:a.k,u:a.u};a.r&&(t.r=a.r,i=a.r),o[e.name]=yield e.add(t)}break}case"u-ack":{const e=Jt(t,a.table,a.prop);e&&(yield t.transaction("rw",e,t=>Z(this,void 0,void 0,function*(){let n=yield t.table(e.name).get(Vt);yield t.table(e.name).put(Object.assign(Object.assign({},n||{i:Vt}),{unsentFrom:Math.max((null==n?void 0:n.unsentFrom)||1,a.i+1)}))})));break}case"u-reject":{const e=Jt(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&~(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":i=a.yServerRev;break;case"outdated-server-rev":s=!0}}catch(e){}return{receivedUntils:o,resyncNeeded:s,yServerRevision:i}})}function Yt(t,n,r){return Z(this,arguments,void 0,function*(t,n,{yDownloadedRealms:r,realms:o}){if(r&&o&&o.every(e=>"*"===r[e]))return;const i=yield Oe(t),s={"Content-Type":"application/json",Accept:"application/octet-stream"};i&&(s.Authorization=`Bearer ${i.accessToken}`);const a=yield fetch(`${n}/y/download`,{body:At.stringify({downloadedRealms:r||{}}),method:"POST",headers:s,credentials:"include"});if(!a.ok)throw new Error(`Failed to download Yjs documents from server. Status: ${a.status}`);yield async function(e,...t){let n=e();for(let e=0;e<t.length;e++)n=t[e](n);for await(const e of n);}(function(e){return async function*(){if(!e.body)throw new Error("Response body is not readable");const t=e.body.getReader();try{for(;;){const{done:e,value:n}=await t.read();if(e)return;yield n}}finally{t.releaseLock()}}}(a),ue,function(r){return ee(this,arguments,function*(){var o,i,s,a;let l=null,c=null,u=null,h=[];function b(e){return Z(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=Jt(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=te(r);!(o=(g=yield Q(w.next())).done);_=!0){a=g.value,_=!1;const e=new d(a);for(;v(e);)switch(m(e)){case 1:yield Q(b(!0)),l=f(e);break;case 2:yield Q(b(!1)),c=f(e),u=f(e);break;case 3:{const t=p(e),n=y(e);h.push({k:t,u:n});break}}yield Q(b(!1))}}catch(e){i={error:e}}finally{try{_||o||!(s=w.return)||(yield Q(s.call(w)))}finally{if(i)throw i.error}}yield Q(b(!0))}catch(t){throw t instanceof e.DexieError||(yield Q(b(!1))),t}})})})}const Zt="currentSyncWorker";function Xt(e,t,n,r){return Qt(e,t,n,r).then(t=>((null==r?void 0:r.justCheckIfNeeded)||e.syncStateChangedEvent.next({phase:"in-sync"}),t)).catch(o=>Z(this,void 0,void 0,function*(){return(null==r?void 0:r.justCheckIfNeeded)?Promise.reject(o):Wt&&(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 Xt(e,t,n,Object.assign(Object.assign({},r),{retryImmediatelyOnFetchError:!1}))):(yield e.$syncState.update("syncState",{timestamp:new Date,error:""+o}),e.syncStateChangedEvent.next({phase:Wt?"error":"offline",error:new Error(""+(null==o?void 0:o.message)||o)}),Promise.reject(o))}))}function Qt(e,t,n){return Z(this,arguments,void 0,function*(e,t,n,{isInitialSync:r,cancelToken:o,justCheckIfNeeded:i,purpose:s}={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?Xe(e):[],d=u.map(t=>e.table(Qe(t.name))),f=yield e.getPersistedSyncState(),p=c.isLoggedIn,y=p?function(e,t){const n=(null==t?void 0:t.syncedTables)||[];return Xe(e).filter(e=>!n.includes(e.name))}(e,f):[];Mt(o);const h=y.length>0;if(h){if(i)return!0;yield e.transaction("rw",y,e=>Z(this,void 0,void 0,function*(){e.idbtrans.disableChangeTracking=!0,e.idbtrans.disableAccessControl=!0,yield function(e,t,n){return Z(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!==Ue.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!==Ue.userId||(e.owner=t.userId)}):yield n.toCollection().modify(e=>{e.realmId&&r.has(e.realmId)||(e.owner&&e.owner!==Ue.userId||(e.owner=t.userId),e.realmId&&e.realmId!==Ue.userId||(e.realmId=t.userId))}))})}(y,c,null==f?void 0:f.realms)})),Mt(o)}const[v,m,b,{yMessages:g,lastUpdateIds:_}]=yield e.transaction("r",e.tables,()=>Z(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 i=yield rt(d,e);const s=yield function(e,t){return Z(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 i=e.table(t.updatesTable),s=yield i.get(Vt),a=(null==s?void 0:s.unsentFrom)||1,l=(null==s?void 0:s.receivedUntil)||0,c=Math.min(a,l+1),u=yield qt(i,c);u.length>0&&(r[i.name]=u[u.length-1].i);const d={};for(const e of u){const t=!(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:i,i:s}of Object.values(d)){const a=1===i.length?i[0]:J.mergeUpdatesV2(i);if(r)n.push({type:"u-c",table:o.name,prop:t.prop,k:e,u:a,i:s});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(Mt(o),h){const e=[...(null==f?void 0:f.realms)||[],...(null==f?void 0:f.inviteRealms)||[]],a=yield function(e,t,n,r){return Z(this,void 0,void 0,function*(){const o=`upload-${ot(8)}`;if(t.isLoggedIn&&e.length>0){const i=new Set(r||[]);return(yield Promise.all(e.map(e=>Z(this,void 0,void 0,function*(){const{extractKey:r}=e.core.schema.primaryKey;if(!r)return{table:e.name,muts:[]};const s=n[e.name],a=(null==s?void 0:s.generatedGlobalId)?e.filter(e=>{return r(e),!i.has(e.realmId||"")&&(t=r(e),!(n=null==s?void 0:s.idPrefix)||"string"==typeof t&&t.startsWith(n));var t,n}):e.filter(e=>{const t=r(e);return!i.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 Mt(o),i=i.concat(a),[i,t,r,s]}return[i,t,r,s]})),w=v.some(e=>e.muts.some(e=>e.keys.length>0))||g.some(e=>"u-c"===e.type);if(i)return w;if("push"===s&&!w)return!1;const k=Ht(v,null==m?void 0:m.latestRevisions),S=(null==m?void 0:m.clientIdentity)||oe(16);Mt(o);const x=yield Bt(v,g,m,b,e,l,n,S,c),{done:I,newSyncState:C}=yield e.transaction("rw",e.tables,t=>Z(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 rt(d,e,{since:k});for(const t of d){const n=et(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()])}Ht(r,k),yield Ft(e,n,k,x.serverRevision);const o=yield e.getPersistedSyncState();yield function(e,t,n){return Z(this,void 0,void 0,function*(){const r=new Set,o=new Set,i=n?n.realms:[],s=n?n.inviteRealms:[],a=new Set(t.realms),l=new Set(t.realms.concat(t.inviteRealms));for(const e of i)a.has(e)||(o.add(e),l.has(e)||r.add(e));for(const e of s.concat(i))l.has(e)||r.add(e);if(r.size>0||o.size>0){const t=Xe(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 i=o||{syncedTables:[],latestRevisions:{},realms:[],inviteRealms:[],clientIdentity:S};p&&(i.syncedTables=u.map(e=>e.name).concat(y.map(e=>e.name))),i.latestRevisions=k,i.remoteDbId=x.dbId,i.initiallySynced=!0,i.realms=x.realms,i.inviteRealms=x.inviteRealms,i.serverRevision=x.serverRevision,i.yServerRevision=x.serverRevision,i.timestamp=new Date,delete i.error;const s=en(x.changes,r);if(yield zt(s,e),x.yMessages){const{receivedUntils:t,resyncNeeded:n,yServerRevision:r}=yield Gt(x.yMessages,e);r&&(i.yServerRevision=r),yield function(e,t,n){return Z(this,void 0,void 0,function*(){var r,o,i,s,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!==(i=null==t?void 0:t.unsentFrom)&&void 0!==i?i:1,o=null!==(a=null!==(s=null==t?void 0:t.receivedUntil)&&void 0!==s?s:(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,()=>Z(this,void 0,void 0,function*(){const t=yield n.table(e).get(Vt);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:Vt,unsentFrom:r,receivedUntil:o})}))}})}(_,t,e),n&&(i.yDownloadedRealms={})}return e.$syncState.put(i,"syncState"),{done:0===r.length,newSyncState:i}}));if(!I)return yield Nt(e),yield Qt(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}),E=!!x.yMessages;if(O&&E)try{yield Yt(e,l,C)}catch(e){}return e.syncCompleteEvent.next(),!1})}function en(e,t){const n={};ce(n,e);const r={};return ce(r,t),function(e,t){for(const[n,r]of Object.entries(t))for(const[t,o]of Object.entries(r))switch(o.type){case"ups":{const r=e[n]?.[t];if(r)switch(r.type){case"ups":case"upd":delete e[n][t]}}break;case"del":delete e[n]?.[t];break;case"upd":{const r=e[n]?.[t];if(r)switch(r.type){case"ups":for(const[e,t]of Object.entries(o.mod))re(r.val,e,t);break;case"del":break;case"upd":for(const e of Object.keys(o.mod))delete r.mod[e]}break}}}(n,r),function(e,t){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({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)}function tn(t){const n=[],r=new k(!0),o=new k(null);let i=!1,s=new Array(10).fill(0);return o.subscribe(()=>Z(this,void 0,void 0,function*(){if(!i&&n.length>0){i=!0,s.shift(),s.push(Date.now()),r.next(!1);try{yield function(){return Z(this,void 0,void 0,function*(){for(var r,o,i,s,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 je(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===(i=null==n?void 0:n.realms)||void 0===i?void 0:i.includes(c.realm))||(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realm-removed":((null===(s=null==n?void 0:n.realms)||void 0===s?void 0:s.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)){pe(t,"pull");break}yield t.transaction("rw",t.dx.tables,n=>Z(this,void 0,void 0,function*(){n.idbtrans.disableChangeTracking=!0,n.idbtrans.disableAccessControl=!0;const[r,o,i]=yield Promise.all([t.getSchema(),t.getPersistedSyncState(),t.getCurrentUser()]);if(!o||!r||!i)return;if(c.baseRev!==o.serverRevision)return void("string"!=typeof c.baseRev||"bigint"!=typeof o.serverRevision&&"object"!=typeof o.serverRevision||pe(t,"pull"));if((yield e.waitFor(Ze(o)))!==c.realmSetHash)return void pe(t,"pull");let s=[];if(i.isLoggedIn){const e=Xe(t).map(e=>t.table(Qe(e.name)));s=yield rt(e,t)}if(c.changes.length>0){const e=en(c.changes,s);yield zt(e,t)}o.latestRevisions=Ht(s,o.latestRevisions),o.serverRevision=c.newRev,yield Ft(t,r,o.latestRevisions,c.newRev),yield t.$syncState.put(o,"syncState")}))}}catch(e){}}})}()}finally{s[s.length-1]-s[0]<1e4&&(yield new Promise(e=>setTimeout(e,1e3))),i=!1,r.next(!0)}}})),{enqueue:function(e){n.push(e),o.next(null)},readyToServe:r}}const nn=new WeakMap,rn={members:"@id, [userId+realmId], [email+realmId], realmId",roles:"[realmId+name]",realms:"@realmId",$jobs:"",$syncState:"",$baseRevs:"[tableName+clientRev]",$logins:"claims.sub, lastLogin"};let on=0;function sn(e){"vip"in e&&(e=e.vip);let t=nn.get(e.cloud);if(!t){const n=new S;let r=new Ye(`syncstatechanged-${e.name}`),o=new Ye(`synccomplete-${e.name}`);n.id=++on;let i=!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 i},localSyncEvent:n,get syncStateChangedEvent(){return r},get syncCompleteEvent(){return o},dx:e};const s={getCurrentUser:()=>t.$logins.toArray().then(e=>e.find(e=>e.isLoggedIn)||Ue),getPersistedSyncState:()=>t.$syncState.get("syncState"),getSchema:()=>t.$syncState.get("schema").then(e=>{if(e)for(const n of t.tables)n.schema.primKey&&n.schema.primKey.keyPath&&e[n.name]&&(e[n.name].primaryKey=an(n.schema.primKey.keyPath));return e}),getOptions:()=>t.$syncState.get("options"),setInitiallySynced(e){i=e},reconfigure(){r=new Ye(`syncstatechanged-${e.name}`),o=new Ye(`synccomplete-${e.name}`)}};Object.assign(t,s),t.messageConsumer=tn(t),t.messageProducer=new S,nn.set(e.cloud,t)}return t}function an(e){return"string"==typeof e?e:e?"["+[].join.call(e,"+")+"]":""}const ln="undefined"!=typeof InstallTrigger,cn="undefined"!=typeof navigator&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\/|Edge\//.test(navigator.userAgent),un=cn?[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]:NaN,dn=cn&&un<=605||ln,fn="undefined"!=typeof self&&"clients"in self&&!self.document;const{toString:pn}={};function yn(e){return pn.call(e).slice(8,-1)}function hn(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)}function vn(e,t){return(1&t?e[0].toUpperCase():e[0].toLowerCase())+(2&t?e[1].toUpperCase():e[1].toLowerCase())+(4&t?e[2].toUpperCase():e[2].toLowerCase())}const mn=/b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|x|y|z/i;function bn(e){return e>="A"&&e<="Z"}let gn=0;function _n(e,t){const n=new Uint8Array(18),r=new Uint8Array(n.buffer,0,6),o=Date.now();gn>=o?++gn:gn=o,r[0]=gn/1099511627776,r[1]=gn/4294967296,r[2]=gn/16777216,r[3]=gn/65536,r[4]=gn/256,r[5]=gn;const i=new Uint8Array(n.buffer,6);crypto.getRandomValues(i);return e+vt(new Uint8Array(n.buffer))+(t||"")}function wn(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 i,s;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===(i=t.cloud.schema)||void 0===i?void 0:i[r];if(null==a?void 0:a.generatedGlobalId){if((null===(s=t.cloud.options)||void 0===s?void 0:s.databaseUrl)&&!t.initiallySynced){const e=hn(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,i){let s=null;const a=hn(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]=_n(i,l),o.schema.primaryKey.outbound||(s||(s=n.values.slice()),s[c]=e.deepClone(s[c]),e.setByKeyPath(s[c],o.schema.primaryKey.keyPath,a[c]))}else if("string"!=typeof l||!l.startsWith(i)&&!l.startsWith("#"+i))throw new e.ConstraintError(`The ID "${l}" is not valid for table "${r}". Primary '@' keys requires the key to be prefixed with "${i}" (or "#${i}).\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:s||n.values}))}(n,a.idPrefix)}if(null==a?void 0:a.markedForSync){hn(o.schema.primaryKey,n).forEach((t,n)=>{if(!se(t)){const n=Array.isArray(t)?t.map(yn).join(","):yn(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 kn=0;function Sn(e,t){return function(n){const{readers:r,writers:o}=n.trans[t]||(n.trans[t]={writers:[],readers:[]}),i=o.length,s=(i>0?o[i-1].then(()=>e(n),()=>e(n)):e(n)).finally(()=>{r.splice(r.indexOf(s))});return r.push(s),s}}function xn(e,t){return function(n){const{readers:r,writers:o}=n.trans[t]||(n.trans[t]={writers:[],readers:[]});let i=(o.length>0?o[o.length-1].then(()=>e(n),()=>e(n)):r.length>0?(s=r,new Promise(e=>{0===s.length&&e([]);let t=s.length;const n=new Array(t);s.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 s;return o.push(i),i}}const In=new k(new Set);function Cn(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 On({currentUserObservable:e,db:t}){return{stack:"dbcore",name:"MutationTrackingMiddleware",level:1,create:n=>{const o=new Set(n.schema.tables.map(e=>e.name)),i=n.schema.tables.filter(e=>!/^\$/.test(e.name)),s=new Map;for(const e of i){const t=`$${e.name}_mutations`;o.has(t)&&s.set(e.name,n.table(t))}return Object.assign(Object.assign({},n),{transaction:(r,o)=>{let i;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=>Qe(e));i=n.transaction([...r,...e],o)}else i=n.transaction(r,o);if("readwrite"===o){i.txid=ot(16),i.opCount=0,i.currentUser=e.value,In.value.add(i),In.next(In.value);const n=()=>{i.removeEventListener("complete",r),i.removeEventListener("error",n),i.removeEventListener("abort",n),In.value.delete(i),In.next(In.value)},r=()=>{i.mutationsAdded&&!Cn(t)&&pe(t,"push"),n()};i.addEventListener("complete",r),i.addEventListener("error",n),i.addEventListener("abort",n)}return i},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:i}=o,a=s.get(e);return a?function(e){const t="$lock"+ ++kn;return Object.assign(Object.assign({},e),{count:Sn(e.count,t),get:Sn(e.get,t),getMany:Sn(e.getMany,t),openCursor:Sn(e.openCursor,t),query:Sn(e.query,t),mutate:xn(e.mutate,t)})}(Object.assign(Object.assign({},o),{mutate:n=>{var r,s,a;const c=n.trans;return c.txid?c.disableChangeTracking?o.mutate(n):(null===(s=null===(r=t.cloud.schema)||void 0===r?void 0:r[e])||void 0===s?void 0:s.markedForSync)&&(null===(a=c.currentUser)||void 0===a?void 0:a.isLoggedIn)?"deleteRange"===n.type?o.query({query:{range:n.range,index:i.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 s,l;const c=n.trans,u=null===(l=null===(s=t.cloud.options)||void 0===s?void 0:s.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:s}=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,g=!(!b||!("upsert"in n))&&n.upsert;if(o&&(l=l.filter((e,t)=>!s[t]),v=v.filter((e,t)=>!s[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;if(!g){for(let r=0,i=e.length;r<i;++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 _=Date.now();let w="criteria"in n&&n.criteria?Object.assign(Object.assign({},n.criteria),{index:n.criteria.index===i.primaryKey.keyPath?null:n.criteria.index}):void 0;if(u&&(null==w?void 0:w.index)){const e=null===(t=i.indexes.find(e=>e.name===w.index))||void 0===t?void 0:t.keyPath;(e?"string"==typeof e?[e]:e:[]).some(e=>null==u?void 0:u.includes(e))&&(w=void 0)}const k="delete"===n.type?{type:"delete",ts:_,opNo:y,keys:l,criteria:w,txid:d,userId:f}:"add"===n.type?{type:"insert",ts:_,opNo:y,keys:l,txid:d,userId:f,values:v}:g&&b?{type:"upsert",ts:_,opNo:y,keys:l,values:v,changeSpecs:b.changeSpecs.filter((e,t)=>!s[t]),txid:d,userId:f}:w&&m?{type:"modify",ts:_,opNo:y,keys:l,criteria:w,changeSpec:m,txid:d,userId:f}:m?{type:"update",ts:_,opNo:y,keys:l,changeSpecs:l.map(()=>m),txid:d,userId:f}:b?{type:"update",ts:_,opNo:y,keys:b.keys,changeSpecs:b.changeSpecs,txid:d,userId:f}:{type:"upsert",ts:_,opNo:y,keys:l,values:v,txid:d,userId:f};return"isAdditionalChunk"in n&&n.isAdditionalChunk&&(k.isAdditionalChunk=!0),l.length>0||w?a.mutate({type:"add",trans:c,values:[k]}).then(()=>(c.mutationsAdded=!0,e)):e})}}})}}}function En(e,t){return function(n,r){var o;const i=Object.assign(Object.assign({},rn),n);Object.keys(rn).forEach(e=>{const t=i[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=rn[e].split(",").map(e=>e.trim()),s=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(rn[e])}`);for(let t=1;t<o.length;++t){const n=o[t];s.has(n.replace(/([&*]|\+\+)/g,""))||(i[e]+=`,${n}`)}});const s=t.cloud.schema||(t.cloud.schema={}),a=new Set;Object.keys(i).forEach(e=>{var t;const n=null===(t=i[e])||void 0===t?void 0:t.trim(),r=s[e]||(s[e]={});null!=n?(/^\@/.test(n)&&(i[e]=i[e].substr(1),r.generatedGlobalId=!0,r.idPrefix=function(e,t){let n=e[0].toLocaleLowerCase();for(let t=1,r=e.length;t<r&&n.length<3;++t)(mn.test(e[t])||bn(e[t]))&&(n+=e[t].toLowerCase());for(;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;)r=vn(n,e),++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(r.idPrefix)),/^\$/.test(e)||(i[`$${e}_mutations`]="++rev",r.markedForSync=!0),r.deleted&&(r.deleted=!1)):(r.deleted=!0,r.markedForSync=!1,i[`$${e}_mutations`]=null)});const l=e.call(this,i,r);for(const[e,t]of Object.entries(r))if(null===(o=t.yProps)||void 0===o?void 0:o.length){const n=s[e];n&&(n.yProps=t.yProps.map(e=>e.prop))}return l}}function jn(e,t,n){return"undefined"!=typeof navigator&&navigator.locks?navigator.locks.request(e.name+"|"+t,n):n()}const Tn=new k(!0),Pn=new k(!0);Tn.pipe(N(e=>e?x(!0):x(!1).pipe(B(2e4))),M()).subscribe(Pn);const Un="undefined"!=typeof document?I(document,"visibilitychange"):x({}),An=Un.pipe(R(()=>"hidden"===document.visibilityState)),$n=Un.pipe(R(()=>"visible"===document.visibilityState)),Dn="undefined"!=typeof window?C($n,I(window,"mousedown"),I(window,"mousemove"),I(window,"keydown"),I(window,"wheel"),I(window,"touchmove")):x({});"undefined"!=typeof document&&C(x(!0),An,Dn).pipe(W(()=>"visible"===document.visibilityState),F(e=>{Tn.value!==e&&Tn.next(e)}),N(e=>e?x(0).pipe(B(16e4),F(()=>Tn.next(!1))):x(0))).subscribe(()=>{});class Ln extends Error{constructor(){super(...arguments),this.name="TokenExpiredError"}}const Rn=new WeakMap,Nn=new WeakMap;function Bn(e){let t=Nn.get(e);return t||(t=new S,Nn.set(e,t)),t}class Mn extends w{constructor(e,t,n,r,o,i,s,a){super(l=>new Fn(e,t,n,r,o,a,l,i,s))}}let Wn=0;class Fn extends T{constructor(e,t,n,r,o,i,s,a,l){super(()=>this.teardown()),this.id=++Wn,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=i,this.subscriber=s,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 Z(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 Ln);this.webSocketStatus.next("connecting"),this.pinger=setInterval(()=>Z(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?At.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=>Rn.get(e))(e);n&&Y.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&&Bn(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?Gt([t],this.db).then(e=>Z(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=Jt(this.db,t.table,t.prop);if(e){const t=r[e.name];t&&(yield e.update(Vt,{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(At.stringify(e))):null===(n=this.ws)||void 0===n||n.send(function(e){const t=new i;switch(s(t,e.type),"table"in e&&s(t,e.table),"prop"in e&&s(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":s(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),s(t,e.r||"")}}return u(t)}(e)))})),this.user.isLoggedIn&&!Cn(this.db)&&this.subscriptions.add(function(e){const t=nt(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 C(...t.map(({table:t,ydocProp:n,updatesTable:r})=>{const i=e.table(r);return g(i.get(Vt)).pipe(O(e=>{let r=(null==e?void 0:e.unsentFrom)||1;return g(o(()=>Z(this,void 0,void 0,function*(){return(yield qt(i,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(E(e=>{e.length>0&&(r=e.at(-1).i+1)}))}))})).pipe(j(e=>e))}(this.db).subscribe(this.db.messageProducer))}catch(e){this.pauseUntil=new Date(Date.now()+6e4)}})}}class Hn extends Error{constructor(e){super("expired"===e?"License expired":"deactivated"===e?"User deactivated":"Invalid license"),this.name="InvalidLicenseError",e&&(this.license=e)}}function Kn(e){return Z(this,void 0,void 0,function*(){var e;yield(e=3e3,new Promise(t=>setTimeout(t,e))),yield b(Dn)})}function zn(e){return Z(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 Xt(e,e.cloud.options,e.cloud.schema,{justCheckIfNeeded:!0}))})}const Vn=new WeakMap;function qn(e,t,n,r){const o=Vn.get(e);if(o){if(o.pull||"push"===(null==r?void 0:r.purpose))return o.promise;{let i=!1;const s=e.cloud.syncState.subscribe(e=>{"pulling"===e.phase&&(i=!0)});return o.promise.then(()=>{s.unsubscribe()}).catch(e=>(s.unsubscribe(),Promise.reject(e))).then(()=>{if(!i)return qn(e,t,n,r)})}}const i=function(){return Z(this,void 0,void 0,function*(){try{yield Nt(e),yield jn(e,Zt,()=>Xt(e,t,n,r)),Vn.delete(e)}catch(t){throw Vn.delete(e),t}})}();return Vn.set(e,{promise:i,pull:"push"!==(null==r?void 0:r.purpose)}),i}function Jn(e,t,n){let r=null,o={cancelled:!1},i=0,s=0;function a(r=1){setTimeout(()=>{const f=l?"pull":"push";s=Date.now(),qn(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,i=0,s=0}).catch(e=>{if(o.cancelled)d(),u=!1,i=0,s=0;else if(r<5){const e=1e3*[0,20,40,300,900][r];i=Date.now()+e,s=0,setTimeout(()=>a(r+1),e)}else u=!1,i=0,s=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?i||s>0&&Date.now():(u=!0,a()))})(e||"pull")})},stop:d}}function Gn(e,t){if(e&&t&&t.unsyncedTables)for(const n of t.unsyncedTables)e[n]&&(e[n].markedForSync=!1)}var Yn,Zn,Xn,Qn,er,tr,nr,rr,or,ir,sr,ar={},lr=[],cr=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,ur=Array.isArray;function dr(e,t){for(var n in t)e[n]=t[n];return e}function fr(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function pr(e,t,n){var r,o,i,s={};for(i in t)"key"==i?r=t[i]:"ref"==i?o=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?Yn.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(i in e.defaultProps)void 0===s[i]&&(s[i]=e.defaultProps[i]);return yr(e,s,r,o,null)}function yr(e,t,n,r,o){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++Xn:o,__i:-1,__u:0};return null==o&&null!=Zn.vnode&&Zn.vnode(i),i}function hr(e){return e.children}function vr(e,t){this.props=e,this.context=t}function mr(e,t){if(null==t)return e.__?mr(e.__,e.__i+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?mr(e):null}function br(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 br(e)}}function gr(e){(!e.__d&&(e.__d=!0)&&Qn.push(e)&&!_r.__r++||er!=Zn.debounceRendering)&&((er=Zn.debounceRendering)||tr)(_r)}function _r(){for(var e,t,n,r,o,i,s,a=1;Qn.length;)Qn.length>a&&Qn.sort(nr),e=Qn.shift(),a=Qn.length,e.__d&&(n=void 0,r=void 0,o=(r=(t=e).__v).__e,i=[],s=[],t.__P&&((n=dr({},r)).__v=r.__v+1,Zn.vnode&&Zn.vnode(n),Or(t.__P,n,r,t.__n,t.__P.namespaceURI,32&r.__u?[o]:null,i,null==o?mr(r):o,!!(32&r.__u),s),n.__v=r.__v,n.__.__k[n.__i]=n,jr(i,n,s),r.__e=r.__=null,n.__e!=o&&br(n)));_r.__r=0}function wr(e,t,n,r,o,i,s,a,l,c,u){var d,f,p,y,h,v,m,b=r&&r.__k||lr,g=t.length;for(l=function(e,t,n,r,o){var i,s,a,l,c,u=n.length,d=u,f=0;for(e.__k=new Array(o),i=0;i<o;i++)null!=(s=t[i])&&"boolean"!=typeof s&&"function"!=typeof s?("string"==typeof s||"number"==typeof s||"bigint"==typeof s||s.constructor==String?s=e.__k[i]=yr(null,s,null,null,null):ur(s)?s=e.__k[i]=yr(hr,{children:s},null,null,null):null==s.constructor&&s.__b>0?s=e.__k[i]=yr(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):e.__k[i]=s,l=i+f,s.__=e,s.__b=e.__b+1,-1!=(c=s.__i=Sr(s,n,l,d))&&(d--,(a=n[c])&&(a.__u|=2)),null==a||null==a.__v?(-1==c&&(o>u?f--:o<u&&f++),"function"!=typeof s.type&&(s.__u|=4)):c!=l&&(c==l-1?f--:c==l+1?f++:(c>l?f--:f++,s.__u|=4))):e.__k[i]=null;if(d)for(i=0;i<u;i++)null!=(a=n[i])&&!(2&a.__u)&&(a.__e==r&&(r=mr(a)),Ar(a,a));return r}(n,t,b,l,g),d=0;d<g;d++)null!=(p=n.__k[d])&&(f=-1==p.__i?ar:b[p.__i]||ar,p.__i=d,v=Or(e,p,f,o,i,s,a,l,c,u),y=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&Ur(f.ref,null,p),u.push(p.ref,p.__c||y,p)),null==h&&null!=y&&(h=y),(m=!!(4&p.__u))||f.__k===p.__k?l=kr(p,l,e,m):"function"==typeof p.type&&void 0!==v?l=v:y&&(l=y.nextSibling),p.__u&=-7);return n.__e=h,l}function kr(e,t,n,r){var o,i;if("function"==typeof e.type){for(o=e.__k,i=0;o&&i<o.length;i++)o[i]&&(o[i].__=e,t=kr(o[i],t,n,r));return t}e.__e!=t&&(r&&(t&&e.type&&!t.parentNode&&(t=mr(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do{t=t&&t.nextSibling}while(null!=t&&8==t.nodeType);return t}function Sr(e,t,n,r){var o,i,s,a=e.key,l=e.type,c=t[n],u=null!=c&&!(2&c.__u);if(null===c&&null==a||u&&a==c.key&&l==c.type)return n;if(r>(u?1:0))for(o=n-1,i=n+1;o>=0||i<t.length;)if(null!=(c=t[s=o>=0?o--:i++])&&!(2&c.__u)&&a==c.key&&l==c.type)return s;return-1}function xr(e,t,n){"-"==t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||cr.test(t)?n:n+"px"}function Ir(e,t,n,r,o){var i,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||xr(e.style,t,"");if(n)for(t in n)r&&n[t]==r[t]||xr(e.style,t,n[t])}else if("o"==t[0]&&"n"==t[1])i=t!=(t=t.replace(rr,"$1")),s=t.toLowerCase(),t=s in e||"onFocusOut"==t||"onFocusIn"==t?s.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r?n.u=r.u:(n.u=or,e.addEventListener(t,i?sr:ir,i)):e.removeEventListener(t,i?sr:ir,i);else{if("http://www.w3.org/2000/svg"==o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!=t&&"height"!=t&&"href"!=t&&"list"!=t&&"form"!=t&&"tabIndex"!=t&&"download"!=t&&"rowSpan"!=t&&"colSpan"!=t&&"role"!=t&&"popover"!=t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&"-"!=t[4]?e.removeAttribute(t):e.setAttribute(t,"popover"==t&&1==n?"":n))}}function Cr(e){return function(t){if(this.l){var n=this.l[t.type+e];if(null==t.t)t.t=or++;else if(t.t<n.u)return;return n(Zn.event?Zn.event(t):t)}}}function Or(e,t,n,r,o,i,s,a,l,c){var u,d,f,p,y,h,v,m,b,g,_,w,k,S,x,I,C,O=t.type;if(null!=t.constructor)return null;128&n.__u&&(l=!!(32&n.__u),i=[a=t.__e=n.__e]),(u=Zn.__b)&&u(t);e:if("function"==typeof O)try{if(m=t.props,b="prototype"in O&&O.prototype.render,g=(u=O.contextType)&&r[u.__c],_=u?g?g.props.value:u.__:r,n.__c?v=(d=t.__c=n.__c).__=d.__E:(b?t.__c=d=new O(m,_):(t.__c=d=new vr(m,_),d.constructor=O,d.render=$r),g&&g.sub(d),d.state||(d.state={}),d.__n=r,f=d.__d=!0,d.__h=[],d._sb=[]),b&&null==d.__s&&(d.__s=d.state),b&&null!=O.getDerivedStateFromProps&&(d.__s==d.state&&(d.__s=dr({},d.__s)),dr(d.__s,O.getDerivedStateFromProps(m,d.__s))),p=d.props,y=d.state,d.__v=t,f)b&&null==O.getDerivedStateFromProps&&null!=d.componentWillMount&&d.componentWillMount(),b&&null!=d.componentDidMount&&d.__h.push(d.componentDidMount);else{if(b&&null==O.getDerivedStateFromProps&&m!==p&&null!=d.componentWillReceiveProps&&d.componentWillReceiveProps(m,_),t.__v==n.__v||!d.__e&&null!=d.shouldComponentUpdate&&!1===d.shouldComponentUpdate(m,d.__s,_)){for(t.__v!=n.__v&&(d.props=m,d.state=d.__s,d.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(e){e&&(e.__=t)}),w=0;w<d._sb.length;w++)d.__h.push(d._sb[w]);d._sb=[],d.__h.length&&s.push(d);break e}null!=d.componentWillUpdate&&d.componentWillUpdate(m,d.__s,_),b&&null!=d.componentDidUpdate&&d.__h.push(function(){d.componentDidUpdate(p,y,h)})}if(d.context=_,d.props=m,d.__P=e,d.__e=!1,k=Zn.__r,S=0,b){for(d.state=d.__s,d.__d=!1,k&&k(t),u=d.render(d.props,d.state,d.context),x=0;x<d._sb.length;x++)d.__h.push(d._sb[x]);d._sb=[]}else do{d.__d=!1,k&&k(t),u=d.render(d.props,d.state,d.context),d.state=d.__s}while(d.__d&&++S<25);d.state=d.__s,null!=d.getChildContext&&(r=dr(dr({},r),d.getChildContext())),b&&!f&&null!=d.getSnapshotBeforeUpdate&&(h=d.getSnapshotBeforeUpdate(p,y)),I=u,null!=u&&u.type===hr&&null==u.key&&(I=Tr(u.props.children)),a=wr(e,ur(I)?I:[I],t,n,r,o,i,s,a,l,c),d.base=t.__e,t.__u&=-161,d.__h.length&&s.push(d),v&&(d.__E=d.__=null)}catch(e){if(t.__v=null,l||null!=i)if(e.then){for(t.__u|=l?160:128;a&&8==a.nodeType&&a.nextSibling;)a=a.nextSibling;i[i.indexOf(a)]=null,t.__e=a}else{for(C=i.length;C--;)fr(i[C]);Er(t)}else t.__e=n.__e,t.__k=n.__k,e.then||Er(t);Zn.__e(e,t,n)}else null==i&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):a=t.__e=Pr(n.__e,t,n,r,o,i,s,l,c);return(u=Zn.diffed)&&u(t),128&t.__u?void 0:a}function Er(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(Er)}function jr(e,t,n){for(var r=0;r<n.length;r++)Ur(n[r],n[++r],n[++r]);Zn.__c&&Zn.__c(t,e),e.some(function(t){try{e=t.__h,t.__h=[],e.some(function(e){e.call(t)})}catch(e){Zn.__e(e,t.__v)}})}function Tr(e){return"object"!=typeof e||null==e||e.__b&&e.__b>0?e:ur(e)?e.map(Tr):dr({},e)}function Pr(e,t,n,r,o,i,s,a,l){var c,u,d,f,p,y,h,v=n.props||ar,m=t.props,b=t.type;if("svg"==b?o="http://www.w3.org/2000/svg":"math"==b?o="http://www.w3.org/1998/Math/MathML":o||(o="http://www.w3.org/1999/xhtml"),null!=i)for(c=0;c<i.length;c++)if((p=i[c])&&"setAttribute"in p==!!b&&(b?p.localName==b:3==p.nodeType)){e=p,i[c]=null;break}if(null==e){if(null==b)return document.createTextNode(m);e=document.createElementNS(o,b,m.is&&m),a&&(Zn.__m&&Zn.__m(t,i),a=!1),i=null}if(null==b)v===m||a&&e.data==m||(e.data=m);else{if(i=i&&Yn.call(e.childNodes),!a&&null!=i)for(v={},c=0;c<e.attributes.length;c++)v[(p=e.attributes[c]).name]=p.value;for(c in v)if(p=v[c],"children"==c);else if("dangerouslySetInnerHTML"==c)d=p;else if(!(c in m)){if("value"==c&&"defaultValue"in m||"checked"==c&&"defaultChecked"in m)continue;Ir(e,c,null,p,o)}for(c in m)p=m[c],"children"==c?f=p:"dangerouslySetInnerHTML"==c?u=p:"value"==c?y=p:"checked"==c?h=p:a&&"function"!=typeof p||v[c]===p||Ir(e,c,p,v[c],o);if(u)a||d&&(u.__html==d.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(d&&(e.innerHTML=""),wr("template"==t.type?e.content:e,ur(f)?f:[f],t,n,r,"foreignObject"==b?"http://www.w3.org/1999/xhtml":o,i,s,i?i[0]:n.__k&&mr(n,0),a,l),null!=i)for(c=i.length;c--;)fr(i[c]);a||(c="value","progress"==b&&null==y?e.removeAttribute("value"):null!=y&&(y!==e[c]||"progress"==b&&!y||"option"==b&&y!=v[c])&&Ir(e,c,y,v[c],o),c="checked",null!=h&&h!=e[c]&&Ir(e,c,h,v[c],o))}return e}function Ur(e,t,n){try{if("function"==typeof e){var r="function"==typeof e.__u;r&&e.__u(),r&&null==t||(e.__u=e(t))}else e.current=t}catch(e){Zn.__e(e,n)}}function Ar(e,t,n){var r,o;if(Zn.unmount&&Zn.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||Ur(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){Zn.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&Ar(r[o],t,n||"function"!=typeof e.type);n||fr(e.__e),e.__c=e.__=e.__e=void 0}function $r(e,t,n){return this.constructor(e,n)}function Dr(e,t,n){var r,o,i;t==document&&(t=document.documentElement),Zn.__&&Zn.__(e,t),r=!1?null:t.__k,o=[],i=[],Or(t,e=t.__k=pr(hr,null,[e]),r||ar,ar,t.namespaceURI,r?null:t.firstChild?Yn.call(t.childNodes):null,o,r?r.__e:t.firstChild,false,i),jr(o,e,i)}Yn=lr.slice,Zn={__e:function(e,t,n,r){for(var o,i,s;t=t.__;)if((o=t.__c)&&!o.__)try{if((i=o.constructor)&&null!=i.getDerivedStateFromError&&(o.setState(i.getDerivedStateFromError(e)),s=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,r||{}),s=o.__d),s)return o.__E=o}catch(t){e=t}throw e}},Xn=0,vr.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=dr({},this.state),"function"==typeof e&&(e=e(dr({},n),this.props)),e&&dr(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),gr(this))},vr.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),gr(this))},vr.prototype.render=hr,Qn=[],tr="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,nr=function(e,t){return e.__v.__b-t.__v.__b},_r.__r=0,rr=/(PointerCapture)$|Capture$/i,or=0,ir=Cr(!1),sr=Cr(!0);const Lr={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",padding:"16px",boxSizing:"border-box"},DialogInner:{position:"relative",color:"#222",backgroundColor:"#fff",padding:"24px",marginBottom:"2em",maxWidth:"400px",width:"100%",maxHeight:"90%",overflowY:"auto",border:"3px solid #3d3d5d",borderRadius:"8px",boxShadow:"0 0 80px 10px #666",fontFamily:"sans-serif",boxSizing:"border-box"},Input:{height:"35px",width:"100%",maxWidth:"100%",borderColor:"#ccf4",outline:"none",fontSize:"16px",padding:"8px",boxSizing:"border-box",backgroundColor:"#f9f9f9",borderRadius:"4px",border:"1px solid #ccc",marginTop:"6px",fontFamily:"inherit"},Button:{padding:"10px 20px",margin:"0 4px",border:"1px solid #d1d5db",borderRadius:"6px",backgroundColor:"#ffffff",cursor:"pointer",fontSize:"14px",fontWeight:"500",color:"#374151",transition:"all 0.2s ease"},PrimaryButton:{padding:"10px 20px",margin:"0 4px",border:"1px solid #3b82f6",borderRadius:"6px",backgroundColor:"#3b82f6",color:"white",cursor:"pointer",fontSize:"14px",fontWeight:"500",transition:"all 0.2s ease"},ButtonsDiv:{display:"flex",justifyContent:"flex-end",gap:"12px",marginTop:"24px",paddingTop:"20px"},Label:{display:"block",marginBottom:"12px",fontSize:"14px",fontWeight:"500",color:"#333"},WindowHeader:{margin:"0 0 20px 0",fontSize:"18px",fontWeight:"600",color:"#333",borderBottom:"1px solid #eee",paddingBottom:"10px"},ProviderButton:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",padding:"12px 16px",marginBottom:"10px",border:"1px solid #d1d5db",borderRadius:"6px",backgroundColor:"#ffffff",cursor:"pointer",fontSize:"14px",fontWeight:"500",color:"#374151",transition:"all 0.2s ease",gap:"12px"},ProviderButtonIcon:{width:"20px",height:"20px",flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center"},ProviderButtonText:{flex:1,textAlign:"left"},ProviderGoogle:{backgroundColor:"#ffffff",border:"1px solid #dadce0",color:"#3c4043"},ProviderGitHub:{backgroundColor:"#24292e",border:"1px solid #24292e",color:"#ffffff"},ProviderMicrosoft:{backgroundColor:"#ffffff",border:"1px solid #8c8c8c",color:"#5e5e5e"},ProviderApple:{backgroundColor:"#000000",border:"1px solid #000000",color:"#ffffff"},ProviderCustom:{backgroundColor:"#4f46e5",border:"1px solid #4f46e5",color:"#ffffff"},Divider:{display:"flex",alignItems:"center",margin:"20px 0",color:"#6b7280",fontSize:"13px"},DividerLine:{flex:1,height:"1px",backgroundColor:"#e5e7eb"},DividerText:{padding:"0 12px",color:"#9ca3af"},OtpButton:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",padding:"12px 16px",border:"1px solid #d1d5db",borderRadius:"6px",backgroundColor:"#f9fafb",cursor:"pointer",fontSize:"14px",fontWeight:"500",color:"#374151",transition:"all 0.2s ease",gap:"12px"}};function Rr({children:e,className:t}){return pr("div",{className:`dexie-dialog ${t||""}`},pr("div",{style:Lr.Darken}),pr("div",{style:Lr.DialogOuter},pr("div",{style:Lr.DialogInner},e)))}var Nr,Br,Mr,Wr,Fr=0,Hr=[],Kr=Zn,zr=Kr.__b,Vr=Kr.__r,qr=Kr.diffed,Jr=Kr.__c,Gr=Kr.unmount,Yr=Kr.__;function Zr(e,t){Kr.__h&&Kr.__h(Br,e,Fr||t),Fr=0;var n=Br.__H||(Br.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function Xr(e){return Fr=1,function(e,t){var n=Zr(Nr++,2);if(n.t=e,!n.__c&&(n.__=[so(void 0,t),function(e){var t=n.__N?n.__N[0]:n.__[0],r=n.t(t,e);t!==r&&(n.__N=[r,n.__[1]],n.__c.setState({}))}],n.__c=Br,!Br.__f)){var r=function(e,t,r){if(!n.__c.__H)return!0;var i=n.__c.__H.__.filter(function(e){return!!e.__c});if(i.every(function(e){return!e.__N}))return!o||o.call(this,e,t,r);var s=n.__c.props!==e;return i.forEach(function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(s=!0)}}),o&&o.call(this,e,t,r)||s};Br.__f=!0;var o=Br.shouldComponentUpdate,i=Br.componentWillUpdate;Br.componentWillUpdate=function(e,t,n){if(this.__e){var s=o;o=void 0,r(e,t,n),o=s}i&&i.call(this,e,t,n)},Br.shouldComponentUpdate=r}return n.__N||n.__}(so,e)}function Qr(e){return Fr=5,function(e,t){var n=Zr(Nr++,7);return io(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}(function(){return{current:e}},[])}function eo(){for(var e;e=Hr.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(ro),e.__H.__h.forEach(oo),e.__H.__h=[]}catch(t){e.__H.__h=[],Kr.__e(t,e.__v)}}Kr.__b=function(e){Br=null,zr&&zr(e)},Kr.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Yr&&Yr(e,t)},Kr.__r=function(e){Vr&&Vr(e),Nr=0;var t=(Br=e.__c).__H;t&&(Mr===Br?(t.__h=[],Br.__h=[],t.__.forEach(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.forEach(ro),t.__h.forEach(oo),t.__h=[],Nr=0)),Mr=Br},Kr.diffed=function(e){qr&&qr(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==Hr.push(t)&&Wr===Kr.requestAnimationFrame||((Wr=Kr.requestAnimationFrame)||no)(eo)),t.__H.__.forEach(function(e){e.u&&(e.__H=e.u),e.u=void 0})),Mr=Br=null},Kr.__c=function(e,t){t.some(function(e){try{e.__h.forEach(ro),e.__h=e.__h.filter(function(e){return!e.__||oo(e)})}catch(n){t.some(function(e){e.__h&&(e.__h=[])}),t=[],Kr.__e(n,e.__v)}}),Jr&&Jr(e,t)},Kr.unmount=function(e){Gr&&Gr(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(e){try{ro(e)}catch(e){t=e}}),n.__H=void 0,t&&Kr.__e(t,n.__v))};var to="function"==typeof requestAnimationFrame;function no(e){var t,n=function(){clearTimeout(r),to&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);to&&(t=requestAnimationFrame(n))}function ro(e){var t=Br,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),Br=t}function oo(e){var t=Br;e.__c=e.__(),Br=t}function io(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function so(e,t){return"function"==typeof t?t(e):t}function ao({message:e,messageCode:t,messageParams:n}){return e.replace(/\{\w+\}/gi,e=>n[e.substring(1,e.length-1)])}function lo({option:e,onClick:t}){const{displayName:n,iconUrl:r,iconSvg:o,styleHint:i,value:s}=e,a=function(e){const t=Object.assign({},Lr.ProviderButton);if(!e)return t;switch(e){case"google":return Object.assign(Object.assign({},t),Lr.ProviderGoogle);case"github":return Object.assign(Object.assign({},t),Lr.ProviderGitHub);case"microsoft":return Object.assign(Object.assign({},t),Lr.ProviderMicrosoft);case"apple":return Object.assign(Object.assign({},t),Lr.ProviderApple);case"otp":return Object.assign({},Lr.OtpButton);case"custom-oauth2":return Object.assign(Object.assign({},t),Lr.ProviderCustom);default:return t}}(i),l=a.color||"#000000",c=o?o.replace(/fill="currentColor"/gi,`fill="${l}"`).replace(/fill='currentColor'/gi,`fill='${l}'`).replace(/stroke="currentColor"/gi,`stroke="${l}"`).replace(/stroke='currentColor'/gi,`stroke='${l}'`):null;return pr("button",{type:"button",style:a,onClick:t,class:"dxc-option-btn"+(i?` dxc-option-${i}`:""),"aria-label":n},c?pr("span",{style:Lr.ProviderButtonIcon,"aria-hidden":"true",dangerouslySetInnerHTML:{__html:c}}):r?pr("img",{src:r,alt:"",style:Lr.ProviderButtonIcon,"aria-hidden":"true"}):null,pr("span",{style:Lr.ProviderButtonText},n))}function co(){return pr("div",{style:Lr.Divider},pr("div",{style:Lr.DividerLine}),pr("span",{style:Lr.DividerText},"or"),pr("div",{style:Lr.DividerLine}))}function uo({title:e,alerts:t,fields:n,options:r,submitLabel:o,cancelLabel:i,onCancel:s,onSubmit:a}){const[l,c]=Xr({}),u=Qr(null);!function(e,t){var n=Zr(Nr++,4);!Kr.__s&&io(n.__H,t)&&(n.__=e,n.u=t,Br.__h.push(n))}(()=>{var e;return null===(e=u.current)||void 0===e?void 0:e.focus()},[]);const d=Object.entries(n||{}),f=d.length>0,p=r&&r.length>0,y=new Map;if(r)for(const e of r){const t=y.get(e.name)||[];t.push(e),y.set(e.name,t)}const h=y.size>1,v=e=>{a({[e.name]:e.value})};return pr(Rr,{className:"dxc-login-dlg"},pr(hr,null,pr("h3",{style:Lr.WindowHeader},e),t.map((e,t)=>pr("p",{key:t,style:Lr.Alert[e.type]},ao(e))),p&&pr("div",{class:"dxc-options"},h?Array.from(y.entries()).map(([e,t],n)=>pr(hr,{key:e},n>0&&pr(co,null),t.map(e=>pr(lo,{key:`${e.name}-${e.value}`,option:e,onClick:()=>v(e)})))):r.map(e=>pr(lo,{key:`${e.name}-${e.value}`,option:e,onClick:()=>v(e)}))),p&&f&&pr(co,null),f&&pr("form",{onSubmit:e=>{e.preventDefault(),a(l)}},d.map(([e,{type:t,label:n,placeholder:r}],o)=>pr("label",{style:Lr.Label,key:o},n?`${n}: `:"",pr("input",{ref:0===o?u:void 0,type:t,name:e,autoComplete:"on",style:Lr.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 i=Object.assign(Object.assign({},l),{[e]:o});c(i),"otp"===t&&8===(null==o?void 0:o.trim().length)&&a(i)}}))))),pr("div",{style:Lr.ButtonsDiv},pr(hr,null,o&&(f||!p&&!f)&&pr("button",{type:"submit",style:Lr.PrimaryButton,onClick:()=>a(l)},o),i&&pr("button",{style:Lr.Button,onClick:s},i))))}class fo extends vr{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?pr(uo,Object.assign({},t)):null}}function po(e){const t=new WeakMap;return n=>{let r=t.get(n);return r||(r=e(n),t.set(n,r)),r}}const yo=po(e=>new k(Ue));function ho(e,t){let n=t,r=g(e).pipe(A(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 vo=po(e=>ho(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})),{})),mo=po(e=>ho(yo(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 bo(...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 go=po(e=>function(e,t){let n;const r=e.pipe(A(e=>n=t(e)));return r.getValue=()=>void 0!==n?n:n=t(e.getValue()),r}(ho(U([mo(e._novip),vo(e._novip)]).pipe(W(([{selfMembers:e,realms:t,userId:n},r])=>({selfMembers:e,realms:t,userId:n,globalRoles:r}))),{selfMembers:[],realms:[],userId:Ue.userId,globalRoles:{}}),({selfMembers:e,realms:t,userId:n,globalRoles:r})=>{const o=t.map(t=>{const o=e.filter(e=>e.realmId===t.realmId),i=o.map(e=>e.permissions).filter(e=>e),s=nt(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:"*"}:bo(...i,...s)})}).reduce((e,t)=>Object.assign(Object.assign({},e),{[t.realmId]:t}),{[n]:{realmId:n,owner:n,name:n,permissions:{manage:"*"}}});return o}));class _o{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 wo=po(e=>{const t=yo(e._novip).pipe(N(t=>o(()=>e.members.where({email:t.email||""}).toArray()))),n=go(e._novip),r=mo(e._novip);return ho(U([t,r,n]).pipe(W(([t,n,r])=>{const o=(e,t)=>Object.assign(Object.assign({},e),{[t.id]:Object.assign(Object.assign({},t),{realm:r[t.realmId]})}),i=t.reduce(o,{}),s=n.selfMembers.reduce(o,i);return Object.values(s).filter(e=>!e.accepted).map(t=>Object.assign(Object.assign({},t),{accept(){return Z(this,void 0,void 0,function*(){yield e.members.update(t.id,{accepted:new Date})})},reject(){return Z(this,void 0,void 0,function*(){yield e.members.update(t.id,{rejected:new Date})})}}))})),[])});function ko(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:i}=o.meta||{};if(!(null===(r=e.cloud.schema)||void 0===r?void 0:r[i].markedForSync))return;let s;Object.defineProperty(t,"awareness",{get:()=>s||(s=function(e,t,r){const{parentTable:o,parentId:i,parentProp:s,updatesTable:a}=t.meta,l=new Y.Awareness(t),c=Bn(t);return l.on("update",({added:n,updated:i,removed:a},c)=>{const u=n.concat(i).concat(a),d=e.cloud.currentUser.value;if("server"!==c&&d.isLoggedIn&&!Cn(e)){const n=Y.encodeAwarenessUpdate(l,u);e.messageProducer.next({type:"aware",table:o,prop:s,k:t.meta.parentId,u:n}),r.destroyed&&e.messageProducer.next({type:"doc-close",table:o,prop:s,k:t.meta.parentId})}}),l.on("destroy",()=>{Y.removeAwarenessStates(l,[t.clientID],"provider destroyed")}),(()=>{Z(this,void 0,void 0,function*(){if(r.destroyed)return;let t=!1,l=1;const u=U([e.cloud.webSocketStatus,c.pipe(L(null))]).subscribe(([n])=>{if(r.destroyed)return;t="connected"===n;const o=e.cloud.currentUser.value;"connected"===n&&o.isLoggedIn&&!Cn(e)&&(++l,d().catch(e=>{}))});function d(){return Z(this,void 0,void 0,function*(){const c=l,u=e.table(a),d=e.$syncState,[f,p]=yield e.transaction("r",d,u,()=>Z(this,void 0,void 0,function*(){const e=yield u.get(Vt),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:s,k:i,serverRev:p},h=yield u.where("i").between(f,1/0,!1).filter(e=>0===n(e.k,i)&&!(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(u)})})(),l}(e,o,t),Rn.set(o,s),s)})}}function So(e){const t="undefined"!=typeof window?window.location.href:"";if(!t)return null;const n=new URL(t).searchParams.get("dxc-auth");if(!n)return null;let r;try{const e=function(e){const t=(e+"=".repeat((4-e.length%4)%4)).replace(/-/g,"+").replace(/_/g,"/");return atob(t)}(n);r=JSON.parse(e)}catch(e){return null}const{code:o,provider:i,state:s,error:a}=r;if(a){if(a.toLowerCase().includes("access_denied")||a.toLowerCase().includes("access denied"))throw new Ne("access_denied",i,a);if(a.toLowerCase().includes("email")&&a.toLowerCase().includes("verif"))throw new Ne("email_not_verified",i,a);throw new Ne("provider_error",i,a)}return o&&i&&s?{code:o,provider:i,state:s}:null}function xo(){var e;if("undefined"==typeof window||!(null===(e=window.history)||void 0===e?void 0:e.replaceState))return;const t=new URL(window.location.href);if(!t.searchParams.has("dxc-auth"))return;t.searchParams.delete("dxc-auth");const n=t.pathname+(t.searchParams.toString()?`?${t.searchParams.toString()}`:"")+t.hash;window.history.replaceState(null,"",n)}function Io(e){return"rlm~"+e}function Co(e){return e.startsWith("rlm~")?e.substr(4):null}const Oo={},Eo=new WeakMap,jo=Po("tx"),To=Po("unload");function Po(e){let t=null,n=!1,r=new Map;return{name:e,run(){return Z(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 Z(this,void 0,void 0,function*(){for(const{db:t,parentId:n,triggers:r,parentTable:o,prop:i}of e.values()){const e=G.getOrCreateDocument(t,o,i,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,i){const s=`${e.name}:${t}:${n}:${o}`;let a=r.get(s);a||(a={db:e,parentTable:t,parentId:n,prop:o,triggers:new Set},r.set(s,a)),a.triggers.add(i)}}}function Uo(){jo.run()}function Ao(){To.run()}function $o(e,t,n){var o,i;const s=null===(i=null===(o=e.schema.yProps)||void 0===o?void 0:o.find(e=>e.prop===t))||void 0===i?void 0:i.updatesTable;if(!s)throw new Error(`Table ${e.name} does not have a Yjs property named ${t}`);Oo[s]={trigger:n,parentTable:e.name,prop:t};const a=e.db._novip;let l=Eo.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=>Oo[e])?(o.addEventListener("complete",Uo),o):o},table:n=>{const o=t.table(n),i=Oo[n];if(!i)return o;const{trigger:s,parentTable:a,prop:l}=i;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)?To:jo).enqueue(e,a,t,l,s)}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)jo.enqueue(e,a,t.from,l,s)})}return o.mutate(t)}})}})}))(a),Eo.set(a,l)),a.use(l),G.on("beforeunload",Ao)}const Do={nameSuffix:!0};function Lo(t){const n=t.name,r=yo(t),i=[];let s=!1,a=null,l=null,c=null;t.on("ready",t=>Z(this,void 0,void 0,function*(){try{yield function(t){return Z(this,void 0,void 0,function*(){var n,p,y,h,v,m,_;u=!1;const w=sn(t);"undefined"!=typeof window&&"undefined"!=typeof document&&((null===(n=w.cloud.options)||void 0===n?void 0:n.customLoginGui)||i.push(function(e){let t=!1;const n=document.createElement("div");return document.body?(document.body.appendChild(n),Dr(pr(fo,{db:e.vip}),n)):addEventListener("DOMContentLoaded",()=>{t||(document.body.appendChild(n),Dr(pr(fo,{db:e.vip}),n))}),{unsubscribe(){try{n.remove()}catch(e){}t=!0},get closed(){return t}}}(t))),w.cloud.isServiceWorkerDB||i.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 Tn.value?r.pipe(z(500)):r;case"connecting":return"not-started"===n||"error"===n?r:r.pipe(z(4e3));default:return r}}));return U([n,e.syncStateChangedEvent.pipe(V({phase:"initial"})),yo(e.dx._novip),Pn]).pipe(W(([t,n,r,o])=>{var i;if((null===(i=r.license)||void 0===i?void 0:i.status)&&"ok"!==r.license.status)return{phase:"offline",status:"offline",license:r.license.status};let{phase:s,error:a,progress:l}=n,c=t;return"error"===s&&(c="error"),"not-started"===t&&("pushing"!==s&&"pulling"!==s||(c="connecting")),"error"!==e.cloud.syncState.value.phase||"pushing"!==n.phase&&"pulling"!==n.phase||(c="connecting"),o||(c="disconnected"),{phase:s,error:a,progress:l,status:Wt?c:"offline",license:"ok"}}))}(w).subscribe(t.cloud.syncState)),i.push(w.syncCompleteEvent.subscribe(f)),w.tables.every(e=>e.core)||function(){throw new e.SchemaError("Version increment needed to allow dexie-cloud change tracking")}();const S="serviceWorker"in navigator?yield navigator.serviceWorker.getRegistrations():[],[O,E]=yield w.transaction("rw",w.$syncState,()=>Z(this,void 0,void 0,function*(){var e,t;const{options:n,schema:r}=w.cloud,[o,i,a]=yield Promise.all([w.getOptions(),w.getSchema(),w.getPersistedSyncState()]);if(s){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 w.$syncState.put(e,"options")}}else w.cloud.options=o||null;if((null===(e=w.cloud.options)||void 0===e?void 0:e.tryUseServiceWorker)&&"serviceWorker"in navigator&&S.length>0&&!dn?w.cloud.usingServiceWorker=!0:((null===(t=w.cloud.options)||void 0===t?void 0:t.tryUseServiceWorker)&&w.cloud.isServiceWorkerDB,w.cloud.usingServiceWorker=!1),Gn(r,w.cloud.options),Gn(i,w.cloud.options),r){if(!i||JSON.stringify(i)!==JSON.stringify(r)){const e=i||{};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 w.$syncState.put(e,"schema"),Object.assign(r,e)}}else w.cloud.schema=i||null;return[null==a?void 0:a.initiallySynced,null==a?void 0:a.realms]}));if(O&&w.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`)}}(w),d(),!w.cloud.isServiceWorkerDB){i.push(o(()=>w.getCurrentUser()).subscribe(r)),i.push(o(()=>w.getPersistedSyncState()).subscribe(w.cloud.persistedSyncState)),yield b(U([r.pipe(q(1),H(1)),w.cloud.persistedSyncState.pipe(q(1),H(1))]));const e=ko(w);G.on.new.subscribe(e),w.dx.once("close",()=>{G.on.new.unsubscribe(e)})}let j=!1,T=yield w.getCurrentUser();if(l&&!w.cloud.isServiceWorkerDB){const e=l;l=null,yield Se(w.cloud.userInteraction,"Authentication Error",{type:"error",messageCode:"GENERIC_ERROR",message:e.message,messageParams:{provider:e.provider||"unknown"}})}if(a&&!w.cloud.isServiceWorkerDB){const{code:e,provider:t}=a;a=null;try{j=yield ze(w,{oauthCode:e,provider:t}),T=yield w.getCurrentUser()}catch(e){}}const A=null===(p=w.cloud.options)||void 0===p?void 0:p.requireAuth;A&&(w.cloud.isServiceWorkerDB?yield b(r.pipe(R(e=>!!e.isLoggedIn),H(1))):"object"==typeof A?(!T.isLoggedIn||A.userId&&T.userId!==A.userId||A.email&&T.email!==A.email)&&(j=yield ze(w,A)):T.isLoggedIn||(j=yield ze(w))),!T.isLoggedIn||E&&E.includes(T.userId)||(j=!0),c&&c.stop(),c=null,d();const $=(null===(y=w.cloud.options)||void 0===y?void 0:y.databaseUrl)&&(!O||j);$&&(yield function(e,t,n){return Z(this,void 0,void 0,function*(){yield jn(e,Zt,()=>Xt(e,t,n,{isInitialSync:!0}))})}(w,w.cloud.options,w.cloud.schema),w.setInitiallySynced(!0)),d(),w.cloud.usingServiceWorker&&(null===(h=w.cloud.options)||void 0===h?void 0:h.databaseUrl)?($||fe(w,"push").catch(()=>{}),function(e){return Z(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){}})}(w).catch(()=>{})):(null===(v=w.cloud.options)||void 0===v?void 0:v.databaseUrl)&&w.cloud.schema&&!w.cloud.isServiceWorkerDB&&(c=Jn(w,w.cloud.options,w.cloud.schema),c.start(),$||pe(w,"push")),d(),w.cloud.isServiceWorkerDB||i.push(I(self,"online").subscribe(()=>{w.syncStateChangedEvent.next({phase:"not-in-sync"}),Cn(w)||pe(w,"push")}),I(self,"offline").subscribe(()=>{w.syncStateChangedEvent.next({phase:"offline"})})),!(null===(m=w.cloud.options)||void 0===m?void 0:m.databaseUrl)||(null===(_=w.cloud.options)||void 0===_?void 0:_.disableWebSocket)||fn||i.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=>Z(this,void 0,void 0,function*(){return{type:"ready",rev:e.serverRevision,realmSetHash:yield Ze(e)}}))),r=C(n,e.messageProducer);return function t(){return e.cloud.persistedSyncState.pipe(R(e=>null==e?void 0:e.serverRevision),H(1),N(t=>e.cloud.currentUser.pipe(W(e=>[e,t]))),N(([e,t])=>Pn.pipe(W(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),H(1),W(e=>[t,e])):new k([t,n])),N(e=>Z(this,[e],void 0,function*([e,t]){return[e,yield Ze(t)]})),M(([e,t],[n,r])=>e===n&&t===r),N(([n,o])=>{var i;return(null===(i=e.cloud.persistedSyncState)||void 0===i?void 0:i.value)?n?new Mn(e,e.cloud.persistedSyncState.value.serverRevision,e.cloud.persistedSyncState.value.yServerRevision,o,e.cloud.persistedSyncState.value.clientIdentity,r,e.cloud.webSocketStatus,n):g([]):t()}),K(n=>"TokenExpiredError"===(null==n?void 0:n.name)?x(!0).pipe(N(()=>Z(this,void 0,void 0,function*(){const t=yield e.getCurrentUser(),n=yield je(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())):P(()=>n)),K(n=>(e.cloud.webSocketStatus.next("error"),n instanceof Hn?P(()=>n):g(Kn()).pipe(N(()=>t())))))}().subscribe({next:t=>{t&&e.messageConsumer.enqueue(t)},error:e=>{},complete:()=>{}})}(w))})}(t)}catch(e){}}),!0);let u=!1;function d(){if(u)throw new e.DatabaseClosedError}t.once("close",()=>{i.forEach(e=>e.unsubscribe()),i.splice(0,i.length),u=!0,c&&c.stop(),c=null,r.next(Ue)});const f=new S;var p;t.cloud={version:"4.3.4",options:Object.assign({},Do),schema:null,get currentUserId(){return r.value.userId||Ue.userId},currentUser:r,syncState:new k({phase:"initial",status:"not-started"}),events:{syncComplete:f},persistedSyncState:new k(void 0),userInteraction:new k(void 0),webSocketStatus:new k("not-started"),login(e){return Z(this,void 0,void 0,function*(){const n=sn(t);yield n.cloud.sync(),yield ze(n,e)})},invites:wo(t),roles:vo(t),configure(e){if(e=t.cloud.options=Object.assign(Object.assign({},t.cloud.options),e),s=!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)}`,sn(t).reconfigure()),Gn(t.cloud.schema,t.cloud.options),"undefined"!=typeof window&&window.location)try{const e=So();e&&(xo(),a={code:e.code,provider:e.provider})}catch(e){xo(),e instanceof Ne&&(l=e)}},logout(){return Z(this,arguments,void 0,function*({force:e}={}){e?yield De(sn(t),{deleteUnsyncedData:!0}):yield $e(sn(t))})},getAuthProviders(){return Z(this,void 0,void 0,function*(){const e=t.cloud.options;if(!(null==e?void 0:e.databaseUrl))throw new Error("Dexie Cloud not configured. Call db.cloud.configure() first.");const n=!1!==e.socialAuth;return Me(e.databaseUrl,n)})},sync(){return Z(this,arguments,void 0,function*({wait:e,purpose:n}={wait:!0,purpose:"push"}){var r;void 0===e&&(e=!0);const i=sn(t);if("ok"!==((null===(r=i.cloud.currentUser.value.license)||void 0===r?void 0:r.status)||"ok")&&(yield Oe(i)),"pull"===n){const t=i.cloud.persistedSyncState.value;if(pe(i,n),e){const e=yield b(i.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 zn(i)){const t=i.cloud.persistedSyncState.value;pe(i,n),e&&(yield b(g(o(()=>Z(this,void 0,void 0,function*(){const e=yield zn(i),n=yield i.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 i=go(e),s=t=>{const i=t[o||e.cloud.currentUserId];return i?new _o(i.permissions,n,void 0===o||o===e.cloud.currentUserId||r===e.cloud.currentUserId):new _o({},n,!r||r===e.cloud.currentUserId)},a=i.pipe(W(s));return a.getValue=()=>s(i.getValue()),a}(t._novip,e,n)},t.Version.prototype._parseStoresSpec=e.override(t.Version.prototype._parseStoresSpec,e=>En(e,t)),t.Table.prototype.newId=function({colocateWith:e}={}){const n=e&&e.substr(e.length-3);return _n(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(On({currentUserObservable:t.cloud.currentUser,db:sn(t)})),t.use((p=sn(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,i,s,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:Ue.userId;if((null===(s=null===(i=p.cloud.schema)||void 0===i?void 0:i[t])||void 0===s?void 0:s.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,e.upsert||delete e.updates,t.$ts=Date.now())}}return n.mutate(e)}})}})})),t.use(wn(sn(t)))}Lo.version="4.3.4",e.Cloud=Lo;export{Lo as default,$o as defineYDocTrigger,Lo as dexieCloud,Co as getTiedObjectId,Io as getTiedRealmId,ao as resolveText};
1
+ import e,{PropModification as t,cmp as n,RangeSet as r,liveQuery as o}from"dexie";import{Encoder as i,writeVarString as s,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 C,switchMap as O,tap as E,mergeMap as j,Subscription as T,throwError as P,combineLatest as U,map as A,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 W,tap as F,take as H,catchError as K,debounceTime as z,startWith as V,skip as q}from"rxjs/operators";import*as J from"yjs";import{DexieYProvider as G}from"y-dexie";import*as Y from"y-protocols/awareness";function Z(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{l(r.next(e))}catch(e){i(e)}}function a(e){try{l(r.throw(e))}catch(e){i(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(s,a)}l((r=r.apply(e,t||[])).next())})}function X(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 Q(e){return this instanceof Q?(this.v=e,this):new Q(e)}function ee(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,o=n.apply(e,t||[]),i=[];return r=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",function(e){return function(t){return Promise.resolve(t).then(e,c)}}),r[Symbol.asyncIterator]=function(){return this},r;function s(e,t){o[e]&&(r[e]=function(t){return new Promise(function(n,r){i.push([e,t,n,r])>1||a(e,t)})},t&&(r[e]=t(r[e])))}function a(e,t){try{!function(e){e.value instanceof Q?Promise.resolve(e.value.v).then(l,c):u(i[0][2],e)}(o[e](t))}catch(e){u(i[0][3],e)}}function l(e){a("next",e)}function c(e){a("throw",e)}function u(e,t){e(t),i.shift(),i.length&&a(i[0][0],i[0][1])}}function te(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=X(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)})}}}"function"==typeof SuppressedError&&SuppressedError;const ne={}.hasOwnProperty;function re(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)re(e,t[r],n[r])}else{var i=t.indexOf(".");if(-1!==i){var s=t.substr(0,i),a=t.substr(i+1);if(""===a)void 0===n?Array.isArray(e)?isNaN(parseInt(s))||e.splice(parseInt(s),1):delete e[s]:e[s]=n;else{var l=e[s];l&&function(e,t){return ne.call(e,t)}(e,s)||(l=e[s]={}),re(l,a,n)}}else void 0===n?Array.isArray(e)&&!isNaN(parseInt(t))?e.splice(t,1):delete e[t]:e[t]=n}}const oe="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=ie)=>{const n=Buffer.alloc(e);return t(n),n.toString("base64")}:()=>{throw new Error("No implementation of randomString was found")};function ie(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(ae))}function ae(e){return"string"==typeof e||"number"==typeof e||Array.isArray(e)&&e.every(ae)}function le(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,i=r[e];if(i)switch(i.type){case"ups":for(const[e,t]of Object.entries(o))re(i.val,e,t);break;case"del":break;case"upd":Object.assign(i.mod,o)}else r[e]={type:"upd",mod:o}});break;case"delete":o.forEach(e=>{r[e]={type:"del"}})}return e}function ce(e,t){for(const{table:n,muts:r}of t)for(const t of r)le(e,n,t)}async function*ue(e){let t=0,n=new Uint8Array(4),r=0,o=[],i=0;for await(const s of e){const e=new DataView(s.buffer,s.byteOffset,s.byteLength);let a=0;for(;a<s.byteLength;)switch(t){case 0:if(a+4>s.byteLength){for(const e of s.slice(a)){if(4===r)break;n[r++]=e,++a}if(r<4)break}else if(r>0&&r<4)for(const e of s.slice(a,a+4-r))n[r++]=e,++a;case 1:i=4===r?new DataView(n.buffer,0,4).getUint32(0,!1):e.getUint32(a,!1),r?r=0:a+=4;case 2:if(a>=s.byteLength){t=2;break}if(a+i>s.byteLength)o.push(s.slice(a)),i-=s.byteLength-a,t=2,a=s.byteLength;else{if(o.length>0){const e=new Uint8Array(o.reduce((e,t)=>e+t.byteLength,i));let t=0;for(const n of o)e.set(n,t),t+=n.byteLength;e.set(s.slice(a,a+i),t),o=[],yield e}else yield s.slice(a,a+i);a+=i,t=0}}}}let de=!1;function fe(e,t){return Z(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){de||(de=!0)}})}function pe(e,t){e.cloud.usingServiceWorker?fe(e,t):e.localSyncEvent.next({purpose:t})}const ye="fromBase64"in Uint8Array,he="toBase64"in Uint8Array.prototype,ve="undefined"!=typeof Buffer?e=>Buffer.from(e,"base64"):ye?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},me="undefined"!=typeof Buffer?e=>ArrayBuffer.isView(e)?Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("base64"):Buffer.from(e).toString("base64"):he?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 be 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}}const ge={},_e={google:'<svg viewBox="0 0 24 24" width="20" height="20"><path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/><path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"/><path fill="#FBBC05" d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"/><path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"/></svg>',github:'<svg viewBox="0 0 24 24" width="20" height="20" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"/></svg>',microsoft:'<svg viewBox="0 0 24 24" width="20" height="20"><rect fill="#F25022" x="1" y="1" width="10" height="10"/><rect fill="#00A4EF" x="1" y="13" width="10" height="10"/><rect fill="#7FBA00" x="13" y="1" width="10" height="10"/><rect fill="#FFB900" x="13" y="13" width="10" height="10"/></svg>',apple:'<svg viewBox="0 0 24 24" width="20" height="20" fill="currentColor"><path d="M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.81-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.19-.69.85-1.83 1.51-2.95 1.42-.15-1.15.41-2.35 1.05-3.11z"/></svg>'};function we(e){return Z(this,void 0,void 0,function*(){var t;let n;if(_e[e.type])n=_e[e.type];else if(null===(t=e.iconUrl)||void 0===t?void 0:t.toLowerCase().endsWith(".svg")){const t=yield function(e){return Z(this,void 0,void 0,function*(){if(ge[e])return ge[e];try{const t=yield fetch(e);if(t.ok){const n=yield t.text();if(n.includes("<svg"))return ge[e]=n,n}}catch(e){}return null})}(e.iconUrl);t&&(n=t)}return{name:"provider",value:e.name,displayName:`Continue with ${e.displayName}`,iconSvg:n,iconUrl:!n&&e.iconUrl?e.iconUrl:void 0,styleHint:e.type}})}function ke(t,n){return new Promise((r,o)=>{const i=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(i)})}function Se(e,t,...n){return ke(e,{type:"message-alert",title:t,alerts:n,fields:{},submitLabel:"OK",cancelLabel:null})}function xe(e,t,n){return Z(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 ke(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 Ie(e,t,n){return Z(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 ke(e,{type:"otp",title:"Enter OTP",alerts:r,fields:{otp:{type:"otp",label:"OTP",placeholder:"Paste OTP here"}}});return o})}class Ce extends Error{constructor(e){super(`OAuth redirect initiated for provider: ${e}`),this.name="OAuthRedirectError",this.provider=e}}function Oe(e){return Z(this,void 0,void 0,function*(){var t,n,r;const o=yield e.getCurrentUser(),{accessToken:i,accessTokenExpiration:s,refreshToken:a,refreshTokenExpiration:l,claims:c}=o;if(!i)return null;if((null!==(t=null==s?void 0:s.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 je(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 Ee(t,n,r,o,i){return Z(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 je(t,n):yield function(t,n,r,o){return Z(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:i,publicKey:s}=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(!i||!s)throw new Error("Could not generate RSA keypair");t.nonExportablePrivateKey=i;const a=function(e){const t=me(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",s));t.publicKey=s;try{const e=yield n({public_key:a,hints:o});if("error"===e.type)throw new be(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 ke(r,{type:"message-alert",title:"Authentication Alert",fields:{},alerts:e.alerts})),t}catch(t){if(t instanceof Ce||"OAuthRedirectError"===(null==t?void 0:t.name))throw t;if(t instanceof be)throw yield Se(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 Se(r,"Authentication Failed",{type:"error",messageCode:"GENERIC_ERROR",message:n,messageParams:{}}).catch(()=>{})}throw t}})}(n,r,o,i)})}function je(e,t){return Z(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),i=yield crypto.subtle.sign(r,t.nonExportablePrivateKey,o),s=me(i),a={grant_type:"refresh_token",refresh_token:t.refreshToken,scopes:["ACCESS_DB"],signature:s,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 be(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 Te=new WeakMap;class Pe{constructor(e,t){Te.set(this,e),Object.assign(this,t)}static load(e,t){return e.table("$logins").get(t).then(n=>new Pe(e,n||{userId:t,claims:{sub:t},lastLogin:new Date(0)}))}save(){return Z(this,void 0,void 0,function*(){Te.get(this).table("$logins").put(this)})}}const Ue={userId:"unauthorized",name:"Unauthorized",claims:{sub:"unauthorized"},lastLogin:new Date(0)};try{Object.freeze(Ue),Object.freeze(Ue.claims)}catch(e){}function Ae(e,t){return b(g(e).pipe(_(t)))}function $e(e){return Z(this,void 0,void 0,function*(){const t=yield De(e);if(t){if(!(yield function(e,t,n){return Z(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 ke(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 De(e,{deleteUnsyncedData:!0})}})}function De(e){return Z(this,arguments,void 0,function*(e,{deleteUnsyncedData:t=!1}={}){const[n,r]=yield e.dx.transaction("rw",e.dx.tables,n=>Z(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")),i=(yield Promise.all(o.map(e=>n.table(e).count()))).reduce((e,t)=>e+t,0);if(i>0&&!t)return[i,!1];e.$syncState.delete("syncState");for(const t of e.dx.tables)"$jobs"!==t.name&&"$syncState"!==t.name&&t.clear();return[i,!0]}));return r&&(yield Ae(e.cloud.currentUser,e=>e.userId===Ue.userId),yield e.cloud.sync({purpose:"pull",wait:!0})),n})}class Le extends Error{constructor(e,t){super(t||`${e.status} ${e.statusText}`),this.httpStatus=e.status}get name(){return"HttpError"}}const Re={access_denied:"Access was denied by the authentication provider.",invalid_state:"The authentication response could not be verified. Please try again.",email_not_verified:"Your email address must be verified before you can log in.",expired_code:"The authentication code has expired. Please try again.",provider_error:"An error occurred with the authentication provider.",network_error:"A network error occurred during authentication. Please check your connection and try again."};class Ne extends Error{constructor(e,t,n){super(n||Re[e]),this.name="OAuthError",this.code=e,this.provider=t}get userMessage(){return Re[this.code]||this.message}}const Be={providers:[],otpEnabled:!0};function Me(e){return Z(this,arguments,void 0,function*(e,t=!0){if(!t)return Be;try{const t=yield fetch(`${e}/auth-providers`,{method:"GET",headers:{Accept:"application/json"},mode:"cors"});return 404===t.status?Be:t.ok?yield t.json():Be}catch(e){return Be}})}function We(e){"undefined"!=typeof sessionStorage&&sessionStorage.setItem("dexie-cloud-oauth-provider",e.provider);const t=function(e){const t=new URL(`${e.databaseUrl}/oauth/login/${e.provider}`),n=e.redirectUri||("undefined"!=typeof window?window.location.href:"");return n&&t.searchParams.set("redirect_uri",n),t.toString()}(e);window.location.href=t}function Fe(t){const{userInteraction:n}=t.cloud;return function(r){return Z(this,arguments,void 0,function*({public_key:r,hints:o}){var i,s;let a;const l=null===(i=t.cloud.options)||void 0===i?void 0:i.databaseUrl;if(!l)throw new Error("No database URL given.");if((null==o?void 0:o.oauthCode)&&o.provider)return yield function(e){return Z(this,void 0,void 0,function*(){const{databaseUrl:t,code:n,publicKey:r,scopes:o=["ACCESS_DB"]}=e,i={grant_type:"authorization_code",code:n,public_key:r,scopes:o};try{const e=yield fetch(`${t}/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i),mode:"cors"});if(!e.ok){if(400===e.status||401===e.status)try{const t=yield e.json();if("error"===t.type){if("INVALID_OTP"===t.messageCode)throw new Ne("expired_code",void 0,t.message);throw new be(t)}}catch(e){if(e instanceof Ne||e instanceof be)throw e}const t=yield e.text().catch(()=>e.statusText);throw new Ne("provider_error",void 0,`Token exchange failed: ${e.status} ${t}`)}const n=yield e.json();if("error"===n.type)throw new be(n);if("tokens"!==n.type)throw new Ne("provider_error",void 0,`Unexpected response type: ${n.type}`);return n}catch(e){if(e instanceof Ne||e instanceof be)throw e;if(e instanceof TypeError)throw new Ne("network_error");throw e}})}({databaseUrl:l,code:o.oauthCode,publicKey:r,scopes:["ACCESS_DB"]});if(null==o?void 0:o.provider)throw He(t,o.provider),new Ce(o.provider);if("demo"===(null==o?void 0:o.grant_type)){a={demo_user:yield xe(n,"Enter a demo user email",(null==o?void 0:o.email)||(null==o?void 0:o.userId)),grant_type:"demo",scopes:["ACCESS_DB"],public_key:r}}else if((null==o?void 0:o.otpId)&&o.otp)a={grant_type:"otp",otp_id:o.otpId,otp:o.otp,scopes:["ACCESS_DB"],public_key:r};else if("otp"===(null==o?void 0:o.grant_type)||(null==o?void 0:o.email)){const e=(null==o?void 0:o.email)||(yield xe(n,"Enter email address"));a=/@demo.local$/.test(e)?{demo_user:e,grant_type:"demo",scopes:["ACCESS_DB"],public_key:r}:{email:e,grant_type:"otp",scopes:["ACCESS_DB"]}}else{const i=!1!==(null===(s=t.cloud.options)||void 0===s?void 0:s.socialAuth),c=yield Me(l,i);if(c.providers.length>0){const r=yield function(t,n,r){return Z(this,arguments,void 0,function*(t,n,r,o="Choose login method",i=[]){const s=[...yield Promise.all(n.map(we))];return r&&s.push({name:"otp",value:"email",displayName:"Continue with email",iconSvg:'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="M22 6L12 13 2 6"/></svg>',styleHint:"otp"}),new Promise((n,r)=>{const a={type:"generic",title:o,alerts:i,options:s,fields:{},submitLabel:"",cancelLabel:"Cancel",onSubmit:e=>{t.next(void 0),n("otp"in e?{type:"otp"}:"provider"in e?{type:"provider",provider:e.provider}:{type:"otp"})},onCancel:()=>{t.next(void 0),r(new e.AbortError("User cancelled"))}};t.next(a)})})}(n,c.providers,c.otpEnabled,"Sign in");if("provider"===r.type)throw He(t,r.provider),new Ce(r.provider)}const u=yield xe(n,"Enter email address",null==o?void 0:o.email);a=/@demo.local$/.test(u)?{demo_user:u,grant_type:"demo",scopes:["ACCESS_DB"],public_key:r}:{email:u,grant_type:"otp",scopes:["ACCESS_DB"]}}const c=yield fetch(`${l}/token`,{body:JSON.stringify(a),method:"post",headers:{"Content-Type":"application/json",mode:"cors"}});if(200!==c.status){const e=yield c.text();throw yield Se(n,"Token request failed",{type:"error",messageCode:"GENERIC_ERROR",message:e,messageParams:{}}).catch(()=>{}),new Le(c,e)}const u=yield c.json();if("tokens"===u.type||"error"===u.type)return u;if("otp"===a.grant_type&&"email"in a){if("otp-sent"!==u.type)throw new Error(`Unexpected response from ${l}/token`);const e=yield Ie(n,a.email),t=Object.assign(Object.assign({},a),{otp:e||"",otp_id:u.otp_id,public_key:r});let o=yield fetch(`${l}/token`,{body:JSON.stringify(t),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"});for(;401===o.status;){const e=yield o.text();t.otp=yield Ie(n,a.email,{type:"error",messageCode:"INVALID_OTP",message:e,messageParams:{}}),o=yield fetch(`${l}/token`,{body:JSON.stringify(t),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"})}if(200!==o.status){const e=yield o.text();throw new Le(o,e)}return yield o.json()}throw new Error(`Unexpected response from ${l}/token`)})}}function He(e,t){var n,r;const o=null===(n=e.cloud.options)||void 0===n?void 0:n.databaseUrl;if(!o)throw new Error("No database URL given.");We({databaseUrl:o,provider:t,redirectUri:(null===(r=e.cloud.options)||void 0===r?void 0:r.oauthRedirectUri)||("undefined"!=typeof window?window.location.href:void 0)})}function Ke(e,...t){globalThis.console[e](...t)}function ze(e,t){return Z(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 Oe(e),!1}const i=new Pe(e,{claims:{},lastLogin:new Date(0)});try{yield Ee(e.cloud.options.databaseUrl,i,e.cloud.options.fetchTokens||Fe(e),e.cloud.userInteraction,t)}catch(e){if("OAuthRedirectError"===e.name)return!1;throw e}return o!==Ue.userId&&i.userId!==o&&(yield $e(e)),yield function(e,t){return Z(this,void 0,void 0,function*(){const n=e.table("$logins");yield e.transaction("rw",n,e=>Z(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&&(Ke("debug","Login context property names:",Object.keys(t)),Ke("debug","Login context property names:",Object.keys(t)),Ke("debug","Login context:",t),Ke("debug","Login context JSON:",JSON.stringify(t)))}catch(e){}throw e}})),yield Ae(e.cloud.currentUser,e=>e.userId===t.userId)})}(e,i),pe(e,"pull"),i.userId!==o})}const Ve={},qe="undefined"!=typeof self&&self.document&&"undefined"!=typeof navigator&&navigator.serviceWorker;qe&&qe.ready.then(e=>Ve.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 Je{constructor(e){this.name=e}subscribe(e){if(!qe)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 qe.addEventListener("message",t),()=>qe.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})):Ve.registration&&(null===(t=Ve.registration.active)||void 0===t||t.postMessage({type:`sw-broadcast-${this.name}`,message:e}))}}const Ge=globalThis["lbc-events"]||(globalThis["lbc-events"]=new Map);class Ye extends w{constructor(e){const t="undefined"==typeof BroadcastChannel?new Je(e):new BroadcastChannel(e);super(n=>{function r(e){n.next(e.detail)}function o(e){n.next(e.data)}let i;!function(e,t){Ge.has(e)?Ge.get(e).push(t):Ge.set(e,[t])}(`lbc-${e}`,r);try{t instanceof Je?i=t.subscribe(e=>n.next(e)):t.addEventListener("message",o)}catch(e){}return()=>{!function(e,t){const n=Ge.get(e);if(n){const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}(`lbc-${e}`,r),t instanceof Je?i():t.removeEventListener("message",o)}}),this.name=e,this.bc=t}next(e){this.bc.postMessage(e);!function(e){const t=Ge.get(e.type);t&&t.forEach(t=>{try{t(e)}catch(e){}})}(new CustomEvent(`lbc-${this.name}`,{detail:e}))}}function Ze(e){return Z(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 me(o)})}function Xe(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 Qe(e){return`$${e}_mutations`}function et(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 tt=[].concat;function nt(e){return tt.apply([],e)}function rt(e,t){return Z(this,arguments,void 0,function*(e,t,{since:n={},limit:r=1/0}={}){const o=yield Promise.all(e.map(e=>Z(this,void 0,void 0,function*(){const t=et(e.name),o=n[t];let i=o?e.where("rev").above(o):e;r<1/0&&(i=i.limit(r));let s=yield i.toArray();s=function(e){return e=e.map(e=>{if("modify"===e.type&&null===e.criteria.index){const t=Object.assign(Object.assign({},e),{criteria:void 0,changeSpec:void 0,type:"update",keys:e.keys,changeSpecs:[e.changeSpec]});return delete t.criteria,delete t.changeSpec,t}return e}),e}(s),s=function(e){const t=new Map;for(const n of e)if("update"===n.type){if(1!==n.keys.length||1!==n.changeSpecs.length)continue;const e=""+n.keys[0],r=n.changeSpecs[0];if(Object.values(r).some(e=>"object"==typeof e&&e&&"@@propmod"in e))continue;let o=t.get(e);o?o.push({txid:n.txid,updateSpec:r}):t.set(e,[{txid:n.txid,updateSpec:r}])}return e=e.filter(e=>{if("update"!==e.type)return!0;if(1!==e.keys.length||1!==e.changeSpecs.length)return!0;const n=e.changeSpecs[0];if(Object.values(n).some(e=>"object"==typeof e&&e&&"@@propmod"in e))return!0;const r=new Set(Object.keys(e.changeSpecs[0])),o=""+e.keys[0],i=t.get(o);if(!i)return!0;for(let t=i.length-1;t>=0;--t){const{txid:n,updateSpec:o}=i[t];if(n===e.txid)break;for(const e of Object.keys(o))r.delete(e)}return 0!==r.size}),e}(s);return s.map(e=>({table:t,mut:e}))}))),i=nt(o).sort((e,t)=>e.mut.txid===t.mut.txid?e.mut.opNo-t.mut.opNo:e.mut.ts-t.mut.ts),s=[];let a=null,l=null;for(const{table:e,mut:t}of i)a&&a.table===e&&l===t.txid?a.muts.push(t):(a={table:e,muts:[t]},l=t.txid,s.push(a));return s})}function ot(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:it}={};const st={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 at(...e){const t=e.reduce((e,t)=>({...e,...t}),e.reduce((e,t)=>({...t,...e}),{})),n=new WeakMap;return{stringify(e,r,o){const i=JSON.stringify(e,function(e){const o=this[e],i=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 st;let i=n.get(r);if(void 0!==i)return i;const s=(o=e,it.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,s))&&void 0!==o?o:t===s});return i=null==a?void 0:a[1],i||(i=Array.isArray(e)?null:"function"==typeof e?t.function||null:st),n.set(r,i),i}default:return t[r]}var o}(o);return i?i.replace(o,r,t):o},o);return i},parse(e,n){const r=[];return JSON.parse(e,function(e,o){const i=null==o?void 0:o.$t;if(i){const e=t[i];o=e?e.revive(o,n,t):o}let s=r[r.length-1];if(s&&s[0]===o){o={...o};for(const e of s[1])delete o[e];for(const[e,t]of Object.entries(s[2]))o[e]=t;r.pop()}if(void 0===o||"$"===e[0]&&"$t"!==e){let t,n;s=r[r.length-1],s&&s[0]===this?(t=s[1],n=s[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 lt={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 ct={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 ut={bigint:{replace:e=>({$t:"bigint",v:""+e}),revive:e=>BigInt(e.v)}};var dt={Date:{replace:e=>({$t:"Date",v:isNaN(e.getTime())?"NaN":e.toISOString()}),revive:({v:e})=>new Date("NaN"===e?NaN:Date.parse(e))}},ft={Set:{replace:e=>({$t:"Set",v:Array.from(e.entries())}),revive:({v:e})=>new Set(e)}},pt={Map:{replace:e=>({$t:"Map",v:Array.from(e.entries())}),revive:({v:e})=>new Map(e)}};const yt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0;var ht=["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=yt[t];return o&&new o(r.ArrayBuffer.revive({v:e},n,r))}}}),{});function vt(e){return function(e){for(var t="",n=0,r=e.length;n<r;n++)t+=gt[e[n]];return t}(me(e))}function mt(e){return ve(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+=bt[e[n]];return t}(e))}const bt={"-":"=",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:"+","|":"/"},gt={};for(const e of Object.keys(bt))gt[bt[e]]=e;var _t={ArrayBuffer:{replace:e=>({$t:"ArrayBuffer",v:vt(e)}),revive:({v:e})=>{const t=mt(e);return t.buffer.byteLength===t.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}}};class wt{constructor(e,t){this.buf=e,this.type=t}}function kt(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 St(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;++n)t[n]=e.charCodeAt(n);return t.buffer}var xt={Blob:{test:(e,t)=>"Blob"===t||e instanceof wt,replace:e=>({$t:"Blob",v:me(e instanceof wt?e.buf:St(kt(e))),type:e.type}),revive:({type:e,v:t})=>{const n=ve(t);return void 0!==typeof Blob?new Blob([n]):new wt(n.buffer,e)}}};const It={...ct,...ut,...dt,...ft,...pt,...ht,..._t,...xt};function Ct(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 Ot={undefined:{replace:()=>({$t:"undefined"}),revive:()=>{}}},Et={File:{test:(e,t)=>"File"===t,replace:e=>({$t:"File",v:me(St(kt(e))),type:e.type,name:e.name,lastModified:new Date(e.lastModified).toISOString()}),revive:({type:e,v:t,name:n,lastModified:r})=>{const o=ve(t);return new File([o],n,{type:e,lastModified:new Date(r).getTime()})}}};const jt="function"==typeof BigInt&&"bigint"==typeof BigInt(0);class Tt{toString(){return this.v}constructor(e){this.v=e}}const Pt=jt?{}:{bigint:{test:e=>e instanceof Tt,replace:e=>Object.assign({$t:"bigint"},e),revive:({v:e})=>new Tt(e)}},Ut=Object.assign(Object.assign(Object.assign(Object.assign({},Ot),Pt),Et),{PropModification:{test:e=>e instanceof t,replace:e=>Object.assign({$t:"PropModification"},e["@@propmod"]),revive:e=>{var{$t:n}=e,r=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(r)}}}),At=at(It,Ut),$t=function(...e){const t=at(It,lt,...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);return[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])})),r]},async parse(e,n){let r=0;const o=[],i=await Ct(n),s=new DataView(i);for(;r<i.byteLength;){const e=s.getUint32(r);r+=4;const t=i.slice(r,r+e);r+=e,o.push(t)}return t.parse(e,o)},async fromBinary(e){const t=new DataView(await Ct(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)}}}(Ut);function Dt(t,n,r){const o=[];for(let i of r){const{table:r,muts:s}=i,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=i;s.forEach((t,r)=>{const o=!l.outbound&&("upsert"===t.type||"insert"===t.type);t.keys.forEach((t,s)=>{if(Array.isArray(t)){c===i&&(c=Lt(i,o));const e=c.muts[r],n=JSON.stringify(t);e.keys[s]=n}else if("#"===t[0]){c===i&&(c=Lt(i,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[s]=u,o&&e.setByKeyPath(a.values[s],l.keyPath,u)}})}),o.push(c)}return o}function Lt(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 Rt=new WeakMap;function Nt(e){return Z(this,void 0,void 0,function*(){var t,n;const r=(null!==(n=null===(t=Rt.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 Bt(e,t,n,r,o,i,s,a,l){return Z(this,void 0,void 0,function*(){const c={Accept:"application/json, application/x-bison, application/x-bison-stream","Content-Type":"application/tson"},u=yield Oe(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:s||{},lastPull:n?{serverRevision:n.serverRevision,yServerRevision:n.yServerRevision,realms:n.realms,inviteRealms:n.inviteRealms}:void 0,baseRevs:r,changes:Dt(o.dx.core.schema,l,e),y:t,dxcv:o.cloud.version};o.syncStateChangedEvent.next({phase:"pushing"});const p=At.stringify(f),y=yield fetch(`${i}/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),i=Math.max(0,Number(r)),s=Number(o);if(i<t/2){const t=Math.ceil(s/(i+1));Rt.set(e,new Date(Date.now()+1e3*t))}else Rt.delete(e)}}(o,y),!y.ok)throw new Le(y);if("application/x-bison"===y.headers.get("content-type"))return $t.fromBinary(yield y.blob());{const e=yield y.text();return At.parse(e)}})}function Mt(t){if(null==t?void 0:t.cancelled)throw new e.AbortError("Operation was cancelled")}let Wt=!1;function Ft(e,t,n,r){return Z(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 Ht(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 Kt(t,r,o){return Z(this,void 0,void 0,function*(){const i=yield t.bulkGet(r),s=[],a=[];r.forEach((r,l)=>{const c=i[l];if(c){for(const[i,s]of Object.entries(o[l]))if(i===t.schema.primKey.keyPath){if(0!==n(s,r))throw new Error("Cannot change primary key")}else e.setByKeyPath(c,i,s);s.push(r),a.push(c)}}),yield null==t.schema.primKey.keyPath?t.bulkPut(a,s):t.bulkPut(a)})}function zt(t,n){return Z(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:i}=t.core.schema,s=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(s);switch(n.type){case"insert":i.outbound?yield t.bulkAdd(n.values,r):(r.forEach((t,r)=>{e.setByKeyPath(n.values[r],i.keyPath,t)}),yield t.bulkAdd(n.values));break;case"upsert":i.outbound?yield t.bulkPut(n.values,r):(r.forEach((t,r)=>{e.setByKeyPath(n.values[r],i.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 Kt(t,r,n.changeSpecs);break;case"delete":yield t.bulkDelete(r)}}}})}"undefined"!=typeof self&&"undefined"!=typeof navigator&&(Wt=navigator.onLine,self.addEventListener("online",()=>Wt=!0),self.addEventListener("offline",()=>Wt=!1));const Vt="dexie-cloud-syncer";function qt(e,t){return e.where("i").between(t,1/0,!0).toArray()}function Jt(e,t,n){var r,o,i;if(!e.dx._allTables[t])return;const s=null===(i=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===i?void 0:i.updatesTable;return s&&e.dx._allTables[s]?e.table(s):void 0}function Gt(e,t){return Z(this,void 0,void 0,function*(){var r;const o={};let i,s=!1;for(const a of e)try{switch(a.type){case"u-s":{const e=Jt(t,a.table,a.prop);if(e){const t={k:a.k,u:a.u};a.r&&(t.r=a.r,i=a.r),o[e.name]=yield e.add(t)}break}case"u-ack":{const e=Jt(t,a.table,a.prop);e&&(yield t.transaction("rw",e,t=>Z(this,void 0,void 0,function*(){let n=yield t.table(e.name).get(Vt);yield t.table(e.name).put(Object.assign(Object.assign({},n||{i:Vt}),{unsentFrom:Math.max((null==n?void 0:n.unsentFrom)||1,a.i+1)}))})));break}case"u-reject":{const e=Jt(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&~(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":i=a.yServerRev;break;case"outdated-server-rev":s=!0}}catch(e){}return{receivedUntils:o,resyncNeeded:s,yServerRevision:i}})}function Yt(t,n,r){return Z(this,arguments,void 0,function*(t,n,{yDownloadedRealms:r,realms:o}){if(r&&o&&o.every(e=>"*"===r[e]))return;const i=yield Oe(t),s={"Content-Type":"application/json",Accept:"application/octet-stream"};i&&(s.Authorization=`Bearer ${i.accessToken}`);const a=yield fetch(`${n}/y/download`,{body:At.stringify({downloadedRealms:r||{}}),method:"POST",headers:s,credentials:"include"});if(!a.ok)throw new Error(`Failed to download Yjs documents from server. Status: ${a.status}`);yield async function(e,...t){let n=e();for(let e=0;e<t.length;e++)n=t[e](n);for await(const e of n);}(function(e){return async function*(){if(!e.body)throw new Error("Response body is not readable");const t=e.body.getReader();try{for(;;){const{done:e,value:n}=await t.read();if(e)return;yield n}}finally{t.releaseLock()}}}(a),ue,function(r){return ee(this,arguments,function*(){var o,i,s,a;let l=null,c=null,u=null,h=[];function b(e){return Z(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=Jt(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=te(r);!(o=(g=yield Q(w.next())).done);_=!0){a=g.value,_=!1;const e=new d(a);for(;v(e);)switch(m(e)){case 1:yield Q(b(!0)),l=f(e);break;case 2:yield Q(b(!1)),c=f(e),u=f(e);break;case 3:{const t=p(e),n=y(e);h.push({k:t,u:n});break}}yield Q(b(!1))}}catch(e){i={error:e}}finally{try{_||o||!(s=w.return)||(yield Q(s.call(w)))}finally{if(i)throw i.error}}yield Q(b(!0))}catch(t){throw t instanceof e.DexieError||(yield Q(b(!1))),t}})})})}const Zt="currentSyncWorker";function Xt(e,t,n,r){return Qt(e,t,n,r).then(t=>((null==r?void 0:r.justCheckIfNeeded)||e.syncStateChangedEvent.next({phase:"in-sync"}),t)).catch(o=>Z(this,void 0,void 0,function*(){return(null==r?void 0:r.justCheckIfNeeded)?Promise.reject(o):Wt&&(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 Xt(e,t,n,Object.assign(Object.assign({},r),{retryImmediatelyOnFetchError:!1}))):(yield e.$syncState.update("syncState",{timestamp:new Date,error:""+o}),e.syncStateChangedEvent.next({phase:Wt?"error":"offline",error:new Error(""+(null==o?void 0:o.message)||o)}),Promise.reject(o))}))}function Qt(e,t,n){return Z(this,arguments,void 0,function*(e,t,n,{isInitialSync:r,cancelToken:o,justCheckIfNeeded:i,purpose:s}={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?Xe(e):[],d=u.map(t=>e.table(Qe(t.name))),f=yield e.getPersistedSyncState(),p=c.isLoggedIn,y=p?function(e,t){const n=(null==t?void 0:t.syncedTables)||[];return Xe(e).filter(e=>!n.includes(e.name))}(e,f):[];Mt(o);const h=y.length>0;if(h){if(i)return!0;yield e.transaction("rw",y,e=>Z(this,void 0,void 0,function*(){e.idbtrans.disableChangeTracking=!0,e.idbtrans.disableAccessControl=!0,yield function(e,t,n){return Z(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!==Ue.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!==Ue.userId||(e.owner=t.userId)}):yield n.toCollection().modify(e=>{e.realmId&&r.has(e.realmId)||(e.owner&&e.owner!==Ue.userId||(e.owner=t.userId),e.realmId&&e.realmId!==Ue.userId||(e.realmId=t.userId))}))})}(y,c,null==f?void 0:f.realms)})),Mt(o)}const[v,m,b,{yMessages:g,lastUpdateIds:_}]=yield e.transaction("r",e.tables,()=>Z(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 i=yield rt(d,e);const s=yield function(e,t){return Z(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 i=e.table(t.updatesTable),s=yield i.get(Vt),a=(null==s?void 0:s.unsentFrom)||1,l=(null==s?void 0:s.receivedUntil)||0,c=Math.min(a,l+1),u=yield qt(i,c);u.length>0&&(r[i.name]=u[u.length-1].i);const d={};for(const e of u){const t=!(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:i,i:s}of Object.values(d)){const a=1===i.length?i[0]:J.mergeUpdatesV2(i);if(r)n.push({type:"u-c",table:o.name,prop:t.prop,k:e,u:a,i:s});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(Mt(o),h){const e=[...(null==f?void 0:f.realms)||[],...(null==f?void 0:f.inviteRealms)||[]],a=yield function(e,t,n,r){return Z(this,void 0,void 0,function*(){const o=`upload-${ot(8)}`;if(t.isLoggedIn&&e.length>0){const i=new Set(r||[]);return(yield Promise.all(e.map(e=>Z(this,void 0,void 0,function*(){const{extractKey:r}=e.core.schema.primaryKey;if(!r)return{table:e.name,muts:[]};const s=n[e.name],a=(null==s?void 0:s.generatedGlobalId)?e.filter(e=>{return r(e),!i.has(e.realmId||"")&&(t=r(e),!(n=null==s?void 0:s.idPrefix)||"string"==typeof t&&t.startsWith(n));var t,n}):e.filter(e=>{const t=r(e);return!i.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 Mt(o),i=i.concat(a),[i,t,r,s]}return[i,t,r,s]})),w=v.some(e=>e.muts.some(e=>e.keys.length>0))||g.some(e=>"u-c"===e.type);if(i)return w;if("push"===s&&!w)return!1;const k=Ht(v,null==m?void 0:m.latestRevisions),S=(null==m?void 0:m.clientIdentity)||oe(16);Mt(o);const x=yield Bt(v,g,m,b,e,l,n,S,c),{done:I,newSyncState:C}=yield e.transaction("rw",e.tables,t=>Z(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 rt(d,e,{since:k});for(const t of d){const n=et(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()])}Ht(r,k),yield Ft(e,n,k,x.serverRevision);const o=yield e.getPersistedSyncState();yield function(e,t,n){return Z(this,void 0,void 0,function*(){const r=new Set,o=new Set,i=n?n.realms:[],s=n?n.inviteRealms:[],a=new Set(t.realms),l=new Set(t.realms.concat(t.inviteRealms));for(const e of i)a.has(e)||(o.add(e),l.has(e)||r.add(e));for(const e of s.concat(i))l.has(e)||r.add(e);if(r.size>0||o.size>0){const t=Xe(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 i=o||{syncedTables:[],latestRevisions:{},realms:[],inviteRealms:[],clientIdentity:S};p&&(i.syncedTables=u.map(e=>e.name).concat(y.map(e=>e.name))),i.latestRevisions=k,i.remoteDbId=x.dbId,i.initiallySynced=!0,i.realms=x.realms,i.inviteRealms=x.inviteRealms,i.serverRevision=x.serverRevision,i.yServerRevision=x.serverRevision,i.timestamp=new Date,delete i.error;const s=en(x.changes,r);if(yield zt(s,e),x.yMessages){const{receivedUntils:t,resyncNeeded:n,yServerRevision:r}=yield Gt(x.yMessages,e);r&&(i.yServerRevision=r),yield function(e,t,n){return Z(this,void 0,void 0,function*(){var r,o,i,s,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!==(i=null==t?void 0:t.unsentFrom)&&void 0!==i?i:1,o=null!==(a=null!==(s=null==t?void 0:t.receivedUntil)&&void 0!==s?s:(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,()=>Z(this,void 0,void 0,function*(){const t=yield n.table(e).get(Vt);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:Vt,unsentFrom:r,receivedUntil:o})}))}})}(_,t,e),n&&(i.yDownloadedRealms={})}return e.$syncState.put(i,"syncState"),{done:0===r.length,newSyncState:i}}));if(!I)return yield Nt(e),yield Qt(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}),E=!!x.yMessages;if(O&&E)try{yield Yt(e,l,C)}catch(e){}return e.syncCompleteEvent.next(),!1})}function en(e,t){const n={};ce(n,e);const r={};return ce(r,t),function(e,t){for(const[n,r]of Object.entries(t))for(const[t,o]of Object.entries(r))switch(o.type){case"ups":{const r=e[n]?.[t];if(r)switch(r.type){case"ups":case"upd":delete e[n][t]}}break;case"del":delete e[n]?.[t];break;case"upd":{const r=e[n]?.[t];if(r)switch(r.type){case"ups":for(const[e,t]of Object.entries(o.mod))re(r.val,e,t);break;case"del":break;case"upd":for(const e of Object.keys(o.mod))delete r.mod[e]}break}}}(n,r),function(e,t){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({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)}function tn(t){const n=[],r=new k(!0),o=new k(null);let i=!1,s=new Array(10).fill(0);return o.subscribe(()=>Z(this,void 0,void 0,function*(){if(!i&&n.length>0){i=!0,s.shift(),s.push(Date.now()),r.next(!1);try{yield function(){return Z(this,void 0,void 0,function*(){for(var r,o,i,s,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 je(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===(i=null==n?void 0:n.realms)||void 0===i?void 0:i.includes(c.realm))||(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realm-removed":((null===(s=null==n?void 0:n.realms)||void 0===s?void 0:s.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)){pe(t,"pull");break}yield t.transaction("rw",t.dx.tables,n=>Z(this,void 0,void 0,function*(){n.idbtrans.disableChangeTracking=!0,n.idbtrans.disableAccessControl=!0;const[r,o,i]=yield Promise.all([t.getSchema(),t.getPersistedSyncState(),t.getCurrentUser()]);if(!o||!r||!i)return;if(c.baseRev!==o.serverRevision)return void("string"!=typeof c.baseRev||"bigint"!=typeof o.serverRevision&&"object"!=typeof o.serverRevision||pe(t,"pull"));if((yield e.waitFor(Ze(o)))!==c.realmSetHash)return void pe(t,"pull");let s=[];if(i.isLoggedIn){const e=Xe(t).map(e=>t.table(Qe(e.name)));s=yield rt(e,t)}if(c.changes.length>0){const e=en(c.changes,s);yield zt(e,t)}o.latestRevisions=Ht(s,o.latestRevisions),o.serverRevision=c.newRev,yield Ft(t,r,o.latestRevisions,c.newRev),yield t.$syncState.put(o,"syncState")}))}}catch(e){}}})}()}finally{s[s.length-1]-s[0]<1e4&&(yield new Promise(e=>setTimeout(e,1e3))),i=!1,r.next(!0)}}})),{enqueue:function(e){n.push(e),o.next(null)},readyToServe:r}}const nn=new WeakMap,rn={members:"@id, [userId+realmId], [email+realmId], realmId",roles:"[realmId+name]",realms:"@realmId",$jobs:"",$syncState:"",$baseRevs:"[tableName+clientRev]",$logins:"claims.sub, lastLogin"};let on=0;function sn(e){"vip"in e&&(e=e.vip);let t=nn.get(e.cloud);if(!t){const n=new S;let r=new Ye(`syncstatechanged-${e.name}`),o=new Ye(`synccomplete-${e.name}`);n.id=++on;let i=!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 i},localSyncEvent:n,get syncStateChangedEvent(){return r},get syncCompleteEvent(){return o},dx:e};const s={getCurrentUser:()=>t.$logins.toArray().then(e=>e.find(e=>e.isLoggedIn)||Ue),getPersistedSyncState:()=>t.$syncState.get("syncState"),getSchema:()=>t.$syncState.get("schema").then(e=>{if(e)for(const n of t.tables)n.schema.primKey&&n.schema.primKey.keyPath&&e[n.name]&&(e[n.name].primaryKey=an(n.schema.primKey.keyPath));return e}),getOptions:()=>t.$syncState.get("options"),setInitiallySynced(e){i=e},reconfigure(){r=new Ye(`syncstatechanged-${e.name}`),o=new Ye(`synccomplete-${e.name}`)}};Object.assign(t,s),t.messageConsumer=tn(t),t.messageProducer=new S,nn.set(e.cloud,t)}return t}function an(e){return"string"==typeof e?e:e?"["+[].join.call(e,"+")+"]":""}const ln="undefined"!=typeof InstallTrigger,cn="undefined"!=typeof navigator&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\/|Edge\//.test(navigator.userAgent),un=cn?[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]:NaN,dn=cn&&un<=605||ln,fn="undefined"!=typeof self&&"clients"in self&&!self.document;const{toString:pn}={};function yn(e){return pn.call(e).slice(8,-1)}function hn(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)}function vn(e,t){return(1&t?e[0].toUpperCase():e[0].toLowerCase())+(2&t?e[1].toUpperCase():e[1].toLowerCase())+(4&t?e[2].toUpperCase():e[2].toLowerCase())}const mn=/b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|x|y|z/i;function bn(e){return e>="A"&&e<="Z"}let gn=0;function _n(e,t){const n=new Uint8Array(18),r=new Uint8Array(n.buffer,0,6),o=Date.now();gn>=o?++gn:gn=o,r[0]=gn/1099511627776,r[1]=gn/4294967296,r[2]=gn/16777216,r[3]=gn/65536,r[4]=gn/256,r[5]=gn;const i=new Uint8Array(n.buffer,6);crypto.getRandomValues(i);return e+vt(new Uint8Array(n.buffer))+(t||"")}function wn(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 i,s;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===(i=t.cloud.schema)||void 0===i?void 0:i[r];if(null==a?void 0:a.generatedGlobalId){if((null===(s=t.cloud.options)||void 0===s?void 0:s.databaseUrl)&&!t.initiallySynced){const e=hn(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,i){let s=null;const a=hn(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]=_n(i,l),o.schema.primaryKey.outbound||(s||(s=n.values.slice()),s[c]=e.deepClone(s[c]),e.setByKeyPath(s[c],o.schema.primaryKey.keyPath,a[c]))}else if("string"!=typeof l||!l.startsWith(i)&&!l.startsWith("#"+i))throw new e.ConstraintError(`The ID "${l}" is not valid for table "${r}". Primary '@' keys requires the key to be prefixed with "${i}" (or "#${i}).\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:s||n.values}))}(n,a.idPrefix)}if(null==a?void 0:a.markedForSync){hn(o.schema.primaryKey,n).forEach((t,n)=>{if(!se(t)){const n=Array.isArray(t)?t.map(yn).join(","):yn(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 kn=0;function Sn(e,t){return function(n){const{readers:r,writers:o}=n.trans[t]||(n.trans[t]={writers:[],readers:[]}),i=o.length,s=(i>0?o[i-1].then(()=>e(n),()=>e(n)):e(n)).finally(()=>{r.splice(r.indexOf(s))});return r.push(s),s}}function xn(e,t){return function(n){const{readers:r,writers:o}=n.trans[t]||(n.trans[t]={writers:[],readers:[]});let i=(o.length>0?o[o.length-1].then(()=>e(n),()=>e(n)):r.length>0?(s=r,new Promise(e=>{0===s.length&&e([]);let t=s.length;const n=new Array(t);s.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 s;return o.push(i),i}}const In=new k(new Set);function Cn(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 On({currentUserObservable:e,db:t}){return{stack:"dbcore",name:"MutationTrackingMiddleware",level:1,create:n=>{const o=new Set(n.schema.tables.map(e=>e.name)),i=n.schema.tables.filter(e=>!/^\$/.test(e.name)),s=new Map;for(const e of i){const t=`$${e.name}_mutations`;o.has(t)&&s.set(e.name,n.table(t))}return Object.assign(Object.assign({},n),{transaction:(r,o)=>{let i;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=>Qe(e));i=n.transaction([...r,...e],o)}else i=n.transaction(r,o);if("readwrite"===o){i.txid=ot(16),i.opCount=0,i.currentUser=e.value,In.value.add(i),In.next(In.value);const n=()=>{i.removeEventListener("complete",r),i.removeEventListener("error",n),i.removeEventListener("abort",n),In.value.delete(i),In.next(In.value)},r=()=>{i.mutationsAdded&&!Cn(t)&&pe(t,"push"),n()};i.addEventListener("complete",r),i.addEventListener("error",n),i.addEventListener("abort",n)}return i},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:i}=o,a=s.get(e);return a?function(e){const t="$lock"+ ++kn;return Object.assign(Object.assign({},e),{count:Sn(e.count,t),get:Sn(e.get,t),getMany:Sn(e.getMany,t),openCursor:Sn(e.openCursor,t),query:Sn(e.query,t),mutate:xn(e.mutate,t)})}(Object.assign(Object.assign({},o),{mutate:n=>{var r,s,a;const c=n.trans;return c.txid?c.disableChangeTracking?o.mutate(n):(null===(s=null===(r=t.cloud.schema)||void 0===r?void 0:r[e])||void 0===s?void 0:s.markedForSync)&&(null===(a=c.currentUser)||void 0===a?void 0:a.isLoggedIn)?"deleteRange"===n.type?o.query({query:{range:n.range,index:i.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 s,l;const c=n.trans,u=null===(l=null===(s=t.cloud.options)||void 0===s?void 0:s.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:s}=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,g=!(!b||!("upsert"in n))&&n.upsert;if(o&&(l=l.filter((e,t)=>!s[t]),v=v.filter((e,t)=>!s[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;if(!g){for(let r=0,i=e.length;r<i;++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 _=Date.now();let w="criteria"in n&&n.criteria?Object.assign(Object.assign({},n.criteria),{index:n.criteria.index===i.primaryKey.keyPath?null:n.criteria.index}):void 0;if(u&&(null==w?void 0:w.index)){const e=null===(t=i.indexes.find(e=>e.name===w.index))||void 0===t?void 0:t.keyPath;(e?"string"==typeof e?[e]:e:[]).some(e=>null==u?void 0:u.includes(e))&&(w=void 0)}const k="delete"===n.type?{type:"delete",ts:_,opNo:y,keys:l,criteria:w,txid:d,userId:f}:"add"===n.type?{type:"insert",ts:_,opNo:y,keys:l,txid:d,userId:f,values:v}:g&&b?{type:"upsert",ts:_,opNo:y,keys:l,values:v,changeSpecs:b.changeSpecs.filter((e,t)=>!s[t]),txid:d,userId:f}:w&&m?{type:"modify",ts:_,opNo:y,keys:l,criteria:w,changeSpec:m,txid:d,userId:f}:m?{type:"update",ts:_,opNo:y,keys:l,changeSpecs:l.map(()=>m),txid:d,userId:f}:b?{type:"update",ts:_,opNo:y,keys:b.keys,changeSpecs:b.changeSpecs,txid:d,userId:f}:{type:"upsert",ts:_,opNo:y,keys:l,values:v,txid:d,userId:f};return"isAdditionalChunk"in n&&n.isAdditionalChunk&&(k.isAdditionalChunk=!0),l.length>0||w?a.mutate({type:"add",trans:c,values:[k]}).then(()=>(c.mutationsAdded=!0,e)):e})}}})}}}function En(e,t){return function(n,r){var o;const i=Object.assign(Object.assign({},rn),n);Object.keys(rn).forEach(e=>{const t=i[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=rn[e].split(",").map(e=>e.trim()),s=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(rn[e])}`);for(let t=1;t<o.length;++t){const n=o[t];s.has(n.replace(/([&*]|\+\+)/g,""))||(i[e]+=`,${n}`)}});const s=t.cloud.schema||(t.cloud.schema={}),a=new Set;Object.keys(i).forEach(e=>{var t;const n=null===(t=i[e])||void 0===t?void 0:t.trim(),r=s[e]||(s[e]={});null!=n?(/^\@/.test(n)&&(i[e]=i[e].substr(1),r.generatedGlobalId=!0,r.idPrefix=function(e,t){let n=e[0].toLocaleLowerCase();for(let t=1,r=e.length;t<r&&n.length<3;++t)(mn.test(e[t])||bn(e[t]))&&(n+=e[t].toLowerCase());for(;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;)r=vn(n,e),++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(r.idPrefix)),/^\$/.test(e)||(i[`$${e}_mutations`]="++rev",r.markedForSync=!0),r.deleted&&(r.deleted=!1)):(r.deleted=!0,r.markedForSync=!1,i[`$${e}_mutations`]=null)});const l=e.call(this,i,r);for(const[e,t]of Object.entries(r))if(null===(o=t.yProps)||void 0===o?void 0:o.length){const n=s[e];n&&(n.yProps=t.yProps.map(e=>e.prop))}return l}}function jn(e,t,n){return"undefined"!=typeof navigator&&navigator.locks?navigator.locks.request(e.name+"|"+t,n):n()}const Tn=new k(!0),Pn=new k(!0);Tn.pipe(N(e=>e?x(!0):x(!1).pipe(B(2e4))),M()).subscribe(Pn);const Un="undefined"!=typeof document?I(document,"visibilitychange"):x({}),An=Un.pipe(R(()=>"hidden"===document.visibilityState)),$n=Un.pipe(R(()=>"visible"===document.visibilityState)),Dn="undefined"!=typeof window?C($n,I(window,"mousedown"),I(window,"mousemove"),I(window,"keydown"),I(window,"wheel"),I(window,"touchmove")):x({});"undefined"!=typeof document&&C(x(!0),An,Dn).pipe(W(()=>"visible"===document.visibilityState),F(e=>{Tn.value!==e&&Tn.next(e)}),N(e=>e?x(0).pipe(B(16e4),F(()=>Tn.next(!1))):x(0))).subscribe(()=>{});class Ln extends Error{constructor(){super(...arguments),this.name="TokenExpiredError"}}const Rn=new WeakMap,Nn=new WeakMap;function Bn(e){let t=Nn.get(e);return t||(t=new S,Nn.set(e,t)),t}class Mn extends w{constructor(e,t,n,r,o,i,s,a){super(l=>new Fn(e,t,n,r,o,a,l,i,s))}}let Wn=0;class Fn extends T{constructor(e,t,n,r,o,i,s,a,l){super(()=>this.teardown()),this.id=++Wn,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=i,this.subscriber=s,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 Z(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 Ln);this.webSocketStatus.next("connecting"),this.pinger=setInterval(()=>Z(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?At.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=>Rn.get(e))(e);n&&Y.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&&Bn(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?Gt([t],this.db).then(e=>Z(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=Jt(this.db,t.table,t.prop);if(e){const t=r[e.name];t&&(yield e.update(Vt,{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(At.stringify(e))):null===(n=this.ws)||void 0===n||n.send(function(e){const t=new i;switch(s(t,e.type),"table"in e&&s(t,e.table),"prop"in e&&s(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":s(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),s(t,e.r||"")}}return u(t)}(e)))})),this.user.isLoggedIn&&!Cn(this.db)&&this.subscriptions.add(function(e){const t=nt(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 C(...t.map(({table:t,ydocProp:n,updatesTable:r})=>{const i=e.table(r);return g(i.get(Vt)).pipe(O(e=>{let r=(null==e?void 0:e.unsentFrom)||1;return g(o(()=>Z(this,void 0,void 0,function*(){return(yield qt(i,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(E(e=>{e.length>0&&(r=e.at(-1).i+1)}))}))})).pipe(j(e=>e))}(this.db).subscribe(this.db.messageProducer))}catch(e){this.pauseUntil=new Date(Date.now()+6e4)}})}}class Hn extends Error{constructor(e){super("expired"===e?"License expired":"deactivated"===e?"User deactivated":"Invalid license"),this.name="InvalidLicenseError",e&&(this.license=e)}}function Kn(e){return Z(this,void 0,void 0,function*(){var e;yield(e=3e3,new Promise(t=>setTimeout(t,e))),yield b(Dn)})}function zn(e){return Z(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 Xt(e,e.cloud.options,e.cloud.schema,{justCheckIfNeeded:!0}))})}const Vn=new WeakMap;function qn(e,t,n,r){const o=Vn.get(e);if(o){if(o.pull||"push"===(null==r?void 0:r.purpose))return o.promise;{let i=!1;const s=e.cloud.syncState.subscribe(e=>{"pulling"===e.phase&&(i=!0)});return o.promise.then(()=>{s.unsubscribe()}).catch(e=>(s.unsubscribe(),Promise.reject(e))).then(()=>{if(!i)return qn(e,t,n,r)})}}const i=function(){return Z(this,void 0,void 0,function*(){try{yield Nt(e),yield jn(e,Zt,()=>Xt(e,t,n,r)),Vn.delete(e)}catch(t){throw Vn.delete(e),t}})}();return Vn.set(e,{promise:i,pull:"push"!==(null==r?void 0:r.purpose)}),i}function Jn(e,t,n){let r=null,o={cancelled:!1},i=0,s=0;function a(r=1){setTimeout(()=>{const f=l?"pull":"push";s=Date.now(),qn(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,i=0,s=0}).catch(e=>{if(o.cancelled)d(),u=!1,i=0,s=0;else if(r<5){const e=1e3*[0,20,40,300,900][r];i=Date.now()+e,s=0,setTimeout(()=>a(r+1),e)}else u=!1,i=0,s=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?i||s>0&&Date.now():(u=!0,a()))})(e||"pull")})},stop:d}}function Gn(e,t){if(e&&t&&t.unsyncedTables)for(const n of t.unsyncedTables)e[n]&&(e[n].markedForSync=!1)}var Yn,Zn,Xn,Qn,er,tr,nr,rr,or,ir,sr,ar={},lr=[],cr=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,ur=Array.isArray;function dr(e,t){for(var n in t)e[n]=t[n];return e}function fr(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function pr(e,t,n){var r,o,i,s={};for(i in t)"key"==i?r=t[i]:"ref"==i?o=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?Yn.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(i in e.defaultProps)void 0===s[i]&&(s[i]=e.defaultProps[i]);return yr(e,s,r,o,null)}function yr(e,t,n,r,o){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++Xn:o,__i:-1,__u:0};return null==o&&null!=Zn.vnode&&Zn.vnode(i),i}function hr(e){return e.children}function vr(e,t){this.props=e,this.context=t}function mr(e,t){if(null==t)return e.__?mr(e.__,e.__i+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?mr(e):null}function br(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 br(e)}}function gr(e){(!e.__d&&(e.__d=!0)&&Qn.push(e)&&!_r.__r++||er!=Zn.debounceRendering)&&((er=Zn.debounceRendering)||tr)(_r)}function _r(){for(var e,t,n,r,o,i,s,a=1;Qn.length;)Qn.length>a&&Qn.sort(nr),e=Qn.shift(),a=Qn.length,e.__d&&(n=void 0,r=void 0,o=(r=(t=e).__v).__e,i=[],s=[],t.__P&&((n=dr({},r)).__v=r.__v+1,Zn.vnode&&Zn.vnode(n),Or(t.__P,n,r,t.__n,t.__P.namespaceURI,32&r.__u?[o]:null,i,null==o?mr(r):o,!!(32&r.__u),s),n.__v=r.__v,n.__.__k[n.__i]=n,jr(i,n,s),r.__e=r.__=null,n.__e!=o&&br(n)));_r.__r=0}function wr(e,t,n,r,o,i,s,a,l,c,u){var d,f,p,y,h,v,m,b=r&&r.__k||lr,g=t.length;for(l=function(e,t,n,r,o){var i,s,a,l,c,u=n.length,d=u,f=0;for(e.__k=new Array(o),i=0;i<o;i++)null!=(s=t[i])&&"boolean"!=typeof s&&"function"!=typeof s?("string"==typeof s||"number"==typeof s||"bigint"==typeof s||s.constructor==String?s=e.__k[i]=yr(null,s,null,null,null):ur(s)?s=e.__k[i]=yr(hr,{children:s},null,null,null):null==s.constructor&&s.__b>0?s=e.__k[i]=yr(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):e.__k[i]=s,l=i+f,s.__=e,s.__b=e.__b+1,-1!=(c=s.__i=Sr(s,n,l,d))&&(d--,(a=n[c])&&(a.__u|=2)),null==a||null==a.__v?(-1==c&&(o>u?f--:o<u&&f++),"function"!=typeof s.type&&(s.__u|=4)):c!=l&&(c==l-1?f--:c==l+1?f++:(c>l?f--:f++,s.__u|=4))):e.__k[i]=null;if(d)for(i=0;i<u;i++)null!=(a=n[i])&&!(2&a.__u)&&(a.__e==r&&(r=mr(a)),Ar(a,a));return r}(n,t,b,l,g),d=0;d<g;d++)null!=(p=n.__k[d])&&(f=-1==p.__i?ar:b[p.__i]||ar,p.__i=d,v=Or(e,p,f,o,i,s,a,l,c,u),y=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&Ur(f.ref,null,p),u.push(p.ref,p.__c||y,p)),null==h&&null!=y&&(h=y),(m=!!(4&p.__u))||f.__k===p.__k?l=kr(p,l,e,m):"function"==typeof p.type&&void 0!==v?l=v:y&&(l=y.nextSibling),p.__u&=-7);return n.__e=h,l}function kr(e,t,n,r){var o,i;if("function"==typeof e.type){for(o=e.__k,i=0;o&&i<o.length;i++)o[i]&&(o[i].__=e,t=kr(o[i],t,n,r));return t}e.__e!=t&&(r&&(t&&e.type&&!t.parentNode&&(t=mr(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do{t=t&&t.nextSibling}while(null!=t&&8==t.nodeType);return t}function Sr(e,t,n,r){var o,i,s,a=e.key,l=e.type,c=t[n],u=null!=c&&!(2&c.__u);if(null===c&&null==a||u&&a==c.key&&l==c.type)return n;if(r>(u?1:0))for(o=n-1,i=n+1;o>=0||i<t.length;)if(null!=(c=t[s=o>=0?o--:i++])&&!(2&c.__u)&&a==c.key&&l==c.type)return s;return-1}function xr(e,t,n){"-"==t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||cr.test(t)?n:n+"px"}function Ir(e,t,n,r,o){var i,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||xr(e.style,t,"");if(n)for(t in n)r&&n[t]==r[t]||xr(e.style,t,n[t])}else if("o"==t[0]&&"n"==t[1])i=t!=(t=t.replace(rr,"$1")),s=t.toLowerCase(),t=s in e||"onFocusOut"==t||"onFocusIn"==t?s.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r?n.u=r.u:(n.u=or,e.addEventListener(t,i?sr:ir,i)):e.removeEventListener(t,i?sr:ir,i);else{if("http://www.w3.org/2000/svg"==o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!=t&&"height"!=t&&"href"!=t&&"list"!=t&&"form"!=t&&"tabIndex"!=t&&"download"!=t&&"rowSpan"!=t&&"colSpan"!=t&&"role"!=t&&"popover"!=t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&"-"!=t[4]?e.removeAttribute(t):e.setAttribute(t,"popover"==t&&1==n?"":n))}}function Cr(e){return function(t){if(this.l){var n=this.l[t.type+e];if(null==t.t)t.t=or++;else if(t.t<n.u)return;return n(Zn.event?Zn.event(t):t)}}}function Or(e,t,n,r,o,i,s,a,l,c){var u,d,f,p,y,h,v,m,b,g,_,w,k,S,x,I,C,O=t.type;if(null!=t.constructor)return null;128&n.__u&&(l=!!(32&n.__u),i=[a=t.__e=n.__e]),(u=Zn.__b)&&u(t);e:if("function"==typeof O)try{if(m=t.props,b="prototype"in O&&O.prototype.render,g=(u=O.contextType)&&r[u.__c],_=u?g?g.props.value:u.__:r,n.__c?v=(d=t.__c=n.__c).__=d.__E:(b?t.__c=d=new O(m,_):(t.__c=d=new vr(m,_),d.constructor=O,d.render=$r),g&&g.sub(d),d.state||(d.state={}),d.__n=r,f=d.__d=!0,d.__h=[],d._sb=[]),b&&null==d.__s&&(d.__s=d.state),b&&null!=O.getDerivedStateFromProps&&(d.__s==d.state&&(d.__s=dr({},d.__s)),dr(d.__s,O.getDerivedStateFromProps(m,d.__s))),p=d.props,y=d.state,d.__v=t,f)b&&null==O.getDerivedStateFromProps&&null!=d.componentWillMount&&d.componentWillMount(),b&&null!=d.componentDidMount&&d.__h.push(d.componentDidMount);else{if(b&&null==O.getDerivedStateFromProps&&m!==p&&null!=d.componentWillReceiveProps&&d.componentWillReceiveProps(m,_),t.__v==n.__v||!d.__e&&null!=d.shouldComponentUpdate&&!1===d.shouldComponentUpdate(m,d.__s,_)){for(t.__v!=n.__v&&(d.props=m,d.state=d.__s,d.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(e){e&&(e.__=t)}),w=0;w<d._sb.length;w++)d.__h.push(d._sb[w]);d._sb=[],d.__h.length&&s.push(d);break e}null!=d.componentWillUpdate&&d.componentWillUpdate(m,d.__s,_),b&&null!=d.componentDidUpdate&&d.__h.push(function(){d.componentDidUpdate(p,y,h)})}if(d.context=_,d.props=m,d.__P=e,d.__e=!1,k=Zn.__r,S=0,b){for(d.state=d.__s,d.__d=!1,k&&k(t),u=d.render(d.props,d.state,d.context),x=0;x<d._sb.length;x++)d.__h.push(d._sb[x]);d._sb=[]}else do{d.__d=!1,k&&k(t),u=d.render(d.props,d.state,d.context),d.state=d.__s}while(d.__d&&++S<25);d.state=d.__s,null!=d.getChildContext&&(r=dr(dr({},r),d.getChildContext())),b&&!f&&null!=d.getSnapshotBeforeUpdate&&(h=d.getSnapshotBeforeUpdate(p,y)),I=u,null!=u&&u.type===hr&&null==u.key&&(I=Tr(u.props.children)),a=wr(e,ur(I)?I:[I],t,n,r,o,i,s,a,l,c),d.base=t.__e,t.__u&=-161,d.__h.length&&s.push(d),v&&(d.__E=d.__=null)}catch(e){if(t.__v=null,l||null!=i)if(e.then){for(t.__u|=l?160:128;a&&8==a.nodeType&&a.nextSibling;)a=a.nextSibling;i[i.indexOf(a)]=null,t.__e=a}else{for(C=i.length;C--;)fr(i[C]);Er(t)}else t.__e=n.__e,t.__k=n.__k,e.then||Er(t);Zn.__e(e,t,n)}else null==i&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):a=t.__e=Pr(n.__e,t,n,r,o,i,s,l,c);return(u=Zn.diffed)&&u(t),128&t.__u?void 0:a}function Er(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(Er)}function jr(e,t,n){for(var r=0;r<n.length;r++)Ur(n[r],n[++r],n[++r]);Zn.__c&&Zn.__c(t,e),e.some(function(t){try{e=t.__h,t.__h=[],e.some(function(e){e.call(t)})}catch(e){Zn.__e(e,t.__v)}})}function Tr(e){return"object"!=typeof e||null==e||e.__b&&e.__b>0?e:ur(e)?e.map(Tr):dr({},e)}function Pr(e,t,n,r,o,i,s,a,l){var c,u,d,f,p,y,h,v=n.props||ar,m=t.props,b=t.type;if("svg"==b?o="http://www.w3.org/2000/svg":"math"==b?o="http://www.w3.org/1998/Math/MathML":o||(o="http://www.w3.org/1999/xhtml"),null!=i)for(c=0;c<i.length;c++)if((p=i[c])&&"setAttribute"in p==!!b&&(b?p.localName==b:3==p.nodeType)){e=p,i[c]=null;break}if(null==e){if(null==b)return document.createTextNode(m);e=document.createElementNS(o,b,m.is&&m),a&&(Zn.__m&&Zn.__m(t,i),a=!1),i=null}if(null==b)v===m||a&&e.data==m||(e.data=m);else{if(i=i&&Yn.call(e.childNodes),!a&&null!=i)for(v={},c=0;c<e.attributes.length;c++)v[(p=e.attributes[c]).name]=p.value;for(c in v)if(p=v[c],"children"==c);else if("dangerouslySetInnerHTML"==c)d=p;else if(!(c in m)){if("value"==c&&"defaultValue"in m||"checked"==c&&"defaultChecked"in m)continue;Ir(e,c,null,p,o)}for(c in m)p=m[c],"children"==c?f=p:"dangerouslySetInnerHTML"==c?u=p:"value"==c?y=p:"checked"==c?h=p:a&&"function"!=typeof p||v[c]===p||Ir(e,c,p,v[c],o);if(u)a||d&&(u.__html==d.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(d&&(e.innerHTML=""),wr("template"==t.type?e.content:e,ur(f)?f:[f],t,n,r,"foreignObject"==b?"http://www.w3.org/1999/xhtml":o,i,s,i?i[0]:n.__k&&mr(n,0),a,l),null!=i)for(c=i.length;c--;)fr(i[c]);a||(c="value","progress"==b&&null==y?e.removeAttribute("value"):null!=y&&(y!==e[c]||"progress"==b&&!y||"option"==b&&y!=v[c])&&Ir(e,c,y,v[c],o),c="checked",null!=h&&h!=e[c]&&Ir(e,c,h,v[c],o))}return e}function Ur(e,t,n){try{if("function"==typeof e){var r="function"==typeof e.__u;r&&e.__u(),r&&null==t||(e.__u=e(t))}else e.current=t}catch(e){Zn.__e(e,n)}}function Ar(e,t,n){var r,o;if(Zn.unmount&&Zn.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||Ur(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){Zn.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&Ar(r[o],t,n||"function"!=typeof e.type);n||fr(e.__e),e.__c=e.__=e.__e=void 0}function $r(e,t,n){return this.constructor(e,n)}function Dr(e,t,n){var r,o,i;t==document&&(t=document.documentElement),Zn.__&&Zn.__(e,t),r=!1?null:t.__k,o=[],i=[],Or(t,e=t.__k=pr(hr,null,[e]),r||ar,ar,t.namespaceURI,r?null:t.firstChild?Yn.call(t.childNodes):null,o,r?r.__e:t.firstChild,false,i),jr(o,e,i)}Yn=lr.slice,Zn={__e:function(e,t,n,r){for(var o,i,s;t=t.__;)if((o=t.__c)&&!o.__)try{if((i=o.constructor)&&null!=i.getDerivedStateFromError&&(o.setState(i.getDerivedStateFromError(e)),s=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,r||{}),s=o.__d),s)return o.__E=o}catch(t){e=t}throw e}},Xn=0,vr.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=dr({},this.state),"function"==typeof e&&(e=e(dr({},n),this.props)),e&&dr(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),gr(this))},vr.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),gr(this))},vr.prototype.render=hr,Qn=[],tr="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,nr=function(e,t){return e.__v.__b-t.__v.__b},_r.__r=0,rr=/(PointerCapture)$|Capture$/i,or=0,ir=Cr(!1),sr=Cr(!0);const Lr={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",padding:"16px",boxSizing:"border-box"},DialogInner:{position:"relative",color:"#222",backgroundColor:"#fff",padding:"24px",marginBottom:"2em",maxWidth:"400px",width:"100%",maxHeight:"90%",overflowY:"auto",border:"3px solid #3d3d5d",borderRadius:"8px",boxShadow:"0 0 80px 10px #666",fontFamily:"sans-serif",boxSizing:"border-box"},Input:{height:"35px",width:"100%",maxWidth:"100%",borderColor:"#ccf4",outline:"none",fontSize:"16px",padding:"8px",boxSizing:"border-box",backgroundColor:"#f9f9f9",borderRadius:"4px",border:"1px solid #ccc",marginTop:"6px",fontFamily:"inherit"},Button:{padding:"10px 20px",margin:"0 4px",border:"1px solid #d1d5db",borderRadius:"6px",backgroundColor:"#ffffff",cursor:"pointer",fontSize:"14px",fontWeight:"500",color:"#374151",transition:"all 0.2s ease"},PrimaryButton:{padding:"10px 20px",margin:"0 4px",border:"1px solid #3b82f6",borderRadius:"6px",backgroundColor:"#3b82f6",color:"white",cursor:"pointer",fontSize:"14px",fontWeight:"500",transition:"all 0.2s ease"},ButtonsDiv:{display:"flex",justifyContent:"flex-end",gap:"12px",marginTop:"24px",paddingTop:"20px"},Label:{display:"block",marginBottom:"12px",fontSize:"14px",fontWeight:"500",color:"#333"},WindowHeader:{margin:"0 0 20px 0",fontSize:"18px",fontWeight:"600",color:"#333",borderBottom:"1px solid #eee",paddingBottom:"10px"},ProviderButton:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",padding:"12px 16px",marginBottom:"10px",border:"1px solid #d1d5db",borderRadius:"6px",backgroundColor:"#ffffff",cursor:"pointer",fontSize:"14px",fontWeight:"500",color:"#374151",transition:"all 0.2s ease",gap:"12px"},ProviderButtonIcon:{width:"20px",height:"20px",flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center"},ProviderButtonText:{flex:1,textAlign:"left"},ProviderGoogle:{backgroundColor:"#ffffff",border:"1px solid #dadce0",color:"#3c4043"},ProviderGitHub:{backgroundColor:"#24292e",border:"1px solid #24292e",color:"#ffffff"},ProviderMicrosoft:{backgroundColor:"#ffffff",border:"1px solid #8c8c8c",color:"#5e5e5e"},ProviderApple:{backgroundColor:"#000000",border:"1px solid #000000",color:"#ffffff"},ProviderCustom:{backgroundColor:"#4f46e5",border:"1px solid #4f46e5",color:"#ffffff"},Divider:{display:"flex",alignItems:"center",margin:"20px 0",color:"#6b7280",fontSize:"13px"},DividerLine:{flex:1,height:"1px",backgroundColor:"#e5e7eb"},DividerText:{padding:"0 12px",color:"#9ca3af"},OtpButton:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",padding:"12px 16px",border:"1px solid #d1d5db",borderRadius:"6px",backgroundColor:"#f9fafb",cursor:"pointer",fontSize:"14px",fontWeight:"500",color:"#374151",transition:"all 0.2s ease",gap:"12px"}};function Rr({children:e,className:t}){return pr("div",{className:`dexie-dialog ${t||""}`},pr("div",{style:Lr.Darken}),pr("div",{style:Lr.DialogOuter},pr("div",{style:Lr.DialogInner},e)))}var Nr,Br,Mr,Wr,Fr=0,Hr=[],Kr=Zn,zr=Kr.__b,Vr=Kr.__r,qr=Kr.diffed,Jr=Kr.__c,Gr=Kr.unmount,Yr=Kr.__;function Zr(e,t){Kr.__h&&Kr.__h(Br,e,Fr||t),Fr=0;var n=Br.__H||(Br.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function Xr(e){return Fr=1,function(e,t){var n=Zr(Nr++,2);if(n.t=e,!n.__c&&(n.__=[so(void 0,t),function(e){var t=n.__N?n.__N[0]:n.__[0],r=n.t(t,e);t!==r&&(n.__N=[r,n.__[1]],n.__c.setState({}))}],n.__c=Br,!Br.__f)){var r=function(e,t,r){if(!n.__c.__H)return!0;var i=n.__c.__H.__.filter(function(e){return!!e.__c});if(i.every(function(e){return!e.__N}))return!o||o.call(this,e,t,r);var s=n.__c.props!==e;return i.forEach(function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(s=!0)}}),o&&o.call(this,e,t,r)||s};Br.__f=!0;var o=Br.shouldComponentUpdate,i=Br.componentWillUpdate;Br.componentWillUpdate=function(e,t,n){if(this.__e){var s=o;o=void 0,r(e,t,n),o=s}i&&i.call(this,e,t,n)},Br.shouldComponentUpdate=r}return n.__N||n.__}(so,e)}function Qr(e){return Fr=5,function(e,t){var n=Zr(Nr++,7);return io(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}(function(){return{current:e}},[])}function eo(){for(var e;e=Hr.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(ro),e.__H.__h.forEach(oo),e.__H.__h=[]}catch(t){e.__H.__h=[],Kr.__e(t,e.__v)}}Kr.__b=function(e){Br=null,zr&&zr(e)},Kr.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Yr&&Yr(e,t)},Kr.__r=function(e){Vr&&Vr(e),Nr=0;var t=(Br=e.__c).__H;t&&(Mr===Br?(t.__h=[],Br.__h=[],t.__.forEach(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.forEach(ro),t.__h.forEach(oo),t.__h=[],Nr=0)),Mr=Br},Kr.diffed=function(e){qr&&qr(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==Hr.push(t)&&Wr===Kr.requestAnimationFrame||((Wr=Kr.requestAnimationFrame)||no)(eo)),t.__H.__.forEach(function(e){e.u&&(e.__H=e.u),e.u=void 0})),Mr=Br=null},Kr.__c=function(e,t){t.some(function(e){try{e.__h.forEach(ro),e.__h=e.__h.filter(function(e){return!e.__||oo(e)})}catch(n){t.some(function(e){e.__h&&(e.__h=[])}),t=[],Kr.__e(n,e.__v)}}),Jr&&Jr(e,t)},Kr.unmount=function(e){Gr&&Gr(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(e){try{ro(e)}catch(e){t=e}}),n.__H=void 0,t&&Kr.__e(t,n.__v))};var to="function"==typeof requestAnimationFrame;function no(e){var t,n=function(){clearTimeout(r),to&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);to&&(t=requestAnimationFrame(n))}function ro(e){var t=Br,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),Br=t}function oo(e){var t=Br;e.__c=e.__(),Br=t}function io(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function so(e,t){return"function"==typeof t?t(e):t}function ao({message:e,messageCode:t,messageParams:n}){return e.replace(/\{\w+\}/gi,e=>n[e.substring(1,e.length-1)])}function lo({option:e,onClick:t}){const{displayName:n,iconUrl:r,iconSvg:o,styleHint:i,value:s}=e,a=function(e){const t=Object.assign({},Lr.ProviderButton);if(!e)return t;switch(e){case"google":return Object.assign(Object.assign({},t),Lr.ProviderGoogle);case"github":return Object.assign(Object.assign({},t),Lr.ProviderGitHub);case"microsoft":return Object.assign(Object.assign({},t),Lr.ProviderMicrosoft);case"apple":return Object.assign(Object.assign({},t),Lr.ProviderApple);case"otp":return Object.assign({},Lr.OtpButton);case"custom-oauth2":return Object.assign(Object.assign({},t),Lr.ProviderCustom);default:return t}}(i),l=a.color||"#000000",c=o?o.replace(/fill="currentColor"/gi,`fill="${l}"`).replace(/fill='currentColor'/gi,`fill='${l}'`).replace(/stroke="currentColor"/gi,`stroke="${l}"`).replace(/stroke='currentColor'/gi,`stroke='${l}'`):null;return pr("button",{type:"button",style:a,onClick:t,class:"dxc-option-btn"+(i?` dxc-option-${i}`:""),"aria-label":n},c?pr("span",{style:Lr.ProviderButtonIcon,"aria-hidden":"true",dangerouslySetInnerHTML:{__html:c}}):r?pr("img",{src:r,alt:"",style:Lr.ProviderButtonIcon,"aria-hidden":"true"}):null,pr("span",{style:Lr.ProviderButtonText},n))}function co(){return pr("div",{style:Lr.Divider},pr("div",{style:Lr.DividerLine}),pr("span",{style:Lr.DividerText},"or"),pr("div",{style:Lr.DividerLine}))}function uo({title:e,alerts:t,fields:n,options:r,submitLabel:o,cancelLabel:i,onCancel:s,onSubmit:a}){const[l,c]=Xr({}),u=Qr(null);!function(e,t){var n=Zr(Nr++,4);!Kr.__s&&io(n.__H,t)&&(n.__=e,n.u=t,Br.__h.push(n))}(()=>{var e;return null===(e=u.current)||void 0===e?void 0:e.focus()},[]);const d=Object.entries(n||{}),f=d.length>0,p=r&&r.length>0,y=new Map;if(r)for(const e of r){const t=y.get(e.name)||[];t.push(e),y.set(e.name,t)}const h=y.size>1,v=e=>{a({[e.name]:e.value})};return pr(Rr,{className:"dxc-login-dlg"},pr(hr,null,pr("h3",{style:Lr.WindowHeader},e),t.map((e,t)=>pr("p",{key:t,style:Lr.Alert[e.type]},ao(e))),p&&pr("div",{class:"dxc-options"},h?Array.from(y.entries()).map(([e,t],n)=>pr(hr,{key:e},n>0&&pr(co,null),t.map(e=>pr(lo,{key:`${e.name}-${e.value}`,option:e,onClick:()=>v(e)})))):r.map(e=>pr(lo,{key:`${e.name}-${e.value}`,option:e,onClick:()=>v(e)}))),p&&f&&pr(co,null),f&&pr("form",{onSubmit:e=>{e.preventDefault(),a(l)}},d.map(([e,{type:t,label:n,placeholder:r}],o)=>pr("label",{style:Lr.Label,key:o},n?`${n}: `:"",pr("input",{ref:0===o?u:void 0,type:t,name:e,autoComplete:"on",style:Lr.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 i=Object.assign(Object.assign({},l),{[e]:o});c(i),"otp"===t&&8===(null==o?void 0:o.trim().length)&&a(i)}}))))),pr("div",{style:Lr.ButtonsDiv},pr(hr,null,o&&(f||!p&&!f)&&pr("button",{type:"submit",style:Lr.PrimaryButton,onClick:()=>a(l)},o),i&&pr("button",{style:Lr.Button,onClick:s},i))))}class fo extends vr{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?pr(uo,Object.assign({},t)):null}}function po(e){const t=new WeakMap;return n=>{let r=t.get(n);return r||(r=e(n),t.set(n,r)),r}}const yo=po(e=>new k(Ue));function ho(e,t){let n=t,r=g(e).pipe(A(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 vo=po(e=>ho(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})),{})),mo=po(e=>ho(yo(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 bo(...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 go=po(e=>function(e,t){let n;const r=e.pipe(A(e=>n=t(e)));return r.getValue=()=>void 0!==n?n:n=t(e.getValue()),r}(ho(U([mo(e._novip),vo(e._novip)]).pipe(W(([{selfMembers:e,realms:t,userId:n},r])=>({selfMembers:e,realms:t,userId:n,globalRoles:r}))),{selfMembers:[],realms:[],userId:Ue.userId,globalRoles:{}}),({selfMembers:e,realms:t,userId:n,globalRoles:r})=>{const o=t.map(t=>{const o=e.filter(e=>e.realmId===t.realmId),i=o.map(e=>e.permissions).filter(e=>e),s=nt(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:"*"}:bo(...i,...s)})}).reduce((e,t)=>Object.assign(Object.assign({},e),{[t.realmId]:t}),{[n]:{realmId:n,owner:n,name:n,permissions:{manage:"*"}}});return o}));class _o{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 wo=po(e=>{const t=yo(e._novip).pipe(N(t=>o(()=>e.members.where({email:t.email||""}).toArray()))),n=go(e._novip),r=mo(e._novip);return ho(U([t,r,n]).pipe(W(([t,n,r])=>{const o=(e,t)=>Object.assign(Object.assign({},e),{[t.id]:Object.assign(Object.assign({},t),{realm:r[t.realmId]})}),i=t.reduce(o,{}),s=n.selfMembers.reduce(o,i);return Object.values(s).filter(e=>!e.accepted).map(t=>Object.assign(Object.assign({},t),{accept(){return Z(this,void 0,void 0,function*(){yield e.members.update(t.id,{accepted:new Date})})},reject(){return Z(this,void 0,void 0,function*(){yield e.members.update(t.id,{rejected:new Date})})}}))})),[])});function ko(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:i}=o.meta||{};if(!(null===(r=e.cloud.schema)||void 0===r?void 0:r[i].markedForSync))return;let s;Object.defineProperty(t,"awareness",{get:()=>s||(s=function(e,t,r){const{parentTable:o,parentId:i,parentProp:s,updatesTable:a}=t.meta,l=new Y.Awareness(t),c=Bn(t);return l.on("update",({added:n,updated:i,removed:a},c)=>{const u=n.concat(i).concat(a),d=e.cloud.currentUser.value;if("server"!==c&&d.isLoggedIn&&!Cn(e)){const n=Y.encodeAwarenessUpdate(l,u);e.messageProducer.next({type:"aware",table:o,prop:s,k:t.meta.parentId,u:n}),r.destroyed&&e.messageProducer.next({type:"doc-close",table:o,prop:s,k:t.meta.parentId})}}),l.on("destroy",()=>{Y.removeAwarenessStates(l,[t.clientID],"provider destroyed")}),(()=>{Z(this,void 0,void 0,function*(){if(r.destroyed)return;let t=!1,l=1;const u=U([e.cloud.webSocketStatus,c.pipe(L(null))]).subscribe(([n])=>{if(r.destroyed)return;t="connected"===n;const o=e.cloud.currentUser.value;"connected"===n&&o.isLoggedIn&&!Cn(e)&&(++l,d().catch(e=>{}))});function d(){return Z(this,void 0,void 0,function*(){const c=l,u=e.table(a),d=e.$syncState,[f,p]=yield e.transaction("r",d,u,()=>Z(this,void 0,void 0,function*(){const e=yield u.get(Vt),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:s,k:i,serverRev:p},h=yield u.where("i").between(f,1/0,!1).filter(e=>0===n(e.k,i)&&!(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(u)})})(),l}(e,o,t),Rn.set(o,s),s)})}}function So(e){const t="undefined"!=typeof window?window.location.href:"";if(!t)return null;const n=new URL(t).searchParams.get("dxc-auth");if(!n)return null;let r;try{const e=function(e){const t=(e+"=".repeat((4-e.length%4)%4)).replace(/-/g,"+").replace(/_/g,"/");return atob(t)}(n);r=JSON.parse(e)}catch(e){return null}const{code:o,provider:i,state:s,error:a}=r;if(a){if(a.toLowerCase().includes("access_denied")||a.toLowerCase().includes("access denied"))throw new Ne("access_denied",i,a);if(a.toLowerCase().includes("email")&&a.toLowerCase().includes("verif"))throw new Ne("email_not_verified",i,a);throw new Ne("provider_error",i,a)}return o&&i&&s?{code:o,provider:i,state:s}:null}function xo(){var e;if("undefined"==typeof window||!(null===(e=window.history)||void 0===e?void 0:e.replaceState))return;const t=new URL(window.location.href);if(!t.searchParams.has("dxc-auth"))return;t.searchParams.delete("dxc-auth");const n=t.pathname+(t.searchParams.toString()?`?${t.searchParams.toString()}`:"")+t.hash;window.history.replaceState(null,"",n)}function Io(e){return"rlm~"+e}function Co(e){return e.startsWith("rlm~")?e.substr(4):null}const Oo={},Eo=new WeakMap,jo=Po("tx"),To=Po("unload");function Po(e){let t=null,n=!1,r=new Map;return{name:e,run(){return Z(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 Z(this,void 0,void 0,function*(){for(const{db:t,parentId:n,triggers:r,parentTable:o,prop:i}of e.values()){const e=G.getOrCreateDocument(t,o,i,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,i){const s=`${e.name}:${t}:${n}:${o}`;let a=r.get(s);a||(a={db:e,parentTable:t,parentId:n,prop:o,triggers:new Set},r.set(s,a)),a.triggers.add(i)}}}function Uo(){jo.run()}function Ao(){To.run()}function $o(e,t,n){var o,i;const s=null===(i=null===(o=e.schema.yProps)||void 0===o?void 0:o.find(e=>e.prop===t))||void 0===i?void 0:i.updatesTable;if(!s)throw new Error(`Table ${e.name} does not have a Yjs property named ${t}`);Oo[s]={trigger:n,parentTable:e.name,prop:t};const a=e.db._novip;let l=Eo.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=>Oo[e])?(o.addEventListener("complete",Uo),o):o},table:n=>{const o=t.table(n),i=Oo[n];if(!i)return o;const{trigger:s,parentTable:a,prop:l}=i;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)?To:jo).enqueue(e,a,t,l,s)}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)jo.enqueue(e,a,t.from,l,s)})}return o.mutate(t)}})}})}))(a),Eo.set(a,l)),a.use(l),G.on("beforeunload",Ao)}const Do={nameSuffix:!0};function Lo(t){const n=t.name,r=yo(t),i=[];let s=!1,a=null,l=null,c=null;t.on("ready",t=>Z(this,void 0,void 0,function*(){try{yield function(t){return Z(this,void 0,void 0,function*(){var n,p,y,h,v,m,_;u=!1;const w=sn(t);"undefined"!=typeof window&&"undefined"!=typeof document&&((null===(n=w.cloud.options)||void 0===n?void 0:n.customLoginGui)||i.push(function(e){let t=!1;const n=document.createElement("div");return document.body?(document.body.appendChild(n),Dr(pr(fo,{db:e.vip}),n)):addEventListener("DOMContentLoaded",()=>{t||(document.body.appendChild(n),Dr(pr(fo,{db:e.vip}),n))}),{unsubscribe(){try{n.remove()}catch(e){}t=!0},get closed(){return t}}}(t))),w.cloud.isServiceWorkerDB||i.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 Tn.value?r.pipe(z(500)):r;case"connecting":return"not-started"===n||"error"===n?r:r.pipe(z(4e3));default:return r}}));return U([n,e.syncStateChangedEvent.pipe(V({phase:"initial"})),yo(e.dx._novip),Pn]).pipe(W(([t,n,r,o])=>{var i;if((null===(i=r.license)||void 0===i?void 0:i.status)&&"ok"!==r.license.status)return{phase:"offline",status:"offline",license:r.license.status};let{phase:s,error:a,progress:l}=n,c=t;return"error"===s&&(c="error"),"not-started"===t&&("pushing"!==s&&"pulling"!==s||(c="connecting")),"error"!==e.cloud.syncState.value.phase||"pushing"!==n.phase&&"pulling"!==n.phase||(c="connecting"),o||(c="disconnected"),{phase:s,error:a,progress:l,status:Wt?c:"offline",license:"ok"}}))}(w).subscribe(t.cloud.syncState)),i.push(w.syncCompleteEvent.subscribe(f)),w.tables.every(e=>e.core)||function(){throw new e.SchemaError("Version increment needed to allow dexie-cloud change tracking")}();const S="serviceWorker"in navigator?yield navigator.serviceWorker.getRegistrations():[],[O,E]=yield w.transaction("rw",w.$syncState,()=>Z(this,void 0,void 0,function*(){var e,t;const{options:n,schema:r}=w.cloud,[o,i,a]=yield Promise.all([w.getOptions(),w.getSchema(),w.getPersistedSyncState()]);if(s){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 w.$syncState.put(e,"options")}}else w.cloud.options=o||null;if((null===(e=w.cloud.options)||void 0===e?void 0:e.tryUseServiceWorker)&&"serviceWorker"in navigator&&S.length>0&&!dn?w.cloud.usingServiceWorker=!0:((null===(t=w.cloud.options)||void 0===t?void 0:t.tryUseServiceWorker)&&w.cloud.isServiceWorkerDB,w.cloud.usingServiceWorker=!1),Gn(r,w.cloud.options),Gn(i,w.cloud.options),r){if(!i||JSON.stringify(i)!==JSON.stringify(r)){const e=i||{};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 w.$syncState.put(e,"schema"),Object.assign(r,e)}}else w.cloud.schema=i||null;return[null==a?void 0:a.initiallySynced,null==a?void 0:a.realms]}));if(O&&w.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`)}}(w),d(),!w.cloud.isServiceWorkerDB){i.push(o(()=>w.getCurrentUser()).subscribe(r)),i.push(o(()=>w.getPersistedSyncState()).subscribe(w.cloud.persistedSyncState)),yield b(U([r.pipe(q(1),H(1)),w.cloud.persistedSyncState.pipe(q(1),H(1))]));const e=ko(w);G.on.new.subscribe(e),w.dx.once("close",()=>{G.on.new.unsubscribe(e)})}let j=!1,T=yield w.getCurrentUser();if(l&&!w.cloud.isServiceWorkerDB){const e=l;l=null,yield Se(w.cloud.userInteraction,"Authentication Error",{type:"error",messageCode:"GENERIC_ERROR",message:e.message,messageParams:{provider:e.provider||"unknown"}})}if(a&&!w.cloud.isServiceWorkerDB){const{code:e,provider:t}=a;a=null;try{j=yield ze(w,{oauthCode:e,provider:t}),T=yield w.getCurrentUser()}catch(e){}}const A=null===(p=w.cloud.options)||void 0===p?void 0:p.requireAuth;A&&(w.cloud.isServiceWorkerDB?yield b(r.pipe(R(e=>!!e.isLoggedIn),H(1))):"object"==typeof A?(!T.isLoggedIn||A.userId&&T.userId!==A.userId||A.email&&T.email!==A.email)&&(j=yield ze(w,A)):T.isLoggedIn||(j=yield ze(w))),!T.isLoggedIn||E&&E.includes(T.userId)||(j=!0),c&&c.stop(),c=null,d();const $=(null===(y=w.cloud.options)||void 0===y?void 0:y.databaseUrl)&&(!O||j);$&&(yield function(e,t,n){return Z(this,void 0,void 0,function*(){yield jn(e,Zt,()=>Xt(e,t,n,{isInitialSync:!0}))})}(w,w.cloud.options,w.cloud.schema),w.setInitiallySynced(!0)),d(),w.cloud.usingServiceWorker&&(null===(h=w.cloud.options)||void 0===h?void 0:h.databaseUrl)?($||fe(w,"push").catch(()=>{}),function(e){return Z(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){}})}(w).catch(()=>{})):(null===(v=w.cloud.options)||void 0===v?void 0:v.databaseUrl)&&w.cloud.schema&&!w.cloud.isServiceWorkerDB&&(c=Jn(w,w.cloud.options,w.cloud.schema),c.start(),$||pe(w,"push")),d(),w.cloud.isServiceWorkerDB||i.push(I(self,"online").subscribe(()=>{w.syncStateChangedEvent.next({phase:"not-in-sync"}),Cn(w)||pe(w,"push")}),I(self,"offline").subscribe(()=>{w.syncStateChangedEvent.next({phase:"offline"})})),!(null===(m=w.cloud.options)||void 0===m?void 0:m.databaseUrl)||(null===(_=w.cloud.options)||void 0===_?void 0:_.disableWebSocket)||fn||i.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=>Z(this,void 0,void 0,function*(){return{type:"ready",rev:e.serverRevision,realmSetHash:yield Ze(e)}}))),r=C(n,e.messageProducer);return function t(){return e.cloud.persistedSyncState.pipe(R(e=>null==e?void 0:e.serverRevision),H(1),N(t=>e.cloud.currentUser.pipe(W(e=>[e,t]))),N(([e,t])=>Pn.pipe(W(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),H(1),W(e=>[t,e])):new k([t,n])),N(e=>Z(this,[e],void 0,function*([e,t]){return[e,yield Ze(t)]})),M(([e,t],[n,r])=>e===n&&t===r),N(([n,o])=>{var i;return(null===(i=e.cloud.persistedSyncState)||void 0===i?void 0:i.value)?n?new Mn(e,e.cloud.persistedSyncState.value.serverRevision,e.cloud.persistedSyncState.value.yServerRevision,o,e.cloud.persistedSyncState.value.clientIdentity,r,e.cloud.webSocketStatus,n):g([]):t()}),K(n=>"TokenExpiredError"===(null==n?void 0:n.name)?x(!0).pipe(N(()=>Z(this,void 0,void 0,function*(){const t=yield e.getCurrentUser(),n=yield je(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())):P(()=>n)),K(n=>(e.cloud.webSocketStatus.next("error"),n instanceof Hn?P(()=>n):g(Kn()).pipe(N(()=>t())))))}().subscribe({next:t=>{t&&e.messageConsumer.enqueue(t)},error:e=>{},complete:()=>{}})}(w))})}(t)}catch(e){}}),!0);let u=!1;function d(){if(u)throw new e.DatabaseClosedError}t.once("close",()=>{i.forEach(e=>e.unsubscribe()),i.splice(0,i.length),u=!0,c&&c.stop(),c=null,r.next(Ue)});const f=new S;var p;t.cloud={version:"4.3.5",options:Object.assign({},Do),schema:null,get currentUserId(){return r.value.userId||Ue.userId},currentUser:r,syncState:new k({phase:"initial",status:"not-started"}),events:{syncComplete:f},persistedSyncState:new k(void 0),userInteraction:new k(void 0),webSocketStatus:new k("not-started"),login(e){return Z(this,void 0,void 0,function*(){const n=sn(t);yield n.cloud.sync(),yield ze(n,e)})},invites:wo(t),roles:vo(t),configure(e){if(e=t.cloud.options=Object.assign(Object.assign({},t.cloud.options),e),s=!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)}`,sn(t).reconfigure()),Gn(t.cloud.schema,t.cloud.options),"undefined"!=typeof window&&window.location)try{const e=So();e&&(xo(),a={code:e.code,provider:e.provider})}catch(e){xo(),e instanceof Ne&&(l=e)}},logout(){return Z(this,arguments,void 0,function*({force:e}={}){e?yield De(sn(t),{deleteUnsyncedData:!0}):yield $e(sn(t))})},getAuthProviders(){return Z(this,void 0,void 0,function*(){const e=t.cloud.options;if(!(null==e?void 0:e.databaseUrl))throw new Error("Dexie Cloud not configured. Call db.cloud.configure() first.");const n=!1!==e.socialAuth;return Me(e.databaseUrl,n)})},sync(){return Z(this,arguments,void 0,function*({wait:e,purpose:n}={wait:!0,purpose:"push"}){var r;void 0===e&&(e=!0);const i=sn(t);if("ok"!==((null===(r=i.cloud.currentUser.value.license)||void 0===r?void 0:r.status)||"ok")&&(yield Oe(i)),"pull"===n){const t=i.cloud.persistedSyncState.value;if(pe(i,n),e){const e=yield b(i.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 zn(i)){const t=i.cloud.persistedSyncState.value;pe(i,n),e&&(yield b(g(o(()=>Z(this,void 0,void 0,function*(){const e=yield zn(i),n=yield i.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 i=go(e),s=t=>{const i=t[o||e.cloud.currentUserId];return i?new _o(i.permissions,n,void 0===o||o===e.cloud.currentUserId||r===e.cloud.currentUserId):new _o({},n,!r||r===e.cloud.currentUserId)},a=i.pipe(W(s));return a.getValue=()=>s(i.getValue()),a}(t._novip,e,n)},t.Version.prototype._parseStoresSpec=e.override(t.Version.prototype._parseStoresSpec,e=>En(e,t)),t.Table.prototype.newId=function({colocateWith:e}={}){const n=e&&e.substr(e.length-3);return _n(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(On({currentUserObservable:t.cloud.currentUser,db:sn(t)})),t.use((p=sn(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,i,s,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:Ue.userId;if((null===(s=null===(i=p.cloud.schema)||void 0===i?void 0:i[t])||void 0===s?void 0:s.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,e.upsert||delete e.updates,t.$ts=Date.now())}}return n.mutate(e)}})}})})),t.use(wn(sn(t)))}Lo.version="4.3.5",e.Cloud=Lo;export{Lo as default,$o as defineYDocTrigger,Lo as dexieCloud,Co as getTiedObjectId,Io as getTiedRealmId,ao as resolveText};
2
2
  //# sourceMappingURL=dexie-cloud-addon.min.js.map