dexie-cloud-addon 4.2.4 → 4.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dexie-cloud-import.json +2 -1
- package/dist/modern/dexie-cloud-addon.js +146 -168
- 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 +146 -168
- 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 +1623 -2458
- 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 +2003 -2838
- 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 +11 -8
- package/dist/umd/DISABLE_SERVICEWORKER_STRATEGY.d.ts +0 -1
- package/dist/umd/DXCWebSocketStatus.d.ts +0 -1
- package/dist/umd/DexieCloudAPI.d.ts +0 -75
- package/dist/umd/DexieCloudOptions.d.ts +0 -27
- package/dist/umd/DexieCloudSyncOptions.d.ts +0 -4
- package/dist/umd/DexieCloudTable.d.ts +0 -18
- package/dist/umd/InvalidLicenseError.d.ts +0 -5
- package/dist/umd/Invite.d.ts +0 -8
- package/dist/umd/PermissionChecker.d.ts +0 -15
- package/dist/umd/TSON.d.ts +0 -17
- package/dist/umd/WSObservable.d.ts +0 -72
- package/dist/umd/associate.d.ts +0 -1
- package/dist/umd/authentication/AuthPersistedContext.d.ts +0 -9
- package/dist/umd/authentication/TokenErrorResponseError.d.ts +0 -10
- package/dist/umd/authentication/TokenExpiredError.d.ts +0 -3
- package/dist/umd/authentication/UNAUTHORIZED_USER.d.ts +0 -2
- package/dist/umd/authentication/authenticate.d.ts +0 -13
- package/dist/umd/authentication/currentUserObservable.d.ts +0 -1
- package/dist/umd/authentication/interactWithUser.d.ts +0 -21
- package/dist/umd/authentication/login.d.ts +0 -3
- package/dist/umd/authentication/logout.d.ts +0 -5
- package/dist/umd/authentication/otpFetchTokenCallback.d.ts +0 -3
- package/dist/umd/authentication/setCurrentUser.d.ts +0 -14
- package/dist/umd/authentication/waitUntil.d.ts +0 -3
- package/dist/umd/computeSyncState.d.ts +0 -4
- package/dist/umd/createSharedValueObservable.d.ts +0 -3
- package/dist/umd/currentUserEmitter.d.ts +0 -3
- package/dist/umd/db/DexieCloudDB.d.ts +0 -61
- package/dist/umd/db/entities/BaseRevisionMapEntry.d.ts +0 -5
- package/dist/umd/db/entities/EntityCommon.d.ts +0 -5
- package/dist/umd/db/entities/GuardedJob.d.ts +0 -5
- package/dist/umd/db/entities/Member.d.ts +0 -19
- package/dist/umd/db/entities/PersistedSyncState.d.ts +0 -22
- package/dist/umd/db/entities/Realm.d.ts +0 -14
- package/dist/umd/db/entities/Role.d.ts +0 -11
- package/dist/umd/db/entities/UserLogin.d.ts +0 -23
- package/dist/umd/default-ui/Dialog.d.ts +0 -5
- package/dist/umd/default-ui/LoginDialog.d.ts +0 -3
- package/dist/umd/default-ui/Styles.d.ts +0 -3
- package/dist/umd/default-ui/index.d.ts +0 -24
- package/dist/umd/define-ydoc-trigger.d.ts +0 -3
- package/dist/umd/dexie-cloud-addon.d.ts +0 -3
- package/dist/umd/dexie-cloud-client.d.ts +0 -23
- package/dist/umd/errors/HttpError.d.ts +0 -5
- package/dist/umd/extend-dexie-interface.d.ts +0 -23
- package/dist/umd/getGlobalRolesObservable.d.ts +0 -5
- package/dist/umd/getInternalAccessControlObservable.d.ts +0 -12
- package/dist/umd/getInvitesObservable.d.ts +0 -23
- package/dist/umd/getPermissionsLookupObservable.d.ts +0 -16
- package/dist/umd/getTiedRealmId.d.ts +0 -2
- package/dist/umd/helpers/BroadcastedAndLocalEvent.d.ts +0 -8
- package/dist/umd/helpers/CancelToken.d.ts +0 -4
- package/dist/umd/helpers/IS_SERVICE_WORKER.d.ts +0 -1
- package/dist/umd/helpers/SWBroadcastChannel.d.ts +0 -12
- package/dist/umd/helpers/allSettled.d.ts +0 -1
- package/dist/umd/helpers/bulkUpdate.d.ts +0 -4
- package/dist/umd/helpers/computeRealmSetHash.d.ts +0 -2
- package/dist/umd/helpers/date-constants.d.ts +0 -5
- package/dist/umd/helpers/flatten.d.ts +0 -1
- package/dist/umd/helpers/getMutationTable.d.ts +0 -1
- package/dist/umd/helpers/getSyncableTables.d.ts +0 -4
- package/dist/umd/helpers/getTableFromMutationTable.d.ts +0 -1
- package/dist/umd/helpers/makeArray.d.ts +0 -1
- package/dist/umd/helpers/randomString.d.ts +0 -1
- package/dist/umd/helpers/resolveText.d.ts +0 -16
- package/dist/umd/helpers/throwVersionIncrementNeeded.d.ts +0 -1
- package/dist/umd/helpers/visibilityState.d.ts +0 -1
- package/dist/umd/isEagerSyncDisabled.d.ts +0 -2
- package/dist/umd/isFirefox.d.ts +0 -1
- package/dist/umd/isSafari.d.ts +0 -2
- package/dist/umd/mapValueObservable.d.ts +0 -5
- package/dist/umd/mergePermissions.d.ts +0 -2
- package/dist/umd/middleware-helpers/guardedTable.d.ts +0 -11
- package/dist/umd/middleware-helpers/idGenerationHelpers.d.ts +0 -18
- package/dist/umd/middlewares/createIdGenerationMiddleware.d.ts +0 -3
- package/dist/umd/middlewares/createImplicitPropSetterMiddleware.d.ts +0 -3
- package/dist/umd/middlewares/createMutationTrackingMiddleware.d.ts +0 -17
- package/dist/umd/middlewares/outstandingTransaction.d.ts +0 -4
- package/dist/umd/overrideParseStoresSpec.d.ts +0 -4
- package/dist/umd/performInitialSync.d.ts +0 -4
- package/dist/umd/permissions.d.ts +0 -9
- package/dist/umd/prodLog.d.ts +0 -9
- package/dist/umd/service-worker.d.ts +0 -1
- package/dist/umd/sync/DEXIE_CLOUD_SYNCER_ID.d.ts +0 -1
- package/dist/umd/sync/LocalSyncWorker.d.ts +0 -7
- package/dist/umd/sync/SyncRequiredError.d.ts +0 -3
- package/dist/umd/sync/applyServerChanges.d.ts +0 -3
- package/dist/umd/sync/connectWebSocket.d.ts +0 -2
- package/dist/umd/sync/encodeIdsForServer.d.ts +0 -4
- package/dist/umd/sync/extractRealm.d.ts +0 -2
- package/dist/umd/sync/getLatestRevisionsPerTable.d.ts +0 -6
- package/dist/umd/sync/getTablesToSyncify.d.ts +0 -3
- package/dist/umd/sync/isOnline.d.ts +0 -1
- package/dist/umd/sync/isSyncNeeded.d.ts +0 -2
- package/dist/umd/sync/listClientChanges.d.ts +0 -9
- package/dist/umd/sync/listSyncifiedChanges.d.ts +0 -5
- package/dist/umd/sync/messageConsumerIsReady.d.ts +0 -2
- package/dist/umd/sync/messagesFromServerQueue.d.ts +0 -8
- package/dist/umd/sync/modifyLocalObjectsWithNewUserId.d.ts +0 -4
- package/dist/umd/sync/myId.d.ts +0 -1
- package/dist/umd/sync/numUnsyncedMutations.d.ts +0 -2
- package/dist/umd/sync/old_startSyncingClientChanges.d.ts +0 -39
- package/dist/umd/sync/performGuardedJob.d.ts +0 -2
- package/dist/umd/sync/ratelimit.d.ts +0 -3
- package/dist/umd/sync/registerSyncEvent.d.ts +0 -3
- package/dist/umd/sync/sync.d.ts +0 -15
- package/dist/umd/sync/syncIfPossible.d.ts +0 -5
- package/dist/umd/sync/syncWithServer.d.ts +0 -6
- package/dist/umd/sync/triggerSync.d.ts +0 -2
- package/dist/umd/sync/updateBaseRevs.d.ts +0 -5
- package/dist/umd/types/DXCAlert.d.ts +0 -25
- package/dist/umd/types/DXCInputField.d.ts +0 -11
- package/dist/umd/types/DXCUserInteraction.d.ts +0 -93
- package/dist/umd/types/NewIdOptions.d.ts +0 -3
- package/dist/umd/types/SWMessageEvent.d.ts +0 -3
- package/dist/umd/types/SWSyncEvent.d.ts +0 -4
- package/dist/umd/types/SyncState.d.ts +0 -9
- package/dist/umd/types/TXExpandos.d.ts +0 -11
- package/dist/umd/updateSchemaFromOptions.d.ts +0 -3
- package/dist/umd/userIsActive.d.ts +0 -7
- package/dist/umd/verifyConfig.d.ts +0 -2
- package/dist/umd/verifySchema.d.ts +0 -2
- package/dist/umd/yjs/YDexieCloudSyncState.d.ts +0 -3
- package/dist/umd/yjs/YTable.d.ts +0 -3
- package/dist/umd/yjs/applyYMessages.d.ts +0 -9
- package/dist/umd/yjs/awareness.d.ts +0 -3
- package/dist/umd/yjs/createYClientUpdateObservable.d.ts +0 -4
- package/dist/umd/yjs/createYHandler.d.ts +0 -2
- package/dist/umd/yjs/downloadYDocsFromServer.d.ts +0 -3
- package/dist/umd/yjs/getUpdatesTable.d.ts +0 -3
- package/dist/umd/yjs/listUpdatesSince.d.ts +0 -3
- package/dist/umd/yjs/listYClientMessagesAndStateVector.d.ts +0 -26
- package/dist/umd/yjs/reopenDocSignal.d.ts +0 -10
- package/dist/umd/yjs/updateYSyncStates.d.ts +0 -6
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e,{PropModification as t,cmp as n,RangeSet as r,liveQuery as o}from"dexie";import{Encoder as s,writeVarString as i,writeAny as a,writeVarUint8Array as l,writeBigUint64 as c,toUint8Array as u}from"lib0/encoding";import{Decoder as d,readVarString as f,readAny as p,readVarUint8Array as y,readBigUint64 as h,hasContent as v,readUint8 as m}from"lib0/decoding";import{firstValueFrom as b,from as g,filter as _,Observable as w,BehaviorSubject as k,Subject as S,of as x,fromEvent as I,merge as O,switchMap as E,tap as C,mergeMap as T,Subscription as j,throwError as U,combineLatest as A,map as P,share as $,timer as D,startWith as L}from"rxjs";import{filter as R,switchMap as N,delay as B,distinctUntilChanged as M,map as W,tap as F,take as K,catchError as V,debounceTime as H,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,s){function i(e){try{l(r.next(e))}catch(e){s(e)}}function a(e){try{l(r.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}l((r=r.apply(e,t||[])).next())}))}function 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||[]),s=[];return r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r;function i(e){o[e]&&(r[e]=function(t){return new Promise((function(n,r){s.push([e,t,n,r])>1||a(e,t)}))})}function a(e,t){try{!function(e){e.value instanceof Q?Promise.resolve(e.value.v).then(l,c):u(s[0][2],e)}(o[e](t))}catch(e){u(s[0][3],e)}}function l(e){a("next",e)}function c(e){a("throw",e)}function u(e,t){e(t),s.shift(),s.length&&a(s[0][0],s[0][1])}}function 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)}))}}}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 s=t.indexOf(".");if(-1!==s){var i=t.substr(0,s),a=t.substr(s+1);if(""===a)void 0===n?Array.isArray(e)?isNaN(parseInt(i))||e.splice(parseInt(i),1):delete e[i]:e[i]=n;else{var l=e[i];l&&function(e,t){return ne.call(e,t)}(e,i)||(l=e[i]={}),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=se)=>{const n=Buffer.alloc(e);return t(n),n.toString("base64")}:()=>{throw new Error("No implementation of randomString was found")};function se(e){for(let t=0;t<e.length;++t)e[t]=Math.floor(256*Math.random())}function ie(e){return"string"==typeof e||!!(Array.isArray(e)&&e.some((e=>ie(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,s=r[e];if(s)switch(s.type){case"ups":for(const[e,t]of Object.entries(o))re(s.val,e,t);break;case"del":break;case"upd":Object.assign(s.mod,o)}else r[e]={type:"upd",mod:o}}));break;case"delete":o.forEach((e=>{r[e]={type:"del"}}))}return e}function ce(e,t){for(const{table:n,muts:r}of t)for(const t of r)le(e,n,t)}function ue(e){return ee(this,arguments,(function*(){var t,n,r,o;let s=0,i=new Uint8Array(4),a=0,l=[],c=0;try{for(var u,d=!0,f=te(e);!(t=(u=yield Q(f.next())).done);d=!0){o=u.value,d=!1;const e=o,t=new DataView(e.buffer,e.byteOffset,e.byteLength);let n=0;for(;n<e.byteLength;)switch(s){case 0:if(n+4>e.byteLength){for(const t of e.slice(n)){if(4===a)break;i[a++]=t,++n}if(a<4)break}else if(a>0&&a<4)for(const t of e.slice(n,n+4-a))i[a++]=t,++n;case 1:c=4===a?new DataView(i.buffer,0,4).getUint32(0,!1):t.getUint32(n,!1),a?a=0:n+=4;case 2:if(n>=e.byteLength){s=2;break}if(n+c>e.byteLength)l.push(e.slice(n)),c-=e.byteLength-n,s=2,n=e.byteLength;else{if(l.length>0){const t=new Uint8Array(l.reduce(((e,t)=>e+t.byteLength),c));let r=0;for(const e of l)t.set(e,r),r+=e.byteLength;t.set(e.slice(n,n+c),r),l=[],yield yield Q(t)}else yield yield Q(e.slice(n,n+c));n+=c,s=0}}}}catch(e){n={error:e}}finally{try{d||t||!(r=f.return)||(yield Q(r.call(f)))}finally{if(n)throw n.error}}}))}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}}function ge(t,n){return new Promise(((r,o)=>{const s=Object.assign(Object.assign({submitLabel:"Submit",cancelLabel:"Cancel"},n),{onSubmit:e=>{t.next(void 0),r(e)},onCancel:()=>{t.next(void 0),o(new e.AbortError("User cancelled"))}});t.next(s)}))}function _e(e,t,...n){return ge(e,{type:"message-alert",title:t,alerts:n,fields:{},submitLabel:"OK",cancelLabel:null})}function we(e,t,n){return 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 ge(e,{type:"email",title:t,alerts:r?[{type:"error",messageCode:"INVALID_EMAIL",message:"Please enter a valid email address",messageParams:{}}]:[],fields:{email:{type:"email",placeholder:"you@somedomain.com"}}})).email;return r}))}function ke(e,t,n){return 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 ge(e,{type:"otp",title:"Enter OTP",alerts:r,fields:{otp:{type:"otp",label:"OTP",placeholder:"Paste OTP here"}}});return o}))}function Se(e){return Z(this,void 0,void 0,(function*(){var t,n,r;const o=yield e.getCurrentUser(),{accessToken:s,accessTokenExpiration:i,refreshToken:a,refreshTokenExpiration:l,claims:c}=o;if(!s)return null;if((null!==(t=null==i?void 0:i.getTime())&&void 0!==t?t:1/0)>Date.now()&&"ok"===((null===(n=o.license)||void 0===n?void 0:n.status)||"ok"))return o;if(!a)throw new Error("Refresh token missing");if((null!==(r=null==l?void 0:l.getTime())&&void 0!==r?r:1/0)<=Date.now())throw new Error("Refresh token has expired");const u=yield Ie(e.cloud.options.databaseUrl,o);return yield e.table("$logins").update(c.sub,{accessToken:u.accessToken,accessTokenExpiration:u.accessTokenExpiration,claims:u.claims,license:u.license,data:u.data}),u}))}function xe(t,n,r,o,s){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 Ie(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:s,publicKey:i}=yield crypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!1,["sign","verify"]);if(!s||!i)throw new Error("Could not generate RSA keypair");t.nonExportablePrivateKey=s;const a=function(e){const t=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",i));t.publicKey=i;try{const e=yield n({public_key:a,hints:o});if("error"===e.type)throw new be(e);if("tokens"!==e.type)throw new Error(`Unexpected response type from token endpoint: ${e.type}`);return t.accessToken=e.accessToken,t.accessTokenExpiration=new Date(e.accessTokenExpiration),t.refreshToken=e.refreshToken,e.refreshTokenExpiration&&(t.refreshTokenExpiration=new Date(e.refreshTokenExpiration)),t.userId=e.claims.sub,t.email=e.claims.email,t.name=e.claims.name,t.claims=e.claims,t.license={type:e.userType,status:e.claims.license||"ok"},t.data=e.data,null!=e.evalDaysLeft&&(t.license.evalDaysLeft=e.evalDaysLeft),null!=e.userValidUntil&&(t.license.validUntil=new Date(e.userValidUntil)),e.alerts&&e.alerts.length>0&&(yield ge(r,{type:"message-alert",title:"Authentication Alert",fields:{},alerts:e.alerts})),t}catch(t){if(t instanceof be)throw yield _e(r,t.title,{type:"error",messageCode:t.messageCode,message:t.message,messageParams:{}}),t;let n="We're having a problem authenticating right now.";if(t instanceof TypeError){n=void 0!==typeof navigator&&!navigator.onLine?"You seem to be offline. Please connect to the internet and try again.":e.debug||"undefined"!=typeof location&&("localhost"===location.hostname||"127.0.0.1"===location.hostname)?`Could not connect to server. Please verify that your origin '${location.origin}' is whitelisted using \`npx dexie-cloud whitelist\``:"Could not connect to server. Please verify the connection.",yield _e(r,"Authentication Failed",{type:"error",messageCode:"GENERIC_ERROR",message:n,messageParams:{}}).catch((()=>{}))}throw t}}))}(n,r,o,s)}))}function Ie(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),s=yield crypto.subtle.sign(r,t.nonExportablePrivateKey,o),i=me(s),a={grant_type:"refresh_token",refresh_token:t.refreshToken,scopes:["ACCESS_DB"],signature:i,signing_algorithm:r,time_stamp:n},l=yield fetch(`${e}/token`,{body:JSON.stringify(a),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"});if(200!==l.status)throw new Error(`RefreshToken: Status ${l.status} from ${e}/token`);const c=yield l.json();if("error"===c.type)throw new 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 Oe=new WeakMap;class Ee{constructor(e,t){Oe.set(this,e),Object.assign(this,t)}static load(e,t){return e.table("$logins").get(t).then((n=>new Ee(e,n||{userId:t,claims:{sub:t},lastLogin:new Date(0)})))}save(){return Z(this,void 0,void 0,(function*(){Oe.get(this).table("$logins").put(this)}))}}const Ce={userId:"unauthorized",name:"Unauthorized",claims:{sub:"unauthorized"},lastLogin:new Date(0)};try{Object.freeze(Ce),Object.freeze(Ce.claims)}catch(e){}function Te(e,t){return b(g(e).pipe(_(t)))}function je(e){return Z(this,void 0,void 0,(function*(){const t=yield Ue(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 ge(e,{type:"logout-confirmation",title:"Confirm Logout",alerts:r,fields:{},submitLabel:"Confirm logout",cancelLabel:"Cancel"}).then((()=>!0)).catch((()=>!1))}))}(e.cloud.userInteraction,e.cloud.currentUserId,t)))throw new Error("User cancelled logout due to unsynced changes");yield Ue(e,{deleteUnsyncedData:!0})}}))}function Ue(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"))),s=(yield Promise.all(o.map((e=>n.table(e).count())))).reduce(((e,t)=>e+t),0);if(s>0&&!t)return[s,!1];e.$syncState.delete("syncState");for(const t of e.dx.tables)"$jobs"!==t.name&&"$syncState"!==t.name&&t.clear();return[s,!0]}))));return r&&(yield Te(e.cloud.currentUser,(e=>e.userId===Ce.userId)),yield e.cloud.sync({purpose:"pull",wait:!0})),n}))}class Ae extends Error{constructor(e,t){super(t||`${e.status} ${e.statusText}`),this.httpStatus=e.status}get name(){return"HttpError"}}function Pe(e,...t){globalThis.console[e](...t)}function $e(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 Se(e),!1}const s=new Ee(e,{claims:{},lastLogin:new Date(0)});return yield xe(e.cloud.options.databaseUrl,s,e.cloud.options.fetchTokens||function(e){const{userInteraction:t}=e.cloud;return function(n){return Z(this,arguments,void 0,(function*({public_key:n,hints:r}){var o;let s;const i=null===(o=e.cloud.options)||void 0===o?void 0:o.databaseUrl;if(!i)throw new Error("No database URL given.");if("demo"===(null==r?void 0:r.grant_type))s={demo_user:yield we(t,"Enter a demo user email",(null==r?void 0:r.email)||(null==r?void 0:r.userId)),grant_type:"demo",scopes:["ACCESS_DB"],public_key:n};else if((null==r?void 0:r.otpId)&&r.otp)s={grant_type:"otp",otp_id:r.otpId,otp:r.otp,scopes:["ACCESS_DB"],public_key:n};else{const e=yield we(t,"Enter email address",null==r?void 0:r.email);s=/@demo.local$/.test(e)?{demo_user:e,grant_type:"demo",scopes:["ACCESS_DB"],public_key:n}:{email:e,grant_type:"otp",scopes:["ACCESS_DB"]}}const a=yield fetch(`${i}/token`,{body:JSON.stringify(s),method:"post",headers:{"Content-Type":"application/json",mode:"cors"}});if(200!==a.status){const e=yield a.text();throw yield _e(t,"Token request failed",{type:"error",messageCode:"GENERIC_ERROR",message:e,messageParams:{}}).catch((()=>{})),new Ae(a,e)}const l=yield a.json();if("tokens"===l.type||"error"===l.type)return l;if("otp"===s.grant_type&&"email"in s){if("otp-sent"!==l.type)throw new Error(`Unexpected response from ${i}/token`);const e=yield ke(t,s.email),r=Object.assign(Object.assign({},s),{otp:e||"",otp_id:l.otp_id,public_key:n});let o=yield fetch(`${i}/token`,{body:JSON.stringify(r),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"});for(;401===o.status;){const e=yield o.text();r.otp=yield ke(t,s.email,{type:"error",messageCode:"INVALID_OTP",message:e,messageParams:{}}),o=yield fetch(`${i}/token`,{body:JSON.stringify(r),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"})}if(200!==o.status){const e=yield o.text();throw new Ae(o,e)}return yield o.json()}throw new Error(`Unexpected response from ${i}/token`)}))}}(e),e.cloud.userInteraction,t),o!==Ce.userId&&s.userId!==o&&(yield je(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&&(Pe("debug","Login context property names:",Object.keys(t)),Pe("debug","Login context property names:",Object.keys(t)),Pe("debug","Login context:",t),Pe("debug","Login context JSON:",JSON.stringify(t)))}catch(e){}throw e}})))),yield Te(e.cloud.currentUser,(e=>e.userId===t.userId))}))}(e,s),pe(e,"pull"),s.userId!==o}))}const De={},Le="undefined"!=typeof self&&self.document&&"undefined"!=typeof navigator&&navigator.serviceWorker;Le&&Le.ready.then((e=>De.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 Re{constructor(e){this.name=e}subscribe(e){if(!Le)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 Le.addEventListener("message",t),()=>Le.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}))):De.registration&&(null===(t=De.registration.active)||void 0===t||t.postMessage({type:`sw-broadcast-${this.name}`,message:e}))}}const Ne=globalThis["lbc-events"]||(globalThis["lbc-events"]=new Map);class Be extends w{constructor(e){const t="undefined"==typeof BroadcastChannel?new Re(e):new BroadcastChannel(e);super((n=>{function r(e){n.next(e.detail)}function o(e){n.next(e.data)}let s;!function(e,t){Ne.has(e)?Ne.get(e).push(t):Ne.set(e,[t])}(`lbc-${e}`,r);try{t instanceof Re?s=t.subscribe((e=>n.next(e))):t.addEventListener("message",o)}catch(e){}return()=>{!function(e,t){const n=Ne.get(e);if(n){const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}(`lbc-${e}`,r),t instanceof Re?s():t.removeEventListener("message",o)}})),this.name=e,this.bc=t}next(e){this.bc.postMessage(e);!function(e){const t=Ne.get(e.type);t&&t.forEach((t=>{try{t(e)}catch(e){}}))}(new CustomEvent(`lbc-${this.name}`,{detail:e}))}}function Me(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 We(e){return Object.entries(e.cloud.schema||{}).filter((([,{markedForSync:e}])=>e)).map((([t])=>e.tables.filter((({name:e})=>e===t))[0])).filter((e=>e))}function Fe(e){return`$${e}_mutations`}function Ke(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 Ve=[].concat;function He(e){return Ve.apply([],e)}function ze(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=Ke(e.name),o=n[t];let s=o?e.where("rev").above(o):e;r<1/0&&(s=s.limit(r));let i=yield s.toArray();i=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}(i),i=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=new Set(Object.keys(e.changeSpecs[0])),r=""+e.keys[0],o=t.get(r);for(let t=o.length-1;t>=0;--t){const{txid:r,updateSpec:s}=o[t];if(r===e.txid)break;for(const e of Object.keys(s))n.delete(e)}return 0!==n.size})),e}(i);return i.map((e=>({table:t,mut:e})))}))))),s=He(o).sort(((e,t)=>e.mut.txid===t.mut.txid?e.mut.opNo-t.mut.opNo:e.mut.ts-t.mut.ts)),i=[];let a=null,l=null;for(const{table:e,mut:t}of s)a&&a.table===e&&l===t.txid?a.muts.push(t):(a={table:e,muts:[t]},l=t.txid,i.push(a));return i}))}function qe(e){const t=new Uint8Array(e);if("undefined"!=typeof crypto)crypto.getRandomValues(t);else for(let n=0;n<e;n++)t[n]=Math.floor(256*Math.random());if("undefined"!=typeof Buffer&&Buffer.from)return Buffer.from(t).toString("base64");if("undefined"!=typeof btoa)return btoa(String.fromCharCode.apply(null,t));throw new Error("No btoa or Buffer available")}const{toString:Je}={};const Ge={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 Ye(...e){const t=e.reduce(((e,t)=>({...e,...t})),e.reduce(((e,t)=>({...t,...e})),{})),n=new WeakMap;return{stringify(e,r,o){const s=JSON.stringify(e,(function(e){const o=this[e],s=function(e){const r=typeof e;switch(typeof e){case"object":case"function":{if(null===e)return null;const r=Object.getPrototypeOf(e);if(!r)return Ge;let s=n.get(r);if(void 0!==s)return s;const i=(o=e,Je.call(o).slice(8,-1)),a=Object.entries(t).find((([t,n])=>{var r,o;return null!==(o=null===(r=null==n?void 0:n.test)||void 0===r?void 0:r.call(n,e,i))&&void 0!==o?o:t===i}));return s=null==a?void 0:a[1],s||(s=Array.isArray(e)?null:"function"==typeof e?t.function||null:Ge),n.set(r,s),s}default:return t[r]}var o}(o);return s?s.replace(o,r,t):o}),o);return s},parse(e,n){const r=[];return JSON.parse(e,(function(e,o){const s=null==o?void 0:o.$t;if(s){const e=t[s];o=e?e.revive(o,n,t):o}let i=r[r.length-1];if(i&&i[0]===o){o={...o};for(const e of i[1])delete o[e];for(const[e,t]of Object.entries(i[2]))o[e]=t;r.pop()}if(void 0===o||"$"===e[0]&&"$t"!==e){let t,n;i=r[r.length-1],i&&i[0]===this?(t=i[1],n=i[2]):r.push([this,t=[],n={}]),"$"===e[0]&&"$t"!==e?(t.push(e),n[e.substr(1)]=o):n[e]=void 0}return o}))}}}const Ze={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 Xe={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 Qe={bigint:{replace:e=>({$t:"bigint",v:""+e}),revive:e=>BigInt(e.v)}};var et={Date:{replace:e=>({$t:"Date",v:isNaN(e.getTime())?"NaN":e.toISOString()}),revive:({v:e})=>new Date("NaN"===e?NaN:Date.parse(e))}},tt={Set:{replace:e=>({$t:"Set",v:Array.from(e.entries())}),revive:({v:e})=>new Set(e)}},nt={Map:{replace:e=>({$t:"Map",v:Array.from(e.entries())}),revive:({v:e})=>new Map(e)}};const rt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0;var ot=["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=rt[t];return o&&new o(r.ArrayBuffer.revive({v:e},n,r))}}})),{});function st(e){return function(e){for(var t="",n=0,r=e.length;n<r;n++)t+=lt[e[n]];return t}(me(e))}function it(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+=at[e[n]];return t}(e))}const at={"-":"=",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:"+","|":"/"},lt={};for(const e of Object.keys(at))lt[at[e]]=e;var ct={ArrayBuffer:{replace:e=>({$t:"ArrayBuffer",v:st(e)}),revive:({v:e})=>{const t=it(e);return t.buffer.byteLength===t.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}}};class ut{constructor(e,t){this.buf=e,this.type=t}}function dt(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 ft(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;++n)t[n]=e.charCodeAt(n);return t.buffer}var pt={Blob:{test:(e,t)=>"Blob"===t||e instanceof ut,replace:e=>({$t:"Blob",v:me(e instanceof ut?e.buf:ft(dt(e))),type:e.type}),revive:({type:e,v:t})=>{const n=ve(t);return void 0!==typeof Blob?new Blob([n]):new ut(n.buffer,e)}}};const yt={...Xe,...Qe,...et,...tt,...nt,...ot,...ct,...pt};function ht(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 vt={undefined:{replace:()=>({$t:"undefined"}),revive:()=>{}}},mt={File:{test:(e,t)=>"File"===t,replace:e=>({$t:"File",v:me(ft(dt(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 bt="function"==typeof BigInt&&"bigint"==typeof BigInt(0);class gt{toString(){return this.v}constructor(e){this.v=e}}const _t=bt?{}:{bigint:{test:e=>e instanceof gt,replace:e=>Object.assign({$t:"bigint"},e),revive:({v:e})=>new gt(e)}},wt=Object.assign(Object.assign(Object.assign(Object.assign({},vt),_t),mt),{PropModification:{test:e=>e instanceof t,replace:e=>Object.assign({$t:"PropModification"},e["@@propmod"]),revive:e=>{var n=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}(e,["$t"]);return new t(n)}}}),kt=Ye(yt,wt),St=function(...e){const t=Ye(yt,Ze,...e);return{toBinary(e){const[t,n]=this.stringify(e),r=new ArrayBuffer(4);return new DataView(r).setUint32(0,t.size),new Blob([r,t,n])},stringify(e){const n=[],r=t.stringify(e,n),o=new Blob(n.map((e=>{const t=new ArrayBuffer(4);return new DataView(t).setUint32(0,"byteLength"in e?e.byteLength:e.size),new Blob([t,e])})));return[o,r]},async parse(e,n){let r=0;const o=[],s=await ht(n),i=new DataView(s);for(;r<s.byteLength;){const e=i.getUint32(r);r+=4;const t=s.slice(r,r+e);r+=e,o.push(t)}return t.parse(e,o)},async fromBinary(e){const t=new DataView(await ht(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)}}}(wt);function xt(t,n,r){const o=[];for(let s of r){const{table:r,muts:i}=s,a=t.tables.find((e=>e.name===r));if(!a)throw new Error(`Internal error: table ${r} not found in DBCore schema`);const{primaryKey:l}=a;let c=s;i.forEach(((t,r)=>{const o=!l.outbound&&("upsert"===t.type||"insert"===t.type);t.keys.forEach(((t,i)=>{if(Array.isArray(t)){c===s&&(c=It(s,o));const e=c.muts[r],n=JSON.stringify(t);e.keys[i]=n}else if("#"===t[0]){c===s&&(c=It(s,o));const a=c.muts[r];if(!n.isLoggedIn)throw new Error("Internal error: Cannot sync private IDs before authenticated");const u=`${t}:${n.userId}`;a.keys[i]=u,o&&e.setByKeyPath(a.values[i],l.keyPath,u)}}))})),o.push(c)}return o}function It(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 Ot=new WeakMap;function Et(e){return Z(this,void 0,void 0,(function*(){var t,n;const r=(null!==(n=null===(t=Ot.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 Ct(e,t,n,r,o,s,i,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 Se(o),d=null==u?void 0:u.accessToken;d&&(c.Authorization=`Bearer ${d}`);const f={v:2,dbID:null==n?void 0:n.remoteDbId,clientIdentity:a,schema:i||{},lastPull:n?{serverRevision:n.serverRevision,yServerRevision:n.yServerRevision,realms:n.realms,inviteRealms:n.inviteRealms}:void 0,baseRevs:r,changes:xt(o.dx.core.schema,l,e),y:t,dxcv:o.cloud.version};o.syncStateChangedEvent.next({phase:"pushing"});const p=kt.stringify(f),y=yield fetch(`${s}/sync`,{method:"post",headers:c,credentials:"include",body:p});if(o.syncStateChangedEvent.next({phase:"pulling"}),function(e,t){const n=t.headers.get("Ratelimit-Limit"),r=t.headers.get("Ratelimit-Remaining"),o=t.headers.get("Ratelimit-Reset");if(n&&r&&o){const t=Number(n),s=Math.max(0,Number(r)),i=Number(o);if(s<t/2){const t=Math.ceil(i/(s+1));Ot.set(e,new Date(Date.now()+1e3*t))}else Ot.delete(e)}}(o,y),!y.ok)throw new Ae(y);if("application/x-bison"===y.headers.get("content-type"))return St.fromBinary(yield y.blob());{const e=yield y.text();return kt.parse(e)}}))}function Tt(t){if(null==t?void 0:t.cancelled)throw new e.AbortError("Operation was cancelled")}let jt=!1;function Ut(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 At(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 Pt(t,r,o){return Z(this,void 0,void 0,(function*(){const s=yield t.bulkGet(r),i=[],a=[];r.forEach(((r,l)=>{const c=s[l];if(c){for(const[s,i]of Object.entries(o[l]))if(s===t.schema.primKey.keyPath){if(0!==n(i,r))throw new Error("Cannot change primary key")}else e.setByKeyPath(c,s,i);i.push(r),a.push(c)}})),yield null==t.schema.primKey.keyPath?t.bulkPut(a,i):t.bulkPut(a)}))}function $t(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:s}=t.core.schema,i=e=>{switch(e[0]){case"[":if(e.endsWith("]"))try{return JSON.parse(e)}catch(e){}return e;case"#":return e.endsWith(":"+n.cloud.currentUserId)?e.substr(0,e.length-n.cloud.currentUserId.length-1):e;default:return e}};for(const n of o){const r=n.keys.map(i);switch(n.type){case"insert":s.outbound?yield t.bulkAdd(n.values,r):(r.forEach(((t,r)=>{e.setByKeyPath(n.values[r],s.keyPath,t)})),yield t.bulkAdd(n.values));break;case"upsert":s.outbound?yield t.bulkPut(n.values,r):(r.forEach(((t,r)=>{e.setByKeyPath(n.values[r],s.keyPath,t)})),yield t.bulkPut(n.values));break;case"modify":1===r.length?yield t.update(r[0],n.changeSpec):yield t.where(":id").anyOf(r).modify(n.changeSpec);break;case"update":yield Pt(t,r,n.changeSpecs);break;case"delete":yield t.bulkDelete(r)}}}}))}"undefined"!=typeof self&&"undefined"!=typeof navigator&&(jt=navigator.onLine,self.addEventListener("online",(()=>jt=!0)),self.addEventListener("offline",(()=>jt=!1)));const Dt="dexie-cloud-syncer";function Lt(e,t){return e.where("i").between(t,1/0,!0).toArray()}function Rt(e,t,n){var r,o,s;if(!e.dx._allTables[t])return;const i=null===(s=null===(o=null===(r=e.table(t))||void 0===r?void 0:r.schema.yProps)||void 0===o?void 0:o.find((e=>e.prop===n)))||void 0===s?void 0:s.updatesTable;return i&&e.dx._allTables[i]?e.table(i):void 0}function Nt(e,t){return Z(this,void 0,void 0,(function*(){var r;const o={};let s,i=!1;for(const a of e)try{switch(a.type){case"u-s":{const e=Rt(t,a.table,a.prop);if(e){const t={k:a.k,u:a.u};a.r&&(t.r=a.r,s=a.r),o[e.name]=yield e.add(t)}break}case"u-ack":{const e=Rt(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(Dt);yield t.table(e.name).put(Object.assign(Object.assign({},n||{i:Dt}),{unsentFrom:Math.max((null==n?void 0:n.unsentFrom)||1,a.i+1)}))})))));break}case"u-reject":{const e=Rt(t,a.table,a.prop);if(!e)break;const o=null===(r=yield e.get(a.i))||void 0===r?void 0:r.k;if(null!=o){yield t.transaction("rw",e,(t=>(t.idbtrans._rejecting_y_ypdate=!0,e.where("i").aboveOrEqual(a.i).filter((e=>0===n(e.k,o)&&1==(1&(e.f||0)))).delete())));const r=G.getDocCache(t.dx).find(a.table,o,a.prop);r&&r.destroy()}break}case"in-sync":{const e=G.getDocCache(t.dx).find(a.table,a.k,a.prop);e&&!e.isSynced&&e.emit("sync",[!0,e]);break}case"y-complete-sync-done":s=a.yServerRev;break;case"outdated-server-rev":i=!0}}catch(e){}return{receivedUntils:o,resyncNeeded:i,yServerRevision:s}}))}const Bt=1,Mt=2,Wt=3;function Ft(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 s=yield Se(t),i={"Content-Type":"application/json",Accept:"application/octet-stream"};s&&(i.Authorization=`Bearer ${s.accessToken}`);const a=yield fetch(`${n}/y/download`,{body:kt.stringify({downloadedRealms:r||{}}),method:"POST",headers:i,credentials:"include"});if(!a.ok)throw new Error(`Failed to download Yjs documents from server. Status: ${a.status}`);yield async function(e,...t){var n,r,o;let s=e();for(let e=0;e<t.length;e++)s=t[e](s);try{for(var i,a=!0,l=te(s);!(n=(i=await l.next()).done);a=!0)i.value,a=!1}catch(e){r={error:e}}finally{try{a||n||!(o=l.return)||await o.call(l)}finally{if(r)throw r.error}}}(function(e){return function(){return ee(this,arguments,(function*(){if(!e.body)throw new Error("Response body is not readable");const t=e.body.getReader();try{for(;;){const{done:e,value:n}=yield Q(t.read());if(e)return yield Q(void 0);yield yield Q(n)}}finally{t.releaseLock()}}))}}(a),ue,(function(r){return ee(this,arguments,(function*(){var o,s,i,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=Rt(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 Bt:yield Q(b(!0)),l=f(e);break;case Mt:yield Q(b(!1)),c=f(e),u=f(e);break;case Wt:{const t=p(e),n=y(e);h.push({k:t,u:n});break}}yield Q(b(!1))}}catch(e){s={error:e}}finally{try{_||o||!(i=w.return)||(yield Q(i.call(w)))}finally{if(s)throw s.error}}yield Q(b(!0))}catch(t){throw t instanceof e.DexieError||(yield Q(b(!1))),t}}))}))}))}const Kt="currentSyncWorker";function Vt(e,t,n,r){return Ht(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):jt&&(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 Vt(e,t,n,Object.assign(Object.assign({},r),{retryImmediatelyOnFetchError:!1}))):(yield e.$syncState.update("syncState",{timestamp:new Date,error:""+o}),e.syncStateChangedEvent.next({phase:jt?"error":"offline",error:new Error(""+(null==o?void 0:o.message)||o)}),Promise.reject(o))}))))}function Ht(e,t,n){return Z(this,arguments,void 0,(function*(e,t,n,{isInitialSync:r,cancelToken:o,justCheckIfNeeded:s,purpose:i}={isInitialSync:!1}){var a;if(!(null===(a=e.cloud.options)||void 0===a?void 0:a.databaseUrl))throw new Error("Internal error: sync must not be called when no databaseUrl is configured");const{databaseUrl:l}=t,c=yield e.getCurrentUser(),u=c.isLoggedIn?We(e):[],d=u.map((t=>e.table(Fe(t.name)))),f=yield e.getPersistedSyncState(),p=c.isLoggedIn,y=p?function(e,t){const n=(null==t?void 0:t.syncedTables)||[];return We(e).filter((e=>!n.includes(e.name)))}(e,f):[];Tt(o);const h=y.length>0;if(h){if(s)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!==Ce.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!==Ce.userId||(e.owner=t.userId)})):yield n.toCollection().modify((e=>{e.realmId&&r.has(e.realmId)||(e.owner&&e.owner!==Ce.userId||(e.owner=t.userId),e.realmId&&e.realmId!==Ce.userId||(e.realmId=t.userId))})))}))}(y,c,null==f?void 0:f.realms)})))),Tt(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 s=yield ze(d,e);const i=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 s=e.table(t.updatesTable),i=yield s.get(Dt),a=(null==i?void 0:i.unsentFrom)||1,l=(null==i?void 0:i.receivedUntil)||0,c=Math.min(a,l+1),u=yield Lt(s,c);u.length>0&&(r[s.name]=u[u.length-1].i);const d={};for(const e of u){const t=1==(1&(e.f||0));if(t&&e.i<a)continue;const n=JSON.stringify(e.k)+"/"+t;let r=d[n];r?(r.u.push(e.u),r.i=Math.max(e.i,r.i)):(d[n]=r={i:e.i,k:e.k,isLocal:t,u:[]},r.u.push(e.u))}for(const{k:e,isLocal:r,u:s,i:i}of Object.values(d)){const a=1===s.length?s[0]:J.mergeUpdatesV2(s);if(r)n.push({type:"u-c",table:o.name,prop:t.prop,k:e,u:a,i:i});else{const r=J.encodeStateVectorFromUpdateV2(a);n.push({type:"sv",table:o.name,prop:t.prop,k:e,sv:r})}}}return{yMessages:n,lastUpdateIds:r}}))}(e,u);if(Tt(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-${qe(8)}`;if(t.isLoggedIn&&e.length>0){const s=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 i=n[e.name],a=(null==i?void 0:i.generatedGlobalId)?e.filter((e=>{return r(e),!s.has(e.realmId||"")&&(t=r(e),!(n=null==i?void 0:i.idPrefix)||"string"==typeof t&&t.startsWith(n));var t,n})):e.filter((e=>{const t=r(e);return!s.has(e.realmId||"")&&ie(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 Tt(o),s=s.concat(a),[s,t,r,i]}return[s,t,r,i]})))),w=v.some((e=>e.muts.some((e=>e.keys.length>0))))||g.some((e=>"u-c"===e.type));if(s)return w;if("push"===i&&!w)return!1;const k=At(v,null==m?void 0:m.latestRevisions),S=(null==m?void 0:m.clientIdentity)||oe(16);Tt(o);const x=yield Ct(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 ze(d,e,{since:k});for(const t of d){const n=Ke(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()])}At(r,k),yield Ut(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,s=n?n.realms:[],i=n?n.inviteRealms:[],a=new Set(t.realms),l=new Set(t.realms.concat(t.inviteRealms));for(const e of s)a.has(e)||(o.add(e),l.has(e)||r.add(e));for(const e of i.concat(s))l.has(e)||r.add(e);if(r.size>0||o.size>0){const t=We(e);for(const e of t){let t=["realms","members","roles"].includes(e.name)?r:o;0!==t.size&&(e.schema.indexes.some((e=>"realmId"===e.keyPath||Array.isArray(e.keyPath)&&"realmId"===e.keyPath[0]))?yield e.where("realmId").anyOf([...t]).delete():yield e.filter((e=>!!(null==e?void 0:e.realmId)&&t.has(e.realmId))).delete())}}if(o.size>0&&(null==n?void 0:n.yDownloadedRealms))for(const e of o)delete n.yDownloadedRealms[e]}))}(e,x,o);const s=o||{syncedTables:[],latestRevisions:{},realms:[],inviteRealms:[],clientIdentity:S};p&&(s.syncedTables=u.map((e=>e.name)).concat(y.map((e=>e.name)))),s.latestRevisions=k,s.remoteDbId=x.dbId,s.initiallySynced=!0,s.realms=x.realms,s.inviteRealms=x.inviteRealms,s.serverRevision=x.serverRevision,s.yServerRevision=x.serverRevision,s.timestamp=new Date,delete s.error;const i=zt(x.changes,r);if(yield $t(i,e),x.yMessages){const{receivedUntils:t,resyncNeeded:n,yServerRevision:r}=yield Nt(x.yMessages,e);r&&(s.yServerRevision=r),yield function(e,t,n){return Z(this,void 0,void 0,(function*(){var r,o,s,i,a;const l={};for(const[t,n]of Object.entries(e))null!==(r=l[t])&&void 0!==r||(l[t]={}),l[t].unsentFrom=n+1;for(const[e,n]of Object.entries(t))null!==(o=l[e])&&void 0!==o||(l[e]={}),l[e].receivedUntil=n;const c=Object.values(n.dx._dbSchema).filter((e=>e.yProps)).map((e=>e.yProps.map((e=>e.updatesTable)))).flat();for(const e of c){const t=l[e],r=null!==(s=null==t?void 0:t.unsentFrom)&&void 0!==s?s:1,o=null!==(a=null!==(i=null==t?void 0:t.receivedUntil)&&void 0!==i?i:(yield n.table(e).where("i").between(1,1/0).reverse().limit(1).primaryKeys())[0])&&void 0!==a?a:0;yield n.transaction("rw",e,(()=>Z(this,void 0,void 0,(function*(){const t=yield n.table(e).get(Dt);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:Dt,unsentFrom:r,receivedUntil:o})}))))}}))}(_,t,e),n&&(s.yDownloadedRealms={})}return e.$syncState.put(s,"syncState"),{done:0===r.length,newSyncState:s}}))));if(!I)return yield Et(e),yield Ht(e,t,n,{isInitialSync:r,cancelToken:o});const E=Object.values(n).some((e=>{var t;return null===(t=e.yProps)||void 0===t?void 0:t.length})),C=!!x.yMessages;if(E&&C)try{yield Ft(e,l,O)}catch(e){}return e.syncCompleteEvent.next(),!1}))}function zt(e,t){const n={};ce(n,e);const r={};return ce(r,t),function(e,t){var n,r,o;for(const[s,i]of Object.entries(t))for(const[t,a]of Object.entries(i))switch(a.type){case"ups":{const r=null===(n=e[s])||void 0===n?void 0:n[t];if(r)switch(r.type){case"ups":case"upd":delete e[s][t]}}break;case"del":null===(r=e[s])||void 0===r||delete r[t];break;case"upd":{const n=null===(o=e[s])||void 0===o?void 0:o[t];if(n)switch(n.type){case"ups":for(const[e,t]of Object.entries(a.mod))re(n.val,e,t);break;case"del":break;case"upd":for(const e of Object.keys(a.mod))delete n.mod[e]}break}}}(n,r),function(e,t=""){t||(t=oe(16));const n={};for(const[t,r]of Object.entries(e))for(const[e,o]of Object.entries(r)){const r=n[t]||(n[t]={});(r[o.type]||(r[o.type]=[])).push(Object.assign({key:e},o))}const r=[];for(const[e,o]of Object.entries(n)){const n={table:e,muts:[]};for(const[e,r]of Object.entries(o))switch(e){case"ups":{const e={type:"upsert",keys:r.map((e=>e.key)),values:r.map((e=>e.val)),txid:t};n.muts.push(e);break}case"upd":{const e={type:"update",keys:r.map((e=>e.key)),changeSpecs:r.map((e=>e.mod)),txid:t};n.muts.push(e);break}case"del":{const e={type:"delete",keys:r.map((e=>e.key)),txid:t};n.muts.push(e);break}}r.push(n)}return r}(n)}const qt=10,Jt=1e4,Gt=1e3;function Yt(t){const n=[],r=new k(!0),o=new k(null);let s=!1,i=new Array(qt).fill(0);return o.subscribe((()=>Z(this,void 0,void 0,(function*(){if(!s&&n.length>0){s=!0,i.shift(),i.push(Date.now()),r.next(!1);try{yield function(){return Z(this,void 0,void 0,(function*(){for(var r,o,s,i,a,l;n.length>0;){const c=n.shift();try{yield b(t.cloud.syncState.pipe(R((({phase:e})=>"in-sync"===e||"error"===e))));const n=t.cloud.persistedSyncState.value;if(!c)continue;switch(c.type){case"token-expired":const u=t.cloud.currentUser.value,d=yield Ie(t.cloud.options.databaseUrl,u);yield t.table("$logins").update(u.userId,{accessToken:d.accessToken,accessTokenExpiration:d.accessTokenExpiration,claims:d.claims,license:d.license,data:d.data});break;case"realm-added":(null===(r=null==n?void 0:n.realms)||void 0===r?void 0:r.includes(c.realm))||(null===(o=null==n?void 0:n.inviteRealms)||void 0===o?void 0:o.includes(c.realm))||(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realm-accepted":(null===(s=null==n?void 0:n.realms)||void 0===s?void 0:s.includes(c.realm))||(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realm-removed":((null===(i=null==n?void 0:n.realms)||void 0===i?void 0:i.includes(c.realm))||(null===(a=null==n?void 0:n.inviteRealms)||void 0===a?void 0:a.includes(c.realm)))&&(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realms-changed":yield t.cloud.sync({purpose:"pull",wait:!0});break;case"changes":if("error"===(null===(l=t.cloud.syncState.value)||void 0===l?void 0:l.phase)){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,s]=yield Promise.all([t.getSchema(),t.getPersistedSyncState(),t.getCurrentUser()]);if(!o||!r||!s)return;if(c.baseRev!==o.serverRevision)return void("string"!=typeof c.baseRev||"bigint"!=typeof o.serverRevision&&"object"!=typeof o.serverRevision||pe(t,"pull"));if((yield e.waitFor(Me(o)))!==c.realmSetHash)return void pe(t,"pull");let i=[];if(s.isLoggedIn){const e=We(t).map((e=>t.table(Fe(e.name))));i=yield ze(e,t)}if(c.changes.length>0){const e=zt(c.changes,i);yield $t(e,t)}o.latestRevisions=At(i,o.latestRevisions),o.serverRevision=c.newRev,yield Ut(t,r,o.latestRevisions,c.newRev),yield t.$syncState.put(o,"syncState")}))))}}catch(e){}}}))}()}finally{i[i.length-1]-i[0]<Jt&&(yield new Promise((e=>setTimeout(e,Gt)))),s=!1,r.next(!0)}}})))),{enqueue:function(e){n.push(e),o.next(null)},readyToServe:r}}const Zt=new WeakMap,Xt={members:"@id, [userId+realmId], [email+realmId], realmId",roles:"[realmId+name]",realms:"@realmId",$jobs:"",$syncState:"",$baseRevs:"[tableName+clientRev]",$logins:"claims.sub, lastLogin"};let Qt=0;function en(e){"vip"in e&&(e=e.vip);let t=Zt.get(e.cloud);if(!t){const n=new S;let r=new Be(`syncstatechanged-${e.name}`),o=new Be(`synccomplete-${e.name}`);n.id=++Qt;let s=!1;t={get name(){return e.name},close:()=>e.close(),transaction:e.transaction.bind(e),table:e.table.bind(e),get tables(){return e.tables},cloud:e.cloud,get $jobs(){return e.table("$jobs")},get $syncState(){return e.table("$syncState")},get $baseRevs(){return e.table("$baseRevs")},get $logins(){return e.table("$logins")},get realms(){return e.realms},get members(){return e.members},get roles(){return e.roles},get initiallySynced(){return s},localSyncEvent:n,get syncStateChangedEvent(){return r},get syncCompleteEvent(){return o},dx:e};const i={getCurrentUser:()=>t.$logins.toArray().then((e=>e.find((e=>e.isLoggedIn))||Ce)),getPersistedSyncState:()=>t.$syncState.get("syncState"),getSchema:()=>t.$syncState.get("schema").then((e=>{if(e)for(const r of t.tables)r.schema.primKey&&r.schema.primKey.keyPath&&e[r.name]&&(e[r.name].primaryKey="string"==typeof(n=r.schema.primKey.keyPath)?n:n?"["+[].join.call(n,"+")+"]":"");var n;return e})),getOptions:()=>t.$syncState.get("options"),setInitiallySynced(e){s=e},reconfigure(){r=new Be(`syncstatechanged-${e.name}`),o=new Be(`synccomplete-${e.name}`)}};Object.assign(t,i),t.messageConsumer=Yt(t),t.messageProducer=new S,Zt.set(e.cloud,t)}return t}const tn="undefined"!=typeof InstallTrigger,nn="undefined"!=typeof navigator&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\/|Edge\//.test(navigator.userAgent),rn=nn?[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]:NaN,on=nn&&rn<=605||tn,sn="undefined"!=typeof self&&"clients"in self&&!self.document;const{toString:an}={};function ln(e){return an.call(e).slice(8,-1)}function cn(e,t){var n;return"delete"===t.type?t.keys:(null===(n=t.keys)||void 0===n?void 0:n.slice())||t.values.map(e.extractKey)}const un=/b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|x|y|z/i;let dn=0;function fn(e,t){const n=new Uint8Array(18),r=new Uint8Array(n.buffer,0,6),o=Date.now();dn>=o?++dn:dn=o,r[0]=dn/1099511627776,r[1]=dn/4294967296,r[2]=dn/16777216,r[3]=dn/65536,r[4]=dn/256,r[5]=dn;const s=new Uint8Array(n.buffer,6);crypto.getRandomValues(s);return e+st(new Uint8Array(n.buffer))+(t||"")}function pn(t){return{stack:"dbcore",name:"idGenerationMiddleware",level:1,create:n=>Object.assign(Object.assign({},n),{table:r=>{const o=n.table(r);return Object.assign(Object.assign({},o),{mutate:n=>{var s,i;const a=n.trans;if("versionchange"===a.mode&&(a.disableChangeTracking=!0,a.disableAccessControl=!0),a.disableChangeTracking)return o.mutate(n);if("add"===n.type||"put"===n.type){const a=null===(s=t.cloud.schema)||void 0===s?void 0:s[r];if(null==a?void 0:a.generatedGlobalId){if((null===(i=t.cloud.options)||void 0===i?void 0:i.databaseUrl)&&!t.initiallySynced){const e=cn(o.schema.primaryKey,n);return o.getMany({keys:e,trans:n.trans,cache:"immutable"}).then((t=>{if(t.length<e.length)throw new Error("Unable to create new objects without an initial sync having been performed.");return o.mutate(n)}))}return function(n,s){let i=null;const a=cn(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]=fn(s,l),o.schema.primaryKey.outbound||(i||(i=n.values.slice()),i[c]=e.deepClone(i[c]),e.setByKeyPath(i[c],o.schema.primaryKey.keyPath,a[c]))}else if("string"!=typeof l||!l.startsWith(s)&&!l.startsWith("#"+s))throw new e.ConstraintError(`The ID "${l}" is not valid for table "${r}". Primary '@' keys requires the key to be prefixed with "${s}" (or "#${s}).\nIf you want to generate IDs programmatically, remove '@' from the schema to get rid of this constraint. Dexie Cloud supports custom IDs as long as they are random and globally unique.`)})),o.mutate(Object.assign(Object.assign({},n),{keys:a,values:i||n.values}))}(n,a.idPrefix)}if(null==a?void 0:a.markedForSync){cn(o.schema.primaryKey,n).forEach(((t,n)=>{if(!ie(t)){const n=Array.isArray(t)?t.map(ln).join(","):ln(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 yn=0;function hn(e,t){return function(n){const{readers:r,writers:o}=n.trans[t]||(n.trans[t]={writers:[],readers:[]}),s=o.length,i=(s>0?o[s-1].then((()=>e(n)),(()=>e(n))):e(n)).finally((()=>{r.splice(r.indexOf(i))}));return r.push(i),i}}function vn(e,t){return function(n){const{readers:r,writers:o}=n.trans[t]||(n.trans[t]={writers:[],readers:[]});let s=(o.length>0?o[o.length-1].then((()=>e(n)),(()=>e(n))):r.length>0?(i=r,new Promise((e=>{0===i.length&&e([]);let t=i.length;const n=new Array(t);i.forEach(((r,o)=>Promise.resolve(r).then((e=>n[o]={status:"fulfilled",value:e}),(e=>n[o]={status:"rejected",reason:e})).then((()=>--t||e(n)))))}))).then((()=>e(n))):e(n)).finally((()=>{o.shift()}));var i;return o.push(s),s}}const mn=new k(new Set);function bn(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 gn({currentUserObservable:e,db:t}){return{stack:"dbcore",name:"MutationTrackingMiddleware",level:1,create:n=>{const o=new Set(n.schema.tables.map((e=>e.name))),s=n.schema.tables.filter((e=>!/^\$/.test(e.name))),i=new Map;for(const e of s){const t=`$${e.name}_mutations`;o.has(t)&&i.set(e.name,n.table(t))}return Object.assign(Object.assign({},n),{transaction:(r,o)=>{let s;if("readwrite"===o){const e=r.filter((e=>{var n,r;return null===(r=null===(n=t.cloud.schema)||void 0===n?void 0:n[e])||void 0===r?void 0:r.markedForSync})).map((e=>Fe(e)));s=n.transaction([...r,...e],o)}else s=n.transaction(r,o);if("readwrite"===o){s.txid=qe(16),s.opCount=0,s.currentUser=e.value,mn.value.add(s),mn.next(mn.value);const n=()=>{s.removeEventListener("complete",r),s.removeEventListener("error",n),s.removeEventListener("abort",n),mn.value.delete(s),mn.next(mn.value)},r=()=>{s.mutationsAdded&&!bn(t)&&pe(t,"push"),n()};s.addEventListener("complete",r),s.addEventListener("error",n),s.addEventListener("abort",n)}return s},table:e=>{const o=n.table(e);if(/^\$/.test(e))return e.endsWith("_mutations")?Object.assign(Object.assign({},o),{mutate:e=>("add"!==e.type&&"put"!==e.type||(e.trans.mutationsAdded=!0),o.mutate(e))}):"$logins"===e?Object.assign(Object.assign({},o),{mutate:e=>o.mutate(e).then((t=>(e.trans.mutationsAdded=!0,t))).catch((e=>Promise.reject(e)))}):o;const{schema:s}=o,a=i.get(e);return a?function(e){const t="$lock"+ ++yn;return Object.assign(Object.assign({},e),{count:hn(e.count,t),get:hn(e.get,t),getMany:hn(e.getMany,t),openCursor:hn(e.openCursor,t),query:hn(e.query,t),mutate:vn(e.mutate,t)})}(Object.assign(Object.assign({},o),{mutate:n=>{var r,i,a;const c=n.trans;return c.txid?c.disableChangeTracking?o.mutate(n):(null===(i=null===(r=t.cloud.schema)||void 0===r?void 0:r[e])||void 0===i?void 0:i.markedForSync)&&(null===(a=c.currentUser)||void 0===a?void 0:a.isLoggedIn)?"deleteRange"===n.type?o.query({query:{range:n.range,index:s.primaryKey},trans:n.trans,values:!1}).then((e=>l({type:"delete",keys:e.result,trans:n.trans,criteria:{index:null,range:n.range}}))):l(n):o.mutate(n):o.mutate(n)}})):o;function l(n){var i,l;const c=n.trans,u=null===(l=null===(i=t.cloud.options)||void 0===i?void 0:i.unsyncedProperties)||void 0===l?void 0:l[e],{txid:d,currentUser:{userId:f}}=c,{type:p}=n,y=++c.opCount;function h(e){if(!u)return e;let t=e;for(const n of Object.keys(e))u.some((e=>n===e||n.startsWith(e+".")))&&(t===e&&(t=Object.assign({},e)),delete t[n]);return t}return o.mutate(n).then((e=>{var t;const{numFailures:o,failures:i}=e;let l="delete"===p?n.keys:e.results,v="values"in n?n.values:[],m="changeSpec"in n?n.changeSpec:void 0,b="updates"in n?n.updates:void 0,g=!(!b||!("upsert"in n))&&n.upsert;if(o&&(l=l.filter(((e,t)=>!i[t])),v=v.filter(((e,t)=>!i[t]))),u){if(v=v.map((e=>{const t=Object.assign({},e);for(const e of u)delete t[e];return t})),m&&(m=h(m),0===Object.keys(m).length))return e;if(b){let e=b.changeSpecs.map(h),t={keys:[],changeSpecs:[]};const n=new r;let o=!1;if(!g){for(let r=0,s=e.length;r<s;++r)Object.keys(e[r]).length>0?(t.keys.push(b.keys[r]),t.changeSpecs.push(e[r]),n.addKey(b.keys[r])):o=!0;if(b=t,o){let e=[],t=[];for(let r=0,o=l.length;r<o;++r)n.hasKey(l[r])&&(e.push(l[r]),t.push(v[r]));l=e,v=t}}}}const _=Date.now();let w="criteria"in n&&n.criteria?Object.assign(Object.assign({},n.criteria),{index:n.criteria.index===s.primaryKey.keyPath?null:n.criteria.index}):void 0;if(u&&(null==w?void 0:w.index)){const e=null===(t=s.indexes.find((e=>e.name===w.index)))||void 0===t?void 0:t.keyPath;(e?"string"==typeof e?[e]:e:[]).some((e=>null==u?void 0:u.includes(e)))&&(w=void 0)}const k="delete"===n.type?{type:"delete",ts:_,opNo:y,keys:l,criteria:w,txid:d,userId:f}:"add"===n.type?{type:"insert",ts:_,opNo:y,keys:l,txid:d,userId:f,values:v}:g&&b?{type:"upsert",ts:_,opNo:y,keys:l,values:v,changeSpecs:b.changeSpecs.filter(((e,t)=>!i[t])),txid:d,userId:f}:w&&m?{type:"modify",ts:_,opNo:y,keys:l,criteria:w,changeSpec:m,txid:d,userId:f}:m?{type:"update",ts:_,opNo:y,keys:l,changeSpecs:l.map((()=>m)),txid:d,userId:f}:b?{type:"update",ts:_,opNo:y,keys:b.keys,changeSpecs:b.changeSpecs,txid:d,userId:f}:{type:"upsert",ts:_,opNo:y,keys:l,values:v,txid:d,userId:f};return"isAdditionalChunk"in n&&n.isAdditionalChunk&&(k.isAdditionalChunk=!0),l.length>0||w?a.mutate({type:"add",trans:c,values:[k]}).then((()=>(c.mutationsAdded=!0,e))):e}))}}})}}}function _n(e,t){return function(n,r){var o;const s=Object.assign(Object.assign({},Xt),n);Object.keys(Xt).forEach((e=>{const t=s[e];if(null==t)throw new Error(`Cannot delete table ${e} as it is needed for access control of Dexie Cloud`);if(!n[e])return;const r=t.split(",").map((e=>e.trim())),o=Xt[e].split(",").map((e=>e.trim())),i=new Set(r.map((e=>e.replace(/([&*]|\+\+)/g,""))));if(r[0]!==o[0])throw new Error(`Cannot override primary key of table ${e}. Please declare it as {${e}: ${JSON.stringify(Xt[e])}`);for(let t=1;t<o.length;++t){const n=o[t];i.has(n.replace(/([&*]|\+\+)/g,""))||(s[e]+=`,${n}`)}}));const i=t.cloud.schema||(t.cloud.schema={}),a=new Set;Object.keys(s).forEach((e=>{const t=s[e],n=i[e]||(i[e]={});null!=t?(/^\@/.test(t)&&(s[e]=s[e].substr(1),n.generatedGlobalId=!0,n.idPrefix=function(e,t){let n=e[0].toLocaleLowerCase();for(let t=1,o=e.length;t<o&&n.length<3;++t)(un.test(e[t])||(r=e[t])>="A"&&r<="Z")&&(n+=e[t].toLowerCase());for(var r,o,s;t.has(n);){if(/\d/g.test(n)){if(n=n.substr(0,n.length-1)+(n[n.length-1]+1),!(n.length>3))continue;n=n.substr(0,3)}else if(n.length<3){n+="2";continue}let e=1,r=n;for(;t.has(r)&&e<8;)o=n,r=(1&(s=e)?o[0].toUpperCase():o[0].toLowerCase())+(2&s?o[1].toUpperCase():o[1].toLowerCase())+(4&s?o[2].toUpperCase():o[2].toLowerCase()),++e;if(e<8)n=r;else{let e=n.charCodeAt(2)+1&127;n=n.substr(0,2)+String.fromCharCode(e)}}return n}(e,a),a.add(n.idPrefix)),/^\$/.test(e)||(s[`$${e}_mutations`]="++rev",n.markedForSync=!0),n.deleted&&(n.deleted=!1)):(n.deleted=!0,n.markedForSync=!1,s[`$${e}_mutations`]=null)}));const l=e.call(this,s,r);for(const[e,t]of Object.entries(r))if(null===(o=t.yProps)||void 0===o?void 0:o.length){const n=i[e];n&&(n.yProps=t.yProps.map((e=>e.prop)))}return l}}function wn(e,t,n){return"undefined"!=typeof navigator&&navigator.locks?navigator.locks.request(e.name+"|"+t,(()=>n())):n()}const kn=new k(!0),Sn=new k(!0);kn.pipe(N((e=>e?x(!0):x(!1).pipe(B(2e4)))),M()).subscribe(Sn);const xn="undefined"!=typeof document?I(document,"visibilitychange"):x({}),In=xn.pipe(R((()=>"hidden"===document.visibilityState))),On=xn.pipe(R((()=>"visible"===document.visibilityState))),En="undefined"!=typeof window?O(On,I(window,"mousedown"),I(window,"mousemove"),I(window,"keydown"),I(window,"wheel"),I(window,"touchmove")):x({});"undefined"!=typeof document&&O(x(!0),In,En).pipe(W((()=>"visible"===document.visibilityState)),F((e=>{kn.value!==e&&kn.next(e)})),N((e=>e?x(0).pipe(B(16e4),F((()=>kn.next(!1)))):x(0)))).subscribe((()=>{}));class Cn extends Error{constructor(){super(...arguments),this.name="TokenExpiredError"}}const Tn=new WeakMap,jn=new WeakMap;function Un(e){let t=jn.get(e);return t||(t=new S,jn.set(e,t)),t}class An extends w{constructor(e,t,n,r,o,s,i,a){super((l=>new $n(e,t,n,r,o,a,l,s,i)))}}let Pn=0;class $n extends j{constructor(e,t,n,r,o,s,i,a,l){super((()=>this.teardown())),this.id=++Pn,this.subscriptions=new Set,this.reconnecting=!1,this.db=e,this.databaseUrl=e.cloud.options.databaseUrl,this.rev=t,this.yrev=n,this.realmSetHash=r,this.clientIdentity=o,this.user=s,this.subscriber=i,this.lastUserActivity=new Date,this.messageProducer=a,this.webSocketStatus=l,this.connect()}teardown(){this.disconnect()}disconnect(){if(this.webSocketStatus.next("disconnected"),this.pinger&&(clearInterval(this.pinger),this.pinger=null),this.ws)try{this.ws.close()}catch(e){}this.ws=null;for(const e of this.subscriptions)e.unsubscribe();this.subscriptions.clear()}reconnect(){if(!this.reconnecting){this.reconnecting=!0;try{this.disconnect()}catch(e){}this.connect().catch((()=>{})).then((()=>this.reconnecting=!1))}}connect(){return 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 Cn);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?kt.parse(e.data):function(e){const t=new d(e),n=f(t);if("outdated-server-rev"===n)return{type:n};if("y-complete-sync-done"===n)return{type:n,yServerRev:f(t)};const r=f(t),o=f(t);switch(n){case"u-ack":case"u-reject":return{type:n,table:r,prop:o,i:Number(h(t))};default:{const e=p(t);switch(n){case"in-sync":case"doc-close":return{type:n,table:r,prop:o,k:e};case"aware":return{type:n,table:r,prop:o,k:e,u:y(t)};case"doc-open":return{type:n,table:r,prop:o,k:e,serverRev:p(t),sv:p(t)};case"sv":return{type:n,table:r,prop:o,k:e,sv:y(t)};case"u-c":return{type:n,table:r,prop:o,k:e,u:y(t),i:Number(h(t))};case"u-s":return{type:n,table:r,prop:o,k:e,u:y(t),r:t.pos<t.arr.length&&f(t)||void 0};default:throw new TypeError(`Unknown message type: ${n}`)}}}}(new Uint8Array(e.data));if("error"===t.type)throw new Error(`Error message from dexie-cloud: ${t.error}`);if("aware"===t.type){const e=G.getDocCache(this.db.dx).find(t.table,t.k,t.prop);if(e){const n=(e=>Tn.get(e))(e);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&&Un(e).next()}else"u-ack"===t.type||"u-reject"===t.type||"u-s"===t.type||"in-sync"===t.type||"outdated-server-rev"===t.type||"y-complete-sync-done"===t.type?Nt([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=Rt(this.db,t.table,t.prop);if(e){const t=r[e.name];t&&(yield e.update(Dt,{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(kt.stringify(e))):null===(n=this.ws)||void 0===n||n.send(function(e){const t=new s;switch(i(t,e.type),"table"in e&&i(t,e.table),"prop"in e&&i(t,e.prop),e.type){case"u-ack":case"u-reject":c(t,BigInt(e.i));break;case"outdated-server-rev":break;case"y-complete-sync-done":i(t,e.yServerRev);break;default:switch(a(t,e.k),e.type){case"aware":l(t,e.u);break;case"doc-open":a(t,e.serverRev),a(t,e.sv);break;case"doc-close":break;case"sv":l(t,e.sv);break;case"u-c":l(t,e.u),c(t,BigInt(e.i));break;case"u-s":l(t,e.u),i(t,e.r||"")}}return u(t)}(e)))}))),this.user.isLoggedIn&&!bn(this.db)&&this.subscriptions.add(function(e){const t=He(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 s=e.table(r);return g(s.get(Dt)).pipe(E((e=>{let r=(null==e?void 0:e.unsentFrom)||1;return g(o((()=>Z(this,void 0,void 0,(function*(){return(yield Lt(s,r)).filter((e=>e.f&&1&e.f)).map((e=>({type:"u-c",table:t,prop:n,k:e.k,u:e.u,i:e.i})))}))))).pipe(C((e=>{e.length>0&&(r=e.at(-1).i+1)})))})))}))).pipe(T((e=>e)))}(this.db).subscribe(this.db.messageProducer))}catch(e){this.pauseUntil=new Date(Date.now()+6e4)}}))}}class Dn extends Error{constructor(e){super("expired"===e?"License expired":"deactivated"===e?"User deactivated":"Invalid license"),this.name="InvalidLicenseError",e&&(this.license=e)}}function Ln(e){return Z(this,void 0,void 0,(function*(){var e;yield(e=3e3,new Promise((t=>setTimeout(t,e)))),yield b(En)}))}function Rn(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 Vt(e,e.cloud.options,e.cloud.schema,{justCheckIfNeeded:!0}))}))}const Nn=new WeakMap;function Bn(e,t,n,r){const o=Nn.get(e);if(o){if(o.pull||"push"===(null==r?void 0:r.purpose))return o.promise;{let s=!1;const i=e.cloud.syncState.subscribe((e=>{"pulling"===e.phase&&(s=!0)}));return o.promise.then((()=>{i.unsubscribe()})).catch((e=>(i.unsubscribe(),Promise.reject(e)))).then((()=>{if(!s)return Bn(e,t,n,r)}))}}const s=function(){return Z(this,void 0,void 0,(function*(){try{yield Et(e),yield wn(e,Kt,(()=>Vt(e,t,n,r))),Nn.delete(e)}catch(t){throw Nn.delete(e),t}}))}();return Nn.set(e,{promise:s,pull:"push"!==(null==r?void 0:r.purpose)}),s}const Mn=1e3;function Wn(e,t,n){let r=null,o={cancelled:!1},s=0,i=0;function a(r=1){setTimeout((()=>{const f=l?"pull":"push";i=Date.now(),Bn(e,t,n,{cancelToken:o,retryImmediatelyOnFetchError:!0,purpose:f}).then((()=>{if(o.cancelled)d();else if(l||c)return l=!1,c=!1,a();u=!1,s=0,i=0})).catch((e=>{if(o.cancelled)d(),u=!1,s=0,i=0;else if(r<5){const e=[0,20,40,300,900][r]*Mn;s=Date.now()+e,i=0,setTimeout((()=>a(r+1)),e)}else u=!1,s=0,i=0}))}),0)}let l=!1,c=!1,u=!1;const d=()=>{o.cancelled=!0,r&&r.unsubscribe()};return{start:()=>{r=e.localSyncEvent.subscribe((({purpose:e})=>{(e=>{o.cancelled||("pull"===e&&(l=!0),"push"===e&&(c=!0),u?s||i>0&&Date.now():(u=!0,a()))})(e||"pull")}))},stop:d}}function Fn(e,t){if(e&&t&&t.unsyncedTables)for(const n of t.unsyncedTables)e[n]&&(e[n].markedForSync=!1)}var Kn,Vn,Hn,zn,qn,Jn={},Gn=[],Yn=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function Zn(e,t){for(var n in t)e[n]=t[n];return e}function Xn(e){var t=e.parentNode;t&&t.removeChild(e)}function Qn(e,t,n){var r,o,s,i={};for(s in t)"key"==s?r=t[s]:"ref"==s?o=t[s]:i[s]=t[s];if(arguments.length>2&&(i.children=arguments.length>3?Kn.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(s in e.defaultProps)void 0===i[s]&&(i[s]=e.defaultProps[s]);return er(e,i,r,o,null)}function er(e,t,n,r,o){var s={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++Hn:o};return null==o&&null!=Vn.vnode&&Vn.vnode(s),s}function tr(e){return e.children}function nr(e,t){this.props=e,this.context=t}function rr(e,t){if(null==t)return e.__?rr(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?rr(e):null}function or(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return or(e)}}function sr(e){(!e.__d&&(e.__d=!0)&&zn.push(e)&&!ir.__r++||qn!==Vn.debounceRendering)&&((qn=Vn.debounceRendering)||setTimeout)(ir)}function ir(){for(var e;ir.__r=zn.length;)e=zn.sort((function(e,t){return e.__v.__b-t.__v.__b})),zn=[],e.some((function(e){var t,n,r,o,s,i;e.__d&&(s=(o=(t=e).__v).__e,(i=t.__P)&&(n=[],(r=Zn({},o)).__v=o.__v+1,yr(i,o,r,t.__n,void 0!==i.ownerSVGElement,null!=o.__h?[s]:null,n,null==s?rr(o):s,o.__h),hr(n,o),o.__e!=s&&or(o)))}))}function ar(e,t,n,r,o,s,i,a,l,c){var u,d,f,p,y,h,v,m=r&&r.__k||Gn,b=m.length;for(n.__k=[],u=0;u<t.length;u++)if(null!=(p=n.__k[u]=null==(p=t[u])||"boolean"==typeof p?null:"string"==typeof p||"number"==typeof p||"bigint"==typeof p?er(null,p,null,null,p):Array.isArray(p)?er(tr,{children:p},null,null,null):p.__b>0?er(p.type,p.props,p.key,null,p.__v):p)){if(p.__=n,p.__b=n.__b+1,null===(f=m[u])||f&&p.key==f.key&&p.type===f.type)m[u]=void 0;else for(d=0;d<b;d++){if((f=m[d])&&p.key==f.key&&p.type===f.type){m[d]=void 0;break}f=null}yr(e,p,f=f||Jn,o,s,i,a,l,c),y=p.__e,(d=p.ref)&&f.ref!=d&&(v||(v=[]),f.ref&&v.push(f.ref,null,p),v.push(d,p.__c||y,p)),null!=y?(null==h&&(h=y),"function"==typeof p.type&&p.__k===f.__k?p.__d=l=lr(p,l,e):l=cr(e,p,f,m,y,l),"function"==typeof n.type&&(n.__d=l)):l&&f.__e==l&&l.parentNode!=e&&(l=rr(f))}for(n.__e=h,u=b;u--;)null!=m[u]&&("function"==typeof n.type&&null!=m[u].__e&&m[u].__e==n.__d&&(n.__d=rr(r,u+1)),br(m[u],m[u]));if(v)for(u=0;u<v.length;u++)mr(v[u],v[++u],v[++u])}function lr(e,t,n){for(var r,o=e.__k,s=0;o&&s<o.length;s++)(r=o[s])&&(r.__=e,t="function"==typeof r.type?lr(r,t,n):cr(n,r,r,o,r.__e,t));return t}function cr(e,t,n,r,o,s){var i,a,l;if(void 0!==t.__d)i=t.__d,t.__d=void 0;else if(null==n||o!=s||null==o.parentNode)e:if(null==s||s.parentNode!==e)e.appendChild(o),i=null;else{for(a=s,l=0;(a=a.nextSibling)&&l<r.length;l+=2)if(a==o)break e;e.insertBefore(o,s),i=s}return void 0!==i?i:o.nextSibling}function ur(e,t,n){"-"===t[0]?e.setProperty(t,n):e[t]=null==n?"":"number"!=typeof n||Yn.test(t)?n:n+"px"}function dr(e,t,n,r,o){var s;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||ur(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||ur(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])s=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+s]=n,n?r||e.addEventListener(t,s?pr:fr,s):e.removeEventListener(t,s?pr:fr,s);else if("dangerouslySetInnerHTML"!==t){if(o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null!=n&&(!1!==n||"a"===t[0]&&"r"===t[1])?e.setAttribute(t,n):e.removeAttribute(t))}}function fr(e){this.l[e.type+!1](Vn.event?Vn.event(e):e)}function pr(e){this.l[e.type+!0](Vn.event?Vn.event(e):e)}function yr(e,t,n,r,o,s,i,a,l){var c,u,d,f,p,y,h,v,m,b,g,_,w,k=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(l=n.__h,a=t.__e=n.__e,t.__h=null,s=[a]),(c=Vn.__b)&&c(t);try{e:if("function"==typeof k){if(v=t.props,m=(c=k.contextType)&&r[c.__c],b=c?m?m.props.value:c.__:r,n.__c?h=(u=t.__c=n.__c).__=u.__E:("prototype"in k&&k.prototype.render?t.__c=u=new k(v,b):(t.__c=u=new nr(v,b),u.constructor=k,u.render=gr),m&&m.sub(u),u.props=v,u.state||(u.state={}),u.context=b,u.__n=r,d=u.__d=!0,u.__h=[]),null==u.__s&&(u.__s=u.state),null!=k.getDerivedStateFromProps&&(u.__s==u.state&&(u.__s=Zn({},u.__s)),Zn(u.__s,k.getDerivedStateFromProps(v,u.__s))),f=u.props,p=u.state,d)null==k.getDerivedStateFromProps&&null!=u.componentWillMount&&u.componentWillMount(),null!=u.componentDidMount&&u.__h.push(u.componentDidMount);else{if(null==k.getDerivedStateFromProps&&v!==f&&null!=u.componentWillReceiveProps&&u.componentWillReceiveProps(v,b),!u.__e&&null!=u.shouldComponentUpdate&&!1===u.shouldComponentUpdate(v,u.__s,b)||t.__v===n.__v){u.props=v,u.state=u.__s,t.__v!==n.__v&&(u.__d=!1),u.__v=t,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),u.__h.length&&i.push(u);break e}null!=u.componentWillUpdate&&u.componentWillUpdate(v,u.__s,b),null!=u.componentDidUpdate&&u.__h.push((function(){u.componentDidUpdate(f,p,y)}))}if(u.context=b,u.props=v,u.__v=t,u.__P=e,g=Vn.__r,_=0,"prototype"in k&&k.prototype.render)u.state=u.__s,u.__d=!1,g&&g(t),c=u.render(u.props,u.state,u.context);else do{u.__d=!1,g&&g(t),c=u.render(u.props,u.state,u.context),u.state=u.__s}while(u.__d&&++_<25);u.state=u.__s,null!=u.getChildContext&&(r=Zn(Zn({},r),u.getChildContext())),d||null==u.getSnapshotBeforeUpdate||(y=u.getSnapshotBeforeUpdate(f,p)),w=null!=c&&c.type===tr&&null==c.key?c.props.children:c,ar(e,Array.isArray(w)?w:[w],t,n,r,o,s,i,a,l),u.base=t.__e,t.__h=null,u.__h.length&&i.push(u),h&&(u.__E=u.__=null),u.__e=!1}else null==s&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=vr(n.__e,t,n,r,o,s,i,l);(c=Vn.diffed)&&c(t)}catch(e){t.__v=null,(l||null!=s)&&(t.__e=a,t.__h=!!l,s[s.indexOf(a)]=null),Vn.__e(e,t,n)}}function hr(e,t){Vn.__c&&Vn.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){Vn.__e(e,t.__v)}}))}function vr(e,t,n,r,o,s,i,a){var l,c,u,d=n.props,f=t.props,p=t.type,y=0;if("svg"===p&&(o=!0),null!=s)for(;y<s.length;y++)if((l=s[y])&&"setAttribute"in l==!!p&&(p?l.localName===p:3===l.nodeType)){e=l,s[y]=null;break}if(null==e){if(null===p)return document.createTextNode(f);e=o?document.createElementNS("http://www.w3.org/2000/svg",p):document.createElement(p,f.is&&f),s=null,a=!1}if(null===p)d===f||a&&e.data===f||(e.data=f);else{if(s=s&&Kn.call(e.childNodes),c=(d=n.props||Jn).dangerouslySetInnerHTML,u=f.dangerouslySetInnerHTML,!a){if(null!=s)for(d={},y=0;y<e.attributes.length;y++)d[e.attributes[y].name]=e.attributes[y].value;(u||c)&&(u&&(c&&u.__html==c.__html||u.__html===e.innerHTML)||(e.innerHTML=u&&u.__html||""))}if(function(e,t,n,r,o){var s;for(s in n)"children"===s||"key"===s||s in t||dr(e,s,null,n[s],r);for(s in t)o&&"function"!=typeof t[s]||"children"===s||"key"===s||"value"===s||"checked"===s||n[s]===t[s]||dr(e,s,t[s],n[s],r)}(e,f,d,o,a),u)t.__k=[];else if(y=t.props.children,ar(e,Array.isArray(y)?y:[y],t,n,r,o&&"foreignObject"!==p,s,i,s?s[0]:n.__k&&rr(n,0),a),null!=s)for(y=s.length;y--;)null!=s[y]&&Xn(s[y]);a||("value"in f&&void 0!==(y=f.value)&&(y!==e.value||"progress"===p&&!y||"option"===p&&y!==d.value)&&dr(e,"value",y,d.value,!1),"checked"in f&&void 0!==(y=f.checked)&&y!==e.checked&&dr(e,"checked",y,d.checked,!1))}return e}function mr(e,t,n){try{"function"==typeof e?e(t):e.current=t}catch(e){Vn.__e(e,n)}}function br(e,t,n){var r,o;if(Vn.unmount&&Vn.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||mr(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){Vn.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&br(r[o],t,"function"!=typeof e.type);n||null==e.__e||Xn(e.__e),e.__e=e.__d=void 0}function gr(e,t,n){return this.constructor(e,n)}function _r(e,t,n){var r,o,s;Vn.__&&Vn.__(e,t),o=(r="function"==typeof n)?null:n&&n.__k||t.__k,s=[],yr(t,e=(!r&&n||t).__k=Qn(tr,null,[e]),o||Jn,Jn,void 0!==t.ownerSVGElement,!r&&n?[n]:o?null:t.firstChild?Kn.call(t.childNodes):null,s,!r&&n?n:o?o.__e:t.firstChild,r),hr(s,e)}Kn=Gn.slice,Vn={__e:function(e,t,n,r){for(var o,s,i;t=t.__;)if((o=t.__c)&&!o.__)try{if((s=o.constructor)&&null!=s.getDerivedStateFromError&&(o.setState(s.getDerivedStateFromError(e)),i=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,r||{}),i=o.__d),i)return o.__E=o}catch(t){e=t}throw e}},Hn=0,nr.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=Zn({},this.state),"function"==typeof e&&(e=e(Zn({},n),this.props)),e&&Zn(n,e),null!=e&&this.__v&&(t&&this.__h.push(t),sr(this))},nr.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),sr(this))},nr.prototype.render=tr,zn=[],ir.__r=0;const wr={Error:{color:"red"},Alert:{error:{color:"red",fontWeight:"bold"},warning:{color:"#f80",fontWeight:"bold"},info:{color:"black"}},Darken:{position:"fixed",top:0,left:0,opacity:.5,backgroundColor:"#000",width:"100vw",height:"100vh",zIndex:150,webkitBackdropFilter:"blur(2px)",backdropFilter:"blur(2px)"},DialogOuter:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",zIndex:150,alignItems:"center",display:"flex",justifyContent:"center",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"}};function kr({children:e,className:t}){return Qn("div",{className:`dexie-dialog ${t||""}`},Qn("div",{style:wr.Darken}),Qn("div",{style:wr.DialogOuter},Qn("div",{style:wr.DialogInner},e)))}var Sr,xr,Ir,Or,Er=0,Cr=[],Tr=[],jr=Vn.__b,Ur=Vn.__r,Ar=Vn.diffed,Pr=Vn.__c,$r=Vn.unmount;function Dr(e,t){Vn.__h&&Vn.__h(xr,e,Er||t),Er=0;var n=xr.__H||(xr.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({__V:Tr}),n.__[e]}function Lr(e){return Er=1,function(e,t,n){var r=Dr(Sr++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):Kr(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=xr,!xr.u)){xr.u=!0;var o=xr.shouldComponentUpdate;xr.shouldComponentUpdate=function(e,t,n){if(!r.__c.__H)return!0;var s=r.__c.__H.__.filter((function(e){return e.__c}));if(s.every((function(e){return!e.__N})))return!o||o.call(this,e,t,n);var i=!1;return s.forEach((function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(i=!0)}})),!!i&&(!o||o.call(this,e,t,n))}}return r.__N||r.__}(Kr,e)}function Rr(e){return Er=5,function(e,t){var n=Dr(Sr++,7);return Fr(n.__H,t)?(n.__V=e(),n.i=t,n.__h=e,n.__V):n.__}((function(){return{current:e}}),[])}function Nr(){for(var e;e=Cr.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(Mr),e.__H.__h.forEach(Wr),e.__H.__h=[]}catch(t){e.__H.__h=[],Vn.__e(t,e.__v)}}Vn.__b=function(e){xr=null,jr&&jr(e)},Vn.__r=function(e){Ur&&Ur(e),Sr=0;var t=(xr=e.__c).__H;t&&(Ir===xr?(t.__h=[],xr.__h=[],t.__.forEach((function(e){e.__N&&(e.__=e.__N),e.__V=Tr,e.__N=e.i=void 0}))):(t.__h.forEach(Mr),t.__h.forEach(Wr),t.__h=[])),Ir=xr},Vn.diffed=function(e){Ar&&Ar(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==Cr.push(t)&&Or===Vn.requestAnimationFrame||((Or=Vn.requestAnimationFrame)||function(e){var t,n=function(){clearTimeout(r),Br&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,100);Br&&(t=requestAnimationFrame(n))})(Nr)),t.__H.__.forEach((function(e){e.i&&(e.__H=e.i),e.__V!==Tr&&(e.__=e.__V),e.i=void 0,e.__V=Tr}))),Ir=xr=null},Vn.__c=function(e,t){t.some((function(e){try{e.__h.forEach(Mr),e.__h=e.__h.filter((function(e){return!e.__||Wr(e)}))}catch(n){t.some((function(e){e.__h&&(e.__h=[])})),t=[],Vn.__e(n,e.__v)}})),Pr&&Pr(e,t)},Vn.unmount=function(e){$r&&$r(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach((function(e){try{Mr(e)}catch(e){t=e}})),t&&Vn.__e(t,n.__v))};var Br="function"==typeof requestAnimationFrame;function Mr(e){var t=xr,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),xr=t}function Wr(e){var t=xr;e.__c=e.__(),xr=t}function Fr(e,t){return!e||e.length!==t.length||t.some((function(t,n){return t!==e[n]}))}function Kr(e,t){return"function"==typeof t?t(e):t}function Vr({message:e,messageCode:t,messageParams:n}){return e.replace(/\{\w+\}/gi,(e=>n[e.substring(1,e.length-1)]))}function Hr({title:e,type:t,alerts:n,fields:r,submitLabel:o,cancelLabel:s,onCancel:i,onSubmit:a}){const[l,c]=Lr({}),u=Rr(null);return function(e,t){var n=Dr(Sr++,4);!Vn.__s&&Fr(n.__H,t)&&(n.__=e,n.i=t,xr.__h.push(n))}((()=>{var e;return null===(e=u.current)||void 0===e?void 0:e.focus()}),[]),Qn(kr,{className:"dxc-login-dlg"},Qn(tr,null,Qn("h3",{style:wr.WindowHeader},e),n.map((e=>Qn("p",{style:wr.Alert[e.type]},Vr(e)))),Qn("form",{onSubmit:e=>{e.preventDefault(),a(l)}},Object.entries(r).map((([e,{type:t,label:n,placeholder:r}],o)=>Qn("label",{style:wr.Label,key:o},n?`${n}: `:"",Qn("input",{ref:0===o?u:void 0,type:t,name:e,autoComplete:"on",style:wr.Input,autoFocus:!0,placeholder:r,value:l[e]||"",onInput:n=>{var r;const o=function(e,t){switch(e){case"email":return t.toLowerCase();case"otp":return t.toUpperCase();default:return t}}(t,null===(r=n.target)||void 0===r?void 0:r.value);let s=Object.assign(Object.assign({},l),{[e]:o});c(s),"otp"===t&&8===(null==o?void 0:o.trim().length)&&a(s)}})))))),Qn("div",{style:wr.ButtonsDiv},Qn(tr,null,Qn("button",{type:"submit",style:wr.PrimaryButton,onClick:()=>a(l)},o),s&&Qn("button",{style:wr.Button,onClick:i},s))))}class zr extends nr{constructor(e){super(e),this.observer=e=>this.setState({userInteraction:e}),this.state={userInteraction:void 0}}componentDidMount(){this.subscription=g(this.props.db.cloud.userInteraction).subscribe(this.observer)}componentWillUnmount(){this.subscription&&(this.subscription.unsubscribe(),delete this.subscription)}render(e,{userInteraction:t}){return t?Qn(Hr,Object.assign({},t)):null}}function qr(e){const t=new WeakMap;return n=>{let r=t.get(n);return r||(r=e(n),t.set(n,r)),r}}const Jr=qr((e=>new k(Ce)));function Gr(e,t){let n=t,r=g(e).pipe(P((e=>n=e)),$({resetOnRefCountZero:()=>D(1e3)}));const o=new w((e=>{let t=!1;const o=r.subscribe({next(n){t=!0,e.next(n)},error(t){e.error(t)},complete(){e.complete()}});return t||o.closed||e.next(n),o}));return o.getValue=()=>n,o}const Yr=qr((e=>Gr(o((()=>e.roles.where({realmId:"rlm-public"}).toArray().then((e=>{const t={};for(const n of e.slice().sort(((e,t)=>(e.sortOrder||0)-(t.sortOrder||0))))t[n.name]=n;return t})))),{}))),Zr=qr((e=>Gr(Jr(e._novip).pipe(N((t=>o((()=>e.transaction("r","realms","members",(()=>Promise.all([e.members.where({userId:t.userId}).toArray(),e.realms.toArray(),t.userId]).then((([e,t,n])=>({selfMembers:e,realms:t,userId:n})))))))))),{selfMembers:[],realms:[],get userId(){return e.cloud.currentUserId}})));function Xr(...e){if(0===e.length)return{};const t=e.reduce(((e,t)=>{const n=Object.assign({},e);for(const[e,r]of Object.entries(t))if(e in n&&n[e]){if("*"===n[e])continue;if("*"===r)n[e]="*";else if(Array.isArray(r)&&Array.isArray(n[e])){const t=n,o=t[e];t[e]=[...new Set([...o,...r])]}else if("object"==typeof r&&r&&"object"==typeof n[e]){const t=n[e];for(const[e,n]of Object.entries(r))"*"!==t[e]&&("*"===n?t[e]="*":Array.isArray(t[e])&&Array.isArray(n)&&(t[e]=[...new Set([...t[e],...n])]))}}else n[e]=t[e];return n}));return t}const Qr=qr((e=>function(e,t){let n;const r=e.pipe(P((e=>n=t(e))));return r.getValue=()=>void 0!==n?n:n=t(e.getValue()),r}(Gr(A([Zr(e._novip),Yr(e._novip)]).pipe(W((([{selfMembers:e,realms:t,userId:n},r])=>({selfMembers:e,realms:t,userId:n,globalRoles:r})))),{selfMembers:[],realms:[],userId:Ce.userId,globalRoles:{}}),(({selfMembers:e,realms:t,userId:n,globalRoles:r})=>{const o=t.map((t=>{const o=e.filter((e=>e.realmId===t.realmId)),s=o.map((e=>e.permissions)).filter((e=>e)),i=He(o.map((e=>e.roles)).filter((e=>e))).map((e=>r[e])).filter((e=>e)).map((e=>e.permissions));return Object.assign(Object.assign({},t),{permissions:t.owner===n?{manage:"*"}:Xr(...s,...i)})})).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.realmId]:t})),{[n]:{realmId:n,owner:n,name:n,permissions:{manage:"*"}}});return o}))));class eo{constructor(e,t,n){this.permissions=e||{},this.tableName=t,this.isOwner=n}add(...e){var t;return"*"===this.permissions.manage||(!!(null===(t=this.permissions.manage)||void 0===t?void 0:t.includes(this.tableName))||("*"===this.permissions.add||!!e.every((e=>{var t;return null===(t=this.permissions.add)||void 0===t?void 0:t.includes(e)}))))}update(...e){var t,n;if(this.isOwner||"*"===this.permissions.manage)return!0;if(null===(t=this.permissions.manage)||void 0===t?void 0:t.includes(this.tableName))return!0;if("*"===this.permissions.update)return e.every((e=>"owner"!==e));const r=null===(n=this.permissions.update)||void 0===n?void 0:n[this.tableName];return"*"===r?e.every((e=>"owner"!==e)):e.every((e=>null==r?void 0:r.some((t=>t===e||"*"===t&&"owner"!==e))))}delete(){var e;return!(!this.isOwner&&"*"!==this.permissions.manage)||!!(null===(e=this.permissions.manage)||void 0===e?void 0:e.includes(this.tableName))}}const to=qr((e=>{const t=Jr(e._novip).pipe(N((t=>o((()=>e.members.where({email:t.email||""}).toArray()))))),n=Qr(e._novip),r=Zr(e._novip);return Gr(A([t,r,n]).pipe(W((([t,n,r])=>{const o=(e,t)=>Object.assign(Object.assign({},e),{[t.id]:Object.assign(Object.assign({},t),{realm:r[t.realmId]})}),s=t.reduce(o,{}),i=n.selfMembers.reduce(o,s);return Object.values(i).filter((e=>!e.accepted)).map((t=>Object.assign(Object.assign({},t),{accept(){return 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 no(e){return t=>{var r;const o=t.doc;if(!o)throw new Error("Internal error: DexieYProvider.createYHandler called without a doc. This is unexpected.");const{parentTable:s}=o.meta||{};if(!(null===(r=e.cloud.schema)||void 0===r?void 0:r[s].markedForSync))return;let i;Object.defineProperty(t,"awareness",{get:()=>i||(i=function(e,t,r){const{parentTable:o,parentId:s,parentProp:i,updatesTable:a}=t.meta,l=new Y.Awareness(t),c=Un(t);return l.on("update",(({added:n,updated:s,removed:a},c)=>{const u=n.concat(s).concat(a),d=e.cloud.currentUser.value;if("server"!==c&&d.isLoggedIn&&!bn(e)){const n=Y.encodeAwarenessUpdate(l,u);e.messageProducer.next({type:"aware",table:o,prop:i,k:t.meta.parentId,u:n}),r.destroyed&&e.messageProducer.next({type:"doc-close",table:o,prop:i,k:t.meta.parentId})}})),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=A([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&&!bn(e)&&(++l,d().catch((e=>{})))}));function d(){return Z(this,void 0,void 0,(function*(){const c=l,u=e.table(a),d=e.$syncState,[f,p]=yield e.transaction("r",d,u,(()=>Z(this,void 0,void 0,(function*(){const e=yield u.get(Dt),t=yield d.get("syncState");return[(null==e?void 0:e.receivedUntil)||0,(null==t?void 0:t.yServerRevision)||(null==t?void 0:t.serverRevision)]}))));if(r.destroyed||l!==c||!t)return;const y={type:"doc-open",table:o,prop:i,k:s,serverRev:p},h=yield u.where("i").between(f,1/0,!1).filter((e=>0===n(e.k,s)&&0==(1&(e.f||0)))).toArray();if(!r.destroyed&&l===c&&t){if(h.length>0){const e=J.mergeUpdatesV2(h.map((e=>e.u))),t=J.encodeStateVectorFromUpdateV2(e);y.sv=t}e.messageProducer.next(y)}}))}r.addCleanupHandler(u)}))})(),l}(e,o,t),Tn.set(o,i),i)})}}function ro(e){return"rlm~"+e}function oo(e){return e.startsWith("rlm~")?e.substr(4):null}const so={},io=new WeakMap,ao=co("tx"),lo=co("unload");function co(e){let t=null,n=!1,r=new Map;return{name:e,run(){return 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:s}of e.values()){const e=G.getOrCreateDocument(t,o,s,n);try{const t=G.load(e);yield t.whenLoaded;for(const t of r)yield t(e,n)}catch(e){null==e||e.name}finally{G.release(e)}}}))}(e).finally((()=>{t=null}))}),0))}))},enqueue(e,t,n,o,s){const i=`${e.name}:${t}:${n}:${o}`;let a=r.get(i);a||(a={db:e,parentTable:t,parentId:n,prop:o,triggers:new Set},r.set(i,a)),a.triggers.add(s)}}}function uo(){ao.run()}function fo(){lo.run()}function po(e,t,n){var o,s;const i=null===(s=null===(o=e.schema.yProps)||void 0===o?void 0:o.find((e=>e.prop===t)))||void 0===s?void 0:s.updatesTable;if(!i)throw new Error(`Table ${e.name} does not have a Yjs property named ${t}`);so[i]={trigger:n,parentTable:e.name,prop:t};const a=e.db._novip;let l=io.get(a);l||(l=(e=>({stack:"dbcore",level:10,name:"yTriggerMiddleware",create:t=>Object.assign(Object.assign({},t),{transaction:(e,n,r)=>{const o=t.transaction(e,n,r);return"readonly"===n?o:e.some((e=>so[e]))?(o.addEventListener("complete",uo),o):o},table:n=>{const o=t.table(n),s=so[n];if(!s)return o;const{trigger:i,parentTable:a,prop:l}=s;return Object.assign(Object.assign({},o),{mutate(t){var n;switch(t.type){case"add":for(const r of t.values){if(null==r.k)continue;const t=r.k,o=G.getDocCache(e).find(a,t,l);(o&&(null===(n=G.for(o))||void 0===n?void 0:n.refCount)?lo:ao).enqueue(e,a,t,l,i)}break;case"delete":t.trans._rejecting_y_ypdate&&o.getMany({keys:t.keys,trans:t.trans,cache:"immutable"}).then((t=>{const n=new r;for(const{k:e}of t)null!=e&&n.addKey(e);for(const t of n)ao.enqueue(e,a,t.from,l,i)}))}return o.mutate(t)}})}})}))(a),io.set(a,l)),a.use(l),G.on("beforeunload",fo)}const yo={nameSuffix:!0};function ho(t){const n=t.name,r=Jr(t),s=[];let i=!1,a=null;t.on("ready",(t=>Z(this,void 0,void 0,(function*(){try{yield function(t){return Z(this,void 0,void 0,(function*(){var n,d,f,p,y,h,v;l=!1;const m=en(t);"undefined"!=typeof window&&"undefined"!=typeof document&&((null===(n=m.cloud.options)||void 0===n?void 0:n.customLoginGui)||s.push(function(e){let t=!1;const n=document.createElement("div");return document.body?(document.body.appendChild(n),_r(Qn(zr,{db:e.vip}),n)):addEventListener("DOMContentLoaded",(()=>{t||(document.body.appendChild(n),_r(Qn(zr,{db:e.vip}),n))})),{unsubscribe(){try{n.remove()}catch(e){}t=!0},get closed(){return t}}}(t))),m.cloud.isServiceWorkerDB||s.push(function(e){let t=e.cloud.webSocketStatus.value;const n=e.cloud.webSocketStatus.pipe(N((e=>{const n=t;t=e;const r=x(e);switch(e){case"disconnected":return kn.value?r.pipe(H(500)):r;case"connecting":return"not-started"===n||"error"===n?r:r.pipe(H(4e3));default:return r}})));return A([n,e.syncStateChangedEvent.pipe(z({phase:"initial"})),Jr(e.dx._novip),Sn]).pipe(W((([t,n,r,o])=>{var s;if((null===(s=r.license)||void 0===s?void 0:s.status)&&"ok"!==r.license.status)return{phase:"offline",status:"offline",license:r.license.status};let{phase:i,error:a,progress:l}=n,c=t;return"error"===i&&(c="error"),"not-started"===t&&("pushing"!==i&&"pulling"!==i||(c="connecting")),"error"!==e.cloud.syncState.value.phase||"pushing"!==n.phase&&"pulling"!==n.phase||(c="connecting"),o||(c="disconnected"),{phase:i,error:a,progress:l,status:jt?c:"offline",license:"ok"}})))}(m).subscribe(t.cloud.syncState)),s.push(m.syncCompleteEvent.subscribe(u)),m.tables.every((e=>e.core))||function(){throw new e.SchemaError("Version increment needed to allow dexie-cloud change tracking")}();const _="serviceWorker"in navigator?yield navigator.serviceWorker.getRegistrations():[],[w,S]=yield m.transaction("rw",m.$syncState,(()=>Z(this,void 0,void 0,(function*(){var e,t;const{options:n,schema:r}=m.cloud,[o,s,a]=yield Promise.all([m.getOptions(),m.getSchema(),m.getPersistedSyncState()]);if(i){if(!o||JSON.stringify(o)!==JSON.stringify(n)){if(!n)throw new Error("Internal error");const e=Object.assign({},n);delete e.fetchTokens,delete e.awarenessProtocol,yield m.$syncState.put(e,"options")}}else m.cloud.options=o||null;if((null===(e=m.cloud.options)||void 0===e?void 0:e.tryUseServiceWorker)&&"serviceWorker"in navigator&&_.length>0&&!on?m.cloud.usingServiceWorker=!0:((null===(t=m.cloud.options)||void 0===t?void 0:t.tryUseServiceWorker)&&m.cloud.isServiceWorkerDB,m.cloud.usingServiceWorker=!1),Fn(r,m.cloud.options),Fn(s,m.cloud.options),r){if(!s||JSON.stringify(s)!==JSON.stringify(r)){const e=s||{};for(const[t,n]of Object.entries(r)){const r=e[t];r?(r.markedForSync=n.markedForSync,n.deleted=r.deleted,r.generatedGlobalId=n.generatedGlobalId):e[t]=Object.assign({},n)}yield m.$syncState.put(e,"schema"),Object.assign(r,e)}}else m.cloud.schema=s||null;return[null==a?void 0:a.initiallySynced,null==a?void 0:a.realms]}))));if(w&&m.setInitiallySynced(!0),function(t){var n,r;for(const o of t.tables)if(null===(r=null===(n=t.cloud.schema)||void 0===n?void 0:n[o.name])||void 0===r?void 0:r.markedForSync){if(o.schema.primKey.auto)throw new e.SchemaError(`Table ${o.name} is both autoIncremented and synced. Use db.cloud.configure({unsyncedTables: [${JSON.stringify(o.name)}]}) to blacklist it from sync`);if(!o.schema.primKey.keyPath)throw new e.SchemaError(`Table ${o.name} cannot be both synced and outbound. Use db.cloud.configure({unsyncedTables: [${JSON.stringify(o.name)}]}) to blacklist it from sync`)}}(m),c(),!m.cloud.isServiceWorkerDB){s.push(o((()=>m.getCurrentUser())).subscribe(r)),s.push(o((()=>m.getPersistedSyncState())).subscribe(m.cloud.persistedSyncState)),yield b(A([r.pipe(q(1),K(1)),m.cloud.persistedSyncState.pipe(q(1),K(1))]));const e=no(m);G.on.new.subscribe(e),m.dx.once("close",(()=>{G.on.new.unsubscribe(e)}))}let E=!1;const C=yield m.getCurrentUser(),T=null===(d=m.cloud.options)||void 0===d?void 0:d.requireAuth;T&&(m.cloud.isServiceWorkerDB?yield b(r.pipe(R((e=>!!e.isLoggedIn)),K(1))):"object"==typeof T?(!C.isLoggedIn||T.userId&&C.userId!==T.userId||T.email&&C.email!==T.email)&&(E=yield $e(m,T)):C.isLoggedIn||(E=yield $e(m))),!C.isLoggedIn||S&&S.includes(C.userId)||(E=!0),a&&a.stop(),a=null,c();const j=(null===(f=m.cloud.options)||void 0===f?void 0:f.databaseUrl)&&(!w||E);j&&(yield function(e,t,n){return Z(this,void 0,void 0,(function*(){yield wn(e,Kt,(()=>Vt(e,t,n,{isInitialSync:!0})))}))}(m,m.cloud.options,m.cloud.schema),m.setInitiallySynced(!0)),c(),m.cloud.usingServiceWorker&&(null===(p=m.cloud.options)||void 0===p?void 0:p.databaseUrl)?(j||fe(m,"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){}}))}(m).catch((()=>{}))):(null===(y=m.cloud.options)||void 0===y?void 0:y.databaseUrl)&&m.cloud.schema&&!m.cloud.isServiceWorkerDB&&(a=Wn(m,m.cloud.options,m.cloud.schema),a.start(),j||pe(m,"push")),c(),m.cloud.isServiceWorkerDB||s.push(I(self,"online").subscribe((()=>{m.syncStateChangedEvent.next({phase:"not-in-sync"}),bn(m)||pe(m,"push")})),I(self,"offline").subscribe((()=>{m.syncStateChangedEvent.next({phase:"offline"})}))),!(null===(h=m.cloud.options)||void 0===h?void 0:h.databaseUrl)||(null===(v=m.cloud.options)||void 0===v?void 0:v.disableWebSocket)||sn||s.push(function(e){var t;if(!(null===(t=e.cloud.options)||void 0===t?void 0:t.databaseUrl))throw new Error("No database URL to connect WebSocket to");const n=e.messageConsumer.readyToServe.pipe(R((e=>e)),N((()=>e.getPersistedSyncState())),R((e=>e&&e.serverRevision)),N((e=>Z(this,void 0,void 0,(function*(){return{type:"ready",rev:e.serverRevision,realmSetHash:yield Me(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])=>Sn.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 Me(t)]})))),M((([e,t],[n,r])=>e===n&&t===r)),N((([n,o])=>{var s;return(null===(s=e.cloud.persistedSyncState)||void 0===s?void 0:s.value)?n?new An(e,e.cloud.persistedSyncState.value.serverRevision,e.cloud.persistedSyncState.value.yServerRevision,o,e.cloud.persistedSyncState.value.clientIdentity,r,e.cloud.webSocketStatus,n):g([]):t()})),V((n=>"TokenExpiredError"===(null==n?void 0:n.name)?x(!0).pipe(N((()=>Z(this,void 0,void 0,(function*(){const t=yield e.getCurrentUser(),n=yield Ie(e.cloud.options.databaseUrl,t);yield e.table("$logins").update(t.userId,{accessToken:n.accessToken,accessTokenExpiration:n.accessTokenExpiration,claims:n.claims,license:n.license,data:n.data})})))),N((()=>t()))):U((()=>n)))),V((n=>(e.cloud.webSocketStatus.next("error"),n instanceof Dn?U((()=>n)):g(Ln()).pipe(N((()=>t())))))))}().subscribe({next:t=>{t&&e.messageConsumer.enqueue(t)},error:e=>{},complete:()=>{}})}(m))}))}(t)}catch(e){}}))),!0);let l=!1;function c(){if(l)throw new e.DatabaseClosedError}t.once("close",(()=>{s.forEach((e=>e.unsubscribe())),s.splice(0,s.length),l=!0,a&&a.stop(),a=null,r.next(Ce)}));const u=new S;var d;t.cloud={version:"4.2.4",options:Object.assign({},yo),schema:null,get currentUserId(){return r.value.userId||Ce.userId},currentUser:r,syncState:new k({phase:"initial",status:"not-started"}),events:{syncComplete:u},persistedSyncState:new k(void 0),userInteraction:new k(void 0),webSocketStatus:new k("not-started"),login(e){return Z(this,void 0,void 0,(function*(){const n=en(t);yield n.cloud.sync(),yield $e(n,e)}))},invites:to(t),roles:Yr(t),configure(e){e=t.cloud.options=Object.assign(Object.assign({},t.cloud.options),e),i=!0,e.databaseUrl&&e.nameSuffix&&(t.name=`${n}-${function(e){const t=new URL(e);return"/"===t.pathname?t.hostname.split(".")[0]:t.pathname.split("/")[1]}(e.databaseUrl)}`,en(t).reconfigure()),Fn(t.cloud.schema,t.cloud.options)},logout(){return Z(this,arguments,void 0,(function*({force:e}={}){e?yield Ue(en(t),{deleteUnsyncedData:!0}):yield je(en(t))}))},sync(){return Z(this,arguments,void 0,(function*({wait:e,purpose:n}={wait:!0,purpose:"push"}){var r;void 0===e&&(e=!0);const s=en(t);if("ok"!==((null===(r=s.cloud.currentUser.value.license)||void 0===r?void 0:r.status)||"ok")&&(yield Se(s)),"pull"===n){const t=s.cloud.persistedSyncState.value;if(pe(s,n),e){const e=yield b(s.cloud.persistedSyncState.pipe(R((e=>null!=(null==e?void 0:e.timestamp)&&(!t||e.timestamp>t.timestamp)))));if(null==e?void 0:e.error)throw new Error("Sync error: "+e.error)}}else if(yield Rn(s)){const t=s.cloud.persistedSyncState.value;pe(s,n),e&&(yield b(g(o((()=>Z(this,void 0,void 0,(function*(){const e=yield Rn(s),n=yield s.getPersistedSyncState();if((null==n?void 0:n.timestamp)!==(null==t?void 0:t.timestamp)&&(null==n?void 0:n.error))throw new Error("Sync error: "+n.error);return e}))))).pipe(R((e=>!e)))))}}))},permissions:(e,n)=>function(e,t,n){if(!t)throw new TypeError("Cannot check permissions of undefined or null. A Dexie Cloud object with realmId and owner expected.");const{owner:r,realmId:o}=t;if(!n){if("function"!=typeof t.table)throw new TypeError("Missing 'table' argument to permissions and table could not be extracted from entity");n=t.table()}const s=Qr(e),i=t=>{const s=t[o||e.cloud.currentUserId];return s?new eo(s.permissions,n,void 0===o||o===e.cloud.currentUserId||r===e.cloud.currentUserId):new eo({},n,!r||r===e.cloud.currentUserId)},a=s.pipe(W(i));return a.getValue=()=>i(s.getValue()),a}(t._novip,e,n)},t.Version.prototype._parseStoresSpec=e.override(t.Version.prototype._parseStoresSpec,(e=>_n(e,t))),t.Table.prototype.newId=function({colocateWith:e}={}){const n=e&&e.substr(e.length-3);return fn(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(gn({currentUserObservable:t.cloud.currentUser,db:en(t)})),t.use((d=en(t),{stack:"dbcore",name:"implicitPropSetterMiddleware",level:1,create:e=>Object.assign(Object.assign({},e),{table:t=>{const n=e.table(t);return Object.assign(Object.assign({},n),{mutate:e=>{var r,o,s,i,a,l;const c=e.trans;if(c.disableChangeTracking)return n.mutate(e);const u=null!==(o=null===(r=c.currentUser)||void 0===r?void 0:r.userId)&&void 0!==o?o:Ce.userId;if((null===(i=null===(s=d.cloud.schema)||void 0===s?void 0:s[t])||void 0===i?void 0:i.markedForSync)&&("add"===e.type||"put"===e.type)){if("members"===t)for(const t of e.values)"string"==typeof t.email&&(t.email=t.email.trim().toLowerCase());for(const t of e.values){t.owner||(t.owner=u),t.realmId||(t.realmId=u);const r=null===(l=(a=n.schema.primaryKey).extractKey)||void 0===l?void 0:l.call(a,t);"string"==typeof r&&"#"===r[0]&&"put"===e.type&&(delete e.criteria,delete e.changeSpec,e.upsert||delete e.updates,t.$ts=Date.now())}}return n.mutate(e)}})}})})),t.use(pn(en(t)))}ho.version="4.2.4",e.Cloud=ho;export{ho as default,po as defineYDocTrigger,ho as dexieCloud,oo as getTiedObjectId,ro as getTiedRealmId,Vr as resolveText};
|
|
1
|
+
import e,{PropModification as t,cmp as n,RangeSet as r,liveQuery as o}from"dexie";import{Encoder as s,writeVarString as i,writeAny as a,writeVarUint8Array as l,writeBigUint64 as c,toUint8Array as u}from"lib0/encoding";import{Decoder as d,readVarString as f,readAny as p,readVarUint8Array as y,readBigUint64 as h,hasContent as m,readUint8 as v}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 E,tap as j,mergeMap as C,Subscription as T,throwError as U,combineLatest as P,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,s){function i(e){try{l(r.next(e))}catch(e){s(e)}}function a(e){try{l(r.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,a)}l((r=r.apply(e,t||[])).next())})}function 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||[]),s=[];return r=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),i("next"),i("throw"),i("return",function(e){return function(t){return Promise.resolve(t).then(e,c)}}),r[Symbol.asyncIterator]=function(){return this},r;function i(e,t){o[e]&&(r[e]=function(t){return new Promise(function(n,r){s.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(s[0][2],e)}(o[e](t))}catch(e){u(s[0][3],e)}}function l(e){a("next",e)}function c(e){a("throw",e)}function u(e,t){e(t),s.shift(),s.length&&a(s[0][0],s[0][1])}}function 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 s=t.indexOf(".");if(-1!==s){var i=t.substr(0,s),a=t.substr(s+1);if(""===a)void 0===n?Array.isArray(e)?isNaN(parseInt(i))||e.splice(parseInt(i),1):delete e[i]:e[i]=n;else{var l=e[i];l&&function(e,t){return ne.call(e,t)}(e,i)||(l=e[i]={}),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=se)=>{const n=Buffer.alloc(e);return t(n),n.toString("base64")}:()=>{throw new Error("No implementation of randomString was found")};function se(e){for(let t=0;t<e.length;++t)e[t]=Math.floor(256*Math.random())}function ie(e){return"string"==typeof e||!!(Array.isArray(e)&&e.some(e=>ie(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,s=r[e];if(s)switch(s.type){case"ups":for(const[e,t]of Object.entries(o))re(s.val,e,t);break;case"del":break;case"upd":Object.assign(s.mod,o)}else r[e]={type:"upd",mod:o}});break;case"delete":o.forEach(e=>{r[e]={type:"del"}})}return e}function 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=[],s=0;for await(const i of e){const e=new DataView(i.buffer,i.byteOffset,i.byteLength);let a=0;for(;a<i.byteLength;)switch(t){case 0:if(a+4>i.byteLength){for(const e of i.slice(a)){if(4===r)break;n[r++]=e,++a}if(r<4)break}else if(r>0&&r<4)for(const e of i.slice(a,a+4-r))n[r++]=e,++a;case 1:s=4===r?new DataView(n.buffer,0,4).getUint32(0,!1):e.getUint32(a,!1),r?r=0:a+=4;case 2:if(a>=i.byteLength){t=2;break}if(a+s>i.byteLength)o.push(i.slice(a)),s-=i.byteLength-a,t=2,a=i.byteLength;else{if(o.length>0){const e=new Uint8Array(o.reduce((e,t)=>e+t.byteLength,s));let t=0;for(const n of o)e.set(n,t),t+=n.byteLength;e.set(i.slice(a,a+s),t),o=[],yield e}else yield i.slice(a,a+s);a+=s,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,me="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},ve="undefined"!=typeof Buffer?e=>ArrayBuffer.isView(e)?Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("base64"):Buffer.from(e).toString("base64"):he?e=>(ArrayBuffer.isView(e)?e:new Uint8Array(e)).toBase64():e=>{const t=ArrayBuffer.isView(e)?e:new Uint8Array(e),n=[];for(let e=0,r=t.length;e<r;e+=4096){const r=t.subarray(e,e+4096);n.push(String.fromCharCode.apply(null,r))}return btoa(n.join(""))};class be extends Error{constructor({title:e,message:t,messageCode:n,messageParams:r}){super(t),this.name="TokenErrorResponseError",this.title=e,this.messageCode=n,this.messageParams=r}}function ge(t,n){return new Promise((r,o)=>{const s=Object.assign(Object.assign({submitLabel:"Submit",cancelLabel:"Cancel"},n),{onSubmit:e=>{t.next(void 0),r(e)},onCancel:()=>{t.next(void 0),o(new e.AbortError("User cancelled"))}});t.next(s)})}function _e(e,t,...n){return ge(e,{type:"message-alert",title:t,alerts:n,fields:{},submitLabel:"OK",cancelLabel:null})}function we(e,t,n){return 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 ge(e,{type:"email",title:t,alerts:r?[{type:"error",messageCode:"INVALID_EMAIL",message:"Please enter a valid email address",messageParams:{}}]:[],fields:{email:{type:"email",placeholder:"you@somedomain.com"}}})).email;return r})}function ke(e,t,n){return 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 ge(e,{type:"otp",title:"Enter OTP",alerts:r,fields:{otp:{type:"otp",label:"OTP",placeholder:"Paste OTP here"}}});return o})}function Se(e){return Z(this,void 0,void 0,function*(){var t,n,r;const o=yield e.getCurrentUser(),{accessToken:s,accessTokenExpiration:i,refreshToken:a,refreshTokenExpiration:l,claims:c}=o;if(!s)return null;if((null!==(t=null==i?void 0:i.getTime())&&void 0!==t?t:1/0)>Date.now()&&"ok"===((null===(n=o.license)||void 0===n?void 0:n.status)||"ok"))return o;if(!a)throw new Error("Refresh token missing");if((null!==(r=null==l?void 0:l.getTime())&&void 0!==r?r:1/0)<=Date.now())throw new Error("Refresh token has expired");const u=yield Ie(e.cloud.options.databaseUrl,o);return yield e.table("$logins").update(c.sub,{accessToken:u.accessToken,accessTokenExpiration:u.accessTokenExpiration,claims:u.claims,license:u.license,data:u.data}),u})}function xe(t,n,r,o,s){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 Ie(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:s,publicKey:i}=yield crypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!1,["sign","verify"]);if(!s||!i)throw new Error("Could not generate RSA keypair");t.nonExportablePrivateKey=s;const a=function(e){const t=ve(e);return function(e){let t="-----BEGIN PUBLIC KEY-----\n";for(;e.length>0;)t+=e.substring(0,64)+"\n",e=e.substring(64);return t+="-----END PUBLIC KEY-----",t}(t)}(yield crypto.subtle.exportKey("spki",i));t.publicKey=i;try{const e=yield n({public_key:a,hints:o});if("error"===e.type)throw new be(e);if("tokens"!==e.type)throw new Error(`Unexpected response type from token endpoint: ${e.type}`);return t.accessToken=e.accessToken,t.accessTokenExpiration=new Date(e.accessTokenExpiration),t.refreshToken=e.refreshToken,e.refreshTokenExpiration&&(t.refreshTokenExpiration=new Date(e.refreshTokenExpiration)),t.userId=e.claims.sub,t.email=e.claims.email,t.name=e.claims.name,t.claims=e.claims,t.license={type:e.userType,status:e.claims.license||"ok"},t.data=e.data,null!=e.evalDaysLeft&&(t.license.evalDaysLeft=e.evalDaysLeft),null!=e.userValidUntil&&(t.license.validUntil=new Date(e.userValidUntil)),e.alerts&&e.alerts.length>0&&(yield ge(r,{type:"message-alert",title:"Authentication Alert",fields:{},alerts:e.alerts})),t}catch(t){if(t instanceof be)throw yield _e(r,t.title,{type:"error",messageCode:t.messageCode,message:t.message,messageParams:{}}),t;let n="We're having a problem authenticating right now.";if(t instanceof TypeError){n=void 0!==typeof navigator&&!navigator.onLine?"You seem to be offline. Please connect to the internet and try again.":e.debug||"undefined"!=typeof location&&("localhost"===location.hostname||"127.0.0.1"===location.hostname)?`Could not connect to server. Please verify that your origin '${location.origin}' is whitelisted using \`npx dexie-cloud whitelist\``:"Could not connect to server. Please verify the connection.",yield _e(r,"Authentication Failed",{type:"error",messageCode:"GENERIC_ERROR",message:n,messageParams:{}}).catch(()=>{})}throw t}})}(n,r,o,s)})}function Ie(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),s=yield crypto.subtle.sign(r,t.nonExportablePrivateKey,o),i=ve(s),a={grant_type:"refresh_token",refresh_token:t.refreshToken,scopes:["ACCESS_DB"],signature:i,signing_algorithm:r,time_stamp:n},l=yield fetch(`${e}/token`,{body:JSON.stringify(a),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"});if(200!==l.status)throw new Error(`RefreshToken: Status ${l.status} from ${e}/token`);const c=yield l.json();if("error"===c.type)throw new 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 Oe=new WeakMap;class Ee{constructor(e,t){Oe.set(this,e),Object.assign(this,t)}static load(e,t){return e.table("$logins").get(t).then(n=>new Ee(e,n||{userId:t,claims:{sub:t},lastLogin:new Date(0)}))}save(){return Z(this,void 0,void 0,function*(){Oe.get(this).table("$logins").put(this)})}}const je={userId:"unauthorized",name:"Unauthorized",claims:{sub:"unauthorized"},lastLogin:new Date(0)};try{Object.freeze(je),Object.freeze(je.claims)}catch(e){}function Ce(e,t){return b(g(e).pipe(_(t)))}function Te(e){return Z(this,void 0,void 0,function*(){const t=yield Ue(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 ge(e,{type:"logout-confirmation",title:"Confirm Logout",alerts:r,fields:{},submitLabel:"Confirm logout",cancelLabel:"Cancel"}).then(()=>!0).catch(()=>!1)})}(e.cloud.userInteraction,e.cloud.currentUserId,t)))throw new Error("User cancelled logout due to unsynced changes");yield Ue(e,{deleteUnsyncedData:!0})}})}function Ue(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")),s=(yield Promise.all(o.map(e=>n.table(e).count()))).reduce((e,t)=>e+t,0);if(s>0&&!t)return[s,!1];e.$syncState.delete("syncState");for(const t of e.dx.tables)"$jobs"!==t.name&&"$syncState"!==t.name&&t.clear();return[s,!0]}));return r&&(yield Ce(e.cloud.currentUser,e=>e.userId===je.userId),yield e.cloud.sync({purpose:"pull",wait:!0})),n})}class Pe extends Error{constructor(e,t){super(t||`${e.status} ${e.statusText}`),this.httpStatus=e.status}get name(){return"HttpError"}}function Ae(e,...t){globalThis.console[e](...t)}function $e(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 Se(e),!1}const s=new Ee(e,{claims:{},lastLogin:new Date(0)});return yield xe(e.cloud.options.databaseUrl,s,e.cloud.options.fetchTokens||function(e){const{userInteraction:t}=e.cloud;return function(n){return Z(this,arguments,void 0,function*({public_key:n,hints:r}){var o;let s;const i=null===(o=e.cloud.options)||void 0===o?void 0:o.databaseUrl;if(!i)throw new Error("No database URL given.");if("demo"===(null==r?void 0:r.grant_type))s={demo_user:yield we(t,"Enter a demo user email",(null==r?void 0:r.email)||(null==r?void 0:r.userId)),grant_type:"demo",scopes:["ACCESS_DB"],public_key:n};else if((null==r?void 0:r.otpId)&&r.otp)s={grant_type:"otp",otp_id:r.otpId,otp:r.otp,scopes:["ACCESS_DB"],public_key:n};else{const e=yield we(t,"Enter email address",null==r?void 0:r.email);s=/@demo.local$/.test(e)?{demo_user:e,grant_type:"demo",scopes:["ACCESS_DB"],public_key:n}:{email:e,grant_type:"otp",scopes:["ACCESS_DB"]}}const a=yield fetch(`${i}/token`,{body:JSON.stringify(s),method:"post",headers:{"Content-Type":"application/json",mode:"cors"}});if(200!==a.status){const e=yield a.text();throw yield _e(t,"Token request failed",{type:"error",messageCode:"GENERIC_ERROR",message:e,messageParams:{}}).catch(()=>{}),new Pe(a,e)}const l=yield a.json();if("tokens"===l.type||"error"===l.type)return l;if("otp"===s.grant_type&&"email"in s){if("otp-sent"!==l.type)throw new Error(`Unexpected response from ${i}/token`);const e=yield ke(t,s.email),r=Object.assign(Object.assign({},s),{otp:e||"",otp_id:l.otp_id,public_key:n});let o=yield fetch(`${i}/token`,{body:JSON.stringify(r),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"});for(;401===o.status;){const e=yield o.text();r.otp=yield ke(t,s.email,{type:"error",messageCode:"INVALID_OTP",message:e,messageParams:{}}),o=yield fetch(`${i}/token`,{body:JSON.stringify(r),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"})}if(200!==o.status){const e=yield o.text();throw new Pe(o,e)}return yield o.json()}throw new Error(`Unexpected response from ${i}/token`)})}}(e),e.cloud.userInteraction,t),o!==je.userId&&s.userId!==o&&(yield Te(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&&(Ae("debug","Login context property names:",Object.keys(t)),Ae("debug","Login context property names:",Object.keys(t)),Ae("debug","Login context:",t),Ae("debug","Login context JSON:",JSON.stringify(t)))}catch(e){}throw e}})),yield Ce(e.cloud.currentUser,e=>e.userId===t.userId)})}(e,s),pe(e,"pull"),s.userId!==o})}const De={},Le="undefined"!=typeof self&&self.document&&"undefined"!=typeof navigator&&navigator.serviceWorker;Le&&Le.ready.then(e=>De.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 Re{constructor(e){this.name=e}subscribe(e){if(!Le)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 Le.addEventListener("message",t),()=>Le.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})):De.registration&&(null===(t=De.registration.active)||void 0===t||t.postMessage({type:`sw-broadcast-${this.name}`,message:e}))}}const Ne=globalThis["lbc-events"]||(globalThis["lbc-events"]=new Map);class Be extends w{constructor(e){const t="undefined"==typeof BroadcastChannel?new Re(e):new BroadcastChannel(e);super(n=>{function r(e){n.next(e.detail)}function o(e){n.next(e.data)}let s;!function(e,t){Ne.has(e)?Ne.get(e).push(t):Ne.set(e,[t])}(`lbc-${e}`,r);try{t instanceof Re?s=t.subscribe(e=>n.next(e)):t.addEventListener("message",o)}catch(e){}return()=>{!function(e,t){const n=Ne.get(e);if(n){const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}(`lbc-${e}`,r),t instanceof Re?s():t.removeEventListener("message",o)}}),this.name=e,this.bc=t}next(e){this.bc.postMessage(e);!function(e){const t=Ne.get(e.type);t&&t.forEach(t=>{try{t(e)}catch(e){}})}(new CustomEvent(`lbc-${this.name}`,{detail:e}))}}function Me(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 ve(o)})}function We(e){return Object.entries(e.cloud.schema||{}).filter(([,{markedForSync:e}])=>e).map(([t])=>e.tables.filter(({name:e})=>e===t)[0]).filter(e=>e)}function Fe(e){return`$${e}_mutations`}function Ke(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 He=[].concat;function Ve(e){return He.apply([],e)}function ze(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=Ke(e.name),o=n[t];let s=o?e.where("rev").above(o):e;r<1/0&&(s=s.limit(r));let i=yield s.toArray();i=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}(i),i=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],s=t.get(o);if(!s)return!0;for(let t=s.length-1;t>=0;--t){const{txid:n,updateSpec:o}=s[t];if(n===e.txid)break;for(const e of Object.keys(o))r.delete(e)}return 0!==r.size}),e}(i);return i.map(e=>({table:t,mut:e}))}))),s=Ve(o).sort((e,t)=>e.mut.txid===t.mut.txid?e.mut.opNo-t.mut.opNo:e.mut.ts-t.mut.ts),i=[];let a=null,l=null;for(const{table:e,mut:t}of s)a&&a.table===e&&l===t.txid?a.muts.push(t):(a={table:e,muts:[t]},l=t.txid,i.push(a));return i})}function qe(e){const t=new Uint8Array(e);if("undefined"!=typeof crypto)crypto.getRandomValues(t);else for(let n=0;n<e;n++)t[n]=Math.floor(256*Math.random());if("undefined"!=typeof Buffer&&Buffer.from)return Buffer.from(t).toString("base64");if("undefined"!=typeof btoa)return btoa(String.fromCharCode.apply(null,t));throw new Error("No btoa or Buffer available")}const{toString:Je}={};const Ge={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 Ye(...e){const t=e.reduce((e,t)=>({...e,...t}),e.reduce((e,t)=>({...t,...e}),{})),n=new WeakMap;return{stringify(e,r,o){const s=JSON.stringify(e,function(e){const o=this[e],s=function(e){const r=typeof e;switch(typeof e){case"object":case"function":{if(null===e)return null;const r=Object.getPrototypeOf(e);if(!r)return Ge;let s=n.get(r);if(void 0!==s)return s;const i=(o=e,Je.call(o).slice(8,-1)),a=Object.entries(t).find(([t,n])=>{var r,o;return null!==(o=null===(r=null==n?void 0:n.test)||void 0===r?void 0:r.call(n,e,i))&&void 0!==o?o:t===i});return s=null==a?void 0:a[1],s||(s=Array.isArray(e)?null:"function"==typeof e?t.function||null:Ge),n.set(r,s),s}default:return t[r]}var o}(o);return s?s.replace(o,r,t):o},o);return s},parse(e,n){const r=[];return JSON.parse(e,function(e,o){const s=null==o?void 0:o.$t;if(s){const e=t[s];o=e?e.revive(o,n,t):o}let i=r[r.length-1];if(i&&i[0]===o){o={...o};for(const e of i[1])delete o[e];for(const[e,t]of Object.entries(i[2]))o[e]=t;r.pop()}if(void 0===o||"$"===e[0]&&"$t"!==e){let t,n;i=r[r.length-1],i&&i[0]===this?(t=i[1],n=i[2]):r.push([this,t=[],n={}]),"$"===e[0]&&"$t"!==e?(t.push(e),n[e.substr(1)]=o):n[e]=void 0}return o})}}}const Ze={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 Xe={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 Qe={bigint:{replace:e=>({$t:"bigint",v:""+e}),revive:e=>BigInt(e.v)}};var et={Date:{replace:e=>({$t:"Date",v:isNaN(e.getTime())?"NaN":e.toISOString()}),revive:({v:e})=>new Date("NaN"===e?NaN:Date.parse(e))}},tt={Set:{replace:e=>({$t:"Set",v:Array.from(e.entries())}),revive:({v:e})=>new Set(e)}},nt={Map:{replace:e=>({$t:"Map",v:Array.from(e.entries())}),revive:({v:e})=>new Map(e)}};const rt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0;var ot=["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=rt[t];return o&&new o(r.ArrayBuffer.revive({v:e},n,r))}}}),{});function st(e){return function(e){for(var t="",n=0,r=e.length;n<r;n++)t+=lt[e[n]];return t}(ve(e))}function it(e){return me(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+=at[e[n]];return t}(e))}const at={"-":"=",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:"+","|":"/"},lt={};for(const e of Object.keys(at))lt[at[e]]=e;var ct={ArrayBuffer:{replace:e=>({$t:"ArrayBuffer",v:st(e)}),revive:({v:e})=>{const t=it(e);return t.buffer.byteLength===t.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}}};class ut{constructor(e,t){this.buf=e,this.type=t}}function dt(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 ft(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;++n)t[n]=e.charCodeAt(n);return t.buffer}var pt={Blob:{test:(e,t)=>"Blob"===t||e instanceof ut,replace:e=>({$t:"Blob",v:ve(e instanceof ut?e.buf:ft(dt(e))),type:e.type}),revive:({type:e,v:t})=>{const n=me(t);return void 0!==typeof Blob?new Blob([n]):new ut(n.buffer,e)}}};const yt={...Xe,...Qe,...et,...tt,...nt,...ot,...ct,...pt};function ht(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 mt={undefined:{replace:()=>({$t:"undefined"}),revive:()=>{}}},vt={File:{test:(e,t)=>"File"===t,replace:e=>({$t:"File",v:ve(ft(dt(e))),type:e.type,name:e.name,lastModified:new Date(e.lastModified).toISOString()}),revive:({type:e,v:t,name:n,lastModified:r})=>{const o=me(t);return new File([o],n,{type:e,lastModified:new Date(r).getTime()})}}};const bt="function"==typeof BigInt&&"bigint"==typeof BigInt(0);class gt{toString(){return this.v}constructor(e){this.v=e}}const _t=bt?{}:{bigint:{test:e=>e instanceof gt,replace:e=>Object.assign({$t:"bigint"},e),revive:({v:e})=>new gt(e)}},wt=Object.assign(Object.assign(Object.assign(Object.assign({},mt),_t),vt),{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)}}}),kt=Ye(yt,wt),St=function(...e){const t=Ye(yt,Ze,...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=[],s=await ht(n),i=new DataView(s);for(;r<s.byteLength;){const e=i.getUint32(r);r+=4;const t=s.slice(r,r+e);r+=e,o.push(t)}return t.parse(e,o)},async fromBinary(e){const t=new DataView(await ht(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)}}}(wt);function xt(t,n,r){const o=[];for(let s of r){const{table:r,muts:i}=s,a=t.tables.find(e=>e.name===r);if(!a)throw new Error(`Internal error: table ${r} not found in DBCore schema`);const{primaryKey:l}=a;let c=s;i.forEach((t,r)=>{const o=!l.outbound&&("upsert"===t.type||"insert"===t.type);t.keys.forEach((t,i)=>{if(Array.isArray(t)){c===s&&(c=It(s,o));const e=c.muts[r],n=JSON.stringify(t);e.keys[i]=n}else if("#"===t[0]){c===s&&(c=It(s,o));const a=c.muts[r];if(!n.isLoggedIn)throw new Error("Internal error: Cannot sync private IDs before authenticated");const u=`${t}:${n.userId}`;a.keys[i]=u,o&&e.setByKeyPath(a.values[i],l.keyPath,u)}})}),o.push(c)}return o}function It(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 Ot=new WeakMap;function Et(e){return Z(this,void 0,void 0,function*(){var t,n;const r=(null!==(n=null===(t=Ot.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 jt(e,t,n,r,o,s,i,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 Se(o),d=null==u?void 0:u.accessToken;d&&(c.Authorization=`Bearer ${d}`);const f={v:2,dbID:null==n?void 0:n.remoteDbId,clientIdentity:a,schema:i||{},lastPull:n?{serverRevision:n.serverRevision,yServerRevision:n.yServerRevision,realms:n.realms,inviteRealms:n.inviteRealms}:void 0,baseRevs:r,changes:xt(o.dx.core.schema,l,e),y:t,dxcv:o.cloud.version};o.syncStateChangedEvent.next({phase:"pushing"});const p=kt.stringify(f),y=yield fetch(`${s}/sync`,{method:"post",headers:c,credentials:"include",body:p});if(o.syncStateChangedEvent.next({phase:"pulling"}),function(e,t){const n=t.headers.get("Ratelimit-Limit"),r=t.headers.get("Ratelimit-Remaining"),o=t.headers.get("Ratelimit-Reset");if(n&&r&&o){const t=Number(n),s=Math.max(0,Number(r)),i=Number(o);if(s<t/2){const t=Math.ceil(i/(s+1));Ot.set(e,new Date(Date.now()+1e3*t))}else Ot.delete(e)}}(o,y),!y.ok)throw new Pe(y);if("application/x-bison"===y.headers.get("content-type"))return St.fromBinary(yield y.blob());{const e=yield y.text();return kt.parse(e)}})}function Ct(t){if(null==t?void 0:t.cancelled)throw new e.AbortError("Operation was cancelled")}let Tt=!1;function Ut(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 Pt(e,t={}){for(const{table:n,muts:r}of e){const e=r.length>0?r[r.length-1].rev:null;t[n]=e||t[n]||0}return t}function At(t,r,o){return Z(this,void 0,void 0,function*(){const s=yield t.bulkGet(r),i=[],a=[];r.forEach((r,l)=>{const c=s[l];if(c){for(const[s,i]of Object.entries(o[l]))if(s===t.schema.primKey.keyPath){if(0!==n(i,r))throw new Error("Cannot change primary key")}else e.setByKeyPath(c,s,i);i.push(r),a.push(c)}}),yield null==t.schema.primKey.keyPath?t.bulkPut(a,i):t.bulkPut(a)})}function $t(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:s}=t.core.schema,i=e=>{switch(e[0]){case"[":if(e.endsWith("]"))try{return JSON.parse(e)}catch(e){}return e;case"#":return e.endsWith(":"+n.cloud.currentUserId)?e.substr(0,e.length-n.cloud.currentUserId.length-1):e;default:return e}};for(const n of o){const r=n.keys.map(i);switch(n.type){case"insert":s.outbound?yield t.bulkAdd(n.values,r):(r.forEach((t,r)=>{e.setByKeyPath(n.values[r],s.keyPath,t)}),yield t.bulkAdd(n.values));break;case"upsert":s.outbound?yield t.bulkPut(n.values,r):(r.forEach((t,r)=>{e.setByKeyPath(n.values[r],s.keyPath,t)}),yield t.bulkPut(n.values));break;case"modify":1===r.length?yield t.update(r[0],n.changeSpec):yield t.where(":id").anyOf(r).modify(n.changeSpec);break;case"update":yield At(t,r,n.changeSpecs);break;case"delete":yield t.bulkDelete(r)}}}})}"undefined"!=typeof self&&"undefined"!=typeof navigator&&(Tt=navigator.onLine,self.addEventListener("online",()=>Tt=!0),self.addEventListener("offline",()=>Tt=!1));const Dt="dexie-cloud-syncer";function Lt(e,t){return e.where("i").between(t,1/0,!0).toArray()}function Rt(e,t,n){var r,o,s;if(!e.dx._allTables[t])return;const i=null===(s=null===(o=null===(r=e.table(t))||void 0===r?void 0:r.schema.yProps)||void 0===o?void 0:o.find(e=>e.prop===n))||void 0===s?void 0:s.updatesTable;return i&&e.dx._allTables[i]?e.table(i):void 0}function Nt(e,t){return Z(this,void 0,void 0,function*(){var r;const o={};let s,i=!1;for(const a of e)try{switch(a.type){case"u-s":{const e=Rt(t,a.table,a.prop);if(e){const t={k:a.k,u:a.u};a.r&&(t.r=a.r,s=a.r),o[e.name]=yield e.add(t)}break}case"u-ack":{const e=Rt(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(Dt);yield t.table(e.name).put(Object.assign(Object.assign({},n||{i:Dt}),{unsentFrom:Math.max((null==n?void 0:n.unsentFrom)||1,a.i+1)}))})));break}case"u-reject":{const e=Rt(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":s=a.yServerRev;break;case"outdated-server-rev":i=!0}}catch(e){}return{receivedUntils:o,resyncNeeded:i,yServerRevision:s}})}function Bt(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 s=yield Se(t),i={"Content-Type":"application/json",Accept:"application/octet-stream"};s&&(i.Authorization=`Bearer ${s.accessToken}`);const a=yield fetch(`${n}/y/download`,{body:kt.stringify({downloadedRealms:r||{}}),method:"POST",headers:i,credentials:"include"});if(!a.ok)throw new Error(`Failed to download Yjs documents from server. Status: ${a.status}`);yield async function(e,...t){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,s,i,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=Rt(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(;m(e);)switch(v(e)){case 1:yield Q(b(!0)),l=f(e);break;case 2:yield Q(b(!1)),c=f(e),u=f(e);break;case 3:{const t=p(e),n=y(e);h.push({k:t,u:n});break}}yield Q(b(!1))}}catch(e){s={error:e}}finally{try{_||o||!(i=w.return)||(yield Q(i.call(w)))}finally{if(s)throw s.error}}yield Q(b(!0))}catch(t){throw t instanceof e.DexieError||(yield Q(b(!1))),t}})})})}const Mt="currentSyncWorker";function Wt(e,t,n,r){return Ft(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):Tt&&(null==r?void 0:r.retryImmediatelyOnFetchError)&&"TypeError"===(null==o?void 0:o.name)&&/fetch/.test(null==o?void 0:o.message)?(e.syncStateChangedEvent.next({phase:"error",error:o}),yield new Promise(e=>setTimeout(e,500)),yield Wt(e,t,n,Object.assign(Object.assign({},r),{retryImmediatelyOnFetchError:!1}))):(yield e.$syncState.update("syncState",{timestamp:new Date,error:""+o}),e.syncStateChangedEvent.next({phase:Tt?"error":"offline",error:new Error(""+(null==o?void 0:o.message)||o)}),Promise.reject(o))}))}function Ft(e,t,n){return Z(this,arguments,void 0,function*(e,t,n,{isInitialSync:r,cancelToken:o,justCheckIfNeeded:s,purpose:i}={isInitialSync:!1}){var a;if(!(null===(a=e.cloud.options)||void 0===a?void 0:a.databaseUrl))throw new Error("Internal error: sync must not be called when no databaseUrl is configured");const{databaseUrl:l}=t,c=yield e.getCurrentUser(),u=c.isLoggedIn?We(e):[],d=u.map(t=>e.table(Fe(t.name))),f=yield e.getPersistedSyncState(),p=c.isLoggedIn,y=p?function(e,t){const n=(null==t?void 0:t.syncedTables)||[];return We(e).filter(e=>!n.includes(e.name))}(e,f):[];Ct(o);const h=y.length>0;if(h){if(s)return!0;yield e.transaction("rw",y,e=>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!==je.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!==je.userId||(e.owner=t.userId)}):yield n.toCollection().modify(e=>{e.realmId&&r.has(e.realmId)||(e.owner&&e.owner!==je.userId||(e.owner=t.userId),e.realmId&&e.realmId!==je.userId||(e.realmId=t.userId))}))})}(y,c,null==f?void 0:f.realms)})),Ct(o)}const[m,v,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 s=yield ze(d,e);const i=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 s=e.table(t.updatesTable),i=yield s.get(Dt),a=(null==i?void 0:i.unsentFrom)||1,l=(null==i?void 0:i.receivedUntil)||0,c=Math.min(a,l+1),u=yield Lt(s,c);u.length>0&&(r[s.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:s,i:i}of Object.values(d)){const a=1===s.length?s[0]:J.mergeUpdatesV2(s);if(r)n.push({type:"u-c",table:o.name,prop:t.prop,k:e,u:a,i:i});else{const r=J.encodeStateVectorFromUpdateV2(a);n.push({type:"sv",table:o.name,prop:t.prop,k:e,sv:r})}}}return{yMessages:n,lastUpdateIds:r}})}(e,u);if(Ct(o),h){const e=[...(null==f?void 0:f.realms)||[],...(null==f?void 0:f.inviteRealms)||[]],a=yield function(e,t,n,r){return Z(this,void 0,void 0,function*(){const o=`upload-${qe(8)}`;if(t.isLoggedIn&&e.length>0){const s=new Set(r||[]);return(yield Promise.all(e.map(e=>Z(this,void 0,void 0,function*(){const{extractKey:r}=e.core.schema.primaryKey;if(!r)return{table:e.name,muts:[]};const i=n[e.name],a=(null==i?void 0:i.generatedGlobalId)?e.filter(e=>{return r(e),!s.has(e.realmId||"")&&(t=r(e),!(n=null==i?void 0:i.idPrefix)||"string"==typeof t&&t.startsWith(n));var t,n}):e.filter(e=>{const t=r(e);return!s.has(e.realmId||"")&&ie(t)}),l=yield a.toArray();if(l.length>0){const n={type:"upsert",values:l,keys:l.map(r),userId:t.userId,txid:o};return{table:e.name,muts:[n]}}return{table:e.name,muts:[]}})))).filter(e=>e.muts.length>0)}return[]})}(y,c,n,e);return Ct(o),s=s.concat(a),[s,t,r,i]}return[s,t,r,i]})),w=m.some(e=>e.muts.some(e=>e.keys.length>0))||g.some(e=>"u-c"===e.type);if(s)return w;if("push"===i&&!w)return!1;const k=Pt(m,null==v?void 0:v.latestRevisions),S=(null==v?void 0:v.clientIdentity)||oe(16);Ct(o);const x=yield jt(m,g,v,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 ze(d,e,{since:k});for(const t of d){const n=Ke(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()])}Pt(r,k),yield Ut(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,s=n?n.realms:[],i=n?n.inviteRealms:[],a=new Set(t.realms),l=new Set(t.realms.concat(t.inviteRealms));for(const e of s)a.has(e)||(o.add(e),l.has(e)||r.add(e));for(const e of i.concat(s))l.has(e)||r.add(e);if(r.size>0||o.size>0){const t=We(e);for(const e of t){let t=["realms","members","roles"].includes(e.name)?r:o;0!==t.size&&(e.schema.indexes.some(e=>"realmId"===e.keyPath||Array.isArray(e.keyPath)&&"realmId"===e.keyPath[0])?yield e.where("realmId").anyOf([...t]).delete():yield e.filter(e=>!!(null==e?void 0:e.realmId)&&t.has(e.realmId)).delete())}}if(o.size>0&&(null==n?void 0:n.yDownloadedRealms))for(const e of o)delete n.yDownloadedRealms[e]})}(e,x,o);const s=o||{syncedTables:[],latestRevisions:{},realms:[],inviteRealms:[],clientIdentity:S};p&&(s.syncedTables=u.map(e=>e.name).concat(y.map(e=>e.name))),s.latestRevisions=k,s.remoteDbId=x.dbId,s.initiallySynced=!0,s.realms=x.realms,s.inviteRealms=x.inviteRealms,s.serverRevision=x.serverRevision,s.yServerRevision=x.serverRevision,s.timestamp=new Date,delete s.error;const i=Kt(x.changes,r);if(yield $t(i,e),x.yMessages){const{receivedUntils:t,resyncNeeded:n,yServerRevision:r}=yield Nt(x.yMessages,e);r&&(s.yServerRevision=r),yield function(e,t,n){return Z(this,void 0,void 0,function*(){var r,o,s,i,a;const l={};for(const[t,n]of Object.entries(e))null!==(r=l[t])&&void 0!==r||(l[t]={}),l[t].unsentFrom=n+1;for(const[e,n]of Object.entries(t))null!==(o=l[e])&&void 0!==o||(l[e]={}),l[e].receivedUntil=n;const c=Object.values(n.dx._dbSchema).filter(e=>e.yProps).map(e=>e.yProps.map(e=>e.updatesTable)).flat();for(const e of c){const t=l[e],r=null!==(s=null==t?void 0:t.unsentFrom)&&void 0!==s?s:1,o=null!==(a=null!==(i=null==t?void 0:t.receivedUntil)&&void 0!==i?i:(yield n.table(e).where("i").between(1,1/0).reverse().limit(1).primaryKeys())[0])&&void 0!==a?a:0;yield n.transaction("rw",e,()=>Z(this,void 0,void 0,function*(){const t=yield n.table(e).get(Dt);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:Dt,unsentFrom:r,receivedUntil:o})}))}})}(_,t,e),n&&(s.yDownloadedRealms={})}return e.$syncState.put(s,"syncState"),{done:0===r.length,newSyncState:s}}));if(!I)return yield Et(e),yield Ft(e,t,n,{isInitialSync:r,cancelToken:o});const E=Object.values(n).some(e=>{var t;return null===(t=e.yProps)||void 0===t?void 0:t.length}),j=!!x.yMessages;if(E&&j)try{yield Bt(e,l,O)}catch(e){}return e.syncCompleteEvent.next(),!1})}function Kt(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 Ht(t){const n=[],r=new k(!0),o=new k(null);let s=!1,i=new Array(10).fill(0);return o.subscribe(()=>Z(this,void 0,void 0,function*(){if(!s&&n.length>0){s=!0,i.shift(),i.push(Date.now()),r.next(!1);try{yield function(){return Z(this,void 0,void 0,function*(){for(var r,o,s,i,a,l;n.length>0;){const c=n.shift();try{yield b(t.cloud.syncState.pipe(R(({phase:e})=>"in-sync"===e||"error"===e)));const n=t.cloud.persistedSyncState.value;if(!c)continue;switch(c.type){case"token-expired":const u=t.cloud.currentUser.value,d=yield Ie(t.cloud.options.databaseUrl,u);yield t.table("$logins").update(u.userId,{accessToken:d.accessToken,accessTokenExpiration:d.accessTokenExpiration,claims:d.claims,license:d.license,data:d.data});break;case"realm-added":(null===(r=null==n?void 0:n.realms)||void 0===r?void 0:r.includes(c.realm))||(null===(o=null==n?void 0:n.inviteRealms)||void 0===o?void 0:o.includes(c.realm))||(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realm-accepted":(null===(s=null==n?void 0:n.realms)||void 0===s?void 0:s.includes(c.realm))||(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realm-removed":((null===(i=null==n?void 0:n.realms)||void 0===i?void 0:i.includes(c.realm))||(null===(a=null==n?void 0:n.inviteRealms)||void 0===a?void 0:a.includes(c.realm)))&&(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realms-changed":yield t.cloud.sync({purpose:"pull",wait:!0});break;case"changes":if("error"===(null===(l=t.cloud.syncState.value)||void 0===l?void 0:l.phase)){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,s]=yield Promise.all([t.getSchema(),t.getPersistedSyncState(),t.getCurrentUser()]);if(!o||!r||!s)return;if(c.baseRev!==o.serverRevision)return void("string"!=typeof c.baseRev||"bigint"!=typeof o.serverRevision&&"object"!=typeof o.serverRevision||pe(t,"pull"));if((yield e.waitFor(Me(o)))!==c.realmSetHash)return void pe(t,"pull");let i=[];if(s.isLoggedIn){const e=We(t).map(e=>t.table(Fe(e.name)));i=yield ze(e,t)}if(c.changes.length>0){const e=Kt(c.changes,i);yield $t(e,t)}o.latestRevisions=Pt(i,o.latestRevisions),o.serverRevision=c.newRev,yield Ut(t,r,o.latestRevisions,c.newRev),yield t.$syncState.put(o,"syncState")}))}}catch(e){}}})}()}finally{i[i.length-1]-i[0]<1e4&&(yield new Promise(e=>setTimeout(e,1e3))),s=!1,r.next(!0)}}})),{enqueue:function(e){n.push(e),o.next(null)},readyToServe:r}}const Vt=new WeakMap,zt={members:"@id, [userId+realmId], [email+realmId], realmId",roles:"[realmId+name]",realms:"@realmId",$jobs:"",$syncState:"",$baseRevs:"[tableName+clientRev]",$logins:"claims.sub, lastLogin"};let qt=0;function Jt(e){"vip"in e&&(e=e.vip);let t=Vt.get(e.cloud);if(!t){const n=new S;let r=new Be(`syncstatechanged-${e.name}`),o=new Be(`synccomplete-${e.name}`);n.id=++qt;let s=!1;t={get name(){return e.name},close:()=>e.close(),transaction:e.transaction.bind(e),table:e.table.bind(e),get tables(){return e.tables},cloud:e.cloud,get $jobs(){return e.table("$jobs")},get $syncState(){return e.table("$syncState")},get $baseRevs(){return e.table("$baseRevs")},get $logins(){return e.table("$logins")},get realms(){return e.realms},get members(){return e.members},get roles(){return e.roles},get initiallySynced(){return s},localSyncEvent:n,get syncStateChangedEvent(){return r},get syncCompleteEvent(){return o},dx:e};const i={getCurrentUser:()=>t.$logins.toArray().then(e=>e.find(e=>e.isLoggedIn)||je),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=Gt(n.schema.primKey.keyPath));return e}),getOptions:()=>t.$syncState.get("options"),setInitiallySynced(e){s=e},reconfigure(){r=new Be(`syncstatechanged-${e.name}`),o=new Be(`synccomplete-${e.name}`)}};Object.assign(t,i),t.messageConsumer=Ht(t),t.messageProducer=new S,Vt.set(e.cloud,t)}return t}function Gt(e){return"string"==typeof e?e:e?"["+[].join.call(e,"+")+"]":""}const Yt="undefined"!=typeof InstallTrigger,Zt="undefined"!=typeof navigator&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\/|Edge\//.test(navigator.userAgent),Xt=Zt?[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]:NaN,Qt=Zt&&Xt<=605||Yt,en="undefined"!=typeof self&&"clients"in self&&!self.document;const{toString:tn}={};function nn(e){return tn.call(e).slice(8,-1)}function rn(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 on(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 sn=/b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|x|y|z/i;function an(e){return e>="A"&&e<="Z"}let ln=0;function cn(e,t){const n=new Uint8Array(18),r=new Uint8Array(n.buffer,0,6),o=Date.now();ln>=o?++ln:ln=o,r[0]=ln/1099511627776,r[1]=ln/4294967296,r[2]=ln/16777216,r[3]=ln/65536,r[4]=ln/256,r[5]=ln;const s=new Uint8Array(n.buffer,6);crypto.getRandomValues(s);return e+st(new Uint8Array(n.buffer))+(t||"")}function un(t){return{stack:"dbcore",name:"idGenerationMiddleware",level:1,create:n=>Object.assign(Object.assign({},n),{table:r=>{const o=n.table(r);return Object.assign(Object.assign({},o),{mutate:n=>{var s,i;const a=n.trans;if("versionchange"===a.mode&&(a.disableChangeTracking=!0,a.disableAccessControl=!0),a.disableChangeTracking)return o.mutate(n);if("add"===n.type||"put"===n.type){const a=null===(s=t.cloud.schema)||void 0===s?void 0:s[r];if(null==a?void 0:a.generatedGlobalId){if((null===(i=t.cloud.options)||void 0===i?void 0:i.databaseUrl)&&!t.initiallySynced){const e=rn(o.schema.primaryKey,n);return o.getMany({keys:e,trans:n.trans,cache:"immutable"}).then(t=>{if(t.length<e.length)throw new Error("Unable to create new objects without an initial sync having been performed.");return o.mutate(n)})}return function(n,s){let i=null;const a=rn(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]=cn(s,l),o.schema.primaryKey.outbound||(i||(i=n.values.slice()),i[c]=e.deepClone(i[c]),e.setByKeyPath(i[c],o.schema.primaryKey.keyPath,a[c]))}else if("string"!=typeof l||!l.startsWith(s)&&!l.startsWith("#"+s))throw new e.ConstraintError(`The ID "${l}" is not valid for table "${r}". Primary '@' keys requires the key to be prefixed with "${s}" (or "#${s}).\nIf you want to generate IDs programmatically, remove '@' from the schema to get rid of this constraint. Dexie Cloud supports custom IDs as long as they are random and globally unique.`)}),o.mutate(Object.assign(Object.assign({},n),{keys:a,values:i||n.values}))}(n,a.idPrefix)}if(null==a?void 0:a.markedForSync){rn(o.schema.primaryKey,n).forEach((t,n)=>{if(!ie(t)){const n=Array.isArray(t)?t.map(nn).join(","):nn(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 dn=0;function fn(e,t){return function(n){const{readers:r,writers:o}=n.trans[t]||(n.trans[t]={writers:[],readers:[]}),s=o.length,i=(s>0?o[s-1].then(()=>e(n),()=>e(n)):e(n)).finally(()=>{r.splice(r.indexOf(i))});return r.push(i),i}}function pn(e,t){return function(n){const{readers:r,writers:o}=n.trans[t]||(n.trans[t]={writers:[],readers:[]});let s=(o.length>0?o[o.length-1].then(()=>e(n),()=>e(n)):r.length>0?(i=r,new Promise(e=>{0===i.length&&e([]);let t=i.length;const n=new Array(t);i.forEach((r,o)=>Promise.resolve(r).then(e=>n[o]={status:"fulfilled",value:e},e=>n[o]={status:"rejected",reason:e}).then(()=>--t||e(n)))})).then(()=>e(n)):e(n)).finally(()=>{o.shift()});var i;return o.push(s),s}}const yn=new k(new Set);function hn(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 mn({currentUserObservable:e,db:t}){return{stack:"dbcore",name:"MutationTrackingMiddleware",level:1,create:n=>{const o=new Set(n.schema.tables.map(e=>e.name)),s=n.schema.tables.filter(e=>!/^\$/.test(e.name)),i=new Map;for(const e of s){const t=`$${e.name}_mutations`;o.has(t)&&i.set(e.name,n.table(t))}return Object.assign(Object.assign({},n),{transaction:(r,o)=>{let s;if("readwrite"===o){const e=r.filter(e=>{var n,r;return null===(r=null===(n=t.cloud.schema)||void 0===n?void 0:n[e])||void 0===r?void 0:r.markedForSync}).map(e=>Fe(e));s=n.transaction([...r,...e],o)}else s=n.transaction(r,o);if("readwrite"===o){s.txid=qe(16),s.opCount=0,s.currentUser=e.value,yn.value.add(s),yn.next(yn.value);const n=()=>{s.removeEventListener("complete",r),s.removeEventListener("error",n),s.removeEventListener("abort",n),yn.value.delete(s),yn.next(yn.value)},r=()=>{s.mutationsAdded&&!hn(t)&&pe(t,"push"),n()};s.addEventListener("complete",r),s.addEventListener("error",n),s.addEventListener("abort",n)}return s},table:e=>{const o=n.table(e);if(/^\$/.test(e))return e.endsWith("_mutations")?Object.assign(Object.assign({},o),{mutate:e=>("add"!==e.type&&"put"!==e.type||(e.trans.mutationsAdded=!0),o.mutate(e))}):"$logins"===e?Object.assign(Object.assign({},o),{mutate:e=>o.mutate(e).then(t=>(e.trans.mutationsAdded=!0,t)).catch(e=>Promise.reject(e))}):o;const{schema:s}=o,a=i.get(e);return a?function(e){const t="$lock"+ ++dn;return Object.assign(Object.assign({},e),{count:fn(e.count,t),get:fn(e.get,t),getMany:fn(e.getMany,t),openCursor:fn(e.openCursor,t),query:fn(e.query,t),mutate:pn(e.mutate,t)})}(Object.assign(Object.assign({},o),{mutate:n=>{var r,i,a;const c=n.trans;return c.txid?c.disableChangeTracking?o.mutate(n):(null===(i=null===(r=t.cloud.schema)||void 0===r?void 0:r[e])||void 0===i?void 0:i.markedForSync)&&(null===(a=c.currentUser)||void 0===a?void 0:a.isLoggedIn)?"deleteRange"===n.type?o.query({query:{range:n.range,index:s.primaryKey},trans:n.trans,values:!1}).then(e=>l({type:"delete",keys:e.result,trans:n.trans,criteria:{index:null,range:n.range}})):l(n):o.mutate(n):o.mutate(n)}})):o;function l(n){var i,l;const c=n.trans,u=null===(l=null===(i=t.cloud.options)||void 0===i?void 0:i.unsyncedProperties)||void 0===l?void 0:l[e],{txid:d,currentUser:{userId:f}}=c,{type:p}=n,y=++c.opCount;function h(e){if(!u)return e;let t=e;for(const n of Object.keys(e))u.some(e=>n===e||n.startsWith(e+"."))&&(t===e&&(t=Object.assign({},e)),delete t[n]);return t}return o.mutate(n).then(e=>{var t;const{numFailures:o,failures:i}=e;let l="delete"===p?n.keys:e.results,m="values"in n?n.values:[],v="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)=>!i[t]),m=m.filter((e,t)=>!i[t])),u){if(m=m.map(e=>{const t=Object.assign({},e);for(const e of u)delete t[e];return t}),v&&(v=h(v),0===Object.keys(v).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,s=e.length;r<s;++r)Object.keys(e[r]).length>0?(t.keys.push(b.keys[r]),t.changeSpecs.push(e[r]),n.addKey(b.keys[r])):o=!0;if(b=t,o){let e=[],t=[];for(let r=0,o=l.length;r<o;++r)n.hasKey(l[r])&&(e.push(l[r]),t.push(m[r]));l=e,m=t}}}}const _=Date.now();let w="criteria"in n&&n.criteria?Object.assign(Object.assign({},n.criteria),{index:n.criteria.index===s.primaryKey.keyPath?null:n.criteria.index}):void 0;if(u&&(null==w?void 0:w.index)){const e=null===(t=s.indexes.find(e=>e.name===w.index))||void 0===t?void 0:t.keyPath;(e?"string"==typeof e?[e]:e:[]).some(e=>null==u?void 0:u.includes(e))&&(w=void 0)}const k="delete"===n.type?{type:"delete",ts:_,opNo:y,keys:l,criteria:w,txid:d,userId:f}:"add"===n.type?{type:"insert",ts:_,opNo:y,keys:l,txid:d,userId:f,values:m}:g&&b?{type:"upsert",ts:_,opNo:y,keys:l,values:m,changeSpecs:b.changeSpecs.filter((e,t)=>!i[t]),txid:d,userId:f}:w&&v?{type:"modify",ts:_,opNo:y,keys:l,criteria:w,changeSpec:v,txid:d,userId:f}:v?{type:"update",ts:_,opNo:y,keys:l,changeSpecs:l.map(()=>v),txid:d,userId:f}:b?{type:"update",ts:_,opNo:y,keys:b.keys,changeSpecs:b.changeSpecs,txid:d,userId:f}:{type:"upsert",ts:_,opNo:y,keys:l,values:m,txid:d,userId:f};return"isAdditionalChunk"in n&&n.isAdditionalChunk&&(k.isAdditionalChunk=!0),l.length>0||w?a.mutate({type:"add",trans:c,values:[k]}).then(()=>(c.mutationsAdded=!0,e)):e})}}})}}}function vn(e,t){return function(n,r){var o;const s=Object.assign(Object.assign({},zt),n);Object.keys(zt).forEach(e=>{const t=s[e];if(null==t)throw new Error(`Cannot delete table ${e} as it is needed for access control of Dexie Cloud`);if(!n[e])return;const r=t.split(",").map(e=>e.trim()),o=zt[e].split(",").map(e=>e.trim()),i=new Set(r.map(e=>e.replace(/([&*]|\+\+)/g,"")));if(r[0]!==o[0])throw new Error(`Cannot override primary key of table ${e}. Please declare it as {${e}: ${JSON.stringify(zt[e])}`);for(let t=1;t<o.length;++t){const n=o[t];i.has(n.replace(/([&*]|\+\+)/g,""))||(s[e]+=`,${n}`)}});const i=t.cloud.schema||(t.cloud.schema={}),a=new Set;Object.keys(s).forEach(e=>{var t;const n=null===(t=s[e])||void 0===t?void 0:t.trim(),r=i[e]||(i[e]={});null!=n?(/^\@/.test(n)&&(s[e]=s[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)(sn.test(e[t])||an(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=on(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)||(s[`$${e}_mutations`]="++rev",r.markedForSync=!0),r.deleted&&(r.deleted=!1)):(r.deleted=!0,r.markedForSync=!1,s[`$${e}_mutations`]=null)});const l=e.call(this,s,r);for(const[e,t]of Object.entries(r))if(null===(o=t.yProps)||void 0===o?void 0:o.length){const n=i[e];n&&(n.yProps=t.yProps.map(e=>e.prop))}return l}}function bn(e,t,n){return"undefined"!=typeof navigator&&navigator.locks?navigator.locks.request(e.name+"|"+t,n):n()}const gn=new k(!0),_n=new k(!0);gn.pipe(N(e=>e?x(!0):x(!1).pipe(B(2e4))),M()).subscribe(_n);const wn="undefined"!=typeof document?I(document,"visibilitychange"):x({}),kn=wn.pipe(R(()=>"hidden"===document.visibilityState)),Sn=wn.pipe(R(()=>"visible"===document.visibilityState)),xn="undefined"!=typeof window?O(Sn,I(window,"mousedown"),I(window,"mousemove"),I(window,"keydown"),I(window,"wheel"),I(window,"touchmove")):x({});"undefined"!=typeof document&&O(x(!0),kn,xn).pipe(W(()=>"visible"===document.visibilityState),F(e=>{gn.value!==e&&gn.next(e)}),N(e=>e?x(0).pipe(B(16e4),F(()=>gn.next(!1))):x(0))).subscribe(()=>{});class In extends Error{constructor(){super(...arguments),this.name="TokenExpiredError"}}const On=new WeakMap,En=new WeakMap;function jn(e){let t=En.get(e);return t||(t=new S,En.set(e,t)),t}class Cn extends w{constructor(e,t,n,r,o,s,i,a){super(l=>new Un(e,t,n,r,o,a,l,s,i))}}let Tn=0;class Un extends T{constructor(e,t,n,r,o,s,i,a,l){super(()=>this.teardown()),this.id=++Tn,this.subscriptions=new Set,this.reconnecting=!1,this.db=e,this.databaseUrl=e.cloud.options.databaseUrl,this.rev=t,this.yrev=n,this.realmSetHash=r,this.clientIdentity=o,this.user=s,this.subscriber=i,this.lastUserActivity=new Date,this.messageProducer=a,this.webSocketStatus=l,this.connect()}teardown(){this.disconnect()}disconnect(){if(this.webSocketStatus.next("disconnected"),this.pinger&&(clearInterval(this.pinger),this.pinger=null),this.ws)try{this.ws.close()}catch(e){}this.ws=null;for(const e of this.subscriptions)e.unsubscribe();this.subscriptions.clear()}reconnect(){if(!this.reconnecting){this.reconnecting=!0;try{this.disconnect()}catch(e){}this.connect().catch(()=>{}).then(()=>this.reconnecting=!1)}}connect(){return 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 In);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?kt.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=>On.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&&jn(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?Nt([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=Rt(this.db,t.table,t.prop);if(e){const t=r[e.name];t&&(yield e.update(Dt,{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(kt.stringify(e))):null===(n=this.ws)||void 0===n||n.send(function(e){const t=new s;switch(i(t,e.type),"table"in e&&i(t,e.table),"prop"in e&&i(t,e.prop),e.type){case"u-ack":case"u-reject":c(t,BigInt(e.i));break;case"outdated-server-rev":break;case"y-complete-sync-done":i(t,e.yServerRev);break;default:switch(a(t,e.k),e.type){case"aware":l(t,e.u);break;case"doc-open":a(t,e.serverRev),a(t,e.sv);break;case"doc-close":break;case"sv":l(t,e.sv);break;case"u-c":l(t,e.u),c(t,BigInt(e.i));break;case"u-s":l(t,e.u),i(t,e.r||"")}}return u(t)}(e)))})),this.user.isLoggedIn&&!hn(this.db)&&this.subscriptions.add(function(e){const t=Ve(e.tables.filter(t=>{var n,r;return(null===(r=null===(n=e.cloud.schema)||void 0===n?void 0:n[t.name])||void 0===r?void 0:r.markedForSync)&&t.schema.yProps}).map(e=>e.schema.yProps.map(t=>({table:e.name,ydocProp:t.prop,updatesTable:t.updatesTable}))));return O(...t.map(({table:t,ydocProp:n,updatesTable:r})=>{const s=e.table(r);return g(s.get(Dt)).pipe(E(e=>{let r=(null==e?void 0:e.unsentFrom)||1;return g(o(()=>Z(this,void 0,void 0,function*(){return(yield Lt(s,r)).filter(e=>e.f&&1&e.f).map(e=>({type:"u-c",table:t,prop:n,k:e.k,u:e.u,i:e.i}))}))).pipe(j(e=>{e.length>0&&(r=e.at(-1).i+1)}))}))})).pipe(C(e=>e))}(this.db).subscribe(this.db.messageProducer))}catch(e){this.pauseUntil=new Date(Date.now()+6e4)}})}}class Pn extends Error{constructor(e){super("expired"===e?"License expired":"deactivated"===e?"User deactivated":"Invalid license"),this.name="InvalidLicenseError",e&&(this.license=e)}}function An(e){return Z(this,void 0,void 0,function*(){var e;yield(e=3e3,new Promise(t=>setTimeout(t,e))),yield b(xn)})}function $n(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 Wt(e,e.cloud.options,e.cloud.schema,{justCheckIfNeeded:!0}))})}const Dn=new WeakMap;function Ln(e,t,n,r){const o=Dn.get(e);if(o){if(o.pull||"push"===(null==r?void 0:r.purpose))return o.promise;{let s=!1;const i=e.cloud.syncState.subscribe(e=>{"pulling"===e.phase&&(s=!0)});return o.promise.then(()=>{i.unsubscribe()}).catch(e=>(i.unsubscribe(),Promise.reject(e))).then(()=>{if(!s)return Ln(e,t,n,r)})}}const s=function(){return Z(this,void 0,void 0,function*(){try{yield Et(e),yield bn(e,Mt,()=>Wt(e,t,n,r)),Dn.delete(e)}catch(t){throw Dn.delete(e),t}})}();return Dn.set(e,{promise:s,pull:"push"!==(null==r?void 0:r.purpose)}),s}function Rn(e,t,n){let r=null,o={cancelled:!1},s=0,i=0;function a(r=1){setTimeout(()=>{const f=l?"pull":"push";i=Date.now(),Ln(e,t,n,{cancelToken:o,retryImmediatelyOnFetchError:!0,purpose:f}).then(()=>{if(o.cancelled)d();else if(l||c)return l=!1,c=!1,a();u=!1,s=0,i=0}).catch(e=>{if(o.cancelled)d(),u=!1,s=0,i=0;else if(r<5){const e=1e3*[0,20,40,300,900][r];s=Date.now()+e,i=0,setTimeout(()=>a(r+1),e)}else u=!1,s=0,i=0})},0)}let l=!1,c=!1,u=!1;const d=()=>{o.cancelled=!0,r&&r.unsubscribe()};return{start:()=>{r=e.localSyncEvent.subscribe(({purpose:e})=>{(e=>{o.cancelled||("pull"===e&&(l=!0),"push"===e&&(c=!0),u?s||i>0&&Date.now():(u=!0,a()))})(e||"pull")})},stop:d}}function Nn(e,t){if(e&&t&&t.unsyncedTables)for(const n of t.unsyncedTables)e[n]&&(e[n].markedForSync=!1)}var Bn,Mn,Wn,Fn,Kn,Hn,Vn,zn,qn,Jn,Gn,Yn={},Zn=[],Xn=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Qn=Array.isArray;function er(e,t){for(var n in t)e[n]=t[n];return e}function tr(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function nr(e,t,n){var r,o,s,i={};for(s in t)"key"==s?r=t[s]:"ref"==s?o=t[s]:i[s]=t[s];if(arguments.length>2&&(i.children=arguments.length>3?Bn.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(s in e.defaultProps)void 0===i[s]&&(i[s]=e.defaultProps[s]);return rr(e,i,r,o,null)}function rr(e,t,n,r,o){var s={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++Wn:o,__i:-1,__u:0};return null==o&&null!=Mn.vnode&&Mn.vnode(s),s}function or(e){return e.children}function sr(e,t){this.props=e,this.context=t}function ir(e,t){if(null==t)return e.__?ir(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?ir(e):null}function ar(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 ar(e)}}function lr(e){(!e.__d&&(e.__d=!0)&&Fn.push(e)&&!cr.__r++||Kn!=Mn.debounceRendering)&&((Kn=Mn.debounceRendering)||Hn)(cr)}function cr(){for(var e,t,n,r,o,s,i,a=1;Fn.length;)Fn.length>a&&Fn.sort(Vn),e=Fn.shift(),a=Fn.length,e.__d&&(n=void 0,r=void 0,o=(r=(t=e).__v).__e,s=[],i=[],t.__P&&((n=er({},r)).__v=r.__v+1,Mn.vnode&&Mn.vnode(n),mr(t.__P,n,r,t.__n,t.__P.namespaceURI,32&r.__u?[o]:null,s,null==o?ir(r):o,!!(32&r.__u),i),n.__v=r.__v,n.__.__k[n.__i]=n,br(s,n,i),r.__e=r.__=null,n.__e!=o&&ar(n)));cr.__r=0}function ur(e,t,n,r,o,s,i,a,l,c,u){var d,f,p,y,h,m,v,b=r&&r.__k||Zn,g=t.length;for(l=function(e,t,n,r,o){var s,i,a,l,c,u=n.length,d=u,f=0;for(e.__k=new Array(o),s=0;s<o;s++)null!=(i=t[s])&&"boolean"!=typeof i&&"function"!=typeof i?("string"==typeof i||"number"==typeof i||"bigint"==typeof i||i.constructor==String?i=e.__k[s]=rr(null,i,null,null,null):Qn(i)?i=e.__k[s]=rr(or,{children:i},null,null,null):null==i.constructor&&i.__b>0?i=e.__k[s]=rr(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[s]=i,l=s+f,i.__=e,i.__b=e.__b+1,-1!=(c=i.__i=fr(i,n,l,d))&&(d--,(a=n[c])&&(a.__u|=2)),null==a||null==a.__v?(-1==c&&(o>u?f--:o<u&&f++),"function"!=typeof i.type&&(i.__u|=4)):c!=l&&(c==l-1?f--:c==l+1?f++:(c>l?f--:f++,i.__u|=4))):e.__k[s]=null;if(d)for(s=0;s<u;s++)null!=(a=n[s])&&!(2&a.__u)&&(a.__e==r&&(r=ir(a)),kr(a,a));return r}(n,t,b,l,g),d=0;d<g;d++)null!=(p=n.__k[d])&&(f=-1==p.__i?Yn:b[p.__i]||Yn,p.__i=d,m=mr(e,p,f,o,s,i,a,l,c,u),y=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&wr(f.ref,null,p),u.push(p.ref,p.__c||y,p)),null==h&&null!=y&&(h=y),(v=!!(4&p.__u))||f.__k===p.__k?l=dr(p,l,e,v):"function"==typeof p.type&&void 0!==m?l=m:y&&(l=y.nextSibling),p.__u&=-7);return n.__e=h,l}function dr(e,t,n,r){var o,s;if("function"==typeof e.type){for(o=e.__k,s=0;o&&s<o.length;s++)o[s]&&(o[s].__=e,t=dr(o[s],t,n,r));return t}e.__e!=t&&(r&&(t&&e.type&&!t.parentNode&&(t=ir(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do{t=t&&t.nextSibling}while(null!=t&&8==t.nodeType);return t}function fr(e,t,n,r){var o,s,i,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,s=n+1;o>=0||s<t.length;)if(null!=(c=t[i=o>=0?o--:s++])&&!(2&c.__u)&&a==c.key&&l==c.type)return i;return-1}function pr(e,t,n){"-"==t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||Xn.test(t)?n:n+"px"}function yr(e,t,n,r,o){var s,i;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||pr(e.style,t,"");if(n)for(t in n)r&&n[t]==r[t]||pr(e.style,t,n[t])}else if("o"==t[0]&&"n"==t[1])s=t!=(t=t.replace(zn,"$1")),i=t.toLowerCase(),t=i in e||"onFocusOut"==t||"onFocusIn"==t?i.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+s]=n,n?r?n.u=r.u:(n.u=qn,e.addEventListener(t,s?Gn:Jn,s)):e.removeEventListener(t,s?Gn:Jn,s);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 hr(e){return function(t){if(this.l){var n=this.l[t.type+e];if(null==t.t)t.t=qn++;else if(t.t<n.u)return;return n(Mn.event?Mn.event(t):t)}}}function mr(e,t,n,r,o,s,i,a,l,c){var u,d,f,p,y,h,m,v,b,g,_,w,k,S,x,I,O,E=t.type;if(null!=t.constructor)return null;128&n.__u&&(l=!!(32&n.__u),s=[a=t.__e=n.__e]),(u=Mn.__b)&&u(t);e:if("function"==typeof E)try{if(v=t.props,b="prototype"in E&&E.prototype.render,g=(u=E.contextType)&&r[u.__c],_=u?g?g.props.value:u.__:r,n.__c?m=(d=t.__c=n.__c).__=d.__E:(b?t.__c=d=new E(v,_):(t.__c=d=new sr(v,_),d.constructor=E,d.render=Sr),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!=E.getDerivedStateFromProps&&(d.__s==d.state&&(d.__s=er({},d.__s)),er(d.__s,E.getDerivedStateFromProps(v,d.__s))),p=d.props,y=d.state,d.__v=t,f)b&&null==E.getDerivedStateFromProps&&null!=d.componentWillMount&&d.componentWillMount(),b&&null!=d.componentDidMount&&d.__h.push(d.componentDidMount);else{if(b&&null==E.getDerivedStateFromProps&&v!==p&&null!=d.componentWillReceiveProps&&d.componentWillReceiveProps(v,_),t.__v==n.__v||!d.__e&&null!=d.shouldComponentUpdate&&!1===d.shouldComponentUpdate(v,d.__s,_)){for(t.__v!=n.__v&&(d.props=v,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&&i.push(d);break e}null!=d.componentWillUpdate&&d.componentWillUpdate(v,d.__s,_),b&&null!=d.componentDidUpdate&&d.__h.push(function(){d.componentDidUpdate(p,y,h)})}if(d.context=_,d.props=v,d.__P=e,d.__e=!1,k=Mn.__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=er(er({},r),d.getChildContext())),b&&!f&&null!=d.getSnapshotBeforeUpdate&&(h=d.getSnapshotBeforeUpdate(p,y)),I=u,null!=u&&u.type===or&&null==u.key&&(I=gr(u.props.children)),a=ur(e,Qn(I)?I:[I],t,n,r,o,s,i,a,l,c),d.base=t.__e,t.__u&=-161,d.__h.length&&i.push(d),m&&(d.__E=d.__=null)}catch(e){if(t.__v=null,l||null!=s)if(e.then){for(t.__u|=l?160:128;a&&8==a.nodeType&&a.nextSibling;)a=a.nextSibling;s[s.indexOf(a)]=null,t.__e=a}else{for(O=s.length;O--;)tr(s[O]);vr(t)}else t.__e=n.__e,t.__k=n.__k,e.then||vr(t);Mn.__e(e,t,n)}else null==s&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):a=t.__e=_r(n.__e,t,n,r,o,s,i,l,c);return(u=Mn.diffed)&&u(t),128&t.__u?void 0:a}function vr(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(vr)}function br(e,t,n){for(var r=0;r<n.length;r++)wr(n[r],n[++r],n[++r]);Mn.__c&&Mn.__c(t,e),e.some(function(t){try{e=t.__h,t.__h=[],e.some(function(e){e.call(t)})}catch(e){Mn.__e(e,t.__v)}})}function gr(e){return"object"!=typeof e||null==e||e.__b&&e.__b>0?e:Qn(e)?e.map(gr):er({},e)}function _r(e,t,n,r,o,s,i,a,l){var c,u,d,f,p,y,h,m=n.props||Yn,v=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!=s)for(c=0;c<s.length;c++)if((p=s[c])&&"setAttribute"in p==!!b&&(b?p.localName==b:3==p.nodeType)){e=p,s[c]=null;break}if(null==e){if(null==b)return document.createTextNode(v);e=document.createElementNS(o,b,v.is&&v),a&&(Mn.__m&&Mn.__m(t,s),a=!1),s=null}if(null==b)m===v||a&&e.data==v||(e.data=v);else{if(s=s&&Bn.call(e.childNodes),!a&&null!=s)for(m={},c=0;c<e.attributes.length;c++)m[(p=e.attributes[c]).name]=p.value;for(c in m)if(p=m[c],"children"==c);else if("dangerouslySetInnerHTML"==c)d=p;else if(!(c in v)){if("value"==c&&"defaultValue"in v||"checked"==c&&"defaultChecked"in v)continue;yr(e,c,null,p,o)}for(c in v)p=v[c],"children"==c?f=p:"dangerouslySetInnerHTML"==c?u=p:"value"==c?y=p:"checked"==c?h=p:a&&"function"!=typeof p||m[c]===p||yr(e,c,p,m[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=""),ur("template"==t.type?e.content:e,Qn(f)?f:[f],t,n,r,"foreignObject"==b?"http://www.w3.org/1999/xhtml":o,s,i,s?s[0]:n.__k&&ir(n,0),a,l),null!=s)for(c=s.length;c--;)tr(s[c]);a||(c="value","progress"==b&&null==y?e.removeAttribute("value"):null!=y&&(y!==e[c]||"progress"==b&&!y||"option"==b&&y!=m[c])&&yr(e,c,y,m[c],o),c="checked",null!=h&&h!=e[c]&&yr(e,c,h,m[c],o))}return e}function wr(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){Mn.__e(e,n)}}function kr(e,t,n){var r,o;if(Mn.unmount&&Mn.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||wr(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){Mn.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&kr(r[o],t,n||"function"!=typeof e.type);n||tr(e.__e),e.__c=e.__=e.__e=void 0}function Sr(e,t,n){return this.constructor(e,n)}function xr(e,t,n){var r,o,s;t==document&&(t=document.documentElement),Mn.__&&Mn.__(e,t),r=!1?null:t.__k,o=[],s=[],mr(t,e=t.__k=nr(or,null,[e]),r||Yn,Yn,t.namespaceURI,r?null:t.firstChild?Bn.call(t.childNodes):null,o,r?r.__e:t.firstChild,false,s),br(o,e,s)}Bn=Zn.slice,Mn={__e:function(e,t,n,r){for(var o,s,i;t=t.__;)if((o=t.__c)&&!o.__)try{if((s=o.constructor)&&null!=s.getDerivedStateFromError&&(o.setState(s.getDerivedStateFromError(e)),i=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,r||{}),i=o.__d),i)return o.__E=o}catch(t){e=t}throw e}},Wn=0,sr.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=er({},this.state),"function"==typeof e&&(e=e(er({},n),this.props)),e&&er(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),lr(this))},sr.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),lr(this))},sr.prototype.render=or,Fn=[],Hn="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Vn=function(e,t){return e.__v.__b-t.__v.__b},cr.__r=0,zn=/(PointerCapture)$|Capture$/i,qn=0,Jn=hr(!1),Gn=hr(!0);const Ir={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"}};function Or({children:e,className:t}){return nr("div",{className:`dexie-dialog ${t||""}`},nr("div",{style:Ir.Darken}),nr("div",{style:Ir.DialogOuter},nr("div",{style:Ir.DialogInner},e)))}var Er,jr,Cr,Tr,Ur=0,Pr=[],Ar=Mn,$r=Ar.__b,Dr=Ar.__r,Lr=Ar.diffed,Rr=Ar.__c,Nr=Ar.unmount,Br=Ar.__;function Mr(e,t){Ar.__h&&Ar.__h(jr,e,Ur||t),Ur=0;var n=jr.__H||(jr.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function Wr(e){return Ur=1,function(e,t){var n=Mr(Er++,2);if(n.t=e,!n.__c&&(n.__=[Gr(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=jr,!jr.__f)){var r=function(e,t,r){if(!n.__c.__H)return!0;var s=n.__c.__H.__.filter(function(e){return!!e.__c});if(s.every(function(e){return!e.__N}))return!o||o.call(this,e,t,r);var i=n.__c.props!==e;return s.forEach(function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(i=!0)}}),o&&o.call(this,e,t,r)||i};jr.__f=!0;var o=jr.shouldComponentUpdate,s=jr.componentWillUpdate;jr.componentWillUpdate=function(e,t,n){if(this.__e){var i=o;o=void 0,r(e,t,n),o=i}s&&s.call(this,e,t,n)},jr.shouldComponentUpdate=r}return n.__N||n.__}(Gr,e)}function Fr(e){return Ur=5,function(e,t){var n=Mr(Er++,7);return Jr(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}(function(){return{current:e}},[])}function Kr(){for(var e;e=Pr.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(zr),e.__H.__h.forEach(qr),e.__H.__h=[]}catch(t){e.__H.__h=[],Ar.__e(t,e.__v)}}Ar.__b=function(e){jr=null,$r&&$r(e)},Ar.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Br&&Br(e,t)},Ar.__r=function(e){Dr&&Dr(e),Er=0;var t=(jr=e.__c).__H;t&&(Cr===jr?(t.__h=[],jr.__h=[],t.__.forEach(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.forEach(zr),t.__h.forEach(qr),t.__h=[],Er=0)),Cr=jr},Ar.diffed=function(e){Lr&&Lr(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==Pr.push(t)&&Tr===Ar.requestAnimationFrame||((Tr=Ar.requestAnimationFrame)||Vr)(Kr)),t.__H.__.forEach(function(e){e.u&&(e.__H=e.u),e.u=void 0})),Cr=jr=null},Ar.__c=function(e,t){t.some(function(e){try{e.__h.forEach(zr),e.__h=e.__h.filter(function(e){return!e.__||qr(e)})}catch(n){t.some(function(e){e.__h&&(e.__h=[])}),t=[],Ar.__e(n,e.__v)}}),Rr&&Rr(e,t)},Ar.unmount=function(e){Nr&&Nr(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(e){try{zr(e)}catch(e){t=e}}),n.__H=void 0,t&&Ar.__e(t,n.__v))};var Hr="function"==typeof requestAnimationFrame;function Vr(e){var t,n=function(){clearTimeout(r),Hr&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);Hr&&(t=requestAnimationFrame(n))}function zr(e){var t=jr,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),jr=t}function qr(e){var t=jr;e.__c=e.__(),jr=t}function Jr(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function Gr(e,t){return"function"==typeof t?t(e):t}function Yr({message:e,messageCode:t,messageParams:n}){return e.replace(/\{\w+\}/gi,e=>n[e.substring(1,e.length-1)])}function Zr({title:e,type:t,alerts:n,fields:r,submitLabel:o,cancelLabel:s,onCancel:i,onSubmit:a}){const[l,c]=Wr({}),u=Fr(null);return function(e,t){var n=Mr(Er++,4);!Ar.__s&&Jr(n.__H,t)&&(n.__=e,n.u=t,jr.__h.push(n))}(()=>{var e;return null===(e=u.current)||void 0===e?void 0:e.focus()},[]),nr(Or,{className:"dxc-login-dlg"},nr(or,null,nr("h3",{style:Ir.WindowHeader},e),n.map(e=>nr("p",{style:Ir.Alert[e.type]},Yr(e))),nr("form",{onSubmit:e=>{e.preventDefault(),a(l)}},Object.entries(r).map(([e,{type:t,label:n,placeholder:r}],o)=>nr("label",{style:Ir.Label,key:o},n?`${n}: `:"",nr("input",{ref:0===o?u:void 0,type:t,name:e,autoComplete:"on",style:Ir.Input,autoFocus:!0,placeholder:r,value:l[e]||"",onInput:n=>{var r;const o=function(e,t){switch(e){case"email":return t.toLowerCase();case"otp":return t.toUpperCase();default:return t}}(t,null===(r=n.target)||void 0===r?void 0:r.value);let s=Object.assign(Object.assign({},l),{[e]:o});c(s),"otp"===t&&8===(null==o?void 0:o.trim().length)&&a(s)}}))))),nr("div",{style:Ir.ButtonsDiv},nr(or,null,nr("button",{type:"submit",style:Ir.PrimaryButton,onClick:()=>a(l)},o),s&&nr("button",{style:Ir.Button,onClick:i},s))))}class Xr extends sr{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?nr(Zr,Object.assign({},t)):null}}function Qr(e){const t=new WeakMap;return n=>{let r=t.get(n);return r||(r=e(n),t.set(n,r)),r}}const eo=Qr(e=>new k(je));function to(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 no=Qr(e=>to(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})),{})),ro=Qr(e=>to(eo(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 oo(...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 so=Qr(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}(to(P([ro(e._novip),no(e._novip)]).pipe(W(([{selfMembers:e,realms:t,userId:n},r])=>({selfMembers:e,realms:t,userId:n,globalRoles:r}))),{selfMembers:[],realms:[],userId:je.userId,globalRoles:{}}),({selfMembers:e,realms:t,userId:n,globalRoles:r})=>{const o=t.map(t=>{const o=e.filter(e=>e.realmId===t.realmId),s=o.map(e=>e.permissions).filter(e=>e),i=Ve(o.map(e=>e.roles).filter(e=>e)).map(e=>r[e]).filter(e=>e).map(e=>e.permissions);return Object.assign(Object.assign({},t),{permissions:t.owner===n?{manage:"*"}:oo(...s,...i)})}).reduce((e,t)=>Object.assign(Object.assign({},e),{[t.realmId]:t}),{[n]:{realmId:n,owner:n,name:n,permissions:{manage:"*"}}});return o}));class io{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 ao=Qr(e=>{const t=eo(e._novip).pipe(N(t=>o(()=>e.members.where({email:t.email||""}).toArray()))),n=so(e._novip),r=ro(e._novip);return to(P([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]})}),s=t.reduce(o,{}),i=n.selfMembers.reduce(o,s);return Object.values(i).filter(e=>!e.accepted).map(t=>Object.assign(Object.assign({},t),{accept(){return 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 lo(e){return t=>{var r;const o=t.doc;if(!o)throw new Error("Internal error: DexieYProvider.createYHandler called without a doc. This is unexpected.");const{parentTable:s}=o.meta||{};if(!(null===(r=e.cloud.schema)||void 0===r?void 0:r[s].markedForSync))return;let i;Object.defineProperty(t,"awareness",{get:()=>i||(i=function(e,t,r){const{parentTable:o,parentId:s,parentProp:i,updatesTable:a}=t.meta,l=new Y.Awareness(t),c=jn(t);return l.on("update",({added:n,updated:s,removed:a},c)=>{const u=n.concat(s).concat(a),d=e.cloud.currentUser.value;if("server"!==c&&d.isLoggedIn&&!hn(e)){const n=Y.encodeAwarenessUpdate(l,u);e.messageProducer.next({type:"aware",table:o,prop:i,k:t.meta.parentId,u:n}),r.destroyed&&e.messageProducer.next({type:"doc-close",table:o,prop:i,k:t.meta.parentId})}}),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=P([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&&!hn(e)&&(++l,d().catch(e=>{}))});function d(){return Z(this,void 0,void 0,function*(){const c=l,u=e.table(a),d=e.$syncState,[f,p]=yield e.transaction("r",d,u,()=>Z(this,void 0,void 0,function*(){const e=yield u.get(Dt),t=yield d.get("syncState");return[(null==e?void 0:e.receivedUntil)||0,(null==t?void 0:t.yServerRevision)||(null==t?void 0:t.serverRevision)]}));if(r.destroyed||l!==c||!t)return;const y={type:"doc-open",table:o,prop:i,k:s,serverRev:p},h=yield u.where("i").between(f,1/0,!1).filter(e=>0===n(e.k,s)&&!(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),On.set(o,i),i)})}}function co(e){return"rlm~"+e}function uo(e){return e.startsWith("rlm~")?e.substr(4):null}const fo={},po=new WeakMap,yo=mo("tx"),ho=mo("unload");function mo(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:s}of e.values()){const e=G.getOrCreateDocument(t,o,s,n);try{const t=G.load(e);yield t.whenLoaded;for(const t of r)yield t(e,n)}catch(e){null==e||e.name}finally{G.release(e)}}})}(e).finally(()=>{t=null})},0))})},enqueue(e,t,n,o,s){const i=`${e.name}:${t}:${n}:${o}`;let a=r.get(i);a||(a={db:e,parentTable:t,parentId:n,prop:o,triggers:new Set},r.set(i,a)),a.triggers.add(s)}}}function vo(){yo.run()}function bo(){ho.run()}function go(e,t,n){var o,s;const i=null===(s=null===(o=e.schema.yProps)||void 0===o?void 0:o.find(e=>e.prop===t))||void 0===s?void 0:s.updatesTable;if(!i)throw new Error(`Table ${e.name} does not have a Yjs property named ${t}`);fo[i]={trigger:n,parentTable:e.name,prop:t};const a=e.db._novip;let l=po.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=>fo[e])?(o.addEventListener("complete",vo),o):o},table:n=>{const o=t.table(n),s=fo[n];if(!s)return o;const{trigger:i,parentTable:a,prop:l}=s;return Object.assign(Object.assign({},o),{mutate(t){var n;switch(t.type){case"add":for(const r of t.values){if(null==r.k)continue;const t=r.k,o=G.getDocCache(e).find(a,t,l);(o&&(null===(n=G.for(o))||void 0===n?void 0:n.refCount)?ho:yo).enqueue(e,a,t,l,i)}break;case"delete":t.trans._rejecting_y_ypdate&&o.getMany({keys:t.keys,trans:t.trans,cache:"immutable"}).then(t=>{const n=new r;for(const{k:e}of t)null!=e&&n.addKey(e);for(const t of n)yo.enqueue(e,a,t.from,l,i)})}return o.mutate(t)}})}})}))(a),po.set(a,l)),a.use(l),G.on("beforeunload",bo)}const _o={nameSuffix:!0};function wo(t){const n=t.name,r=eo(t),s=[];let i=!1,a=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,d,f,p,y,h,m;l=!1;const v=Jt(t);"undefined"!=typeof window&&"undefined"!=typeof document&&((null===(n=v.cloud.options)||void 0===n?void 0:n.customLoginGui)||s.push(function(e){let t=!1;const n=document.createElement("div");return document.body?(document.body.appendChild(n),xr(nr(Xr,{db:e.vip}),n)):addEventListener("DOMContentLoaded",()=>{t||(document.body.appendChild(n),xr(nr(Xr,{db:e.vip}),n))}),{unsubscribe(){try{n.remove()}catch(e){}t=!0},get closed(){return t}}}(t))),v.cloud.isServiceWorkerDB||s.push(function(e){let t=e.cloud.webSocketStatus.value;const n=e.cloud.webSocketStatus.pipe(N(e=>{const n=t;t=e;const r=x(e);switch(e){case"disconnected":return gn.value?r.pipe(V(500)):r;case"connecting":return"not-started"===n||"error"===n?r:r.pipe(V(4e3));default:return r}}));return P([n,e.syncStateChangedEvent.pipe(z({phase:"initial"})),eo(e.dx._novip),_n]).pipe(W(([t,n,r,o])=>{var s;if((null===(s=r.license)||void 0===s?void 0:s.status)&&"ok"!==r.license.status)return{phase:"offline",status:"offline",license:r.license.status};let{phase:i,error:a,progress:l}=n,c=t;return"error"===i&&(c="error"),"not-started"===t&&("pushing"!==i&&"pulling"!==i||(c="connecting")),"error"!==e.cloud.syncState.value.phase||"pushing"!==n.phase&&"pulling"!==n.phase||(c="connecting"),o||(c="disconnected"),{phase:i,error:a,progress:l,status:Tt?c:"offline",license:"ok"}}))}(v).subscribe(t.cloud.syncState)),s.push(v.syncCompleteEvent.subscribe(u)),v.tables.every(e=>e.core)||function(){throw new e.SchemaError("Version increment needed to allow dexie-cloud change tracking")}();const _="serviceWorker"in navigator?yield navigator.serviceWorker.getRegistrations():[],[w,S]=yield v.transaction("rw",v.$syncState,()=>Z(this,void 0,void 0,function*(){var e,t;const{options:n,schema:r}=v.cloud,[o,s,a]=yield Promise.all([v.getOptions(),v.getSchema(),v.getPersistedSyncState()]);if(i){if(!o||JSON.stringify(o)!==JSON.stringify(n)){if(!n)throw new Error("Internal error");const e=Object.assign({},n);delete e.fetchTokens,delete e.awarenessProtocol,yield v.$syncState.put(e,"options")}}else v.cloud.options=o||null;if((null===(e=v.cloud.options)||void 0===e?void 0:e.tryUseServiceWorker)&&"serviceWorker"in navigator&&_.length>0&&!Qt?v.cloud.usingServiceWorker=!0:((null===(t=v.cloud.options)||void 0===t?void 0:t.tryUseServiceWorker)&&v.cloud.isServiceWorkerDB,v.cloud.usingServiceWorker=!1),Nn(r,v.cloud.options),Nn(s,v.cloud.options),r){if(!s||JSON.stringify(s)!==JSON.stringify(r)){const e=s||{};for(const[t,n]of Object.entries(r)){const r=e[t];r?(r.markedForSync=n.markedForSync,n.deleted=r.deleted,r.generatedGlobalId=n.generatedGlobalId):e[t]=Object.assign({},n)}yield v.$syncState.put(e,"schema"),Object.assign(r,e)}}else v.cloud.schema=s||null;return[null==a?void 0:a.initiallySynced,null==a?void 0:a.realms]}));if(w&&v.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`)}}(v),c(),!v.cloud.isServiceWorkerDB){s.push(o(()=>v.getCurrentUser()).subscribe(r)),s.push(o(()=>v.getPersistedSyncState()).subscribe(v.cloud.persistedSyncState)),yield b(P([r.pipe(q(1),K(1)),v.cloud.persistedSyncState.pipe(q(1),K(1))]));const e=lo(v);G.on.new.subscribe(e),v.dx.once("close",()=>{G.on.new.unsubscribe(e)})}let E=!1;const j=yield v.getCurrentUser(),C=null===(d=v.cloud.options)||void 0===d?void 0:d.requireAuth;C&&(v.cloud.isServiceWorkerDB?yield b(r.pipe(R(e=>!!e.isLoggedIn),K(1))):"object"==typeof C?(!j.isLoggedIn||C.userId&&j.userId!==C.userId||C.email&&j.email!==C.email)&&(E=yield $e(v,C)):j.isLoggedIn||(E=yield $e(v))),!j.isLoggedIn||S&&S.includes(j.userId)||(E=!0),a&&a.stop(),a=null,c();const T=(null===(f=v.cloud.options)||void 0===f?void 0:f.databaseUrl)&&(!w||E);T&&(yield function(e,t,n){return Z(this,void 0,void 0,function*(){yield bn(e,Mt,()=>Wt(e,t,n,{isInitialSync:!0}))})}(v,v.cloud.options,v.cloud.schema),v.setInitiallySynced(!0)),c(),v.cloud.usingServiceWorker&&(null===(p=v.cloud.options)||void 0===p?void 0:p.databaseUrl)?(T||fe(v,"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){}})}(v).catch(()=>{})):(null===(y=v.cloud.options)||void 0===y?void 0:y.databaseUrl)&&v.cloud.schema&&!v.cloud.isServiceWorkerDB&&(a=Rn(v,v.cloud.options,v.cloud.schema),a.start(),T||pe(v,"push")),c(),v.cloud.isServiceWorkerDB||s.push(I(self,"online").subscribe(()=>{v.syncStateChangedEvent.next({phase:"not-in-sync"}),hn(v)||pe(v,"push")}),I(self,"offline").subscribe(()=>{v.syncStateChangedEvent.next({phase:"offline"})})),!(null===(h=v.cloud.options)||void 0===h?void 0:h.databaseUrl)||(null===(m=v.cloud.options)||void 0===m?void 0:m.disableWebSocket)||en||s.push(function(e){var t;if(!(null===(t=e.cloud.options)||void 0===t?void 0:t.databaseUrl))throw new Error("No database URL to connect WebSocket to");const n=e.messageConsumer.readyToServe.pipe(R(e=>e),N(()=>e.getPersistedSyncState()),R(e=>e&&e.serverRevision),N(e=>Z(this,void 0,void 0,function*(){return{type:"ready",rev:e.serverRevision,realmSetHash:yield Me(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])=>_n.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 Me(t)]})),M(([e,t],[n,r])=>e===n&&t===r),N(([n,o])=>{var s;return(null===(s=e.cloud.persistedSyncState)||void 0===s?void 0:s.value)?n?new Cn(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 Ie(e.cloud.options.databaseUrl,t);yield e.table("$logins").update(t.userId,{accessToken:n.accessToken,accessTokenExpiration:n.accessTokenExpiration,claims:n.claims,license:n.license,data:n.data})})),N(()=>t())):U(()=>n)),H(n=>(e.cloud.webSocketStatus.next("error"),n instanceof Pn?U(()=>n):g(An()).pipe(N(()=>t())))))}().subscribe({next:t=>{t&&e.messageConsumer.enqueue(t)},error:e=>{},complete:()=>{}})}(v))})}(t)}catch(e){}}),!0);let l=!1;function c(){if(l)throw new e.DatabaseClosedError}t.once("close",()=>{s.forEach(e=>e.unsubscribe()),s.splice(0,s.length),l=!0,a&&a.stop(),a=null,r.next(je)});const u=new S;var d;t.cloud={version:"4.2.5",options:Object.assign({},_o),schema:null,get currentUserId(){return r.value.userId||je.userId},currentUser:r,syncState:new k({phase:"initial",status:"not-started"}),events:{syncComplete:u},persistedSyncState:new k(void 0),userInteraction:new k(void 0),webSocketStatus:new k("not-started"),login(e){return Z(this,void 0,void 0,function*(){const n=Jt(t);yield n.cloud.sync(),yield $e(n,e)})},invites:ao(t),roles:no(t),configure(e){e=t.cloud.options=Object.assign(Object.assign({},t.cloud.options),e),i=!0,e.databaseUrl&&e.nameSuffix&&(t.name=`${n}-${function(e){const t=new URL(e);return"/"===t.pathname?t.hostname.split(".")[0]:t.pathname.split("/")[1]}(e.databaseUrl)}`,Jt(t).reconfigure()),Nn(t.cloud.schema,t.cloud.options)},logout(){return Z(this,arguments,void 0,function*({force:e}={}){e?yield Ue(Jt(t),{deleteUnsyncedData:!0}):yield Te(Jt(t))})},sync(){return Z(this,arguments,void 0,function*({wait:e,purpose:n}={wait:!0,purpose:"push"}){var r;void 0===e&&(e=!0);const s=Jt(t);if("ok"!==((null===(r=s.cloud.currentUser.value.license)||void 0===r?void 0:r.status)||"ok")&&(yield Se(s)),"pull"===n){const t=s.cloud.persistedSyncState.value;if(pe(s,n),e){const e=yield b(s.cloud.persistedSyncState.pipe(R(e=>null!=(null==e?void 0:e.timestamp)&&(!t||e.timestamp>t.timestamp))));if(null==e?void 0:e.error)throw new Error("Sync error: "+e.error)}}else if(yield $n(s)){const t=s.cloud.persistedSyncState.value;pe(s,n),e&&(yield b(g(o(()=>Z(this,void 0,void 0,function*(){const e=yield $n(s),n=yield s.getPersistedSyncState();if((null==n?void 0:n.timestamp)!==(null==t?void 0:t.timestamp)&&(null==n?void 0:n.error))throw new Error("Sync error: "+n.error);return e}))).pipe(R(e=>!e))))}})},permissions:(e,n)=>function(e,t,n){if(!t)throw new TypeError("Cannot check permissions of undefined or null. A Dexie Cloud object with realmId and owner expected.");const{owner:r,realmId:o}=t;if(!n){if("function"!=typeof t.table)throw new TypeError("Missing 'table' argument to permissions and table could not be extracted from entity");n=t.table()}const s=so(e),i=t=>{const s=t[o||e.cloud.currentUserId];return s?new io(s.permissions,n,void 0===o||o===e.cloud.currentUserId||r===e.cloud.currentUserId):new io({},n,!r||r===e.cloud.currentUserId)},a=s.pipe(W(i));return a.getValue=()=>i(s.getValue()),a}(t._novip,e,n)},t.Version.prototype._parseStoresSpec=e.override(t.Version.prototype._parseStoresSpec,e=>vn(e,t)),t.Table.prototype.newId=function({colocateWith:e}={}){const n=e&&e.substr(e.length-3);return cn(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(mn({currentUserObservable:t.cloud.currentUser,db:Jt(t)})),t.use((d=Jt(t),{stack:"dbcore",name:"implicitPropSetterMiddleware",level:1,create:e=>Object.assign(Object.assign({},e),{table:t=>{const n=e.table(t);return Object.assign(Object.assign({},n),{mutate:e=>{var r,o,s,i,a,l;const c=e.trans;if(c.disableChangeTracking)return n.mutate(e);const u=null!==(o=null===(r=c.currentUser)||void 0===r?void 0:r.userId)&&void 0!==o?o:je.userId;if((null===(i=null===(s=d.cloud.schema)||void 0===s?void 0:s[t])||void 0===i?void 0:i.markedForSync)&&("add"===e.type||"put"===e.type)){if("members"===t)for(const t of e.values)"string"==typeof t.email&&(t.email=t.email.trim().toLowerCase());for(const t of e.values){t.owner||(t.owner=u),t.realmId||(t.realmId=u);const r=null===(l=(a=n.schema.primaryKey).extractKey)||void 0===l?void 0:l.call(a,t);"string"==typeof r&&"#"===r[0]&&"put"===e.type&&(delete e.criteria,delete e.changeSpec,e.upsert||delete e.updates,t.$ts=Date.now())}}return n.mutate(e)}})}})})),t.use(un(Jt(t)))}wo.version="4.2.5",e.Cloud=wo;export{wo as default,go as defineYDocTrigger,wo as dexieCloud,uo as getTiedObjectId,co as getTiedRealmId,Yr as resolveText};
|
|
2
2
|
//# sourceMappingURL=dexie-cloud-addon.min.js.map
|