@kolektor/nucleus-notifications 0.1.695 → 0.1.724

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,11 +8,11 @@ export class NucleusNotificationsModule {
8
8
  providers: [{ provide: NucleusNotificationsConfig, useValue: config }],
9
9
  };
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NucleusNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NucleusNotificationsModule }); }
13
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NucleusNotificationsModule }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: NucleusNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.8", ngImport: i0, type: NucleusNotificationsModule }); }
13
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: NucleusNotificationsModule }); }
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NucleusNotificationsModule, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: NucleusNotificationsModule, decorators: [{
16
16
  type: NgModule,
17
17
  args: [{
18
18
  declarations: [],
@@ -20,4 +20,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
20
20
  exports: [],
21
21
  }]
22
22
  }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVjbGV1cy1ub3RpZmljYXRpb25zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcvbnVjbGV1cy9udWNsZXVzLW5vdGlmaWNhdGlvbnMvc3JjL2xpYi9udWNsZXVzLW5vdGlmaWNhdGlvbnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFPdEQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxNQUFNLENBQUMsT0FBTyxDQUNaLE1BQWtDO1FBRWxDLE9BQU87WUFDTCxRQUFRLEVBQUUsMEJBQTBCO1lBQ3BDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztTQUN2RSxDQUFDO0lBQ0osQ0FBQzsrR0FSVSwwQkFBMEI7Z0hBQTFCLDBCQUEwQjtnSEFBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUx0QyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsRUFBRTtpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOdWNsZXVzTm90aWZpY2F0aW9uc0NvbmZpZyB9IGZyb20gJy4vbW9kZWxzJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW10sXG4gIGV4cG9ydHM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBOdWNsZXVzTm90aWZpY2F0aW9uc01vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KFxuICAgIGNvbmZpZzogTnVjbGV1c05vdGlmaWNhdGlvbnNDb25maWdcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOdWNsZXVzTm90aWZpY2F0aW9uc01vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTnVjbGV1c05vdGlmaWNhdGlvbnNNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE51Y2xldXNOb3RpZmljYXRpb25zQ29uZmlnLCB1c2VWYWx1ZTogY29uZmlnIH1dLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVjbGV1cy1ub3RpZmljYXRpb25zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcvbnVjbGV1cy9udWNsZXVzLW5vdGlmaWNhdGlvbnMvc3JjL2xpYi9udWNsZXVzLW5vdGlmaWNhdGlvbnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFPdEQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxNQUFNLENBQUMsT0FBTyxDQUNaLE1BQWtDO1FBRWxDLE9BQU87WUFDTCxRQUFRLEVBQUUsMEJBQTBCO1lBQ3BDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztTQUN2RSxDQUFDO0lBQ0osQ0FBQzs4R0FSVSwwQkFBMEI7K0dBQTFCLDBCQUEwQjsrR0FBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUx0QyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsRUFBRTtpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOdWNsZXVzTm90aWZpY2F0aW9uc0NvbmZpZyB9IGZyb20gJy4vbW9kZWxzJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW10sXG4gIGV4cG9ydHM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBOdWNsZXVzTm90aWZpY2F0aW9uc01vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KFxuICAgIGNvbmZpZzogTnVjbGV1c05vdGlmaWNhdGlvbnNDb25maWdcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOdWNsZXVzTm90aWZpY2F0aW9uc01vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTnVjbGV1c05vdGlmaWNhdGlvbnNNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE51Y2xldXNOb3RpZmljYXRpb25zQ29uZmlnLCB1c2VWYWx1ZTogY29uZmlnIH1dLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -387,13 +387,13 @@ export class NucleusNotificationsService {
387
387
  });
388
388
  });
389
389
  }
390
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NucleusNotificationsService, deps: [{ token: i1.HttpClient }, { token: i2.SwPush }, { token: i3.NucleusAppService }, { token: i4.NucleusNotificationsConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
391
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NucleusNotificationsService, providedIn: 'root' }); }
390
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: NucleusNotificationsService, deps: [{ token: i1.HttpClient }, { token: i2.SwPush }, { token: i3.NucleusAppService }, { token: i4.NucleusNotificationsConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
391
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: NucleusNotificationsService, providedIn: 'root' }); }
392
392
  }
