@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.
- package/bundles/sunbird-cb-resolver.umd.js +945 -732
- package/bundles/sunbird-cb-resolver.umd.js.map +1 -1
- package/esm2015/lib/invalid-permission/invalid-permission.component.js +33 -30
- package/esm2015/lib/invalid-registration/invalid-registration.component.js +27 -24
- package/esm2015/lib/restricted/restricted.component.js +27 -24
- package/esm2015/lib/unresolved/unresolved.component.js +34 -33
- package/esm2015/lib/widget-base.component.js +60 -51
- package/esm2015/lib/widget-resolver.constant.js +4 -4
- package/esm2015/lib/widget-resolver.directive.js +35 -43
- package/esm2015/lib/widget-resolver.model.js +2 -57
- package/esm2015/lib/widget-resolver.module.js +77 -65
- package/esm2015/lib/widget-resolver.permissions.js +74 -74
- package/esm2015/lib/widget-resolver.service.js +96 -114
- package/esm2015/public-api.js +7 -6
- package/esm2015/sunbird-cb-resolver.js +2 -8
- package/fesm2015/sunbird-cb-resolver.js +402 -467
- package/fesm2015/sunbird-cb-resolver.js.map +1 -1
- package/lib/invalid-permission/invalid-permission.component.d.ts +14 -11
- package/lib/invalid-registration/invalid-registration.component.d.ts +11 -8
- package/lib/restricted/restricted.component.d.ts +11 -8
- package/lib/unresolved/unresolved.component.d.ts +13 -10
- package/lib/widget-base.component.d.ts +18 -15
- package/lib/widget-resolver.constant.d.ts +4 -4
- package/lib/widget-resolver.directive.d.ts +15 -12
- package/lib/widget-resolver.model.d.ts +48 -48
- package/lib/widget-resolver.module.d.ts +20 -6
- package/lib/widget-resolver.permissions.d.ts +3 -3
- package/lib/widget-resolver.service.d.ts +23 -22
- package/package.json +17 -20
- package/public-api.d.ts +6 -5
- package/sunbird-cb-resolver.d.ts +2 -8
- package/bundles/sunbird-cb-resolver.umd.min.js +0 -16
- package/bundles/sunbird-cb-resolver.umd.min.js.map +0 -1
- package/esm5/lib/invalid-permission/invalid-permission.component.js +0 -35
- package/esm5/lib/invalid-registration/invalid-registration.component.js +0 -29
- package/esm5/lib/restricted/restricted.component.js +0 -29
- package/esm5/lib/unresolved/unresolved.component.js +0 -38
- package/esm5/lib/widget-base.component.js +0 -54
- package/esm5/lib/widget-resolver.constant.js +0 -4
- package/esm5/lib/widget-resolver.directive.js +0 -45
- package/esm5/lib/widget-resolver.model.js +0 -57
- package/esm5/lib/widget-resolver.module.js +0 -69
- package/esm5/lib/widget-resolver.permissions.js +0 -79
- package/esm5/lib/widget-resolver.service.js +0 -120
- package/esm5/public-api.js +0 -6
- package/esm5/sunbird-cb-resolver.js +0 -8
- package/fesm5/sunbird-cb-resolver.js +0 -517
- package/fesm5/sunbird-cb-resolver.js.map +0 -1
- 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
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
]
|
|
65
|
-
|
|
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(
|
|
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 = (
|
|
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,
|
|
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
|