dexie-cloud-addon 4.2.5 → 4.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/TODO-SOCIALAUTH.md +274 -0
- package/dist/modern/DexieCloudAPI.d.ts +4 -0
- package/dist/modern/DexieCloudOptions.d.ts +17 -0
- package/dist/modern/authentication/exchangeOAuthCode.d.ts +23 -0
- package/dist/modern/authentication/fetchAuthProviders.d.ts +14 -0
- package/dist/modern/authentication/handleOAuthCallback.d.ts +63 -0
- package/dist/modern/authentication/interactWithUser.d.ts +22 -0
- package/dist/modern/authentication/oauthLogin.d.ts +38 -0
- package/dist/modern/default-ui/AuthProviderButton.d.ts +21 -0
- package/dist/modern/default-ui/LoginDialog.d.ts +30 -2
- package/dist/modern/default-ui/OptionButton.d.ts +21 -0
- package/dist/modern/default-ui/ProviderSelectionDialog.d.ts +7 -0
- package/dist/modern/default-ui/SelectDialog.d.ts +10 -0
- package/dist/modern/dexie-cloud-addon.js +686 -13
- 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.gz +0 -0
- package/dist/modern/dexie-cloud-addon.min.js.map +1 -1
- package/dist/modern/errors/OAuthError.d.ts +10 -0
- package/dist/modern/service-worker.js +686 -13
- package/dist/modern/service-worker.js.map +1 -1
- package/dist/modern/service-worker.min.js +1 -1
- package/dist/modern/service-worker.min.js.map +1 -1
- package/dist/modern/types/DXCUserInteraction.d.ts +32 -1
- package/dist/umd/DISABLE_SERVICEWORKER_STRATEGY.d.ts +1 -0
- package/dist/umd/DXCWebSocketStatus.d.ts +1 -0
- package/dist/umd/DexieCloudAPI.d.ts +75 -0
- package/dist/umd/DexieCloudOptions.d.ts +27 -0
- package/dist/umd/DexieCloudSyncOptions.d.ts +4 -0
- package/dist/umd/DexieCloudTable.d.ts +18 -0
- package/dist/umd/InvalidLicenseError.d.ts +5 -0
- package/dist/umd/Invite.d.ts +8 -0
- package/dist/umd/PermissionChecker.d.ts +15 -0
- package/dist/umd/TSON.d.ts +17 -0
- package/dist/umd/WSObservable.d.ts +72 -0
- package/dist/umd/associate.d.ts +1 -0
- package/dist/umd/authentication/AuthPersistedContext.d.ts +9 -0
- package/dist/umd/authentication/TokenErrorResponseError.d.ts +10 -0
- package/dist/umd/authentication/TokenExpiredError.d.ts +3 -0
- package/dist/umd/authentication/UNAUTHORIZED_USER.d.ts +2 -0
- package/dist/umd/authentication/authenticate.d.ts +13 -0
- package/dist/umd/authentication/currentUserObservable.d.ts +1 -0
- package/dist/umd/authentication/interactWithUser.d.ts +21 -0
- package/dist/umd/authentication/login.d.ts +3 -0
- package/dist/umd/authentication/logout.d.ts +5 -0
- package/dist/umd/authentication/otpFetchTokenCallback.d.ts +3 -0
- package/dist/umd/authentication/setCurrentUser.d.ts +14 -0
- package/dist/umd/authentication/waitUntil.d.ts +3 -0
- package/dist/umd/computeSyncState.d.ts +4 -0
- package/dist/umd/createSharedValueObservable.d.ts +3 -0
- package/dist/umd/currentUserEmitter.d.ts +3 -0
- package/dist/umd/db/DexieCloudDB.d.ts +61 -0
- package/dist/umd/db/entities/BaseRevisionMapEntry.d.ts +5 -0
- package/dist/umd/db/entities/EntityCommon.d.ts +5 -0
- package/dist/umd/db/entities/GuardedJob.d.ts +5 -0
- package/dist/umd/db/entities/Member.d.ts +19 -0
- package/dist/umd/db/entities/PersistedSyncState.d.ts +22 -0
- package/dist/umd/db/entities/Realm.d.ts +14 -0
- package/dist/umd/db/entities/Role.d.ts +11 -0
- package/dist/umd/db/entities/UserLogin.d.ts +23 -0
- package/dist/umd/default-ui/Dialog.d.ts +5 -0
- package/dist/umd/default-ui/LoginDialog.d.ts +3 -0
- package/dist/umd/default-ui/Styles.d.ts +3 -0
- package/dist/umd/default-ui/index.d.ts +24 -0
- package/dist/umd/define-ydoc-trigger.d.ts +3 -0
- package/dist/umd/dexie-cloud-addon.d.ts +3 -0
- package/dist/umd/dexie-cloud-addon.js +687 -14
- package/dist/umd/dexie-cloud-addon.js.gz +0 -0
- 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.gz +0 -0
- package/dist/umd/dexie-cloud-addon.min.js.map +1 -1
- package/dist/umd/dexie-cloud-client.d.ts +23 -0
- package/dist/umd/errors/HttpError.d.ts +5 -0
- package/dist/umd/extend-dexie-interface.d.ts +23 -0
- package/dist/umd/getGlobalRolesObservable.d.ts +5 -0
- package/dist/umd/getInternalAccessControlObservable.d.ts +12 -0
- package/dist/umd/getInvitesObservable.d.ts +23 -0
- package/dist/umd/getPermissionsLookupObservable.d.ts +16 -0
- package/dist/umd/getTiedRealmId.d.ts +2 -0
- package/dist/umd/helpers/BroadcastedAndLocalEvent.d.ts +8 -0
- package/dist/umd/helpers/CancelToken.d.ts +4 -0
- package/dist/umd/helpers/IS_SERVICE_WORKER.d.ts +1 -0
- package/dist/umd/helpers/SWBroadcastChannel.d.ts +12 -0
- package/dist/umd/helpers/allSettled.d.ts +1 -0
- package/dist/umd/helpers/bulkUpdate.d.ts +4 -0
- package/dist/umd/helpers/computeRealmSetHash.d.ts +2 -0
- package/dist/umd/helpers/date-constants.d.ts +5 -0
- package/dist/umd/helpers/flatten.d.ts +1 -0
- package/dist/umd/helpers/getMutationTable.d.ts +1 -0
- package/dist/umd/helpers/getSyncableTables.d.ts +4 -0
- package/dist/umd/helpers/getTableFromMutationTable.d.ts +1 -0
- package/dist/umd/helpers/makeArray.d.ts +1 -0
- package/dist/umd/helpers/randomString.d.ts +1 -0
- package/dist/umd/helpers/resolveText.d.ts +16 -0
- package/dist/umd/helpers/throwVersionIncrementNeeded.d.ts +1 -0
- package/dist/umd/helpers/visibilityState.d.ts +1 -0
- package/dist/umd/isEagerSyncDisabled.d.ts +2 -0
- package/dist/umd/isFirefox.d.ts +1 -0
- package/dist/umd/isSafari.d.ts +2 -0
- package/dist/umd/mapValueObservable.d.ts +5 -0
- package/dist/umd/mergePermissions.d.ts +2 -0
- package/dist/umd/middleware-helpers/guardedTable.d.ts +11 -0
- package/dist/umd/middleware-helpers/idGenerationHelpers.d.ts +18 -0
- package/dist/umd/middlewares/createIdGenerationMiddleware.d.ts +3 -0
- package/dist/umd/middlewares/createImplicitPropSetterMiddleware.d.ts +3 -0
- package/dist/umd/middlewares/createMutationTrackingMiddleware.d.ts +17 -0
- package/dist/umd/middlewares/outstandingTransaction.d.ts +4 -0
- package/dist/umd/overrideParseStoresSpec.d.ts +4 -0
- package/dist/umd/performInitialSync.d.ts +4 -0
- package/dist/umd/permissions.d.ts +9 -0
- package/dist/umd/prodLog.d.ts +9 -0
- package/dist/umd/service-worker.d.ts +1 -0
- package/dist/umd/service-worker.js +687 -14
- 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/dist/umd/sync/DEXIE_CLOUD_SYNCER_ID.d.ts +1 -0
- package/dist/umd/sync/LocalSyncWorker.d.ts +7 -0
- package/dist/umd/sync/SyncRequiredError.d.ts +3 -0
- package/dist/umd/sync/applyServerChanges.d.ts +3 -0
- package/dist/umd/sync/connectWebSocket.d.ts +2 -0
- package/dist/umd/sync/encodeIdsForServer.d.ts +4 -0
- package/dist/umd/sync/extractRealm.d.ts +2 -0
- package/dist/umd/sync/getLatestRevisionsPerTable.d.ts +6 -0
- package/dist/umd/sync/getTablesToSyncify.d.ts +3 -0
- package/dist/umd/sync/isOnline.d.ts +1 -0
- package/dist/umd/sync/isSyncNeeded.d.ts +2 -0
- package/dist/umd/sync/listClientChanges.d.ts +9 -0
- package/dist/umd/sync/listSyncifiedChanges.d.ts +5 -0
- package/dist/umd/sync/messageConsumerIsReady.d.ts +2 -0
- package/dist/umd/sync/messagesFromServerQueue.d.ts +8 -0
- package/dist/umd/sync/modifyLocalObjectsWithNewUserId.d.ts +4 -0
- package/dist/umd/sync/myId.d.ts +1 -0
- package/dist/umd/sync/numUnsyncedMutations.d.ts +2 -0
- package/dist/umd/sync/old_startSyncingClientChanges.d.ts +39 -0
- package/dist/umd/sync/performGuardedJob.d.ts +2 -0
- package/dist/umd/sync/ratelimit.d.ts +3 -0
- package/dist/umd/sync/registerSyncEvent.d.ts +3 -0
- package/dist/umd/sync/sync.d.ts +15 -0
- package/dist/umd/sync/syncIfPossible.d.ts +5 -0
- package/dist/umd/sync/syncWithServer.d.ts +6 -0
- package/dist/umd/sync/triggerSync.d.ts +2 -0
- package/dist/umd/sync/updateBaseRevs.d.ts +5 -0
- package/dist/umd/types/DXCAlert.d.ts +25 -0
- package/dist/umd/types/DXCInputField.d.ts +11 -0
- package/dist/umd/types/DXCUserInteraction.d.ts +93 -0
- package/dist/umd/types/NewIdOptions.d.ts +3 -0
- package/dist/umd/types/SWMessageEvent.d.ts +3 -0
- package/dist/umd/types/SWSyncEvent.d.ts +4 -0
- package/dist/umd/types/SyncState.d.ts +9 -0
- package/dist/umd/types/TXExpandos.d.ts +11 -0
- package/dist/umd/updateSchemaFromOptions.d.ts +3 -0
- package/dist/umd/userIsActive.d.ts +7 -0
- package/dist/umd/verifyConfig.d.ts +2 -0
- package/dist/umd/verifySchema.d.ts +2 -0
- package/dist/umd/yjs/YDexieCloudSyncState.d.ts +3 -0
- package/dist/umd/yjs/YTable.d.ts +3 -0
- package/dist/umd/yjs/applyYMessages.d.ts +9 -0
- package/dist/umd/yjs/awareness.d.ts +3 -0
- package/dist/umd/yjs/createYClientUpdateObservable.d.ts +4 -0
- package/dist/umd/yjs/createYHandler.d.ts +2 -0
- package/dist/umd/yjs/downloadYDocsFromServer.d.ts +3 -0
- package/dist/umd/yjs/getUpdatesTable.d.ts +3 -0
- package/dist/umd/yjs/listUpdatesSince.d.ts +3 -0
- package/dist/umd/yjs/listYClientMessagesAndStateVector.d.ts +26 -0
- package/dist/umd/yjs/reopenDocSignal.d.ts +10 -0
- package/dist/umd/yjs/updateYSyncStates.d.ts +6 -0
- package/oauth_flow.md +307 -0
- package/package.json +1 -1
|
@@ -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 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};
|
|
1
|
+
import e,{PropModification as t,cmp as n,RangeSet as r,liveQuery as o}from"dexie";import{Encoder as i,writeVarString as s,writeAny as a,writeVarUint8Array as l,writeBigUint64 as c,toUint8Array as u}from"lib0/encoding";import{Decoder as d,readVarString as f,readAny as p,readVarUint8Array as y,readBigUint64 as h,hasContent as v,readUint8 as m}from"lib0/decoding";import{firstValueFrom as b,from as g,filter as _,Observable as w,BehaviorSubject as k,Subject as S,of as x,fromEvent as I,merge as C,switchMap as O,tap as E,mergeMap as j,Subscription as T,throwError as P,combineLatest as U,map as A,share as $,timer as L,startWith as D}from"rxjs";import{filter as R,switchMap as N,delay as B,distinctUntilChanged as M,map as W,tap as F,take as H,catchError as K,debounceTime as z,startWith as V,skip as q}from"rxjs/operators";import*as J from"yjs";import{DexieYProvider as G}from"y-dexie";import*as Y from"y-protocols/awareness";function Z(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{l(r.next(e))}catch(e){i(e)}}function a(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,a)}l((r=r.apply(e,t||[])).next())})}function X(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function Q(e){return this instanceof Q?(this.v=e,this):new Q(e)}function ee(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,o=n.apply(e,t||[]),i=[];return r=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",function(e){return function(t){return Promise.resolve(t).then(e,c)}}),r[Symbol.asyncIterator]=function(){return this},r;function s(e,t){o[e]&&(r[e]=function(t){return new Promise(function(n,r){i.push([e,t,n,r])>1||a(e,t)})},t&&(r[e]=t(r[e])))}function a(e,t){try{!function(e){e.value instanceof Q?Promise.resolve(e.value.v).then(l,c):u(i[0][2],e)}(o[e](t))}catch(e){u(i[0][3],e)}}function l(e){a("next",e)}function c(e){a("throw",e)}function u(e,t){e(t),i.shift(),i.length&&a(i[0][0],i[0][1])}}function te(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=X(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise(function(r,o){(function(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)})(r,o,(t=e[n](t)).done,t.value)})}}}"function"==typeof SuppressedError&&SuppressedError;const ne={}.hasOwnProperty;function re(e,t,n){if(e&&void 0!==t&&(!("isFrozen"in Object)||!Object.isFrozen(e)))if("string"!=typeof t&&"length"in t){!function(e){if(!e)throw new Error("Assertion Failed")}("string"!=typeof n&&"length"in n);for(var r=0,o=t.length;r<o;++r)re(e,t[r],n[r])}else{var i=t.indexOf(".");if(-1!==i){var s=t.substr(0,i),a=t.substr(i+1);if(""===a)void 0===n?Array.isArray(e)?isNaN(parseInt(s))||e.splice(parseInt(s),1):delete e[s]:e[s]=n;else{var l=e[s];l&&function(e,t){return ne.call(e,t)}(e,s)||(l=e[s]={}),re(l,a,n)}}else void 0===n?Array.isArray(e)&&!isNaN(parseInt(t))?e.splice(t,1):delete e[t]:e[t]=n}}const oe="undefined"!=typeof self&&"undefined"!=typeof crypto?(e,t=crypto.getRandomValues.bind(crypto))=>{const n=new Uint8Array(e);return t(n),self.btoa(String.fromCharCode.apply(null,n))}:"undefined"!=typeof Buffer?(e,t=ie)=>{const n=Buffer.alloc(e);return t(n),n.toString("base64")}:()=>{throw new Error("No implementation of randomString was found")};function ie(e){for(let t=0;t<e.length;++t)e[t]=Math.floor(256*Math.random())}function se(e){return"string"==typeof e||!!(Array.isArray(e)&&e.some(e=>se(e))&&e.every(ae))}function ae(e){return"string"==typeof e||"number"==typeof e||Array.isArray(e)&&e.every(ae)}function le(e,t,n){const r=e[t]||(e[t]={}),o=n.keys.map(e=>"string"==typeof e?e:JSON.stringify(e));switch(n.type){case"insert":case"upsert":o.forEach((e,t)=>{r[e]={type:"ups",val:n.values[t]}});break;case"update":case"modify":o.forEach((e,t)=>{const o="update"===n.type?n.changeSpecs[t]:n.changeSpec,i=r[e];if(i)switch(i.type){case"ups":for(const[e,t]of Object.entries(o))re(i.val,e,t);break;case"del":break;case"upd":Object.assign(i.mod,o)}else r[e]={type:"upd",mod:o}});break;case"delete":o.forEach(e=>{r[e]={type:"del"}})}return e}function ce(e,t){for(const{table:n,muts:r}of t)for(const t of r)le(e,n,t)}async function*ue(e){let t=0,n=new Uint8Array(4),r=0,o=[],i=0;for await(const s of e){const e=new DataView(s.buffer,s.byteOffset,s.byteLength);let a=0;for(;a<s.byteLength;)switch(t){case 0:if(a+4>s.byteLength){for(const e of s.slice(a)){if(4===r)break;n[r++]=e,++a}if(r<4)break}else if(r>0&&r<4)for(const e of s.slice(a,a+4-r))n[r++]=e,++a;case 1:i=4===r?new DataView(n.buffer,0,4).getUint32(0,!1):e.getUint32(a,!1),r?r=0:a+=4;case 2:if(a>=s.byteLength){t=2;break}if(a+i>s.byteLength)o.push(s.slice(a)),i-=s.byteLength-a,t=2,a=s.byteLength;else{if(o.length>0){const e=new Uint8Array(o.reduce((e,t)=>e+t.byteLength,i));let t=0;for(const n of o)e.set(n,t),t+=n.byteLength;e.set(s.slice(a,a+i),t),o=[],yield e}else yield s.slice(a,a+i);a+=i,t=0}}}}let de=!1;function fe(e,t){return Z(this,void 0,void 0,function*(){try{const n=yield navigator.serviceWorker.ready;if("push"===t&&n.sync&&(yield n.sync.register(`dexie-cloud:${e.name}`)),!n.active)throw new Error("Failed to trigger sync - there's no active service worker");return void n.active.postMessage({type:"dexie-cloud-sync",dbName:e.name,purpose:t})}catch(e){de||(de=!0)}})}function pe(e,t){e.cloud.usingServiceWorker?fe(e,t):e.localSyncEvent.next({purpose:t})}const ye="fromBase64"in Uint8Array,he="toBase64"in Uint8Array.prototype,ve="undefined"!=typeof Buffer?e=>Buffer.from(e,"base64"):ye?e=>Uint8Array.fromBase64(e):e=>{const t=atob(e),n=t.length,r=new Uint8Array(n);for(var o=0;o<n;o++)r[o]=t.charCodeAt(o);return r},me="undefined"!=typeof Buffer?e=>ArrayBuffer.isView(e)?Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("base64"):Buffer.from(e).toString("base64"):he?e=>(ArrayBuffer.isView(e)?e:new Uint8Array(e)).toBase64():e=>{const t=ArrayBuffer.isView(e)?e:new Uint8Array(e),n=[];for(let e=0,r=t.length;e<r;e+=4096){const r=t.subarray(e,e+4096);n.push(String.fromCharCode.apply(null,r))}return btoa(n.join(""))};class be extends Error{constructor({title:e,message:t,messageCode:n,messageParams:r}){super(t),this.name="TokenErrorResponseError",this.title=e,this.messageCode=n,this.messageParams=r}}const ge={},_e={google:'<svg viewBox="0 0 24 24" width="20" height="20"><path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/><path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"/><path fill="#FBBC05" d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"/><path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"/></svg>',github:'<svg viewBox="0 0 24 24" width="20" height="20" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"/></svg>',microsoft:'<svg viewBox="0 0 24 24" width="20" height="20"><rect fill="#F25022" x="1" y="1" width="10" height="10"/><rect fill="#00A4EF" x="1" y="13" width="10" height="10"/><rect fill="#7FBA00" x="13" y="1" width="10" height="10"/><rect fill="#FFB900" x="13" y="13" width="10" height="10"/></svg>',apple:'<svg viewBox="0 0 24 24" width="20" height="20" fill="currentColor"><path d="M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.81-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.19-.69.85-1.83 1.51-2.95 1.42-.15-1.15.41-2.35 1.05-3.11z"/></svg>'};function we(e){return Z(this,void 0,void 0,function*(){var t;let n;if(_e[e.type])n=_e[e.type];else if(null===(t=e.iconUrl)||void 0===t?void 0:t.toLowerCase().endsWith(".svg")){const t=yield function(e){return Z(this,void 0,void 0,function*(){if(ge[e])return ge[e];try{const t=yield fetch(e);if(t.ok){const n=yield t.text();if(n.includes("<svg"))return ge[e]=n,n}}catch(e){}return null})}(e.iconUrl);t&&(n=t)}return{name:"provider",value:e.name,displayName:`Continue with ${e.displayName}`,iconSvg:n,iconUrl:!n&&e.iconUrl?e.iconUrl:void 0,styleHint:e.type}})}function ke(t,n){return new Promise((r,o)=>{const i=Object.assign(Object.assign({submitLabel:"Submit",cancelLabel:"Cancel"},n),{onSubmit:e=>{t.next(void 0),r(e)},onCancel:()=>{t.next(void 0),o(new e.AbortError("User cancelled"))}});t.next(i)})}function Se(e,t,...n){return ke(e,{type:"message-alert",title:t,alerts:n,fields:{},submitLabel:"OK",cancelLabel:null})}function xe(e,t,n){return Z(this,void 0,void 0,function*(){let r=n||"";for(;!r||!/^[\w-+.]+@([\w-]+\.)+[\w-]{2,10}(\sas\s[\w-+.]+@([\w-]+\.)+[\w-]{2,10})?$/.test(r);)r=(yield ke(e,{type:"email",title:t,alerts:r?[{type:"error",messageCode:"INVALID_EMAIL",message:"Please enter a valid email address",messageParams:{}}]:[],fields:{email:{type:"email",placeholder:"you@somedomain.com"}}})).email;return r})}function Ie(e,t,n){return Z(this,void 0,void 0,function*(){const r=[{type:"info",messageCode:"OTP_SENT",message:"A One-Time password has been sent to {email}",messageParams:{email:t}}];n&&r.push(n);const{otp:o}=yield ke(e,{type:"otp",title:"Enter OTP",alerts:r,fields:{otp:{type:"otp",label:"OTP",placeholder:"Paste OTP here"}}});return o})}function Ce(e){return Z(this,void 0,void 0,function*(){var t,n,r;const o=yield e.getCurrentUser(),{accessToken:i,accessTokenExpiration:s,refreshToken:a,refreshTokenExpiration:l,claims:c}=o;if(!i)return null;if((null!==(t=null==s?void 0:s.getTime())&&void 0!==t?t:1/0)>Date.now()&&"ok"===((null===(n=o.license)||void 0===n?void 0:n.status)||"ok"))return o;if(!a)throw new Error("Refresh token missing");if((null!==(r=null==l?void 0:l.getTime())&&void 0!==r?r:1/0)<=Date.now())throw new Error("Refresh token has expired");const u=yield Ee(e.cloud.options.databaseUrl,o);return yield e.table("$logins").update(c.sub,{accessToken:u.accessToken,accessTokenExpiration:u.accessTokenExpiration,claims:u.claims,license:u.license,data:u.data}),u})}function Oe(t,n,r,o,i){return Z(this,void 0,void 0,function*(){return n.accessToken&&n.accessTokenExpiration.getTime()>Date.now()?n:n.refreshToken&&(!n.refreshTokenExpiration||n.refreshTokenExpiration.getTime()>Date.now())?yield Ee(t,n):yield function(t,n,r,o){return Z(this,void 0,void 0,function*(){if(!crypto.subtle)throw"undefined"!=typeof location&&"http:"===location.protocol?new Error("Dexie Cloud Addon needs to use WebCrypto, but your browser has disabled it due to being served from an insecure location. Please serve it from https or http://localhost:<port> (See https://stackoverflow.com/questions/46670556/how-to-enable-crypto-subtle-for-unsecure-origins-in-chrome/46671627#46671627)"):new Error("This browser does not support WebCrypto.");const{privateKey:i,publicKey:s}=yield crypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!1,["sign","verify"]);if(!i||!s)throw new Error("Could not generate RSA keypair");t.nonExportablePrivateKey=i;const a=function(e){const t=me(e);return function(e){let t="-----BEGIN PUBLIC KEY-----\n";for(;e.length>0;)t+=e.substring(0,64)+"\n",e=e.substring(64);return t+="-----END PUBLIC KEY-----",t}(t)}(yield crypto.subtle.exportKey("spki",s));t.publicKey=s;try{const e=yield n({public_key:a,hints:o});if("error"===e.type)throw new be(e);if("tokens"!==e.type)throw new Error(`Unexpected response type from token endpoint: ${e.type}`);return t.accessToken=e.accessToken,t.accessTokenExpiration=new Date(e.accessTokenExpiration),t.refreshToken=e.refreshToken,e.refreshTokenExpiration&&(t.refreshTokenExpiration=new Date(e.refreshTokenExpiration)),t.userId=e.claims.sub,t.email=e.claims.email,t.name=e.claims.name,t.claims=e.claims,t.license={type:e.userType,status:e.claims.license||"ok"},t.data=e.data,null!=e.evalDaysLeft&&(t.license.evalDaysLeft=e.evalDaysLeft),null!=e.userValidUntil&&(t.license.validUntil=new Date(e.userValidUntil)),e.alerts&&e.alerts.length>0&&(yield ke(r,{type:"message-alert",title:"Authentication Alert",fields:{},alerts:e.alerts})),t}catch(t){if(t instanceof be)throw yield Se(r,t.title,{type:"error",messageCode:t.messageCode,message:t.message,messageParams:{}}),t;let n="We're having a problem authenticating right now.";if(t instanceof TypeError){n=void 0!==typeof navigator&&!navigator.onLine?"You seem to be offline. Please connect to the internet and try again.":e.debug||"undefined"!=typeof location&&("localhost"===location.hostname||"127.0.0.1"===location.hostname)?`Could not connect to server. Please verify that your origin '${location.origin}' is whitelisted using \`npx dexie-cloud whitelist\``:"Could not connect to server. Please verify the connection.",yield Se(r,"Authentication Failed",{type:"error",messageCode:"GENERIC_ERROR",message:n,messageParams:{}}).catch(()=>{})}throw t}})}(n,r,o,i)})}function Ee(e,t){return Z(this,void 0,void 0,function*(){if(!t.refreshToken)throw new Error("Cannot refresh token - refresh token is missing.");if(!t.nonExportablePrivateKey)throw new Error("login.nonExportablePrivateKey is missing - cannot sign refresh token without a private key.");const n=Date.now(),r="RSASSA-PKCS1-v1_5",o=(new TextEncoder).encode(t.refreshToken+n),i=yield crypto.subtle.sign(r,t.nonExportablePrivateKey,o),s=me(i),a={grant_type:"refresh_token",refresh_token:t.refreshToken,scopes:["ACCESS_DB"],signature:s,signing_algorithm:r,time_stamp:n},l=yield fetch(`${e}/token`,{body:JSON.stringify(a),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"});if(200!==l.status)throw new Error(`RefreshToken: Status ${l.status} from ${e}/token`);const c=yield l.json();if("error"===c.type)throw new be(c);return t.accessToken=c.accessToken,t.accessTokenExpiration=c.accessTokenExpiration?new Date(c.accessTokenExpiration):void 0,t.claims=c.claims,t.license={type:c.userType,status:c.claims.license||"ok"},null!=c.evalDaysLeft&&(t.license.evalDaysLeft=c.evalDaysLeft),null!=c.userValidUntil&&(t.license.validUntil=new Date(c.userValidUntil)),c.data&&(t.data=c.data),t})}const je=new WeakMap;class Te{constructor(e,t){je.set(this,e),Object.assign(this,t)}static load(e,t){return e.table("$logins").get(t).then(n=>new Te(e,n||{userId:t,claims:{sub:t},lastLogin:new Date(0)}))}save(){return Z(this,void 0,void 0,function*(){je.get(this).table("$logins").put(this)})}}const Pe={userId:"unauthorized",name:"Unauthorized",claims:{sub:"unauthorized"},lastLogin:new Date(0)};try{Object.freeze(Pe),Object.freeze(Pe.claims)}catch(e){}function Ue(e,t){return b(g(e).pipe(_(t)))}function Ae(e){return Z(this,void 0,void 0,function*(){const t=yield $e(e);if(t){if(!(yield function(e,t,n){return Z(this,void 0,void 0,function*(){const r=[{type:"warning",messageCode:"LOGOUT_CONFIRMATION",message:"{numUnsyncedChanges} unsynced changes will get lost!\n Logout anyway?",messageParams:{currentUserId:t,numUnsyncedChanges:n.toString()}}];return yield ke(e,{type:"logout-confirmation",title:"Confirm Logout",alerts:r,fields:{},submitLabel:"Confirm logout",cancelLabel:"Cancel"}).then(()=>!0).catch(()=>!1)})}(e.cloud.userInteraction,e.cloud.currentUserId,t)))throw new Error("User cancelled logout due to unsynced changes");yield $e(e,{deleteUnsyncedData:!0})}})}function $e(e){return Z(this,arguments,void 0,function*(e,{deleteUnsyncedData:t=!1}={}){const[n,r]=yield e.dx.transaction("rw",e.dx.tables,n=>Z(this,void 0,void 0,function*(){const r=n.idbtrans;r.disableChangeTracking=!0,r.disableAccessControl=!0;const o=n.storeNames.filter(e=>e.endsWith("_mutations")),i=(yield Promise.all(o.map(e=>n.table(e).count()))).reduce((e,t)=>e+t,0);if(i>0&&!t)return[i,!1];e.$syncState.delete("syncState");for(const t of e.dx.tables)"$jobs"!==t.name&&"$syncState"!==t.name&&t.clear();return[i,!0]}));return r&&(yield Ue(e.cloud.currentUser,e=>e.userId===Pe.userId),yield e.cloud.sync({purpose:"pull",wait:!0})),n})}class Le extends Error{constructor(e,t){super(t||`${e.status} ${e.statusText}`),this.httpStatus=e.status}get name(){return"HttpError"}}const De={access_denied:"Access was denied by the authentication provider.",invalid_state:"The authentication response could not be verified. Please try again.",email_not_verified:"Your email address must be verified before you can log in.",expired_code:"The authentication code has expired. Please try again.",provider_error:"An error occurred with the authentication provider.",network_error:"A network error occurred during authentication. Please check your connection and try again."};class Re extends Error{constructor(e,t,n){super(n||De[e]),this.name="OAuthError",this.code=e,this.provider=t}get userMessage(){return De[this.code]||this.message}}const Ne={providers:[],otpEnabled:!0};function Be(e){"undefined"!=typeof sessionStorage&&sessionStorage.setItem("dexie-cloud-oauth-provider",e.provider);const t=function(e){const t=new URL(`${e.databaseUrl}/oauth/login/${e.provider}`),n=e.redirectUri||("undefined"!=typeof window?window.location.href:"");return n&&t.searchParams.set("redirect_uri",n),t.toString()}(e);window.location.href=t}function Me(t){const{userInteraction:n}=t.cloud;return function(r){return Z(this,arguments,void 0,function*({public_key:r,hints:o}){var i,s;let a;const l=null===(i=t.cloud.options)||void 0===i?void 0:i.databaseUrl;if(!l)throw new Error("No database URL given.");if((null==o?void 0:o.oauthCode)&&o.provider)return yield function(e){return Z(this,void 0,void 0,function*(){const{databaseUrl:t,code:n,publicKey:r,scopes:o=["ACCESS_DB"]}=e,i={grant_type:"authorization_code",code:n,public_key:r,scopes:o};try{const e=yield fetch(`${t}/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i),mode:"cors"});if(!e.ok){if(400===e.status||401===e.status)try{const t=yield e.json();if("error"===t.type){if("INVALID_OTP"===t.messageCode)throw new Re("expired_code",void 0,t.message);throw new be(t)}}catch(e){if(e instanceof Re||e instanceof be)throw e}const t=yield e.text().catch(()=>e.statusText);throw new Re("provider_error",void 0,`Token exchange failed: ${e.status} ${t}`)}const n=yield e.json();if("error"===n.type)throw new be(n);if("tokens"!==n.type)throw new Re("provider_error",void 0,`Unexpected response type: ${n.type}`);return n}catch(e){if(e instanceof Re||e instanceof be)throw e;if(e instanceof TypeError)throw new Re("network_error");throw e}})}({databaseUrl:l,code:o.oauthCode,publicKey:r,scopes:["ACCESS_DB"]});if(null==o?void 0:o.provider)throw We(t,o.provider),new Error("OAuth redirect initiated");if("demo"===(null==o?void 0:o.grant_type)){a={demo_user:yield xe(n,"Enter a demo user email",(null==o?void 0:o.email)||(null==o?void 0:o.userId)),grant_type:"demo",scopes:["ACCESS_DB"],public_key:r}}else if((null==o?void 0:o.otpId)&&o.otp)a={grant_type:"otp",otp_id:o.otpId,otp:o.otp,scopes:["ACCESS_DB"],public_key:r};else{const i=!1!==(null===(s=t.cloud.options)||void 0===s?void 0:s.socialAuth),c=yield function(e){return Z(this,arguments,void 0,function*(e,t=!0){if(!t)return Ne;try{const t=yield fetch(`${e}/auth-providers`,{method:"GET",headers:{Accept:"application/json"},mode:"cors"});return 404===t.status?Ne:t.ok?yield t.json():Ne}catch(e){return Ne}})}(l,i);if(c.providers.length>0){const r=yield function(t,n,r){return Z(this,arguments,void 0,function*(t,n,r,o="Choose login method",i=[]){const s=[...yield Promise.all(n.map(we))];return r&&s.push({name:"otp",value:"email",displayName:"Continue with email",iconSvg:'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="M22 6L12 13 2 6"/></svg>',styleHint:"otp"}),new Promise((n,r)=>{const a={type:"generic",title:o,alerts:i,options:s,fields:{},submitLabel:"",cancelLabel:"Cancel",onSubmit:e=>{t.next(void 0),n("otp"in e?{type:"otp"}:"provider"in e?{type:"provider",provider:e.provider}:{type:"otp"})},onCancel:()=>{t.next(void 0),r(new e.AbortError("User cancelled"))}};t.next(a)})})}(n,c.providers,c.otpEnabled,"Sign in");if("provider"===r.type)throw We(t,r.provider),new Error("OAuth redirect initiated")}const u=yield xe(n,"Enter email address",null==o?void 0:o.email);a=/@demo.local$/.test(u)?{demo_user:u,grant_type:"demo",scopes:["ACCESS_DB"],public_key:r}:{email:u,grant_type:"otp",scopes:["ACCESS_DB"]}}const c=yield fetch(`${l}/token`,{body:JSON.stringify(a),method:"post",headers:{"Content-Type":"application/json",mode:"cors"}});if(200!==c.status){const e=yield c.text();throw yield Se(n,"Token request failed",{type:"error",messageCode:"GENERIC_ERROR",message:e,messageParams:{}}).catch(()=>{}),new Le(c,e)}const u=yield c.json();if("tokens"===u.type||"error"===u.type)return u;if("otp"===a.grant_type&&"email"in a){if("otp-sent"!==u.type)throw new Error(`Unexpected response from ${l}/token`);const e=yield Ie(n,a.email),t=Object.assign(Object.assign({},a),{otp:e||"",otp_id:u.otp_id,public_key:r});let o=yield fetch(`${l}/token`,{body:JSON.stringify(t),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"});for(;401===o.status;){const e=yield o.text();t.otp=yield Ie(n,a.email,{type:"error",messageCode:"INVALID_OTP",message:e,messageParams:{}}),o=yield fetch(`${l}/token`,{body:JSON.stringify(t),method:"post",headers:{"Content-Type":"application/json"},mode:"cors"})}if(200!==o.status){const e=yield o.text();throw new Le(o,e)}return yield o.json()}throw new Error(`Unexpected response from ${l}/token`)})}}function We(e,t){var n,r;const o=null===(n=e.cloud.options)||void 0===n?void 0:n.databaseUrl;if(!o)throw new Error("No database URL given.");Be({databaseUrl:o,provider:t,redirectUri:(null===(r=e.cloud.options)||void 0===r?void 0:r.oauthRedirectUri)||("undefined"!=typeof window?window.location.href:void 0)})}function Fe(e,...t){globalThis.console[e](...t)}function He(e,t){return Z(this,void 0,void 0,function*(){var n;const r=yield e.getCurrentUser(),o=r.userId;if(r.isLoggedIn&&(!t||!t.email&&!t.userId)){if("ok"===((null===(n=r.license)||void 0===n?void 0:n.status)||"ok")&&r.accessToken&&(!r.accessTokenExpiration||r.accessTokenExpiration.getTime()>Date.now()))return!1;if(r.refreshToken&&(!r.refreshTokenExpiration||r.refreshTokenExpiration.getTime()>Date.now()))return yield Ce(e),!1}const i=new Te(e,{claims:{},lastLogin:new Date(0)});return yield Oe(e.cloud.options.databaseUrl,i,e.cloud.options.fetchTokens||Me(e),e.cloud.userInteraction,t),o!==Pe.userId&&i.userId!==o&&(yield Ae(e)),yield function(e,t){return Z(this,void 0,void 0,function*(){const n=e.table("$logins");yield e.transaction("rw",n,e=>Z(this,void 0,void 0,function*(){const e=yield n.toArray();yield Promise.all(e.filter(e=>e.userId!==t.userId&&e.isLoggedIn).map(e=>(e.isLoggedIn=!1,n.put(e)))),t.isLoggedIn=!0,t.lastLogin=new Date;try{yield t.save()}catch(e){try{"DataCloneError"===e.name&&(Fe("debug","Login context property names:",Object.keys(t)),Fe("debug","Login context property names:",Object.keys(t)),Fe("debug","Login context:",t),Fe("debug","Login context JSON:",JSON.stringify(t)))}catch(e){}throw e}})),yield Ue(e.cloud.currentUser,e=>e.userId===t.userId)})}(e,i),pe(e,"pull"),i.userId!==o})}const Ke={},ze="undefined"!=typeof self&&self.document&&"undefined"!=typeof navigator&&navigator.serviceWorker;ze&&ze.ready.then(e=>Ke.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 Ve{constructor(e){this.name=e}subscribe(e){if(!ze)return()=>{};const t=t=>{var n;(null===(n=t.data)||void 0===n?void 0:n.type)===`sw-broadcast-${this.name}`&&e(t.data.message)};return ze.addEventListener("message",t),()=>ze.removeEventListener("message",t)}postMessage(e){var t;"object"==typeof self.clients?[...self.clients.matchAll({includeUncontrolled:!0})].forEach(t=>t.postMessage({type:`sw-broadcast-${this.name}`,message:e})):Ke.registration&&(null===(t=Ke.registration.active)||void 0===t||t.postMessage({type:`sw-broadcast-${this.name}`,message:e}))}}const qe=globalThis["lbc-events"]||(globalThis["lbc-events"]=new Map);class Je extends w{constructor(e){const t="undefined"==typeof BroadcastChannel?new Ve(e):new BroadcastChannel(e);super(n=>{function r(e){n.next(e.detail)}function o(e){n.next(e.data)}let i;!function(e,t){qe.has(e)?qe.get(e).push(t):qe.set(e,[t])}(`lbc-${e}`,r);try{t instanceof Ve?i=t.subscribe(e=>n.next(e)):t.addEventListener("message",o)}catch(e){}return()=>{!function(e,t){const n=qe.get(e);if(n){const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}(`lbc-${e}`,r),t instanceof Ve?i():t.removeEventListener("message",o)}}),this.name=e,this.bc=t}next(e){this.bc.postMessage(e);!function(e){const t=qe.get(e.type);t&&t.forEach(t=>{try{t(e)}catch(e){}})}(new CustomEvent(`lbc-${this.name}`,{detail:e}))}}function Ge(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 Ye(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 Ze(e){return`$${e}_mutations`}function Xe(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 Qe=[].concat;function et(e){return Qe.apply([],e)}function tt(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=Xe(e.name),o=n[t];let i=o?e.where("rev").above(o):e;r<1/0&&(i=i.limit(r));let s=yield i.toArray();s=function(e){return e=e.map(e=>{if("modify"===e.type&&null===e.criteria.index){const t=Object.assign(Object.assign({},e),{criteria:void 0,changeSpec:void 0,type:"update",keys:e.keys,changeSpecs:[e.changeSpec]});return delete t.criteria,delete t.changeSpec,t}return e}),e}(s),s=function(e){const t=new Map;for(const n of e)if("update"===n.type){if(1!==n.keys.length||1!==n.changeSpecs.length)continue;const e=""+n.keys[0],r=n.changeSpecs[0];if(Object.values(r).some(e=>"object"==typeof e&&e&&"@@propmod"in e))continue;let o=t.get(e);o?o.push({txid:n.txid,updateSpec:r}):t.set(e,[{txid:n.txid,updateSpec:r}])}return e=e.filter(e=>{if("update"!==e.type)return!0;if(1!==e.keys.length||1!==e.changeSpecs.length)return!0;const n=e.changeSpecs[0];if(Object.values(n).some(e=>"object"==typeof e&&e&&"@@propmod"in e))return!0;const r=new Set(Object.keys(e.changeSpecs[0])),o=""+e.keys[0],i=t.get(o);if(!i)return!0;for(let t=i.length-1;t>=0;--t){const{txid:n,updateSpec:o}=i[t];if(n===e.txid)break;for(const e of Object.keys(o))r.delete(e)}return 0!==r.size}),e}(s);return s.map(e=>({table:t,mut:e}))}))),i=et(o).sort((e,t)=>e.mut.txid===t.mut.txid?e.mut.opNo-t.mut.opNo:e.mut.ts-t.mut.ts),s=[];let a=null,l=null;for(const{table:e,mut:t}of i)a&&a.table===e&&l===t.txid?a.muts.push(t):(a={table:e,muts:[t]},l=t.txid,s.push(a));return s})}function nt(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:rt}={};const ot={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 it(...e){const t=e.reduce((e,t)=>({...e,...t}),e.reduce((e,t)=>({...t,...e}),{})),n=new WeakMap;return{stringify(e,r,o){const i=JSON.stringify(e,function(e){const o=this[e],i=function(e){const r=typeof e;switch(typeof e){case"object":case"function":{if(null===e)return null;const r=Object.getPrototypeOf(e);if(!r)return ot;let i=n.get(r);if(void 0!==i)return i;const s=(o=e,rt.call(o).slice(8,-1)),a=Object.entries(t).find(([t,n])=>{var r,o;return null!==(o=null===(r=null==n?void 0:n.test)||void 0===r?void 0:r.call(n,e,s))&&void 0!==o?o:t===s});return i=null==a?void 0:a[1],i||(i=Array.isArray(e)?null:"function"==typeof e?t.function||null:ot),n.set(r,i),i}default:return t[r]}var o}(o);return i?i.replace(o,r,t):o},o);return i},parse(e,n){const r=[];return JSON.parse(e,function(e,o){const i=null==o?void 0:o.$t;if(i){const e=t[i];o=e?e.revive(o,n,t):o}let s=r[r.length-1];if(s&&s[0]===o){o={...o};for(const e of s[1])delete o[e];for(const[e,t]of Object.entries(s[2]))o[e]=t;r.pop()}if(void 0===o||"$"===e[0]&&"$t"!==e){let t,n;s=r[r.length-1],s&&s[0]===this?(t=s[1],n=s[2]):r.push([this,t=[],n={}]),"$"===e[0]&&"$t"!==e?(t.push(e),n[e.substr(1)]=o):n[e]=void 0}return o})}}}const st={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 at={number:{replace:e=>{switch(!0){case isNaN(e):return{$t:"number",v:"NaN"};case e===1/0:return{$t:"number",v:"Infinity"};case e===-1/0:return{$t:"number",v:"-Infinity"};default:return e}},revive:({v:e})=>Number(e)}};const lt={bigint:{replace:e=>({$t:"bigint",v:""+e}),revive:e=>BigInt(e.v)}};var ct={Date:{replace:e=>({$t:"Date",v:isNaN(e.getTime())?"NaN":e.toISOString()}),revive:({v:e})=>new Date("NaN"===e?NaN:Date.parse(e))}},ut={Set:{replace:e=>({$t:"Set",v:Array.from(e.entries())}),revive:({v:e})=>new Set(e)}},dt={Map:{replace:e=>({$t:"Map",v:Array.from(e.entries())}),revive:({v:e})=>new Map(e)}};const ft="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0;var pt=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","DataView","BigInt64Array","BigUint64Array"].reduce((e,t)=>({...e,[t]:{replace:(e,n,r)=>({$t:t,v:r.ArrayBuffer.replace(0===e.byteOffset&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength),n,r).v}),revive:({v:e},n,r)=>{const o=ft[t];return o&&new o(r.ArrayBuffer.revive({v:e},n,r))}}}),{});function yt(e){return function(e){for(var t="",n=0,r=e.length;n<r;n++)t+=mt[e[n]];return t}(me(e))}function ht(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+=vt[e[n]];return t}(e))}const vt={"-":"=",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:"+","|":"/"},mt={};for(const e of Object.keys(vt))mt[vt[e]]=e;var bt={ArrayBuffer:{replace:e=>({$t:"ArrayBuffer",v:yt(e)}),revive:({v:e})=>{const t=ht(e);return t.buffer.byteLength===t.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}}};class gt{constructor(e,t){this.buf=e,this.type=t}}function _t(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 wt(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;++n)t[n]=e.charCodeAt(n);return t.buffer}var kt={Blob:{test:(e,t)=>"Blob"===t||e instanceof gt,replace:e=>({$t:"Blob",v:me(e instanceof gt?e.buf:wt(_t(e))),type:e.type}),revive:({type:e,v:t})=>{const n=ve(t);return void 0!==typeof Blob?new Blob([n]):new gt(n.buffer,e)}}};const St={...at,...lt,...ct,...ut,...dt,...pt,...bt,...kt};function xt(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 It={undefined:{replace:()=>({$t:"undefined"}),revive:()=>{}}},Ct={File:{test:(e,t)=>"File"===t,replace:e=>({$t:"File",v:me(wt(_t(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 Ot="function"==typeof BigInt&&"bigint"==typeof BigInt(0);class Et{toString(){return this.v}constructor(e){this.v=e}}const jt=Ot?{}:{bigint:{test:e=>e instanceof Et,replace:e=>Object.assign({$t:"bigint"},e),revive:({v:e})=>new Et(e)}},Tt=Object.assign(Object.assign(Object.assign(Object.assign({},It),jt),Ct),{PropModification:{test:e=>e instanceof t,replace:e=>Object.assign({$t:"PropModification"},e["@@propmod"]),revive:e=>{var{$t:n}=e,r=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}(e,["$t"]);return new t(r)}}}),Pt=it(St,Tt),Ut=function(...e){const t=it(St,st,...e);return{toBinary(e){const[t,n]=this.stringify(e),r=new ArrayBuffer(4);return new DataView(r).setUint32(0,t.size),new Blob([r,t,n])},stringify(e){const n=[],r=t.stringify(e,n);return[new Blob(n.map(e=>{const t=new ArrayBuffer(4);return new DataView(t).setUint32(0,"byteLength"in e?e.byteLength:e.size),new Blob([t,e])})),r]},async parse(e,n){let r=0;const o=[],i=await xt(n),s=new DataView(i);for(;r<i.byteLength;){const e=s.getUint32(r);r+=4;const t=i.slice(r,r+e);r+=e,o.push(t)}return t.parse(e,o)},async fromBinary(e){const t=new DataView(await xt(e.slice(0,4))).getUint32(0),n=e.slice(4,t+4),r=await function(e){return new Promise((t,n)=>{const r=new FileReader;r.onabort=e=>n(new Error("file read aborted")),r.onerror=e=>n(e.target.error),r.onload=e=>t(e.target.result),r.readAsText(e)})}(e.slice(t+4));return await this.parse(r,n)}}}(Tt);function At(t,n,r){const o=[];for(let i of r){const{table:r,muts:s}=i,a=t.tables.find(e=>e.name===r);if(!a)throw new Error(`Internal error: table ${r} not found in DBCore schema`);const{primaryKey:l}=a;let c=i;s.forEach((t,r)=>{const o=!l.outbound&&("upsert"===t.type||"insert"===t.type);t.keys.forEach((t,s)=>{if(Array.isArray(t)){c===i&&(c=$t(i,o));const e=c.muts[r],n=JSON.stringify(t);e.keys[s]=n}else if("#"===t[0]){c===i&&(c=$t(i,o));const a=c.muts[r];if(!n.isLoggedIn)throw new Error("Internal error: Cannot sync private IDs before authenticated");const u=`${t}:${n.userId}`;a.keys[s]=u,o&&e.setByKeyPath(a.values[s],l.keyPath,u)}})}),o.push(c)}return o}function $t(e,t){return Object.assign(Object.assign({},e),{muts:t?e.muts.map(e=>"insert"!==e.type&&"upsert"!==e.type||!e.values?Object.assign(Object.assign({},e),{keys:e.keys.slice()}):Object.assign(Object.assign({},e),{keys:e.keys.slice(),values:e.values.slice()})):e.muts.map(e=>Object.assign(Object.assign({},e),{keys:e.keys.slice()}))})}let Lt=new WeakMap;function Dt(e){return Z(this,void 0,void 0,function*(){var t,n;const r=(null!==(n=null===(t=Lt.get(e))||void 0===t?void 0:t.getTime())&&void 0!==n?n:0)-Date.now();r>0&&(yield new Promise(e=>setTimeout(e,r)))})}function Rt(e,t,n,r,o,i,s,a,l){return Z(this,void 0,void 0,function*(){const c={Accept:"application/json, application/x-bison, application/x-bison-stream","Content-Type":"application/tson"},u=yield Ce(o),d=null==u?void 0:u.accessToken;d&&(c.Authorization=`Bearer ${d}`);const f={v:2,dbID:null==n?void 0:n.remoteDbId,clientIdentity:a,schema:s||{},lastPull:n?{serverRevision:n.serverRevision,yServerRevision:n.yServerRevision,realms:n.realms,inviteRealms:n.inviteRealms}:void 0,baseRevs:r,changes:At(o.dx.core.schema,l,e),y:t,dxcv:o.cloud.version};o.syncStateChangedEvent.next({phase:"pushing"});const p=Pt.stringify(f),y=yield fetch(`${i}/sync`,{method:"post",headers:c,credentials:"include",body:p});if(o.syncStateChangedEvent.next({phase:"pulling"}),function(e,t){const n=t.headers.get("Ratelimit-Limit"),r=t.headers.get("Ratelimit-Remaining"),o=t.headers.get("Ratelimit-Reset");if(n&&r&&o){const t=Number(n),i=Math.max(0,Number(r)),s=Number(o);if(i<t/2){const t=Math.ceil(s/(i+1));Lt.set(e,new Date(Date.now()+1e3*t))}else Lt.delete(e)}}(o,y),!y.ok)throw new Le(y);if("application/x-bison"===y.headers.get("content-type"))return Ut.fromBinary(yield y.blob());{const e=yield y.text();return Pt.parse(e)}})}function Nt(t){if(null==t?void 0:t.cancelled)throw new e.AbortError("Operation was cancelled")}let Bt=!1;function Mt(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 Wt(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 Ft(t,r,o){return Z(this,void 0,void 0,function*(){const i=yield t.bulkGet(r),s=[],a=[];r.forEach((r,l)=>{const c=i[l];if(c){for(const[i,s]of Object.entries(o[l]))if(i===t.schema.primKey.keyPath){if(0!==n(s,r))throw new Error("Cannot change primary key")}else e.setByKeyPath(c,i,s);s.push(r),a.push(c)}}),yield null==t.schema.primKey.keyPath?t.bulkPut(a,s):t.bulkPut(a)})}function Ht(t,n){return Z(this,void 0,void 0,function*(){for(const{table:r,muts:o}of t){if(!n.dx._allTables[r])continue;const t=n.table(r),{primaryKey:i}=t.core.schema,s=e=>{switch(e[0]){case"[":if(e.endsWith("]"))try{return JSON.parse(e)}catch(e){}return e;case"#":return e.endsWith(":"+n.cloud.currentUserId)?e.substr(0,e.length-n.cloud.currentUserId.length-1):e;default:return e}};for(const n of o){const r=n.keys.map(s);switch(n.type){case"insert":i.outbound?yield t.bulkAdd(n.values,r):(r.forEach((t,r)=>{e.setByKeyPath(n.values[r],i.keyPath,t)}),yield t.bulkAdd(n.values));break;case"upsert":i.outbound?yield t.bulkPut(n.values,r):(r.forEach((t,r)=>{e.setByKeyPath(n.values[r],i.keyPath,t)}),yield t.bulkPut(n.values));break;case"modify":1===r.length?yield t.update(r[0],n.changeSpec):yield t.where(":id").anyOf(r).modify(n.changeSpec);break;case"update":yield Ft(t,r,n.changeSpecs);break;case"delete":yield t.bulkDelete(r)}}}})}"undefined"!=typeof self&&"undefined"!=typeof navigator&&(Bt=navigator.onLine,self.addEventListener("online",()=>Bt=!0),self.addEventListener("offline",()=>Bt=!1));const Kt="dexie-cloud-syncer";function zt(e,t){return e.where("i").between(t,1/0,!0).toArray()}function Vt(e,t,n){var r,o,i;if(!e.dx._allTables[t])return;const s=null===(i=null===(o=null===(r=e.table(t))||void 0===r?void 0:r.schema.yProps)||void 0===o?void 0:o.find(e=>e.prop===n))||void 0===i?void 0:i.updatesTable;return s&&e.dx._allTables[s]?e.table(s):void 0}function qt(e,t){return Z(this,void 0,void 0,function*(){var r;const o={};let i,s=!1;for(const a of e)try{switch(a.type){case"u-s":{const e=Vt(t,a.table,a.prop);if(e){const t={k:a.k,u:a.u};a.r&&(t.r=a.r,i=a.r),o[e.name]=yield e.add(t)}break}case"u-ack":{const e=Vt(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(Kt);yield t.table(e.name).put(Object.assign(Object.assign({},n||{i:Kt}),{unsentFrom:Math.max((null==n?void 0:n.unsentFrom)||1,a.i+1)}))})));break}case"u-reject":{const e=Vt(t,a.table,a.prop);if(!e)break;const o=null===(r=yield e.get(a.i))||void 0===r?void 0:r.k;if(null!=o){yield t.transaction("rw",e,t=>(t.idbtrans._rejecting_y_ypdate=!0,e.where("i").aboveOrEqual(a.i).filter(e=>0===n(e.k,o)&&!(1&~(e.f||0))).delete()));const r=G.getDocCache(t.dx).find(a.table,o,a.prop);r&&r.destroy()}break}case"in-sync":{const e=G.getDocCache(t.dx).find(a.table,a.k,a.prop);e&&!e.isSynced&&e.emit("sync",[!0,e]);break}case"y-complete-sync-done":i=a.yServerRev;break;case"outdated-server-rev":s=!0}}catch(e){}return{receivedUntils:o,resyncNeeded:s,yServerRevision:i}})}function Jt(t,n,r){return Z(this,arguments,void 0,function*(t,n,{yDownloadedRealms:r,realms:o}){if(r&&o&&o.every(e=>"*"===r[e]))return;const i=yield Ce(t),s={"Content-Type":"application/json",Accept:"application/octet-stream"};i&&(s.Authorization=`Bearer ${i.accessToken}`);const a=yield fetch(`${n}/y/download`,{body:Pt.stringify({downloadedRealms:r||{}}),method:"POST",headers:s,credentials:"include"});if(!a.ok)throw new Error(`Failed to download Yjs documents from server. Status: ${a.status}`);yield async function(e,...t){let n=e();for(let e=0;e<t.length;e++)n=t[e](n);for await(const e of n);}(function(e){return async function*(){if(!e.body)throw new Error("Response body is not readable");const t=e.body.getReader();try{for(;;){const{done:e,value:n}=await t.read();if(e)return;yield n}}finally{t.releaseLock()}}}(a),ue,function(r){return ee(this,arguments,function*(){var o,i,s,a;let l=null,c=null,u=null,h=[];function b(e){return Z(this,void 0,void 0,function*(){const r=h[h.length-1];if(h.length>0){if(!l||!c||!u)throw new Error(`Protocol error from ${n}/y/download`);const e=Vt(t,c,u);e&&(yield e.bulkAdd(h)),h=[]}l&&(c&&u&&r||e)&&(yield t.$syncState.update("syncState",t=>{const n=t.yDownloadedRealms||{};n[l]=e?"*":{tbl:c,prop:u,key:r.k},t.yDownloadedRealms=n}))})}try{try{for(var g,_=!0,w=te(r);!(o=(g=yield Q(w.next())).done);_=!0){a=g.value,_=!1;const e=new d(a);for(;v(e);)switch(m(e)){case 1:yield Q(b(!0)),l=f(e);break;case 2:yield Q(b(!1)),c=f(e),u=f(e);break;case 3:{const t=p(e),n=y(e);h.push({k:t,u:n});break}}yield Q(b(!1))}}catch(e){i={error:e}}finally{try{_||o||!(s=w.return)||(yield Q(s.call(w)))}finally{if(i)throw i.error}}yield Q(b(!0))}catch(t){throw t instanceof e.DexieError||(yield Q(b(!1))),t}})})})}const Gt="currentSyncWorker";function Yt(e,t,n,r){return Zt(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):Bt&&(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 Yt(e,t,n,Object.assign(Object.assign({},r),{retryImmediatelyOnFetchError:!1}))):(yield e.$syncState.update("syncState",{timestamp:new Date,error:""+o}),e.syncStateChangedEvent.next({phase:Bt?"error":"offline",error:new Error(""+(null==o?void 0:o.message)||o)}),Promise.reject(o))}))}function Zt(e,t,n){return Z(this,arguments,void 0,function*(e,t,n,{isInitialSync:r,cancelToken:o,justCheckIfNeeded:i,purpose:s}={isInitialSync:!1}){var a;if(!(null===(a=e.cloud.options)||void 0===a?void 0:a.databaseUrl))throw new Error("Internal error: sync must not be called when no databaseUrl is configured");const{databaseUrl:l}=t,c=yield e.getCurrentUser(),u=c.isLoggedIn?Ye(e):[],d=u.map(t=>e.table(Ze(t.name))),f=yield e.getPersistedSyncState(),p=c.isLoggedIn,y=p?function(e,t){const n=(null==t?void 0:t.syncedTables)||[];return Ye(e).filter(e=>!n.includes(e.name))}(e,f):[];Nt(o);const h=y.length>0;if(h){if(i)return!0;yield e.transaction("rw",y,e=>Z(this,void 0,void 0,function*(){e.idbtrans.disableChangeTracking=!0,e.idbtrans.disableAccessControl=!0,yield function(e,t,n){return Z(this,void 0,void 0,function*(){const r=new Set(n||[]);for(const n of e)"members"===n.name?yield n.toCollection().modify(e=>{r.has(e.realmId)||e.userId&&e.userId!==Pe.userId||(e.userId=t.userId)}):"roles"===n.name||("realms"===n.name?yield n.toCollection().modify(e=>{r.has(e.realmId)||void 0!==e.owner&&e.owner!==Pe.userId||(e.owner=t.userId)}):yield n.toCollection().modify(e=>{e.realmId&&r.has(e.realmId)||(e.owner&&e.owner!==Pe.userId||(e.owner=t.userId),e.realmId&&e.realmId!==Pe.userId||(e.realmId=t.userId))}))})}(y,c,null==f?void 0:f.realms)})),Nt(o)}const[v,m,b,{yMessages:g,lastUpdateIds:_}]=yield e.transaction("r",e.tables,()=>Z(this,void 0,void 0,function*(){const t=yield e.getPersistedSyncState();let r=yield e.$baseRevs.toArray();r=r.filter(e=>u.some(t=>t.name===e.tableName));let i=yield tt(d,e);const s=yield function(e,t){return Z(this,void 0,void 0,function*(){const n=[],r={};for(const o of t)if(o.schema.yProps)for(const t of o.schema.yProps){const i=e.table(t.updatesTable),s=yield i.get(Kt),a=(null==s?void 0:s.unsentFrom)||1,l=(null==s?void 0:s.receivedUntil)||0,c=Math.min(a,l+1),u=yield zt(i,c);u.length>0&&(r[i.name]=u[u.length-1].i);const d={};for(const e of u){const t=!(1&~(e.f||0));if(t&&e.i<a)continue;const n=JSON.stringify(e.k)+"/"+t;let r=d[n];r?(r.u.push(e.u),r.i=Math.max(e.i,r.i)):(d[n]=r={i:e.i,k:e.k,isLocal:t,u:[]},r.u.push(e.u))}for(const{k:e,isLocal:r,u:i,i:s}of Object.values(d)){const a=1===i.length?i[0]:J.mergeUpdatesV2(i);if(r)n.push({type:"u-c",table:o.name,prop:t.prop,k:e,u:a,i:s});else{const r=J.encodeStateVectorFromUpdateV2(a);n.push({type:"sv",table:o.name,prop:t.prop,k:e,sv:r})}}}return{yMessages:n,lastUpdateIds:r}})}(e,u);if(Nt(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-${nt(8)}`;if(t.isLoggedIn&&e.length>0){const i=new Set(r||[]);return(yield Promise.all(e.map(e=>Z(this,void 0,void 0,function*(){const{extractKey:r}=e.core.schema.primaryKey;if(!r)return{table:e.name,muts:[]};const s=n[e.name],a=(null==s?void 0:s.generatedGlobalId)?e.filter(e=>{return r(e),!i.has(e.realmId||"")&&(t=r(e),!(n=null==s?void 0:s.idPrefix)||"string"==typeof t&&t.startsWith(n));var t,n}):e.filter(e=>{const t=r(e);return!i.has(e.realmId||"")&&se(t)}),l=yield a.toArray();if(l.length>0){const n={type:"upsert",values:l,keys:l.map(r),userId:t.userId,txid:o};return{table:e.name,muts:[n]}}return{table:e.name,muts:[]}})))).filter(e=>e.muts.length>0)}return[]})}(y,c,n,e);return Nt(o),i=i.concat(a),[i,t,r,s]}return[i,t,r,s]})),w=v.some(e=>e.muts.some(e=>e.keys.length>0))||g.some(e=>"u-c"===e.type);if(i)return w;if("push"===s&&!w)return!1;const k=Wt(v,null==m?void 0:m.latestRevisions),S=(null==m?void 0:m.clientIdentity)||oe(16);Nt(o);const x=yield Rt(v,g,m,b,e,l,n,S,c),{done:I,newSyncState:C}=yield e.transaction("rw",e.tables,t=>Z(this,void 0,void 0,function*(){t.idbtrans.disableChangeTracking=!0,t.idbtrans.disableAccessControl=!0;for(const e of Object.keys(n))x.schema[e]&&(n[e]=x.schema[e]);yield e.$syncState.put(n,"schema");const r=yield tt(d,e,{since:k});for(const t of d){const n=Xe(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()])}Wt(r,k),yield Mt(e,n,k,x.serverRevision);const o=yield e.getPersistedSyncState();yield function(e,t,n){return Z(this,void 0,void 0,function*(){const r=new Set,o=new Set,i=n?n.realms:[],s=n?n.inviteRealms:[],a=new Set(t.realms),l=new Set(t.realms.concat(t.inviteRealms));for(const e of i)a.has(e)||(o.add(e),l.has(e)||r.add(e));for(const e of s.concat(i))l.has(e)||r.add(e);if(r.size>0||o.size>0){const t=Ye(e);for(const e of t){let t=["realms","members","roles"].includes(e.name)?r:o;0!==t.size&&(e.schema.indexes.some(e=>"realmId"===e.keyPath||Array.isArray(e.keyPath)&&"realmId"===e.keyPath[0])?yield e.where("realmId").anyOf([...t]).delete():yield e.filter(e=>!!(null==e?void 0:e.realmId)&&t.has(e.realmId)).delete())}}if(o.size>0&&(null==n?void 0:n.yDownloadedRealms))for(const e of o)delete n.yDownloadedRealms[e]})}(e,x,o);const i=o||{syncedTables:[],latestRevisions:{},realms:[],inviteRealms:[],clientIdentity:S};p&&(i.syncedTables=u.map(e=>e.name).concat(y.map(e=>e.name))),i.latestRevisions=k,i.remoteDbId=x.dbId,i.initiallySynced=!0,i.realms=x.realms,i.inviteRealms=x.inviteRealms,i.serverRevision=x.serverRevision,i.yServerRevision=x.serverRevision,i.timestamp=new Date,delete i.error;const s=Xt(x.changes,r);if(yield Ht(s,e),x.yMessages){const{receivedUntils:t,resyncNeeded:n,yServerRevision:r}=yield qt(x.yMessages,e);r&&(i.yServerRevision=r),yield function(e,t,n){return Z(this,void 0,void 0,function*(){var r,o,i,s,a;const l={};for(const[t,n]of Object.entries(e))null!==(r=l[t])&&void 0!==r||(l[t]={}),l[t].unsentFrom=n+1;for(const[e,n]of Object.entries(t))null!==(o=l[e])&&void 0!==o||(l[e]={}),l[e].receivedUntil=n;const c=Object.values(n.dx._dbSchema).filter(e=>e.yProps).map(e=>e.yProps.map(e=>e.updatesTable)).flat();for(const e of c){const t=l[e],r=null!==(i=null==t?void 0:t.unsentFrom)&&void 0!==i?i:1,o=null!==(a=null!==(s=null==t?void 0:t.receivedUntil)&&void 0!==s?s:(yield n.table(e).where("i").between(1,1/0).reverse().limit(1).primaryKeys())[0])&&void 0!==a?a:0;yield n.transaction("rw",e,()=>Z(this,void 0,void 0,function*(){const t=yield n.table(e).get(Kt);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:Kt,unsentFrom:r,receivedUntil:o})}))}})}(_,t,e),n&&(i.yDownloadedRealms={})}return e.$syncState.put(i,"syncState"),{done:0===r.length,newSyncState:i}}));if(!I)return yield Dt(e),yield Zt(e,t,n,{isInitialSync:r,cancelToken:o});const O=Object.values(n).some(e=>{var t;return null===(t=e.yProps)||void 0===t?void 0:t.length}),E=!!x.yMessages;if(O&&E)try{yield Jt(e,l,C)}catch(e){}return e.syncCompleteEvent.next(),!1})}function Xt(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 Qt(t){const n=[],r=new k(!0),o=new k(null);let i=!1,s=new Array(10).fill(0);return o.subscribe(()=>Z(this,void 0,void 0,function*(){if(!i&&n.length>0){i=!0,s.shift(),s.push(Date.now()),r.next(!1);try{yield function(){return Z(this,void 0,void 0,function*(){for(var r,o,i,s,a,l;n.length>0;){const c=n.shift();try{yield b(t.cloud.syncState.pipe(R(({phase:e})=>"in-sync"===e||"error"===e)));const n=t.cloud.persistedSyncState.value;if(!c)continue;switch(c.type){case"token-expired":const u=t.cloud.currentUser.value,d=yield Ee(t.cloud.options.databaseUrl,u);yield t.table("$logins").update(u.userId,{accessToken:d.accessToken,accessTokenExpiration:d.accessTokenExpiration,claims:d.claims,license:d.license,data:d.data});break;case"realm-added":(null===(r=null==n?void 0:n.realms)||void 0===r?void 0:r.includes(c.realm))||(null===(o=null==n?void 0:n.inviteRealms)||void 0===o?void 0:o.includes(c.realm))||(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realm-accepted":(null===(i=null==n?void 0:n.realms)||void 0===i?void 0:i.includes(c.realm))||(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realm-removed":((null===(s=null==n?void 0:n.realms)||void 0===s?void 0:s.includes(c.realm))||(null===(a=null==n?void 0:n.inviteRealms)||void 0===a?void 0:a.includes(c.realm)))&&(yield t.cloud.sync({purpose:"pull",wait:!0}));break;case"realms-changed":yield t.cloud.sync({purpose:"pull",wait:!0});break;case"changes":if("error"===(null===(l=t.cloud.syncState.value)||void 0===l?void 0:l.phase)){pe(t,"pull");break}yield t.transaction("rw",t.dx.tables,n=>Z(this,void 0,void 0,function*(){n.idbtrans.disableChangeTracking=!0,n.idbtrans.disableAccessControl=!0;const[r,o,i]=yield Promise.all([t.getSchema(),t.getPersistedSyncState(),t.getCurrentUser()]);if(!o||!r||!i)return;if(c.baseRev!==o.serverRevision)return void("string"!=typeof c.baseRev||"bigint"!=typeof o.serverRevision&&"object"!=typeof o.serverRevision||pe(t,"pull"));if((yield e.waitFor(Ge(o)))!==c.realmSetHash)return void pe(t,"pull");let s=[];if(i.isLoggedIn){const e=Ye(t).map(e=>t.table(Ze(e.name)));s=yield tt(e,t)}if(c.changes.length>0){const e=Xt(c.changes,s);yield Ht(e,t)}o.latestRevisions=Wt(s,o.latestRevisions),o.serverRevision=c.newRev,yield Mt(t,r,o.latestRevisions,c.newRev),yield t.$syncState.put(o,"syncState")}))}}catch(e){}}})}()}finally{s[s.length-1]-s[0]<1e4&&(yield new Promise(e=>setTimeout(e,1e3))),i=!1,r.next(!0)}}})),{enqueue:function(e){n.push(e),o.next(null)},readyToServe:r}}const en=new WeakMap,tn={members:"@id, [userId+realmId], [email+realmId], realmId",roles:"[realmId+name]",realms:"@realmId",$jobs:"",$syncState:"",$baseRevs:"[tableName+clientRev]",$logins:"claims.sub, lastLogin"};let nn=0;function rn(e){"vip"in e&&(e=e.vip);let t=en.get(e.cloud);if(!t){const n=new S;let r=new Je(`syncstatechanged-${e.name}`),o=new Je(`synccomplete-${e.name}`);n.id=++nn;let i=!1;t={get name(){return e.name},close:()=>e.close(),transaction:e.transaction.bind(e),table:e.table.bind(e),get tables(){return e.tables},cloud:e.cloud,get $jobs(){return e.table("$jobs")},get $syncState(){return e.table("$syncState")},get $baseRevs(){return e.table("$baseRevs")},get $logins(){return e.table("$logins")},get realms(){return e.realms},get members(){return e.members},get roles(){return e.roles},get initiallySynced(){return i},localSyncEvent:n,get syncStateChangedEvent(){return r},get syncCompleteEvent(){return o},dx:e};const s={getCurrentUser:()=>t.$logins.toArray().then(e=>e.find(e=>e.isLoggedIn)||Pe),getPersistedSyncState:()=>t.$syncState.get("syncState"),getSchema:()=>t.$syncState.get("schema").then(e=>{if(e)for(const n of t.tables)n.schema.primKey&&n.schema.primKey.keyPath&&e[n.name]&&(e[n.name].primaryKey=on(n.schema.primKey.keyPath));return e}),getOptions:()=>t.$syncState.get("options"),setInitiallySynced(e){i=e},reconfigure(){r=new Je(`syncstatechanged-${e.name}`),o=new Je(`synccomplete-${e.name}`)}};Object.assign(t,s),t.messageConsumer=Qt(t),t.messageProducer=new S,en.set(e.cloud,t)}return t}function on(e){return"string"==typeof e?e:e?"["+[].join.call(e,"+")+"]":""}const sn="undefined"!=typeof InstallTrigger,an="undefined"!=typeof navigator&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\/|Edge\//.test(navigator.userAgent),ln=an?[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]:NaN,cn=an&&ln<=605||sn,un="undefined"!=typeof self&&"clients"in self&&!self.document;const{toString:dn}={};function fn(e){return dn.call(e).slice(8,-1)}function pn(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 yn(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 hn=/b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|x|y|z/i;function vn(e){return e>="A"&&e<="Z"}let mn=0;function bn(e,t){const n=new Uint8Array(18),r=new Uint8Array(n.buffer,0,6),o=Date.now();mn>=o?++mn:mn=o,r[0]=mn/1099511627776,r[1]=mn/4294967296,r[2]=mn/16777216,r[3]=mn/65536,r[4]=mn/256,r[5]=mn;const i=new Uint8Array(n.buffer,6);crypto.getRandomValues(i);return e+yt(new Uint8Array(n.buffer))+(t||"")}function gn(t){return{stack:"dbcore",name:"idGenerationMiddleware",level:1,create:n=>Object.assign(Object.assign({},n),{table:r=>{const o=n.table(r);return Object.assign(Object.assign({},o),{mutate:n=>{var i,s;const a=n.trans;if("versionchange"===a.mode&&(a.disableChangeTracking=!0,a.disableAccessControl=!0),a.disableChangeTracking)return o.mutate(n);if("add"===n.type||"put"===n.type){const a=null===(i=t.cloud.schema)||void 0===i?void 0:i[r];if(null==a?void 0:a.generatedGlobalId){if((null===(s=t.cloud.options)||void 0===s?void 0:s.databaseUrl)&&!t.initiallySynced){const e=pn(o.schema.primaryKey,n);return o.getMany({keys:e,trans:n.trans,cache:"immutable"}).then(t=>{if(t.length<e.length)throw new Error("Unable to create new objects without an initial sync having been performed.");return o.mutate(n)})}return function(n,i){let s=null;const a=pn(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]=bn(i,l),o.schema.primaryKey.outbound||(s||(s=n.values.slice()),s[c]=e.deepClone(s[c]),e.setByKeyPath(s[c],o.schema.primaryKey.keyPath,a[c]))}else if("string"!=typeof l||!l.startsWith(i)&&!l.startsWith("#"+i))throw new e.ConstraintError(`The ID "${l}" is not valid for table "${r}". Primary '@' keys requires the key to be prefixed with "${i}" (or "#${i}).\nIf you want to generate IDs programmatically, remove '@' from the schema to get rid of this constraint. Dexie Cloud supports custom IDs as long as they are random and globally unique.`)}),o.mutate(Object.assign(Object.assign({},n),{keys:a,values:s||n.values}))}(n,a.idPrefix)}if(null==a?void 0:a.markedForSync){pn(o.schema.primaryKey,n).forEach((t,n)=>{if(!se(t)){const n=Array.isArray(t)?t.map(fn).join(","):fn(t);throw new e.ConstraintError(`Invalid primary key type ${n} for table ${r}. Tables marked for sync has primary keys of type string or Array of string (and optional numbers)`)}})}}return o.mutate(n)}})}})}}let _n=0;function wn(e,t){return function(n){const{readers:r,writers:o}=n.trans[t]||(n.trans[t]={writers:[],readers:[]}),i=o.length,s=(i>0?o[i-1].then(()=>e(n),()=>e(n)):e(n)).finally(()=>{r.splice(r.indexOf(s))});return r.push(s),s}}function kn(e,t){return function(n){const{readers:r,writers:o}=n.trans[t]||(n.trans[t]={writers:[],readers:[]});let i=(o.length>0?o[o.length-1].then(()=>e(n),()=>e(n)):r.length>0?(s=r,new Promise(e=>{0===s.length&&e([]);let t=s.length;const n=new Array(t);s.forEach((r,o)=>Promise.resolve(r).then(e=>n[o]={status:"fulfilled",value:e},e=>n[o]={status:"rejected",reason:e}).then(()=>--t||e(n)))})).then(()=>e(n)):e(n)).finally(()=>{o.shift()});var s;return o.push(i),i}}const Sn=new k(new Set);function xn(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 In({currentUserObservable:e,db:t}){return{stack:"dbcore",name:"MutationTrackingMiddleware",level:1,create:n=>{const o=new Set(n.schema.tables.map(e=>e.name)),i=n.schema.tables.filter(e=>!/^\$/.test(e.name)),s=new Map;for(const e of i){const t=`$${e.name}_mutations`;o.has(t)&&s.set(e.name,n.table(t))}return Object.assign(Object.assign({},n),{transaction:(r,o)=>{let i;if("readwrite"===o){const e=r.filter(e=>{var n,r;return null===(r=null===(n=t.cloud.schema)||void 0===n?void 0:n[e])||void 0===r?void 0:r.markedForSync}).map(e=>Ze(e));i=n.transaction([...r,...e],o)}else i=n.transaction(r,o);if("readwrite"===o){i.txid=nt(16),i.opCount=0,i.currentUser=e.value,Sn.value.add(i),Sn.next(Sn.value);const n=()=>{i.removeEventListener("complete",r),i.removeEventListener("error",n),i.removeEventListener("abort",n),Sn.value.delete(i),Sn.next(Sn.value)},r=()=>{i.mutationsAdded&&!xn(t)&&pe(t,"push"),n()};i.addEventListener("complete",r),i.addEventListener("error",n),i.addEventListener("abort",n)}return i},table:e=>{const o=n.table(e);if(/^\$/.test(e))return e.endsWith("_mutations")?Object.assign(Object.assign({},o),{mutate:e=>("add"!==e.type&&"put"!==e.type||(e.trans.mutationsAdded=!0),o.mutate(e))}):"$logins"===e?Object.assign(Object.assign({},o),{mutate:e=>o.mutate(e).then(t=>(e.trans.mutationsAdded=!0,t)).catch(e=>Promise.reject(e))}):o;const{schema:i}=o,a=s.get(e);return a?function(e){const t="$lock"+ ++_n;return Object.assign(Object.assign({},e),{count:wn(e.count,t),get:wn(e.get,t),getMany:wn(e.getMany,t),openCursor:wn(e.openCursor,t),query:wn(e.query,t),mutate:kn(e.mutate,t)})}(Object.assign(Object.assign({},o),{mutate:n=>{var r,s,a;const c=n.trans;return c.txid?c.disableChangeTracking?o.mutate(n):(null===(s=null===(r=t.cloud.schema)||void 0===r?void 0:r[e])||void 0===s?void 0:s.markedForSync)&&(null===(a=c.currentUser)||void 0===a?void 0:a.isLoggedIn)?"deleteRange"===n.type?o.query({query:{range:n.range,index:i.primaryKey},trans:n.trans,values:!1}).then(e=>l({type:"delete",keys:e.result,trans:n.trans,criteria:{index:null,range:n.range}})):l(n):o.mutate(n):o.mutate(n)}})):o;function l(n){var s,l;const c=n.trans,u=null===(l=null===(s=t.cloud.options)||void 0===s?void 0:s.unsyncedProperties)||void 0===l?void 0:l[e],{txid:d,currentUser:{userId:f}}=c,{type:p}=n,y=++c.opCount;function h(e){if(!u)return e;let t=e;for(const n of Object.keys(e))u.some(e=>n===e||n.startsWith(e+"."))&&(t===e&&(t=Object.assign({},e)),delete t[n]);return t}return o.mutate(n).then(e=>{var t;const{numFailures:o,failures:s}=e;let l="delete"===p?n.keys:e.results,v="values"in n?n.values:[],m="changeSpec"in n?n.changeSpec:void 0,b="updates"in n?n.updates:void 0,g=!(!b||!("upsert"in n))&&n.upsert;if(o&&(l=l.filter((e,t)=>!s[t]),v=v.filter((e,t)=>!s[t])),u){if(v=v.map(e=>{const t=Object.assign({},e);for(const e of u)delete t[e];return t}),m&&(m=h(m),0===Object.keys(m).length))return e;if(b){let e=b.changeSpecs.map(h),t={keys:[],changeSpecs:[]};const n=new r;let o=!1;if(!g){for(let r=0,i=e.length;r<i;++r)Object.keys(e[r]).length>0?(t.keys.push(b.keys[r]),t.changeSpecs.push(e[r]),n.addKey(b.keys[r])):o=!0;if(b=t,o){let e=[],t=[];for(let r=0,o=l.length;r<o;++r)n.hasKey(l[r])&&(e.push(l[r]),t.push(v[r]));l=e,v=t}}}}const _=Date.now();let w="criteria"in n&&n.criteria?Object.assign(Object.assign({},n.criteria),{index:n.criteria.index===i.primaryKey.keyPath?null:n.criteria.index}):void 0;if(u&&(null==w?void 0:w.index)){const e=null===(t=i.indexes.find(e=>e.name===w.index))||void 0===t?void 0:t.keyPath;(e?"string"==typeof e?[e]:e:[]).some(e=>null==u?void 0:u.includes(e))&&(w=void 0)}const k="delete"===n.type?{type:"delete",ts:_,opNo:y,keys:l,criteria:w,txid:d,userId:f}:"add"===n.type?{type:"insert",ts:_,opNo:y,keys:l,txid:d,userId:f,values:v}:g&&b?{type:"upsert",ts:_,opNo:y,keys:l,values:v,changeSpecs:b.changeSpecs.filter((e,t)=>!s[t]),txid:d,userId:f}:w&&m?{type:"modify",ts:_,opNo:y,keys:l,criteria:w,changeSpec:m,txid:d,userId:f}:m?{type:"update",ts:_,opNo:y,keys:l,changeSpecs:l.map(()=>m),txid:d,userId:f}:b?{type:"update",ts:_,opNo:y,keys:b.keys,changeSpecs:b.changeSpecs,txid:d,userId:f}:{type:"upsert",ts:_,opNo:y,keys:l,values:v,txid:d,userId:f};return"isAdditionalChunk"in n&&n.isAdditionalChunk&&(k.isAdditionalChunk=!0),l.length>0||w?a.mutate({type:"add",trans:c,values:[k]}).then(()=>(c.mutationsAdded=!0,e)):e})}}})}}}function Cn(e,t){return function(n,r){var o;const i=Object.assign(Object.assign({},tn),n);Object.keys(tn).forEach(e=>{const t=i[e];if(null==t)throw new Error(`Cannot delete table ${e} as it is needed for access control of Dexie Cloud`);if(!n[e])return;const r=t.split(",").map(e=>e.trim()),o=tn[e].split(",").map(e=>e.trim()),s=new Set(r.map(e=>e.replace(/([&*]|\+\+)/g,"")));if(r[0]!==o[0])throw new Error(`Cannot override primary key of table ${e}. Please declare it as {${e}: ${JSON.stringify(tn[e])}`);for(let t=1;t<o.length;++t){const n=o[t];s.has(n.replace(/([&*]|\+\+)/g,""))||(i[e]+=`,${n}`)}});const s=t.cloud.schema||(t.cloud.schema={}),a=new Set;Object.keys(i).forEach(e=>{var t;const n=null===(t=i[e])||void 0===t?void 0:t.trim(),r=s[e]||(s[e]={});null!=n?(/^\@/.test(n)&&(i[e]=i[e].substr(1),r.generatedGlobalId=!0,r.idPrefix=function(e,t){let n=e[0].toLocaleLowerCase();for(let t=1,r=e.length;t<r&&n.length<3;++t)(hn.test(e[t])||vn(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=yn(n,e),++e;if(e<8)n=r;else{let e=n.charCodeAt(2)+1&127;n=n.substr(0,2)+String.fromCharCode(e)}}return n}(e,a),a.add(r.idPrefix)),/^\$/.test(e)||(i[`$${e}_mutations`]="++rev",r.markedForSync=!0),r.deleted&&(r.deleted=!1)):(r.deleted=!0,r.markedForSync=!1,i[`$${e}_mutations`]=null)});const l=e.call(this,i,r);for(const[e,t]of Object.entries(r))if(null===(o=t.yProps)||void 0===o?void 0:o.length){const n=s[e];n&&(n.yProps=t.yProps.map(e=>e.prop))}return l}}function On(e,t,n){return"undefined"!=typeof navigator&&navigator.locks?navigator.locks.request(e.name+"|"+t,n):n()}const En=new k(!0),jn=new k(!0);En.pipe(N(e=>e?x(!0):x(!1).pipe(B(2e4))),M()).subscribe(jn);const Tn="undefined"!=typeof document?I(document,"visibilitychange"):x({}),Pn=Tn.pipe(R(()=>"hidden"===document.visibilityState)),Un=Tn.pipe(R(()=>"visible"===document.visibilityState)),An="undefined"!=typeof window?C(Un,I(window,"mousedown"),I(window,"mousemove"),I(window,"keydown"),I(window,"wheel"),I(window,"touchmove")):x({});"undefined"!=typeof document&&C(x(!0),Pn,An).pipe(W(()=>"visible"===document.visibilityState),F(e=>{En.value!==e&&En.next(e)}),N(e=>e?x(0).pipe(B(16e4),F(()=>En.next(!1))):x(0))).subscribe(()=>{});class $n extends Error{constructor(){super(...arguments),this.name="TokenExpiredError"}}const Ln=new WeakMap,Dn=new WeakMap;function Rn(e){let t=Dn.get(e);return t||(t=new S,Dn.set(e,t)),t}class Nn extends w{constructor(e,t,n,r,o,i,s,a){super(l=>new Mn(e,t,n,r,o,a,l,i,s))}}let Bn=0;class Mn extends T{constructor(e,t,n,r,o,i,s,a,l){super(()=>this.teardown()),this.id=++Bn,this.subscriptions=new Set,this.reconnecting=!1,this.db=e,this.databaseUrl=e.cloud.options.databaseUrl,this.rev=t,this.yrev=n,this.realmSetHash=r,this.clientIdentity=o,this.user=i,this.subscriber=s,this.lastUserActivity=new Date,this.messageProducer=a,this.webSocketStatus=l,this.connect()}teardown(){this.disconnect()}disconnect(){if(this.webSocketStatus.next("disconnected"),this.pinger&&(clearInterval(this.pinger),this.pinger=null),this.ws)try{this.ws.close()}catch(e){}this.ws=null;for(const e of this.subscriptions)e.unsubscribe();this.subscriptions.clear()}reconnect(){if(!this.reconnecting){this.reconnecting=!0;try{this.disconnect()}catch(e){}this.connect().catch(()=>{}).then(()=>this.reconnecting=!1)}}connect(){return Z(this,void 0,void 0,function*(){if(this.lastServerActivity=new Date,this.pauseUntil&&this.pauseUntil>new Date)return;if(this.ws)throw new Error("Called connect() when a connection is already open");if(!this.databaseUrl)throw new Error("Cannot connect without a database URL");if(this.closed)return;const e=this.user.accessTokenExpiration;if(e&&e<new Date)return void this.subscriber.error(new $n);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?Pt.parse(e.data):function(e){const t=new d(e),n=f(t);if("outdated-server-rev"===n)return{type:n};if("y-complete-sync-done"===n)return{type:n,yServerRev:f(t)};const r=f(t),o=f(t);switch(n){case"u-ack":case"u-reject":return{type:n,table:r,prop:o,i:Number(h(t))};default:{const e=p(t);switch(n){case"in-sync":case"doc-close":return{type:n,table:r,prop:o,k:e};case"aware":return{type:n,table:r,prop:o,k:e,u:y(t)};case"doc-open":return{type:n,table:r,prop:o,k:e,serverRev:p(t),sv:p(t)};case"sv":return{type:n,table:r,prop:o,k:e,sv:y(t)};case"u-c":return{type:n,table:r,prop:o,k:e,u:y(t),i:Number(h(t))};case"u-s":return{type:n,table:r,prop:o,k:e,u:y(t),r:t.pos<t.arr.length&&f(t)||void 0};default:throw new TypeError(`Unknown message type: ${n}`)}}}}(new Uint8Array(e.data));if("error"===t.type)throw new Error(`Error message from dexie-cloud: ${t.error}`);if("aware"===t.type){const e=G.getDocCache(this.db.dx).find(t.table,t.k,t.prop);if(e){const n=(e=>Ln.get(e))(e);n&&Y.applyAwarenessUpdate(n,t.u,"server")}}else if("pong"===t.type);else if("doc-open"===t.type){const e=G.getDocCache(this.db.dx).find(t.table,t.k,t.prop);e&&Rn(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?qt([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=Vt(this.db,t.table,t.prop);if(e){const t=r[e.name];t&&(yield e.update(Kt,{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(Pt.stringify(e))):null===(n=this.ws)||void 0===n||n.send(function(e){const t=new i;switch(s(t,e.type),"table"in e&&s(t,e.table),"prop"in e&&s(t,e.prop),e.type){case"u-ack":case"u-reject":c(t,BigInt(e.i));break;case"outdated-server-rev":break;case"y-complete-sync-done":s(t,e.yServerRev);break;default:switch(a(t,e.k),e.type){case"aware":l(t,e.u);break;case"doc-open":a(t,e.serverRev),a(t,e.sv);break;case"doc-close":break;case"sv":l(t,e.sv);break;case"u-c":l(t,e.u),c(t,BigInt(e.i));break;case"u-s":l(t,e.u),s(t,e.r||"")}}return u(t)}(e)))})),this.user.isLoggedIn&&!xn(this.db)&&this.subscriptions.add(function(e){const t=et(e.tables.filter(t=>{var n,r;return(null===(r=null===(n=e.cloud.schema)||void 0===n?void 0:n[t.name])||void 0===r?void 0:r.markedForSync)&&t.schema.yProps}).map(e=>e.schema.yProps.map(t=>({table:e.name,ydocProp:t.prop,updatesTable:t.updatesTable}))));return C(...t.map(({table:t,ydocProp:n,updatesTable:r})=>{const i=e.table(r);return g(i.get(Kt)).pipe(O(e=>{let r=(null==e?void 0:e.unsentFrom)||1;return g(o(()=>Z(this,void 0,void 0,function*(){return(yield zt(i,r)).filter(e=>e.f&&1&e.f).map(e=>({type:"u-c",table:t,prop:n,k:e.k,u:e.u,i:e.i}))}))).pipe(E(e=>{e.length>0&&(r=e.at(-1).i+1)}))}))})).pipe(j(e=>e))}(this.db).subscribe(this.db.messageProducer))}catch(e){this.pauseUntil=new Date(Date.now()+6e4)}})}}class Wn extends Error{constructor(e){super("expired"===e?"License expired":"deactivated"===e?"User deactivated":"Invalid license"),this.name="InvalidLicenseError",e&&(this.license=e)}}function Fn(e){return Z(this,void 0,void 0,function*(){var e;yield(e=3e3,new Promise(t=>setTimeout(t,e))),yield b(An)})}function Hn(e){return Z(this,void 0,void 0,function*(){var t;return!(!(null===(t=e.cloud.options)||void 0===t?void 0:t.databaseUrl)||!e.cloud.schema)&&(yield Yt(e,e.cloud.options,e.cloud.schema,{justCheckIfNeeded:!0}))})}const Kn=new WeakMap;function zn(e,t,n,r){const o=Kn.get(e);if(o){if(o.pull||"push"===(null==r?void 0:r.purpose))return o.promise;{let i=!1;const s=e.cloud.syncState.subscribe(e=>{"pulling"===e.phase&&(i=!0)});return o.promise.then(()=>{s.unsubscribe()}).catch(e=>(s.unsubscribe(),Promise.reject(e))).then(()=>{if(!i)return zn(e,t,n,r)})}}const i=function(){return Z(this,void 0,void 0,function*(){try{yield Dt(e),yield On(e,Gt,()=>Yt(e,t,n,r)),Kn.delete(e)}catch(t){throw Kn.delete(e),t}})}();return Kn.set(e,{promise:i,pull:"push"!==(null==r?void 0:r.purpose)}),i}function Vn(e,t,n){let r=null,o={cancelled:!1},i=0,s=0;function a(r=1){setTimeout(()=>{const f=l?"pull":"push";s=Date.now(),zn(e,t,n,{cancelToken:o,retryImmediatelyOnFetchError:!0,purpose:f}).then(()=>{if(o.cancelled)d();else if(l||c)return l=!1,c=!1,a();u=!1,i=0,s=0}).catch(e=>{if(o.cancelled)d(),u=!1,i=0,s=0;else if(r<5){const e=1e3*[0,20,40,300,900][r];i=Date.now()+e,s=0,setTimeout(()=>a(r+1),e)}else u=!1,i=0,s=0})},0)}let l=!1,c=!1,u=!1;const d=()=>{o.cancelled=!0,r&&r.unsubscribe()};return{start:()=>{r=e.localSyncEvent.subscribe(({purpose:e})=>{(e=>{o.cancelled||("pull"===e&&(l=!0),"push"===e&&(c=!0),u?i||s>0&&Date.now():(u=!0,a()))})(e||"pull")})},stop:d}}function qn(e,t){if(e&&t&&t.unsyncedTables)for(const n of t.unsyncedTables)e[n]&&(e[n].markedForSync=!1)}var Jn,Gn,Yn,Zn,Xn,Qn,er,tr,nr,rr,or,ir={},sr=[],ar=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,lr=Array.isArray;function cr(e,t){for(var n in t)e[n]=t[n];return e}function ur(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function dr(e,t,n){var r,o,i,s={};for(i in t)"key"==i?r=t[i]:"ref"==i?o=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?Jn.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(i in e.defaultProps)void 0===s[i]&&(s[i]=e.defaultProps[i]);return fr(e,s,r,o,null)}function fr(e,t,n,r,o){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++Yn:o,__i:-1,__u:0};return null==o&&null!=Gn.vnode&&Gn.vnode(i),i}function pr(e){return e.children}function yr(e,t){this.props=e,this.context=t}function hr(e,t){if(null==t)return e.__?hr(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?hr(e):null}function vr(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 vr(e)}}function mr(e){(!e.__d&&(e.__d=!0)&&Zn.push(e)&&!br.__r++||Xn!=Gn.debounceRendering)&&((Xn=Gn.debounceRendering)||Qn)(br)}function br(){for(var e,t,n,r,o,i,s,a=1;Zn.length;)Zn.length>a&&Zn.sort(er),e=Zn.shift(),a=Zn.length,e.__d&&(n=void 0,r=void 0,o=(r=(t=e).__v).__e,i=[],s=[],t.__P&&((n=cr({},r)).__v=r.__v+1,Gn.vnode&&Gn.vnode(n),Ir(t.__P,n,r,t.__n,t.__P.namespaceURI,32&r.__u?[o]:null,i,null==o?hr(r):o,!!(32&r.__u),s),n.__v=r.__v,n.__.__k[n.__i]=n,Or(i,n,s),r.__e=r.__=null,n.__e!=o&&vr(n)));br.__r=0}function gr(e,t,n,r,o,i,s,a,l,c,u){var d,f,p,y,h,v,m,b=r&&r.__k||sr,g=t.length;for(l=function(e,t,n,r,o){var i,s,a,l,c,u=n.length,d=u,f=0;for(e.__k=new Array(o),i=0;i<o;i++)null!=(s=t[i])&&"boolean"!=typeof s&&"function"!=typeof s?("string"==typeof s||"number"==typeof s||"bigint"==typeof s||s.constructor==String?s=e.__k[i]=fr(null,s,null,null,null):lr(s)?s=e.__k[i]=fr(pr,{children:s},null,null,null):null==s.constructor&&s.__b>0?s=e.__k[i]=fr(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):e.__k[i]=s,l=i+f,s.__=e,s.__b=e.__b+1,-1!=(c=s.__i=wr(s,n,l,d))&&(d--,(a=n[c])&&(a.__u|=2)),null==a||null==a.__v?(-1==c&&(o>u?f--:o<u&&f++),"function"!=typeof s.type&&(s.__u|=4)):c!=l&&(c==l-1?f--:c==l+1?f++:(c>l?f--:f++,s.__u|=4))):e.__k[i]=null;if(d)for(i=0;i<u;i++)null!=(a=n[i])&&!(2&a.__u)&&(a.__e==r&&(r=hr(a)),Pr(a,a));return r}(n,t,b,l,g),d=0;d<g;d++)null!=(p=n.__k[d])&&(f=-1==p.__i?ir:b[p.__i]||ir,p.__i=d,v=Ir(e,p,f,o,i,s,a,l,c,u),y=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&Tr(f.ref,null,p),u.push(p.ref,p.__c||y,p)),null==h&&null!=y&&(h=y),(m=!!(4&p.__u))||f.__k===p.__k?l=_r(p,l,e,m):"function"==typeof p.type&&void 0!==v?l=v:y&&(l=y.nextSibling),p.__u&=-7);return n.__e=h,l}function _r(e,t,n,r){var o,i;if("function"==typeof e.type){for(o=e.__k,i=0;o&&i<o.length;i++)o[i]&&(o[i].__=e,t=_r(o[i],t,n,r));return t}e.__e!=t&&(r&&(t&&e.type&&!t.parentNode&&(t=hr(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do{t=t&&t.nextSibling}while(null!=t&&8==t.nodeType);return t}function wr(e,t,n,r){var o,i,s,a=e.key,l=e.type,c=t[n],u=null!=c&&!(2&c.__u);if(null===c&&null==a||u&&a==c.key&&l==c.type)return n;if(r>(u?1:0))for(o=n-1,i=n+1;o>=0||i<t.length;)if(null!=(c=t[s=o>=0?o--:i++])&&!(2&c.__u)&&a==c.key&&l==c.type)return s;return-1}function kr(e,t,n){"-"==t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||ar.test(t)?n:n+"px"}function Sr(e,t,n,r,o){var i,s;e:if("style"==t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||kr(e.style,t,"");if(n)for(t in n)r&&n[t]==r[t]||kr(e.style,t,n[t])}else if("o"==t[0]&&"n"==t[1])i=t!=(t=t.replace(tr,"$1")),s=t.toLowerCase(),t=s in e||"onFocusOut"==t||"onFocusIn"==t?s.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r?n.u=r.u:(n.u=nr,e.addEventListener(t,i?or:rr,i)):e.removeEventListener(t,i?or:rr,i);else{if("http://www.w3.org/2000/svg"==o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!=t&&"height"!=t&&"href"!=t&&"list"!=t&&"form"!=t&&"tabIndex"!=t&&"download"!=t&&"rowSpan"!=t&&"colSpan"!=t&&"role"!=t&&"popover"!=t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&"-"!=t[4]?e.removeAttribute(t):e.setAttribute(t,"popover"==t&&1==n?"":n))}}function xr(e){return function(t){if(this.l){var n=this.l[t.type+e];if(null==t.t)t.t=nr++;else if(t.t<n.u)return;return n(Gn.event?Gn.event(t):t)}}}function Ir(e,t,n,r,o,i,s,a,l,c){var u,d,f,p,y,h,v,m,b,g,_,w,k,S,x,I,C,O=t.type;if(null!=t.constructor)return null;128&n.__u&&(l=!!(32&n.__u),i=[a=t.__e=n.__e]),(u=Gn.__b)&&u(t);e:if("function"==typeof O)try{if(m=t.props,b="prototype"in O&&O.prototype.render,g=(u=O.contextType)&&r[u.__c],_=u?g?g.props.value:u.__:r,n.__c?v=(d=t.__c=n.__c).__=d.__E:(b?t.__c=d=new O(m,_):(t.__c=d=new yr(m,_),d.constructor=O,d.render=Ur),g&&g.sub(d),d.state||(d.state={}),d.__n=r,f=d.__d=!0,d.__h=[],d._sb=[]),b&&null==d.__s&&(d.__s=d.state),b&&null!=O.getDerivedStateFromProps&&(d.__s==d.state&&(d.__s=cr({},d.__s)),cr(d.__s,O.getDerivedStateFromProps(m,d.__s))),p=d.props,y=d.state,d.__v=t,f)b&&null==O.getDerivedStateFromProps&&null!=d.componentWillMount&&d.componentWillMount(),b&&null!=d.componentDidMount&&d.__h.push(d.componentDidMount);else{if(b&&null==O.getDerivedStateFromProps&&m!==p&&null!=d.componentWillReceiveProps&&d.componentWillReceiveProps(m,_),t.__v==n.__v||!d.__e&&null!=d.shouldComponentUpdate&&!1===d.shouldComponentUpdate(m,d.__s,_)){for(t.__v!=n.__v&&(d.props=m,d.state=d.__s,d.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(e){e&&(e.__=t)}),w=0;w<d._sb.length;w++)d.__h.push(d._sb[w]);d._sb=[],d.__h.length&&s.push(d);break e}null!=d.componentWillUpdate&&d.componentWillUpdate(m,d.__s,_),b&&null!=d.componentDidUpdate&&d.__h.push(function(){d.componentDidUpdate(p,y,h)})}if(d.context=_,d.props=m,d.__P=e,d.__e=!1,k=Gn.__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=cr(cr({},r),d.getChildContext())),b&&!f&&null!=d.getSnapshotBeforeUpdate&&(h=d.getSnapshotBeforeUpdate(p,y)),I=u,null!=u&&u.type===pr&&null==u.key&&(I=Er(u.props.children)),a=gr(e,lr(I)?I:[I],t,n,r,o,i,s,a,l,c),d.base=t.__e,t.__u&=-161,d.__h.length&&s.push(d),v&&(d.__E=d.__=null)}catch(e){if(t.__v=null,l||null!=i)if(e.then){for(t.__u|=l?160:128;a&&8==a.nodeType&&a.nextSibling;)a=a.nextSibling;i[i.indexOf(a)]=null,t.__e=a}else{for(C=i.length;C--;)ur(i[C]);Cr(t)}else t.__e=n.__e,t.__k=n.__k,e.then||Cr(t);Gn.__e(e,t,n)}else null==i&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):a=t.__e=jr(n.__e,t,n,r,o,i,s,l,c);return(u=Gn.diffed)&&u(t),128&t.__u?void 0:a}function Cr(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(Cr)}function Or(e,t,n){for(var r=0;r<n.length;r++)Tr(n[r],n[++r],n[++r]);Gn.__c&&Gn.__c(t,e),e.some(function(t){try{e=t.__h,t.__h=[],e.some(function(e){e.call(t)})}catch(e){Gn.__e(e,t.__v)}})}function Er(e){return"object"!=typeof e||null==e||e.__b&&e.__b>0?e:lr(e)?e.map(Er):cr({},e)}function jr(e,t,n,r,o,i,s,a,l){var c,u,d,f,p,y,h,v=n.props||ir,m=t.props,b=t.type;if("svg"==b?o="http://www.w3.org/2000/svg":"math"==b?o="http://www.w3.org/1998/Math/MathML":o||(o="http://www.w3.org/1999/xhtml"),null!=i)for(c=0;c<i.length;c++)if((p=i[c])&&"setAttribute"in p==!!b&&(b?p.localName==b:3==p.nodeType)){e=p,i[c]=null;break}if(null==e){if(null==b)return document.createTextNode(m);e=document.createElementNS(o,b,m.is&&m),a&&(Gn.__m&&Gn.__m(t,i),a=!1),i=null}if(null==b)v===m||a&&e.data==m||(e.data=m);else{if(i=i&&Jn.call(e.childNodes),!a&&null!=i)for(v={},c=0;c<e.attributes.length;c++)v[(p=e.attributes[c]).name]=p.value;for(c in v)if(p=v[c],"children"==c);else if("dangerouslySetInnerHTML"==c)d=p;else if(!(c in m)){if("value"==c&&"defaultValue"in m||"checked"==c&&"defaultChecked"in m)continue;Sr(e,c,null,p,o)}for(c in m)p=m[c],"children"==c?f=p:"dangerouslySetInnerHTML"==c?u=p:"value"==c?y=p:"checked"==c?h=p:a&&"function"!=typeof p||v[c]===p||Sr(e,c,p,v[c],o);if(u)a||d&&(u.__html==d.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(d&&(e.innerHTML=""),gr("template"==t.type?e.content:e,lr(f)?f:[f],t,n,r,"foreignObject"==b?"http://www.w3.org/1999/xhtml":o,i,s,i?i[0]:n.__k&&hr(n,0),a,l),null!=i)for(c=i.length;c--;)ur(i[c]);a||(c="value","progress"==b&&null==y?e.removeAttribute("value"):null!=y&&(y!==e[c]||"progress"==b&&!y||"option"==b&&y!=v[c])&&Sr(e,c,y,v[c],o),c="checked",null!=h&&h!=e[c]&&Sr(e,c,h,v[c],o))}return e}function Tr(e,t,n){try{if("function"==typeof e){var r="function"==typeof e.__u;r&&e.__u(),r&&null==t||(e.__u=e(t))}else e.current=t}catch(e){Gn.__e(e,n)}}function Pr(e,t,n){var r,o;if(Gn.unmount&&Gn.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||Tr(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){Gn.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&Pr(r[o],t,n||"function"!=typeof e.type);n||ur(e.__e),e.__c=e.__=e.__e=void 0}function Ur(e,t,n){return this.constructor(e,n)}function Ar(e,t,n){var r,o,i;t==document&&(t=document.documentElement),Gn.__&&Gn.__(e,t),r=!1?null:t.__k,o=[],i=[],Ir(t,e=t.__k=dr(pr,null,[e]),r||ir,ir,t.namespaceURI,r?null:t.firstChild?Jn.call(t.childNodes):null,o,r?r.__e:t.firstChild,false,i),Or(o,e,i)}Jn=sr.slice,Gn={__e:function(e,t,n,r){for(var o,i,s;t=t.__;)if((o=t.__c)&&!o.__)try{if((i=o.constructor)&&null!=i.getDerivedStateFromError&&(o.setState(i.getDerivedStateFromError(e)),s=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,r||{}),s=o.__d),s)return o.__E=o}catch(t){e=t}throw e}},Yn=0,yr.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=cr({},this.state),"function"==typeof e&&(e=e(cr({},n),this.props)),e&&cr(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),mr(this))},yr.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),mr(this))},yr.prototype.render=pr,Zn=[],Qn="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,er=function(e,t){return e.__v.__b-t.__v.__b},br.__r=0,tr=/(PointerCapture)$|Capture$/i,nr=0,rr=xr(!1),or=xr(!0);const $r={Alert:{error:{color:"red",fontWeight:"bold"},warning:{color:"#f80",fontWeight:"bold"},info:{color:"black"}},Darken:{position:"fixed",top:0,left:0,opacity:.5,backgroundColor:"#000",width:"100vw",height:"100vh",zIndex:150,webkitBackdropFilter:"blur(2px)",backdropFilter:"blur(2px)"},DialogOuter:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",zIndex:150,alignItems:"center",display:"flex",justifyContent:"center",padding:"16px",boxSizing:"border-box"},DialogInner:{position:"relative",color:"#222",backgroundColor:"#fff",padding:"24px",marginBottom:"2em",maxWidth:"400px",width:"100%",maxHeight:"90%",overflowY:"auto",border:"3px solid #3d3d5d",borderRadius:"8px",boxShadow:"0 0 80px 10px #666",fontFamily:"sans-serif",boxSizing:"border-box"},Input:{height:"35px",width:"100%",maxWidth:"100%",borderColor:"#ccf4",outline:"none",fontSize:"16px",padding:"8px",boxSizing:"border-box",backgroundColor:"#f9f9f9",borderRadius:"4px",border:"1px solid #ccc",marginTop:"6px",fontFamily:"inherit"},Button:{padding:"10px 20px",margin:"0 4px",border:"1px solid #d1d5db",borderRadius:"6px",backgroundColor:"#ffffff",cursor:"pointer",fontSize:"14px",fontWeight:"500",color:"#374151",transition:"all 0.2s ease"},PrimaryButton:{padding:"10px 20px",margin:"0 4px",border:"1px solid #3b82f6",borderRadius:"6px",backgroundColor:"#3b82f6",color:"white",cursor:"pointer",fontSize:"14px",fontWeight:"500",transition:"all 0.2s ease"},ButtonsDiv:{display:"flex",justifyContent:"flex-end",gap:"12px",marginTop:"24px",paddingTop:"20px"},Label:{display:"block",marginBottom:"12px",fontSize:"14px",fontWeight:"500",color:"#333"},WindowHeader:{margin:"0 0 20px 0",fontSize:"18px",fontWeight:"600",color:"#333",borderBottom:"1px solid #eee",paddingBottom:"10px"},ProviderButton:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",padding:"12px 16px",marginBottom:"10px",border:"1px solid #d1d5db",borderRadius:"6px",backgroundColor:"#ffffff",cursor:"pointer",fontSize:"14px",fontWeight:"500",color:"#374151",transition:"all 0.2s ease",gap:"12px"},ProviderButtonIcon:{width:"20px",height:"20px",flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center"},ProviderButtonText:{flex:1,textAlign:"left"},ProviderGoogle:{backgroundColor:"#ffffff",border:"1px solid #dadce0",color:"#3c4043"},ProviderGitHub:{backgroundColor:"#24292e",border:"1px solid #24292e",color:"#ffffff"},ProviderMicrosoft:{backgroundColor:"#ffffff",border:"1px solid #8c8c8c",color:"#5e5e5e"},ProviderApple:{backgroundColor:"#000000",border:"1px solid #000000",color:"#ffffff"},ProviderCustom:{backgroundColor:"#4f46e5",border:"1px solid #4f46e5",color:"#ffffff"},Divider:{display:"flex",alignItems:"center",margin:"20px 0",color:"#6b7280",fontSize:"13px"},DividerLine:{flex:1,height:"1px",backgroundColor:"#e5e7eb"},DividerText:{padding:"0 12px",color:"#9ca3af"},OtpButton:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",padding:"12px 16px",border:"1px solid #d1d5db",borderRadius:"6px",backgroundColor:"#f9fafb",cursor:"pointer",fontSize:"14px",fontWeight:"500",color:"#374151",transition:"all 0.2s ease",gap:"12px"}};function Lr({children:e,className:t}){return dr("div",{className:`dexie-dialog ${t||""}`},dr("div",{style:$r.Darken}),dr("div",{style:$r.DialogOuter},dr("div",{style:$r.DialogInner},e)))}var Dr,Rr,Nr,Br,Mr=0,Wr=[],Fr=Gn,Hr=Fr.__b,Kr=Fr.__r,zr=Fr.diffed,Vr=Fr.__c,qr=Fr.unmount,Jr=Fr.__;function Gr(e,t){Fr.__h&&Fr.__h(Rr,e,Mr||t),Mr=0;var n=Rr.__H||(Rr.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function Yr(e){return Mr=1,function(e,t){var n=Gr(Dr++,2);if(n.t=e,!n.__c&&(n.__=[oo(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=Rr,!Rr.__f)){var r=function(e,t,r){if(!n.__c.__H)return!0;var i=n.__c.__H.__.filter(function(e){return!!e.__c});if(i.every(function(e){return!e.__N}))return!o||o.call(this,e,t,r);var s=n.__c.props!==e;return i.forEach(function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(s=!0)}}),o&&o.call(this,e,t,r)||s};Rr.__f=!0;var o=Rr.shouldComponentUpdate,i=Rr.componentWillUpdate;Rr.componentWillUpdate=function(e,t,n){if(this.__e){var s=o;o=void 0,r(e,t,n),o=s}i&&i.call(this,e,t,n)},Rr.shouldComponentUpdate=r}return n.__N||n.__}(oo,e)}function Zr(e){return Mr=5,function(e,t){var n=Gr(Dr++,7);return ro(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}(function(){return{current:e}},[])}function Xr(){for(var e;e=Wr.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(to),e.__H.__h.forEach(no),e.__H.__h=[]}catch(t){e.__H.__h=[],Fr.__e(t,e.__v)}}Fr.__b=function(e){Rr=null,Hr&&Hr(e)},Fr.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Jr&&Jr(e,t)},Fr.__r=function(e){Kr&&Kr(e),Dr=0;var t=(Rr=e.__c).__H;t&&(Nr===Rr?(t.__h=[],Rr.__h=[],t.__.forEach(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.forEach(to),t.__h.forEach(no),t.__h=[],Dr=0)),Nr=Rr},Fr.diffed=function(e){zr&&zr(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==Wr.push(t)&&Br===Fr.requestAnimationFrame||((Br=Fr.requestAnimationFrame)||eo)(Xr)),t.__H.__.forEach(function(e){e.u&&(e.__H=e.u),e.u=void 0})),Nr=Rr=null},Fr.__c=function(e,t){t.some(function(e){try{e.__h.forEach(to),e.__h=e.__h.filter(function(e){return!e.__||no(e)})}catch(n){t.some(function(e){e.__h&&(e.__h=[])}),t=[],Fr.__e(n,e.__v)}}),Vr&&Vr(e,t)},Fr.unmount=function(e){qr&&qr(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(e){try{to(e)}catch(e){t=e}}),n.__H=void 0,t&&Fr.__e(t,n.__v))};var Qr="function"==typeof requestAnimationFrame;function eo(e){var t,n=function(){clearTimeout(r),Qr&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);Qr&&(t=requestAnimationFrame(n))}function to(e){var t=Rr,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),Rr=t}function no(e){var t=Rr;e.__c=e.__(),Rr=t}function ro(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function oo(e,t){return"function"==typeof t?t(e):t}function io({message:e,messageCode:t,messageParams:n}){return e.replace(/\{\w+\}/gi,e=>n[e.substring(1,e.length-1)])}function so({option:e,onClick:t}){const{displayName:n,iconUrl:r,iconSvg:o,styleHint:i,value:s}=e,a=function(e){const t=Object.assign({},$r.ProviderButton);if(!e)return t;switch(e){case"google":return Object.assign(Object.assign({},t),$r.ProviderGoogle);case"github":return Object.assign(Object.assign({},t),$r.ProviderGitHub);case"microsoft":return Object.assign(Object.assign({},t),$r.ProviderMicrosoft);case"apple":return Object.assign(Object.assign({},t),$r.ProviderApple);case"otp":return Object.assign({},$r.OtpButton);case"custom-oauth2":return Object.assign(Object.assign({},t),$r.ProviderCustom);default:return t}}(i),l=a.color||"#000000",c=o?o.replace(/fill="currentColor"/gi,`fill="${l}"`).replace(/fill='currentColor'/gi,`fill='${l}'`).replace(/stroke="currentColor"/gi,`stroke="${l}"`).replace(/stroke='currentColor'/gi,`stroke='${l}'`):null;return dr("button",{type:"button",style:a,onClick:t,class:"dxc-option-btn"+(i?` dxc-option-${i}`:""),"aria-label":n},c?dr("span",{style:$r.ProviderButtonIcon,"aria-hidden":"true",dangerouslySetInnerHTML:{__html:c}}):r?dr("img",{src:r,alt:"",style:$r.ProviderButtonIcon,"aria-hidden":"true"}):null,dr("span",{style:$r.ProviderButtonText},n))}function ao(){return dr("div",{style:$r.Divider},dr("div",{style:$r.DividerLine}),dr("span",{style:$r.DividerText},"or"),dr("div",{style:$r.DividerLine}))}function lo({title:e,alerts:t,fields:n,options:r,submitLabel:o,cancelLabel:i,onCancel:s,onSubmit:a}){const[l,c]=Yr({}),u=Zr(null);!function(e,t){var n=Gr(Dr++,4);!Fr.__s&&ro(n.__H,t)&&(n.__=e,n.u=t,Rr.__h.push(n))}(()=>{var e;return null===(e=u.current)||void 0===e?void 0:e.focus()},[]);const d=Object.entries(n||{}),f=d.length>0,p=r&&r.length>0,y=new Map;if(r)for(const e of r){const t=y.get(e.name)||[];t.push(e),y.set(e.name,t)}const h=y.size>1,v=e=>{a({[e.name]:e.value})};return dr(Lr,{className:"dxc-login-dlg"},dr(pr,null,dr("h3",{style:$r.WindowHeader},e),t.map((e,t)=>dr("p",{key:t,style:$r.Alert[e.type]},io(e))),p&&dr("div",{class:"dxc-options"},h?Array.from(y.entries()).map(([e,t],n)=>dr(pr,{key:e},n>0&&dr(ao,null),t.map(e=>dr(so,{key:`${e.name}-${e.value}`,option:e,onClick:()=>v(e)})))):r.map(e=>dr(so,{key:`${e.name}-${e.value}`,option:e,onClick:()=>v(e)}))),p&&f&&dr(ao,null),f&&dr("form",{onSubmit:e=>{e.preventDefault(),a(l)}},d.map(([e,{type:t,label:n,placeholder:r}],o)=>dr("label",{style:$r.Label,key:o},n?`${n}: `:"",dr("input",{ref:0===o?u:void 0,type:t,name:e,autoComplete:"on",style:$r.Input,autoFocus:!0,placeholder:r,value:l[e]||"",onInput:n=>{var r;const o=function(e,t){switch(e){case"email":return t.toLowerCase();case"otp":return t.toUpperCase();default:return t}}(t,null===(r=n.target)||void 0===r?void 0:r.value);let i=Object.assign(Object.assign({},l),{[e]:o});c(i),"otp"===t&&8===(null==o?void 0:o.trim().length)&&a(i)}}))))),dr("div",{style:$r.ButtonsDiv},dr(pr,null,f&&o&&dr("button",{type:"submit",style:$r.PrimaryButton,onClick:()=>a(l)},o),i&&dr("button",{style:$r.Button,onClick:s},i))))}class co extends yr{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?dr(lo,Object.assign({},t)):null}}function uo(e){const t=new WeakMap;return n=>{let r=t.get(n);return r||(r=e(n),t.set(n,r)),r}}const fo=uo(e=>new k(Pe));function po(e,t){let n=t,r=g(e).pipe(A(e=>n=e),$({resetOnRefCountZero:()=>L(1e3)}));const o=new w(e=>{let t=!1;const o=r.subscribe({next(n){t=!0,e.next(n)},error(t){e.error(t)},complete(){e.complete()}});return t||o.closed||e.next(n),o});return o.getValue=()=>n,o}const yo=uo(e=>po(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})),{})),ho=uo(e=>po(fo(e._novip).pipe(N(t=>o(()=>e.transaction("r","realms","members",()=>Promise.all([e.members.where({userId:t.userId}).toArray(),e.realms.toArray(),t.userId]).then(([e,t,n])=>({selfMembers:e,realms:t,userId:n})))))),{selfMembers:[],realms:[],get userId(){return e.cloud.currentUserId}}));function vo(...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 mo=uo(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}(po(U([ho(e._novip),yo(e._novip)]).pipe(W(([{selfMembers:e,realms:t,userId:n},r])=>({selfMembers:e,realms:t,userId:n,globalRoles:r}))),{selfMembers:[],realms:[],userId:Pe.userId,globalRoles:{}}),({selfMembers:e,realms:t,userId:n,globalRoles:r})=>{const o=t.map(t=>{const o=e.filter(e=>e.realmId===t.realmId),i=o.map(e=>e.permissions).filter(e=>e),s=et(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:"*"}:vo(...i,...s)})}).reduce((e,t)=>Object.assign(Object.assign({},e),{[t.realmId]:t}),{[n]:{realmId:n,owner:n,name:n,permissions:{manage:"*"}}});return o}));class bo{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 go=uo(e=>{const t=fo(e._novip).pipe(N(t=>o(()=>e.members.where({email:t.email||""}).toArray()))),n=mo(e._novip),r=ho(e._novip);return po(U([t,r,n]).pipe(W(([t,n,r])=>{const o=(e,t)=>Object.assign(Object.assign({},e),{[t.id]:Object.assign(Object.assign({},t),{realm:r[t.realmId]})}),i=t.reduce(o,{}),s=n.selfMembers.reduce(o,i);return Object.values(s).filter(e=>!e.accepted).map(t=>Object.assign(Object.assign({},t),{accept(){return Z(this,void 0,void 0,function*(){yield e.members.update(t.id,{accepted:new Date})})},reject(){return Z(this,void 0,void 0,function*(){yield e.members.update(t.id,{rejected:new Date})})}}))})),[])});function _o(e){return t=>{var r;const o=t.doc;if(!o)throw new Error("Internal error: DexieYProvider.createYHandler called without a doc. This is unexpected.");const{parentTable:i}=o.meta||{};if(!(null===(r=e.cloud.schema)||void 0===r?void 0:r[i].markedForSync))return;let s;Object.defineProperty(t,"awareness",{get:()=>s||(s=function(e,t,r){const{parentTable:o,parentId:i,parentProp:s,updatesTable:a}=t.meta,l=new Y.Awareness(t),c=Rn(t);return l.on("update",({added:n,updated:i,removed:a},c)=>{const u=n.concat(i).concat(a),d=e.cloud.currentUser.value;if("server"!==c&&d.isLoggedIn&&!xn(e)){const n=Y.encodeAwarenessUpdate(l,u);e.messageProducer.next({type:"aware",table:o,prop:s,k:t.meta.parentId,u:n}),r.destroyed&&e.messageProducer.next({type:"doc-close",table:o,prop:s,k:t.meta.parentId})}}),l.on("destroy",()=>{Y.removeAwarenessStates(l,[t.clientID],"provider destroyed")}),(()=>{Z(this,void 0,void 0,function*(){if(r.destroyed)return;let t=!1,l=1;const u=U([e.cloud.webSocketStatus,c.pipe(D(null))]).subscribe(([n])=>{if(r.destroyed)return;t="connected"===n;const o=e.cloud.currentUser.value;"connected"===n&&o.isLoggedIn&&!xn(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(Kt),t=yield d.get("syncState");return[(null==e?void 0:e.receivedUntil)||0,(null==t?void 0:t.yServerRevision)||(null==t?void 0:t.serverRevision)]}));if(r.destroyed||l!==c||!t)return;const y={type:"doc-open",table:o,prop:s,k:i,serverRev:p},h=yield u.where("i").between(f,1/0,!1).filter(e=>0===n(e.k,i)&&!(1&(e.f||0))).toArray();if(!r.destroyed&&l===c&&t){if(h.length>0){const e=J.mergeUpdatesV2(h.map(e=>e.u)),t=J.encodeStateVectorFromUpdateV2(e);y.sv=t}e.messageProducer.next(y)}})}r.addCleanupHandler(u)})})(),l}(e,o,t),Ln.set(o,s),s)})}}function wo(e){const t="undefined"!=typeof window?window.location.href:"";if(!t)return null;const n=new URL(t).searchParams.get("dxc-auth");if(!n)return null;let r;try{const e=function(e){const t=(e+"=".repeat((4-e.length%4)%4)).replace(/-/g,"+").replace(/_/g,"/");return atob(t)}(n);r=JSON.parse(e)}catch(e){return null}const{code:o,provider:i,state:s,error:a}=r;if(a){if(a.toLowerCase().includes("access_denied")||a.toLowerCase().includes("access denied"))throw new Re("access_denied",i,a);if(a.toLowerCase().includes("email")&&a.toLowerCase().includes("verif"))throw new Re("email_not_verified",i,a);throw new Re("provider_error",i,a)}return o&&i&&s?{code:o,provider:i,state:s}:null}function ko(){var e;if("undefined"==typeof window||!(null===(e=window.history)||void 0===e?void 0:e.replaceState))return;const t=new URL(window.location.href);if(!t.searchParams.has("dxc-auth"))return;t.searchParams.delete("dxc-auth");const n=t.pathname+(t.searchParams.toString()?`?${t.searchParams.toString()}`:"")+t.hash;window.history.replaceState(null,"",n)}function So(e){return"rlm~"+e}function xo(e){return e.startsWith("rlm~")?e.substr(4):null}const Io={},Co=new WeakMap,Oo=jo("tx"),Eo=jo("unload");function jo(e){let t=null,n=!1,r=new Map;return{name:e,run(){return Z(this,void 0,void 0,function*(){!n&&r.size>0&&(n=!0,t&&(yield t.catch(()=>{})),setTimeout(()=>{n=!1;const e=r;r=new Map,t=function(e){return Z(this,void 0,void 0,function*(){for(const{db:t,parentId:n,triggers:r,parentTable:o,prop:i}of e.values()){const e=G.getOrCreateDocument(t,o,i,n);try{const t=G.load(e);yield t.whenLoaded;for(const t of r)yield t(e,n)}catch(e){null==e||e.name}finally{G.release(e)}}})}(e).finally(()=>{t=null})},0))})},enqueue(e,t,n,o,i){const s=`${e.name}:${t}:${n}:${o}`;let a=r.get(s);a||(a={db:e,parentTable:t,parentId:n,prop:o,triggers:new Set},r.set(s,a)),a.triggers.add(i)}}}function To(){Oo.run()}function Po(){Eo.run()}function Uo(e,t,n){var o,i;const s=null===(i=null===(o=e.schema.yProps)||void 0===o?void 0:o.find(e=>e.prop===t))||void 0===i?void 0:i.updatesTable;if(!s)throw new Error(`Table ${e.name} does not have a Yjs property named ${t}`);Io[s]={trigger:n,parentTable:e.name,prop:t};const a=e.db._novip;let l=Co.get(a);l||(l=(e=>({stack:"dbcore",level:10,name:"yTriggerMiddleware",create:t=>Object.assign(Object.assign({},t),{transaction:(e,n,r)=>{const o=t.transaction(e,n,r);return"readonly"===n?o:e.some(e=>Io[e])?(o.addEventListener("complete",To),o):o},table:n=>{const o=t.table(n),i=Io[n];if(!i)return o;const{trigger:s,parentTable:a,prop:l}=i;return Object.assign(Object.assign({},o),{mutate(t){var n;switch(t.type){case"add":for(const r of t.values){if(null==r.k)continue;const t=r.k,o=G.getDocCache(e).find(a,t,l);(o&&(null===(n=G.for(o))||void 0===n?void 0:n.refCount)?Eo:Oo).enqueue(e,a,t,l,s)}break;case"delete":t.trans._rejecting_y_ypdate&&o.getMany({keys:t.keys,trans:t.trans,cache:"immutable"}).then(t=>{const n=new r;for(const{k:e}of t)null!=e&&n.addKey(e);for(const t of n)Oo.enqueue(e,a,t.from,l,s)})}return o.mutate(t)}})}})}))(a),Co.set(a,l)),a.use(l),G.on("beforeunload",Po)}const Ao={nameSuffix:!0};function $o(t){const n=t.name,r=fo(t),i=[];let s=!1,a=null,l=null;t.on("ready",t=>Z(this,void 0,void 0,function*(){try{yield function(t){return Z(this,void 0,void 0,function*(){var n,f,p,y,h,v,m;c=!1;const _=rn(t);"undefined"!=typeof window&&"undefined"!=typeof document&&((null===(n=_.cloud.options)||void 0===n?void 0:n.customLoginGui)||i.push(function(e){let t=!1;const n=document.createElement("div");return document.body?(document.body.appendChild(n),Ar(dr(co,{db:e.vip}),n)):addEventListener("DOMContentLoaded",()=>{t||(document.body.appendChild(n),Ar(dr(co,{db:e.vip}),n))}),{unsubscribe(){try{n.remove()}catch(e){}t=!0},get closed(){return t}}}(t))),_.cloud.isServiceWorkerDB||i.push(function(e){let t=e.cloud.webSocketStatus.value;const n=e.cloud.webSocketStatus.pipe(N(e=>{const n=t;t=e;const r=x(e);switch(e){case"disconnected":return En.value?r.pipe(z(500)):r;case"connecting":return"not-started"===n||"error"===n?r:r.pipe(z(4e3));default:return r}}));return U([n,e.syncStateChangedEvent.pipe(V({phase:"initial"})),fo(e.dx._novip),jn]).pipe(W(([t,n,r,o])=>{var i;if((null===(i=r.license)||void 0===i?void 0:i.status)&&"ok"!==r.license.status)return{phase:"offline",status:"offline",license:r.license.status};let{phase:s,error:a,progress:l}=n,c=t;return"error"===s&&(c="error"),"not-started"===t&&("pushing"!==s&&"pulling"!==s||(c="connecting")),"error"!==e.cloud.syncState.value.phase||"pushing"!==n.phase&&"pulling"!==n.phase||(c="connecting"),o||(c="disconnected"),{phase:s,error:a,progress:l,status:Bt?c:"offline",license:"ok"}}))}(_).subscribe(t.cloud.syncState)),i.push(_.syncCompleteEvent.subscribe(d)),_.tables.every(e=>e.core)||function(){throw new e.SchemaError("Version increment needed to allow dexie-cloud change tracking")}();const w="serviceWorker"in navigator?yield navigator.serviceWorker.getRegistrations():[],[S,O]=yield _.transaction("rw",_.$syncState,()=>Z(this,void 0,void 0,function*(){var e,t;const{options:n,schema:r}=_.cloud,[o,i,a]=yield Promise.all([_.getOptions(),_.getSchema(),_.getPersistedSyncState()]);if(s){if(!o||JSON.stringify(o)!==JSON.stringify(n)){if(!n)throw new Error("Internal error");const e=Object.assign({},n);delete e.fetchTokens,delete e.awarenessProtocol,yield _.$syncState.put(e,"options")}}else _.cloud.options=o||null;if((null===(e=_.cloud.options)||void 0===e?void 0:e.tryUseServiceWorker)&&"serviceWorker"in navigator&&w.length>0&&!cn?_.cloud.usingServiceWorker=!0:((null===(t=_.cloud.options)||void 0===t?void 0:t.tryUseServiceWorker)&&_.cloud.isServiceWorkerDB,_.cloud.usingServiceWorker=!1),qn(r,_.cloud.options),qn(i,_.cloud.options),r){if(!i||JSON.stringify(i)!==JSON.stringify(r)){const e=i||{};for(const[t,n]of Object.entries(r)){const r=e[t];r?(r.markedForSync=n.markedForSync,n.deleted=r.deleted,r.generatedGlobalId=n.generatedGlobalId):e[t]=Object.assign({},n)}yield _.$syncState.put(e,"schema"),Object.assign(r,e)}}else _.cloud.schema=i||null;return[null==a?void 0:a.initiallySynced,null==a?void 0:a.realms]}));if(S&&_.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`)}}(_),u(),!_.cloud.isServiceWorkerDB){i.push(o(()=>_.getCurrentUser()).subscribe(r)),i.push(o(()=>_.getPersistedSyncState()).subscribe(_.cloud.persistedSyncState)),yield b(U([r.pipe(q(1),H(1)),_.cloud.persistedSyncState.pipe(q(1),H(1))]));const e=_o(_);G.on.new.subscribe(e),_.dx.once("close",()=>{G.on.new.unsubscribe(e)})}let E=!1;const j=yield _.getCurrentUser();if(a&&!_.cloud.isServiceWorkerDB){const{code:e,provider:t}=a;a=null;try{E=yield He(_,{oauthCode:e,provider:t})}catch(e){}}const T=null===(f=_.cloud.options)||void 0===f?void 0:f.requireAuth;T&&(_.cloud.isServiceWorkerDB?yield b(r.pipe(R(e=>!!e.isLoggedIn),H(1))):"object"==typeof T?(!j.isLoggedIn||T.userId&&j.userId!==T.userId||T.email&&j.email!==T.email)&&(E=yield He(_,T)):j.isLoggedIn||(E=yield He(_))),!j.isLoggedIn||O&&O.includes(j.userId)||(E=!0),l&&l.stop(),l=null,u();const A=(null===(p=_.cloud.options)||void 0===p?void 0:p.databaseUrl)&&(!S||E);A&&(yield function(e,t,n){return Z(this,void 0,void 0,function*(){yield On(e,Gt,()=>Yt(e,t,n,{isInitialSync:!0}))})}(_,_.cloud.options,_.cloud.schema),_.setInitiallySynced(!0)),u(),_.cloud.usingServiceWorker&&(null===(y=_.cloud.options)||void 0===y?void 0:y.databaseUrl)?(A||fe(_,"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){}})}(_).catch(()=>{})):(null===(h=_.cloud.options)||void 0===h?void 0:h.databaseUrl)&&_.cloud.schema&&!_.cloud.isServiceWorkerDB&&(l=Vn(_,_.cloud.options,_.cloud.schema),l.start(),A||pe(_,"push")),u(),_.cloud.isServiceWorkerDB||i.push(I(self,"online").subscribe(()=>{_.syncStateChangedEvent.next({phase:"not-in-sync"}),xn(_)||pe(_,"push")}),I(self,"offline").subscribe(()=>{_.syncStateChangedEvent.next({phase:"offline"})})),!(null===(v=_.cloud.options)||void 0===v?void 0:v.databaseUrl)||(null===(m=_.cloud.options)||void 0===m?void 0:m.disableWebSocket)||un||i.push(function(e){var t;if(!(null===(t=e.cloud.options)||void 0===t?void 0:t.databaseUrl))throw new Error("No database URL to connect WebSocket to");const n=e.messageConsumer.readyToServe.pipe(R(e=>e),N(()=>e.getPersistedSyncState()),R(e=>e&&e.serverRevision),N(e=>Z(this,void 0,void 0,function*(){return{type:"ready",rev:e.serverRevision,realmSetHash:yield Ge(e)}}))),r=C(n,e.messageProducer);return function t(){return e.cloud.persistedSyncState.pipe(R(e=>null==e?void 0:e.serverRevision),H(1),N(t=>e.cloud.currentUser.pipe(W(e=>[e,t]))),N(([e,t])=>jn.pipe(W(n=>[n?e:null,t]))),N(([t,n])=>(null==t?void 0:t.isLoggedIn)&&!(null==n?void 0:n.realms.includes(t.userId))?e.cloud.persistedSyncState.pipe(R(e=>(null==e?void 0:e.realms.includes(t.userId))||!1),H(1),W(e=>[t,e])):new k([t,n])),N(e=>Z(this,[e],void 0,function*([e,t]){return[e,yield Ge(t)]})),M(([e,t],[n,r])=>e===n&&t===r),N(([n,o])=>{var i;return(null===(i=e.cloud.persistedSyncState)||void 0===i?void 0:i.value)?n?new Nn(e,e.cloud.persistedSyncState.value.serverRevision,e.cloud.persistedSyncState.value.yServerRevision,o,e.cloud.persistedSyncState.value.clientIdentity,r,e.cloud.webSocketStatus,n):g([]):t()}),K(n=>"TokenExpiredError"===(null==n?void 0:n.name)?x(!0).pipe(N(()=>Z(this,void 0,void 0,function*(){const t=yield e.getCurrentUser(),n=yield Ee(e.cloud.options.databaseUrl,t);yield e.table("$logins").update(t.userId,{accessToken:n.accessToken,accessTokenExpiration:n.accessTokenExpiration,claims:n.claims,license:n.license,data:n.data})})),N(()=>t())):P(()=>n)),K(n=>(e.cloud.webSocketStatus.next("error"),n instanceof Wn?P(()=>n):g(Fn()).pipe(N(()=>t())))))}().subscribe({next:t=>{t&&e.messageConsumer.enqueue(t)},error:e=>{},complete:()=>{}})}(_))})}(t)}catch(e){}}),!0);let c=!1;function u(){if(c)throw new e.DatabaseClosedError}t.once("close",()=>{i.forEach(e=>e.unsubscribe()),i.splice(0,i.length),c=!0,l&&l.stop(),l=null,r.next(Pe)});const d=new S;var f;t.cloud={version:"4.3.2",options:Object.assign({},Ao),schema:null,get currentUserId(){return r.value.userId||Pe.userId},currentUser:r,syncState:new k({phase:"initial",status:"not-started"}),events:{syncComplete:d},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=rn(t);yield n.cloud.sync(),yield He(n,e)})},invites:go(t),roles:yo(t),configure(e){if(e=t.cloud.options=Object.assign(Object.assign({},t.cloud.options),e),s=!0,e.databaseUrl&&e.nameSuffix&&(t.name=`${n}-${function(e){const t=new URL(e);return"/"===t.pathname?t.hostname.split(".")[0]:t.pathname.split("/")[1]}(e.databaseUrl)}`,rn(t).reconfigure()),qn(t.cloud.schema,t.cloud.options),"undefined"!=typeof window&&window.location)try{const e=wo();e&&(ko(),a={code:e.code,provider:e.provider})}catch(e){ko()}},logout(){return Z(this,arguments,void 0,function*({force:e}={}){e?yield $e(rn(t),{deleteUnsyncedData:!0}):yield Ae(rn(t))})},sync(){return Z(this,arguments,void 0,function*({wait:e,purpose:n}={wait:!0,purpose:"push"}){var r;void 0===e&&(e=!0);const i=rn(t);if("ok"!==((null===(r=i.cloud.currentUser.value.license)||void 0===r?void 0:r.status)||"ok")&&(yield Ce(i)),"pull"===n){const t=i.cloud.persistedSyncState.value;if(pe(i,n),e){const e=yield b(i.cloud.persistedSyncState.pipe(R(e=>null!=(null==e?void 0:e.timestamp)&&(!t||e.timestamp>t.timestamp))));if(null==e?void 0:e.error)throw new Error("Sync error: "+e.error)}}else if(yield Hn(i)){const t=i.cloud.persistedSyncState.value;pe(i,n),e&&(yield b(g(o(()=>Z(this,void 0,void 0,function*(){const e=yield Hn(i),n=yield i.getPersistedSyncState();if((null==n?void 0:n.timestamp)!==(null==t?void 0:t.timestamp)&&(null==n?void 0:n.error))throw new Error("Sync error: "+n.error);return e}))).pipe(R(e=>!e))))}})},permissions:(e,n)=>function(e,t,n){if(!t)throw new TypeError("Cannot check permissions of undefined or null. A Dexie Cloud object with realmId and owner expected.");const{owner:r,realmId:o}=t;if(!n){if("function"!=typeof t.table)throw new TypeError("Missing 'table' argument to permissions and table could not be extracted from entity");n=t.table()}const i=mo(e),s=t=>{const i=t[o||e.cloud.currentUserId];return i?new bo(i.permissions,n,void 0===o||o===e.cloud.currentUserId||r===e.cloud.currentUserId):new bo({},n,!r||r===e.cloud.currentUserId)},a=i.pipe(W(s));return a.getValue=()=>s(i.getValue()),a}(t._novip,e,n)},t.Version.prototype._parseStoresSpec=e.override(t.Version.prototype._parseStoresSpec,e=>Cn(e,t)),t.Table.prototype.newId=function({colocateWith:e}={}){const n=e&&e.substr(e.length-3);return bn(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(In({currentUserObservable:t.cloud.currentUser,db:rn(t)})),t.use((f=rn(t),{stack:"dbcore",name:"implicitPropSetterMiddleware",level:1,create:e=>Object.assign(Object.assign({},e),{table:t=>{const n=e.table(t);return Object.assign(Object.assign({},n),{mutate:e=>{var r,o,i,s,a,l;const c=e.trans;if(c.disableChangeTracking)return n.mutate(e);const u=null!==(o=null===(r=c.currentUser)||void 0===r?void 0:r.userId)&&void 0!==o?o:Pe.userId;if((null===(s=null===(i=f.cloud.schema)||void 0===i?void 0:i[t])||void 0===s?void 0:s.markedForSync)&&("add"===e.type||"put"===e.type)){if("members"===t)for(const t of e.values)"string"==typeof t.email&&(t.email=t.email.trim().toLowerCase());for(const t of e.values){t.owner||(t.owner=u),t.realmId||(t.realmId=u);const r=null===(l=(a=n.schema.primaryKey).extractKey)||void 0===l?void 0:l.call(a,t);"string"==typeof r&&"#"===r[0]&&"put"===e.type&&(delete e.criteria,delete e.changeSpec,e.upsert||delete e.updates,t.$ts=Date.now())}}return n.mutate(e)}})}})})),t.use(gn(rn(t)))}$o.version="4.3.2",e.Cloud=$o;export{$o as default,Uo as defineYDocTrigger,$o as dexieCloud,xo as getTiedObjectId,So as getTiedRealmId,io as resolveText};
|
|
2
2
|
//# sourceMappingURL=dexie-cloud-addon.min.js.map
|
|
Binary file
|