@sunbird-cb/resolver 0.0.3 → 1.0.0-ang-9-12

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 (49) hide show
  1. package/bundles/sunbird-cb-resolver.umd.js +945 -732
  2. package/bundles/sunbird-cb-resolver.umd.js.map +1 -1
  3. package/esm2015/lib/invalid-permission/invalid-permission.component.js +33 -30
  4. package/esm2015/lib/invalid-registration/invalid-registration.component.js +27 -24
  5. package/esm2015/lib/restricted/restricted.component.js +27 -24
  6. package/esm2015/lib/unresolved/unresolved.component.js +34 -33
  7. package/esm2015/lib/widget-base.component.js +60 -51
  8. package/esm2015/lib/widget-resolver.constant.js +4 -4
  9. package/esm2015/lib/widget-resolver.directive.js +35 -43
  10. package/esm2015/lib/widget-resolver.model.js +2 -57
  11. package/esm2015/lib/widget-resolver.module.js +77 -65
  12. package/esm2015/lib/widget-resolver.permissions.js +74 -74
  13. package/esm2015/lib/widget-resolver.service.js +96 -114
  14. package/esm2015/public-api.js +7 -6
  15. package/esm2015/sunbird-cb-resolver.js +2 -8
  16. package/fesm2015/sunbird-cb-resolver.js +402 -467
  17. package/fesm2015/sunbird-cb-resolver.js.map +1 -1
  18. package/lib/invalid-permission/invalid-permission.component.d.ts +14 -11
  19. package/lib/invalid-registration/invalid-registration.component.d.ts +11 -8
  20. package/lib/restricted/restricted.component.d.ts +11 -8
  21. package/lib/unresolved/unresolved.component.d.ts +13 -10
  22. package/lib/widget-base.component.d.ts +18 -15
  23. package/lib/widget-resolver.constant.d.ts +4 -4
  24. package/lib/widget-resolver.directive.d.ts +15 -12
  25. package/lib/widget-resolver.model.d.ts +48 -48
  26. package/lib/widget-resolver.module.d.ts +20 -6
  27. package/lib/widget-resolver.permissions.d.ts +3 -3
  28. package/lib/widget-resolver.service.d.ts +23 -22
  29. package/package.json +17 -20
  30. package/public-api.d.ts +6 -5
  31. package/sunbird-cb-resolver.d.ts +2 -8
  32. package/bundles/sunbird-cb-resolver.umd.min.js +0 -16
  33. package/bundles/sunbird-cb-resolver.umd.min.js.map +0 -1
  34. package/esm5/lib/invalid-permission/invalid-permission.component.js +0 -35
  35. package/esm5/lib/invalid-registration/invalid-registration.component.js +0 -29
  36. package/esm5/lib/restricted/restricted.component.js +0 -29
  37. package/esm5/lib/unresolved/unresolved.component.js +0 -38
  38. package/esm5/lib/widget-base.component.js +0 -54
  39. package/esm5/lib/widget-resolver.constant.js +0 -4
  40. package/esm5/lib/widget-resolver.directive.js +0 -45
  41. package/esm5/lib/widget-resolver.model.js +0 -57
  42. package/esm5/lib/widget-resolver.module.js +0 -69
  43. package/esm5/lib/widget-resolver.permissions.js +0 -79
  44. package/esm5/lib/widget-resolver.service.js +0 -120
  45. package/esm5/public-api.js +0 -6
  46. package/esm5/sunbird-cb-resolver.js +0 -8
  47. package/fesm5/sunbird-cb-resolver.js +0 -517
  48. package/fesm5/sunbird-cb-resolver.js.map +0 -1
  49. package/sunbird-cb-resolver.metadata.json +0 -1
