dexie-cloud-addon 4.3.6 → 4.3.8
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/dist/modern/DexieCloudAPI.d.ts +2 -0
- package/dist/modern/db/entities/UserLogin.d.ts +1 -0
- package/dist/modern/dexie-cloud-addon.js +29 -10
- 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/service-worker.js +29 -10
- 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/umd/dexie-cloud-addon.js +30 -11
- 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 +30 -11
- 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/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 O,switchMap as C,tap as E,mergeMap as j,Subscription as T,throwError as P,combineLatest as U,map as A,share as $,timer as D,startWith as L}from"rxjs";import{filter as R,switchMap as N,delay as B,distinctUntilChanged as M,map as W,tap as F,take as K,catchError as H,debounceTime as V,startWith as z,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 pe(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 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}}const ge=`data:image/svg+xml;base64,${btoa('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="#666666" stroke-width="2"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="M22 6L12 13 2 6"/></svg>')}`;function _e(e){return{name:"provider",value:e.name,displayName:`Continue with ${e.displayName}`,iconUrl:e.iconUrl,styleHint:e.type}}function we(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 ke(e,t,...n){return we(e,{type:"message-alert",title:t,alerts:n,fields:{},submitLabel:"OK",cancelLabel:null})}function Se(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 we(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 xe(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 we(e,{type:"otp",title:"Enter OTP",alerts:r,fields:{otp:{type:"otp",label:"OTP",placeholder:"Paste OTP here"}}});return o})}class Ie 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 Ee(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 Ce(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 Ee(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 we(r,{type:"message-alert",title:"Authentication Alert",fields:{},alerts:e.alerts})),t}catch(t){if(t instanceof Ie||"OAuthRedirectError"===(null==t?void 0:t.name))throw t;if(t instanceof be)throw yield ke(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 ke(r,"Authentication Failed",{type:"error",messageCode:"GENERIC_ERROR",message:n,messageParams:{}}).catch(()=>{})}throw t}})}(n,r,o,i)})}function Ee(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 je=new WeakMap;class Te{constructor(e,t){je.set(this,e),Object.assign(this,t)}static load(e,t){return e.table("$logins").get(t).then(n=>new Te(e,n||{userId:t,claims:{sub:t},lastLogin:new Date(0)}))}save(){return Z(this,void 0,void 0,function*(){je.get(this).table("$logins").put(this)})}}const Pe={userId:"unauthorized",name:"Unauthorized",claims:{sub:"unauthorized"},lastLogin:new Date(0)};try{Object.freeze(Pe),Object.freeze(Pe.claims)}catch(e){}function Ue(e,t){return b(g(e).pipe(_(t)))}function Ae(e){return Z(this,void 0,void 0,function*(){const t=yield $e(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 we(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 $e(e,{deleteUnsyncedData:!0})}})}function $e(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 Ue(e.cloud.currentUser,e=>e.userId===Pe.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 Le={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 Re extends Error{constructor(e,t,n){super(n||Le[e]),this.name="OAuthError",this.code=e,this.provider=t}get userMessage(){return Le[this.code]||this.message}}const Ne={providers:[],otpEnabled:!0};function Be(e){return Z(this,arguments,void 0,function*(e,t=!0){if(!t)return Ne;try{const t=yield fetch(`${e}/auth-providers`,{method:"GET",headers:{Accept:"application/json"},mode:"cors"});return 404===t.status?Ne:t.ok?yield t.json():Ne}catch(e){return Ne}})}function Me(e){if("undefined"==typeof window)throw new Error("OAuth redirect requires a browser environment");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){const t=yield e.text().catch(()=>e.statusText);if(400===e.status||401===e.status)try{const e=JSON.parse(t);if("error"===e.type){if("INVALID_OTP"===e.messageCode)throw new Re("expired_code",void 0,e.message);throw new be(e)}}catch(e){if(e instanceof Re||e instanceof be)throw e}throw new Re("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 Re("provider_error",void 0,`Unexpected response type: ${n.type}`);return n}catch(e){if(e instanceof Re||e instanceof be)throw e;if(e instanceof TypeError)throw new Re("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 Ie(o.provider);if("demo"===(null==o?void 0:o.grant_type)){a={demo_user:yield Se(n,"Enter a demo user email",(null==o?void 0:o.email)||(null==o?void 0:o.userId)),grant_type:"demo",scopes:["ACCESS_DB"],public_key:r}}else if((null==o?void 0:o.otpId)&&o.otp)a={grant_type:"otp",otp_id:o.otpId,otp:o.otp,scopes:["ACCESS_DB"],public_key:r};else if("otp"===(null==o?void 0:o.grant_type)||(null==o?void 0:o.email)){const e=(null==o?void 0:o.email)||(yield Se(n,"Enter email address"));a=/@demo.local$/.test(e)?{demo_user:e,grant_type:"demo",scopes:["ACCESS_DB"],public_key:r}:{email:e,grant_type:"otp",scopes:["ACCESS_DB"]}}else{const i=!1!==(null===(s=t.cloud.options)||void 0===s?void 0:s.socialAuth),c=yield 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=[...n.map(_e)];return r&&s.push({name:"otp",value:"email",displayName:"Continue with email",iconUrl:ge,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 Ie(r.provider)}const u=yield Se(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 ke(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 xe(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 xe(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 location?location.href:void 0)})}function Ke(e,...t){globalThis.console[e](...t)}function He(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 Te(e,{claims:{},lastLogin:new Date(0)});try{yield Ce(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!==Pe.userId&&i.userId!==o&&(yield Ae(e)),yield function(e,t){return Z(this,void 0,void 0,function*(){const n=e.table("$logins");yield e.transaction("rw",n,e=>Z(this,void 0,void 0,function*(){const e=yield n.toArray();yield Promise.all(e.filter(e=>e.userId!==t.userId&&e.isLoggedIn).map(e=>(e.isLoggedIn=!1,n.put(e)))),t.isLoggedIn=!0,t.lastLogin=new Date;try{yield t.save()}catch(e){try{"DataCloneError"===e.name&&(Ke("debug","Login context property names:",Object.keys(t)),Ke("debug","Login context property names:",Object.keys(t)),Ke("debug","Login context:",t),Ke("debug","Login context JSON:",JSON.stringify(t)))}catch(e){}throw e}})),yield Ue(e.cloud.currentUser,e=>e.userId===t.userId)})}(e,i),fe(e,"pull"),i.userId!==o})}const Ve={},ze="undefined"!=typeof self&&self.document&&"undefined"!=typeof navigator&&navigator.serviceWorker;ze&&ze.ready.then(e=>Ve.registration=e),"undefined"!=typeof self&&"clients"in self&&!self.document&&addEventListener("message",e=>{var t,n;(null===(n=null===(t=e.data)||void 0===t?void 0:t.type)||void 0===n?void 0:n.startsWith("sw-broadcast-"))&&[...self.clients.matchAll({includeUncontrolled:!0})].forEach(t=>{var n;return t.id!==(null===(n=e.source)||void 0===n?void 0:n.id)&&t.postMessage(e.data)})});class qe{constructor(e){this.name=e}subscribe(e){if(!ze)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 ze.addEventListener("message",t),()=>ze.removeEventListener("message",t)}postMessage(e){var t;"object"==typeof self.clients?[...self.clients.matchAll({includeUncontrolled:!0})].forEach(t=>t.postMessage({type:`sw-broadcast-${this.name}`,message:e})):Ve.registration&&(null===(t=Ve.registration.active)||void 0===t||t.postMessage({type:`sw-broadcast-${this.name}`,message:e}))}}const 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)}},pt={Map:{replace:e=>({$t:"Map",v:Array.from(e.entries())}),revive:({v:e})=>new Map(e)}};const ft="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=ft[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,...pt,...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 Ot={undefined:{replace:()=>({$t:"undefined"}),revive:()=>{}}},Ct={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({},Ot),Tt),Ct),{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=Dt(i,o));const e=c.muts[r],n=JSON.stringify(t);e.keys[s]=n}else if("#"===t[0]){c===i&&(c=Dt(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 Dt(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 Lt=new WeakMap;function Rt(e){return Z(this,void 0,void 0,function*(){var t,n;const r=(null!==(n=null===(t=Lt.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 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:$t(o.dx.core.schema,l,e),y:t,dxcv:o.cloud.version};o.syncStateChangedEvent.next({phase:"pushing"});const f=Ut.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));Lt.set(e,new Date(Date.now()+1e3*t))}else Lt.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 Kt(t,r,o){return Z(this,void 0,void 0,function*(){const i=yield t.bulkGet(r),s=[],a=[];r.forEach((r,l)=>{const c=i[l];if(c){for(const[i,s]of Object.entries(o[l]))if(i===t.schema.primKey.keyPath){if(0!==n(s,r))throw new Error("Cannot change primary key")}else e.setByKeyPath(c,i,s);s.push(r),a.push(c)}}),yield null==t.schema.primKey.keyPath?t.bulkPut(a,s):t.bulkPut(a)})}function Ht(t,n){return Z(this,void 0,void 0,function*(){for(const{table:r,muts:o}of t){if(!n.dx._allTables[r])continue;const t=n.table(r),{primaryKey:i}=t.core.schema,s=e=>{switch(e[0]){case"[":if(e.endsWith("]"))try{return JSON.parse(e)}catch(e){}return e;case"#":return e.endsWith(":"+n.cloud.currentUserId)?e.substr(0,e.length-n.cloud.currentUserId.length-1):e;default:return e}};for(const n of o){const r=n.keys.map(s);switch(n.type){case"insert":i.outbound?yield t.bulkAdd(n.values,r):(r.forEach((t,r)=>{e.setByKeyPath(n.values[r],i.keyPath,t)}),yield t.bulkAdd(n.values));break;case"upsert":i.outbound?yield t.bulkPut(n.values,r):(r.forEach((t,r)=>{e.setByKeyPath(n.values[r],i.keyPath,t)}),yield t.bulkPut(n.values));break;case"modify":1===r.length?yield t.update(r[0],n.changeSpec):yield t.where(":id").anyOf(r).modify(n.changeSpec);break;case"update":yield Kt(t,r,n.changeSpecs);break;case"delete":yield t.bulkDelete(r)}}}})}"undefined"!=typeof self&&"undefined"!=typeof navigator&&(Mt=navigator.onLine,self.addEventListener("online",()=>Mt=!0),self.addEventListener("offline",()=>Mt=!1));const Vt="dexie-cloud-syncer";function zt(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(Vt);yield t.table(e.name).put(Object.assign(Object.assign({},n||{i:Vt}),{unsentFrom:Math.max((null==n?void 0:n.unsentFrom)||1,a.i+1)}))})));break}case"u-reject":{const e=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=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 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))),p=yield e.getPersistedSyncState(),f=c.isLoggedIn,y=f?function(e,t){const n=(null==t?void 0:t.syncedTables)||[];return Ze(e).filter(e=>!n.includes(e.name))}(e,p):[];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!==Pe.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!==Pe.userId||(e.owner=t.userId)}):yield n.toCollection().modify(e=>{e.realmId&&r.has(e.realmId)||(e.owner&&e.owner!==Pe.userId||(e.owner=t.userId),e.realmId&&e.realmId!==Pe.userId||(e.realmId=t.userId))}))})}(y,c,null==p?void 0:p.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(Vt),a=(null==s?void 0:s.unsentFrom)||1,l=(null==s?void 0:s.receivedUntil)||0,c=Math.min(a,l+1),u=yield zt(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==p?void 0:p.realms)||[],...(null==p?void 0:p.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:O}=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};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=Qt(x.changes,r);if(yield Ht(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(Vt);t?(t.unsentFrom=Math.max(r,t.unsentFrom||1),t.receivedUntil=Math.max(o,t.receivedUntil||0),yield n.table(e).put(t)):yield n.table(e).add({i:Vt,unsentFrom:r,receivedUntil:o})}))}})}(_,t,e),n&&(i.yDownloadedRealms={})}return e.$syncState.put(i,"syncState"),{done:0===r.length,newSyncState:i}}));if(!I)return yield Rt(e),yield Xt(e,t,n,{isInitialSync:r,cancelToken:o});const C=Object.values(n).some(e=>{var t;return null===(t=e.yProps)||void 0===t?void 0:t.length}),E=!!x.yMessages;if(C&&E)try{yield Gt(e,l,O)}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 Ee(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=>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||fe(t,"pull"));if((yield e.waitFor(Ye(o)))!==c.realmSetHash)return void fe(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 Ht(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)||Pe),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:pn}={};function fn(e){return pn.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(fn).join(","):fn(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 On({currentUserObservable:e,db:t}){return{stack:"dbcore",name:"MutationTrackingMiddleware",level:1,create:n=>{const o=new Set(n.schema.tables.map(e=>e.name)),i=n.schema.tables.filter(e=>!/^\$/.test(e.name)),s=new Map;for(const e of i){const t=`$${e.name}_mutations`;o.has(t)&&s.set(e.name,n.table(t))}return Object.assign(Object.assign({},n),{transaction:(r,o)=>{let i;if("readwrite"===o){const e=r.filter(e=>{var n,r;return null===(r=null===(n=t.cloud.schema)||void 0===n?void 0:n[e])||void 0===r?void 0:r.markedForSync}).map(e=>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)&&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"+ ++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: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 Cn(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?O(An,I(window,"mousedown"),I(window,"mousemove"),I(window,"keydown"),I(window,"wheel"),I(window,"touchmove")):x({});"undefined"!=typeof document&&O(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 Dn extends Error{constructor(){super(...arguments),this.name="TokenExpiredError"}}const Ln=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 Dn);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=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=>Ln.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(Vt,{receivedUntil:t}))}}e&&(yield this.db.cloud.sync({purpose:"pull",wait:!0}))})):this.subscriber.next(t)}catch(e){this.subscriber.error(e)}}};try{let e=!1;yield new Promise((t,n)=>{r.onopen=n=>{e=!0,t(null)},r.onerror=t=>{if(e)this.reconnect();else{const e=t.error||new Error("WebSocket Error");this.subscriber.error(e),this.webSocketStatus.next("error"),n(e)}}}),this.subscriptions.add(this.messageProducer.subscribe(e=>{var t,n;this.closed||("ready"===e.type&&"connected"!==this.webSocketStatus.value&&this.webSocketStatus.next("connected"),"ready"===e.type?(this.rev=e.rev,null===(t=this.ws)||void 0===t||t.send(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 O(...t.map(({table:t,ydocProp:n,updatesTable:r})=>{const i=e.table(r);return g(i.get(Vt)).pipe(C(e=>{let r=(null==e?void 0:e.unsentFrom)||1;return g(o(()=>Z(this,void 0,void 0,function*(){return(yield zt(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 Kn(e){return Z(this,void 0,void 0,function*(){var e;yield(e=3e3,new Promise(t=>setTimeout(t,e))),yield b($n)})}function Hn(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 Vn=new WeakMap;function zn(e,t,n,r){const o=Vn.get(e);if(o){if(o.pull||"push"===(null==r?void 0:r.purpose))return o.promise;{let i=!1;const s=e.cloud.syncState.subscribe(e=>{"pulling"===e.phase&&(i=!0)});return o.promise.then(()=>{s.unsubscribe()}).catch(e=>(s.unsubscribe(),Promise.reject(e))).then(()=>{if(!i)return zn(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)),Vn.delete(e)}catch(t){throw Vn.delete(e),t}})}();return Vn.set(e,{promise:i,pull:"push"!==(null==r?void 0:r.purpose)}),i}function qn(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(),zn(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 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 pr(e,t,n){var r,o,i,s={};for(i in t)"key"==i?r=t[i]:"ref"==i?o=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?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 fr(e,s,r,o,null)}function fr(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),Or(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,p,f,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,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]=fr(null,s,null,null,null):cr(s)?s=e.__k[i]=fr(yr,{children:s},null,null,null):null==s.constructor&&s.__b>0?s=e.__k[i]=fr(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=kr(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=vr(a)),Ur(a,a));return r}(n,t,b,l,g),d=0;d<g;d++)null!=(f=n.__k[d])&&(p=-1==f.__i?sr:b[f.__i]||sr,f.__i=d,v=Or(e,f,p,o,i,s,a,l,c,u),y=f.__e,f.ref&&p.ref!=f.ref&&(p.ref&&Pr(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=wr(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 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 Or(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,O,C=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 C)try{if(m=t.props,b="prototype"in C&&C.prototype.render,g=(u=C.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 C(m,_):(t.__c=d=new hr(m,_),d.constructor=C,d.render=Ar),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!=C.getDerivedStateFromProps&&(d.__s==d.state&&(d.__s=ur({},d.__s)),ur(d.__s,C.getDerivedStateFromProps(m,d.__s))),f=d.props,y=d.state,d.__v=t,p)b&&null==C.getDerivedStateFromProps&&null!=d.componentWillMount&&d.componentWillMount(),b&&null!=d.componentDidMount&&d.__h.push(d.componentDidMount);else{if(b&&null==C.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=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&&!p&&null!=d.getSnapshotBeforeUpdate&&(h=d.getSnapshotBeforeUpdate(f,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(O=i.length;O--;)dr(i[O]);Cr(t)}else t.__e=n.__e,t.__k=n.__k,e.then||Cr(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 Cr(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(Cr)}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,p,f,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((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&&(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[(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;xr(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||xr(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=""),_r("template"==t.type?e.content:e,cr(p)?p:[p],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=[],Or(t,e=t.__k=pr(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 Dr={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:"#ffffff",border:"1px solid #dadce0",color:"#181717"},ProviderMicrosoft:{backgroundColor:"#ffffff",border:"1px solid #dadce0",color:"#5e5e5e"},ProviderApple:{backgroundColor:"#000000",border:"1px solid #000000",color:"#ffffff"},ProviderCustom:{backgroundColor:"#ffffff",border:"1px solid #dadce0",color:"#181717"},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 Lr({children:e,className:t}){return pr("div",{className:`dexie-dialog ${t||""}`},pr("div",{style:Dr.Darken}),pr("div",{style:Dr.DialogOuter},pr("div",{style:Dr.DialogInner},e)))}var Rr,Nr,Br,Mr,Wr=0,Fr=[],Kr=Yn,Hr=Kr.__b,Vr=Kr.__r,zr=Kr.diffed,qr=Kr.__c,Jr=Kr.unmount,Gr=Kr.__;function Yr(e,t){Kr.__h&&Kr.__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=[],Kr.__e(t,e.__v)}}Kr.__b=function(e){Nr=null,Hr&&Hr(e)},Kr.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Gr&&Gr(e,t)},Kr.__r=function(e){Vr&&Vr(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},Kr.diffed=function(e){zr&&zr(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==Fr.push(t)&&Mr===Kr.requestAnimationFrame||((Mr=Kr.requestAnimationFrame)||to)(Qr)),t.__H.__.forEach(function(e){e.u&&(e.__H=e.u),e.u=void 0})),Br=Nr=null},Kr.__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=[],Kr.__e(n,e.__v)}}),qr&&qr(e,t)},Kr.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&&Kr.__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,styleHint:o}=e,i=function(e){const t=Object.assign({},Dr.ProviderButton);if(!e)return t;switch(e){case"google":return Object.assign(Object.assign({},t),Dr.ProviderGoogle);case"github":return Object.assign(Object.assign({},t),Dr.ProviderGitHub);case"microsoft":return Object.assign(Object.assign({},t),Dr.ProviderMicrosoft);case"apple":return Object.assign(Object.assign({},t),Dr.ProviderApple);case"otp":return Object.assign({},Dr.OtpButton);case"custom-oauth2":return Object.assign(Object.assign({},t),Dr.ProviderCustom);default:return t}}(o);return pr("button",{type:"button",style:i,onClick:t,class:"dxc-option-btn"+(o?` dxc-option-${o}`:""),"aria-label":n},r&&pr("img",{src:r,alt:"",style:Dr.ProviderButtonIcon,"aria-hidden":"true"}),pr("span",{style:Dr.ProviderButtonText},n))}function lo(){return pr("div",{style:Dr.Divider},pr("div",{style:Dr.DividerLine}),pr("span",{style:Dr.DividerText},"or"),pr("div",{style:Dr.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);!Kr.__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||{}),p=d.length>0,f=r&&r.length>0,y=new Map;if(r)for(const e of r){const t=y.get(e.name)||[];t.push(e),y.set(e.name,t)}const h=y.size>1,v=e=>{a({[e.name]:e.value})};return pr(Lr,{className:"dxc-login-dlg"},pr(yr,null,pr("h3",{style:Dr.WindowHeader},e),t.map((e,t)=>pr("p",{key:t,style:Dr.Alert[e.type]},so(e))),f&&pr("div",{class:"dxc-options"},h?Array.from(y.entries()).map(([e,t],n)=>pr(yr,{key:e},n>0&&pr(lo,null),t.map(e=>pr(ao,{key:`${e.name}-${e.value}`,option:e,onClick:()=>v(e)})))):r.map(e=>pr(ao,{key:`${e.name}-${e.value}`,option:e,onClick:()=>v(e)}))),f&&p&&pr(lo,null),p&&pr("form",{onSubmit:e=>{e.preventDefault(),a(l)}},d.map(([e,{type:t,label:n,placeholder:r}],o)=>pr("label",{style:Dr.Label,key:o},n?`${n}: `:"",pr("input",{ref:0===o?u:void 0,type:t,name:e,autoComplete:"on",style:Dr.Input,autoFocus:!0,placeholder:r,value:l[e]||"",onInput:n=>{var r;const o=function(e,t){switch(e){case"email":return t.toLowerCase();case"otp":return t.toUpperCase();default:return t}}(t,null===(r=n.target)||void 0===r?void 0:r.value);let i=Object.assign(Object.assign({},l),{[e]:o});c(i),"otp"===t&&8===(null==o?void 0:o.trim().length)&&a(i)}}))))),pr("div",{style:Dr.ButtonsDiv},pr(yr,null,o&&(p||!f&&!p)&&pr("button",{type:"submit",style:Dr.PrimaryButton,onClick:()=>a(l)},o),i&&pr("button",{style:Dr.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?pr(co,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(Pe));function yo(e,t){let n=t,r=g(e).pipe(A(e=>n=e),$({resetOnRefCountZero:()=>D(1e3)}));const o=new w(e=>{let t=!1;const o=r.subscribe({next(n){t=!0,e.next(n)},error(t){e.error(t)},complete(){e.complete()}});return t||o.closed||e.next(n),o});return o.getValue=()=>n,o}const 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:Pe.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=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 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(L(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,[p,f]=yield e.transaction("r",d,u,()=>Z(this,void 0,void 0,function*(){const e=yield u.get(Vt),t=yield d.get("syncState");return[(null==e?void 0:e.receivedUntil)||0,(null==t?void 0:t.yServerRevision)||(null==t?void 0:t.serverRevision)]}));if(r.destroyed||l!==c||!t)return;const y={type:"doc-open",table:o,prop:s,k:i,serverRev: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),Ln.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 Re("access_denied",i,a);if(a.toLowerCase().includes("email")&&a.toLowerCase().includes("verif"))throw new Re("email_not_verified",i,a);throw new Re("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 Oo={},Co=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}`);Oo[s]={trigger:n,parentTable:e.name,prop:t};const a=e.db._novip;let l=Co.get(a);l||(l=(e=>({stack:"dbcore",level:10,name:"yTriggerMiddleware",create:t=>Object.assign(Object.assign({},t),{transaction:(e,n,r)=>{const o=t.transaction(e,n,r);return"readonly"===n?o:e.some(e=>Oo[e])?(o.addEventListener("complete",Po),o):o},table:n=>{const o=t.table(n),i=Oo[n];if(!i)return o;const{trigger:s,parentTable:a,prop:l}=i;return Object.assign(Object.assign({},o),{mutate(t){var n;switch(t.type){case"add":for(const r of t.values){if(null==r.k)continue;const t=r.k,o=G.getDocCache(e).find(a,t,l);(o&&(null===(n=G.for(o))||void 0===n?void 0:n.refCount)?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),Co.set(a,l)),a.use(l),G.on("beforeunload",Uo)}const $o={nameSuffix:!0};function Do(t){const n=t.name,r=fo(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,f,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(pr(uo,{db:e.vip}),n)):addEventListener("DOMContentLoaded",()=>{t||(document.body.appendChild(n),$r(pr(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(V(500)):r;case"connecting":return"not-started"===n||"error"===n?r:r.pipe(V(4e3));default:return r}}));return U([n,e.syncStateChangedEvent.pipe(z({phase:"initial"})),fo(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(p)),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():[],[C,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(C&&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),K(1)),w.cloud.persistedSyncState.pipe(q(1),K(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;try{yield ke(w.cloud.userInteraction,"Authentication Error",{type:"error",messageCode:"GENERIC_ERROR",message:e.message,messageParams:{provider:e.provider||"unknown"}})}catch(e){}}if(a&&!w.cloud.isServiceWorkerDB){const{code:e,provider:t}=a;a=null;try{j=yield He(w,{oauthCode:e,provider:t}),T=yield w.getCurrentUser()}catch(e){}}const A=null===(f=w.cloud.options)||void 0===f?void 0:f.requireAuth;A&&(w.cloud.isServiceWorkerDB?yield b(r.pipe(R(e=>!!e.isLoggedIn),K(1))):"object"==typeof A?(!T.isLoggedIn||A.userId&&T.userId!==A.userId||A.email&&T.email!==A.email)&&(j=yield He(w,A)):T.isLoggedIn||(j=yield He(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)&&(!C||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)?($||pe(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(),$||fe(w,"push")),d(),w.cloud.isServiceWorkerDB||i.push(I(self,"online").subscribe(()=>{w.syncStateChangedEvent.next({phase:"not-in-sync"}),In(w)||fe(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=O(n,e.messageProducer);return function t(){return e.cloud.persistedSyncState.pipe(R(e=>null==e?void 0:e.serverRevision),K(1),N(t=>e.cloud.currentUser.pipe(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),K(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()}),H(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 Ee(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)),H(n=>(e.cloud.webSocketStatus.next("error"),n instanceof Fn?P(()=>n):g(Kn()).pipe(N(()=>t())))))}().subscribe({next:t=>{t&&e.messageConsumer.enqueue(t)},error:e=>{},complete:()=>{}})}(w))})}(t)}catch(e){}}),!0);let u=!1;function d(){if(u)throw new e.DatabaseClosedError}t.once("close",()=>{i.forEach(e=>e.unsubscribe()),i.splice(0,i.length),u=!0,c&&c.stop(),c=null,r.next(Pe)});const p=new S;var f;t.cloud={version:"4.3.6",options:Object.assign({},$o),schema:null,get currentUserId(){return r.value.userId||Pe.userId},currentUser:r,syncState:new k({phase:"initial",status:"not-started"}),events:{syncComplete:p},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 He(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 Re&&(l=e)}},logout(){return Z(this,arguments,void 0,function*({force:e}={}){e?yield $e(on(t),{deleteUnsyncedData:!0}):yield Ae(on(t))})},getAuthProviders(){return Z(this,void 0,void 0,function*(){const e=t.cloud.options;if(!(null==e?void 0:e.databaseUrl))throw new Error("Dexie Cloud not configured. Call db.cloud.configure() first.");const n=!1!==e.socialAuth;return Be(e.databaseUrl,n)})},sync(){return Z(this,arguments,void 0,function*({wait:e,purpose:n}={wait:!0,purpose:"push"}){var r;void 0===e&&(e=!0);const i=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(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 Hn(i)){const t=i.cloud.persistedSyncState.value;fe(i,n),e&&(yield b(g(o(()=>Z(this,void 0,void 0,function*(){const e=yield Hn(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=>Cn(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(On({currentUserObservable:t.cloud.currentUser,db:on(t)})),t.use((f=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:Pe.userId;if((null===(s=null===(i=f.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)))}Do.version="4.3.6",e.Cloud=Do;export{Do as default,Ao as defineYDocTrigger,Do as dexieCloud,Io as getTiedObjectId,xo as getTiedRealmId,so 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 c,writeBigUint64 as l,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 O,switchMap as C,tap as E,mergeMap as j,Subscription as P,throwError as T,combineLatest as U,map as A,share as $,timer as D,startWith as L}from"rxjs";import{filter as R,switchMap as N,delay as B,distinctUntilChanged as M,map as W,tap as F,take as K,catchError as H,debounceTime as V,startWith as z,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{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,a)}c((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,l)}}),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(c,l):u(i[0][2],e)}(o[e](t))}catch(e){u(i[0][3],e)}}function c(e){a("next",e)}function l(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 c=e[s];c&&function(e,t){return ne.call(e,t)}(e,s)||(c=e[s]={}),re(c,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 ce(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 le(e,t){for(const{table:n,muts:r}of t)for(const t of r)ce(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=`data:image/svg+xml;base64,${btoa('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="#666666" stroke-width="2"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="M22 6L12 13 2 6"/></svg>')}`;function _e(e){return{name:"provider",value:e.name,displayName:`Continue with ${e.displayName}`,iconUrl:e.iconUrl,styleHint:e.type}}function we(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 ke(e,t,...n){return we(e,{type:"message-alert",title:t,alerts:n,fields:{},submitLabel:"OK",cancelLabel:null})}function Se(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 we(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 xe(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 we(e,{type:"otp",title:"Enter OTP",alerts:r,fields:{otp:{type:"otp",label:"OTP",placeholder:"Paste OTP here"}}});return o})}class Ie 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:c,claims:l}=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==c?void 0:c.getTime())&&void 0!==r?r:1/0)<=Date.now())throw new Error("Refresh token has expired");const u=yield Ee(e.cloud.options.databaseUrl,o);return yield e.table("$logins").update(l.sub,{accessToken:u.accessToken,accessTokenExpiration:u.accessTokenExpiration,claims:u.claims,license:u.license,data:u.data}),u})}function Ce(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 Ee(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 we(r,{type:"message-alert",title:"Authentication Alert",fields:{},alerts:e.alerts})),t}catch(t){if(t instanceof Ie||"OAuthRedirectError"===(null==t?void 0:t.name))throw t;if(t instanceof be)throw yield ke(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 ke(r,"Authentication Failed",{type:"error",messageCode:"GENERIC_ERROR",message:n,messageParams:{}}).catch(()=>{})}throw t}})}(n,r,o,i)})}function Ee(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},c=yield fetch(`${e}/token`,{body:JSON.stringify(a),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"});if(200!==c.status)throw new Error(`RefreshToken: Status ${c.status} from ${e}/token`);const l=yield c.json();if("error"===l.type)throw new be(l);return t.accessToken=l.accessToken,t.accessTokenExpiration=l.accessTokenExpiration?new Date(l.accessTokenExpiration):void 0,t.claims=l.claims,t.license={type:l.userType,status:l.claims.license||"ok"},null!=l.evalDaysLeft&&(t.license.evalDaysLeft=l.evalDaysLeft),null!=l.userValidUntil&&(t.license.validUntil=new Date(l.userValidUntil)),l.data&&(t.data=l.data),t})}const je=new WeakMap;class Pe{constructor(e,t){je.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*(){je.get(this).table("$logins").put(this)})}}const Te={userId:"unauthorized",name:"Unauthorized",claims:{sub:"unauthorized"},lastLogin:new Date(0)};try{Object.freeze(Te),Object.freeze(Te.claims)}catch(e){}function Ue(e,t){return b(g(e).pipe(_(t)))}function Ae(e){return Z(this,void 0,void 0,function*(){const t=yield $e(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 we(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 $e(e,{deleteUnsyncedData:!0})}})}function $e(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 Ue(e.cloud.currentUser,e=>e.userId===Te.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 Le={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 Re extends Error{constructor(e,t,n){super(n||Le[e]),this.name="OAuthError",this.code=e,this.provider=t}get userMessage(){return Le[this.code]||this.message}}const Ne={providers:[],otpEnabled:!0};function Be(e){return Z(this,arguments,void 0,function*(e,t=!0){if(!t)return Ne;try{const t=yield fetch(`${e}/auth-providers`,{method:"GET",headers:{Accept:"application/json"},mode:"cors"});return 404===t.status?Ne:t.ok?yield t.json():Ne}catch(e){return Ne}})}function Me(e){if("undefined"==typeof window)throw new Error("OAuth redirect requires a browser environment");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 c=null===(i=t.cloud.options)||void 0===i?void 0:i.databaseUrl;if(!c)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){const t=yield e.text().catch(()=>e.statusText);if(400===e.status||401===e.status)try{const e=JSON.parse(t);if("error"===e.type){if("INVALID_OTP"===e.messageCode)throw new Re("expired_code",void 0,e.message);throw new be(e)}}catch(e){if(e instanceof Re||e instanceof be)throw e}throw new Re("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 Re("provider_error",void 0,`Unexpected response type: ${n.type}`);return n}catch(e){if(e instanceof Re||e instanceof be)throw e;if(e instanceof TypeError)throw new Re("network_error");throw e}})}({databaseUrl:c,code:o.oauthCode,publicKey:r,scopes:["ACCESS_DB"]});if(null==o?void 0:o.provider){let e;throw o.redirectPath&&(/^https?:\/\//i.test(o.redirectPath)?e=o.redirectPath:"undefined"!=typeof window&&window.location?e=new URL(o.redirectPath,window.location.href).toString():"undefined"!=typeof location&&location.href&&(e=new URL(o.redirectPath,location.href).toString())),Fe(t,o.provider,e),new Ie(o.provider)}if("demo"===(null==o?void 0:o.grant_type)){a={demo_user:yield Se(n,"Enter a demo user email",(null==o?void 0:o.email)||(null==o?void 0:o.userId)),grant_type:"demo",scopes:["ACCESS_DB"],public_key:r}}else if((null==o?void 0:o.otpId)&&o.otp)a={grant_type:"otp",otp_id:o.otpId,otp:o.otp,scopes:["ACCESS_DB"],public_key:r};else if("otp"===(null==o?void 0:o.grant_type)||(null==o?void 0:o.email)){const e=(null==o?void 0:o.email)||(yield Se(n,"Enter email address"));a=/@demo.local$/.test(e)?{demo_user:e,grant_type:"demo",scopes:["ACCESS_DB"],public_key:r}:{email:e,grant_type:"otp",scopes:["ACCESS_DB"]}}else{const i=!1!==(null===(s=t.cloud.options)||void 0===s?void 0:s.socialAuth),l=yield Be(c,i);if(l.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=[...n.map(_e)];return r&&s.push({name:"otp",value:"email",displayName:"Continue with email",iconUrl:ge,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,l.providers,l.otpEnabled,"Sign in");if("provider"===r.type)throw Fe(t,r.provider),new Ie(r.provider)}const u=yield Se(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 l=yield fetch(`${c}/token`,{body:JSON.stringify(a),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"});if(200!==l.status){const e=yield l.text();throw yield ke(n,"Token request failed",{type:"error",messageCode:"GENERIC_ERROR",message:e,messageParams:{}}).catch(()=>{}),new De(l,e)}const u=yield l.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 ${c}/token`);const e=yield xe(n,a.email),t=Object.assign(Object.assign({},a),{otp:e||"",otp_id:u.otp_id,public_key:r});let o=yield fetch(`${c}/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 xe(n,a.email,{type:"error",messageCode:"INVALID_OTP",message:e,messageParams:{}}),o=yield fetch(`${c}/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 ${c}/token`)})}}function Fe(e,t,n){var r,o;const i=null===(r=e.cloud.options)||void 0===r?void 0:r.databaseUrl;if(!i)throw new Error("No database URL given.");Me({databaseUrl:i,provider:t,redirectUri:n||(null===(o=e.cloud.options)||void 0===o?void 0:o.oauthRedirectUri)||("undefined"!=typeof location?location.href:void 0)})}function Ke(e,...t){globalThis.console[e](...t)}function He(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 Ce(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!==Te.userId&&i.userId!==o&&(yield Ae(e)),yield function(e,t){return Z(this,void 0,void 0,function*(){const n=e.table("$logins");yield e.transaction("rw",n,e=>Z(this,void 0,void 0,function*(){const e=yield n.toArray();yield Promise.all(e.filter(e=>e.userId!==t.userId&&e.isLoggedIn).map(e=>(e.isLoggedIn=!1,n.put(e)))),t.isLoggedIn=!0,t.lastLogin=new Date;try{yield t.save()}catch(e){try{"DataCloneError"===e.name&&(Ke("debug","Login context property names:",Object.keys(t)),Ke("debug","Login context property names:",Object.keys(t)),Ke("debug","Login context:",t),Ke("debug","Login context JSON:",JSON.stringify(t)))}catch(e){}throw e}})),yield Ue(e.cloud.currentUser,e=>e.userId===t.userId)})}(e,i),pe(e,"pull"),i.userId!==o})}const Ve={},ze="undefined"!=typeof self&&self.document&&"undefined"!=typeof navigator&&navigator.serviceWorker;ze&&ze.ready.then(e=>Ve.registration=e),"undefined"!=typeof self&&"clients"in self&&!self.document&&addEventListener("message",e=>{var t,n;(null===(n=null===(t=e.data)||void 0===t?void 0:t.type)||void 0===n?void 0:n.startsWith("sw-broadcast-"))&&[...self.clients.matchAll({includeUncontrolled:!0})].forEach(t=>{var n;return t.id!==(null===(n=e.source)||void 0===n?void 0:n.id)&&t.postMessage(e.data)})});class qe{constructor(e){this.name=e}subscribe(e){if(!ze)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 ze.addEventListener("message",t),()=>ze.removeEventListener("message",t)}postMessage(e){var t;"object"==typeof self.clients?[...self.clients.matchAll({includeUncontrolled:!0})].forEach(t=>t.postMessage({type:`sw-broadcast-${this.name}`,message:e})):Ve.registration&&(null===(t=Ve.registration.active)||void 0===t||t.postMessage({type:`sw-broadcast-${this.name}`,message:e}))}}const 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,c=null;for(const{table:e,mut:t}of i)a&&a.table===e&&c===t.txid?a.muts.push(t):(a={table:e,muts:[t]},c=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 ct={number:{replace:e=>{switch(!0){case isNaN(e):return{$t:"number",v:"NaN"};case e===1/0:return{$t:"number",v:"Infinity"};case e===-1/0:return{$t:"number",v:"-Infinity"};default:return e}},revive:({v:e})=>Number(e)}};const lt={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={...ct,...lt,...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 Ot={undefined:{replace:()=>({$t:"undefined"}),revive:()=>{}}},Ct={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 Pt=Et?{}:{bigint:{test:e=>e instanceof jt,replace:e=>Object.assign({$t:"bigint"},e),revive:({v:e})=>new jt(e)}},Tt=Object.assign(Object.assign(Object.assign(Object.assign({},Ot),Pt),Ct),{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,Tt),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)}}}(Tt);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:c}=a;let l=i;s.forEach((t,r)=>{const o=!c.outbound&&("upsert"===t.type||"insert"===t.type);t.keys.forEach((t,s)=>{if(Array.isArray(t)){l===i&&(l=Dt(i,o));const e=l.muts[r],n=JSON.stringify(t);e.keys[s]=n}else if("#"===t[0]){l===i&&(l=Dt(i,o));const a=l.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],c.keyPath,u)}})}),o.push(l)}return o}function Dt(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 Lt=new WeakMap;function Rt(e){return Z(this,void 0,void 0,function*(){var t,n;const r=(null!==(n=null===(t=Lt.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,c){return Z(this,void 0,void 0,function*(){const l={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&&(l.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,c,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:l,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));Lt.set(e,new Date(Date.now()+1e3*t))}else Lt.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 Kt(t,r,o){return Z(this,void 0,void 0,function*(){const i=yield t.bulkGet(r),s=[],a=[];r.forEach((r,c)=>{const l=i[c];if(l){for(const[i,s]of Object.entries(o[c]))if(i===t.schema.primKey.keyPath){if(0!==n(s,r))throw new Error("Cannot change primary key")}else e.setByKeyPath(l,i,s);s.push(r),a.push(l)}}),yield null==t.schema.primKey.keyPath?t.bulkPut(a,s):t.bulkPut(a)})}function Ht(t,n){return Z(this,void 0,void 0,function*(){for(const{table:r,muts:o}of t){if(!n.dx._allTables[r])continue;const t=n.table(r),{primaryKey:i}=t.core.schema,s=e=>{switch(e[0]){case"[":if(e.endsWith("]"))try{return JSON.parse(e)}catch(e){}return e;case"#":return e.endsWith(":"+n.cloud.currentUserId)?e.substr(0,e.length-n.cloud.currentUserId.length-1):e;default:return e}};for(const n of o){const r=n.keys.map(s);switch(n.type){case"insert":i.outbound?yield t.bulkAdd(n.values,r):(r.forEach((t,r)=>{e.setByKeyPath(n.values[r],i.keyPath,t)}),yield t.bulkAdd(n.values));break;case"upsert":i.outbound?yield t.bulkPut(n.values,r):(r.forEach((t,r)=>{e.setByKeyPath(n.values[r],i.keyPath,t)}),yield t.bulkPut(n.values));break;case"modify":1===r.length?yield t.update(r[0],n.changeSpec):yield t.where(":id").anyOf(r).modify(n.changeSpec);break;case"update":yield Kt(t,r,n.changeSpecs);break;case"delete":yield t.bulkDelete(r)}}}})}"undefined"!=typeof self&&"undefined"!=typeof navigator&&(Mt=navigator.onLine,self.addEventListener("online",()=>Mt=!0),self.addEventListener("offline",()=>Mt=!1));const Vt="dexie-cloud-syncer";function zt(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(Vt);yield t.table(e.name).put(Object.assign(Object.assign({},n||{i:Vt}),{unsentFrom:Math.max((null==n?void 0:n.unsentFrom)||1,a.i+1)}))})));break}case"u-reject":{const e=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 c=null,l=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(!c||!l||!u)throw new Error(`Protocol error from ${n}/y/download`);const e=qt(t,l,u);e&&(yield e.bulkAdd(h)),h=[]}c&&(l&&u&&r||e)&&(yield t.$syncState.update("syncState",t=>{const n=t.yDownloadedRealms||{};n[c]=e?"*":{tbl:l,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)),c=f(e);break;case 2:yield Q(b(!1)),l=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:c}=t,l=yield e.getCurrentUser(),u=l.isLoggedIn?Ze(e):[],d=u.map(t=>e.table(Xe(t.name))),f=yield e.getPersistedSyncState(),p=l.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!==Te.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!==Te.userId||(e.owner=t.userId)}):yield n.toCollection().modify(e=>{e.realmId&&r.has(e.realmId)||(e.owner&&e.owner!==Te.userId||(e.owner=t.userId),e.realmId&&e.realmId!==Te.userId||(e.realmId=t.userId))}))})}(y,l,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(Vt),a=(null==s?void 0:s.unsentFrom)||1,c=(null==s?void 0:s.receivedUntil)||0,l=Math.min(a,c+1),u=yield zt(i,l);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)}),c=yield a.toArray();if(c.length>0){const n={type:"upsert",values:c,keys:c.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,l,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,c,n,S,l),{done:I,newSyncState:O}=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),c=new Set(t.realms.concat(t.inviteRealms));for(const e of i)a.has(e)||(o.add(e),c.has(e)||r.add(e));for(const e of s.concat(i))c.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 Ht(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 c={};for(const[t,n]of Object.entries(e))null!==(r=c[t])&&void 0!==r||(c[t]={}),c[t].unsentFrom=n+1;for(const[e,n]of Object.entries(t))null!==(o=c[e])&&void 0!==o||(c[e]={}),c[e].receivedUntil=n;const l=Object.values(n.dx._dbSchema).filter(e=>e.yProps).map(e=>e.yProps.map(e=>e.updatesTable)).flat();for(const e of l){const t=c[e],r=null!==(i=null==t?void 0:t.unsentFrom)&&void 0!==i?i:1,o=null!==(a=null!==(s=null==t?void 0:t.receivedUntil)&&void 0!==s?s:(yield n.table(e).where("i").between(1,1/0).reverse().limit(1).primaryKeys())[0])&&void 0!==a?a:0;yield n.transaction("rw",e,()=>Z(this,void 0,void 0,function*(){const t=yield n.table(e).get(Vt);t?(t.unsentFrom=Math.max(r,t.unsentFrom||1),t.receivedUntil=Math.max(o,t.receivedUntil||0),yield n.table(e).put(t)):yield n.table(e).add({i:Vt,unsentFrom:r,receivedUntil:o})}))}})}(_,t,e),n&&(i.yDownloadedRealms={})}return e.$syncState.put(i,"syncState"),{done:0===r.length,newSyncState:i}}));if(!I)return yield Rt(e),yield Xt(e,t,n,{isInitialSync:r,cancelToken:o});const C=Object.values(n).some(e=>{var t;return null===(t=e.yProps)||void 0===t?void 0:t.length}),E=!!x.yMessages;if(C&&E)try{yield Gt(e,c,O)}catch(e){}return e.syncCompleteEvent.next(),!1})}function Qt(e,t){const n={};le(n,e);const r={};return le(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,c;n.length>0;){const l=n.shift();try{yield b(t.cloud.syncState.pipe(R(({phase:e})=>"in-sync"===e||"error"===e)));const n=t.cloud.persistedSyncState.value;if(!l)continue;switch(l.type){case"token-expired":const u=t.cloud.currentUser.value,d=yield Ee(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(l.realm))||(null===(o=null==n?void 0:n.inviteRealms)||void 0===o?void 0:o.includes(l.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(l.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(l.realm))||(null===(a=null==n?void 0:n.inviteRealms)||void 0===a?void 0:a.includes(l.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===(c=t.cloud.syncState.value)||void 0===c?void 0:c.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(l.baseRev!==o.serverRevision)return void("string"!=typeof l.baseRev||"bigint"!=typeof o.serverRevision&&"object"!=typeof o.serverRevision||pe(t,"pull"));if((yield e.waitFor(Ye(o)))!==l.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(l.changes.length>0){const e=Qt(l.changes,s);yield Ht(e,t)}o.latestRevisions=Ft(s,o.latestRevisions),o.serverRevision=l.newRev,yield Wt(t,r,o.latestRevisions,l.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)||Te),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,cn="undefined"!=typeof navigator&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\/|Edge\//.test(navigator.userAgent),ln=cn?[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]:NaN,un=cn&&ln<=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((c,l)=>{if(void 0===c){const r=n.values[l].realmId||t.cloud.currentUserId,c=r.substr(r.length-3);a[l]=gn(i,c),o.schema.primaryKey.outbound||(s||(s=n.values.slice()),s[l]=e.deepClone(s[l]),e.setByKeyPath(s[l],o.schema.primaryKey.keyPath,a[l]))}else if("string"!=typeof c||!c.startsWith(i)&&!c.startsWith("#"+i))throw new e.ConstraintError(`The ID "${c}" 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 On({currentUserObservable:e,db:t}){return{stack:"dbcore",name:"MutationTrackingMiddleware",level:1,create:n=>{const o=new Set(n.schema.tables.map(e=>e.name)),i=n.schema.tables.filter(e=>!/^\$/.test(e.name)),s=new Map;for(const e of i){const t=`$${e.name}_mutations`;o.has(t)&&s.set(e.name,n.table(t))}return Object.assign(Object.assign({},n),{transaction:(r,o)=>{let i;if("readwrite"===o){const e=r.filter(e=>{var n,r;return null===(r=null===(n=t.cloud.schema)||void 0===n?void 0:n[e])||void 0===r?void 0:r.markedForSync}).map(e=>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 l=n.trans;return l.txid?l.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=l.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=>c({type:"delete",keys:e.result,trans:n.trans,criteria:{index:null,range:n.range}})):c(n):o.mutate(n):o.mutate(n)}})):o;function c(n){var s,c;const l=n.trans,u=null===(c=null===(s=t.cloud.options)||void 0===s?void 0:s.unsyncedProperties)||void 0===c?void 0:c[e],{txid:d,currentUser:{userId:f}}=l,{type:p}=n,y=++l.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 c="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&&(c=c.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=c.length;r<o;++r)n.hasKey(c[r])&&(e.push(c[r]),t.push(v[r]));c=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:c,criteria:w,txid:d,userId:f}:"add"===n.type?{type:"insert",ts:_,opNo:y,keys:c,txid:d,userId:f,values:v}:g&&b?{type:"upsert",ts:_,opNo:y,keys:c,values:v,changeSpecs:b.changeSpecs.filter((e,t)=>!s[t]),txid:d,userId:f}:w&&m?{type:"modify",ts:_,opNo:y,keys:c,criteria:w,changeSpec:m,txid:d,userId:f}:m?{type:"update",ts:_,opNo:y,keys:c,changeSpecs:c.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:c,values:v,txid:d,userId:f};return"isAdditionalChunk"in n&&n.isAdditionalChunk&&(k.isAdditionalChunk=!0),c.length>0||w?a.mutate({type:"add",trans:l,values:[k]}).then(()=>(l.mutationsAdded=!0,e)):e})}}})}}}function Cn(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 c=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 c}}function En(e,t,n){return"undefined"!=typeof navigator&&navigator.locks?navigator.locks.request(e.name+"|"+t,n):n()}const jn=new k(!0),Pn=new k(!0);jn.pipe(N(e=>e?x(!0):x(!1).pipe(B(2e4))),M()).subscribe(Pn);const Tn="undefined"!=typeof document?I(document,"visibilitychange"):x({}),Un=Tn.pipe(R(()=>"hidden"===document.visibilityState)),An=Tn.pipe(R(()=>"visible"===document.visibilityState)),$n="undefined"!=typeof window?O(An,I(window,"mousedown"),I(window,"mousemove"),I(window,"keydown"),I(window,"wheel"),I(window,"touchmove")):x({});"undefined"!=typeof document&&O(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 Dn extends Error{constructor(){super(...arguments),this.name="TokenExpiredError"}}const Ln=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(c=>new Wn(e,t,n,r,o,a,c,i,s))}}let Mn=0;class Wn extends P{constructor(e,t,n,r,o,i,s,a,c){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=c,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 Dn);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=>Ln.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(Vt,{receivedUntil:t}))}}e&&(yield this.db.cloud.sync({purpose:"pull",wait:!0}))})):this.subscriber.next(t)}catch(e){this.subscriber.error(e)}}};try{let e=!1;yield new Promise((t,n)=>{r.onopen=n=>{e=!0,t(null)},r.onerror=t=>{if(e)this.reconnect();else{const e=t.error||new Error("WebSocket Error");this.subscriber.error(e),this.webSocketStatus.next("error"),n(e)}}}),this.subscriptions.add(this.messageProducer.subscribe(e=>{var t,n;this.closed||("ready"===e.type&&"connected"!==this.webSocketStatus.value&&this.webSocketStatus.next("connected"),"ready"===e.type?(this.rev=e.rev,null===(t=this.ws)||void 0===t||t.send(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":l(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":c(t,e.u);break;case"doc-open":a(t,e.serverRev),a(t,e.sv);break;case"doc-close":break;case"sv":c(t,e.sv);break;case"u-c":c(t,e.u),l(t,BigInt(e.i));break;case"u-s":c(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 O(...t.map(({table:t,ydocProp:n,updatesTable:r})=>{const i=e.table(r);return g(i.get(Vt)).pipe(C(e=>{let r=(null==e?void 0:e.unsentFrom)||1;return g(o(()=>Z(this,void 0,void 0,function*(){return(yield zt(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 Kn(e){return Z(this,void 0,void 0,function*(){var e;yield(e=3e3,new Promise(t=>setTimeout(t,e))),yield b($n)})}function Hn(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 Vn=new WeakMap;function zn(e,t,n,r){const o=Vn.get(e);if(o){if(o.pull||"push"===(null==r?void 0:r.purpose))return o.promise;{let i=!1;const s=e.cloud.syncState.subscribe(e=>{"pulling"===e.phase&&(i=!0)});return o.promise.then(()=>{s.unsubscribe()}).catch(e=>(s.unsubscribe(),Promise.reject(e))).then(()=>{if(!i)return zn(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)),Vn.delete(e)}catch(t){throw Vn.delete(e),t}})}();return Vn.set(e,{promise:i,pull:"push"!==(null==r?void 0:r.purpose)}),i}function qn(e,t,n){let r=null,o={cancelled:!1},i=0,s=0;function a(r=1){setTimeout(()=>{const f=c?"pull":"push";s=Date.now(),zn(e,t,n,{cancelToken:o,retryImmediatelyOnFetchError:!0,purpose:f}).then(()=>{if(o.cancelled)d();else if(c||l)return c=!1,l=!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 c=!1,l=!1,u=!1;const d=()=>{o.cancelled=!0,r&&r.unsubscribe()};return{start:()=>{r=e.localSyncEvent.subscribe(({purpose:e})=>{(e=>{o.cancelled||("pull"===e&&(c=!0),"push"===e&&(l=!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=[],cr=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,lr=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),Or(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,c,l,u){var d,f,p,y,h,v,m,b=r&&r.__k||ar,g=t.length;for(c=function(e,t,n,r,o){var i,s,a,c,l,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):lr(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,c=i+f,s.__=e,s.__b=e.__b+1,-1!=(l=s.__i=kr(s,n,c,d))&&(d--,(a=n[l])&&(a.__u|=2)),null==a||null==a.__v?(-1==l&&(o>u?f--:o<u&&f++),"function"!=typeof s.type&&(s.__u|=4)):l!=c&&(l==c-1?f--:l==c+1?f++:(l>c?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,c,g),d=0;d<g;d++)null!=(p=n.__k[d])&&(f=-1==p.__i?sr:b[p.__i]||sr,p.__i=d,v=Or(e,p,f,o,i,s,a,c,l,u),y=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&Tr(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?c=wr(p,c,e,m):"function"==typeof p.type&&void 0!==v?c=v:y&&(c=y.nextSibling),p.__u&=-7);return n.__e=h,c}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,c=e.type,l=t[n],u=null!=l&&!(2&l.__u);if(null===l&&null==a||u&&a==l.key&&c==l.type)return n;if(r>(u?1:0))for(o=n-1,i=n+1;o>=0||i<t.length;)if(null!=(l=t[s=o>=0?o--:i++])&&!(2&l.__u)&&a==l.key&&c==l.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||cr.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 Or(e,t,n,r,o,i,s,a,c,l){var u,d,f,p,y,h,v,m,b,g,_,w,k,S,x,I,O,C=t.type;if(null!=t.constructor)return null;128&n.__u&&(c=!!(32&n.__u),i=[a=t.__e=n.__e]),(u=Yn.__b)&&u(t);e:if("function"==typeof C)try{if(m=t.props,b="prototype"in C&&C.prototype.render,g=(u=C.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 C(m,_):(t.__c=d=new hr(m,_),d.constructor=C,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!=C.getDerivedStateFromProps&&(d.__s==d.state&&(d.__s=ur({},d.__s)),ur(d.__s,C.getDerivedStateFromProps(m,d.__s))),p=d.props,y=d.state,d.__v=t,f)b&&null==C.getDerivedStateFromProps&&null!=d.componentWillMount&&d.componentWillMount(),b&&null!=d.componentDidMount&&d.__h.push(d.componentDidMount);else{if(b&&null==C.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,lr(I)?I:[I],t,n,r,o,i,s,a,c,l),d.base=t.__e,t.__u&=-161,d.__h.length&&s.push(d),v&&(d.__E=d.__=null)}catch(e){if(t.__v=null,c||null!=i)if(e.then){for(t.__u|=c?160:128;a&&8==a.nodeType&&a.nextSibling;)a=a.nextSibling;i[i.indexOf(a)]=null,t.__e=a}else{for(O=i.length;O--;)dr(i[O]);Cr(t)}else t.__e=n.__e,t.__k=n.__k,e.then||Cr(t);Yn.__e(e,t,n)}else null==i&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):a=t.__e=Pr(n.__e,t,n,r,o,i,s,c,l);return(u=Yn.diffed)&&u(t),128&t.__u?void 0:a}function Cr(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(Cr)}function Er(e,t,n){for(var r=0;r<n.length;r++)Tr(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:lr(e)?e.map(jr):ur({},e)}function Pr(e,t,n,r,o,i,s,a,c){var l,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(l=0;l<i.length;l++)if((p=i[l])&&"setAttribute"in p==!!b&&(b?p.localName==b:3==p.nodeType)){e=p,i[l]=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={},l=0;l<e.attributes.length;l++)v[(p=e.attributes[l]).name]=p.value;for(l in v)if(p=v[l],"children"==l);else if("dangerouslySetInnerHTML"==l)d=p;else if(!(l in m)){if("value"==l&&"defaultValue"in m||"checked"==l&&"defaultChecked"in m)continue;xr(e,l,null,p,o)}for(l in m)p=m[l],"children"==l?f=p:"dangerouslySetInnerHTML"==l?u=p:"value"==l?y=p:"checked"==l?h=p:a&&"function"!=typeof p||v[l]===p||xr(e,l,p,v[l],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,lr(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,c),null!=i)for(l=i.length;l--;)dr(i[l]);a||(l="value","progress"==b&&null==y?e.removeAttribute("value"):null!=y&&(y!==e[l]||"progress"==b&&!y||"option"==b&&y!=v[l])&&xr(e,l,y,v[l],o),l="checked",null!=h&&h!=e[l]&&xr(e,l,h,v[l],o))}return e}function Tr(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||Tr(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=[],Or(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 Dr={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:"#ffffff",border:"1px solid #dadce0",color:"#181717"},ProviderMicrosoft:{backgroundColor:"#ffffff",border:"1px solid #dadce0",color:"#5e5e5e"},ProviderApple:{backgroundColor:"#000000",border:"1px solid #000000",color:"#ffffff"},ProviderCustom:{backgroundColor:"#ffffff",border:"1px solid #dadce0",color:"#181717"},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 Lr({children:e,className:t}){return fr("div",{className:`dexie-dialog ${t||""}`},fr("div",{style:Dr.Darken}),fr("div",{style:Dr.DialogOuter},fr("div",{style:Dr.DialogInner},e)))}var Rr,Nr,Br,Mr,Wr=0,Fr=[],Kr=Yn,Hr=Kr.__b,Vr=Kr.__r,zr=Kr.diffed,qr=Kr.__c,Jr=Kr.unmount,Gr=Kr.__;function Yr(e,t){Kr.__h&&Kr.__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=[],Kr.__e(t,e.__v)}}Kr.__b=function(e){Nr=null,Hr&&Hr(e)},Kr.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Gr&&Gr(e,t)},Kr.__r=function(e){Vr&&Vr(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},Kr.diffed=function(e){zr&&zr(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==Fr.push(t)&&Mr===Kr.requestAnimationFrame||((Mr=Kr.requestAnimationFrame)||to)(Qr)),t.__H.__.forEach(function(e){e.u&&(e.__H=e.u),e.u=void 0})),Br=Nr=null},Kr.__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=[],Kr.__e(n,e.__v)}}),qr&&qr(e,t)},Kr.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&&Kr.__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,styleHint:o}=e,i=function(e){const t=Object.assign({},Dr.ProviderButton);if(!e)return t;switch(e){case"google":return Object.assign(Object.assign({},t),Dr.ProviderGoogle);case"github":return Object.assign(Object.assign({},t),Dr.ProviderGitHub);case"microsoft":return Object.assign(Object.assign({},t),Dr.ProviderMicrosoft);case"apple":return Object.assign(Object.assign({},t),Dr.ProviderApple);case"otp":return Object.assign({},Dr.OtpButton);case"custom-oauth2":return Object.assign(Object.assign({},t),Dr.ProviderCustom);default:return t}}(o);return fr("button",{type:"button",style:i,onClick:t,class:"dxc-option-btn"+(o?` dxc-option-${o}`:""),"aria-label":n},r&&fr("img",{src:r,alt:"",style:Dr.ProviderButtonIcon,"aria-hidden":"true"}),fr("span",{style:Dr.ProviderButtonText},n))}function co(){return fr("div",{style:Dr.Divider},fr("div",{style:Dr.DividerLine}),fr("span",{style:Dr.DividerText},"or"),fr("div",{style:Dr.DividerLine}))}function lo({title:e,alerts:t,fields:n,options:r,submitLabel:o,cancelLabel:i,onCancel:s,onSubmit:a}){const[c,l]=Zr({}),u=Xr(null);!function(e,t){var n=Yr(Rr++,4);!Kr.__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(Lr,{className:"dxc-login-dlg"},fr(yr,null,fr("h3",{style:Dr.WindowHeader},e),t.map((e,t)=>fr("p",{key:t,style:Dr.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(co,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(co,null),f&&fr("form",{onSubmit:e=>{e.preventDefault(),a(c)}},d.map(([e,{type:t,label:n,placeholder:r}],o)=>fr("label",{style:Dr.Label,key:o},n?`${n}: `:"",fr("input",{ref:0===o?u:void 0,type:t,name:e,autoComplete:"on",style:Dr.Input,autoFocus:!0,placeholder:r,value:c[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({},c),{[e]:o});l(i),"otp"===t&&8===(null==o?void 0:o.trim().length)&&a(i)}}))))),fr("div",{style:Dr.ButtonsDiv},fr(yr,null,o&&(f||!p&&!f)&&fr("button",{type:"submit",style:Dr.PrimaryButton,onClick:()=>a(c)},o),i&&fr("button",{style:Dr.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(lo,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="undefined"!=typeof location&&!!new URL(location.href).searchParams.get("dxc-auth"),yo=fo(e=>new k(po?Object.assign(Object.assign({},Te),{oauthInProgress:!0}):Te));function ho(e,t){let n=t,r=g(e).pipe(A(e=>n=e),$({resetOnRefCountZero:()=>D(1e3)}));const o=new w(e=>{let t=!1;const o=r.subscribe({next(n){t=!0,e.next(n)},error(t){e.error(t)},complete(){e.complete()}});return t||o.closed||e.next(n),o});return o.getValue=()=>n,o}const vo=fo(e=>ho(o(()=>e.roles.where({realmId:"rlm-public"}).toArray().then(e=>{const t={};for(const n of e.slice().sort((e,t)=>(e.sortOrder||0)-(t.sortOrder||0)))t[n.name]=n;return t})),{})),mo=fo(e=>ho(yo(e._novip).pipe(N(t=>o(()=>e.transaction("r","realms","members",()=>Promise.all([e.members.where({userId:t.userId}).toArray(),e.realms.toArray(),t.userId]).then(([e,t,n])=>({selfMembers:e,realms:t,userId:n})))))),{selfMembers:[],realms:[],get userId(){return e.cloud.currentUserId}}));function bo(...e){if(0===e.length)return{};const t=e.reduce((e,t)=>{const n=Object.assign({},e);for(const[e,r]of Object.entries(t))if(e in n&&n[e]){if("*"===n[e])continue;if("*"===r)n[e]="*";else if(Array.isArray(r)&&Array.isArray(n[e])){const t=n,o=t[e];t[e]=[...new Set([...o,...r])]}else if("object"==typeof r&&r&&"object"==typeof n[e]){const t=n[e];for(const[e,n]of Object.entries(r))"*"!==t[e]&&("*"===n?t[e]="*":Array.isArray(t[e])&&Array.isArray(n)&&(t[e]=[...new Set([...t[e],...n])]))}}else n[e]=t[e];return n});return t}const go=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}(ho(U([mo(e._novip),vo(e._novip)]).pipe(W(([{selfMembers:e,realms:t,userId:n},r])=>({selfMembers:e,realms:t,userId:n,globalRoles:r}))),{selfMembers:[],realms:[],userId:Te.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:"*"}:bo(...i,...s)})}).reduce((e,t)=>Object.assign(Object.assign({},e),{[t.realmId]:t}),{[n]:{realmId:n,owner:n,name:n,permissions:{manage:"*"}}});return o}));class _o{constructor(e,t,n){this.permissions=e||{},this.tableName=t,this.isOwner=n}add(...e){var t;return"*"===this.permissions.manage||(!!(null===(t=this.permissions.manage)||void 0===t?void 0:t.includes(this.tableName))||("*"===this.permissions.add||!!e.every(e=>{var t;return null===(t=this.permissions.add)||void 0===t?void 0:t.includes(e)})))}update(...e){var t,n;if(this.isOwner||"*"===this.permissions.manage)return!0;if(null===(t=this.permissions.manage)||void 0===t?void 0:t.includes(this.tableName))return!0;if("*"===this.permissions.update)return e.every(e=>"owner"!==e);const r=null===(n=this.permissions.update)||void 0===n?void 0:n[this.tableName];return"*"===r?e.every(e=>"owner"!==e):e.every(e=>null==r?void 0:r.some(t=>t===e||"*"===t&&"owner"!==e))}delete(){var e;return!(!this.isOwner&&"*"!==this.permissions.manage)||!!(null===(e=this.permissions.manage)||void 0===e?void 0:e.includes(this.tableName))}}const wo=fo(e=>{const t=yo(e._novip).pipe(N(t=>o(()=>e.members.where({email:t.email||""}).toArray()))),n=go(e._novip),r=mo(e._novip);return ho(U([t,r,n]).pipe(W(([t,n,r])=>{const o=(e,t)=>Object.assign(Object.assign({},e),{[t.id]:Object.assign(Object.assign({},t),{realm:r[t.realmId]})}),i=t.reduce(o,{}),s=n.selfMembers.reduce(o,i);return Object.values(s).filter(e=>!e.accepted).map(t=>Object.assign(Object.assign({},t),{accept(){return Z(this,void 0,void 0,function*(){yield e.members.update(t.id,{accepted:new Date})})},reject(){return Z(this,void 0,void 0,function*(){yield e.members.update(t.id,{rejected:new Date})})}}))})),[])});function ko(e){return t=>{var r;const o=t.doc;if(!o)throw new Error("Internal error: DexieYProvider.createYHandler called without a doc. This is unexpected.");const{parentTable:i}=o.meta||{};if(!(null===(r=e.cloud.schema)||void 0===r?void 0:r[i].markedForSync))return;let s;Object.defineProperty(t,"awareness",{get:()=>s||(s=function(e,t,r){const{parentTable:o,parentId:i,parentProp:s,updatesTable:a}=t.meta,c=new Y.Awareness(t),l=Nn(t);return c.on("update",({added:n,updated:i,removed:a},l)=>{const u=n.concat(i).concat(a),d=e.cloud.currentUser.value;if("server"!==l&&d.isLoggedIn&&!In(e)){const n=Y.encodeAwarenessUpdate(c,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})}}),c.on("destroy",()=>{Y.removeAwarenessStates(c,[t.clientID],"provider destroyed")}),(()=>{Z(this,void 0,void 0,function*(){if(r.destroyed)return;let t=!1,c=1;const u=U([e.cloud.webSocketStatus,l.pipe(L(null))]).subscribe(([n])=>{if(r.destroyed)return;t="connected"===n;const o=e.cloud.currentUser.value;"connected"===n&&o.isLoggedIn&&!In(e)&&(++c,d().catch(e=>{}))});function d(){return Z(this,void 0,void 0,function*(){const l=c,u=e.table(a),d=e.$syncState,[f,p]=yield e.transaction("r",d,u,()=>Z(this,void 0,void 0,function*(){const e=yield u.get(Vt),t=yield d.get("syncState");return[(null==e?void 0:e.receivedUntil)||0,(null==t?void 0:t.yServerRevision)||(null==t?void 0:t.serverRevision)]}));if(r.destroyed||c!==l||!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&&c===l&&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)})})(),c}(e,o,t),Ln.set(o,s),s)})}}function So(e){const t="undefined"!=typeof window?window.location.href:"";if(!t)return null;const n=new URL(t).searchParams.get("dxc-auth");if(!n)return null;let r;try{const e=function(e){const t=(e+"=".repeat((4-e.length%4)%4)).replace(/-/g,"+").replace(/_/g,"/");return atob(t)}(n);r=JSON.parse(e)}catch(e){return null}const{code:o,provider:i,state:s,error:a}=r;if(a){if(a.toLowerCase().includes("access_denied")||a.toLowerCase().includes("access denied"))throw new Re("access_denied",i,a);if(a.toLowerCase().includes("email")&&a.toLowerCase().includes("verif"))throw new Re("email_not_verified",i,a);throw new Re("provider_error",i,a)}return o&&i&&s?{code:o,provider:i,state:s}:null}function xo(){var e;if("undefined"==typeof window||!(null===(e=window.history)||void 0===e?void 0:e.replaceState))return;const t=new URL(window.location.href);if(!t.searchParams.has("dxc-auth"))return;t.searchParams.delete("dxc-auth");const n=t.pathname+(t.searchParams.toString()?`?${t.searchParams.toString()}`:"")+t.hash;window.history.replaceState(null,"",n)}function Io(e){return"rlm~"+e}function Oo(e){return e.startsWith("rlm~")?e.substr(4):null}const Co={},Eo=new WeakMap,jo=To("tx"),Po=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 Uo(){jo.run()}function Ao(){Po.run()}function $o(e,t,n){var o,i;const s=null===(i=null===(o=e.schema.yProps)||void 0===o?void 0:o.find(e=>e.prop===t))||void 0===i?void 0:i.updatesTable;if(!s)throw new Error(`Table ${e.name} does not have a Yjs property named ${t}`);Co[s]={trigger:n,parentTable:e.name,prop:t};const a=e.db._novip;let c=Eo.get(a);c||(c=(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",Uo),o):o},table:n=>{const o=t.table(n),i=Co[n];if(!i)return o;const{trigger:s,parentTable:a,prop:c}=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,c);(o&&(null===(n=G.for(o))||void 0===n?void 0:n.refCount)?Po:jo).enqueue(e,a,t,c,s)}break;case"delete":t.trans._rejecting_y_ypdate&&o.getMany({keys:t.keys,trans:t.trans,cache:"immutable"}).then(t=>{const n=new r;for(const{k:e}of t)null!=e&&n.addKey(e);for(const t of n)jo.enqueue(e,a,t.from,c,s)})}return o.mutate(t)}})}})}))(a),Eo.set(a,c)),a.use(c),G.on("beforeunload",Ao)}const Do={nameSuffix:!0};function Lo(t){const n=t.name,r=yo(t),i=[];let s=!1,a=null,c=null,l=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(V(500)):r;case"connecting":return"not-started"===n||"error"===n?r:r.pipe(V(4e3));default:return r}}));return U([n,e.syncStateChangedEvent.pipe(z({phase:"initial"})),yo(e.dx._novip),Pn]).pipe(W(([t,n,r,o])=>{var i;if((null===(i=r.license)||void 0===i?void 0:i.status)&&"ok"!==r.license.status)return{phase:"offline",status:"offline",license:r.license.status};let{phase:s,error:a,progress:c}=n,l=t;return"error"===s&&(l="error"),"not-started"===t&&("pushing"!==s&&"pulling"!==s||(l="connecting")),"error"!==e.cloud.syncState.value.phase||"pushing"!==n.phase&&"pulling"!==n.phase||(l="connecting"),o||(l="disconnected"),{phase:s,error:a,progress:c,status:Mt?l:"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():[],[C,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(C&&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),K(1)),w.cloud.persistedSyncState.pipe(q(1),K(1))]));const e=ko(w);G.on.new.subscribe(e),w.dx.once("close",()=>{G.on.new.unsubscribe(e)})}let j=!1,P=yield w.getCurrentUser();if(c&&!w.cloud.isServiceWorkerDB){const e=c;c=null;try{yield ke(w.cloud.userInteraction,"Authentication Error",{type:"error",messageCode:"GENERIC_ERROR",message:e.message,messageParams:{provider:e.provider||"unknown"}}),xo(),r.next(Object.assign(Object.assign({},r.value),{oauthInProgress:!1}))}catch(e){}}if(a&&!w.cloud.isServiceWorkerDB){const{code:e,provider:t}=a;a=null;try{j=yield He(w,{oauthCode:e,provider:t}),P=yield w.getCurrentUser(),xo()}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),K(1))):"object"==typeof A?(!P.isLoggedIn||A.userId&&P.userId!==A.userId||A.email&&P.email!==A.email)&&(j=yield He(w,A)):P.isLoggedIn||(j=yield He(w))),!P.isLoggedIn||E&&E.includes(P.userId)||(j=!0),l&&l.stop(),l=null,d();const $=(null===(y=w.cloud.options)||void 0===y?void 0:y.databaseUrl)&&(!C||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&&(l=qn(w,w.cloud.options,w.cloud.schema),l.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=O(n,e.messageProducer);return function t(){return e.cloud.persistedSyncState.pipe(R(e=>null==e?void 0:e.serverRevision),K(1),N(t=>e.cloud.currentUser.pipe(W(e=>[e,t]))),N(([e,t])=>Pn.pipe(W(n=>[n?e:null,t]))),N(([t,n])=>(null==t?void 0:t.isLoggedIn)&&!(null==n?void 0:n.realms.includes(t.userId))?e.cloud.persistedSyncState.pipe(R(e=>(null==e?void 0:e.realms.includes(t.userId))||!1),K(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()}),H(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 Ee(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())):T(()=>n)),H(n=>(e.cloud.webSocketStatus.next("error"),n instanceof Fn?T(()=>n):g(Kn()).pipe(N(()=>t())))))}().subscribe({next:t=>{t&&e.messageConsumer.enqueue(t)},error:e=>{},complete:()=>{}})}(w))})}(t)}catch(e){}}),!0);let u=!1;function d(){if(u)throw new e.DatabaseClosedError}t.once("close",()=>{i.forEach(e=>e.unsubscribe()),i.splice(0,i.length),u=!0,l&&l.stop(),l=null,r.next(Te)});const f=new S;var p;t.cloud={version:"4.3.8",options:Object.assign({},Do),schema:null,get currentUserId(){return r.value.userId||Te.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 He(n,e)})},invites:wo(t),roles:vo(t),configure(e){if(e=t.cloud.options=Object.assign(Object.assign({},t.cloud.options),e),s=!0,e.databaseUrl&&e.nameSuffix&&(t.name=`${n}-${function(e){const t=new URL(e);return"/"===t.pathname?t.hostname.split(".")[0]:t.pathname.split("/")[1]}(e.databaseUrl)}`,on(t).reconfigure()),Jn(t.cloud.schema,t.cloud.options),"undefined"!=typeof window&&window.location)try{const e=So();e&&(a={code:e.code,provider:e.provider})}catch(e){e instanceof Re&&(c=e)}},logout(){return Z(this,arguments,void 0,function*({force:e}={}){e?yield $e(on(t),{deleteUnsyncedData:!0}):yield Ae(on(t))})},getAuthProviders(){return Z(this,void 0,void 0,function*(){const e=t.cloud.options;if(!(null==e?void 0:e.databaseUrl))throw new Error("Dexie Cloud not configured. Call db.cloud.configure() first.");const n=!1!==e.socialAuth;return Be(e.databaseUrl,n)})},sync(){return Z(this,arguments,void 0,function*({wait:e,purpose:n}={wait:!0,purpose:"push"}){var r;void 0===e&&(e=!0);const i=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 Hn(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 Hn(i),n=yield i.getPersistedSyncState();if((null==n?void 0:n.timestamp)!==(null==t?void 0:t.timestamp)&&(null==n?void 0:n.error))throw new Error("Sync error: "+n.error);return e}))).pipe(R(e=>!e))))}})},permissions:(e,n)=>function(e,t,n){if(!t)throw new TypeError("Cannot check permissions of undefined or null. A Dexie Cloud object with realmId and owner expected.");const{owner:r,realmId:o}=t;if(!n){if("function"!=typeof t.table)throw new TypeError("Missing 'table' argument to permissions and table could not be extracted from entity");n=t.table()}const i=go(e),s=t=>{const i=t[o||e.cloud.currentUserId];return i?new _o(i.permissions,n,void 0===o||o===e.cloud.currentUserId||r===e.cloud.currentUserId):new _o({},n,!r||r===e.cloud.currentUserId)},a=i.pipe(W(s));return a.getValue=()=>s(i.getValue()),a}(t._novip,e,n)},t.Version.prototype._parseStoresSpec=e.override(t.Version.prototype._parseStoresSpec,e=>Cn(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(On({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,c;const l=e.trans;if(l.disableChangeTracking)return n.mutate(e);const u=null!==(o=null===(r=l.currentUser)||void 0===r?void 0:r.userId)&&void 0!==o?o:Te.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===(c=(a=n.schema.primaryKey).extractKey)||void 0===c?void 0:c.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.8",e.Cloud=Lo;export{Lo as default,$o as defineYDocTrigger,Lo as dexieCloud,Oo as getTiedObjectId,Io as getTiedRealmId,so as resolveText};
|
|
2
2
|
//# sourceMappingURL=dexie-cloud-addon.min.js.map
|