@c8y/ngx-components 1018.503.23 → 1018.503.26

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.
Files changed (43) hide show
  1. package/api/services.d.ts +1 -1
  2. package/core/forms/validation-pattern.d.ts +4 -0
  3. package/esm2020/api/services.mjs +2 -2
  4. package/esm2020/core/forms/validation-pattern.mjs +5 -1
  5. package/esm2020/trusted-certificates/crl/crl-check-settings.component.mjs +39 -0
  6. package/esm2020/trusted-certificates/crl/crl-settings.component.mjs +109 -0
  7. package/esm2020/trusted-certificates/crl/crl-settings.module.mjs +46 -0
  8. package/esm2020/trusted-certificates/factories/tabs.factory.mjs +36 -0
  9. package/esm2020/trusted-certificates/factories/trusted-certificates-navigation.factory.mjs +26 -0
  10. package/esm2020/trusted-certificates/index.mjs +4 -4
  11. package/esm2020/trusted-certificates/{add-trusted-certificate.component.mjs → list/add-trusted-certificate.component.mjs} +1 -1
  12. package/esm2020/trusted-certificates/list/trusted-certificate-list.component.mjs +184 -0
  13. package/esm2020/trusted-certificates/list/trusted-certificate-list.module.mjs +54 -0
  14. package/esm2020/trusted-certificates/list/trusted-certificate.model.mjs +36 -0
  15. package/esm2020/trusted-certificates/trusted-certificates.module.mjs +24 -35
  16. package/fesm2015/c8y-ngx-components-api.mjs +3 -2
  17. package/fesm2015/c8y-ngx-components-api.mjs.map +1 -1
  18. package/fesm2015/c8y-ngx-components-trusted-certificates.mjs +329 -86
  19. package/fesm2015/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  20. package/fesm2015/c8y-ngx-components.mjs +4 -0
  21. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  22. package/fesm2020/c8y-ngx-components-api.mjs +3 -2
  23. package/fesm2020/c8y-ngx-components-api.mjs.map +1 -1
  24. package/fesm2020/c8y-ngx-components-trusted-certificates.mjs +314 -85
  25. package/fesm2020/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  26. package/fesm2020/c8y-ngx-components.mjs +4 -0
  27. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  28. package/locales/locales.pot +48 -0
  29. package/package.json +1 -1
  30. package/trusted-certificates/crl/crl-check-settings.component.d.ts +18 -0
  31. package/trusted-certificates/crl/crl-settings.component.d.ts +28 -0
  32. package/trusted-certificates/crl/crl-settings.module.d.ts +13 -0
  33. package/trusted-certificates/factories/tabs.factory.d.ts +10 -0
  34. package/trusted-certificates/index.d.ts +3 -3
  35. package/trusted-certificates/{trusted-certificates.component.d.ts → list/trusted-certificate-list.component.d.ts} +4 -4
  36. package/trusted-certificates/list/trusted-certificate-list.module.d.ts +15 -0
  37. package/trusted-certificates/trusted-certificates.module.d.ts +4 -10
  38. package/esm2020/trusted-certificates/trusted-certificate.model.mjs +0 -36
  39. package/esm2020/trusted-certificates/trusted-certificates-navigation.factory.mjs +0 -26
  40. package/esm2020/trusted-certificates/trusted-certificates.component.mjs +0 -184
  41. /package/trusted-certificates/{trusted-certificates-navigation.factory.d.ts → factories/trusted-certificates-navigation.factory.d.ts} +0 -0
  42. /package/trusted-certificates/{add-trusted-certificate.component.d.ts → list/add-trusted-certificate.component.d.ts} +0 -0
  43. /package/trusted-certificates/{trusted-certificate.model.d.ts → list/trusted-certificate.model.d.ts} +0 -0
@@ -1,57 +1,46 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { RouterModule } from '@angular/router';
3
- import { CommonModule, CoreModule, hookNavigator, hookPatternMessages } from '@c8y/ngx-components';
4
- import { TrustedCertificatesComponent } from './trusted-certificates.component';
5
- import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
6
- import { PopoverModule } from 'ngx-bootstrap/popover';
7
- import { TooltipModule } from 'ngx-bootstrap/tooltip';
8
- import { AddTrustedCertificateComponent } from './add-trusted-certificate.component';
9
- import { ButtonsModule } from 'ngx-bootstrap/buttons';
10
- import { ReactiveFormsModule } from '@angular/forms';
11
- import { TrustedCertificatesNavigationFactory } from './trusted-certificates-navigation.factory';
3
+ import { hookNavigator, hookPatternMessages, hookTab } from '@c8y/ngx-components';
4
+ import { TrustedCertificatesNavigationFactory } from './factories/trusted-certificates-navigation.factory';
12
5
  import { MESSAGES } from './pattern-messages.data';
