Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ngxi4-dynamic-service

Package Overview
Dependencies
Maintainers
1
Versions
39
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ngxi4-dynamic-service - npm Package Compare versions

Comparing version 0.0.2 to 0.0.4

esm2015/lib/services/ngxi4-common.service.js

16

bundles/ngxi4-dynamic-service.umd.min.js

@@ -1,2 +0,16 @@

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common/http"),require("@angular/common/http/"),require("rxjs"),require("rxjs/operators"),require("@ionic/angular")):"function"==typeof define&&define.amd?define("ngxi4-dynamic-service",["exports","@angular/core","@angular/common/http","@angular/common/http/","rxjs","rxjs/operators","@ionic/angular"],e):e((t=t||self)["ngxi4-dynamic-service"]={},t.ng.core,t.ng.common.http,t.ng.common.http[""],t.rxjs,t.rxjs.operators,t.angular)}(this,(function(t,e,n,r,o,i,c){"use strict";var s,u=function(){function t(){}return t.prototype.intercept=function(t,e){return s&&(t=t.clone({setHeaders:{Authorization:"Bearer "+s}})),e.handle(t).pipe(i.map((function(t){return r.HttpResponse,t})),i.catchError((function(t){return o.throwError(t)})))},t.prototype.setRequestToken=function(t){s=t||""},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[]},t.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new t},token:t,providedIn:"root"}),t}(),a=function(){function t(){}return t.prototype.ngOnInit=function(){},t.decorators=[{type:e.Component,args:[{selector:"ngxi4-ngxi4-card-dynamic-form",template:"<p>ngxi4-card-dynamic-form works!</p>\r\n",styles:[""]}]}],t.ctorParameters=function(){return[]},t}();var p=new e.InjectionToken("Ngxi4Config"),f=function(){function t(){}return t.forRoot=function(e){return{ngModule:t,providers:[l,{provide:p,useValue:e}]}},t.decorators=[{type:e.NgModule,args:[{declarations:[a],imports:[n.HttpClientModule,c.IonicModule.forRoot()],providers:[{provide:n.HTTP_INTERCEPTORS,useClass:u,multi:!0}],exports:[a]}]}],t}(),l=function(){function t(t,e,n){this.config=t,this.httpClient=e,this.reqInterceptor=n,this.serviceUrls={AUTH_SERVER:this.config?this.config.authServerUrl:"/"}}return t.prototype.getDynamicUrl=function(t,e,n){return this.reqInterceptor.setRequestToken(e&&e.length?e:e&&this.token?this.token:""),this.httpClient.get(t,n).toPromise().then((function(t){return t}))},t.prototype.postDynamicJson=function(t,e,n){return this.reqInterceptor.setRequestToken(n&&n.length?n:n&&this.token?this.token:""),this.httpClient.post(t,JSON.stringify(e,(function(t,e){if(null!==e)return e}),2)).toPromise().then((function(t){return t}))},t.prototype.postDynamicFormData=function(t,e,n){return this.reqInterceptor.setRequestToken(n&&n.length?n:n&&this.token?this.token:""),this.httpClient.post(t,e).toPromise().then((function(t){return t}))},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:void 0,decorators:[{type:e.Inject,args:[p]}]},{type:n.HttpClient},{type:u}]},t.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new t(e.ɵɵinject(p),e.ɵɵinject(n.HttpClient),e.ɵɵinject(u))},token:t,providedIn:"root"}),t}();t.Ngxi4AuthService=l,t.Ngxi4CardDynamicFormComponent=a,t.Ngxi4ConfigService=p,t.Ngxi4DynamicServiceModule=f,t.ɵa=u,Object.defineProperty(t,"__esModule",{value:!0})}));
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common/http"),require("@angular/common/http/"),require("rxjs"),require("rxjs/operators"),require("@ionic/angular")):"function"==typeof define&&define.amd?define("ngxi4-dynamic-service",["exports","@angular/core","@angular/common/http","@angular/common/http/","rxjs","rxjs/operators","@ionic/angular"],e):e((t=t||self)["ngxi4-dynamic-service"]={},t.ng.core,t.ng.common.http,t.ng.common.http[""],t.rxjs,t.rxjs.operators,t.angular)}(this,(function(t,e,n,r,o,i,u){"use strict";
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */var c;function a(t,e,n,r){return new(n||(n=Promise))((function(o,i){function u(t){try{a(r.next(t))}catch(t){i(t)}}function c(t){try{a(r.throw(t))}catch(t){i(t)}}function a(t){t.done?o(t.value):new n((function(e){e(t.value)})).then(u,c)}a((r=r.apply(t,e||[])).next())}))}function s(t,e){var n,r,o,i,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;u;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return u.label++,{value:i[1],done:!1};case 5:u.label++,r=i[1],i=[0];continue;case 7:i=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){u=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){u.label=i[1];break}if(6===i[0]&&u.label<o[1]){u.label=o[1],o=i;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(i);break}o[2]&&u.ops.pop(),u.trys.pop();continue}i=e.call(t,u)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}function l(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),u=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)u.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return u}function f(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(l(arguments[e]));return t}var p=function(){function t(){}return t.prototype.intercept=function(t,e){return c&&(t=t.clone({setHeaders:{Authorization:"Bearer "+c}})),e.handle(t).pipe(i.map((function(t){return r.HttpResponse,t})),i.catchError((function(t){return o.throwError(t)})))},t.prototype.setRequestToken=function(t){c=t||""},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[]},t.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new t},token:t,providedIn:"root"}),t}(),h=function(){function t(){}return t.prototype.ngOnInit=function(){},t.decorators=[{type:e.Component,args:[{selector:"ngxi4-ngxi4-card-dynamic-form",template:"<p>ngxi4-card-dynamic-form works!</p>\r\n",styles:[""]}]}],t.ctorParameters=function(){return[]},t}(),d=function(){function t(t,e,n,r){var o=this;this.modalCtrl=t,this.alertCtrl=e,this.loadingCtrl=n,this.toastCtrl=r,this.c=new Map,this.orderArrayObjects=function(t,e){return t.sort((function(t,n){if(Array.isArray(e)){for(var r=0,o=Intl.Collator().compare(t[e[r]],n[e[r]]);0===o&&r<=e.length;)r++,o=Intl.Collator().compare(t[e[r]],n[e[r]]),console.log("orderReturn",o);return o}return Intl.Collator().compare(t[e],n[e])}))},this.createTreeWeight=function(t,e,n,r,i,u,c,a,s){var l=a||[],f=u||1;if(t&&t.length>=l.length){var p=t.filter((function(t){return t[n]===i||null==i&&null==t[n]||null==i&&null==t[n]||null==i&&""==t[n]}));if(p&&p.length>0){var h=p.map((function(t){return t[r]})).reduce((function(t,e){return t+e}),0);p.forEach((function(i,u){return i.$weight_percent=i[r]/h,i.$parent_weight_percent=c||1,i.$root_weight_percent=i.$parent_weight_percent*i.$weight_percent,i.$level=f,i.$index=u+1,i.$tree_index=(s?s+".":"")+i.$index,l.push(i),o.createTreeWeight(t,e,n,r,i[e],f+1,i.$root_weight_percent,l,i.$tree_index)}))}else{var d=l.find((function(t){return t[e]===i}));d&&(d.$is_leaf=1)}}return l},this.createTreeOrder=function(t,e,n,r,i,u,c,a){var s=u||[],l=i||1;if(t&&t.length>=s.length){var f=t.filter((function(t){return t[n]===r||null==r&&null==t[n]||null==r&&null==t[n]||null==r&&""==t[n]}));if(f&&f.length>0)f.forEach((function(r,i){return r.$root=a||r[e],r.$level=l,r.$index=i+1,r.$tree_index=(c?c+".":"")+r.$index,s.push(r),o.createTreeOrder(t,e,n,r[e],l+1,s,r.$tree_index,r.$root)}));else{var p=s.find((function(t){return t[e]===r}));p&&(p.$is_leaf=1)}}return s},this.createTreeMenu=function(t,e,n,r,i){var u=i||1,c=t.filter((function(t){return t[n]===r||null==r&&null==t[n]||null==r&&null==t[n]||null==r&&""==t[n]}));if(c&&c.length>0)return c.forEach((function(r){r.$level=u,r.subs=void 0!==r.subs?r.subs:o.createTreeMenu(t,e,n,r[e],u+1)})),c;var a=t.find((function(t){return t[e]===r}));a&&(a.$is_leaf=1)},this.createObjectKey=function(t,e,n){return Object.defineProperty(t,e,{value:n,writable:!0,enumerable:!0,configurable:!0}),t},this.deleteObjectKey=function(t,e){delete t[e];return t},this.cloneObject=function(t){return JSON.parse(JSON.stringify(t))}}return t.prototype.subscribe=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];var r=this.c.get(t);r||this.c.set(t,r=[]),r.push.apply(r,f(e))},t.prototype.unsubscribe=function(t,e){if(!e)return this.c.delete(t);var n=this.c.get(t);if(!n)return!1;var r=n.indexOf(e);return!(r<0)&&(n.splice(r,1),0===n.length&&this.c.delete(t),!0)},t.prototype.publish=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];var r=this.c.get(t);return r?r.map((function(t){try{return t.apply(void 0,f(e))}catch(t){return console.error(t),null}})):null},t.prototype.getUrlSeparateParameter=function(t){return t.match(/\?/)?"&":"?"},t.prototype.showLoader=function(t){this.loadingCtrl.create({message:t}).then((function(t){t.present(),t.onDidDismiss().then((function(t){}))}))},t.prototype.hideLoader=function(){var t=this;this.loadingCtrl&&setTimeout((function(){t.loadingCtrl.dismiss()}),2e3)},t.prototype.openModal=function(t,e,n){var r=this;return new Promise((function(o){return a(r,void 0,void 0,(function(){var r;return s(this,(function(i){switch(i.label){case 0:return[4,this.modalCtrl.create({component:t,componentProps:e})];case 1:return(r=i.sent()).onDidDismiss().then((function(t){if(t&&t.data)return n&&n(t.data),void o(t.data);o()})),[4,r.present()];case 2:return i.sent(),[2]}}))}))}))},t.prototype.closeModal=function(t){return a(this,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return[4,this.modalCtrl.dismiss(t)];case 1:return e.sent(),[2]}}))}))},t.prototype.presentAlert=function(t,e){var n=this;return new Promise((function(r){return a(n,void 0,void 0,(function(){var n;return s(this,(function(o){switch(o.label){case 0:return n=[{text:e||"Đóng lại",handler:function(){r("CLOSE")}}],[4,this.alertCtrl.create({header:"CHÚ Ý!",subHeader:"Đọc kỹ thông tin sau",message:t,buttons:n})];case 1:return[4,o.sent().present()];case 2:return o.sent(),[2]}}))}))}))},t.prototype.presentConfirm=function(t,e,n){var r=this;return new Promise((function(o){return a(r,void 0,void 0,(function(){var r;return s(this,(function(i){switch(i.label){case 0:return r=[{text:n||"Bỏ qua",handler:function(){o()}},{text:e||"Đồng ý",handler:function(){o("OK")}}],[4,this.alertCtrl.create({header:"XÁC NHẬN",subHeader:"Đọc kỹ thông tin sau:",message:t,buttons:r})];case 1:return[4,i.sent().present()];case 2:return i.sent(),[2]}}))}))}))},t.prototype.showToast=function(t,e,n,r){var o=this;return new Promise((function(i){o.toastCtrl.create({message:t,duration:e||0,showCloseButton:!e,position:r||"middle",closeButtonText:"ok",animated:!0,color:n||"primary"}).then((function(t){t.present(),t.onDidDismiss().then((function(t){i(t)}))}))}))},t.prototype.hideToast=function(){var t=this;this.toastCtrl&&setTimeout((function(){t.toastCtrl.dismiss()}),2e3)},t.prototype.delay=function(t){return new Promise((function(e,n){setTimeout((function(){e()}),t)}))},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:u.ModalController},{type:u.AlertController},{type:u.LoadingController},{type:u.ToastController}]},t.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new t(e.ɵɵinject(u.ModalController),e.ɵɵinject(u.AlertController),e.ɵɵinject(u.LoadingController),e.ɵɵinject(u.ToastController))},token:t,providedIn:"root"}),t}();var g=new e.InjectionToken("Ngxi4Config"),y=function(){function t(){}return t.forRoot=function(e){return{ngModule:t,providers:[m,d,{provide:g,useValue:e}]}},t.decorators=[{type:e.NgModule,args:[{declarations:[h],imports:[n.HttpClientModule,u.IonicModule.forRoot()],providers:[{provide:n.HTTP_INTERCEPTORS,useClass:p,multi:!0}],exports:[h]}]}],t}(),m=function(){function t(t,e,n){this.config=t,this.httpClient=e,this.reqInterceptor=n,this.serviceUrls={AUTH_SERVER:this.config?this.config.authServerUrl:"/"}}return t.prototype.getDynamicUrl=function(t,e,n){return this.reqInterceptor.setRequestToken(e&&e.length?e:e&&this.token?this.token:""),this.httpClient.get(t,n).toPromise().then((function(t){return t})).catch((function(t){return t&&t.error?t.error:t}))},t.prototype.postDynamicJson=function(t,e,n){return this.reqInterceptor.setRequestToken(n&&n.length?n:n&&this.token?this.token:""),this.httpClient.post(t,JSON.stringify(e,(function(t,e){if(null!==e)return e}),2)).toPromise().then((function(t){return t})).catch((function(t){return t&&t.error?t.error:t}))},t.prototype.postDynamicFormData=function(t,e,n){return this.reqInterceptor.setRequestToken(n&&n.length?n:n&&this.token?this.token:""),this.httpClient.post(t,e).toPromise().then((function(t){return t})).catch((function(t){return t&&t.error?t.error:t}))},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:void 0,decorators:[{type:e.Inject,args:[g]}]},{type:n.HttpClient},{type:p}]},t.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new t(e.ɵɵinject(g),e.ɵɵinject(n.HttpClient),e.ɵɵinject(p))},token:t,providedIn:"root"}),t}();t.Ngxi4AuthService=m,t.Ngxi4CardDynamicFormComponent=h,t.Ngxi4ConfigService=g,t.Ngxi4DynamicServiceModule=y,t.ɵa=p,t.ɵb=d,Object.defineProperty(t,"__esModule",{value:!0})}));
//# sourceMappingURL=ngxi4-dynamic-service.umd.min.js.map

4

esm2015/lib/ngxi4-dynamic-service.module.js