@@ -1,65 +1,77 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { WidgetResolverDirective } from './widget-resolver.directive';
4
- import { RestrictedComponent } from './restricted/restricted.component';
5
- import { InvalidRegistrationComponent } from './invalid-registration/invalid-registration.component';
6
- import { InvalidPermissionComponent } from './invalid-permission/invalid-permission.component';
7
- import { UnresolvedComponent } from './unresolved/unresolved.component';
8
- import { MatButtonModule, MatIconModule, MatCardModule } from '@angular/material';
9
- import { WidgetResolverService } from './widget-resolver.service';
10
- import { ConfigurationsService } from '@sunbird-cb/utils';
11
- import { WIDGET_RESOLVER_GLOBAL_CONFIG, WIDGET_RESOLVER_SCOPED_CONFIG, } from './widget-resolver.constant';
12
- import { WidgetBaseComponent } from './widget-base.component';
13
- export class WidgetResolverModule {
14
- static forRoot(config) {
15
- return {
16
- ngModule: WidgetResolverModule,
17
- providers: [
18
- WidgetResolverService,
19
- {
20
- provide: WIDGET_RESOLVER_GLOBAL_CONFIG,
21
- useValue: config,
22
- },
23
- {
24
- provide: WIDGET_RESOLVER_SCOPED_CONFIG,
25
- useValue: [],
26
- },
27
- ],
28
- };
29
- }
30
- static forChild(config) {
31
- return {
32
- ngModule: WidgetResolverModule,
33
- providers: [
34
- WidgetResolverService,
35
- {
36
- provide: WIDGET_RESOLVER_SCOPED_CONFIG,
37
- useValue: config,
38
- },
39
- ],
40
- };
41
- }
42
- }
43
- WidgetResolverModule.decorators = [
44
- { type: NgModule, args: [{
45
- declarations: [
46
- WidgetBaseComponent,
47
- WidgetResolverDirective,
48
- RestrictedComponent,
49
- InvalidRegistrationComponent,
50
- InvalidPermissionComponent,
51
- UnresolvedComponent,
52
- ],
53
- imports: [CommonModule, MatButtonModule, MatIconModule, MatCardModule],
54
- exports: [WidgetResolverDirective, WidgetBaseComponent],
55
- entryComponents: [
56
- RestrictedComponent,
57
- InvalidRegistrationComponent,
58
- InvalidPermissionComponent,
59
- UnresolvedComponent,
60
- WidgetBaseComponent,
61
- ],
62
- providers: [ConfigurationsService],
63
- },] }
64
- ];
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlc29sdmVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL3Jlc29sdmVyLyIsInNvdXJjZXMiOlsibGliL3dpZGdldC1yZXNvbHZlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUE7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFBO0FBQ3BHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFBO0FBQzlGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWpGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3pELE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsNkJBQTZCLEdBQzlCLE1BQU0sNEJBQTRCLENBQUE7QUFDbkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFxQjdELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUE4QztRQUMzRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixTQUFTLEVBQUU7Z0JBQ1QscUJBQXFCO2dCQUNyQjtvQkFDRSxPQUFPLEVBQUUsNkJBQTZCO29CQUN0QyxRQUFRLEVBQUUsTUFBTTtpQkFDakI7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLDZCQUE2QjtvQkFDdEMsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7YUFDRjtTQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUE4QztRQUM1RCxPQUFPO1lBQ0wsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixTQUFTLEVBQUU7Z0JBQ1QscUJBQXFCO2dCQUNyQjtvQkFDRSxPQUFPLEVBQUUsNkJBQTZCO29CQUN0QyxRQUFRLEVBQUUsTUFBTTtpQkFDakI7YUFDRjtTQUNGLENBQUE7SUFDSCxDQUFDOzs7WUFoREYsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRTtvQkFDWixtQkFBbUI7b0JBQ25CLHVCQUF1QjtvQkFDdkIsbUJBQW1CO29CQUNuQiw0QkFBNEI7b0JBQzVCLDBCQUEwQjtvQkFDMUIsbUJBQW1CO2lCQUNwQjtnQkFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUM7Z0JBQ3RFLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixFQUFFLG1CQUFtQixDQUFDO2dCQUN2RCxlQUFlLEVBQUU7b0JBQ2YsbUJBQW1CO29CQUNuQiw0QkFBNEI7b0JBQzVCLDBCQUEwQjtvQkFDMUIsbUJBQW1CO29CQUNuQixtQkFBbUI7aUJBQ3BCO2dCQUNELFNBQVMsRUFBRSxDQUFDLHFCQUFxQixDQUFDO2FBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXHJcbmltcG9ydCB7IFdpZGdldFJlc29sdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi93aWRnZXQtcmVzb2x2ZXIuZGlyZWN0aXZlJ1xyXG5pbXBvcnQgeyBSZXN0cmljdGVkQ29tcG9uZW50IH0gZnJvbSAnLi9yZXN0cmljdGVkL3Jlc3RyaWN0ZWQuY29tcG9uZW50J1xyXG5pbXBvcnQgeyBJbnZhbGlkUmVnaXN0cmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9pbnZhbGlkLXJlZ2lzdHJhdGlvbi9pbnZhbGlkLXJlZ2lzdHJhdGlvbi5jb21wb25lbnQnXHJcbmltcG9ydCB7IEludmFsaWRQZXJtaXNzaW9uQ29tcG9uZW50IH0gZnJvbSAnLi9pbnZhbGlkLXBlcm1pc3Npb24vaW52YWxpZC1wZXJtaXNzaW9uLmNvbXBvbmVudCdcclxuaW1wb3J0IHsgVW5yZXNvbHZlZENvbXBvbmVudCB9IGZyb20gJy4vdW5yZXNvbHZlZC91bnJlc29sdmVkLmNvbXBvbmVudCdcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnXHJcbmltcG9ydCB7IE5zV2lkZ2V0UmVzb2x2ZXIgfSBmcm9tICcuL3dpZGdldC1yZXNvbHZlci5tb2RlbCdcclxuaW1wb3J0IHsgV2lkZ2V0UmVzb2x2ZXJTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQtcmVzb2x2ZXIuc2VydmljZSdcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQHN1bmJpcmQtY2IvdXRpbHMnXHJcbmltcG9ydCB7XHJcbiAgV0lER0VUX1JFU09MVkVSX0dMT0JBTF9DT05GSUcsXHJcbiAgV0lER0VUX1JFU09MVkVSX1NDT1BFRF9DT05GSUcsXHJcbn0gZnJvbSAnLi93aWRnZXQtcmVzb2x2ZXIuY29uc3RhbnQnXHJcbmltcG9ydCB7IFdpZGdldEJhc2VDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldC1iYXNlLmNvbXBvbmVudCdcclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFdpZGdldEJhc2VDb21wb25lbnQsXHJcbiAgICBXaWRnZXRSZXNvbHZlckRpcmVjdGl2ZSxcclxuICAgIFJlc3RyaWN0ZWRDb21wb25lbnQsXHJcbiAgICBJbnZhbGlkUmVnaXN0cmF0aW9uQ29tcG9uZW50LFxyXG4gICAgSW52YWxpZFBlcm1pc3Npb25Db21wb25lbnQsXHJcbiAgICBVbnJlc29sdmVkQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRDYXJkTW9kdWxlXSxcclxuICBleHBvcnRzOiBbV2lkZ2V0UmVzb2x2ZXJEaXJlY3RpdmUsIFdpZGdldEJhc2VDb21wb25lbnRdLFxyXG4gIGVudHJ5Q29tcG9uZW50czogW1xyXG4gICAgUmVzdHJpY3RlZENvbXBvbmVudCxcclxuICAgIEludmFsaWRSZWdpc3RyYXRpb25Db21wb25lbnQsXHJcbiAgICBJbnZhbGlkUGVybWlzc2lvbkNvbXBvbmVudCxcclxuICAgIFVucmVzb2x2ZWRDb21wb25lbnQsXHJcbiAgICBXaWRnZXRCYXNlQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbQ29uZmlndXJhdGlvbnNTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFdpZGdldFJlc29sdmVyTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IE5zV2lkZ2V0UmVzb2x2ZXIuSVJlZ2lzdHJhdGlvbkNvbmZpZ1tdKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogV2lkZ2V0UmVzb2x2ZXJNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIFdpZGdldFJlc29sdmVyU2VydmljZSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBXSURHRVRfUkVTT0xWRVJfR0xPQkFMX0NPTkZJRyxcclxuICAgICAgICAgIHVzZVZhbHVlOiBjb25maWcsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBXSURHRVRfUkVTT0xWRVJfU0NPUEVEX0NPTkZJRyxcclxuICAgICAgICAgIHVzZVZhbHVlOiBbXSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgfVxyXG4gIH1cclxuICBzdGF0aWMgZm9yQ2hpbGQoY29uZmlnOiBOc1dpZGdldFJlc29sdmVyLklSZWdpc3RyYXRpb25Db25maWdbXSk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IFdpZGdldFJlc29sdmVyTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBXaWRnZXRSZXNvbHZlclNlcnZpY2UsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogV0lER0VUX1JFU09MVkVSX1NDT1BFRF9DT05GSUcsXHJcbiAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { WidgetResolverDirective } from './widget-resolver.directive';
4
+ import { RestrictedComponent } from './restricted/restricted.component';
5
+ import { InvalidRegistrationComponent } from './invalid-registration/invalid-registration.component';
6
+ import { InvalidPermissionComponent } from './invalid-permission/invalid-permission.component';
7
+ import { UnresolvedComponent } from './unresolved/unresolved.component';
8
+ import { MatButtonModule } from '@angular/material/button';
9
+ import { MatCardModule } from '@angular/material/card';
10
+ import { MatIconModule } from '@angular/material/icon';
11
+ import { WidgetResolverService } from './widget-resolver.service';
12
+ import { ConfigurationsService } from '@sunbird-cb/utils';
13
+ import { WIDGET_RESOLVER_GLOBAL_CONFIG, WIDGET_RESOLVER_SCOPED_CONFIG, } from './widget-resolver.constant';
14
+ import { WidgetBaseComponent } from './widget-base.component';
15
+ import * as i0 from "@angular/core";
16
+ export class WidgetResolverModule {
17
+ static forRoot(config) {
18
+ return {
19
+ ngModule: WidgetResolverModule,
20
+ providers: [
21
+ WidgetResolverService,
22
+ {
23
+ provide: WIDGET_RESOLVER_GLOBAL_CONFIG,
24
+ useValue: config,
25
+ },
26
+ {
27
+ provide: WIDGET_RESOLVER_SCOPED_CONFIG,
28
+ useValue: [],
29
+ },
30
+ ],
31
+ };
32
+ }
33
+ static forChild(config) {
34
+ return {
35
+ ngModule: WidgetResolverModule,
36
+ providers: [
37
+ WidgetResolverService,
38
+ {
39
+ provide: WIDGET_RESOLVER_SCOPED_CONFIG,
40
+ useValue: config,
41
+ },
42
+ ],
43
+ };
44
+ }
45
+ }
46
+ WidgetResolverModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: WidgetResolverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
47
+ WidgetResolverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: WidgetResolverModule, declarations: [WidgetBaseComponent,
48
+ WidgetResolverDirective,
49
+ RestrictedComponent,
50
+ InvalidRegistrationComponent,
51
+ InvalidPermissionComponent,
52
+ UnresolvedComponent], imports: [CommonModule, MatButtonModule, MatIconModule, MatCardModule], exports: [WidgetResolverDirective, WidgetBaseComponent] });
53
+ WidgetResolverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: WidgetResolverModule, providers: [ConfigurationsService], imports: [[CommonModule, MatButtonModule, MatIconModule, MatCardModule]] });
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: WidgetResolverModule, decorators: [{
55
+ type: NgModule,
56
+ args: [{
57
+ declarations: [
58
+ WidgetBaseComponent,
59
+ WidgetResolverDirective,
60
+ RestrictedComponent,
61
+ InvalidRegistrationComponent,
62
+ InvalidPermissionComponent,
63
+ UnresolvedComponent,
64
+ ],
65
+ imports: [CommonModule, MatButtonModule, MatIconModule, MatCardModule],
66
+ exports: [WidgetResolverDirective, WidgetBaseComponent],
67
+ entryComponents: [
68
+ RestrictedComponent,
69
+ InvalidRegistrationComponent,
70
+ InvalidPermissionComponent,
71
+ UnresolvedComponent,
72
+ WidgetBaseComponent,
73
+ ],
74
+ providers: [ConfigurationsService],
75
+ }]
76
+ }] });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlc29sdmVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi9yZXNvbHZlci9zcmMvbGliL3dpZGdldC1yZXNvbHZlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUE7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFBO0FBQ3BHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFBO0FBQzlGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBRXRELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3pELE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsNkJBQTZCLEdBQzlCLE1BQU0sNEJBQTRCLENBQUE7QUFDbkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUE7O0FBcUI3RCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBOEM7UUFDM0QsT0FBTztZQUNMLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsU0FBUyxFQUFFO2dCQUNULHFCQUFxQjtnQkFDckI7b0JBQ0UsT0FBTyxFQUFFLDZCQUE2QjtvQkFDdEMsUUFBUSxFQUFFLE1BQU07aUJBQ2pCO2dCQUNEO29CQUNFLE9BQU8sRUFBRSw2QkFBNkI7b0JBQ3RDLFFBQVEsRUFBRSxFQUFFO2lCQUNiO2FBQ0Y7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBOEM7UUFDNUQsT0FBTztZQUNMLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsU0FBUyxFQUFFO2dCQUNULHFCQUFxQjtnQkFDckI7b0JBQ0UsT0FBTyxFQUFFLDZCQUE2QjtvQkFDdEMsUUFBUSxFQUFFLE1BQU07aUJBQ2pCO2FBQ0Y7U0FDRixDQUFBO0lBQ0gsQ0FBQzs7a0hBNUJVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGlCQWxCN0IsbUJBQW1CO1FBQ25CLHVCQUF1QjtRQUN2QixtQkFBbUI7UUFDbkIsNEJBQTRCO1FBQzVCLDBCQUEwQjtRQUMxQixtQkFBbUIsYUFFWCxZQUFZLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhLGFBQzNELHVCQUF1QixFQUFFLG1CQUFtQjttSEFVM0Msb0JBQW9CLGFBRnBCLENBQUMscUJBQXFCLENBQUMsWUFUekIsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUM7NEZBVzNELG9CQUFvQjtrQkFwQmhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLG1CQUFtQjt3QkFDbkIsdUJBQXVCO3dCQUN2QixtQkFBbUI7d0JBQ25CLDRCQUE0Qjt3QkFDNUIsMEJBQTBCO3dCQUMxQixtQkFBbUI7cUJBQ3BCO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQztvQkFDdEUsT0FBTyxFQUFFLENBQUMsdUJBQXVCLEVBQUUsbUJBQW1CLENBQUM7b0JBQ3ZELGVBQWUsRUFBRTt3QkFDZixtQkFBbUI7d0JBQ25CLDRCQUE0Qjt3QkFDNUIsMEJBQTBCO3dCQUMxQixtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDcEI7b0JBQ0QsU0FBUyxFQUFFLENBQUMscUJBQXFCLENBQUM7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXHJcbmltcG9ydCB7IFdpZGdldFJlc29sdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi93aWRnZXQtcmVzb2x2ZXIuZGlyZWN0aXZlJ1xyXG5pbXBvcnQgeyBSZXN0cmljdGVkQ29tcG9uZW50IH0gZnJvbSAnLi9yZXN0cmljdGVkL3Jlc3RyaWN0ZWQuY29tcG9uZW50J1xyXG5pbXBvcnQgeyBJbnZhbGlkUmVnaXN0cmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9pbnZhbGlkLXJlZ2lzdHJhdGlvbi9pbnZhbGlkLXJlZ2lzdHJhdGlvbi5jb21wb25lbnQnXHJcbmltcG9ydCB7IEludmFsaWRQZXJtaXNzaW9uQ29tcG9uZW50IH0gZnJvbSAnLi9pbnZhbGlkLXBlcm1pc3Npb24vaW52YWxpZC1wZXJtaXNzaW9uLmNvbXBvbmVudCdcclxuaW1wb3J0IHsgVW5yZXNvbHZlZENvbXBvbmVudCB9IGZyb20gJy4vdW5yZXNvbHZlZC91bnJlc29sdmVkLmNvbXBvbmVudCdcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJ1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbidcclxuaW1wb3J0IHsgTnNXaWRnZXRSZXNvbHZlciB9IGZyb20gJy4vd2lkZ2V0LXJlc29sdmVyLm1vZGVsJ1xyXG5pbXBvcnQgeyBXaWRnZXRSZXNvbHZlclNlcnZpY2UgfSBmcm9tICcuL3dpZGdldC1yZXNvbHZlci5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscydcclxuaW1wb3J0IHtcclxuICBXSURHRVRfUkVTT0xWRVJfR0xPQkFMX0NPTkZJRyxcclxuICBXSURHRVRfUkVTT0xWRVJfU0NPUEVEX0NPTkZJRyxcclxufSBmcm9tICcuL3dpZGdldC1yZXNvbHZlci5jb25zdGFudCdcclxuaW1wb3J0IHsgV2lkZ2V0QmFzZUNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LWJhc2UuY29tcG9uZW50J1xyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgV2lkZ2V0QmFzZUNvbXBvbmVudCxcclxuICAgIFdpZGdldFJlc29sdmVyRGlyZWN0aXZlLFxyXG4gICAgUmVzdHJpY3RlZENvbXBvbmVudCxcclxuICAgIEludmFsaWRSZWdpc3RyYXRpb25Db21wb25lbnQsXHJcbiAgICBJbnZhbGlkUGVybWlzc2lvbkNvbXBvbmVudCxcclxuICAgIFVucmVzb2x2ZWRDb21wb25lbnQsXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdENhcmRNb2R1bGVdLFxyXG4gIGV4cG9ydHM6IFtXaWRnZXRSZXNvbHZlckRpcmVjdGl2ZSwgV2lkZ2V0QmFzZUNvbXBvbmVudF0sXHJcbiAgZW50cnlDb21wb25lbnRzOiBbXHJcbiAgICBSZXN0cmljdGVkQ29tcG9uZW50LFxyXG4gICAgSW52YWxpZFJlZ2lzdHJhdGlvbkNvbXBvbmVudCxcclxuICAgIEludmFsaWRQZXJtaXNzaW9uQ29tcG9uZW50LFxyXG4gICAgVW5yZXNvbHZlZENvbXBvbmVudCxcclxuICAgIFdpZGdldEJhc2VDb21wb25lbnQsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtDb25maWd1cmF0aW9uc1NlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgV2lkZ2V0UmVzb2x2ZXJNb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogTnNXaWRnZXRSZXNvbHZlci5JUmVnaXN0cmF0aW9uQ29uZmlnW10pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFdpZGdldFJlc29sdmVyTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogV2lkZ2V0UmVzb2x2ZXJNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIFdpZGdldFJlc29sdmVyU2VydmljZSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBXSURHRVRfUkVTT0xWRVJfR0xPQkFMX0NPTkZJRyxcclxuICAgICAgICAgIHVzZVZhbHVlOiBjb25maWcsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBXSURHRVRfUkVTT0xWRVJfU0NPUEVEX0NPTkZJRyxcclxuICAgICAgICAgIHVzZVZhbHVlOiBbXSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgfVxyXG4gIH1cclxuICBzdGF0aWMgZm9yQ2hpbGQoY29uZmlnOiBOc1dpZGdldFJlc29sdmVyLklSZWdpc3RyYXRpb25Db25maWdbXSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8V2lkZ2V0UmVzb2x2ZXJNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBXaWRnZXRSZXNvbHZlck1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgV2lkZ2V0UmVzb2x2ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IFdJREdFVF9SRVNPTFZFUl9TQ09QRURfQ09ORklHLFxyXG4gICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZyxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,74 +1,74 @@
1
- function isStringArray(strArr) {
2
- return Array.isArray(strArr) && strArr.every((u => typeof u === 'string'));
3
- }
4
- function isCheckRequired(requiredPermission) {
5
- if (requiredPermission === undefined ||
6
- requiredPermission === null ||
7
- requiredPermission === '' ||
8
- (Array.isArray(requiredPermission) && requiredPermission.length === 0)) {
9
- return false;
10
- }
11
- return true;
12
- }
13
- function flipBoolean(value, flip = false) {
14
- return flip ? !value : value;
15
- }
16
- function permissionTest(testFor, requiredPermission, matchAgainst, isRestrictive = false) {
17
- if (!isCheckRequired(requiredPermission)) {
18
- return true;
19
- }
20
- if (typeof requiredPermission === 'string') {
21
- switch (testFor) {
22
- case 'all':
23
- case 'some':
24
- return flipBoolean(matchAgainst.has(requiredPermission), isRestrictive);
25
- case 'none':
26
- return flipBoolean(!matchAgainst.has(requiredPermission), isRestrictive);
27
- }
28
- }
29
- if (Array.isArray(requiredPermission)) {
30
- const matcher = ((u) => typeof u === 'string' && flipBoolean(matchAgainst.has(u), isRestrictive));
31
- switch (testFor) {
32
- case 'all':
33
- return requiredPermission.every(matcher);
34
- case 'some':
35
- return requiredPermission.some(matcher);
36
- case 'none':
37
- return !requiredPermission.every(matcher);
38
- }
39
- }
40
- return false;
41
- }
42
- export function hasUnitPermission(requiredPermission, matchAgainst, isRestrictive = false) {
43
- if (!isCheckRequired(requiredPermission)) {
44
- return true;
45
- }
46
- const accessValues = matchAgainst instanceof Set
47
- ? matchAgainst
48
- : Array.isArray(matchAgainst) && isStringArray(matchAgainst)
49
- ? new Set(matchAgainst)
50
- : typeof matchAgainst === 'string'
51
- ? new Set([matchAgainst])
52
- : new Set();
53
- if (typeof requiredPermission === 'object' && requiredPermission !== null) {
54
- if (Array.isArray(requiredPermission)) {
55
- return permissionTest('all', requiredPermission, accessValues, isRestrictive);
56
- }
57
- return (permissionTest('all', 'all' in requiredPermission ? requiredPermission.all : null, accessValues, isRestrictive) &&
58
- permissionTest('some', 'some' in requiredPermission ? requiredPermission.some : null, accessValues, isRestrictive) &&
59
- permissionTest('none', 'none' in requiredPermission ? requiredPermission.none : null, accessValues, isRestrictive));
60
- }
61
- return false;
62
- }
63
- export function hasPermissions(requiredPermission, availableRoles, availableGroups, restrictedFeatures) {
64
- if (!requiredPermission) {
65
- return true;
66
- }
67
- if (!requiredPermission.available || !requiredPermission.enabled) {
68
- return false;
69
- }
70
- return (hasUnitPermission(requiredPermission.groups, availableGroups) &&
71
- hasUnitPermission(requiredPermission.roles, availableRoles) &&
72
- hasUnitPermission(requiredPermission.features, restrictedFeatures, true));
73
- }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlc29sdmVyLnBlcm1pc3Npb25zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN1bmJpcmQtY2IvcmVzb2x2ZXIvIiwic291cmNlcyI6WyJsaWIvd2lkZ2V0LXJlc29sdmVyLnBlcm1pc3Npb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLFNBQVMsYUFBYSxDQUFDLE1BQXNCO0lBQzNDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFDLENBQUE7QUFDMUUsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLGtCQUFtRDtJQUMxRSxJQUNFLGtCQUFrQixLQUFLLFNBQVM7UUFDaEMsa0JBQWtCLEtBQUssSUFBSTtRQUMzQixrQkFBa0IsS0FBSyxFQUFFO1FBQ3pCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFDdEU7UUFDQSxPQUFPLEtBQUssQ0FBQTtLQUNiO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYyxFQUFFLElBQUksR0FBRyxLQUFLO0lBQy9DLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO0FBQzlCLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FDckIsT0FBZ0MsRUFDaEMsa0JBQXVFLEVBQ3ZFLFlBQXlCLEVBQ3pCLGFBQWEsR0FBRyxLQUFLO0lBRXJCLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRTtRQUN4QyxPQUFPLElBQUksQ0FBQTtLQUNaO0lBQ0QsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFFBQVEsRUFBRTtRQUMxQyxRQUFRLE9BQU8sRUFBRTtZQUNmLEtBQUssS0FBSyxD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UyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFO1FBQ2hFLE9BQU8sS0FBSyxDQUFBO0tBQ2I7SUFDRCxPQUFPLENBQ0wsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQztRQUM3RCxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDO1FBQzNELGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FDekUsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOc1dpZGdldFJlc29sdmVyIH0gZnJvbSAnLi93aWRnZXQtcmVzb2x2ZXIubW9kZWwnXHJcblxyXG5mdW5jdGlvbiBpc1N0cmluZ0FycmF5KHN0ckFycjogc3RyaW5nW10gfCBhbnkpOiBib29sZWFuIHtcclxuICByZXR1cm4gQXJyYXkuaXNBcnJheShzdHJBcnIpICYmIHN0ckFyci5ldmVyeSh1ID0+IHR5cGVvZiB1ID09PSAnc3RyaW5nJylcclxufVxyXG5cclxuZnVuY3Rpb24gaXNDaGVja1JlcXVpcmVkKHJlcXVpcmVkUGVybWlzc2lvbjogTnNXaWRnZXRSZXNvbHZlci5Vbml0UGVybWlzc2lvbik6IGJvb2xlYW4ge1xyXG4gIGlmIChcclxuICAgIHJlcXVpcmVkUGVybWlzc2lvbiA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICByZXF1aXJlZFBlcm1pc3Npb24gPT09IG51bGwgfHxcclxuICAgIHJlcXVpcmVkUGVybWlzc2lvbiA9PT0gJycgfHxcclxuICAgIChBcnJheS5pc0FycmF5KHJlcXVpcmVkUGVybWlzc2lvbikgJiYgcmVxdWlyZWRQZXJtaXNzaW9uLmxlbmd0aCA9PT0gMClcclxuICApIHtcclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuICByZXR1cm4gdHJ1ZVxyXG59XHJcblxyXG5mdW5jdGlvbiBmbGlwQm9vbGVhbih2YWx1ZTogYm9vbGVhbiwgZmxpcCA9IGZhbHNlKSB7XHJcbiAgcmV0dXJuIGZsaXAgPyAhdmFsdWUgOiB2YWx1ZVxyXG59XHJcblxyXG5mdW5jdGlvbiBwZXJtaXNzaW9uVGVzdChcclxuICB0ZXN0Rm9yOiAnYWxsJyB8ICdzb21lJyB8ICdub25lJyxcclxuICByZXF1aXJlZFBlcm1pc3Npb246IE5zV2lkZ2V0UmVzb2x2ZXIuVW5pdFBlcm1pc3Npb25QcmltaXRpdmUgfCBzdHJpbmdbXSxcclxuICBtYXRjaEFnYWluc3Q6IFNldDxzdHJpbmc+LFxyXG4gIGlzUmVzdHJpY3RpdmUgPSBmYWxzZSxcclxuKSB7XHJcbiAgaWYgKCFpc0NoZWNrUmVxdWlyZWQocmVxdWlyZWRQZXJtaXNzaW9uKSkge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgaWYgKHR5cGVvZiByZXF1aXJlZFBlcm1pc3Npb24gPT09ICdzdHJpbmcnKSB7XHJcbiAgICBzd2l0Y2ggKHRlc3RGb3IpIHtcclxuICAgICAgY2FzZSAnYWxsJzpcclxuICAgICAgY2FzZSAnc29tZSc6XHJcbiAgICAgICAgcmV0dXJuIGZsaXBCb29sZWFuKG1hdGNoQWdhaW5zdC5oYXMocmVxdWlyZWRQZXJtaXNzaW9uKSwgaXNSZXN0cmljdGl2ZSlcclxuICAgICAgY2FzZSAnbm9uZSc6XHJcbiAgICAgICAgcmV0dXJuIGZsaXBCb29sZWFuKCFtYXRjaEFnYWluc3QuaGFzKHJlcXVpcmVkUGVybWlzc2lvbiksIGlzUmVzdHJpY3RpdmUpXHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmIChBcnJheS5pc0FycmF5KHJlcXVpcmVkUGVybWlzc2lvbikpIHtcclxuICAgIGNvbnN0IG1hdGNoZXIgPSAodTogc3RyaW5nKSA9PlxyXG4gICAgICB0eXBlb2YgdSA9PT0gJ3N0cmluZycgJiYgZmxpcEJvb2xlYW4obWF0Y2hBZ2FpbnN0Lmhhcyh1KSwgaXNSZXN0cmljdGl2ZSlcclxuICAgIHN3aXRjaCAodGVzdEZvcikge1xyXG4gICAgICBjYXNlICdhbGwnOlxyXG4gICAgICAgIHJldHVybiByZXF1aXJlZFBlcm1pc3Npb24uZXZlcnkobWF0Y2hlcilcclxuICAgICAgY2FzZSAnc29tZSc6XHJcbiAgICAgICAgcmV0dXJuIHJlcXVpcmVkUGVybWlzc2lvbi5zb21lKG1hdGNoZXIpXHJcbiAgICAgIGNhc2UgJ25vbmUnOlxyXG4gICAgICAgIHJldHVybiAhcmVxdWlyZWRQZXJtaXNzaW9uLmV2ZXJ5KG1hdGNoZXIpXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBmYWxzZVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaGFzVW5pdFBlcm1pc3Npb24oXHJcbiAgcmVxdWlyZWRQZXJtaXNzaW9uOiBOc1dpZGdldFJlc29sdmVyLlVuaXRQZXJtaXNzaW9uLFxyXG4gIG1hdGNoQWdhaW5zdD86IFNldDxzdHJpbmc+IHwgc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gIGlzUmVzdHJpY3RpdmUgPSBmYWxzZSxcclxuKTogYm9vbGVhbiB7XHJcbiAgaWYgKCFpc0NoZWNrUmVxdWlyZWQocmVxdWlyZWRQZXJtaXNzaW9uKSkge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgY29uc3QgYWNjZXNzVmFsdWVzOiBTZXQ8c3RyaW5nPiA9XHJcbiAgICBtYXRjaEFnYWluc3QgaW5zdGFuY2VvZiBTZXRcclxuICAgICAgPyBtYXRjaEFnYWluc3RcclxuICAgICAgOiBBcnJheS5pc0FycmF5KG1hdGNoQWdhaW5zdCkgJiYgaXNTdHJpbmdBcnJheShtYXRjaEFnYWluc3QpXHJcbiAgICAgICAgPyBuZXcgU2V0KG1hdGNoQWdhaW5zdClcclxuICAgICAgICA6IHR5cGVvZiBtYXRjaEFnYWluc3QgPT09ICdzdHJpbmcnXHJcbiAgICAgICAgICA/IG5ldyBTZXQoW21hdGNoQWdhaW5zdF0pXHJcbiAgICAgICAgICA6IG5ldyBTZXQoKVxyXG5cclxuICBpZiAodHlwZW9mIHJlcXVpcmVkUGVybWlzc2lvbiA9PT0gJ29iamVjdCcgJiYgcmVxdWlyZWRQZXJtaXNzaW9uICE9PSBudWxsKSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXF1aXJlZFBlcm1pc3Npb24pKSB7XHJcbiAgICAgIHJldHVybiBwZXJtaXNzaW9uVGVzdCgnYWxsJywgcmVxdWlyZWRQZXJtaXNzaW9uLCBhY2Nlc3NWYWx1ZXMsIGlzUmVzdHJpY3RpdmUpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBwZXJtaXNzaW9uVGVzdChcclxuICAgICAgICAnYWxsJyxcclxuICAgICAgICAnYWxsJyBpbiByZXF1aXJlZFBlcm1pc3Npb24gPyByZXF1aXJlZFBlcm1pc3Npb24uYWxsIDogbnVsbCxcclxuICAgICAgICBhY2Nlc3NWYWx1ZXMsXHJcbiAgICAgICAgaXNSZXN0cmljdGl2ZSxcclxuICAgICAgKSAmJlxyXG4gICAgICBwZXJtaXNzaW9uVGVzdChcclxuICAgICAgICAnc29tZScsXHJcbiAgICAgICAgJ3NvbWUnIGluIHJlcXVpcmVkUGVybWlzc2lvbiA/IHJlcXVpcmVkUGVybWlzc2lvbi5zb21lIDogbnVsbCxcclxuICAgICAgICBhY2Nlc3NWYWx1ZXMsXHJcbiAgICAgICAgaXNSZXN0cmljdGl2ZSxcclxuICAgICAgKSAmJlxyXG4gICAgICBwZXJtaXNzaW9uVGVzdChcclxuICAgICAgICAnbm9uZScsXHJcbiAgICAgICAgJ25vbmUnIGluIHJlcXVpcmVkUGVybWlzc2lvbiA/IHJlcXVpcmVkUGVybWlzc2lvbi5ub25lIDogbnVsbCxcclxuICAgICAgICBhY2Nlc3NWYWx1ZXMsXHJcbiAgICAgICAgaXNSZXN0cmljdGl2ZSxcclxuICAgICAgKVxyXG4gICAgKVxyXG4gIH1cclxuICByZXR1cm4gZmFsc2VcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGhhc1Blcm1pc3Npb25zKFxyXG4gIHJlcXVpcmVkUGVybWlzc2lvbj86IE5zV2lkZ2V0UmVzb2x2ZXIuSVBlcm1pc3Npb25zLFxyXG4gIGF2YWlsYWJsZVJvbGVzPzogU2V0PHN0cmluZz4gfCBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgfCB1bmRlZmluZWQsXHJcbiAgYXZhaWxhYmxlR3JvdXBzPzogU2V0PHN0cmluZz4gfCBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgfCB1bmRlZmluZWQsXHJcbiAgcmVzdHJpY3RlZEZlYXR1cmVzPzogU2V0PHN0cmluZz4gfCBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgfCB1bmRlZmluZWQsXHJcbik6IGJvb2xlYW4ge1xyXG4gIGlmICghcmVxdWlyZWRQZXJtaXNzaW9uKSB7XHJcbiAgICByZXR1cm4gdHJ1ZVxyXG4gIH1cclxuICBpZiAoIXJlcXVpcmVkUGVybWlzc2lvbi5hdmFpbGFibGUgfHwgIXJlcXVpcmVkUGVybWlzc2lvbi5lbmFibGVkKSB7XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbiAgcmV0dXJuIChcclxuICAgIGhhc1VuaXRQZXJtaXNzaW9uKHJlcXVpcmVkUGVybWlzc2lvbi5ncm91cHMsIGF2YWlsYWJsZUdyb3VwcykgJiZcclxuICAgIGhhc1VuaXRQZXJtaXNzaW9uKHJlcXVpcmVkUGVybWlzc2lvbi5yb2xlcywgYXZhaWxhYmxlUm9sZXMpICYmXHJcbiAgICBoYXNVbml0UGVybWlzc2lvbihyZXF1aXJlZFBlcm1pc3Npb24uZmVhdHVyZXMsIHJlc3RyaWN0ZWRGZWF0dXJlcywgdHJ1ZSlcclxuICApXHJcbn1cclxuIl19
1
+ function isStringArray(strArr) {
2
+ return Array.isArray(strArr) && strArr.every(u => typeof u === 'string');
3
+ }
4
+ function isCheckRequired(requiredPermission) {
5
+ if (requiredPermission === undefined ||
6
+ requiredPermission === null ||
7
+ requiredPermission === '' ||
8
+ (Array.isArray(requiredPermission) && requiredPermission.length === 0)) {
9
+ return false;
10
+ }
11
+ return true;
12
+ }
13
+ function flipBoolean(value, flip = false) {
14
+ return flip ? !value : value;
15
+ }
16
+ function permissionTest(testFor, requiredPermission, matchAgainst, isRestrictive = false) {
17
+ if (!isCheckRequired(requiredPermission)) {
18
+ return true;
19
+ }
20
+ if (typeof requiredPermission === 'string') {
21
+ switch (testFor) {
22
+ case 'all':
23
+ case 'some':
24
+ return flipBoolean(matchAgainst.has(requiredPermission), isRestrictive);
25
+ case 'none':
26
+ return flipBoolean(!matchAgainst.has(requiredPermission), isRestrictive);
27
+ }
28
+ }
29
+ if (Array.isArray(requiredPermission)) {
30
+ const matcher = (u) => typeof u === 'string' && flipBoolean(matchAgainst.has(u), isRestrictive);
31
+ switch (testFor) {
32
+ case 'all':
33
+ return requiredPermission.every(matcher);
34
+ case 'some':
35
+ return requiredPermission.some(matcher);
36
+ case 'none':
37
+ return !requiredPermission.every(matcher);
38
+ }
39
+ }
40
+ return false;
41
+ }
42
+ export function hasUnitPermission(requiredPermission, matchAgainst, isRestrictive = false) {
43
+ if (!isCheckRequired(requiredPermission)) {
44
+ return true;
45
+ }
46
+ const accessValues = matchAgainst instanceof Set
47
+ ? matchAgainst
48
+ : Array.isArray(matchAgainst) && isStringArray(matchAgainst)
49
+ ? new Set(matchAgainst)
50
+ : typeof matchAgainst === 'string'
51
+ ? new Set([matchAgainst])
52
+ : new Set();
53
+ if (typeof requiredPermission === 'object' && requiredPermission !== null) {
54
+ if (Array.isArray(requiredPermission)) {
55
+ return permissionTest('all', requiredPermission, accessValues, isRestrictive);
56
+ }
57
+ return (permissionTest('all', 'all' in requiredPermission ? requiredPermission.all : null, accessValues, isRestrictive) &&
58
+ permissionTest('some', 'some' in requiredPermission ? requiredPermission.some : null, accessValues, isRestrictive) &&
59
+ permissionTest('none', 'none' in requiredPermission ? requiredPermission.none : null, accessValues, isRestrictive));
60
+ }
61
+ return false;
62
+ }
63
+ export function hasPermissions(requiredPermission, availableRoles, availableGroups, restrictedFeatures) {
64
+ if (!requiredPermission) {
65
+ return true;
66
+ }
67
+ if (!requiredPermission.available || !requiredPermission.enabled) {
68
+ return false;
69
+ }
70
+ return (hasUnitPermission(requiredPermission.groups, availableGroups) &&
71
+ hasUnitPermission(requiredPermission.roles, availableRoles) &&
72
+ hasUnitPermission(requiredPermission.features, restrictedFeatures, true));
73
+ }
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlc29sdmVyLnBlcm1pc3Npb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3Jlc29sdmVyL3NyYy9saWIvd2lkZ2V0LXJlc29sdmVyLnBlcm1pc3Npb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLFNBQVMsYUFBYSxDQUFDLE1BQXNCO0lBQzNDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUE7QUFDMUUsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLGtCQUFtRDtJQUMxRSxJQUNFLGtCQUFrQixLQUFLLFNBQVM7UUFDaEMsa0JBQWtCLEtBQUssSUFBSTtRQUMzQixrQkFBa0IsS0FBSyxFQUFFO1FBQ3pCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFDdEU7UUFDQSxPQUFPLEtBQUssQ0FBQTtLQUNiO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYyxFQUFFLElBQUksR0FBRyxLQUFLO0lBQy9DLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO0FBQzlCLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FDckIsT0FBZ0MsRUFDaEMsa0JBQXVFLEVBQ3ZFLFlBQXlCLEVBQ3pCLGFBQWEsR0FBRyxLQUFLO0lBRXJCLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRTtRQUN4QyxPQUFPLElBQUksQ0FBQTtLQUNaO0lBQ0QsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFFBQVEsRUFBRTtRQUMxQyxRQUFRLE9BQU8s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O0tBQ1o7SUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFO1FBQ2hFLE9BQU8sS0FBSyxDQUFBO0tBQ2I7SUFDRCxPQUFPLENBQ0wsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQztRQUM3RCxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDO1FBQzNELGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FDekUsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOc1dpZGdldFJlc29sdmVyIH0gZnJvbSAnLi93aWRnZXQtcmVzb2x2ZXIubW9kZWwnXHJcblxyXG5mdW5jdGlvbiBpc1N0cmluZ0FycmF5KHN0ckFycjogc3RyaW5nW10gfCBhbnkpOiBib29sZWFuIHtcclxuICByZXR1cm4gQXJyYXkuaXNBcnJheShzdHJBcnIpICYmIHN0ckFyci5ldmVyeSh1ID0+IHR5cGVvZiB1ID09PSAnc3RyaW5nJylcclxufVxyXG5cclxuZnVuY3Rpb24gaXNDaGVja1JlcXVpcmVkKHJlcXVpcmVkUGVybWlzc2lvbjogTnNXaWRnZXRSZXNvbHZlci5Vbml0UGVybWlzc2lvbik6IGJvb2xlYW4ge1xyXG4gIGlmIChcclxuICAgIHJlcXVpcmVkUGVybWlzc2lvbiA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICByZXF1aXJlZFBlcm1pc3Npb24gPT09IG51bGwgfHxcclxuICAgIHJlcXVpcmVkUGVybWlzc2lvbiA9PT0gJycgfHxcclxuICAgIChBcnJheS5pc0FycmF5KHJlcXVpcmVkUGVybWlzc2lvbikgJiYgcmVxdWlyZWRQZXJtaXNzaW9uLmxlbmd0aCA9PT0gMClcclxuICApIHtcclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuICByZXR1cm4gdHJ1ZVxyXG59XHJcblxyXG5mdW5jdGlvbiBmbGlwQm9vbGVhbih2YWx1ZTogYm9vbGVhbiwgZmxpcCA9IGZhbHNlKSB7XHJcbiAgcmV0dXJuIGZsaXAgPyAhdmFsdWUgOiB2YWx1ZVxyXG59XHJcblxyXG5mdW5jdGlvbiBwZXJtaXNzaW9uVGVzdChcclxuICB0ZXN0Rm9yOiAnYWxsJyB8ICdzb21lJyB8ICdub25lJyxcclxuICByZXF1aXJlZFBlcm1pc3Npb246IE5zV2lkZ2V0UmVzb2x2ZXIuVW5pdFBlcm1pc3Npb25QcmltaXRpdmUgfCBzdHJpbmdbXSxcclxuICBtYXRjaEFnYWluc3Q6IFNldDxzdHJpbmc+LFxyXG4gIGlzUmVzdHJpY3RpdmUgPSBmYWxzZSxcclxuKSB7XHJcbiAgaWYgKCFpc0NoZWNrUmVxdWlyZWQocmVxdWlyZWRQZXJtaXNzaW9uKSkge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgaWYgKHR5cGVvZiByZXF1aXJlZFBlcm1pc3Npb24gPT09ICdzdHJpbmcnKSB7XHJcbiAgICBzd2l0Y2ggKHRlc3RGb3IpIHtcclxuICAgICAgY2FzZSAnYWxsJzpcclxuICAgICAgY2FzZSAnc29tZSc6XHJcbiAgICAgICAgcmV0dXJuIGZsaXBCb29sZWFuKG1hdGNoQWdhaW5zdC5oYXMocmVxdWlyZWRQZXJtaXNzaW9uKSwgaXNSZXN0cmljdGl2ZSlcclxuICAgICAgY2FzZSAnbm9uZSc6XHJcbiAgICAgICAgcmV0dXJuIGZsaXBCb29sZWFuKCFtYXRjaEFnYWluc3QuaGFzKHJlcXVpcmVkUGVybWlzc2lvbiksIGlzUmVzdHJpY3RpdmUpXHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmIChBcnJheS5pc0FycmF5KHJlcXVpcmVkUGVybWlzc2lvbikpIHtcclxuICAgIGNvbnN0IG1hdGNoZXIgPSAodTogc3RyaW5nKSA9PlxyXG4gICAgICB0eXBlb2YgdSA9PT0gJ3N0cmluZycgJiYgZmxpcEJvb2xlYW4obWF0Y2hBZ2FpbnN0Lmhhcyh1KSwgaXNSZXN0cmljdGl2ZSlcclxuICAgIHN3aXRjaCAodGVzdEZvcikge1xyXG4gICAgICBjYXNlICdhbGwnOlxyXG4gICAgICAgIHJldHVybiByZXF1aXJlZFBlcm1pc3Npb24uZXZlcnkobWF0Y2hlcilcclxuICAgICAgY2FzZSAnc29tZSc6XHJcbiAgICAgICAgcmV0dXJuIHJlcXVpcmVkUGVybWlzc2lvbi5zb21lKG1hdGNoZXIpXHJcbiAgICAgIGNhc2UgJ25vbmUnOlxyXG4gICAgICAgIHJldHVybiAhcmVxdWlyZWRQZXJtaXNzaW9uLmV2ZXJ5KG1hdGNoZXIpXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBmYWxzZVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaGFzVW5pdFBlcm1pc3Npb24oXHJcbiAgcmVxdWlyZWRQZXJtaXNzaW9uOiBOc1dpZGdldFJlc29sdmVyLlVuaXRQZXJtaXNzaW9uLFxyXG4gIG1hdGNoQWdhaW5zdD86IFNldDxzdHJpbmc+IHwgc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gIGlzUmVzdHJpY3RpdmUgPSBmYWxzZSxcclxuKTogYm9vbGVhbiB7XHJcbiAgaWYgKCFpc0NoZWNrUmVxdWlyZWQocmVxdWlyZWRQZXJtaXNzaW9uKSkge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgY29uc3QgYWNjZXNzVmFsdWVzOiBTZXQ8c3RyaW5nPiA9XHJcbiAgICBtYXRjaEFnYWluc3QgaW5zdGFuY2VvZiBTZXRcclxuICAgICAgPyBtYXRjaEFnYWluc3RcclxuICAgICAgOiBBcnJheS5pc0FycmF5KG1hdGNoQWdhaW5zdCkgJiYgaXNTdHJpbmdBcnJheShtYXRjaEFnYWluc3QpXHJcbiAgICAgICAgPyBuZXcgU2V0KG1hdGNoQWdhaW5zdClcclxuICAgICAgICA6IHR5cGVvZiBtYXRjaEFnYWluc3QgPT09ICdzdHJpbmcnXHJcbiAgICAgICAgICA/IG5ldyBTZXQoW21hdGNoQWdhaW5zdF0pXHJcbiAgICAgICAgICA6IG5ldyBTZXQoKVxyXG5cclxuICBpZiAodHlwZW9mIHJlcXVpcmVkUGVybWlzc2lvbiA9PT0gJ29iamVjdCcgJiYgcmVxdWlyZWRQZXJtaXNzaW9uICE9PSBudWxsKSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXF1aXJlZFBlcm1pc3Npb24pKSB7XHJcbiAgICAgIHJldHVybiBwZXJtaXNzaW9uVGVzdCgnYWxsJywgcmVxdWlyZWRQZXJtaXNzaW9uLCBhY2Nlc3NWYWx1ZXMsIGlzUmVzdHJpY3RpdmUpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBwZXJtaXNzaW9uVGVzdChcclxuICAgICAgICAnYWxsJyxcclxuICAgICAgICAnYWxsJyBpbiByZXF1aXJlZFBlcm1pc3Npb24gPyByZXF1aXJlZFBlcm1pc3Npb24uYWxsIDogbnVsbCxcclxuICAgICAgICBhY2Nlc3NWYWx1ZXMsXHJcbiAgICAgICAgaXNSZXN0cmljdGl2ZSxcclxuICAgICAgKSAmJlxyXG4gICAgICBwZXJtaXNzaW9uVGVzdChcclxuICAgICAgICAnc29tZScsXHJcbiAgICAgICAgJ3NvbWUnIGluIHJlcXVpcmVkUGVybWlzc2lvbiA/IHJlcXVpcmVkUGVybWlzc2lvbi5zb21lIDogbnVsbCxcclxuICAgICAgICBhY2Nlc3NWYWx1ZXMsXHJcbiAgICAgICAgaXNSZXN0cmljdGl2ZSxcclxuICAgICAgKSAmJlxyXG4gICAgICBwZXJtaXNzaW9uVGVzdChcclxuICAgICAgICAnbm9uZScsXHJcbiAgICAgICAgJ25vbmUnIGluIHJlcXVpcmVkUGVybWlzc2lvbiA/IHJlcXVpcmVkUGVybWlzc2lvbi5ub25lIDogbnVsbCxcclxuICAgICAgICBhY2Nlc3NWYWx1ZXMsXHJcbiAgICAgICAgaXNSZXN0cmljdGl2ZSxcclxuICAgICAgKVxyXG4gICAgKVxyXG4gIH1cclxuICByZXR1cm4gZmFsc2VcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGhhc1Blcm1pc3Npb25zKFxyXG4gIHJlcXVpcmVkUGVybWlzc2lvbj86IE5zV2lkZ2V0UmVzb2x2ZXIuSVBlcm1pc3Npb25zLFxyXG4gIGF2YWlsYWJsZVJvbGVzPzogU2V0PHN0cmluZz4gfCBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgfCB1bmRlZmluZWQsXHJcbiAgYXZhaWxhYmxlR3JvdXBzPzogU2V0PHN0cmluZz4gfCBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgfCB1bmRlZmluZWQsXHJcbiAgcmVzdHJpY3RlZEZlYXR1cmVzPzogU2V0PHN0cmluZz4gfCBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgfCB1bmRlZmluZWQsXHJcbik6IGJvb2xlYW4ge1xyXG4gIGlmICghcmVxdWlyZWRQZXJtaXNzaW9uKSB7XHJcbiAgICByZXR1cm4gdHJ1ZVxyXG4gIH1cclxuICBpZiAoIXJlcXVpcmVkUGVybWlzc2lvbi5hdmFpbGFibGUgfHwgIXJlcXVpcmVkUGVybWlzc2lvbi5lbmFibGVkKSB7XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbiAgcmV0dXJuIChcclxuICAgIGhhc1VuaXRQZXJtaXNzaW9uKHJlcXVpcmVkUGVybWlzc2lvbi5ncm91cHMsIGF2YWlsYWJsZUdyb3VwcykgJiZcclxuICAgIGhhc1VuaXRQZXJtaXNzaW9uKHJlcXVpcmVkUGVybWlzc2lvbi5yb2xlcywgYXZhaWxhYmxlUm9sZXMpICYmXHJcbiAgICBoYXNVbml0UGVybWlzc2lvbihyZXF1aXJlZFBlcm1pc3Npb24uZmVhdHVyZXMsIHJlc3RyaWN0ZWRGZWF0dXJlcywgdHJ1ZSlcclxuICApXHJcbn1cclxuIl19