6
+ import { TabsFactory } from './factories/tabs.factory';
7
+ import { CrlSettingsModule } from './crl/crl-settings.module';
8
+ import { TrustedCertificateListModule } from './list/trusted-certificate-list.module';
13
9
  import * as i0 from "@angular/core";
14
10
  import * as i1 from "@angular/router";
15
- import * as i2 from "ngx-bootstrap/dropdown";
16
11
  const trustedCertificatesRoutes = [
17
12
  {
18
13
  path: 'trusted-certificates',
19
- component: TrustedCertificatesComponent
14
+ pathMatch: 'full',
15
+ redirectTo: 'trusted-certificates/certificates'
20
16
  }
21
17
  ];
22
18
  export class TrustedCertificatesModule {
23
19
  }
24
20
  TrustedCertificatesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TrustedCertificatesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
25
- TrustedCertificatesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TrustedCertificatesModule, declarations: [TrustedCertificatesComponent, AddTrustedCertificateComponent], imports: [CoreModule,
26
- CommonModule, i1.RouterModule, i2.BsDropdownModule, TooltipModule,
27
- ReactiveFormsModule,
28
- ButtonsModule,
29
- PopoverModule] });
30
- TrustedCertificatesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TrustedCertificatesModule, providers: [hookNavigator(TrustedCertificatesNavigationFactory), hookPatternMessages(MESSAGES)], imports: [CoreModule,
31
- CommonModule,
32
- RouterModule.forChild(trustedCertificatesRoutes),
33
- BsDropdownModule.forRoot(),
34
- TooltipModule,
35
- ReactiveFormsModule,
36
- ButtonsModule,
37
- PopoverModule] });
21
+ TrustedCertificatesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TrustedCertificatesModule, imports: [i1.RouterModule, CrlSettingsModule,
22
+ TrustedCertificateListModule] });
23
+ TrustedCertificatesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TrustedCertificatesModule, providers: [
24
+ hookNavigator(TrustedCertificatesNavigationFactory),
25
+ hookPatternMessages(MESSAGES),
26
+ hookTab(TabsFactory)
27
+ ], imports: [RouterModule.forChild(trustedCertificatesRoutes),
28
+ CrlSettingsModule,
29
+ TrustedCertificateListModule] });
38
30
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TrustedCertificatesModule, decorators: [{
39
31
  type: NgModule,
40
32
  args: [{
41
- declarations: [TrustedCertificatesComponent, AddTrustedCertificateComponent],
42
33
  exports: [],
43
34
  imports: [
44
- CoreModule,
45
- CommonModule,
46
35
  RouterModule.forChild(trustedCertificatesRoutes),
47
- BsDropdownModule.forRoot(),
48
- TooltipModule,
49
- ReactiveFormsModule,
50
- ButtonsModule,
51
- PopoverModule
36
+ CrlSettingsModule,
37
+ TrustedCertificateListModule
52
38
  ],
53
- entryComponents: [TrustedCertificatesComponent, AddTrustedCertificateComponent],
54
- providers: [hookNavigator(TrustedCertificatesNavigationFactory), hookPatternMessages(MESSAGES)]
39
+ providers: [
40
+ hookNavigator(TrustedCertificatesNavigationFactory),
41
+ hookPatternMessages(MESSAGES),
42
+ hookTab(TabsFactory)
43
+ ]
55
44
  }]
56
45
  }] });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1jZXJ0aWZpY2F0ZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMvdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFTLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25HLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUVuRCxNQUFNLHlCQUF5QixHQUFZO0lBQ3pDO1FBQ0UsSUFBSSxFQUFFLHNCQUFzQjtRQUM1QixTQUFTLEVBQUUsNEJBQTRCO0tBQ3hDO0NBQ0YsQ0FBQztBQWtCRixNQUFNLE9BQU8seUJBQXlCOztzSEFBekIseUJBQXlCO3VIQUF6Qix5QkFBeUIsaUJBZnJCLDRCQUE0QixFQUFFLDhCQUE4QixhQUd6RSxVQUFVO1FBQ1YsWUFBWSx3Q0FHWixhQUFhO1FBQ2IsbUJBQW1CO1FBQ25CLGFBQWE7UUFDYixhQUFhO3VIQUtKLHlCQUF5QixhQUZ6QixDQUFDLGFBQWEsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBVjdGLFVBQVU7UUFDVixZQUFZO1FBQ1osWUFBWSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQztRQUNoRCxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7UUFDMUIsYUFBYTtRQUNiLG1CQUFtQjtRQUNuQixhQUFhO1FBQ2IsYUFBYTsyRkFLSix5QkFBeUI7a0JBaEJyQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLDRCQUE0QixFQUFFLDhCQUE4QixDQUFDO29CQUM1RSxPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUU7d0JBQ1AsVUFBVTt3QkFDVixZQUFZO3dCQUNaLFlBQVksQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUM7d0JBQ2hELGdCQUFnQixDQUFDLE9BQU8sRUFBRTt3QkFDMUIsYUFBYTt3QkFDYixtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsYUFBYTtxQkFDZDtvQkFDRCxlQUFlLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSw4QkFBOEIsQ0FBQztvQkFDL0UsU0FBUyxFQUFFLENBQUMsYUFBYSxDQUFDLG9DQUFvQyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ2hHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBDb3JlTW9kdWxlLCBob29rTmF2aWdhdG9yLCBob29rUGF0dGVybk1lc3NhZ2VzIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcnVzdGVkQ2VydGlmaWNhdGVzQ29tcG9uZW50IH0gZnJvbSAnLi90cnVzdGVkLWNlcnRpZmljYXRlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnNEcm9wZG93bk1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvZHJvcGRvd24nO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvcG9wb3Zlcic7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90b29sdGlwJztcbmltcG9ydCB7IEFkZFRydXN0ZWRDZXJ0aWZpY2F0ZUNvbXBvbmVudCB9IGZyb20gJy4vYWRkLXRydXN0ZWQtY2VydGlmaWNhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbnNNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2J1dHRvbnMnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRydXN0ZWRDZXJ0aWZpY2F0ZXNOYXZpZ2F0aW9uRmFjdG9yeSB9IGZyb20gJy4vdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMtbmF2aWdhdGlvbi5mYWN0b3J5JztcbmltcG9ydCB7IE1FU1NBR0VTIH0gZnJvbSAnLi9wYXR0ZXJuLW1lc3NhZ2VzLmRhdGEnO1xuXG5jb25zdCB0cnVzdGVkQ2VydGlmaWNhdGVzUm91dGVzOiBSb3V0ZVtdID0gW1xuICB7XG4gICAgcGF0aDogJ3RydXN0ZWQtY2VydGlmaWNhdGVzJyxcbiAgICBjb21wb25lbnQ6IFRydXN0ZWRDZXJ0aWZpY2F0ZXNDb21wb25lbnRcbiAgfVxuXTtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbVHJ1c3RlZENlcnRpZmljYXRlc0NvbXBvbmVudCwgQWRkVHJ1c3RlZENlcnRpZmljYXRlQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW10sXG4gIGltcG9ydHM6IFtcbiAgICBDb3JlTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQodHJ1c3RlZENlcnRpZmljYXRlc1JvdXRlcyksXG4gICAgQnNEcm9wZG93bk1vZHVsZS5mb3JSb290KCksXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEJ1dHRvbnNNb2R1bGUsXG4gICAgUG9wb3Zlck1vZHVsZVxuICBdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtUcnVzdGVkQ2VydGlmaWNhdGVzQ29tcG9uZW50LCBBZGRUcnVzdGVkQ2VydGlmaWNhdGVDb21wb25lbnRdLFxuICBwcm92aWRlcnM6IFtob29rTmF2aWdhdG9yKFRydXN0ZWRDZXJ0aWZpY2F0ZXNOYXZpZ2F0aW9uRmFjdG9yeSksIGhvb2tQYXR0ZXJuTWVzc2FnZXMoTUVTU0FHRVMpXVxufSlcbmV4cG9ydCBjbGFzcyBUcnVzdGVkQ2VydGlmaWNhdGVzTW9kdWxlIHt9XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1jZXJ0aWZpY2F0ZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMvdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFTLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDM0csT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7O0FBRXRGLE1BQU0seUJBQXlCLEdBQVk7SUFDekM7UUFDRSxJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLFVBQVUsRUFBRSxtQ0FBbUM7S0FDaEQ7Q0FDRixDQUFDO0FBZUYsTUFBTSxPQUFPLHlCQUF5Qjs7c0hBQXpCLHlCQUF5Qjt1SEFBekIseUJBQXlCLDZCQVRsQyxpQkFBaUI7UUFDakIsNEJBQTRCO3VIQVFuQix5QkFBeUIsYUFOekI7UUFDVCxhQUFhLENBQUMsb0NBQW9DLENBQUM7UUFDbkQsbUJBQW1CLENBQUMsUUFBUSxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxXQUFXLENBQUM7S0FDckIsWUFSQyxZQUFZLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDO1FBQ2hELGlCQUFpQjtRQUNqQiw0QkFBNEI7MkZBUW5CLHlCQUF5QjtrQkFickMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUU7d0JBQ1AsWUFBWSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQzt3QkFDaEQsaUJBQWlCO3dCQUNqQiw0QkFBNEI7cUJBQzdCO29CQUNELFNBQVMsRUFBRTt3QkFDVCxhQUFhLENBQUMsb0NBQW9DLENBQUM7d0JBQ25ELG1CQUFtQixDQUFDLFFBQVEsQ0FBQzt3QkFDN0IsT0FBTyxDQUFDLFdBQVcsQ0FBQztxQkFDckI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGUsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBob29rTmF2aWdhdG9yLCBob29rUGF0dGVybk1lc3NhZ2VzLCBob29rVGFiIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcnVzdGVkQ2VydGlmaWNhdGVzTmF2aWdhdGlvbkZhY3RvcnkgfSBmcm9tICcuL2ZhY3Rvcmllcy90cnVzdGVkLWNlcnRpZmljYXRlcy1uYXZpZ2F0aW9uLmZhY3RvcnknO1xuaW1wb3J0IHsgTUVTU0FHRVMgfSBmcm9tICcuL3BhdHRlcm4tbWVzc2FnZXMuZGF0YSc7XG5pbXBvcnQgeyBUYWJzRmFjdG9yeSB9IGZyb20gJy4vZmFjdG9yaWVzL3RhYnMuZmFjdG9yeSc7XG5pbXBvcnQgeyBDcmxTZXR0aW5nc01vZHVsZSB9IGZyb20gJy4vY3JsL2NybC1zZXR0aW5ncy5tb2R1bGUnO1xuaW1wb3J0IHsgVHJ1c3RlZENlcnRpZmljYXRlTGlzdE1vZHVsZSB9IGZyb20gJy4vbGlzdC90cnVzdGVkLWNlcnRpZmljYXRlLWxpc3QubW9kdWxlJztcblxuY29uc3QgdHJ1c3RlZENlcnRpZmljYXRlc1JvdXRlczogUm91dGVbXSA9IFtcbiAge1xuICAgIHBhdGg6ICd0cnVzdGVkLWNlcnRpZmljYXRlcycsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgcmVkaXJlY3RUbzogJ3RydXN0ZWQtY2VydGlmaWNhdGVzL2NlcnRpZmljYXRlcydcbiAgfVxuXTtcblxuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW10sXG4gIGltcG9ydHM6IFtcbiAgICBSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQodHJ1c3RlZENlcnRpZmljYXRlc1JvdXRlcyksXG4gICAgQ3JsU2V0dGluZ3NNb2R1bGUsXG4gICAgVHJ1c3RlZENlcnRpZmljYXRlTGlzdE1vZHVsZVxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBob29rTmF2aWdhdG9yKFRydXN0ZWRDZXJ0aWZpY2F0ZXNOYXZpZ2F0aW9uRmFjdG9yeSksXG4gICAgaG9va1BhdHRlcm5NZXNzYWdlcyhNRVNTQUdFUyksXG4gICAgaG9va1RhYihUYWJzRmFjdG9yeSlcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUcnVzdGVkQ2VydGlmaWNhdGVzTW9kdWxlIHt9XG4iXX0=
