@kizenapps/cli 1.11.0 → 1.13.0-44aaefe

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.
Files changed (27) hide show
  1. package/dist/THIRD-PARTY-NOTICES.txt +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/viewer/assets/{AppDetailPage-D9xr-bY8.js → AppDetailPage-CsAJGeXG.js} +1 -1
  5. package/dist/viewer/assets/{CodeStepsPage-D_kTMpRO.js → CodeStepsPage-d5OMJi9J.js} +1 -1
  6. package/dist/viewer/assets/ConfigurationPage-CI0pRNJ0.js +1 -0
  7. package/dist/viewer/assets/{DevSidebar-zX-4CWYv.js → DevSidebar-BFsoIbMt.js} +1 -1
  8. package/dist/viewer/assets/{SandboxPage-DuCHX1FY.js → SandboxPage-Dyb8i7vf.js} +1 -1
  9. package/dist/viewer/assets/{SecretsPage-Da55-e_S.js → SecretsPage-g2FF7d-B.js} +1 -1
  10. package/dist/viewer/assets/{WhenBadge-B7s7fns2.js → WhenBadge-DKz8ukwo.js} +1 -1
  11. package/dist/viewer/assets/api--pW2v3sH.js +11 -0
  12. package/dist/viewer/assets/{bootstrapQuery-CyYWFe68.js → bootstrapQuery-DTAPKOf-.js} +1 -1
  13. package/dist/viewer/assets/{calendarSource.worker-CTgMuhqr.js → calendarSource.worker-DjLHW14n.js} +1 -1
  14. package/dist/viewer/assets/{floatingFrame.worker-zn66fKUA.js → floatingFrame.worker-Cy3ysIc7.js} +1 -1
  15. package/dist/viewer/assets/{generic.worker-gJPrf_ED.js → generic.worker-DKCeuXG7.js} +1 -1
  16. package/dist/viewer/assets/{index-BF1Fk_v0.js → index-BdpUrI71.js} +3 -3
  17. package/dist/viewer/assets/{recordDetail.worker-CGLG0Evq.js → recordDetail.worker-DrTKYLJc.js} +1 -1
  18. package/dist/viewer/assets/storageKeys-BDp-0diL.js +1 -0
  19. package/dist/viewer/assets/useCompleteSetup-QS3W9RRO.js +40 -0
  20. package/dist/viewer/assets/usePluginConfig--4sAyik4.js +1 -0
  21. package/dist/viewer/index.html +4 -4
  22. package/package.json +3 -3
  23. package/dist/viewer/assets/ConfigurationPage-5qOX-sx0.js +0 -1
  24. package/dist/viewer/assets/api--Ax6VWLq.js +0 -11
  25. package/dist/viewer/assets/storageKeys-DPq6kaaE.js +0 -1
  26. package/dist/viewer/assets/useCompleteSetup-DUHoBgca.js +0 -40
  27. package/dist/viewer/assets/usePluginConfig-C8d13THZ.js +0 -1
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{A as t,C as n,F as r,I as i,M as a,N as o,P as s,f as c,i as l,p as ee,x as u}from"./fa-core-BSqLAjHu.js";import{t as te}from"./useParams-D3awshYI.js";import{t as ne}from"./useQuery-JKMI40WO.js";import{n as d}from"./CredentialsContext-Cwl_xyt_.js";import{t as re}from"./bootstrapQuery-CyYWFe68.js";import{t as f}from"./Card-Sa52PGkn.js";import{t as p}from"./useLocalStorage-wp83IS34.js";var m=e(i(),1),h=`prod`,g=r();function _(e,t,n){return`secrets-pk::${e}::${t}::${n}`}function v(e,t,n){try{return localStorage.getItem(_(e,t,n))}catch{return null}}function ie(e,t,n,r){try{localStorage.setItem(_(e,t,n),r)}catch{}}var y=()=>{let{apiName:e}=te({from:`/$apiName/secrets`}),r=d(),{apiKey:i,userId:_,businessId:y,environment:b}=r,[x,S]=(0,m.useState)(h),[C,ae]=(0,m.useState)(!1),[w,oe]=p(`kizen-encryption-mode`,`local`),[T,E]=(0,m.useState)(null),[D,O]=(0,m.useState)(!1),[k,A]=(0,m.useState)(!1),[j,M]=(0,m.useState)(null),[se,N]=(0,m.useState)(!1),[P,ce]=(0,m.useState)(``),[F,I]=(0,m.useState)(null),[L,R]=(0,m.useState)(null),[z,B]=(0,m.useState)(!1),[V,H]=(0,m.useState)(!1),[U,W]=(0,m.useState)(``),[G,K]=(0,m.useState)(null),[q,J]=(0,m.useState)(!1),[le,Y]=(0,m.useState)(!1),ue=!!(i&&_&&y),{isError:de,isLoading:X}=ne(re(r));(0,m.useEffect)(()=>{let e=!1;return fetch(`/api/encryption-target`).then(e=>e.json()).then(t=>{!e&&(t.target===`dev`||t.target===`prod`)&&S(t.target)}).catch(()=>{}).finally(()=>{e||ae(!0)}),()=>{e=!0}},[]),(0,m.useEffect)(()=>{if(!C)return;let t=v(e,b,x);E(t),O(t!==null)},[e,b,x,C]);let Z=()=>{I(null),R(null)},fe=e=>{oe(e),Z()},pe=e=>{S(e),Z(),fetch(`/api/encryption-target`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({target:e})}).catch(()=>{})},Q=async()=>{A(!0),M(null),E(null);try{let t=await fetch(`/api/wizard/get-public-key`,{method:`POST`,headers:{"Content-Type":`application/json`,"x-api-key":i,"x-user-id":_,"x-business-id":y,"x-encryption-target":x,"x-auth-environment":b},body:JSON.stringify({api_name:e})}),n=await t.json();t.ok&&typeof n.public_key==`string`?(E(n.public_key),ie(e,b,x,n.public_key),O(!0)):M(typeof n.error==`string`?n.error:`Unexpected response (${String(t.status)})`)}catch(e){M(e.message)}finally{A(!1)}},$=async()=>{if(C&&!(!P.trim()||w===`local`&&!T)){B(!0),R(null),I(null);try{let t=w===`remote`?await fetch(`/api/wizard/encrypt`,{method:`POST`,headers:{"Content-Type":`application/json`,"x-api-key":i,"x-user-id":_,"x-business-id":y,"x-encryption-target":x,"x-auth-environment":b},body:JSON.stringify({api_name:e,value:P})}):await fetch(`/api/local/encrypt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({publicKeyPem:T,value:P})}),n=await t.json();t.ok&&n.encrypted===!0&&typeof n.value==`string`?I(JSON.stringify({encrypted:!0,value:n.value},null,2)):R(typeof n.error==`string`?n.error:`Unexpected response (${String(t.status)})`)}catch(e){R(e.message)}finally{B(!1)}}},me=()=>{let e=U.replace(/\s+/g,``);try{let t=JSON.parse(e);W(JSON.stringify(t,null,2))}catch{W(e)}Y(!1),K(null)},he=async()=>{if(!U.trim())return;J(!0),K(null);let e=U.trim();try{let t=JSON.parse(e);typeof t.value==`string`&&(e=t.value)}catch{}try{K(await(await fetch(`/api/local/validate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({value:e})})).json())}catch(e){K({valid:!1,checks:[],error:e.message})}finally{J(!1)}};return ue?X?(0,g.jsx)(f,{children:(0,g.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,g.jsx)(s,{icon:t,className:`animate-spin text-[20px] text-neutral-300`})})}):de?(0,g.jsx)(f,{children:(0,g.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-8 text-center`,children:[(0,g.jsx)(s,{icon:a,className:`text-[22px] text-amber-400`}),(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`p`,{className:`text-[13px] font-medium text-neutral-500`,children:`Authentication failed`}),(0,g.jsx)(`p`,{className:`mt-1 text-[12px] text-neutral-400`,children:`Your credentials were rejected. Please enter valid credentials and refresh.`})]})]})}):(0,g.jsxs)(f,{children:[(0,g.jsxs)(`div`,{className:`mb-5 flex items-end justify-between gap-4`,children:[(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`span`,{className:`block text-[12px] font-medium text-neutral-600`,children:`Encryption`}),(0,g.jsx)(`p`,{className:`mt-0.5 text-[11px] text-neutral-400`,children:`Where encryption runs, and which environment's keys secrets are encrypted against.`})]}),(0,g.jsxs)(`div`,{className:`flex shrink-0 items-end gap-3`,children:[(0,g.jsxs)(`div`,{role:`group`,"aria-label":`Encryption mode`,children:[(0,g.jsx)(`span`,{className:`mb-1 block text-[11px] font-medium text-neutral-500`,children:`Mode`}),(0,g.jsx)(`div`,{className:`flex overflow-hidden rounded-lg border border-black/10 text-[12px] font-medium`,children:[`local`,`remote`].map(e=>(0,g.jsx)(`button`,{type:`button`,"aria-pressed":w===e,onClick:()=>{fe(e)},className:`px-2.5 py-1.5 transition-colors ${w===e?`bg-neutral-700 text-white`:`bg-white text-neutral-500 hover:bg-neutral-100`}`,children:e===`local`?`Local`:`Remote`},e))})]}),(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`label`,{htmlFor:`enc-target`,className:`mb-1 block text-[11px] font-medium text-neutral-500`,children:`Keys`}),(0,g.jsxs)(`select`,{id:`enc-target`,value:x,onChange:e=>{pe(e.target.value)},className:`rounded-lg border border-black/10 bg-white px-2 py-1.5 text-[12px] text-neutral-700 outline-none focus:ring-2 focus:ring-blue-400`,children:[(0,g.jsx)(`option`,{value:`prod`,children:`Prod`}),(0,g.jsx)(`option`,{value:`dev`,children:`Dev`})]})]})]})]}),x===`dev`&&(0,g.jsxs)(`div`,{className:`mb-5 flex items-center gap-2 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2.5 text-[12px] text-amber-700`,children:[(0,g.jsx)(s,{icon:a,className:`shrink-0 text-[11px]`}),(0,g.jsxs)(`span`,{children:[(0,g.jsx)(`strong`,{className:`font-semibold`,children:`Dev keys selected.`}),` Be sure you know what you're doing — most apps use the production encryption service. Secrets encrypted with dev keys won't decrypt in production.`]})]}),(0,g.jsx)(`hr`,{className:`mb-6 border-black/8`}),w===`local`&&(0,g.jsxs)(g.Fragment,{children:[T!==null&&D?(0,g.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-black/8 bg-neutral-50 px-3 py-2.5`,children:[(0,g.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,g.jsx)(s,{icon:l,className:`text-[11px] text-green-600`}),(0,g.jsx)(`span`,{className:`text-[12px] font-medium text-neutral-700`,children:`Public key loaded`})]}),(0,g.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,g.jsx)(`button`,{type:`button`,onClick:()=>{O(!1)},className:`rounded px-2 py-0.5 text-[11px] font-medium text-blue-600 hover:bg-blue-50`,children:`Show`}),(0,g.jsx)(`span`,{className:`text-neutral-300`,children:`·`}),(0,g.jsxs)(`button`,{type:`button`,onClick:()=>{Q()},disabled:k,className:`flex items-center gap-1 rounded px-2 py-0.5 text-[11px] font-medium text-neutral-500 hover:bg-neutral-100 disabled:opacity-50`,children:[k&&(0,g.jsx)(s,{icon:t,className:`animate-spin text-[10px]`}),`Refresh`]})]})]}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsxs)(`div`,{className:`mb-5`,children:[(0,g.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,g.jsx)(`h2`,{className:`text-[15px] font-semibold text-neutral-900`,children:`Public Key`}),T!==null&&(0,g.jsx)(`button`,{type:`button`,onClick:()=>{O(!0)},className:`text-[11px] font-medium text-neutral-400 hover:text-neutral-600`,children:`Collapse`})]}),(0,g.jsxs)(`p`,{className:`mt-1 text-[12px] text-neutral-400`,children:[`Fetch the public key for`,` `,(0,g.jsx)(`code`,{className:`rounded bg-neutral-100 px-1 py-0.5 text-[11px]`,children:e}),`. Required for encryption below.`]})]}),(0,g.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`label`,{className:`mb-1 block text-[12px] font-medium text-neutral-600`,children:`Plugin`}),(0,g.jsx)(`div`,{className:`rounded-lg border border-black/10 bg-neutral-50 px-3 py-2 text-[13px] text-neutral-500`,children:e})]}),(0,g.jsxs)(`button`,{type:`button`,onClick:()=>{Q()},disabled:k,className:`flex items-center justify-center gap-2 rounded-lg bg-neutral-700 px-4 py-2 text-[13px] font-medium text-white hover:bg-neutral-800 active:bg-neutral-900 disabled:cursor-not-allowed disabled:opacity-50`,children:[k&&(0,g.jsx)(s,{icon:t,className:`animate-spin text-[12px]`}),k?`Fetching…`:T===null?`Get Public Key`:`Refresh Key`]}),j!==null&&(0,g.jsx)(`p`,{className:`rounded-lg border border-red-200 bg-red-50 px-3 py-2 text-[12px] text-red-600`,children:j}),T!==null&&(0,g.jsxs)(`div`,{children:[(0,g.jsxs)(`div`,{className:`mb-1 flex items-center justify-between`,children:[(0,g.jsx)(`label`,{className:`text-[12px] font-medium text-neutral-600`,children:`Public key (PEM)`}),(0,g.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,g.jsxs)(`button`,{type:`button`,onClick:()=>{T&&navigator.clipboard.writeText(T).then(()=>{N(!0),setTimeout(()=>{N(!1)},2e3)})},className:`flex items-center gap-1 rounded px-2 py-0.5 text-[11px] font-medium text-blue-600 hover:bg-blue-50`,children:[(0,g.jsx)(s,{icon:c,className:`text-[10px]`}),se?`Copied!`:`Copy`]}),(0,g.jsxs)(`button`,{type:`button`,onClick:()=>{if(!T)return;let t=new Blob([T],{type:`text/plain`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${e}-${b}-${x}-public-key.pem`,r.click(),URL.revokeObjectURL(n)},className:`flex items-center gap-1 rounded px-2 py-0.5 text-[11px] font-medium text-blue-600 hover:bg-blue-50`,children:[(0,g.jsx)(s,{icon:ee,className:`text-[10px]`}),`Download`]})]})]}),(0,g.jsx)(`textarea`,{readOnly:!0,value:T,rows:5,className:`w-full rounded-lg border border-black/10 bg-neutral-50 px-3 py-2 font-mono text-[11px] text-neutral-600 outline-none`})]})]})]}),(0,g.jsx)(`hr`,{className:`my-6 border-black/8`})]}),(0,g.jsxs)(`div`,{className:`mb-5`,children:[(0,g.jsx)(`h2`,{className:`text-[15px] font-semibold text-neutral-900`,children:`Encrypt a Secret`}),(0,g.jsxs)(`p`,{className:`mt-1 text-[12px] text-neutral-400`,children:[w===`remote`?`Encrypts a secret via the remote plugin-wizard API. `:`Encrypts a secret in-process using the public key. `,`Output is ready to paste into`,` `,(0,g.jsx)(`code`,{className:`rounded bg-neutral-100 px-1 py-0.5 text-[11px]`,children:`kizen.json`}),`.`]})]}),w===`local`&&T===null?(0,g.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2.5 text-[12px] text-amber-700`,children:[(0,g.jsx)(s,{icon:u,className:`shrink-0 text-[11px]`}),`Fetch the public key above first, or switch to Remote mode.`]}):(0,g.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`label`,{htmlFor:`secret-value`,className:`mb-1 block text-[12px] font-medium text-neutral-600`,children:`Secret value`}),(0,g.jsx)(`input`,{id:`secret-value`,type:`password`,value:P,onChange:e=>{ce(e.target.value)},onKeyDown:e=>{e.key===`Enter`&&$()},placeholder:`Enter the plaintext secret…`,className:`w-full rounded-lg border border-black/10 px-3 py-2 text-[13px] outline-none focus:ring-2 focus:ring-blue-400`})]}),(0,g.jsxs)(`button`,{type:`button`,onClick:()=>{$()},disabled:z||!P.trim()||!C,className:`flex items-center justify-center gap-2 rounded-lg bg-blue-600 px-4 py-2 text-[13px] font-medium text-white hover:bg-blue-700 active:bg-blue-800 disabled:cursor-not-allowed disabled:opacity-50`,children:[z&&(0,g.jsx)(s,{icon:t,className:`animate-spin text-[12px]`}),z?`Encrypting…`:`Encrypt`]}),L!==null&&(0,g.jsx)(`p`,{className:`rounded-lg border border-red-200 bg-red-50 px-3 py-2 text-[12px] text-red-600`,children:L}),F!==null&&(0,g.jsxs)(`div`,{children:[(0,g.jsxs)(`div`,{className:`mb-1 flex items-center justify-between`,children:[(0,g.jsx)(`label`,{className:`text-[12px] font-medium text-neutral-600`,children:`Encrypted envelope`}),(0,g.jsxs)(`button`,{type:`button`,onClick:()=>{F&&navigator.clipboard.writeText(F).then(()=>{H(!0),setTimeout(()=>{H(!1)},2e3)})},className:`flex items-center gap-1 rounded px-2 py-0.5 text-[11px] font-medium text-blue-600 hover:bg-blue-50`,children:[(0,g.jsx)(s,{icon:c,className:`text-[10px]`}),V?`Copied!`:`Copy`]})]}),(0,g.jsx)(`textarea`,{readOnly:!0,value:F,rows:5,className:`w-full rounded-lg border border-black/10 bg-neutral-50 px-3 py-2 font-mono text-[11px] text-neutral-600 outline-none`})]})]}),(0,g.jsx)(`hr`,{className:`my-6 border-black/8`}),(0,g.jsxs)(`div`,{className:`mb-5`,children:[(0,g.jsx)(`h2`,{className:`text-[15px] font-semibold text-neutral-900`,children:`Validate an Encrypted Value`}),(0,g.jsx)(`p`,{className:`mt-1 text-[12px] text-neutral-400`,children:`Paste an encrypted envelope to verify it is well-formed.`})]}),(0,g.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`label`,{htmlFor:`validate-input`,className:`mb-1 block text-[12px] font-medium text-neutral-600`,children:`Encrypted value`}),(0,g.jsx)(`textarea`,{id:`validate-input`,value:U,onChange:e=>{let t=e.target.value;W(t),K(null),Y(/[A-Za-z0-9+/=]{4,}\s+[A-Za-z0-9+/=]{4,}/.test(t))},placeholder:`Paste the { "encrypted": true, "value": "…" } JSON, or just the raw base64 value`,rows:4,className:`w-full rounded-lg border border-black/10 px-3 py-2 font-mono text-[11px] text-neutral-700 outline-none focus:ring-2 focus:ring-blue-400`})]}),le&&(0,g.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-[12px] text-amber-700`,children:[(0,g.jsx)(`span`,{children:`The pasted value contains whitespace inside the base64 string — a common copy-paste artifact from line-wrapped output.`}),(0,g.jsx)(`button`,{type:`button`,onClick:me,className:`shrink-0 rounded px-2 py-0.5 text-[11px] font-medium text-amber-800 underline hover:no-underline`,children:`Strip whitespace`})]}),(0,g.jsxs)(`button`,{type:`button`,onClick:()=>{he()},disabled:q||!U.trim(),className:`flex items-center justify-center gap-2 rounded-lg bg-neutral-700 px-4 py-2 text-[13px] font-medium text-white hover:bg-neutral-800 active:bg-neutral-900 disabled:cursor-not-allowed disabled:opacity-50`,children:[q&&(0,g.jsx)(s,{icon:t,className:`animate-spin text-[12px]`}),q?`Validating…`:`Validate`]}),G!==null&&(0,g.jsx)(`div`,{className:`rounded-lg border px-4 py-3 ${G.valid?`border-green-200 bg-green-50`:`border-red-200 bg-red-50`}`,children:G.error===void 0?(0,g.jsxs)(`div`,{className:`flex flex-col gap-2.5`,children:[(0,g.jsx)(`p`,{className:`text-[12px] font-semibold ${G.valid?`text-green-700`:`text-red-700`}`,children:G.valid?`All checks passed`:`Validation failed`}),(0,g.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:G.checks.map(e=>(0,g.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,g.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,g.jsx)(s,{icon:e.pass?l:o,className:`w-3 shrink-0 text-[10px] ${e.pass?`text-green-600`:`text-red-500`}`}),(0,g.jsx)(`span`,{className:`text-[11px] text-neutral-600`,children:e.label})]}),(0,g.jsx)(`span`,{className:`font-mono text-[11px] ${e.pass?`text-neutral-500`:`text-red-600`}`,children:e.actual})]},e.label))})]}):(0,g.jsx)(`p`,{className:`text-[12px] text-red-600`,children:G.error})})]})]}):(0,g.jsx)(f,{children:(0,g.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-8 text-center`,children:[(0,g.jsx)(s,{icon:n,className:`text-[22px] text-neutral-300`}),(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`p`,{className:`text-[13px] font-medium text-neutral-500`,children:`No credentials configured`}),(0,g.jsxs)(`p`,{className:`mt-1 text-[12px] text-neutral-400`,children:[`A credential profile with a valid API key, user ID, and business ID is required to use this page. Set one up in`,` `,(0,g.jsx)(`code`,{className:`rounded bg-neutral-100 px-1 py-0.5 text-[11px]`,children:`~/.kizenappbuilder/credentials.json`}),` `,`and restart the server.`]})]})]})})};export{y as SecretsPage};
1
+ import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{A as t,C as n,F as r,I as i,M as a,N as o,P as s,f as c,i as l,p as ee,x as u}from"./fa-core-BSqLAjHu.js";import{t as te}from"./useParams-D3awshYI.js";import{t as ne}from"./useQuery-JKMI40WO.js";import{n as d}from"./CredentialsContext-Cwl_xyt_.js";import{t as re}from"./bootstrapQuery-DTAPKOf-.js";import{t as f}from"./Card-Sa52PGkn.js";import{t as p}from"./useLocalStorage-wp83IS34.js";var m=e(i(),1),h=`prod`,g=r();function _(e,t,n){return`secrets-pk::${e}::${t}::${n}`}function v(e,t,n){try{return localStorage.getItem(_(e,t,n))}catch{return null}}function ie(e,t,n,r){try{localStorage.setItem(_(e,t,n),r)}catch{}}var y=()=>{let{apiName:e}=te({from:`/$apiName/secrets`}),r=d(),{apiKey:i,userId:_,businessId:y,environment:b}=r,[x,S]=(0,m.useState)(h),[C,ae]=(0,m.useState)(!1),[w,oe]=p(`kizen-encryption-mode`,`local`),[T,E]=(0,m.useState)(null),[D,O]=(0,m.useState)(!1),[k,A]=(0,m.useState)(!1),[j,M]=(0,m.useState)(null),[se,N]=(0,m.useState)(!1),[P,ce]=(0,m.useState)(``),[F,I]=(0,m.useState)(null),[L,R]=(0,m.useState)(null),[z,B]=(0,m.useState)(!1),[V,H]=(0,m.useState)(!1),[U,W]=(0,m.useState)(``),[G,K]=(0,m.useState)(null),[q,J]=(0,m.useState)(!1),[le,Y]=(0,m.useState)(!1),ue=!!(i&&_&&y),{isError:de,isLoading:X}=ne(re(r));(0,m.useEffect)(()=>{let e=!1;return fetch(`/api/encryption-target`).then(e=>e.json()).then(t=>{!e&&(t.target===`dev`||t.target===`prod`)&&S(t.target)}).catch(()=>{}).finally(()=>{e||ae(!0)}),()=>{e=!0}},[]),(0,m.useEffect)(()=>{if(!C)return;let t=v(e,b,x);E(t),O(t!==null)},[e,b,x,C]);let Z=()=>{I(null),R(null)},fe=e=>{oe(e),Z()},pe=e=>{S(e),Z(),fetch(`/api/encryption-target`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({target:e})}).catch(()=>{})},Q=async()=>{A(!0),M(null),E(null);try{let t=await fetch(`/api/wizard/get-public-key`,{method:`POST`,headers:{"Content-Type":`application/json`,"x-api-key":i,"x-user-id":_,"x-business-id":y,"x-encryption-target":x,"x-auth-environment":b},body:JSON.stringify({api_name:e})}),n=await t.json();t.ok&&typeof n.public_key==`string`?(E(n.public_key),ie(e,b,x,n.public_key),O(!0)):M(typeof n.error==`string`?n.error:`Unexpected response (${String(t.status)})`)}catch(e){M(e.message)}finally{A(!1)}},$=async()=>{if(C&&!(!P.trim()||w===`local`&&!T)){B(!0),R(null),I(null);try{let t=w===`remote`?await fetch(`/api/wizard/encrypt`,{method:`POST`,headers:{"Content-Type":`application/json`,"x-api-key":i,"x-user-id":_,"x-business-id":y,"x-encryption-target":x,"x-auth-environment":b},body:JSON.stringify({api_name:e,value:P})}):await fetch(`/api/local/encrypt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({publicKeyPem:T,value:P})}),n=await t.json();t.ok&&n.encrypted===!0&&typeof n.value==`string`?I(JSON.stringify({encrypted:!0,value:n.value},null,2)):R(typeof n.error==`string`?n.error:`Unexpected response (${String(t.status)})`)}catch(e){R(e.message)}finally{B(!1)}}},me=()=>{let e=U.replace(/\s+/g,``);try{let t=JSON.parse(e);W(JSON.stringify(t,null,2))}catch{W(e)}Y(!1),K(null)},he=async()=>{if(!U.trim())return;J(!0),K(null);let e=U.trim();try{let t=JSON.parse(e);typeof t.value==`string`&&(e=t.value)}catch{}try{K(await(await fetch(`/api/local/validate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({value:e})})).json())}catch(e){K({valid:!1,checks:[],error:e.message})}finally{J(!1)}};return ue?X?(0,g.jsx)(f,{children:(0,g.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,g.jsx)(s,{icon:t,className:`animate-spin text-[20px] text-neutral-300`})})}):de?(0,g.jsx)(f,{children:(0,g.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-8 text-center`,children:[(0,g.jsx)(s,{icon:a,className:`text-[22px] text-amber-400`}),(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`p`,{className:`text-[13px] font-medium text-neutral-500`,children:`Authentication failed`}),(0,g.jsx)(`p`,{className:`mt-1 text-[12px] text-neutral-400`,children:`Your credentials were rejected. Please enter valid credentials and refresh.`})]})]})}):(0,g.jsxs)(f,{children:[(0,g.jsxs)(`div`,{className:`mb-5 flex items-end justify-between gap-4`,children:[(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`span`,{className:`block text-[12px] font-medium text-neutral-600`,children:`Encryption`}),(0,g.jsx)(`p`,{className:`mt-0.5 text-[11px] text-neutral-400`,children:`Where encryption runs, and which environment's keys secrets are encrypted against.`})]}),(0,g.jsxs)(`div`,{className:`flex shrink-0 items-end gap-3`,children:[(0,g.jsxs)(`div`,{role:`group`,"aria-label":`Encryption mode`,children:[(0,g.jsx)(`span`,{className:`mb-1 block text-[11px] font-medium text-neutral-500`,children:`Mode`}),(0,g.jsx)(`div`,{className:`flex overflow-hidden rounded-lg border border-black/10 text-[12px] font-medium`,children:[`local`,`remote`].map(e=>(0,g.jsx)(`button`,{type:`button`,"aria-pressed":w===e,onClick:()=>{fe(e)},className:`px-2.5 py-1.5 transition-colors ${w===e?`bg-neutral-700 text-white`:`bg-white text-neutral-500 hover:bg-neutral-100`}`,children:e===`local`?`Local`:`Remote`},e))})]}),(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`label`,{htmlFor:`enc-target`,className:`mb-1 block text-[11px] font-medium text-neutral-500`,children:`Keys`}),(0,g.jsxs)(`select`,{id:`enc-target`,value:x,onChange:e=>{pe(e.target.value)},className:`rounded-lg border border-black/10 bg-white px-2 py-1.5 text-[12px] text-neutral-700 outline-none focus:ring-2 focus:ring-blue-400`,children:[(0,g.jsx)(`option`,{value:`prod`,children:`Prod`}),(0,g.jsx)(`option`,{value:`dev`,children:`Dev`})]})]})]})]}),x===`dev`&&(0,g.jsxs)(`div`,{className:`mb-5 flex items-center gap-2 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2.5 text-[12px] text-amber-700`,children:[(0,g.jsx)(s,{icon:a,className:`shrink-0 text-[11px]`}),(0,g.jsxs)(`span`,{children:[(0,g.jsx)(`strong`,{className:`font-semibold`,children:`Dev keys selected.`}),` Be sure you know what you're doing — most apps use the production encryption service. Secrets encrypted with dev keys won't decrypt in production.`]})]}),(0,g.jsx)(`hr`,{className:`mb-6 border-black/8`}),w===`local`&&(0,g.jsxs)(g.Fragment,{children:[T!==null&&D?(0,g.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-black/8 bg-neutral-50 px-3 py-2.5`,children:[(0,g.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,g.jsx)(s,{icon:l,className:`text-[11px] text-green-600`}),(0,g.jsx)(`span`,{className:`text-[12px] font-medium text-neutral-700`,children:`Public key loaded`})]}),(0,g.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,g.jsx)(`button`,{type:`button`,onClick:()=>{O(!1)},className:`rounded px-2 py-0.5 text-[11px] font-medium text-blue-600 hover:bg-blue-50`,children:`Show`}),(0,g.jsx)(`span`,{className:`text-neutral-300`,children:`·`}),(0,g.jsxs)(`button`,{type:`button`,onClick:()=>{Q()},disabled:k,className:`flex items-center gap-1 rounded px-2 py-0.5 text-[11px] font-medium text-neutral-500 hover:bg-neutral-100 disabled:opacity-50`,children:[k&&(0,g.jsx)(s,{icon:t,className:`animate-spin text-[10px]`}),`Refresh`]})]})]}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsxs)(`div`,{className:`mb-5`,children:[(0,g.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,g.jsx)(`h2`,{className:`text-[15px] font-semibold text-neutral-900`,children:`Public Key`}),T!==null&&(0,g.jsx)(`button`,{type:`button`,onClick:()=>{O(!0)},className:`text-[11px] font-medium text-neutral-400 hover:text-neutral-600`,children:`Collapse`})]}),(0,g.jsxs)(`p`,{className:`mt-1 text-[12px] text-neutral-400`,children:[`Fetch the public key for`,` `,(0,g.jsx)(`code`,{className:`rounded bg-neutral-100 px-1 py-0.5 text-[11px]`,children:e}),`. Required for encryption below.`]})]}),(0,g.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`label`,{className:`mb-1 block text-[12px] font-medium text-neutral-600`,children:`Plugin`}),(0,g.jsx)(`div`,{className:`rounded-lg border border-black/10 bg-neutral-50 px-3 py-2 text-[13px] text-neutral-500`,children:e})]}),(0,g.jsxs)(`button`,{type:`button`,onClick:()=>{Q()},disabled:k,className:`flex items-center justify-center gap-2 rounded-lg bg-neutral-700 px-4 py-2 text-[13px] font-medium text-white hover:bg-neutral-800 active:bg-neutral-900 disabled:cursor-not-allowed disabled:opacity-50`,children:[k&&(0,g.jsx)(s,{icon:t,className:`animate-spin text-[12px]`}),k?`Fetching…`:T===null?`Get Public Key`:`Refresh Key`]}),j!==null&&(0,g.jsx)(`p`,{className:`rounded-lg border border-red-200 bg-red-50 px-3 py-2 text-[12px] text-red-600`,children:j}),T!==null&&(0,g.jsxs)(`div`,{children:[(0,g.jsxs)(`div`,{className:`mb-1 flex items-center justify-between`,children:[(0,g.jsx)(`label`,{className:`text-[12px] font-medium text-neutral-600`,children:`Public key (PEM)`}),(0,g.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,g.jsxs)(`button`,{type:`button`,onClick:()=>{T&&navigator.clipboard.writeText(T).then(()=>{N(!0),setTimeout(()=>{N(!1)},2e3)})},className:`flex items-center gap-1 rounded px-2 py-0.5 text-[11px] font-medium text-blue-600 hover:bg-blue-50`,children:[(0,g.jsx)(s,{icon:c,className:`text-[10px]`}),se?`Copied!`:`Copy`]}),(0,g.jsxs)(`button`,{type:`button`,onClick:()=>{if(!T)return;let t=new Blob([T],{type:`text/plain`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${e}-${b}-${x}-public-key.pem`,r.click(),URL.revokeObjectURL(n)},className:`flex items-center gap-1 rounded px-2 py-0.5 text-[11px] font-medium text-blue-600 hover:bg-blue-50`,children:[(0,g.jsx)(s,{icon:ee,className:`text-[10px]`}),`Download`]})]})]}),(0,g.jsx)(`textarea`,{readOnly:!0,value:T,rows:5,className:`w-full rounded-lg border border-black/10 bg-neutral-50 px-3 py-2 font-mono text-[11px] text-neutral-600 outline-none`})]})]})]}),(0,g.jsx)(`hr`,{className:`my-6 border-black/8`})]}),(0,g.jsxs)(`div`,{className:`mb-5`,children:[(0,g.jsx)(`h2`,{className:`text-[15px] font-semibold text-neutral-900`,children:`Encrypt a Secret`}),(0,g.jsxs)(`p`,{className:`mt-1 text-[12px] text-neutral-400`,children:[w===`remote`?`Encrypts a secret via the remote plugin-wizard API. `:`Encrypts a secret in-process using the public key. `,`Output is ready to paste into`,` `,(0,g.jsx)(`code`,{className:`rounded bg-neutral-100 px-1 py-0.5 text-[11px]`,children:`kizen.json`}),`.`]})]}),w===`local`&&T===null?(0,g.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2.5 text-[12px] text-amber-700`,children:[(0,g.jsx)(s,{icon:u,className:`shrink-0 text-[11px]`}),`Fetch the public key above first, or switch to Remote mode.`]}):(0,g.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`label`,{htmlFor:`secret-value`,className:`mb-1 block text-[12px] font-medium text-neutral-600`,children:`Secret value`}),(0,g.jsx)(`input`,{id:`secret-value`,type:`password`,value:P,onChange:e=>{ce(e.target.value)},onKeyDown:e=>{e.key===`Enter`&&$()},placeholder:`Enter the plaintext secret…`,className:`w-full rounded-lg border border-black/10 px-3 py-2 text-[13px] outline-none focus:ring-2 focus:ring-blue-400`})]}),(0,g.jsxs)(`button`,{type:`button`,onClick:()=>{$()},disabled:z||!P.trim()||!C,className:`flex items-center justify-center gap-2 rounded-lg bg-blue-600 px-4 py-2 text-[13px] font-medium text-white hover:bg-blue-700 active:bg-blue-800 disabled:cursor-not-allowed disabled:opacity-50`,children:[z&&(0,g.jsx)(s,{icon:t,className:`animate-spin text-[12px]`}),z?`Encrypting…`:`Encrypt`]}),L!==null&&(0,g.jsx)(`p`,{className:`rounded-lg border border-red-200 bg-red-50 px-3 py-2 text-[12px] text-red-600`,children:L}),F!==null&&(0,g.jsxs)(`div`,{children:[(0,g.jsxs)(`div`,{className:`mb-1 flex items-center justify-between`,children:[(0,g.jsx)(`label`,{className:`text-[12px] font-medium text-neutral-600`,children:`Encrypted envelope`}),(0,g.jsxs)(`button`,{type:`button`,onClick:()=>{F&&navigator.clipboard.writeText(F).then(()=>{H(!0),setTimeout(()=>{H(!1)},2e3)})},className:`flex items-center gap-1 rounded px-2 py-0.5 text-[11px] font-medium text-blue-600 hover:bg-blue-50`,children:[(0,g.jsx)(s,{icon:c,className:`text-[10px]`}),V?`Copied!`:`Copy`]})]}),(0,g.jsx)(`textarea`,{readOnly:!0,value:F,rows:5,className:`w-full rounded-lg border border-black/10 bg-neutral-50 px-3 py-2 font-mono text-[11px] text-neutral-600 outline-none`})]})]}),(0,g.jsx)(`hr`,{className:`my-6 border-black/8`}),(0,g.jsxs)(`div`,{className:`mb-5`,children:[(0,g.jsx)(`h2`,{className:`text-[15px] font-semibold text-neutral-900`,children:`Validate an Encrypted Value`}),(0,g.jsx)(`p`,{className:`mt-1 text-[12px] text-neutral-400`,children:`Paste an encrypted envelope to verify it is well-formed.`})]}),(0,g.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`label`,{htmlFor:`validate-input`,className:`mb-1 block text-[12px] font-medium text-neutral-600`,children:`Encrypted value`}),(0,g.jsx)(`textarea`,{id:`validate-input`,value:U,onChange:e=>{let t=e.target.value;W(t),K(null),Y(/[A-Za-z0-9+/=]{4,}\s+[A-Za-z0-9+/=]{4,}/.test(t))},placeholder:`Paste the { "encrypted": true, "value": "…" } JSON, or just the raw base64 value`,rows:4,className:`w-full rounded-lg border border-black/10 px-3 py-2 font-mono text-[11px] text-neutral-700 outline-none focus:ring-2 focus:ring-blue-400`})]}),le&&(0,g.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-[12px] text-amber-700`,children:[(0,g.jsx)(`span`,{children:`The pasted value contains whitespace inside the base64 string — a common copy-paste artifact from line-wrapped output.`}),(0,g.jsx)(`button`,{type:`button`,onClick:me,className:`shrink-0 rounded px-2 py-0.5 text-[11px] font-medium text-amber-800 underline hover:no-underline`,children:`Strip whitespace`})]}),(0,g.jsxs)(`button`,{type:`button`,onClick:()=>{he()},disabled:q||!U.trim(),className:`flex items-center justify-center gap-2 rounded-lg bg-neutral-700 px-4 py-2 text-[13px] font-medium text-white hover:bg-neutral-800 active:bg-neutral-900 disabled:cursor-not-allowed disabled:opacity-50`,children:[q&&(0,g.jsx)(s,{icon:t,className:`animate-spin text-[12px]`}),q?`Validating…`:`Validate`]}),G!==null&&(0,g.jsx)(`div`,{className:`rounded-lg border px-4 py-3 ${G.valid?`border-green-200 bg-green-50`:`border-red-200 bg-red-50`}`,children:G.error===void 0?(0,g.jsxs)(`div`,{className:`flex flex-col gap-2.5`,children:[(0,g.jsx)(`p`,{className:`text-[12px] font-semibold ${G.valid?`text-green-700`:`text-red-700`}`,children:G.valid?`All checks passed`:`Validation failed`}),(0,g.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:G.checks.map(e=>(0,g.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,g.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,g.jsx)(s,{icon:e.pass?l:o,className:`w-3 shrink-0 text-[10px] ${e.pass?`text-green-600`:`text-red-500`}`}),(0,g.jsx)(`span`,{className:`text-[11px] text-neutral-600`,children:e.label})]}),(0,g.jsx)(`span`,{className:`font-mono text-[11px] ${e.pass?`text-neutral-500`:`text-red-600`}`,children:e.actual})]},e.label))})]}):(0,g.jsx)(`p`,{className:`text-[12px] text-red-600`,children:G.error})})]})]}):(0,g.jsx)(f,{children:(0,g.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-8 text-center`,children:[(0,g.jsx)(s,{icon:n,className:`text-[22px] text-neutral-300`}),(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`p`,{className:`text-[13px] font-medium text-neutral-500`,children:`No credentials configured`}),(0,g.jsxs)(`p`,{className:`mt-1 text-[12px] text-neutral-400`,children:[`A credential profile with a valid API key, user ID, and business ID is required to use this page. Set one up in`,` `,(0,g.jsx)(`code`,{className:`rounded bg-neutral-100 px-1 py-0.5 text-[11px]`,children:`~/.kizenappbuilder/credentials.json`}),` `,`and restart the server.`]})]})]})})};export{y as SecretsPage};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{F as t,I as n}from"./fa-core-BSqLAjHu.js";import{s as r}from"./api--Ax6VWLq.js";import{t as i}from"./Tooltip-JYkgiL8J.js";var a=e(n(),1),o=(e,t)=>{let[n,i]=(0,a.useState)(null);return(0,a.useEffect)(()=>{if(!e){i(null);return}let n=!1;return r(e,t).then(e=>{n||i(e)}).catch(()=>{n||i(null)}),()=>{n=!0}},[e,t]),n},s=t(),c=({when:e,whenState:t})=>{let n=o(e,t);return n===null?null:(0,s.jsx)(i,{text:e,children:(0,s.jsxs)(`span`,{className:`font-mono text-[10px] ${n?`text-green-600`:`text-amber-600`}`,children:[n?`enabled`:`disabled`,` by condition`]})})};export{o as n,c as t};
1
+ import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{F as t,I as n}from"./fa-core-BSqLAjHu.js";import{l as r}from"./api--pW2v3sH.js";import{t as i}from"./Tooltip-JYkgiL8J.js";var a=e(n(),1),o=(e,t)=>{let[n,i]=(0,a.useState)(null);return(0,a.useEffect)(()=>{if(!e){i(null);return}let n=!1;return r(e,t).then(e=>{n||i(e)}).catch(()=>{n||i(null)}),()=>{n=!0}},[e,t]),n},s=t(),c=({when:e,whenState:t})=>{let n=o(e,t);return n===null?null:(0,s.jsx)(i,{text:e,children:(0,s.jsxs)(`span`,{className:`font-mono text-[10px] ${n?`text-green-600`:`text-amber-600`}`,children:[n?`enabled`:`disabled`,` by condition`]})})};export{o as n,c as t};
@@ -0,0 +1,11 @@
1
+ import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{I as t}from"./fa-core-BSqLAjHu.js";import{n}from"./CredentialsContext-Cwl_xyt_.js";var r=e(t(),1),i=new Set([`get`,`delete`,`head`]),a=class extends Error{code;request;response;__isMock=!0;constructor({code:e,request:t,response:n}){super(`Request failed with status ${String(e)}`),this.code=e,this.request=t,this.response=n}},o=e=>typeof e==`object`&&!!e&&`__isMock`in e,s=async(e,t,n,r,i)=>{let o=r!=null,s=r instanceof FormData||r instanceof Blob,c=o&&!s?{"Content-Type":`application/json`,...i?.headers}:i?.headers,l=await e(n,{method:t,...o&&{body:s?r:JSON.stringify(r)},...c&&{headers:c}});if(!l.ok)throw new a({code:l.status,request:{method:t.toUpperCase(),url:n,body:r,headers:c},response:{data:{error:`Request failed with status ${String(l.status)}`},status:l.status}});return l.status===204||l.headers.get(`content-length`)===`0`?{}:await l.json()};function c(e){return{get:(t,n)=>s(e,`GET`,t,void 0,n),delete:(t,n)=>s(e,`DELETE`,t,void 0,n),head:(t,n)=>s(e,`HEAD`,t,void 0,n),post:(t,n,r)=>s(e,`POST`,t,n,r),put:(t,n,r)=>s(e,`PUT`,t,n,r),patch:(t,n,r)=>s(e,`PATCH`,t,n,r),request:(t,n,r,a)=>{let o=t.toLowerCase(),c=i.has(o)?r:a,l=i.has(o)?void 0:r;return s(e,t.toUpperCase(),n,l,c)}}}var l={QUERY_REQUEST:`query:request`,UI_OUTPUT:`outputui`,IFRAME_OUTPUT:`iframeoutput`,POSTFORMDATA_REQUEST:`postformdata:request`,SETSTATE:`setstate`,DONE:`done`,RUN:`run`,OPEN_WINDOW:`openwindow`,COMMUNICATE:`communicate`,HIDE:`hide`,SHOW:`show`,EXPAND:`expand`,COLLAPSE:`collapse`,HIDE_HEADER:`hideheader`,SHOW_HEADER:`showheader`,OPEN_CREATE_RECORD_MODAL_REQUEST:`opencreaterecordmodal:request`,OPEN_CREATE_RELATED_RECORD_MODAL_REQUEST:`opencreaterelatedrecordmodal:request`,SHOW_TOAST:`showtoast`,CLEAR_TOASTS:`cleartoasts`,REFRESH_TIMELINE:`refreshtimeline`,REFRESH_ENTITY:`refreshentity`,UPLOADFILE_REQUEST:`uploadfile:request`,UPDATE_SESSION_DATA:`updatesessiondata`,INSTALL_THIRD_PARTY_SCRIPT_REQUEST:`installthirdpartyscript:request`,PROMPT_REQUEST:`prompt:request`,DYNAMIC_PROMPT_REQUEST:`dynamicprompt:request`,RELEASE_BLOCKING_SCRIPT:`releaseblockingscript`,AUTHORIZE:`authorize`,COPY_TO_CLIPBOARD:`copytoclipboard`,SHOW_VIEW_IN_MODAL_REQUEST:`showviewinmodal:request`,CLOSE_MODAL_REQUEST:`closemodal:request`,CONSOLE_LOG:`consolelog`,RUN_EVENT_SCRIPT:`runeventscript`,COMPLETE_SETUP_REQUEST:`completesetup:request`},u={QUERY_RESPONSE:`query:response`,POSTFORMDATA_RESPONSE:`postformdata:response`,ERROR:`error`,UPLOADFILE_RESPONSE:`uploadfile:response`,UPLOADFILE_PROGRESS:`uploadfile:progress`,INSTALL_THIRD_PARTY_SCRIPT_RESPONSE:`installthirdpartyscript:response`,PROMPT_RESPONSE:`prompt:response`,REFRESH_ENTITY_RESPONSE:`refreshentity:response`,CREATE_RECORD_RESPONSE:`createrecord:response`,CREATE_RELATED_RECORD_RESPONSE:`createrelatedrecord:response`,COMPLETE_SETUP_RESPONSE:`completesetup:response`},d={RUN_FRAME_SCRIPT:`runframescript`,RUN_BLOCK_SCRIPT:`runblockscript`,SEND_MESSAGE_TO_FRAME:`sendmessagetoframe`,CALL_THIRD_PARTY_SCRIPT:`callthirdpartyscript`},f=`integration:route-change`,p=`kizen-route-change`,m=`kzn-integration-frame`,h=[`__plugin_engine`,`1.10.0`],g={CALENDAR_SOURCE_CALENDAR_LIST:(e,t)=>[...h,`calendar-source`,`calendar-list`,e,t],CALENDAR_SOURCE_EVENTS:(e,t,n,r)=>[...h,`calendar-source`,`events`,e,t,n,r]},_=/https:\/\/.*widget\.freshworks\.com\/.*\.js/,v=/https:\/\/widget\.intercom\.io\/widget\/[a-z0-9]+/,y={FRESHWORKS:`freshworks`,INTERCOM:`intercom`},b=e=>{if(_.test(e))return y.FRESHWORKS;if(v.test(e))return y.INTERCOM},x={[y.FRESHWORKS]:`FreshworksWidget`,[y.INTERCOM]:`Intercom`},S={[y.FRESHWORKS]:e=>{window.fwSettings={widget_id:e.widgetId},(function(...e){if(typeof window[x[y.FRESHWORKS]]!=`function`){let t=function(){t.q.push(...e)};t.__kizen_pending=!0,t.q=[],window[x[y.FRESHWORKS]]=t}})()},[y.INTERCOM]:()=>{(function(){if(typeof window[x[y.INTERCOM]]!=`function`){let e=window,t=function(){t.c(arguments)};t.q=[],t.c=function(e){t.q.push(e)},t.__kizen_pending=!0,e[x[y.INTERCOM]]=t}})()}},C={[y.FRESHWORKS]:()=>window[x[y.FRESHWORKS]]?.__kizen_pending!==!0,[y.INTERCOM]:()=>window[x[y.INTERCOM]]?.__kizen_pending!==!0},w=()=>({host:window.location.host,hash:window.location.hash,href:window.location.href,origin:window.location.origin,pathname:window.location.pathname,search:window.location.search,port:window.location.port,protocol:window.location.protocol}),T=()=>{let e=new Date().getTime();return typeof performance<`u`&&typeof performance.now==`function`&&(e+=performance.now()),`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g,t=>{let n=(e+Math.random()*16)%16|0;return e=Math.floor(e/16),(t===`x`?n:n&3|8).toString(16)})};Object.getPrototypeOf(async function(){}).constructor;var ee=e=>`${e?.plugin_api_name??``}-${e?.id??``}-${e?.api_name??``}-${e?.script_id??``}`,te=e=>typeof e==`object`&&!!e&&`__kzConsole`in e,ne=/^\/(.*)\/([dgimsuvy]*)$/,E=e=>{try{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(E);if(te(e))switch(e.__kzConsole){case`undefined`:return;case`bigint`:try{return BigInt(e.value)}catch{return e.value}case`symbol`:return e.value;case`function`:return`[Function: ${e.name}]`;case`error`:{let t=Error(e.message);return t.name=e.name,e.stack&&(t.stack=e.stack),t}case`date`:return new Date(e.value);case`regexp`:{let t=ne.exec(e.value);if(!t)return e.value;try{return new RegExp(t[1]??``,t[2])}catch{return e.value}}case`circular`:return`[Circular]`;case`unserializable`:return`[Unserializable: ${e.reason}]`}let t={};for(let[n,r]of Object.entries(e))t[n]=E(r);return t}catch{return`[Unserializable]`}},D=class e extends Error{proxyStatus;upstreamStatus;upstreamResponse;constructor(t,n,r,i){super(i??r?.error?.message??(n?`Request failed with status code ${String(n)}`:`Request failed with proxy status code ${String(t)}`)),this.name=`KizenRequestError`,this.proxyStatus=t,this.upstreamStatus=n,this.upstreamResponse=r,Object.setPrototypeOf(this,e.prototype)}},O=`__kizen__action__`,k=`__kizen__actionmenu__`,re=e=>`${O}${e}`,ie=e=>`${k}${e}`,ae=(e,t)=>`${ie(e)}_${t}`,A=e=>e.startsWith(k),j=e=>e.startsWith(O),oe=e=>{if(!A(e))return{actionApiName:``,objectId:``};let t=e.slice(k.length),n=t.lastIndexOf(`_`);return n===-1?{actionApiName:``,objectId:``}:{actionApiName:t.slice(0,n),objectId:t.slice(n+1)}},M=e=>({key:re(e.api_name),type:`custom_object`,label:e.name,allow_multiple:!0}),N=[`description`,`container`,`qr`,`image`,`link`],P=(e,t)=>{let n=(e.fields??[]).filter(e=>!N.includes(e.type)).map(e=>({...e,when:t?`(${t}) && (${e.when??`true`})`:e.when})),r=(e.fields??[]).filter(e=>e.type===`container`).flatMap(e=>P(e,e.when)),i=e.actions?.filter(e=>e.hint_object_name)??[];return[...n,...r,...i.map(e=>({...M(e),match_hint:e.hint_object_name??``}))]},se=(e,t)=>{let n=P(e).reduce((e,t)=>({...e,[t.key]:t}),{}),r=Object.keys(t),i={};return r.forEach(e=>{let r=t[e],a=n[e];if(a?.type){switch(a.type){case`boolean`:let t=r;if(!t)return;i[e]=t.value;return;case`custom_object`:{let t=r;if(!t)return;i[e]={objectId:t.value?.id,objectName:t.value?.objectName};return}case`field`:{let t=r;if(!t?.value)return;Array.isArray(t.value)?i[e]=t.value.map(e=>({fieldId:e.value,fieldName:e.label,objectId:t.associatedObject?.id,objectName:t.associatedObject?.name})):typeof t.value==`object`&&typeof t.associatedObject==`object`&&(i[e]={fieldId:t.value.value,fieldName:t.value.label,objectId:t.associatedObject.id,objectName:t.associatedObject.name});return}case`number`:{let t=r;if(!t)return;try{let n=Number(t.value);if(!n&&n!==0)return;i[e]=n}catch{i[e]=NaN}return}case`select`:{let t=r;if(!t)return;i[e]=t.value;return}case`radio`:{let t=r;if(!t?.value)return;i[e]=t.value;return}case`text`:{let t=r?.value;if(t){i[e]=t;return}let n=a.default;n&&(i[e]=n);return}case`description`:case`container`:case`qr`:case`image`:case`link`:case`api_key`:return}return r?.value}}),i},F=`plugin-assets.kizen.dev`,I=`plugin-assets.kizen.com`,ce=[F,I],L=``,le=L!==``,ue=e=>le&&e===L||ce.some(t=>e===`https://${t}`),de=e=>{try{return ue(new URL(e).origin)}catch{return!1}},fe=e=>{let t=e.data;if(!ue(e.origin))return{handled:!0,data:t};let n=t;return typeof t!=`object`||!t||n.event!==`message`?{handled:!1}:{handled:!0,data:n.data}},R=[`microphone`,`speaker-selection`,`autoplay`,`camera`,`display-capture`,`hid`],pe=[`allow-popups`,`allow-scripts`,`allow-same-origin`],z={useDevMode:!1,__dangerouslySkipProxy:!1},me=(e,t=z,n=``)=>{let{useDevMode:r,__dangerouslySkipProxy:i}=t,a=``;if(i)a=e;else try{a=ue(new URL(e).origin)?e:`${le?L:`https://${r?F:I}`}?url=${encodeURIComponent(e)}&allow=${encodeURIComponent(n)}`}catch(t){console.warn(`Failed to parse URL: ${e}. Apps should not attempt to display invalid URLs. Error: ${t.message}`),a=``}let o=de(a);return{url:a,isUsingProxy:o}},he=e=>e.filter(e=>R.some(t=>e.startsWith(t))),ge=e=>e.filter(e=>pe.includes(e)),_e=()=>R.map(e=>`${e} *`).join(`; `),ve=Object.create,ye=Object.defineProperty,be=Object.getOwnPropertyDescriptor,xe=Object.getOwnPropertyNames,Se=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty,B=(e,t)=>function(){return t||(0,e[xe(e)[0]])((t={exports:{}}).exports,t),t.exports},V=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of xe(t))!Ce.call(e,i)&&i!==n&&ye(e,i,{get:()=>t[i],enumerable:!(r=be(t,i))||r.enumerable});return e},we=(e,t,n)=>(n=e==null?{}:ve(Se(e)),V(t||!e||!e.__esModule?ye(n,`default`,{value:e,enumerable:!0}):n,e));function Te(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Ee(e){if(Array.isArray(e))return e}function De(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function Oe(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
2
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ke(e,t){return Ee(e)||De(e,t)||Ae(e,t)||Oe()}function Ae(e,t){if(e){if(typeof e==`string`)return Te(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Te(e,t):void 0}}var je=Object.entries,H=Object.setPrototypeOf,Me=Object.isFrozen,Ne=Object.getPrototypeOf,Pe=Object.getOwnPropertyDescriptor,U=Object.freeze,W=Object.seal,Fe=Object.create,Ie=typeof Reflect<`u`&&Reflect,Le=Ie.apply,Re=Ie.construct;U||=function(e){return e},W||=function(e){return e},Le||=function(e,t){var n=[...arguments].slice(2);return e.apply(t,n)},Re||=function(e){return new e(...[...arguments].slice(1))};var ze=X(Array.prototype.forEach),Be=X(Array.prototype.lastIndexOf),Ve=X(Array.prototype.pop),He=X(Array.prototype.push),Ue=X(Array.prototype.splice),G=Array.isArray,We=X(String.prototype.toLowerCase),Ge=X(String.prototype.toString),Ke=X(String.prototype.match),qe=X(String.prototype.replace),Je=X(String.prototype.indexOf),Ye=X(String.prototype.trim),Xe=X(Number.prototype.toString),Ze=X(Boolean.prototype.toString),K=typeof BigInt>`u`?null:X(BigInt.prototype.toString),q=typeof Symbol>`u`?null:X(Symbol.prototype.toString),J=X(Object.prototype.hasOwnProperty),Qe=X(Object.prototype.toString),Y=X(RegExp.prototype.test),$e=et(TypeError);function X(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return Le(e,t,n)}}function et(e){return function(){return Re(e,[...arguments])}}function Z(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:We;if(H&&H(e,null),!G(t))return e;let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(Me(t)||(t[r]=e),i=e)}e[i]=!0}return e}function tt(e){for(let t=0;t<e.length;t++)J(e,t)||(e[t]=null);return e}function Q(e){let t=Fe(null);for(let r of je(e)){var n=ke(r,2);let i=n[0],a=n[1];J(e,i)&&(G(a)?t[i]=tt(a):a&&typeof a==`object`&&a.constructor===Object?t[i]=Q(a):t[i]=a)}return t}function nt(e){switch(typeof e){case`string`:return e;case`number`:return Xe(e);case`boolean`:return Ze(e);case`bigint`:return K?K(e):`0`;case`symbol`:return q?q(e):`Symbol()`;case`undefined`:return Qe(e);case`function`:case`object`:{if(e===null)return Qe(e);let t=e,n=rt(t,`toString`);if(typeof n==`function`){let e=n(t);return typeof e==`string`?e:Qe(e)}return Qe(e)}default:return Qe(e)}}function rt(e,t){for(;e!==null;){let n=Pe(e,t);if(n){if(n.get)return X(n.get);if(typeof n.value==`function`)return X(n.value)}e=Ne(e)}function n(){return null}return n}function it(e){try{return Y(e,``),!0}catch{return!1}}var at=U(`a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),ot=U(`svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),st=U([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),ct=U([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),lt=U(`math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),ut=U([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),dt=U([`#text`]),ft=U(`accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns`.split(`.`)),pt=U(`accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-rendering.textlength.type.u1.u2.unicode.values.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),mt=U(`accent.accentunder.align.bevelled.close.columnalign.columnlines.columnspacing.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lquote.lspace.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),ht=U([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),gt=W(/{{[\w\W]*|^[\w\W]*}}/g),_t=W(/<%[\w\W]*|^[\w\W]*%>/g),vt=W(/\${[\w\W]*/g),yt=W(/^data-[\-\w.\u00B7-\uFFFF]+$/),bt=W(/^aria-[\-\w]+$/),xt=W(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),St=W(/^(?:\w+script|data):/i),Ct=W(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),wt=W(/^html$/i),Tt=W(/^[a-z][.\w]*(-[.\w]+)+$/i),Et={element:1,text:3,progressingInstruction:7,comment:8,document:9},Dt=function(){return typeof window>`u`?null:window},Ot=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},kt=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function At(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Dt(),t=e=>At(e);if(t.version=`3.4.3`,t.removed=[],!e||!e.document||e.document.nodeType!==Et.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,i=r.currentScript,a=e.DocumentFragment,o=e.HTMLTemplateElement,s=e.Node,c=e.Element,l=e.NodeFilter,u=e.NamedNodeMap,d=u===void 0?e.NamedNodeMap||e.MozNamedAttrMap:u,f=e.HTMLFormElement,p=e.DOMParser,m=e.trustedTypes,h=c.prototype,g=rt(h,`cloneNode`),_=rt(h,`remove`),v=rt(h,`nextSibling`),y=rt(h,`childNodes`),b=rt(h,`parentNode`);if(typeof o==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let x,S=``,C=n,w=C.implementation,T=C.createNodeIterator,ee=C.createDocumentFragment,te=C.getElementsByTagName,ne=r.importNode,E=kt();t.isSupported=typeof je==`function`&&typeof b==`function`&&w&&w.createHTMLDocument!==void 0;let D=gt,O=_t,k=vt,re=yt,ie=bt,ae=St,A=Ct,j=Tt,oe=xt,M=null,N=Z({},[...at,...ot,...st,...lt,...dt]),P=null,se=Z({},[...ft,...pt,...mt,...ht]),F=Object.seal(Fe(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),I=null,ce=null,L=Object.seal(Fe(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),le=!0,ue=!0,de=!1,fe=!0,R=!1,pe=!0,z=!1,me=!1,he=!1,ge=!1,_e=!1,ve=!1,ye=!0,be=!1,xe=`user-content-`,Se=!0,Ce=!1,B={},V=null,we=Z({},[`annotation-xml`,`audio`,`colgroup`,`desc`,`foreignobject`,`head`,`iframe`,`math`,`mi`,`mn`,`mo`,`ms`,`mtext`,`noembed`,`noframes`,`noscript`,`plaintext`,`script`,`style`,`svg`,`template`,`thead`,`title`,`video`,`xmp`]),Te=null,Ee=Z({},[`audio`,`video`,`img`,`source`,`image`,`track`]),De=null,Oe=Z({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),ke=`http://www.w3.org/1998/Math/MathML`,Ae=`http://www.w3.org/2000/svg`,H=`http://www.w3.org/1999/xhtml`,Me=H,Ne=!1,Pe=null,W=Z({},[ke,Ae,H],Ge),Ie=Z({},[`mi`,`mo`,`mn`,`ms`,`mtext`]),Le=Z({},[`annotation-xml`]),Re=Z({},[`title`,`style`,`font`,`a`,`script`]),Xe=null,Ze=[`application/xhtml+xml`,`text/html`],K=null,q=null,Qe=n.createElement(`form`),X=function(e){return e instanceof RegExp||e instanceof Function},et=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(q&&q===e)return;(!e||typeof e!=`object`)&&(e={}),e=Q(e),Xe=Ze.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,K=Xe===`application/xhtml+xml`?Ge:We,M=J(e,`ALLOWED_TAGS`)&&G(e.ALLOWED_TAGS)?Z({},e.ALLOWED_TAGS,K):N,P=J(e,`ALLOWED_ATTR`)&&G(e.ALLOWED_ATTR)?Z({},e.ALLOWED_ATTR,K):se,Pe=J(e,`ALLOWED_NAMESPACES`)&&G(e.ALLOWED_NAMESPACES)?Z({},e.ALLOWED_NAMESPACES,Ge):W,De=J(e,`ADD_URI_SAFE_ATTR`)&&G(e.ADD_URI_SAFE_ATTR)?Z(Q(Oe),e.ADD_URI_SAFE_ATTR,K):Oe,Te=J(e,`ADD_DATA_URI_TAGS`)&&G(e.ADD_DATA_URI_TAGS)?Z(Q(Ee),e.ADD_DATA_URI_TAGS,K):Ee,V=J(e,`FORBID_CONTENTS`)&&G(e.FORBID_CONTENTS)?Z({},e.FORBID_CONTENTS,K):we,I=J(e,`FORBID_TAGS`)&&G(e.FORBID_TAGS)?Z({},e.FORBID_TAGS,K):Q({}),ce=J(e,`FORBID_ATTR`)&&G(e.FORBID_ATTR)?Z({},e.FORBID_ATTR,K):Q({}),B=J(e,`USE_PROFILES`)?e.USE_PROFILES&&typeof e.USE_PROFILES==`object`?Q(e.USE_PROFILES):e.USE_PROFILES:!1,le=e.ALLOW_ARIA_ATTR!==!1,ue=e.ALLOW_DATA_ATTR!==!1,de=e.ALLOW_UNKNOWN_PROTOCOLS||!1,fe=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,R=e.SAFE_FOR_TEMPLATES||!1,pe=e.SAFE_FOR_XML!==!1,z=e.WHOLE_DOCUMENT||!1,ge=e.RETURN_DOM||!1,_e=e.RETURN_DOM_FRAGMENT||!1,ve=e.RETURN_TRUSTED_TYPE||!1,he=e.FORCE_BODY||!1,ye=e.SANITIZE_DOM!==!1,be=e.SANITIZE_NAMED_PROPS||!1,Se=e.KEEP_CONTENT!==!1,Ce=e.IN_PLACE||!1,oe=it(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:xt,Me=typeof e.NAMESPACE==`string`?e.NAMESPACE:H,Ie=J(e,`MATHML_TEXT_INTEGRATION_POINTS`)&&e.MATHML_TEXT_INTEGRATION_POINTS&&typeof e.MATHML_TEXT_INTEGRATION_POINTS==`object`?Q(e.MATHML_TEXT_INTEGRATION_POINTS):Z({},[`mi`,`mo`,`mn`,`ms`,`mtext`]),Le=J(e,`HTML_INTEGRATION_POINTS`)&&e.HTML_INTEGRATION_POINTS&&typeof e.HTML_INTEGRATION_POINTS==`object`?Q(e.HTML_INTEGRATION_POINTS):Z({},[`annotation-xml`]);let t=J(e,`CUSTOM_ELEMENT_HANDLING`)&&e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING==`object`?Q(e.CUSTOM_ELEMENT_HANDLING):Fe(null);if(F=Fe(null),J(t,`tagNameCheck`)&&X(t.tagNameCheck)&&(F.tagNameCheck=t.tagNameCheck),J(t,`attributeNameCheck`)&&X(t.attributeNameCheck)&&(F.attributeNameCheck=t.attributeNameCheck),J(t,`allowCustomizedBuiltInElements`)&&typeof t.allowCustomizedBuiltInElements==`boolean`&&(F.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),R&&(ue=!1),_e&&(ge=!0),B&&(M=Z({},dt),P=Fe(null),B.html===!0&&(Z(M,at),Z(P,ft)),B.svg===!0&&(Z(M,ot),Z(P,pt),Z(P,ht)),B.svgFilters===!0&&(Z(M,st),Z(P,pt),Z(P,ht)),B.mathMl===!0&&(Z(M,lt),Z(P,mt),Z(P,ht))),L.tagCheck=null,L.attributeCheck=null,J(e,`ADD_TAGS`)&&(typeof e.ADD_TAGS==`function`?L.tagCheck=e.ADD_TAGS:G(e.ADD_TAGS)&&(M===N&&(M=Q(M)),Z(M,e.ADD_TAGS,K))),J(e,`ADD_ATTR`)&&(typeof e.ADD_ATTR==`function`?L.attributeCheck=e.ADD_ATTR:G(e.ADD_ATTR)&&(P===se&&(P=Q(P)),Z(P,e.ADD_ATTR,K))),J(e,`ADD_URI_SAFE_ATTR`)&&G(e.ADD_URI_SAFE_ATTR)&&Z(De,e.ADD_URI_SAFE_ATTR,K),J(e,`FORBID_CONTENTS`)&&G(e.FORBID_CONTENTS)&&(V===we&&(V=Q(V)),Z(V,e.FORBID_CONTENTS,K)),J(e,`ADD_FORBID_CONTENTS`)&&G(e.ADD_FORBID_CONTENTS)&&(V===we&&(V=Q(V)),Z(V,e.ADD_FORBID_CONTENTS,K)),Se&&(M[`#text`]=!0),z&&Z(M,[`html`,`head`,`body`]),M.table&&(Z(M,[`tbody`]),delete I.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw $e(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw $e(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);x=e.TRUSTED_TYPES_POLICY,S=x.createHTML(``)}else x===void 0&&(x=Ot(m,i)),x!==null&&typeof S==`string`&&(S=x.createHTML(``));U&&U(e),q=e},tt=Z({},[...ot,...st,...ct]),jt=Z({},[...lt,...ut]),Mt=function(e){let t=b(e);(!t||!t.tagName)&&(t={namespaceURI:Me,tagName:`template`});let n=We(e.tagName),r=We(t.tagName);return Pe[e.namespaceURI]?e.namespaceURI===Ae?t.namespaceURI===H?n===`svg`:t.namespaceURI===ke?n===`svg`&&(r===`annotation-xml`||Ie[r]):!!tt[n]:e.namespaceURI===ke?t.namespaceURI===H?n===`math`:t.namespaceURI===Ae?n===`math`&&Le[r]:!!jt[n]:e.namespaceURI===H?t.namespaceURI===Ae&&!Le[r]||t.namespaceURI===ke&&!Ie[r]?!1:!jt[n]&&(Re[n]||!tt[n]):!!(Xe===`application/xhtml+xml`&&Pe[e.namespaceURI]):!1},Nt=function(e){He(t.removed,{element:e});try{b(e).removeChild(e)}catch{_(e)}},Pt=function(e,n){try{He(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{He(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e===`is`)if(ge||_e)try{Nt(n)}catch{}else try{n.setAttribute(e,``)}catch{}},Ft=function(e){let t=null,r=null;if(he)e=`<remove></remove>`+e;else{let t=Ke(e,/^[\r\n\t ]+/);r=t&&t[0]}Xe===`application/xhtml+xml`&&Me===H&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=x?x.createHTML(e):e;if(Me===H)try{t=new p().parseFromString(i,Xe)}catch{}if(!t||!t.documentElement){t=w.createDocument(Me,`template`,null);try{t.documentElement.innerHTML=Ne?S:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),Me===H?te.call(t,z?`html`:`body`)[0]:z?t.documentElement:a},It=function(e){return T.call(e.ownerDocument||e,e,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},Lt=function(e){return e instanceof f&&(typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||!(e.attributes instanceof d)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`)},Rt=function(e){return typeof s==`function`&&e instanceof s};function $(e,n,r){ze(e,e=>{e.call(t,n,r,q)})}let zt=function(e){let n=null;if($(E.beforeSanitizeElements,e,null),Lt(e))return Nt(e),!0;let r=K(e.nodeName);if($(E.uponSanitizeElement,e,{tagName:r,allowedTags:M}),pe&&e.hasChildNodes()&&!Rt(e.firstElementChild)&&Y(/<[/\w!]/g,e.innerHTML)&&Y(/<[/\w!]/g,e.textContent)||pe&&e.namespaceURI===H&&r===`style`&&Rt(e.firstElementChild)||e.nodeType===Et.progressingInstruction||pe&&e.nodeType===Et.comment&&Y(/<[/\w]/g,e.data))return Nt(e),!0;if(I[r]||!(L.tagCheck instanceof Function&&L.tagCheck(r))&&!M[r]){if(!I[r]&&Ht(r)&&(F.tagNameCheck instanceof RegExp&&Y(F.tagNameCheck,r)||F.tagNameCheck instanceof Function&&F.tagNameCheck(r)))return!1;if(Se&&!V[r]){let t=b(e)||e.parentNode,n=y(e)||e.childNodes;if(n&&t){let r=n.length;for(let i=r-1;i>=0;--i){let r=g(n[i],!0);t.insertBefore(r,v(e))}}}return Nt(e),!0}return e instanceof c&&!Mt(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&Y(/<\/no(script|embed|frames)/i,e.innerHTML)?(Nt(e),!0):(R&&e.nodeType===Et.text&&(n=e.textContent,ze([D,O,k],e=>{n=qe(n,e,` `)}),e.textContent!==n&&(He(t.removed,{element:e.cloneNode()}),e.textContent=n)),$(E.afterSanitizeElements,e,null),!1)},Bt=function(e,t,r){if(ce[t]||ye&&(t===`id`||t===`name`)&&(r in n||r in Qe))return!1;let i=P[t]||L.attributeCheck instanceof Function&&L.attributeCheck(t,e);if(!(ue&&!ce[t]&&Y(re,t))&&!(le&&Y(ie,t))){if(!i||ce[t]){if(!(Ht(e)&&(F.tagNameCheck instanceof RegExp&&Y(F.tagNameCheck,e)||F.tagNameCheck instanceof Function&&F.tagNameCheck(e))&&(F.attributeNameCheck instanceof RegExp&&Y(F.attributeNameCheck,t)||F.attributeNameCheck instanceof Function&&F.attributeNameCheck(t,e))||t===`is`&&F.allowCustomizedBuiltInElements&&(F.tagNameCheck instanceof RegExp&&Y(F.tagNameCheck,r)||F.tagNameCheck instanceof Function&&F.tagNameCheck(r))))return!1}else if(!De[t]&&!Y(oe,qe(r,A,``))&&!((t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&Je(r,`data:`)===0&&Te[e])&&!(de&&!Y(ae,qe(r,A,``)))&&r)return!1}return!0},Vt=Z({},[`annotation-xml`,`color-profile`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`missing-glyph`]),Ht=function(e){return!Vt[We(e)]&&Y(j,e)},Ut=function(e){$(E.beforeSanitizeAttributes,e,null);let n=e.attributes;if(!n||Lt(e))return;let r={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:P,forceKeepAttr:void 0},i=n.length;for(;i--;){let a=n[i],o=a.name,s=a.namespaceURI,c=a.value,l=K(o),u=c,d=o===`value`?u:Ye(u);if(r.attrName=l,r.attrValue=d,r.keepAttr=!0,r.forceKeepAttr=void 0,$(E.uponSanitizeAttribute,e,r),d=r.attrValue,be&&(l===`id`||l===`name`)&&Je(d,xe)!==0&&(Pt(o,e),d=xe+d),pe&&Y(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,d)){Pt(o,e);continue}if(l===`attributename`&&Ke(d,`href`)){Pt(o,e);continue}if(r.forceKeepAttr)continue;if(!r.keepAttr){Pt(o,e);continue}if(!fe&&Y(/\/>/i,d)){Pt(o,e);continue}R&&ze([D,O,k],e=>{d=qe(d,e,` `)});let f=K(e.nodeName);if(!Bt(f,l,d)){Pt(o,e);continue}if(x&&typeof m==`object`&&typeof m.getAttributeType==`function`&&!s)switch(m.getAttributeType(f,l)){case`TrustedHTML`:d=x.createHTML(d);break;case`TrustedScriptURL`:d=x.createScriptURL(d);break}if(d!==u)try{s?e.setAttributeNS(s,o,d):e.setAttribute(o,d),Lt(e)?Nt(e):Ve(t.removed)}catch{Pt(o,e)}}$(E.afterSanitizeAttributes,e,null)},Wt=function(e){let t=null,n=It(e);for($(E.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)$(E.uponSanitizeShadowNode,t,null),zt(t),Ut(t),t.content instanceof a&&Wt(t.content);$(E.afterSanitizeShadowDOM,e,null)},Gt=function(e){if(e.nodeType===Et.element&&e.shadowRoot instanceof a){let t=e.shadowRoot;Gt(t),Wt(t)}let t=e.childNodes;if(!t)return;let n=[];ze(t,e=>{He(n,e)});for(let e of n)Gt(e)};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,o=null,c=null,l=null;if(Ne=!e,Ne&&(e=`<!-->`),typeof e!=`string`&&!Rt(e)&&(e=nt(e),typeof e!=`string`))throw $e(`dirty is not a string, aborting`);if(!t.isSupported)return e;if(me||et(n),t.removed=[],typeof e==`string`&&(Ce=!1),Ce){let t=e.nodeName;if(typeof t==`string`){let e=K(t);if(!M[e]||I[e])throw $e(`root node is forbidden and cannot be sanitized in-place`)}Gt(e)}else if(e instanceof s)i=Ft(`<!---->`),o=i.ownerDocument.importNode(e,!0),o.nodeType===Et.element&&o.nodeName===`BODY`||o.nodeName===`HTML`?i=o:i.appendChild(o),Gt(o);else{if(!ge&&!R&&!z&&e.indexOf(`<`)===-1)return x&&ve?x.createHTML(e):e;if(i=Ft(e),!i)return ge?null:ve?S:``}i&&he&&Nt(i.firstChild);let u=It(Ce?e:i);for(;c=u.nextNode();)zt(c),Ut(c),c.content instanceof a&&Wt(c.content);if(Ce)return e;if(ge){if(R){i.normalize();let e=i.innerHTML;ze([D,O,k],t=>{e=qe(e,t,` `)}),i.innerHTML=e}if(_e)for(l=ee.call(i.ownerDocument);i.firstChild;)l.appendChild(i.firstChild);else l=i;return(P.shadowroot||P.shadowrootmode)&&(l=ne.call(r,l,!0)),l}let d=z?i.outerHTML:i.innerHTML;return z&&M[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&Y(wt,i.ownerDocument.doctype.name)&&(d=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
3
+ `+d),R&&ze([D,O,k],e=>{d=qe(d,e,` `)}),x&&ve?x.createHTML(d):d},t.setConfig=function(){et(arguments.length>0&&arguments[0]!==void 0?arguments[0]:{}),me=!0},t.clearConfig=function(){q=null,me=!1},t.isValidAttribute=function(e,t,n){return q||et({}),Bt(K(e),K(t),n)},t.addHook=function(e,t){typeof t==`function`&&He(E[e],t)},t.removeHook=function(e,t){if(t!==void 0){let n=Be(E[e],t);return n===-1?void 0:Ue(E[e],n,1)[0]}return Ve(E[e])},t.removeHooks=function(e){E[e]=[]},t.removeAllHooks=function(){E=kt()},t}var jt=At(),Mt=B({"node_modules/.pnpm/jsonify@0.0.1/node_modules/jsonify/lib/parse.js"(e,t){var n,r,i={'"':`"`,"\\":`\\`,"/":`/`,b:`\b`,f:`\f`,n:`
4
+ `,r:`\r`,t:` `},a;function o(e){throw{name:`SyntaxError`,message:e,at:n,text:a}}function s(e){return e&&e!==r&&o(`Expected '`+e+`' instead of '`+r+`'`),r=a.charAt(n),n+=1,r}function c(){var e,t=``;for(r===`-`&&(t=`-`,s(`-`));r>=`0`&&r<=`9`;)t+=r,s();if(r===`.`)for(t+=`.`;s()&&r>=`0`&&r<=`9`;)t+=r;if(r===`e`||r===`E`)for(t+=r,s(),(r===`-`||r===`+`)&&(t+=r,s());r>=`0`&&r<=`9`;)t+=r,s();return e=Number(t),isFinite(e)||o(`Bad number`),e}function l(){var e,t,n=``,a;if(r===`"`)for(;s();)if(r===`"`)return s(),n;else if(r===`\\`)if(s(),r===`u`){for(a=0,t=0;t<4&&(e=parseInt(s(),16),isFinite(e));t+=1)a=a*16+e;n+=String.fromCharCode(a)}else if(typeof i[r]==`string`)n+=i[r];else break;else n+=r;o(`Bad string`)}function u(){for(;r&&r<=` `;)s()}function d(){switch(r){case`t`:return s(`t`),s(`r`),s(`u`),s(`e`),!0;case`f`:return s(`f`),s(`a`),s(`l`),s(`s`),s(`e`),!1;case`n`:return s(`n`),s(`u`),s(`l`),s(`l`),null;default:o(`Unexpected '`+r+`'`)}}function f(){var e=[];if(r===`[`){if(s(`[`),u(),r===`]`)return s(`]`),e;for(;r;){if(e.push(m()),u(),r===`]`)return s(`]`),e;s(`,`),u()}}o(`Bad array`)}function p(){var e,t={};if(r===`{`){if(s(`{`),u(),r===`}`)return s(`}`),t;for(;r;){if(e=l(),u(),s(`:`),Object.prototype.hasOwnProperty.call(t,e)&&o(`Duplicate key "`+e+`"`),t[e]=m(),u(),r===`}`)return s(`}`),t;s(`,`),u()}}o(`Bad object`)}function m(){switch(u(),r){case`{`:return p();case`[`:return f();case`"`:return l();case`-`:return c();default:return r>=`0`&&r<=`9`?c():d()}}t.exports=function(e,t){var i;return a=e,n=0,r=` `,i=m(),u(),r&&o(`Syntax error`),typeof t==`function`?(function e(n,r){var i,a,o=n[r];if(o&&typeof o==`object`)for(i in m)Object.prototype.hasOwnProperty.call(o,i)&&(a=e(o,i),a===void 0?delete o[i]:o[i]=a);return t.call(n,r,o)})({"":i},``):i}}}),Nt=B({"node_modules/.pnpm/jsonify@0.0.1/node_modules/jsonify/lib/stringify.js"(e,t){var n=/[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,r,i,a={"\b":`\\b`," ":`\\t`,"\n":`\\n`,"\f":`\\f`,"\r":`\\r`,'"':`\\"`,"\\":`\\\\`},o;function s(e){return n.lastIndex=0,n.test(e)?`"`+e.replace(n,function(e){var t=a[e];return typeof t==`string`?t:`\\u`+(`0000`+e.charCodeAt(0).toString(16)).slice(-4)})+`"`:`"`+e+`"`}function c(e,t){var n,a,l,u,d=r,f,p=t[e];switch(p&&typeof p==`object`&&typeof p.toJSON==`function`&&(p=p.toJSON(e)),typeof o==`function`&&(p=o.call(t,e,p)),typeof p){case`string`:return s(p);case`number`:return isFinite(p)?String(p):`null`;case`boolean`:case`null`:return String(p);case`object`:if(!p)return`null`;if(r+=i,f=[],Object.prototype.toString.apply(p)===`[object Array]`){for(u=p.length,n=0;n<u;n+=1)f[n]=c(n,p)||`null`;return l=f.length===0?`[]`:r?`[
5
+ `+r+f.join(`,
6
+ `+r)+`
7
+ `+d+`]`:`[`+f.join(`,`)+`]`,r=d,l}if(o&&typeof o==`object`)for(u=o.length,n=0;n<u;n+=1)a=o[n],typeof a==`string`&&(l=c(a,p),l&&f.push(s(a)+(r?`: `:`:`)+l));else for(a in p)Object.prototype.hasOwnProperty.call(p,a)&&(l=c(a,p),l&&f.push(s(a)+(r?`: `:`:`)+l));return l=f.length===0?`{}`:r?`{
8
+ `+r+f.join(`,
9
+ `+r)+`
10
+ `+d+`}`:`{`+f.join(`,`)+`}`,r=d,l}}t.exports=function(e,t,n){var a;if(r=``,i=``,typeof n==`number`)for(a=0;a<n;a+=1)i+=` `;else typeof n==`string`&&(i=n);if(o=t,t&&typeof t!=`function`&&(typeof t!=`object`||typeof t.length!=`number`))throw Error(`JSON.stringify`);return c(``,{"":e})}}}),Pt=B({"node_modules/.pnpm/jsonify@0.0.1/node_modules/jsonify/index.js"(e){e.parse=Mt(),e.stringify=Nt()}}),Ft=B({"node_modules/.pnpm/isarray@2.0.5/node_modules/isarray/index.js"(e,t){var n={}.toString;t.exports=Array.isArray||function(e){return n.call(e)==`[object Array]`}}}),It=B({"node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/isArguments.js"(e,t){var n=Object.prototype.toString;t.exports=function(e){var t=n.call(e),r=t===`[object Arguments]`;return r||=t!==`[object Array]`&&typeof e==`object`&&!!e&&typeof e.length==`number`&&e.length>=0&&n.call(e.callee)===`[object Function]`,r}}}),Lt=B({"node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/implementation.js"(e,t){var n;Object.keys||(r=Object.prototype.hasOwnProperty,i=Object.prototype.toString,a=It(),o=Object.prototype.propertyIsEnumerable,s=!o.call({toString:null},`toString`),c=o.call(function(){},`prototype`),l=[`toString`,`toLocaleString`,`valueOf`,`hasOwnProperty`,`isPrototypeOf`,`propertyIsEnumerable`,`constructor`],u=function(e){var t=e.constructor;return t&&t.prototype===e},d={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},f=(function(){if(typeof window>`u`)return!1;for(var e in window)try{if(!d[`$`+e]&&r.call(window,e)&&window[e]!==null&&typeof window[e]==`object`)try{u(window[e])}catch{return!0}}catch{return!0}return!1})(),p=function(e){if(typeof window>`u`||!f)return u(e);try{return u(e)}catch{return!1}},n=function(e){var t=typeof e==`object`&&!!e,n=i.call(e)===`[object Function]`,o=a(e),u=t&&i.call(e)===`[object String]`,d=[];if(!t&&!n&&!o)throw TypeError(`Object.keys called on a non-object`);var f=c&&n;if(u&&e.length>0&&!r.call(e,0))for(var m=0;m<e.length;++m)d.push(String(m));if(o&&e.length>0)for(var h=0;h<e.length;++h)d.push(String(h));else for(var g in e)!(f&&g===`prototype`)&&r.call(e,g)&&d.push(String(g));if(s)for(var _=p(e),v=0;v<l.length;++v)!(_&&l[v]===`constructor`)&&r.call(e,l[v])&&d.push(l[v]);return d});var r,i,a,o,s,c,l,u,d,f,p;t.exports=n}}),Rt=B({"node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/index.js"(e,t){var n=Array.prototype.slice,r=It(),i=Object.keys,a=i?function(e){return i(e)}:Lt(),o=Object.keys;a.shim=function(){return Object.keys?(function(){var e=Object.keys(arguments);return e&&e.length===arguments.length})(1,2)||(Object.keys=function(e){return r(e)?o(n.call(e)):o(e)}):Object.keys=a,Object.keys||a},t.exports=a}}),$=B({"node_modules/.pnpm/es-object-atoms@1.1.1/node_modules/es-object-atoms/index.js"(e,t){t.exports=Object}}),zt=B({"node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/index.js"(e,t){t.exports=Error}}),Bt=B({"node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/eval.js"(e,t){t.exports=EvalError}}),Vt=B({"node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/range.js"(e,t){t.exports=RangeError}}),Ht=B({"node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/ref.js"(e,t){t.exports=ReferenceError}}),Ut=B({"node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/syntax.js"(e,t){t.exports=SyntaxError}}),Wt=B({"node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/type.js"(e,t){t.exports=TypeError}}),Gt=B({"node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/uri.js"(e,t){t.exports=URIError}}),Kt=B({"node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/abs.js"(e,t){t.exports=Math.abs}}),qt=B({"node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/floor.js"(e,t){t.exports=Math.floor}}),Jt=B({"node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/max.js"(e,t){t.exports=Math.max}}),Yt=B({"node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/min.js"(e,t){t.exports=Math.min}}),Xt=B({"node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/pow.js"(e,t){t.exports=Math.pow}}),Zt=B({"node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/round.js"(e,t){t.exports=Math.round}}),Qt=B({"node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/isNaN.js"(e,t){t.exports=Number.isNaN||function(e){return e!==e}}}),$t=B({"node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/sign.js"(e,t){var n=Qt();t.exports=function(e){return n(e)||e===0?e:e<0?-1:1}}}),en=B({"node_modules/.pnpm/gopd@1.2.0/node_modules/gopd/gOPD.js"(e,t){t.exports=Object.getOwnPropertyDescriptor}}),tn=B({"node_modules/.pnpm/gopd@1.2.0/node_modules/gopd/index.js"(e,t){var n=en();if(n)try{n([],`length`)}catch{n=null}t.exports=n}}),nn=B({"node_modules/.pnpm/es-define-property@1.0.1/node_modules/es-define-property/index.js"(e,t){var n=Object.defineProperty||!1;if(n)try{n({},`a`,{value:1})}catch{n=!1}t.exports=n}}),rn=B({"node_modules/.pnpm/has-symbols@1.1.0/node_modules/has-symbols/shams.js"(e,t){t.exports=function(){if(typeof Symbol!=`function`||typeof Object.getOwnPropertySymbols!=`function`)return!1;if(typeof Symbol.iterator==`symbol`)return!0;var e={},t=Symbol(`test`),n=Object(t);if(typeof t==`string`||Object.prototype.toString.call(t)!==`[object Symbol]`||Object.prototype.toString.call(n)!==`[object Symbol]`)return!1;var r=42;for(var i in e[t]=r,e)return!1;if(typeof Object.keys==`function`&&Object.keys(e).length!==0||typeof Object.getOwnPropertyNames==`function`&&Object.getOwnPropertyNames(e).length!==0)return!1;var a=Object.getOwnPropertySymbols(e);if(a.length!==1||a[0]!==t||!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if(typeof Object.getOwnPropertyDescriptor==`function`){var o=Object.getOwnPropertyDescriptor(e,t);if(o.value!==r||o.enumerable!==!0)return!1}return!0}}}),an=B({"node_modules/.pnpm/has-symbols@1.1.0/node_modules/has-symbols/index.js"(e,t){var n=typeof Symbol<`u`&&Symbol,r=rn();t.exports=function(){return typeof n!=`function`||typeof Symbol!=`function`||typeof n(`foo`)!=`symbol`||typeof Symbol(`bar`)!=`symbol`?!1:r()}}}),on=B({"node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/Reflect.getPrototypeOf.js"(e,t){t.exports=typeof Reflect<`u`&&Reflect.getPrototypeOf||null}}),sn=B({"node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/Object.getPrototypeOf.js"(e,t){t.exports=$().getPrototypeOf||null}}),cn=B({"node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js"(e,t){var n=`Function.prototype.bind called on incompatible `,r=Object.prototype.toString,i=Math.max,a=`[object Function]`,o=function(e,t){for(var n=[],r=0;r<e.length;r+=1)n[r]=e[r];for(var i=0;i<t.length;i+=1)n[i+e.length]=t[i];return n},s=function(e,t){for(var n=[],r=t,i=0;r<e.length;r+=1,i+=1)n[i]=e[r];return n},c=function(e,t){for(var n=``,r=0;r<e.length;r+=1)n+=e[r],r+1<e.length&&(n+=t);return n};t.exports=function(e){var t=this;if(typeof t!=`function`||r.apply(t)!==a)throw TypeError(n+t);for(var l=s(arguments,1),u,d=function(){if(this instanceof u){var n=t.apply(this,o(l,arguments));return Object(n)===n?n:this}return t.apply(e,o(l,arguments))},f=i(0,t.length-l.length),p=[],m=0;m<f;m++)p[m]=`$`+m;if(u=Function(`binder`,`return function (`+c(p,`,`)+`){ return binder.apply(this,arguments); }`)(d),t.prototype){var h=function(){};h.prototype=t.prototype,u.prototype=new h,h.prototype=null}return u}}}),ln=B({"node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/index.js"(e,t){var n=cn();t.exports=Function.prototype.bind||n}}),un=B({"node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionCall.js"(e,t){t.exports=Function.prototype.call}}),dn=B({"node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionApply.js"(e,t){t.exports=Function.prototype.apply}}),fn=B({"node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/reflectApply.js"(e,t){t.exports=typeof Reflect<`u`&&Reflect&&Reflect.apply}}),pn=B({"node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/actualApply.js"(e,t){var n=ln(),r=dn(),i=un();t.exports=fn()||n.call(i,r)}}),mn=B({"node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/index.js"(e,t){var n=ln(),r=Wt(),i=un(),a=pn();t.exports=function(e){if(e.length<1||typeof e[0]!=`function`)throw new r(`a function is required`);return a(n,i,e)}}}),hn=B({"node_modules/.pnpm/dunder-proto@1.0.1/node_modules/dunder-proto/get.js"(e,t){var n=mn(),r=tn(),i;try{i=[].__proto__===Array.prototype}catch(e){if(!e||typeof e!=`object`||!(`code`in e)||e.code!==`ERR_PROTO_ACCESS`)throw e}var a=!!i&&r&&r(Object.prototype,`__proto__`),o=Object,s=o.getPrototypeOf;t.exports=a&&typeof a.get==`function`?n([a.get]):typeof s==`function`?(function(e){return s(e==null?e:o(e))}):!1}}),gn=B({"node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/index.js"(e,t){var n=on(),r=sn(),i=hn();t.exports=n?function(e){return n(e)}:r?function(e){if(!e||typeof e!=`object`&&typeof e!=`function`)throw TypeError(`getProto: not an object`);return r(e)}:i?function(e){return i(e)}:null}}),_n=B({"node_modules/.pnpm/hasown@2.0.2/node_modules/hasown/index.js"(e,t){var n=Function.prototype.call,r=Object.prototype.hasOwnProperty;t.exports=ln().call(n,r)}}),vn=B({"node_modules/.pnpm/get-intrinsic@1.3.0/node_modules/get-intrinsic/index.js"(e,t){var n,r=$(),i=zt(),a=Bt(),o=Vt(),s=Ht(),c=Ut(),l=Wt(),u=Gt(),d=Kt(),f=qt(),p=Jt(),m=Yt(),h=Xt(),g=Zt(),_=$t(),v=Function,y=function(e){try{return v(`"use strict"; return (`+e+`).constructor;`)()}catch{}},b=tn(),x=nn(),S=function(){throw new l},C=b?(function(){try{return arguments.callee,S}catch{try{return b(arguments,`callee`).get}catch{return S}}})():S,w=an()(),T=gn(),ee=sn(),te=on(),ne=dn(),E=un(),D={},O=typeof Uint8Array>`u`||!T?n:T(Uint8Array),k={__proto__:null,"%AggregateError%":typeof AggregateError>`u`?n:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>`u`?n:ArrayBuffer,"%ArrayIteratorPrototype%":w&&T?T([][Symbol.iterator]()):n,"%AsyncFromSyncIteratorPrototype%":n,"%AsyncFunction%":D,"%AsyncGenerator%":D,"%AsyncGeneratorFunction%":D,"%AsyncIteratorPrototype%":D,"%Atomics%":typeof Atomics>`u`?n:Atomics,"%BigInt%":typeof BigInt>`u`?n:BigInt,"%BigInt64Array%":typeof BigInt64Array>`u`?n:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>`u`?n:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>`u`?n:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":i,"%eval%":eval,"%EvalError%":a,"%Float16Array%":typeof Float16Array>`u`?n:Float16Array,"%Float32Array%":typeof Float32Array>`u`?n:Float32Array,"%Float64Array%":typeof Float64Array>`u`?n:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>`u`?n:FinalizationRegistry,"%Function%":v,"%GeneratorFunction%":D,"%Int8Array%":typeof Int8Array>`u`?n:Int8Array,"%Int16Array%":typeof Int16Array>`u`?n:Int16Array,"%Int32Array%":typeof Int32Array>`u`?n:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":w&&T?T(T([][Symbol.iterator]())):n,"%JSON%":typeof JSON==`object`?JSON:n,"%Map%":typeof Map>`u`?n:Map,"%MapIteratorPrototype%":typeof Map>`u`||!w||!T?n:T(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":r,"%Object.getOwnPropertyDescriptor%":b,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>`u`?n:Promise,"%Proxy%":typeof Proxy>`u`?n:Proxy,"%RangeError%":o,"%ReferenceError%":s,"%Reflect%":typeof Reflect>`u`?n:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>`u`?n:Set,"%SetIteratorPrototype%":typeof Set>`u`||!w||!T?n:T(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>`u`?n:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":w&&T?T(``[Symbol.iterator]()):n,"%Symbol%":w?Symbol:n,"%SyntaxError%":c,"%ThrowTypeError%":C,"%TypedArray%":O,"%TypeError%":l,"%Uint8Array%":typeof Uint8Array>`u`?n:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>`u`?n:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>`u`?n:Uint16Array,"%Uint32Array%":typeof Uint32Array>`u`?n:Uint32Array,"%URIError%":u,"%WeakMap%":typeof WeakMap>`u`?n:WeakMap,"%WeakRef%":typeof WeakRef>`u`?n:WeakRef,"%WeakSet%":typeof WeakSet>`u`?n:WeakSet,"%Function.prototype.call%":E,"%Function.prototype.apply%":ne,"%Object.defineProperty%":x,"%Object.getPrototypeOf%":ee,"%Math.abs%":d,"%Math.floor%":f,"%Math.max%":p,"%Math.min%":m,"%Math.pow%":h,"%Math.round%":g,"%Math.sign%":_,"%Reflect.getPrototypeOf%":te};if(T)try{null.error}catch(e){re=T(T(e)),k[`%Error.prototype%`]=re}var re,ie=function e(t){var n;if(t===`%AsyncFunction%`)n=y(`async function () {}`);else if(t===`%GeneratorFunction%`)n=y(`function* () {}`);else if(t===`%AsyncGeneratorFunction%`)n=y(`async function* () {}`);else if(t===`%AsyncGenerator%`){var r=e(`%AsyncGeneratorFunction%`);r&&(n=r.prototype)}else if(t===`%AsyncIteratorPrototype%`){var i=e(`%AsyncGenerator%`);i&&T&&(n=T(i.prototype))}return k[t]=n,n},ae={__proto__:null,"%ArrayBufferPrototype%":[`ArrayBuffer`,`prototype`],"%ArrayPrototype%":[`Array`,`prototype`],"%ArrayProto_entries%":[`Array`,`prototype`,`entries`],"%ArrayProto_forEach%":[`Array`,`prototype`,`forEach`],"%ArrayProto_keys%":[`Array`,`prototype`,`keys`],"%ArrayProto_values%":[`Array`,`prototype`,`values`],"%AsyncFunctionPrototype%":[`AsyncFunction`,`prototype`],"%AsyncGenerator%":[`AsyncGeneratorFunction`,`prototype`],"%AsyncGeneratorPrototype%":[`AsyncGeneratorFunction`,`prototype`,`prototype`],"%BooleanPrototype%":[`Boolean`,`prototype`],"%DataViewPrototype%":[`DataView`,`prototype`],"%DatePrototype%":[`Date`,`prototype`],"%ErrorPrototype%":[`Error`,`prototype`],"%EvalErrorPrototype%":[`EvalError`,`prototype`],"%Float32ArrayPrototype%":[`Float32Array`,`prototype`],"%Float64ArrayPrototype%":[`Float64Array`,`prototype`],"%FunctionPrototype%":[`Function`,`prototype`],"%Generator%":[`GeneratorFunction`,`prototype`],"%GeneratorPrototype%":[`GeneratorFunction`,`prototype`,`prototype`],"%Int8ArrayPrototype%":[`Int8Array`,`prototype`],"%Int16ArrayPrototype%":[`Int16Array`,`prototype`],"%Int32ArrayPrototype%":[`Int32Array`,`prototype`],"%JSONParse%":[`JSON`,`parse`],"%JSONStringify%":[`JSON`,`stringify`],"%MapPrototype%":[`Map`,`prototype`],"%NumberPrototype%":[`Number`,`prototype`],"%ObjectPrototype%":[`Object`,`prototype`],"%ObjProto_toString%":[`Object`,`prototype`,`toString`],"%ObjProto_valueOf%":[`Object`,`prototype`,`valueOf`],"%PromisePrototype%":[`Promise`,`prototype`],"%PromiseProto_then%":[`Promise`,`prototype`,`then`],"%Promise_all%":[`Promise`,`all`],"%Promise_reject%":[`Promise`,`reject`],"%Promise_resolve%":[`Promise`,`resolve`],"%RangeErrorPrototype%":[`RangeError`,`prototype`],"%ReferenceErrorPrototype%":[`ReferenceError`,`prototype`],"%RegExpPrototype%":[`RegExp`,`prototype`],"%SetPrototype%":[`Set`,`prototype`],"%SharedArrayBufferPrototype%":[`SharedArrayBuffer`,`prototype`],"%StringPrototype%":[`String`,`prototype`],"%SymbolPrototype%":[`Symbol`,`prototype`],"%SyntaxErrorPrototype%":[`SyntaxError`,`prototype`],"%TypedArrayPrototype%":[`TypedArray`,`prototype`],"%TypeErrorPrototype%":[`TypeError`,`prototype`],"%Uint8ArrayPrototype%":[`Uint8Array`,`prototype`],"%Uint8ClampedArrayPrototype%":[`Uint8ClampedArray`,`prototype`],"%Uint16ArrayPrototype%":[`Uint16Array`,`prototype`],"%Uint32ArrayPrototype%":[`Uint32Array`,`prototype`],"%URIErrorPrototype%":[`URIError`,`prototype`],"%WeakMapPrototype%":[`WeakMap`,`prototype`],"%WeakSetPrototype%":[`WeakSet`,`prototype`]},A=ln(),j=_n(),oe=A.call(E,Array.prototype.concat),M=A.call(ne,Array.prototype.splice),N=A.call(E,String.prototype.replace),P=A.call(E,String.prototype.slice),se=A.call(E,RegExp.prototype.exec),F=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,I=/\\(\\)?/g,ce=function(e){var t=P(e,0,1),n=P(e,-1);if(t===`%`&&n!==`%`)throw new c("invalid intrinsic syntax, expected closing `%`");if(n===`%`&&t!==`%`)throw new c("invalid intrinsic syntax, expected opening `%`");var r=[];return N(e,F,function(e,t,n,i){r[r.length]=n?N(i,I,`$1`):t||e}),r},L=function(e,t){var n=e,r;if(j(ae,n)&&(r=ae[n],n=`%`+r[0]+`%`),j(k,n)){var i=k[n];if(i===D&&(i=ie(n)),i===void 0&&!t)throw new l(`intrinsic `+e+` exists, but is not available. Please file an issue!`);return{alias:r,name:n,value:i}}throw new c(`intrinsic `+e+` does not exist!`)};t.exports=function(e,t){if(typeof e!=`string`||e.length===0)throw new l(`intrinsic name must be a non-empty string`);if(arguments.length>1&&typeof t!=`boolean`)throw new l(`"allowMissing" argument must be a boolean`);if(se(/^%?[^%]*%?$/,e)===null)throw new c("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=ce(e),r=n.length>0?n[0]:``,i=L(`%`+r+`%`,t),a=i.name,o=i.value,s=!1,u=i.alias;u&&(r=u[0],M(n,oe([0,1],u)));for(var d=1,f=!0;d<n.length;d+=1){var p=n[d],m=P(p,0,1),h=P(p,-1);if((m===`"`||m===`'`||m==="`"||h===`"`||h===`'`||h==="`")&&m!==h)throw new c(`property names with quotes must have matching quotes`);if((p===`constructor`||!f)&&(s=!0),r+=`.`+p,a=`%`+r+`%`,j(k,a))o=k[a];else if(o!=null){if(!(p in o)){if(!t)throw new l(`base intrinsic for `+e+` exists, but the property is not available.`);return}if(b&&d+1>=n.length){var g=b(o,p);f=!!g,o=f&&`get`in g&&!(`originalValue`in g.get)?g.get:o[p]}else f=j(o,p),o=o[p];f&&!s&&(k[a]=o)}}return o}}}),yn=B({"node_modules/.pnpm/define-data-property@1.1.4/node_modules/define-data-property/index.js"(e,t){var n=nn(),r=Ut(),i=Wt(),a=tn();t.exports=function(e,t,o){if(!e||typeof e!=`object`&&typeof e!=`function`)throw new i("`obj` must be an object or a function`");if(typeof t!=`string`&&typeof t!=`symbol`)throw new i("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!=`boolean`&&arguments[3]!==null)throw new i("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!=`boolean`&&arguments[4]!==null)throw new i("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!=`boolean`&&arguments[5]!==null)throw new i("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!=`boolean`)throw new i("`loose`, if provided, must be a boolean");var s=arguments.length>3?arguments[3]:null,c=arguments.length>4?arguments[4]:null,l=arguments.length>5?arguments[5]:null,u=arguments.length>6?arguments[6]:!1,d=!!a&&a(e,t);if(n)n(e,t,{configurable:l===null&&d?d.configurable:!l,enumerable:s===null&&d?d.enumerable:!s,value:o,writable:c===null&&d?d.writable:!c});else if(u||!s&&!c&&!l)e[t]=o;else throw new r(`This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.`)}}}),bn=B({"node_modules/.pnpm/has-property-descriptors@1.0.2/node_modules/has-property-descriptors/index.js"(e,t){var n=nn(),r=function(){return!!n};r.hasArrayLengthDefineBug=function(){if(!n)return null;try{return n([],`length`,{value:1}).length!==1}catch{return!0}},t.exports=r}}),xn=B({"node_modules/.pnpm/set-function-length@1.2.2/node_modules/set-function-length/index.js"(e,t){var n=vn(),r=yn(),i=bn()(),a=tn(),o=Wt(),s=n(`%Math.floor%`);t.exports=function(e,t){if(typeof e!=`function`)throw new o("`fn` is not a function");if(typeof t!=`number`||t<0||t>4294967295||s(t)!==t)throw new o("`length` must be a positive 32-bit integer");var n=arguments.length>2&&!!arguments[2],c=!0,l=!0;if(`length`in e&&a){var u=a(e,`length`);u&&!u.configurable&&(c=!1),u&&!u.writable&&(l=!1)}return(c||l||!n)&&(i?r(e,`length`,t,!0,!0):r(e,`length`,t)),e}}}),Sn=B({"node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/applyBind.js"(e,t){var n=ln(),r=dn(),i=pn();t.exports=function(){return i(n,r,arguments)}}}),Cn=B({"node_modules/.pnpm/call-bind@1.0.8/node_modules/call-bind/index.js"(e,t){var n=xn(),r=nn(),i=mn(),a=Sn();t.exports=function(e){var t=i(arguments),r=e.length-(arguments.length-1);return n(t,1+(r>0?r:0),!0)},r?r(t.exports,`apply`,{value:a}):t.exports.apply=a}}),wn=B({"node_modules/.pnpm/call-bound@1.0.4/node_modules/call-bound/index.js"(e,t){var n=vn(),r=mn(),i=r([n(`%String.prototype.indexOf%`)]);t.exports=function(e,t){var a=n(e,!!t);return typeof a==`function`&&i(e,`.prototype.`)>-1?r([a]):a}}}),Tn=we(B({"node_modules/.pnpm/json-stable-stringify@1.3.0/node_modules/json-stable-stringify/index.js"(e,t){var n=(typeof JSON<`u`?JSON:Pt()).stringify,r=Ft(),i=Rt(),a=Cn(),o=wn(),s=o(`Array.prototype.join`),c=o(`Array.prototype.indexOf`),l=o(`Array.prototype.splice`),u=o(`Array.prototype.sort`),d=function(e,t){for(var n=``,r=0;r<e;r+=1)n+=t;return n},f=function(e,t,n){return n};t.exports=function(e){var t=arguments.length>1?arguments[1]:void 0,o=t&&t.space||``;typeof o==`number`&&(o=d(o,` `));var p=!!t&&typeof t.cycles==`boolean`&&t.cycles,m=t&&t.replacer?a(t.replacer):f;if(t&&t.collapseEmpty!==void 0&&typeof t.collapseEmpty!=`boolean`)throw TypeError("`collapseEmpty` must be a boolean, if provided");var h=!!t&&t.collapseEmpty,g=typeof t==`function`?t:t&&t.cmp,_=g&&function(e){var t=g.length>2&&function(t){return e[t]};return function(n,r){return g({key:n,value:e[n]},{key:r,value:e[r]},t?{__proto__:null,get:t}:void 0)}},v=[];return(function e(t,a,f,g){var y=o?`
11
+ `+d(g,o):``,b=o?`: `:`:`;if(f&&f.toJSON&&typeof f.toJSON==`function`&&(f=f.toJSON()),f=m(t,a,f),f!==void 0){if(typeof f!=`object`||!f)return n(f);var x=function(e,t){return h&&e.length===0?t:(t===`[]`?`[`:`{`)+s(e,`,`)+y+(t===`[]`?`]`:`}`)};if(r(f)){for(var S=[],C=0;C<f.length;C++){var w=e(f,C,f[C],g+1)||n(null);S[S.length]=y+o+w}return x(S,`[]`)}if(c(v,f)!==-1){if(p)return n(`__cycle__`);throw TypeError(`Converting circular structure to JSON`)}else v[v.length]=f;for(var T=u(i(f),_&&_(f)),S=[],C=0;C<T.length;C++){var a=T[C],ee=e(f,a,f[a],g+1);if(ee){var te=n(a)+b+ee;S[S.length]=y+o+te}}return l(v,c(v,f),1),x(S,`{}`)}})({"":e},``,e,0)}}})(),1),En=e=>localStorage.getItem(`kizen-flag-${e}`)===`true`,Dn=(e=``)=>e.split(``).reduce((e,t)=>(e<<5)-e+t.charCodeAt(0)|0,0),On=e=>{try{return Dn((0,Tn.default)(e))}catch(e){return En(`script-runner-logging`)&&console.warn(`Failed to stringify object for hashing:`,e),Dn(String(Math.random()))}},kn=e=>{if(e===`boolean`)return!1},An=(e,t,n,r)=>{let i=Object.keys(e),a={};return i.forEach(r=>{t.includes(r)?a[r]={value:kn(n[r]?.type),type:n[r]?.type}:a[r]={value:e[r],type:n[r]?.type}}),P({fields:r??[]}).forEach(e=>{if(a[e.key]===void 0)if(t.includes(e.key))a[e.key]={value:kn(e.type),type:e.type};else if(e.type===`api_key`){let t=n[e.key];a[e.key]={type:e.type,hasValue:!!t?.hasValue,maskedValue:t?.maskedValue}}else a[e.key]={value:e.default,type:e.type}}),a},jn=RegExp(`{{(${[`config`,`userConfig`,`plan`,`entitlement`].join(`|`)})\\.([^}]+)}}`,`g`),Mn=(e,t)=>{let n={};return Object.entries(e??{}).forEach(([e,t])=>{Object.entries(t).forEach(([t,r])=>{n[`plan__${e}__${t}`]={value:r}})}),Object.entries(t??{}).forEach(([e,t])=>{n[`entitlement__${e}`]={value:t}}),n},Nn=e=>e?e.replace(jn,(e,t,n)=>`{{${t}__${n.replaceAll(`.`,`__`)}}}`):``,Pn=async(e,t)=>await rr(Nn(e),t),Fn=e=>{let t=e;return t=/^(http|https|kizen|kizenvoice):\/\//.test(e)?e:e.startsWith(`/`)?`${w().origin}${t}`:`${w().origin}/${t}`,t},In=(e,t)=>{let n=new URLSearchParams;return e&&e.forEach(e=>{e===`base_url`?n.append(e,w().origin):t&&n.append(e,t(e))}),n},Ln=(e,t)=>{let n=t.toString();if(!n)return e;let r=e.indexOf(`#`),i=r===-1?e:e.slice(0,r),a=r===-1?``:e.slice(r);return`${i}${i.includes(`?`)?`&`:`?`}${n}${a}`},Rn=(e,t,n)=>Ln(Fn(e??``),In(t,n)),zn=(e,t,n)=>Ln(e??``,In(t,n)),Bn=(e,t,n)=>{if(!e)return{html:``,error:null,removed:[]};try{let r=jt();return r.addHook(`uponSanitizeElement`,(e,r)=>{if(r.tagName===`iframe`){let r=e,{url:i,isUsingProxy:a}=me(r.getAttribute(`src`)??``,n,r.getAttribute(`allow`)??``);a&&r.setAttribute(`allow`,_e()),r.setAttribute(`src`,i),r.setAttribute(`name`,t??``)}}),{html:r.sanitize(e,{ADD_TAGS:[`iframe`],ADD_ATTR:[`allow`,`allowfullscreen`,`frameborder`,`scrolling`,`src`,`sandbox`,`name`,`loading`,`width`,`height`,`title`]}),error:null,removed:r.removed}}catch(e){return{html:``,error:e,removed:[]}}},Vn=`kizen-app-context`,Hn=`session_data_key`,Un=()=>`${Vn}-${T()}`,Wn=e=>{try{let t=new URL(e,window.location.origin).searchParams.get(Hn);return t?.startsWith(`${Vn}-`)?t:null}catch{return null}},Gn=e=>{let t=Un();return sessionStorage.setItem(t,JSON.stringify(e)),t},Kn=(e,t)=>{let n=new URL(e,window.location.origin);return n.searchParams.set(Hn,t),`${n.pathname}${n.search}${n.hash}`},qn=e=>{let t=Wn(e);if(t)try{let e=sessionStorage.getItem(t);return e?JSON.parse(e):void 0}catch{return}},Jn=e=>{let t=Wn(e);t&&sessionStorage.removeItem(t)},Yn=e=>{let t=qn(e);return Jn(e),t},Xn=e=>e.startsWith(`/`),Zn=e=>{try{return new URL(e,window.location.origin).origin===window.location.origin}catch{return!1}},Qn=3e4,$n=100,er=class{worker;scriptUIRef;onStateChange;done;onError;waitForFrame=!1;plugin;executionPlugin;frameId;onShowToast;onClearToasts;sessionData={};setSessionData;pluginComponentId;onShowModal;onCloseModal;onShowCreateRecordModal;onShowCreateRelatedRecordModal;onReleaseBlockingScript;pluginApiName;onNetworkError;onNetworkRequest;invalidateCache;getPendingCacheCount;createFileId;performFileUpload;pushHistory;appPath;onConsoleLog;onRunEventScript;onCompleteSetup;isDebug;constructor(e){this.scriptUIRef=e.scriptUIRef,this.onStateChange=e.onStateChange,this.done=e.done,this.onError=e.onError,this.onReleaseBlockingScript=e.onReleaseBlockingScript,this.worker=e.worker,this.worker.onmessage=this.handleMessage,this.plugin=e.plugin,this.executionPlugin=e.executionPlugin,this.onShowToast=e.onShowToast,this.onClearToasts=e.onClearToasts,this.pluginComponentId=e.pluginComponentId,this.onShowModal=e.onShowModal,this.onCloseModal=e.onCloseModal,this.onShowCreateRecordModal=e.onShowCreateRecordModal,this.onShowCreateRelatedRecordModal=e.onShowCreateRelatedRecordModal,this.onNetworkError=e.onNetworkError,this.onNetworkRequest=e.onNetworkRequest,this.invalidateCache=e.invalidateCache,this.getPendingCacheCount=e.getPendingCacheCount,this.createFileId=e.createFileId,this.performFileUpload=e.performFileUpload,this.pushHistory=e.pushHistory,this.appPath=e.appPath,this.onConsoleLog=e.onConsoleLog,this.onRunEventScript=e.onRunEventScript,this.onCompleteSetup=e.onCompleteSetup,this.isDebug=e.isDebug??!1,this.plugin&&(this.frameId=`${m}-${this.plugin.plugin_api_name}-${this.plugin.api_name}`),this.pluginApiName=this.executionPlugin?.plugin_api_name??this.plugin?.plugin_api_name??``,this.pluginApiName?(this.sessionData=e.sessionData[this.pluginApiName],this.setSessionData=t=>{e.setSessionData?.(this.pluginApiName,t)}):this.setSessionData=()=>{this.onError?.({message:`Script must be associated with a plugin to use session data`})}}handleMessage=async e=>{let t=JSON.parse(e.data),{action:n}=t;switch(n){case l.QUERY_REQUEST:{let e=t;await this.handleQueryRequest(e.id,e.method,e.url,e.payload,e.options);return}case l.UI_OUTPUT:{let e=t;this.handleUIOutput(e.markup,e.options);return}case l.COMPLETE_SETUP_REQUEST:{let e=t;await this.handleCompleteSetupRequest(e.id,e.payload,e.options);return}case l.IFRAME_OUTPUT:{let e=t;this.handleIframeOutput(e.url,e.allow,e.sandbox,e.preserve,e.name,e.isUsingProxy);return}case l.POSTFORMDATA_REQUEST:{let e=t;this.handleFormPostRequest(e.id,e.url,e.payload,e.createNewTab);return}case l.UPLOADFILE_REQUEST:{let e=t;await this.handleUploadFileRequest(e.id,e.payload);return}case l.SETSTATE:{let e=t;this.onStateChange?.(e.state);return}case l.DONE:{let e=t;this.handleDone(e.preserve,e.result);return}case u.ERROR:{let e=t;this.onError?.({message:e.error});return}case l.OPEN_WINDOW:{let e=t;this.handleOpenWindow(e.url,e.target,e.features,e.context);return}case l.COMMUNICATE:{let e=t;this.handleCommunication(e.type,e.recipient,e.args,e.params);return}case l.HIDE:{let{config:e}=t,n=!1;e.hideTrigger&&(n=!0),this.onStateChange?.({hidden:!0,triggerHidden:n});return}case l.SHOW:{let{config:e}=t,n=!1;e.showTrigger===!1&&(n=!0),this.onStateChange?.({hidden:!1,triggerHidden:n});return}case l.EXPAND:this.onStateChange?.({minimized:!1});return;case l.COLLAPSE:this.onStateChange?.({minimized:!0});return;case l.HIDE_HEADER:this.onStateChange?.({hideHeader:!0});return;case l.SHOW_HEADER:this.onStateChange?.({hideHeader:!1});return;case l.COPY_TO_CLIPBOARD:{let e=t;await this.copyToClipboard(e.text);return}case l.OPEN_CREATE_RECORD_MODAL_REQUEST:{let e=t;this.handleCreateRecordRequest(e.id,e.entityId);return}case l.OPEN_CREATE_RELATED_RECORD_MODAL_REQUEST:{let e=t;this.handleCreateRelatedRecordRequest(e.id,e.objectId,e.relatedEntityId);return}case l.SHOW_TOAST:{let e=t;this.showToast(e.message,e.toastOptions);return}case l.CLEAR_TOASTS:this.clearToasts();return;case l.REFRESH_TIMELINE:{let e=t;this.handleRefreshTimeline(e.entityId);return}case l.REFRESH_ENTITY:{let e=t;await this.handleRefreshEntity(e.entityId,e.id);return}case l.UPDATE_SESSION_DATA:{let e=t;this.handleSetSessionData(e.update);return}case l.INSTALL_THIRD_PARTY_SCRIPT_REQUEST:{let e=t;this.handleInstallThirdPartyScriptRequest(e.id,e.url,e.args);return}case l.PROMPT_REQUEST:{let e=t;this.handlePromptRequest(e.id,e.config,!1);return}case l.DYNAMIC_PROMPT_REQUEST:{let e=t;this.handlePromptRequest(e.id,e.config,!0);return}case l.SHOW_VIEW_IN_MODAL_REQUEST:{let e=t;this.handleShowViewInModalRequest(e.id,e.viewId,e.args,e.options);return}case l.CLOSE_MODAL_REQUEST:{let e=t;this.onCloseModal?.(e.values,e.canceled);return}case l.RELEASE_BLOCKING_SCRIPT:this.handleReleaseBlockingScript();return;case l.AUTHORIZE:{let e=t;this.handleAuthorize(e.serviceName,e.config);return}case l.CONSOLE_LOG:{let e=t,n=[];try{n=e.args.map(E)}catch{n=[`[unparseable plugin log]`]}try{console[e.level](...n)}catch{}try{this.onConsoleLog?.(e.level,n)}catch{}return}case l.RUN_EVENT_SCRIPT:{let e=t;this.onRunEventScript?.(e.scriptName,e.args),!this.onRunEventScript&&this.isDebug&&console.warn(`No handler for RUN_EVENT_SCRIPT: ${e.scriptName}`);return}default:return}};handleCommunication=(e,t,n,r)=>{if(e===d.SEND_MESSAGE_TO_FRAME){if(this.frameId){let e=document.getElementById(this.frameId);e&&e.contentWindow?.postMessage({...n?.payload??{},__kizen:{recipient:t,frameId:this.frameId}},n?.path??`*`)}}else if(e===d.CALL_THIRD_PARTY_SCRIPT)this.handleCallThirdPartyScript(t.type,r);else{let r=new CustomEvent(`integration:${e}`,{detail:{recipient:{...t,plugin:this.pluginApiName},args:n}});window.dispatchEvent(r)}};handleDone=(e,t)=>{this.waitForFrame||this.done(e,t)};postMessage=(e,t)=>{this.worker.postMessage(JSON.stringify({action:e,...t}))};handleSetSessionData=e=>{this.setSessionData(e)};handleQueryRequest=async(e,t,n,r,i)=>{try{let a=await this.onNetworkRequest?.(t,n,r,i);this.postMessage(u.QUERY_RESPONSE,{data:a,id:e})}catch(t){this.onNetworkError?.(t);let n=t instanceof D?{__kizenError:!0,proxyStatus:t.proxyStatus,upstreamStatus:t.upstreamStatus,upstreamResponse:t.upstreamResponse,message:t.message}:(()=>{if(t instanceof Error)return{message:t.message,name:t.name};try{let e=JSON.parse(JSON.stringify(t));if(typeof e==`object`&&e&&!Array.isArray(e))return e}catch{}return{message:String(t)}})();this.postMessage(u.QUERY_RESPONSE,{error:n,id:e})}};handleUIOutput=(e,t)=>{if(this.scriptUIRef?.current){let n=Bn(e,this.pluginApiName,t).html;this.scriptUIRef.current.innerHTML=n}};handleCompleteSetupRequest=async(e,t,n)=>{if(!this.onCompleteSetup){this.postMessage(u.COMPLETE_SETUP_RESPONSE,{id:e,success:!1,error:`Completing setup is not supported by this host`});return}try{await this.onCompleteSetup(t,n),this.postMessage(u.COMPLETE_SETUP_RESPONSE,{id:e,success:!0})}catch(t){this.postMessage(u.COMPLETE_SETUP_RESPONSE,{id:e,success:!1,error:t instanceof Error?t.message:`Setup configuration could not be saved`})}};onLoad=e=>{e.iframe&&(this.waitForFrame=!1,this.handleDone(e.preserve))};handleIframeOutput=(e,t=[],n=[],r=!1,i=``,a=!0)=>{if(this.scriptUIRef?.current){let o=_e(),s=ge(n);this.waitForFrame=!0;let c=document.createElement(`iframe`);a?c.allow=o:c.allow=he(t).join(`; `),c.name=i,c.src=e,s.forEach(e=>{c.sandbox.add(e)}),c.style.border=`none`,c.style.width=`100%`,c.style.height=`100%`,c.onload=this.onLoad.bind(this,{iframe:c,preserve:r}),this.frameId&&(c.id=this.frameId),this.scriptUIRef.current.replaceChildren(c)}};handleCreateRecordRequest=(e,t)=>{this.onShowCreateRecordModal?.(t,t=>{this.postMessage(u.CREATE_RECORD_RESPONSE,{id:e,data:t})})};handleCreateRelatedRecordRequest=(e,t,n)=>{this.onShowCreateRelatedRecordModal?.(t,n,t=>{this.postMessage(u.CREATE_RELATED_RECORD_RESPONSE,{id:e,data:t})})};showToast=(e,t)=>{this.onShowToast?.({message:e,variant:t?.variant??`success`,autohide:t?.autohide??!0})};clearToasts=()=>{this.onClearToasts?.()};copyToClipboard=async e=>{try{await navigator.clipboard.writeText(e)}catch(e){this.onError?.({message:e.message})}};handleRefreshTimeline=e=>{this.invalidateCache?.(`timeline`,e)};waitForIdleState=e=>new Promise(t=>{let n=0,r=setInterval(()=>{(this.getPendingCacheCount?.(e)??0)===0?(clearInterval(r),t(!0)):(n+=1,n>Math.floor(Qn/$n)&&(clearInterval(r),t(!1)))},$n)});handleRefreshEntity=async(e,t)=>{this.invalidateCache?.(`entity`,e);let n=await this.waitForIdleState(e);this.postMessage(u.REFRESH_ENTITY_RESPONSE,{id:t,data:{success:n}})};handleFormPostRequest=(e,t,n,r)=>{let i=document.createElement(`form`);i.method=`POST`,i.action=t,r&&(i.target=`_blank`);for(let e in n){let t=document.createElement(`input`);t.type=`hidden`,t.name=e,t.value=n[e],i.appendChild(t)}document.body.appendChild(i),i.submit(),r&&document.body.removeChild(i),this.postMessage(u.POSTFORMDATA_RESPONSE,{success:!0,id:e})};handleUploadFileRequest=async(e,t)=>{if(!this.performFileUpload){this.postMessage(u.UPLOADFILE_RESPONSE,{error:`File upload not supported`,id:e});return}let{file:n,isPublic:r=!1,fileName:i}=t,a=await(await fetch(n)).blob(),o=new File([a],i??`upload-${new Date().toISOString()}`,{type:a.type});o.$id=this.createFileId?.()??T();let s=await this.performFileUpload({file:o,id:o.$id,publicFile:r,source:`field_value`,handleProgress:e=>{this.postMessage(u.UPLOADFILE_PROGRESS,{fileId:e.id,progress:e.progress})},businessId:void 0});this.postMessage(u.UPLOADFILE_RESPONSE,{data:s,id:e})};waitForReadyState=(e,t,n=0)=>{e||t?.(!0),e?.()?t?.(!0):n<20?setTimeout(()=>{this.waitForReadyState(e,t,n+1)},n*50):t?.(!1)};handleCallThirdPartyScript=(e,t=[])=>{if(e&&x[e]){let n=x[e],r=window[n];r?.(...t)}};handleReleaseBlockingScript=()=>this.onReleaseBlockingScript?.(this.executionPlugin);handlePromptRequest=(e,t,n=!1)=>{this.onShowModal?this.onShowModal({...t,pluginApiName:this.pluginApiName,dynamic:n},(t={})=>{this.postMessage(u.PROMPT_RESPONSE,{id:e,data:t})}):this.postMessage(u.PROMPT_RESPONSE,{id:e,data:{canceled:!0}})};handleShowViewInModalRequest=(e,t,n,r)=>{this.onShowModal?this.onShowModal({viewId:t,...n!==void 0&&{args:n},pluginApiName:this.pluginApiName,...r?.size!==void 0&&{size:r.size},...r?.frameless?{frameless:!0}:{...r?.title!==void 0&&{title:r.title},...r?.confirmButton!==void 0&&{confirmButton:r.confirmButton},...r?.cancelButton!==void 0&&{cancelButton:r.cancelButton}}},(t={})=>{this.postMessage(u.PROMPT_RESPONSE,{id:e,data:t})}):this.postMessage(u.PROMPT_RESPONSE,{id:e,data:{canceled:!0}})};handleInstallThirdPartyScriptRequest=(e,t,n={})=>{let r=b(t);if(!r){this.postMessage(u.INSTALL_THIRD_PARTY_SCRIPT_RESPONSE,{data:{success:!1,url:t},id:e});return}let i=S[r];i(n);let a=document.createElement(`script`);a.onload=()=>{this.waitForReadyState(C[r],n=>{this.postMessage(u.INSTALL_THIRD_PARTY_SCRIPT_RESPONSE,{data:{success:!0,url:t,matched:n},id:e})})},a.onerror=()=>{this.postMessage(u.INSTALL_THIRD_PARTY_SCRIPT_RESPONSE,{data:{success:!1,url:t},id:e})},a.src=t,a.setAttribute(`data-script-url`,t),document.querySelectorAll(`[data-script-url="`+t+`"]`).length>0?this.waitForReadyState(C[r],n=>{this.postMessage(u.INSTALL_THIRD_PARTY_SCRIPT_RESPONSE,{data:{success:!0,url:t,reused:!0,matched:n},id:e})}):document.documentElement.firstChild?.appendChild(a)};applyNavigationContext=(e,t)=>{let n;try{n=Gn(t)}catch{return this.onError?.({message:`Failed to store context in sessionStorage.`}),e}try{return Kn(e,n)}catch{try{sessionStorage.removeItem(n)}catch{}return this.onError?.({message:`Failed to append the context key to the navigation URL.`}),e}};handleOpenWindow=(e,t,n,r)=>{let{pushHistory:i}=this;if(Xn(e)&&t!==`_blank`){let a=r?this.applyNavigationContext(e,r):e;i?i(a):window.open(a,t,n);return}if(Xn(e)&&t===`_blank`&&r&&Zn(e)){let i;try{i=Gn(r)}catch{this.onError?.({message:`Failed to store context in sessionStorage.`}),window.open(e,t,n);return}window.open(Kn(e,i),`_blank`),sessionStorage.removeItem(i);return}window.open(e,t,n)};handleAuthorize=(e,t={})=>{let n=new URLSearchParams;if(t.successRedirectPath&&n.append(`success_redirect_path`,t.successRedirectPath),t.errorRedirectPath&&n.append(`error_redirect_path`,t.errorRedirectPath),!this.appPath){this.onError?.({message:`App path is not defined.`});return}if(!this.pluginApiName){this.onError?.({message:`Plugin API name is not defined.`});return}let r=n.toString();this.handleOpenWindow(`${this.appPath}/external-integrations/business-plugin-apps/${this.pluginApiName}/services/${encodeURIComponent(e)}/authorize${r?`?${r}`:``}`,`_blank`,``)};run=(e,t,n)=>{let r=w();this.postMessage(l.RUN,{script:e,setup:t,args:n,sessionData:this.sessionData,pluginComponentId:this.pluginComponentId,pluginApiName:this.pluginApiName,location:r})}},tr=async({scriptBody:e,user:t,teamMember:n,business:r,onError:i,onReleaseBlockingScript:a,setLoadingState:o,clientObject:s,scriptUIRef:c,onStateChange:l,workerName:u,context:d,args:f=``,plugin:p,onShowToast:m,onClearToasts:h,terminators:g,executionPlugin:_,sessionData:v,setSessionData:y,onShowModal:b,onCompleteSetup:x,onCloseModal:S,onShowCreateRecordModal:C,onShowCreateRelatedRecordModal:w,onNetworkError:T,onNetworkRequest:ee,appPath:te,pushHistory:ne,createFileId:E,performFileUpload:D,getPendingCacheCount:O,invalidateCache:k,onConsoleLog:re,onRunEventScript:ie})=>{let ae=En(`script-runner-logging`),A;return A=u===`recordDetail`?new Worker(new URL(`/assets/recordDetail.worker-DrTKYLJc.js`,``+import.meta.url),{type:`module`}):u===`genericPlugin`?new Worker(new URL(`/assets/generic.worker-DKCeuXG7.js`,``+import.meta.url),{type:`module`}):u===`floatingFramePlugin`?new Worker(new URL(`/assets/floatingFrame.worker-Cy3ysIc7.js`,``+import.meta.url),{type:`module`}):new Worker(new URL(`/assets/calendarSource.worker-DjLHW14n.js`,``+import.meta.url),{type:`module`}),new Promise(u=>{let j=Dn(e),oe=Dn(f),M=`${p?.plugin_api_name??``}-${p?.api_name??``}-${p?.worker_key??``}-${String(j)}-${String(oe)}`,N=`${p?.plugin_api_name??``}-${p?.api_name??``}`;_?.field_type?(M=`${_.plugin_api_name??``}-${_.worker_key??``}-${_.field_type}-${String(j)}-${String(oe)}`,N=`${_.plugin_api_name??``}-${_.field_type??_.script_id}`):_&&(M=`${_.plugin_api_name??``}-${_.worker_key??``}-${_.api_name}-${String(j)}-${String(oe)}`,N=`${_.plugin_api_name??``}-${_.api_name}`),g.current[M]&&(g.current[M]?.forEach(e=>{e()}),g.current[M]=[]),g.current[M]??=[],g.current[M]?.push(()=>{A.terminate()});let P=new er({worker:A,done:(e,t)=>{o(!1),e||(g.current[M]?.forEach(e=>{e()}),g.current[M]=[]),u(t)},onError:i,onReleaseBlockingScript:a,scriptUIRef:c,onStateChange:l,plugin:p,executionPlugin:_,onShowToast:m,onClearToasts:h,sessionData:v,setSessionData:y,pluginComponentId:N,onShowModal:b,onCompleteSetup:x,onCloseModal:S,onShowCreateRecordModal:C,onShowCreateRelatedRecordModal:w,onNetworkError:T,pushHistory:ne,onNetworkRequest:ee,appPath:te,createFileId:E,performFileUpload:D,getPendingCacheCount:O,invalidateCache:k,onConsoleLog:re,onRunEventScript:ie,isDebug:ae});o(!0),P.run(e,{...d,user:t,teamMember:n,business:r,clientObject:s,appPath:te,isDebug:ae},f)})},nr=(e,t)=>{let n=new Worker(new URL(`/assets/expression.worker-Cin-WNVB.js`,``+import.meta.url),{type:`module`});return new Promise(r=>{n.onmessage=e=>{let t=JSON.parse(e.data);n.terminate(),r(t.result)};let i=En(`script-runner-logging`);n.postMessage(JSON.stringify({expression:e,args:t,isDebug:i}))})},rr=async(e,t)=>await nr(e,t),ir=async(e,t)=>await nr(e,t),ar=async(e,t)=>await nr(e,t),or=async(e,t)=>await nr(e,t),sr=e=>{let t={...e,data:e.data.body??e.data,status:e.data.status_code??e.status};return{response:t,upstreamStatus:t.status,upstreamResponse:e.data.body}},cr=(e,t,n)=>new D(e,t,n),lr=(e,t)=>new D(e??500,void 0,void 0,t??`An unknown error occurred in the proxy`),ur=e=>{let{response:t,upstreamStatus:n,upstreamResponse:r}=sr(e);if(n>=400)throw cr(200,n,r);return t},dr=(e,t,n)=>{let r=P(t).filter(e=>e.type===`api_key`);if(r.length===0)return{sanitized:e,secretsToCreate:[]};let i=n?new Set(n):void 0,a={...e},o=[];for(let t of r){let n=e[t.key];if(n){if(i&&!i.has(t.key)){a[t.key]={type:`api_key`,hasValue:!!n.hasValue};continue}if(n.value){if(!t.secret)throw Error(`api_key field "${t.key}" does not declare a secret`);o.push({fieldKey:t.key,secretName:t.secret,value:n.value}),a[t.key]={type:`api_key`,hasValue:!0}}else a[t.key]={type:`api_key`,hasValue:!!n.hasValue}}}return{sanitized:a,secretsToCreate:o}},fr=async(e,t,n)=>{let r={},i={},a=Object.keys(e),o=Dn(JSON.stringify(t));for(let t of a)if(A(t)){let{actionApiName:n,objectId:i}=oe(t);if(n&&i){let a=re(n),o=r[a]??{};r[a]={...o,menuFlags:{...o.menuFlags??{},[i]:!!e[t]?.value}}}}else j(t)?r[t]={...r[t],...e[t]}:e[t]&&(i[t]=e[t]);let{sanitized:s,secretsToCreate:c}=dr(i,t,n?.includedKeys);if(n?.saveSecret)for(let e of c)await n.saveSecret({pluginApiName:n.pluginApiName??``,secretName:e.secretName,value:e.value});return{partialNewConfig:{__kizen_setup_assistant_values:s,__kizen_setup_assistant_hash:o,__kizen_clean_config:se(t,s)},actionsToLink:r,secretsToCreate:c}},pr={go:`https://app.go.kizen.com/api`,fmo:`https://app.fmo.kizen.com/api`,staging:`https://staging.kizen.com/api`,integration:`https://integration.kizen.dev/api`,test1:`https://test1.kizen.dev/api`},mr={go:`https://go.kizen.com`,fmo:`https://fmo.kizen.com`,staging:`https://v2.staging.kizen.com`,integration:`https://v2.integration.kizen.dev`,test1:`https://test1.kizen.dev`};function hr(){let{apiKey:e,userId:t,businessId:i,environment:a}=n(),o=pr[a];return(0,r.useCallback)((n,r={})=>fetch(`/api/proxy${n}`,{...r,headers:{"x-proxy-target":o,"X-API-KEY":e,"X-USER-ID":t,"X-BUSINESS-ID":i,...r.headers}}),[o,e,t,i])}var gr=e=>async(t,n,r,i)=>{if(n.startsWith(`/external-integrations/proxy`))try{let a=await e.request(t,n,r,i);return ur({data:a,status:a.status_code??200})}catch(e){throw e instanceof D?e:o(e)?lr(e.response?.status,e.response?.data?.error):e}else return{data:await e.request(t,n,r,i)}};export{ee as A,me as C,P as D,ae as E,f as F,c as I,m as M,g as N,M as O,p as P,ir as S,re as T,Nn as _,fr as a,ar as b,Mn as c,Bn as d,Rn as f,qn as g,An as h,hr as i,d as j,fe as k,Pn as l,En as m,pr as n,Jn as o,On as p,gr as r,Yn as s,mr as t,zn as u,rr as v,se as w,tr as x,or as y};
@@ -1 +1 @@
1
- import{n as e}from"./api--Ax6VWLq.js";function t(t){let{apiKey:n,userId:r,businessId:i,environment:a}=t;return{queryKey:[`bootstrap`,a,n,r,i],enabled:!!(n&&r&&i),queryFn:async()=>{let t=await fetch(`/api/proxy/auth/bootstrap`,{headers:{"x-proxy-target":e[a],"X-API-KEY":n,"X-USER-ID":r,"X-BUSINESS-ID":i}});if(!t.ok)throw Error(`Bootstrap failed: ${String(t.status)} ${t.statusText}`);return t.json()},retry:!1}}export{t};
1
+ import{n as e}from"./api--pW2v3sH.js";function t(t){let{apiKey:n,userId:r,businessId:i,environment:a}=t;return{queryKey:[`bootstrap`,a,n,r,i],enabled:!!(n&&r&&i),queryFn:async()=>{let t=await fetch(`/api/proxy/auth/bootstrap`,{headers:{"x-proxy-target":e[a],"X-API-KEY":n,"X-USER-ID":r,"X-BUSINESS-ID":i}});if(!t.ok)throw Error(`Bootstrap failed: ${String(t.status)} ${t.statusText}`);return t.json()},retry:!1}}export{t};
@@ -23,7 +23,7 @@
23
23
  this.onError({ message: "The script has a syntax error and could not be parsed" });
24
24
 
25
25
  this.__cleanup();
26
- `;return{fn:new l(e),functionBody:e}}},d=class{promises;isDebug;constructor({isDebug:e=!1}){this.promises=new Map,this.isDebug=e}delete(e){this.isDebug&&console.log(`Deleting promise ${e}`),this.promises.delete(e)}get(e){return this.isDebug&&console.log(`Getting promise ${e}`),this.promises.get(e)}set(e,t,n){this.promises.set(e,{resolve:t,reject:n})}id(){return c()}register(e,t){let n=this.id();return this.set(n,e,t),n}resolve(e,t){this.get(e)?.resolve(t),this.delete(e)}reject(e,t){this.get(e)?.reject(t),this.delete(e)}},f=e=>({__kzConsole:`unserializable`,reason:e}),p=e=>{try{return String(e)}catch{return`[unserializable]`}},m=(e,t)=>{try{if(e===void 0)return{__kzConsole:`undefined`};if(e===null)return null;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(typeof e==`bigint`)return{__kzConsole:`bigint`,value:e.toString()};if(typeof e==`symbol`)return{__kzConsole:`symbol`,value:e.toString()};if(typeof e==`function`)return{__kzConsole:`function`,name:e.name||`anonymous`};if(e instanceof Error){let t=`Error`,n=``,r;try{t=e.name}catch{}try{n=e.message}catch{}try{r=e.stack}catch{}return{__kzConsole:`error`,name:t,message:n,stack:r}}if(e instanceof Date)try{return{__kzConsole:`date`,value:e.toISOString()}}catch{return f(`invalid Date`)}if(e instanceof RegExp)return{__kzConsole:`regexp`,value:p(e)};if(t.has(e))return{__kzConsole:`circular`};if(t.add(e),Array.isArray(e)){let n=[];for(let r of e)try{n.push(m(r,t))}catch{n.push(f(`threw during read`))}return n}let n={},r=[];try{r=Object.keys(e)}catch{return f(`cannot enumerate keys`)}for(let i of r)try{n[i]=m(e[i],t)}catch{n[i]=f(`threw during read`)}return n}catch{return f(`serialization failed`)}},h=e=>{try{return m(e,new WeakSet)}catch{return f(`serialization failed`)}},g=class e extends Error{proxyStatus;upstreamStatus;upstreamResponse;constructor(t,n,r,i){super(i??r?.error?.message??(n?`Request failed with status code ${String(n)}`:`Request failed with proxy status code ${String(t)}`)),this.name=`KizenRequestError`,this.proxyStatus=t,this.upstreamStatus=n,this.upstreamResponse=r,Object.setPrototypeOf(this,e.prototype)}},_=`__kizen__action__`,v=e=>`${_}${e}`,y=e=>({key:v(e.api_name),type:`custom_object`,label:e.name,allow_multiple:!0}),b=[`description`,`container`,`qr`,`image`,`link`],x=(e,t)=>{let n=(e.fields??[]).filter(e=>!b.includes(e.type)).map(e=>({...e,when:t?`(${t}) && (${e.when??`true`})`:e.when})),r=(e.fields??[]).filter(e=>e.type===`container`).flatMap(e=>x(e,e.when)),i=e.actions?.filter(e=>e.hint_object_name)??[];return[...n,...r,...i.map(e=>({...y(e),match_hint:e.hint_object_name??``}))]},S=(e,t)=>{let n=x(e).reduce((e,t)=>({...e,[t.key]:t}),{}),r=Object.keys(t),i={};return r.forEach(e=>{let r=t[e],a=n[e];if(a?.type){switch(a.type){case`boolean`:let t=r;if(!t)return;i[e]=t.value;return;case`custom_object`:{let t=r;if(!t)return;i[e]={objectId:t.value?.id,objectName:t.value?.objectName};return}case`field`:{let t=r;if(!t?.value)return;Array.isArray(t.value)?i[e]=t.value.map(e=>({fieldId:e.value,fieldName:e.label,objectId:t.associatedObject?.id,objectName:t.associatedObject?.name})):typeof t.value==`object`&&typeof t.associatedObject==`object`&&(i[e]={fieldId:t.value.value,fieldName:t.value.label,objectId:t.associatedObject.id,objectName:t.associatedObject.name});return}case`number`:{let t=r;if(!t)return;try{let n=Number(t.value);if(!n&&n!==0)return;i[e]=n}catch{i[e]=NaN}return}case`select`:{let t=r;if(!t)return;i[e]=t.value;return}case`text`:{let t=r?.value;if(t){i[e]=t;return}let n=a.default;n&&(i[e]=n);return}case`description`:case`container`:case`qr`:case`image`:case`link`:return}return r?.value}}),i},C=(t,n)=>r=>async(i,a,o)=>new Promise((s,c)=>{let l=n.register(s,c);t.postMessage(JSON.stringify({action:e.QUERY_REQUEST,id:l,method:r,url:i,payload:a,options:o}))}),w=(t,n)=>(r,i,a=!0)=>new Promise((o,s)=>{let c=n.register(o,s);t.postMessage(JSON.stringify({action:e.POSTFORMDATA_REQUEST,url:r,id:c,payload:i,createNewTab:a}))}),T=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.PROMPT_REQUEST,id:o,config:r}))}),E=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.DYNAMIC_PROMPT_REQUEST,id:o,config:r}))}),D=(e,n,r)=>{switch(e){case t.QUERY_RESPONSE:{let{id:e,data:t,error:i}=JSON.parse(n.data);if(i){let t=typeof i==`object`&&`__kizenError`in i?new g(i.proxyStatus,i.upstreamStatus,i.upstreamResponse,i.message):i;r.reject(e,t)}else r.resolve(e,t);break}case t.POSTFORMDATA_RESPONSE:{let{id:e,success:t}=JSON.parse(n.data);t?r.resolve(e):r.reject(e);break}case t.UPLOADFILE_RESPONSE:{let{id:e,data:t,error:i}=JSON.parse(n.data);t?r.resolve(e,t):r.reject(e,i);break}case t.COMPLETE_SETUP_RESPONSE:{let{id:e,success:t,error:i}=JSON.parse(n.data);t?r.resolve(e):r.reject(e,Error(i??`Setup configuration could not be saved`));break}case t.INSTALL_THIRD_PARTY_SCRIPT_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);t.success?r.resolve(e,t):r.reject(e);break}case t.PROMPT_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.CREATE_RECORD_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.CREATE_RELATED_RECORD_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.REFRESH_ENTITY_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);t.success?r.resolve(e,!0):r.reject(e);break}}},O=`plugin-assets.kizen.dev`,k=`plugin-assets.kizen.com`,A=[O,k],j=``,M=j!==``,N=e=>M&&e===j||A.some(t=>e===`https://${t}`),P=e=>{try{return N(new URL(e).origin)}catch{return!1}},F={useDevMode:!1,__dangerouslySkipProxy:!1},I=(e,t=F,n=``)=>{let{useDevMode:r,__dangerouslySkipProxy:i}=t,a=``;if(i)a=e;else try{a=N(new URL(e).origin)?e:`${M?j:`https://${r?O:k}`}?url=${encodeURIComponent(e)}&allow=${encodeURIComponent(n)}`}catch(t){console.warn(`Failed to parse URL: ${e}. Apps should not attempt to display invalid URLs. Error: ${t.message}`),a=``}let o=P(a);return{url:a,isUsingProxy:o}},L=`integration:${n.RUN_FRAME_SCRIPT}`,R=`integration:${n.RUN_BLOCK_SCRIPT}`,z=class{instance;constructor(e){this.instance=e}runFrameScript(t,r,i){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.RUN_FRAME_SCRIPT,eventName:L,recipient:{frame:t,script:r},args:i}))}runBlockScript(t,r,i){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.RUN_BLOCK_SCRIPT,eventName:R,recipient:{block:t,script:r},args:i}))}sendMessageToOwnFrame(t,r){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.SEND_MESSAGE_TO_FRAME,args:{payload:t,path:r}}))}},B=async e=>{let t=null;try{t=await e.json()}catch{}return{status:e.status,statusText:e.statusText,body:t}},V=(e,t,n={},r=``)=>`(function() { ${r}
26
+ `;return{fn:new l(e),functionBody:e}}},d=class{promises;isDebug;constructor({isDebug:e=!1}){this.promises=new Map,this.isDebug=e}delete(e){this.isDebug&&console.log(`Deleting promise ${e}`),this.promises.delete(e)}get(e){return this.isDebug&&console.log(`Getting promise ${e}`),this.promises.get(e)}set(e,t,n){this.promises.set(e,{resolve:t,reject:n})}id(){return c()}register(e,t){let n=this.id();return this.set(n,e,t),n}resolve(e,t){this.get(e)?.resolve(t),this.delete(e)}reject(e,t){this.get(e)?.reject(t),this.delete(e)}},f=e=>({__kzConsole:`unserializable`,reason:e}),p=e=>{try{return String(e)}catch{return`[unserializable]`}},m=(e,t)=>{try{if(e===void 0)return{__kzConsole:`undefined`};if(e===null)return null;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(typeof e==`bigint`)return{__kzConsole:`bigint`,value:e.toString()};if(typeof e==`symbol`)return{__kzConsole:`symbol`,value:e.toString()};if(typeof e==`function`)return{__kzConsole:`function`,name:e.name||`anonymous`};if(e instanceof Error){let t=`Error`,n=``,r;try{t=e.name}catch{}try{n=e.message}catch{}try{r=e.stack}catch{}return{__kzConsole:`error`,name:t,message:n,stack:r}}if(e instanceof Date)try{return{__kzConsole:`date`,value:e.toISOString()}}catch{return f(`invalid Date`)}if(e instanceof RegExp)return{__kzConsole:`regexp`,value:p(e)};if(t.has(e))return{__kzConsole:`circular`};if(t.add(e),Array.isArray(e)){let n=[];for(let r of e)try{n.push(m(r,t))}catch{n.push(f(`threw during read`))}return n}let n={},r=[];try{r=Object.keys(e)}catch{return f(`cannot enumerate keys`)}for(let i of r)try{n[i]=m(e[i],t)}catch{n[i]=f(`threw during read`)}return n}catch{return f(`serialization failed`)}},h=e=>{try{return m(e,new WeakSet)}catch{return f(`serialization failed`)}},g=class e extends Error{proxyStatus;upstreamStatus;upstreamResponse;constructor(t,n,r,i){super(i??r?.error?.message??(n?`Request failed with status code ${String(n)}`:`Request failed with proxy status code ${String(t)}`)),this.name=`KizenRequestError`,this.proxyStatus=t,this.upstreamStatus=n,this.upstreamResponse=r,Object.setPrototypeOf(this,e.prototype)}},_=`__kizen__action__`,v=e=>`${_}${e}`,y=e=>({key:v(e.api_name),type:`custom_object`,label:e.name,allow_multiple:!0}),b=[`description`,`container`,`qr`,`image`,`link`],x=(e,t)=>{let n=(e.fields??[]).filter(e=>!b.includes(e.type)).map(e=>({...e,when:t?`(${t}) && (${e.when??`true`})`:e.when})),r=(e.fields??[]).filter(e=>e.type===`container`).flatMap(e=>x(e,e.when)),i=e.actions?.filter(e=>e.hint_object_name)??[];return[...n,...r,...i.map(e=>({...y(e),match_hint:e.hint_object_name??``}))]},S=(e,t)=>{let n=x(e).reduce((e,t)=>({...e,[t.key]:t}),{}),r=Object.keys(t),i={};return r.forEach(e=>{let r=t[e],a=n[e];if(a?.type){switch(a.type){case`boolean`:let t=r;if(!t)return;i[e]=t.value;return;case`custom_object`:{let t=r;if(!t)return;i[e]={objectId:t.value?.id,objectName:t.value?.objectName};return}case`field`:{let t=r;if(!t?.value)return;Array.isArray(t.value)?i[e]=t.value.map(e=>({fieldId:e.value,fieldName:e.label,objectId:t.associatedObject?.id,objectName:t.associatedObject?.name})):typeof t.value==`object`&&typeof t.associatedObject==`object`&&(i[e]={fieldId:t.value.value,fieldName:t.value.label,objectId:t.associatedObject.id,objectName:t.associatedObject.name});return}case`number`:{let t=r;if(!t)return;try{let n=Number(t.value);if(!n&&n!==0)return;i[e]=n}catch{i[e]=NaN}return}case`select`:{let t=r;if(!t)return;i[e]=t.value;return}case`radio`:{let t=r;if(!t?.value)return;i[e]=t.value;return}case`text`:{let t=r?.value;if(t){i[e]=t;return}let n=a.default;n&&(i[e]=n);return}case`description`:case`container`:case`qr`:case`image`:case`link`:case`api_key`:return}return r?.value}}),i},C=(t,n)=>r=>async(i,a,o)=>new Promise((s,c)=>{let l=n.register(s,c);t.postMessage(JSON.stringify({action:e.QUERY_REQUEST,id:l,method:r,url:i,payload:a,options:o}))}),w=(t,n)=>(r,i,a=!0)=>new Promise((o,s)=>{let c=n.register(o,s);t.postMessage(JSON.stringify({action:e.POSTFORMDATA_REQUEST,url:r,id:c,payload:i,createNewTab:a}))}),T=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.PROMPT_REQUEST,id:o,config:r}))}),E=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.DYNAMIC_PROMPT_REQUEST,id:o,config:r}))}),D=(e,n,r)=>{switch(e){case t.QUERY_RESPONSE:{let{id:e,data:t,error:i}=JSON.parse(n.data);if(i){let t=typeof i==`object`&&`__kizenError`in i?new g(i.proxyStatus,i.upstreamStatus,i.upstreamResponse,i.message):i;r.reject(e,t)}else r.resolve(e,t);break}case t.POSTFORMDATA_RESPONSE:{let{id:e,success:t}=JSON.parse(n.data);t?r.resolve(e):r.reject(e);break}case t.UPLOADFILE_RESPONSE:{let{id:e,data:t,error:i}=JSON.parse(n.data);t?r.resolve(e,t):r.reject(e,i);break}case t.COMPLETE_SETUP_RESPONSE:{let{id:e,success:t,error:i}=JSON.parse(n.data);t?r.resolve(e):r.reject(e,Error(i??`Setup configuration could not be saved`));break}case t.INSTALL_THIRD_PARTY_SCRIPT_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);t.success?r.resolve(e,t):r.reject(e);break}case t.PROMPT_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.CREATE_RECORD_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.CREATE_RELATED_RECORD_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.REFRESH_ENTITY_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);t.success?r.resolve(e,!0):r.reject(e);break}}},O=`plugin-assets.kizen.dev`,k=`plugin-assets.kizen.com`,A=[O,k],j=``,M=j!==``,N=e=>M&&e===j||A.some(t=>e===`https://${t}`),P=e=>{try{return N(new URL(e).origin)}catch{return!1}},F={useDevMode:!1,__dangerouslySkipProxy:!1},I=(e,t=F,n=``)=>{let{useDevMode:r,__dangerouslySkipProxy:i}=t,a=``;if(i)a=e;else try{a=N(new URL(e).origin)?e:`${M?j:`https://${r?O:k}`}?url=${encodeURIComponent(e)}&allow=${encodeURIComponent(n)}`}catch(t){console.warn(`Failed to parse URL: ${e}. Apps should not attempt to display invalid URLs. Error: ${t.message}`),a=``}let o=P(a);return{url:a,isUsingProxy:o}},L=`integration:${n.RUN_FRAME_SCRIPT}`,R=`integration:${n.RUN_BLOCK_SCRIPT}`,z=class{instance;constructor(e){this.instance=e}runFrameScript(t,r,i){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.RUN_FRAME_SCRIPT,eventName:L,recipient:{frame:t,script:r},args:i}))}runBlockScript(t,r,i){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.RUN_BLOCK_SCRIPT,eventName:R,recipient:{block:t,script:r},args:i}))}sendMessageToOwnFrame(t,r){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.SEND_MESSAGE_TO_FRAME,args:{payload:t,path:r}}))}},B=async e=>{let t=null;try{t=await e.json()}catch{}return{status:e.status,statusText:e.statusText,body:t}},V=(e,t,n={},r=``)=>`(function() { ${r}
27
27
  return ${`(${e.toString()})({ state: {{${t}}}, args: ${JSON.stringify(n)}, utils: __kizen_utils })`}; })()`,H=class{user;teamMember;business;clientObject;appPath;dataCache=new Map;queryOptions={};api;postFormData;executionTimer=0;setupExecutions=0;cleanupExecutions=0;isDebug=!1;scriptBody;internalState={indicator:`none`};instance;breakOnException=!1;args;communicate;shouldPreserve=!1;uploadFileHandler;internalSessionData;pluginComponentId;installThirdPartyScriptHandler;promptHandler;dynamicPromptHandler;showViewInModalHandler;closeModalHandler;refreshEntityHandler;openCreateRecordHandler;openCreateRelatedRecordHandler;completeSetupHandler;runnerType;pluginApiName;tempPromptState={};partialLocation;constructor({user:e,teamMember:t,business:n,clientObject:r,appPath:i,isDebug:a,kizenRequest:o,postFormData:s,scriptBody:c,instance:l,args:u,uploadFile:d,sessionData:f,pluginComponentId:p,installThirdPartyScript:m,prompt:h,refreshEntity:g,openCreateRecord:_,openCreateRelatedRecord:v,pluginApiName:y,dynamicPrompt:b,showViewInModal:x,closeModal:S,completeSetup:C,location:w}){this.user=e,this.teamMember=t,this.business=n,this.clientObject=r,this.partialLocation=w,this.appPath=i,this.isDebug=a??!1,this.api={get:o(`get`),post:o(`post`),put:o(`put`),delete:o(`delete`),patch:o(`patch`)},this.postFormData=s,this.scriptBody=c,this.instance=l,this.communicate=new z(l),this.uploadFileHandler=d,this.internalSessionData=f??{},this.pluginComponentId=p,this.installThirdPartyScriptHandler=m,this.promptHandler=h,this.refreshEntityHandler=g,this.openCreateRecordHandler=_,this.openCreateRelatedRecordHandler=v,this.runnerType=`base`,this.pluginApiName=y,this.dynamicPromptHandler=b,this.showViewInModalHandler=x,this.closeModalHandler=S,this.completeSetupHandler=C;try{this.args=JSON.parse(u??`{}`)}catch{this.args={}}}onError(e){if(this.breakOnException)debugger;this.instance.postMessage(JSON.stringify({action:t.ERROR,error:e?.message}))}set debug(e){this.isDebug=e,this.breakOnException=e}set preserve(e){this.shouldPreserve=e}get preserve(){return this.shouldPreserve}parseDate(e){return e.split(`-`)}parsePhone(e){return e.replace(/\+/g,``)}openWindow(t,n=`_blank`,r){this.instance.postMessage(JSON.stringify({action:e.OPEN_WINDOW,url:t,target:n,features:`noopener noreferrer`,context:r}))}authorize(t,n={}){if(!t)throw Error(`Service name is required to authorize`);this.instance.postMessage(JSON.stringify({action:e.AUTHORIZE,serviceName:t,config:{successRedirectPath:n.successRedirectPath??`/marketplace/${this.pluginApiName}/auth`,errorRedirectPath:n.errorRedirectPath??`/marketplace/${this.pluginApiName}/auth`}}))}getServiceUrl(e,t){if(!e)throw Error(`Service name is required to get a service url`);let n=`/external-integrations/proxy/${this.pluginApiName}/${e}`;return t.startsWith(`/`)?`${n}${t}`:`${n}/${t}`}get currentBusiness(){return this.business}get applicationPath(){return this.appPath}get currentUser(){return{profile:{id:this.teamMember?.id??``,full_name:this.teamMember?.full_name??``,first_name:this.teamMember?.first_name??``,last_name:this.teamMember?.last_name??``,email:this.teamMember?.email??``,phone:this.teamMember?.phone??``,created:this.teamMember?.created??``,crm_client_id:this.user?.crm_client_id??``}}}get sessionData(){return this.internalSessionData}get config(){return this.args.__kizen_clean_config?new Proxy(this.args.__kizen_clean_config??{},{get:(e,t)=>{if(Reflect.has(e,t))return Reflect.get(e,t)}}):{}}get location(){return new Proxy(this.partialLocation,{get:(e,t)=>{if(t===`toJSON`)return()=>this.partialLocation;if(Reflect.has(e,t))return Reflect.get(e,t);throw Error(`Property ${String(t)} is not available on location object for plugin apps`)}})}get userConfig(){let e=this.args.__kizen_user_config?.__kizen_clean_config;return e?new Proxy(e,{get:(e,t)=>{if(Reflect.has(e,t))return Reflect.get(e,t)}}):{}}setSessionData(t){if(typeof t!=`object`)throw Error(`Invalid session update with type ${typeof t}`);if(Array.isArray(t))throw Error(`Invalid session update with type array`);this.internalSessionData={...this.internalSessionData,...t},this.instance.postMessage(JSON.stringify({action:e.UPDATE_SESSION_DATA,update:t}))}async get(e,t){try{if(this.isRelativeUrl(e)){let n=this.dataCache.get(e);if(n&&!t?.ignoreCache)return t?.returnErrors?[n.data,null]:n.data;let{data:r}=await this.api.get(e,{...this.queryOptions,headers:this.buildHeaders(t?.headers)});return this.dataCache.set(e,{ts:Date.now(),data:r}),t?.returnErrors?[r,null]:r}else{let n=await fetch(e,{method:`GET`,headers:new Headers(t?.headers),credentials:t?.credentials??`same-origin`});if(!n.ok)throw await B(n);let r=await n.json();return t?.returnErrors?[r,null]:r}}catch(e){if(t?.returnErrors)return[null,e];this.onError(e)}}async getWithErrors(e,t){return this.get(e,{...t,returnErrors:!0})}async getUserConfig(){if(!this.args.pluginId||!this.pluginComponentId)throw Error(`User config is not available for scripts not associated to a plugin or plugin component`);return(await this.get(`/employee/mine/configs/plugins/${this.args.pluginId}`,{ignoreCache:!0})).config?.[this.pluginComponentId]??{}}async setUserConfig(e){if(!this.args.pluginId||!this.pluginComponentId)throw Error(`User config is not available for scripts not associated to a plugin or plugin component`);let t=await this.get(`/employee/mine/configs/plugins/${this.args.pluginId}`,{ignoreCache:!0});return await this.post(`/employee/mine/configs/plugins/${this.args.pluginId}`,{config:{...t?.config,[this.pluginComponentId]:{...t?.config?.[this.pluginComponentId],...e}}})}async completeSetup(e,t){if(!this.pluginApiName)throw Error(`completeSetup is not available for scripts not associated to a plugin`);let n=e;if(typeof n!=`object`||!n||Array.isArray(n))throw Error(`completeSetup requires a configuration object`);let r=Object.getPrototypeOf(n);if(r!==Object.prototype&&r!==null)throw Error(`completeSetup requires a plain configuration object`);await this.completeSetupHandler(e,t)}async patch(e,t,n){try{if(this.isRelativeUrl(e)){let{data:r}=await this.api.patch(e,t,{...this.queryOptions,headers:n?.headers});return n?.returnErrors?[r,null]:r}else{let r=await fetch(e,{method:`PATCH`,body:t?JSON.stringify(t):null,headers:new Headers(n?.headers),credentials:n?.credentials??`same-origin`});if(!r.ok)throw await B(r);let i=await r.json();return n?.returnErrors?[i,null]:i}}catch(e){if(n?.returnErrors)return[null,e];this.onError(e)}}async patchWithErrors(e,t,n){return this.patch(e,t,{...n,returnErrors:!0})}async post(e,t,n){try{if(this.isRelativeUrl(e)){let{data:r}=await this.api.post(e,t,{...this.queryOptions,headers:this.buildHeaders(n?.headers)});return n?.returnErrors?[r,null]:r}else{let r=await fetch(e,{method:`POST`,body:t?JSON.stringify(t):null,headers:new Headers(n?.headers),credentials:n?.credentials??`same-origin`});if(!r.ok)throw await B(r);let i=await r.json();return n?.returnErrors?[i,null]:i}}catch(e){if(n?.returnErrors)return[null,e];this.onError(e)}}async postWithErrors(e,t,n){return this.post(e,t,{...n,returnErrors:!0})}async delete(e,t){try{if(this.isRelativeUrl(e)){let{data:n}=await this.api.delete(e,{...this.queryOptions,headers:this.buildHeaders(t?.headers)});return t?.returnErrors?[n,null]:n}else{let n=await fetch(e,{method:`DELETE`,headers:new Headers(t?.headers),credentials:t?.credentials??`same-origin`});if(!n.ok)throw await B(n);let r=null;return n.status!==204&&(r=await n.json()),t?.returnErrors?[r,null]:r}}catch(e){if(t?.returnErrors)return[null,e];this.onError(e)}}async deleteWithErrors(e,t){return this.delete(e,{...t,returnErrors:!0})}async openCreateRecordModal(e){return this.openCreateRecordHandler(e)}async openCreateRelatedRecordModal(e,t){return this.openCreateRelatedRecordHandler(e,t)}showToast(t,n){this.instance.postMessage(JSON.stringify({action:e.SHOW_TOAST,message:t,toastOptions:n}))}clearToasts(){this.instance.postMessage(JSON.stringify({action:e.CLEAR_TOASTS}))}outputUI(t,n){this.instance.postMessage(JSON.stringify({action:e.UI_OUTPUT,markup:t,options:n}))}runEventScript(t,n={}){if(!t)throw Error(`A script name is required to run an event script`);this.instance.postMessage(JSON.stringify({action:e.RUN_EVENT_SCRIPT,scriptName:t,args:n}))}prompt(e){return this.promptHandler(e)}async showViewInModal(e,t){return this.showViewInModalHandler(e,t)}closeModal(e,t){this.closeModalHandler(e,t)}async dynamicPrompt(e){let t=`__kizen_state`,n=`const __kizen_utils = {};