393
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NucleusNotificationsService, decorators: [{
393
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: NucleusNotificationsService, decorators: [{
394
394
  type: Injectable,
395
395
  args: [{
396
396
  providedIn: 'root',
397
397
  }]
398
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.SwPush }, { type: i3.NucleusAppService }, { type: i4.NucleusNotificationsConfig }]; } });
399
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVjbGV1cy1ub3RpZmljYXRpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nL251Y2xldXMvbnVjbGV1cy1ub3RpZmljYXRpb25zL3NyYy9saWIvbnVjbGV1cy1ub3RpZmljYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsaUJBQWlCLEdBRWxCLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQU1MLDBCQUEwQixHQU8zQixNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBS2xCLE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsWUFDVSxJQUFnQixFQUNoQixNQUFjLEVBQ2QsVUFBNkIsRUFDckMsTUFBa0M7UUFIMUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFXdEIsMkJBQXNCLEdBQ3JDLG9DQUFvQyxDQUFDO1FBQ3RCLDRCQUF1QixHQUFHLGdDQUFnQyxDQUFDO1FBRXBFLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBQ2hELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQXFCLENBQUM7UUFDbEQseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU1Qyxr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TixDQUFDO29CQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakIsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0EzZFUsMkJBQTJCO21IQUEzQiwyQkFBMkIsY0FGMUIsTUFBTTs7NEZBRVAsMkJBQTJCO2tCQUh2QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTd1B1c2ggfSBmcm9tICdAYW5ndWxhci9zZXJ2aWNlLXdvcmtlcic7XG5pbXBvcnQge1xuICBQdXNoTm90aWZpY2F0aW9ucyxcbiAgUHVzaE5vdGlmaWNhdGlvblNjaGVtYSxcbn0gZnJvbSAnQGNhcGFjaXRvci9wdXNoLW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgTnVjbGV1c0FwcFNlcnZpY2UgfSBmcm9tICdAa29sZWt0b3IvbnVjbGV1cy1jb21tb24nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENoYW5uZWxJZCxcbiAgTm90aWZpY2F0aW9uLFxuICBOb3RpZmljYXRpb25DbGljayxcbiAgTm90aWZpY2F0aW9uRXZlbnRUeXBlLFxuICBOb3RpZmljYXRpb25UeXBlLFxuICBOdWNsZXVzTm90aWZpY2F0aW9uc0NvbmZpZyxcbiAgUGF5bG9hZERhdGEsXG4gIFBsYXRmb3JtVmFsdWUsXG4gIFJlZ2lzdHJhdGlvbixcbiAgUmVnaXN0cmF0aW9uUmVzdWx0LFxuICBVc2VyQ2hhbm5lbENvbmZpZyxcbiAgV2ViS2V5LFxufSBmcm9tICcuL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBOdWNsZXVzTm90aWZpY2F0aW9uc1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBzd1B1c2g6IFN3UHVzaCxcbiAgICBwcml2YXRlIGFwcFNlcnZpY2U6IE51Y2xldXNBcHBTZXJ2aWNlLFxuICAgIGNvbmZpZzogTnVjbGV1c05vdGlmaWNhdGlvbnNDb25maWdcbiAgKSB7XG4gICAgbGV0IHVybCA9IGNvbmZpZy5zZXJ2ZXJBcGlVcmw7XG4gICAgaWYgKCF1cmwuZW5kc1dpdGgoJy8nKSkge1xuICAgICAgdXJsICs9ICcvJztcbiAgICB9XG4gICAgdGhpcy5hcGlVcmwgPSB1cmw7XG4gIH1cblxuICBwcml2YXRlIGFwaVVybDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJhdGlvblN0b3JhZ2VLZXkgPVxuICAgICdOdWNsZXVzTm90aWZpY2F0aW9uc1JlZ2lzdHJhdGlvbklkJztcbiAgcHJpdmF0ZSByZWFkb25seSBub3RpZmljYXRpb25zU3RvcmFnZUtleSA9ICdOdWNsZXVzTm90aWZpY2F0aW9uc0xvY2FsQ2FjaGUnO1xuICBwcml2YXRlIF9wbGF0Zm9ybTogUGxhdGZvcm1WYWx1ZTtcbiAgcHJpdmF0ZSBfaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIF9uZXdOb3RpZmljYXRpb25zID0gbmV3IFN1YmplY3Q8Tm90aWZpY2F0aW9uPigpO1xuICBwcml2YXRlIF9jbGlja3NTdWJqZWN0ID0gbmV3IFN1YmplY3Q8Tm90aWZpY2F0aW9uQ2xpY2s+KCk7XG4gIHByaXZhdGUgX3N0YXRlQ2hhbmdlc1N1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHB1YmxpYyBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25bXSA9IFtdO1xuXG4gIHB1YmxpYyBnZXQgdW5yZWFkQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9ucy5maWx0ZXIoKHgpID0+ICF4LmlzUmVhZCkubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldCBuZXdOb3RpZmljYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9uZXdOb3RpZmljYXRpb25zLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjbGlja3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsaWNrc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbiAgcHVibGljIGdldCBzdGF0ZUNoYW5nZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlQ2hhbmdlc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzSW5pdGlhbGl6ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzSW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZSgpIHtcbiAgICAvLyBtYWtlIHN1cmUgYXBwIHNlcnZpY2UgaGFzIGZpbmlzaGVkIGluaXRpYWxpemluZ1xuICAgIGF3YWl0IHRoaXMuYXBwU2VydmljZS5pbml0KCk7XG5cbiAgICB0aGlzLmxvYWRGcm9tU3RvcmFnZSgpO1xuXG4gICAgaWYgKHRoaXMuYXBwU2VydmljZS5pc05hdGl2ZSkge1xuICAgICAgdGhpcy5fcGxhdGZvcm0gPSB0aGlzLmFwcFNlcnZpY2UuZGV2aWNlSW5mby5wbGF0Zm9ybSBhcyBQbGF0Zm9ybVZhbHVlO1xuICAgICAgYXdhaXQgdGhpcy5yZWdpc3RlckNhcGFjaXRvckV2ZW50cygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zd1B1c2guaXNFbmFibGVkKSB7XG4gICAgICB0aGlzLl9wbGF0Zm9ybSA9ICd3ZWInO1xuICAgICAgdGhpcy5yZWdpc3RlcldlYlB1c2hFdmVudHMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnTnVjbGV1cy5Ob3RpZmljYXRpb25zOiBUaGVyZSBpcyBubyBwdXNoIGNhcGFiaWxpdHksIHRpbWVyIHdpbGwgYmUgdXNlZCB0byB1cGRhdGUgbm90aWZpY2F0aW9ucydcbiAgICAgICk7XG4gICAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdVcGRhdGluZyBub3RpZmljYXRpb25zLi4uJyk7XG4gICAgICAgIHRoaXMucmVmcmVzaCh0cnVlKTtcbiAgICAgIH0sIDUgKiA2MCAqIDEwMDApO1xuICAgIH1cbiAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlcigpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgoX3Jlc29sdmUsIF9yZWplY3QpID0+IHtcbiAgICAgIHRoaXMuZ2V0UmVnaXN0cmF0aW9uSW5mbygpXG4gICAgICAgIC50aGVuKChpbmZvKSA9PiB7XG4gICAgICAgICAgdGhpcy5odHRwXG4gICAgICAgICAgICAucG9zdDxSZWdpc3RyYXRpb25SZXN1bHQ+KHRoaXMuYXBpVXJsICsgJ3JlZ2lzdHJhdGlvbicsIGluZm8pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgbmV4dDogKHJlZ1Jlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0cmF0aW9uU3RvcmFnZUtleSxcbiAgICAgICAgICAgICAgICAgIHJlZ1Jlc3VsdC5pZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgX3Jlc29sdmUobnVsbCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgICdOdWNsZXVzLk5vdGlmaWNhdGlvbnM6IEZhaWxlZCB0byBzZW5kIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb24gdG8gc2VydmVyLicsXG4gICAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgX3JlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBfcmVqZWN0KGVycm9yKSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdW5yZWdpc3RlcigpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgoX3Jlc29sdmUsIF9yZWplY3QpID0+IHtcbiAgICAgIHRoaXMuZ2V0UmVnaXN0cmF0aW9uSW5mbygpXG4gICAgICAgIC50aGVuKChpbmZvKSA9PiB7XG4gICAgICAgICAgdGhpcy5odHRwXG4gICAgICAgICAgICAucmVxdWVzdDxhbnk+KCdERUxFVEUnLCB0aGlzLmFwaVVybCArICdyZWdpc3RyYXRpb24nLCB7XG4gICAgICAgICAgICAgIGJvZHk6IGluZm8sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5yZWdpc3RyYXRpb25TdG9yYWdlS2V5KTtcbiAgICAgICAgICAgICAgICBfcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgJ051Y2xldXMuTm90aWZpY2F0aW9uczogRmFpbGVkIHRvIHJlbW92ZSByZWdpc3RyYXRpb24gZnJvbSBzZXJ2ZXIuJyxcbiAgICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBfcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IF9yZWplY3QoZXJyb3IpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoKG5vdGlmeUFib3V0TmV3ID0gZmFsc2UpIHtcbiAgICB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8Tm90aWZpY2F0aW9uW10+KHRoaXMuYXBpVXJsICsgJ25vdGlmaWNhdGlvbnMnKVxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlTm90aWZpY2F0aW9ucyhyZXMsIG5vdGlmeUFib3V0TmV3KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldE5vdGlmaWNhdGlvbihpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb24+IHtcbiAgICBjb25zdCBsb2NhbE5vdGlmaWNhdGlvbiA9IHRoaXMubm90aWZpY2F0aW9ucy5maW5kKCh4KSA9PiB4LmlkID09PSBpZCk7XG4gICAgaWYgKGxvY2FsTm90aWZpY2F0aW9uKSB7XG4gICAgICByZXR1cm4gb2YobG9jYWxOb3RpZmljYXRpb24pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOb3RpZmljYXRpb24+KHRoaXMuYXBpVXJsICsgJ25vdGlmaWNhdGlvbnMvJyArIGlkKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkTm90aWZpY2F0aW9uKGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBuID0gdGhpcy5ub3RpZmljYXRpb25zLmZpbmQoKHgpID0+IHguaWQgPT09IGlkKTtcbiAgICBpZiAobiAmJiAhbi5pc1JlYWQpIHtcbiAgICAgIG4uaXNSZWFkID0gdHJ1ZTtcbiAgICAgIHRoaXMubm90aWZ5U3RhdGVDaGFuZ2VkKCk7XG4gICAgfVxuICAgIHRoaXMuaHR0cC5nZXQodGhpcy5hcGlVcmwgKyAnbm90aWZpY2F0aW9ucy9yZWFkLycgKyBpZCkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZGlzbWlzc05vdGlmaWNhdGlvbihpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5kZWxldGVOb3RpZmljYXRvbihpZCk7XG4gICAgdGhpcy5odHRwLmRlbGV0ZSh0aGlzLmFwaVVybCArICdub3RpZmljYXRpb25zLycgKyBpZCkuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5yZW1vdmVEZWxpdmVyZWROb3RpZmljYXRpb24oaWQpO1xuICB9XG5cbiAgcHVibGljIGRpc21pc3NBbGwoKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zLnNwbGljZSgwKTtcbiAgICB0aGlzLm5vdGlmeVN0YXRlQ2hhbmdlZCgpO1xuICAgIHRoaXMuaHR0cC5kZWxldGUodGhpcy5hcGlVcmwgKyAnbm90aWZpY2F0aW9ucy9hbGwnKS5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy5fcGxhdGZvcm0gPT09ICdpb3MnIHx8IHRoaXMuX3BsYXRmb3JtID09PSAnYW5kcm9pZCcpIHtcbiAgICAgIFB1c2hOb3RpZmljYXRpb25zLnJlbW92ZUFsbERlbGl2ZXJlZE5vdGlmaWNhdGlvbnMoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3BsYXRmb3JtID09PSAnd2ViJykge1xuICAgICAgLy8gVE9ETzogcmVtb3ZlIGFsbCB3ZWIgcHVzaCBub3RpZmljYXRpb25zXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlYWRBbGwoKSB7XG4gICAgZm9yIChjb25zdCBuIG9mIHRoaXMubm90aWZpY2F0aW9ucykge1xuICAgICAgbi5pc1JlYWQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLm5vdGlmeVN0YXRlQ2hhbmdlZCgpO1xuICAgIHRoaXMuaHR0cC5nZXQodGhpcy5hcGlVcmwgKyAnbm90aWZpY2F0aW9ucy9yZWFkL2FsbCcpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGdldENoYW5uZWxDb25maWcoXG4gICAgc2VuZGVySWQ6IHN0cmluZyxcbiAgICBjaGFubmVsSWQ6IHN0cmluZyxcbiAgICBsYW5ndWFnZT86IHN0cmluZ1xuICApIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxVc2VyQ2hhbm5lbENvbmZpZz4oXG4gICAgICB0aGlzLmFwaVVybCArXG4gICAgICBgc2V0dGluZ3MvY2hhbm5lbC8ke3NlbmRlcklkfS8ke2NoYW5uZWxJZH0/bGFuZ3VhZ2U9JHtsYW5ndWFnZX1gXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGFubmVsQ29uZmlnc0ZvclNlbmRlcihcbiAgICBzZW5kZXJJZDogc3RyaW5nLFxuICAgIGNoYW5uZWxJZHM6IHN0cmluZ1tdLFxuICAgIGxhbmd1YWdlPzogc3RyaW5nXG4gICkge1xuICAgIGNvbnN0IGlkc1N0ciA9IGNoYW5uZWxJZHMubWFwKCh4KSA9PiBzZW5kZXJJZCArICcsJyArIHgpLmpvaW4oJzsnKTtcbiAgICByZXR1cm4gdGhpcy5nZXRDaGFubmVsQ29uZmlnc0ludGVybmFsKGlkc1N0ciwgbGFuZ3VhZ2UpO1xuICB9XG5cbiAgcHVibGljIGdldENoYW5uZWxDb25maWdzKGlkczogQ2hhbm5lbElkW10sIGxhbmd1YWdlPzogc3RyaW5nKSB7XG4gICAgY29uc3QgaWRzU3RyID0gaWRzLm1hcCgoeCkgPT4geC5zZW5kZXJJZCArICcsJyArIHguY2hhbm5lbElkKS5qb2luKCc7Jyk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hhbm5lbENvbmZpZ3NJbnRlcm5hbChpZHNTdHIsIGxhbmd1YWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDaGFubmVsQ29uZmlnKHNlbmRlcklkOiBzdHJpbmcsIGNvbmZpZzogVXNlckNoYW5uZWxDb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8dm9pZD4oXG4gICAgICBgJHt0aGlzLmFwaVVybH1zZXR0aW5ncy9jaGFubmVsLyR7c2VuZGVySWR9YCxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q2hhbm5lbENvbmZpZ3MoY29uZmlnczogVXNlckNoYW5uZWxDb25maWdbXSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDx2b2lkPihgJHt0aGlzLmFwaVVybH1zZXR0aW5ncy9jaGFubmVsc2AsIGNvbmZpZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDaGFubmVsQ29uZmlnc0ludGVybmFsKGlkczogc3RyaW5nLCBsYW5ndWFnZT86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFVzZXJDaGFubmVsQ29uZmlnW10+KFxuICAgICAgYCR7dGhpcy5hcGlVcmx9c2V0dGluZ3MvY2hhbm5lbHM/aWRzPSR7aWRzfSZsYW5ndWFnZT0ke2xhbmd1YWdlfWBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVOb3RpZmljYXRpb25zKFxuICAgIG5ld05vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbltdLFxuICAgIG5vdGlmeUFib3V0TmV3ID0gZmFsc2VcbiAgKSB7XG4gICAgbGV0IHN0YXRlQ2hhbmdlZCA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgbiBvZiBuZXdOb3RpZmljYXRpb25zKSB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMubm90aWZpY2F0aW9ucy5maW5kKCh4KSA9PiB4LmlkID09PSBuLmlkKTtcbiAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICBpZiAoZXhpc3RpbmcuaXNSZWFkICE9PSBuLmlzUmVhZCkge1xuICAgICAgICAgIGV4aXN0aW5nLmlzUmVhZCA9IG4uaXNSZWFkO1xuICAgICAgICAgIHN0YXRlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgIGkgPCB0aGlzLm5vdGlmaWNhdGlvbnMubGVuZ3RoICYmXG4gICAgICAgICAgbi5kYXRlQ3JlYXRlZCA8IHRoaXMubm90aWZpY2F0aW9uc1tpXS5kYXRlQ3JlYXRlZFxuICAgICAgICApIHtcbiAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnNwbGljZShpLCAwLCBuKTtcbiAgICAgICAgc3RhdGVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgaWYgKG5vdGlmeUFib3V0TmV3KSB7XG4gICAgICAgICAgdGhpcy5fbmV3Tm90aWZpY2F0aW9ucy5uZXh0KG4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBmb3IgKGxldCBpID0gdGhpcy5ub3RpZmljYXRpb25zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBuID0gdGhpcy5ub3RpZmljYXRpb25zW2ldO1xuICAgICAgaWYgKFxuICAgICAgICBuZXcgRGF0ZShuLmV4cGlyYXRpb25EYXRlKS5nZXRUaW1lKCkgPCBub3cgfHxcbiAgICAgICAgIW5ld05vdGlmaWNhdGlvbnMuZmluZCgoeCkgPT4geC5pZCA9PT0gbi5pZClcbiAgICAgICkge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuc3BsaWNlKGksIDEpO1xuICAgICAgICBzdGF0ZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGF0ZUNoYW5nZWQpIHtcbiAgICAgIHRoaXMubm90aWZ5U3RhdGVDaGFuZ2VkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzYXZlVG9TdG9yYWdlKCkge1xuICAgIGNvbnN0IHN0ciA9IEpTT04uc3RyaW5naWZ5KHRoaXMubm90aWZpY2F0aW9ucyk7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMubm90aWZpY2F0aW9uc1N0b3JhZ2VLZXksIHN0cik7XG4gIH1cblxuICBwcml2YXRlIGxvYWRGcm9tU3RvcmFnZSgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RyID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMubm90aWZpY2F0aW9uc1N0b3JhZ2VLZXkpO1xuICAgICAgaWYgKHN0cikge1xuICAgICAgICBjb25zdCBub3RpZmljYXRpb25zID0gSlNPTi5wYXJzZShzdHIpIGFzIE5vdGlmaWNhdGlvbltdO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSBub3RpZmljYXRpb25zLmZpbHRlcigoeCkgPT4gISF4KTtcbiAgICAgICAgLy8gcHJlY2F1dGlvbiBmb3Igbm90aWZpY2F0aW9uLmlzUmVhZCBvZiB1bmRlZmluZWQgZXJyb3JcbiAgICAgICAgdGhpcy5ub3RpZnlTdGF0ZUNoYW5nZWQoZmFsc2UpO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLyogZW1wdHkgKi9cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU5vdGlmaWNhdGlvbkV2ZW50KFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZXZlbnRUeXBlOiBOb3RpZmljYXRpb25FdmVudFR5cGVcbiAgKSB7XG4gICAgaWYgKGV2ZW50VHlwZS5zdGFydHNXaXRoKCduZXcnKSB8fCBldmVudFR5cGUgPT09ICd1cGRhdGVkJykge1xuICAgICAgLy8gd2UgYXJlIGhhbmRsaW5nIG5ldyBhbmQgbmV3U2lsZW50XG4gICAgICB0aGlzLmdldE5vdGlmaWNhdGlvbihpZCkuc3Vic2NyaWJlKChuKSA9PiB7XG4gICAgICAgIGlmIChldmVudFR5cGUuc3RhcnRzV2l0aCgnbmV3JykgJiYgIW4uaXNSZWFkKSB7XG4gICAgICAgICAgdGhpcy5fbmV3Tm90aWZpY2F0aW9ucy5uZXh0KG4pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5ub3RpZmljYXRpb25zLmZpbmQoKHgpID0+IHguaWQgPT09IG4uaWQpO1xuICAgICAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgICBleGlzdGluZy5pc1JlYWQgPSBuLmlzUmVhZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuc3BsaWNlKDAsIDAsIG4pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubm90aWZ5U3RhdGVDaGFuZ2VkKCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2RlbGV0ZWQnKSB7XG4gICAgICB0aGlzLmRlbGV0ZU5vdGlmaWNhdG9uKGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVOb3RpZmljYXRvbihpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaSA9IHRoaXMubm90aWZpY2F0aW9ucy5maW5kSW5kZXgoKHgpID0+IHguaWQgPT09IGlkKTtcbiAgICBpZiAoaSA+PSAwKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuc3BsaWNlKGksIDEpO1xuICAgICAgdGhpcy5ub3RpZnlTdGF0ZUNoYW5nZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5vdGlmeVN0YXRlQ2hhbmdlZChwZXJzaXN0U3RhdGUgPSB0cnVlKSB7XG4gICAgaWYgKHBlcnNpc3RTdGF0ZSkge1xuICAgICAgdGhpcy5zYXZlVG9TdG9yYWdlKCk7XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlQ2hhbmdlc1N1YmplY3QubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVOb3RpZmljYXRpb25BY3Rpb24obm90aWZpY2F0aW9uQWN0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIW5vdGlmaWNhdGlvbkFjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3RpZmljYXRpb24gYWN0aW9uIGlzIGVtcHR5IScpO1xuICAgIH1cblxuICAgIGNvbnN0IGFyciA9IG5vdGlmaWNhdGlvbkFjdGlvbi5zcGxpdCgnOicpO1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbkNsaWNrOiBOb3RpZmljYXRpb25DbGljayA9IHtcbiAgICAgIGlkOiBhcnJbMF0sXG4gICAgICB0eXBlOiBhcnJbMV0gYXMgTm90aWZpY2F0aW9uVHlwZSxcbiAgICAgIHJvdXRlckxpbms6IGFyclsyXSxcbiAgICB9O1xuXG4gICAgY29uc3QgdmFsaWROb3RpZmljYXRpb25DbGlja1R5cGVzID0gWydkZWZhdWx0JywgJ2RlZXBsaW5rJ107XG4gICAgaWYgKHZhbGlkTm90aWZpY2F0aW9uQ2xpY2tUeXBlcy5pbmNsdWRlcyhub3RpZmljYXRpb25DbGljay50eXBlKSkge1xuICAgICAgdGhpcy5fY2xpY2tzU3ViamVjdC5uZXh0KG5vdGlmaWNhdGlvbkNsaWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYE51Y2xldXMuTm90aWZpY2F0aW9uczogVW5rbm93biBub3RpZmljYXRpb24gYWN0aW9uOiAnJHtub3RpZmljYXRpb25BY3Rpb259Jy5gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRGVsaXZlcmVkTm90aWZpY2F0aW9uKGlkOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5fcGxhdGZvcm0gPT09ICdpb3MnIHx8IHRoaXMuX3BsYXRmb3JtID09PSAnYW5kcm9pZCcpIHtcbiAgICAgIFB1c2hOb3RpZmljYXRpb25zLmdldERlbGl2ZXJlZE5vdGlmaWNhdGlvbnMoKS50aGVuKChsaXN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHRvUmVtb3ZlID0gbGlzdC5ub3RpZmljYXRpb25zLmZpbHRlcigobikgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldE5vdGlmaWNhdGlvblBheWxvYWREYXRhKG4pO1xuICAgICAgICAgIHJldHVybiBkYXRhLm5vdGlmaWNhdGlvbklkID09PSBpZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gVE9ETzogT24gQW5kcm9pZCB0aGlzIGRvZXMgbm90IGN1cnJlbnRseSB3b3JrIGJlY2F1c2Ugbm90aWZpY2F0aW9uSUQgaXMgbm90IHNldC5cbiAgICAgICAgLy8gVGhpcyBteSBzb2x2ZSB0aGUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pb25pYy10ZWFtL2NhcGFjaXRvci9wdWxsLzM1MjNcbiAgICAgICAgUHVzaE5vdGlmaWNhdGlvbnMucmVtb3ZlRGVsaXZlcmVkTm90aWZpY2F0aW9ucyh7XG4gICAgICAgICAgbm90aWZpY2F0aW9uczogdG9SZW1vdmUsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9wbGF0Zm9ybSA9PT0gJ3dlYicpIHtcbiAgICAgIC8vIFRPRE86IHJlbW92ZSB3ZWIgcHVzaCBub3RpZmljYXRpb25cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE5vdGlmaWNhdGlvblBheWxvYWREYXRhKFxuICAgIHB1c2hOb3RpZmljYXRpb246IFB1c2hOb3RpZmljYXRpb25TY2hlbWFcbiAgKTogUGF5bG9hZERhdGEge1xuICAgIHJldHVybiB0aGlzLl9wbGF0Zm9ybSA9PT0gJ2lvcydcbiAgICAgID8gcHVzaE5vdGlmaWNhdGlvbi5kYXRhLmRhdGFcbiAgICAgIDogcHVzaE5vdGlmaWNhdGlvbi5kYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWdpc3RlckNhcGFjaXRvckV2ZW50cygpIHtcbiAgICBhd2FpdCBQdXNoTm90aWZpY2F0aW9ucy5hZGRMaXN0ZW5lcigncHVzaE5vdGlmaWNhdGlvblJlY2VpdmVkJywgKG4pID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldE5vdGlmaWNhdGlvblBheWxvYWREYXRhKG4pO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICdOdWNsZXVzLk5vdGlmaWNhdGlvbnM6IFJlY2VpdmVkIGNhcGFjaXRvciBwdXNoIGV2ZW50OiAnICtcbiAgICAgICAgZGF0YS5ldmVudFR5cGUsXG4gICAgICAgIG5cbiAgICAgICk7XG4gICAgICB0aGlzLmhhbmRsZU5vdGlmaWNhdGlvbkV2ZW50KGRhdGEubm90aWZpY2F0aW9uSWQsIGRhdGEuZXZlbnRUeXBlKTtcbiAgICB9KTtcblxuICAgIGF3YWl0IFB1c2hOb3RpZmljYXRpb25zLmFkZExpc3RlbmVyKFxuICAgICAgJ3B1c2hOb3RpZmljYXRpb25BY3Rpb25QZXJmb3JtZWQnLFxuICAgICAgKGEpID0+IHtcbiAgICAgICAgbGV0IGFjdGlvbiA9IChhIGFzIGFueSkubm90aWZpY2F0aW9uLmRhdGEubm90aWZpY2F0aW9uQWN0aW9uO1xuICAgICAgICBpZiAodGhpcy5fcGxhdGZvcm0gPT09ICdpb3MnKSB7XG4gICAgICAgICAgYWN0aW9uID0gKGEgYXMgYW55KS5ub3RpZmljYXRpb24uZGF0YS5kYXRhLm5vdGlmaWNhdGlvbkFjdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAnTnVjbGV1cy5Ob3RpZmljYXRpb25zOiBSZWNlaXZlZCBjYXBhY2l0b3IgYWN0aW9uIGV2ZW50JyxcbiAgICAgICAgICBhY3Rpb25cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb25BY3Rpb24oYWN0aW9uKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlcldlYlB1c2hFdmVudHMoKSB7XG4gICAgdGhpcy5zd1B1c2gubWVzc2FnZXMuc3Vic2NyaWJlKChuKSA9PiB7XG4gICAgICBjb25zdCBkYXRhOiBQYXlsb2FkRGF0YSA9IChuIGFzIGFueSkuZGF0YTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAnTnVjbGV1cy5Ob3RpZmljYXRpb25zOiBSZWNlaXZlZCBXZWJQdXNoIGV2ZW50OiAnICsgZGF0YS5ldmVudFR5cGUsXG4gICAgICAgIG5cbiAgICAgICk7XG4gICAgICB0aGlzLmhhbmRsZU5vdGlmaWNhdGlvbkV2ZW50KGRhdGEubm90aWZpY2F0aW9uSWQsIGRhdGEuZXZlbnRUeXBlKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3dQdXNoLm5vdGlmaWNhdGlvbkNsaWNrcy5zdWJzY3JpYmUoKGFjdGlvbikgPT4ge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICdOdWNsZXVzLk5vdGlmaWNhdGlvbnM6IFJlY2VpdmVkIFdlYlB1c2ggYWN0aW9uIGV2ZW50JyxcbiAgICAgICAgYWN0aW9uXG4gICAgICApO1xuICAgICAgY29uc3QgdGFnID0gYWN0aW9uLm5vdGlmaWNhdGlvbi50YWc7XG4gICAgICB0aGlzLmhhbmRsZU5vdGlmaWNhdGlvbkFjdGlvbih0YWcpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZWdpc3RyYXRpb25JbmZvKCk6IFByb21pc2U8UmVnaXN0cmF0aW9uPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChfcmVzb2x2ZSwgX3JlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVnaXN0cmF0aW9uSWQgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oXG4gICAgICAgIHRoaXMucmVnaXN0cmF0aW9uU3RvcmFnZUtleVxuICAgICAgKSBhcyBzdHJpbmc7XG4gICAgICBpZiAodGhpcy5fcGxhdGZvcm0gPT09ICdhbmRyb2lkJyB8fCB0aGlzLl9wbGF0Zm9ybSA9PT0gJ2lvcycpIHtcbiAgICAgICAgLy8gY2FwYWNpdG9yIHBsYXRmb3JtXG4gICAgICAgIGNvbnN0IGxpc3RlbmVyID0gUHVzaE5vdGlmaWNhdGlvbnMuYWRkTGlzdGVuZXIoXG4gICAgICAgICAgJ3JlZ2lzdHJhdGlvbicsXG4gICAgICAgICAgKHRva2VuKSA9PiB7XG4gICAgICAgICAgICBsaXN0ZW5lci5yZW1vdmUoKTtcbiAgICAgICAgICAgIF9yZXNvbHZlKHtcbiAgICAgICAgICAgICAgaWQ6IHJlZ2lzdHJhdGlvbklkLFxuICAgICAgICAgICAgICB0b2tlbjogdG9rZW4udmFsdWUsXG4gICAgICAgICAgICAgIHBsYXRmb3JtOiB0aGlzLl9wbGF0Zm9ybSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgUHVzaE5vdGlmaWNhdGlvbnMucmVnaXN0ZXIoKS5jYXRjaCgoZXJyb3IpID0+XG4gICAgICAgICAgX3JlamVjdCgnQ291bGQgbm90IHJlZ2lzdGVyIGZvciBub3RpZmljYXRpb25zOicgKyBlcnJvcilcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fcGxhdGZvcm0gPT09ICd3ZWInKSB7XG4gICAgICAgIC8vIFdlYiBQdXNoIEFQSVxuICAgICAgICB0aGlzLmh0dHAuZ2V0PFdlYktleT4odGhpcy5hcGlVcmwgKyAncmVnaXN0cmF0aW9uL3dlYmtleScpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKGtleSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRXZWJQdXNoU3Vic2NyaXB0aW9uKGtleS5wdWJsaWNLZXkpLnRoZW4oKHN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB0ID0gSlNPTi5zdHJpbmdpZnkoc3Vic2NyaXB0aW9uLnRvSlNPTigpKTtcbiAgICAgICAgICAgICAgX3Jlc29sdmUoeyBpZDogcmVnaXN0cmF0aW9uSWQsIHRva2VuOiB0LCBwbGF0Zm9ybTogJ3dlYicgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IF9yZWplY3QoZXJyb3IpXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3JlamVjdChgTnVjbGV1cy5Ob3RpZmljYXRpb25zOiBQbGF0Zm9ybSBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFdlYlB1c2hTdWJzY3JpcHRpb24ocHVibGljS2V5OiBzdHJpbmcpOiBQcm9taXNlPFB1c2hTdWJzY3JpcHRpb24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKF9yZXNvbHZlLCBfcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnN3UHVzaC5zdWJzY3JpcHRpb24uc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgICAgIGlmIChzdWJzY3JpcHRpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgX3Jlc29sdmUoc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zd1B1c2hcbiAgICAgICAgICAgICAgLnJlcXVlc3RTdWJzY3JpcHRpb24oeyBzZXJ2ZXJQdWJsaWNLZXk6IHB1YmxpY0tleSB9KVxuICAgICAgICAgICAgICAudGhlbigocykgPT4gX3Jlc29sdmUocykpXG4gICAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4gX3JlamVjdChlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICdOdWNsZXVzLk5vdGlmaWNhdGlvbnM6IENhbm5vdCBnZXQgd2ViIHB1c2ggc3Vic2NyaXB0aW9uJyxcbiAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgKTtcbiAgICAgICAgICBfcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
398
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.SwPush }, { type: i3.NucleusAppService }, { type: i4.NucleusNotificationsConfig }] });
399
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVjbGV1cy1ub3RpZmljYXRpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nL251Y2xldXMvbnVjbGV1cy1ub3RpZmljYXRpb25zL3NyYy9saWIvbnVjbGV1cy1ub3RpZmljYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsaUJBQWlCLEdBRWxCLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQU1MLDBCQUEwQixHQU8zQixNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBS2xCLE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsWUFDVSxJQUFnQixFQUNoQixNQUFjLEVBQ2QsVUFBNkIsRUFDckMsTUFBa0M7UUFIMUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFXdEIsMkJBQXNCLEdBQ3JDLG9DQUFvQyxDQUFDO1FBQ3RCLDRCQUF1QixHQUFHLGdDQUFnQyxDQUFDO1FBRXBFLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBQ2hELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQXFCLENBQUM7UUFDbEQseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU1Qyxr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LElBQUksWUFBWSxJQUFJLElBQUksRUFBRSxDQUFDO3dCQUN6QixRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3pCLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixJQUFJLENBQUMsTUFBTTs2QkFDUixtQkFBbUIsQ0FBQyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsQ0FBQzs2QkFDbkQsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7NkJBQ3hCLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDZixPQUFPLENBQUMsS0FBSyxDQUNYLHlEQUF5RCxFQUN6RCxLQUFLLENBQ04sQ0FBQztvQkFDRixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pCLENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBM2RVLDJCQUEyQjtrSEFBM0IsMkJBQTJCLGNBRjFCLE1BQU07OzJGQUVQLDJCQUEyQjtrQkFIdkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3dQdXNoIH0gZnJvbSAnQGFuZ3VsYXIvc2VydmljZS13b3JrZXInO1xuaW1wb3J0IHtcbiAgUHVzaE5vdGlmaWNhdGlvbnMsXG4gIFB1c2hOb3RpZmljYXRpb25TY2hlbWEsXG59IGZyb20gJ0BjYXBhY2l0b3IvcHVzaC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7IE51Y2xldXNBcHBTZXJ2aWNlIH0gZnJvbSAnQGtvbGVrdG9yL251Y2xldXMtY29tbW9uJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDaGFubmVsSWQsXG4gIE5vdGlmaWNhdGlvbixcbiAgTm90aWZpY2F0aW9uQ2xpY2ssXG4gIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSxcbiAgTm90aWZpY2F0aW9uVHlwZSxcbiAgTnVjbGV1c05vdGlmaWNhdGlvbnNDb25maWcsXG4gIFBheWxvYWREYXRhLFxuICBQbGF0Zm9ybVZhbHVlLFxuICBSZWdpc3RyYXRpb24sXG4gIFJlZ2lzdHJhdGlvblJlc3VsdCxcbiAgVXNlckNoYW5uZWxDb25maWcsXG4gIFdlYktleSxcbn0gZnJvbSAnLi9tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTnVjbGV1c05vdGlmaWNhdGlvbnNTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgc3dQdXNoOiBTd1B1c2gsXG4gICAgcHJpdmF0ZSBhcHBTZXJ2aWNlOiBOdWNsZXVzQXBwU2VydmljZSxcbiAgICBjb25maWc6IE51Y2xldXNOb3RpZmljYXRpb25zQ29uZmlnXG4gICkge1xuICAgIGxldCB1cmwgPSBjb25maWcuc2VydmVyQXBpVXJsO1xuICAgIGlmICghdXJsLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgIHVybCArPSAnLyc7XG4gICAgfVxuICAgIHRoaXMuYXBpVXJsID0gdXJsO1xuICB9XG5cbiAgcHJpdmF0ZSBhcGlVcmw6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSByZWdpc3RyYXRpb25TdG9yYWdlS2V5ID1cbiAgICAnTnVjbGV1c05vdGlmaWNhdGlvbnNSZWdpc3RyYXRpb25JZCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgbm90aWZpY2F0aW9uc1N0b3JhZ2VLZXkgPSAnTnVjbGV1c05vdGlmaWNhdGlvbnNMb2NhbENhY2hlJztcbiAgcHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtVmFsdWU7XG4gIHByaXZhdGUgX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbmV3Tm90aWZpY2F0aW9ucyA9IG5ldyBTdWJqZWN0PE5vdGlmaWNhdGlvbj4oKTtcbiAgcHJpdmF0ZSBfY2xpY2tzU3ViamVjdCA9IG5ldyBTdWJqZWN0PE5vdGlmaWNhdGlvbkNsaWNrPigpO1xuICBwcml2YXRlIF9zdGF0ZUNoYW5nZXNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uW10gPSBbXTtcblxuICBwdWJsaWMgZ2V0IHVucmVhZENvdW50KCkge1xuICAgIHJldHVybiB0aGlzLm5vdGlmaWNhdGlvbnMuZmlsdGVyKCh4KSA9PiAheC5pc1JlYWQpLmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmV3Tm90aWZpY2F0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fbmV3Tm90aWZpY2F0aW9ucy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2xpY2tzKCkge1xuICAgIHJldHVybiB0aGlzLl9jbGlja3NTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIHB1YmxpYyBnZXQgc3RhdGVDaGFuZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZUNoYW5nZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0luaXRpYWxpemVkKCkge1xuICAgIHJldHVybiB0aGlzLl9pc0luaXRpYWxpemVkO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUoKSB7XG4gICAgLy8gbWFrZSBzdXJlIGFwcCBzZXJ2aWNlIGhhcyBmaW5pc2hlZCBpbml0aWFsaXppbmdcbiAgICBhd2FpdCB0aGlzLmFwcFNlcnZpY2UuaW5pdCgpO1xuXG4gICAgdGhpcy5sb2FkRnJvbVN0b3JhZ2UoKTtcblxuICAgIGlmICh0aGlzLmFwcFNlcnZpY2UuaXNOYXRpdmUpIHtcbiAgICAgIHRoaXMuX3BsYXRmb3JtID0gdGhpcy5hcHBTZXJ2aWNlLmRldmljZUluZm8ucGxhdGZvcm0gYXMgUGxhdGZvcm1WYWx1ZTtcbiAgICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJDYXBhY2l0b3JFdmVudHMoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc3dQdXNoLmlzRW5hYmxlZCkge1xuICAgICAgdGhpcy5fcGxhdGZvcm0gPSAnd2ViJztcbiAgICAgIHRoaXMucmVnaXN0ZXJXZWJQdXNoRXZlbnRzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ051Y2xldXMuTm90aWZpY2F0aW9uczogVGhlcmUgaXMgbm8gcHVzaCBjYXBhYmlsaXR5LCB0aW1lciB3aWxsIGJlIHVzZWQgdG8gdXBkYXRlIG5vdGlmaWNhdGlvbnMnXG4gICAgICApO1xuICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnVXBkYXRpbmcgbm90aWZpY2F0aW9ucy4uLicpO1xuICAgICAgICB0aGlzLnJlZnJlc2godHJ1ZSk7XG4gICAgICB9LCA1ICogNjAgKiAxMDAwKTtcbiAgICB9XG4gICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXIoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKF9yZXNvbHZlLCBfcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdldFJlZ2lzdHJhdGlvbkluZm8oKVxuICAgICAgICAudGhlbigoaW5mbykgPT4ge1xuICAgICAgICAgIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3Q8UmVnaXN0cmF0aW9uUmVzdWx0Pih0aGlzLmFwaVVybCArICdyZWdpc3RyYXRpb24nLCBpbmZvKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgIG5leHQ6IChyZWdSZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdHJhdGlvblN0b3JhZ2VLZXksXG4gICAgICAgICAgICAgICAgICByZWdSZXN1bHQuaWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIF9yZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAnTnVjbGV1cy5Ob3RpZmljYXRpb25zOiBGYWlsZWQgdG8gc2VuZCBub3RpZmljYXRpb24gcmVnaXN0cmF0aW9uIHRvIHNlcnZlci4nLFxuICAgICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIF9yZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gX3JlamVjdChlcnJvcikpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVucmVnaXN0ZXIoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKF9yZXNvbHZlLCBfcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdldFJlZ2lzdHJhdGlvbkluZm8oKVxuICAgICAgICAudGhlbigoaW5mbykgPT4ge1xuICAgICAgICAgIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnJlcXVlc3Q8YW55PignREVMRVRFJywgdGhpcy5hcGlVcmwgKyAncmVnaXN0cmF0aW9uJywge1xuICAgICAgICAgICAgICBib2R5OiBpbmZvLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMucmVnaXN0cmF0aW9uU3RvcmFnZUtleSk7XG4gICAgICAgICAgICAgICAgX3Jlc29sdmUobnVsbCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgICdOdWNsZXVzLk5vdGlmaWNhdGlvbnM6IEZhaWxlZCB0byByZW1vdmUgcmVnaXN0cmF0aW9uIGZyb20gc2VydmVyLicsXG4gICAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgX3JlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBfcmVqZWN0KGVycm9yKSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaChub3RpZnlBYm91dE5ldyA9IGZhbHNlKSB7XG4gICAgdGhpcy5odHRwXG4gICAgICAuZ2V0PE5vdGlmaWNhdGlvbltdPih0aGlzLmFwaVVybCArICdub3RpZmljYXRpb25zJylcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZU5vdGlmaWNhdGlvbnMocmVzLCBub3RpZnlBYm91dE5ldyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROb3RpZmljYXRpb24oaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uPiB7XG4gICAgY29uc3QgbG9jYWxOb3RpZmljYXRpb24gPSB0aGlzLm5vdGlmaWNhdGlvbnMuZmluZCgoeCkgPT4geC5pZCA9PT0gaWQpO1xuICAgIGlmIChsb2NhbE5vdGlmaWNhdGlvbikge1xuICAgICAgcmV0dXJuIG9mKGxvY2FsTm90aWZpY2F0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8Tm90aWZpY2F0aW9uPih0aGlzLmFwaVVybCArICdub3RpZmljYXRpb25zLycgKyBpZCk7XG4gIH1cblxuICBwdWJsaWMgcmVhZE5vdGlmaWNhdGlvbihpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgbiA9IHRoaXMubm90aWZpY2F0aW9ucy5maW5kKCh4KSA9PiB4LmlkID09PSBpZCk7XG4gICAgaWYgKG4gJiYgIW4uaXNSZWFkKSB7XG4gICAgICBuLmlzUmVhZCA9IHRydWU7XG4gICAgICB0aGlzLm5vdGlmeVN0YXRlQ2hhbmdlZCgpO1xuICAgIH1cbiAgICB0aGlzLmh0dHAuZ2V0KHRoaXMuYXBpVXJsICsgJ25vdGlmaWNhdGlvbnMvcmVhZC8nICsgaWQpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGRpc21pc3NOb3RpZmljYXRpb24oaWQ6IHN0cmluZykge1xuICAgIHRoaXMuZGVsZXRlTm90aWZpY2F0b24oaWQpO1xuICAgIHRoaXMuaHR0cC5kZWxldGUodGhpcy5hcGlVcmwgKyAnbm90aWZpY2F0aW9ucy8nICsgaWQpLnN1YnNjcmliZSgpO1xuICAgIHRoaXMucmVtb3ZlRGVsaXZlcmVkTm90aWZpY2F0aW9uKGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNtaXNzQWxsKCkge1xuICAgIHRoaXMubm90aWZpY2F0aW9ucy5zcGxpY2UoMCk7XG4gICAgdGhpcy5ub3RpZnlTdGF0ZUNoYW5nZWQoKTtcbiAgICB0aGlzLmh0dHAuZGVsZXRlKHRoaXMuYXBpVXJsICsgJ25vdGlmaWNhdGlvbnMvYWxsJykuc3Vic2NyaWJlKCk7XG4gICAgaWYgKHRoaXMuX3BsYXRmb3JtID09PSAnaW9zJyB8fCB0aGlzLl9wbGF0Zm9ybSA9PT0gJ2FuZHJvaWQnKSB7XG4gICAgICBQdXNoTm90aWZpY2F0aW9ucy5yZW1vdmVBbGxEZWxpdmVyZWROb3RpZmljYXRpb25zKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9wbGF0Zm9ybSA9PT0gJ3dlYicpIHtcbiAgICAgIC8vIFRPRE86IHJlbW92ZSBhbGwgd2ViIHB1c2ggbm90aWZpY2F0aW9uc1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWFkQWxsKCkge1xuICAgIGZvciAoY29uc3QgbiBvZiB0aGlzLm5vdGlmaWNhdGlvbnMpIHtcbiAgICAgIG4uaXNSZWFkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5ub3RpZnlTdGF0ZUNoYW5nZWQoKTtcbiAgICB0aGlzLmh0dHAuZ2V0KHRoaXMuYXBpVXJsICsgJ25vdGlmaWNhdGlvbnMvcmVhZC9hbGwnKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGFubmVsQ29uZmlnKFxuICAgIHNlbmRlcklkOiBzdHJpbmcsXG4gICAgY2hhbm5lbElkOiBzdHJpbmcsXG4gICAgbGFuZ3VhZ2U/OiBzdHJpbmdcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VXNlckNoYW5uZWxDb25maWc+KFxuICAgICAgdGhpcy5hcGlVcmwgK1xuICAgICAgYHNldHRpbmdzL2NoYW5uZWwvJHtzZW5kZXJJZH0vJHtjaGFubmVsSWR9P2xhbmd1YWdlPSR7bGFuZ3VhZ2V9YFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2hhbm5lbENvbmZpZ3NGb3JTZW5kZXIoXG4gICAgc2VuZGVySWQ6IHN0cmluZyxcbiAgICBjaGFubmVsSWRzOiBzdHJpbmdbXSxcbiAgICBsYW5ndWFnZT86IHN0cmluZ1xuICApIHtcbiAgICBjb25zdCBpZHNTdHIgPSBjaGFubmVsSWRzLm1hcCgoeCkgPT4gc2VuZGVySWQgKyAnLCcgKyB4KS5qb2luKCc7Jyk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hhbm5lbENvbmZpZ3NJbnRlcm5hbChpZHNTdHIsIGxhbmd1YWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGFubmVsQ29uZmlncyhpZHM6IENoYW5uZWxJZFtdLCBsYW5ndWFnZT86IHN0cmluZykge1xuICAgIGNvbnN0IGlkc1N0ciA9IGlkcy5tYXAoKHgpID0+IHguc2VuZGVySWQgKyAnLCcgKyB4LmNoYW5uZWxJZCkuam9pbignOycpO1xuICAgIHJldHVybiB0aGlzLmdldENoYW5uZWxDb25maWdzSW50ZXJuYWwoaWRzU3RyLCBsYW5ndWFnZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q2hhbm5lbENvbmZpZyhzZW5kZXJJZDogc3RyaW5nLCBjb25maWc6IFVzZXJDaGFubmVsQ29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHZvaWQ+KFxuICAgICAgYCR7dGhpcy5hcGlVcmx9c2V0dGluZ3MvY2hhbm5lbC8ke3NlbmRlcklkfWAsXG4gICAgICBjb25maWdcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNldENoYW5uZWxDb25maWdzKGNvbmZpZ3M6IFVzZXJDaGFubmVsQ29uZmlnW10pIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8dm9pZD4oYCR7dGhpcy5hcGlVcmx9c2V0dGluZ3MvY2hhbm5lbHNgLCBjb25maWdzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2hhbm5lbENvbmZpZ3NJbnRlcm5hbChpZHM6IHN0cmluZywgbGFuZ3VhZ2U/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxVc2VyQ2hhbm5lbENvbmZpZ1tdPihcbiAgICAgIGAke3RoaXMuYXBpVXJsfXNldHRpbmdzL2NoYW5uZWxzP2lkcz0ke2lkc30mbGFuZ3VhZ2U9JHtsYW5ndWFnZX1gXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTm90aWZpY2F0aW9ucyhcbiAgICBuZXdOb3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25bXSxcbiAgICBub3RpZnlBYm91dE5ldyA9IGZhbHNlXG4gICkge1xuICAgIGxldCBzdGF0ZUNoYW5nZWQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IG4gb2YgbmV3Tm90aWZpY2F0aW9ucykge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLm5vdGlmaWNhdGlvbnMuZmluZCgoeCkgPT4geC5pZCA9PT0gbi5pZCk7XG4gICAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgaWYgKGV4aXN0aW5nLmlzUmVhZCAhPT0gbi5pc1JlYWQpIHtcbiAgICAgICAgICBleGlzdGluZy5pc1JlYWQgPSBuLmlzUmVhZDtcbiAgICAgICAgICBzdGF0ZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICBpIDwgdGhpcy5ub3RpZmljYXRpb25zLmxlbmd0aCAmJlxuICAgICAgICAgIG4uZGF0ZUNyZWF0ZWQgPCB0aGlzLm5vdGlmaWNhdGlvbnNbaV0uZGF0ZUNyZWF0ZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5zcGxpY2UoaSwgMCwgbik7XG4gICAgICAgIHN0YXRlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIGlmIChub3RpZnlBYm91dE5ldykge1xuICAgICAgICAgIHRoaXMuX25ld05vdGlmaWNhdGlvbnMubmV4dChuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgZm9yIChsZXQgaSA9IHRoaXMubm90aWZpY2F0aW9ucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgbiA9IHRoaXMubm90aWZpY2F0aW9uc1tpXTtcbiAgICAgIGlmIChcbiAgICAgICAgbmV3IERhdGUobi5leHBpcmF0aW9uRGF0ZSkuZ2V0VGltZSgpIDwgbm93IHx8XG4gICAgICAgICFuZXdOb3RpZmljYXRpb25zLmZpbmQoKHgpID0+IHguaWQgPT09IG4uaWQpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnNwbGljZShpLCAxKTtcbiAgICAgICAgc3RhdGVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdGVDaGFuZ2VkKSB7XG4gICAgICB0aGlzLm5vdGlmeVN0YXRlQ2hhbmdlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2F2ZVRvU3RvcmFnZSgpIHtcbiAgICBjb25zdCBzdHIgPSBKU09OLnN0cmluZ2lmeSh0aGlzLm5vdGlmaWNhdGlvbnMpO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLm5vdGlmaWNhdGlvbnNTdG9yYWdlS2V5LCBzdHIpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRnJvbVN0b3JhZ2UoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0ciA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLm5vdGlmaWNhdGlvbnNTdG9yYWdlS2V5KTtcbiAgICAgIGlmIChzdHIpIHtcbiAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IEpTT04ucGFyc2Uoc3RyKSBhcyBOb3RpZmljYXRpb25bXTtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0gbm90aWZpY2F0aW9ucy5maWx0ZXIoKHgpID0+ICEheCk7XG4gICAgICAgIC8vIHByZWNhdXRpb24gZm9yIG5vdGlmaWNhdGlvbi5pc1JlYWQgb2YgdW5kZWZpbmVkIGVycm9yXG4gICAgICAgIHRoaXMubm90aWZ5U3RhdGVDaGFuZ2VkKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8qIGVtcHR5ICovXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVOb3RpZmljYXRpb25FdmVudChcbiAgICBpZDogc3RyaW5nLFxuICAgIGV2ZW50VHlwZTogTm90aWZpY2F0aW9uRXZlbnRUeXBlXG4gICkge1xuICAgIGlmIChldmVudFR5cGUuc3RhcnRzV2l0aCgnbmV3JykgfHwgZXZlbnRUeXBlID09PSAndXBkYXRlZCcpIHtcbiAgICAgIC8vIHdlIGFyZSBoYW5kbGluZyBuZXcgYW5kIG5ld1NpbGVudFxuICAgICAgdGhpcy5nZXROb3RpZmljYXRpb24oaWQpLnN1YnNjcmliZSgobikgPT4ge1xuICAgICAgICBpZiAoZXZlbnRUeXBlLnN0YXJ0c1dpdGgoJ25ldycpICYmICFuLmlzUmVhZCkge1xuICAgICAgICAgIHRoaXMuX25ld05vdGlmaWNhdGlvbnMubmV4dChuKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMubm90aWZpY2F0aW9ucy5maW5kKCh4KSA9PiB4LmlkID09PSBuLmlkKTtcbiAgICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgICAgZXhpc3RpbmcuaXNSZWFkID0gbi5pc1JlYWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnNwbGljZSgwLCAwLCBuKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5vdGlmeVN0YXRlQ2hhbmdlZCgpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdkZWxldGVkJykge1xuICAgICAgdGhpcy5kZWxldGVOb3RpZmljYXRvbihpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlTm90aWZpY2F0b24oaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGkgPSB0aGlzLm5vdGlmaWNhdGlvbnMuZmluZEluZGV4KCh4KSA9PiB4LmlkID09PSBpZCk7XG4gICAgaWYgKGkgPj0gMCkge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnNwbGljZShpLCAxKTtcbiAgICAgIHRoaXMubm90aWZ5U3RhdGVDaGFuZ2VkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBub3RpZnlTdGF0ZUNoYW5nZWQocGVyc2lzdFN0YXRlID0gdHJ1ZSkge1xuICAgIGlmIChwZXJzaXN0U3RhdGUpIHtcbiAgICAgIHRoaXMuc2F2ZVRvU3RvcmFnZSgpO1xuICAgIH1cbiAgICB0aGlzLl9zdGF0ZUNoYW5nZXNTdWJqZWN0Lm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTm90aWZpY2F0aW9uQWN0aW9uKG5vdGlmaWNhdGlvbkFjdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFub3RpZmljYXRpb25BY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm90aWZpY2F0aW9uIGFjdGlvbiBpcyBlbXB0eSEnKTtcbiAgICB9XG5cbiAgICBjb25zdCBhcnIgPSBub3RpZmljYXRpb25BY3Rpb24uc3BsaXQoJzonKTtcbiAgICBjb25zdCBub3RpZmljYXRpb25DbGljazogTm90aWZpY2F0aW9uQ2xpY2sgPSB7XG4gICAgICBpZDogYXJyWzBdLFxuICAgICAgdHlwZTogYXJyWzFdIGFzIE5vdGlmaWNhdGlvblR5cGUsXG4gICAgICByb3V0ZXJMaW5rOiBhcnJbMl0sXG4gICAgfTtcblxuICAgIGNvbnN0IHZhbGlkTm90aWZpY2F0aW9uQ2xpY2tUeXBlcyA9IFsnZGVmYXVsdCcsICdkZWVwbGluayddO1xuICAgIGlmICh2YWxpZE5vdGlmaWNhdGlvbkNsaWNrVHlwZXMuaW5jbHVkZXMobm90aWZpY2F0aW9uQ2xpY2sudHlwZSkpIHtcbiAgICAgIHRoaXMuX2NsaWNrc1N1YmplY3QubmV4dChub3RpZmljYXRpb25DbGljayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBOdWNsZXVzLk5vdGlmaWNhdGlvbnM6IFVua25vd24gbm90aWZpY2F0aW9uIGFjdGlvbjogJyR7bm90aWZpY2F0aW9uQWN0aW9ufScuYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZURlbGl2ZXJlZE5vdGlmaWNhdGlvbihpZDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuX3BsYXRmb3JtID09PSAnaW9zJyB8fCB0aGlzLl9wbGF0Zm9ybSA9PT0gJ2FuZHJvaWQnKSB7XG4gICAgICBQdXNoTm90aWZpY2F0aW9ucy5nZXREZWxpdmVyZWROb3RpZmljYXRpb25zKCkudGhlbigobGlzdCkgPT4ge1xuICAgICAgICBjb25zdCB0b1JlbW92ZSA9IGxpc3Qubm90aWZpY2F0aW9ucy5maWx0ZXIoKG4pID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXROb3RpZmljYXRpb25QYXlsb2FkRGF0YShuKTtcbiAgICAgICAgICByZXR1cm4gZGF0YS5ub3RpZmljYXRpb25JZCA9PT0gaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFRPRE86IE9uIEFuZHJvaWQgdGhpcyBkb2VzIG5vdCBjdXJyZW50bHkgd29yayBiZWNhdXNlIG5vdGlmaWNhdGlvbklEIGlzIG5vdCBzZXQuXG4gICAgICAgIC8vIFRoaXMgbXkgc29sdmUgdGhlIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vaW9uaWMtdGVhbS9jYXBhY2l0b3IvcHVsbC8zNTIzXG4gICAgICAgIFB1c2hOb3RpZmljYXRpb25zLnJlbW92ZURlbGl2ZXJlZE5vdGlmaWNhdGlvbnMoe1xuICAgICAgICAgIG5vdGlmaWNhdGlvbnM6IHRvUmVtb3ZlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fcGxhdGZvcm0gPT09ICd3ZWInKSB7XG4gICAgICAvLyBUT0RPOiByZW1vdmUgd2ViIHB1c2ggbm90aWZpY2F0aW9uXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXROb3RpZmljYXRpb25QYXlsb2FkRGF0YShcbiAgICBwdXNoTm90aWZpY2F0aW9uOiBQdXNoTm90aWZpY2F0aW9uU2NoZW1hXG4gICk6IFBheWxvYWREYXRhIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhdGZvcm0gPT09ICdpb3MnXG4gICAgICA/IHB1c2hOb3RpZmljYXRpb24uZGF0YS5kYXRhXG4gICAgICA6IHB1c2hOb3RpZmljYXRpb24uZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVnaXN0ZXJDYXBhY2l0b3JFdmVudHMoKSB7XG4gICAgYXdhaXQgUHVzaE5vdGlmaWNhdGlvbnMuYWRkTGlzdGVuZXIoJ3B1c2hOb3RpZmljYXRpb25SZWNlaXZlZCcsIChuKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXROb3RpZmljYXRpb25QYXlsb2FkRGF0YShuKTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAnTnVjbGV1cy5Ob3RpZmljYXRpb25zOiBSZWNlaXZlZCBjYXBhY2l0b3IgcHVzaCBldmVudDogJyArXG4gICAgICAgIGRhdGEuZXZlbnRUeXBlLFxuICAgICAgICBuXG4gICAgICApO1xuICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb25FdmVudChkYXRhLm5vdGlmaWNhdGlvbklkLCBkYXRhLmV2ZW50VHlwZSk7XG4gICAgfSk7XG5cbiAgICBhd2FpdCBQdXNoTm90aWZpY2F0aW9ucy5hZGRMaXN0ZW5lcihcbiAgICAgICdwdXNoTm90aWZpY2F0aW9uQWN0aW9uUGVyZm9ybWVkJyxcbiAgICAgIChhKSA9PiB7XG4gICAgICAgIGxldCBhY3Rpb24gPSAoYSBhcyBhbnkpLm5vdGlmaWNhdGlvbi5kYXRhLm5vdGlmaWNhdGlvbkFjdGlvbjtcbiAgICAgICAgaWYgKHRoaXMuX3BsYXRmb3JtID09PSAnaW9zJykge1xuICAgICAgICAgIGFjdGlvbiA9IChhIGFzIGFueSkubm90aWZpY2F0aW9uLmRhdGEuZGF0YS5ub3RpZmljYXRpb25BY3Rpb247XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgJ051Y2xldXMuTm90aWZpY2F0aW9uczogUmVjZWl2ZWQgY2FwYWNpdG9yIGFjdGlvbiBldmVudCcsXG4gICAgICAgICAgYWN0aW9uXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuaGFuZGxlTm90aWZpY2F0aW9uQWN0aW9uKGFjdGlvbik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJXZWJQdXNoRXZlbnRzKCkge1xuICAgIHRoaXMuc3dQdXNoLm1lc3NhZ2VzLnN1YnNjcmliZSgobikgPT4ge1xuICAgICAgY29uc3QgZGF0YTogUGF5bG9hZERhdGEgPSAobiBhcyBhbnkpLmRhdGE7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ051Y2xldXMuTm90aWZpY2F0aW9uczogUmVjZWl2ZWQgV2ViUHVzaCBldmVudDogJyArIGRhdGEuZXZlbnRUeXBlLFxuICAgICAgICBuXG4gICAgICApO1xuICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb25FdmVudChkYXRhLm5vdGlmaWNhdGlvbklkLCBkYXRhLmV2ZW50VHlwZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnN3UHVzaC5ub3RpZmljYXRpb25DbGlja3Muc3Vic2NyaWJlKChhY3Rpb24pID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAnTnVjbGV1cy5Ob3RpZmljYXRpb25zOiBSZWNlaXZlZCBXZWJQdXNoIGFjdGlvbiBldmVudCcsXG4gICAgICAgIGFjdGlvblxuICAgICAgKTtcbiAgICAgIGNvbnN0IHRhZyA9IGFjdGlvbi5ub3RpZmljYXRpb24udGFnO1xuICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb25BY3Rpb24odGFnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVnaXN0cmF0aW9uSW5mbygpOiBQcm9taXNlPFJlZ2lzdHJhdGlvbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgoX3Jlc29sdmUsIF9yZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlZ2lzdHJhdGlvbklkID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFxuICAgICAgICB0aGlzLnJlZ2lzdHJhdGlvblN0b3JhZ2VLZXlcbiAgICAgICkgYXMgc3RyaW5nO1xuICAgICAgaWYgKHRoaXMuX3BsYXRmb3JtID09PSAnYW5kcm9pZCcgfHwgdGhpcy5fcGxhdGZvcm0gPT09ICdpb3MnKSB7XG4gICAgICAgIC8vIGNhcGFjaXRvciBwbGF0Zm9ybVxuICAgICAgICBjb25zdCBsaXN0ZW5lciA9IFB1c2hOb3RpZmljYXRpb25zLmFkZExpc3RlbmVyKFxuICAgICAgICAgICdyZWdpc3RyYXRpb24nLFxuICAgICAgICAgICh0b2tlbikgPT4ge1xuICAgICAgICAgICAgbGlzdGVuZXIucmVtb3ZlKCk7XG4gICAgICAgICAgICBfcmVzb2x2ZSh7XG4gICAgICAgICAgICAgIGlkOiByZWdpc3RyYXRpb25JZCxcbiAgICAgICAgICAgICAgdG9rZW46IHRva2VuLnZhbHVlLFxuICAgICAgICAgICAgICBwbGF0Zm9ybTogdGhpcy5fcGxhdGZvcm0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIFB1c2hOb3RpZmljYXRpb25zLnJlZ2lzdGVyKCkuY2F0Y2goKGVycm9yKSA9PlxuICAgICAgICAgIF9yZWplY3QoJ0NvdWxkIG5vdCByZWdpc3RlciBmb3Igbm90aWZpY2F0aW9uczonICsgZXJyb3IpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX3BsYXRmb3JtID09PSAnd2ViJykge1xuICAgICAgICAvLyBXZWIgUHVzaCBBUElcbiAgICAgICAgdGhpcy5odHRwLmdldDxXZWJLZXk+KHRoaXMuYXBpVXJsICsgJ3JlZ2lzdHJhdGlvbi93ZWJrZXknKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChrZXkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0V2ViUHVzaFN1YnNjcmlwdGlvbihrZXkucHVibGljS2V5KS50aGVuKChzdWJzY3JpcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdCA9IEpTT04uc3RyaW5naWZ5KHN1YnNjcmlwdGlvbi50b0pTT04oKSk7XG4gICAgICAgICAgICAgIF9yZXNvbHZlKHsgaWQ6IHJlZ2lzdHJhdGlvbklkLCB0b2tlbjogdCwgcGxhdGZvcm06ICd3ZWInIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiBfcmVqZWN0KGVycm9yKVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9yZWplY3QoYE51Y2xldXMuTm90aWZpY2F0aW9uczogUGxhdGZvcm0gaXMgbm90IHN1cHBvcnRlZGApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRXZWJQdXNoU3Vic2NyaXB0aW9uKHB1YmxpY0tleTogc3RyaW5nKTogUHJvbWlzZTxQdXNoU3Vic2NyaXB0aW9uPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChfcmVzb2x2ZSwgX3JlamVjdCkgPT4ge1xuICAgICAgdGhpcy5zd1B1c2guc3Vic2NyaXB0aW9uLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChzdWJzY3JpcHRpb24pID0+IHtcbiAgICAgICAgICBpZiAoc3Vic2NyaXB0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgIF9yZXNvbHZlKHN1YnNjcmlwdGlvbik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3dQdXNoXG4gICAgICAgICAgICAgIC5yZXF1ZXN0U3Vic2NyaXB0aW9uKHsgc2VydmVyUHVibGljS2V5OiBwdWJsaWNLZXkgfSlcbiAgICAgICAgICAgICAgLnRoZW4oKHMpID0+IF9yZXNvbHZlKHMpKVxuICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IF9yZWplY3QoZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAnTnVjbGV1cy5Ob3RpZmljYXRpb25zOiBDYW5ub3QgZ2V0IHdlYiBwdXNoIHN1YnNjcmlwdGlvbicsXG4gICAgICAgICAgICBlcnJvclxuICAgICAgICAgICk7XG4gICAgICAgICAgX3JlamVjdChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -406,15 +406,15 @@ class NucleusNotificationsService {
406
406
  });