@@ -4,8 +4,8 @@ import { Injectable, NgModule } from '@angular/core';
4
4
  import { from, Subject, pipe } from 'rxjs';
5
5
  import { filter } from 'rxjs/operators';
6
6
  import * as i1 from '@c8y/client';
7
- import { AlarmService, ApplicationService, AuditService, BasicAuth, CookieAuth, DeviceRegistrationBulkService, DeviceRegistrationService, EventBinaryService, EventService, FetchClient, IdentityService, InventoryBinaryService, InventoryRoleService, InventoryService, MeasurementService, OperationBulkService, OperationService, Realtime, SmartGroupsService, SmartRulesService, SystemOptionsService, TenantLoginOptionsService, TenantOptionsService, TenantSecurityOptionsService, TenantService, TrustedCertificateService, UserGroupService, UserRoleService, UserService } from '@c8y/client';
8
- export { AlarmService, ApplicationService, AuditService, BasicAuth, CookieAuth, DeviceRegistrationBulkService, DeviceRegistrationService, EventBinaryService, EventService, FetchClient, IdentityService, InventoryBinaryService, InventoryRoleService, InventoryService, MeasurementService, OperationBulkService, OperationService, Realtime, SmartGroupsService, SmartRulesService, SystemOptionsService, TenantLoginOptionsService, TenantOptionsService, TenantSecurityOptionsService, TenantService, TrustedCertificateService, UserGroupService, UserRoleService, UserService } from '@c8y/client';
7
+ import { AlarmService, ApplicationService, AuditService, BasicAuth, CookieAuth, CrlService, DeviceRegistrationBulkService, DeviceRegistrationService, EventBinaryService, EventService, FetchClient, IdentityService, InventoryBinaryService, InventoryRoleService, InventoryService, MeasurementService, OperationBulkService, OperationService, Realtime, SmartGroupsService, SmartRulesService, SystemOptionsService, TenantLoginOptionsService, TenantOptionsService, TenantSecurityOptionsService, TenantService, TrustedCertificateService, UserGroupService, UserRoleService, UserService } from '@c8y/client';
8
+ export { AlarmService, ApplicationService, AuditService, BasicAuth, CookieAuth, CrlService, DeviceRegistrationBulkService, DeviceRegistrationService, EventBinaryService, EventService, FetchClient, IdentityService, InventoryBinaryService, InventoryRoleService, InventoryService, MeasurementService, OperationBulkService, OperationService, Realtime, SmartGroupsService, SmartRulesService, SystemOptionsService, TenantLoginOptionsService, TenantOptionsService, TenantSecurityOptionsService, TenantService, TrustedCertificateService, UserGroupService, UserRoleService, UserService } from '@c8y/client';
9
9
 