@@ -12,2 +12,3 @@ /**

import { Ngxi4CardDynamicFormComponent } from './cards/ngxi4-card-dynamic-form/ngxi4-card-dynamic-form.component';
import { Ngxi4CommonsService } from './services/ngxi4-common.service';
/**

@@ -37,2 +38,3 @@ * @record

Ngxi4AuthService,
Ngxi4CommonsService,
// xuất bản tham số ???...

@@ -71,2 +73,2 @@ {

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4aTQtZHluYW1pYy1zZXJ2aWNlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neGk0LWR5bmFtaWMtc2VydmljZS8iLCJzb3VyY2VzIjpbImxpYi9uZ3hpNC1keW5hbWljLXNlcnZpY2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQzs7OztBQUdsSCxpQ0FFQzs7O0lBREMsb0NBQXNCOzs7O0FBR3hCLE1BQU0sT0FBTyxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBYyxhQUFhLENBQUM7QUF3QmhGLE1BQU0sT0FBTyx5QkFBeUI7Ozs7OztJQUVwQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQW9CO1FBQ2pDLE9BQU87O1lBRUwsUUFBUSxFQUFFLHlCQUF5QjtZQUNuQyxTQUFTLEVBQUU7Z0JBQ1QsbUJBQW1CO2dCQUNuQixnQkFBZ0I7Z0JBQ2hCLDBCQUEwQjtnQkFDMUI7b0JBQ0UsT0FBTyxFQUFFLGtCQUFrQjtvQkFDM0IsUUFBUSxFQUFFLE1BQU07aUJBQ2pCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7O1lBdENGLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUU7b0JBQ1osc0JBQXNCO29CQUN0Qiw2QkFBNkI7aUJBQzlCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxnQkFBZ0I7b0JBQ2hCLFdBQVcsQ0FBQyxPQUFPLEVBQUU7aUJBQ3RCO2dCQUNELFNBQVMsRUFBRTtvQkFDVCw2QkFBNkI7b0JBQzdCO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFFBQVEsRUFBRSxrQkFBa0I7d0JBQzVCLEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxzQkFBc0I7b0JBQ3RCLDZCQUE2QjtpQkFDOUI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBJbmplY3Rpb25Ub2tlbiwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ3hpNEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9uZ3hpNC1hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlLCBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IFJlcXVlc3RJbnRlcmNlcHRvciB9IGZyb20gJy4vaW50ZXJjZXB0b3JzL3JlcXVlc3RJbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IE5neGk0Q2FyZER5bmFtaWNGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJkcy9uZ3hpNC1jYXJkLWR5bmFtaWMtZm9ybS9uZ3hpNC1jYXJkLWR5bmFtaWMtZm9ybS5jb21wb25lbnQnO1xyXG5cclxuLy8gQ+G6pXUgaMOsbmggdGhhbSBz4buRIMSR4bqndSB2w6BvLCBuZ8aw4budaSBkw7luZyBraGFpIGLDoW9cclxuZXhwb3J0IGludGVyZmFjZSBOZ3hpNENvbmZpZyB7XHJcbiAgYXV0aFNlcnZlclVybDogc3RyaW5nOyAgLy8gdsOtIGThu6U6IMSRxrDhu51uZyBk4bqrbiBjxqEgc+G7nyBj4bunYSBk4buLY2ggduG7pSB4w6FjIHRo4buxY1xyXG59XHJcbi8vIEThu4tjaCB24bulIHRpw6ptIHRoYW0gc+G7kSB4deG7kW5nIGNobyBjw6FjIGThu4tjaCB24bulIGLDqm4gZMaw4bubaVxyXG5leHBvcnQgY29uc3QgTmd4aTRDb25maWdTZXJ2aWNlID0gbmV3IEluamVjdGlvblRva2VuPE5neGk0Q29uZmlnPignTmd4aTRDb25maWcnKTtcclxuIFxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgLy8ga2hhaSBiw6FvIHRow6BuaCBwaOG6p25cclxuICAgIE5neGk0Q2FyZER5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlLCAvLyDEkeG7gyBnaWFvIHRp4bq/cCBhcGlcclxuICAgIElvbmljTW9kdWxlLmZvclJvb3QoKVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICAvLyBOaMO6bmcgYuG6o28gbeG6rXQgaW50ZXJjZXB0b3JzXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxyXG4gICAgICB1c2VDbGFzczogUmVxdWVzdEludGVyY2VwdG9yLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgLy8geHXhuqV0IGLhuqNuIHRow6BuaCBwaOG6p25cclxuICAgIE5neGk0Q2FyZER5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4aTREeW5hbWljU2VydmljZU1vZHVsZSB7IFxyXG4gIC8vIEPhuqV1IGjDrG5oIGto4bufaSB04bqhbyBk4buLY2ggduG7pVxyXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IE5neGk0Q29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAvLyB4deG6pXQgYuG6o24gbW9kdWxlXHJcbiAgICAgIG5nTW9kdWxlOiBOZ3hpNER5bmFtaWNTZXJ2aWNlTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAvLyB4deG6pXQgYuG6o24gZOG7i2NoIHbhu6VcclxuICAgICAgICBOZ3hpNEF1dGhTZXJ2aWNlLFxyXG4gICAgICAgIC8vIHh14bqldCBi4bqjbiB0aGFtIHPhu5EgPz8/Li4uXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogTmd4aTRDb25maWdTZXJ2aWNlLFxyXG4gICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZ1xyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4aTQtZHluYW1pYy1zZXJ2aWNlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neGk0LWR5bmFtaWMtc2VydmljZS8iLCJzb3VyY2VzIjpbImxpYi9uZ3hpNC1keW5hbWljLXNlcnZpY2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQUd0RSxpQ0FFQzs7O0lBREMsb0NBQXNCOzs7O0FBR3hCLE1BQU0sT0FBTyxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBYyxhQUFhLENBQUM7QUF3QmhGLE1BQU0sT0FBTyx5QkFBeUI7Ozs7OztJQUVwQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQW9CO1FBQ2pDLE9BQU87O1lBRUwsUUFBUSxFQUFFLHlCQUF5QjtZQUNuQyxTQUFTLEVBQUU7Z0JBQ1QsbUJBQW1CO2dCQUNuQixnQkFBZ0I7Z0JBQ2hCLG1CQUFtQjtnQkFDbkIsMEJBQTBCO2dCQUMxQjtvQkFDRSxPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixRQUFRLEVBQUUsTUFBTTtpQkFDakI7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDOzs7WUF2Q0YsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRTtvQkFDWixzQkFBc0I7b0JBQ3RCLDZCQUE2QjtpQkFDOUI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLGdCQUFnQjtvQkFDaEIsV0FBVyxDQUFDLE9BQU8sRUFBRTtpQkFDdEI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULDZCQUE2QjtvQkFDN0I7d0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsUUFBUSxFQUFFLGtCQUFrQjt3QkFDNUIsS0FBSyxFQUFFLElBQUk7cUJBQ1o7aUJBQ0Y7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLHNCQUFzQjtvQkFDdEIsNkJBQTZCO2lCQUM5QjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIEluamVjdGlvblRva2VuLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5neGk0QXV0aFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL25neGk0LWF1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUsIEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgUmVxdWVzdEludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmNlcHRvcnMvcmVxdWVzdEludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgTmd4aTRDYXJkRHluYW1pY0Zvcm1Db21wb25lbnQgfSBmcm9tICcuL2NhcmRzL25neGk0LWNhcmQtZHluYW1pYy1mb3JtL25neGk0LWNhcmQtZHluYW1pYy1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5neGk0Q29tbW9uc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL25neGk0LWNvbW1vbi5zZXJ2aWNlJztcclxuXHJcbi8vIEPhuqV1IGjDrG5oIHRoYW0gc+G7kSDEkeG6p3UgdsOgbywgbmfGsOG7nWkgZMO5bmcga2hhaSBiw6FvXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmd4aTRDb25maWcge1xyXG4gIGF1dGhTZXJ2ZXJVcmw6IHN0cmluZzsgIC8vIHbDrSBk4bulOiDEkcaw4budbmcgZOG6q24gY8ahIHPhu58gY+G7p2EgZOG7i2NoIHbhu6UgeMOhYyB0aOG7sWNcclxufVxyXG4vLyBE4buLY2ggduG7pSB0acOqbSB0aGFtIHPhu5EgeHXhu5FuZyBjaG8gY8OhYyBk4buLY2ggduG7pSBiw6puIGTGsOG7m2lcclxuZXhwb3J0IGNvbnN0IE5neGk0Q29uZmlnU2VydmljZSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3hpNENvbmZpZz4oJ05neGk0Q29uZmlnJyk7XHJcbiBcclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIC8vIGtoYWkgYsOhbyB0aMOgbmggcGjhuqduXHJcbiAgICBOZ3hpNENhcmREeW5hbWljRm9ybUNvbXBvbmVudFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgSHR0cENsaWVudE1vZHVsZSwgLy8gxJHhu4MgZ2lhbyB0aeG6v3AgYXBpXHJcbiAgICBJb25pY01vZHVsZS5mb3JSb290KClcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgLy8gTmjDum5nIGLhuqNvIG3huq10IGludGVyY2VwdG9yc1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcclxuICAgICAgdXNlQ2xhc3M6IFJlcXVlc3RJbnRlcmNlcHRvcixcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIC8vIHh14bqldCBi4bqjbiB0aMOgbmggcGjhuqduXHJcbiAgICBOZ3hpNENhcmREeW5hbWljRm9ybUNvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5neGk0RHluYW1pY1NlcnZpY2VNb2R1bGUgeyBcclxuICAvLyBD4bqldSBow6xuaCBraOG7n2kgdOG6oW8gZOG7i2NoIHbhu6VcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBOZ3hpNENvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLy8geHXhuqV0IGLhuqNuIG1vZHVsZVxyXG4gICAgICBuZ01vZHVsZTogTmd4aTREeW5hbWljU2VydmljZU1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgLy8geHXhuqV0IGLhuqNuIGThu4tjaCB24bulXHJcbiAgICAgICAgTmd4aTRBdXRoU2VydmljZSxcclxuICAgICAgICBOZ3hpNENvbW1vbnNTZXJ2aWNlLFxyXG4gICAgICAgIC8vIHh14bqldCBi4bqjbiB0aGFtIHPhu5EgPz8/Li4uXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogTmd4aTRDb25maWdTZXJ2aWNlLFxyXG4gICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZ1xyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19

@@ -53,2 +53,9 @@ /**

return rtn;
}))
.catch((/**
* @param {?} err
* @return {?}
*/
err => {
return err && err.error ? err.error : err;
}));

@@ -86,2 +93,9 @@ }

return rtn;
}))
.catch((/**
* @param {?} err
* @return {?}
*/
err => {
return err && err.error ? err.error : err;
}));

@@ -109,2 +123,9 @@ }

return rtn;
}))
.catch((/**
* @param {?} err
* @return {?}
*/
err => {
return err && err.error ? err.error : err;
}));

