unleash-server 4.22.0-beta.2 → 4.22.0-beta.21
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/addons/feature-event-formatter-md.d.ts +12 -3
- package/dist/lib/addons/feature-event-formatter-md.js +135 -31
- package/dist/lib/addons/feature-event-formatter-md.js.map +1 -1
- package/dist/lib/addons/feature-event-formatter-md.test.d.ts +1 -0
- package/dist/lib/addons/feature-event-formatter-md.test.js +483 -0
- package/dist/lib/addons/feature-event-formatter-md.test.js.map +1 -0
- package/dist/lib/app.js +1 -1
- package/dist/lib/app.js.map +1 -1
- package/dist/lib/features/export-import-toggles/export-import-permissions.e2e.test.js +1 -1
- package/dist/lib/features/export-import-toggles/export-import-permissions.e2e.test.js.map +1 -1
- package/dist/lib/openapi/index.d.ts +46 -6
- package/dist/lib/openapi/spec/bulk-metrics-schema.d.ts +23 -3
- package/dist/lib/openapi/spec/bulk-registration-schema.d.ts +23 -3
- package/dist/lib/openapi/spec/bulk-registration-schema.js +15 -3
- package/dist/lib/openapi/spec/bulk-registration-schema.js.map +1 -1
- package/dist/lib/routes/admin-api/maintenance.d.ts +0 -1
- package/dist/lib/routes/admin-api/maintenance.js +0 -8
- package/dist/lib/routes/admin-api/maintenance.js.map +1 -1
- package/dist/lib/routes/admin-api/project/variants.js +29 -0
- package/dist/lib/routes/admin-api/project/variants.js.map +1 -1
- package/dist/lib/services/access-service.d.ts +2 -2
- package/dist/lib/services/access-service.js.map +1 -1
- package/dist/lib/types/experimental.d.ts +1 -2
- package/dist/lib/types/experimental.js +1 -2
- package/dist/lib/types/experimental.js.map +1 -1
- package/dist/migrations/20201216140726-add-last-seen-to-features.js +1 -0
- package/dist/migrations/20201216140726-add-last-seen-to-features.js.map +1 -1
- package/dist/migrations/20210105083014-add-tag-and-tag-types.js +1 -0
- package/dist/migrations/20210105083014-add-tag-and-tag-types.js.map +1 -1
- package/dist/migrations/20210119084617-add-addon-table.js +1 -0
- package/dist/migrations/20210119084617-add-addon-table.js.map +1 -1
- package/dist/migrations/20210212114759-add-session-table.js +1 -0
- package/dist/migrations/20210212114759-add-session-table.js.map +1 -1
- package/dist/migrations/20210217195834-rbac-tables.js +1 -0
- package/dist/migrations/20210217195834-rbac-tables.js.map +1 -1
- package/dist/migrations/20210409120136-create-reset-token-table.js +1 -0
- package/dist/migrations/20210409120136-create-reset-token-table.js.map +1 -1
- package/dist/migrations/20210414141220-fix-misspellings-in-role-descriptions.js +1 -0
- package/dist/migrations/20210414141220-fix-misspellings-in-role-descriptions.js.map +1 -1
- package/dist/migrations/20210423103647-lowercase-all-emails.js +1 -0
- package/dist/migrations/20210423103647-lowercase-all-emails.js.map +1 -1
- package/dist/migrations/20210428103923-onboard-projects-to-rbac.js +1 -0
- package/dist/migrations/20210428103923-onboard-projects-to-rbac.js.map +1 -1
- package/dist/migrations/20210504101429-deprecate-strategies.js +1 -0
- package/dist/migrations/20210504101429-deprecate-strategies.js.map +1 -1
- package/dist/migrations/20210615115226-migrate-strategies-to-feature-strategies.js +1 -0
- package/dist/migrations/20210615115226-migrate-strategies-to-feature-strategies.js.map +1 -1
- package/dist/migrations/20210618091331-project-environments-table.js +1 -0
- package/dist/migrations/20210618091331-project-environments-table.js.map +1 -1
- package/dist/migrations/20210618100913-add-cascade-for-user-feedback.js +1 -0
- package/dist/migrations/20210618100913-add-cascade-for-user-feedback.js.map +1 -1
- package/dist/migrations/20210624114855-drop-strategies-column-from-features.js +1 -0
- package/dist/migrations/20210624114855-drop-strategies-column-from-features.js.map +1 -1
- package/dist/migrations/20210624115109-drop-enabled-column-from-features.js +1 -0
- package/dist/migrations/20210624115109-drop-enabled-column-from-features.js.map +1 -1
- package/dist/migrations/20210625102126-connect-default-project-to-global-environment.js +1 -0
- package/dist/migrations/20210625102126-connect-default-project-to-global-environment.js.map +1 -1
- package/dist/migrations/20210629130734-add-health-rating-to-project.js +1 -0
- package/dist/migrations/20210629130734-add-health-rating-to-project.js.map +1 -1
- package/dist/migrations/20210830113948-connect-projects-to-global-envrionments.js +1 -0
- package/dist/migrations/20210830113948-connect-projects-to-global-envrionments.js.map +1 -1
- package/dist/migrations/20210831072631-add-sort-order-and-type-to-env.js +1 -0
- package/dist/migrations/20210831072631-add-sort-order-and-type-to-env.js.map +1 -1
- package/dist/migrations/20210907124058-add-dbcritic-indices.js +1 -0
- package/dist/migrations/20210907124058-add-dbcritic-indices.js.map +1 -1
- package/dist/migrations/20210907124850-add-dbcritic-primary-keys.js +1 -0
- package/dist/migrations/20210907124850-add-dbcritic-primary-keys.js.map +1 -1
- package/dist/migrations/20210908100701-add-enabled-to-environments.js +1 -0
- package/dist/migrations/20210908100701-add-enabled-to-environments.js.map +1 -1
- package/dist/migrations/20210909085651-add-protected-field-to-environments.js +1 -0
- package/dist/migrations/20210909085651-add-protected-field-to-environments.js.map +1 -1
- package/dist/migrations/20210913103159-api-keys-scoping.js +1 -0
- package/dist/migrations/20210913103159-api-keys-scoping.js.map +1 -1
- package/dist/migrations/20210928082228-connect-default-environment-to-all-existing-projects.js +1 -0
- package/dist/migrations/20210928082228-connect-default-environment-to-all-existing-projects.js.map +1 -1
- package/dist/migrations/20211004104917-client-metrics-env.js +1 -0
- package/dist/migrations/20211004104917-client-metrics-env.js.map +1 -1
- package/dist/migrations/20211109103930-add-splash-entry-for-users.js +1 -0
- package/dist/migrations/20211109103930-add-splash-entry-for-users.js.map +1 -1
- package/dist/migrations/20211126112551-disable-default-environment.js +1 -0
- package/dist/migrations/20211126112551-disable-default-environment.js.map +1 -1
- package/dist/migrations/20211202120808-add-custom-roles.js +1 -0
- package/dist/migrations/20211202120808-add-custom-roles.js.map +1 -1
- package/dist/migrations/20220103134659-add-permissions-to-project-roles.js +1 -0
- package/dist/migrations/20220103134659-add-permissions-to-project-roles.js.map +1 -1
- package/dist/migrations/20220103143843-add-permissions-to-editor-role.js +1 -0
- package/dist/migrations/20220103143843-add-permissions-to-editor-role.js.map +1 -1
- package/dist/migrations/20220111112804-update-permission-descriptions.js +1 -0
- package/dist/migrations/20220111112804-update-permission-descriptions.js.map +1 -1
- package/dist/migrations/20220111115613-move-feature-toggle-permission.js +1 -0
- package/dist/migrations/20220111115613-move-feature-toggle-permission.js.map +1 -1
- package/dist/migrations/20220111120346-roles-unique-name.js +1 -0
- package/dist/migrations/20220111120346-roles-unique-name.js.map +1 -1
- package/dist/migrations/20220111121010-update-project-for-editor-role.js +1 -0
- package/dist/migrations/20220111121010-update-project-for-editor-role.js.map +1 -1
- package/dist/migrations/20220111125620-role-permission-empty-string-for-non-environment-type.js +1 -0
- package/dist/migrations/20220111125620-role-permission-empty-string-for-non-environment-type.js.map +1 -1
- package/dist/migrations/20220224081422-remove-project-column-from-roles.js +1 -0
- package/dist/migrations/20220224081422-remove-project-column-from-roles.js.map +1 -1
- package/dist/migrations/20220408081222-clean-up-duplicate-foreign-key-role-permission.js +1 -0
- package/dist/migrations/20220408081222-clean-up-duplicate-foreign-key-role-permission.js.map +1 -1
- package/dist/migrations/20220711084613-add-projects-and-environments-for-addons.js +1 -0
- package/dist/migrations/20220711084613-add-projects-and-environments-for-addons.js.map +1 -1
- package/dist/migrations/20220808110415-add-projects-foreign-key.js +1 -0
- package/dist/migrations/20220808110415-add-projects-foreign-key.js.map +1 -1
- package/dist/migrations/20221108114358-add-change-request-permissions.js +1 -0
- package/dist/migrations/20221108114358-add-change-request-permissions.js.map +1 -1
- package/dist/migrations/20221125185244-change-request-unique-approvals.js +1 -0
- package/dist/migrations/20221125185244-change-request-unique-approvals.js.map +1 -1
- package/dist/migrations/20221128165141-change-request-min-approvals.js +1 -0
- package/dist/migrations/20221128165141-change-request-min-approvals.js.map +1 -1
- package/dist/migrations/20221205122253-skip-change-request.js +1 -0
- package/dist/migrations/20221205122253-skip-change-request.js.map +1 -1
- package/dist/migrations/20221220160345-user-pat-permissions.js +1 -0
- package/dist/migrations/20221220160345-user-pat-permissions.js.map +1 -1
- package/dist/migrations/20221221144132-service-account-users.js +1 -0
- package/dist/migrations/20221221144132-service-account-users.js.map +1 -1
- package/dist/migrations/20230125065315-project-stats-table.js +1 -0
- package/dist/migrations/20230125065315-project-stats-table.js.map +1 -1
- package/dist/migrations/20230127111638-new-project-stats-field.js +1 -0
- package/dist/migrations/20230127111638-new-project-stats-field.js.map +1 -1
- package/dist/migrations/20230130113337-revert-user-pat-permissions.js +1 -0
- package/dist/migrations/20230130113337-revert-user-pat-permissions.js.map +1 -1
- package/dist/migrations/20230208084046-project-api-token-permissions.js +1 -0
- package/dist/migrations/20230208084046-project-api-token-permissions.js.map +1 -1
- package/dist/migrations/20230208093627-assign-project-api-token-permissions-editor.js +1 -0
- package/dist/migrations/20230208093627-assign-project-api-token-permissions-editor.js.map +1 -1
- package/dist/migrations/20230208093750-assign-project-api-token-permissions-owner.js +1 -0
- package/dist/migrations/20230208093750-assign-project-api-token-permissions-owner.js.map +1 -1
- package/dist/migrations/20230208093942-assign-project-api-token-permissions-member.js +1 -0
- package/dist/migrations/20230208093942-assign-project-api-token-permissions-member.js.map +1 -1
- package/dist/migrations/20230222084211-add-login-events-table.js +1 -0
- package/dist/migrations/20230222084211-add-login-events-table.js.map +1 -1
- package/dist/migrations/20230222154915-create-notiications-table.js +4 -4
- package/dist/migrations/20230224093446-drop-createdBy-from-notifications-table.d.ts +2 -0
- package/dist/migrations/20230224093446-drop-createdBy-from-notifications-table.js +14 -0
- package/dist/migrations/20230224093446-drop-createdBy-from-notifications-table.js.map +1 -0
- package/dist/migrations/20230227115320-rename-login-events-table-to-sign-on-log.d.ts +2 -0
- package/dist/migrations/20230227115320-rename-login-events-table-to-sign-on-log.js +8 -0
- package/dist/migrations/20230227115320-rename-login-events-table-to-sign-on-log.js.map +1 -0
- package/dist/migrations/20230227120500-change-display-name-for-variants-per-env-permission.d.ts +2 -0
- package/dist/migrations/20230227120500-change-display-name-for-variants-per-env-permission.js +15 -0
- package/dist/migrations/20230227120500-change-display-name-for-variants-per-env-permission.js.map +1 -0
- package/dist/migrations/20230227123106-add-setting-for-sign-on-log-retention.d.ts +2 -0
- package/dist/migrations/20230227123106-add-setting-for-sign-on-log-retention.js +8 -0
- package/dist/migrations/20230227123106-add-setting-for-sign-on-log-retention.js.map +1 -0
- package/dist/server-dev.js +0 -1
- package/dist/server-dev.js.map +1 -1
- package/dist/test/e2e/api/admin/maintenance.e2e.test.js +2 -49
- package/dist/test/e2e/api/admin/maintenance.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/setting-store.e2e.test.js +1 -1
- package/frontend/build/index.html +1 -1
- package/frontend/build/static/{CreateProject-b852657c.js → CreateProject-f7ca75e0.js} +1 -1
- package/frontend/build/static/{Error-29ef2974.js → Error-2a87926a.js} +1 -1
- package/frontend/build/static/{ExpandMore-4b3cbf87.js → ExpandMore-e298a9a3.js} +1 -1
- package/frontend/build/static/{FeatureArchiveDialog-f9d8c71d.js → FeatureArchiveDialog-31430c0e.js} +1 -1
- package/frontend/build/static/{FeatureMetricsChart-86cc2280.js → FeatureMetricsChart-bcb36dbc.js} +1 -1
- package/frontend/build/static/{FeatureViewLazyExport-1366d6bf.js → FeatureViewLazyExport-fe2a9be7.js} +2 -2
- package/frontend/build/static/{LazyAdminExport-d9800386.js → LazyAdminExport-9ff8d442.js} +13 -13
- package/frontend/build/static/{LazyProjectExport-ef4471a8.js → LazyProjectExport-644ec52e.js} +8 -8
- package/frontend/build/static/{NetworkOverview-4b90dc34.js → NetworkOverview-cecb7bdc.js} +1 -1
- package/frontend/build/static/{NetworkTraffic-c9de9d5f.js → NetworkTraffic-953679ab.js} +1 -1
- package/frontend/build/static/{Playground-ee072216.js → Playground-f8d65d33.js} +1 -1
- package/frontend/build/static/{StrategyItemContainer-b65caaa6.js → StrategyItemContainer-b3595995.js} +1 -1
- package/frontend/build/static/{chartjs-adapter-date-fns.esm-5c47f5e0.js → chartjs-adapter-date-fns.esm-ad422152.js} +7 -7
- package/frontend/build/static/{index-bbbae9a8.js → index-19ee2080.js} +1 -1
- package/frontend/build/static/index-1d8518d6.js +392 -0
- package/frontend/build/static/{index-031b8ec3.js → index-c5afb04d.js} +1 -1
- package/frontend/build/static/{unknownify-88f06eea.js → unknownify-21e26f46.js} +1 -1
- package/frontend/build/static/{useProjectRole-d8edb83e.js → useProjectRole-9a28ceaf.js} +1 -1
- package/frontend/package.json +3 -3
- package/package.json +2 -2
- package/frontend/build/static/index-193ec8c2.js +0 -392
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cK as n,cM as s,cL as o}from"./index-
|
|
1
|
+
import{cK as n,cM as s,cL as o}from"./index-1d8518d6.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{aP as r,aQ as a,r as o,aR as c}from"./index-
|
|
1
|
+
import{aP as r,aQ as a,r as o,aR as c}from"./index-1d8518d6.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{dO as K,c as $,j as e,H as E,f as l,A as N,N as _,c7 as z,U as Q,F as k,C,a as T,X as V,d3 as q,S as X,h as Y,i as Z,k as J,W as R,ar as ee,dm as te,bE as ne,dP as oe,s as y,aM as L,c1 as se,l as B,c2 as A,r as u,I as re,R as v,c8 as ae,di as le,d as I,e as ie,a2 as U,aK as F,cn as ce,dQ as de,aW as ue,aY as H,a4 as he,bV as pe,bZ as me,a9 as ye,bC as be,aj as M,T as w,dx as ge,cT as fe,a5 as Ce,dA as Te,bU as ke,dz as Se,dR as Ae,aP as ve,aQ as O,aR as W,cd as Ie,aS as we}from"./index-193ec8c2.js";const Ee=K(),qe=Ee,Ne=$(e("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:t}=E();return l(N,{severity:"info",children:[l("p",{children:["Read the"," ",e("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 ",e("strong",{children:"1 minute"})," before a new API key is activated."]}),e("br",{}),e("strong",{children:"API URL: "})," ",l("pre",{style:{display:"inline"},children:[t.unleashUrl,"/api/"]})]})},De=["Icon","createdAt"],Pe=["Icon","project","seenAt"],Xe=({compact:t=!1,setHiddenColumns:n,columns:s,loading:o,rows:r,getTableProps:a,getTableBodyProps:i,headerGroups:c,globalFilter:d,prepareRow:b})=>{const f=_(z.breakpoints.down("md"));return Q([{condition:f,columns:De},{condition:t,columns:Pe}],n,s),l(k,{children:[e(C,{condition:r.length>0,show:e(T,{sx:{mb:4},children:e(xe,{})})}),e(T,{sx:{overflowX:"auto"},children:e(V,{value:d,children:l(q,{...a(),children:[e(X,{headerGroups:c}),e(Y,{...i(),children:r.map(g=>(b(g),e(Z,{hover:!0,...g.getRowProps(),children:g.cells.map(h=>e(J,{...h.getCellProps(),children:h.render("Cell")}))})))})]})})}),e(C,{condition:r.length===0&&!o,show:e(C,{condition:(d==null?void 0:d.length)>0,show:l(R,{children:["No tokens found matching “",d,"”"]}),elseShow:e(R,{children:l("span",{children:["No tokens available. Read ",e("a",{href:"https://docs.getunleash.io/how-to/api",target:"_blank",rel:"noreferrer",children:"API How-to guides"})," "," to learn more."]})})})})]})},Ye=({path:t,permission:n,project:s})=>{const o=ee();return e(te,{Icon:ne,onClick:()=>o(t),"data-testid":oe,permission:n,projectId:s,maxWidth:"700px",children:"New API token"})},Re=y(L)(()=>({textDecoration:"none","&:hover, &:focus":{textDecoration:"underline"}})),Be=({projects:t,project:n})=>{const{searchQuery:s}=se();let o=t&&Array.isArray(t)?t:n?[n]:[];return o.length===0?e(B,{children:e(A,{search:s,children:"*"})}):e(B,{children:o.map((r,a)=>l(u.Fragment,{children:[a>0&&", ",!r||r==="*"?e(A,{search:s,children:"*"}):e(Re,{to:`/projects/${r}`,children:e(A,{search:s,children:r})})]},r))})},Ze=(t,n)=>{const s=u.useMemo(()=>({sortBy:[{id:"createdAt"}]}),[]),o=u.useMemo(()=>[{id:"Icon",width:"1%",Cell:()=>e(re,{icon:e(Ne,{color:"disabled"})}),disableSortBy:!0,disableGlobalFilter:!0},{Header:"Username",accessor:"username",Cell:v},{Header:"Type",accessor:"type",Cell:({value:h})=>e(v,{value:j[h.toLowerCase()].label,subtitle:j[h.toLowerCase()].title}),minWidth:280},{Header:"Project",accessor:"project",Cell:h=>e(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:ae,minWidth:150,disableGlobalFilter:!0},{Header:"Last seen",accessor:"seenAt",Cell:le,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:b,setGlobalFilter:f,setHiddenColumns:g}=I.useTable({columns:o,data:t,initialState:s,sortTypes:ie,autoResetHiddenColumns:!1,disableSortRemove:!0},I.useGlobalFilter,I.useSortBy);return{getTableProps:r,getTableBodyProps:a,headerGroups:i,rows:c,prepareRow:d,state:b,setGlobalFilter:f,setHiddenColumns:g,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"}},Je=({token:t,project:n,permission:s,track:o})=>{const{setToastData:r}=U(),a=i=>{de(i)&&(r({type:"success",title:"Token copied to clipboard"}),o&&typeof o=="function"&&o())};return e(F,{permission:s,projectId:n,tooltipProps:{title:"Copy token",arrow:!0},onClick:()=>a(t.secret),size:"large",children:e(ce,{})})},je=y("ul")({marginBottom:0}),et=({token:t,permission:n,onRemove:s,project:o})=>{const[r,a]=u.useState(!1),{setToastData:i,setToastApiError:c}=U();return l(k,{children:[e(F,{permission:n,projectId:o,tooltipProps:{title:"Delete token",arrow:!0},onClick:()=>a(!0),size:"large",children:e(ue,{})}),e(H,{open:r,onClick:async()=>{try{await s(),a(!1),i({type:"success",title:"API token removed"})}catch(b){c(he(b))}},onClose:()=>a(!1),title:"Confirm deletion",children:l("div",{children:["Are you sure you want to delete the following API token?",e("br",{}),l(je,{children:[l("li",{children:[e("strong",{children:"username"}),":"," ",e("code",{children:t.username})]}),l("li",{children:[e("strong",{children:"type"}),": ",e("code",{children:t.type})]})]})]})})]})},Le=y("div")(()=>({maxWidth:"400px"})),Ue=y("form")(()=>({display:"flex",flexDirection:"column",height:"100%"})),Fe=y(pe)(({theme:t})=>({width:"100%",marginBottom:t.spacing(2)})),He=y(me)(({theme:t})=>({marginBottom:t.spacing(2),minWidth:"400px",[t.breakpoints.down("sm")]:{minWidth:"379px"}})),G=y("p")(({theme:t})=>({marginBottom:t.spacing(1)})),Me=y("label")(({theme:t})=>({marginBottom:t.spacing(1)})),Oe=y(ye)(({theme:t})=>({marginLeft:t.spacing(3)})),We=y(T)({marginTop:"auto",display:"flex",justifyContent:"flex-end"}),tt=({children:t,actions:n,handleSubmit:s,handleCancel:o})=>{var i;const{uiConfig:r}=E(),a=Boolean((i=r==null?void 0:r.flags)==null?void 0:i.UNLEASH_CLOUD);return l(Ue,{onSubmit:s,children:[e(C,{condition:a,show:l(N,{severity:"info",sx:{mb:4},children:["Please be aware of our"," ",e(be,{href:"https://www.getunleash.io/fair-use-policy",children:"fair use policy"}),"."]})}),t,l(We,{children:[n,e(Oe,{onClick:o,children:"Cancel"})]})]})},nt=t=>{var D;const{environments:n}=M(),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([t||"*"]),[b,f]=u.useState(c),[g,h]=u.useState(),[x,S]=u.useState({});return u.useEffect(()=>{h(a==="ADMIN"?"*":s)},[a,s]),{username:o,type:a,projects:c,environment:g,setUsername:r,setTokenType:p=>{p==="ADMIN"?(i(p),f(c),d(["*"]),h("*")):(i(p),d(b),h(s))},setProjects:d,setEnvironment:h,getApiTokenPayload:()=>({username:o,type:a,environment:g,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=(t=>(t.ADMIN="ADMIN",t.CLIENT="CLIENT",t.FRONTEND="FRONTEND",t))(m||{});const ot=({open:t,closeConfirm:n,token:s,type:o})=>l(H,{open:t,onClick:n,primaryButtonText:"Close",title:"New token created",children:[e(w,{variant:"body1",children:"Your new token has been created successfully."}),e(ge,{token:s}),e(C,{condition:o===m.FRONTEND,show:l(N,{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"," ",e(L,{to:"/admin/cors",target:"_blank",children:"CORS origins configuration page"}),"."]})})]}),st=({username:t,setUsername:n,errors:s,clearErrors:o})=>l(k,{children:[e(G,{children:"What would you like to call this token?"}),e(Fe,{value:t,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:t,setType:n})=>{const s=fe("projectId"),{uiConfig:o}=E(),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"}),e(Le,{children:l(Ce,{sx:{mb:2,width:"100%"},children:[e(Me,{id:"token-type",children:"What do you want to connect?"}),e(Te,{"aria-labelledby":"token-type",defaultValue:"CLIENT",name:"radio-buttons-group",value:t,onChange:(a,i)=>n(i),children:r.map(({key:a,label:i,title:c})=>e(ke,{value:a,sx:{mb:1},control:e(Se,{sx:{ml:.75,alignSelf:"flex-start"}}),label:e(T,{children:l(T,{children:[e(w,{children:i}),e(w,{variant:"body2",color:"text.secondary",children:c})]})})},a))})]})})},at=({type:t,environment:n,setEnvironment:s})=>{const{environments:o}=M(),r=t===m.ADMIN?[{key:"*",label:"ALL"}]:o.map(a=>({key:a.name,label:a.name,title:a.name,disabled:!a.enabled}));return l(k,{children:[e(G,{children:"Which environment should the token have access to?"}),e(He,{disabled:t===m.ADMIN,options:r,value:n,onChange:s,label:"Environment",id:"api_key_environment",name:"environment",IconComponent:Ae,fullWidth:!0})]})},Ge=t=>t.map(n=>({...n.user,joinedAt:new Date(n.joinedAt),createdBy:n.createdBy})),lt=t=>{const{data:n,error:s,mutate:o}=ve(O(`api/admin/groups/${t}`),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=t=>fetch(t).then(W("Group")).then(n=>n.json()),it=(t,n={})=>{const s=()=>{const d=O(`api/admin/roles/${t}`);return fetch(d,{method:"GET"}).then(W("project role")).then(b=>b.json())},{data:o,error:r}=Ie({},`api/admin/roles/${t}`,s,n),[a,i]=u.useState(!r&&!o),c=()=>{we(`api/admin/roles/${t}`)};return u.useEffect(()=>{i(!r&&!o)},[o,r]),{role:o||{},error:r,loading:a,refetch:c}};export{Xe as A,qe as B,Ye as C,at as E,et as R,G as S,m as T,Je 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,Ze as u};
|
|
1
|
+
import{dO as K,c as $,j as e,H as E,f as l,A as N,N as _,c7 as z,U as Q,F as k,C,a as T,X as V,d3 as q,S as X,h as Y,i as Z,k as J,W as R,ar as ee,dm as te,bE as ne,dP as oe,s as y,aM as L,c1 as se,l as B,c2 as A,r as u,I as re,R as v,c8 as ae,di as le,d as I,e as ie,a2 as U,aK as F,cn as ce,dQ as de,aW as ue,aY as H,a4 as he,bV as pe,bZ as me,a9 as ye,bC as be,aj as M,T as w,dx as ge,cT as fe,a5 as Ce,dA as Te,bU as ke,dz as Se,dR as Ae,aP as ve,aQ as O,aR as W,cd as Ie,aS as we}from"./index-1d8518d6.js";const Ee=K(),qe=Ee,Ne=$(e("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:t}=E();return l(N,{severity:"info",children:[l("p",{children:["Read the"," ",e("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 ",e("strong",{children:"1 minute"})," before a new API key is activated."]}),e("br",{}),e("strong",{children:"API URL: "})," ",l("pre",{style:{display:"inline"},children:[t.unleashUrl,"/api/"]})]})},De=["Icon","createdAt"],Pe=["Icon","project","seenAt"],Xe=({compact:t=!1,setHiddenColumns:n,columns:s,loading:o,rows:r,getTableProps:a,getTableBodyProps:i,headerGroups:c,globalFilter:d,prepareRow:b})=>{const f=_(z.breakpoints.down("md"));return Q([{condition:f,columns:De},{condition:t,columns:Pe}],n,s),l(k,{children:[e(C,{condition:r.length>0,show:e(T,{sx:{mb:4},children:e(xe,{})})}),e(T,{sx:{overflowX:"auto"},children:e(V,{value:d,children:l(q,{...a(),children:[e(X,{headerGroups:c}),e(Y,{...i(),children:r.map(g=>(b(g),e(Z,{hover:!0,...g.getRowProps(),children:g.cells.map(h=>e(J,{...h.getCellProps(),children:h.render("Cell")}))})))})]})})}),e(C,{condition:r.length===0&&!o,show:e(C,{condition:(d==null?void 0:d.length)>0,show:l(R,{children:["No tokens found matching “",d,"”"]}),elseShow:e(R,{children:l("span",{children:["No tokens available. Read ",e("a",{href:"https://docs.getunleash.io/how-to/api",target:"_blank",rel:"noreferrer",children:"API How-to guides"})," "," to learn more."]})})})})]})},Ye=({path:t,permission:n,project:s})=>{const o=ee();return e(te,{Icon:ne,onClick:()=>o(t),"data-testid":oe,permission:n,projectId:s,maxWidth:"700px",children:"New API token"})},Re=y(L)(()=>({textDecoration:"none","&:hover, &:focus":{textDecoration:"underline"}})),Be=({projects:t,project:n})=>{const{searchQuery:s}=se();let o=t&&Array.isArray(t)?t:n?[n]:[];return o.length===0?e(B,{children:e(A,{search:s,children:"*"})}):e(B,{children:o.map((r,a)=>l(u.Fragment,{children:[a>0&&", ",!r||r==="*"?e(A,{search:s,children:"*"}):e(Re,{to:`/projects/${r}`,children:e(A,{search:s,children:r})})]},r))})},Ze=(t,n)=>{const s=u.useMemo(()=>({sortBy:[{id:"createdAt"}]}),[]),o=u.useMemo(()=>[{id:"Icon",width:"1%",Cell:()=>e(re,{icon:e(Ne,{color:"disabled"})}),disableSortBy:!0,disableGlobalFilter:!0},{Header:"Username",accessor:"username",Cell:v},{Header:"Type",accessor:"type",Cell:({value:h})=>e(v,{value:j[h.toLowerCase()].label,subtitle:j[h.toLowerCase()].title}),minWidth:280},{Header:"Project",accessor:"project",Cell:h=>e(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:ae,minWidth:150,disableGlobalFilter:!0},{Header:"Last seen",accessor:"seenAt",Cell:le,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:b,setGlobalFilter:f,setHiddenColumns:g}=I.useTable({columns:o,data:t,initialState:s,sortTypes:ie,autoResetHiddenColumns:!1,disableSortRemove:!0},I.useGlobalFilter,I.useSortBy);return{getTableProps:r,getTableBodyProps:a,headerGroups:i,rows:c,prepareRow:d,state:b,setGlobalFilter:f,setHiddenColumns:g,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"}},Je=({token:t,project:n,permission:s,track:o})=>{const{setToastData:r}=U(),a=i=>{de(i)&&(r({type:"success",title:"Token copied to clipboard"}),o&&typeof o=="function"&&o())};return e(F,{permission:s,projectId:n,tooltipProps:{title:"Copy token",arrow:!0},onClick:()=>a(t.secret),size:"large",children:e(ce,{})})},je=y("ul")({marginBottom:0}),et=({token:t,permission:n,onRemove:s,project:o})=>{const[r,a]=u.useState(!1),{setToastData:i,setToastApiError:c}=U();return l(k,{children:[e(F,{permission:n,projectId:o,tooltipProps:{title:"Delete token",arrow:!0},onClick:()=>a(!0),size:"large",children:e(ue,{})}),e(H,{open:r,onClick:async()=>{try{await s(),a(!1),i({type:"success",title:"API token removed"})}catch(b){c(he(b))}},onClose:()=>a(!1),title:"Confirm deletion",children:l("div",{children:["Are you sure you want to delete the following API token?",e("br",{}),l(je,{children:[l("li",{children:[e("strong",{children:"username"}),":"," ",e("code",{children:t.username})]}),l("li",{children:[e("strong",{children:"type"}),": ",e("code",{children:t.type})]})]})]})})]})},Le=y("div")(()=>({maxWidth:"400px"})),Ue=y("form")(()=>({display:"flex",flexDirection:"column",height:"100%"})),Fe=y(pe)(({theme:t})=>({width:"100%",marginBottom:t.spacing(2)})),He=y(me)(({theme:t})=>({marginBottom:t.spacing(2),minWidth:"400px",[t.breakpoints.down("sm")]:{minWidth:"379px"}})),G=y("p")(({theme:t})=>({marginBottom:t.spacing(1)})),Me=y("label")(({theme:t})=>({marginBottom:t.spacing(1)})),Oe=y(ye)(({theme:t})=>({marginLeft:t.spacing(3)})),We=y(T)({marginTop:"auto",display:"flex",justifyContent:"flex-end"}),tt=({children:t,actions:n,handleSubmit:s,handleCancel:o})=>{var i;const{uiConfig:r}=E(),a=Boolean((i=r==null?void 0:r.flags)==null?void 0:i.UNLEASH_CLOUD);return l(Ue,{onSubmit:s,children:[e(C,{condition:a,show:l(N,{severity:"info",sx:{mb:4},children:["Please be aware of our"," ",e(be,{href:"https://www.getunleash.io/fair-use-policy",children:"fair use policy"}),"."]})}),t,l(We,{children:[n,e(Oe,{onClick:o,children:"Cancel"})]})]})},nt=t=>{var D;const{environments:n}=M(),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([t||"*"]),[b,f]=u.useState(c),[g,h]=u.useState(),[x,S]=u.useState({});return u.useEffect(()=>{h(a==="ADMIN"?"*":s)},[a,s]),{username:o,type:a,projects:c,environment:g,setUsername:r,setTokenType:p=>{p==="ADMIN"?(i(p),f(c),d(["*"]),h("*")):(i(p),d(b),h(s))},setProjects:d,setEnvironment:h,getApiTokenPayload:()=>({username:o,type:a,environment:g,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=(t=>(t.ADMIN="ADMIN",t.CLIENT="CLIENT",t.FRONTEND="FRONTEND",t))(m||{});const ot=({open:t,closeConfirm:n,token:s,type:o})=>l(H,{open:t,onClick:n,primaryButtonText:"Close",title:"New token created",children:[e(w,{variant:"body1",children:"Your new token has been created successfully."}),e(ge,{token:s}),e(C,{condition:o===m.FRONTEND,show:l(N,{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"," ",e(L,{to:"/admin/cors",target:"_blank",children:"CORS origins configuration page"}),"."]})})]}),st=({username:t,setUsername:n,errors:s,clearErrors:o})=>l(k,{children:[e(G,{children:"What would you like to call this token?"}),e(Fe,{value:t,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:t,setType:n})=>{const s=fe("projectId"),{uiConfig:o}=E(),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"}),e(Le,{children:l(Ce,{sx:{mb:2,width:"100%"},children:[e(Me,{id:"token-type",children:"What do you want to connect?"}),e(Te,{"aria-labelledby":"token-type",defaultValue:"CLIENT",name:"radio-buttons-group",value:t,onChange:(a,i)=>n(i),children:r.map(({key:a,label:i,title:c})=>e(ke,{value:a,sx:{mb:1},control:e(Se,{sx:{ml:.75,alignSelf:"flex-start"}}),label:e(T,{children:l(T,{children:[e(w,{children:i}),e(w,{variant:"body2",color:"text.secondary",children:c})]})})},a))})]})})},at=({type:t,environment:n,setEnvironment:s})=>{const{environments:o}=M(),r=t===m.ADMIN?[{key:"*",label:"ALL"}]:o.map(a=>({key:a.name,label:a.name,title:a.name,disabled:!a.enabled}));return l(k,{children:[e(G,{children:"Which environment should the token have access to?"}),e(He,{disabled:t===m.ADMIN,options:r,value:n,onChange:s,label:"Environment",id:"api_key_environment",name:"environment",IconComponent:Ae,fullWidth:!0})]})},Ge=t=>t.map(n=>({...n.user,joinedAt:new Date(n.joinedAt),createdBy:n.createdBy})),lt=t=>{const{data:n,error:s,mutate:o}=ve(O(`api/admin/groups/${t}`),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=t=>fetch(t).then(W("Group")).then(n=>n.json()),it=(t,n={})=>{const s=()=>{const d=O(`api/admin/roles/${t}`);return fetch(d,{method:"GET"}).then(W("project role")).then(b=>b.json())},{data:o,error:r}=Ie({},`api/admin/roles/${t}`,s,n),[a,i]=u.useState(!r&&!o),c=()=>{we(`api/admin/roles/${t}`)};return u.useEffect(()=>{i(!r&&!o)},[o,r]),{role:o||{},error:r,loading:a,refetch:c}};export{Xe as A,qe as B,Ye as C,at as E,et as R,G as S,m as T,Je 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,Ze as u};
|
package/frontend/package.json
CHANGED
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"@emotion/styled": "11.10.5",
|
|
39
39
|
"@mui/icons-material": "5.11.9",
|
|
40
40
|
"@mui/lab": "5.0.0-alpha.120",
|
|
41
|
-
"@mui/material": "5.11.
|
|
41
|
+
"@mui/material": "5.11.10",
|
|
42
42
|
"@testing-library/dom": "8.20.0",
|
|
43
43
|
"@testing-library/jest-dom": "5.16.5",
|
|
44
44
|
"@testing-library/react": "12.1.5",
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
"react-table": "7.8.0",
|
|
97
97
|
"react-test-renderer": "17.0.2",
|
|
98
98
|
"react-timeago": "7.1.0",
|
|
99
|
-
"sass": "1.58.
|
|
99
|
+
"sass": "1.58.3",
|
|
100
100
|
"semver": "7.3.8",
|
|
101
101
|
"swr": "2.0.3",
|
|
102
102
|
"tss-react": "4.6.0",
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"vitest": "0.28.5",
|
|
109
109
|
"whatwg-fetch": "3.6.2",
|
|
110
110
|
"countries-and-timezones": "^3.4.0",
|
|
111
|
-
"date-fns-tz": "^
|
|
111
|
+
"date-fns-tz": "^2.0.0"
|
|
112
112
|
},
|
|
113
113
|
"optionalDependencies": {
|
|
114
114
|
"orval": "^6.10.3"
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unleash-server",
|
|
3
3
|
"description": "Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.",
|
|
4
|
-
"version": "4.22.0-beta.
|
|
4
|
+
"version": "4.22.0-beta.21",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"unleash",
|
|
7
7
|
"feature toggle",
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
"fast-check": "3.6.3",
|
|
177
177
|
"fetch-mock": "9.11.0",
|
|
178
178
|
"husky": "8.0.3",
|
|
179
|
-
"jest": "29.4.
|
|
179
|
+
"jest": "29.4.3",
|
|
180
180
|
"lint-staged": "13.1.2",
|
|
181
181
|
"nock": "13.3.0",
|
|
182
182
|
"openapi-enforcer": "1.22.2",
|