@5minds/processcube_app_sdk
Version:
The SDK for ProcessCube Apps
2 lines (1 loc) • 3.5 kB
JavaScript
var C=Object.create;var a=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var x=(s,e)=>{for(var r in e)a(s,r,{get:e[r],enumerable:!0})},f=(s,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of _(e))!D.call(s,n)&&n!==r&&a(s,n,{get:()=>e[n],enumerable:!(t=S(e,n))||t.enumerable});return s};var y=(s,e,r)=>(r=s!=null?C(w(s)):{},f(e||!s||!s.__esModule?a(r,"default",{value:s,enumerable:!0}):r,s)),I=s=>f(a({},"__esModule",{value:!0}),s);var b={};x(b,{RemoteUserTask:()=>R,authConfigJwtCallback:()=>g,authConfigSessionCallback:()=>U,hasClaim:()=>F,mapUserTask:()=>h,mapUserTaskList:()=>A});module.exports=I(b);var T=y(require("react"),1);function R(s){return T.default.createElement("div",{style:{width:"100%",height:"100%"}},T.default.createElement("iframe",{width:"100%",height:"100%",src:s.url}))}var u=require("jwt-decode"),d=require("next-auth"),m=require("next-auth/react"),p=require("@5minds/processcube_engine_sdk"),c=new p.Logger("processcube_app_sdk:next-auth_configuration"),k="No refresh token present. Your authority might be configured incorrectly. For more information see https://processcube.io/docs/app-sdk/samples/authority/authentication-with-nextauth";async function F(s){let e;return typeof window>"u"?e=(await(0,d.getServerSession)({callbacks:{jwt:g,session:U}}))?.user:e=(await(0,m.getSession)())?.user,!e||!e.claims?!1:e.claims[s]!=null}async function g(s){let{token:e,account:r,user:t}=s;r&&(e.accessToken=r.access_token,e.idToken=r.id_token,e.refreshToken=r.refresh_token,e.expiresAt=r.expires_at??Math.floor(Date.now()/1e3+r.expires_in)),t&&(e.user=t);let n=process.env.PROCESSCUBE_AUTHORITY_URL!=null&&process.env.NEXTAUTH_CLIENT_ID!=null&&process.env.NEXTAUTH_SECRET!=null;if(n||c.warn("In order for the Access Token to be automatically renewed, PROCESSCUBE_AUTHORITY_URL, NEXTAUTH_CLIENT_ID and NEXTAUTH_SECRET must be set as an environment variable"),e.refreshToken===void 0&&c.warn(k),n&&Date.now()>=e.expiresAt*1e3){if(e.refreshToken===void 0)return c.error("Error refreshing access token.",{err:k}),e.error="RefreshAccessTokenError",e;try{let i=await fetch(`${process.env.PROCESSCUBE_AUTHORITY_URL}/token`,{headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:process.env.NEXTAUTH_CLIENT_ID,client_secret:process.env.NEXTAUTH_SECRET,grant_type:"refresh_token",refresh_token:String(e.refreshToken)}),method:"POST"}),o=await i.json();if(!i.ok)throw o;e.accessToken=o.access_token,e.idToken=o.id_token,e.expiresAt=Math.floor(Date.now()/1e3+o.expires_in),e.refreshToken=o.refresh_token??e.refreshToken}catch(i){c.error("Error refreshing access token",{err:i}),e.error="RefreshAccessTokenError"}}return e}async function U(s){let{session:e,token:r}=s,t=l(r.accessToken),n=l(r.idToken),i=Object.keys(n),o=Object.fromEntries(Object.entries(t).filter(([E,v])=>!i.includes(E)));return e.user=r.user??{},e.user.claims=o,e.error=r.error,e}function l(s){return(0,u.jwtDecode)(s)}function h(s){let{userTaskConfig:e,userTaskConfigModel:r,...t}=s,n={},i={};return e.formFields.forEach(o=>n[o.id]=o),r.formFields.forEach(o=>i[o.id]=o),{...t,userTaskConfig:{...e,formFieldsDict:n},userTaskConfigModel:{...r,formFieldsDict:i}}}function A(s){return{totalCount:s.totalCount,userTasks:s.userTasks.map(h)}}0&&(module.exports={RemoteUserTask,authConfigJwtCallback,authConfigSessionCallback,hasClaim,mapUserTask,mapUserTaskList});