28
28
  `;if(e.registerUtils){let t=Object.keys(e.registerUtils);n+=t.map(t=>{let n=e.registerUtils?.[t];if(typeof n!=`function`)throw Error(`Registered util ${t} is not a function, got ${typeof n}`);return`__kizen_utils["${t}"] = (${n.toString()});`}).join(`
29
29
  `)}let r=e.content?.map(e=>{let r=``;`optionMapper`in e&&(r=V(e.optionMapper,t,e.args,n));let i=``;`getFetchUrl`in e&&(i=V(e.getFetchUrl,t,e.args,n));let a=``;`getHeaders`in e&&(a=V(e.getHeaders,t,e.args,n));let o=``;return`getBody`in e&&(o=V(e.getBody,t,e.args,n)),{...e,optionMapper:r,getFetchUrl:i,getHeaders:a,getBody:o}}),i={...e,content:r},a={fields:i.content},o=await this.dynamicPromptHandler(i),s=S(a,o.values);return{...o,values:s}}outputIframe(t,n,r,i){let{url:a,isUsingProxy:o}=I(t,i,n?.join(`; `));this.instance.postMessage(JSON.stringify({action:e.IFRAME_OUTPUT,url:a,name:this.pluginApiName,allow:n,sandbox:r,preserve:this.preserve,isUsingProxy:o}))}getBase64EncodedBlob(e){return new Promise((t,n)=>{let r=new FileReader;r.readAsDataURL(e),r.onload=()=>{t(r.result)},r.onerror=e=>{n(e)}})}async uploadFile(e,t,n=!1){let r=await this.getBase64EncodedBlob(e);return await this.uploadFileHandler({file:r,fileName:t??`file_`+String(Date.now()),isPublic:n})}afterSetup(){}__setup(){if(this.setupExecutions!==0)throw Error(`Setup must be called exactly once, and should never be called by a script directly.`);if(this.cleanupExecutions!==0)throw Error(`Setup was called after cleanup`);this.isDebug&&this.console.log(`Running script:
@@ -1,4 +1,4 @@
1
- (function(){var e={QUERY_REQUEST:`query:request`,UI_OUTPUT:`outputui`,IFRAME_OUTPUT:`iframeoutput`,POSTFORMDATA_REQUEST:`postformdata:request`,SETSTATE:`setstate`,DONE:`done`,RUN:`run`,OPEN_WINDOW:`openwindow`,COMMUNICATE:`communicate`,HIDE:`hide`,SHOW:`show`,EXPAND:`expand`,COLLAPSE:`collapse`,HIDE_HEADER:`hideheader`,SHOW_HEADER:`showheader`,OPEN_CREATE_RECORD_MODAL_REQUEST:`opencreaterecordmodal:request`,OPEN_CREATE_RELATED_RECORD_MODAL_REQUEST:`opencreaterelatedrecordmodal:request`,SHOW_TOAST:`showtoast`,CLEAR_TOASTS:`cleartoasts`,REFRESH_TIMELINE:`refreshtimeline`,REFRESH_ENTITY:`refreshentity`,UPLOADFILE_REQUEST:`uploadfile:request`,UPDATE_SESSION_DATA:`updatesessiondata`,INSTALL_THIRD_PARTY_SCRIPT_REQUEST:`installthirdpartyscript:request`,PROMPT_REQUEST:`prompt:request`,DYNAMIC_PROMPT_REQUEST:`dynamicprompt:request`,RELEASE_BLOCKING_SCRIPT:`releaseblockingscript`,AUTHORIZE:`authorize`,COPY_TO_CLIPBOARD:`copytoclipboard`,SHOW_VIEW_IN_MODAL_REQUEST:`showviewinmodal:request`,CLOSE_MODAL_REQUEST:`closemodal:request`,CONSOLE_LOG:`consolelog`,RUN_EVENT_SCRIPT:`runeventscript`,COMPLETE_SETUP_REQUEST:`completesetup:request`},t={QUERY_RESPONSE:`query:response`,POSTFORMDATA_RESPONSE:`postformdata:response`,ERROR:`error`,UPLOADFILE_RESPONSE:`uploadfile:response`,UPLOADFILE_PROGRESS:`uploadfile:progress`,INSTALL_THIRD_PARTY_SCRIPT_RESPONSE:`installthirdpartyscript:response`,PROMPT_RESPONSE:`prompt:response`,REFRESH_ENTITY_RESPONSE:`refreshentity:response`,CREATE_RECORD_RESPONSE:`createrecord:response`,CREATE_RELATED_RECORD_RESPONSE:`createrelatedrecord:response`,COMPLETE_SETUP_RESPONSE:`completesetup:response`},n={RUN_FRAME_SCRIPT:`runframescript`,RUN_BLOCK_SCRIPT:`runblockscript`,SEND_MESSAGE_TO_FRAME:`sendmessagetoframe`,CALL_THIRD_PARTY_SCRIPT:`callthirdpartyscript`},r=/https:\/\/.*widget\.freshworks\.com\/.*\.js/,i=/https:\/\/widget\.intercom\.io\/widget\/[a-z0-9]+/,a={FRESHWORKS:`freshworks`,INTERCOM:`intercom`},o=e=>{if(r.test(e))return a.FRESHWORKS;if(i.test(e))return a.INTERCOM};a.FRESHWORKS,a.INTERCOM,a.FRESHWORKS,a.INTERCOM,a.FRESHWORKS,a.INTERCOM;var s=class{instance;scriptUrl;integration;constructor(e,t){this.instance=e,this.scriptUrl=t;let n=o(t);if(n)this.integration=n;else throw Error(`Error: Disallowed script url: ${t}`)}get type(){return this.integration}call(...t){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.CALL_THIRD_PARTY_SCRIPT,eventName:`thirdParty:${n.CALL_THIRD_PARTY_SCRIPT}`,recipient:{script:this.scriptUrl,type:this.type},params:t}))}},c=e=>({__kzConsole:`unserializable`,reason:e}),l=e=>{try{return String(e)}catch{return`[unserializable]`}},u=(e,t)=>{try{if(e===void 0)return{__kzConsole:`undefined`};if(e===null)return null;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(typeof e==`bigint`)return{__kzConsole:`bigint`,value:e.toString()};if(typeof e==`symbol`)return{__kzConsole:`symbol`,value:e.toString()};if(typeof e==`function`)return{__kzConsole:`function`,name:e.name||`anonymous`};if(e instanceof Error){let t=`Error`,n=``,r;try{t=e.name}catch{}try{n=e.message}catch{}try{r=e.stack}catch{}return{__kzConsole:`error`,name:t,message:n,stack:r}}if(e instanceof Date)try{return{__kzConsole:`date`,value:e.toISOString()}}catch{return c(`invalid Date`)}if(e instanceof RegExp)return{__kzConsole:`regexp`,value:l(e)};if(t.has(e))return{__kzConsole:`circular`};if(t.add(e),Array.isArray(e)){let n=[];for(let r of e)try{n.push(u(r,t))}catch{n.push(c(`threw during read`))}return n}let n={},r=[];try{r=Object.keys(e)}catch{return c(`cannot enumerate keys`)}for(let i of r)try{n[i]=u(e[i],t)}catch{n[i]=c(`threw during read`)}return n}catch{return c(`serialization failed`)}},d=e=>{try{return u(e,new WeakSet)}catch{return c(`serialization failed`)}},f=class e extends Error{proxyStatus;upstreamStatus;upstreamResponse;constructor(t,n,r,i){super(i??r?.error?.message??(n?`Request failed with status code ${String(n)}`:`Request failed with proxy status code ${String(t)}`)),this.name=`KizenRequestError`,this.proxyStatus=t,this.upstreamStatus=n,this.upstreamResponse=r,Object.setPrototypeOf(this,e.prototype)}},p=`__kizen__action__`,m=e=>`${p}${e}`,h=e=>({key:m(e.api_name),type:`custom_object`,label:e.name,allow_multiple:!0}),g=[`description`,`container`,`qr`,`image`,`link`],_=(e,t)=>{let n=(e.fields??[]).filter(e=>!g.includes(e.type)).map(e=>({...e,when:t?`(${t}) && (${e.when??`true`})`:e.when})),r=(e.fields??[]).filter(e=>e.type===`container`).flatMap(e=>_(e,e.when)),i=e.actions?.filter(e=>e.hint_object_name)??[];return[...n,...r,...i.map(e=>({...h(e),match_hint:e.hint_object_name??``}))]},v=(e,t)=>{let n=_(e).reduce((e,t)=>({...e,[t.key]:t}),{}),r=Object.keys(t),i={};return r.forEach(e=>{let r=t[e],a=n[e];if(a?.type){switch(a.type){case`boolean`:let t=r;if(!t)return;i[e]=t.value;return;case`custom_object`:{let t=r;if(!t)return;i[e]={objectId:t.value?.id,objectName:t.value?.objectName};return}case`field`:{let t=r;if(!t?.value)return;Array.isArray(t.value)?i[e]=t.value.map(e=>({fieldId:e.value,fieldName:e.label,objectId:t.associatedObject?.id,objectName:t.associatedObject?.name})):typeof t.value==`object`&&typeof t.associatedObject==`object`&&(i[e]={fieldId:t.value.value,fieldName:t.value.label,objectId:t.associatedObject.id,objectName:t.associatedObject.name});return}case`number`:{let t=r;if(!t)return;try{let n=Number(t.value);if(!n&&n!==0)return;i[e]=n}catch{i[e]=NaN}return}case`select`:{let t=r;if(!t)return;i[e]=t.value;return}case`text`:{let t=r?.value;if(t){i[e]=t;return}let n=a.default;n&&(i[e]=n);return}case`description`:case`container`:case`qr`:case`image`:case`link`:return}return r?.value}}),i},y=(t,n)=>r=>async(i,a,o)=>new Promise((s,c)=>{let l=n.register(s,c);t.postMessage(JSON.stringify({action:e.QUERY_REQUEST,id:l,method:r,url:i,payload:a,options:o}))}),b=(t,n)=>(r,i,a=!0)=>new Promise((o,s)=>{let c=n.register(o,s);t.postMessage(JSON.stringify({action:e.POSTFORMDATA_REQUEST,url:r,id:c,payload:i,createNewTab:a}))}),x=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.PROMPT_REQUEST,id:o,config:r}))}),S=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.DYNAMIC_PROMPT_REQUEST,id:o,config:r}))}),C=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.SHOW_VIEW_IN_MODAL_REQUEST,id:s,viewId:r,args:i?.args,options:i?.options}))}),w=t=>(n,r)=>{t.postMessage(JSON.stringify({action:e.CLOSE_MODAL_REQUEST,values:n,canceled:r}))},T=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.UPLOADFILE_REQUEST,id:o,payload:r}))}),E=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.COMPLETE_SETUP_REQUEST,id:s,payload:r,options:i}))}),D=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.INSTALL_THIRD_PARTY_SCRIPT_REQUEST,url:r,id:s,args:i}))}),O=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.REFRESH_ENTITY,id:o,entityId:r}))}),k=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.OPEN_CREATE_RECORD_MODAL_REQUEST,id:o,entityId:r}))}),A=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.OPEN_CREATE_RELATED_RECORD_MODAL_REQUEST,id:s,objectId:r,relatedEntityId:i}))}),j=(e,n,r)=>{switch(e){case t.QUERY_RESPONSE:{let{id:e,data:t,error:i}=JSON.parse(n.data);if(i){let t=typeof i==`object`&&`__kizenError`in i?new f(i.proxyStatus,i.upstreamStatus,i.upstreamResponse,i.message):i;r.reject(e,t)}else r.resolve(e,t);break}case t.POSTFORMDATA_RESPONSE:{let{id:e,success:t}=JSON.parse(n.data);t?r.resolve(e):r.reject(e);break}case t.UPLOADFILE_RESPONSE:{let{id:e,data:t,error:i}=JSON.parse(n.data);t?r.resolve(e,t):r.reject(e,i);break}case t.COMPLETE_SETUP_RESPONSE:{let{id:e,success:t,error:i}=JSON.parse(n.data);t?r.resolve(e):r.reject(e,Error(i??`Setup configuration could not be saved`));break}case t.INSTALL_THIRD_PARTY_SCRIPT_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);t.success?r.resolve(e,t):r.reject(e);break}case t.PROMPT_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.CREATE_RECORD_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.CREATE_RELATED_RECORD_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.REFRESH_ENTITY_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);t.success?r.resolve(e,!0):r.reject(e);break}}},M=`plugin-assets.kizen.dev`,N=`plugin-assets.kizen.com`,P=[M,N],F=``,I=F!==``,L=e=>I&&e===F||P.some(t=>e===`https://${t}`),R=e=>{try{return L(new URL(e).origin)}catch{return!1}},z={useDevMode:!1,__dangerouslySkipProxy:!1},B=(e,t=z,n=``)=>{let{useDevMode:r,__dangerouslySkipProxy:i}=t,a=``;if(i)a=e;else try{a=L(new URL(e).origin)?e:`${I?F:`https://${r?M:N}`}?url=${encodeURIComponent(e)}&allow=${encodeURIComponent(n)}`}catch(t){console.warn(`Failed to parse URL: ${e}. Apps should not attempt to display invalid URLs. Error: ${t.message}`),a=``}let o=R(a);return{url:a,isUsingProxy:o}},V=`integration:${n.RUN_FRAME_SCRIPT}`,H=`integration:${n.RUN_BLOCK_SCRIPT}`,U=class{instance;constructor(e){this.instance=e}runFrameScript(t,r,i){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.RUN_FRAME_SCRIPT,eventName:V,recipient:{frame:t,script:r},args:i}))}runBlockScript(t,r,i){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.RUN_BLOCK_SCRIPT,eventName:H,recipient:{block:t,script:r},args:i}))}sendMessageToOwnFrame(t,r){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.SEND_MESSAGE_TO_FRAME,args:{payload:t,path:r}}))}},W=async e=>{let t=null;try{t=await e.json()}catch{}return{status:e.status,statusText:e.statusText,body:t}},G=(e,t,n={},r=``)=>`(function() { ${r}
1
+ (function(){var e={QUERY_REQUEST:`query:request`,UI_OUTPUT:`outputui`,IFRAME_OUTPUT:`iframeoutput`,POSTFORMDATA_REQUEST:`postformdata:request`,SETSTATE:`setstate`,DONE:`done`,RUN:`run`,OPEN_WINDOW:`openwindow`,COMMUNICATE:`communicate`,HIDE:`hide`,SHOW:`show`,EXPAND:`expand`,COLLAPSE:`collapse`,HIDE_HEADER:`hideheader`,SHOW_HEADER:`showheader`,OPEN_CREATE_RECORD_MODAL_REQUEST:`opencreaterecordmodal:request`,OPEN_CREATE_RELATED_RECORD_MODAL_REQUEST:`opencreaterelatedrecordmodal:request`,SHOW_TOAST:`showtoast`,CLEAR_TOASTS:`cleartoasts`,REFRESH_TIMELINE:`refreshtimeline`,REFRESH_ENTITY:`refreshentity`,UPLOADFILE_REQUEST:`uploadfile:request`,UPDATE_SESSION_DATA:`updatesessiondata`,INSTALL_THIRD_PARTY_SCRIPT_REQUEST:`installthirdpartyscript:request`,PROMPT_REQUEST:`prompt:request`,DYNAMIC_PROMPT_REQUEST:`dynamicprompt:request`,RELEASE_BLOCKING_SCRIPT:`releaseblockingscript`,AUTHORIZE:`authorize`,COPY_TO_CLIPBOARD:`copytoclipboard`,SHOW_VIEW_IN_MODAL_REQUEST:`showviewinmodal:request`,CLOSE_MODAL_REQUEST:`closemodal:request`,CONSOLE_LOG:`consolelog`,RUN_EVENT_SCRIPT:`runeventscript`,COMPLETE_SETUP_REQUEST:`completesetup:request`},t={QUERY_RESPONSE:`query:response`,POSTFORMDATA_RESPONSE:`postformdata:response`,ERROR:`error`,UPLOADFILE_RESPONSE:`uploadfile:response`,UPLOADFILE_PROGRESS:`uploadfile:progress`,INSTALL_THIRD_PARTY_SCRIPT_RESPONSE:`installthirdpartyscript:response`,PROMPT_RESPONSE:`prompt:response`,REFRESH_ENTITY_RESPONSE:`refreshentity:response`,CREATE_RECORD_RESPONSE:`createrecord:response`,CREATE_RELATED_RECORD_RESPONSE:`createrelatedrecord:response`,COMPLETE_SETUP_RESPONSE:`completesetup:response`},n={RUN_FRAME_SCRIPT:`runframescript`,RUN_BLOCK_SCRIPT:`runblockscript`,SEND_MESSAGE_TO_FRAME:`sendmessagetoframe`,CALL_THIRD_PARTY_SCRIPT:`callthirdpartyscript`},r=/https:\/\/.*widget\.freshworks\.com\/.*\.js/,i=/https:\/\/widget\.intercom\.io\/widget\/[a-z0-9]+/,a={FRESHWORKS:`freshworks`,INTERCOM:`intercom`},o=e=>{if(r.test(e))return a.FRESHWORKS;if(i.test(e))return a.INTERCOM};a.FRESHWORKS,a.INTERCOM,a.FRESHWORKS,a.INTERCOM,a.FRESHWORKS,a.INTERCOM;var s=class{instance;scriptUrl;integration;constructor(e,t){this.instance=e,this.scriptUrl=t;let n=o(t);if(n)this.integration=n;else throw Error(`Error: Disallowed script url: ${t}`)}get type(){return this.integration}call(...t){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.CALL_THIRD_PARTY_SCRIPT,eventName:`thirdParty:${n.CALL_THIRD_PARTY_SCRIPT}`,recipient:{script:this.scriptUrl,type:this.type},params:t}))}},c=e=>({__kzConsole:`unserializable`,reason:e}),l=e=>{try{return String(e)}catch{return`[unserializable]`}},u=(e,t)=>{try{if(e===void 0)return{__kzConsole:`undefined`};if(e===null)return null;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(typeof e==`bigint`)return{__kzConsole:`bigint`,value:e.toString()};if(typeof e==`symbol`)return{__kzConsole:`symbol`,value:e.toString()};if(typeof e==`function`)return{__kzConsole:`function`,name:e.name||`anonymous`};if(e instanceof Error){let t=`Error`,n=``,r;try{t=e.name}catch{}try{n=e.message}catch{}try{r=e.stack}catch{}return{__kzConsole:`error`,name:t,message:n,stack:r}}if(e instanceof Date)try{return{__kzConsole:`date`,value:e.toISOString()}}catch{return c(`invalid Date`)}if(e instanceof RegExp)return{__kzConsole:`regexp`,value:l(e)};if(t.has(e))return{__kzConsole:`circular`};if(t.add(e),Array.isArray(e)){let n=[];for(let r of e)try{n.push(u(r,t))}catch{n.push(c(`threw during read`))}return n}let n={},r=[];try{r=Object.keys(e)}catch{return c(`cannot enumerate keys`)}for(let i of r)try{n[i]=u(e[i],t)}catch{n[i]=c(`threw during read`)}return n}catch{return c(`serialization failed`)}},d=e=>{try{return u(e,new WeakSet)}catch{return c(`serialization failed`)}},f=class e extends Error{proxyStatus;upstreamStatus;upstreamResponse;constructor(t,n,r,i){super(i??r?.error?.message??(n?`Request failed with status code ${String(n)}`:`Request failed with proxy status code ${String(t)}`)),this.name=`KizenRequestError`,this.proxyStatus=t,this.upstreamStatus=n,this.upstreamResponse=r,Object.setPrototypeOf(this,e.prototype)}},p=`__kizen__action__`,m=e=>`${p}${e}`,h=e=>({key:m(e.api_name),type:`custom_object`,label:e.name,allow_multiple:!0}),g=[`description`,`container`,`qr`,`image`,`link`],_=(e,t)=>{let n=(e.fields??[]).filter(e=>!g.includes(e.type)).map(e=>({...e,when:t?`(${t}) && (${e.when??`true`})`:e.when})),r=(e.fields??[]).filter(e=>e.type===`container`).flatMap(e=>_(e,e.when)),i=e.actions?.filter(e=>e.hint_object_name)??[];return[...n,...r,...i.map(e=>({...h(e),match_hint:e.hint_object_name??``}))]},v=(e,t)=>{let n=_(e).reduce((e,t)=>({...e,[t.key]:t}),{}),r=Object.keys(t),i={};return r.forEach(e=>{let r=t[e],a=n[e];if(a?.type){switch(a.type){case`boolean`:let t=r;if(!t)return;i[e]=t.value;return;case`custom_object`:{let t=r;if(!t)return;i[e]={objectId:t.value?.id,objectName:t.value?.objectName};return}case`field`:{let t=r;if(!t?.value)return;Array.isArray(t.value)?i[e]=t.value.map(e=>({fieldId:e.value,fieldName:e.label,objectId:t.associatedObject?.id,objectName:t.associatedObject?.name})):typeof t.value==`object`&&typeof t.associatedObject==`object`&&(i[e]={fieldId:t.value.value,fieldName:t.value.label,objectId:t.associatedObject.id,objectName:t.associatedObject.name});return}case`number`:{let t=r;if(!t)return;try{let n=Number(t.value);if(!n&&n!==0)return;i[e]=n}catch{i[e]=NaN}return}case`select`:{let t=r;if(!t)return;i[e]=t.value;return}case`radio`:{let t=r;if(!t?.value)return;i[e]=t.value;return}case`text`:{let t=r?.value;if(t){i[e]=t;return}let n=a.default;n&&(i[e]=n);return}case`description`:case`container`:case`qr`:case`image`:case`link`:case`api_key`:return}return r?.value}}),i},y=(t,n)=>r=>async(i,a,o)=>new Promise((s,c)=>{let l=n.register(s,c);t.postMessage(JSON.stringify({action:e.QUERY_REQUEST,id:l,method:r,url:i,payload:a,options:o}))}),b=(t,n)=>(r,i,a=!0)=>new Promise((o,s)=>{let c=n.register(o,s);t.postMessage(JSON.stringify({action:e.POSTFORMDATA_REQUEST,url:r,id:c,payload:i,createNewTab:a}))}),x=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.PROMPT_REQUEST,id:o,config:r}))}),S=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.DYNAMIC_PROMPT_REQUEST,id:o,config:r}))}),C=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.SHOW_VIEW_IN_MODAL_REQUEST,id:s,viewId:r,args:i?.args,options:i?.options}))}),w=t=>(n,r)=>{t.postMessage(JSON.stringify({action:e.CLOSE_MODAL_REQUEST,values:n,canceled:r}))},T=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.UPLOADFILE_REQUEST,id:o,payload:r}))}),E=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.COMPLETE_SETUP_REQUEST,id:s,payload:r,options:i}))}),D=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.INSTALL_THIRD_PARTY_SCRIPT_REQUEST,url:r,id:s,args:i}))}),O=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.REFRESH_ENTITY,id:o,entityId:r}))}),k=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.OPEN_CREATE_RECORD_MODAL_REQUEST,id:o,entityId:r}))}),A=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.OPEN_CREATE_RELATED_RECORD_MODAL_REQUEST,id:s,objectId:r,relatedEntityId:i}))}),j=(e,n,r)=>{switch(e){case t.QUERY_RESPONSE:{let{id:e,data:t,error:i}=JSON.parse(n.data);if(i){let t=typeof i==`object`&&`__kizenError`in i?new f(i.proxyStatus,i.upstreamStatus,i.upstreamResponse,i.message):i;r.reject(e,t)}else r.resolve(e,t);break}case t.POSTFORMDATA_RESPONSE:{let{id:e,success:t}=JSON.parse(n.data);t?r.resolve(e):r.reject(e);break}case t.UPLOADFILE_RESPONSE:{let{id:e,data:t,error:i}=JSON.parse(n.data);t?r.resolve(e,t):r.reject(e,i);break}case t.COMPLETE_SETUP_RESPONSE:{let{id:e,success:t,error:i}=JSON.parse(n.data);t?r.resolve(e):r.reject(e,Error(i??`Setup configuration could not be saved`));break}case t.INSTALL_THIRD_PARTY_SCRIPT_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);t.success?r.resolve(e,t):r.reject(e);break}case t.PROMPT_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.CREATE_RECORD_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.CREATE_RELATED_RECORD_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.REFRESH_ENTITY_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);t.success?r.resolve(e,!0):r.reject(e);break}}},M=`plugin-assets.kizen.dev`,N=`plugin-assets.kizen.com`,P=[M,N],F=``,I=F!==``,L=e=>I&&e===F||P.some(t=>e===`https://${t}`),R=e=>{try{return L(new URL(e).origin)}catch{return!1}},z={useDevMode:!1,__dangerouslySkipProxy:!1},B=(e,t=z,n=``)=>{let{useDevMode:r,__dangerouslySkipProxy:i}=t,a=``;if(i)a=e;else try{a=L(new URL(e).origin)?e:`${I?F:`https://${r?M:N}`}?url=${encodeURIComponent(e)}&allow=${encodeURIComponent(n)}`}catch(t){console.warn(`Failed to parse URL: ${e}. Apps should not attempt to display invalid URLs. Error: ${t.message}`),a=``}let o=R(a);return{url:a,isUsingProxy:o}},V=`integration:${n.RUN_FRAME_SCRIPT}`,H=`integration:${n.RUN_BLOCK_SCRIPT}`,U=class{instance;constructor(e){this.instance=e}runFrameScript(t,r,i){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.RUN_FRAME_SCRIPT,eventName:V,recipient:{frame:t,script:r},args:i}))}runBlockScript(t,r,i){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.RUN_BLOCK_SCRIPT,eventName:H,recipient:{block:t,script:r},args:i}))}sendMessageToOwnFrame(t,r){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.SEND_MESSAGE_TO_FRAME,args:{payload:t,path:r}}))}},W=async e=>{let t=null;try{t=await e.json()}catch{}return{status:e.status,statusText:e.statusText,body:t}},G=(e,t,n={},r=``)=>`(function() { ${r}
2
2
  return ${`(${e.toString()})({ state: {{${t}}}, args: ${JSON.stringify(n)}, utils: __kizen_utils })`}; })()`,K=class{user;teamMember;business;clientObject;appPath;dataCache=new Map;queryOptions={};api;postFormData;executionTimer=0;setupExecutions=0;cleanupExecutions=0;isDebug=!1;scriptBody;internalState={indicator:`none`};instance;breakOnException=!1;args;communicate;shouldPreserve=!1;uploadFileHandler;internalSessionData;pluginComponentId;installThirdPartyScriptHandler;promptHandler;dynamicPromptHandler;showViewInModalHandler;closeModalHandler;refreshEntityHandler;openCreateRecordHandler;openCreateRelatedRecordHandler;completeSetupHandler;runnerType;pluginApiName;tempPromptState={};partialLocation;constructor({user:e,teamMember:t,business:n,clientObject:r,appPath:i,isDebug:a,kizenRequest:o,postFormData:s,scriptBody:c,instance:l,args:u,uploadFile:d,sessionData:f,pluginComponentId:p,installThirdPartyScript:m,prompt:h,refreshEntity:g,openCreateRecord:_,openCreateRelatedRecord:v,pluginApiName:y,dynamicPrompt:b,showViewInModal:x,closeModal:S,completeSetup:C,location:w}){this.user=e,this.teamMember=t,this.business=n,this.clientObject=r,this.partialLocation=w,this.appPath=i,this.isDebug=a??!1,this.api={get:o(`get`),post:o(`post`),put:o(`put`),delete:o(`delete`),patch:o(`patch`)},this.postFormData=s,this.scriptBody=c,this.instance=l,this.communicate=new U(l),this.uploadFileHandler=d,this.internalSessionData=f??{},this.pluginComponentId=p,this.installThirdPartyScriptHandler=m,this.promptHandler=h,this.refreshEntityHandler=g,this.openCreateRecordHandler=_,this.openCreateRelatedRecordHandler=v,this.runnerType=`base`,this.pluginApiName=y,this.dynamicPromptHandler=b,this.showViewInModalHandler=x,this.closeModalHandler=S,this.completeSetupHandler=C;try{this.args=JSON.parse(u??`{}`)}catch{this.args={}}}onError(e){if(this.breakOnException)debugger;this.instance.postMessage(JSON.stringify({action:t.ERROR,error:e?.message}))}set debug(e){this.isDebug=e,this.breakOnException=e}set preserve(e){this.shouldPreserve=e}get preserve(){return this.shouldPreserve}parseDate(e){return e.split(`-`)}parsePhone(e){return e.replace(/\+/g,``)}openWindow(t,n=`_blank`,r){this.instance.postMessage(JSON.stringify({action:e.OPEN_WINDOW,url:t,target:n,features:`noopener noreferrer`,context:r}))}authorize(t,n={}){if(!t)throw Error(`Service name is required to authorize`);this.instance.postMessage(JSON.stringify({action:e.AUTHORIZE,serviceName:t,config:{successRedirectPath:n.successRedirectPath??`/marketplace/${this.pluginApiName}/auth`,errorRedirectPath:n.errorRedirectPath??`/marketplace/${this.pluginApiName}/auth`}}))}getServiceUrl(e,t){if(!e)throw Error(`Service name is required to get a service url`);let n=`/external-integrations/proxy/${this.pluginApiName}/${e}`;return t.startsWith(`/`)?`${n}${t}`:`${n}/${t}`}get currentBusiness(){return this.business}get applicationPath(){return this.appPath}get currentUser(){return{profile:{id:this.teamMember?.id??``,full_name:this.teamMember?.full_name??``,first_name:this.teamMember?.first_name??``,last_name:this.teamMember?.last_name??``,email:this.teamMember?.email??``,phone:this.teamMember?.phone??``,created:this.teamMember?.created??``,crm_client_id:this.user?.crm_client_id??``}}}get sessionData(){return this.internalSessionData}get config(){return this.args.__kizen_clean_config?new Proxy(this.args.__kizen_clean_config??{},{get:(e,t)=>{if(Reflect.has(e,t))return Reflect.get(e,t)}}):{}}get location(){return new Proxy(this.partialLocation,{get:(e,t)=>{if(t===`toJSON`)return()=>this.partialLocation;if(Reflect.has(e,t))return Reflect.get(e,t);throw Error(`Property ${String(t)} is not available on location object for plugin apps`)}})}get userConfig(){let e=this.args.__kizen_user_config?.__kizen_clean_config;return e?new Proxy(e,{get:(e,t)=>{if(Reflect.has(e,t))return Reflect.get(e,t)}}):{}}setSessionData(t){if(typeof t!=`object`)throw Error(`Invalid session update with type ${typeof t}`);if(Array.isArray(t))throw Error(`Invalid session update with type array`);this.internalSessionData={...this.internalSessionData,...t},this.instance.postMessage(JSON.stringify({action:e.UPDATE_SESSION_DATA,update:t}))}async get(e,t){try{if(this.isRelativeUrl(e)){let n=this.dataCache.get(e);if(n&&!t?.ignoreCache)return t?.returnErrors?[n.data,null]:n.data;let{data:r}=await this.api.get(e,{...this.queryOptions,headers:this.buildHeaders(t?.headers)});return this.dataCache.set(e,{ts:Date.now(),data:r}),t?.returnErrors?[r,null]:r}else{let n=await fetch(e,{method:`GET`,headers:new Headers(t?.headers),credentials:t?.credentials??`same-origin`});if(!n.ok)throw await W(n);let r=await n.json();return t?.returnErrors?[r,null]:r}}catch(e){if(t?.returnErrors)return[null,e];this.onError(e)}}async getWithErrors(e,t){return this.get(e,{...t,returnErrors:!0})}async getUserConfig(){if(!this.args.pluginId||!this.pluginComponentId)throw Error(`User config is not available for scripts not associated to a plugin or plugin component`);return(await this.get(`/employee/mine/configs/plugins/${this.args.pluginId}`,{ignoreCache:!0})).config?.[this.pluginComponentId]??{}}async setUserConfig(e){if(!this.args.pluginId||!this.pluginComponentId)throw Error(`User config is not available for scripts not associated to a plugin or plugin component`);let t=await this.get(`/employee/mine/configs/plugins/${this.args.pluginId}`,{ignoreCache:!0});return await this.post(`/employee/mine/configs/plugins/${this.args.pluginId}`,{config:{...t?.config,[this.pluginComponentId]:{...t?.config?.[this.pluginComponentId],...e}}})}async completeSetup(e,t){if(!this.pluginApiName)throw Error(`completeSetup is not available for scripts not associated to a plugin`);let n=e;if(typeof n!=`object`||!n||Array.isArray(n))throw Error(`completeSetup requires a configuration object`);let r=Object.getPrototypeOf(n);if(r!==Object.prototype&&r!==null)throw Error(`completeSetup requires a plain configuration object`);await this.completeSetupHandler(e,t)}async patch(e,t,n){try{if(this.isRelativeUrl(e)){let{data:r}=await this.api.patch(e,t,{...this.queryOptions,headers:n?.headers});return n?.returnErrors?[r,null]:r}else{let r=await fetch(e,{method:`PATCH`,body:t?JSON.stringify(t):null,headers:new Headers(n?.headers),credentials:n?.credentials??`same-origin`});if(!r.ok)throw await W(r);let i=await r.json();return n?.returnErrors?[i,null]:i}}catch(e){if(n?.returnErrors)return[null,e];this.onError(e)}}async patchWithErrors(e,t,n){return this.patch(e,t,{...n,returnErrors:!0})}async post(e,t,n){try{if(this.isRelativeUrl(e)){let{data:r}=await this.api.post(e,t,{...this.queryOptions,headers:this.buildHeaders(n?.headers)});return n?.returnErrors?[r,null]:r}else{let r=await fetch(e,{method:`POST`,body:t?JSON.stringify(t):null,headers:new Headers(n?.headers),credentials:n?.credentials??`same-origin`});if(!r.ok)throw await W(r);let i=await r.json();return n?.returnErrors?[i,null]:i}}catch(e){if(n?.returnErrors)return[null,e];this.onError(e)}}async postWithErrors(e,t,n){return this.post(e,t,{...n,returnErrors:!0})}async delete(e,t){try{if(this.isRelativeUrl(e)){let{data:n}=await this.api.delete(e,{...this.queryOptions,headers:this.buildHeaders(t?.headers)});return t?.returnErrors?[n,null]:n}else{let n=await fetch(e,{method:`DELETE`,headers:new Headers(t?.headers),credentials:t?.credentials??`same-origin`});if(!n.ok)throw await W(n);let r=null;return n.status!==204&&(r=await n.json()),t?.returnErrors?[r,null]:r}}catch(e){if(t?.returnErrors)return[null,e];this.onError(e)}}async deleteWithErrors(e,t){return this.delete(e,{...t,returnErrors:!0})}async openCreateRecordModal(e){return this.openCreateRecordHandler(e)}async openCreateRelatedRecordModal(e,t){return this.openCreateRelatedRecordHandler(e,t)}showToast(t,n){this.instance.postMessage(JSON.stringify({action:e.SHOW_TOAST,message:t,toastOptions:n}))}clearToasts(){this.instance.postMessage(JSON.stringify({action:e.CLEAR_TOASTS}))}outputUI(t,n){this.instance.postMessage(JSON.stringify({action:e.UI_OUTPUT,markup:t,options:n}))}runEventScript(t,n={}){if(!t)throw Error(`A script name is required to run an event script`);this.instance.postMessage(JSON.stringify({action:e.RUN_EVENT_SCRIPT,scriptName:t,args:n}))}prompt(e){return this.promptHandler(e)}async showViewInModal(e,t){return this.showViewInModalHandler(e,t)}closeModal(e,t){this.closeModalHandler(e,t)}async dynamicPrompt(e){let t=`__kizen_state`,n=`const __kizen_utils = {};
3
3
  `;if(e.registerUtils){let t=Object.keys(e.registerUtils);n+=t.map(t=>{let n=e.registerUtils?.[t];if(typeof n!=`function`)throw Error(`Registered util ${t} is not a function, got ${typeof n}`);return`__kizen_utils["${t}"] = (${n.toString()});`}).join(`
4
4
  `)}let r=e.content?.map(e=>{let r=``;`optionMapper`in e&&(r=G(e.optionMapper,t,e.args,n));let i=``;`getFetchUrl`in e&&(i=G(e.getFetchUrl,t,e.args,n));let a=``;`getHeaders`in e&&(a=G(e.getHeaders,t,e.args,n));let o=``;return`getBody`in e&&(o=G(e.getBody,t,e.args,n)),{...e,optionMapper:r,getFetchUrl:i,getHeaders:a,getBody:o}}),i={...e,content:r},a={fields:i.content},o=await this.dynamicPromptHandler(i),s=v(a,o.values);return{...o,values:s}}outputIframe(t,n,r,i){let{url:a,isUsingProxy:o}=B(t,i,n?.join(`; `));this.instance.postMessage(JSON.stringify({action:e.IFRAME_OUTPUT,url:a,name:this.pluginApiName,allow:n,sandbox:r,preserve:this.preserve,isUsingProxy:o}))}getBase64EncodedBlob(e){return new Promise((t,n)=>{let r=new FileReader;r.readAsDataURL(e),r.onload=()=>{t(r.result)},r.onerror=e=>{n(e)}})}async uploadFile(e,t,n=!1){let r=await this.getBase64EncodedBlob(e);return await this.uploadFileHandler({file:r,fileName:t??`file_`+String(Date.now()),isPublic:n})}afterSetup(){}__setup(){if(this.setupExecutions!==0)throw Error(`Setup must be called exactly once, and should never be called by a script directly.`);if(this.cleanupExecutions!==0)throw Error(`Setup was called after cleanup`);this.isDebug&&this.console.log(`Running script:
@@ -23,7 +23,7 @@
23
23
  this.onError({ message: "The script has a syntax error and could not be parsed" });
24
24
 
25
25
  this.__cleanup();
26
- `;return{fn:new l(e),functionBody:e}}},d=class{promises;isDebug;constructor({isDebug:e=!1}){this.promises=new Map,this.isDebug=e}delete(e){this.isDebug&&console.log(`Deleting promise ${e}`),this.promises.delete(e)}get(e){return this.isDebug&&console.log(`Getting promise ${e}`),this.promises.get(e)}set(e,t,n){this.promises.set(e,{resolve:t,reject:n})}id(){return c()}register(e,t){let n=this.id();return this.set(n,e,t),n}resolve(e,t){this.get(e)?.resolve(t),this.delete(e)}reject(e,t){this.get(e)?.reject(t),this.delete(e)}},f=e=>({__kzConsole:`unserializable`,reason:e}),p=e=>{try{return String(e)}catch{return`[unserializable]`}},m=(e,t)=>{try{if(e===void 0)return{__kzConsole:`undefined`};if(e===null)return null;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(typeof e==`bigint`)return{__kzConsole:`bigint`,value:e.toString()};if(typeof e==`symbol`)return{__kzConsole:`symbol`,value:e.toString()};if(typeof e==`function`)return{__kzConsole:`function`,name:e.name||`anonymous`};if(e instanceof Error){let t=`Error`,n=``,r;try{t=e.name}catch{}try{n=e.message}catch{}try{r=e.stack}catch{}return{__kzConsole:`error`,name:t,message:n,stack:r}}if(e instanceof Date)try{return{__kzConsole:`date`,value:e.toISOString()}}catch{return f(`invalid Date`)}if(e instanceof RegExp)return{__kzConsole:`regexp`,value:p(e)};if(t.has(e))return{__kzConsole:`circular`};if(t.add(e),Array.isArray(e)){let n=[];for(let r of e)try{n.push(m(r,t))}catch{n.push(f(`threw during read`))}return n}let n={},r=[];try{r=Object.keys(e)}catch{return f(`cannot enumerate keys`)}for(let i of r)try{n[i]=m(e[i],t)}catch{n[i]=f(`threw during read`)}return n}catch{return f(`serialization failed`)}},h=e=>{try{return m(e,new WeakSet)}catch{return f(`serialization failed`)}},g=class e extends Error{proxyStatus;upstreamStatus;upstreamResponse;constructor(t,n,r,i){super(i??r?.error?.message??(n?`Request failed with status code ${String(n)}`:`Request failed with proxy status code ${String(t)}`)),this.name=`KizenRequestError`,this.proxyStatus=t,this.upstreamStatus=n,this.upstreamResponse=r,Object.setPrototypeOf(this,e.prototype)}},_=`__kizen__action__`,v=e=>`${_}${e}`,y=e=>({key:v(e.api_name),type:`custom_object`,label:e.name,allow_multiple:!0}),b=[`description`,`container`,`qr`,`image`,`link`],x=(e,t)=>{let n=(e.fields??[]).filter(e=>!b.includes(e.type)).map(e=>({...e,when:t?`(${t}) && (${e.when??`true`})`:e.when})),r=(e.fields??[]).filter(e=>e.type===`container`).flatMap(e=>x(e,e.when)),i=e.actions?.filter(e=>e.hint_object_name)??[];return[...n,...r,...i.map(e=>({...y(e),match_hint:e.hint_object_name??``}))]},S=(e,t)=>{let n=x(e).reduce((e,t)=>({...e,[t.key]:t}),{}),r=Object.keys(t),i={};return r.forEach(e=>{let r=t[e],a=n[e];if(a?.type){switch(a.type){case`boolean`:let t=r;if(!t)return;i[e]=t.value;return;case`custom_object`:{let t=r;if(!t)return;i[e]={objectId:t.value?.id,objectName:t.value?.objectName};return}case`field`:{let t=r;if(!t?.value)return;Array.isArray(t.value)?i[e]=t.value.map(e=>({fieldId:e.value,fieldName:e.label,objectId:t.associatedObject?.id,objectName:t.associatedObject?.name})):typeof t.value==`object`&&typeof t.associatedObject==`object`&&(i[e]={fieldId:t.value.value,fieldName:t.value.label,objectId:t.associatedObject.id,objectName:t.associatedObject.name});return}case`number`:{let t=r;if(!t)return;try{let n=Number(t.value);if(!n&&n!==0)return;i[e]=n}catch{i[e]=NaN}return}case`select`:{let t=r;if(!t)return;i[e]=t.value;return}case`text`:{let t=r?.value;if(t){i[e]=t;return}let n=a.default;n&&(i[e]=n);return}case`description`:case`container`:case`qr`:case`image`:case`link`:return}return r?.value}}),i},C=(t,n)=>r=>async(i,a,o)=>new Promise((s,c)=>{let l=n.register(s,c);t.postMessage(JSON.stringify({action:e.QUERY_REQUEST,id:l,method:r,url:i,payload:a,options:o}))}),w=(t,n)=>(r,i,a=!0)=>new Promise((o,s)=>{let c=n.register(o,s);t.postMessage(JSON.stringify({action:e.POSTFORMDATA_REQUEST,url:r,id:c,payload:i,createNewTab:a}))}),T=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.PROMPT_REQUEST,id:o,config:r}))}),E=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.DYNAMIC_PROMPT_REQUEST,id:o,config:r}))}),D=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.SHOW_VIEW_IN_MODAL_REQUEST,id:s,viewId:r,args:i?.args,options:i?.options}))}),O=t=>(n,r)=>{t.postMessage(JSON.stringify({action:e.CLOSE_MODAL_REQUEST,values:n,canceled:r}))},k=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.UPLOADFILE_REQUEST,id:o,payload:r}))}),A=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.COMPLETE_SETUP_REQUEST,id:s,payload:r,options:i}))}),j=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.INSTALL_THIRD_PARTY_SCRIPT_REQUEST,url:r,id:s,args:i}))}),M=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.REFRESH_ENTITY,id:o,entityId:r}))}),N=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.OPEN_CREATE_RECORD_MODAL_REQUEST,id:o,entityId:r}))}),P=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.OPEN_CREATE_RELATED_RECORD_MODAL_REQUEST,id:s,objectId:r,relatedEntityId:i}))}),F=(e,n,r)=>{switch(e){case t.QUERY_RESPONSE:{let{id:e,data:t,error:i}=JSON.parse(n.data);if(i){let t=typeof i==`object`&&`__kizenError`in i?new g(i.proxyStatus,i.upstreamStatus,i.upstreamResponse,i.message):i;r.reject(e,t)}else r.resolve(e,t);break}case t.POSTFORMDATA_RESPONSE:{let{id:e,success:t}=JSON.parse(n.data);t?r.resolve(e):r.reject(e);break}case t.UPLOADFILE_RESPONSE:{let{id:e,data:t,error:i}=JSON.parse(n.data);t?r.resolve(e,t):r.reject(e,i);break}case t.COMPLETE_SETUP_RESPONSE:{let{id:e,success:t,error:i}=JSON.parse(n.data);t?r.resolve(e):r.reject(e,Error(i??`Setup configuration could not be saved`));break}case t.INSTALL_THIRD_PARTY_SCRIPT_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);t.success?r.resolve(e,t):r.reject(e);break}case t.PROMPT_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.CREATE_RECORD_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.CREATE_RELATED_RECORD_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.REFRESH_ENTITY_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);t.success?r.resolve(e,!0):r.reject(e);break}}},I=`plugin-assets.kizen.dev`,L=`plugin-assets.kizen.com`,R=[I,L],z=``,B=z!==``,V=e=>B&&e===z||R.some(t=>e===`https://${t}`),H=e=>{try{return V(new URL(e).origin)}catch{return!1}},U={useDevMode:!1,__dangerouslySkipProxy:!1},W=(e,t=U,n=``)=>{let{useDevMode:r,__dangerouslySkipProxy:i}=t,a=``;if(i)a=e;else try{a=V(new URL(e).origin)?e:`${B?z:`https://${r?I:L}`}?url=${encodeURIComponent(e)}&allow=${encodeURIComponent(n)}`}catch(t){console.warn(`Failed to parse URL: ${e}. Apps should not attempt to display invalid URLs. Error: ${t.message}`),a=``}let o=H(a);return{url:a,isUsingProxy:o}},G=`integration:${n.RUN_FRAME_SCRIPT}`,K=`integration:${n.RUN_BLOCK_SCRIPT}`,q=class{instance;constructor(e){this.instance=e}runFrameScript(t,r,i){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.RUN_FRAME_SCRIPT,eventName:G,recipient:{frame:t,script:r},args:i}))}runBlockScript(t,r,i){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.RUN_BLOCK_SCRIPT,eventName:K,recipient:{block:t,script:r},args:i}))}sendMessageToOwnFrame(t,r){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.SEND_MESSAGE_TO_FRAME,args:{payload:t,path:r}}))}},J=async e=>{let t=null;try{t=await e.json()}catch{}return{status:e.status,statusText:e.statusText,body:t}},Y=(e,t,n={},r=``)=>`(function() { ${r}
26
+ `;return{fn:new l(e),functionBody:e}}},d=class{promises;isDebug;constructor({isDebug:e=!1}){this.promises=new Map,this.isDebug=e}delete(e){this.isDebug&&console.log(`Deleting promise ${e}`),this.promises.delete(e)}get(e){return this.isDebug&&console.log(`Getting promise ${e}`),this.promises.get(e)}set(e,t,n){this.promises.set(e,{resolve:t,reject:n})}id(){return c()}register(e,t){let n=this.id();return this.set(n,e,t),n}resolve(e,t){this.get(e)?.resolve(t),this.delete(e)}reject(e,t){this.get(e)?.reject(t),this.delete(e)}},f=e=>({__kzConsole:`unserializable`,reason:e}),p=e=>{try{return String(e)}catch{return`[unserializable]`}},m=(e,t)=>{try{if(e===void 0)return{__kzConsole:`undefined`};if(e===null)return null;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(typeof e==`bigint`)return{__kzConsole:`bigint`,value:e.toString()};if(typeof e==`symbol`)return{__kzConsole:`symbol`,value:e.toString()};if(typeof e==`function`)return{__kzConsole:`function`,name:e.name||`anonymous`};if(e instanceof Error){let t=`Error`,n=``,r;try{t=e.name}catch{}try{n=e.message}catch{}try{r=e.stack}catch{}return{__kzConsole:`error`,name:t,message:n,stack:r}}if(e instanceof Date)try{return{__kzConsole:`date`,value:e.toISOString()}}catch{return f(`invalid Date`)}if(e instanceof RegExp)return{__kzConsole:`regexp`,value:p(e)};if(t.has(e))return{__kzConsole:`circular`};if(t.add(e),Array.isArray(e)){let n=[];for(let r of e)try{n.push(m(r,t))}catch{n.push(f(`threw during read`))}return n}let n={},r=[];try{r=Object.keys(e)}catch{return f(`cannot enumerate keys`)}for(let i of r)try{n[i]=m(e[i],t)}catch{n[i]=f(`threw during read`)}return n}catch{return f(`serialization failed`)}},h=e=>{try{return m(e,new WeakSet)}catch{return f(`serialization failed`)}},g=class e extends Error{proxyStatus;upstreamStatus;upstreamResponse;constructor(t,n,r,i){super(i??r?.error?.message??(n?`Request failed with status code ${String(n)}`:`Request failed with proxy status code ${String(t)}`)),this.name=`KizenRequestError`,this.proxyStatus=t,this.upstreamStatus=n,this.upstreamResponse=r,Object.setPrototypeOf(this,e.prototype)}},_=`__kizen__action__`,v=e=>`${_}${e}`,y=e=>({key:v(e.api_name),type:`custom_object`,label:e.name,allow_multiple:!0}),b=[`description`,`container`,`qr`,`image`,`link`],x=(e,t)=>{let n=(e.fields??[]).filter(e=>!b.includes(e.type)).map(e=>({...e,when:t?`(${t}) && (${e.when??`true`})`:e.when})),r=(e.fields??[]).filter(e=>e.type===`container`).flatMap(e=>x(e,e.when)),i=e.actions?.filter(e=>e.hint_object_name)??[];return[...n,...r,...i.map(e=>({...y(e),match_hint:e.hint_object_name??``}))]},S=(e,t)=>{let n=x(e).reduce((e,t)=>({...e,[t.key]:t}),{}),r=Object.keys(t),i={};return r.forEach(e=>{let r=t[e],a=n[e];if(a?.type){switch(a.type){case`boolean`:let t=r;if(!t)return;i[e]=t.value;return;case`custom_object`:{let t=r;if(!t)return;i[e]={objectId:t.value?.id,objectName:t.value?.objectName};return}case`field`:{let t=r;if(!t?.value)return;Array.isArray(t.value)?i[e]=t.value.map(e=>({fieldId:e.value,fieldName:e.label,objectId:t.associatedObject?.id,objectName:t.associatedObject?.name})):typeof t.value==`object`&&typeof t.associatedObject==`object`&&(i[e]={fieldId:t.value.value,fieldName:t.value.label,objectId:t.associatedObject.id,objectName:t.associatedObject.name});return}case`number`:{let t=r;if(!t)return;try{let n=Number(t.value);if(!n&&n!==0)return;i[e]=n}catch{i[e]=NaN}return}case`select`:{let t=r;if(!t)return;i[e]=t.value;return}case`radio`:{let t=r;if(!t?.value)return;i[e]=t.value;return}case`text`:{let t=r?.value;if(t){i[e]=t;return}let n=a.default;n&&(i[e]=n);return}case`description`:case`container`:case`qr`:case`image`:case`link`:case`api_key`:return}return r?.value}}),i},C=(t,n)=>r=>async(i,a,o)=>new Promise((s,c)=>{let l=n.register(s,c);t.postMessage(JSON.stringify({action:e.QUERY_REQUEST,id:l,method:r,url:i,payload:a,options:o}))}),w=(t,n)=>(r,i,a=!0)=>new Promise((o,s)=>{let c=n.register(o,s);t.postMessage(JSON.stringify({action:e.POSTFORMDATA_REQUEST,url:r,id:c,payload:i,createNewTab:a}))}),T=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.PROMPT_REQUEST,id:o,config:r}))}),E=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.DYNAMIC_PROMPT_REQUEST,id:o,config:r}))}),D=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.SHOW_VIEW_IN_MODAL_REQUEST,id:s,viewId:r,args:i?.args,options:i?.options}))}),O=t=>(n,r)=>{t.postMessage(JSON.stringify({action:e.CLOSE_MODAL_REQUEST,values:n,canceled:r}))},k=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.UPLOADFILE_REQUEST,id:o,payload:r}))}),A=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.COMPLETE_SETUP_REQUEST,id:s,payload:r,options:i}))}),j=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.INSTALL_THIRD_PARTY_SCRIPT_REQUEST,url:r,id:s,args:i}))}),M=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.REFRESH_ENTITY,id:o,entityId:r}))}),N=(t,n)=>r=>new Promise((i,a)=>{let o=n.register(i,a);t.postMessage(JSON.stringify({action:e.OPEN_CREATE_RECORD_MODAL_REQUEST,id:o,entityId:r}))}),P=(t,n)=>(r,i)=>new Promise((a,o)=>{let s=n.register(a,o);t.postMessage(JSON.stringify({action:e.OPEN_CREATE_RELATED_RECORD_MODAL_REQUEST,id:s,objectId:r,relatedEntityId:i}))}),F=(e,n,r)=>{switch(e){case t.QUERY_RESPONSE:{let{id:e,data:t,error:i}=JSON.parse(n.data);if(i){let t=typeof i==`object`&&`__kizenError`in i?new g(i.proxyStatus,i.upstreamStatus,i.upstreamResponse,i.message):i;r.reject(e,t)}else r.resolve(e,t);break}case t.POSTFORMDATA_RESPONSE:{let{id:e,success:t}=JSON.parse(n.data);t?r.resolve(e):r.reject(e);break}case t.UPLOADFILE_RESPONSE:{let{id:e,data:t,error:i}=JSON.parse(n.data);t?r.resolve(e,t):r.reject(e,i);break}case t.COMPLETE_SETUP_RESPONSE:{let{id:e,success:t,error:i}=JSON.parse(n.data);t?r.resolve(e):r.reject(e,Error(i??`Setup configuration could not be saved`));break}case t.INSTALL_THIRD_PARTY_SCRIPT_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);t.success?r.resolve(e,t):r.reject(e);break}case t.PROMPT_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.CREATE_RECORD_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.CREATE_RELATED_RECORD_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);r.resolve(e,t);break}case t.REFRESH_ENTITY_RESPONSE:{let{id:e,data:t}=JSON.parse(n.data);t.success?r.resolve(e,!0):r.reject(e);break}}},I=`plugin-assets.kizen.dev`,L=`plugin-assets.kizen.com`,R=[I,L],z=``,B=z!==``,V=e=>B&&e===z||R.some(t=>e===`https://${t}`),H=e=>{try{return V(new URL(e).origin)}catch{return!1}},U={useDevMode:!1,__dangerouslySkipProxy:!1},W=(e,t=U,n=``)=>{let{useDevMode:r,__dangerouslySkipProxy:i}=t,a=``;if(i)a=e;else try{a=V(new URL(e).origin)?e:`${B?z:`https://${r?I:L}`}?url=${encodeURIComponent(e)}&allow=${encodeURIComponent(n)}`}catch(t){console.warn(`Failed to parse URL: ${e}. Apps should not attempt to display invalid URLs. Error: ${t.message}`),a=``}let o=H(a);return{url:a,isUsingProxy:o}},G=`integration:${n.RUN_FRAME_SCRIPT}`,K=`integration:${n.RUN_BLOCK_SCRIPT}`,q=class{instance;constructor(e){this.instance=e}runFrameScript(t,r,i){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.RUN_FRAME_SCRIPT,eventName:G,recipient:{frame:t,script:r},args:i}))}runBlockScript(t,r,i){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.RUN_BLOCK_SCRIPT,eventName:K,recipient:{block:t,script:r},args:i}))}sendMessageToOwnFrame(t,r){this.instance.postMessage(JSON.stringify({action:e.COMMUNICATE,type:n.SEND_MESSAGE_TO_FRAME,args:{payload:t,path:r}}))}},J=async e=>{let t=null;try{t=await e.json()}catch{}return{status:e.status,statusText:e.statusText,body:t}},Y=(e,t,n={},r=``)=>`(function() { ${r}
27
27
  return ${`(${e.toString()})({ state: {{${t}}}, args: ${JSON.stringify(n)}, utils: __kizen_utils })`}; })()`,X=class{user;teamMember;business;clientObject;appPath;dataCache=new Map;queryOptions={};api;postFormData;executionTimer=0;setupExecutions=0;cleanupExecutions=0;isDebug=!1;scriptBody;internalState={indicator:`none`};instance;breakOnException=!1;args;communicate;shouldPreserve=!1;uploadFileHandler;internalSessionData;pluginComponentId;installThirdPartyScriptHandler;promptHandler;dynamicPromptHandler;showViewInModalHandler;closeModalHandler;refreshEntityHandler;openCreateRecordHandler;openCreateRelatedRecordHandler;completeSetupHandler;runnerType;pluginApiName;tempPromptState={};partialLocation;constructor({user:e,teamMember:t,business:n,clientObject:r,appPath:i,isDebug:a,kizenRequest:o,postFormData:s,scriptBody:c,instance:l,args:u,uploadFile:d,sessionData:f,pluginComponentId:p,installThirdPartyScript:m,prompt:h,refreshEntity:g,openCreateRecord:_,openCreateRelatedRecord:v,pluginApiName:y,dynamicPrompt:b,showViewInModal:x,closeModal:S,completeSetup:C,location:w}){this.user=e,this.teamMember=t,this.business=n,this.clientObject=r,this.partialLocation=w,this.appPath=i,this.isDebug=a??!1,this.api={get:o(`get`),post:o(`post`),put:o(`put`),delete:o(`delete`),patch:o(`patch`)},this.postFormData=s,this.scriptBody=c,this.instance=l,this.communicate=new q(l),this.uploadFileHandler=d,this.internalSessionData=f??{},this.pluginComponentId=p,this.installThirdPartyScriptHandler=m,this.promptHandler=h,this.refreshEntityHandler=g,this.openCreateRecordHandler=_,this.openCreateRelatedRecordHandler=v,this.runnerType=`base`,this.pluginApiName=y,this.dynamicPromptHandler=b,this.showViewInModalHandler=x,this.closeModalHandler=S,this.completeSetupHandler=C;try{this.args=JSON.parse(u??`{}`)}catch{this.args={}}}onError(e){if(this.breakOnException)debugger;this.instance.postMessage(JSON.stringify({action:t.ERROR,error:e?.message}))}set debug(e){this.isDebug=e,this.breakOnException=e}set preserve(e){this.shouldPreserve=e}get preserve(){return this.shouldPreserve}parseDate(e){return e.split(`-`)}parsePhone(e){return e.replace(/\+/g,``)}openWindow(t,n=`_blank`,r){this.instance.postMessage(JSON.stringify({action:e.OPEN_WINDOW,url:t,target:n,features:`noopener noreferrer`,context:r}))}authorize(t,n={}){if(!t)throw Error(`Service name is required to authorize`);this.instance.postMessage(JSON.stringify({action:e.AUTHORIZE,serviceName:t,config:{successRedirectPath:n.successRedirectPath??`/marketplace/${this.pluginApiName}/auth`,errorRedirectPath:n.errorRedirectPath??`/marketplace/${this.pluginApiName}/auth`}}))}getServiceUrl(e,t){if(!e)throw Error(`Service name is required to get a service url`);let n=`/external-integrations/proxy/${this.pluginApiName}/${e}`;return t.startsWith(`/`)?`${n}${t}`:`${n}/${t}`}get currentBusiness(){return this.business}get applicationPath(){return this.appPath}get currentUser(){return{profile:{id:this.teamMember?.id??``,full_name:this.teamMember?.full_name??``,first_name:this.teamMember?.first_name??``,last_name:this.teamMember?.last_name??``,email:this.teamMember?.email??``,phone:this.teamMember?.phone??``,created:this.teamMember?.created??``,crm_client_id:this.user?.crm_client_id??``}}}get sessionData(){return this.internalSessionData}get config(){return this.args.__kizen_clean_config?new Proxy(this.args.__kizen_clean_config??{},{get:(e,t)=>{if(Reflect.has(e,t))return Reflect.get(e,t)}}):{}}get location(){return new Proxy(this.partialLocation,{get:(e,t)=>{if(t===`toJSON`)return()=>this.partialLocation;if(Reflect.has(e,t))return Reflect.get(e,t);throw Error(`Property ${String(t)} is not available on location object for plugin apps`)}})}get userConfig(){let e=this.args.__kizen_user_config?.__kizen_clean_config;return e?new Proxy(e,{get:(e,t)=>{if(Reflect.has(e,t))return Reflect.get(e,t)}}):{}}setSessionData(t){if(typeof t!=`object`)throw Error(`Invalid session update with type ${typeof t}`);if(Array.isArray(t))throw Error(`Invalid session update with type array`);this.internalSessionData={...this.internalSessionData,...t},this.instance.postMessage(JSON.stringify({action:e.UPDATE_SESSION_DATA,update:t}))}async get(e,t){try{if(this.isRelativeUrl(e)){let n=this.dataCache.get(e);if(n&&!t?.ignoreCache)return t?.returnErrors?[n.data,null]:n.data;let{data:r}=await this.api.get(e,{...this.queryOptions,headers:this.buildHeaders(t?.headers)});return this.dataCache.set(e,{ts:Date.now(),data:r}),t?.returnErrors?[r,null]:r}else{let n=await fetch(e,{method:`GET`,headers:new Headers(t?.headers),credentials:t?.credentials??`same-origin`});if(!n.ok)throw await J(n);let r=await n.json();return t?.returnErrors?[r,null]:r}}catch(e){if(t?.returnErrors)return[null,e];this.onError(e)}}async getWithErrors(e,t){return this.get(e,{...t,returnErrors:!0})}async getUserConfig(){if(!this.args.pluginId||!this.pluginComponentId)throw Error(`User config is not available for scripts not associated to a plugin or plugin component`);return(await this.get(`/employee/mine/configs/plugins/${this.args.pluginId}`,{ignoreCache:!0})).config?.[this.pluginComponentId]??{}}async setUserConfig(e){if(!this.args.pluginId||!this.pluginComponentId)throw Error(`User config is not available for scripts not associated to a plugin or plugin component`);let t=await this.get(`/employee/mine/configs/plugins/${this.args.pluginId}`,{ignoreCache:!0});return await this.post(`/employee/mine/configs/plugins/${this.args.pluginId}`,{config:{...t?.config,[this.pluginComponentId]:{...t?.config?.[this.pluginComponentId],...e}}})}async completeSetup(e,t){if(!this.pluginApiName)throw Error(`completeSetup is not available for scripts not associated to a plugin`);let n=e;if(typeof n!=`object`||!n||Array.isArray(n))throw Error(`completeSetup requires a configuration object`);let r=Object.getPrototypeOf(n);if(r!==Object.prototype&&r!==null)throw Error(`completeSetup requires a plain configuration object`);await this.completeSetupHandler(e,t)}async patch(e,t,n){try{if(this.isRelativeUrl(e)){let{data:r}=await this.api.patch(e,t,{...this.queryOptions,headers:n?.headers});return n?.returnErrors?[r,null]:r}else{let r=await fetch(e,{method:`PATCH`,body:t?JSON.stringify(t):null,headers:new Headers(n?.headers),credentials:n?.credentials??`same-origin`});if(!r.ok)throw await J(r);let i=await r.json();return n?.returnErrors?[i,null]:i}}catch(e){if(n?.returnErrors)return[null,e];this.onError(e)}}async patchWithErrors(e,t,n){return this.patch(e,t,{...n,returnErrors:!0})}async post(e,t,n){try{if(this.isRelativeUrl(e)){let{data:r}=await this.api.post(e,t,{...this.queryOptions,headers:this.buildHeaders(n?.headers)});return n?.returnErrors?[r,null]:r}else{let r=await fetch(e,{method:`POST`,body:t?JSON.stringify(t):null,headers:new Headers(n?.headers),credentials:n?.credentials??`same-origin`});if(!r.ok)throw await J(r);let i=await r.json();return n?.returnErrors?[i,null]:i}}catch(e){if(n?.returnErrors)return[null,e];this.onError(e)}}async postWithErrors(e,t,n){return this.post(e,t,{...n,returnErrors:!0})}async delete(e,t){try{if(this.isRelativeUrl(e)){let{data:n}=await this.api.delete(e,{...this.queryOptions,headers:this.buildHeaders(t?.headers)});return t?.returnErrors?[n,null]:n}else{let n=await fetch(e,{method:`DELETE`,headers:new Headers(t?.headers),credentials:t?.credentials??`same-origin`});if(!n.ok)throw await J(n);let r=null;return n.status!==204&&(r=await n.json()),t?.returnErrors?[r,null]:r}}catch(e){if(t?.returnErrors)return[null,e];this.onError(e)}}async deleteWithErrors(e,t){return this.delete(e,{...t,returnErrors:!0})}async openCreateRecordModal(e){return this.openCreateRecordHandler(e)}async openCreateRelatedRecordModal(e,t){return this.openCreateRelatedRecordHandler(e,t)}showToast(t,n){this.instance.postMessage(JSON.stringify({action:e.SHOW_TOAST,message:t,toastOptions:n}))}clearToasts(){this.instance.postMessage(JSON.stringify({action:e.CLEAR_TOASTS}))}outputUI(t,n){this.instance.postMessage(JSON.stringify({action:e.UI_OUTPUT,markup:t,options:n}))}runEventScript(t,n={}){if(!t)throw Error(`A script name is required to run an event script`);this.instance.postMessage(JSON.stringify({action:e.RUN_EVENT_SCRIPT,scriptName:t,args:n}))}prompt(e){return this.promptHandler(e)}async showViewInModal(e,t){return this.showViewInModalHandler(e,t)}closeModal(e,t){this.closeModalHandler(e,t)}async dynamicPrompt(e){let t=`__kizen_state`,n=`const __kizen_utils = {};
28
28
  `;if(e.registerUtils){let t=Object.keys(e.registerUtils);n+=t.map(t=>{let n=e.registerUtils?.[t];if(typeof n!=`function`)throw Error(`Registered util ${t} is not a function, got ${typeof n}`);return`__kizen_utils["${t}"] = (${n.toString()});`}).join(`
29
29
  `)}let r=e.content?.map(e=>{let r=``;`optionMapper`in e&&(r=Y(e.optionMapper,t,e.args,n));let i=``;`getFetchUrl`in e&&(i=Y(e.getFetchUrl,t,e.args,n));let a=``;`getHeaders`in e&&(a=Y(e.getHeaders,t,e.args,n));let o=``;return`getBody`in e&&(o=Y(e.getBody,t,e.args,n)),{...e,optionMapper:r,getFetchUrl:i,getHeaders:a,getBody:o}}),i={...e,content:r},a={fields:i.content},o=await this.dynamicPromptHandler(i),s=S(a,o.values);return{...o,values:s}}outputIframe(t,n,r,i){let{url:a,isUsingProxy:o}=W(t,i,n?.join(`; `));this.instance.postMessage(JSON.stringify({action:e.IFRAME_OUTPUT,url:a,name:this.pluginApiName,allow:n,sandbox:r,preserve:this.preserve,isUsingProxy:o}))}getBase64EncodedBlob(e){return new Promise((t,n)=>{let r=new FileReader;r.readAsDataURL(e),r.onload=()=>{t(r.result)},r.onerror=e=>{n(e)}})}async uploadFile(e,t,n=!1){let r=await this.getBase64EncodedBlob(e);return await this.uploadFileHandler({file:r,fileName:t??`file_`+String(Date.now()),isPublic:n})}afterSetup(){}__setup(){if(this.setupExecutions!==0)throw Error(`Setup must be called exactly once, and should never be called by a script directly.`);if(this.cleanupExecutions!==0)throw Error(`Setup was called after cleanup`);this.isDebug&&this.console.log(`Running script: