@descope/access-key-management-widget 0.1.18 → 0.1.19

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 CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  /**
3
- * @descope/access-key-management-widget v0.1.18
3
+ * @descope/access-key-management-widget v0.1.19
4
4
  */
5
5
  import{pluralize as e,createSingletonMixin as t,compose as s,createTemplate as i,withMemCache as a,debounce as o}from"@descope/sdk-helpers";import{__awaiter as c,__classPrivateFieldGet as n,__classPrivateFieldSet as d}from"tslib";import{projectIdMixin as r,observeAttributesMixin as l,loggerMixin as u,createValidateAttributesMixin as h,createStateManagementMixin as v,initLifecycleMixin as g,staticResourcesMixin as y,descopeUiMixin as m,initElementMixin as p,modalMixin as f,formMixin as R,notificationsMixin as w,debuggerMixin as K,themeMixin as b}from"@descope/sdk-mixins";import{GridDriver as k,ButtonDriver as M,TextDriver as A,MultiSelectDriver as W,TextFieldDriver as C}from"@descope/sdk-component-drivers";import{createSelector as x}from"reselect";import{createAsyncThunk as S}from"@reduxjs/toolkit";import j from"@descope/web-js-sdk";const $=e=>e.selectedAccessKeysIds,T=e=>e.notifications,L=x((e=>e.accessKeysList.data),(e=>e.map((e=>Object.assign(Object.assign({},e),{expireTimeFormatted:(null==e?void 0:e.expireTime)?new Date(1e3*((null==e?void 0:e.expireTime)||0)).toLocaleString():"Never",createdTimeFormatted:new Date(1e3*((null==e?void 0:e.createdTime)||0)).toLocaleString(),status:(null==e?void 0:e.expireTime)&&new Date(1e3*((null==e?void 0:e.expireTime)||0))<new Date?"expired":null==e?void 0:e.status}))))),O=x($,L,((e,t)=>t.filter((t=>e.includes(t.id))))),D=x($,(e=>!!e.length)),P=x(O,(e=>e.every((e=>e.editable)))),B=x(P,D,((e,t)=>e&&t));x($,(e=>1===e.length));const F=x(O,(e=>1===e.length?e[0].name:`${e.length} access keys`)),I=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=e=>({onFulfilled:t=>{e(t).loading=!1},onPending:t=>{e(t).loading=!0,e(t).error=null},onRejected:(t,s)=>{e(t).loading=!1,e(t).error=s.error}}),E=({getErrorMsg:e,getSuccessMsg:t})=>({onFulfilled:(e,s)=>{t&&e.notifications.push({type:"success",msg:t(s)})},onRejected:(t,s)=>{e&&t.notifications.push({type:"error",msg:e(s)})}}),N=S("accessKeys/create",((e,{extra:{api:t}})=>t.accesskey.create(e))),H=I(N)({onFulfilled:(e,t)=>{e.accessKeysList.data.unshift(t.payload.key)}},q((e=>e.createAccessKey)),E({getSuccessMsg:()=>"Access Key created successfully",getErrorMsg:e=>{var t;return`\n <div>\n <div>Failed to create access key</div>\n ${null===(t=e.error)||void 0===t?void 0:t.message}\n </div>`}})),U={action:N,reducer:H},Z=S("accessKeys/delete",((e,{extra:{api:t}})=>t.accesskey.deleteBatch(e))),V=I(Z)({onFulfilled:(e,t)=>{e.accessKeysList.data=e.accessKeysList.data.filter((e=>!t.meta.arg.includes(e.id))),e.selectedAccessKeysIds=[]}},q((e=>e.deleteAccessKey)),E({getSuccessMsg:t=>e(t.meta.arg.length)`${["",t.meta.arg.length]} ${["A","a"]}ccess key${["","s"]} deleted successfully`,getErrorMsg:t=>e(t.meta.arg.length)`Failed to delete access key${["","s"]}`})),z={action:Z,reducer:V},J=S("accessKeys/search",((e,{extra:{api:t},getState:s})=>{const i=s().searchParams;return t.accesskey.search(Object.assign(Object.assign({},i),e))})),G=I(J)({onPending:(e,t)=>{e.searchParams=Object.assign(Object.assign({},e.searchParams),t.meta.arg)},onFulfilled:(e,t)=>{e.accessKeysList.data=t.payload}},q((e=>e.accessKeysList))),Q={action:J,reducer:G},X=S("accessKeys/activate",((e,{extra:{api:t}})=>t.accesskey.activate(e))),Y=I(X)({onFulfilled:(e,t)=>{e.accessKeysList.data.forEach((e=>{t.meta.arg.includes(e.id)&&(e.status="active")}))}},q((e=>e.activateAccessKey)),E({getSuccessMsg:t=>e(t.meta.arg.length)`${["",t.meta.arg.length]} ${["A","a"]}ccess key${["","s"]} activated successfully`,getErrorMsg:t=>e(t.meta.arg.length)`Failed to activate access key${["","s"]}`})),_={action:X,reducer:Y},ee=S("accessKeys/deactivate",((e,{extra:{api:t}})=>t.accesskey.deactivate(e))),te=I(ee)({onFulfilled:(e,t)=>{e.accessKeysList.data.forEach((e=>{t.meta.arg.includes(e.id)&&(e.status="inactive")}))}},q((e=>e.deactivateAccessKey)),E({getSuccessMsg:t=>e(t.meta.arg.length)`${["",t.meta.arg.length]} ${["A","a"]}ccess key${["","s"]} deactivated successfully`,getErrorMsg:t=>e(t.meta.arg.length)`Failed to deactivate access key${["","s"]}`})),se={action:ee,reducer:te},ie=S("tenant/getTenantRoles",((e,{extra:{api:t}})=>t.tenant.getTenantRoles())),ae={action:ie,reducer:I(ie)({onFulfilled:(e,t)=>{e.tenantRoles.data=t.payload.roles}},q((e=>e.tenantRoles)))},oe={accessKeysList:{data:[],loading:!1,error:null},createAccessKey:{loading:!1,error:null},activateAccessKey:{loading:!1,error:null},deactivateAccessKey:{loading:!1,error:null},deleteAccessKey:{loading:!1,error:null},tenantRoles:{loading:!1,error:null,data:[]},searchParams:{text:"",sort:[]},selectedAccessKeysIds:[],notifications:[]},ce={search:"/v1/mgmt/accesskey/search",deleteBatch:"/v1/mgmt/accesskey/delete/batch",create:"/v1/mgmt/accesskey/create",deactivate:"/v1/mgmt/accesskey/deactivate/batch",activate:"/v1/mgmt/accesskey/activate/batch"},ne={roles:"/v1/mgmt/role/all"},de=e=>c(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)})),re=({text:e,sort:t}={})=>c(void 0,void 0,void 0,(function*(){return new Promise((s=>{const i=[];for(let e=1;e<9;e+=1)i.push({id:`access-key-id-${e}`,name:`Access Key ${e}`,createdBy:`User ${e}`,editable:!0,expireTime:(new Date).getTime()/1e3+2592e3,createdTime:(new Date).getTime()/1e3,roleNames:[`Role ${e}`],status:"active",clientId:`Client ID ${e}`});t.forEach((e=>{i.sort(((t,s)=>{var i,a;return e.desc?null===(a=s[e.field])||void 0===a?void 0:a.localeCompare(t[e.field]):null===(i=t[e.field])||void 0===i?void 0:i.localeCompare(s[e.field])}))})),s(i.filter((t=>t.name.toLowerCase().includes(e.toLowerCase())||t.createdBy.toLowerCase().includes(e.toLowerCase()))))}))})),le=({name:e,roleNames:t,userId:s},i)=>c(void 0,void 0,void 0,(function*(){const a=Math.random().toString(10).substring(15);return new Promise((o=>{o({cleartext:Math.random().toString(20).substring(2),key:{id:`access-key-id-${a}`,name:e||`Access Key ${a}`,createdBy:s||`User ${a}`,editable:!0,expireTime:i,createdTime:(new Date).getTime()/1e3,roleNames:t,status:"active",clientId:`Client ID ${a}`}})}))})),ue=()=>c(void 0,void 0,void 0,(function*(){})),he=()=>c(void 0,void 0,void 0,(function*(){})),ve=()=>c(void 0,void 0,void 0,(function*(){})),ge=e=>new Promise((t=>{const s=[];for(let t=1;t<5;t+=1)s.push({name:`Role ${t}`,description:`Role description ${t}`,createdTime:new Date,permissionNames:[`Permission ${t}`],tenantId:e});t({roles:s})})),ye=({httpClient:e,tenant:t,mock:s})=>({search:({page:i,limit:a=1e4,text:o,sort:n}={})=>c(void 0,void 0,void 0,(function*(){if(s)return re({page:i,limit:a,text:o,sort:n});const c=yield e.post(ce.search,{limit:a,page:i,text:o,sort:n},{queryParams:{tenant:t}});yield de(c);return(yield c.json()).keys})),deleteBatch:i=>c(void 0,void 0,void 0,(function*(){if(s)return ve();const a=yield e.post(ce.deleteBatch,{ids:i},{queryParams:{tenant:t}});return yield de(a),a.json()})),create:({name:i,expiration:a,roleNames:o,userId:n})=>c(void 0,void 0,void 0,(function*(){const c=new Date;c.setDate(c.getDate()+ +a);const d="0"===a[0]?0:Math.floor(c.getTime()/1e3);if(s)return le({name:i,expiration:a,roleNames:o,userId:n},d);const r=yield e.post(ce.create,{name:i,expireTime:d,roleNames:o,userId:n},{queryParams:{tenant:t}});yield de(r);return yield r.json()})),activate:i=>c(void 0,void 0,void 0,(function*(){if(s)return ue();const a=yield e.post(ce.activate,{ids:i},{queryParams:{tenant:t}});yield de(a);return yield a.json()})),deactivate:i=>c(void 0,void 0,void 0,(function*(){if(s)return he();const a=yield e.post(ce.deactivate,{ids:i},{queryParams:{tenant:t}});yield de(a);return yield a.json()}))}),me=({httpClient:e,tenant:t,mock:s})=>({getTenantRoles:()=>c(void 0,void 0,void 0,(function*(){if(s)return ge(t);const i=yield e.get(ne.roles,{queryParams:{tenant:t}});return yield de(i),i.json()}))}),pe=t((e=>{var t,i,a,o;const v=s(r,l,u,h({tenant:h.missingAttrValidator}))(e);return o=class extends v{constructor(){super(...arguments),t.add(this),i.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 n(this,i,"f")||n(this,t,"m",a).call(this),n(this,i,"f")}init(){const e=Object.create(null,{init:{get:()=>super.init}});var s;return c(this,void 0,void 0,(function*(){yield null===(s=e.init)||void 0===s?void 0:s.call(this),this.observeAttributes(["project-id","base-url","tenant"],(()=>{n(this,i,"f")&&n(this,t,"m",a).call(this)}))}))}},i=new WeakMap,t=new WeakSet,a=function(){this.logger.debug("creating an sdk instance"),d(this,i,((e,t,s)=>{const i=j(Object.assign(Object.assign({},e),{persistTokens:!0}));return{accesskey:ye({httpClient:i.httpClient,tenant:t,mock:s}),tenant:me({httpClient:i.httpClient,tenant:t,mock:s})}})({projectId:this.projectId,baseUrl:this.baseUrl},this.tenant,"true"===this.mock),"f")},o})),fe=t((e=>{const t=s(v({name:"widget",initialState:oe,reducers:{setSelectedAccessKeysIds:(e,{payload:t})=>{e.selectedAccessKeysIds=t},clearNotifications:e=>{e.notifications=[]}},extraReducers:e=>{U.reducer(e),z.reducer(e),Q.reducer(e),_.reducer(e),se.reducer(e),ae.reducer(e)},asyncActions:{searchAccessKeys:Q.action,createAccessKey:U.action,activateAccessKeys:_.action,deactivateAccessKeys:se.action,deleteAccessKeys:z.action,getTenantRoles:ae.action}}),g,u,pe)(e);return class extends t{constructor(...e){super(...e),this.state=oe,this.subscribe((e=>{this.logger.debug("State update:",e),this.state=e}))}}})),Re=t((e=>{const t=s(y,h({"widget-id":h.missingAttrValidator}))(e);return class extends t{get widgetId(){return this.getAttribute("widget-id")}fetchWidgetPage(e){return c(this,void 0,void 0,(function*(){return(yield this.fetchStaticResource(`access-key-management-widget/${this.widgetId}/${e}`,"text")).body}))}}})),we=t((e=>{var t,a,o;return o=class extends(s(u,g,m,p,Re,fe)(e)){constructor(){super(...arguments),t.add(this)}onWidgetRootReady(){return c(this,void 0,void 0,(function*(){}))}init(){const e=Object.create(null,{init:{get:()=>super.init}});var s;return c(this,void 0,void 0,(function*(){yield null===(s=e.init)||void 0===s?void 0:s.call(this),yield Promise.all([n(this,t,"m",a).call(this),this.actions.searchAccessKeys(),this.actions.getTenantRoles()]),this.onWidgetRootReady()}))}},t=new WeakSet,a=function(){return c(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))}))},o})),Ke=t((e=>{var t,i,d,r,l;return l=class extends(s(fe,u,we)(e)){constructor(){super(...arguments),t.add(this),d.set(this,a((e=>{this.accessKeysTable.data=e}))),r.set(this,o(((e,t)=>{const s=[],{value:i}=t;if(i){const t=e.path;s.push({field:t,desc:"desc"===i})}this.actions.searchAccessKeys({sort:s})})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});var s;return c(this,void 0,void 0,(function*(){yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",i).call(this),this.accessKeysTable.columns.forEach((e=>{e.onSortDirectionChange((e=>{n(this,r,"f").call(this,e.target,e.detail)}))})),n(this,d,"f").call(this,L(this.state)),this.subscribe(n(this,d,"f").bind(this),L)}))}},d=new WeakMap,r=new WeakMap,t=new WeakSet,i=function(){var e;this.accessKeysTable=new k(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="access-keys-table"]'),{logger:this.logger}),this.accessKeysTable.onSelectedItemsChange((e=>{this.actions.setSelectedAccessKeysIds(e.detail.value.map((({id:e})=>e)))}))},l})),be=t((e=>{var t,a,o;return o=class extends(s(fe,f,u,we)(e)){constructor(){super(...arguments),t.add(this)}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});var s;return c(this,void 0,void 0,(function*(){yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),yield n(this,t,"m",a).call(this)}))}},t=new WeakSet,a=function(){var e;return c(this,void 0,void 0,(function*(){this.activateAccessKeysModal=this.createModal(),this.activateAccessKeysModal.setContent(i(yield this.fetchWidgetPage("activate-access-keys-modal.html")));const t=new M((()=>{var e;return null===(e=this.activateAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-cancel"]')}),{logger:this.logger});t.onClick((()=>this.activateAccessKeysModal.close()));const s=new M((()=>{var e;return null===(e=this.activateAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-submit"]')}),{logger:this.logger});s.onClick((()=>{const e=O(this.state);this.actions.activateAccessKeys(null==e?void 0:e.map((e=>e.id))),this.activateAccessKeysModal.close()}));const a=new A(null===(e=this.activateAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="body-text"]'),{logger:this.logger});this.activateAccessKeysModal.beforeOpen=()=>{const e=F(this.state);a.text=`Activate ${e}?`}}))},o})),ke=t((e=>{var t,i,o,d;return d=class extends(s(u,we,fe,be)(e)){constructor(){super(...arguments),t.add(this),o.set(this,a((e=>{e?this.activateButton.enable():this.activateButton.disable()})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});var s;return c(this,void 0,void 0,(function*(){yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",i).call(this),this.subscribe(n(this,o,"f").bind(this),B)}))}},o=new WeakMap,t=new WeakSet,i=function(){var e;this.activateButton=new M(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="activate-access-keys"]'),{logger:this.logger}),this.activateButton.disable(),this.activateButton.onClick((()=>{this.activateAccessKeysModal.open()}))},d})),Me=t((e=>{var t,a,o;return o=class extends(s(fe,f,R,u,we)(e)){constructor(){super(...arguments),t.add(this)}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});var s;return c(this,void 0,void 0,(function*(){yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",a).call(this)}))}},t=new WeakSet,a=function(){return c(this,void 0,void 0,(function*(){this.createdAccessKeyModal=this.createModal(),this.createdAccessKeyModal.setContent(i(yield this.fetchWidgetPage("created-access-key-modal.html")));const e=new M((()=>{var e;return null===(e=this.createdAccessKeyModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-close"]')}),{logger:this.logger});e.onClick((()=>{navigator.clipboard.writeText(this.getFormData(this.createdAccessKeyModal.ele)["generated-key"]),this.resetFormData(this.createdAccessKeyModal.ele),this.createdAccessKeyModal.close()}))}))},o})),Ae=t((e=>{var t,a,o,r,l;return l=class extends(s(fe,f,R,u,we,Me)(e)){constructor(){super(...arguments),t.add(this),a.set(this,void 0),r.set(this,(()=>c(this,void 0,void 0,(function*(){var e,t;yield n(this,a,"f").setData(null===(t=this.state,e=t.tenantRoles.data||[])||void 0===e?void 0:e.map((({name:e})=>({value:e,label:e}))))}))))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});var s;return c(this,void 0,void 0,(function*(){yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",o).call(this)}))}},a=new WeakMap,r=new WeakMap,t=new WeakSet,o=function e(){return c(this,void 0,void 0,(function*(){this.createAccessKeyModal=this.createModal(),this.createAccessKeyModal.setContent(i(yield this.fetchWidgetPage("create-access-key-modal.html")));const s=new M((()=>{var e;return null===(e=this.createAccessKeyModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-cancel"]')}),{logger:this.logger});s.onClick((()=>{this.createAccessKeyModal.close(),this.resetFormData(this.createAccessKeyModal.ele)}));const o=new M((()=>{var e;return null===(e=this.createAccessKeyModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-submit"]')}),{logger:this.logger});o.onClick((()=>c(this,void 0,void 0,(function*(){var e;if(this.validateForm(this.createAccessKeyModal.ele)){const t=yield this.actions.createAccessKey(Object.assign({},this.getFormData(this.createAccessKeyModal.ele)));this.createAccessKeyModal.close(),this.setFormData(this.createdAccessKeyModal.ele,{"generated-key":null===(e=null==t?void 0:t.payload)||void 0===e?void 0:e.cleartext}),this.createdAccessKeyModal.open()}})))),d(this,a,new W((()=>{var e;return null===(e=this.createAccessKeyModal.ele)||void 0===e?void 0:e.querySelector('[data-id="roles-multiselect"]')}),{logger:this.logger}),"f"),n(this,r,"f").call(this),this.createAccessKeyModal.afterClose=()=>{n(this,t,"m",e).call(this)}}))},l})),We=t((e=>{var t,i,a;return a=class extends(s(u,Ae,we)(e)){constructor(){super(...arguments),t.add(this)}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});var s;return c(this,void 0,void 0,(function*(){yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",i).call(this)}))}},t=new WeakSet,i=function(){var e;this.createButton=new M(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="create-access-key"]'),{logger:this.logger}),this.createButton.onClick((()=>this.createAccessKeyModal.open()))},a})),Ce=t((e=>{var t,a,o;return o=class extends(s(fe,f,u,we)(e)){constructor(){super(...arguments),t.add(this)}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});var s;return c(this,void 0,void 0,(function*(){yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),yield n(this,t,"m",a).call(this)}))}},t=new WeakSet,a=function(){var e;return c(this,void 0,void 0,(function*(){this.deactivateAccessKeysModal=this.createModal(),this.deactivateAccessKeysModal.setContent(i(yield this.fetchWidgetPage("deactivate-access-keys-modal.html")));const t=new M((()=>{var e;return null===(e=this.deactivateAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-cancel"]')}),{logger:this.logger});t.onClick((()=>this.deactivateAccessKeysModal.close()));const s=new M((()=>{var e;return null===(e=this.deactivateAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-submit"]')}),{logger:this.logger});s.onClick((()=>{const e=O(this.state);this.actions.deactivateAccessKeys(null==e?void 0:e.map((e=>e.id))),this.deactivateAccessKeysModal.close()}));const a=new A(null===(e=this.deactivateAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="body-text"]'),{logger:this.logger});this.deactivateAccessKeysModal.beforeOpen=()=>{const e=F(this.state);a.text=`Deactivate ${e}?`}}))},o})),xe=t((e=>{var t,i,o,d;return d=class extends(s(u,we,fe,Ce)(e)){constructor(){super(...arguments),t.add(this),o.set(this,a((e=>{e?this.deactivateButton.enable():this.deactivateButton.disable()})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});var s;return c(this,void 0,void 0,(function*(){yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",i).call(this),this.subscribe(n(this,o,"f").bind(this),B)}))}},o=new WeakMap,t=new WeakSet,i=function(){var e;this.deactivateButton=new M(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="deactivate-access-keys"]'),{logger:this.logger}),this.deactivateButton.disable(),this.deactivateButton.onClick((()=>{this.deactivateAccessKeysModal.open()}))},d})),Se=t((e=>{var t,a,o;return o=class extends(s(fe,f,u,we)(e)){constructor(){super(...arguments),t.add(this)}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});var s;return c(this,void 0,void 0,(function*(){yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),yield n(this,t,"m",a).call(this)}))}},t=new WeakSet,a=function(){var e;return c(this,void 0,void 0,(function*(){this.deleteAccessKeysModal=this.createModal(),this.deleteAccessKeysModal.setContent(i(yield this.fetchWidgetPage("delete-access-keys-modal.html")));const t=new M((()=>{var e;return null===(e=this.deleteAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-cancel"]')}),{logger:this.logger});t.onClick((()=>this.deleteAccessKeysModal.close()));const s=new M((()=>{var e;return null===(e=this.deleteAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-submit"]')}),{logger:this.logger});s.onClick((()=>{const e=O(this.state);this.actions.deleteAccessKeys(null==e?void 0:e.map((e=>e.id))),this.deleteAccessKeysModal.close()}));const a=new A(null===(e=this.deleteAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="body-text"]'),{logger:this.logger});this.deleteAccessKeysModal.beforeOpen=()=>{const e=F(this.state);a.text=`Delete ${e}?`}}))},o})),je=t((e=>{var t,i,o,d;return d=class extends(s(u,we,fe,Se)(e)){constructor(){super(...arguments),t.add(this),o.set(this,a((e=>{e?this.deleteButton.enable():this.deleteButton.disable()})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});var s;return c(this,void 0,void 0,(function*(){yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",i).call(this),this.subscribe(n(this,o,"f").bind(this),B)}))}},o=new WeakMap,t=new WeakSet,i=function(){var e;this.deleteButton=new M(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="delete-access-keys"]'),{logger:this.logger}),this.deleteButton.disable(),this.deleteButton.onClick((()=>{this.deleteAccessKeysModal.open()}))},d})),$e=t((e=>{var t,i,a,d;return d=class extends(s(u,we,fe)(e)){constructor(){super(...arguments),t.add(this),i.set(this,o((()=>{this.actions.searchAccessKeys({text:this.searchInput.value})})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});var s;return c(this,void 0,void 0,(function*(){yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",a).call(this)}))}},i=new WeakMap,t=new WeakSet,a=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(n(this,i,"f"))},d}));const Te={success:(new DOMParser).parseFromString('<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">\n<g id="Checkmark">\n<path id="Shape" d="M10.0485 15.6396C9.5799 15.171 8.8201 15.171 8.35147 15.6396C7.88284 16.1082 7.88284 16.868 8.35147 17.3367L12.7072 21.6924C13.1759 22.1611 13.9357 22.1611 14.4043 21.6924L24.7152 11.3815C25.1838 10.9129 25.1838 10.1531 24.7152 9.68448C24.2466 9.21585 23.4868 9.21585 23.0181 9.68448L13.5558 19.1469L10.0485 15.6396Z" fill="white"/>\n</g>\n</svg>\n',"image/svg+xml").firstChild,error:(new DOMParser).parseFromString('<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">\n<g id="Icon">\n<path id="Vector" d="M15.9998 26.6558C10.1118 26.6558 5.34375 21.8878 5.34375 15.9998C5.34375 10.1118 10.1118 5.34375 15.9998 5.34375C21.8878 5.34375 26.6558 10.1118 26.6558 15.9998C26.6558 21.8878 21.8878 26.6558 15.9998 26.6558ZM15.9998 24.4798C20.6718 24.4798 24.4798 20.7038 24.4798 15.9998C24.4798 11.3278 20.7038 7.51975 15.9998 7.51975C11.3278 7.51975 7.51975 11.2958 7.51975 15.9998C7.51975 20.6718 11.2958 24.4798 15.9998 24.4798ZM15.3278 9.34375H16.6718C17.0558 9.34375 17.3438 9.63175 17.3118 9.98375L16.9598 16.9278C16.9598 17.1838 16.7678 17.3438 16.5438 17.3438H15.4558C15.2318 17.3438 15.0398 17.1518 15.0398 16.9278L14.6878 9.98375C14.6878 9.63175 14.9758 9.34375 15.3278 9.34375ZM15.4558 19.4558H16.5438C16.9278 19.4558 17.2158 19.7438 17.1838 20.1278V21.1838C17.1838 21.5678 16.8958 21.8558 16.5438 21.8558H15.4558C15.0718 21.8558 14.7838 21.5678 14.7838 21.1838V20.1278C14.7838 19.7438 15.0718 19.4558 15.4558 19.4558Z" fill="#FFDFDD"/>\n</g>\n</svg>\n',"image/svg+xml").firstChild},Le=t((e=>{var t,i,o,d,r;return r=class extends(s(u,fe,w,g)(e)){constructor(){super(...arguments),t.add(this),d.set(this,a((e=>{e.length&&(e.forEach((({type:e,msg:s})=>{const a=n(this,t,"m",o).call(this,e);a.setContent(n(this,t,"m",i).call(this,{type:e,msg:s})),a.show()})),setTimeout((()=>this.actions.clearNotifications())))})))}init(){const e=Object.create(null,{init:{get:()=>super.init}});var t;return c(this,void 0,void 0,(function*(){yield null===(t=e.init)||void 0===t?void 0:t.call(this),this.subscribe(n(this,d,"f").bind(this),T)}))}},d=new WeakMap,t=new WeakSet,i=function({type:e,msg:t}){const s=Te[e],i=Object.assign((new DOMParser).parseFromString('<svg width="2em" height="2em" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n<g id="Icon">\n<path id="Shape" d="M10.6712 12L7.27521 8.60406C6.90826 8.23711 6.90826 7.64216 7.27521 7.27521C7.64216 6.90826 8.23711 6.90826 8.60406 7.27521L12 10.6712L15.3959 7.27521C15.7629 6.90826 16.3578 6.90826 16.7248 7.27521C17.0917 7.64216 17.0917 8.23711 16.7248 8.60406L13.3288 12L16.7248 15.3959C17.0917 15.7629 17.0917 16.3578 16.7248 16.7248C16.3578 17.0917 15.7629 17.0917 15.3959 16.7248L12 13.3288L8.60406 16.7248C8.23711 17.0917 7.64216 17.0917 7.27521 16.7248C6.90826 16.3578 6.90826 15.7629 7.27521 15.3959L10.6712 12Z" fill="white"/>\n</g>\n</svg>\n',"image/svg+xml").firstChild,{slot:"close"});return`${(null==s?void 0:s.outerHTML)||""}${t}${i.outerHTML}`},o=function(e){return this.createNotification({mode:e,duration:"error"===e?0:3e3,position:"bottom-start",size:"sm"})},r})),Oe=t((e=>class extends(s(K,b,Ke,We,je,$e,ke,xe,Le)(e)){init(){const e=Object.create(null,{init:{get:()=>super.init}});var t;return c(this,void 0,void 0,(function*(){yield null===(t=e.init)||void 0===t?void 0:t.call(this)}))}})),De=s((e=>class extends(Oe(e)){}))(HTMLElement);customElements.define("descope-access-key-management-widget",De);export{De as default};
6
6
  //# sourceMappingURL=index.js.map
package/dist/index.d.ts CHANGED
@@ -92,7 +92,7 @@ declare const AccessKeyManagementWidget: {
92
92
  close(): void;
93
93
  show(): void;
94
94
  remove(): void;
95
- "__#11838@#private": any;
95
+ "__#11837@#private": any;
96
96
  logger: {
97
97
  error(...data: any[]): void;
98
98
  warn(...data: any[]): void;
@@ -106,7 +106,7 @@ declare const AccessKeyManagementWidget: {
106
106
  type: "success" | "error";
107
107
  msg: string;
108
108
  }[]) => void;
109
- "__#11831@#isInit": boolean;
109
+ "__#11830@#isInit": boolean;
110
110
  connectedCallback: (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & {
111
111
  (): void;
112
112
  (): void;
@@ -933,7 +933,7 @@ declare const AccessKeyManagementWidget: {
933
933
  tabIndex: number;
934
934
  blur: (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void);
935
935
  focus: ((options?: FocusOptions) => void) & ((options?: FocusOptions) => void) & ((options?: FocusOptions) => void) & ((options?: FocusOptions) => void) & ((options?: FocusOptions) => void) & ((options?: FocusOptions) => void) & ((options?: FocusOptions) => void) & ((options?: FocusOptions) => void) & ((options?: FocusOptions) => void) & ((options?: FocusOptions) => void) & ((options?: FocusOptions) => void) & ((options?: FocusOptions) => void) & ((options?: FocusOptions) => void) & ((options?: FocusOptions) => void) & ((options?: FocusOptions) => void);
936
- "__#11842@#NotificationDriverWrapper": new (refOrRefFn: Element | (() => HTMLElement), config: {
936
+ "__#11841@#NotificationDriverWrapper": new (refOrRefFn: Element | (() => HTMLElement), config: {
937
937
  logger: {
938
938
  error(...data: any[]): void;
939
939
  warn(...data: any[]): void;
@@ -946,7 +946,7 @@ declare const AccessKeyManagementWidget: {
946
946
  close(): void;
947
947
  show(): void;
948
948
  remove(): void;
949
- "__#11838@#private": any;
949
+ "__#11837@#private": any;
950
950
  logger: {
951
951
  error(...data: any[]): void;
952
952
  warn(...data: any[]): void;
@@ -971,7 +971,7 @@ declare const AccessKeyManagementWidget: {
971
971
  close(): void;
972
972
  show(): void;
973
973
  remove(): void;
974
- "__#11838@#private": any;
974
+ "__#11837@#private": any;
975
975
  logger: {
976
976
  error(...data: any[]): void;
977
977
  warn(...data: any[]): void;
@@ -981,21 +981,21 @@ declare const AccessKeyManagementWidget: {
981
981
  readonly asyncEle: Promise<Element>;
982
982
  readonly ele: Element;
983
983
  };
984
- "__#11837@#errorCbsSym": symbol;
985
- "__#11837@#loadCbsSym": symbol;
986
- "__#11837@#getComponentsVersion": (() => Promise<any>) & (() => Promise<any>) & (() => Promise<any>) & (() => Promise<any>);
987
- "__#11837@#exposeAlternateEvents": ((scriptEle: HTMLScriptElement) => void) & ((scriptEle: HTMLScriptElement) => void) & ((scriptEle: HTMLScriptElement) => void) & ((scriptEle: HTMLScriptElement) => void);
988
- "__#11837@#handleFallbackScript": ((errorCbs: ((error: string) => void)[], loadCbs: (() => void)[]) => Promise<void>) & ((errorCbs: ((error: string) => void)[], loadCbs: (() => void)[]) => Promise<void>) & ((errorCbs: ((error: string) => void)[], loadCbs: (() => void)[]) => Promise<void>) & ((errorCbs: ((error: string) => void)[], loadCbs: (() => void)[]) => Promise<void>);
989
- "__#11837@#registerEvents": ((scriptEle: HTMLScriptElement) => void) & ((scriptEle: HTMLScriptElement) => void) & ((scriptEle: HTMLScriptElement) => void) & ((scriptEle: HTMLScriptElement) => void);
990
- "__#11837@#getDescopeUiLoadingScript": (() => Promise<HTMLElement>) & (() => Promise<HTMLElement>) & (() => Promise<HTMLElement>) & (() => Promise<HTMLElement>);
991
- "__#11837@#descopeUi": Promise<any>;
984
+ "__#11836@#errorCbsSym": symbol;
985
+ "__#11836@#loadCbsSym": symbol;
986
+ "__#11836@#getComponentsVersion": (() => Promise<any>) & (() => Promise<any>) & (() => Promise<any>) & (() => Promise<any>);
987
+ "__#11836@#exposeAlternateEvents": ((scriptEle: HTMLScriptElement) => void) & ((scriptEle: HTMLScriptElement) => void) & ((scriptEle: HTMLScriptElement) => void) & ((scriptEle: HTMLScriptElement) => void);
988
+ "__#11836@#handleFallbackScript": ((errorCbs: ((error: string) => void)[], loadCbs: (() => void)[]) => Promise<void>) & ((errorCbs: ((error: string) => void)[], loadCbs: (() => void)[]) => Promise<void>) & ((errorCbs: ((error: string) => void)[], loadCbs: (() => void)[]) => Promise<void>) & ((errorCbs: ((error: string) => void)[], loadCbs: (() => void)[]) => Promise<void>);
989
+ "__#11836@#registerEvents": ((scriptEle: HTMLScriptElement) => void) & ((scriptEle: HTMLScriptElement) => void) & ((scriptEle: HTMLScriptElement) => void) & ((scriptEle: HTMLScriptElement) => void);
990
+ "__#11836@#getDescopeUiLoadingScript": (() => Promise<HTMLElement>) & (() => Promise<HTMLElement>) & (() => Promise<HTMLElement>) & (() => Promise<HTMLElement>);
991
+ "__#11836@#descopeUi": Promise<any>;
992
992
  readonly descopeUi: Promise<any>;
993
- "__#11837@#loadDescopeUiComponent": ((componentName: string) => Promise<any>) & ((componentName: string) => Promise<any>) & ((componentName: string) => Promise<any>) & ((componentName: string) => Promise<any>);
993
+ "__#11836@#loadDescopeUiComponent": ((componentName: string) => Promise<any>) & ((componentName: string) => Promise<any>) & ((componentName: string) => Promise<any>) & ((componentName: string) => Promise<any>);
994
994
  loadDescopeUiComponents: ((templateOrComponentNames: string[] | HTMLTemplateElement) => Promise<any[]>) & ((templateOrComponentNames: string[] | HTMLTemplateElement) => Promise<any[]>) & ((templateOrComponentNames: string[] | HTMLTemplateElement) => Promise<any[]>) & ((templateOrComponentNames: string[] | HTMLTemplateElement) => Promise<any[]>);
995
- "__#11837@#getDescopeUi": (() => Promise<unknown>) & (() => Promise<unknown>) & (() => Promise<unknown>) & (() => Promise<unknown>);
995
+ "__#11836@#getDescopeUi": (() => Promise<unknown>) & (() => Promise<unknown>) & (() => Promise<unknown>) & (() => Promise<unknown>);
996
996
  readonly config: any;
997
- "__#11834@#_configResource": any;
998
- "__#11834@#fetchConfig": (() => Promise<{
997
+ "__#11833@#_configResource": any;
998
+ "__#11833@#fetchConfig": (() => Promise<{
999
999
  projectConfig: _descope_sdk_mixins.ProjectConfiguration;
1000
1000
  executionContext: {
1001
1001
  geo: string;
@@ -1044,17 +1044,17 @@ declare const AccessKeyManagementWidget: {
1044
1044
  headers: Record<string, string>;
1045
1045
  }>);
1046
1046
  readonly projectId: string;
1047
- "__#11833@#handleError": ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void);
1048
- "__#11832@#observeMappings": {};
1047
+ "__#11832@#handleError": ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void);
1048
+ "__#11831@#observeMappings": {};
1049
1049
  observeAttribute: ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any);
1050
1050
  observeAttributes: ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void);
1051
- "__#11830@#logger": {
1051
+ "__#11829@#logger": {
1052
1052
  error(...data: any[]): void;
1053
1053
  warn(...data: any[]): void;
1054
1054
  info(...data: any[]): void;
1055
1055
  debug(...data: any[]): void;
1056
1056
  };
1057
- "__#11830@#wrapLogger": ((logger: Partial<{
1057
+ "__#11829@#wrapLogger": ((logger: Partial<{
1058
1058
  error(...data: any[]): void;
1059
1059
  warn(...data: any[]): void;
1060
1060
  info(...data: any[]): void;
@@ -7889,7 +7889,7 @@ declare const AccessKeyManagementWidget: {
7889
7889
  "__#6@#initWidgetRoot": (() => Promise<void>) & (() => Promise<void>) & (() => Promise<void>) & (() => Promise<void>) & (() => Promise<void>) & (() => Promise<void>) & (() => Promise<void>) & (() => Promise<void>) & (() => Promise<void>) & (() => Promise<void>) & (() => Promise<void>);
7890
7890
  readonly widgetId: string;
7891
7891
  fetchWidgetPage: ((filename: string) => Promise<string>) & ((filename: string) => Promise<string>) & ((filename: string) => Promise<string>) & ((filename: string) => Promise<string>) & ((filename: string) => Promise<string>) & ((filename: string) => Promise<string>) & ((filename: string) => Promise<string>) & ((filename: string) => Promise<string>) & ((filename: string) => Promise<string>) & ((filename: string) => Promise<string>) & ((filename: string) => Promise<string>);
7892
- "__#11841@#ModalDriverWrapper": new (refOrRefFn: Element | (() => HTMLElement), config: {
7892
+ "__#11840@#ModalDriverWrapper": new (refOrRefFn: Element | (() => HTMLElement), config: {
7893
7893
  logger: {
7894
7894
  error(...data: any[]): void;
7895
7895
  warn(...data: any[]): void;
@@ -7898,7 +7898,7 @@ declare const AccessKeyManagementWidget: {
7898
7898
  };
7899
7899
  }) => {
7900
7900
  setContent(template: HTMLTemplateElement): void;
7901
- "__#11840@#private": any;
7901
+ "__#11839@#private": any;
7902
7902
  beforeOpen: () => void | Promise<void>;
7903
7903
  afterClose: () => void;
7904
7904
  nodeName: string;
@@ -7906,7 +7906,7 @@ declare const AccessKeyManagementWidget: {
7906
7906
  open(): Promise<void>;
7907
7907
  reset(): void;
7908
7908
  remove(): void;
7909
- "__#11838@#private": any;
7909
+ "__#11837@#private": any;
7910
7910
  logger: {
7911
7911
  error(...data: any[]): void;
7912
7912
  warn(...data: any[]): void;
@@ -7963,14 +7963,14 @@ declare const AccessKeyManagementWidget: {
7963
7963
  }[]) => void;
7964
7964
  "__#7@#onColumnSortChange": (this: any, ...args: any[]) => void;
7965
7965
  readonly theme: _descope_sdk_mixins.ThemeOptions;
7966
- "__#11843@#_themeResource": Promise<void | Record<string, any>>;
7967
- "__#11843@#fetchTheme"(): Promise<Record<string, any>>;
7968
- readonly "__#11843@#themeResource": Promise<void | Record<string, any>>;
7969
- "__#11843@#loadGlobalStyle"(): Promise<void>;
7970
- "__#11843@#loadComponentsStyle"(): Promise<void>;
7971
- "__#11843@#loadFonts"(): Promise<void>;
7972
- "__#11843@#applyTheme"(): Promise<void>;
7973
- "__#11836@#debuggerEle": HTMLElement & {
7966
+ "__#11842@#_themeResource": Promise<void | Record<string, any>>;
7967
+ "__#11842@#fetchTheme"(): Promise<Record<string, any>>;
7968
+ readonly "__#11842@#themeResource": Promise<void | Record<string, any>>;
7969
+ "__#11842@#loadGlobalStyle"(): Promise<void>;
7970
+ "__#11842@#loadComponentsStyle"(): Promise<void>;
7971
+ "__#11842@#loadFonts"(): Promise<void>;
7972
+ "__#11842@#applyTheme"(): Promise<void>;
7973
+ "__#11835@#debuggerEle": HTMLElement & {
7974
7974
  updateData: (data: {
7975
7975
  title: string;
7976
7976
  description?: string;
@@ -7979,11 +7979,11 @@ declare const AccessKeyManagementWidget: {
7979
7979
  description?: string;
7980
7980
  }[]) => void;
7981
7981
  };
7982
- "__#11836@#disableDebugger"(): void;
7983
- "__#11836@#enableDebugger"(): Promise<void>;
7982
+ "__#11835@#disableDebugger"(): void;
7983
+ "__#11835@#enableDebugger"(): Promise<void>;
7984
7984
  readonly debug: boolean;
7985
- "__#11836@#handleDebugMode"(): void;
7986
- "__#11836@#updateDebuggerMessages"(title: string, description: string): void;
7985
+ "__#11835@#handleDebugMode"(): void;
7986
+ "__#11835@#updateDebuggerMessages"(title: string, description: string): void;
7987
7987
  };
7988
7988
  };
7989
7989