@@ -150,2 +171,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4aTQtYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4aTQtZHluYW1pYy1zZXJ2aWNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL25neGk0LWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQWUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7QUFLbEYsTUFBTSxPQUFPLGdCQUFnQjs7Ozs7O0lBWTNCLFlBQ3NDLE1BQW1CLEVBQy9DLFVBQXNCLEVBQ3RCLGNBQWtDO1FBRk4sV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUMvQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFvQjs7Ozs7UUFQckMsZ0JBQVcsR0FBUTtZQUN4QixXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQSxDQUFDLENBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUEsQ0FBQyxDQUFBLEdBQUcsQ0FBRSx3Q0FBd0M7U0FDakcsQ0FBQTtJQU1HLENBQUM7Ozs7Ozs7OztJQVNMLGFBQWEsQ0FBQyxHQUFXLEVBQUUsS0FBVyxFQUFFLE9BQWE7UUFFbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTNHLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQzthQUNyQyxTQUFTLEVBQU87YUFDaEIsSUFBSTs7OztRQUFDLElBQUksQ0FBQyxFQUFFOztnQkFDUCxHQUFRO1lBQ1osR0FBRyxHQUFHLElBQUksQ0FBQztZQUNYLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7Ozs7OztJQVFELGVBQWUsQ0FBQyxHQUFXLEVBQUUsU0FBaUIsRUFBRSxLQUFXO1FBRXpELElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUzRyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUM3QyxTQUFTOzs7OztRQUNULENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2IsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO2dCQUFFLE9BQU8sU0FBUyxDQUFDO2FBQUUsQ0FBQyxvQ0FBb0M7WUFDOUUsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLEdBQ0MsQ0FBQyxDQUFDLENBQUM7YUFDSixTQUFTLEVBQU87YUFDaEIsSUFBSTs7OztRQUFDLElBQUksQ0FBQyxFQUFFOztnQkFDUCxHQUFRO1lBQ1osR0FBRyxHQUFHLElBQUksQ0FBQztZQUNYLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7Ozs7OztJQVFELG1CQUFtQixDQUFDLEdBQVcsRUFBRSxTQUFjLEVBQUUsS0FBVztRQUUxRCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFM0csT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDO2FBQ3hDLFNBQVMsRUFBTzthQUNoQixJQUFJOzs7O1FBQUMsSUFBSSxDQUFDLEVBQUU7O2dCQUNQLEdBQVE7WUFDWixHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQ1gsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7OztZQW5GRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7NENBY0ksTUFBTSxTQUFDLGtCQUFrQjtZQXBCckIsVUFBVTtZQUNWLGtCQUFrQjs7Ozs7SUFRekIsaUNBQXFCOzs7Ozs7SUFNckIsdUNBRUM7Ozs7O0lBR0Msa0NBQXVEOzs7OztJQUN2RCxzQ0FBOEI7Ozs7O0lBQzlCLDBDQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBSZXF1ZXN0SW50ZXJjZXB0b3IgfSBmcm9tICcuLi9pbnRlcmNlcHRvcnMvcmVxdWVzdEludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgTmd4aTRDb25maWcsIE5neGk0Q29uZmlnU2VydmljZSB9IGZyb20gJy4uL25neGk0LWR5bmFtaWMtc2VydmljZS5tb2R1bGUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4aTRBdXRoU2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyB0b2tlbjogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBCaeG6v24gdG/DoG4gY+G7pWMgxJHhu4MgbOG6pXkgxJHGsOG7nW5nIGThuqtuXHJcbiAgICogSG/hurdjIGtoYWkgbOG6oWkgxJHGsOG7nW5nIGThuqtuIGzhuqV5IHThu6sgY3NkbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXJ2aWNlVXJsczogYW55ID0ge1xyXG4gICAgQVVUSF9TRVJWRVI6IHRoaXMuY29uZmlnP3RoaXMuY29uZmlnLmF1dGhTZXJ2ZXJVcmw6Jy8nICAvLyBhcGkgeMOhYyB0aOG7sWMgdXNlciwgcGFzcyB2w6AgdG9rZW4sIGFwaVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KE5neGk0Q29uZmlnU2VydmljZSkgcHJpdmF0ZSBjb25maWc6IE5neGk0Q29uZmlnLFxyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSByZXFJbnRlcmNlcHRvcjogUmVxdWVzdEludGVyY2VwdG9yLFxyXG4gICkgeyB9XHJcblxyXG4gIC8vLS0tLS0tLSBDw6FjIGjDoG0gdMawxqFuZyB0w6FjIGThu68gbGnhu4d1IEFQSSByZXNmdWwgduG7m2kgc2VydmVyIC0tLS0vL1xyXG4gIC8qKlxyXG4gICAqIGdldCB1cmwgPT4gcmVxLnBhcmFtU1xyXG4gICAqIEBwYXJhbSB1cmwgXHJcbiAgICogQHBhcmFtIHRva2VuIFxyXG4gICAqIEBwYXJhbSBvcHRpb25zIFxyXG4gICAqL1xyXG4gIGdldER5bmFtaWNVcmwodXJsOiBzdHJpbmcsIHRva2VuPzogYW55LCBvcHRpb25zPzogYW55KSB7XHJcblxyXG4gICAgdGhpcy5yZXFJbnRlcmNlcHRvci5zZXRSZXF1ZXN0VG9rZW4odG9rZW4gJiYgdG9rZW4ubGVuZ3RoID8gdG9rZW4gOiB0b2tlbiAmJiB0aGlzLnRva2VuID8gdGhpcy50b2tlbiA6ICcnKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh1cmwsIG9wdGlvbnMpXHJcbiAgICAgIC50b1Byb21pc2U8YW55PigpXHJcbiAgICAgIC50aGVuKGRhdGEgPT4ge1xyXG4gICAgICAgIGxldCBydG46IGFueTtcclxuICAgICAgICBydG4gPSBkYXRhO1xyXG4gICAgICAgIHJldHVybiBydG47XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogcG9zdCBqc29uX2RhdGEgPT4gcmVxLmpzb25fZGF0YVxyXG4gICAqIEBwYXJhbSB1cmwgXHJcbiAgICogQHBhcmFtIGpzb25fZGF0YSBcclxuICAgKiBAcGFyYW0gdG9rZW4gXHJcbiAgICovXHJcbiAgcG9zdER5bmFtaWNKc29uKHVybDogc3RyaW5nLCBqc29uX2RhdGE6IE9iamVjdCwgdG9rZW4/OiBhbnkpIHtcclxuXHJcbiAgICB0aGlzLnJlcUludGVyY2VwdG9yLnNldFJlcXVlc3RUb2tlbih0b2tlbiAmJiB0b2tlbi5sZW5ndGggPyB0b2tlbiA6IHRva2VuICYmIHRoaXMudG9rZW4gPyB0aGlzLnRva2VuIDogJycpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdCh1cmwsIEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICBqc29uX2RhdGEsXHJcbiAgICAgIChrZXksIHZhbHVlKSA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gLy8gS2jDtG5nIGNodXnhu4NuIGPDoWMgZ2nDoSB0cuG7iyBudWxsIGzDqm5cclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgLCAyKSlcclxuICAgICAgLnRvUHJvbWlzZTxhbnk+KClcclxuICAgICAgLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgICAgbGV0IHJ0bjogYW55O1xyXG4gICAgICAgIHJ0biA9IGRhdGE7XHJcbiAgICAgICAgcmV0dXJuIHJ0bjtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBwb3N0IEZvcm1EYXRhID0+IHJlcS5mb3JtX2RhdGFcclxuICAgKiBAcGFyYW0gdXJsIFxyXG4gICAqIEBwYXJhbSBmb3JtX2RhdGEgRm9ybURhdGFcclxuICAgKiBAcGFyYW0gdG9rZW4gXHJcbiAgICovXHJcbiAgcG9zdER5bmFtaWNGb3JtRGF0YSh1cmw6IHN0cmluZywgZm9ybV9kYXRhOiBhbnksIHRva2VuPzogYW55KSB7XHJcblxyXG4gICAgdGhpcy5yZXFJbnRlcmNlcHRvci5zZXRSZXF1ZXN0VG9rZW4odG9rZW4gJiYgdG9rZW4ubGVuZ3RoID8gdG9rZW4gOiB0b2tlbiAmJiB0aGlzLnRva2VuID8gdGhpcy50b2tlbiA6ICcnKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QodXJsLCBmb3JtX2RhdGEpXHJcbiAgICAgIC50b1Byb21pc2U8YW55PigpXHJcbiAgICAgIC50aGVuKGRhdGEgPT4ge1xyXG4gICAgICAgIGxldCBydG46IGFueTtcclxuICAgICAgICBydG4gPSBkYXRhO1xyXG4gICAgICAgIHJldHVybiBydG47XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4aTQtYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4aTQtZHluYW1pYy1zZXJ2aWNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL25neGk0LWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQWUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7QUFLbEYsTUFBTSxPQUFPLGdCQUFnQjs7Ozs7O0lBWTNCLFlBQ3NDLE1BQW1CLEVBQy9DLFVBQXNCLEVBQ3RCLGNBQWtDO1FBRk4sV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUMvQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFvQjs7Ozs7UUFQckMsZ0JBQVcsR0FBUTtZQUN4QixXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQSxDQUFDLENBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUEsQ0FBQyxDQUFBLEdBQUcsQ0FBRSx3Q0FBd0M7U0FDakcsQ0FBQTtJQU1HLENBQUM7Ozs7Ozs7OztJQVNMLGFBQWEsQ0FBQyxHQUFXLEVBQUUsS0FBVyxFQUFFLE9BQWE7UUFFbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTNHLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQzthQUNyQyxTQUFTLEVBQU87YUFDaEIsSUFBSTs7OztRQUFDLElBQUksQ0FBQyxFQUFFOztnQkFDUCxHQUFRO1lBQ1osR0FBRyxHQUFHLElBQUksQ0FBQztZQUNYLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFDO2FBQ0QsS0FBSzs7OztRQUFDLEdBQUcsQ0FBQSxFQUFFO1lBQ1YsT0FBTyxHQUFHLElBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQSxDQUFDLENBQUEsR0FBRyxDQUFDLEtBQUssQ0FBQSxDQUFDLENBQUEsR0FBRyxDQUFDO1FBQ3RDLENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7Ozs7Ozs7SUFRRCxlQUFlLENBQUMsR0FBVyxFQUFFLFNBQWlCLEVBQUUsS0FBVztRQUV6RCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFM0csT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FDN0MsU0FBUzs7Ozs7UUFDVCxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNiLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtnQkFBRSxPQUFPLFNBQVMsQ0FBQzthQUFFLENBQUMsb0NBQW9DO1lBQzlFLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxHQUNDLENBQUMsQ0FBQyxDQUFDO2FBQ0osU0FBUyxFQUFPO2FBQ2hCLElBQUk7Ozs7UUFBQyxJQUFJLENBQUMsRUFBRTs7Z0JBQ1AsR0FBUTtZQUNaLEdBQUcsR0FBRyxJQUFJLENBQUM7WUFDWCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBQzthQUNELEtBQUs7Ozs7UUFBQyxHQUFHLENBQUEsRUFBRTtZQUNWLE9BQU8sR0FBRyxJQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFBLEdBQUcsQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFBLEdBQUcsQ0FBQztRQUN0QyxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7Ozs7O0lBUUQsbUJBQW1CLENBQUMsR0FBVyxFQUFFLFNBQWMsRUFBRSxLQUFXO1FBRTFELElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUzRyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUM7YUFDeEMsU0FBUyxFQUFPO2FBQ2hCLElBQUk7Ozs7UUFBQyxJQUFJLENBQUMsRUFBRTs7Z0JBQ1AsR0FBUTtZQUNaLEdBQUcsR0FBRyxJQUFJLENBQUM7WUFDWCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBQzthQUNELEtBQUs7Ozs7UUFBQyxHQUFHLENBQUEsRUFBRTtZQUNWLE9BQU8sR0FBRyxJQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFBLEdBQUcsQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFBLEdBQUcsQ0FBQztRQUN0QyxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7OztZQTVGRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7NENBY0ksTUFBTSxTQUFDLGtCQUFrQjtZQXBCckIsVUFBVTtZQUNWLGtCQUFrQjs7Ozs7SUFRekIsaUNBQXFCOzs7Ozs7SUFNckIsdUNBRUM7Ozs7O0lBR0Msa0NBQXVEOzs7OztJQUN2RCxzQ0FBOEI7Ozs7O0lBQzlCLDBDQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBSZXF1ZXN0SW50ZXJjZXB0b3IgfSBmcm9tICcuLi9pbnRlcmNlcHRvcnMvcmVxdWVzdEludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgTmd4aTRDb25maWcsIE5neGk0Q29uZmlnU2VydmljZSB9IGZyb20gJy4uL25neGk0LWR5bmFtaWMtc2VydmljZS5tb2R1bGUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4aTRBdXRoU2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyB0b2tlbjogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBCaeG6v24gdG/DoG4gY+G7pWMgxJHhu4MgbOG6pXkgxJHGsOG7nW5nIGThuqtuXHJcbiAgICogSG/hurdjIGtoYWkgbOG6oWkgxJHGsOG7nW5nIGThuqtuIGzhuqV5IHThu6sgY3NkbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXJ2aWNlVXJsczogYW55ID0ge1xyXG4gICAgQVVUSF9TRVJWRVI6IHRoaXMuY29uZmlnP3RoaXMuY29uZmlnLmF1dGhTZXJ2ZXJVcmw6Jy8nICAvLyBhcGkgeMOhYyB0aOG7sWMgdXNlciwgcGFzcyB2w6AgdG9rZW4sIGFwaVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KE5neGk0Q29uZmlnU2VydmljZSkgcHJpdmF0ZSBjb25maWc6IE5neGk0Q29uZmlnLFxyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSByZXFJbnRlcmNlcHRvcjogUmVxdWVzdEludGVyY2VwdG9yLFxyXG4gICkgeyB9XHJcblxyXG4gIC8vLS0tLS0tLSBDw6FjIGjDoG0gdMawxqFuZyB0w6FjIGThu68gbGnhu4d1IEFQSSByZXNmdWwgduG7m2kgc2VydmVyIC0tLS0vL1xyXG4gIC8qKlxyXG4gICAqIGdldCB1cmwgPT4gcmVxLnBhcmFtU1xyXG4gICAqIEBwYXJhbSB1cmwgXHJcbiAgICogQHBhcmFtIHRva2VuIFxyXG4gICAqIEBwYXJhbSBvcHRpb25zIFxyXG4gICAqL1xyXG4gIGdldER5bmFtaWNVcmwodXJsOiBzdHJpbmcsIHRva2VuPzogYW55LCBvcHRpb25zPzogYW55KSB7XHJcblxyXG4gICAgdGhpcy5yZXFJbnRlcmNlcHRvci5zZXRSZXF1ZXN0VG9rZW4odG9rZW4gJiYgdG9rZW4ubGVuZ3RoID8gdG9rZW4gOiB0b2tlbiAmJiB0aGlzLnRva2VuID8gdGhpcy50b2tlbiA6ICcnKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh1cmwsIG9wdGlvbnMpXHJcbiAgICAgIC50b1Byb21pc2U8YW55PigpXHJcbiAgICAgIC50aGVuKGRhdGEgPT4ge1xyXG4gICAgICAgIGxldCBydG46IGFueTtcclxuICAgICAgICBydG4gPSBkYXRhO1xyXG4gICAgICAgIHJldHVybiBydG47XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaChlcnI9PntcclxuICAgICAgICByZXR1cm4gZXJyJiZlcnIuZXJyb3I/ZXJyLmVycm9yOmVycjtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBwb3N0IGpzb25fZGF0YSA9PiByZXEuanNvbl9kYXRhXHJcbiAgICogQHBhcmFtIHVybCBcclxuICAgKiBAcGFyYW0ganNvbl9kYXRhIFxyXG4gICAqIEBwYXJhbSB0b2tlbiBcclxuICAgKi9cclxuICBwb3N0RHluYW1pY0pzb24odXJsOiBzdHJpbmcsIGpzb25fZGF0YTogT2JqZWN0LCB0b2tlbj86IGFueSkge1xyXG5cclxuICAgIHRoaXMucmVxSW50ZXJjZXB0b3Iuc2V0UmVxdWVzdFRva2VuKHRva2VuICYmIHRva2VuLmxlbmd0aCA/IHRva2VuIDogdG9rZW4gJiYgdGhpcy50b2tlbiA/IHRoaXMudG9rZW4gOiAnJyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KHVybCwgSlNPTi5zdHJpbmdpZnkoXHJcbiAgICAgIGpzb25fZGF0YSxcclxuICAgICAgKGtleSwgdmFsdWUpID0+IHtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSAvLyBLaMO0bmcgY2h1eeG7g24gY8OhYyBnacOhIHRy4buLIG51bGwgbMOqblxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgICAsIDIpKVxyXG4gICAgICAudG9Qcm9taXNlPGFueT4oKVxyXG4gICAgICAudGhlbihkYXRhID0+IHtcclxuICAgICAgICBsZXQgcnRuOiBhbnk7XHJcbiAgICAgICAgcnRuID0gZGF0YTtcclxuICAgICAgICByZXR1cm4gcnRuO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goZXJyPT57XHJcbiAgICAgICAgcmV0dXJuIGVyciYmZXJyLmVycm9yP2Vyci5lcnJvcjplcnI7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogcG9zdCBGb3JtRGF0YSA9PiByZXEuZm9ybV9kYXRhXHJcbiAgICogQHBhcmFtIHVybCBcclxuICAgKiBAcGFyYW0gZm9ybV9kYXRhIEZvcm1EYXRhXHJcbiAgICogQHBhcmFtIHRva2VuIFxyXG4gICAqL1xyXG4gIHBvc3REeW5hbWljRm9ybURhdGEodXJsOiBzdHJpbmcsIGZvcm1fZGF0YTogYW55LCB0b2tlbj86IGFueSkge1xyXG5cclxuICAgIHRoaXMucmVxSW50ZXJjZXB0b3Iuc2V0UmVxdWVzdFRva2VuKHRva2VuICYmIHRva2VuLmxlbmd0aCA/IHRva2VuIDogdG9rZW4gJiYgdGhpcy50b2tlbiA/IHRoaXMudG9rZW4gOiAnJyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KHVybCwgZm9ybV9kYXRhKVxyXG4gICAgICAudG9Qcm9taXNlPGFueT4oKVxyXG4gICAgICAudGhlbihkYXRhID0+IHtcclxuICAgICAgICBsZXQgcnRuOiBhbnk7XHJcbiAgICAgICAgcnRuID0gZGF0YTtcclxuICAgICAgICByZXR1cm4gcnRuO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goZXJyPT57XHJcbiAgICAgICAgcmV0dXJuIGVyciYmZXJyLmVycm9yP2Vyci5lcnJvcjplcnI7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIl19

@@ -11,2 +11,3 @@ /**

export { RequestInterceptor as ɵa } from './lib/interceptors/requestInterceptor';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4aTQtZHluYW1pYy1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4aTQtZHluYW1pYy1zZXJ2aWNlLyIsInNvdXJjZXMiOlsibmd4aTQtZHluYW1pYy1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBSUEsK0dBQWMsVUFBVSxDQUFDO0FBRXpCLE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9uZ3gtaTQnO1xuXG5leHBvcnQge1JlcXVlc3RJbnRlcmNlcHRvciBhcyDJtWF9IGZyb20gJy4vbGliL2ludGVyY2VwdG9ycy9yZXF1ZXN0SW50ZXJjZXB0b3InOyJdfQ==
export { Ngxi4CommonsService as ɵb } from './lib/services/ngxi4-common.service';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4aTQtZHluYW1pYy1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4aTQtZHluYW1pYy1zZXJ2aWNlLyIsInNvdXJjZXMiOlsibmd4aTQtZHluYW1pYy1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBSUEsK0dBQWMsVUFBVSxDQUFDO0FBRXpCLE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0scUNBQXFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbmd4LWk0JztcblxuZXhwb3J0IHtSZXF1ZXN0SW50ZXJjZXB0b3IgYXMgybVhfSBmcm9tICcuL2xpYi9pbnRlcmNlcHRvcnMvcmVxdWVzdEludGVyY2VwdG9yJztcbmV4cG9ydCB7Tmd4aTRDb21tb25zU2VydmljZSBhcyDJtWJ9IGZyb20gJy4vbGliL3NlcnZpY2VzL25neGk0LWNvbW1vbi5zZXJ2aWNlJzsiXX0=

@@ -12,2 +12,3 @@ /**

import { Ngxi4CardDynamicFormComponent } from './cards/ngxi4-card-dynamic-form/ngxi4-card-dynamic-form.component';
import { Ngxi4CommonsService } from './services/ngxi4-common.service';
/**

@@ -46,2 +47,3 @@ * @record

Ngxi4AuthService,
Ngxi4CommonsService,
// xuất bản tham số ???...

@@ -82,2 +84,2 @@ {

export { Ngxi4DynamicServiceModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4aTQtZHluYW1pYy1zZXJ2aWNlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neGk0LWR5bmFtaWMtc2VydmljZS8iLCJzb3VyY2VzIjpbImxpYi9uZ3hpNC1keW5hbWljLXNlcnZpY2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQzs7OztBQUdsSCxpQ0FFQzs7O0lBREMsb0NBQXNCOzs7O0FBR3hCLE1BQU0sS0FBTyxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBYyxhQUFhLENBQUM7QUFFaEY7SUFBQTtJQXVDQSxDQUFDO0lBaEJDLDRCQUE0Qjs7Ozs7O0lBQ3JCLGlDQUFPOzs7Ozs7SUFBZCxVQUFlLE1BQW9CO1FBQ2pDLE9BQU87O1lBRUwsUUFBUSxFQUFFLHlCQUF5QjtZQUNuQyxTQUFTLEVBQUU7Z0JBQ1QsbUJBQW1CO2dCQUNuQixnQkFBZ0I7Z0JBQ2hCLDBCQUEwQjtnQkFDMUI7b0JBQ0UsT0FBTyxFQUFFLGtCQUFrQjtvQkFDM0IsUUFBUSxFQUFFLE1BQU07aUJBQ2pCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7Z0JBdENGLFFBQVEsU0FBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osc0JBQXNCO3dCQUN0Qiw2QkFBNkI7cUJBQzlCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxnQkFBZ0I7d0JBQ2hCLFdBQVcsQ0FBQyxPQUFPLEVBQUU7cUJBQ3RCO29CQUNELFNBQVMsRUFBRTt3QkFDVCw2QkFBNkI7d0JBQzdCOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFFBQVEsRUFBRSxrQkFBa0I7NEJBQzVCLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO29CQUNELE9BQU8sRUFBRTt3QkFDUCxzQkFBc0I7d0JBQ3RCLDZCQUE2QjtxQkFDOUI7aUJBQ0Y7O0lBa0JELGdDQUFDO0NBQUEsQUF2Q0QsSUF1Q0M7U0FqQlkseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIEluamVjdGlvblRva2VuLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5neGk0QXV0aFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL25neGk0LWF1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUsIEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgUmVxdWVzdEludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmNlcHRvcnMvcmVxdWVzdEludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgTmd4aTRDYXJkRHluYW1pY0Zvcm1Db21wb25lbnQgfSBmcm9tICcuL2NhcmRzL25neGk0LWNhcmQtZHluYW1pYy1mb3JtL25neGk0LWNhcmQtZHluYW1pYy1mb3JtLmNvbXBvbmVudCc7XHJcblxyXG4vLyBD4bqldSBow6xuaCB0aGFtIHPhu5EgxJHhuqd1IHbDoG8sIG5nxrDhu51pIGTDuW5nIGtoYWkgYsOhb1xyXG5leHBvcnQgaW50ZXJmYWNlIE5neGk0Q29uZmlnIHtcclxuICBhdXRoU2VydmVyVXJsOiBzdHJpbmc7ICAvLyB2w60gZOG7pTogxJHGsOG7nW5nIGThuqtuIGPGoSBz4bufIGPhu6dhIGThu4tjaCB24bulIHjDoWMgdGjhu7FjXHJcbn1cclxuLy8gROG7i2NoIHbhu6UgdGnDqm0gdGhhbSBz4buRIHh14buRbmcgY2hvIGPDoWMgZOG7i2NoIHbhu6UgYsOqbiBkxrDhu5tpXHJcbmV4cG9ydCBjb25zdCBOZ3hpNENvbmZpZ1NlcnZpY2UgPSBuZXcgSW5qZWN0aW9uVG9rZW48Tmd4aTRDb25maWc+KCdOZ3hpNENvbmZpZycpO1xyXG4gXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAvLyBraGFpIGLDoW8gdGjDoG5oIHBo4bqnblxyXG4gICAgTmd4aTRDYXJkRHluYW1pY0Zvcm1Db21wb25lbnRcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEh0dHBDbGllbnRNb2R1bGUsIC8vIMSR4buDIGdpYW8gdGnhur9wIGFwaVxyXG4gICAgSW9uaWNNb2R1bGUuZm9yUm9vdCgpXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIC8vIE5ow7puZyBi4bqjbyBt4bqtdCBpbnRlcmNlcHRvcnNcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXHJcbiAgICAgIHVzZUNsYXNzOiBSZXF1ZXN0SW50ZXJjZXB0b3IsXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICAvLyB4deG6pXQgYuG6o24gdGjDoG5oIHBo4bqnblxyXG4gICAgTmd4aTRDYXJkRHluYW1pY0Zvcm1Db21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hpNER5bmFtaWNTZXJ2aWNlTW9kdWxlIHsgXHJcbiAgLy8gQ+G6pXUgaMOsbmgga2jhu59pIHThuqFvIGThu4tjaCB24bulXHJcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnPzogTmd4aTRDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC8vIHh14bqldCBi4bqjbiBtb2R1bGVcclxuICAgICAgbmdNb2R1bGU6IE5neGk0RHluYW1pY1NlcnZpY2VNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIC8vIHh14bqldCBi4bqjbiBk4buLY2ggduG7pVxyXG4gICAgICAgIE5neGk0QXV0aFNlcnZpY2UsXHJcbiAgICAgICAgLy8geHXhuqV0IGLhuqNuIHRoYW0gc+G7kSA/Pz8uLi5cclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBOZ3hpNENvbmZpZ1NlcnZpY2UsXHJcbiAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4aTQtZHluYW1pYy1zZXJ2aWNlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neGk0LWR5bmFtaWMtc2VydmljZS8iLCJzb3VyY2VzIjpbImxpYi9uZ3hpNC1keW5hbWljLXNlcnZpY2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQUd0RSxpQ0FFQzs7O0lBREMsb0NBQXNCOzs7O0FBR3hCLE1BQU0sS0FBTyxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBYyxhQUFhLENBQUM7QUFFaEY7SUFBQTtJQXdDQSxDQUFDO0lBakJDLDRCQUE0Qjs7Ozs7O0lBQ3JCLGlDQUFPOzs7Ozs7SUFBZCxVQUFlLE1BQW9CO1FBQ2pDLE9BQU87O1lBRUwsUUFBUSxFQUFFLHlCQUF5QjtZQUNuQyxTQUFTLEVBQUU7Z0JBQ1QsbUJBQW1CO2dCQUNuQixnQkFBZ0I7Z0JBQ2hCLG1CQUFtQjtnQkFDbkIsMEJBQTBCO2dCQUMxQjtvQkFDRSxPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixRQUFRLEVBQUUsTUFBTTtpQkFDakI7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDOztnQkF2Q0YsUUFBUSxTQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixzQkFBc0I7d0JBQ3RCLDZCQUE2QjtxQkFDOUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGdCQUFnQjt3QkFDaEIsV0FBVyxDQUFDLE9BQU8sRUFBRTtxQkFDdEI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULDZCQUE2Qjt3QkFDN0I7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsUUFBUSxFQUFFLGtCQUFrQjs0QkFDNUIsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHNCQUFzQjt3QkFDdEIsNkJBQTZCO3FCQUM5QjtpQkFDRjs7SUFtQkQsZ0NBQUM7Q0FBQSxBQXhDRCxJQXdDQztTQWxCWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgSW5qZWN0aW9uVG9rZW4sIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmd4aTRBdXRoU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbmd4aTQtYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSwgSFRUUF9JTlRFUkNFUFRPUlMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBSZXF1ZXN0SW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyY2VwdG9ycy9yZXF1ZXN0SW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBOZ3hpNENhcmREeW5hbWljRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY2FyZHMvbmd4aTQtY2FyZC1keW5hbWljLWZvcm0vbmd4aTQtY2FyZC1keW5hbWljLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmd4aTRDb21tb25zU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbmd4aTQtY29tbW9uLnNlcnZpY2UnO1xyXG5cclxuLy8gQ+G6pXUgaMOsbmggdGhhbSBz4buRIMSR4bqndSB2w6BvLCBuZ8aw4budaSBkw7luZyBraGFpIGLDoW9cclxuZXhwb3J0IGludGVyZmFjZSBOZ3hpNENvbmZpZyB7XHJcbiAgYXV0aFNlcnZlclVybDogc3RyaW5nOyAgLy8gdsOtIGThu6U6IMSRxrDhu51uZyBk4bqrbiBjxqEgc+G7nyBj4bunYSBk4buLY2ggduG7pSB4w6FjIHRo4buxY1xyXG59XHJcbi8vIEThu4tjaCB24bulIHRpw6ptIHRoYW0gc+G7kSB4deG7kW5nIGNobyBjw6FjIGThu4tjaCB24bulIGLDqm4gZMaw4bubaVxyXG5leHBvcnQgY29uc3QgTmd4aTRDb25maWdTZXJ2aWNlID0gbmV3IEluamVjdGlvblRva2VuPE5neGk0Q29uZmlnPignTmd4aTRDb25maWcnKTtcclxuIFxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgLy8ga2hhaSBiw6FvIHRow6BuaCBwaOG6p25cclxuICAgIE5neGk0Q2FyZER5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlLCAvLyDEkeG7gyBnaWFvIHRp4bq/cCBhcGlcclxuICAgIElvbmljTW9kdWxlLmZvclJvb3QoKVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICAvLyBOaMO6bmcgYuG6o28gbeG6rXQgaW50ZXJjZXB0b3JzXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxyXG4gICAgICB1c2VDbGFzczogUmVxdWVzdEludGVyY2VwdG9yLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgLy8geHXhuqV0IGLhuqNuIHRow6BuaCBwaOG6p25cclxuICAgIE5neGk0Q2FyZER5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4aTREeW5hbWljU2VydmljZU1vZHVsZSB7IFxyXG4gIC8vIEPhuqV1IGjDrG5oIGto4bufaSB04bqhbyBk4buLY2ggduG7pVxyXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IE5neGk0Q29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAvLyB4deG6pXQgYuG6o24gbW9kdWxlXHJcbiAgICAgIG5nTW9kdWxlOiBOZ3hpNER5bmFtaWNTZXJ2aWNlTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAvLyB4deG6pXQgYuG6o24gZOG7i2NoIHbhu6VcclxuICAgICAgICBOZ3hpNEF1dGhTZXJ2aWNlLFxyXG4gICAgICAgIE5neGk0Q29tbW9uc1NlcnZpY2UsXHJcbiAgICAgICAgLy8geHXhuqV0IGLhuqNuIHRoYW0gc+G7kSA/Pz8uLi5cclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBOZ3hpNENvbmZpZ1NlcnZpY2UsXHJcbiAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=

@@ -64,2 +64,9 @@ /**

return rtn;
}))
.catch((/**
* @param {?} err
* @return {?}
*/
function (err) {
return err && err.error ? err.error : err;
}));

