@wellesley/host-remote 1.0.143 → 1.0.145
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/index.mjs +1 -1
- package/package.json +1 -1
package/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{logErrorToSentry as Re}from"https://cdn.jsdelivr.net/npm/@wellesley/sentry@next";import{subscribeAfter as Z}from"https://cdn.jsdelivr.net/npm/@wellesley/redux-subscribe-action@next";import{useRef as w,useCallback as v,useEffect as y,memo as ie,useState as ce}from"https://cdn.jsdelivr.net/npm/react@18.2.0/+esm";import{getStore as b,rootReducer as B,createStore as Te}from"https://cdn.jsdelivr.net/npm/@wellesley/store@next";import{api as xe,handleBasicResponse as l}from"https://cdn.jsdelivr.net/npm/@wellesley/openapi@next";import{createSlice as u,createAction as h,createSelector as c}from"https://cdn.jsdelivr.net/npm/@reduxjs/toolkit@2.2.1/+esm";import{toast as le}from"https://cdn.jsdelivr.net/npm/react-toastify@10.0.5/+esm";import{getErrorMsg as Ue}from"https://cdn.jsdelivr.net/npm/@wellesley/error-kit@next";import{useDispatch as x,useSelector as S}from"https://cdn.jsdelivr.net/npm/react-redux@9.1.0/+esm";import{routerSlice as d}from"https://cdn.jsdelivr.net/npm/@wellesley/router@next";import{useLocation as de,useBlocker as Ne,useNavigate as ue}from"https://cdn.jsdelivr.net/npm/react-router-dom@6.22.2/+esm";import{handleLogin as _e,handleLogout as Fe}from"https://cdn.jsdelivr.net/npm/@wellesley/auth@next";const De=()=>"object"!=typeof window,ee=["debug","info","warn","error"],Oe=(e,t)=>{const s=ee.indexOf(e);return ee.indexOf(t)>=s},E=(e,t,s,...a)=>{Oe(t,e)&&console.log(`[${e}] ${s}`,...a)},Me=()=>null==window?void 0:window.localStorage.getItem("logger_lvl"),Ve=(e=!De()&&Me()||"warn")=>{let t=e;return{debug:(e,...s)=>E("debug",t,e,...s),info:(e,...s)=>E("info",t,e,...s),warn:(e,...s)=>E("warn",t,e,...s),error:(e,...s)=>(Re(e,...s),E("error",t,e,...s)),setLevel:e=>{t=e},getLevel:()=>t}},U=Ve(),N="staticState",L={path:"",baseUrl:"",search:""},$e=e=>{if(!e)return L;try{return JSON.parse(decodeURIComponent(e))||L}catch(e){return U.error("Error parsing static state",e),L}},pe=()=>new URLSearchParams(window.location.search).get(N),Qe=({path:e,baseUrl:t,search:s}={})=>{const{pathname:a,origin:o,search:n}=window.location;return`${N}=${encodeURIComponent(JSON.stringify({path:e||a,baseUrl:t||o,search:s||n}))}`},Be=()=>{const e=pe();return e&&localStorage.setItem(N,e),me()},me=()=>{try{const e=localStorage.getItem(N)||pe();return $e(e)}catch(e){return U.error("Error parsing static state",e),L}},ze={create:Qe,init:Be,get:me},z=({onMessage:e,whitelist:t})=>{const s=s=>{const a=s.origin!==window.location.origin,o=s.data&&"object"==typeof s.data&&"type"in s.data,n=t.some((({type:e})=>e===s.data.type||"*"===e));a&&o&&n&&e(s.data)};return window.addEventListener("message",s),()=>{window.removeEventListener("message",s)}},qe=e=>{try{const{type:t,payload:s}=e,a={type:t};return void 0!==s&&(a.payload=JSON.parse(JSON.stringify(s))),a}catch(t){return U.warn(`Could not serialize action type: ${e.type}`,t),{type:e.type,payload:`[Non-serializable payload for action: ${e.type}]`}}},q=({action:e,windowElement:t,whitelist:s})=>{if(t)try{const{type:a}=e;if(!s.some((({type:e})=>e===a||"*"===e)))return;const o=qe(e);t.postMessage(o,"*")}catch(e){U.error("Failed to process or send message:",e)}},j="auth_token",Se=()=>localStorage.getItem(j)||void 0,je=e=>localStorage.setItem(j,e),He=()=>localStorage.removeItem(j),We=()=>!!Se(),C={getToken:Se,setToken:je,removeToken:He,hasToken:We},te={forgotPasswordStep:"request",forgotPasswordFields:null,signupStep:"rules",signupFields:null,token:null,newEmail:null,isAuthBlockVisible:!0,isPending:!!C.getToken(),isAuthenticated:!1},M=u({name:"auth",initialState:te,reducers:{login:(e,t)=>{e.isAuthenticated=!0,e.token=t.payload||null,e.isPending=!1},logout:()=>({...te,isPending:!1}),setNewEmail:(e,t)=>{e.newEmail=t.payload},setForgotPasswordStep:(e,t)=>{e.forgotPasswordStep=t.payload},updateForgotPasswordFields:(e,t)=>{e.forgotPasswordFields={...e.forgotPasswordFields,...t.payload}},resetForgotPasswordFields:e=>{e.forgotPasswordFields=null},setSignupStep:(e,t)=>{e.signupStep=t.payload},updateSignupFields:(e,t)=>{e.signupFields={...e.signupFields,...t.payload}},resetSignupFields:e=>{e.signupFields=null},setPending:(e,t)=>{e.isPending=t.payload},showAuthBlock:(e,t)=>{e.isAuthBlockVisible=t.payload}},selectors:{selectToken:e=>e.token,selectNewEmail:e=>e.newEmail,selectForgotPasswordStep:e=>e.forgotPasswordStep,selectForgotPasswordFields:e=>e.forgotPasswordFields,selectSignupStep:e=>e.signupStep,selectSignupFields:e=>e.signupFields,selectPending:e=>e.isPending,selectAuthBlockVisible:e=>e.isAuthBlockVisible,selectIsAuthenticated:e=>e.isAuthenticated}}),se={data:null,isError:!1,isPending:!1,isSuccess:!1},m=u({name:"user",initialState:se,reducers:{reset:e=>{Object.assign(e,se)},setData:(e,{payload:t})=>{e.data=t},updateData:(e,{payload:t})=>{e.data&&Object.assign(e.data,t)},setSuccess:(e,{payload:t})=>{e.isSuccess=t},setPending:(e,{payload:t})=>{e.isPending=t},setIsError:(e,{payload:t})=>{e.isError=t},setError:(e,{payload:t})=>{e.error=t},updateUser:(e,{payload:t})=>{var s;null!=(s=e.data)&&s.users&&(e.data.users=e.data.users.map((e=>t.id===e.id?t:e)))}},selectors:{selectIsError:e=>e.isError,selectError:e=>e.error,selectPending:e=>e.isPending,selectData:e=>e.data,selectAccount:e=>{var t;return null==(t=e.data)?void 0:t.account},selectAccountId:e=>{var t;return null==(t=e.data)?void 0:t.account.id},selectUsers:e=>{var t;return null==(t=e.data)?void 0:t.users},selectUserById:(e,t)=>{var s;return null==(s=e.data)?void 0:s.users.find((({id:e})=>e===t))},selectCurrentUser:e=>{var t;return null==(t=e.data)?void 0:t.users.find((({id:t})=>{var s;return t===(null==(s=e.data)?void 0:s.selectedUserId)}))},selectSelectedUserId:e=>{var t;return null==(t=e.data)?void 0:t.selectedUserId},selectSuccess:e=>e.isSuccess,selectIsAdmin:e=>{var t;return"ADMIN"===(null==(t=e.data)?void 0:t.account.role)}}}),R="remote-ready",ye=h("reselectUser"),H=h("requestLogin"),he=h("requestLogout"),W=h("setConfirmLeavePage"),T="host-store-connect",fe=h("remoteLogin"),ge=h("remoteLogout");h("requestMicroFrontendFetch"),h("sendMicroFrontendFetchResponse");const _=async(e,t,s)=>{try{e(M.actions.setPending(!0));const{data:a}=await t,o="sessionKey"in a?a.sessionKey:a.token.sessionKey;return C.setToken(o),e(H(o)),null==s||s(),t}catch(t){e(M.actions.setPending(!1)),le.error(Ue(t))}},Ke=xe.enhanceEndpoints({endpoints:{getApiV1Rules:{async onQueryStarted(e,{queryFulfilled:t}){await l(t)}},postApiV1AccountsPasswordRecover:{async onQueryStarted(e,{queryFulfilled:t}){await l(t)}},postApiV1AccountsPasswordRecoverCheckCode:{async onQueryStarted(e,{queryFulfilled:t}){await l(t)}},postApiV1AccountsPasswordRecoverChange:{async onQueryStarted(e,{queryFulfilled:t}){await l(t)}},postApiV1AccountsPasswordChangeConfirm:{async onQueryStarted(e,{queryFulfilled:t}){await l(t)}},putApiV1AccountsPasswordChangeResendCode:{async onQueryStarted(e,{queryFulfilled:t}){await l(t)}},postApiV1AccountsPasswordChangeRequest:{async onQueryStarted(e,{queryFulfilled:t}){await l(t)}},putApiV1AccountsEmailChangeResendCode:{async onQueryStarted(e,{queryFulfilled:t}){await l(t)}},putApiV1AccountsResendEmailByHash:{async onQueryStarted(e,{queryFulfilled:t}){await l(t)}},postApiV1AccountsEmailChangeRequest:{async onQueryStarted(e,{queryFulfilled:t}){await l(t)}},postApiV1AccountsEmailChangeConfirm:{async onQueryStarted(e,{queryFulfilled:t}){await l(t)}},postApiV1AccountsConfirmEmail:{async onQueryStarted(e,{queryFulfilled:t}){await l(t)}},postApiV1AccountsCheckCaptcha:{async onQueryStarted(e,{queryFulfilled:t}){await l(t)}},postApiV1AccountsFinishCreating:{async onQueryStarted(e,{dispatch:t,queryFulfilled:s}){await _(t,s,(()=>{le.success("User registered successfully")}))}},postApiV1AccountsAuthenticateEmail:{invalidatesTags:["Secure"],async onQueryStarted(e,{dispatch:t,queryFulfilled:s}){await _(t,s)}},postApiV1AccountsSignup:{invalidatesTags:["Secure"]},postApiV1AccountsUserReselectUser:{async onQueryStarted({userId:e},{dispatch:t,queryFulfilled:s}){await _(t,s),e&&t(m.actions.updateData({selectedUserId:e}))}}}}),Pe={[ye.type]:e=>b().dispatch(Ke.endpoints.postApiV1AccountsUserReselectUser.initiate(e)),[H.type]:e=>C.setToken(e),[he.type]:()=>C.removeToken()},Ge=e=>Object.keys(Pe).includes(e.type),we=e=>Ge(e)?Pe[e.type](e.payload):null,be=({sendWhitelist:e,receiveWhitelist:t,onMessage:s})=>{const a=w((()=>{})),o=w((()=>{}));return v((n=>{n&&(a.current(),o.current(),a.current=Z((t=>{we(t),q({action:t,windowElement:n,whitelist:e})})),o.current=z({onMessage:e=>{s?s(e):b().dispatch(e)},whitelist:t}))}),[e,t,s,Z])},K=e=>e,Ae=c(K,(e=>e.data)),Je=c(K,(e=>e.error)),Ye=c(K,(e=>e.isPending)),Xe=c(Ae,(e=>null==e?void 0:e.rules)),Ze={data:null,isPending:!1},F=u({name:"instanceInfo",initialState:Ze,reducers:{setInfo:(e,t)=>{e.data=t.payload},setError:(e,t)=>{e.error=t.payload},setPending:(e,t)=>{e.isPending=t.payload}},selectors:{selectInstanceInfo:Ae,selectInstanceInfoError:Je,selectInstanceInfoPending:Ye,selectPlatformRules:Xe,selectRegistrations:e=>{var t;return null==(t=e.data)?void 0:t.configuration.registrations}}}),et={sms:"wellesley.admin.sms",auth:"wellesley.admin.auth",openai:"wellesley.admin.openai",uploads:"wellesley.admin.uploads",captcha:"wellesley.admin.captcha",language:"wellesley.admin.language",mediacache:"wellesley.admin.mediacache",translation:"wellesley.admin.translation"},tt={posts:"wellesley.posts",registration:"wellesley.registration",confirmationCode:"wellesley.confirmationCode",uploadsPolicyDoc:"wellesley.uploads.policy.doc",uploadsPolicyAudio:"wellesley.uploads.policy.audio",uploadsPolicyImage:"wellesley.uploads.policy.image",uploadsPolicyVideo:"wellesley.uploads.policy.video",captcha:"wellesley.captcha"},st={data:null,isPending:!1},{posts:D,uploadsPolicyDoc:ae,uploadsPolicyAudio:O,uploadsPolicyImage:I,uploadsPolicyVideo:g,registration:at,captcha:ot}=tt,{captcha:nt,language:rt,translation:it,openai:ct}=et,f=e=>e.data,lt=c(f,(e=>{var t,s,a;return{max_characters:(null==(t=null==e?void 0:e[D])?void 0:t.max_characters)||0,max_media_attachments:(null==(s=null==e?void 0:e[D])?void 0:s.max_media_attachments)||0,max_pins:(null==(a=null==e?void 0:e[D])?void 0:a.max_pins)||0}})),Ee=c(f,(e=>{var t,s,a;return{...null==e?void 0:e[I],maxSize:(null==(t=null==e?void 0:e[I])?void 0:t.maxSize)||0,maxMatrix:(null==(s=null==e?void 0:e[I])?void 0:s.maxMatrix)||0,maxResolution:(null==(a=null==e?void 0:e[I])?void 0:a.maxResolution)||0}})),Ie=c(f,(e=>{var t,s,a,o;return{...null==e?void 0:e[g],maxSize:(null==(t=null==e?void 0:e[g])?void 0:t.maxSize)||0,maxMatrix:(null==(s=null==e?void 0:e[g])?void 0:s.maxMatrix)||0,maxDuration:(null==(a=null==e?void 0:e[g])?void 0:a.maxDuration)||0,maxResolution:(null==(o=null==e?void 0:e[g])?void 0:o.maxResolution)||0}})),ke=c(f,(e=>{var t,s;return{...null==e?void 0:e[O],maxSize:null==(t=null==e?void 0:e[O])?void 0:t.maxSize,keepOriginal:(null==(s=null==e?void 0:e[O])?void 0:s.keepOriginal)||0}})),Le=c(f,(e=>{var t;return{...null==e?void 0:e[ae],maxSize:(null==(t=null==e?void 0:e[ae])?void 0:t.maxSize)||0}})),ve=c([Ee,Ie,ke,Le],((e,t,s,a)=>({IMAGE:null==e?void 0:e.extensions,VIDEO:null==t?void 0:t.extensions,AUDIO:null==s?void 0:s.extensions,DOCUMENT:null==a?void 0:a.extensions}))),dt=c(ve,(e=>Object.keys(e).reduce(((t,s)=>[...t,...e[s]||[]]),[]))),ut=u({name:"platformSettings",initialState:st,reducers:{setSettings:(e,t)=>{e.data={...e.data,...t.payload}},setError:(e,t)=>{e.error=t.payload},setPending:(e,t)=>{e.isPending=t.payload}},selectors:{selectSettings:f,selectPostConfig:lt,selectDocPolicy:Le,selectImagePolicy:Ee,selectVideoPolicy:Ie,selectAudioPolicy:ke,selectSupportedExtensions:ve,selectFullExtensionsList:dt,selectRegistration:e=>{var t;return null==(t=e.data)?void 0:t[at]},selectLanguageDetection:e=>{var t;return null==(t=e.data)?void 0:t[rt]},selectLanguageTranslation:e=>{var t;return null==(t=e.data)?void 0:t[it]},selectOpenai:e=>{var t;return null==(t=e.data)?void 0:t[ct]},selectCaptcha:e=>{var t;return null==(t=e.data)?void 0:t[ot]},selectAdminCaptcha:e=>{var t;return null==(t=e.data)?void 0:t[nt]}}}),oe={data:{userId:"",list:[]},count:{},isPending:!1},pt=e=>e,mt=e=>e.error,St=e=>e.isPending,yt=e=>{var t;return null==(t=e.count)?void 0:t.total},ht=e=>{var t;return null==(t=e.count)?void 0:t.unread},ft=e=>e.data.userId,G=c(pt,(e=>e.data.list)),gt=c(G,(e=>null==e?void 0:e.filter((e=>"UNREAD"===e.status)))),Pt=c(G,(e=>null==e?void 0:e.at(-1))),p=u({name:"notifications",initialState:oe,reducers:{setPending:(e,t)=>{e.isPending=t.payload},setError:(e,t)=>{e.error=t.payload},setNotifications:(e,t)=>{const s=t.payload.userId,a=t.payload.list;e.data={userId:s,list:[...e.data.list||[],...a.filter((t=>{var s;return!(null!=(s=e.data.list)&&s.some((e=>e.id===t.id)))}))]}},addNotification:(e,t)=>{e.count.unread=(e.count.unread||0)+1,e.data.list&&(e.data.list=[t.payload,...e.data.list||[]])},markNotification:(e,t)=>{e.data.list&&(e.data.list=e.data.list.map((e=>e.id===t.payload.id?{...e,status:t.payload.status}:e)))},updateNotification:(e,t)=>{var s;if(!e.data.list)return;const a=t.payload;e.data.list=null==(s=e.data.list)?void 0:s.map((e=>e.id===a.id?{...e,...a}:e))},setTotalCount:(e,t)=>{e.count.total=t.payload},setUnreadCount:(e,t)=>{e.count.unread=t.payload},readAll:e=>{var t;e.data.list&&(e.data.list=null==(t=e.data.list)?void 0:t.map((e=>({...e,status:"READ"}))))},resetState:()=>oe,undoNotitication:(e,t)=>{var s,a,o;const n=t.payload;"UNREAD"===(null==(a=null==(s=e.data.list)?void 0:s.find((e=>e.id===n)))?void 0:a.status)&&e.count.unread&&(e.count.unread-=1),e.data.list=(null==(o=e.data.list)?void 0:o.filter((e=>e.id!==n)))||[]}},selectors:{selectError:mt,selectIsPending:St,selectTotalCount:yt,selectUnreadCount:ht,selectNotifications:G,selectUnreadNotifications:gt,selectLastNotification:Pt,selectNotificationsOwner:ft}}),wt=()=>{const e=window.innerWidth;return e<768?"mobile":e<1024?"tablet":"desktop"},bt={deviceType:wt()},At=u({name:"ui",initialState:bt,reducers:{setDeviceType:(e,{payload:t})=>{e.deviceType=t}},selectors:{selectDeviceType:e=>e.deviceType,selectIsMobile:e=>"mobile"===e.deviceType,selectIsTablet:e=>"tablet"===e.deviceType,selectIsDesktop:e=>"desktop"===e.deviceType}}),P={messages:[],subscribers:[],unsubscribers:[]},V=u({name:"ws",initialState:P,reducers:{reset:e=>{e.messages=P.messages,e.subscribers=P.subscribers,e.unsubscribers=P.unsubscribers},subscribe:(e,{payload:t})=>{!e.subscribers.find((e=>e.id===t.id))&&e.subscribers.push(t)},onMessage:(e,{payload:t})=>{e.messages=[t,...e.messages.slice(0,100)]},cleanMessages:e=>{e.messages=P.messages},unsubscribe:(e,{payload:t})=>{const s=e.subscribers.find((e=>e.id===t));s&&e.unsubscribers.push(s)},onUnsubscribe:(e,{payload:t})=>{e.subscribers=e.subscribers.filter((e=>e.id!==t)),e.unsubscribers=e.unsubscribers.filter((e=>e.id!==t))}},selectors:{selectMessages:e=>e.messages,selectSubscribers:e=>e.subscribers,selectUnSubscribers:e=>e.unsubscribers,selectLastUpdateFor:(e,t)=>{var s;return null==(s=e.messages)?void 0:s.find((({topic:e})=>t.startsWith("feed:my")?e.startsWith(t):e===t))}}}).injectInto(B),Et={path:"",transitionPath:"",confirmLeavePage:null},Ce=u({name:"router",initialState:Et,reducers:{setPath:(e,{payload:t})=>{t!==e.path&&(e.path=t)},requestChangePath:(e,{payload:t})=>{t!==e.transitionPath&&(e.transitionPath=t)}},extraReducers:e=>{e.addCase(W,((e,{payload:t})=>{e.confirmLeavePage=t}))},selectors:{selectPath:e=>e.path,selectTransitionPath:e=>e.transitionPath,selectConfirmLeavePage:e=>e.confirmLeavePage}}).injectInto(B),It={data:null,isPending:!1,isSuccess:!1},kt=u({name:"profileSettings",initialState:It,reducers:{setSettings:(e,t)=>{e.data=t.payload},setPending:(e,t)=>{e.isPending=t.payload},setSuccess:(e,{payload:t})=>{e.isSuccess=t},setError:(e,{payload:t})=>{e.error=t}},selectors:{selectProfileSettings:e=>e.data,selectPending:e=>e.isPending,selectError:e=>e.error,selectSuccess:e=>e.isSuccess}}),ne={data:{},ui:{showInfo:!1},localState:{description:"",rules:null,links:null,locations:null}},re={data:null,loading:!1,ui:{showInfo:!1}},k=u({name:"group",initialState:ne,reducers:{reset:()=>ne,setData:(e,{payload:t})=>{const[s,a]=t;e.data[s]||(e.data[s]={...re}),e.data[s].data=a},setLoading:(e,{payload:t})=>{const[s,a]=t;e.data[s]||(e.data[s]={...re}),e.data[s].loading=a},setShowBasicInfo:(e,{payload:t})=>{e.ui.showInfo=t},setDescription:(e,{payload:t})=>{e.localState.description=t},setRules:(e,{payload:t})=>{e.localState.rules=t},addRule:(e,{payload:t})=>{e.localState.rules=[...e.localState.rules||[],t]},updateRule:(e,{payload:t})=>{e.localState.rules=(e.localState.rules||[]).map((e=>e.id===t.id?t:e))},removeRule:(e,{payload:t})=>{e.localState.rules=(e.localState.rules||[]).filter((e=>e.id!==t))},reorderRules:(e,{payload:t})=>{e.localState.rules=t},setLinks:(e,{payload:t})=>{e.localState.links=t},addLink:(e,{payload:t})=>{e.localState.links=[...e.localState.links||[],t]},updateLink:(e,{payload:t})=>{e.localState.links=(e.localState.links||[]).map((e=>e.id===t.id?t:e))},removeLink:(e,{payload:t})=>{e.localState.links=(e.localState.links||[]).filter((e=>e.id!==t))},setLocations:(e,{payload:t})=>{e.localState.locations=t},removeLocation:(e,{payload:t})=>{e.localState.locations=(e.localState.locations||[]).filter((e=>e!==t))}},selectors:{group:(e,t)=>{var s;return null==(s=e.data[t])?void 0:s.data},isLoading:(e,t)=>{var s;return null==(s=e.data[t])?void 0:s.loading},showBasicInfo:e=>e.ui.showInfo,selectDescription:e=>e.localState.description,selectRules:e=>e.localState.rules,selectLinks:e=>e.localState.links,selectLocations:e=>e.localState.locations}}).injectInto(B),J=[Ce.actions.requestChangePath,W,V.actions.subscribe,V.actions.unsubscribe,M.actions.showAuthBlock,{type:R},ye,H,he],Y=[{type:T},Ce.actions.setPath,At.actions.setDeviceType,V.actions.onMessage,fe,ge,m.actions.setError,m.actions.setIsError,m.actions.setPending,m.actions.setSuccess,m.actions.setData,m.actions.updateData,m.actions.updateUser,p.actions.addNotification,p.actions.markNotification,p.actions.setError,p.actions.setNotifications,p.actions.setPending,p.actions.setTotalCount,p.actions.setUnreadCount,p.actions.resetState,p.actions.undoNotitication,F.actions.setInfo,F.actions.setPending,F.actions.setError,ut.actions.setSettings,kt.actions.setSettings,k.actions.setData,k.actions.setLoading,k.actions.reset,k.actions.setShowBasicInfo];if(Y.find((e=>J.find((t=>(null==t?void 0:t.type)===(null==e?void 0:e.type))))))throw new Error("Output action is duplicated with input action");const Lt=()=>{const e=b().getState();return e.openapi&&(e.openapi=void 0),e.auth&&(e.auth={...e.auth,token:null}),e},Jt=e=>{const t=be({sendWhitelist:Y,receiveWhitelist:J,onMessage:e=>{we(e)||b().dispatch(e)}}),s=v((()=>{var t;const s={type:T,payload:Lt()};q({action:s,windowElement:(null==(t=e.current)?void 0:t.contentWindow)??null,whitelist:[s]})}),[e]),a=v((()=>{var a;t((null==(a=e.current)?void 0:a.contentWindow)??null),s()}),[t,e,s]);y((()=>{const e=z({onMessage:e=>{e.type===R&&a()},whitelist:[{type:R}]});return()=>e()}),[a])},X=()=>{const e=de();return e.pathname+e.search},vt=({lastLocationPathRef:e})=>{const t=x(),s=X(),a=S(d.selectors.selectPath),o=S(d.selectors.selectTransitionPath);y((()=>{s!==e.current&&(e.current=s,s!==a&&s!==o&&t(d.actions.requestChangePath(s)))}),[a,o,s])},Ct=({canShowMessage:e,message:t="Are you sure you want to leave?"})=>{const s=x(),a=S(d.selectors.selectPath),o=e=>(e.preventDefault(),e.returnValue=t,t);y((()=>(window.onbeforeunload=e?o:null,()=>{window.onbeforeunload=null})),[e,t]);const n=Ne(e),i="blocked"===n.state;y((()=>{i&&(confirm(t)?(n.proceed(),s(W(null))):(n.reset(),s(d.actions.requestChangePath(a))))}),[i])},Rt=()=>{const e=x(),t=S(d.selectors.selectPath),s=X();return{setPath:({transitionPath:a})=>{a&&s===a&&t!==a&&e(d.actions.setPath(a))}}},Tt=()=>{const e=ue(),t=de(),s=x(),a=w(""),o=S(d.selectors.selectPath),n=S(d.selectors.selectTransitionPath),{setPath:i}=Rt(),{shouldBlock:l,message:r}=S(d.selectors.selectConfirmLeavePage)||{};Ct({canShowMessage:!!l,message:r}),vt({lastLocationPathRef:a}),y((()=>{i({transitionPath:n})}),[t,o,n,s]),y((()=>{n&&n!==a.current&&(a.current=n,e(n,{replace:!1}))}),[n,e])},xt=ie((()=>(Tt(),null)));xt.displayName="HostRouteObserver";const Ut=e=>{const t=w(e),[s,a]=ce(null);return y((()=>{const e=z({onMessage:e=>{var s;if(e.type===T){const o=Te(e.payload);a(o),null==(s=t.current)||s.call(t,o)}},whitelist:[{type:T}]}),s={type:R};return q({action:s,windowElement:window.parent,whitelist:[s]}),()=>e()}),[]),{store:s}},$={[fe.type]:()=>_e(),[ge.type]:()=>Fe()},Nt=e=>Object.keys($).includes(e.type),_t=e=>Nt(e)&&e.type in $?$[e.type]():null,{path:Q,search:Ft}=ze.init();Q&&window.history.replaceState({},"",`${Q}${Ft||""}`);const Yt=()=>{const[e,t]=ce(null),s=be({sendWhitelist:J,receiveWhitelist:Y,onMessage:e=>{_t(e)||b().dispatch(e)}}),a=v((e=>{t(e),s(window.parent)}),[s]);return Ut(a),{store:e,path:Q}},Dt=()=>{const e=ue(),t=w(""),s=X(),a=S(d.selectors.selectPath);y((()=>{a&&a!==t.current&&(t.current=a,s!==a&&e(a,{replace:!0}))}),[a,e,s])},Ot=ie((()=>(Dt(),null)));Ot.displayName="RemoteRouteObserver";export{xt as HostRouteObserver,Ot as RemoteRouteObserver,we as callHostApiAction,_t as callRemoteApiAction,z as listenMessage,Lt as prepareState,q as sendMessage,ze as staticState,Jt as useHostStoreConnect,Ut as usePreloadedStore,Yt as useRemoteStoreConnect};
|
|
1
|
+
import{logErrorToSentry as rt}from"https://cdn.jsdelivr.net/npm/@wellesley/sentry@next";import{subscribeAfter as V}from"https://cdn.jsdelivr.net/npm/@wellesley/redux-subscribe-action@next";import{useRef as g,useCallback as w,useEffect as p,memo as $,useState as q}from"https://cdn.jsdelivr.net/npm/react@18.2.0/+esm";import{getStore as h,createStore as at}from"https://cdn.jsdelivr.net/npm/@wellesley/store@next";import{api as ct,handleBasicResponse as i}from"https://cdn.jsdelivr.net/npm/@wellesley/openapi@next";import{createSlice as it,createAction as H}from"https://cdn.jsdelivr.net/npm/@reduxjs/toolkit@2.2.1/+esm";import{toast as B}from"https://cdn.jsdelivr.net/npm/react-toastify@10.0.5/+esm";import{getErrorMsg as lt}from"https://cdn.jsdelivr.net/npm/@wellesley/error-kit@next";import{useDispatch as b,useSelector as u}from"https://cdn.jsdelivr.net/npm/react-redux@9.1.0/+esm";import{routerSlice as d}from"https://cdn.jsdelivr.net/npm/@wellesley/router@next";import{useLocation as W,useBlocker as ut,useNavigate as j}from"https://cdn.jsdelivr.net/npm/react-router-dom@6.22.2/+esm";import{handleLogin as dt,handleLogout as pt}from"https://cdn.jsdelivr.net/npm/@wellesley/auth@next";const gt=()=>"object"!=typeof window,Q=["debug","info","warn","error"],ht=(e,t)=>{const s=Q.indexOf(e);return Q.indexOf(t)>=s},y=(e,t,s,...r)=>{ht(t,e)&&console.log(`[${e}] ${s}`,...r)},ft=()=>null==window?void 0:window.localStorage.getItem("logger_lvl"),yt=(e=!gt()&&ft()||"warn")=>{let t=e;return{debug:(e,...s)=>y("debug",t,e,...s),info:(e,...s)=>y("info",t,e,...s),warn:(e,...s)=>y("warn",t,e,...s),error:(e,...s)=>(rt(e,...s),y("error",t,e,...s)),setLevel:e=>{t=e},getLevel:()=>t}},v=yt(),C="staticState",m={path:"",baseUrl:"",search:""},mt=e=>{if(!e)return m;try{return JSON.parse(decodeURIComponent(e))||m}catch(e){return v.error("Error parsing static state",e),m}},x=()=>new URLSearchParams(window.location.search).get(C),wt=({path:e,baseUrl:t,search:s}={})=>{const{pathname:r,origin:n,search:o}=window.location;return`${C}=${encodeURIComponent(JSON.stringify({path:e||r,baseUrl:t||n,search:s||o}))}`},St=()=>{const e=x();return e&&localStorage.setItem(C,e),G()},G=()=>{try{const e=localStorage.getItem(C)||x();return mt(e)}catch(e){return v.error("Error parsing static state",e),m}},Pt={create:wt,init:St,get:G},k=({onMessage:e,whitelist:t})=>{const s=s=>{const r=s.origin!==window.location.origin,n=s.data&&"object"==typeof s.data&&"type"in s.data,o=t.some((({type:e})=>e===s.data.type||"*"===e));r&&n&&o&&e(s.data)};return window.addEventListener("message",s),()=>{window.removeEventListener("message",s)}},At=e=>{try{const{type:t,payload:s}=e,r={type:t};return void 0!==s&&(r.payload=JSON.parse(JSON.stringify(s))),r}catch(t){return v.warn(`Could not serialize action type: ${e.type}`,t),{type:e.type,payload:`[Non-serializable payload for action: ${e.type}]`}}},E=({action:e,windowElement:t,whitelist:s})=>{if(t)try{const{type:r}=e;if(!s.some((({type:e})=>e===r||"*"===e)))return;const n=At(e);t.postMessage(n,"*")}catch(e){v.error("Failed to process or send message:",e)}},F="auth_token",z=()=>localStorage.getItem(F)||void 0,bt=e=>localStorage.setItem(F,e),vt=()=>localStorage.removeItem(F),Ct=()=>!!z(),S={getToken:z,setToken:bt,removeToken:vt,hasToken:Ct},M={forgotPasswordStep:"request",forgotPasswordFields:null,signupStep:"rules",signupFields:null,token:null,newEmail:null,isPending:!!S.getToken(),isAuthenticated:!1},D=it({name:"auth",initialState:M,reducers:{login:(e,t)=>{e.isAuthenticated=!0,e.token=t.payload||null,e.isPending=!1},logout:()=>({...M,isPending:!1}),setNewEmail:(e,t)=>{e.newEmail=t.payload},setForgotPasswordStep:(e,t)=>{e.forgotPasswordStep=t.payload},updateForgotPasswordFields:(e,t)=>{e.forgotPasswordFields={...e.forgotPasswordFields,...t.payload}},resetForgotPasswordFields:e=>{e.forgotPasswordFields=null},setSignupStep:(e,t)=>{e.signupStep=t.payload},updateSignupFields:(e,t)=>{e.signupFields={...e.signupFields,...t.payload}},resetSignupFields:e=>{e.signupFields=null},setPending:(e,t)=>{e.isPending=t.payload}},selectors:{selectToken:e=>e.token,selectNewEmail:e=>e.newEmail,selectForgotPasswordStep:e=>e.forgotPasswordStep,selectForgotPasswordFields:e=>e.forgotPasswordFields,selectSignupStep:e=>e.signupStep,selectSignupFields:e=>e.signupFields,selectPending:e=>e.isPending,selectIsAuthenticated:e=>e.isAuthenticated}}),Lt=e=>{if("object"!=typeof e||null===e)return!1;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||null===Object.getPrototypeOf(e)},Nt=e=>Lt(e)&&"type"in e&&"string"==typeof e.type,r=e=>{const t=t=>({type:e,payload:t});return t.toString=()=>`${e}`,t.type=e,t.match=t=>Nt(t)&&t.type===e,t},P=r("remoteReady"),J=r("reselectUser"),U=r("requestLogin"),K=r("requestLogout"),X=r("setConfirmLeavePage"),I=r("requestChangePath"),Rt=r("wsSubscribe"),kt=r("wsUnSubscribe"),A=r("hostStoreConnect"),Y=r("remoteLogin"),Z=r("remoteLogout"),Et=r("wsOnMessage"),tt=r("setRouterPath"),Ft=r("setDeviceType"),Ut=r("setUserError"),It=r("setUserIsError"),Ot=r("setUserPending"),Tt=r("setUserSuccess"),_t=r("setUserData"),et=r("updateAccountData"),Vt=r("updateUser"),Qt=r("addNotification"),Mt=r("markNotification"),Dt=r("setNotificationsError"),$t=r("setNotificationsList"),qt=r("setNotificationsPending"),Ht=r("setNotificationsTotalCount"),Bt=r("setNotificationsUnreadCount"),Wt=r("resetNotificationsState"),jt=r("undoNotification"),xt=r("setInstanceInfo"),Gt=r("setInstanceInfoPending"),zt=r("setInstanceInfoError"),Jt=r("setPlatformSettings"),Kt=r("setProfileSettings"),Xt=r("setGroupData"),Yt=r("setGroupLoading"),Zt=r("showGroupBasicInfo");H("requestMicroFrontendFetch"),H("sendMicroFrontendFetchResponse");const L=async(e,t,s)=>{try{e(D.actions.setPending(!0));const{data:r}=await t,n="sessionKey"in r?r.sessionKey:r.token.sessionKey;return S.setToken(n),e(U(n)),null==s||s(),t}catch(t){e(D.actions.setPending(!1)),B.error(lt(t))}},te=ct.enhanceEndpoints({endpoints:{getApiV1Rules:{async onQueryStarted(e,{queryFulfilled:t}){await i(t)}},postApiV1AccountsPasswordRecover:{async onQueryStarted(e,{queryFulfilled:t}){await i(t)}},postApiV1AccountsPasswordRecoverCheckCode:{async onQueryStarted(e,{queryFulfilled:t}){await i(t)}},postApiV1AccountsPasswordRecoverChange:{async onQueryStarted(e,{queryFulfilled:t}){await i(t)}},postApiV1AccountsPasswordChangeConfirm:{async onQueryStarted(e,{queryFulfilled:t}){await i(t)}},putApiV1AccountsPasswordChangeResendCode:{async onQueryStarted(e,{queryFulfilled:t}){await i(t)}},postApiV1AccountsPasswordChangeRequest:{async onQueryStarted(e,{queryFulfilled:t}){await i(t)}},putApiV1AccountsEmailChangeResendCode:{async onQueryStarted(e,{queryFulfilled:t}){await i(t)}},putApiV1AccountsResendEmailByHash:{async onQueryStarted(e,{queryFulfilled:t}){await i(t)}},postApiV1AccountsEmailChangeRequest:{async onQueryStarted(e,{queryFulfilled:t}){await i(t)}},postApiV1AccountsEmailChangeConfirm:{async onQueryStarted(e,{queryFulfilled:t}){await i(t)}},postApiV1AccountsConfirmEmail:{async onQueryStarted(e,{queryFulfilled:t}){await i(t)}},postApiV1AccountsCheckCaptcha:{async onQueryStarted(e,{queryFulfilled:t}){await i(t)}},postApiV1AccountsFinishCreating:{async onQueryStarted(e,{dispatch:t,queryFulfilled:s}){await L(t,s,(()=>{B.success("User registered successfully")}))}},postApiV1AccountsAuthenticateEmail:{invalidatesTags:["Secure"],async onQueryStarted(e,{dispatch:t,queryFulfilled:s}){await L(t,s)}},postApiV1AccountsSignup:{invalidatesTags:["Secure"]},postApiV1AccountsUserReselectUser:{async onQueryStarted({userId:e},{dispatch:t,queryFulfilled:s}){await L(t,s),e&&t(et({selectedUserId:e}))}}}}),st={[J.type]:e=>h().dispatch(te.endpoints.postApiV1AccountsUserReselectUser.initiate(e)),[U.type]:e=>S.setToken(e),[K.type]:()=>S.removeToken()},ee=e=>Object.keys(st).includes(e.type),ot=e=>ee(e)?st[e.type](e.payload):null,nt=({sendWhitelist:e,receiveWhitelist:t,onMessage:s})=>{const r=g((()=>{})),n=g((()=>{}));return w((o=>{o&&(r.current(),n.current(),r.current=V((t=>{ot(t),E({action:t,windowElement:o,whitelist:e})})),n.current=k({onMessage:e=>{s?s(e):h().dispatch(e)},whitelist:t}))}),[e,t,s,V])},O=[I,Rt,kt,P,J,U,K,X],T=[Y,Z,A,Et,tt,Ft,Ut,It,Ot,Tt,_t,et,Vt,Qt,Mt,Dt,$t,qt,Ht,Bt,Wt,jt,xt,Gt,zt,Jt,Kt,Xt,Yt,Zt];if(T.some((e=>O.some((t=>(null==t?void 0:t.toString())===(null==e?void 0:e.toString()))))))throw new Error("Output action is duplicated with input action");const se=()=>{const e=h().getState();return e.openapi&&(e.openapi=void 0),e.auth&&(e.auth={...e.auth,token:null}),e},Ne=e=>{const t=nt({sendWhitelist:T,receiveWhitelist:O,onMessage:e=>{ot(e)||h().dispatch(e)}}),s=w((()=>{var t;const s=A(se());E({action:s,windowElement:(null==(t=e.current)?void 0:t.contentWindow)??null,whitelist:[s]})}),[e]),r=w((()=>{var r;t((null==(r=e.current)?void 0:r.contentWindow)??null),s()}),[t,e,s]);p((()=>{const e=k({onMessage:e=>{e.type===P.type&&r()},whitelist:[P]});return()=>e()}),[r])},_=()=>{const e=W();return e.pathname+e.search},oe=({lastLocationPathRef:e})=>{const t=b(),s=_(),r=u(d.selectors.selectPath),n=u(d.selectors.selectTransitionPath);p((()=>{s!==e.current&&(e.current=s,s!==r&&s!==n&&t(I(s)))}),[r,n,s])},ne=({canShowMessage:e,message:t="Are you sure you want to leave?"})=>{const s=b(),r=u(d.selectors.selectPath),n=e=>(e.preventDefault(),e.returnValue=t,t);p((()=>(window.onbeforeunload=e?n:null,()=>{window.onbeforeunload=null})),[e,t]);const o=ut(e),a="blocked"===o.state;p((()=>{a&&(confirm(t)?(o.proceed(),s(X(null))):(o.reset(),s(I(r))))}),[a])},re=()=>{const e=b(),t=u(d.selectors.selectPath),s=_();return{setPath:({transitionPath:r})=>{r&&s===r&&t!==r&&e(tt(r))}}},ae=()=>{const e=j(),t=W(),s=b(),r=g(""),n=u(d.selectors.selectPath),o=u(d.selectors.selectTransitionPath),{setPath:a}=re(),{shouldBlock:i,message:l}=u(d.selectors.selectConfirmLeavePage)||{};ne({canShowMessage:!!i,message:l}),oe({lastLocationPathRef:r}),p((()=>{a({transitionPath:o})}),[t,n,o,s]),p((()=>{o&&o!==r.current&&(r.current=o,e(o,{replace:!1}))}),[o,e])},ce=$((()=>(ae(),null)));ce.displayName="HostRouteObserver";const ie=e=>{const t=g(e),[s,r]=q(null);return p((()=>{const e=k({onMessage:e=>{var s;if(e.type===A.type){const n=at(e.payload);r(n),null==(s=t.current)||s.call(t,n)}},whitelist:[A]}),s=P();return E({action:s,windowElement:window.parent,whitelist:[s]}),()=>e()}),[]),{store:s}},N={[Y.type]:()=>dt(),[Z.type]:()=>pt()},le=e=>Object.keys(N).includes(e.type),ue=e=>le(e)&&e.type in N?N[e.type]():null,{path:R,search:de}=Pt.init();R&&window.history.replaceState({},"",`${R}${de||""}`);const Re=()=>{const[e,t]=q(null),s=nt({sendWhitelist:O,receiveWhitelist:T,onMessage:e=>{ue(e)||h().dispatch(e)}}),r=w((e=>{t(e),s(window.parent)}),[s]);return ie(r),{store:e,path:R}},pe=()=>{const e=j(),t=g(""),s=_(),r=u(d.selectors.selectPath);p((()=>{r&&r!==t.current&&(t.current=r,s!==r&&e(r,{replace:!0}))}),[r,e,s])},ge=$((()=>(pe(),null)));ge.displayName="RemoteRouteObserver";export{ce as HostRouteObserver,ge as RemoteRouteObserver,ot as callHostApiAction,ue as callRemoteApiAction,k as listenMessage,se as prepareState,E as sendMessage,Pt as staticState,Ne as useHostStoreConnect,ie as usePreloadedStore,Re as useRemoteStoreConnect};
|