407
407
  });
408
408
  }
409
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NucleusNotificationsService, deps: [{ token: i1.HttpClient }, { token: i2.SwPush }, { token: i3.NucleusAppService }, { token: NucleusNotificationsConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
410
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NucleusNotificationsService, providedIn: 'root' }); }
409
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: NucleusNotificationsService, deps: [{ token: i1.HttpClient }, { token: i2.SwPush }, { token: i3.NucleusAppService }, { token: NucleusNotificationsConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
410
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: NucleusNotificationsService, providedIn: 'root' }); }
411
411
  }
412
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NucleusNotificationsService, decorators: [{
412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: NucleusNotificationsService, decorators: [{
413
413
  type: Injectable,
414
414
  args: [{
415
415
  providedIn: 'root',
416
416
  }]
417
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.SwPush }, { type: i3.NucleusAppService }, { type: NucleusNotificationsConfig }]; } });
417
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.SwPush }, { type: i3.NucleusAppService }, { type: NucleusNotificationsConfig }] });
418
418
 
419
419
  class NucleusNotificationsModule {
420
420
  static forRoot(config) {
@@ -423,11 +423,11 @@ class NucleusNotificationsModule {
423
423
  providers: [{ provide: NucleusNotificationsConfig, useValue: config }],
424
424
  };
425
425
  }
426
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NucleusNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
427
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NucleusNotificationsModule }); }
428
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NucleusNotificationsModule }); }
426
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: NucleusNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
427
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.8", ngImport: i0, type: NucleusNotificationsModule }); }
428
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: NucleusNotificationsModule }); }
429
429
  }
