@descope/audit-management-widget 0.1.1 → 0.1.3

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/README.md CHANGED
@@ -7,22 +7,29 @@
7
7
  In the widget package create an `.env` file which includes;
8
8
 
9
9
  ```
10
- DESCOPE_BASE_URL= # env base url
11
- DESCOPE_PROJECT_ID= # project ID
10
+ DESCOPE_BASE_URL= # env base url, default: "https://app.descope.com"
11
+ DESCOPE_PROJECT_ID= # your Descope's project ID
12
12
  DESCOPE_TENANT= # tenant ID
13
+ DEBUG_MODE= # "true" / "false", default: "false"
14
+ DESCOPE_THEME= # "light" / "dark" / "os", default: "light"
13
15
  DESCOPE_WIDGET_ID= # default: "audit-management-widget"
14
16
  ```
15
17
 
16
- ### Start the widget
18
+ ### Example
17
19
 
18
- run `npm start` to start the widget.
20
+ Use the `descope-audit-management-widget` in this package's `index.html`. Comment out the widget web-component from `index.html` and paste this:
19
21
 
20
- ### Authenticate
21
-
22
- In order to work with the widget, you must be logged in as the tenant admin
23
- In case you are not authenticated, a login flow will run first, and after logging in, the widget will be rendered
24
-
25
- ## Architecture
22
+ ```
23
+ <script src="https://cdn.jsdelivr.net/npm/@descope/audit-management-widget/dist/index.js"></script>
24
+ <descope-audit-management-widget
25
+ base-url="<DESCOPE_BASE_URL>"
26
+ project-id="<DESCOPE_PROJECT_ID>"
27
+ tenant="<DESCOPE_TENANT>"
28
+ debug="<DEBUG_MODE>"
29
+ theme="<DESCOPE_THEME>"
30
+ widget-id="<DESCOPE_WIDGET_ID>"
31
+ ></descope-audit-management-widget>
32
+ ```
26
33
 
27
34
  ## Project Structure
28
35
 
package/dist/esm/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  /**
3
- * @descope/audit-management-widget v0.1.1
3
+ * @descope/audit-management-widget v0.1.3
4
4
  */