10
10
  class HttpHandler {
11
11
  }
@@ -165,6 +165,7 @@ var services = /*#__PURE__*/Object.freeze({
165
165
  AuditService: AuditService,
166
166
  BasicAuth: BasicAuth,
167
167
  CookieAuth: CookieAuth,
168
+ CrlService: CrlService,
168
169
  DeviceRegistrationBulkService: DeviceRegistrationBulkService,
169
170
  DeviceRegistrationService: DeviceRegistrationService,
170
171
  EventBinaryService: EventBinaryService,
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-api.mjs","sources":["../../api/interceptor.model.ts","../../api/http-handler.model.ts","../../api/api.service.ts","../../api/data.module.ts","../../api/index.ts","../../api/c8y-ngx-components-api.ts"],"sourcesContent":["import { ApiCall } from './api.model';\nimport { Observable } from 'rxjs';\nimport { IFetchResponse } from '@c8y/client';\n\nexport interface HttpInterceptor {\n intercept(req: ApiCall, next: HttpHandler): Observable<IFetchResponse>;\n}\n\nexport abstract class HttpHandler {\n abstract handle(req: ApiCall): Observable<IFetchResponse>;\n}\n","import { ApiCall } from './api.model';\nimport { Observable, from } from 'rxjs';\nimport { FetchClient, IFetchResponse } from '@c8y/client';\nimport { HttpHandler, HttpInterceptor } from './interceptor.model';\n\nexport class HttpInterceptHandler extends HttpHandler {\n constructor(protected interceptor: HttpInterceptor, protected nextHandler: HttpHandler) {\n super();\n }\n\n handle(req: ApiCall): Observable<IFetchResponse> {\n return this.interceptor.intercept(req, this.nextHandler);\n }\n}\n\nexport interface RequestStartAndFinish {\n onStart(req: ApiCall): void;\n onFinish(res: ApiCall): void;\n}\n\nexport class HttpRequestHandler extends HttpHandler {\n constructor(protected fetch: FetchClient['fetch'], protected apiService?: RequestStartAndFinish) {\n super();\n }\n\n handle(req: ApiCall): Observable<IFetchResponse> {\n const { options, url } = req;\n const { method } = options;\n this.apiService?.onStart({ method, options, url });\n let fetchPromise = this.fetch(url, options);\n if (typeof options.responseInterceptor === 'function') {\n fetchPromise = fetchPromise.then(options.responseInterceptor);\n }\n fetchPromise.then(\n (response: IFetchResponse) => this.apiService?.onFinish({ method, options, url, response }),\n (response: IFetchResponse) => this.apiService?.onFinish({ method, options, url, response })\n );\n return from(fetchPromise);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FetchClient, IFetchOptions, IFetchResponse } from '@c8y/client';\nimport { MonoTypeOperatorFunction, Observable, Subject, pipe } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { ApiCall, ApiCallOptions } from './api.model';\nimport {\n HttpInterceptHandler,\n HttpRequestHandler,\n RequestStartAndFinish\n} from './http-handler.model';\nimport { HttpHandler, HttpInterceptor } from './interceptor.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApiService implements RequestStartAndFinish {\n calls: Observable<ApiCall>;\n private callsSubject = new Subject<ApiCall>();\n private interceptors = new Map<string, HttpInterceptor>();\n private interceptorCounter = 0;\n\n constructor(private client: FetchClient) {\n this.calls = this.callsSubject.asObservable();\n this.hookIntoClientFetch();\n }\n\n /**\n * Allows to hook into the responses received by the FetchClient.\n * This is meant to be used to react on the responses, not for manipulation of the responses.\n * @param hookFilter A filter function to filter for specific responses.\n * @returns An Observable of the filtered responses.\n */\n hookResponse(hookFilter: (call: ApiCall) => boolean) {\n return this.callsSubject.pipe(\n filter(({ phase }) => phase === 'finish'),\n filter(hookFilter)\n );\n }\n\n /**\n * Allows to hook into the requests performed by the FetchClient.\n * This is meant to be used to react on the requests, not for manipulation of the requests.\n * @param hookFilter A filter function to filter for specific requests.\n * @returns An Observable of the filtered requests.\n */\n hookRequest(hookFilter: (call: ApiCall) => boolean) {\n return this.callsSubject.pipe(\n filter(({ phase }) => phase === 'start'),\n filter(hookFilter)\n );\n }\n\n onFinish(call: ApiCall) {\n this.callsSubject.next({ phase: 'finish', ...call });\n }\n\n onStart(call: ApiCall) {\n this.callsSubject.next({ phase: 'start', ...call });\n }\n\n resolveData<T = unknown>(call: ApiCall): Promise<{ data: T; method: string; url: string }> {\n const { response, method, url } = call;\n if ('data' in response) {\n return Promise.resolve({ data: response.data, method, url });\n } else {\n // No Content success status, for example DELETE request.\n if ((response as Response)?.status === 204) {\n return Promise.resolve({ data: null, method, url });\n }\n const cb = data => ({ data, method, url });\n return (response as Response).clone().json().then(cb, cb);\n }\n }\n\n /**\n * Can be added to a pipe to exclude any permission call. Permission calls are PUT\n * request with only an id in it, to verify if the user has access to this managed object.\n * @returns The operator to be added to a pipe.\n */\n excludePermissionCall(): MonoTypeOperatorFunction<ApiCall> {\n return pipe(\n filter(({ method, options }) => {\n if (method === 'PUT' && options.body && typeof options.body === 'string') {\n const parsedBody = JSON.parse(options.body as string);\n const bodyKeys = Object.keys(parsedBody);\n return !(bodyKeys.length === 1 && bodyKeys[0] === 'id');\n }\n return true;\n })\n );\n }\n\n /**\n * Allows to intercept requests performed via the FetchClient requests.\n * @param interceptor The interceptor to be added.\n * @param id An optional unique identifier for the interceptor. The chain of interceptors is ordered by this id. And it can be used to remove the interceptor later on.\n * @returns The id of the interceptor (same as provided id if one was provided, otherwise an id will be generated).\n */\n addInterceptor(interceptor: HttpInterceptor, id?: string): string {\n if (!id) {\n id = `${++this.interceptorCounter}`;\n }\n this.interceptors.set(id, interceptor);\n return id;\n }\n\n /**\n * Allows to remove a previously added interceptor by it's id.\n * @param id The id of the interceptor that should be removed.\n * @returns true if an interceptor existed and has been removed, or false if id does not exist.\n */\n removeInterceptor(id: string): boolean {\n return this.interceptors.delete(id);\n }\n\n /**\n * Checks if an interceptor with a given id exists.\n * @param id The id of the interceptor.\n * @returns - Returns true if an interceptor with the given id exists, otherwise false.\n */\n hasInterceptor(id: string): boolean {\n return this.interceptors.has(id);\n }\n\n private hookIntoClientFetch() {\n const fetch: FetchClient['fetch'] = this.client.fetch.bind(this.client);\n const requestHandler = new HttpRequestHandler(fetch, this);\n this.client.fetch = async (\n url,\n options: ApiCallOptions & IFetchOptions = { method: 'GET' }\n ) => {\n const { method } = options;\n return this.createInterceptorChain({ url, options, method }, requestHandler).toPromise();\n };\n }\n\n private createInterceptorChain(\n call: ApiCall,\n requestHandler: HttpRequestHandler\n ): Observable<IFetchResponse> {\n let handler: HttpHandler = requestHandler;\n // Do some sorting to always apply the interceptors in the specific order\n const sortedInterceptorIds = Array.from(this.interceptors.keys()).sort((a, b) =>\n b.localeCompare(a)\n );\n for (const interceptorId of sortedInterceptorIds) {\n handler = new HttpInterceptHandler(this.interceptors.get(interceptorId), handler);\n }\n return handler.handle(call);\n }\n}\n","import { ModuleWithProviders, NgModule, Provider, Type } from '@angular/core';\nimport { BasicAuth, FetchClient, Realtime, CookieAuth } from '@c8y/client';\nimport { ApiService } from './api.service';\nimport * as services from './services';\n\nfunction toProvider(provide: Type<unknown>): Provider {\n let deps: Array<Type<FetchClient | Realtime | CookieAuth>> = [FetchClient, Realtime];\n if (provide === FetchClient) {\n deps = [CookieAuth];\n }\n if (provide === BasicAuth || provide === CookieAuth) {\n deps = [];\n }\n if (provide === Realtime) {\n deps = [FetchClient];\n }\n return { provide, useClass: provide, deps };\n}\n\nconst providers: Provider[] = Object.keys(services)\n .map(k => toProvider(services[k]))\n .concat([{ provide: ApiService, useClass: ApiService, deps: [FetchClient] }]);\n// @dynamic\n@NgModule({\n providers\n})\nexport class DataModule {\n static providers(): Provider[] {\n return providers;\n }\n static forRoot(): ModuleWithProviders<DataModule> {\n return {\n ngModule: DataModule,\n providers\n };\n }\n}\n","export * from './api.service';\nexport * from './api.model';\nexport * from './data.module';\nexport * from './services';\nexport * from './interceptor.model';\n// do not expose as it might confuse people on what to implement\n// export * from './http-handler.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-api.mjs","sources":["../../api/interceptor.model.ts","../../api/http-handler.model.ts","../../api/api.service.ts","../../api/data.module.ts","../../api/index.ts","../../api/c8y-ngx-components-api.ts"],"sourcesContent":["import { ApiCall } from './api.model';\nimport { Observable } from 'rxjs';\nimport { IFetchResponse } from '@c8y/client';\n\nexport interface HttpInterceptor {\n intercept(req: ApiCall, next: HttpHandler): Observable<IFetchResponse>;\n}\n\nexport abstract class HttpHandler {\n abstract handle(req: ApiCall): Observable<IFetchResponse>;\n}\n","import { ApiCall } from './api.model';\nimport { Observable, from } from 'rxjs';\nimport { FetchClient, IFetchResponse } from '@c8y/client';\nimport { HttpHandler, HttpInterceptor } from './interceptor.model';\n\nexport class HttpInterceptHandler extends HttpHandler {\n constructor(protected interceptor: HttpInterceptor, protected nextHandler: HttpHandler) {\n super();\n }\n\n handle(req: ApiCall): Observable<IFetchResponse> {\n return this.interceptor.intercept(req, this.nextHandler);\n }\n}\n\nexport interface RequestStartAndFinish {\n onStart(req: ApiCall): void;\n onFinish(res: ApiCall): void;\n}\n\nexport class HttpRequestHandler extends HttpHandler {\n constructor(protected fetch: FetchClient['fetch'], protected apiService?: RequestStartAndFinish) {\n super();\n }\n\n handle(req: ApiCall): Observable<IFetchResponse> {\n const { options, url } = req;\n const { method } = options;\n this.apiService?.onStart({ method, options, url });\n let fetchPromise = this.fetch(url, options);\n if (typeof options.responseInterceptor === 'function') {\n fetchPromise = fetchPromise.then(options.responseInterceptor);\n }\n fetchPromise.then(\n (response: IFetchResponse) => this.apiService?.onFinish({ method, options, url, response }),\n (response: IFetchResponse) => this.apiService?.onFinish({ method, options, url, response })\n );\n return from(fetchPromise);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FetchClient, IFetchOptions, IFetchResponse } from '@c8y/client';\nimport { MonoTypeOperatorFunction, Observable, Subject, pipe } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { ApiCall, ApiCallOptions } from './api.model';\nimport {\n HttpInterceptHandler,\n HttpRequestHandler,\n RequestStartAndFinish\n} from './http-handler.model';\nimport { HttpHandler, HttpInterceptor } from './interceptor.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApiService implements RequestStartAndFinish {\n calls: Observable<ApiCall>;\n private callsSubject = new Subject<ApiCall>();\n private interceptors = new Map<string, HttpInterceptor>();\n private interceptorCounter = 0;\n\n constructor(private client: FetchClient) {\n this.calls = this.callsSubject.asObservable();\n this.hookIntoClientFetch();\n }\n\n /**\n * Allows to hook into the responses received by the FetchClient.\n * This is meant to be used to react on the responses, not for manipulation of the responses.\n * @param hookFilter A filter function to filter for specific responses.\n * @returns An Observable of the filtered responses.\n */\n hookResponse(hookFilter: (call: ApiCall) => boolean) {\n return this.callsSubject.pipe(\n filter(({ phase }) => phase === 'finish'),\n filter(hookFilter)\n );\n }\n\n /**\n * Allows to hook into the requests performed by the FetchClient.\n * This is meant to be used to react on the requests, not for manipulation of the requests.\n * @param hookFilter A filter function to filter for specific requests.\n * @returns An Observable of the filtered requests.\n */\n hookRequest(hookFilter: (call: ApiCall) => boolean) {\n return this.callsSubject.pipe(\n filter(({ phase }) => phase === 'start'),\n filter(hookFilter)\n );\n }\n\n onFinish(call: ApiCall) {\n this.callsSubject.next({ phase: 'finish', ...call });\n }\n\n onStart(call: ApiCall) {\n this.callsSubject.next({ phase: 'start', ...call });\n }\n\n resolveData<T = unknown>(call: ApiCall): Promise<{ data: T; method: string; url: string }> {\n const { response, method, url } = call;\n if ('data' in response) {\n return Promise.resolve({ data: response.data, method, url });\n } else {\n // No Content success status, for example DELETE request.\n if ((response as Response)?.status === 204) {\n return Promise.resolve({ data: null, method, url });\n }\n const cb = data => ({ data, method, url });\n return (response as Response).clone().json().then(cb, cb);\n }\n }\n\n /**\n * Can be added to a pipe to exclude any permission call. Permission calls are PUT\n * request with only an id in it, to verify if the user has access to this managed object.\n * @returns The operator to be added to a pipe.\n */\n excludePermissionCall(): MonoTypeOperatorFunction<ApiCall> {\n return pipe(\n filter(({ method, options }) => {\n if (method === 'PUT' && options.body && typeof options.body === 'string') {\n const parsedBody = JSON.parse(options.body as string);\n const bodyKeys = Object.keys(parsedBody);\n return !(bodyKeys.length === 1 && bodyKeys[0] === 'id');\n }\n return true;\n })\n );\n }\n\n /**\n * Allows to intercept requests performed via the FetchClient requests.\n * @param interceptor The interceptor to be added.\n * @param id An optional unique identifier for the interceptor. The chain of interceptors is ordered by this id. And it can be used to remove the interceptor later on.\n * @returns The id of the interceptor (same as provided id if one was provided, otherwise an id will be generated).\n */\n addInterceptor(interceptor: HttpInterceptor, id?: string): string {\n if (!id) {\n id = `${++this.interceptorCounter}`;\n }\n this.interceptors.set(id, interceptor);\n return id;\n }\n\n /**\n * Allows to remove a previously added interceptor by it's id.\n * @param id The id of the interceptor that should be removed.\n * @returns true if an interceptor existed and has been removed, or false if id does not exist.\n */\n removeInterceptor(id: string): boolean {\n return this.interceptors.delete(id);\n }\n\n /**\n * Checks if an interceptor with a given id exists.\n * @param id The id of the interceptor.\n * @returns - Returns true if an interceptor with the given id exists, otherwise false.\n */\n hasInterceptor(id: string): boolean {\n return this.interceptors.has(id);\n }\n\n private hookIntoClientFetch() {\n const fetch: FetchClient['fetch'] = this.client.fetch.bind(this.client);\n const requestHandler = new HttpRequestHandler(fetch, this);\n this.client.fetch = async (\n url,\n options: ApiCallOptions & IFetchOptions = { method: 'GET' }\n ) => {\n const { method } = options;\n return this.createInterceptorChain({ url, options, method }, requestHandler).toPromise();\n };\n }\n\n private createInterceptorChain(\n call: ApiCall,\n requestHandler: HttpRequestHandler\n ): Observable<IFetchResponse> {\n let handler: HttpHandler = requestHandler;\n // Do some sorting to always apply the interceptors in the specific order\n const sortedInterceptorIds = Array.from(this.interceptors.keys()).sort((a, b) =>\n b.localeCompare(a)\n );\n for (const interceptorId of sortedInterceptorIds) {\n handler = new HttpInterceptHandler(this.interceptors.get(interceptorId), handler);\n }\n return handler.handle(call);\n }\n}\n","import { ModuleWithProviders, NgModule, Provider, Type } from '@angular/core';\nimport { BasicAuth, FetchClient, Realtime, CookieAuth } from '@c8y/client';\nimport { ApiService } from './api.service';\nimport * as services from './services';\n\nfunction toProvider(provide: Type<unknown>): Provider {\n let deps: Array<Type<FetchClient | Realtime | CookieAuth>> = [FetchClient, Realtime];\n if (provide === FetchClient) {\n deps = [CookieAuth];\n }\n if (provide === BasicAuth || provide === CookieAuth) {\n deps = [];\n }\n if (provide === Realtime) {\n deps = [FetchClient];\n }\n return { provide, useClass: provide, deps };\n}\n\nconst providers: Provider[] = Object.keys(services)\n .map(k => toProvider(services[k]))\n .concat([{ provide: ApiService, useClass: ApiService, deps: [FetchClient] }]);\n// @dynamic\n@NgModule({\n providers\n})\nexport class DataModule {\n static providers(): Provider[] {\n return providers;\n }\n static forRoot(): ModuleWithProviders<DataModule> {\n return {\n ngModule: DataModule,\n providers\n };\n }\n}\n","export * from './api.service';\nexport * from './api.model';\nexport * from './data.module';\nexport * from './services';\nexport * from './interceptor.model';\n// do not expose as it might confuse people on what to implement\n// export * from './http-handler.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}