430
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NucleusNotificationsModule, decorators: [{
430
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: NucleusNotificationsModule, decorators: [{
431
431
  type: NgModule,
432
432
  args: [{
433
433
  declarations: [],
@@ -1 +1 @@
1
- {"version":3,"file":"kolektor-nucleus-notifications.mjs","sources":["../../../../../../libs/ng/nucleus/nucleus-notifications/src/lib/models.ts","../../../../../../libs/ng/nucleus/nucleus-notifications/src/lib/nucleus-notifications.service.ts","../../../../../../libs/ng/nucleus/nucleus-notifications/src/lib/nucleus-notifications.module.ts","../../../../../../libs/ng/nucleus/nucleus-notifications/src/kolektor-nucleus-notifications.ts"],"sourcesContent":["export class Notification {\n public id: string;\n public sender: Identity;\n public data: NotificationData;\n public isRead: boolean;\n public dateCreated: Date;\n public expirationDate: Date;\n}\n\nexport class Identity {\n public subject: string;\n public name: string;\n public pictureUrl: string;\n}\n\nexport class Recipient {\n public attributeName: string;\n public directoryName: string;\n public attributeValue: string;\n}\n\nexport class NotificationData {\n title: string;\n message: string;\n htmlMessage: string;\n preventDismissal: boolean;\n deepLink: string;\n}\n\nexport class WebKey {\n publicKey: string;\n}\n\nexport class Registration {\n id: string;\n token: string;\n platform: PlatformValue;\n}\n\nexport class RegistrationResult {\n id: string;\n}\n\nexport class PayloadData {\n notificationId: string;\n eventType: NotificationEventType;\n}\n\nexport class NucleusNotificationsConfig {\n serverApiUrl: string;\n}\n\nexport class NotificationClick {\n id: string;\n type: NotificationType;\n routerLink?: string;\n}\n\nexport type NotificationEventType =\n | 'new'\n | 'updated'\n | 'deleted'\n | 'deletedAll'\n | 'updatedAll'\n | 'newSilent';\n\nexport type PlatformValue = 'ios' | 'android' | 'web' | 'none';\n\nexport type NotificationType = 'default' | 'deeplink';\n\nexport interface ChannelId {\n senderId: string;\n channelId: string;\n}\n\nexport class UserChannelConfig {\n channelId: string;\n displayName: string;\n isSubscribed: boolean;\n subscriptionType: ChannelSubscriptionType;\n methods: NotifyMethod[];\n allowedMethods: NotifyMethod[];\n}\n\nexport type ChannelSubscriptionType = 'invariant' | 'optIn' | 'optOut';\n\nexport type NotifyMethod = 'push' | 'email' | 'sms';\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { SwPush } from '@angular/service-worker';\nimport {\n PushNotifications,\n PushNotificationSchema,\n} from '@capacitor/push-notifications';\nimport { NucleusAppService } from '@kolektor/nucleus-common';\nimport { Observable, of, Subject } from 'rxjs';\nimport {\n ChannelId,\n Notification,\n NotificationClick,\n NotificationEventType,\n NotificationType,\n NucleusNotificationsConfig,\n PayloadData,\n PlatformValue,\n Registration,\n RegistrationResult,\n UserChannelConfig,\n WebKey,\n} from './models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NucleusNotificationsService {\n constructor(\n private http: HttpClient,\n private swPush: SwPush,\n private appService: NucleusAppService,\n config: NucleusNotificationsConfig\n ) {\n let url = config.serverApiUrl;\n if (!url.endsWith('/')) {\n url += '/';\n }\n this.apiUrl = url;\n }\n\n private apiUrl: string;\n private readonly registrationStorageKey =\n 'NucleusNotificationsRegistrationId';\n private readonly notificationsStorageKey = 'NucleusNotificationsLocalCache';\n private _platform: PlatformValue;\n private _isInitialized = false;\n private _newNotifications = new Subject<Notification>();\n private _clicksSubject = new Subject<NotificationClick>();\n private _stateChangesSubject = new Subject<void>();\n\n public notifications: Notification[] = [];\n\n public get unreadCount() {\n return this.notifications.filter((x) => !x.isRead).length;\n }\n\n public get newNotifications() {\n return this._newNotifications.asObservable();\n }\n\n public get clicks() {\n return this._clicksSubject.asObservable();\n }\n public get stateChanges() {\n return this._stateChangesSubject.asObservable();\n }\n\n public get isInitialized() {\n return this._isInitialized;\n }\n\n public async initialize() {\n // make sure app service has finished initializing\n await this.appService.init();\n\n this.loadFromStorage();\n\n if (this.appService.isNative) {\n this._platform = this.appService.deviceInfo.platform as PlatformValue;\n await this.registerCapacitorEvents();\n } else if (this.swPush.isEnabled) {\n this._platform = 'web';\n this.registerWebPushEvents();\n } else {\n console.warn(\n 'Nucleus.Notifications: There is no push capability, timer will be used to update notifications'\n );\n setInterval(() => {\n console.log('Updating notifications...');\n this.refresh(true);\n }, 5 * 60 * 1000);\n }\n this._isInitialized = true;\n this.refresh();\n }\n\n public register(): Promise<any> {\n return new Promise((_resolve, _reject) => {\n this.getRegistrationInfo()\n .then((info) => {\n this.http\n .post<RegistrationResult>(this.apiUrl + 'registration', info)\n .subscribe({\n next: (regResult) => {\n window.localStorage.setItem(\n this.registrationStorageKey,\n regResult.id\n );\n _resolve(null);\n },\n error: (error) => {\n console.log(\n 'Nucleus.Notifications: Failed to send notification registration to server.',\n error\n );\n _reject(error);\n }\n });\n })\n .catch((error) => _reject(error));\n });\n }\n\n public unregister(): Promise<any> {\n return new Promise((_resolve, _reject) => {\n this.getRegistrationInfo()\n .then((info) => {\n this.http\n .request<any>('DELETE', this.apiUrl + 'registration', {\n body: info,\n })\n .subscribe({\n next: () => {\n window.localStorage.removeItem(this.registrationStorageKey);\n _resolve(null);\n },\n error: (error) => {\n console.log(\n 'Nucleus.Notifications: Failed to remove registration from server.',\n error\n );\n _reject(error);\n }\n });\n })\n .catch((error) => _reject(error));\n });\n }\n\n public refresh(notifyAboutNew = false) {\n this.http\n .get<Notification[]>(this.apiUrl + 'notifications')\n .subscribe((res) => {\n this.updateNotifications(res, notifyAboutNew);\n });\n }\n\n public getNotification(id: string): Observable<Notification> {\n const localNotification = this.notifications.find((x) => x.id === id);\n if (localNotification) {\n return of(localNotification);\n }\n return this.http.get<Notification>(this.apiUrl + 'notifications/' + id);\n }\n\n public readNotification(id: string) {\n const n = this.notifications.find((x) => x.id === id);\n if (n && !n.isRead) {\n n.isRead = true;\n this.notifyStateChanged();\n }\n this.http.get(this.apiUrl + 'notifications/read/' + id).subscribe();\n }\n\n public dismissNotification(id: string) {\n this.deleteNotificaton(id);\n this.http.delete(this.apiUrl + 'notifications/' + id).subscribe();\n this.removeDeliveredNotification(id);\n }\n\n public dismissAll() {\n this.notifications.splice(0);\n this.notifyStateChanged();\n this.http.delete(this.apiUrl + 'notifications/all').subscribe();\n if (this._platform === 'ios' || this._platform === 'android') {\n PushNotifications.removeAllDeliveredNotifications();\n } else if (this._platform === 'web') {\n // TODO: remove all web push notifications\n }\n }\n\n public readAll() {\n for (const n of this.notifications) {\n n.isRead = true;\n }\n this.notifyStateChanged();\n this.http.get(this.apiUrl + 'notifications/read/all').subscribe();\n }\n\n public getChannelConfig(\n senderId: string,\n channelId: string,\n language?: string\n ) {\n return this.http.get<UserChannelConfig>(\n this.apiUrl +\n `settings/channel/${senderId}/${channelId}?language=${language}`\n );\n }\n\n public getChannelConfigsForSender(\n senderId: string,\n channelIds: string[],\n language?: string\n ) {\n const idsStr = channelIds.map((x) => senderId + ',' + x).join(';');\n return this.getChannelConfigsInternal(idsStr, language);\n }\n\n public getChannelConfigs(ids: ChannelId[], language?: string) {\n const idsStr = ids.map((x) => x.senderId + ',' + x.channelId).join(';');\n return this.getChannelConfigsInternal(idsStr, language);\n }\n\n public setChannelConfig(senderId: string, config: UserChannelConfig) {\n return this.http.post<void>(\n `${this.apiUrl}settings/channel/${senderId}`,\n config\n );\n }\n\n public setChannelConfigs(configs: UserChannelConfig[]) {\n return this.http.post<void>(`${this.apiUrl}settings/channels`, configs);\n }\n\n private getChannelConfigsInternal(ids: string, language?: string) {\n return this.http.get<UserChannelConfig[]>(\n `${this.apiUrl}settings/channels?ids=${ids}&language=${language}`\n );\n }\n\n private updateNotifications(\n newNotifications: Notification[],\n notifyAboutNew = false\n ) {\n let stateChanged = false;\n for (const n of newNotifications) {\n const existing = this.notifications.find((x) => x.id === n.id);\n if (existing) {\n if (existing.isRead !== n.isRead) {\n existing.isRead = n.isRead;\n stateChanged = true;\n }\n } else {\n let i = 0;\n while (\n i < this.notifications.length &&\n n.dateCreated < this.notifications[i].dateCreated\n ) {\n i++;\n }\n this.notifications.splice(i, 0, n);\n stateChanged = true;\n if (notifyAboutNew) {\n this._newNotifications.next(n);\n }\n }\n }\n\n const now = Date.now();\n for (let i = this.notifications.length - 1; i >= 0; i--) {\n const n = this.notifications[i];\n if (\n new Date(n.expirationDate).getTime() < now ||\n !newNotifications.find((x) => x.id === n.id)\n ) {\n this.notifications.splice(i, 1);\n stateChanged = true;\n }\n }\n\n if (stateChanged) {\n this.notifyStateChanged();\n }\n }\n\n private saveToStorage() {\n const str = JSON.stringify(this.notifications);\n window.localStorage.setItem(this.notificationsStorageKey, str);\n }\n\n private loadFromStorage() {\n try {\n const str = window.localStorage.getItem(this.notificationsStorageKey);\n if (str) {\n const notifications = JSON.parse(str) as Notification[];\n this.notifications = notifications.filter((x) => !!x);\n // precaution for notification.isRead of undefined error\n this.notifyStateChanged(false);\n }\n } catch {\n /* empty */\n }\n }\n\n private handleNotificationEvent(\n id: string,\n eventType: NotificationEventType\n ) {\n if (eventType.startsWith('new') || eventType === 'updated') {\n // we are handling new and newSilent\n this.getNotification(id).subscribe((n) => {\n if (eventType.startsWith('new') && !n.isRead) {\n this._newNotifications.next(n);\n }\n const existing = this.notifications.find((x) => x.id === n.id);\n if (existing) {\n existing.isRead = n.isRead;\n } else {\n this.notifications.splice(0, 0, n);\n }\n this.notifyStateChanged();\n });\n } else if (eventType === 'deleted') {\n this.deleteNotificaton(id);\n } else {\n this.refresh();\n }\n }\n\n private deleteNotificaton(id: string) {\n const i = this.notifications.findIndex((x) => x.id === id);\n if (i >= 0) {\n this.notifications.splice(i, 1);\n this.notifyStateChanged();\n }\n }\n\n private notifyStateChanged(persistState = true) {\n if (persistState) {\n this.saveToStorage();\n }\n this._stateChangesSubject.next();\n }\n\n private handleNotificationAction(notificationAction: string | undefined) {\n if (!notificationAction) {\n throw new Error('Notification action is empty!');\n }\n\n const arr = notificationAction.split(':');\n const notificationClick: NotificationClick = {\n id: arr[0],\n type: arr[1] as NotificationType,\n routerLink: arr[2],\n };\n\n const validNotificationClickTypes = ['default', 'deeplink'];\n if (validNotificationClickTypes.includes(notificationClick.type)) {\n this._clicksSubject.next(notificationClick);\n } else {\n console.error(\n `Nucleus.Notifications: Unknown notification action: '${notificationAction}'.`\n );\n }\n }\n\n private removeDeliveredNotification(id: string) {\n if (this._platform === 'ios' || this._platform === 'android') {\n PushNotifications.getDeliveredNotifications().then((list) => {\n const toRemove = list.notifications.filter((n) => {\n const data = this.getNotificationPayloadData(n);\n return data.notificationId === id;\n });\n\n // TODO: On Android this does not currently work because notificationID is not set.\n // This my solve the issue: https://github.com/ionic-team/capacitor/pull/3523\n PushNotifications.removeDeliveredNotifications({\n notifications: toRemove,\n });\n });\n } else if (this._platform === 'web') {\n // TODO: remove web push notification\n }\n }\n\n private getNotificationPayloadData(\n pushNotification: PushNotificationSchema\n ): PayloadData {\n return this._platform === 'ios'\n ? pushNotification.data.data\n : pushNotification.data;\n }\n\n private async registerCapacitorEvents() {\n await PushNotifications.addListener('pushNotificationReceived', (n) => {\n const data = this.getNotificationPayloadData(n);\n console.log(\n 'Nucleus.Notifications: Received capacitor push event: ' +\n data.eventType,\n n\n );\n this.handleNotificationEvent(data.notificationId, data.eventType);\n });\n\n await PushNotifications.addListener(\n 'pushNotificationActionPerformed',\n (a) => {\n let action = (a as any).notification.data.notificationAction;\n if (this._platform === 'ios') {\n action = (a as any).notification.data.data.notificationAction;\n }\n console.log(\n 'Nucleus.Notifications: Received capacitor action event',\n action\n );\n this.handleNotificationAction(action);\n }\n );\n }\n\n private registerWebPushEvents() {\n this.swPush.messages.subscribe((n) => {\n const data: PayloadData = (n as any).data;\n console.log(\n 'Nucleus.Notifications: Received WebPush event: ' + data.eventType,\n n\n );\n this.handleNotificationEvent(data.notificationId, data.eventType);\n });\n\n this.swPush.notificationClicks.subscribe((action) => {\n console.log(\n 'Nucleus.Notifications: Received WebPush action event',\n action\n );\n const tag = action.notification.tag;\n this.handleNotificationAction(tag);\n });\n }\n\n private getRegistrationInfo(): Promise<Registration> {\n return new Promise((_resolve, _reject) => {\n const registrationId = window.localStorage.getItem(\n this.registrationStorageKey\n ) as string;\n if (this._platform === 'android' || this._platform === 'ios') {\n // capacitor platform\n const listener = PushNotifications.addListener(\n 'registration',\n (token) => {\n listener.remove();\n _resolve({\n id: registrationId,\n token: token.value,\n platform: this._platform,\n });\n }\n );\n PushNotifications.register().catch((error) =>\n _reject('Could not register for notifications:' + error)\n );\n } else if (this._platform === 'web') {\n // Web Push API\n this.http.get<WebKey>(this.apiUrl + 'registration/webkey').subscribe({\n next: (key) => {\n this.getWebPushSubscription(key.publicKey).then((subscription) => {\n const t = JSON.stringify(subscription.toJSON());\n _resolve({ id: registrationId, token: t, platform: 'web' });\n });\n },\n error: (error) => _reject(error)\n });\n } else {\n _reject(`Nucleus.Notifications: Platform is not supported`);\n }\n });\n }\n\n private getWebPushSubscription(publicKey: string): Promise<PushSubscription> {\n return new Promise((_resolve, _reject) => {\n this.swPush.subscription.subscribe({\n next: (subscription) => {\n if (subscription != null) {\n _resolve(subscription);\n } else {\n this.swPush\n .requestSubscription({ serverPublicKey: publicKey })\n .then((s) => _resolve(s))\n .catch((e) => _reject(e));\n }\n },\n error: (error) => {\n console.error(\n 'Nucleus.Notifications: Cannot get web push subscription',\n error\n );\n _reject(error);\n }\n });\n });\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { NucleusNotificationsConfig } from './models';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: [],\n})\nexport class NucleusNotificationsModule {\n static forRoot(\n config: NucleusNotificationsConfig\n ): ModuleWithProviders<NucleusNotificationsModule> {\n return {\n ngModule: NucleusNotificationsModule,\n providers: [{ provide: NucleusNotificationsConfig, useValue: config }],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4.NucleusNotificationsConfig"],"mappings":"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"}
1
+ {"version":3,"file":"kolektor-nucleus-notifications.mjs","sources":["../../../../../../libs/ng/nucleus/nucleus-notifications/src/lib/models.ts","../../../../../../libs/ng/nucleus/nucleus-notifications/src/lib/nucleus-notifications.service.ts","../../../../../../libs/ng/nucleus/nucleus-notifications/src/lib/nucleus-notifications.module.ts","../../../../../../libs/ng/nucleus/nucleus-notifications/src/kolektor-nucleus-notifications.ts"],"sourcesContent":["export class Notification {\n public id: string;\n public sender: Identity;\n public data: NotificationData;\n public isRead: boolean;\n public dateCreated: Date;\n public expirationDate: Date;\n}\n\nexport class Identity {\n public subject: string;\n public name: string;\n public pictureUrl: string;\n}\n\nexport class Recipient {\n public attributeName: string;\n public directoryName: string;\n public attributeValue: string;\n}\n\nexport class NotificationData {\n title: string;\n message: string;\n htmlMessage: string;\n preventDismissal: boolean;\n deepLink: string;\n}\n\nexport class WebKey {\n publicKey: string;\n}\n\nexport class Registration {\n id: string;\n token: string;\n platform: PlatformValue;\n}\n\nexport class RegistrationResult {\n id: string;\n}\n\nexport class PayloadData {\n notificationId: string;\n eventType: NotificationEventType;\n}\n\nexport class NucleusNotificationsConfig {\n serverApiUrl: string;\n}\n\nexport class NotificationClick {\n id: string;\n type: NotificationType;\n routerLink?: string;\n}\n\nexport type NotificationEventType =\n | 'new'\n | 'updated'\n | 'deleted'\n | 'deletedAll'\n | 'updatedAll'\n | 'newSilent';\n\nexport type PlatformValue = 'ios' | 'android' | 'web' | 'none';\n\nexport type NotificationType = 'default' | 'deeplink';\n\nexport interface ChannelId {\n senderId: string;\n channelId: string;\n}\n\nexport class UserChannelConfig {\n channelId: string;\n displayName: string;\n isSubscribed: boolean;\n subscriptionType: ChannelSubscriptionType;\n methods: NotifyMethod[];\n allowedMethods: NotifyMethod[];\n}\n\nexport type ChannelSubscriptionType = 'invariant' | 'optIn' | 'optOut';\n\nexport type NotifyMethod = 'push' | 'email' | 'sms';\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { SwPush } from '@angular/service-worker';\nimport {\n PushNotifications,\n PushNotificationSchema,\n} from '@capacitor/push-notifications';\nimport { NucleusAppService } from '@kolektor/nucleus-common';\nimport { Observable, of, Subject } from 'rxjs';\nimport {\n ChannelId,\n Notification,\n NotificationClick,\n NotificationEventType,\n NotificationType,\n NucleusNotificationsConfig,\n PayloadData,\n PlatformValue,\n Registration,\n RegistrationResult,\n UserChannelConfig,\n WebKey,\n} from './models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NucleusNotificationsService {\n constructor(\n private http: HttpClient,\n private swPush: SwPush,\n private appService: NucleusAppService,\n config: NucleusNotificationsConfig\n ) {\n let url = config.serverApiUrl;\n if (!url.endsWith('/')) {\n url += '/';\n }\n this.apiUrl = url;\n }\n\n private apiUrl: string;\n private readonly registrationStorageKey =\n 'NucleusNotificationsRegistrationId';\n private readonly notificationsStorageKey = 'NucleusNotificationsLocalCache';\n private _platform: PlatformValue;\n private _isInitialized = false;\n private _newNotifications = new Subject<Notification>();\n private _clicksSubject = new Subject<NotificationClick>();\n private _stateChangesSubject = new Subject<void>();\n\n public notifications: Notification[] = [];\n\n public get unreadCount() {\n return this.notifications.filter((x) => !x.isRead).length;\n }\n\n public get newNotifications() {\n return this._newNotifications.asObservable();\n }\n\n public get clicks() {\n return this._clicksSubject.asObservable();\n }\n public get stateChanges() {\n return this._stateChangesSubject.asObservable();\n }\n\n public get isInitialized() {\n return this._isInitialized;\n }\n\n public async initialize() {\n // make sure app service has finished initializing\n await this.appService.init();\n\n this.loadFromStorage();\n\n if (this.appService.isNative) {\n this._platform = this.appService.deviceInfo.platform as PlatformValue;\n await this.registerCapacitorEvents();\n } else if (this.swPush.isEnabled) {\n this._platform = 'web';\n this.registerWebPushEvents();\n } else {\n console.warn(\n 'Nucleus.Notifications: There is no push capability, timer will be used to update notifications'\n );\n setInterval(() => {\n console.log('Updating notifications...');\n this.refresh(true);\n }, 5 * 60 * 1000);\n }\n this._isInitialized = true;\n this.refresh();\n }\n\n public register(): Promise<any> {\n return new Promise((_resolve, _reject) => {\n this.getRegistrationInfo()\n .then((info) => {\n this.http\n .post<RegistrationResult>(this.apiUrl + 'registration', info)\n .subscribe({\n next: (regResult) => {\n window.localStorage.setItem(\n this.registrationStorageKey,\n regResult.id\n );\n _resolve(null);\n },\n error: (error) => {\n console.log(\n 'Nucleus.Notifications: Failed to send notification registration to server.',\n error\n );\n _reject(error);\n }\n });\n })\n .catch((error) => _reject(error));\n });\n }\n\n public unregister(): Promise<any> {\n return new Promise((_resolve, _reject) => {\n this.getRegistrationInfo()\n .then((info) => {\n this.http\n .request<any>('DELETE', this.apiUrl + 'registration', {\n body: info,\n })\n .subscribe({\n next: () => {\n window.localStorage.removeItem(this.registrationStorageKey);\n _resolve(null);\n },\n error: (error) => {\n console.log(\n 'Nucleus.Notifications: Failed to remove registration from server.',\n error\n );\n _reject(error);\n }\n });\n })\n .catch((error) => _reject(error));\n });\n }\n\n public refresh(notifyAboutNew = false) {\n this.http\n .get<Notification[]>(this.apiUrl + 'notifications')\n .subscribe((res) => {\n this.updateNotifications(res, notifyAboutNew);\n });\n }\n\n public getNotification(id: string): Observable<Notification> {\n const localNotification = this.notifications.find((x) => x.id === id);\n if (localNotification) {\n return of(localNotification);\n }\n return this.http.get<Notification>(this.apiUrl + 'notifications/' + id);\n }\n\n public readNotification(id: string) {\n const n = this.notifications.find((x) => x.id === id);\n if (n && !n.isRead) {\n n.isRead = true;\n this.notifyStateChanged();\n }\n this.http.get(this.apiUrl + 'notifications/read/' + id).subscribe();\n }\n\n public dismissNotification(id: string) {\n this.deleteNotificaton(id);\n this.http.delete(this.apiUrl + 'notifications/' + id).subscribe();\n this.removeDeliveredNotification(id);\n }\n\n public dismissAll() {\n this.notifications.splice(0);\n this.notifyStateChanged();\n this.http.delete(this.apiUrl + 'notifications/all').subscribe();\n if (this._platform === 'ios' || this._platform === 'android') {\n PushNotifications.removeAllDeliveredNotifications();\n } else if (this._platform === 'web') {\n // TODO: remove all web push notifications\n }\n }\n\n public readAll() {\n for (const n of this.notifications) {\n n.isRead = true;\n }\n this.notifyStateChanged();\n this.http.get(this.apiUrl + 'notifications/read/all').subscribe();\n }\n\n public getChannelConfig(\n senderId: string,\n channelId: string,\n language?: string\n ) {\n return this.http.get<UserChannelConfig>(\n this.apiUrl +\n `settings/channel/${senderId}/${channelId}?language=${language}`\n );\n }\n\n public getChannelConfigsForSender(\n senderId: string,\n channelIds: string[],\n language?: string\n ) {\n const idsStr = channelIds.map((x) => senderId + ',' + x).join(';');\n return this.getChannelConfigsInternal(idsStr, language);\n }\n\n public getChannelConfigs(ids: ChannelId[], language?: string) {\n const idsStr = ids.map((x) => x.senderId + ',' + x.channelId).join(';');\n return this.getChannelConfigsInternal(idsStr, language);\n }\n\n public setChannelConfig(senderId: string, config: UserChannelConfig) {\n return this.http.post<void>(\n `${this.apiUrl}settings/channel/${senderId}`,\n config\n );\n }\n\n public setChannelConfigs(configs: UserChannelConfig[]) {\n return this.http.post<void>(`${this.apiUrl}settings/channels`, configs);\n }\n\n private getChannelConfigsInternal(ids: string, language?: string) {\n return this.http.get<UserChannelConfig[]>(\n `${this.apiUrl}settings/channels?ids=${ids}&language=${language}`\n );\n }\n\n private updateNotifications(\n newNotifications: Notification[],\n notifyAboutNew = false\n ) {\n let stateChanged = false;\n for (const n of newNotifications) {\n const existing = this.notifications.find((x) => x.id === n.id);\n if (existing) {\n if (existing.isRead !== n.isRead) {\n existing.isRead = n.isRead;\n stateChanged = true;\n }\n } else {\n let i = 0;\n while (\n i < this.notifications.length &&\n n.dateCreated < this.notifications[i].dateCreated\n ) {\n i++;\n }\n this.notifications.splice(i, 0, n);\n stateChanged = true;\n if (notifyAboutNew) {\n this._newNotifications.next(n);\n }\n }\n }\n\n const now = Date.now();\n for (let i = this.notifications.length - 1; i >= 0; i--) {\n const n = this.notifications[i];\n if (\n new Date(n.expirationDate).getTime() < now ||\n !newNotifications.find((x) => x.id === n.id)\n ) {\n this.notifications.splice(i, 1);\n stateChanged = true;\n }\n }\n\n if (stateChanged) {\n this.notifyStateChanged();\n }\n }\n\n private saveToStorage() {\n const str = JSON.stringify(this.notifications);\n window.localStorage.setItem(this.notificationsStorageKey, str);\n }\n\n private loadFromStorage() {\n try {\n const str = window.localStorage.getItem(this.notificationsStorageKey);\n if (str) {\n const notifications = JSON.parse(str) as Notification[];\n this.notifications = notifications.filter((x) => !!x);\n // precaution for notification.isRead of undefined error\n this.notifyStateChanged(false);\n }\n } catch {\n /* empty */\n }\n }\n\n private handleNotificationEvent(\n id: string,\n eventType: NotificationEventType\n ) {\n if (eventType.startsWith('new') || eventType === 'updated') {\n // we are handling new and newSilent\n this.getNotification(id).subscribe((n) => {\n if (eventType.startsWith('new') && !n.isRead) {\n this._newNotifications.next(n);\n }\n const existing = this.notifications.find((x) => x.id === n.id);\n if (existing) {\n existing.isRead = n.isRead;\n } else {\n this.notifications.splice(0, 0, n);\n }\n this.notifyStateChanged();\n });\n } else if (eventType === 'deleted') {\n this.deleteNotificaton(id);\n } else {\n this.refresh();\n }\n }\n\n private deleteNotificaton(id: string) {\n const i = this.notifications.findIndex((x) => x.id === id);\n if (i >= 0) {\n this.notifications.splice(i, 1);\n this.notifyStateChanged();\n }\n }\n\n private notifyStateChanged(persistState = true) {\n if (persistState) {\n this.saveToStorage();\n }\n this._stateChangesSubject.next();\n }\n\n private handleNotificationAction(notificationAction: string | undefined) {\n if (!notificationAction) {\n throw new Error('Notification action is empty!');\n }\n\n const arr = notificationAction.split(':');\n const notificationClick: NotificationClick = {\n id: arr[0],\n type: arr[1] as NotificationType,\n routerLink: arr[2],\n };\n\n const validNotificationClickTypes = ['default', 'deeplink'];\n if (validNotificationClickTypes.includes(notificationClick.type)) {\n this._clicksSubject.next(notificationClick);\n } else {\n console.error(\n `Nucleus.Notifications: Unknown notification action: '${notificationAction}'.`\n );\n }\n }\n\n private removeDeliveredNotification(id: string) {\n if (this._platform === 'ios' || this._platform === 'android') {\n PushNotifications.getDeliveredNotifications().then((list) => {\n const toRemove = list.notifications.filter((n) => {\n const data = this.getNotificationPayloadData(n);\n return data.notificationId === id;\n });\n\n // TODO: On Android this does not currently work because notificationID is not set.\n // This my solve the issue: https://github.com/ionic-team/capacitor/pull/3523\n PushNotifications.removeDeliveredNotifications({\n notifications: toRemove,\n });\n });\n } else if (this._platform === 'web') {\n // TODO: remove web push notification\n }\n }\n\n private getNotificationPayloadData(\n pushNotification: PushNotificationSchema\n ): PayloadData {\n return this._platform === 'ios'\n ? pushNotification.data.data\n : pushNotification.data;\n }\n\n private async registerCapacitorEvents() {\n await PushNotifications.addListener('pushNotificationReceived', (n) => {\n const data = this.getNotificationPayloadData(n);\n console.log(\n 'Nucleus.Notifications: Received capacitor push event: ' +\n data.eventType,\n n\n );\n this.handleNotificationEvent(data.notificationId, data.eventType);\n });\n\n await PushNotifications.addListener(\n 'pushNotificationActionPerformed',\n (a) => {\n let action = (a as any).notification.data.notificationAction;\n if (this._platform === 'ios') {\n action = (a as any).notification.data.data.notificationAction;\n }\n console.log(\n 'Nucleus.Notifications: Received capacitor action event',\n action\n );\n this.handleNotificationAction(action);\n }\n );\n }\n\n private registerWebPushEvents() {\n this.swPush.messages.subscribe((n) => {\n const data: PayloadData = (n as any).data;\n console.log(\n 'Nucleus.Notifications: Received WebPush event: ' + data.eventType,\n n\n );\n this.handleNotificationEvent(data.notificationId, data.eventType);\n });\n\n this.swPush.notificationClicks.subscribe((action) => {\n console.log(\n 'Nucleus.Notifications: Received WebPush action event',\n action\n );\n const tag = action.notification.tag;\n this.handleNotificationAction(tag);\n });\n }\n\n private getRegistrationInfo(): Promise<Registration> {\n return new Promise((_resolve, _reject) => {\n const registrationId = window.localStorage.getItem(\n this.registrationStorageKey\n ) as string;\n if (this._platform === 'android' || this._platform === 'ios') {\n // capacitor platform\n const listener = PushNotifications.addListener(\n 'registration',\n (token) => {\n listener.remove();\n _resolve({\n id: registrationId,\n token: token.value,\n platform: this._platform,\n });\n }\n );\n PushNotifications.register().catch((error) =>\n _reject('Could not register for notifications:' + error)\n );\n } else if (this._platform === 'web') {\n // Web Push API\n this.http.get<WebKey>(this.apiUrl + 'registration/webkey').subscribe({\n next: (key) => {\n this.getWebPushSubscription(key.publicKey).then((subscription) => {\n const t = JSON.stringify(subscription.toJSON());\n _resolve({ id: registrationId, token: t, platform: 'web' });\n });\n },\n error: (error) => _reject(error)\n });\n } else {\n _reject(`Nucleus.Notifications: Platform is not supported`);\n }\n });\n }\n\n private getWebPushSubscription(publicKey: string): Promise<PushSubscription> {\n return new Promise((_resolve, _reject) => {\n this.swPush.subscription.subscribe({\n next: (subscription) => {\n if (subscription != null) {\n _resolve(subscription);\n } else {\n this.swPush\n .requestSubscription({ serverPublicKey: publicKey })\n .then((s) => _resolve(s))\n .catch((e) => _reject(e));\n }\n },\n error: (error) => {\n console.error(\n 'Nucleus.Notifications: Cannot get web push subscription',\n error\n );\n _reject(error);\n }\n });\n });\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { NucleusNotificationsConfig } from './models';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: [],\n})\nexport class NucleusNotificationsModule {\n static forRoot(\n config: NucleusNotificationsConfig\n ): ModuleWithProviders<NucleusNotificationsModule> {\n return {\n ngModule: NucleusNotificationsModule,\n providers: [{ provide: NucleusNotificationsConfig, useValue: config }],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4.NucleusNotificationsConfig"],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "name": "@kolektor/nucleus-notifications",
3
- "version": "0.1.695",
4
3
  "peerDependencies": {
5
- "@angular/common": "^16.2.0",
6
- "@angular/core": "^16.2.0",
7
- "@angular/service-worker": "^16.2.0",
4
+ "@angular/common": "^17.3.0",
5
+ "@angular/core": "^17.3.0",
6
+ "@angular/service-worker": "^17.3.0",
8
7
  "@kolektor/nucleus-common": "0.1.x",
9
8
  "@capacitor/push-notifications": "^5.0.0",
10
9
  "rxjs": "~7.8.0"
@@ -25,5 +24,6 @@
25
24
  },
26
25
  "dependencies": {
27
26
  "tslib": "^2.3.0"
28
- }
27
+ },
28
+ "version": "0.1.724"
29
29
  }