5
5
  import{createSingletonMixin as e,compose as t,createTemplate as i,debounce as s,withMemCache as o}from"@descope/sdk-helpers";import{__awaiter as r,__classPrivateFieldGet as a,__classPrivateFieldSet as n}from"tslib";import{projectIdMixin as d,observeAttributesMixin as c,loggerMixin as l,createValidateAttributesMixin as u,createStateManagementMixin as h,initLifecycleMixin as g,staticResourcesMixin as m,descopeUiMixin as v,initElementMixin as p,debuggerMixin as f,themeMixin as w}from"@descope/sdk-mixins";import{TextFieldDriver as b,SingleSelectDriver as y,GridDriver as k}from"@descope/sdk-component-drivers";import{createAsyncThunk as R}from"@reduxjs/toolkit";import{createSelector as C}from"reselect";import x from"@descope/web-js-sdk";const I=e=>e.selectedAuditId,L=C((e=>e.auditList.data),(e=>e.map((e=>Object.assign(Object.assign({},e),{occurredFormatted:(null==e?void 0:e.occurred)?new Date(Number(null==e?void 0:e.occurred)||0).toLocaleString():"N/A"})))));C(I,L,((e,t)=>t.find((t=>e===t.id)))),C(I,(e=>!!e));const j=R("audit/search",((e,{extra:{api:t},getState:i})=>{const s=i().searchParams;return t.audit.search(Object.assign(Object.assign({},s),e))})),A=(e=>(...t)=>i=>{i.addCase(e.pending,((e,i)=>{t.forEach((({onPending:t})=>{null==t||t(e,i)}))})),i.addCase(e.fulfilled,((e,i)=>{t.forEach((({onFulfilled:t})=>{null==t||t(e,i)}))})),i.addCase(e.rejected,((e,i)=>{t.forEach((({onRejected:t})=>{null==t||t(e,i)}))}))})(j)({onPending:(e,t)=>{e.searchParams=Object.assign(Object.assign({},e.searchParams),t.meta.arg)},onFulfilled:(e,t)=>{e.auditList.data=t.payload}},(W=e=>e.auditList,{onFulfilled:e=>{W(e).loading=!1},onPending:e=>{W(e).loading=!0,W(e).error=null},onRejected:(e,t)=>{W(e).loading=!1,W(e).error=t.error}}));var W;const D={action:j,reducer:A},S={auditList:{data:[],loading:!1,error:null},searchParams:{text:"",sort:[]},selectedAuditId:""},$={search:"/v1/mgmt/audit/search"},O=({text:e,sort:t})=>r(void 0,void 0,void 0,(function*(){return new Promise((i=>{const s=[];for(let e=1;e<9;e+=1)s.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:(new Date).getTime()});t.forEach((e=>{s.sort(((t,i)=>{var s,o;return e.desc?null===(o=i[e.field])||void 0===o?void 0:o.localeCompare(t[e.field]):null===(s=t[e.field])||void 0===s?void 0:s.localeCompare(i[e.field])}))})),i(s.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()))))}))})),P=({httpClient:e,tenant:t,mock:i})=>({search:({page:s,limit:o=1e4,text:a,sort:n,from:d}={})=>r(void 0,void 0,void 0,(function*(){if(i)return O({page:s,limit:o,text:a,sort:n},t);const c=yield e.post($.search,{limit:o,page:s,text:a,sort:n,from:d},{queryParams:{tenant:t}});yield(e=>r(void 0,void 0,void 0,(function*(){const t=yield e.text(),i=JSON.parse(t);if(!e.ok){const t=`${i.errorDescription}${i.errorMessage?`: ${i.errorMessage}`:""}`;throw Error(t||`${e.status} ${e.statusText}`)}e.json=()=>Promise.resolve(i),e.text=()=>Promise.resolve(t)})))(c);return(yield c.json()).audits}))}),M=e((e=>{var i,s,o,h;const g=t(d,c,l,u({tenant:u.missingAttrValidator}))(e);return h=class extends g{constructor(){super(...arguments),i.add(this),s.set(this,void 0)}get baseUrl(){return this.getAttribute("base-url")}get tenant(){return this.getAttribute("tenant")}get mock(){return this.getAttribute("mock")}get api(){return a(this,s,"f")||a(this,i,"m",o).call(this),a(this,s,"f")}init(){const e=Object.create(null,{init:{get:()=>super.init}});var t;return r(this,void 0,void 0,(function*(){yield null===(t=e.init)||void 0===t?void 0:t.call(this),this.observeAttributes(["project-id","base-url","tenant"],(()=>{a(this,s,"f")&&a(this,i,"m",o).call(this)}))}))}},s=new WeakMap,i=new WeakSet,o=function(){this.logger.debug("creating an sdk instance"),n(this,s,((e,t,i)=>{const s=x(Object.assign(Object.assign({},e),{persistTokens:!0}));return{audit:P({httpClient:s.httpClient,tenant:t,mock:i})}})({projectId:this.projectId,baseUrl:this.baseUrl},this.tenant,"true"===this.mock),"f")},h})),E=e((e=>{const i=t(h({name:"widget",initialState:S,reducers:{setSelectedAuditId:(e,{payload:t})=>{e.selectedAuditId=t}},extraReducers:e=>{D.reducer(e)},asyncActions:{searchAudit:D.action}}),g,l,M)(e);return class extends i{constructor(...e){super(...e),this.state=S,this.subscribe((e=>{this.logger.debug("State update:",e),this.state=e}))}}})),T=e((e=>{const i=t(m,u({"widget-id":u.missingAttrValidator}))(e);return class extends i{get widgetId(){return this.getAttribute("widget-id")}fetchWidgetPage(e){return r(this,void 0,void 0,(function*(){return(yield this.fetchStaticResource(`audit-management-widget/${this.widgetId}/${e}`,"text")).body}))}}})),H=e((e=>{var s,o,n;return n=class extends(t(l,g,v,p,T,E)(e)){constructor(){super(...arguments),s.add(this)}onWidgetRootReady(){return r(this,void 0,void 0,(function*(){}))}init(){const e=Object.create(null,{init:{get:()=>super.init}});var t;return r(this,void 0,void 0,(function*(){yield null===(t=e.init)||void 0===t?void 0:t.call(this),yield Promise.all([a(this,s,"m",o).call(this)]),this.onWidgetRootReady()}))}},s=new WeakSet,o=function(){return r(this,void 0,void 0,(function*(){const e=i(yield this.fetchWidgetPage("root.html"));yield this.loadDescopeUiComponents(e),this.contentRootElement.append(e.content.cloneNode(!0))}))},n})),U=e((e=>{var i,o,n,d,c;return c=class extends(t(l,H,E)(e)){constructor(){super(...arguments),i.add(this),o.set(this,s((()=>{const e=this.rangeInput.value,t=new Date;let i;switch(e){case"minuets15":i=t.setMinutes(t.getMinutes()-15);break;case"hour":i=t.setHours(t.getHours()-1);break;case"hour6":i=t.setHours(t.getHours()-6);break;case"day":default:i=t.setDate(t.getDate()-1);break;case"day3":i=t.setDate(t.getDate()-3);break;case"week":i=t.setDate(t.getDate()-7);break;case"week2":i=t.setDate(t.getDate()-14);break;case"month":i=t.setMonth(t.getMonth()-1)}this.actions.searchAudit({text:this.searchInput.value,from:Math.floor(new Date(i).getTime())})})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});var t;return r(this,void 0,void 0,(function*(){yield null===(t=e.onWidgetRootReady)||void 0===t?void 0:t.call(this),a(this,i,"m",n).call(this),a(this,i,"m",d).call(this)}))}},o=new WeakMap,i=new WeakSet,n=function(){var e;this.searchInput=new b(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="search-input"]'),{logger:this.logger}),this.searchInput.onInput(a(this,o,"f"))},d=function(){var e;this.rangeInput=new y(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="range-input"]'),{logger:this.logger}),this.rangeInput.onInput(a(this,o,"f"))},c})),q=e((e=>{var i,s,n,d;return d=class extends(t(E,l,H)(e)){constructor(){super(...arguments),i.add(this),n.set(this,o((e=>{this.auditTable.data=e})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});var t;return r(this,void 0,void 0,(function*(){yield null===(t=e.onWidgetRootReady)||void 0===t?void 0:t.call(this),a(this,i,"m",s).call(this),a(this,n,"f").call(this,L(this.state)),this.subscribe(a(this,n,"f").bind(this),L)}))}},n=new WeakMap,i=new WeakSet,s=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)))}))},d})),F=e((e=>class extends(t(f,w,q,U)(e)){init(){const e=Object.create(null,{init:{get:()=>super.init}});var t;return r(this,void 0,void 0,(function*(){yield null===(t=e.init)||void 0===t?void 0:t.call(this)}))}})),N=t((e=>class extends(F(e)){}))(HTMLElement);customElements.define("descope-audit-management-widget",N);export{N as default};
6
6
  //# sourceMappingURL=index.js.map