@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) • 5.35 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("axios"),require("js-cookie")):"function"==typeof define&&define.amd?define(["exports","axios","js-cookie"],t):t((e||self).nuiFederationSdk={},e.axios,e.jsCookie)}(this,function(e,t,r){function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,t}var o=/*#__PURE__*/i(t),s=/*#__PURE__*/n(r);function c(){return c=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},c.apply(null,arguments)}function u(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,a(e,t)}function a(e,t){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},a(e,t)}var l=function(e){return o.default.post(e.baseUrl+"/sytems/token",{clientId:e.clientId,clientSecret:e.clientSecret})},h=function(e){s.default.set(e.name,e.value,{expires:7,secure:!0})};function f(e,t){try{var r=e()}catch(e){return t(e)}return r&&r.then?r.then(void 0,t):r}var d=/*#__PURE__*/function(){function e(e,t,r){if(this.baseUrl=void 0,this.clientId=void 0,this.clientSecret=void 0,this.instance=void 0,this.accessToken=s.default.get("nui_access_token"),this.isAlreadyFetchingAccessToken=!1,this.baseUrl=e,this.clientId=t,this.clientSecret=r,!e||!t||!r)throw new Error("Please provide all required configuration parameters");this.accessToken||l({baseUrl:this.baseUrl,clientId:this.clientId,clientSecret:this.clientSecret}).then(function(e){h({name:"nui_access_token",value:e.data.accessToken}),h({name:"nui_refresh_token",value:e.data.refreshToken})}).catch(function(e){return console.error(e)}),this.instance=o.default.create({baseURL:this.baseUrl,headers:{"Content-Type":"application/json"}})}return e.prototype.request=function(e){var t=e.url,r=e.options;try{var n=this;return n.instance.interceptors.request.use(function(e){return n.accessToken&&(e.headers.Authorization="Bearer "+n.accessToken),e},function(e){return Promise.reject(e)}),n.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 i=e.response,o=e.config,s=function(){if((401===i.status||403===i.status)&&!o._retry){var e=function(e){if(t)return e;o.headers.Authorization="Bearer "+n.accessToken;var r=n.instance(o);return t=1,r};o._retry=!0;var r=function(){if(!n.isAlreadyFetchingAccessToken)return n.isAlreadyFetchingAccessToken=!0,function(e,r){try{var i=f(function(){return Promise.resolve(l({baseUrl:n.baseUrl,clientId:n.clientId,clientSecret:n.clientSecret})).then(function(e){h({name:"nui_access_token",value:e.data.accessToken}),h({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 i&&i.then?i.then(r.bind(null,!1),r.bind(null,!0)):r(!1,i)}(0,function(e,t){if(n.isAlreadyFetchingAccessToken=!1,e)throw t;return t})}();return r&&r.then?r.then(e):e(r)}}();return Promise.resolve(s&&s.then?s.then(r):r(s))}catch(e){return Promise.reject(e)}}),Promise.resolve(f(function(){return Promise.resolve(n.instance.request(c({url:t},r))).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)}},e}(),p=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}u(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}(d),m=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return u(t,e),t.prototype.retriveAll=function(e){var t=e.page,r=e.limit,n=e.type,i=e.systemId;try{var o=new URL("/logs");return o.searchParams.append("page",t),o.searchParams.append("limit",r),o.searchParams.append("type",n),o.searchParams.append("systemId",i),Promise.resolve(this.request({url:o.toString(),options:{method:"GET"}}))}catch(e){return Promise.reject(e)}},t}(d),v=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}u(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}(d);e.NuiFederation=function(e,t,r){this.uin=void 0,this.log=void 0,this.system=void 0,this.uin=new p(e,t,r),this.log=new m(e,t,r),this.system=new v(e,t,r)}});