@@ -110,2 +117,9 @@ };

return rtn;
}))
.catch((/**
* @param {?} err
* @return {?}
*/
function (err) {
return err && err.error ? err.error : err;
}));

@@ -146,2 +160,9 @@ };

return rtn;
}))
.catch((/**
* @param {?} err
* @return {?}
*/
function (err) {
return err && err.error ? err.error : err;
}));

@@ -189,2 +210,2 @@ };

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4aTQtYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4aTQtZHluYW1pYy1zZXJ2aWNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL25neGk0LWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQWUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7QUFFbEY7SUFlRSwwQkFDc0MsTUFBbUIsRUFDL0MsVUFBc0IsRUFDdEIsY0FBa0M7UUFGTixXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQy9DLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQW9COzs7OztRQVByQyxnQkFBVyxHQUFRO1lBQ3hCLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFBLENBQUMsQ0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQSxDQUFDLENBQUEsR0FBRyxDQUFFLHdDQUF3QztTQUNqRyxDQUFBO0lBTUcsQ0FBQztJQUVMLGdFQUFnRTtJQUNoRTs7Ozs7T0FLRzs7Ozs7Ozs7O0lBQ0gsd0NBQWE7Ozs7Ozs7OztJQUFiLFVBQWMsR0FBVyxFQUFFLEtBQVcsRUFBRSxPQUFhO1FBRW5ELElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUzRyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUM7YUFDckMsU0FBUyxFQUFPO2FBQ2hCLElBQUk7Ozs7UUFBQyxVQUFBLElBQUk7O2dCQUNKLEdBQVE7WUFDWixHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQ1gsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7T0FLRzs7Ozs7Ozs7SUFDSCwwQ0FBZTs7Ozs7OztJQUFmLFVBQWdCLEdBQVcsRUFBRSxTQUFpQixFQUFFLEtBQVc7UUFFekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTNHLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQzdDLFNBQVM7Ozs7O1FBQ1QsVUFBQyxHQUFHLEVBQUUsS0FBSztZQUNULElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtnQkFBRSxPQUFPLFNBQVMsQ0FBQzthQUFFLENBQUMsb0NBQW9DO1lBQzlFLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxHQUNDLENBQUMsQ0FBQyxDQUFDO2FBQ0osU0FBUyxFQUFPO2FBQ2hCLElBQUk7Ozs7UUFBQyxVQUFBLElBQUk7O2dCQUNKLEdBQVE7WUFDWixHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQ1gsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7T0FLRzs7Ozs7Ozs7SUFDSCw4Q0FBbUI7Ozs7Ozs7SUFBbkIsVUFBb0IsR0FBVyxFQUFFLFNBQWMsRUFBRSxLQUFXO1FBRTFELElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUzRyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUM7YUFDeEMsU0FBUyxFQUFPO2FBQ2hCLElBQUk7Ozs7UUFBQyxVQUFBLElBQUk7O2dCQUNKLEdBQVE7WUFDWixHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQ1gsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7O2dCQW5GRixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7O2dEQWNJLE1BQU0sU0FBQyxrQkFBa0I7Z0JBcEJyQixVQUFVO2dCQUNWLGtCQUFrQjs7OzJCQUYzQjtDQTBGQyxBQXJGRCxJQXFGQztTQWxGWSxnQkFBZ0I7OztJQUUzQixpQ0FBcUI7Ozs7OztJQU1yQix1Q0FFQzs7Ozs7SUFHQyxrQ0FBdUQ7Ozs7O0lBQ3ZELHNDQUE4Qjs7Ozs7SUFDOUIsMENBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFJlcXVlc3RJbnRlcmNlcHRvciB9IGZyb20gJy4uL2ludGVyY2VwdG9ycy9yZXF1ZXN0SW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBOZ3hpNENvbmZpZywgTmd4aTRDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vbmd4aTQtZHluYW1pYy1zZXJ2aWNlLm1vZHVsZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hpNEF1dGhTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIHRva2VuOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJp4bq/biB0b8OgbiBj4bulYyDEkeG7gyBs4bqleSDEkcaw4budbmcgZOG6q25cclxuICAgKiBIb+G6t2Mga2hhaSBs4bqhaSDEkcaw4budbmcgZOG6q24gbOG6pXkgdOG7qyBjc2RsXHJcbiAgICovXHJcbiAgcHVibGljIHNlcnZpY2VVcmxzOiBhbnkgPSB7XHJcbiAgICBBVVRIX1NFUlZFUjogdGhpcy5jb25maWc/dGhpcy5jb25maWcuYXV0aFNlcnZlclVybDonLycgIC8vIGFwaSB4w6FjIHRo4buxYyB1c2VyLCBwYXNzIHbDoCB0b2tlbiwgYXBpXHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoTmd4aTRDb25maWdTZXJ2aWNlKSBwcml2YXRlIGNvbmZpZzogTmd4aTRDb25maWcsXHJcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHJlcUludGVyY2VwdG9yOiBSZXF1ZXN0SW50ZXJjZXB0b3IsXHJcbiAgKSB7IH1cclxuXHJcbiAgLy8tLS0tLS0tIEPDoWMgaMOgbSB0xrDGoW5nIHTDoWMgZOG7ryBsaeG7h3UgQVBJIHJlc2Z1bCB24bubaSBzZXJ2ZXIgLS0tLS8vXHJcbiAgLyoqXHJcbiAgICogZ2V0IHVybCA9PiByZXEucGFyYW1TXHJcbiAgICogQHBhcmFtIHVybCBcclxuICAgKiBAcGFyYW0gdG9rZW4gXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgXHJcbiAgICovXHJcbiAgZ2V0RHluYW1pY1VybCh1cmw6IHN0cmluZywgdG9rZW4/OiBhbnksIG9wdGlvbnM/OiBhbnkpIHtcclxuXHJcbiAgICB0aGlzLnJlcUludGVyY2VwdG9yLnNldFJlcXVlc3RUb2tlbih0b2tlbiAmJiB0b2tlbi5sZW5ndGggPyB0b2tlbiA6IHRva2VuICYmIHRoaXMudG9rZW4gPyB0aGlzLnRva2VuIDogJycpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KHVybCwgb3B0aW9ucylcclxuICAgICAgLnRvUHJvbWlzZTxhbnk+KClcclxuICAgICAgLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgICAgbGV0IHJ0bjogYW55O1xyXG4gICAgICAgIHJ0biA9IGRhdGE7XHJcbiAgICAgICAgcmV0dXJuIHJ0bjtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBwb3N0IGpzb25fZGF0YSA9PiByZXEuanNvbl9kYXRhXHJcbiAgICogQHBhcmFtIHVybCBcclxuICAgKiBAcGFyYW0ganNvbl9kYXRhIFxyXG4gICAqIEBwYXJhbSB0b2tlbiBcclxuICAgKi9cclxuICBwb3N0RHluYW1pY0pzb24odXJsOiBzdHJpbmcsIGpzb25fZGF0YTogT2JqZWN0LCB0b2tlbj86IGFueSkge1xyXG5cclxuICAgIHRoaXMucmVxSW50ZXJjZXB0b3Iuc2V0UmVxdWVzdFRva2VuKHRva2VuICYmIHRva2VuLmxlbmd0aCA/IHRva2VuIDogdG9rZW4gJiYgdGhpcy50b2tlbiA/IHRoaXMudG9rZW4gOiAnJyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KHVybCwgSlNPTi5zdHJpbmdpZnkoXHJcbiAgICAgIGpzb25fZGF0YSxcclxuICAgICAgKGtleSwgdmFsdWUpID0+IHtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSAvLyBLaMO0bmcgY2h1eeG7g24gY8OhYyBnacOhIHRy4buLIG51bGwgbMOqblxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgICAsIDIpKVxyXG4gICAgICAudG9Qcm9taXNlPGFueT4oKVxyXG4gICAgICAudGhlbihkYXRhID0+IHtcclxuICAgICAgICBsZXQgcnRuOiBhbnk7XHJcbiAgICAgICAgcnRuID0gZGF0YTtcclxuICAgICAgICByZXR1cm4gcnRuO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHBvc3QgRm9ybURhdGEgPT4gcmVxLmZvcm1fZGF0YVxyXG4gICAqIEBwYXJhbSB1cmwgXHJcbiAgICogQHBhcmFtIGZvcm1fZGF0YSBGb3JtRGF0YVxyXG4gICAqIEBwYXJhbSB0b2tlbiBcclxuICAgKi9cclxuICBwb3N0RHluYW1pY0Zvcm1EYXRhKHVybDogc3RyaW5nLCBmb3JtX2RhdGE6IGFueSwgdG9rZW4/OiBhbnkpIHtcclxuXHJcbiAgICB0aGlzLnJlcUludGVyY2VwdG9yLnNldFJlcXVlc3RUb2tlbih0b2tlbiAmJiB0b2tlbi5sZW5ndGggPyB0b2tlbiA6IHRva2VuICYmIHRoaXMudG9rZW4gPyB0aGlzLnRva2VuIDogJycpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdCh1cmwsIGZvcm1fZGF0YSlcclxuICAgICAgLnRvUHJvbWlzZTxhbnk+KClcclxuICAgICAgLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgICAgbGV0IHJ0bjogYW55O1xyXG4gICAgICAgIHJ0biA9IGRhdGE7XHJcbiAgICAgICAgcmV0dXJuIHJ0bjtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4aTQtYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4aTQtZHluYW1pYy1zZXJ2aWNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL25neGk0LWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQWUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7QUFFbEY7SUFlRSwwQkFDc0MsTUFBbUIsRUFDL0MsVUFBc0IsRUFDdEIsY0FBa0M7UUFGTixXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQy9DLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQW9COzs7OztRQVByQyxnQkFBVyxHQUFRO1lBQ3hCLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFBLENBQUMsQ0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQSxDQUFDLENBQUEsR0FBRyxDQUFFLHdDQUF3QztTQUNqRyxDQUFBO0lBTUcsQ0FBQztJQUVMLGdFQUFnRTtJQUNoRTs7Ozs7T0FLRzs7Ozs7Ozs7O0lBQ0gsd0NBQWE7Ozs7Ozs7OztJQUFiLFVBQWMsR0FBVyxFQUFFLEtBQVcsRUFBRSxPQUFhO1FBRW5ELElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUzRyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUM7YUFDckMsU0FBUyxFQUFPO2FBQ2hCLElBQUk7Ozs7UUFBQyxVQUFBLElBQUk7O2dCQUNKLEdBQVE7WUFDWixHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQ1gsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUM7YUFDRCxLQUFLOzs7O1FBQUMsVUFBQSxHQUFHO1lBQ1IsT0FBTyxHQUFHLElBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQSxDQUFDLENBQUEsR0FBRyxDQUFDLEtBQUssQ0FBQSxDQUFDLENBQUEsR0FBRyxDQUFDO1FBQ3RDLENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHOzs7Ozs7OztJQUNILDBDQUFlOzs7Ozs7O0lBQWYsVUFBZ0IsR0FBVyxFQUFFLFNBQWlCLEVBQUUsS0FBVztRQUV6RCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFM0csT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FDN0MsU0FBUzs7Ozs7UUFDVCxVQUFDLEdBQUcsRUFBRSxLQUFLO1lBQ1QsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO2dCQUFFLE9BQU8sU0FBUyxDQUFDO2FBQUUsQ0FBQyxvQ0FBb0M7WUFDOUUsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLEdBQ0MsQ0FBQyxDQUFDLENBQUM7YUFDSixTQUFTLEVBQU87YUFDaEIsSUFBSTs7OztRQUFDLFVBQUEsSUFBSTs7Z0JBQ0osR0FBUTtZQUNaLEdBQUcsR0FBRyxJQUFJLENBQUM7WUFDWCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBQzthQUNELEtBQUs7Ozs7UUFBQyxVQUFBLEdBQUc7WUFDUixPQUFPLEdBQUcsSUFBRSxHQUFHLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQSxHQUFHLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQSxHQUFHLENBQUM7UUFDdEMsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7O09BS0c7Ozs7Ozs7O0lBQ0gsOENBQW1COzs7Ozs7O0lBQW5CLFVBQW9CLEdBQVcsRUFBRSxTQUFjLEVBQUUsS0FBVztRQUUxRCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFM0csT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDO2FBQ3hDLFNBQVMsRUFBTzthQUNoQixJQUFJOzs7O1FBQUMsVUFBQSxJQUFJOztnQkFDSixHQUFRO1lBQ1osR0FBRyxHQUFHLElBQUksQ0FBQztZQUNYLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFDO2FBQ0QsS0FBSzs7OztRQUFDLFVBQUEsR0FBRztZQUNSLE9BQU8sR0FBRyxJQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFBLEdBQUcsQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFBLEdBQUcsQ0FBQztRQUN0QyxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7O2dCQTVGRixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7O2dEQWNJLE1BQU0sU0FBQyxrQkFBa0I7Z0JBcEJyQixVQUFVO2dCQUNWLGtCQUFrQjs7OzJCQUYzQjtDQW1HQyxBQTlGRCxJQThGQztTQTNGWSxnQkFBZ0I7OztJQUUzQixpQ0FBcUI7Ozs7OztJQU1yQix1Q0FFQzs7Ozs7SUFHQyxrQ0FBdUQ7Ozs7O0lBQ3ZELHNDQUE4Qjs7Ozs7SUFDOUIsMENBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFJlcXVlc3RJbnRlcmNlcHRvciB9IGZyb20gJy4uL2ludGVyY2VwdG9ycy9yZXF1ZXN0SW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBOZ3hpNENvbmZpZywgTmd4aTRDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vbmd4aTQtZHluYW1pYy1zZXJ2aWNlLm1vZHVsZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hpNEF1dGhTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIHRva2VuOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJp4bq/biB0b8OgbiBj4bulYyDEkeG7gyBs4bqleSDEkcaw4budbmcgZOG6q25cclxuICAgKiBIb+G6t2Mga2hhaSBs4bqhaSDEkcaw4budbmcgZOG6q24gbOG6pXkgdOG7qyBjc2RsXHJcbiAgICovXHJcbiAgcHVibGljIHNlcnZpY2VVcmxzOiBhbnkgPSB7XHJcbiAgICBBVVRIX1NFUlZFUjogdGhpcy5jb25maWc/dGhpcy5jb25maWcuYXV0aFNlcnZlclVybDonLycgIC8vIGFwaSB4w6FjIHRo4buxYyB1c2VyLCBwYXNzIHbDoCB0b2tlbiwgYXBpXHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoTmd4aTRDb25maWdTZXJ2aWNlKSBwcml2YXRlIGNvbmZpZzogTmd4aTRDb25maWcsXHJcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHJlcUludGVyY2VwdG9yOiBSZXF1ZXN0SW50ZXJjZXB0b3IsXHJcbiAgKSB7IH1cclxuXHJcbiAgLy8tLS0tLS0tIEPDoWMgaMOgbSB0xrDGoW5nIHTDoWMgZOG7ryBsaeG7h3UgQVBJIHJlc2Z1bCB24bubaSBzZXJ2ZXIgLS0tLS8vXHJcbiAgLyoqXHJcbiAgICogZ2V0IHVybCA9PiByZXEucGFyYW1TXHJcbiAgICogQHBhcmFtIHVybCBcclxuICAgKiBAcGFyYW0gdG9rZW4gXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgXHJcbiAgICovXHJcbiAgZ2V0RHluYW1pY1VybCh1cmw6IHN0cmluZywgdG9rZW4/OiBhbnksIG9wdGlvbnM/OiBhbnkpIHtcclxuXHJcbiAgICB0aGlzLnJlcUludGVyY2VwdG9yLnNldFJlcXVlc3RUb2tlbih0b2tlbiAmJiB0b2tlbi5sZW5ndGggPyB0b2tlbiA6IHRva2VuICYmIHRoaXMudG9rZW4gPyB0aGlzLnRva2VuIDogJycpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KHVybCwgb3B0aW9ucylcclxuICAgICAgLnRvUHJvbWlzZTxhbnk+KClcclxuICAgICAgLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgICAgbGV0IHJ0bjogYW55O1xyXG4gICAgICAgIHJ0biA9IGRhdGE7XHJcbiAgICAgICAgcmV0dXJuIHJ0bjtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGVycj0+e1xyXG4gICAgICAgIHJldHVybiBlcnImJmVyci5lcnJvcj9lcnIuZXJyb3I6ZXJyO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHBvc3QganNvbl9kYXRhID0+IHJlcS5qc29uX2RhdGFcclxuICAgKiBAcGFyYW0gdXJsIFxyXG4gICAqIEBwYXJhbSBqc29uX2RhdGEgXHJcbiAgICogQHBhcmFtIHRva2VuIFxyXG4gICAqL1xyXG4gIHBvc3REeW5hbWljSnNvbih1cmw6IHN0cmluZywganNvbl9kYXRhOiBPYmplY3QsIHRva2VuPzogYW55KSB7XHJcblxyXG4gICAgdGhpcy5yZXFJbnRlcmNlcHRvci5zZXRSZXF1ZXN0VG9rZW4odG9rZW4gJiYgdG9rZW4ubGVuZ3RoID8gdG9rZW4gOiB0b2tlbiAmJiB0aGlzLnRva2VuID8gdGhpcy50b2tlbiA6ICcnKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QodXJsLCBKU09OLnN0cmluZ2lmeShcclxuICAgICAganNvbl9kYXRhLFxyXG4gICAgICAoa2V5LCB2YWx1ZSkgPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IC8vIEtow7RuZyBjaHV54buDbiBjw6FjIGdpw6EgdHLhu4sgbnVsbCBsw6puXHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgICwgMikpXHJcbiAgICAgIC50b1Byb21pc2U8YW55PigpXHJcbiAgICAgIC50aGVuKGRhdGEgPT4ge1xyXG4gICAgICAgIGxldCBydG46IGFueTtcclxuICAgICAgICBydG4gPSBkYXRhO1xyXG4gICAgICAgIHJldHVybiBydG47XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaChlcnI9PntcclxuICAgICAgICByZXR1cm4gZXJyJiZlcnIuZXJyb3I/ZXJyLmVycm9yOmVycjtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBwb3N0IEZvcm1EYXRhID0+IHJlcS5mb3JtX2RhdGFcclxuICAgKiBAcGFyYW0gdXJsIFxyXG4gICAqIEBwYXJhbSBmb3JtX2RhdGEgRm9ybURhdGFcclxuICAgKiBAcGFyYW0gdG9rZW4gXHJcbiAgICovXHJcbiAgcG9zdER5bmFtaWNGb3JtRGF0YSh1cmw6IHN0cmluZywgZm9ybV9kYXRhOiBhbnksIHRva2VuPzogYW55KSB7XHJcblxyXG4gICAgdGhpcy5yZXFJbnRlcmNlcHRvci5zZXRSZXF1ZXN0VG9rZW4odG9rZW4gJiYgdG9rZW4ubGVuZ3RoID8gdG9rZW4gOiB0b2tlbiAmJiB0aGlzLnRva2VuID8gdGhpcy50b2tlbiA6ICcnKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QodXJsLCBmb3JtX2RhdGEpXHJcbiAgICAgIC50b1Byb21pc2U8YW55PigpXHJcbiAgICAgIC50aGVuKGRhdGEgPT4ge1xyXG4gICAgICAgIGxldCBydG46IGFueTtcclxuICAgICAgICBydG4gPSBkYXRhO1xyXG4gICAgICAgIHJldHVybiBydG47XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaChlcnI9PntcclxuICAgICAgICByZXR1cm4gZXJyJiZlcnIuZXJyb3I/ZXJyLmVycm9yOmVycjtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=

