dexie-cloud-addon 4.3.0 → 4.3.3
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.
- package/TODO-SOCIALAUTH.md +129 -400
- package/dist/modern/DexieCloudOptions.d.ts +8 -11
- package/dist/modern/authentication/handleOAuthCallback.d.ts +20 -14
- package/dist/modern/authentication/interactWithUser.d.ts +3 -0
- package/dist/modern/authentication/oauthLogin.d.ts +28 -27
- package/dist/modern/default-ui/LoginDialog.d.ts +29 -4
- package/dist/modern/default-ui/OptionButton.d.ts +21 -0
- package/dist/modern/default-ui/SelectDialog.d.ts +10 -0
- package/dist/modern/dexie-cloud-addon.js +454 -305
- package/dist/modern/dexie-cloud-addon.js.map +1 -1
- package/dist/modern/dexie-cloud-addon.min.js +1 -1
- package/dist/modern/dexie-cloud-addon.min.js.map +1 -1
- package/dist/modern/errors/OAuthError.d.ts +1 -1
- package/dist/modern/errors/OAuthRedirectError.d.ts +11 -0
- package/dist/modern/service-worker.js +454 -305
- package/dist/modern/service-worker.js.map +1 -1
- package/dist/modern/service-worker.min.js +1 -1
- package/dist/modern/service-worker.min.js.map +1 -1
- package/dist/modern/types/DXCUserInteraction.d.ts +33 -25
- package/dist/umd/dexie-cloud-addon.js +454 -305
- package/dist/umd/dexie-cloud-addon.js.map +1 -1
- package/dist/umd/dexie-cloud-addon.min.js +1 -1
- package/dist/umd/dexie-cloud-addon.min.js.map +1 -1
- package/dist/umd/service-worker.js +454 -305
- package/dist/umd/service-worker.js.map +1 -1
- package/dist/umd/service-worker.min.js +1 -1
- package/dist/umd/service-worker.min.js.map +1 -1
- package/oauth_flow.md +84 -76
- package/package.json +3 -3
|
@@ -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 p,readAny as f,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 L,startWith as D}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 X(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 Z(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function 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=Z(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise(function(r,o){(function(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)})(r,o,(t=e[n](t)).done,t.value)})}}}"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 pe(e,t){return X(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 fe(e,t){e.cloud.usingServiceWorker?pe(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}}function ge(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 _e(e,t,...n){return ge(e,{type:"message-alert",title:t,alerts:n,fields:{},submitLabel:"OK",cancelLabel:null})}function we(e,t,n){return X(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 ge(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 ke(e,t,n){return X(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 ge(e,{type:"otp",title:"Enter OTP",alerts:r,fields:{otp:{type:"otp",label:"OTP",placeholder:"Paste OTP here"}}});return o})}function Se(e){return X(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 Ie(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 xe(t,n,r,o,i){return X(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 Ie(t,n):yield function(t,n,r,o){return X(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 ge(r,{type:"message-alert",title:"Authentication Alert",fields:{},alerts:e.alerts})),t}catch(t){if(t instanceof be)throw yield _e(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 _e(r,"Authentication Failed",{type:"error",messageCode:"GENERIC_ERROR",message:n,messageParams:{}}).catch(()=>{})}throw t}})}(n,r,o,i)})}function Ie(e,t){return X(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 Ce=new WeakMap;class Oe{constructor(e,t){Ce.set(this,e),Object.assign(this,t)}static load(e,t){return e.table("$logins").get(t).then(n=>new Oe(e,n||{userId:t,claims:{sub:t},lastLogin:new Date(0)}))}save(){return X(this,void 0,void 0,function*(){Ce.get(this).table("$logins").put(this)})}}const Ee={userId:"unauthorized",name:"Unauthorized",claims:{sub:"unauthorized"},lastLogin:new Date(0)};try{Object.freeze(Ee),Object.freeze(Ee.claims)}catch(e){}function je(e,t){return b(g(e).pipe(_(t)))}function Te(e){return X(this,void 0,void 0,function*(){const t=yield Pe(e);if(t){if(!(yield function(e,t,n){return X(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 ge(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 Pe(e,{deleteUnsyncedData:!0})}})}function Pe(e){return X(this,arguments,void 0,function*(e,{deleteUnsyncedData:t=!1}={}){const[n,r]=yield e.dx.transaction("rw",e.dx.tables,n=>X(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 je(e.cloud.currentUser,e=>e.userId===Ee.userId),yield e.cloud.sync({purpose:"pull",wait:!0})),n})}class Ue extends Error{constructor(e,t){super(t||`${e.status} ${e.statusText}`),this.httpStatus=e.status}get name(){return"HttpError"}}const Ae={popup_blocked:"The login popup was blocked by your browser. Please allow popups for this site and try again.",popup_closed:"The login popup was closed before completing authentication.",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 $e extends Error{constructor(e,t,n){super(n||Ae[e]),this.name="OAuthError",this.code=e,this.provider=t}get userMessage(){return Ae[this.code]||this.message}}function Le(e){return X(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 $e("expired_code",void 0,t.message);throw new be(t)}}catch(e){if(e instanceof $e||e instanceof be)throw e}const t=yield e.text().catch(()=>e.statusText);throw new $e("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 $e("provider_error",void 0,`Unexpected response type: ${n.type}`);return n}catch(e){if(e instanceof $e||e instanceof be)throw e;if(e instanceof TypeError)throw new $e("network_error");throw e}})}const De={providers:[],otpEnabled:!0};function Re(e){return X(this,void 0,void 0,function*(){const{databaseUrl:t,provider:n,usePopup:r=!0}=e;if(!r)throw new Error("Non-popup OAuth flow requires handleOAuthCallback after redirect");const o=function(){const e=new Uint8Array(32);return crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,"0")).join("")}(),i=function(e,t){const n=new URL(`${e.databaseUrl}/oauth/login/${e.provider}`);n.searchParams.set("state",t);const r=e.redirectUri||("undefined"!=typeof window?window.location.origin:"");return r&&n.searchParams.set("redirect_uri",r),n.toString()}(e,o),{left:s,top:a}=function(e,t){var n,r,o,i,s,a;const l=null!==(n=window.screenLeft)&&void 0!==n?n:window.screenX,c=null!==(r=window.screenTop)&&void 0!==r?r:window.screenY,u=l+((null!==(i=null!==(o=window.innerWidth)&&void 0!==o?o:document.documentElement.clientWidth)&&void 0!==i?i:screen.width)-e)/2,d=c+((null!==(a=null!==(s=window.innerHeight)&&void 0!==s?s:document.documentElement.clientHeight)&&void 0!==a?a:screen.height)-t)/2;return{left:Math.max(0,u),top:Math.max(0,d)}}(500,600),l=window.open(i,"dexie-cloud-oauth",`width=500,height=600,left=${s},top=${a},menubar=no,toolbar=no,location=yes,status=no`);if(!l)throw new $e("popup_blocked",n);return new Promise((e,r)=>{let i=!1;const s=s=>{const a=new URL(t).origin;if(s.origin!==a)return;if("object"!=typeof(l=s.data)||null===l||"dexie:oauthResult"!==l.type||"string"!=typeof l.provider||"string"!=typeof l.state)return;var l;const u=s.data;if(u.state===o){if(c(),i=!0,u.error){const e=function(e){const t=e.toLowerCase();if(t.includes("access_denied")||t.includes("access denied"))return"access_denied";if(t.includes("email")&&t.includes("verif"))return"email_not_verified";if(t.includes("expired"))return"expired_code";if(t.includes("state"))return"invalid_state";return"provider_error"}(u.error);return void r(new $e(e,n,u.error))}u.code?e({code:u.code,provider:u.provider,state:u.state}):r(new $e("provider_error",n,"No authorization code received"))}},a=setInterval(()=>{l.closed&&!i&&(c(),r(new $e("popup_closed",n)))},500),c=()=>{window.removeEventListener("message",s),clearInterval(a);try{l.closed||l.close()}catch(e){}};window.addEventListener("message",s)})})}function Ne(t){const{userInteraction:n}=t.cloud;return function(r){return X(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 Le({databaseUrl:l,code:o.oauthCode,publicKey:r,scopes:["ACCESS_DB"]});if(null==o?void 0:o.provider)return yield Be(t,r,o.provider);if("demo"===(null==o?void 0:o.grant_type)){a={demo_user:yield we(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 function(e){return X(this,arguments,void 0,function*(e,t=!0){if(!t)return De;try{const t=yield fetch(`${e}/auth-providers`,{method:"GET",headers:{Accept:"application/json"},mode:"cors"});return 404===t.status?De:t.ok?yield t.json():De}catch(e){return De}})}(l,i);if(c.providers.length>0){const o=yield function(t,n,r,o="Choose login method",i=[]){return new Promise((s,a)=>{const l={type:"provider-selection",title:o,alerts:i,providers:n,otpEnabled:r,fields:{},submitLabel:void 0,cancelLabel:"Cancel",onSelectProvider:e=>{t.next(void 0),s({type:"provider",provider:e})},onSelectOtp:()=>{t.next(void 0),s({type:"otp"})},onCancel:()=>{t.next(void 0),a(new e.AbortError("User cancelled"))}};t.next(l)})}(n,c.providers,c.otpEnabled,"Sign in");if("provider"===o.type)return yield Be(t,r,o.provider)}const u=yield we(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 _e(n,"Token request failed",{type:"error",messageCode:"GENERIC_ERROR",message:e,messageParams:{}}).catch(()=>{}),new Ue(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 ke(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 ke(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 Ue(o,e)}return yield o.json()}throw new Error(`Unexpected response from ${l}/token`)})}}function Be(e,t,n){return X(this,void 0,void 0,function*(){var r,o,i;const s=null===(r=e.cloud.options)||void 0===r?void 0:r.databaseUrl;if(!s)throw new Error("No database URL given.");const{userInteraction:a}=e.cloud,l=!1!==(null===(o=e.cloud.options)||void 0===o?void 0:o.oauthPopup),c=(null===(i=e.cloud.options)||void 0===i?void 0:i.oauthRedirectUri)||("undefined"!=typeof window?window.location.origin:void 0);try{const e=yield Re({databaseUrl:s,provider:n,redirectUri:c,usePopup:l});return yield Le({databaseUrl:s,code:e.code,publicKey:t,scopes:["ACCESS_DB"]})}catch(e){throw e instanceof $e&&(yield _e(a,"Authentication Failed",{type:"error",messageCode:"GENERIC_ERROR",message:e.userMessage,messageParams:{}}).catch(()=>{})),e}})}function Me(e,...t){globalThis.console[e](...t)}function We(e,t){return X(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 Se(e),!1}const i=new Oe(e,{claims:{},lastLogin:new Date(0)});return yield xe(e.cloud.options.databaseUrl,i,e.cloud.options.fetchTokens||Ne(e),e.cloud.userInteraction,t),o!==Ee.userId&&i.userId!==o&&(yield Te(e)),yield function(e,t){return X(this,void 0,void 0,function*(){const n=e.table("$logins");yield e.transaction("rw",n,e=>X(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&&(Me("debug","Login context property names:",Object.keys(t)),Me("debug","Login context property names:",Object.keys(t)),Me("debug","Login context:",t),Me("debug","Login context JSON:",JSON.stringify(t)))}catch(e){}throw e}})),yield je(e.cloud.currentUser,e=>e.userId===t.userId)})}(e,i),fe(e,"pull"),i.userId!==o})}const Fe={},He="undefined"!=typeof self&&self.document&&"undefined"!=typeof navigator&&navigator.serviceWorker;He&&He.ready.then(e=>Fe.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 Ke{constructor(e){this.name=e}subscribe(e){if(!He)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 He.addEventListener("message",t),()=>He.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})):Fe.registration&&(null===(t=Fe.registration.active)||void 0===t||t.postMessage({type:`sw-broadcast-${this.name}`,message:e}))}}const ze=globalThis["lbc-events"]||(globalThis["lbc-events"]=new Map);class Ve extends w{constructor(e){const t="undefined"==typeof BroadcastChannel?new Ke(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){ze.has(e)?ze.get(e).push(t):ze.set(e,[t])}(`lbc-${e}`,r);try{t instanceof Ke?i=t.subscribe(e=>n.next(e)):t.addEventListener("message",o)}catch(e){}return()=>{!function(e,t){const n=ze.get(e);if(n){const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}(`lbc-${e}`,r),t instanceof Ke?i():t.removeEventListener("message",o)}}),this.name=e,this.bc=t}next(e){this.bc.postMessage(e);!function(e){const t=ze.get(e.type);t&&t.forEach(t=>{try{t(e)}catch(e){}})}(new CustomEvent(`lbc-${this.name}`,{detail:e}))}}function qe(e){return X(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 Je(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 Ge(e){return`$${e}_mutations`}function Ye(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 Xe=[].concat;function Ze(e){return Xe.apply([],e)}function Qe(e,t){return X(this,arguments,void 0,function*(e,t,{since:n={},limit:r=1/0}={}){const o=yield Promise.all(e.map(e=>X(this,void 0,void 0,function*(){const t=Ye(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=Ze(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 et(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:tt}={};const nt={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 rt(...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 nt;let i=n.get(r);if(void 0!==i)return i;const s=(o=e,tt.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:nt),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 ot={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 it={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 st={bigint:{replace:e=>({$t:"bigint",v:""+e}),revive:e=>BigInt(e.v)}};var at={Date:{replace:e=>({$t:"Date",v:isNaN(e.getTime())?"NaN":e.toISOString()}),revive:({v:e})=>new Date("NaN"===e?NaN:Date.parse(e))}},lt={Set:{replace:e=>({$t:"Set",v:Array.from(e.entries())}),revive:({v:e})=>new Set(e)}},ct={Map:{replace:e=>({$t:"Map",v:Array.from(e.entries())}),revive:({v:e})=>new Map(e)}};const ut="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0;var dt=["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=ut[t];return o&&new o(r.ArrayBuffer.revive({v:e},n,r))}}}),{});function pt(e){return function(e){for(var t="",n=0,r=e.length;n<r;n++)t+=ht[e[n]];return t}(me(e))}function ft(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+=yt[e[n]];return t}(e))}const yt={"-":"=",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:"+","|":"/"},ht={};for(const e of Object.keys(yt))ht[yt[e]]=e;var vt={ArrayBuffer:{replace:e=>({$t:"ArrayBuffer",v:pt(e)}),revive:({v:e})=>{const t=ft(e);return t.buffer.byteLength===t.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}}};class mt{constructor(e,t){this.buf=e,this.type=t}}function bt(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 gt(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;++n)t[n]=e.charCodeAt(n);return t.buffer}var _t={Blob:{test:(e,t)=>"Blob"===t||e instanceof mt,replace:e=>({$t:"Blob",v:me(e instanceof mt?e.buf:gt(bt(e))),type:e.type}),revive:({type:e,v:t})=>{const n=ve(t);return void 0!==typeof Blob?new Blob([n]):new mt(n.buffer,e)}}};const wt={...it,...st,...at,...lt,...ct,...dt,...vt,..._t};function kt(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 St={undefined:{replace:()=>({$t:"undefined"}),revive:()=>{}}},xt={File:{test:(e,t)=>"File"===t,replace:e=>({$t:"File",v:me(gt(bt(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 It="function"==typeof BigInt&&"bigint"==typeof BigInt(0);class Ct{toString(){return this.v}constructor(e){this.v=e}}const Ot=It?{}:{bigint:{test:e=>e instanceof Ct,replace:e=>Object.assign({$t:"bigint"},e),revive:({v:e})=>new Ct(e)}},Et=Object.assign(Object.assign(Object.assign(Object.assign({},St),Ot),xt),{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)}}}),jt=rt(wt,Et),Tt=function(...e){const t=rt(wt,ot,...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 kt(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 kt(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)}}}(Et);function Pt(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=Ut(i,o));const e=c.muts[r],n=JSON.stringify(t);e.keys[s]=n}else if("#"===t[0]){c===i&&(c=Ut(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 Ut(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 At=new WeakMap;function $t(e){return X(this,void 0,void 0,function*(){var t,n;const r=(null!==(n=null===(t=At.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 Lt(e,t,n,r,o,i,s,a,l){return X(this,void 0,void 0,function*(){const c={Accept:"application/json, application/x-bison, application/x-bison-stream","Content-Type":"application/tson"},u=yield Se(o),d=null==u?void 0:u.accessToken;d&&(c.Authorization=`Bearer ${d}`);const p={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:Pt(o.dx.core.schema,l,e),y:t,dxcv:o.cloud.version};o.syncStateChangedEvent.next({phase:"pushing"});const f=jt.stringify(p),y=yield fetch(`${i}/sync`,{method:"post",headers:c,credentials:"include",body:f});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));At.set(e,new Date(Date.now()+1e3*t))}else At.delete(e)}}(o,y),!y.ok)throw new Ue(y);if("application/x-bison"===y.headers.get("content-type"))return Tt.fromBinary(yield y.blob());{const e=yield y.text();return jt.parse(e)}})}function Dt(t){if(null==t?void 0:t.cancelled)throw new e.AbortError("Operation was cancelled")}let Rt=!1;function Nt(e,t,n,r){return X(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 Bt(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 Mt(t,r,o){return X(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 Wt(t,n){return X(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 Mt(t,r,n.changeSpecs);break;case"delete":yield t.bulkDelete(r)}}}})}"undefined"!=typeof self&&"undefined"!=typeof navigator&&(Rt=navigator.onLine,self.addEventListener("online",()=>Rt=!0),self.addEventListener("offline",()=>Rt=!1));const Ft="dexie-cloud-syncer";function Ht(e,t){return e.where("i").between(t,1/0,!0).toArray()}function Kt(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 zt(e,t){return X(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=Kt(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=Kt(t,a.table,a.prop);e&&(yield t.transaction("rw",e,t=>X(this,void 0,void 0,function*(){let n=yield t.table(e.name).get(Ft);yield t.table(e.name).put(Object.assign(Object.assign({},n||{i:Ft}),{unsentFrom:Math.max((null==n?void 0:n.unsentFrom)||1,a.i+1)}))})));break}case"u-reject":{const e=Kt(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 Vt(t,n,r){return X(this,arguments,void 0,function*(t,n,{yDownloadedRealms:r,realms:o}){if(r&&o&&o.every(e=>"*"===r[e]))return;const i=yield Se(t),s={"Content-Type":"application/json",Accept:"application/octet-stream"};i&&(s.Authorization=`Bearer ${i.accessToken}`);const a=yield fetch(`${n}/y/download`,{body:jt.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 X(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=Kt(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=p(e);break;case 2:yield Q(b(!1)),c=p(e),u=p(e);break;case 3:{const t=f(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 qt="currentSyncWorker";function Jt(e,t,n,r){return Gt(e,t,n,r).then(t=>((null==r?void 0:r.justCheckIfNeeded)||e.syncStateChangedEvent.next({phase:"in-sync"}),t)).catch(o=>X(this,void 0,void 0,function*(){return(null==r?void 0:r.justCheckIfNeeded)?Promise.reject(o):Rt&&(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 Jt(e,t,n,Object.assign(Object.assign({},r),{retryImmediatelyOnFetchError:!1}))):(yield e.$syncState.update("syncState",{timestamp:new Date,error:""+o}),e.syncStateChangedEvent.next({phase:Rt?"error":"offline",error:new Error(""+(null==o?void 0:o.message)||o)}),Promise.reject(o))}))}function Gt(e,t,n){return X(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?Je(e):[],d=u.map(t=>e.table(Ge(t.name))),p=yield e.getPersistedSyncState(),f=c.isLoggedIn,y=f?function(e,t){const n=(null==t?void 0:t.syncedTables)||[];return Je(e).filter(e=>!n.includes(e.name))}(e,p):[];Dt(o);const h=y.length>0;if(h){if(i)return!0;yield e.transaction("rw",y,e=>X(this,void 0,void 0,function*(){e.idbtrans.disableChangeTracking=!0,e.idbtrans.disableAccessControl=!0,yield function(e,t,n){return X(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!==Ee.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!==Ee.userId||(e.owner=t.userId)}):yield n.toCollection().modify(e=>{e.realmId&&r.has(e.realmId)||(e.owner&&e.owner!==Ee.userId||(e.owner=t.userId),e.realmId&&e.realmId!==Ee.userId||(e.realmId=t.userId))}))})}(y,c,null==p?void 0:p.realms)})),Dt(o)}const[v,m,b,{yMessages:g,lastUpdateIds:_}]=yield e.transaction("r",e.tables,()=>X(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 Qe(d,e);const s=yield function(e,t){return X(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(Ft),a=(null==s?void 0:s.unsentFrom)||1,l=(null==s?void 0:s.receivedUntil)||0,c=Math.min(a,l+1),u=yield Ht(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(Dt(o),h){const e=[...(null==p?void 0:p.realms)||[],...(null==p?void 0:p.inviteRealms)||[]],a=yield function(e,t,n,r){return X(this,void 0,void 0,function*(){const o=`upload-${et(8)}`;if(t.isLoggedIn&&e.length>0){const i=new Set(r||[]);return(yield Promise.all(e.map(e=>X(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 Dt(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=Bt(v,null==m?void 0:m.latestRevisions),S=(null==m?void 0:m.clientIdentity)||oe(16);Dt(o);const x=yield Lt(v,g,m,b,e,l,n,S,c),{done:I,newSyncState:C}=yield e.transaction("rw",e.tables,t=>X(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 Qe(d,e,{since:k});for(const t of d){const n=Ye(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()])}Bt(r,k),yield Nt(e,n,k,x.serverRevision);const o=yield e.getPersistedSyncState();yield function(e,t,n){return X(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=Je(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};f&&(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=Yt(x.changes,r);if(yield Wt(s,e),x.yMessages){const{receivedUntils:t,resyncNeeded:n,yServerRevision:r}=yield zt(x.yMessages,e);r&&(i.yServerRevision=r),yield function(e,t,n){return X(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,()=>X(this,void 0,void 0,function*(){const t=yield n.table(e).get(Ft);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:Ft,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 $t(e),yield Gt(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 Vt(e,l,C)}catch(e){}return e.syncCompleteEvent.next(),!1})}function Yt(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 Xt(t){const n=[],r=new k(!0),o=new k(null);let i=!1,s=new Array(10).fill(0);return o.subscribe(()=>X(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 X(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 Ie(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)){fe(t,"pull");break}yield t.transaction("rw",t.dx.tables,n=>X(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||fe(t,"pull"));if((yield e.waitFor(qe(o)))!==c.realmSetHash)return void fe(t,"pull");let s=[];if(i.isLoggedIn){const e=Je(t).map(e=>t.table(Ge(e.name)));s=yield Qe(e,t)}if(c.changes.length>0){const e=Yt(c.changes,s);yield Wt(e,t)}o.latestRevisions=Bt(s,o.latestRevisions),o.serverRevision=c.newRev,yield Nt(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 Zt=new WeakMap,Qt={members:"@id, [userId+realmId], [email+realmId], realmId",roles:"[realmId+name]",realms:"@realmId",$jobs:"",$syncState:"",$baseRevs:"[tableName+clientRev]",$logins:"claims.sub, lastLogin"};let en=0;function tn(e){"vip"in e&&(e=e.vip);let t=Zt.get(e.cloud);if(!t){const n=new S;let r=new Ve(`syncstatechanged-${e.name}`),o=new Ve(`synccomplete-${e.name}`);n.id=++en;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)||Ee),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=nn(n.schema.primKey.keyPath));return e}),getOptions:()=>t.$syncState.get("options"),setInitiallySynced(e){i=e},reconfigure(){r=new Ve(`syncstatechanged-${e.name}`),o=new Ve(`synccomplete-${e.name}`)}};Object.assign(t,s),t.messageConsumer=Xt(t),t.messageProducer=new S,Zt.set(e.cloud,t)}return t}function nn(e){return"string"==typeof e?e:e?"["+[].join.call(e,"+")+"]":""}const rn="undefined"!=typeof InstallTrigger,on="undefined"!=typeof navigator&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\/|Edge\//.test(navigator.userAgent),sn=on?[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]:NaN,an=on&&sn<=605||rn,ln="undefined"!=typeof self&&"clients"in self&&!self.document;const{toString:cn}={};function un(e){return cn.call(e).slice(8,-1)}function dn(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 pn(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 fn=/b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|x|y|z/i;function yn(e){return e>="A"&&e<="Z"}let hn=0;function vn(e,t){const n=new Uint8Array(18),r=new Uint8Array(n.buffer,0,6),o=Date.now();hn>=o?++hn:hn=o,r[0]=hn/1099511627776,r[1]=hn/4294967296,r[2]=hn/16777216,r[3]=hn/65536,r[4]=hn/256,r[5]=hn;const i=new Uint8Array(n.buffer,6);crypto.getRandomValues(i);return e+pt(new Uint8Array(n.buffer))+(t||"")}function mn(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=dn(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=dn(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]=vn(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){dn(o.schema.primaryKey,n).forEach((t,n)=>{if(!se(t)){const n=Array.isArray(t)?t.map(un).join(","):un(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 bn=0;function gn(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 _n(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 wn=new k(new Set);function kn(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 Sn({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=>Ge(e));i=n.transaction([...r,...e],o)}else i=n.transaction(r,o);if("readwrite"===o){i.txid=et(16),i.opCount=0,i.currentUser=e.value,wn.value.add(i),wn.next(wn.value);const n=()=>{i.removeEventListener("complete",r),i.removeEventListener("error",n),i.removeEventListener("abort",n),wn.value.delete(i),wn.next(wn.value)},r=()=>{i.mutationsAdded&&!kn(t)&&fe(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"+ ++bn;return Object.assign(Object.assign({},e),{count:gn(e.count,t),get:gn(e.get,t),getMany:gn(e.getMany,t),openCursor:gn(e.openCursor,t),query:gn(e.query,t),mutate:_n(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:p}}=c,{type:f}=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"===f?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:p}:"add"===n.type?{type:"insert",ts:_,opNo:y,keys:l,txid:d,userId:p,values:v}:g&&b?{type:"upsert",ts:_,opNo:y,keys:l,values:v,changeSpecs:b.changeSpecs.filter((e,t)=>!s[t]),txid:d,userId:p}:w&&m?{type:"modify",ts:_,opNo:y,keys:l,criteria:w,changeSpec:m,txid:d,userId:p}:m?{type:"update",ts:_,opNo:y,keys:l,changeSpecs:l.map(()=>m),txid:d,userId:p}:b?{type:"update",ts:_,opNo:y,keys:b.keys,changeSpecs:b.changeSpecs,txid:d,userId:p}:{type:"upsert",ts:_,opNo:y,keys:l,values:v,txid:d,userId:p};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 xn(e,t){return function(n,r){var o;const i=Object.assign(Object.assign({},Qt),n);Object.keys(Qt).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=Qt[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(Qt[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)(fn.test(e[t])||yn(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=pn(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 In(e,t,n){return"undefined"!=typeof navigator&&navigator.locks?navigator.locks.request(e.name+"|"+t,n):n()}const Cn=new k(!0),On=new k(!0);Cn.pipe(N(e=>e?x(!0):x(!1).pipe(B(2e4))),M()).subscribe(On);const En="undefined"!=typeof document?I(document,"visibilitychange"):x({}),jn=En.pipe(R(()=>"hidden"===document.visibilityState)),Tn=En.pipe(R(()=>"visible"===document.visibilityState)),Pn="undefined"!=typeof window?C(Tn,I(window,"mousedown"),I(window,"mousemove"),I(window,"keydown"),I(window,"wheel"),I(window,"touchmove")):x({});"undefined"!=typeof document&&C(x(!0),jn,Pn).pipe(W(()=>"visible"===document.visibilityState),F(e=>{Cn.value!==e&&Cn.next(e)}),N(e=>e?x(0).pipe(B(16e4),F(()=>Cn.next(!1))):x(0))).subscribe(()=>{});class Un extends Error{constructor(){super(...arguments),this.name="TokenExpiredError"}}const An=new WeakMap,$n=new WeakMap;function Ln(e){let t=$n.get(e);return t||(t=new S,$n.set(e,t)),t}class Dn extends w{constructor(e,t,n,r,o,i,s,a){super(l=>new Nn(e,t,n,r,o,a,l,i,s))}}let Rn=0;class Nn extends T{constructor(e,t,n,r,o,i,s,a,l){super(()=>this.teardown()),this.id=++Rn,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 X(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 Un);this.webSocketStatus.next("connecting"),this.pinger=setInterval(()=>X(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?jt.parse(e.data):function(e){const t=new d(e),n=p(t);if("outdated-server-rev"===n)return{type:n};if("y-complete-sync-done"===n)return{type:n,yServerRev:p(t)};const r=p(t),o=p(t);switch(n){case"u-ack":case"u-reject":return{type:n,table:r,prop:o,i:Number(h(t))};default:{const e=f(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:f(t),sv:f(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&&p(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=>An.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&&Ln(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?zt([t],this.db).then(e=>X(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=Kt(this.db,t.table,t.prop);if(e){const t=r[e.name];t&&(yield e.update(Ft,{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(jt.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&&!kn(this.db)&&this.subscriptions.add(function(e){const t=Ze(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(Ft)).pipe(O(e=>{let r=(null==e?void 0:e.unsentFrom)||1;return g(o(()=>X(this,void 0,void 0,function*(){return(yield Ht(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 Bn extends Error{constructor(e){super("expired"===e?"License expired":"deactivated"===e?"User deactivated":"Invalid license"),this.name="InvalidLicenseError",e&&(this.license=e)}}function Mn(e){return X(this,void 0,void 0,function*(){var e;yield(e=3e3,new Promise(t=>setTimeout(t,e))),yield b(Pn)})}function Wn(e){return X(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 Jt(e,e.cloud.options,e.cloud.schema,{justCheckIfNeeded:!0}))})}const Fn=new WeakMap;function Hn(e,t,n,r){const o=Fn.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 Hn(e,t,n,r)})}}const i=function(){return X(this,void 0,void 0,function*(){try{yield $t(e),yield In(e,qt,()=>Jt(e,t,n,r)),Fn.delete(e)}catch(t){throw Fn.delete(e),t}})}();return Fn.set(e,{promise:i,pull:"push"!==(null==r?void 0:r.purpose)}),i}function Kn(e,t,n){let r=null,o={cancelled:!1},i=0,s=0;function a(r=1){setTimeout(()=>{const p=l?"pull":"push";s=Date.now(),Hn(e,t,n,{cancelToken:o,retryImmediatelyOnFetchError:!0,purpose:p}).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 zn(e,t){if(e&&t&&t.unsyncedTables)for(const n of t.unsyncedTables)e[n]&&(e[n].markedForSync=!1)}var Vn,qn,Jn,Gn,Yn,Xn,Zn,Qn,er,tr,nr,rr={},or=[],ir=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,sr=Array.isArray;function ar(e,t){for(var n in t)e[n]=t[n];return e}function lr(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function cr(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?Vn.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 ur(e,s,r,o,null)}function ur(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?++Jn:o,__i:-1,__u:0};return null==o&&null!=qn.vnode&&qn.vnode(i),i}function dr(e){return e.children}function pr(e,t){this.props=e,this.context=t}function fr(e,t){if(null==t)return e.__?fr(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?fr(e):null}function yr(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 yr(e)}}function hr(e){(!e.__d&&(e.__d=!0)&&Gn.push(e)&&!vr.__r++||Yn!=qn.debounceRendering)&&((Yn=qn.debounceRendering)||Xn)(vr)}function vr(){for(var e,t,n,r,o,i,s,a=1;Gn.length;)Gn.length>a&&Gn.sort(Zn),e=Gn.shift(),a=Gn.length,e.__d&&(n=void 0,r=void 0,o=(r=(t=e).__v).__e,i=[],s=[],t.__P&&((n=ar({},r)).__v=r.__v+1,qn.vnode&&qn.vnode(n),Sr(t.__P,n,r,t.__n,t.__P.namespaceURI,32&r.__u?[o]:null,i,null==o?fr(r):o,!!(32&r.__u),s),n.__v=r.__v,n.__.__k[n.__i]=n,Ir(i,n,s),r.__e=r.__=null,n.__e!=o&&yr(n)));vr.__r=0}function mr(e,t,n,r,o,i,s,a,l,c,u){var d,p,f,y,h,v,m,b=r&&r.__k||or,g=t.length;for(l=function(e,t,n,r,o){var i,s,a,l,c,u=n.length,d=u,p=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]=ur(null,s,null,null,null):sr(s)?s=e.__k[i]=ur(dr,{children:s},null,null,null):null==s.constructor&&s.__b>0?s=e.__k[i]=ur(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):e.__k[i]=s,l=i+p,s.__=e,s.__b=e.__b+1,-1!=(c=s.__i=gr(s,n,l,d))&&(d--,(a=n[c])&&(a.__u|=2)),null==a||null==a.__v?(-1==c&&(o>u?p--:o<u&&p++),"function"!=typeof s.type&&(s.__u|=4)):c!=l&&(c==l-1?p--:c==l+1?p++:(c>l?p--:p++,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=fr(a)),jr(a,a));return r}(n,t,b,l,g),d=0;d<g;d++)null!=(f=n.__k[d])&&(p=-1==f.__i?rr:b[f.__i]||rr,f.__i=d,v=Sr(e,f,p,o,i,s,a,l,c,u),y=f.__e,f.ref&&p.ref!=f.ref&&(p.ref&&Er(p.ref,null,f),u.push(f.ref,f.__c||y,f)),null==h&&null!=y&&(h=y),(m=!!(4&f.__u))||p.__k===f.__k?l=br(f,l,e,m):"function"==typeof f.type&&void 0!==v?l=v:y&&(l=y.nextSibling),f.__u&=-7);return n.__e=h,l}function br(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=br(o[i],t,n,r));return t}e.__e!=t&&(r&&(t&&e.type&&!t.parentNode&&(t=fr(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do{t=t&&t.nextSibling}while(null!=t&&8==t.nodeType);return t}function gr(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 _r(e,t,n){"-"==t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||ir.test(t)?n:n+"px"}function wr(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||_r(e.style,t,"");if(n)for(t in n)r&&n[t]==r[t]||_r(e.style,t,n[t])}else if("o"==t[0]&&"n"==t[1])i=t!=(t=t.replace(Qn,"$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=er,e.addEventListener(t,i?nr:tr,i)):e.removeEventListener(t,i?nr:tr,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 kr(e){return function(t){if(this.l){var n=this.l[t.type+e];if(null==t.t)t.t=er++;else if(t.t<n.u)return;return n(qn.event?qn.event(t):t)}}}function Sr(e,t,n,r,o,i,s,a,l,c){var u,d,p,f,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=qn.__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 pr(m,_),d.constructor=O,d.render=Tr),g&&g.sub(d),d.state||(d.state={}),d.__n=r,p=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=ar({},d.__s)),ar(d.__s,O.getDerivedStateFromProps(m,d.__s))),f=d.props,y=d.state,d.__v=t,p)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!==f&&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(f,y,h)})}if(d.context=_,d.props=m,d.__P=e,d.__e=!1,k=qn.__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=ar(ar({},r),d.getChildContext())),b&&!p&&null!=d.getSnapshotBeforeUpdate&&(h=d.getSnapshotBeforeUpdate(f,y)),I=u,null!=u&&u.type===dr&&null==u.key&&(I=Cr(u.props.children)),a=mr(e,sr(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--;)lr(i[C]);xr(t)}else t.__e=n.__e,t.__k=n.__k,e.then||xr(t);qn.__e(e,t,n)}else null==i&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):a=t.__e=Or(n.__e,t,n,r,o,i,s,l,c);return(u=qn.diffed)&&u(t),128&t.__u?void 0:a}function xr(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(xr)}function Ir(e,t,n){for(var r=0;r<n.length;r++)Er(n[r],n[++r],n[++r]);qn.__c&&qn.__c(t,e),e.some(function(t){try{e=t.__h,t.__h=[],e.some(function(e){e.call(t)})}catch(e){qn.__e(e,t.__v)}})}function Cr(e){return"object"!=typeof e||null==e||e.__b&&e.__b>0?e:sr(e)?e.map(Cr):ar({},e)}function Or(e,t,n,r,o,i,s,a,l){var c,u,d,p,f,y,h,v=n.props||rr,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((f=i[c])&&"setAttribute"in f==!!b&&(b?f.localName==b:3==f.nodeType)){e=f,i[c]=null;break}if(null==e){if(null==b)return document.createTextNode(m);e=document.createElementNS(o,b,m.is&&m),a&&(qn.__m&&qn.__m(t,i),a=!1),i=null}if(null==b)v===m||a&&e.data==m||(e.data=m);else{if(i=i&&Vn.call(e.childNodes),!a&&null!=i)for(v={},c=0;c<e.attributes.length;c++)v[(f=e.attributes[c]).name]=f.value;for(c in v)if(f=v[c],"children"==c);else if("dangerouslySetInnerHTML"==c)d=f;else if(!(c in m)){if("value"==c&&"defaultValue"in m||"checked"==c&&"defaultChecked"in m)continue;wr(e,c,null,f,o)}for(c in m)f=m[c],"children"==c?p=f:"dangerouslySetInnerHTML"==c?u=f:"value"==c?y=f:"checked"==c?h=f:a&&"function"!=typeof f||v[c]===f||wr(e,c,f,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=""),mr("template"==t.type?e.content:e,sr(p)?p:[p],t,n,r,"foreignObject"==b?"http://www.w3.org/1999/xhtml":o,i,s,i?i[0]:n.__k&&fr(n,0),a,l),null!=i)for(c=i.length;c--;)lr(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])&&wr(e,c,y,v[c],o),c="checked",null!=h&&h!=e[c]&&wr(e,c,h,v[c],o))}return e}function Er(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){qn.__e(e,n)}}function jr(e,t,n){var r,o;if(qn.unmount&&qn.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||Er(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){qn.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&jr(r[o],t,n||"function"!=typeof e.type);n||lr(e.__e),e.__c=e.__=e.__e=void 0}function Tr(e,t,n){return this.constructor(e,n)}function Pr(e,t,n){var r,o,i;t==document&&(t=document.documentElement),qn.__&&qn.__(e,t),r=!1?null:t.__k,o=[],i=[],Sr(t,e=t.__k=cr(dr,null,[e]),r||rr,rr,t.namespaceURI,r?null:t.firstChild?Vn.call(t.childNodes):null,o,r?r.__e:t.firstChild,false,i),Ir(o,e,i)}Vn=or.slice,qn={__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}},Jn=0,pr.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=ar({},this.state),"function"==typeof e&&(e=e(ar({},n),this.props)),e&&ar(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),hr(this))},pr.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),hr(this))},pr.prototype.render=dr,Gn=[],Xn="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Zn=function(e,t){return e.__v.__b-t.__v.__b},vr.__r=0,Qn=/(PointerCapture)$|Capture$/i,er=0,tr=kr(!1),nr=kr(!0);const Ur={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},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"},CancelButtonRow:{display:"flex",justifyContent:"center",marginTop:"16px"}};function Ar({children:e,className:t}){return cr("div",{className:`dexie-dialog ${t||""}`},cr("div",{style:Ur.Darken}),cr("div",{style:Ur.DialogOuter},cr("div",{style:Ur.DialogInner},e)))}var $r,Lr,Dr,Rr,Nr=0,Br=[],Mr=qn,Wr=Mr.__b,Fr=Mr.__r,Hr=Mr.diffed,Kr=Mr.__c,zr=Mr.unmount,Vr=Mr.__;function qr(e,t){Mr.__h&&Mr.__h(Lr,e,Nr||t),Nr=0;var n=Lr.__H||(Lr.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function Jr(e){return Nr=1,function(e,t){var n=qr($r++,2);if(n.t=e,!n.__c&&(n.__=[no(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=Lr,!Lr.__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};Lr.__f=!0;var o=Lr.shouldComponentUpdate,i=Lr.componentWillUpdate;Lr.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)},Lr.shouldComponentUpdate=r}return n.__N||n.__}(no,e)}function Gr(e){return Nr=5,function(e,t){var n=qr($r++,7);return to(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}(function(){return{current:e}},[])}function Yr(){for(var e;e=Br.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(Qr),e.__H.__h.forEach(eo),e.__H.__h=[]}catch(t){e.__H.__h=[],Mr.__e(t,e.__v)}}Mr.__b=function(e){Lr=null,Wr&&Wr(e)},Mr.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Vr&&Vr(e,t)},Mr.__r=function(e){Fr&&Fr(e),$r=0;var t=(Lr=e.__c).__H;t&&(Dr===Lr?(t.__h=[],Lr.__h=[],t.__.forEach(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.forEach(Qr),t.__h.forEach(eo),t.__h=[],$r=0)),Dr=Lr},Mr.diffed=function(e){Hr&&Hr(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==Br.push(t)&&Rr===Mr.requestAnimationFrame||((Rr=Mr.requestAnimationFrame)||Zr)(Yr)),t.__H.__.forEach(function(e){e.u&&(e.__H=e.u),e.u=void 0})),Dr=Lr=null},Mr.__c=function(e,t){t.some(function(e){try{e.__h.forEach(Qr),e.__h=e.__h.filter(function(e){return!e.__||eo(e)})}catch(n){t.some(function(e){e.__h&&(e.__h=[])}),t=[],Mr.__e(n,e.__v)}}),Kr&&Kr(e,t)},Mr.unmount=function(e){zr&&zr(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(e){try{Qr(e)}catch(e){t=e}}),n.__H=void 0,t&&Mr.__e(t,n.__v))};var Xr="function"==typeof requestAnimationFrame;function Zr(e){var t,n=function(){clearTimeout(r),Xr&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);Xr&&(t=requestAnimationFrame(n))}function Qr(e){var t=Lr,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),Lr=t}function eo(e){var t=Lr;e.__c=e.__(),Lr=t}function to(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function no(e,t){return"function"==typeof t?t(e):t}function ro({message:e,messageCode:t,messageParams:n}){return e.replace(/\{\w+\}/gi,e=>n[e.substring(1,e.length-1)])}function oo({title:e,type:t,alerts:n,fields:r,submitLabel:o,cancelLabel:i,onCancel:s,onSubmit:a}){const[l,c]=Jr({}),u=Gr(null);return function(e,t){var n=qr($r++,4);!Mr.__s&&to(n.__H,t)&&(n.__=e,n.u=t,Lr.__h.push(n))}(()=>{var e;return null===(e=u.current)||void 0===e?void 0:e.focus()},[]),cr(Ar,{className:"dxc-login-dlg"},cr(dr,null,cr("h3",{style:Ur.WindowHeader},e),n.map(e=>cr("p",{style:Ur.Alert[e.type]},ro(e))),cr("form",{onSubmit:e=>{e.preventDefault(),a(l)}},Object.entries(r).map(([e,{type:t,label:n,placeholder:r}],o)=>cr("label",{style:Ur.Label,key:o},n?`${n}: `:"",cr("input",{ref:0===o?u:void 0,type:t,name:e,autoComplete:"on",style:Ur.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)}}))))),cr("div",{style:Ur.ButtonsDiv},cr(dr,null,cr("button",{type:"submit",style:Ur.PrimaryButton,onClick:()=>a(l)},o),i&&cr("button",{style:Ur.Button,onClick:s},i))))}const io={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 so({provider:e,onClick:t}){const{type:n,name:r,displayName:o,iconUrl:i}=e,s=function(e){const t=Object.assign({},Ur.ProviderButton);switch(e){case"google":return Object.assign(Object.assign({},t),Ur.ProviderGoogle);case"github":return Object.assign(Object.assign({},t),Ur.ProviderGitHub);case"microsoft":return Object.assign(Object.assign({},t),Ur.ProviderMicrosoft);case"apple":return Object.assign(Object.assign({},t),Ur.ProviderApple);default:return Object.assign(Object.assign({},t),Ur.ProviderCustom)}}(n),a=`Continue with ${o}`,l=io[n]||"";return cr("button",{type:"button",style:s,onClick:t,class:`dxc-provider-btn dxc-provider-${n}`,"aria-label":a},i?cr("img",{src:i,alt:"",style:Ur.ProviderButtonIcon,"aria-hidden":"true"}):l?cr("span",{style:Ur.ProviderButtonIcon,"aria-hidden":"true",dangerouslySetInnerHTML:{__html:l}}):null,cr("span",{style:Ur.ProviderButtonText},a))}function ao({onClick:e}){return cr("button",{type:"button",style:Ur.OtpButton,onClick:e,class:"dxc-otp-btn","aria-label":"Continue with email"},cr("span",{style:Ur.ProviderButtonIcon,"aria-hidden":"true",dangerouslySetInnerHTML:{__html:'<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>'}}),cr("span",{style:Ur.ProviderButtonText},"Continue with email"))}function lo(){return cr("div",{style:Ur.Divider},cr("div",{style:Ur.DividerLine}),cr("span",{style:Ur.DividerText},"or"),cr("div",{style:Ur.DividerLine}))}function co({title:e,alerts:t,providers:n,otpEnabled:r,cancelLabel:o,onSelectProvider:i,onSelectOtp:s,onCancel:a}){return cr(Ar,{className:"dxc-provider-selection-dlg"},cr(dr,null,cr("h3",{style:Ur.WindowHeader},e),t.map((e,t)=>cr("p",{key:t,style:Ur.Alert[e.type]},ro(e))),cr("div",{class:"dxc-providers"},n.map(e=>cr(so,{key:e.name,provider:e,onClick:()=>i(e.name)}))),r&&n.length>0&&cr(dr,null,cr(lo,null),cr(ao,{onClick:s})),r&&0===n.length&&cr(ao,{onClick:s}),o&&cr("div",{style:Ur.CancelButtonRow},cr("button",{type:"button",style:Ur.Button,onClick:a},o))))}class uo extends pr{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?"provider-selection"===t.type?cr(co,Object.assign({},t)):cr(oo,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 fo=po(e=>new k(Ee));function yo(e,t){let n=t,r=g(e).pipe(A(e=>n=e),$({resetOnRefCountZero:()=>L(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 ho=po(e=>yo(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})),{})),vo=po(e=>yo(fo(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 mo(...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 bo=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}(yo(U([vo(e._novip),ho(e._novip)]).pipe(W(([{selfMembers:e,realms:t,userId:n},r])=>({selfMembers:e,realms:t,userId:n,globalRoles:r}))),{selfMembers:[],realms:[],userId:Ee.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=Ze(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:"*"}:mo(...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 go{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 _o=po(e=>{const t=fo(e._novip).pipe(N(t=>o(()=>e.members.where({email:t.email||""}).toArray()))),n=bo(e._novip),r=vo(e._novip);return yo(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 X(this,void 0,void 0,function*(){yield e.members.update(t.id,{accepted:new Date})})},reject(){return X(this,void 0,void 0,function*(){yield e.members.update(t.id,{rejected:new Date})})}}))})),[])});function wo(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=Ln(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&&!kn(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")}),(()=>{X(this,void 0,void 0,function*(){if(r.destroyed)return;let t=!1,l=1;const u=U([e.cloud.webSocketStatus,c.pipe(D(null))]).subscribe(([n])=>{if(r.destroyed)return;t="connected"===n;const o=e.cloud.currentUser.value;"connected"===n&&o.isLoggedIn&&!kn(e)&&(++l,d().catch(e=>{}))});function d(){return X(this,void 0,void 0,function*(){const c=l,u=e.table(a),d=e.$syncState,[p,f]=yield e.transaction("r",d,u,()=>X(this,void 0,void 0,function*(){const e=yield u.get(Ft),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:f},h=yield u.where("i").between(p,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),An.set(o,s),s)})}}function ko(e){return"rlm~"+e}function So(e){return e.startsWith("rlm~")?e.substr(4):null}const xo={},Io=new WeakMap,Co=Eo("tx"),Oo=Eo("unload");function Eo(e){let t=null,n=!1,r=new Map;return{name:e,run(){return X(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 X(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 jo(){Co.run()}function To(){Oo.run()}function Po(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}`);xo[s]={trigger:n,parentTable:e.name,prop:t};const a=e.db._novip;let l=Io.get(a);l||(l=(e=>({stack:"dbcore",level:10,name:"yTriggerMiddleware",create:t=>Object.assign(Object.assign({},t),{transaction:(e,n,r)=>{const o=t.transaction(e,n,r);return"readonly"===n?o:e.some(e=>xo[e])?(o.addEventListener("complete",jo),o):o},table:n=>{const o=t.table(n),i=xo[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)?Oo:Co).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)Co.enqueue(e,a,t.from,l,s)})}return o.mutate(t)}})}})}))(a),Io.set(a,l)),a.use(l),G.on("beforeunload",To)}const Uo={nameSuffix:!0};function Ao(t){const n=t.name,r=fo(t),i=[];let s=!1,a=null;t.on("ready",t=>X(this,void 0,void 0,function*(){try{yield function(t){return X(this,void 0,void 0,function*(){var n,d,p,f,y,h,v;l=!1;const m=tn(t);"undefined"!=typeof window&&"undefined"!=typeof document&&((null===(n=m.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),Pr(cr(uo,{db:e.vip}),n)):addEventListener("DOMContentLoaded",()=>{t||(document.body.appendChild(n),Pr(cr(uo,{db:e.vip}),n))}),{unsubscribe(){try{n.remove()}catch(e){}t=!0},get closed(){return t}}}(t))),m.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 Cn.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"})),fo(e.dx._novip),On]).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:Rt?c:"offline",license:"ok"}}))}(m).subscribe(t.cloud.syncState)),i.push(m.syncCompleteEvent.subscribe(u)),m.tables.every(e=>e.core)||function(){throw new e.SchemaError("Version increment needed to allow dexie-cloud change tracking")}();const _="serviceWorker"in navigator?yield navigator.serviceWorker.getRegistrations():[],[w,S]=yield m.transaction("rw",m.$syncState,()=>X(this,void 0,void 0,function*(){var e,t;const{options:n,schema:r}=m.cloud,[o,i,a]=yield Promise.all([m.getOptions(),m.getSchema(),m.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 m.$syncState.put(e,"options")}}else m.cloud.options=o||null;if((null===(e=m.cloud.options)||void 0===e?void 0:e.tryUseServiceWorker)&&"serviceWorker"in navigator&&_.length>0&&!an?m.cloud.usingServiceWorker=!0:((null===(t=m.cloud.options)||void 0===t?void 0:t.tryUseServiceWorker)&&m.cloud.isServiceWorkerDB,m.cloud.usingServiceWorker=!1),zn(r,m.cloud.options),zn(i,m.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 m.$syncState.put(e,"schema"),Object.assign(r,e)}}else m.cloud.schema=i||null;return[null==a?void 0:a.initiallySynced,null==a?void 0:a.realms]}));if(w&&m.setInitiallySynced(!0),function(t){var n,r;for(const o of t.tables)if(null===(r=null===(n=t.cloud.schema)||void 0===n?void 0:n[o.name])||void 0===r?void 0:r.markedForSync){if(o.schema.primKey.auto)throw new e.SchemaError(`Table ${o.name} is both autoIncremented and synced. Use db.cloud.configure({unsyncedTables: [${JSON.stringify(o.name)}]}) to blacklist it from sync`);if(!o.schema.primKey.keyPath)throw new e.SchemaError(`Table ${o.name} cannot be both synced and outbound. Use db.cloud.configure({unsyncedTables: [${JSON.stringify(o.name)}]}) to blacklist it from sync`)}}(m),c(),!m.cloud.isServiceWorkerDB){i.push(o(()=>m.getCurrentUser()).subscribe(r)),i.push(o(()=>m.getPersistedSyncState()).subscribe(m.cloud.persistedSyncState)),yield b(U([r.pipe(q(1),H(1)),m.cloud.persistedSyncState.pipe(q(1),H(1))]));const e=wo(m);G.on.new.subscribe(e),m.dx.once("close",()=>{G.on.new.unsubscribe(e)})}let O=!1;const E=yield m.getCurrentUser(),j=null===(d=m.cloud.options)||void 0===d?void 0:d.requireAuth;j&&(m.cloud.isServiceWorkerDB?yield b(r.pipe(R(e=>!!e.isLoggedIn),H(1))):"object"==typeof j?(!E.isLoggedIn||j.userId&&E.userId!==j.userId||j.email&&E.email!==j.email)&&(O=yield We(m,j)):E.isLoggedIn||(O=yield We(m))),!E.isLoggedIn||S&&S.includes(E.userId)||(O=!0),a&&a.stop(),a=null,c();const T=(null===(p=m.cloud.options)||void 0===p?void 0:p.databaseUrl)&&(!w||O);T&&(yield function(e,t,n){return X(this,void 0,void 0,function*(){yield In(e,qt,()=>Jt(e,t,n,{isInitialSync:!0}))})}(m,m.cloud.options,m.cloud.schema),m.setInitiallySynced(!0)),c(),m.cloud.usingServiceWorker&&(null===(f=m.cloud.options)||void 0===f?void 0:f.databaseUrl)?(T||pe(m,"push").catch(()=>{}),function(e){return X(this,void 0,void 0,function*(){var t;try{const{periodicSync:n}=yield navigator.serviceWorker.ready;if(n)try{yield n.register(`dexie-cloud:${e.name}`,null===(t=e.cloud.options)||void 0===t?void 0:t.periodicSync)}catch(e){}}catch(e){}})}(m).catch(()=>{})):(null===(y=m.cloud.options)||void 0===y?void 0:y.databaseUrl)&&m.cloud.schema&&!m.cloud.isServiceWorkerDB&&(a=Kn(m,m.cloud.options,m.cloud.schema),a.start(),T||fe(m,"push")),c(),m.cloud.isServiceWorkerDB||i.push(I(self,"online").subscribe(()=>{m.syncStateChangedEvent.next({phase:"not-in-sync"}),kn(m)||fe(m,"push")}),I(self,"offline").subscribe(()=>{m.syncStateChangedEvent.next({phase:"offline"})})),!(null===(h=m.cloud.options)||void 0===h?void 0:h.databaseUrl)||(null===(v=m.cloud.options)||void 0===v?void 0:v.disableWebSocket)||ln||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=>X(this,void 0,void 0,function*(){return{type:"ready",rev:e.serverRevision,realmSetHash:yield qe(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])=>On.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=>X(this,[e],void 0,function*([e,t]){return[e,yield qe(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 Dn(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(()=>X(this,void 0,void 0,function*(){const t=yield e.getCurrentUser(),n=yield Ie(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 Bn?P(()=>n):g(Mn()).pipe(N(()=>t())))))}().subscribe({next:t=>{t&&e.messageConsumer.enqueue(t)},error:e=>{},complete:()=>{}})}(m))})}(t)}catch(e){}}),!0);let l=!1;function c(){if(l)throw new e.DatabaseClosedError}t.once("close",()=>{i.forEach(e=>e.unsubscribe()),i.splice(0,i.length),l=!0,a&&a.stop(),a=null,r.next(Ee)});const u=new S;var d;t.cloud={version:"4.3.0",options:Object.assign({},Uo),schema:null,get currentUserId(){return r.value.userId||Ee.userId},currentUser:r,syncState:new k({phase:"initial",status:"not-started"}),events:{syncComplete:u},persistedSyncState:new k(void 0),userInteraction:new k(void 0),webSocketStatus:new k("not-started"),login(e){return X(this,void 0,void 0,function*(){const n=tn(t);yield n.cloud.sync(),yield We(n,e)})},invites:_o(t),roles:ho(t),configure(e){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)}`,tn(t).reconfigure()),zn(t.cloud.schema,t.cloud.options)},logout(){return X(this,arguments,void 0,function*({force:e}={}){e?yield Pe(tn(t),{deleteUnsyncedData:!0}):yield Te(tn(t))})},sync(){return X(this,arguments,void 0,function*({wait:e,purpose:n}={wait:!0,purpose:"push"}){var r;void 0===e&&(e=!0);const i=tn(t);if("ok"!==((null===(r=i.cloud.currentUser.value.license)||void 0===r?void 0:r.status)||"ok")&&(yield Se(i)),"pull"===n){const t=i.cloud.persistedSyncState.value;if(fe(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 Wn(i)){const t=i.cloud.persistedSyncState.value;fe(i,n),e&&(yield b(g(o(()=>X(this,void 0,void 0,function*(){const e=yield Wn(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=bo(e),s=t=>{const i=t[o||e.cloud.currentUserId];return i?new go(i.permissions,n,void 0===o||o===e.cloud.currentUserId||r===e.cloud.currentUserId):new go({},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=>xn(e,t)),t.Table.prototype.newId=function({colocateWith:e}={}){const n=e&&e.substr(e.length-3);return vn(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(Sn({currentUserObservable:t.cloud.currentUser,db:tn(t)})),t.use((d=tn(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:Ee.userId;if((null===(s=null===(i=d.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(mn(tn(t)))}Ao.version="4.3.0",e.Cloud=Ao;export{Ao as default,Po as defineYDocTrigger,Ao as dexieCloud,So as getTiedObjectId,ko as getTiedRealmId,ro 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 L,startWith as D}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 Le(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 Le(e,{deleteUnsyncedData:!0})}})}function Le(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 De 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){"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 We(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 Fe(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 function(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}})}(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 Fe(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 De(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 De(o,e)}return yield o.json()}throw new Error(`Unexpected response from ${l}/token`)})}}function Fe(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.");Me({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 He(e,...t){globalThis.console[e](...t)}function Ke(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||We(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&&(He("debug","Login context property names:",Object.keys(t)),He("debug","Login context property names:",Object.keys(t)),He("debug","Login context:",t),He("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 ze={},Ve="undefined"!=typeof self&&self.document&&"undefined"!=typeof navigator&&navigator.serviceWorker;Ve&&Ve.ready.then(e=>ze.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 qe{constructor(e){this.name=e}subscribe(e){if(!Ve)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 Ve.addEventListener("message",t),()=>Ve.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})):ze.registration&&(null===(t=ze.registration.active)||void 0===t||t.postMessage({type:`sw-broadcast-${this.name}`,message:e}))}}const Je=globalThis["lbc-events"]||(globalThis["lbc-events"]=new Map);class Ge extends w{constructor(e){const t="undefined"==typeof BroadcastChannel?new qe(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){Je.has(e)?Je.get(e).push(t):Je.set(e,[t])}(`lbc-${e}`,r);try{t instanceof qe?i=t.subscribe(e=>n.next(e)):t.addEventListener("message",o)}catch(e){}return()=>{!function(e,t){const n=Je.get(e);if(n){const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}(`lbc-${e}`,r),t instanceof qe?i():t.removeEventListener("message",o)}}),this.name=e,this.bc=t}next(e){this.bc.postMessage(e);!function(e){const t=Je.get(e.type);t&&t.forEach(t=>{try{t(e)}catch(e){}})}(new CustomEvent(`lbc-${this.name}`,{detail:e}))}}function Ye(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 Ze(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 Xe(e){return`$${e}_mutations`}function Qe(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 et=[].concat;function tt(e){return et.apply([],e)}function nt(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=Qe(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=tt(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 rt(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:ot}={};const it={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 st(...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 it;let i=n.get(r);if(void 0!==i)return i;const s=(o=e,ot.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:it),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 at={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 lt={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 ct={bigint:{replace:e=>({$t:"bigint",v:""+e}),revive:e=>BigInt(e.v)}};var ut={Date:{replace:e=>({$t:"Date",v:isNaN(e.getTime())?"NaN":e.toISOString()}),revive:({v:e})=>new Date("NaN"===e?NaN:Date.parse(e))}},dt={Set:{replace:e=>({$t:"Set",v:Array.from(e.entries())}),revive:({v:e})=>new Set(e)}},ft={Map:{replace:e=>({$t:"Map",v:Array.from(e.entries())}),revive:({v:e})=>new Map(e)}};const pt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0;var yt=["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=pt[t];return o&&new o(r.ArrayBuffer.revive({v:e},n,r))}}}),{});function ht(e){return function(e){for(var t="",n=0,r=e.length;n<r;n++)t+=bt[e[n]];return t}(me(e))}function vt(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+=mt[e[n]];return t}(e))}const mt={"-":"=",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:"+","|":"/"},bt={};for(const e of Object.keys(mt))bt[mt[e]]=e;var gt={ArrayBuffer:{replace:e=>({$t:"ArrayBuffer",v:ht(e)}),revive:({v:e})=>{const t=vt(e);return t.buffer.byteLength===t.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}}};class _t{constructor(e,t){this.buf=e,this.type=t}}function wt(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 kt(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;++n)t[n]=e.charCodeAt(n);return t.buffer}var St={Blob:{test:(e,t)=>"Blob"===t||e instanceof _t,replace:e=>({$t:"Blob",v:me(e instanceof _t?e.buf:kt(wt(e))),type:e.type}),revive:({type:e,v:t})=>{const n=ve(t);return void 0!==typeof Blob?new Blob([n]):new _t(n.buffer,e)}}};const xt={...lt,...ct,...ut,...dt,...ft,...yt,...gt,...St};function It(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 Ct={undefined:{replace:()=>({$t:"undefined"}),revive:()=>{}}},Ot={File:{test:(e,t)=>"File"===t,replace:e=>({$t:"File",v:me(kt(wt(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 Et="function"==typeof BigInt&&"bigint"==typeof BigInt(0);class jt{toString(){return this.v}constructor(e){this.v=e}}const Tt=Et?{}:{bigint:{test:e=>e instanceof jt,replace:e=>Object.assign({$t:"bigint"},e),revive:({v:e})=>new jt(e)}},Pt=Object.assign(Object.assign(Object.assign(Object.assign({},Ct),Tt),Ot),{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)}}}),Ut=st(xt,Pt),At=function(...e){const t=st(xt,at,...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 It(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 It(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)}}}(Pt);function $t(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 Dt=new WeakMap;function Rt(e){return Z(this,void 0,void 0,function*(){var t,n;const r=(null!==(n=null===(t=Dt.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 Nt(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:$t(o.dx.core.schema,l,e),y:t,dxcv:o.cloud.version};o.syncStateChangedEvent.next({phase:"pushing"});const p=Ut.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));Dt.set(e,new Date(Date.now()+1e3*t))}else Dt.delete(e)}}(o,y),!y.ok)throw new De(y);if("application/x-bison"===y.headers.get("content-type"))return At.fromBinary(yield y.blob());{const e=yield y.text();return Ut.parse(e)}})}function Bt(t){if(null==t?void 0:t.cancelled)throw new e.AbortError("Operation was cancelled")}let Mt=!1;function Wt(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 Ft(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 Ht(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 Kt(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 Ht(t,r,n.changeSpecs);break;case"delete":yield t.bulkDelete(r)}}}})}"undefined"!=typeof self&&"undefined"!=typeof navigator&&(Mt=navigator.onLine,self.addEventListener("online",()=>Mt=!0),self.addEventListener("offline",()=>Mt=!1));const zt="dexie-cloud-syncer";function Vt(e,t){return e.where("i").between(t,1/0,!0).toArray()}function qt(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 Jt(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=qt(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=qt(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(zt);yield t.table(e.name).put(Object.assign(Object.assign({},n||{i:zt}),{unsentFrom:Math.max((null==n?void 0:n.unsentFrom)||1,a.i+1)}))})));break}case"u-reject":{const e=qt(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 Gt(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:Ut.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=qt(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 Yt="currentSyncWorker";function Zt(e,t,n,r){return Xt(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):Mt&&(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 Zt(e,t,n,Object.assign(Object.assign({},r),{retryImmediatelyOnFetchError:!1}))):(yield e.$syncState.update("syncState",{timestamp:new Date,error:""+o}),e.syncStateChangedEvent.next({phase:Mt?"error":"offline",error:new Error(""+(null==o?void 0:o.message)||o)}),Promise.reject(o))}))}function Xt(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?Ze(e):[],d=u.map(t=>e.table(Xe(t.name))),f=yield e.getPersistedSyncState(),p=c.isLoggedIn,y=p?function(e,t){const n=(null==t?void 0:t.syncedTables)||[];return Ze(e).filter(e=>!n.includes(e.name))}(e,f):[];Bt(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)})),Bt(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 nt(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(zt),a=(null==s?void 0:s.unsentFrom)||1,l=(null==s?void 0:s.receivedUntil)||0,c=Math.min(a,l+1),u=yield Vt(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(Bt(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-${rt(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 Bt(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=Ft(v,null==m?void 0:m.latestRevisions),S=(null==m?void 0:m.clientIdentity)||oe(16);Bt(o);const x=yield Nt(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 nt(d,e,{since:k});for(const t of d){const n=Qe(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()])}Ft(r,k),yield Wt(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=Ze(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=Qt(x.changes,r);if(yield Kt(s,e),x.yMessages){const{receivedUntils:t,resyncNeeded:n,yServerRevision:r}=yield Jt(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(zt);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:zt,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 Rt(e),yield Xt(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 Gt(e,l,C)}catch(e){}return e.syncCompleteEvent.next(),!1})}function Qt(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 en(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(Ye(o)))!==c.realmSetHash)return void pe(t,"pull");let s=[];if(i.isLoggedIn){const e=Ze(t).map(e=>t.table(Xe(e.name)));s=yield nt(e,t)}if(c.changes.length>0){const e=Qt(c.changes,s);yield Kt(e,t)}o.latestRevisions=Ft(s,o.latestRevisions),o.serverRevision=c.newRev,yield Wt(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 tn=new WeakMap,nn={members:"@id, [userId+realmId], [email+realmId], realmId",roles:"[realmId+name]",realms:"@realmId",$jobs:"",$syncState:"",$baseRevs:"[tableName+clientRev]",$logins:"claims.sub, lastLogin"};let rn=0;function on(e){"vip"in e&&(e=e.vip);let t=tn.get(e.cloud);if(!t){const n=new S;let r=new Ge(`syncstatechanged-${e.name}`),o=new Ge(`synccomplete-${e.name}`);n.id=++rn;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=sn(n.schema.primKey.keyPath));return e}),getOptions:()=>t.$syncState.get("options"),setInitiallySynced(e){i=e},reconfigure(){r=new Ge(`syncstatechanged-${e.name}`),o=new Ge(`synccomplete-${e.name}`)}};Object.assign(t,s),t.messageConsumer=en(t),t.messageProducer=new S,tn.set(e.cloud,t)}return t}function sn(e){return"string"==typeof e?e:e?"["+[].join.call(e,"+")+"]":""}const an="undefined"!=typeof InstallTrigger,ln="undefined"!=typeof navigator&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\/|Edge\//.test(navigator.userAgent),cn=ln?[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]:NaN,un=ln&&cn<=605||an,dn="undefined"!=typeof self&&"clients"in self&&!self.document;const{toString:fn}={};function pn(e){return fn.call(e).slice(8,-1)}function yn(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 hn(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 vn=/b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|x|y|z/i;function mn(e){return e>="A"&&e<="Z"}let bn=0;function gn(e,t){const n=new Uint8Array(18),r=new Uint8Array(n.buffer,0,6),o=Date.now();bn>=o?++bn:bn=o,r[0]=bn/1099511627776,r[1]=bn/4294967296,r[2]=bn/16777216,r[3]=bn/65536,r[4]=bn/256,r[5]=bn;const i=new Uint8Array(n.buffer,6);crypto.getRandomValues(i);return e+ht(new Uint8Array(n.buffer))+(t||"")}function _n(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=yn(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=yn(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]=gn(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){yn(o.schema.primaryKey,n).forEach((t,n)=>{if(!se(t)){const n=Array.isArray(t)?t.map(pn).join(","):pn(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 wn=0;function kn(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 Sn(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 xn=new k(new Set);function In(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 Cn({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=>Xe(e));i=n.transaction([...r,...e],o)}else i=n.transaction(r,o);if("readwrite"===o){i.txid=rt(16),i.opCount=0,i.currentUser=e.value,xn.value.add(i),xn.next(xn.value);const n=()=>{i.removeEventListener("complete",r),i.removeEventListener("error",n),i.removeEventListener("abort",n),xn.value.delete(i),xn.next(xn.value)},r=()=>{i.mutationsAdded&&!In(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"+ ++wn;return Object.assign(Object.assign({},e),{count:kn(e.count,t),get:kn(e.get,t),getMany:kn(e.getMany,t),openCursor:kn(e.openCursor,t),query:kn(e.query,t),mutate:Sn(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 On(e,t){return function(n,r){var o;const i=Object.assign(Object.assign({},nn),n);Object.keys(nn).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=nn[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(nn[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)(vn.test(e[t])||mn(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=hn(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 En(e,t,n){return"undefined"!=typeof navigator&&navigator.locks?navigator.locks.request(e.name+"|"+t,n):n()}const jn=new k(!0),Tn=new k(!0);jn.pipe(N(e=>e?x(!0):x(!1).pipe(B(2e4))),M()).subscribe(Tn);const Pn="undefined"!=typeof document?I(document,"visibilitychange"):x({}),Un=Pn.pipe(R(()=>"hidden"===document.visibilityState)),An=Pn.pipe(R(()=>"visible"===document.visibilityState)),$n="undefined"!=typeof window?C(An,I(window,"mousedown"),I(window,"mousemove"),I(window,"keydown"),I(window,"wheel"),I(window,"touchmove")):x({});"undefined"!=typeof document&&C(x(!0),Un,$n).pipe(W(()=>"visible"===document.visibilityState),F(e=>{jn.value!==e&&jn.next(e)}),N(e=>e?x(0).pipe(B(16e4),F(()=>jn.next(!1))):x(0))).subscribe(()=>{});class Ln extends Error{constructor(){super(...arguments),this.name="TokenExpiredError"}}const Dn=new WeakMap,Rn=new WeakMap;function Nn(e){let t=Rn.get(e);return t||(t=new S,Rn.set(e,t)),t}class Bn extends w{constructor(e,t,n,r,o,i,s,a){super(l=>new Wn(e,t,n,r,o,a,l,i,s))}}let Mn=0;class Wn extends T{constructor(e,t,n,r,o,i,s,a,l){super(()=>this.teardown()),this.id=++Mn,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?Ut.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=>Dn.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&&Nn(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?Jt([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=qt(this.db,t.table,t.prop);if(e){const t=r[e.name];t&&(yield e.update(zt,{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(Ut.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&&!In(this.db)&&this.subscriptions.add(function(e){const t=tt(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(zt)).pipe(O(e=>{let r=(null==e?void 0:e.unsentFrom)||1;return g(o(()=>Z(this,void 0,void 0,function*(){return(yield Vt(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 Fn extends Error{constructor(e){super("expired"===e?"License expired":"deactivated"===e?"User deactivated":"Invalid license"),this.name="InvalidLicenseError",e&&(this.license=e)}}function Hn(e){return Z(this,void 0,void 0,function*(){var e;yield(e=3e3,new Promise(t=>setTimeout(t,e))),yield b($n)})}function Kn(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 Zt(e,e.cloud.options,e.cloud.schema,{justCheckIfNeeded:!0}))})}const zn=new WeakMap;function Vn(e,t,n,r){const o=zn.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 Vn(e,t,n,r)})}}const i=function(){return Z(this,void 0,void 0,function*(){try{yield Rt(e),yield En(e,Yt,()=>Zt(e,t,n,r)),zn.delete(e)}catch(t){throw zn.delete(e),t}})}();return zn.set(e,{promise:i,pull:"push"!==(null==r?void 0:r.purpose)}),i}function qn(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(),Vn(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 Jn(e,t){if(e&&t&&t.unsyncedTables)for(const n of t.unsyncedTables)e[n]&&(e[n].markedForSync=!1)}var Gn,Yn,Zn,Xn,Qn,er,tr,nr,rr,or,ir,sr={},ar=[],lr=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,cr=Array.isArray;function ur(e,t){for(var n in t)e[n]=t[n];return e}function dr(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function fr(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?Gn.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 pr(e,s,r,o,null)}function pr(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?++Zn:o,__i:-1,__u:0};return null==o&&null!=Yn.vnode&&Yn.vnode(i),i}function yr(e){return e.children}function hr(e,t){this.props=e,this.context=t}function vr(e,t){if(null==t)return e.__?vr(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?vr(e):null}function mr(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 mr(e)}}function br(e){(!e.__d&&(e.__d=!0)&&Xn.push(e)&&!gr.__r++||Qn!=Yn.debounceRendering)&&((Qn=Yn.debounceRendering)||er)(gr)}function gr(){for(var e,t,n,r,o,i,s,a=1;Xn.length;)Xn.length>a&&Xn.sort(tr),e=Xn.shift(),a=Xn.length,e.__d&&(n=void 0,r=void 0,o=(r=(t=e).__v).__e,i=[],s=[],t.__P&&((n=ur({},r)).__v=r.__v+1,Yn.vnode&&Yn.vnode(n),Cr(t.__P,n,r,t.__n,t.__P.namespaceURI,32&r.__u?[o]:null,i,null==o?vr(r):o,!!(32&r.__u),s),n.__v=r.__v,n.__.__k[n.__i]=n,Er(i,n,s),r.__e=r.__=null,n.__e!=o&&mr(n)));gr.__r=0}function _r(e,t,n,r,o,i,s,a,l,c,u){var d,f,p,y,h,v,m,b=r&&r.__k||ar,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]=pr(null,s,null,null,null):cr(s)?s=e.__k[i]=pr(yr,{children:s},null,null,null):null==s.constructor&&s.__b>0?s=e.__k[i]=pr(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=kr(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=vr(a)),Ur(a,a));return r}(n,t,b,l,g),d=0;d<g;d++)null!=(p=n.__k[d])&&(f=-1==p.__i?sr:b[p.__i]||sr,p.__i=d,v=Cr(e,p,f,o,i,s,a,l,c,u),y=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&Pr(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=wr(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 wr(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=wr(o[i],t,n,r));return t}e.__e!=t&&(r&&(t&&e.type&&!t.parentNode&&(t=vr(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do{t=t&&t.nextSibling}while(null!=t&&8==t.nodeType);return t}function kr(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 Sr(e,t,n){"-"==t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||lr.test(t)?n:n+"px"}function xr(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||Sr(e.style,t,"");if(n)for(t in n)r&&n[t]==r[t]||Sr(e.style,t,n[t])}else if("o"==t[0]&&"n"==t[1])i=t!=(t=t.replace(nr,"$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=rr,e.addEventListener(t,i?ir:or,i)):e.removeEventListener(t,i?ir:or,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 Ir(e){return function(t){if(this.l){var n=this.l[t.type+e];if(null==t.t)t.t=rr++;else if(t.t<n.u)return;return n(Yn.event?Yn.event(t):t)}}}function Cr(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=Yn.__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 hr(m,_),d.constructor=O,d.render=Ar),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=ur({},d.__s)),ur(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=Yn.__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=ur(ur({},r),d.getChildContext())),b&&!f&&null!=d.getSnapshotBeforeUpdate&&(h=d.getSnapshotBeforeUpdate(p,y)),I=u,null!=u&&u.type===yr&&null==u.key&&(I=jr(u.props.children)),a=_r(e,cr(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--;)dr(i[C]);Or(t)}else t.__e=n.__e,t.__k=n.__k,e.then||Or(t);Yn.__e(e,t,n)}else null==i&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):a=t.__e=Tr(n.__e,t,n,r,o,i,s,l,c);return(u=Yn.diffed)&&u(t),128&t.__u?void 0:a}function Or(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(Or)}function Er(e,t,n){for(var r=0;r<n.length;r++)Pr(n[r],n[++r],n[++r]);Yn.__c&&Yn.__c(t,e),e.some(function(t){try{e=t.__h,t.__h=[],e.some(function(e){e.call(t)})}catch(e){Yn.__e(e,t.__v)}})}function jr(e){return"object"!=typeof e||null==e||e.__b&&e.__b>0?e:cr(e)?e.map(jr):ur({},e)}function Tr(e,t,n,r,o,i,s,a,l){var c,u,d,f,p,y,h,v=n.props||sr,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&&(Yn.__m&&Yn.__m(t,i),a=!1),i=null}if(null==b)v===m||a&&e.data==m||(e.data=m);else{if(i=i&&Gn.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;xr(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||xr(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=""),_r("template"==t.type?e.content:e,cr(f)?f:[f],t,n,r,"foreignObject"==b?"http://www.w3.org/1999/xhtml":o,i,s,i?i[0]:n.__k&&vr(n,0),a,l),null!=i)for(c=i.length;c--;)dr(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])&&xr(e,c,y,v[c],o),c="checked",null!=h&&h!=e[c]&&xr(e,c,h,v[c],o))}return e}function Pr(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){Yn.__e(e,n)}}function Ur(e,t,n){var r,o;if(Yn.unmount&&Yn.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||Pr(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){Yn.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&Ur(r[o],t,n||"function"!=typeof e.type);n||dr(e.__e),e.__c=e.__=e.__e=void 0}function Ar(e,t,n){return this.constructor(e,n)}function $r(e,t,n){var r,o,i;t==document&&(t=document.documentElement),Yn.__&&Yn.__(e,t),r=!1?null:t.__k,o=[],i=[],Cr(t,e=t.__k=fr(yr,null,[e]),r||sr,sr,t.namespaceURI,r?null:t.firstChild?Gn.call(t.childNodes):null,o,r?r.__e:t.firstChild,false,i),Er(o,e,i)}Gn=ar.slice,Yn={__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}},Zn=0,hr.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=ur({},this.state),"function"==typeof e&&(e=e(ur({},n),this.props)),e&&ur(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),br(this))},hr.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),br(this))},hr.prototype.render=yr,Xn=[],er="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,tr=function(e,t){return e.__v.__b-t.__v.__b},gr.__r=0,nr=/(PointerCapture)$|Capture$/i,rr=0,or=Ir(!1),ir=Ir(!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 Dr({children:e,className:t}){return fr("div",{className:`dexie-dialog ${t||""}`},fr("div",{style:Lr.Darken}),fr("div",{style:Lr.DialogOuter},fr("div",{style:Lr.DialogInner},e)))}var Rr,Nr,Br,Mr,Wr=0,Fr=[],Hr=Yn,Kr=Hr.__b,zr=Hr.__r,Vr=Hr.diffed,qr=Hr.__c,Jr=Hr.unmount,Gr=Hr.__;function Yr(e,t){Hr.__h&&Hr.__h(Nr,e,Wr||t),Wr=0;var n=Nr.__H||(Nr.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function Zr(e){return Wr=1,function(e,t){var n=Yr(Rr++,2);if(n.t=e,!n.__c&&(n.__=[io(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=Nr,!Nr.__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};Nr.__f=!0;var o=Nr.shouldComponentUpdate,i=Nr.componentWillUpdate;Nr.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)},Nr.shouldComponentUpdate=r}return n.__N||n.__}(io,e)}function Xr(e){return Wr=5,function(e,t){var n=Yr(Rr++,7);return oo(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}(function(){return{current:e}},[])}function Qr(){for(var e;e=Fr.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(no),e.__H.__h.forEach(ro),e.__H.__h=[]}catch(t){e.__H.__h=[],Hr.__e(t,e.__v)}}Hr.__b=function(e){Nr=null,Kr&&Kr(e)},Hr.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Gr&&Gr(e,t)},Hr.__r=function(e){zr&&zr(e),Rr=0;var t=(Nr=e.__c).__H;t&&(Br===Nr?(t.__h=[],Nr.__h=[],t.__.forEach(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.forEach(no),t.__h.forEach(ro),t.__h=[],Rr=0)),Br=Nr},Hr.diffed=function(e){Vr&&Vr(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==Fr.push(t)&&Mr===Hr.requestAnimationFrame||((Mr=Hr.requestAnimationFrame)||to)(Qr)),t.__H.__.forEach(function(e){e.u&&(e.__H=e.u),e.u=void 0})),Br=Nr=null},Hr.__c=function(e,t){t.some(function(e){try{e.__h.forEach(no),e.__h=e.__h.filter(function(e){return!e.__||ro(e)})}catch(n){t.some(function(e){e.__h&&(e.__h=[])}),t=[],Hr.__e(n,e.__v)}}),qr&&qr(e,t)},Hr.unmount=function(e){Jr&&Jr(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(e){try{no(e)}catch(e){t=e}}),n.__H=void 0,t&&Hr.__e(t,n.__v))};var eo="function"==typeof requestAnimationFrame;function to(e){var t,n=function(){clearTimeout(r),eo&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);eo&&(t=requestAnimationFrame(n))}function no(e){var t=Nr,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),Nr=t}function ro(e){var t=Nr;e.__c=e.__(),Nr=t}function oo(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function io(e,t){return"function"==typeof t?t(e):t}function so({message:e,messageCode:t,messageParams:n}){return e.replace(/\{\w+\}/gi,e=>n[e.substring(1,e.length-1)])}function ao({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 fr("button",{type:"button",style:a,onClick:t,class:"dxc-option-btn"+(i?` dxc-option-${i}`:""),"aria-label":n},c?fr("span",{style:Lr.ProviderButtonIcon,"aria-hidden":"true",dangerouslySetInnerHTML:{__html:c}}):r?fr("img",{src:r,alt:"",style:Lr.ProviderButtonIcon,"aria-hidden":"true"}):null,fr("span",{style:Lr.ProviderButtonText},n))}function lo(){return fr("div",{style:Lr.Divider},fr("div",{style:Lr.DividerLine}),fr("span",{style:Lr.DividerText},"or"),fr("div",{style:Lr.DividerLine}))}function co({title:e,alerts:t,fields:n,options:r,submitLabel:o,cancelLabel:i,onCancel:s,onSubmit:a}){const[l,c]=Zr({}),u=Xr(null);!function(e,t){var n=Yr(Rr++,4);!Hr.__s&&oo(n.__H,t)&&(n.__=e,n.u=t,Nr.__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 fr(Dr,{className:"dxc-login-dlg"},fr(yr,null,fr("h3",{style:Lr.WindowHeader},e),t.map((e,t)=>fr("p",{key:t,style:Lr.Alert[e.type]},so(e))),p&&fr("div",{class:"dxc-options"},h?Array.from(y.entries()).map(([e,t],n)=>fr(yr,{key:e},n>0&&fr(lo,null),t.map(e=>fr(ao,{key:`${e.name}-${e.value}`,option:e,onClick:()=>v(e)})))):r.map(e=>fr(ao,{key:`${e.name}-${e.value}`,option:e,onClick:()=>v(e)}))),p&&f&&fr(lo,null),f&&fr("form",{onSubmit:e=>{e.preventDefault(),a(l)}},d.map(([e,{type:t,label:n,placeholder:r}],o)=>fr("label",{style:Lr.Label,key:o},n?`${n}: `:"",fr("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)}}))))),fr("div",{style:Lr.ButtonsDiv},fr(yr,null,o&&(f||!p&&!f)&&fr("button",{type:"submit",style:Lr.PrimaryButton,onClick:()=>a(l)},o),i&&fr("button",{style:Lr.Button,onClick:s},i))))}class uo extends hr{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?fr(co,Object.assign({},t)):null}}function fo(e){const t=new WeakMap;return n=>{let r=t.get(n);return r||(r=e(n),t.set(n,r)),r}}const po=fo(e=>new k(Ue));function yo(e,t){let n=t,r=g(e).pipe(A(e=>n=e),$({resetOnRefCountZero:()=>L(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 ho=fo(e=>yo(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})),{})),vo=fo(e=>yo(po(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 mo(...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 bo=fo(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}(yo(U([vo(e._novip),ho(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=tt(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:"*"}:mo(...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 go{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 _o=fo(e=>{const t=po(e._novip).pipe(N(t=>o(()=>e.members.where({email:t.email||""}).toArray()))),n=bo(e._novip),r=vo(e._novip);return yo(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 wo(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=Nn(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&&!In(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(D(null))]).subscribe(([n])=>{if(r.destroyed)return;t="connected"===n;const o=e.cloud.currentUser.value;"connected"===n&&o.isLoggedIn&&!In(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(zt),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),Dn.set(o,s),s)})}}function ko(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 So(){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 xo(e){return"rlm~"+e}function Io(e){return e.startsWith("rlm~")?e.substr(4):null}const Co={},Oo=new WeakMap,Eo=To("tx"),jo=To("unload");function To(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 Po(){Eo.run()}function Uo(){jo.run()}function Ao(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}`);Co[s]={trigger:n,parentTable:e.name,prop:t};const a=e.db._novip;let l=Oo.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=>Co[e])?(o.addEventListener("complete",Po),o):o},table:n=>{const o=t.table(n),i=Co[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)?jo:Eo).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)Eo.enqueue(e,a,t.from,l,s)})}return o.mutate(t)}})}})}))(a),Oo.set(a,l)),a.use(l),G.on("beforeunload",Uo)}const $o={nameSuffix:!0};function Lo(t){const n=t.name,r=po(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=on(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),$r(fr(uo,{db:e.vip}),n)):addEventListener("DOMContentLoaded",()=>{t||(document.body.appendChild(n),$r(fr(uo,{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 jn.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"})),po(e.dx._novip),Tn]).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:Mt?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&&!un?w.cloud.usingServiceWorker=!0:((null===(t=w.cloud.options)||void 0===t?void 0:t.tryUseServiceWorker)&&w.cloud.isServiceWorkerDB,w.cloud.usingServiceWorker=!1),Jn(r,w.cloud.options),Jn(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=wo(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 Ke(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 Ke(w,A)):T.isLoggedIn||(j=yield Ke(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 En(e,Yt,()=>Zt(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=qn(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"}),In(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)||dn||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 Ye(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])=>Tn.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 Ye(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 Bn(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 Fn?P(()=>n):g(Hn()).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.3",options:Object.assign({},$o),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=on(t);yield n.cloud.sync(),yield Ke(n,e)})},invites:_o(t),roles:ho(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)}`,on(t).reconfigure()),Jn(t.cloud.schema,t.cloud.options),"undefined"!=typeof window&&window.location)try{const e=ko();e&&(So(),a={code:e.code,provider:e.provider})}catch(e){So(),e instanceof Ne&&(l=e)}},logout(){return Z(this,arguments,void 0,function*({force:e}={}){e?yield Le(on(t),{deleteUnsyncedData:!0}):yield $e(on(t))})},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=on(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 Kn(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 Kn(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=bo(e),s=t=>{const i=t[o||e.cloud.currentUserId];return i?new go(i.permissions,n,void 0===o||o===e.cloud.currentUserId||r===e.cloud.currentUserId):new go({},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=>On(e,t)),t.Table.prototype.newId=function({colocateWith:e}={}){const n=e&&e.substr(e.length-3);return gn(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(Cn({currentUserObservable:t.cloud.currentUser,db:on(t)})),t.use((p=on(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(_n(on(t)))}Lo.version="4.3.3",e.Cloud=Lo;export{Lo as default,Ao as defineYDocTrigger,Lo as dexieCloud,Io as getTiedObjectId,xo as getTiedRealmId,so as resolveText};
|
|
2
2
|
//# sourceMappingURL=dexie-cloud-addon.min.js.map
|