@digital-gov-mg/nui-federation-sdk
Version:
This Frontend TypeScript SDK connects to the NUI Federation API for getting or creating, revoke, generating batch for NUI from the API
2 lines (1 loc) • 4.74 kB
JavaScript
import*as e from"axios";import t from"js-cookie";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},r.apply(null,arguments)}function n(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,s(e,t)}function s(e,t){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},s(e,t)}var i=function(t){return e.default.post(t.baseUrl+"/sytems/token",{clientId:t.clientId,clientSecret:t.clientSecret})},o=function(e){t.set(e.name,e.value,{expires:7,secure:!0})};function c(e,t){try{var r=e()}catch(e){return t(e)}return r&&r.then?r.then(void 0,t):r}var a=/*#__PURE__*/function(){function n(r,n,s){if(this.baseUrl=void 0,this.clientId=void 0,this.clientSecret=void 0,this.instance=void 0,this.accessToken=t.get("nui_access_token"),this.isAlreadyFetchingAccessToken=!1,this.baseUrl=r,this.clientId=n,this.clientSecret=s,!r||!n||!s)throw new Error("Please provide all required configuration parameters");this.accessToken||i({baseUrl:this.baseUrl,clientId:this.clientId,clientSecret:this.clientSecret}).then(function(e){o({name:"nui_access_token",value:e.data.accessToken}),o({name:"nui_refresh_token",value:e.data.refreshToken})}).catch(function(e){return console.error(e)}),this.instance=e.default.create({baseURL:this.baseUrl,headers:{"Content-Type":"application/json"}})}return n.prototype.request=function(e){var t=e.url,n=e.options;try{var s=this;return s.instance.interceptors.request.use(function(e){return s.accessToken&&(e.headers.Authorization="Bearer "+s.accessToken),e},function(e){return Promise.reject(e)}),s.instance.interceptors.response.use(function(e){return e},function(e){try{var t,r=function(r){return t?r:Promise.reject(e)};if(!e.response)return Promise.reject(e);var n=e.response,a=e.config,u=function(){if((401===n.status||403===n.status)&&!a._retry){var e=function(e){if(t)return e;a.headers.Authorization="Bearer "+s.accessToken;var r=s.instance(a);return t=1,r};a._retry=!0;var r=function(){if(!s.isAlreadyFetchingAccessToken)return s.isAlreadyFetchingAccessToken=!0,function(e,r){try{var n=c(function(){return Promise.resolve(i({baseUrl:s.baseUrl,clientId:s.clientId,clientSecret:s.clientSecret})).then(function(e){o({name:"nui_access_token",value:e.data.accessToken}),o({name:"nui_refresh_token",value:e.data.refreshToken})})},function(e){var r=Promise.reject(e);return t=1,r})}catch(e){return r(!0,e)}return n&&n.then?n.then(r.bind(null,!1),r.bind(null,!0)):r(!1,n)}(0,function(e,t){if(s.isAlreadyFetchingAccessToken=!1,e)throw t;return t})}();return r&&r.then?r.then(e):e(r)}}();return Promise.resolve(u&&u.then?u.then(r):r(u))}catch(e){return Promise.reject(e)}}),Promise.resolve(c(function(){return Promise.resolve(s.instance.request(r({url:t},n))).then(function(e){return e.data})},function(e){var t,r=(null==(t=e.response)||null==(t=t.data)?void 0:t.message)||e.message||"An error occurred while sending request";throw new Error(r)}))}catch(e){return Promise.reject(e)}},n}(),u=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.getOrCreateUIN=function(e){try{return Promise.resolve(this.request({url:"/uins",options:{method:"PUT",data:e}}))}catch(e){return Promise.reject(e)}},r.revokeUIN=function(e){try{return Promise.resolve(this.request({url:"/uins/"+e+"/revoke",options:{method:"DELETE"}}))}catch(e){return Promise.reject(e)}},r.generateBatchUIN=function(e){try{return Promise.resolve(this.request({url:"/uins/batch",options:{method:"POST",params:{count:e}}}))}catch(e){return Promise.reject(e)}},t}(a),h=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.retriveAll=function(e){var t=e.page,r=e.limit,n=e.type,s=e.systemId;try{var i=new URL("/logs");return i.searchParams.append("page",t),i.searchParams.append("limit",r),i.searchParams.append("type",n),i.searchParams.append("systemId",s),Promise.resolve(this.request({url:i.toString(),options:{method:"GET"}}))}catch(e){return Promise.reject(e)}},t}(a),l=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.createConsumer=function(e){try{return Promise.resolve(this.request({url:"/systems",options:{method:"POST",data:e}}))}catch(e){return Promise.reject(e)}},r.generateToken=function(e){try{return Promise.resolve(this.request({url:"/systems/token",options:{method:"POST",data:e}}))}catch(e){return Promise.reject(e)}},t}(a),f=function(e,t,r){this.uin=void 0,this.log=void 0,this.system=void 0,this.uin=new u(e,t,r),this.log=new h(e,t,r),this.system=new l(e,t,r)};export{f as NuiFederation};