@descope/audit-management-widget 0.7.6 → 0.8.1
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/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.ts +67 -53
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
|
-
* @descope/audit-management-widget v0.
|
|
3
|
+
* @descope/audit-management-widget v0.8.1
|
|
4
4
|
*/
|
|
5
|
-
import{createSingletonMixin as e,compose as t,createTemplate as s,debounce as i,withMemCache as o,generateCsv as r,downloadCsv as a}from"@descope/sdk-helpers";import{__rest as n,__awaiter as d,__classPrivateFieldGet as c,__classPrivateFieldSet as l}from"tslib";import{projectIdMixin as u,observeAttributesMixin as h,loggerMixin as g,baseUrlMixin as m,cookieConfigMixin as p,createValidateAttributesMixin as v,createStateManagementMixin as f,initLifecycleMixin as w,staticResourcesMixin as b,descopeUiMixin as y,initElementMixin as _,debuggerMixin as R,themeMixin as j}from"@descope/sdk-mixins";import{TextFieldDriver as C,SingleSelectDriver as I,GridDriver as x,ButtonDriver as k}from"@descope/sdk-component-drivers";import{createAsyncThunk as O}from"@reduxjs/toolkit";import{createSelector as A}from"reselect";import L from"@descope/web-js-sdk";const W=(e,t)=>t?{[e]:t}:{},D=e=>{if(!e)return;const t=JSON.parse(e);return Array.isArray(t)&&0===t.length?void 0:t},S=e=>e.selectedAuditId,$=A((e=>e.auditList.data),(e=>e.map((e=>{const t=e||{},{occurred:s,ID:i,type:o}=t,r=t.data,a=void 0===r?{saml_request:"",saml_response:"",saml_generated_user:"",saml_generated_roles:"",oidc_response:"",oidc_generated_user:"",scim_request:"",scim_result:"",Change:""}:r,{saml_request:d,saml_response:c,saml_generated_user:l,saml_generated_roles:u,oidc_response:h,oidc_generated_user:g,scim_request:m,scim_result:p,Change:v}=a,f=n(a,["saml_request","saml_response","saml_generated_user","saml_generated_roles","oidc_response","oidc_generated_user","scim_request","scim_result","Change"]),w=n(t,["occurred","ID","type","data"]);var b;return(e=>Object.fromEntries(Object.entries(e).filter((([e,t])=>!!t))))(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},w),{data:f}),W("type",(b=o)&&b[0].toUpperCase()+b.slice(1))),W("saml_request",d)),W("saml_response",c)),W("saml_generated_user",D(l))),W("saml_generated_roles",D(u))),W("oidc_response",D(h))),W("oidc_generated_user",D(g))),W("scim_request",m)),W("scim_result",p)),W("Change",v)),{occurredFormatted:s?new Date(Number(s)||0).toLocaleString():"N/A"}))}))));A(S,$,((e,t)=>t.find((t=>e===t.id)))),A(S,(e=>!!e));const P=O("audit/search",((e,{extra:{api:t},getState:s})=>{const i=s().searchParams;return t.audit.search(Object.assign(Object.assign({},i),e))})),q=(e=>(...t)=>s=>{s.addCase(e.pending,((e,s)=>{t.forEach((({onPending:t})=>{null==t||t(e,s)}))})),s.addCase(e.fulfilled,((e,s)=>{t.forEach((({onFulfilled:t})=>{null==t||t(e,s)}))})),s.addCase(e.rejected,((e,s)=>{t.forEach((({onRejected:t})=>{null==t||t(e,s)}))}))})(P)({onPending:(e,t)=>{e.searchParams=Object.assign(Object.assign({},e.searchParams),t.meta.arg)},onFulfilled:(e,t)=>{e.auditList.data=t.payload}},(M=e=>e.auditList,{onFulfilled:e=>{M(e).loading=!1},onPending:e=>{M(e).loading=!0,M(e).error=null},onRejected:(e,t)=>{M(e).loading=!1,M(e).error=t.error}}));var M;const E={action:P,reducer:q},T={auditList:{data:[],loading:!1,error:null},searchParams:{text:"",sort:[]},selectedAuditId:""},N={search:"/v1/mgmt/audit/search"},F=e=>d(void 0,[e],void 0,(function*({text:e,sort:t}){return new Promise((s=>{const i=[],o=(new Date).getTime()/1e3+2592e3,r=new Date(o).toLocaleString();for(let e=1;e<9;e+=1)i.push({id:`Audit ${e}`,action:`Action ${e}`,actorId:`Actor ${e}`,type:"info",method:`Method ${e}`,userId:`User ${e}`,device:`Device ${e}`,geo:`Geo ${e}`,remoteAddress:`127.0.0.${e}`,externalIds:[`Login ID ${e}`],occurred:o,occurredFormatted:r});t.forEach((e=>{i.sort(((t,s)=>{var i,o;return e.desc?null===(o=s[e.field])||void 0===o?void 0:o.localeCompare(t[e.field]):null===(i=t[e.field])||void 0===i?void 0:i.localeCompare(s[e.field])}))})),s(i.filter((t=>t.id.toLowerCase().includes(e.toLowerCase())||t.action.toLowerCase().includes(e.toLowerCase())||t.type.toLowerCase().includes(e.toLowerCase())||t.device.toLowerCase().includes(e.toLowerCase())||t.method.toLowerCase().includes(e.toLowerCase())||t.geo.toLowerCase().includes(e.toLowerCase())||t.remoteAddress.toLowerCase().includes(e.toLowerCase())||t.externalIds.includes(e.toLowerCase())||t.userId.toLowerCase().includes(e.toLowerCase()))))}))})),H=({httpClient:e,tenant:t,mock:s})=>({search:(...i)=>d(void 0,[...i],void 0,(function*({page:i,limit:o=1e4,text:r,sort:a,from:n}={}){if(s)return F({page:i,limit:o,text:r,sort:a},t);const c=yield e.post(N.search,{limit:o,page:i,text:r,sort:a,from:n},{queryParams:{tenant:t}});yield(e=>d(void 0,void 0,void 0,(function*(){const t=yield e.text(),s=JSON.parse(t);if(!e.ok){const t=`${s.errorDescription}${s.errorMessage?`: ${s.errorMessage}`:""}`;throw Error(t||`${e.status} ${e.statusText}`)}e.json=()=>Promise.resolve(s),e.text=()=>Promise.resolve(t)})))(c);return(yield c.json()).audits}))}),U=e((e=>{var s,i,o,r;const a=t(u,h,g,m,p,v({tenant:v.missingAttrValidator}))(e);return r=class extends a{constructor(){super(...arguments),s.add(this),i.set(this,void 0)}get tenantId(){return this.getAttribute("tenant")}get widgetId(){return this.getAttribute("widget-id")}get mock(){return this.getAttribute("mock")}get api(){return c(this,i,"f")||c(this,s,"m",o).call(this),c(this,i,"f")}init(){const e=Object.create(null,{init:{get:()=>super.init}});return d(this,void 0,void 0,(function*(){var t;yield null===(t=e.init)||void 0===t?void 0:t.call(this),this.observeAttributes(["project-id","base-url","tenant"],(()=>{c(this,i,"f")&&c(this,s,"m",o).call(this)}))}))}},i=new WeakMap,s=new WeakSet,o=function(){this.logger.debug("creating an sdk instance"),l(this,i,((e,t,s,i)=>{const o=L(Object.assign(Object.assign({},e),{persistTokens:!0,baseHeaders:{"x-descope-widget-type":"audit-management-widget","x-descope-widget-id":i,"x-descope-widget-version":"0.7.6"}}));return{audit:H({httpClient:o.httpClient,tenant:t,mock:s})}})({projectId:this.projectId,baseUrl:this.baseUrl,refreshCookieName:this.refreshCookieName},this.tenantId,"true"===this.mock,this.widgetId),"f")},r})),B=e((e=>{const s=t(f({name:"widget",initialState:T,reducers:{setSelectedAuditId:(e,{payload:t})=>{e.selectedAuditId=t}},extraReducers:e=>{E.reducer(e)},asyncActions:{searchAudit:E.action}}),w,g,U)(e);return class extends s{constructor(...e){super(...e),this.state=T,this.subscribe((e=>{this.logger.debug("State update:",e),this.state=e}))}}})),G=e((e=>{const s=t(b,v({"widget-id":v.missingAttrValidator}))(e);return class extends s{get widgetId(){return this.getAttribute("widget-id")}fetchWidgetPage(e){return d(this,void 0,void 0,(function*(){return(yield this.fetchStaticResource(`audit-management-widget/${this.widgetId}/${e}`,"text")).body}))}}})),J=e((e=>{var i,o,r;return r=class extends(t(g,w,y,_,G,B)(e)){constructor(){super(...arguments),i.add(this)}onWidgetRootReady(){return d(this,void 0,void 0,(function*(){}))}init(){const e=Object.create(null,{init:{get:()=>super.init}});return d(this,void 0,void 0,(function*(){var t;yield null===(t=e.init)||void 0===t?void 0:t.call(this),yield Promise.all([c(this,i,"m",o).call(this)]),yield this.onWidgetRootReady(),this.dispatchEvent(new CustomEvent("ready"))}))}},i=new WeakSet,o=function(){return d(this,void 0,void 0,(function*(){const e=s(yield this.fetchWidgetPage("root.html"));yield this.loadDescopeUiComponents(e),this.contentRootElement.append(e.content.cloneNode(!0))}))},r})),V=e((e=>{var s,o,r,a,n;return n=class extends(t(g,J,B)(e)){constructor(){super(...arguments),s.add(this),o.set(this,i((()=>{const e=this.rangeInput.value,t=new Date;let s;switch(e){case"minuets15":s=t.setMinutes(t.getMinutes()-15);break;case"hour":s=t.setHours(t.getHours()-1);break;case"hour6":s=t.setHours(t.getHours()-6);break;case"day":default:s=t.setDate(t.getDate()-1);break;case"day3":s=t.setDate(t.getDate()-3);break;case"week":s=t.setDate(t.getDate()-7);break;case"week2":s=t.setDate(t.getDate()-14);break;case"month":s=t.setMonth(t.getMonth()-1)}this.actions.searchAudit({text:this.searchInput.value,from:Math.floor(new Date(s).getTime())})})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return d(this,void 0,void 0,(function*(){var t;yield null===(t=e.onWidgetRootReady)||void 0===t?void 0:t.call(this),c(this,s,"m",r).call(this),c(this,s,"m",a).call(this)}))}},o=new WeakMap,s=new WeakSet,r=function(){var e;this.searchInput=new C(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="search-input"]'),{logger:this.logger}),this.searchInput.onInput(c(this,o,"f")),c(this,o,"f").call(this)},a=function(){var e;this.rangeInput=new I(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="range-input"]'),{logger:this.logger}),this.rangeInput.onInput(c(this,o,"f"))},n})),z=e((e=>{var s,i,r,a;return a=class extends(t(B,g,J)(e)){constructor(){super(...arguments),s.add(this),r.set(this,o((e=>{this.auditTable.data=e})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return d(this,void 0,void 0,(function*(){var t;yield null===(t=e.onWidgetRootReady)||void 0===t?void 0:t.call(this),c(this,s,"m",i).call(this),c(this,r,"f").call(this,$(this.state)),this.subscribe(c(this,r,"f").bind(this),$)}))}},r=new WeakMap,s=new WeakSet,i=function(){var e;this.auditTable=new x(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="audit-table"]'),{logger:this.logger}),this.auditTable.onSelectedItemsChange((e=>{this.actions.setSelectedAuditId(e.detail.value.map((({id:e})=>e)))}))},a})),K=[{header:"Occurred",path:"occurredFormatted"},{header:"User ID",path:"userId"},{header:"Actor",path:"actorId"},{header:"Login IDs",path:"externalIds"},{header:"Remote Address",path:"remoteAddress"},{header:"Type",path:"type"},{header:"Action",path:"action"},{header:"Device",path:"device"},{header:"Method",path:"method"},{header:"Geo",path:"geo"}],Q=e((e=>{var s,i,o;return o=class extends(t(g,J,B)(e)){constructor(){super(...arguments),s.add(this)}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return d(this,void 0,void 0,(function*(){var t;yield null===(t=e.onWidgetRootReady)||void 0===t?void 0:t.call(this),c(this,s,"m",i).call(this)}))}},s=new WeakSet,i=function(){var e;this.exportButton=new k(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="export-button"]'),{logger:this.logger}),this.exportButton.onClick((()=>{const e=$(this.state);if(!e.length)return void this.logger.warn("No audit data to export");const t=r(e,K),s=(new Date).toISOString().slice(0,10);a(t,`audit_logs_${s}.csv`)}))},o})),X=e((e=>class extends(t(R,j,z,V,Q)(e)){init(){const e=Object.create(null,{init:{get:()=>super.init}});return d(this,void 0,void 0,(function*(){var t;yield null===(t=e.init)||void 0===t?void 0:t.call(this)}))}})),Y=t((e=>class extends(X(e)){}))(HTMLElement);customElements.define("descope-audit-management-widget",Y);export{Y as default};
|
|
5
|
+
import{createSingletonMixin as e,compose as t,createTemplate as s,debounce as i,withMemCache as o,generateCsv as r,downloadCsv as a}from"@descope/sdk-helpers";import{__rest as n,__awaiter as d,__classPrivateFieldGet as c,__classPrivateFieldSet as l}from"tslib";import{projectIdMixin as u,observeAttributesMixin as h,loggerMixin as g,baseUrlMixin as m,cookieConfigMixin as p,createValidateAttributesMixin as v,createStateManagementMixin as f,initLifecycleMixin as b,descopeUiMixin as w,initElementMixin as y,createFetchWidgetPagesMixin as _,debuggerMixin as j,themeMixin as R}from"@descope/sdk-mixins";import{TextFieldDriver as C,SingleSelectDriver as I,GridDriver as k,ButtonDriver as x}from"@descope/sdk-component-drivers";import{createAsyncThunk as O}from"@reduxjs/toolkit";import{createSelector as L}from"reselect";import A from"@descope/web-js-sdk";const D=(e,t)=>t?{[e]:t}:{},W=e=>{if(!e)return;const t=JSON.parse(e);return Array.isArray(t)&&0===t.length?void 0:t},S=e=>e.selectedAuditId,$=L((e=>e.auditList.data),(e=>e.map((e=>{const t=e||{},{occurred:s,ID:i,type:o}=t,r=t.data,a=void 0===r?{saml_request:"",saml_response:"",saml_generated_user:"",saml_generated_roles:"",oidc_response:"",oidc_generated_user:"",scim_request:"",scim_result:"",Change:""}:r,{saml_request:d,saml_response:c,saml_generated_user:l,saml_generated_roles:u,oidc_response:h,oidc_generated_user:g,scim_request:m,scim_result:p,Change:v}=a,f=n(a,["saml_request","saml_response","saml_generated_user","saml_generated_roles","oidc_response","oidc_generated_user","scim_request","scim_result","Change"]),b=n(t,["occurred","ID","type","data"]);var w;return(e=>Object.fromEntries(Object.entries(e).filter((([e,t])=>!!t))))(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},b),{data:f}),D("type",(w=o)&&w[0].toUpperCase()+w.slice(1))),D("saml_request",d)),D("saml_response",c)),D("saml_generated_user",W(l))),D("saml_generated_roles",W(u))),D("oidc_response",W(h))),D("oidc_generated_user",W(g))),D("scim_request",m)),D("scim_result",p)),D("Change",v)),{occurredFormatted:s?new Date(Number(s)||0).toLocaleString():"N/A"}))}))));L(S,$,((e,t)=>t.find((t=>e===t.id)))),L(S,(e=>!!e));const q=O("audit/search",((e,{extra:{api:t},getState:s})=>{const i=s().searchParams;return t.audit.search(Object.assign(Object.assign({},i),e))})),M=(e=>(...t)=>s=>{s.addCase(e.pending,((e,s)=>{t.forEach((({onPending:t})=>{null==t||t(e,s)}))})),s.addCase(e.fulfilled,((e,s)=>{t.forEach((({onFulfilled:t})=>{null==t||t(e,s)}))})),s.addCase(e.rejected,((e,s)=>{t.forEach((({onRejected:t})=>{null==t||t(e,s)}))}))})(q)({onPending:(e,t)=>{e.searchParams=Object.assign(Object.assign({},e.searchParams),t.meta.arg)},onFulfilled:(e,t)=>{e.auditList.data=t.payload}},(P=e=>e.auditList,{onFulfilled:e=>{P(e).loading=!1},onPending:e=>{P(e).loading=!0,P(e).error=null},onRejected:(e,t)=>{P(e).loading=!1,P(e).error=t.error}}));var P;const E={action:q,reducer:M},T={auditList:{data:[],loading:!1,error:null},searchParams:{text:"",sort:[]},selectedAuditId:""},N={search:"/v1/mgmt/audit/search"},F=e=>d(void 0,[e],void 0,(function*({text:e,sort:t}){return new Promise((s=>{const i=[],o=(new Date).getTime()/1e3+2592e3,r=new Date(o).toLocaleString();for(let e=1;e<9;e+=1)i.push({id:`Audit ${e}`,action:`Action ${e}`,actorId:`Actor ${e}`,type:"info",method:`Method ${e}`,userId:`User ${e}`,device:`Device ${e}`,geo:`Geo ${e}`,remoteAddress:`127.0.0.${e}`,externalIds:[`Login ID ${e}`],occurred:o,occurredFormatted:r});t.forEach((e=>{i.sort(((t,s)=>{var i,o;return e.desc?null===(o=s[e.field])||void 0===o?void 0:o.localeCompare(t[e.field]):null===(i=t[e.field])||void 0===i?void 0:i.localeCompare(s[e.field])}))})),s(i.filter((t=>t.id.toLowerCase().includes(e.toLowerCase())||t.action.toLowerCase().includes(e.toLowerCase())||t.type.toLowerCase().includes(e.toLowerCase())||t.device.toLowerCase().includes(e.toLowerCase())||t.method.toLowerCase().includes(e.toLowerCase())||t.geo.toLowerCase().includes(e.toLowerCase())||t.remoteAddress.toLowerCase().includes(e.toLowerCase())||t.externalIds.includes(e.toLowerCase())||t.userId.toLowerCase().includes(e.toLowerCase()))))}))})),H=({httpClient:e,tenant:t,mock:s})=>({search:(...i)=>d(void 0,[...i],void 0,(function*({page:i,limit:o=1e4,text:r,sort:a,from:n}={}){if(s)return F({page:i,limit:o,text:r,sort:a},t);const c=yield e.post(N.search,{limit:o,page:i,text:r,sort:a,from:n},{queryParams:{tenant:t}});yield(e=>d(void 0,void 0,void 0,(function*(){const t=yield e.text(),s=JSON.parse(t);if(!e.ok){const t=`${s.errorDescription}${s.errorMessage?`: ${s.errorMessage}`:""}`;throw Error(t||`${e.status} ${e.statusText}`)}e.json=()=>Promise.resolve(s),e.text=()=>Promise.resolve(t)})))(c);return(yield c.json()).audits}))}),U=e((e=>{var s,i,o,r;const a=t(u,h,g,m,p,v({tenant:v.missingAttrValidator}))(e);return r=class extends a{constructor(){super(...arguments),s.add(this),i.set(this,void 0)}get tenantId(){return this.getAttribute("tenant")}get widgetId(){return this.getAttribute("widget-id")}get mock(){return this.getAttribute("mock")}get api(){return c(this,i,"f")||c(this,s,"m",o).call(this),c(this,i,"f")}init(){const e=Object.create(null,{init:{get:()=>super.init}});return d(this,void 0,void 0,(function*(){var t;yield null===(t=e.init)||void 0===t?void 0:t.call(this),this.observeAttributes(["project-id","base-url","tenant"],(()=>{c(this,i,"f")&&c(this,s,"m",o).call(this)}))}))}},i=new WeakMap,s=new WeakSet,o=function(){this.logger.debug("creating an sdk instance"),l(this,i,((e,t,s,i)=>{const o=A(Object.assign(Object.assign({},e),{persistTokens:!0,baseHeaders:{"x-descope-widget-type":"audit-management-widget","x-descope-widget-id":i,"x-descope-widget-version":"0.8.1"}}));return{audit:H({httpClient:o.httpClient,tenant:t,mock:s})}})({projectId:this.projectId,baseUrl:this.baseUrl,refreshCookieName:this.refreshCookieName},this.tenantId,"true"===this.mock,this.widgetId),"f")},r})),B=e((e=>{const s=t(f({name:"widget",initialState:T,reducers:{setSelectedAuditId:(e,{payload:t})=>{e.selectedAuditId=t}},extraReducers:e=>{E.reducer(e)},asyncActions:{searchAudit:E.action}}),b,g,U)(e);return class extends s{constructor(...e){super(...e),this.state=T,this.subscribe((e=>{this.logger.debug("State update:",e),this.state=e}))}}})),G=e((e=>{var i,o,r;return r=class extends(t(g,b,w,y,_("audit-management-widget"),B)(e)){constructor(){super(...arguments),i.add(this)}onWidgetRootReady(){return d(this,void 0,void 0,(function*(){}))}init(){const e=Object.create(null,{init:{get:()=>super.init}});return d(this,void 0,void 0,(function*(){var t;yield null===(t=e.init)||void 0===t?void 0:t.call(this),yield Promise.all([c(this,i,"m",o).call(this)]),yield this.onWidgetRootReady(),this.dispatchEvent(new CustomEvent("ready"))}))}},i=new WeakSet,o=function(){return d(this,void 0,void 0,(function*(){const e=s(yield this.fetchWidgetPage("root.html"));yield this.loadDescopeUiComponents(e),this.contentRootElement.append(e.content.cloneNode(!0))}))},r})),J=e((e=>{var s,o,r,a,n;return n=class extends(t(g,G,B)(e)){constructor(){super(...arguments),s.add(this),o.set(this,i((()=>{const e=this.rangeInput.value,t=new Date;let s;switch(e){case"minuets15":s=t.setMinutes(t.getMinutes()-15);break;case"hour":s=t.setHours(t.getHours()-1);break;case"hour6":s=t.setHours(t.getHours()-6);break;case"day":default:s=t.setDate(t.getDate()-1);break;case"day3":s=t.setDate(t.getDate()-3);break;case"week":s=t.setDate(t.getDate()-7);break;case"week2":s=t.setDate(t.getDate()-14);break;case"month":s=t.setMonth(t.getMonth()-1)}this.actions.searchAudit({text:this.searchInput.value,from:Math.floor(new Date(s).getTime())})})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return d(this,void 0,void 0,(function*(){var t;yield null===(t=e.onWidgetRootReady)||void 0===t?void 0:t.call(this),c(this,s,"m",r).call(this),c(this,s,"m",a).call(this)}))}},o=new WeakMap,s=new WeakSet,r=function(){var e;this.searchInput=new C(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="search-input"]'),{logger:this.logger}),this.searchInput.onInput(c(this,o,"f")),c(this,o,"f").call(this)},a=function(){var e;this.rangeInput=new I(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="range-input"]'),{logger:this.logger}),this.rangeInput.onInput(c(this,o,"f"))},n})),V=e((e=>{var s,i,r,a;return a=class extends(t(B,g,G)(e)){constructor(){super(...arguments),s.add(this),r.set(this,o((e=>{this.auditTable.data=e})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return d(this,void 0,void 0,(function*(){var t;yield null===(t=e.onWidgetRootReady)||void 0===t?void 0:t.call(this),c(this,s,"m",i).call(this),c(this,r,"f").call(this,$(this.state)),this.subscribe(c(this,r,"f").bind(this),$)}))}},r=new WeakMap,s=new WeakSet,i=function(){var e;this.auditTable=new k(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="audit-table"]'),{logger:this.logger}),this.auditTable.onSelectedItemsChange((e=>{this.actions.setSelectedAuditId(e.detail.value.map((({id:e})=>e)))}))},a})),z=[{header:"Occurred",path:"occurredFormatted"},{header:"User ID",path:"userId"},{header:"Actor",path:"actorId"},{header:"Login IDs",path:"externalIds"},{header:"Remote Address",path:"remoteAddress"},{header:"Type",path:"type"},{header:"Action",path:"action"},{header:"Device",path:"device"},{header:"Method",path:"method"},{header:"Geo",path:"geo"}],K=e((e=>{var s,i,o;return o=class extends(t(g,G,B)(e)){constructor(){super(...arguments),s.add(this)}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return d(this,void 0,void 0,(function*(){var t;yield null===(t=e.onWidgetRootReady)||void 0===t?void 0:t.call(this),c(this,s,"m",i).call(this)}))}},s=new WeakSet,i=function(){var e;this.exportButton=new x(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="export-button"]'),{logger:this.logger}),this.exportButton.onClick((()=>{const e=$(this.state);if(!e.length)return void this.logger.warn("No audit data to export");const t=r(e,z),s=(new Date).toISOString().slice(0,10);a(t,`audit_logs_${s}.csv`)}))},o})),Q=e((e=>class extends(t(j,R,V,J,K)(e)){init(){const e=Object.create(null,{init:{get:()=>super.init}});return d(this,void 0,void 0,(function*(){var t;yield null===(t=e.init)||void 0===t?void 0:t.call(this)}))}})),X=t((e=>class extends(Q(e)){}))(HTMLElement);customElements.define("descope-audit-management-widget",X);export{X as default};
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/lib/widget/state/asyncActions/helpers.ts","../../src/lib/widget/state/helpers.ts","../../src/lib/widget/state/selectors.ts","../../src/lib/widget/state/asyncActions/searchAudit.ts","../../src/lib/widget/state/initialState.ts","../../src/lib/widget/api/apiPaths.ts","../../src/lib/widget/api/sdk/mocks.ts","../../src/lib/widget/api/sdk/createAuditSdk.ts","../../src/lib/widget/api/sdk/helpers.ts","../../src/lib/widget/mixins/apiMixin.ts","../../src/lib/widget/api/sdk/index.ts","../../src/lib/widget/mixins/stateManagementMixin.ts","../../src/lib/widget/mixins/fetchWidgetPagesMixin.ts","../../src/lib/widget/mixins/initMixin/initComponentsMixins/initWidgetRootMixin.ts","../../src/lib/widget/mixins/initMixin/initComponentsMixins/initFilterAuditInputMixin.ts","../../src/lib/widget/mixins/initMixin/initComponentsMixins/initAuditTableMixin.ts","../../src/lib/widget/helpers/csv.ts","../../src/lib/widget/mixins/initMixin/initComponentsMixins/initExportButtonMixin.ts","../../src/lib/widget/mixins/initMixin/initMixin.ts","../../src/lib/widget/index.ts","../../src/lib/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-shadow */\n/* eslint-disable no-param-reassign */\n\nimport {\n ActionReducerMapBuilder,\n AsyncThunk,\n PayloadAction,\n SerializedError,\n} from '@reduxjs/toolkit';\nimport { State } from '../types';\n\ntype ExtractedArg<T> = T extends AsyncThunk<any, infer U, any> ? U : never;\n\ntype FulfilledAction<T extends AsyncThunk<any, any, any>> = PayloadAction<\n any,\n string,\n {\n arg: ExtractedArg<T>;\n requestId: string;\n },\n never\n>;\n\ntype RejectedAction<T extends AsyncThunk<any, any, any>> = PayloadAction<\n any,\n string,\n {\n arg: ExtractedArg<T>;\n requestId: string;\n },\n SerializedError\n>;\n\ntype PendingAction<T extends AsyncThunk<any, any, any>> = PayloadAction<\n unknown,\n string,\n {\n arg: ExtractedArg<T>;\n requestId: string;\n }\n>;\n\ntype AsyncReducerConfig<T extends AsyncThunk<any, any, any>> = {\n onFulfilled?: (state: State, action: FulfilledAction<T>) => void;\n onRejected?: (state: State, action: RejectedAction<T>) => void;\n onPending?: (state: State, action: PendingAction<T>) => void;\n};\n\nexport const buildAsyncReducer =\n <T extends AsyncThunk<any, any, any>>(action: T) =>\n (...args: AsyncReducerConfig<T>[]) =>\n (builder: ActionReducerMapBuilder<State>) => {\n builder.addCase(action.pending, (state, action) => {\n args.forEach(({ onPending }) => {\n onPending?.(state, action);\n });\n });\n\n builder.addCase(action.fulfilled, (state, action) => {\n args.forEach(({ onFulfilled }) => {\n onFulfilled?.(state, action);\n });\n });\n\n builder.addCase(action.rejected, (state, action) => {\n args.forEach(({ onRejected }) => {\n onRejected?.(state, action);\n });\n });\n };\n\nexport const withRequestStatus = (\n getStateSection: (state: State) => { loading: boolean; error: unknown },\n): AsyncReducerConfig<any> => ({\n onFulfilled: (state) => {\n getStateSection(state).loading = false;\n },\n onPending: (state) => {\n getStateSection(state).loading = true;\n getStateSection(state).error = null;\n },\n onRejected: (state, action) => {\n getStateSection(state).loading = false;\n getStateSection(state).error = action.error;\n },\n});\n","export const capitalize = (s: string) => s && s[0].toUpperCase() + s.slice(1);\n\nexport const conditionalObj = <T extends any>(key: string, val: T) =>\n val ? { [key]: val } : {};\n\nexport const conditionalJsonParse = (str: string) => {\n if (!str) return undefined;\n\n const res = JSON.parse(str);\n\n if (Array.isArray(res) && res.length === 0) return undefined;\n\n return res;\n};\n","import { createSelector } from 'reselect';\nimport { State } from './types';\nimport { capitalize, conditionalJsonParse, conditionalObj } from './helpers';\n\nexport const getRawAuditList = (state: State) => state.auditList.data;\nexport const getSelectedAuditId = (state: State) => state.selectedAuditId;\nexport const getSearchParams = (state: State) => state.searchParams;\n\nconst filterEmptyFields = (audit: Record<string, any>) =>\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Object.fromEntries(Object.entries(audit).filter(([_, v]) => !!v));\n\nexport const getAuditList = createSelector(getRawAuditList, (audits) =>\n audits.map((audit) => {\n const {\n occurred,\n ID,\n type,\n data: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n saml_request,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n saml_response,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n saml_generated_user,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n saml_generated_roles,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n oidc_response,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n oidc_generated_user,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n scim_request,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n scim_result,\n Change,\n ...data\n } = {\n saml_request: '',\n saml_response: '',\n saml_generated_user: '',\n saml_generated_roles: '',\n oidc_response: '',\n oidc_generated_user: '',\n scim_request: '',\n scim_result: '',\n Change: '',\n },\n ...auditRest\n } = audit || {};\n\n const ret = {\n ...auditRest,\n data,\n ...conditionalObj('type', capitalize(type)),\n ...conditionalObj('saml_request', saml_request),\n ...conditionalObj('saml_response', saml_response),\n ...conditionalObj(\n 'saml_generated_user',\n conditionalJsonParse(saml_generated_user),\n ),\n ...conditionalObj(\n 'saml_generated_roles',\n conditionalJsonParse(saml_generated_roles),\n ),\n ...conditionalObj('oidc_response', conditionalJsonParse(oidc_response)),\n ...conditionalObj(\n 'oidc_generated_user',\n conditionalJsonParse(oidc_generated_user),\n ),\n ...conditionalObj('scim_request', scim_request),\n ...conditionalObj('scim_result', scim_result),\n ...conditionalObj('Change', Change),\n occurredFormatted: !occurred\n ? 'N/A'\n : new Date(Number(occurred) || 0).toLocaleString(),\n };\n\n return filterEmptyFields(ret);\n }),\n);\n\nexport const getSelectedAudit = createSelector(\n getSelectedAuditId,\n getAuditList,\n (selected, audits) => audits.find((audit) => selected === audit.id),\n);\n\nexport const getIsAuditSelected = createSelector(\n getSelectedAuditId,\n (selected) => !!selected,\n);\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { Sdk } from '../../api/sdk';\nimport { FirstParameter, State, ThunkConfigExtraApi } from '../types';\nimport { buildAsyncReducer, withRequestStatus } from './helpers';\nimport { getSearchParams } from '../selectors';\n\nconst action = createAsyncThunk<\n any,\n FirstParameter<Sdk['audit']['search']> | void,\n ThunkConfigExtraApi\n>('audit/search', (arg, { extra: { api }, getState }) => {\n // we get the existing search params from state, and adding the new search params from the action\n const searchParams = getSearchParams(getState() as State);\n return api.audit.search({ ...searchParams, ...arg });\n});\n\nconst reducer = buildAsyncReducer(action)(\n {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n onPending: (state, action) => {\n state.searchParams = { ...state.searchParams, ...action.meta.arg };\n },\n // eslint-disable-next-line @typescript-eslint/no-shadow\n onFulfilled: (state, action) => {\n state.auditList.data = action.payload;\n },\n },\n withRequestStatus((state: State) => state.auditList),\n);\n\nexport const searchAudit = { action, reducer };\n","import { State } from './types';\n\nexport const initialState: State = {\n auditList: {\n data: [],\n loading: false,\n error: null,\n },\n searchParams: { text: '', sort: [] },\n selectedAuditId: '',\n};\n","export const apiPaths = {\n audit: {\n search: '/v1/mgmt/audit/search',\n },\n};\n","import { Audit, SearchAuditConfig } from '../types';\n\nconst search: (\n config: SearchAuditConfig,\n tenantId: string,\n) => Promise<Audit[]> = async ({ text, sort }) =>\n new Promise((resolve) => {\n const audits: Audit[] = [];\n const timeMock = new Date().getTime() / 1000 + 60 * 60 * 24 * 30;\n const timeMockFormatted = new Date(timeMock).toLocaleString();\n for (let i = 1; i < 9; i += 1) {\n audits.push({\n id: `Audit ${i}`,\n action: `Action ${i}`,\n actorId: `Actor ${i}`,\n type: `info`,\n method: `Method ${i}`,\n userId: `User ${i}`,\n device: `Device ${i}`,\n geo: `Geo ${i}`,\n remoteAddress: `127.0.0.${i}`,\n externalIds: [`Login ID ${i}`],\n occurred: timeMock,\n occurredFormatted: timeMockFormatted,\n });\n }\n\n sort.forEach((s) => {\n audits.sort((a, b) =>\n !s.desc\n ? (a[s.field] as string)?.localeCompare(b[s.field] as string)\n : (b[s.field] as string)?.localeCompare(a[s.field] as string),\n );\n });\n resolve(\n audits.filter(\n (audit) =>\n audit.id.toLowerCase().includes(text.toLowerCase()) ||\n audit.action.toLowerCase().includes(text.toLowerCase()) ||\n audit.type.toLowerCase().includes(text.toLowerCase()) ||\n audit.device.toLowerCase().includes(text.toLowerCase()) ||\n audit.method.toLowerCase().includes(text.toLowerCase()) ||\n audit.geo.toLowerCase().includes(text.toLowerCase()) ||\n audit.remoteAddress.toLowerCase().includes(text.toLowerCase()) ||\n audit.externalIds.includes(text.toLowerCase()) ||\n audit.userId.toLowerCase().includes(text.toLowerCase()),\n ),\n );\n });\n\nconst audit = {\n search,\n};\nexport { audit };\n","import { HttpClient, SearchAuditConfig, Audit } from '../types';\nimport { apiPaths } from '../apiPaths';\nimport { withErrorHandler } from './helpers';\nimport { audit } from './mocks';\n\nexport const createAuditSdk = ({\n httpClient,\n tenant,\n mock,\n}: {\n httpClient: HttpClient;\n tenant: string;\n mock: boolean;\n}) => {\n const search: (config: SearchAuditConfig) => Promise<Audit[]> = async ({\n page,\n limit = 10000,\n text,\n sort,\n from,\n } = {}) => {\n if (mock) {\n return audit.search({ page, limit, text, sort }, tenant);\n }\n const res = await httpClient.post(\n apiPaths.audit.search,\n {\n limit,\n page,\n text,\n sort,\n from,\n },\n {\n queryParams: { tenant },\n },\n );\n\n await withErrorHandler(res);\n\n const json = await res.json();\n\n return json.audits;\n };\n\n return {\n search,\n };\n};\n","export const withErrorHandler = async (res: Response) => {\n const text = await res.text();\n const json = JSON.parse(text);\n\n if (!res.ok) {\n const descopeErrorMsg = `${json.errorDescription}${\n json.errorMessage ? `: ${json.errorMessage}` : ''\n }`;\n throw Error(descopeErrorMsg || `${res.status} ${res.statusText}`);\n }\n\n res.json = () => Promise.resolve(json);\n res.text = () => Promise.resolve(text);\n};\n","import { compose, createSingletonMixin } from '@descope/sdk-helpers';\nimport {\n baseUrlMixin,\n cookieConfigMixin,\n createValidateAttributesMixin,\n loggerMixin,\n observeAttributesMixin,\n projectIdMixin,\n} from '@descope/sdk-mixins';\nimport { Sdk, createSdk } from '../api/sdk';\n\nexport const apiMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) => {\n const BaseClass = compose(\n projectIdMixin,\n observeAttributesMixin,\n loggerMixin,\n baseUrlMixin,\n cookieConfigMixin,\n createValidateAttributesMixin({\n tenant: createValidateAttributesMixin.missingAttrValidator,\n }),\n )(superclass);\n\n return class ApiMixinClass extends BaseClass {\n #api: Sdk;\n\n #createSdk() {\n this.logger.debug('creating an sdk instance');\n this.#api = createSdk(\n {\n projectId: this.projectId,\n baseUrl: this.baseUrl,\n refreshCookieName: this.refreshCookieName,\n },\n this.tenantId,\n this.mock === 'true',\n this.widgetId,\n );\n }\n\n get tenantId() {\n return this.getAttribute('tenant');\n }\n\n get widgetId() {\n return this.getAttribute('widget-id');\n }\n\n get mock() {\n return this.getAttribute('mock');\n }\n\n get api() {\n if (!this.#api) {\n this.#createSdk();\n }\n\n return this.#api;\n }\n\n async init() {\n await super.init?.();\n\n this.observeAttributes(['project-id', 'base-url', 'tenant'], () => {\n if (this.#api) {\n this.#createSdk();\n }\n });\n }\n };\n },\n);\n","import createWebSdk from '@descope/web-js-sdk';\nimport { createAuditSdk } from './createAuditSdk';\n\ndeclare const BUILD_VERSION: string;\n\nexport const createSdk = (\n config: Parameters<typeof createWebSdk>[0],\n tenant: string,\n mock: boolean,\n widgetId?: string,\n) => {\n const webSdk = createWebSdk({\n ...config,\n persistTokens: true,\n baseHeaders: {\n 'x-descope-widget-type': 'audit-management-widget',\n 'x-descope-widget-id': widgetId,\n 'x-descope-widget-version': BUILD_VERSION,\n },\n });\n\n return {\n audit: createAuditSdk({ httpClient: webSdk.httpClient, tenant, mock }),\n };\n};\n\nexport type Sdk = ReturnType<typeof createSdk>;\n","/* eslint-disable no-param-reassign */\nimport { compose, createSingletonMixin } from '@descope/sdk-helpers';\nimport {\n createStateManagementMixin,\n initLifecycleMixin,\n loggerMixin,\n} from '@descope/sdk-mixins';\nimport { searchAudit } from '../state/asyncActions';\nimport { initialState } from '../state/initialState';\nimport { apiMixin } from './apiMixin';\n\nexport const stateManagementMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) => {\n const BaseClass = compose(\n createStateManagementMixin({\n name: 'widget',\n initialState,\n reducers: {\n setSelectedAuditId: (state, { payload }) => {\n state.selectedAuditId = payload;\n },\n },\n extraReducers: (builder) => {\n searchAudit.reducer(builder);\n },\n asyncActions: {\n searchAudit: searchAudit.action,\n },\n }),\n initLifecycleMixin,\n loggerMixin,\n apiMixin,\n )(superclass);\n return class StateManagementMixinClass extends BaseClass {\n state = initialState;\n\n constructor(...args: any) {\n super(...args);\n\n this.subscribe((state: typeof initialState) => {\n this.logger.debug('State update:', state);\n this.state = state;\n });\n }\n };\n },\n);\n","import { compose, createSingletonMixin } from '@descope/sdk-helpers';\nimport {\n createValidateAttributesMixin,\n staticResourcesMixin,\n} from '@descope/sdk-mixins';\n\nconst WIDGET_PAGES_BASE_DIR = 'audit-management-widget';\n\nexport const fetchWidgetPagesMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) => {\n const BaseClass = compose(\n staticResourcesMixin,\n createValidateAttributesMixin({\n 'widget-id': createValidateAttributesMixin.missingAttrValidator,\n }),\n )(superclass);\n return class FetchWidgetPagesMixinClass extends BaseClass {\n get widgetId() {\n return this.getAttribute('widget-id');\n }\n\n async fetchWidgetPage(filename: string) {\n const res = await this.fetchStaticResource(\n `${WIDGET_PAGES_BASE_DIR}/${this.widgetId}/${filename}`,\n 'text',\n );\n return res.body;\n }\n };\n },\n);\n","import {\n compose,\n createSingletonMixin,\n createTemplate,\n} from '@descope/sdk-helpers';\nimport {\n descopeUiMixin,\n initElementMixin,\n initLifecycleMixin,\n loggerMixin,\n} from '@descope/sdk-mixins';\nimport { fetchWidgetPagesMixin } from '../../fetchWidgetPagesMixin';\nimport { stateManagementMixin } from '../../stateManagementMixin';\n\nexport const initWidgetRootMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) =>\n class InitWidgetRootMixinClass extends compose(\n loggerMixin,\n initLifecycleMixin,\n descopeUiMixin,\n initElementMixin,\n fetchWidgetPagesMixin,\n stateManagementMixin,\n )(superclass) {\n async #initWidgetRoot() {\n const template = createTemplate(\n // await import('../../../../../../test/mocks/rootMock').then(\n // (module) => module.default,\n // ),\n await this.fetchWidgetPage('root.html'),\n );\n await this.loadDescopeUiComponents(template);\n this.contentRootElement.append(template.content.cloneNode(true));\n }\n\n // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-empty-function\n async onWidgetRootReady() {}\n\n async init() {\n await super.init?.();\n\n await Promise.all([this.#initWidgetRoot()]);\n\n await this.onWidgetRootReady();\n this.dispatchEvent(new CustomEvent('ready'));\n }\n },\n);\n","import {\n TextFieldDriver,\n SingleSelectDriver,\n} from '@descope/sdk-component-drivers';\nimport { compose, createSingletonMixin, debounce } from '@descope/sdk-helpers';\nimport { loggerMixin } from '@descope/sdk-mixins';\nimport { stateManagementMixin } from '../../stateManagementMixin';\nimport { initWidgetRootMixin } from './initWidgetRootMixin';\n\nexport const initFilterAuditInputMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) =>\n class InitFilterAuditInputMixinClass extends compose(\n loggerMixin,\n initWidgetRootMixin,\n stateManagementMixin,\n )(superclass) {\n searchInput: TextFieldDriver;\n\n rangeInput: SingleSelectDriver;\n\n #onInput = debounce(() => {\n const timePeriod = this.rangeInput.value;\n const now = new Date();\n let from: number;\n switch (timePeriod) {\n case 'minuets15':\n from = now.setMinutes(now.getMinutes() - 15);\n break;\n case 'hour':\n from = now.setHours(now.getHours() - 1);\n break;\n case 'hour6':\n from = now.setHours(now.getHours() - 6);\n break;\n case 'day':\n from = now.setDate(now.getDate() - 1);\n break;\n case 'day3':\n from = now.setDate(now.getDate() - 3);\n break;\n case 'week':\n from = now.setDate(now.getDate() - 7);\n break;\n case 'week2':\n from = now.setDate(now.getDate() - 14);\n break;\n case 'month':\n from = now.setMonth(now.getMonth() - 1);\n break;\n default:\n // default to one day\n from = now.setDate(now.getDate() - 1);\n }\n\n this.actions.searchAudit({\n text: this.searchInput.value,\n from: Math.floor(new Date(from).getTime()),\n });\n });\n\n #initSearchInput() {\n // currently we are doing it on client side because we assume there will not be more than 10000 audit per tenant\n this.searchInput = new TextFieldDriver(\n this.shadowRoot?.querySelector('[data-id=\"search-input\"]'),\n { logger: this.logger },\n );\n this.searchInput.onInput(this.#onInput);\n // we need to call it once to in case there is a default value\n this.#onInput();\n }\n\n #initRangeInput() {\n this.rangeInput = new SingleSelectDriver(\n this.shadowRoot?.querySelector('[data-id=\"range-input\"]'),\n { logger: this.logger },\n );\n this.rangeInput.onInput(this.#onInput);\n }\n\n async onWidgetRootReady() {\n await super.onWidgetRootReady?.();\n\n this.#initSearchInput();\n this.#initRangeInput();\n }\n },\n);\n","import { GridDriver } from '@descope/sdk-component-drivers';\nimport {\n compose,\n createSingletonMixin,\n withMemCache,\n} from '@descope/sdk-helpers';\nimport { loggerMixin } from '@descope/sdk-mixins';\nimport { Audit } from '../../../api/types';\nimport { getAuditList } from '../../../state/selectors';\nimport { stateManagementMixin } from '../../stateManagementMixin';\nimport { initWidgetRootMixin } from './initWidgetRootMixin';\n\nexport const initAuditTableMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) =>\n class InitAuditTableMixinClass extends compose(\n stateManagementMixin,\n loggerMixin,\n initWidgetRootMixin,\n )(superclass) {\n auditTable: GridDriver<Partial<Audit>>;\n\n #initAuditTable() {\n this.auditTable = new GridDriver(\n this.shadowRoot?.querySelector('[data-id=\"audit-table\"]'),\n { logger: this.logger },\n );\n this.auditTable.onSelectedItemsChange((e) => {\n this.actions.setSelectedAuditId(e.detail.value.map(({ id }) => id));\n });\n }\n\n #onAuditListUpdate = withMemCache(\n (auditList: ReturnType<typeof getAuditList>) => {\n this.auditTable.data = auditList;\n },\n );\n\n async onWidgetRootReady() {\n await super.onWidgetRootReady?.();\n\n this.#initAuditTable();\n\n // because we are not waiting for the rest calls,\n // we need to make sure the table is updated with the received audit\n this.#onAuditListUpdate(getAuditList(this.state));\n this.subscribe(this.#onAuditListUpdate.bind(this), getAuditList);\n }\n },\n);\n","export { generateCsv, downloadCsv } from '@descope/sdk-helpers';\n\nexport const AUDIT_CSV_COLUMNS = [\n { header: 'Occurred', path: 'occurredFormatted' },\n { header: 'User ID', path: 'userId' },\n { header: 'Actor', path: 'actorId' },\n { header: 'Login IDs', path: 'externalIds' },\n { header: 'Remote Address', path: 'remoteAddress' },\n { header: 'Type', path: 'type' },\n { header: 'Action', path: 'action' },\n { header: 'Device', path: 'device' },\n { header: 'Method', path: 'method' },\n { header: 'Geo', path: 'geo' },\n];\n","import { ButtonDriver } from '@descope/sdk-component-drivers';\nimport { compose, createSingletonMixin } from '@descope/sdk-helpers';\nimport { loggerMixin } from '@descope/sdk-mixins';\nimport { getAuditList } from '../../../state/selectors';\nimport {\n AUDIT_CSV_COLUMNS,\n downloadCsv,\n generateCsv,\n} from '../../../helpers/csv';\nimport { stateManagementMixin } from '../../stateManagementMixin';\nimport { initWidgetRootMixin } from './initWidgetRootMixin';\n\nexport const initExportButtonMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) =>\n class InitExportButtonMixinClass extends compose(\n loggerMixin,\n initWidgetRootMixin,\n stateManagementMixin,\n )(superclass) {\n exportButton: ButtonDriver;\n\n #initExportButton() {\n this.exportButton = new ButtonDriver(\n this.shadowRoot?.querySelector('[data-id=\"export-button\"]'),\n { logger: this.logger },\n );\n this.exportButton.onClick(() => {\n const auditList = getAuditList(this.state);\n if (!auditList.length) {\n this.logger.warn('No audit data to export');\n return;\n }\n const csv = generateCsv(auditList, AUDIT_CSV_COLUMNS);\n const timestamp = new Date().toISOString().slice(0, 10);\n downloadCsv(csv, `audit_logs_${timestamp}.csv`);\n });\n }\n\n async onWidgetRootReady() {\n await super.onWidgetRootReady?.();\n this.#initExportButton();\n }\n },\n);\n","import { compose, createSingletonMixin } from '@descope/sdk-helpers';\nimport { debuggerMixin, themeMixin } from '@descope/sdk-mixins';\nimport { initFilterAuditInputMixin } from './initComponentsMixins/initFilterAuditInputMixin';\nimport { initAuditTableMixin } from './initComponentsMixins/initAuditTableMixin';\nimport { initExportButtonMixin } from './initComponentsMixins/initExportButtonMixin';\n\nexport const initMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) =>\n // @ts-ignore\n class InitMixinClass extends compose(\n debuggerMixin,\n themeMixin,\n initAuditTableMixin,\n initFilterAuditInputMixin,\n initExportButtonMixin,\n )(superclass) {\n async init() {\n await super.init?.();\n }\n },\n);\n","import { compose } from '@descope/sdk-helpers';\nimport { initMixin } from './mixins/initMixin/initMixin';\n\nconst rootMixin = (superclass: CustomElementConstructor) =>\n class RootMixinClass extends initMixin(superclass) {};\n\nexport const AuditManagementWidget = compose(rootMixin)(HTMLElement);\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { Unsubscribe } from 'redux'; // workaround for https://github.com/microsoft/TypeScript/issues/42873\nimport { AuditManagementWidget } from './widget';\n\nexport default AuditManagementWidget;\n\ncustomElements.define('descope-audit-management-widget', AuditManagementWidget);\n"],"names":["conditionalObj","key","val","conditionalJsonParse","str","res","JSON","parse","Array","isArray","length","getSelectedAuditId","state","selectedAuditId","getAuditList","createSelector","auditList","data","audits","map","audit","_a","occurred","ID","type","_b","_c","saml_request","saml_response","saml_generated_user","saml_generated_roles","oidc_response","oidc_generated_user","scim_request","scim_result","Change","__rest","auditRest","s","Object","fromEntries","entries","filter","_","v","filterEmptyFields","toUpperCase","slice","occurredFormatted","Date","Number","toLocaleString","selected","find","id","action","createAsyncThunk","arg","extra","api","getState","searchParams","search","reducer","args","builder","addCase","pending","forEach","onPending","fulfilled","onFulfilled","rejected","onRejected","buildAsyncReducer","assign","meta","payload","getStateSection","loading","error","searchAudit","initialState","text","sort","apiPaths","Promise","resolve","timeMock","getTime","timeMockFormatted","i","push","actorId","method","userId","device","geo","remoteAddress","externalIds","a","b","desc","field","localeCompare","toLowerCase","includes","createAuditSdk","httpClient","tenant","mock","args_1","__awaiter","page","limit","from","post","queryParams","json","ok","descopeErrorMsg","errorDescription","errorMessage","Error","status","statusText","withErrorHandler","apiMixin","createSingletonMixin","superclass","BaseClass","compose","projectIdMixin","observeAttributesMixin","loggerMixin","baseUrlMixin","cookieConfigMixin","createValidateAttributesMixin","missingAttrValidator","constructor","_ApiMixinClass_api","set","this","tenantId","getAttribute","widgetId","__classPrivateFieldGet","_ApiMixinClass_instances","_ApiMixinClass_createSdk","call","init","_super","observeAttributes","logger","debug","__classPrivateFieldSet","config","webSdk","createWebSdk","persistTokens","baseHeaders","createSdk","projectId","baseUrl","refreshCookieName","stateManagementMixin","createStateManagementMixin","name","reducers","setSelectedAuditId","extraReducers","asyncActions","initLifecycleMixin","super","subscribe","fetchWidgetPagesMixin","staticResourcesMixin","fetchWidgetPage","filename","fetchStaticResource","body","initWidgetRootMixin","_InitWidgetRootMixinClass_instances","_InitWidgetRootMixinClass_initWidgetRoot","descopeUiMixin","initElementMixin","onWidgetRootReady","all","dispatchEvent","CustomEvent","template","createTemplate","loadDescopeUiComponents","contentRootElement","append","content","cloneNode","initFilterAuditInputMixin","_InitFilterAuditInputMixinClass_instances","_InitFilterAuditInputMixinClass_onInput","_InitFilterAuditInputMixinClass_initSearchInput","_InitFilterAuditInputMixinClass_initRangeInput","debounce","timePeriod","rangeInput","value","now","setMinutes","getMinutes","setHours","getHours","setDate","getDate","setMonth","getMonth","actions","searchInput","Math","floor","TextFieldDriver","shadowRoot","querySelector","onInput","SingleSelectDriver","initAuditTableMixin","_InitAuditTableMixinClass_instances","_InitAuditTableMixinClass_initAuditTable","_InitAuditTableMixinClass_onAuditListUpdate","withMemCache","auditTable","bind","GridDriver","onSelectedItemsChange","e","detail","AUDIT_CSV_COLUMNS","header","path","initExportButtonMixin","_InitExportButtonMixinClass_instances","_InitExportButtonMixinClass_initExportButton","exportButton","ButtonDriver","onClick","warn","csv","generateCsv","timestamp","toISOString","downloadCsv","initMixin","debuggerMixin","themeMixin","AuditManagementWidget","HTMLElement","customElements","define"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/lib/widget/state/asyncActions/helpers.ts","../../src/lib/widget/state/helpers.ts","../../src/lib/widget/state/selectors.ts","../../src/lib/widget/state/asyncActions/searchAudit.ts","../../src/lib/widget/state/initialState.ts","../../src/lib/widget/api/apiPaths.ts","../../src/lib/widget/api/sdk/mocks.ts","../../src/lib/widget/api/sdk/createAuditSdk.ts","../../src/lib/widget/api/sdk/helpers.ts","../../src/lib/widget/mixins/apiMixin.ts","../../src/lib/widget/api/sdk/index.ts","../../src/lib/widget/mixins/stateManagementMixin.ts","../../src/lib/widget/mixins/initMixin/initComponentsMixins/initWidgetRootMixin.ts","../../src/lib/widget/mixins/initMixin/initComponentsMixins/initFilterAuditInputMixin.ts","../../src/lib/widget/mixins/initMixin/initComponentsMixins/initAuditTableMixin.ts","../../src/lib/widget/helpers/csv.ts","../../src/lib/widget/mixins/initMixin/initComponentsMixins/initExportButtonMixin.ts","../../src/lib/widget/mixins/initMixin/initMixin.ts","../../src/lib/widget/index.ts","../../src/lib/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-shadow */\n/* eslint-disable no-param-reassign */\n\nimport {\n ActionReducerMapBuilder,\n AsyncThunk,\n PayloadAction,\n SerializedError,\n} from '@reduxjs/toolkit';\nimport { State } from '../types';\n\ntype ExtractedArg<T> = T extends AsyncThunk<any, infer U, any> ? U : never;\n\ntype FulfilledAction<T extends AsyncThunk<any, any, any>> = PayloadAction<\n any,\n string,\n {\n arg: ExtractedArg<T>;\n requestId: string;\n },\n never\n>;\n\ntype RejectedAction<T extends AsyncThunk<any, any, any>> = PayloadAction<\n any,\n string,\n {\n arg: ExtractedArg<T>;\n requestId: string;\n },\n SerializedError\n>;\n\ntype PendingAction<T extends AsyncThunk<any, any, any>> = PayloadAction<\n unknown,\n string,\n {\n arg: ExtractedArg<T>;\n requestId: string;\n }\n>;\n\ntype AsyncReducerConfig<T extends AsyncThunk<any, any, any>> = {\n onFulfilled?: (state: State, action: FulfilledAction<T>) => void;\n onRejected?: (state: State, action: RejectedAction<T>) => void;\n onPending?: (state: State, action: PendingAction<T>) => void;\n};\n\nexport const buildAsyncReducer =\n <T extends AsyncThunk<any, any, any>>(action: T) =>\n (...args: AsyncReducerConfig<T>[]) =>\n (builder: ActionReducerMapBuilder<State>) => {\n builder.addCase(action.pending, (state, action) => {\n args.forEach(({ onPending }) => {\n onPending?.(state, action);\n });\n });\n\n builder.addCase(action.fulfilled, (state, action) => {\n args.forEach(({ onFulfilled }) => {\n onFulfilled?.(state, action);\n });\n });\n\n builder.addCase(action.rejected, (state, action) => {\n args.forEach(({ onRejected }) => {\n onRejected?.(state, action);\n });\n });\n };\n\nexport const withRequestStatus = (\n getStateSection: (state: State) => { loading: boolean; error: unknown },\n): AsyncReducerConfig<any> => ({\n onFulfilled: (state) => {\n getStateSection(state).loading = false;\n },\n onPending: (state) => {\n getStateSection(state).loading = true;\n getStateSection(state).error = null;\n },\n onRejected: (state, action) => {\n getStateSection(state).loading = false;\n getStateSection(state).error = action.error;\n },\n});\n","export const capitalize = (s: string) => s && s[0].toUpperCase() + s.slice(1);\n\nexport const conditionalObj = <T extends any>(key: string, val: T) =>\n val ? { [key]: val } : {};\n\nexport const conditionalJsonParse = (str: string) => {\n if (!str) return undefined;\n\n const res = JSON.parse(str);\n\n if (Array.isArray(res) && res.length === 0) return undefined;\n\n return res;\n};\n","import { createSelector } from 'reselect';\nimport { State } from './types';\nimport { capitalize, conditionalJsonParse, conditionalObj } from './helpers';\n\nexport const getRawAuditList = (state: State) => state.auditList.data;\nexport const getSelectedAuditId = (state: State) => state.selectedAuditId;\nexport const getSearchParams = (state: State) => state.searchParams;\n\nconst filterEmptyFields = (audit: Record<string, any>) =>\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Object.fromEntries(Object.entries(audit).filter(([_, v]) => !!v));\n\nexport const getAuditList = createSelector(getRawAuditList, (audits) =>\n audits.map((audit) => {\n const {\n occurred,\n ID,\n type,\n data: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n saml_request,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n saml_response,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n saml_generated_user,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n saml_generated_roles,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n oidc_response,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n oidc_generated_user,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n scim_request,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n scim_result,\n Change,\n ...data\n } = {\n saml_request: '',\n saml_response: '',\n saml_generated_user: '',\n saml_generated_roles: '',\n oidc_response: '',\n oidc_generated_user: '',\n scim_request: '',\n scim_result: '',\n Change: '',\n },\n ...auditRest\n } = audit || {};\n\n const ret = {\n ...auditRest,\n data,\n ...conditionalObj('type', capitalize(type)),\n ...conditionalObj('saml_request', saml_request),\n ...conditionalObj('saml_response', saml_response),\n ...conditionalObj(\n 'saml_generated_user',\n conditionalJsonParse(saml_generated_user),\n ),\n ...conditionalObj(\n 'saml_generated_roles',\n conditionalJsonParse(saml_generated_roles),\n ),\n ...conditionalObj('oidc_response', conditionalJsonParse(oidc_response)),\n ...conditionalObj(\n 'oidc_generated_user',\n conditionalJsonParse(oidc_generated_user),\n ),\n ...conditionalObj('scim_request', scim_request),\n ...conditionalObj('scim_result', scim_result),\n ...conditionalObj('Change', Change),\n occurredFormatted: !occurred\n ? 'N/A'\n : new Date(Number(occurred) || 0).toLocaleString(),\n };\n\n return filterEmptyFields(ret);\n }),\n);\n\nexport const getSelectedAudit = createSelector(\n getSelectedAuditId,\n getAuditList,\n (selected, audits) => audits.find((audit) => selected === audit.id),\n);\n\nexport const getIsAuditSelected = createSelector(\n getSelectedAuditId,\n (selected) => !!selected,\n);\n","/* eslint-disable no-param-reassign */\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { Sdk } from '../../api/sdk';\nimport { FirstParameter, State, ThunkConfigExtraApi } from '../types';\nimport { buildAsyncReducer, withRequestStatus } from './helpers';\nimport { getSearchParams } from '../selectors';\n\nconst action = createAsyncThunk<\n any,\n FirstParameter<Sdk['audit']['search']> | void,\n ThunkConfigExtraApi\n>('audit/search', (arg, { extra: { api }, getState }) => {\n // we get the existing search params from state, and adding the new search params from the action\n const searchParams = getSearchParams(getState() as State);\n return api.audit.search({ ...searchParams, ...arg });\n});\n\nconst reducer = buildAsyncReducer(action)(\n {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n onPending: (state, action) => {\n state.searchParams = { ...state.searchParams, ...action.meta.arg };\n },\n // eslint-disable-next-line @typescript-eslint/no-shadow\n onFulfilled: (state, action) => {\n state.auditList.data = action.payload;\n },\n },\n withRequestStatus((state: State) => state.auditList),\n);\n\nexport const searchAudit = { action, reducer };\n","import { State } from './types';\n\nexport const initialState: State = {\n auditList: {\n data: [],\n loading: false,\n error: null,\n },\n searchParams: { text: '', sort: [] },\n selectedAuditId: '',\n};\n","export const apiPaths = {\n audit: {\n search: '/v1/mgmt/audit/search',\n },\n};\n","import { Audit, SearchAuditConfig } from '../types';\n\nconst search: (\n config: SearchAuditConfig,\n tenantId: string,\n) => Promise<Audit[]> = async ({ text, sort }) =>\n new Promise((resolve) => {\n const audits: Audit[] = [];\n const timeMock = new Date().getTime() / 1000 + 60 * 60 * 24 * 30;\n const timeMockFormatted = new Date(timeMock).toLocaleString();\n for (let i = 1; i < 9; i += 1) {\n audits.push({\n id: `Audit ${i}`,\n action: `Action ${i}`,\n actorId: `Actor ${i}`,\n type: `info`,\n method: `Method ${i}`,\n userId: `User ${i}`,\n device: `Device ${i}`,\n geo: `Geo ${i}`,\n remoteAddress: `127.0.0.${i}`,\n externalIds: [`Login ID ${i}`],\n occurred: timeMock,\n occurredFormatted: timeMockFormatted,\n });\n }\n\n sort.forEach((s) => {\n audits.sort((a, b) =>\n !s.desc\n ? (a[s.field] as string)?.localeCompare(b[s.field] as string)\n : (b[s.field] as string)?.localeCompare(a[s.field] as string),\n );\n });\n resolve(\n audits.filter(\n (audit) =>\n audit.id.toLowerCase().includes(text.toLowerCase()) ||\n audit.action.toLowerCase().includes(text.toLowerCase()) ||\n audit.type.toLowerCase().includes(text.toLowerCase()) ||\n audit.device.toLowerCase().includes(text.toLowerCase()) ||\n audit.method.toLowerCase().includes(text.toLowerCase()) ||\n audit.geo.toLowerCase().includes(text.toLowerCase()) ||\n audit.remoteAddress.toLowerCase().includes(text.toLowerCase()) ||\n audit.externalIds.includes(text.toLowerCase()) ||\n audit.userId.toLowerCase().includes(text.toLowerCase()),\n ),\n );\n });\n\nconst audit = {\n search,\n};\nexport { audit };\n","import { HttpClient, SearchAuditConfig, Audit } from '../types';\nimport { apiPaths } from '../apiPaths';\nimport { withErrorHandler } from './helpers';\nimport { audit } from './mocks';\n\nexport const createAuditSdk = ({\n httpClient,\n tenant,\n mock,\n}: {\n httpClient: HttpClient;\n tenant: string;\n mock: boolean;\n}) => {\n const search: (config: SearchAuditConfig) => Promise<Audit[]> = async ({\n page,\n limit = 10000,\n text,\n sort,\n from,\n } = {}) => {\n if (mock) {\n return audit.search({ page, limit, text, sort }, tenant);\n }\n const res = await httpClient.post(\n apiPaths.audit.search,\n {\n limit,\n page,\n text,\n sort,\n from,\n },\n {\n queryParams: { tenant },\n },\n );\n\n await withErrorHandler(res);\n\n const json = await res.json();\n\n return json.audits;\n };\n\n return {\n search,\n };\n};\n","export const withErrorHandler = async (res: Response) => {\n const text = await res.text();\n const json = JSON.parse(text);\n\n if (!res.ok) {\n const descopeErrorMsg = `${json.errorDescription}${\n json.errorMessage ? `: ${json.errorMessage}` : ''\n }`;\n throw Error(descopeErrorMsg || `${res.status} ${res.statusText}`);\n }\n\n res.json = () => Promise.resolve(json);\n res.text = () => Promise.resolve(text);\n};\n","import { compose, createSingletonMixin } from '@descope/sdk-helpers';\nimport {\n baseUrlMixin,\n cookieConfigMixin,\n createValidateAttributesMixin,\n loggerMixin,\n observeAttributesMixin,\n projectIdMixin,\n} from '@descope/sdk-mixins';\nimport { Sdk, createSdk } from '../api/sdk';\n\nexport const apiMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) => {\n const BaseClass = compose(\n projectIdMixin,\n observeAttributesMixin,\n loggerMixin,\n baseUrlMixin,\n cookieConfigMixin,\n createValidateAttributesMixin({\n tenant: createValidateAttributesMixin.missingAttrValidator,\n }),\n )(superclass);\n\n return class ApiMixinClass extends BaseClass {\n #api: Sdk;\n\n #createSdk() {\n this.logger.debug('creating an sdk instance');\n this.#api = createSdk(\n {\n projectId: this.projectId,\n baseUrl: this.baseUrl,\n refreshCookieName: this.refreshCookieName,\n },\n this.tenantId,\n this.mock === 'true',\n this.widgetId,\n );\n }\n\n get tenantId() {\n return this.getAttribute('tenant');\n }\n\n get widgetId() {\n return this.getAttribute('widget-id');\n }\n\n get mock() {\n return this.getAttribute('mock');\n }\n\n get api() {\n if (!this.#api) {\n this.#createSdk();\n }\n\n return this.#api;\n }\n\n async init() {\n await super.init?.();\n\n this.observeAttributes(['project-id', 'base-url', 'tenant'], () => {\n if (this.#api) {\n this.#createSdk();\n }\n });\n }\n };\n },\n);\n","import createWebSdk from '@descope/web-js-sdk';\nimport { createAuditSdk } from './createAuditSdk';\n\ndeclare const BUILD_VERSION: string;\n\nexport const createSdk = (\n config: Parameters<typeof createWebSdk>[0],\n tenant: string,\n mock: boolean,\n widgetId?: string,\n) => {\n const webSdk = createWebSdk({\n ...config,\n persistTokens: true,\n baseHeaders: {\n 'x-descope-widget-type': 'audit-management-widget',\n 'x-descope-widget-id': widgetId,\n 'x-descope-widget-version': BUILD_VERSION,\n },\n });\n\n return {\n audit: createAuditSdk({ httpClient: webSdk.httpClient, tenant, mock }),\n };\n};\n\nexport type Sdk = ReturnType<typeof createSdk>;\n","/* eslint-disable no-param-reassign */\nimport { compose, createSingletonMixin } from '@descope/sdk-helpers';\nimport {\n createStateManagementMixin,\n initLifecycleMixin,\n loggerMixin,\n} from '@descope/sdk-mixins';\nimport { searchAudit } from '../state/asyncActions';\nimport { initialState } from '../state/initialState';\nimport { apiMixin } from './apiMixin';\n\nexport const stateManagementMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) => {\n const BaseClass = compose(\n createStateManagementMixin({\n name: 'widget',\n initialState,\n reducers: {\n setSelectedAuditId: (state, { payload }) => {\n state.selectedAuditId = payload;\n },\n },\n extraReducers: (builder) => {\n searchAudit.reducer(builder);\n },\n asyncActions: {\n searchAudit: searchAudit.action,\n },\n }),\n initLifecycleMixin,\n loggerMixin,\n apiMixin,\n )(superclass);\n return class StateManagementMixinClass extends BaseClass {\n state = initialState;\n\n constructor(...args: any) {\n super(...args);\n\n this.subscribe((state: typeof initialState) => {\n this.logger.debug('State update:', state);\n this.state = state;\n });\n }\n };\n },\n);\n","import {\n compose,\n createSingletonMixin,\n createTemplate,\n} from '@descope/sdk-helpers';\nimport {\n createFetchWidgetPagesMixin,\n descopeUiMixin,\n initElementMixin,\n initLifecycleMixin,\n loggerMixin,\n} from '@descope/sdk-mixins';\nimport { stateManagementMixin } from '../../stateManagementMixin';\n\nconst WIDGET_PAGES_BASE_DIR = 'audit-management-widget';\n\nexport const initWidgetRootMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) =>\n class InitWidgetRootMixinClass extends compose(\n loggerMixin,\n initLifecycleMixin,\n descopeUiMixin,\n initElementMixin,\n createFetchWidgetPagesMixin(WIDGET_PAGES_BASE_DIR),\n stateManagementMixin,\n )(superclass) {\n async #initWidgetRoot() {\n const template = createTemplate(\n // await import('../../../../../../test/mocks/rootMock').then(\n // (module) => module.default,\n // ),\n await this.fetchWidgetPage('root.html'),\n );\n await this.loadDescopeUiComponents(template);\n this.contentRootElement.append(template.content.cloneNode(true));\n }\n\n // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-empty-function\n async onWidgetRootReady() {}\n\n async init() {\n await super.init?.();\n\n await Promise.all([this.#initWidgetRoot()]);\n\n await this.onWidgetRootReady();\n this.dispatchEvent(new CustomEvent('ready'));\n }\n },\n);\n","import {\n TextFieldDriver,\n SingleSelectDriver,\n} from '@descope/sdk-component-drivers';\nimport { compose, createSingletonMixin, debounce } from '@descope/sdk-helpers';\nimport { loggerMixin } from '@descope/sdk-mixins';\nimport { stateManagementMixin } from '../../stateManagementMixin';\nimport { initWidgetRootMixin } from './initWidgetRootMixin';\n\nexport const initFilterAuditInputMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) =>\n class InitFilterAuditInputMixinClass extends compose(\n loggerMixin,\n initWidgetRootMixin,\n stateManagementMixin,\n )(superclass) {\n searchInput: TextFieldDriver;\n\n rangeInput: SingleSelectDriver;\n\n #onInput = debounce(() => {\n const timePeriod = this.rangeInput.value;\n const now = new Date();\n let from: number;\n switch (timePeriod) {\n case 'minuets15':\n from = now.setMinutes(now.getMinutes() - 15);\n break;\n case 'hour':\n from = now.setHours(now.getHours() - 1);\n break;\n case 'hour6':\n from = now.setHours(now.getHours() - 6);\n break;\n case 'day':\n from = now.setDate(now.getDate() - 1);\n break;\n case 'day3':\n from = now.setDate(now.getDate() - 3);\n break;\n case 'week':\n from = now.setDate(now.getDate() - 7);\n break;\n case 'week2':\n from = now.setDate(now.getDate() - 14);\n break;\n case 'month':\n from = now.setMonth(now.getMonth() - 1);\n break;\n default:\n // default to one day\n from = now.setDate(now.getDate() - 1);\n }\n\n this.actions.searchAudit({\n text: this.searchInput.value,\n from: Math.floor(new Date(from).getTime()),\n });\n });\n\n #initSearchInput() {\n // currently we are doing it on client side because we assume there will not be more than 10000 audit per tenant\n this.searchInput = new TextFieldDriver(\n this.shadowRoot?.querySelector('[data-id=\"search-input\"]'),\n { logger: this.logger },\n );\n this.searchInput.onInput(this.#onInput);\n // we need to call it once to in case there is a default value\n this.#onInput();\n }\n\n #initRangeInput() {\n this.rangeInput = new SingleSelectDriver(\n this.shadowRoot?.querySelector('[data-id=\"range-input\"]'),\n { logger: this.logger },\n );\n this.rangeInput.onInput(this.#onInput);\n }\n\n async onWidgetRootReady() {\n await super.onWidgetRootReady?.();\n\n this.#initSearchInput();\n this.#initRangeInput();\n }\n },\n);\n","import { GridDriver } from '@descope/sdk-component-drivers';\nimport {\n compose,\n createSingletonMixin,\n withMemCache,\n} from '@descope/sdk-helpers';\nimport { loggerMixin } from '@descope/sdk-mixins';\nimport { Audit } from '../../../api/types';\nimport { getAuditList } from '../../../state/selectors';\nimport { stateManagementMixin } from '../../stateManagementMixin';\nimport { initWidgetRootMixin } from './initWidgetRootMixin';\n\nexport const initAuditTableMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) =>\n class InitAuditTableMixinClass extends compose(\n stateManagementMixin,\n loggerMixin,\n initWidgetRootMixin,\n )(superclass) {\n auditTable: GridDriver<Partial<Audit>>;\n\n #initAuditTable() {\n this.auditTable = new GridDriver(\n this.shadowRoot?.querySelector('[data-id=\"audit-table\"]'),\n { logger: this.logger },\n );\n this.auditTable.onSelectedItemsChange((e) => {\n this.actions.setSelectedAuditId(e.detail.value.map(({ id }) => id));\n });\n }\n\n #onAuditListUpdate = withMemCache(\n (auditList: ReturnType<typeof getAuditList>) => {\n this.auditTable.data = auditList;\n },\n );\n\n async onWidgetRootReady() {\n await super.onWidgetRootReady?.();\n\n this.#initAuditTable();\n\n // because we are not waiting for the rest calls,\n // we need to make sure the table is updated with the received audit\n this.#onAuditListUpdate(getAuditList(this.state));\n this.subscribe(this.#onAuditListUpdate.bind(this), getAuditList);\n }\n },\n);\n","export { generateCsv, downloadCsv } from '@descope/sdk-helpers';\n\nexport const AUDIT_CSV_COLUMNS = [\n { header: 'Occurred', path: 'occurredFormatted' },\n { header: 'User ID', path: 'userId' },\n { header: 'Actor', path: 'actorId' },\n { header: 'Login IDs', path: 'externalIds' },\n { header: 'Remote Address', path: 'remoteAddress' },\n { header: 'Type', path: 'type' },\n { header: 'Action', path: 'action' },\n { header: 'Device', path: 'device' },\n { header: 'Method', path: 'method' },\n { header: 'Geo', path: 'geo' },\n];\n","import { ButtonDriver } from '@descope/sdk-component-drivers';\nimport { compose, createSingletonMixin } from '@descope/sdk-helpers';\nimport { loggerMixin } from '@descope/sdk-mixins';\nimport { getAuditList } from '../../../state/selectors';\nimport {\n AUDIT_CSV_COLUMNS,\n downloadCsv,\n generateCsv,\n} from '../../../helpers/csv';\nimport { stateManagementMixin } from '../../stateManagementMixin';\nimport { initWidgetRootMixin } from './initWidgetRootMixin';\n\nexport const initExportButtonMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) =>\n class InitExportButtonMixinClass extends compose(\n loggerMixin,\n initWidgetRootMixin,\n stateManagementMixin,\n )(superclass) {\n exportButton: ButtonDriver;\n\n #initExportButton() {\n this.exportButton = new ButtonDriver(\n this.shadowRoot?.querySelector('[data-id=\"export-button\"]'),\n { logger: this.logger },\n );\n this.exportButton.onClick(() => {\n const auditList = getAuditList(this.state);\n if (!auditList.length) {\n this.logger.warn('No audit data to export');\n return;\n }\n const csv = generateCsv(auditList, AUDIT_CSV_COLUMNS);\n const timestamp = new Date().toISOString().slice(0, 10);\n downloadCsv(csv, `audit_logs_${timestamp}.csv`);\n });\n }\n\n async onWidgetRootReady() {\n await super.onWidgetRootReady?.();\n this.#initExportButton();\n }\n },\n);\n","import { compose, createSingletonMixin } from '@descope/sdk-helpers';\nimport { debuggerMixin, themeMixin } from '@descope/sdk-mixins';\nimport { initFilterAuditInputMixin } from './initComponentsMixins/initFilterAuditInputMixin';\nimport { initAuditTableMixin } from './initComponentsMixins/initAuditTableMixin';\nimport { initExportButtonMixin } from './initComponentsMixins/initExportButtonMixin';\n\nexport const initMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) =>\n // @ts-ignore\n class InitMixinClass extends compose(\n debuggerMixin,\n themeMixin,\n initAuditTableMixin,\n initFilterAuditInputMixin,\n initExportButtonMixin,\n )(superclass) {\n async init() {\n await super.init?.();\n }\n },\n);\n","import { compose } from '@descope/sdk-helpers';\nimport { initMixin } from './mixins/initMixin/initMixin';\n\nconst rootMixin = (superclass: CustomElementConstructor) =>\n class RootMixinClass extends initMixin(superclass) {};\n\nexport const AuditManagementWidget = compose(rootMixin)(HTMLElement);\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { Unsubscribe } from 'redux'; // workaround for https://github.com/microsoft/TypeScript/issues/42873\nimport { AuditManagementWidget } from './widget';\n\nexport default AuditManagementWidget;\n\ncustomElements.define('descope-audit-management-widget', AuditManagementWidget);\n"],"names":["conditionalObj","key","val","conditionalJsonParse","str","res","JSON","parse","Array","isArray","length","getSelectedAuditId","state","selectedAuditId","getAuditList","createSelector","auditList","data","audits","map","audit","_a","occurred","ID","type","_b","_c","saml_request","saml_response","saml_generated_user","saml_generated_roles","oidc_response","oidc_generated_user","scim_request","scim_result","Change","__rest","auditRest","s","Object","fromEntries","entries","filter","_","v","filterEmptyFields","toUpperCase","slice","occurredFormatted","Date","Number","toLocaleString","selected","find","id","action","createAsyncThunk","arg","extra","api","getState","searchParams","search","reducer","args","builder","addCase","pending","forEach","onPending","fulfilled","onFulfilled","rejected","onRejected","buildAsyncReducer","assign","meta","payload","getStateSection","loading","error","searchAudit","initialState","text","sort","apiPaths","Promise","resolve","timeMock","getTime","timeMockFormatted","i","push","actorId","method","userId","device","geo","remoteAddress","externalIds","a","b","desc","field","localeCompare","toLowerCase","includes","createAuditSdk","httpClient","tenant","mock","args_1","__awaiter","page","limit","from","post","queryParams","json","ok","descopeErrorMsg","errorDescription","errorMessage","Error","status","statusText","withErrorHandler","apiMixin","createSingletonMixin","superclass","BaseClass","compose","projectIdMixin","observeAttributesMixin","loggerMixin","baseUrlMixin","cookieConfigMixin","createValidateAttributesMixin","missingAttrValidator","constructor","_ApiMixinClass_api","set","this","tenantId","getAttribute","widgetId","__classPrivateFieldGet","_ApiMixinClass_instances","_ApiMixinClass_createSdk","call","init","_super","observeAttributes","logger","debug","__classPrivateFieldSet","config","webSdk","createWebSdk","persistTokens","baseHeaders","createSdk","projectId","baseUrl","refreshCookieName","stateManagementMixin","createStateManagementMixin","name","reducers","setSelectedAuditId","extraReducers","asyncActions","initLifecycleMixin","super","subscribe","initWidgetRootMixin","_InitWidgetRootMixinClass_instances","_InitWidgetRootMixinClass_initWidgetRoot","descopeUiMixin","initElementMixin","createFetchWidgetPagesMixin","onWidgetRootReady","all","dispatchEvent","CustomEvent","template","createTemplate","fetchWidgetPage","loadDescopeUiComponents","contentRootElement","append","content","cloneNode","initFilterAuditInputMixin","_InitFilterAuditInputMixinClass_instances","_InitFilterAuditInputMixinClass_onInput","_InitFilterAuditInputMixinClass_initSearchInput","_InitFilterAuditInputMixinClass_initRangeInput","debounce","timePeriod","rangeInput","value","now","setMinutes","getMinutes","setHours","getHours","setDate","getDate","setMonth","getMonth","actions","searchInput","Math","floor","TextFieldDriver","shadowRoot","querySelector","onInput","SingleSelectDriver","initAuditTableMixin","_InitAuditTableMixinClass_instances","_InitAuditTableMixinClass_initAuditTable","_InitAuditTableMixinClass_onAuditListUpdate","withMemCache","auditTable","bind","GridDriver","onSelectedItemsChange","e","detail","AUDIT_CSV_COLUMNS","header","path","initExportButtonMixin","_InitExportButtonMixinClass_instances","_InitExportButtonMixinClass_initExportButton","exportButton","ButtonDriver","onClick","warn","csv","generateCsv","timestamp","toISOString","downloadCsv","initMixin","debuggerMixin","themeMixin","AuditManagementWidget","HTMLElement","customElements","define"],"mappings":"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"}
|