@descope/audit-management-widget 0.1.70 → 0.1.71
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 +2 -17
- package/dist/esm/index.js +2 -2
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -18,7 +18,8 @@ DESCOPE_WIDGET_ID= # default: "audit-management-widget"
|
|
|
18
18
|
### Example
|
|
19
19
|
|
|
20
20
|
```
|
|
21
|
-
|
|
21
|
+
// replace x.x.x with the latest release of the widget: https://www.npmjs.com/package/@descope/audit-management-widget
|
|
22
|
+
<script src="https://static.descope.com/npm/@descope/audit-management-widget@x.x.x/dist/index.js"></script>
|
|
22
23
|
<descope-audit-management-widget
|
|
23
24
|
base-url="<DESCOPE_BASE_URL>"
|
|
24
25
|
project-id="<DESCOPE_PROJECT_ID>"
|
|
@@ -74,24 +75,8 @@ An abstraction layer that provides an API for components, and enables handling i
|
|
|
74
75
|
|
|
75
76
|
The motivation to use drivers is to decouple the widget's code from the component's implementation, and therefore it's important to interact with components only using drivers (and not relying on component's implementation details).
|
|
76
77
|
|
|
77
|
-
### UI Components
|
|
78
|
-
|
|
79
|
-
Widget UI is composed of [`@descope/web-components-ui`](https://github.com/descope/web-components-ui), which is loaded during the widget init in runtime.
|
|
80
|
-
|
|
81
|
-
For optimization, we load only the relevant components, defined on the widget screens DOM.
|
|
82
|
-
|
|
83
78
|
## Dev
|
|
84
79
|
|
|
85
80
|
### Use mock screens
|
|
86
81
|
|
|
87
82
|
Since screen are fetched dynamically, when developing a new screen for the widget you will probably want to use mock templates. To do so, simply replace the call to `fetchWidgetPage` with a string which includes your HTML.
|
|
88
|
-
|
|
89
|
-
### Use local components
|
|
90
|
-
|
|
91
|
-
In some cases you want to make changes to components anf see how it affects the widget. To do so, you need to build [`web-components-ui`](https://github.com/descope/web-components-ui) and serve the `dist` folder from your machine (with `npx serve` or other util).
|
|
92
|
-
|
|
93
|
-
Add the key `base.ui.components.url` to your localStorage and set its value to the URL of the served dist `umd/index.js` file.
|
|
94
|
-
|
|
95
|
-
###
|
|
96
|
-
|
|
97
|
-
Pay attention that _theme changes_ will not take affect until the components
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
|
-
* @descope/audit-management-widget v0.1.
|
|
3
|
+
* @descope/audit-management-widget v0.1.71
|
|
4
4
|
*/
|
|
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,baseUrlMixin as u,createValidateAttributesMixin as h,createStateManagementMixin as g,initLifecycleMixin as m,staticResourcesMixin as v,descopeUiMixin as p,initElementMixin as f,debuggerMixin as w,themeMixin as b}from"@descope/sdk-mixins";import{TextFieldDriver as y,SingleSelectDriver as k,GridDriver as x}from"@descope/sdk-component-drivers";import{createAsyncThunk as R}from"@reduxjs/toolkit";import{createSelector as C}from"reselect";import I from"@descope/web-js-sdk";const L=e=>e.selectedAuditId,j=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(L,j,((e,t)=>t.find((t=>e===t.id)))),C(L,(e=>!!e));const A=R("audit/search",((e,{extra:{api:t},getState:i})=>{const s=i().searchParams;return t.audit.search(Object.assign(Object.assign({},s),e))})),W=(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)}))}))})(A)({onPending:(e,t)=>{e.searchParams=Object.assign(Object.assign({},e.searchParams),t.meta.arg)},onFulfilled:(e,t)=>{e.auditList.data=t.payload}},(D=e=>e.auditList,{onFulfilled:e=>{D(e).loading=!1},onPending:e=>{D(e).loading=!0,D(e).error=null},onRejected:(e,t)=>{D(e).loading=!1,D(e).error=t.error}}));var D;const S={action:A,reducer:W},$={auditList:{data:[],loading:!1,error:null},searchParams:{text:"",sort:[]},selectedAuditId:""},O={search:"/v1/mgmt/audit/search"},P=({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()))))}))})),M=({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 P({page:s,limit:o,text:a,sort:n},t);const c=yield e.post(O.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}))}),E=e((e=>{var i,s,o,g;const m=t(d,c,l,u,h({tenant:h.missingAttrValidator}))(e);return g=class extends m{constructor(){super(...arguments),i.add(this),s.set(this,void 0)}get tenant(){return this.getAttribute("tenant")}get widgetId(){return this.getAttribute("widget-id")}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,s)=>{const o=I(Object.assign(Object.assign({},e),{persistTokens:!0,baseHeaders:{"x-descope-widget-type":"audit-management-widget","x-descope-widget-id":s,"x-descope-widget-version":"0.1.
|
|
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,baseUrlMixin as u,createValidateAttributesMixin as h,createStateManagementMixin as g,initLifecycleMixin as m,staticResourcesMixin as v,descopeUiMixin as p,initElementMixin as f,debuggerMixin as w,themeMixin as b}from"@descope/sdk-mixins";import{TextFieldDriver as y,SingleSelectDriver as k,GridDriver as x}from"@descope/sdk-component-drivers";import{createAsyncThunk as R}from"@reduxjs/toolkit";import{createSelector as C}from"reselect";import I from"@descope/web-js-sdk";const L=e=>e.selectedAuditId,j=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(L,j,((e,t)=>t.find((t=>e===t.id)))),C(L,(e=>!!e));const A=R("audit/search",((e,{extra:{api:t},getState:i})=>{const s=i().searchParams;return t.audit.search(Object.assign(Object.assign({},s),e))})),W=(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)}))}))})(A)({onPending:(e,t)=>{e.searchParams=Object.assign(Object.assign({},e.searchParams),t.meta.arg)},onFulfilled:(e,t)=>{e.auditList.data=t.payload}},(D=e=>e.auditList,{onFulfilled:e=>{D(e).loading=!1},onPending:e=>{D(e).loading=!0,D(e).error=null},onRejected:(e,t)=>{D(e).loading=!1,D(e).error=t.error}}));var D;const S={action:A,reducer:W},$={auditList:{data:[],loading:!1,error:null},searchParams:{text:"",sort:[]},selectedAuditId:""},O={search:"/v1/mgmt/audit/search"},P=({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()))))}))})),M=({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 P({page:s,limit:o,text:a,sort:n},t);const c=yield e.post(O.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}))}),E=e((e=>{var i,s,o,g;const m=t(d,c,l,u,h({tenant:h.missingAttrValidator}))(e);return g=class extends m{constructor(){super(...arguments),i.add(this),s.set(this,void 0)}get tenant(){return this.getAttribute("tenant")}get widgetId(){return this.getAttribute("widget-id")}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,s)=>{const o=I(Object.assign(Object.assign({},e),{persistTokens:!0,baseHeaders:{"x-descope-widget-type":"audit-management-widget","x-descope-widget-id":s,"x-descope-widget-version":"0.1.71"}}));return{audit:M({httpClient:o.httpClient,tenant:t,mock:i})}})({projectId:this.projectId,baseUrl:this.baseUrl},this.tenant,"true"===this.mock,this.widgetId),"f")},g})),T=e((e=>{const i=t(g({name:"widget",initialState:$,reducers:{setSelectedAuditId:(e,{payload:t})=>{e.selectedAuditId=t}},extraReducers:e=>{S.reducer(e)},asyncActions:{searchAudit:S.action}}),m,l,E)(e);return class extends i{constructor(...e){super(...e),this.state=$,this.subscribe((e=>{this.logger.debug("State update:",e),this.state=e}))}}})),H=e((e=>{const i=t(v,h({"widget-id":h.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}))}}})),q=e((e=>{var s,o,n;return n=class extends(t(l,m,p,f,H,T)(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})),F=e((e=>{var i,o,n,d,c;return c=class extends(t(l,q,T)(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 y(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 k(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})),N=e((e=>{var i,s,n,d;return d=class extends(t(T,l,q)(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,j(this.state)),this.subscribe(a(this,n,"f").bind(this),j)}))}},n=new WeakMap,i=new WeakSet,s=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)))}))},d})),U=e((e=>class extends(t(w,b,N,F)(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)}))}})),V=t((e=>class extends(U(e)){}))(HTMLElement);customElements.define("descope-audit-management-widget",V);export{V as default};
|
|
6
6
|
//# sourceMappingURL=index.js.map
|