@@ -11,2 +11,3 @@ /**

export { RequestInterceptor as ɵa } from './lib/interceptors/requestInterceptor';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4aTQtZHluYW1pYy1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4aTQtZHluYW1pYy1zZXJ2aWNlLyIsInNvdXJjZXMiOlsibmd4aTQtZHluYW1pYy1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBSUEsK0dBQWMsVUFBVSxDQUFDO0FBRXpCLE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9uZ3gtaTQnO1xuXG5leHBvcnQge1JlcXVlc3RJbnRlcmNlcHRvciBhcyDJtWF9IGZyb20gJy4vbGliL2ludGVyY2VwdG9ycy9yZXF1ZXN0SW50ZXJjZXB0b3InOyJdfQ==
export { Ngxi4CommonsService as ɵb } from './lib/services/ngxi4-common.service';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4aTQtZHluYW1pYy1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4aTQtZHluYW1pYy1zZXJ2aWNlLyIsInNvdXJjZXMiOlsibmd4aTQtZHluYW1pYy1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBSUEsK0dBQWMsVUFBVSxDQUFDO0FBRXpCLE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0scUNBQXFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbmd4LWk0JztcblxuZXhwb3J0IHtSZXF1ZXN0SW50ZXJjZXB0b3IgYXMgybVhfSBmcm9tICcuL2xpYi9pbnRlcmNlcHRvcnMvcmVxdWVzdEludGVyY2VwdG9yJztcbmV4cG9ydCB7Tmd4aTRDb21tb25zU2VydmljZSBhcyDJtWJ9IGZyb20gJy4vbGliL3NlcnZpY2VzL25neGk0LWNvbW1vbi5zZXJ2aWNlJzsiXX0=

@@ -1,2 +0,2 @@

import { Injectable, ɵɵdefineInjectable, Component, InjectionToken, NgModule, Inject, ɵɵinject } from '@angular/core';
import { Injectable, ɵɵdefineInjectable, Component, ɵɵinject, InjectionToken, NgModule, Inject } from '@angular/core';
import { HttpClientModule, HTTP_INTERCEPTORS, HttpClient } from '@angular/common/http';

@@ -6,3 +6,4 @@ import { HttpResponse } from '@angular/common/http/';

import { map, catchError } from 'rxjs/operators';
import { IonicModule } from '@ionic/angular';
import { ModalController, AlertController, LoadingController, ToastController, IonicModule } from '@ionic/angular';
import { __awaiter } from 'tslib';

@@ -90,2 +91,738 @@ /**

* @fileoverview added by tsickle
* Generated from: lib/services/ngxi4-common.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class Ngxi4CommonsService {
/**
* @param {?} modalCtrl
* @param {?} alertCtrl
* @param {?} loadingCtrl
* @param {?} toastCtrl
*/
constructor(modalCtrl, alertCtrl, loadingCtrl, toastCtrl) {
this.modalCtrl = modalCtrl;
this.alertCtrl = alertCtrl;
this.loadingCtrl = loadingCtrl;
this.toastCtrl = toastCtrl;
this.c = new Map();
//----- Các hàm chuyển đổi cây có cấu trúc như oracle... --//
/**
* Sắp xếp thứ tự theo alphabe tiếng việt, quốc tế
* @param arr
* @param key
*/
this.orderArrayObjects = (/**
* @param {?} arr
* @param {?} keys
* @return {?}
*/
(arr, keys) => {
return arr.sort((/**
* @param {?} a
* @param {?} b
* @return {?}
*/
function (a, b) {
if (Array.isArray(keys)) {
// Nếu có nhiều key thì duyệt và so sánh từng key
/** @type {?} */
let idx = 0;
// Lấy key đầu tiên, nếu == thì xét tiếp key tiếp theo
/** @type {?} */
let orderReturn = Intl.Collator().compare(a[keys[idx]], b[keys[idx]]);
while (orderReturn === 0 && idx <= keys.length) { //bug fix 08/11/2019 Lỗi vòng lặp vô hạn
idx++;
orderReturn = Intl.Collator().compare(a[keys[idx]], b[keys[idx]]);
console.log('orderReturn', orderReturn);
}
// trường hợp > hoặc < thì nhảy ra ko cần so sánh tiếp làm gì
return orderReturn;
}
else {
// Nếu chỉ có một keys thì so sánh ngay
return Intl.Collator().compare(a[keys], b[keys]);
}
}));
});
/**
* Tự tính trọng số thành phần, gán trọng số cha, trọng số con, và trọng số so với root
*
* @param arrIn // mảng dữ liệu đầu vào
* @param idKey // tên trường đánh mã duy nhất
* @param parentKey // tên trường liên hệ mã cấp trên
* @param weightKey // tên trường chứa trọng số
* @param startWith // lấy giá trị ban đầu (nếu có)
* @param level // lấy độ sâu (nếu có)
* @param rootWeight // Lấy trọng số cấp trên (nếu có)
* @param arrOut // biến dữ liệu ra (nếu có)
* @param parentIndex // Biến cấu trúc cây (nếu có)
*/
this.createTreeWeight = (/**
* @param {?} arrIn
* @param {?} idKey
* @param {?} parentKey
* @param {?} weightKey
* @param {?} startWith
* @param {?=} level
* @param {?=} rootWeight
* @param {?=} arrOut
* @param {?=} parentIndex
* @return {?}
*/
(arrIn, idKey, parentKey, weightKey, startWith, level, rootWeight, arrOut, parentIndex) => {
/** @type {?} */
let arrReturns = arrOut ? arrOut : [];
//sắp xếp lại
/** @type {?} */
let myLevel = level ? level : 1;
if (arrIn && arrIn.length >= arrReturns.length) {
/** @type {?} */
let parents = arrIn.filter((/**
* @param {?} obj
* @return {?}
*/
obj => (obj[parentKey] === startWith)
|| (startWith == null && obj[parentKey] == undefined)
|| (startWith == undefined && obj[parentKey] == null)
|| (startWith == undefined && obj[parentKey] == "")));
if (parents && parents.length > 0) {
//đã có một mãng cùng cấp, hãy tính toán trọng số cho nó
//Tính tổng thành phần của cùng cấp này
/** @type {?} */
let sumWeight = parents.map((/**
* @param {?} o
* @return {?}
*/
(o) => { return o[weightKey]; })).reduce((/**
* @param {?} a
* @param {?} b
* @return {?}
*/
(a, b) => a + b), 0);
parents.forEach((/**
* @param {?} el
* @param {?} idx
* @return {?}
*/
(el, idx) => {
//Tỷ trọng % thành phần
el.$weight_percent = el[weightKey] / sumWeight;
//khi tạo con, trọng số cấp cha phải được ghi xuống cấp con bằng trọng số
el.$parent_weight_percent = rootWeight ? rootWeight : 1;
//giá trị có thể lấy trước đó
//(el.$parent_weight_percent===undefined||el.$parent_weight_percent===null)?1:el.$parent_weight_percent;
//root_weight_percent cấp trên xuống cấp dưới =
//Tỷ trọng % so với gốc
el.$root_weight_percent = el.$parent_weight_percent * el.$weight_percent;
el.$level = myLevel;
el.$index = idx + 1; //ghi số thứ tự trong cùng cấp
el.$tree_index = (parentIndex ? parentIndex + '.' : '') + el.$index; //Ghi số thứ tự theo hình cây
arrReturns.push(el); //gán gốc cây
//tìm tiếp lá cây nếu có thì gán vào
return this.createTreeWeight(arrIn, idKey, parentKey, weightKey, el[idKey], myLevel + 1, el.$root_weight_percent, arrReturns, el.$tree_index);
}));
}
else { //đây là lá cây
//đây là lá cây
/** @type {?} */
let objCur = arrReturns.find((/**
* @param {?} obj
* @return {?}
*/
obj => (obj[idKey] === startWith)));
if (objCur)
objCur.$is_leaf = 1;
}
}
return arrReturns;
});
/**
* Tạo cây để sắp xếp trật tự gốc, nhánh, lá
* như mệnh đề trong oracle
* Mục đích để hiển thị thứ tự cây từ trên xuống đúng vị trí của nó
* thêm trường $level để biết độ sâu của lá
* thêm trường $root để biết giá trị root là đâu
*/
this.createTreeOrder = (/**
* @param {?} arrIn
* @param {?} idKey
* @param {?} parentKey
* @param {?=} startWith
* @param {?=} level
* @param {?=} arrOut
* @param {?=} parentIndex
* @param {?=} rootId
* @return {?}
*/
(arrIn, idKey, parentKey, startWith, level, arrOut, parentIndex, rootId) => {
/** @type {?} */
let arrReturns = arrOut ? arrOut : [];
//sắp xếp lại
/** @type {?} */
let myLevel = level ? level : 1;
//bug thêm dấu = để gán $is_leaf bản ghi cuối
if (arrIn && arrIn.length >= arrReturns.length) {
/** @type {?} */
let parents = arrIn.filter((/**
* @param {?} obj
* @return {?}
*/
obj => (obj[parentKey] === startWith)
|| (startWith == null && obj[parentKey] == undefined)
|| (startWith == undefined && obj[parentKey] == null)
|| (startWith == undefined && obj[parentKey] == "")));
if (parents && parents.length > 0) {
parents.forEach((/**
* @param {?} el
* @param {?} idx
* @return {?}
*/
(el, idx) => {
//gán giá trị root khi mới khởi tạo
el.$root = rootId ? rootId : el[idKey];
//hoặc sẽ gán luôn $root cho đến lá cây
el.$level = myLevel;
el.$index = idx + 1; //ghi số thứ tự trong cùng cấp
el.$tree_index = (parentIndex ? parentIndex + '.' : '') + el.$index; //ghi số thứ tự trong cùng cấp
arrReturns.push(el); //gán gốc cây
//tìm tiếp lá cây nếu có thì gán vào
return this.createTreeOrder(arrIn, idKey, parentKey, el[idKey], myLevel + 1, arrReturns, el.$tree_index, el.$root);
}));
}
else { //đây là lá cây
//đây là lá cây
/** @type {?} */
let objCur = arrReturns.find((/**
* @param {?} obj
* @return {?}
*/
obj => (obj[idKey] === startWith)));
if (objCur)
objCur.$is_leaf = 1;
}
}
return arrReturns;
});
/**
* Tạo cây có item.subs=[]
* Sử dụng trong hiển thị cấu trúc cây có đệ quy
*/
this.createTreeMenu = (/**
* @param {?} arrIn
* @param {?} idKey
* @param {?} parentKey
* @param {?=} startWith
* @param {?=} level
* @return {?}
*/
(arrIn, idKey, parentKey, startWith, level) => {
/** @type {?} */
let myLevel = level ? level : 1;
/** @type {?} */
var roots = arrIn.filter((/**
* @param {?} x
* @return {?}
*/
x => (x[parentKey] === startWith)
|| (startWith == null && x[parentKey] == undefined)
|| (startWith == undefined && x[parentKey] == null)
|| (startWith == undefined && x[parentKey] == "")));
if (roots && roots.length > 0) {
roots.forEach((/**
* @param {?} el
* @return {?}
*/
el => {
el.$level = myLevel;
//thay đổi gán subs nếu đã có subs trước đó thì không cần tìm nữa
//Phục vụ cho gán các cây con nhiều bảng với nhau
el.subs = el.subs !== undefined ? el.subs : this.createTreeMenu(arrIn, idKey, parentKey, el[idKey], myLevel + 1);
}));
return roots;
}
else {
/** @type {?} */
let leafChildren = arrIn.find((/**
* @param {?} x
* @return {?}
*/
x => x[idKey] === startWith));
if (leafChildren) {
leafChildren.$is_leaf = 1;
}
return undefined; //trả về array không có gì
}
});
//----- Các hàm chuyển đổi dữ liệu như utils của javascript --//
/**
* Tạo thuộc tính cho đối tượng {}
* Đồng thời đếm thuộc tính của đối tượng theo trường length
*/
this.createObjectKey = (/**
* @param {?} obj
* @param {?} key
* @param {?} value
* @return {?}
*/
(obj, key, value) => {
Object.defineProperty(obj, key, { value: value, writable: true, enumerable: true, configurable: true });
// obj.length = Object.keys(obj).length; //obj.length ? obj.length + 1 : 1;
return obj;
});
/**
* Xóa một thuộc tính của đối tượng,
* Yêu cầu thuộc tính của đối tượng khi tạo có
* writable: true, enumerable: true, configurable: true
*/
this.deleteObjectKey = (/**
* @param {?} obj
* @param {?} key
* @return {?}
*/
(obj, key) => {
/** @type {?} */
let del = delete obj[key];
// if (del) obj.length = Object.keys(obj).length;
return obj;
});
/**
* clone đối tượng thành đối tượng mới (sử dụng để gán đối tượng mới)
* @param obj
*/
this.cloneObject = (/**
* @param {?} obj
* @return {?}
*/
(obj) => {
return JSON.parse(JSON.stringify(obj));
});
}
//-- quản lý sự kiện trao đổi dữ liệu giữa các form --//
/**
* Subscribe to an event topic. Events that get posted to that topic will trigger the provided handler.
*
* @param {?} topic the topic to subscribe to
* @param {...?} handlers
* @return {?}
*/
subscribe(topic, ...handlers) {
/** @type {?} */
let topics = this.c.get(topic);
if (!topics) {
this.c.set(topic, topics = []);
}
topics.push(...handlers);
}
/**
* Unsubscribe from the given topic. Your handler will no longer receive events published to this topic.
*
* @param {?} topic the topic to unsubscribe from
* @param {?=} handler the event handler
* @return {?}
*/
unsubscribe(topic, handler) {
if (!handler) {
return this.c.delete(topic);
}
/** @type {?} */
const topics = this.c.get(topic);
if (!topics) {
return false;
}
// We need to find and remove a specific handler
/** @type {?} */
const index = topics.indexOf(handler);
if (index < 0) {
// Wasn't found, wasn't removed
return false;
}
topics.splice(index, 1);
if (topics.length === 0) {
this.c.delete(topic);
}
return true;
}
/**
* Publish an event to the given topic.
*
* @param {?} topic the topic to publish to
* @param {...?} args
* @return {?}
*/
publish(topic, ...args) {
/** @type {?} */
const topics = this.c.get(topic);
if (!topics) {
return null;
}
return topics.map((/**
* @param {?} handler
* @return {?}
*/
handler => {
try {
return handler(...args);
}
catch (e) {
console.error(e);
return null;
}
}));
}
/**
* Trả về dấu ? hoặc dấu & sau khi kiểm tra url có chứa ? chưa
* @param {?} url
* @return {?}
*/
getUrlSeparateParameter(url) { return url.match(/\?/) ? '&' : '?'; }
//----- các hàm dùng chung thông báo -----//
/**
* Hàm hiển thị trạng thái loading
* Do nó được tạo kiểu promise nên phải đợi một thời gian mới tạo ra và mới đóng được
* @param {?} message
* @return {?}
*/
showLoader(message) {
this.loadingCtrl.create({
message: message
}).then((/**
* @param {?} res
* @return {?}
*/
(res) => {
res.present();
res.onDidDismiss().then((/**
* @param {?} dis
* @return {?}
*/
(dis) => {
//console.log('Loading dismissed!', dis);
}));
}));
}
/**
* Hàm gọi ẩn loading nếu trước đó có gọi nó
* @return {?}
*/
hideLoader() {
//console.log('close',this.loadingCtrl);
if (this.loadingCtrl) {
//console.log('closed call');
setTimeout((/**
* @return {?}
*/
() => {
//Đợi 1 giây sau khi load xong mới đóng
//Nếu không, chưa load xong (promise) mà đóng là bị lỗi
//và không bao giờ đóng được
this.loadingCtrl.dismiss();
//console.log('called close');
}), 2000);
}
}
/**
* Mở popup cửa sổ là các trang component hoặc trang lẻ
* @param {?} componentPage //Là trang cần popup lên
* @param {?} navParams //là bộ tham số truyền cho form
* @param {?=} callback
* @return {?}
*/
openModal(componentPage, navParams, callback) {
return new Promise((/**
* @param {?} resolve
* @return {?}
*/
(resolve) => __awaiter(this, void 0, void 0, function* () {
/** @type {?} */
const modal = yield this.modalCtrl.create({
component: componentPage,
componentProps: navParams
});
modal.onDidDismiss().then((/**
* @param {?} dataReturned
* @return {?}
*/
(dataReturned) => {
if (dataReturned && dataReturned.data) {
//dữ liệu sau khi đóng form sẽ lấy được dữ liệu này
//nó trả về mặt định là {data: = dữ liệu trả về, role: undefined}
//console.log('Data return when close popup', dataReturned);
if (callback)
callback(dataReturned.data); //trả dữ liệu cho hàm callback
resolve(dataReturned.data); //đóng lại và trả kết quả
return;
}
resolve(); //Đóng lại nhưng không trả kết quả
}));
yield modal.present();
})));
}
/**
* Đóng cửa sổ popup lại và gửi dữ liệu cho nơi gọi nó
* @param {?=} data //dữ liệu cần trả lại cho nơi gọi trước đó,
* @return {?}
*/
closeModal(data) {
return __awaiter(this, void 0, void 0, function* () {
yield this.modalCtrl.dismiss(data);
});
}
/**
* Gọi cảnh báo hoặc yêu cầu xác nhận một việc gì đó
* @param {?} msg là nội dung tin thông báo dạng html (<br>)
* @param {?=} okText
* @return {?}
*/
presentAlert(msg, okText) {
return new Promise((/**
* @param {?} resolve
* @return {?}
*/
(resolve) => __awaiter(this, void 0, void 0, function* () {
/** @type {?} */
let buttonsReturn = [
{
text: okText ? okText
: 'Đóng lại',
handler: (/**
* @return {?}
*/
() => { resolve("CLOSE"); }) //Đã xác nhận đóng lại
}
];
/** @type {?} */
const alert = yield this.alertCtrl.create({
header: 'CHÚ Ý!',
subHeader: 'Đọc kỹ thông tin sau',
message: msg,
buttons: buttonsReturn
});
yield alert.present();
})));
}
/**
* Xác nhận đồng ý hay không đồng ý
* Trả về OK hoặc null cho promise
* @param {?} msg
* @param {?=} okText
* @param {?=} cancelText
* @return {?}
*/
presentConfirm(msg, okText, cancelText) {
return new Promise((/**
* @param {?} resolve
* @return {?}
*/
(resolve) => __awaiter(this, void 0, void 0, function* () {
/** @type {?} */
let buttonsReturn = [
{
text: cancelText ? cancelText
: 'Bỏ qua',
handler: (/**
* @return {?}
*/
() => { resolve(); }) //Đã xác nhận không đồng ý
},
{
text: okText ? okText
: 'Đồng ý',
handler: (/**
* @return {?}
*/
() => { resolve("OK"); }) //Đã xác nhận đồng ý
}
];
/** @type {?} */
const alert = yield this.alertCtrl.create({
header: 'XÁC NHẬN',
subHeader: 'Đọc kỹ thông tin sau:',
message: msg,
buttons: buttonsReturn
});
yield alert.present();
})));
}
/**
* Hiển thị câu thông báo toast
*
* @param {?} msg
* @param {?=} duration
* @param {?=} color
* @param {?=} position
* @return {?}
*/
showToast(msg, duration, color, position) {
return new Promise((/**
* @param {?} resolve
* @return {?}
*/
resolve => {
this.toastCtrl.create({
message: msg,
duration: duration ? duration : 0,
showCloseButton: duration ? false : true,
position: position ? position : 'middle',
closeButtonText: 'ok',
animated: true,
color: color ? color : 'primary'
}).then((/**
* @param {?} toastData
* @return {?}
*/
(toastData) => {
toastData.present();
toastData.onDidDismiss()
.then((/**
* @param {?} dataReturned
* @return {?}
*/
(dataReturned) => {
//console.log('dataReturned:',dataReturned);
//{data: undefined, role: "cancel"} // or timeout
resolve(dataReturned);
}));
}));
}));
}
/**
* Đóng cửa sổ toast hiển thị bằng tay lại
* @return {?}
*/
hideToast() {
//console.log('close',this.loadingCtrl);
if (this.toastCtrl) {
//console.log('closed call');
setTimeout((/**
* @return {?}
*/
() => {
//Đợi 1 giây sau khi load xong mới đóng
//Nếu không, chưa load xong (promise) mà đóng là bị lỗi
//và không bao giờ đóng được
this.toastCtrl.dismiss();
//console.log('called close');
}), 2000);
}
}
/**
* Hàm đợi số giây để tiếp tục thực thi bước tiếp theo
* @param {?} milisecond
* @return {?}
*/
delay(milisecond) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
(resolve, reject) => {
setTimeout((/**
* @return {?}
*/
() => {
resolve();
}), milisecond);
}));
}
}
Ngxi4CommonsService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
Ngxi4CommonsService.ctorParameters = () => [
{ type: ModalController },
{ type: AlertController },
{ type: LoadingController },
{ type: ToastController }
];
/** @nocollapse */ Ngxi4CommonsService.ngInjectableDef = ɵɵdefineInjectable({ factory: function Ngxi4CommonsService_Factory() { return new Ngxi4CommonsService(ɵɵinject(ModalController), ɵɵinject(AlertController), ɵɵinject(LoadingController), ɵɵinject(ToastController)); }, token: Ngxi4CommonsService, providedIn: "root" });
if (false) {
/**
* @type {?}
* @private
*/
Ngxi4CommonsService.prototype.c;
/**
* Sắp xếp thứ tự theo alphabe tiếng việt, quốc tế
* \@param arr
* \@param key
* @type {?}
*/
Ngxi4CommonsService.prototype.orderArrayObjects;
/**
* Tự tính trọng số thành phần, gán trọng số cha, trọng số con, và trọng số so với root
*
* \@param arrIn // mảng dữ liệu đầu vào
* \@param idKey // tên trường đánh mã duy nhất
* \@param parentKey // tên trường liên hệ mã cấp trên
* \@param weightKey // tên trường chứa trọng số
* \@param startWith // lấy giá trị ban đầu (nếu có)
* \@param level // lấy độ sâu (nếu có)
* \@param rootWeight // Lấy trọng số cấp trên (nếu có)
* \@param arrOut // biến dữ liệu ra (nếu có)
* \@param parentIndex // Biến cấu trúc cây (nếu có)
* @type {?}
*/
Ngxi4CommonsService.prototype.createTreeWeight;
/**
* Tạo cây để sắp xếp trật tự gốc, nhánh, lá
* như mệnh đề trong oracle
* Mục đích để hiển thị thứ tự cây từ trên xuống đúng vị trí của nó
* thêm trường $level để biết độ sâu của lá
* thêm trường $root để biết giá trị root là đâu
* @type {?}
*/
Ngxi4CommonsService.prototype.createTreeOrder;
/**
* Tạo cây có item.subs=[]
* Sử dụng trong hiển thị cấu trúc cây có đệ quy
* @type {?}
*/
Ngxi4CommonsService.prototype.createTreeMenu;
/**
* Tạo thuộc tính cho đối tượng {}
* Đồng thời đếm thuộc tính của đối tượng theo trường length
* @type {?}
*/
Ngxi4CommonsService.prototype.createObjectKey;
/**
* Xóa một thuộc tính của đối tượng,
* Yêu cầu thuộc tính của đối tượng khi tạo có
* writable: true, enumerable: true, configurable: true
* @type {?}
*/
Ngxi4CommonsService.prototype.deleteObjectKey;
/**
* clone đối tượng thành đối tượng mới (sử dụng để gán đối tượng mới)
* \@param obj
* @type {?}
*/
Ngxi4CommonsService.prototype.cloneObject;
/**
* @type {?}
* @private
*/
Ngxi4CommonsService.prototype.modalCtrl;
/**
* @type {?}
* @private
*/
Ngxi4CommonsService.prototype.alertCtrl;
/**
* @type {?}
* @private
*/
Ngxi4CommonsService.prototype.loadingCtrl;
/**
* @type {?}
* @private
*/
Ngxi4CommonsService.prototype.toastCtrl;
}
/**
* @fileoverview added by tsickle
* Generated from: lib/ngxi4-dynamic-service.module.ts

@@ -118,2 +855,3 @@ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc

Ngxi4AuthService,
Ngxi4CommonsService,
// xuất bản tham số ???...

@@ -197,2 +935,9 @@ {

return rtn;
}))
.catch((/**
* @param {?} err
* @return {?}
*/
err => {
return err && err.error ? err.error : err;
}));

@@ -230,2 +975,9 @@ }

return rtn;
}))
.catch((/**
* @param {?} err
* @return {?}
*/
err => {
return err && err.error ? err.error : err;
}));

@@ -253,2 +1005,9 @@ }

return rtn;
}))
.catch((/**
* @param {?} err
* @return {?}
*/
err => {
return err && err.error ? err.error : err;
}));

@@ -307,3 +1066,3 @@ }

export { Ngxi4AuthService, Ngxi4CardDynamicFormComponent, Ngxi4ConfigService, Ngxi4DynamicServiceModule, RequestInterceptor as ɵa };
export { Ngxi4AuthService, Ngxi4CardDynamicFormComponent, Ngxi4ConfigService, Ngxi4DynamicServiceModule, RequestInterceptor as ɵa, Ngxi4CommonsService as ɵb };
//# sourceMappingURL=ngxi4-dynamic-service.js.map

@@ -1,2 +0,2 @@

import { Injectable, ɵɵdefineInjectable, Component, InjectionToken, NgModule, Inject, ɵɵinject } from '@angular/core';
import { Injectable, ɵɵdefineInjectable, Component, ɵɵinject, InjectionToken, NgModule, Inject } from '@angular/core';
import { HttpClientModule, HTTP_INTERCEPTORS, HttpClient } from '@angular/common/http';

@@ -6,3 +6,4 @@ import { HttpResponse } from '@angular/common/http/';

import { map, catchError } from 'rxjs/operators';
import { IonicModule } from '@ionic/angular';
import { ModalController, AlertController, LoadingController, ToastController, IonicModule } from '@ionic/angular';
import { __spread, __awaiter, __generator } from 'tslib';

@@ -111,2 +112,931 @@ /**

* @fileoverview added by tsickle
* Generated from: lib/services/ngxi4-common.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var Ngxi4CommonsService = /** @class */ (function () {
function Ngxi4CommonsService(modalCtrl, alertCtrl, loadingCtrl, toastCtrl) {
var _this = this;
this.modalCtrl = modalCtrl;
this.alertCtrl = alertCtrl;
this.loadingCtrl = loadingCtrl;
this.toastCtrl = toastCtrl;
this.c = new Map();
//----- Các hàm chuyển đổi cây có cấu trúc như oracle... --//
/**
* Sắp xếp thứ tự theo alphabe tiếng việt, quốc tế
* @param arr
* @param key
*/
this.orderArrayObjects = (/**
* @param {?} arr
* @param {?} keys
* @return {?}
*/
function (arr, keys) {
return arr.sort((/**
* @param {?} a
* @param {?} b
* @return {?}
*/
function (a, b) {
if (Array.isArray(keys)) {
// Nếu có nhiều key thì duyệt và so sánh từng key
/** @type {?} */
var idx = 0;
// Lấy key đầu tiên, nếu == thì xét tiếp key tiếp theo
/** @type {?} */
var orderReturn = Intl.Collator().compare(a[keys[idx]], b[keys[idx]]);
while (orderReturn === 0 && idx <= keys.length) { //bug fix 08/11/2019 Lỗi vòng lặp vô hạn
idx++;
orderReturn = Intl.Collator().compare(a[keys[idx]], b[keys[idx]]);
console.log('orderReturn', orderReturn);
}
// trường hợp > hoặc < thì nhảy ra ko cần so sánh tiếp làm gì
return orderReturn;
}
else {
// Nếu chỉ có một keys thì so sánh ngay
return Intl.Collator().compare(a[keys], b[keys]);
}
}));
});
/**
* Tự tính trọng số thành phần, gán trọng số cha, trọng số con, và trọng số so với root
*
* @param arrIn // mảng dữ liệu đầu vào
* @param idKey // tên trường đánh mã duy nhất
* @param parentKey // tên trường liên hệ mã cấp trên
* @param weightKey // tên trường chứa trọng số
* @param startWith // lấy giá trị ban đầu (nếu có)
* @param level // lấy độ sâu (nếu có)
* @param rootWeight // Lấy trọng số cấp trên (nếu có)
* @param arrOut // biến dữ liệu ra (nếu có)
* @param parentIndex // Biến cấu trúc cây (nếu có)
*/
this.createTreeWeight = (/**
* @param {?} arrIn
* @param {?} idKey
* @param {?} parentKey
* @param {?} weightKey
* @param {?} startWith
* @param {?=} level
* @param {?=} rootWeight
* @param {?=} arrOut
* @param {?=} parentIndex
* @return {?}
*/
function (arrIn, idKey, parentKey, weightKey, startWith, level, rootWeight, arrOut, parentIndex) {
/** @type {?} */
var arrReturns = arrOut ? arrOut : [];
//sắp xếp lại
/** @type {?} */
var myLevel = level ? level : 1;
if (arrIn && arrIn.length >= arrReturns.length) {
/** @type {?} */
var parents = arrIn.filter((/**
* @param {?} obj
* @return {?}
*/
function (obj) { return (obj[parentKey] === startWith)
|| (startWith == null && obj[parentKey] == undefined)
|| (startWith == undefined && obj[parentKey] == null)
|| (startWith == undefined && obj[parentKey] == ""); }));
if (parents && parents.length > 0) {
//đã có một mãng cùng cấp, hãy tính toán trọng số cho nó
//Tính tổng thành phần của cùng cấp này
/** @type {?} */
var sumWeight_1 = parents.map((/**
* @param {?} o
* @return {?}
*/
function (o) { return o[weightKey]; })).reduce((/**
* @param {?} a
* @param {?} b
* @return {?}
*/
function (a, b) { return a + b; }), 0);
parents.forEach((/**
* @param {?} el
* @param {?} idx
* @return {?}
*/
function (el, idx) {
//Tỷ trọng % thành phần
el.$weight_percent = el[weightKey] / sumWeight_1;
//khi tạo con, trọng số cấp cha phải được ghi xuống cấp con bằng trọng số
el.$parent_weight_percent = rootWeight ? rootWeight : 1;
//giá trị có thể lấy trước đó
//(el.$parent_weight_percent===undefined||el.$parent_weight_percent===null)?1:el.$parent_weight_percent;
//root_weight_percent cấp trên xuống cấp dưới =
//Tỷ trọng % so với gốc
el.$root_weight_percent = el.$parent_weight_percent * el.$weight_percent;
el.$level = myLevel;
el.$index = idx + 1; //ghi số thứ tự trong cùng cấp
el.$tree_index = (parentIndex ? parentIndex + '.' : '') + el.$index; //Ghi số thứ tự theo hình cây
arrReturns.push(el); //gán gốc cây
//tìm tiếp lá cây nếu có thì gán vào
return _this.createTreeWeight(arrIn, idKey, parentKey, weightKey, el[idKey], myLevel + 1, el.$root_weight_percent, arrReturns, el.$tree_index);
}));
}
else { //đây là lá cây
//đây là lá cây
/** @type {?} */
var objCur = arrReturns.find((/**
* @param {?} obj
* @return {?}
*/
function (obj) { return (obj[idKey] === startWith); }));
if (objCur)
objCur.$is_leaf = 1;
}
}
return arrReturns;
});
/**
* Tạo cây để sắp xếp trật tự gốc, nhánh, lá
* như mệnh đề trong oracle
* Mục đích để hiển thị thứ tự cây từ trên xuống đúng vị trí của nó
* thêm trường $level để biết độ sâu của lá
* thêm trường $root để biết giá trị root là đâu
*/
this.createTreeOrder = (/**
* @param {?} arrIn
* @param {?} idKey
* @param {?} parentKey
* @param {?=} startWith
* @param {?=} level
* @param {?=} arrOut
* @param {?=} parentIndex
* @param {?=} rootId
* @return {?}
*/
function (arrIn, idKey, parentKey, startWith, level, arrOut, parentIndex, rootId) {
/** @type {?} */
var arrReturns = arrOut ? arrOut : [];
//sắp xếp lại
/** @type {?} */
var myLevel = level ? level : 1;
//bug thêm dấu = để gán $is_leaf bản ghi cuối
if (arrIn && arrIn.length >= arrReturns.length) {
/** @type {?} */
var parents = arrIn.filter((/**
* @param {?} obj
* @return {?}
*/
function (obj) { return (obj[parentKey] === startWith)
|| (startWith == null && obj[parentKey] == undefined)
|| (startWith == undefined && obj[parentKey] == null)
|| (startWith == undefined && obj[parentKey] == ""); }));
if (parents && parents.length > 0) {
parents.forEach((/**
* @param {?} el
* @param {?} idx
* @return {?}
*/
function (el, idx) {
//gán giá trị root khi mới khởi tạo
el.$root = rootId ? rootId : el[idKey];
//hoặc sẽ gán luôn $root cho đến lá cây
el.$level = myLevel;
el.$index = idx + 1; //ghi số thứ tự trong cùng cấp
el.$tree_index = (parentIndex ? parentIndex + '.' : '') + el.$index; //ghi số thứ tự trong cùng cấp
arrReturns.push(el); //gán gốc cây
//tìm tiếp lá cây nếu có thì gán vào
return _this.createTreeOrder(arrIn, idKey, parentKey, el[idKey], myLevel + 1, arrReturns, el.$tree_index, el.$root);
}));
}
else { //đây là lá cây
//đây là lá cây
/** @type {?} */
var objCur = arrReturns.find((/**
* @param {?} obj
* @return {?}
*/
function (obj) { return (obj[idKey] === startWith); }));
if (objCur)
objCur.$is_leaf = 1;
}
}
return arrReturns;
});
/**
* Tạo cây có item.subs=[]
* Sử dụng trong hiển thị cấu trúc cây có đệ quy
*/
this.createTreeMenu = (/**
* @param {?} arrIn
* @param {?} idKey
* @param {?} parentKey
* @param {?=} startWith
* @param {?=} level
* @return {?}
*/
function (arrIn, idKey, parentKey, startWith, level) {
/** @type {?} */
var myLevel = level ? level : 1;
/** @type {?} */
var roots = arrIn.filter((/**
* @param {?} x
* @return {?}
*/
function (x) {
return (x[parentKey] === startWith)
|| (startWith == null && x[parentKey] == undefined)
|| (startWith == undefined && x[parentKey] == null)
|| (startWith == undefined && x[parentKey] == "");
}));
if (roots && roots.length > 0) {
roots.forEach((/**
* @param {?} el
* @return {?}
*/
function (el) {
el.$level = myLevel;
//thay đổi gán subs nếu đã có subs trước đó thì không cần tìm nữa
//Phục vụ cho gán các cây con nhiều bảng với nhau
el.subs = el.subs !== undefined ? el.subs : _this.createTreeMenu(arrIn, idKey, parentKey, el[idKey], myLevel + 1);
}));
return roots;
}
else {
/** @type {?} */
var leafChildren = arrIn.find((/**
* @param {?} x
* @return {?}
*/
function (x) { return x[idKey] === startWith; }));
if (leafChildren) {
leafChildren.$is_leaf = 1;
}
return undefined; //trả về array không có gì
}
});
//----- Các hàm chuyển đổi dữ liệu như utils của javascript --//
/**
* Tạo thuộc tính cho đối tượng {}
* Đồng thời đếm thuộc tính của đối tượng theo trường length
*/
this.createObjectKey = (/**
* @param {?} obj
* @param {?} key
* @param {?} value
* @return {?}
*/
function (obj, key, value) {
Object.defineProperty(obj, key, { value: value, writable: true, enumerable: true, configurable: true });
// obj.length = Object.keys(obj).length; //obj.length ? obj.length + 1 : 1;
return obj;
});
/**
* Xóa một thuộc tính của đối tượng,
* Yêu cầu thuộc tính của đối tượng khi tạo có
* writable: true, enumerable: true, configurable: true
*/
this.deleteObjectKey = (/**
* @param {?} obj
* @param {?} key
* @return {?}
*/
function (obj, key) {
/** @type {?} */
var del = delete obj[key];
// if (del) obj.length = Object.keys(obj).length;
return obj;
});
/**
* clone đối tượng thành đối tượng mới (sử dụng để gán đối tượng mới)
* @param obj
*/
this.cloneObject = (/**
* @param {?} obj
* @return {?}
*/
function (obj) {
return JSON.parse(JSON.stringify(obj));
});
}
//-- quản lý sự kiện trao đổi dữ liệu giữa các form --//
/**
* Subscribe to an event topic. Events that get posted to that topic will trigger the provided handler.
*
* @param topic the topic to subscribe to
* @param handler the event handler
*/
//-- quản lý sự kiện trao đổi dữ liệu giữa các form --//
/**
* Subscribe to an event topic. Events that get posted to that topic will trigger the provided handler.
*
* @param {?} topic the topic to subscribe to
* @param {...?} handlers
* @return {?}
*/
Ngxi4CommonsService.prototype.subscribe =
//-- quản lý sự kiện trao đổi dữ liệu giữa các form --//
/**
* Subscribe to an event topic. Events that get posted to that topic will trigger the provided handler.
*
* @param {?} topic the topic to subscribe to
* @param {...?} handlers
* @return {?}
*/
function (topic) {
var handlers = [];
for (var _i = 1; _i < arguments.length; _i++) {
handlers[_i - 1] = arguments[_i];
}
/** @type {?} */
var topics = this.c.get(topic);
if (!topics) {
this.c.set(topic, topics = []);
}
topics.push.apply(topics, __spread(handlers));
};
/**
* Unsubscribe from the given topic. Your handler will no longer receive events published to this topic.
*
* @param topic the topic to unsubscribe from
* @param handler the event handler
*/
/**
* Unsubscribe from the given topic. Your handler will no longer receive events published to this topic.
*
* @param {?} topic the topic to unsubscribe from
* @param {?=} handler the event handler
* @return {?}
*/
Ngxi4CommonsService.prototype.unsubscribe = /**
* Unsubscribe from the given topic. Your handler will no longer receive events published to this topic.
*
* @param {?} topic the topic to unsubscribe from
* @param {?=} handler the event handler
* @return {?}
*/
function (topic, handler) {
if (!handler) {
return this.c.delete(topic);
}
/** @type {?} */
var topics = this.c.get(topic);
if (!topics) {
return false;
}
// We need to find and remove a specific handler
/** @type {?} */
var index = topics.indexOf(handler);
if (index < 0) {
// Wasn't found, wasn't removed
return false;
}
topics.splice(index, 1);
if (topics.length === 0) {
this.c.delete(topic);
}
return true;
};
/**
* Publish an event to the given topic.
*
* @param topic the topic to publish to
* @param eventData the data to send as the event
*/
/**
* Publish an event to the given topic.
*
* @param {?} topic the topic to publish to
* @param {...?} args
* @return {?}
*/
Ngxi4CommonsService.prototype.publish = /**
* Publish an event to the given topic.
*
* @param {?} topic the topic to publish to
* @param {...?} args
* @return {?}
*/
function (topic) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
/** @type {?} */
var topics = this.c.get(topic);
if (!topics) {
return null;
}
return topics.map((/**
* @param {?} handler
* @return {?}
*/
function (handler) {
try {
return handler.apply(void 0, __spread(args));
}
catch (e) {
console.error(e);
return null;
}
}));
};
/**
* Trả về dấu ? hoặc dấu & sau khi kiểm tra url có chứa ? chưa
* @param url
*/
/**
* Trả về dấu ? hoặc dấu & sau khi kiểm tra url có chứa ? chưa
* @param {?} url
* @return {?}
*/
Ngxi4CommonsService.prototype.getUrlSeparateParameter = /**
* Trả về dấu ? hoặc dấu & sau khi kiểm tra url có chứa ? chưa
* @param {?} url
* @return {?}
*/
function (url) { return url.match(/\?/) ? '&' : '?'; };
//----- các hàm dùng chung thông báo -----//
/**
* Hàm hiển thị trạng thái loading
* Do nó được tạo kiểu promise nên phải đợi một thời gian mới tạo ra và mới đóng được
* @param message
*/
//----- các hàm dùng chung thông báo -----//
/**
* Hàm hiển thị trạng thái loading
* Do nó được tạo kiểu promise nên phải đợi một thời gian mới tạo ra và mới đóng được
* @param {?} message
* @return {?}
*/
Ngxi4CommonsService.prototype.showLoader =
//----- các hàm dùng chung thông báo -----//
/**
* Hàm hiển thị trạng thái loading
* Do nó được tạo kiểu promise nên phải đợi một thời gian mới tạo ra và mới đóng được
* @param {?} message
* @return {?}
*/
function (message) {
this.loadingCtrl.create({
message: message
}).then((/**
* @param {?} res
* @return {?}
*/
function (res) {
res.present();
res.onDidDismiss().then((/**
* @param {?} dis
* @return {?}
*/
function (dis) {
//console.log('Loading dismissed!', dis);
}));
}));
};
/**
* Hàm gọi ẩn loading nếu trước đó có gọi nó
*/
/**
* Hàm gọi ẩn loading nếu trước đó có gọi nó
* @return {?}
*/
Ngxi4CommonsService.prototype.hideLoader = /**
* Hàm gọi ẩn loading nếu trước đó có gọi nó
* @return {?}
*/
function () {
var _this = this;
//console.log('close',this.loadingCtrl);
if (this.loadingCtrl) {
//console.log('closed call');
setTimeout((/**
* @return {?}
*/
function () {
//Đợi 1 giây sau khi load xong mới đóng
//Nếu không, chưa load xong (promise) mà đóng là bị lỗi
//và không bao giờ đóng được
_this.loadingCtrl.dismiss();
//console.log('called close');
}), 2000);
}
};
/**
* Mở popup cửa sổ là các trang component hoặc trang lẻ
* @param componentPage //Là trang cần popup lên
* @param navParams //là bộ tham số truyền cho form
*/
/**
* Mở popup cửa sổ là các trang component hoặc trang lẻ
* @param {?} componentPage //Là trang cần popup lên
* @param {?} navParams //là bộ tham số truyền cho form
* @param {?=} callback
* @return {?}
*/
Ngxi4CommonsService.prototype.openModal = /**
* Mở popup cửa sổ là các trang component hoặc trang lẻ
* @param {?} componentPage //Là trang cần popup lên
* @param {?} navParams //là bộ tham số truyền cho form
* @param {?=} callback
* @return {?}
*/
function (componentPage, navParams, callback) {
var _this = this;
return new Promise((/**
* @param {?} resolve
* @return {?}
*/
function (resolve) { return __awaiter(_this, void 0, void 0, function () {
var modal;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.modalCtrl.create({
component: componentPage,
componentProps: navParams
})];
case 1:
modal = _a.sent();
modal.onDidDismiss().then((/**
* @param {?} dataReturned
* @return {?}
*/
function (dataReturned) {
if (dataReturned && dataReturned.data) {
//dữ liệu sau khi đóng form sẽ lấy được dữ liệu này
//nó trả về mặt định là {data: = dữ liệu trả về, role: undefined}
//console.log('Data return when close popup', dataReturned);
if (callback)
callback(dataReturned.data); //trả dữ liệu cho hàm callback
resolve(dataReturned.data); //đóng lại và trả kết quả
return;
}
resolve(); //Đóng lại nhưng không trả kết quả
}));
return [4 /*yield*/, modal.present()];
case 2:
_a.sent();
return [2 /*return*/];
}
});
}); }));
};
/**
* Đóng cửa sổ popup lại và gửi dữ liệu cho nơi gọi nó
* @param data //dữ liệu cần trả lại cho nơi gọi trước đó,
*/
/**
* Đóng cửa sổ popup lại và gửi dữ liệu cho nơi gọi nó
* @param {?=} data //dữ liệu cần trả lại cho nơi gọi trước đó,
* @return {?}
*/
Ngxi4CommonsService.prototype.closeModal = /**
* Đóng cửa sổ popup lại và gửi dữ liệu cho nơi gọi nó
* @param {?=} data //dữ liệu cần trả lại cho nơi gọi trước đó,
* @return {?}
*/
function (data) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.modalCtrl.dismiss(data)];
case 1:
_a.sent();
return [2 /*return*/];
}
});
});
};
/**
* Gọi cảnh báo hoặc yêu cầu xác nhận một việc gì đó
* @param msg là nội dung tin thông báo dạng html (<br>)
*/
/**
* Gọi cảnh báo hoặc yêu cầu xác nhận một việc gì đó
* @param {?} msg là nội dung tin thông báo dạng html (<br>)
* @param {?=} okText
* @return {?}
*/
Ngxi4CommonsService.prototype.presentAlert = /**
* Gọi cảnh báo hoặc yêu cầu xác nhận một việc gì đó
* @param {?} msg là nội dung tin thông báo dạng html (<br>)
* @param {?=} okText
* @return {?}
*/
function (msg, okText) {
var _this = this;
return new Promise((/**
* @param {?} resolve
* @return {?}
*/
function (resolve) { return __awaiter(_this, void 0, void 0, function () {
var buttonsReturn, alert;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
buttonsReturn = [
{
text: okText ? okText
: 'Đóng lại',
handler: (/**
* @return {?}
*/
function () { resolve("CLOSE"); }) //Đã xác nhận đóng lại
}
];
return [4 /*yield*/, this.alertCtrl.create({
header: 'CHÚ Ý!',
subHeader: 'Đọc kỹ thông tin sau',
message: msg,
buttons: buttonsReturn
})];
case 1:
alert = _a.sent();
return [4 /*yield*/, alert.present()];
case 2:
_a.sent();
return [2 /*return*/];
}
});
}); }));
};
/**
* Xác nhận đồng ý hay không đồng ý
* Trả về OK hoặc null cho promise
* @param msg
* @param okText
* @param cancelText
*/
/**
* Xác nhận đồng ý hay không đồng ý
* Trả về OK hoặc null cho promise
* @param {?} msg
* @param {?=} okText
* @param {?=} cancelText
* @return {?}
*/
Ngxi4CommonsService.prototype.presentConfirm = /**
* Xác nhận đồng ý hay không đồng ý
* Trả về OK hoặc null cho promise
* @param {?} msg
* @param {?=} okText
* @param {?=} cancelText
* @return {?}
*/
function (msg, okText, cancelText) {
var _this = this;
return new Promise((/**
* @param {?} resolve
* @return {?}
*/
function (resolve) { return __awaiter(_this, void 0, void 0, function () {
var buttonsReturn, alert;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
buttonsReturn = [
{
text: cancelText ? cancelText
: 'Bỏ qua',
handler: (/**
* @return {?}
*/
function () { resolve(); }) //Đã xác nhận không đồng ý
},
{
text: okText ? okText
: 'Đồng ý',
handler: (/**
* @return {?}
*/
function () { resolve("OK"); }) //Đã xác nhận đồng ý
}
];
return [4 /*yield*/, this.alertCtrl.create({
header: 'XÁC NHẬN',
subHeader: 'Đọc kỹ thông tin sau:',
message: msg,
buttons: buttonsReturn
})];
case 1:
alert = _a.sent();
return [4 /*yield*/, alert.present()];
case 2:
_a.sent();
return [2 /*return*/];
}
});
}); }));
};
/**
* Hiển thị câu thông báo toast
*
*/
/**
* Hiển thị câu thông báo toast
*
* @param {?} msg
* @param {?=} duration
* @param {?=} color
* @param {?=} position
* @return {?}
*/
Ngxi4CommonsService.prototype.showToast = /**
* Hiển thị câu thông báo toast
*
* @param {?} msg
* @param {?=} duration
* @param {?=} color
* @param {?=} position
* @return {?}
*/
function (msg, duration, color, position) {
var _this = this;
return new Promise((/**
* @param {?} resolve
* @return {?}
*/
function (resolve) {
_this.toastCtrl.create({
message: msg,
duration: duration ? duration : 0,
showCloseButton: duration ? false : true,
position: position ? position : 'middle',
closeButtonText: 'ok',
animated: true,
color: color ? color : 'primary'
}).then((/**
* @param {?} toastData
* @return {?}
*/
function (toastData) {
toastData.present();
toastData.onDidDismiss()
.then((/**
* @param {?} dataReturned
* @return {?}
*/
function (dataReturned) {
//console.log('dataReturned:',dataReturned);
//{data: undefined, role: "cancel"} // or timeout
resolve(dataReturned);
}));
}));
}));
};
/**
* Đóng cửa sổ toast hiển thị bằng tay lại
*/
/**
* Đóng cửa sổ toast hiển thị bằng tay lại
* @return {?}
*/
Ngxi4CommonsService.prototype.hideToast = /**
* Đóng cửa sổ toast hiển thị bằng tay lại
* @return {?}
*/
function () {
var _this = this;
//console.log('close',this.loadingCtrl);
if (this.toastCtrl) {
//console.log('closed call');
setTimeout((/**
* @return {?}
*/
function () {
//Đợi 1 giây sau khi load xong mới đóng
//Nếu không, chưa load xong (promise) mà đóng là bị lỗi
//và không bao giờ đóng được
_this.toastCtrl.dismiss();
//console.log('called close');
}), 2000);
}
};
/**
* Hàm đợi số giây để tiếp tục thực thi bước tiếp theo
* @param milisecond
*/
/**
* Hàm đợi số giây để tiếp tục thực thi bước tiếp theo
* @param {?} milisecond
* @return {?}
*/
Ngxi4CommonsService.prototype.delay = /**
* Hàm đợi số giây để tiếp tục thực thi bước tiếp theo
* @param {?} milisecond
* @return {?}
*/
function (milisecond) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
function (resolve, reject) {
setTimeout((/**
* @return {?}
*/
function () {
resolve();
}), milisecond);
}));
};
Ngxi4CommonsService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
Ngxi4CommonsService.ctorParameters = function () { return [
{ type: ModalController },
{ type: AlertController },
{ type: LoadingController },
{ type: ToastController }
]; };
/** @nocollapse */ Ngxi4CommonsService.ngInjectableDef = ɵɵdefineInjectable({ factory: function Ngxi4CommonsService_Factory() { return new Ngxi4CommonsService(ɵɵinject(ModalController), ɵɵinject(AlertController), ɵɵinject(LoadingController), ɵɵinject(ToastController)); }, token: Ngxi4CommonsService, providedIn: "root" });
return Ngxi4CommonsService;
}());
if (false) {
/**
* @type {?}
* @private
*/
Ngxi4CommonsService.prototype.c;
/**
* Sắp xếp thứ tự theo alphabe tiếng việt, quốc tế
* \@param arr
* \@param key
* @type {?}
*/
Ngxi4CommonsService.prototype.orderArrayObjects;
/**
* Tự tính trọng số thành phần, gán trọng số cha, trọng số con, và trọng số so với root
*
* \@param arrIn // mảng dữ liệu đầu vào
* \@param idKey // tên trường đánh mã duy nhất
* \@param parentKey // tên trường liên hệ mã cấp trên
* \@param weightKey // tên trường chứa trọng số
* \@param startWith // lấy giá trị ban đầu (nếu có)
* \@param level // lấy độ sâu (nếu có)
* \@param rootWeight // Lấy trọng số cấp trên (nếu có)
* \@param arrOut // biến dữ liệu ra (nếu có)
* \@param parentIndex // Biến cấu trúc cây (nếu có)
* @type {?}
*/
Ngxi4CommonsService.prototype.createTreeWeight;
/**
* Tạo cây để sắp xếp trật tự gốc, nhánh, lá
* như mệnh đề trong oracle
* Mục đích để hiển thị thứ tự cây từ trên xuống đúng vị trí của nó
* thêm trường $level để biết độ sâu của lá
* thêm trường $root để biết giá trị root là đâu
* @type {?}
*/
Ngxi4CommonsService.prototype.createTreeOrder;
/**
* Tạo cây có item.subs=[]
* Sử dụng trong hiển thị cấu trúc cây có đệ quy
* @type {?}
*/
Ngxi4CommonsService.prototype.createTreeMenu;
/**
* Tạo thuộc tính cho đối tượng {}
* Đồng thời đếm thuộc tính của đối tượng theo trường length
* @type {?}
*/
Ngxi4CommonsService.prototype.createObjectKey;
/**
* Xóa một thuộc tính của đối tượng,
* Yêu cầu thuộc tính của đối tượng khi tạo có
* writable: true, enumerable: true, configurable: true
* @type {?}
*/
Ngxi4CommonsService.prototype.deleteObjectKey;
/**
* clone đối tượng thành đối tượng mới (sử dụng để gán đối tượng mới)
* \@param obj
* @type {?}
*/
Ngxi4CommonsService.prototype.cloneObject;
/**
* @type {?}
* @private
*/
Ngxi4CommonsService.prototype.modalCtrl;
/**
* @type {?}
* @private
*/
Ngxi4CommonsService.prototype.alertCtrl;
/**
* @type {?}
* @private
*/
Ngxi4CommonsService.prototype.loadingCtrl;
/**
* @type {?}
* @private
*/
Ngxi4CommonsService.prototype.toastCtrl;
}
/**
* @fileoverview added by tsickle
* Generated from: lib/ngxi4-dynamic-service.module.ts

@@ -148,2 +1078,3 @@ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc

Ngxi4AuthService,
Ngxi4CommonsService,
// xuất bản tham số ???...

@@ -239,2 +1170,9 @@ {

return rtn;
}))
.catch((/**
* @param {?} err
* @return {?}
*/
function (err) {
return err && err.error ? err.error : err;
}));

@@ -285,2 +1223,9 @@ };

return rtn;
}))
.catch((/**
* @param {?} err
* @return {?}
*/
function (err) {
return err && err.error ? err.error : err;
}));

@@ -321,2 +1266,9 @@ };

return rtn;
}))
.catch((/**
* @param {?} err
* @return {?}
*/
function (err) {
return err && err.error ? err.error : err;
}));

@@ -376,3 +1328,3 @@ };

export { Ngxi4AuthService, Ngxi4CardDynamicFormComponent, Ngxi4ConfigService, Ngxi4DynamicServiceModule, RequestInterceptor as ɵa };
export { Ngxi4AuthService, Ngxi4CardDynamicFormComponent, Ngxi4ConfigService, Ngxi4DynamicServiceModule, RequestInterceptor as ɵa, Ngxi4CommonsService as ɵb };
//# sourceMappingURL=ngxi4-dynamic-service.js.map

@@ -6,1 +6,2 @@ /**

export { RequestInterceptor as ɵa } from './lib/interceptors/requestInterceptor';
export { Ngxi4CommonsService as ɵb } from './lib/services/ngxi4-common.service';

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"Ngxi4AuthService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":5},"arguments":[{"__symbolic":"reference","name":"Ngxi4ConfigService"}]}],null,null],"parameters":[{"__symbolic":"reference","name":"Ngxi4Config"},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":22,"character":24},{"__symbolic":"reference","name":"ɵa"}]}],"getDynamicUrl":[{"__symbolic":"method"}],"postDynamicJson":[{"__symbolic":"method"}],"postDynamicFormData":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"Ngxi4CardDynamicFormComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"ngxi4-ngxi4-card-dynamic-form","template":"<p>ngxi4-card-dynamic-form works!</p>\r\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"Ngxi4Config":{"__symbolic":"interface"},"Ngxi4ConfigService":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":12,"character":38},"arguments":["Ngxi4Config"]},"Ngxi4DynamicServiceModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"Ngxi4CardDynamicFormComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":20,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":21,"character":4},"member":"forRoot"}}],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/common/http","name":"HTTP_INTERCEPTORS","line":26,"character":15},"useClass":{"__symbolic":"reference","name":"ɵa"},"multi":true}],"exports":[{"__symbolic":"reference","name":"Ngxi4CardDynamicFormComponent"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"Ngxi4DynamicServiceModule"},"providers":[{"__symbolic":"reference","name":"Ngxi4AuthService"},{"provide":{"__symbolic":"reference","name":"Ngxi4ConfigService"},"useValue":{"__symbolic":"reference","name":"config"}}]}}}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"intercept":[{"__symbolic":"method"}],"setRequestToken":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}}},"origins":{"Ngxi4AuthService":"./lib/services/ngxi4-auth.service","Ngxi4CardDynamicFormComponent":"./lib/cards/ngxi4-card-dynamic-form/ngxi4-card-dynamic-form.component","Ngxi4Config":"./lib/ngxi4-dynamic-service.module","Ngxi4ConfigService":"./lib/ngxi4-dynamic-service.module","Ngxi4DynamicServiceModule":"./lib/ngxi4-dynamic-service.module","ɵa":"./lib/interceptors/requestInterceptor"},"importAs":"ngxi4-dynamic-service"}
{"__symbolic":"module","version":4,"metadata":{"Ngxi4AuthService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":5},"arguments":[{"__symbolic":"reference","name":"Ngxi4ConfigService"}]}],null,null],"parameters":[{"__symbolic":"reference","name":"Ngxi4Config"},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":22,"character":24},{"__symbolic":"reference","name":"ɵa"}]}],"getDynamicUrl":[{"__symbolic":"method"}],"postDynamicJson":[{"__symbolic":"method"}],"postDynamicFormData":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"Ngxi4CardDynamicFormComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"ngxi4-ngxi4-card-dynamic-form","template":"<p>ngxi4-card-dynamic-form works!</p>\r\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"Ngxi4Config":{"__symbolic":"interface"},"Ngxi4ConfigService":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":13,"character":38},"arguments":["Ngxi4Config"]},"Ngxi4DynamicServiceModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":15,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"Ngxi4CardDynamicFormComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":21,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":22,"character":4},"member":"forRoot"}}],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/common/http","name":"HTTP_INTERCEPTORS","line":27,"character":15},"useClass":{"__symbolic":"reference","name":"ɵa"},"multi":true}],"exports":[{"__symbolic":"reference","name":"Ngxi4CardDynamicFormComponent"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"Ngxi4DynamicServiceModule"},"providers":[{"__symbolic":"reference","name":"Ngxi4AuthService"},{"__symbolic":"reference","name":"ɵb"},{"provide":{"__symbolic":"reference","name":"Ngxi4ConfigService"},"useValue":{"__symbolic":"reference","name":"config"}}]}}}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"intercept":[{"__symbolic":"method"}],"setRequestToken":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":27,"character":23},{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":28,"character":25},{"__symbolic":"reference","module":"@ionic/angular","name":"LoadingController","line":29,"character":27},{"__symbolic":"reference","module":"@ionic/angular","name":"ToastController","line":30,"character":25}]}],"subscribe":[{"__symbolic":"method"}],"unsubscribe":[{"__symbolic":"method"}],"publish":[{"__symbolic":"method"}],"getUrlSeparateParameter":[{"__symbolic":"method"}],"showLoader":[{"__symbolic":"method"}],"hideLoader":[{"__symbolic":"method"}],"openModal":[{"__symbolic":"method"}],"closeModal":[{"__symbolic":"method"}],"presentAlert":[{"__symbolic":"method"}],"presentConfirm":[{"__symbolic":"method"}],"showToast":[{"__symbolic":"method"}],"hideToast":[{"__symbolic":"method"}],"delay":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}}},"origins":{"Ngxi4AuthService":"./lib/services/ngxi4-auth.service","Ngxi4CardDynamicFormComponent":"./lib/cards/ngxi4-card-dynamic-form/ngxi4-card-dynamic-form.component","Ngxi4Config":"./lib/ngxi4-dynamic-service.module","Ngxi4ConfigService":"./lib/ngxi4-dynamic-service.module","Ngxi4DynamicServiceModule":"./lib/ngxi4-dynamic-service.module","ɵa":"./lib/interceptors/requestInterceptor","ɵb":"./lib/services/ngxi4-common.service"},"importAs":"ngxi4-dynamic-service"}
{
"name": "ngxi4-dynamic-service",
"version": "0.0.2",
"version": "0.0.4",
"author": "Đoàn Quốc Cường",

@@ -11,3 +11,4 @@ "homepage": "https://github.com/cuongdqpayment",

"peerDependencies": {
"rxjs": "~6.4.0",
"rxjs": ">=6.4.0",
"fsevents": ">=1.2.9",
"tslib": "^1.10.0",

@@ -14,0 +15,0 @@ "typescript": ">=2.7",

@@ -11,2 +11,63 @@ # Ngxi4DynamicService

1. add in ./app.module.ts
import { Ngxi4DynamicServiceModule } from 'ngxi4-dynamic-service'
@NgModule({
// ...
imports: [
// ....
// add module ngxi4-dynamic-service
Ngxi4DynamicServiceModule.forRoot()
// or define authServerUrl link to your api server
// Ngxi4DynamicServiceModule.forRoot({ authServerUrl: 'https://xyz.com/auth'})
]
})
2. add in ./home.module.ts:
import { Ngxi4DynamicServiceModule } from 'ngxi4-dynamic-service'
@NgModule({
// ...
imports: [
// ....
// add module ngxi4-dynamic-service
Ngxi4DynamicServiceModule
]
})
3. Use for services in ./home.page.ts
import { Ngxi4AuthService } from 'ngxi4-dynamic-service';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage implements OnInit{
constructor(
private apiAuth: Ngxi4AuthService
private apiCommon: Ngxi4CommonService
) {}
ngOnInit() {
this.apiAuth.getDynamicUrl(this.apiAuth.serviceUrls.AUTH_SERVER + "/captcha-token")
.then(data => {
console.log('data', data);
})
.catch(err => {
console.log('error', err);
this.apiCommon.presentAlert('Error', err.message);
})
}
}

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc