unleash-server 5.0.0 → 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/db/context-field-store.js +10 -3
- package/dist/lib/db/context-field-store.js.map +1 -1
- package/dist/lib/error/api-error.d.ts +11 -3
- package/dist/lib/error/api-error.js +8 -1
- package/dist/lib/error/api-error.js.map +1 -1
- package/dist/lib/error/api-error.test.js +11 -0
- package/dist/lib/error/api-error.test.js.map +1 -1
- package/dist/lib/routes/admin-api/event.js +12 -0
- package/dist/lib/routes/admin-api/event.js.map +1 -1
- package/dist/lib/routes/admin-api/events.test.js +22 -0
- package/dist/lib/routes/admin-api/events.test.js.map +1 -1
- package/dist/lib/routes/admin-api/project/project-archive.js +0 -10
- package/dist/lib/routes/admin-api/project/project-archive.js.map +1 -1
- package/dist/lib/routes/admin-api/project/project-features.js +0 -4
- package/dist/lib/routes/admin-api/project/project-features.js.map +1 -1
- package/dist/lib/routes/admin-api/tag.js +0 -4
- package/dist/lib/routes/admin-api/tag.js.map +1 -1
- package/dist/lib/types/experimental.d.ts +0 -1
- package/dist/lib/types/experimental.js +0 -1
- package/dist/lib/types/experimental.js.map +1 -1
- package/dist/server-dev.js +0 -1
- package/dist/server-dev.js.map +1 -1
- package/dist/test/e2e/api/admin/feature-archive.e2e.test.js +0 -1
- package/dist/test/e2e/api/admin/feature-archive.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/project/features.e2e.test.js +0 -1
- package/dist/test/e2e/api/admin/project/features.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/tags.e2e.test.js +0 -1
- package/dist/test/e2e/api/admin/tags.e2e.test.js.map +1 -1
- package/frontend/build/index.html +1 -1
- package/frontend/build/static/{CreateProject-3068c6cc.js → CreateProject-ecbf28c7.js} +1 -1
- package/frontend/build/static/{Error-5126b473.js → Error-0161926e.js} +1 -1
- package/frontend/build/static/{FeatureArchiveDialog-942cfb36.js → FeatureArchiveDialog-8ba2065f.js} +1 -1
- package/frontend/build/static/{FeatureMetricsChart-8ece013b.js → FeatureMetricsChart-82dc2cca.js} +1 -1
- package/frontend/build/static/{FeatureViewLazyExport-35333d0a.js → FeatureViewLazyExport-1a3192eb.js} +2 -2
- package/frontend/build/static/{LazyAdminExport-f326ef75.js → LazyAdminExport-b4a3d4f0.js} +2 -2
- package/frontend/build/static/{LazyProjectExport-677103b2.js → LazyProjectExport-23ec9168.js} +7 -7
- package/frontend/build/static/{NetworkOverview-2b96614f.js → NetworkOverview-96260e93.js} +1 -1
- package/frontend/build/static/{NetworkTraffic-f41f3193.js → NetworkTraffic-0e7e6d26.js} +1 -1
- package/frontend/build/static/{Playground-ea21e876.js → Playground-325b0d90.js} +1 -1
- package/frontend/build/static/{StrategyItemContainer-89b76888.js → StrategyItemContainer-af870d19.js} +1 -1
- package/frontend/build/static/{chartjs-adapter-date-fns.esm-c4ad9167.js → chartjs-adapter-date-fns.esm-f9aa93ea.js} +1 -1
- package/frontend/build/static/{index-e40263f5.js → index-2a2ab5f7.js} +37 -37
- package/frontend/build/static/{index-53da3ab8.js → index-9d101e00.js} +1 -1
- package/frontend/build/static/{index-8187b023.js → index-a0912377.js} +1 -1
- package/frontend/build/static/{unknownify-02b43b97.js → unknownify-cbe206ad.js} +1 -1
- package/frontend/build/static/{useProjectRole-7a147557.js → useProjectRole-c87a3043.js} +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cA as n,cC as s,cB as o}from"./index-
|
|
1
|
+
import{cA as n,cC as s,cB as o}from"./index-2a2ab5f7.js";function i(e,r){n(2,arguments);var a=s(e),t=o(r);return isNaN(t)?new Date(NaN):(t&&a.setDate(a.getDate()+t),a)}export{i as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cA as u,cC as g,cB as i}from"./index-
|
|
1
|
+
import{cA as u,cC as g,cB as i}from"./index-2a2ab5f7.js";function f(n,o){u(2,arguments);var e=g(n),a=i(o);if(isNaN(a))return new Date(NaN);if(!a)return e;var r=e.getDate(),t=new Date(e.getTime());t.setMonth(e.getMonth()+a+1,0);var s=t.getDate();return r>=s?t:(e.setFullYear(t.getFullYear(),t.getMonth(),r),e)}export{f as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{aO as r,aP as a,r as o,aQ as c}from"./index-
|
|
1
|
+
import{aO as r,aP as a,r as o,aQ as c}from"./index-2a2ab5f7.js";const u=(e={})=>{const{data:t,error:n,mutate:s}=r(a("api/admin/metrics/rps"),i,e);return o.useMemo(()=>({metrics:t,loading:!n&&!t,refetch:()=>s(),error:n}),[t,n,s])},i=e=>fetch(e).then(c("Instance Metrics")).then(t=>t.json()),f=e=>!e||e==="undefined"?"unknown":e;export{f as a,u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ff as $,c as _,j as t,H as N,f as l,A as E,N as z,c8 as V,U as Q,F as k,C,a as T,X,cW as q,S as J,h as Y,i as Z,k as ee,W as R,bH as L,ao as te,df as ne,bM as oe,fg as se,s as y,aL as U,dw as re,l as B,dy as A,r as u,I as ae,R as v,c9 as le,db as ie,d as w,e as ce,a2 as F,aJ as H,co as de,fh as ue,aV as he,aX as M,a4 as pe,bV as me,c7 as ye,a9 as fe,aj as O,T as I,ds as be,cJ as ge,a5 as Ce,dv as Te,bU as ke,du as Se,eN as Ae,aO as ve,aP as W,aQ as G,ce as we,aR as Ie}from"./index-e40263f5.js";const Ne=$(),Xe=Ne,Ee=_(t("path",{d:"M21 10h-8.35C11.83 7.67 9.61 6 7 6c-3.31 0-6 2.69-6 6s2.69 6 6 6c2.61 0 4.83-1.67 5.65-4H13l2 2 2-2 2 2 4-4.04L21 10zM7 15c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z"}),"Key"),xe=()=>{const{uiConfig:e}=N();return l(E,{severity:"info",children:[l("p",{children:["Read the"," ",t("a",{href:"https://docs.getunleash.io/reference/sdks",target:"_blank",rel:"noreferrer",children:"SDK overview"})," ","to connect Unleash to your application. Please note it can take up to ",t("strong",{children:"1 minute"})," before a new API key is activated."]}),t("br",{}),t("strong",{children:"API URL: "})," ",l("pre",{style:{display:"inline"},children:[e.unleashUrl,"/api/"]})]})},De=["Icon","createdAt"],Pe=["Icon","project","seenAt"],qe=({compact:e=!1,setHiddenColumns:n,columns:s,loading:o,rows:r,getTableProps:a,getTableBodyProps:i,headerGroups:c,globalFilter:d,prepareRow:f})=>{const g=z(V.breakpoints.down("md"));return Q([{condition:g,columns:De},{condition:e,columns:Pe}],n,s),l(k,{children:[t(C,{condition:r.length>0,show:t(T,{sx:{mb:4},children:t(xe,{})})}),t(T,{sx:{overflowX:"auto"},children:t(X,{value:d,children:l(q,{...a(),children:[t(J,{headerGroups:c}),t(Y,{...i(),children:r.map(b=>(f(b),t(Z,{hover:!0,...b.getRowProps(),children:b.cells.map(h=>t(ee,{...h.getCellProps(),children:h.render("Cell")}))})))})]})})}),t(C,{condition:r.length===0&&!o,show:t(C,{condition:(d==null?void 0:d.length)>0,show:l(R,{children:["No tokens found matching “",d,"”"]}),elseShow:t(R,{children:l("span",{children:["No tokens available. Read ",t(L,{href:"https://docs.getunleash.io/how-to/api",target:"_blank",rel:"noreferrer",children:"API How-to guides"})," "," to learn more."]})})})})]})},Je=({path:e,permission:n,project:s})=>{const o=te();return t(ne,{Icon:oe,onClick:()=>o(e),"data-testid":se,permission:n,projectId:s,maxWidth:"700px",children:"New API token"})},Re=y(U)(({theme:e})=>({textDecoration:"none",color:e.palette.links,"&:hover, &:focus":{textDecoration:"underline"}})),Be=({projects:e,project:n})=>{const{searchQuery:s}=re();let o=e&&Array.isArray(e)?e:n?[n]:[];return o.length===0?t(B,{children:t(A,{search:s,children:"*"})}):t(B,{children:o.map((r,a)=>l(u.Fragment,{children:[a>0&&", ",!r||r==="*"?t(A,{search:s,children:"*"}):t(Re,{to:`/projects/${r}`,children:t(A,{search:s,children:r})})]},r))})},Ye=(e,n)=>{const s=u.useMemo(()=>({sortBy:[{id:"createdAt"}]}),[]),o=u.useMemo(()=>[{id:"Icon",width:"1%",Cell:()=>t(ae,{icon:t(Ee,{color:"disabled"})}),disableSortBy:!0,disableGlobalFilter:!0},{Header:"Username",accessor:"username",Cell:v},{Header:"Type",accessor:"type",Cell:({value:h})=>t(v,{value:j[h.toLowerCase()].label,subtitle:j[h.toLowerCase()].title}),minWidth:280},{Header:"Project",accessor:"project",Cell:h=>t(Be,{project:h.row.original.project,projects:h.row.original.projects}),minWidth:120},{Header:"Environment",accessor:"environment",Cell:v,minWidth:120},{Header:"Created",accessor:"createdAt",Cell:le,minWidth:150,disableGlobalFilter:!0},{Header:"Last seen",accessor:"seenAt",Cell:ie,minWidth:150,disableGlobalFilter:!0},{Header:"Actions",id:"Actions",align:"center",width:"1%",disableSortBy:!0,disableGlobalFilter:!0,Cell:n}],[]),{getTableProps:r,getTableBodyProps:a,headerGroups:i,rows:c,prepareRow:d,state:f,setGlobalFilter:g,setHiddenColumns:b}=w.useTable({columns:o,data:e,initialState:s,sortTypes:ce,autoResetHiddenColumns:!1,disableSortRemove:!0},w.useGlobalFilter,w.useSortBy);return{getTableProps:r,getTableBodyProps:a,headerGroups:i,rows:c,prepareRow:d,state:f,setGlobalFilter:g,setHiddenColumns:b,columns:o}},j={client:{label:"CLIENT",title:"Connect server-side SDK or Unleash Proxy"},frontend:{label:"FRONTEND",title:"Connect web and mobile SDK"},admin:{label:"ADMIN",title:"Full access for managing Unleash"}},Ze=({token:e,project:n,permission:s,track:o})=>{const{setToastData:r}=F(),a=i=>{ue(i)&&(r({type:"success",title:"Token copied to clipboard"}),o&&typeof o=="function"&&o())};return t(H,{permission:s,projectId:n,tooltipProps:{title:"Copy token",arrow:!0},onClick:()=>a(e.secret),size:"large",children:t(de,{})})},je=y("ul")({marginBottom:0}),et=({token:e,permission:n,onRemove:s,project:o})=>{const[r,a]=u.useState(!1),{setToastData:i,setToastApiError:c}=F();return l(k,{children:[t(H,{permission:n,projectId:o,tooltipProps:{title:"Delete token",arrow:!0},onClick:()=>a(!0),size:"large",children:t(he,{})}),t(M,{open:r,onClick:async()=>{try{await s(),a(!1),i({type:"success",title:"API token removed"})}catch(f){c(pe(f))}},onClose:()=>a(!1),title:"Confirm deletion",children:l("div",{children:["Are you sure you want to delete the following API token?",t("br",{}),l(je,{children:[l("li",{children:[t("strong",{children:"username"}),":"," ",t("code",{children:e.username})]}),l("li",{children:[t("strong",{children:"type"}),": ",t("code",{children:e.type})]})]})]})})]})},Le=y("div")(()=>({maxWidth:"400px"})),Ue=y("form")(()=>({display:"flex",flexDirection:"column",height:"100%"})),Fe=y(me)(({theme:e})=>({width:"100%",marginBottom:e.spacing(2)})),He=y(ye)(({theme:e})=>({marginBottom:e.spacing(2),minWidth:"400px",[e.breakpoints.down("sm")]:{minWidth:"379px"}})),K=y("p")(({theme:e})=>({marginBottom:e.spacing(1)})),Me=y("label")(({theme:e})=>({marginBottom:e.spacing(1)})),Oe=y(fe)(({theme:e})=>({marginLeft:e.spacing(3)})),We=y(T)({marginTop:"auto",display:"flex",justifyContent:"flex-end"}),tt=({children:e,actions:n,handleSubmit:s,handleCancel:o})=>{var i;const{uiConfig:r}=N(),a=Boolean((i=r==null?void 0:r.flags)==null?void 0:i.UNLEASH_CLOUD);return l(Ue,{onSubmit:s,children:[t(C,{condition:a,show:l(E,{severity:"info",sx:{mb:4},children:["Please be aware of our"," ",t(L,{href:"https://www.getunleash.io/fair-use-policy",children:"fair use policy"}),"."]})}),e,l(We,{children:[n,t(Oe,{onClick:o,children:"Cancel"})]})]})},nt=e=>{var D;const{environments:n}=O(),s=(D=n==null?void 0:n.find(p=>p.enabled))==null?void 0:D.name,[o,r]=u.useState(""),[a,i]=u.useState("CLIENT"),[c,d]=u.useState([e||"*"]),[f,g]=u.useState(c),[b,h]=u.useState(),[x,S]=u.useState({});return u.useEffect(()=>{h(a==="ADMIN"?"*":s)},[a,s]),{username:o,type:a,projects:c,environment:b,setUsername:r,setTokenType:p=>{p==="ADMIN"?(i(p),g(c),d(["*"]),h("*")):(i(p),d(f),h(s))},setProjects:d,setEnvironment:h,getApiTokenPayload:()=>({username:o,type:a,environment:b,projects:c}),isValid:()=>{const p={};return o||(p.username="Username is required"),c.length===0&&(p.projects="At least one project is required"),S(p),Object.keys(p).length===0},clearErrors:p=>{if(p){const P={...x};delete P[p],S(P)}else S({})},errors:x}};var m=(e=>(e.ADMIN="ADMIN",e.CLIENT="CLIENT",e.FRONTEND="FRONTEND",e))(m||{});const ot=({open:e,closeConfirm:n,token:s,type:o})=>l(M,{open:e,onClick:n,primaryButtonText:"Close",title:"New token created",children:[t(I,{variant:"body1",children:"Your new token has been created successfully."}),t(be,{token:s}),t(C,{condition:o===m.FRONTEND,show:l(E,{sx:{mt:2},severity:"info",children:["By default, all ",m.FRONTEND," tokens may be used from any CORS origin. If you'd like to configure a strict set of origins, please use the"," ",t(U,{to:"/admin/cors",target:"_blank",children:"CORS origins configuration page"}),"."]})})]}),st=({username:e,setUsername:n,errors:s,clearErrors:o})=>l(k,{children:[t(K,{children:"What would you like to call this token?"}),t(Fe,{value:e,name:"username",onChange:r=>n(r.target.value),label:"Token name",error:s.username!==void 0,errorText:s.username,onFocus:()=>o("username"),autoFocus:!0})]}),rt=({type:e,setType:n})=>{const s=ge("projectId"),{uiConfig:o}=N(),r=[{key:m.CLIENT,label:`Server-side SDK (${m.CLIENT})`,title:"Connect server-side SDK or Unleash Proxy"}];return s||r.push({key:m.ADMIN,label:m.ADMIN,title:"Full access for managing Unleash"}),o.flags.embedProxyFrontend&&r.splice(1,0,{key:m.FRONTEND,label:`Client-side SDK (${m.FRONTEND})`,title:"Connect web and mobile SDK directly to Unleash"}),t(Le,{children:l(Ce,{sx:{mb:2,width:"100%"},children:[t(Me,{id:"token-type",children:"What do you want to connect?"}),t(Te,{"aria-labelledby":"token-type",defaultValue:"CLIENT",name:"radio-buttons-group",value:e,onChange:(a,i)=>n(i),children:r.map(({key:a,label:i,title:c})=>t(ke,{value:a,sx:{mb:1},control:t(Se,{sx:{ml:.75,alignSelf:"flex-start"}}),label:t(T,{children:l(T,{children:[t(I,{children:i}),t(I,{variant:"body2",color:"text.secondary",children:c})]})})},a))})]})})},at=({type:e,environment:n,setEnvironment:s})=>{const{environments:o}=O(),r=e===m.ADMIN?[{key:"*",label:"ALL"}]:o.map(a=>({key:a.name,label:`${a.name.concat(a.enabled?"":" - deprecated")}`,title:a.name,disabled:!1}));return l(k,{children:[t(K,{children:"Which environment should the token have access to?"}),t(He,{disabled:e===m.ADMIN,options:r,value:n,onChange:s,label:"Environment",id:"api_key_environment",name:"environment",IconComponent:Ae,fullWidth:!0})]})},Ge=e=>e.map(n=>({...n.user,joinedAt:new Date(n.joinedAt),createdBy:n.createdBy})),lt=e=>{const{data:n,error:s,mutate:o}=ve(W(`api/admin/groups/${e}`),Ke);return u.useMemo(()=>({group:n&&{...n,users:Ge((n==null?void 0:n.users)??[])},loading:!s&&!n,refetchGroup:()=>o(),error:s}),[n,s,o])},Ke=e=>fetch(e).then(G("Group")).then(n=>n.json()),it=(e,n={})=>{const s=()=>{const d=W(`api/admin/roles/${e}`);return fetch(d,{method:"GET"}).then(G("project role")).then(f=>f.json())},{data:o,error:r}=we({},`api/admin/roles/${e}`,s,n),[a,i]=u.useState(!r&&!o),c=()=>{Ie(`api/admin/roles/${e}`)};return u.useEffect(()=>{i(!r&&!o)},[o,r]),{role:o||{},error:r,loading:a,refetch:c}};export{qe as A,Xe as B,Je as C,at as E,et as R,K as S,m as T,Ze as a,nt as b,tt as c,st as d,rt as e,ot as f,lt as g,it as h,Ge as m,Ye as u};
|
|
1
|
+
import{ff as $,c as _,j as t,H as N,f as l,A as E,N as z,c8 as V,U as Q,F as k,C,a as T,X,cW as q,S as J,h as Y,i as Z,k as ee,W as R,bH as L,ao as te,df as ne,bM as oe,fg as se,s as y,aL as U,dw as re,l as B,dy as A,r as u,I as ae,R as v,c9 as le,db as ie,d as w,e as ce,a2 as F,aJ as H,co as de,fh as ue,aV as he,aX as M,a4 as pe,bV as me,c7 as ye,a9 as fe,aj as O,T as I,ds as be,cJ as ge,a5 as Ce,dv as Te,bU as ke,du as Se,eN as Ae,aO as ve,aP as W,aQ as G,ce as we,aR as Ie}from"./index-2a2ab5f7.js";const Ne=$(),Xe=Ne,Ee=_(t("path",{d:"M21 10h-8.35C11.83 7.67 9.61 6 7 6c-3.31 0-6 2.69-6 6s2.69 6 6 6c2.61 0 4.83-1.67 5.65-4H13l2 2 2-2 2 2 4-4.04L21 10zM7 15c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z"}),"Key"),xe=()=>{const{uiConfig:e}=N();return l(E,{severity:"info",children:[l("p",{children:["Read the"," ",t("a",{href:"https://docs.getunleash.io/reference/sdks",target:"_blank",rel:"noreferrer",children:"SDK overview"})," ","to connect Unleash to your application. Please note it can take up to ",t("strong",{children:"1 minute"})," before a new API key is activated."]}),t("br",{}),t("strong",{children:"API URL: "})," ",l("pre",{style:{display:"inline"},children:[e.unleashUrl,"/api/"]})]})},De=["Icon","createdAt"],Pe=["Icon","project","seenAt"],qe=({compact:e=!1,setHiddenColumns:n,columns:s,loading:o,rows:r,getTableProps:a,getTableBodyProps:i,headerGroups:c,globalFilter:d,prepareRow:f})=>{const g=z(V.breakpoints.down("md"));return Q([{condition:g,columns:De},{condition:e,columns:Pe}],n,s),l(k,{children:[t(C,{condition:r.length>0,show:t(T,{sx:{mb:4},children:t(xe,{})})}),t(T,{sx:{overflowX:"auto"},children:t(X,{value:d,children:l(q,{...a(),children:[t(J,{headerGroups:c}),t(Y,{...i(),children:r.map(b=>(f(b),t(Z,{hover:!0,...b.getRowProps(),children:b.cells.map(h=>t(ee,{...h.getCellProps(),children:h.render("Cell")}))})))})]})})}),t(C,{condition:r.length===0&&!o,show:t(C,{condition:(d==null?void 0:d.length)>0,show:l(R,{children:["No tokens found matching “",d,"”"]}),elseShow:t(R,{children:l("span",{children:["No tokens available. Read ",t(L,{href:"https://docs.getunleash.io/how-to/api",target:"_blank",rel:"noreferrer",children:"API How-to guides"})," "," to learn more."]})})})})]})},Je=({path:e,permission:n,project:s})=>{const o=te();return t(ne,{Icon:oe,onClick:()=>o(e),"data-testid":se,permission:n,projectId:s,maxWidth:"700px",children:"New API token"})},Re=y(U)(({theme:e})=>({textDecoration:"none",color:e.palette.links,"&:hover, &:focus":{textDecoration:"underline"}})),Be=({projects:e,project:n})=>{const{searchQuery:s}=re();let o=e&&Array.isArray(e)?e:n?[n]:[];return o.length===0?t(B,{children:t(A,{search:s,children:"*"})}):t(B,{children:o.map((r,a)=>l(u.Fragment,{children:[a>0&&", ",!r||r==="*"?t(A,{search:s,children:"*"}):t(Re,{to:`/projects/${r}`,children:t(A,{search:s,children:r})})]},r))})},Ye=(e,n)=>{const s=u.useMemo(()=>({sortBy:[{id:"createdAt"}]}),[]),o=u.useMemo(()=>[{id:"Icon",width:"1%",Cell:()=>t(ae,{icon:t(Ee,{color:"disabled"})}),disableSortBy:!0,disableGlobalFilter:!0},{Header:"Username",accessor:"username",Cell:v},{Header:"Type",accessor:"type",Cell:({value:h})=>t(v,{value:j[h.toLowerCase()].label,subtitle:j[h.toLowerCase()].title}),minWidth:280},{Header:"Project",accessor:"project",Cell:h=>t(Be,{project:h.row.original.project,projects:h.row.original.projects}),minWidth:120},{Header:"Environment",accessor:"environment",Cell:v,minWidth:120},{Header:"Created",accessor:"createdAt",Cell:le,minWidth:150,disableGlobalFilter:!0},{Header:"Last seen",accessor:"seenAt",Cell:ie,minWidth:150,disableGlobalFilter:!0},{Header:"Actions",id:"Actions",align:"center",width:"1%",disableSortBy:!0,disableGlobalFilter:!0,Cell:n}],[]),{getTableProps:r,getTableBodyProps:a,headerGroups:i,rows:c,prepareRow:d,state:f,setGlobalFilter:g,setHiddenColumns:b}=w.useTable({columns:o,data:e,initialState:s,sortTypes:ce,autoResetHiddenColumns:!1,disableSortRemove:!0},w.useGlobalFilter,w.useSortBy);return{getTableProps:r,getTableBodyProps:a,headerGroups:i,rows:c,prepareRow:d,state:f,setGlobalFilter:g,setHiddenColumns:b,columns:o}},j={client:{label:"CLIENT",title:"Connect server-side SDK or Unleash Proxy"},frontend:{label:"FRONTEND",title:"Connect web and mobile SDK"},admin:{label:"ADMIN",title:"Full access for managing Unleash"}},Ze=({token:e,project:n,permission:s,track:o})=>{const{setToastData:r}=F(),a=i=>{ue(i)&&(r({type:"success",title:"Token copied to clipboard"}),o&&typeof o=="function"&&o())};return t(H,{permission:s,projectId:n,tooltipProps:{title:"Copy token",arrow:!0},onClick:()=>a(e.secret),size:"large",children:t(de,{})})},je=y("ul")({marginBottom:0}),et=({token:e,permission:n,onRemove:s,project:o})=>{const[r,a]=u.useState(!1),{setToastData:i,setToastApiError:c}=F();return l(k,{children:[t(H,{permission:n,projectId:o,tooltipProps:{title:"Delete token",arrow:!0},onClick:()=>a(!0),size:"large",children:t(he,{})}),t(M,{open:r,onClick:async()=>{try{await s(),a(!1),i({type:"success",title:"API token removed"})}catch(f){c(pe(f))}},onClose:()=>a(!1),title:"Confirm deletion",children:l("div",{children:["Are you sure you want to delete the following API token?",t("br",{}),l(je,{children:[l("li",{children:[t("strong",{children:"username"}),":"," ",t("code",{children:e.username})]}),l("li",{children:[t("strong",{children:"type"}),": ",t("code",{children:e.type})]})]})]})})]})},Le=y("div")(()=>({maxWidth:"400px"})),Ue=y("form")(()=>({display:"flex",flexDirection:"column",height:"100%"})),Fe=y(me)(({theme:e})=>({width:"100%",marginBottom:e.spacing(2)})),He=y(ye)(({theme:e})=>({marginBottom:e.spacing(2),minWidth:"400px",[e.breakpoints.down("sm")]:{minWidth:"379px"}})),K=y("p")(({theme:e})=>({marginBottom:e.spacing(1)})),Me=y("label")(({theme:e})=>({marginBottom:e.spacing(1)})),Oe=y(fe)(({theme:e})=>({marginLeft:e.spacing(3)})),We=y(T)({marginTop:"auto",display:"flex",justifyContent:"flex-end"}),tt=({children:e,actions:n,handleSubmit:s,handleCancel:o})=>{var i;const{uiConfig:r}=N(),a=Boolean((i=r==null?void 0:r.flags)==null?void 0:i.UNLEASH_CLOUD);return l(Ue,{onSubmit:s,children:[t(C,{condition:a,show:l(E,{severity:"info",sx:{mb:4},children:["Please be aware of our"," ",t(L,{href:"https://www.getunleash.io/fair-use-policy",children:"fair use policy"}),"."]})}),e,l(We,{children:[n,t(Oe,{onClick:o,children:"Cancel"})]})]})},nt=e=>{var D;const{environments:n}=O(),s=(D=n==null?void 0:n.find(p=>p.enabled))==null?void 0:D.name,[o,r]=u.useState(""),[a,i]=u.useState("CLIENT"),[c,d]=u.useState([e||"*"]),[f,g]=u.useState(c),[b,h]=u.useState(),[x,S]=u.useState({});return u.useEffect(()=>{h(a==="ADMIN"?"*":s)},[a,s]),{username:o,type:a,projects:c,environment:b,setUsername:r,setTokenType:p=>{p==="ADMIN"?(i(p),g(c),d(["*"]),h("*")):(i(p),d(f),h(s))},setProjects:d,setEnvironment:h,getApiTokenPayload:()=>({username:o,type:a,environment:b,projects:c}),isValid:()=>{const p={};return o||(p.username="Username is required"),c.length===0&&(p.projects="At least one project is required"),S(p),Object.keys(p).length===0},clearErrors:p=>{if(p){const P={...x};delete P[p],S(P)}else S({})},errors:x}};var m=(e=>(e.ADMIN="ADMIN",e.CLIENT="CLIENT",e.FRONTEND="FRONTEND",e))(m||{});const ot=({open:e,closeConfirm:n,token:s,type:o})=>l(M,{open:e,onClick:n,primaryButtonText:"Close",title:"New token created",children:[t(I,{variant:"body1",children:"Your new token has been created successfully."}),t(be,{token:s}),t(C,{condition:o===m.FRONTEND,show:l(E,{sx:{mt:2},severity:"info",children:["By default, all ",m.FRONTEND," tokens may be used from any CORS origin. If you'd like to configure a strict set of origins, please use the"," ",t(U,{to:"/admin/cors",target:"_blank",children:"CORS origins configuration page"}),"."]})})]}),st=({username:e,setUsername:n,errors:s,clearErrors:o})=>l(k,{children:[t(K,{children:"What would you like to call this token?"}),t(Fe,{value:e,name:"username",onChange:r=>n(r.target.value),label:"Token name",error:s.username!==void 0,errorText:s.username,onFocus:()=>o("username"),autoFocus:!0})]}),rt=({type:e,setType:n})=>{const s=ge("projectId"),{uiConfig:o}=N(),r=[{key:m.CLIENT,label:`Server-side SDK (${m.CLIENT})`,title:"Connect server-side SDK or Unleash Proxy"}];return s||r.push({key:m.ADMIN,label:m.ADMIN,title:"Full access for managing Unleash"}),o.flags.embedProxyFrontend&&r.splice(1,0,{key:m.FRONTEND,label:`Client-side SDK (${m.FRONTEND})`,title:"Connect web and mobile SDK directly to Unleash"}),t(Le,{children:l(Ce,{sx:{mb:2,width:"100%"},children:[t(Me,{id:"token-type",children:"What do you want to connect?"}),t(Te,{"aria-labelledby":"token-type",defaultValue:"CLIENT",name:"radio-buttons-group",value:e,onChange:(a,i)=>n(i),children:r.map(({key:a,label:i,title:c})=>t(ke,{value:a,sx:{mb:1},control:t(Se,{sx:{ml:.75,alignSelf:"flex-start"}}),label:t(T,{children:l(T,{children:[t(I,{children:i}),t(I,{variant:"body2",color:"text.secondary",children:c})]})})},a))})]})})},at=({type:e,environment:n,setEnvironment:s})=>{const{environments:o}=O(),r=e===m.ADMIN?[{key:"*",label:"ALL"}]:o.map(a=>({key:a.name,label:`${a.name.concat(a.enabled?"":" - deprecated")}`,title:a.name,disabled:!1}));return l(k,{children:[t(K,{children:"Which environment should the token have access to?"}),t(He,{disabled:e===m.ADMIN,options:r,value:n,onChange:s,label:"Environment",id:"api_key_environment",name:"environment",IconComponent:Ae,fullWidth:!0})]})},Ge=e=>e.map(n=>({...n.user,joinedAt:new Date(n.joinedAt),createdBy:n.createdBy})),lt=e=>{const{data:n,error:s,mutate:o}=ve(W(`api/admin/groups/${e}`),Ke);return u.useMemo(()=>({group:n&&{...n,users:Ge((n==null?void 0:n.users)??[])},loading:!s&&!n,refetchGroup:()=>o(),error:s}),[n,s,o])},Ke=e=>fetch(e).then(G("Group")).then(n=>n.json()),it=(e,n={})=>{const s=()=>{const d=W(`api/admin/roles/${e}`);return fetch(d,{method:"GET"}).then(G("project role")).then(f=>f.json())},{data:o,error:r}=we({},`api/admin/roles/${e}`,s,n),[a,i]=u.useState(!r&&!o),c=()=>{Ie(`api/admin/roles/${e}`)};return u.useEffect(()=>{i(!r&&!o)},[o,r]),{role:o||{},error:r,loading:a,refetch:c}};export{qe as A,Xe as B,Je as C,at as E,et as R,K as S,m as T,Ze as a,nt as b,tt as c,st as d,rt as e,ot as f,lt as g,it as h,Ge as m,Ye as u};
|
package/package.json
CHANGED