@falcon-ng/tailwind 0.0.2 → 0.0.3
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/esm2020/falcon-ng-tailwind.mjs +5 -0
- package/esm2020/lib/base-control.mjs +50 -0
- package/esm2020/lib/base-form-component.mjs +234 -0
- package/esm2020/lib/component/auto-complete/auto-complete.component.mjs +33 -0
- package/esm2020/lib/component/bottom-sheet/bottom-sheet.component.mjs +29 -0
- package/esm2020/lib/component/button/button.component.mjs +27 -0
- package/esm2020/lib/component/button-toggle/button-toggle.component.mjs +32 -0
- package/esm2020/lib/component/checkbox/checkbox.component.mjs +18 -0
- package/esm2020/lib/component/chips/chip.component.mjs +109 -0
- package/esm2020/lib/component/date-picker/date-picker.component.mjs +17 -0
- package/esm2020/lib/component/dialog/dialog.component.mjs +21 -0
- package/esm2020/lib/component/pagination/pagination.component.mjs +95 -0
- package/esm2020/lib/component/progress-bar/progress-bar.component.mjs +20 -0
- package/esm2020/lib/component/progress-spinner/progress-spinner.component.mjs +26 -0
- package/esm2020/lib/component/radio/radio.component.mjs +31 -0
- package/esm2020/lib/component/rich-text-editor/rich-text-editor.component.mjs +15 -0
- package/esm2020/lib/component/select/select.component.mjs +35 -0
- package/esm2020/lib/component/slide-toggle/slide-toggle.component.mjs +14 -0
- package/esm2020/lib/component/slider/slider.component.mjs +15 -0
- package/esm2020/lib/component/snack-bar/snack-bar.component.mjs +11 -0
- package/esm2020/lib/component/table/table.component.mjs +74 -0
- package/esm2020/lib/component/textarea/textarea.component.mjs +16 -0
- package/esm2020/lib/component/textbox/textbox.component.mjs +17 -0
- package/esm2020/lib/control-builder/control-builder.component.mjs +18 -0
- package/esm2020/lib/control-type/select.mjs +8 -0
- package/esm2020/lib/control-type/textarea.mjs +8 -0
- package/esm2020/lib/control-type/textbox.mjs +8 -0
- package/esm2020/lib/falcon-core.module.mjs +232 -0
- package/esm2020/lib/model/constant.mjs +32 -0
- package/esm2020/lib/model/enum.mjs +2 -0
- package/esm2020/lib/model/environments.mjs +3 -0
- package/esm2020/lib/model/interface.mjs +2 -0
- package/esm2020/lib/model/ivalidator.mjs +2 -0
- package/esm2020/lib/module/angularmaterial.module.mjs +189 -0
- package/esm2020/lib/reactive-field.directive.mjs +28 -0
- package/esm2020/lib/service/appsetting.service.mjs +55 -0
- package/esm2020/lib/service/http/generic-http-client.mjs +197 -0
- package/esm2020/lib/service/http/igeneric-http-client.mjs +10 -0
- package/esm2020/lib/service/logger.service.mjs +78 -0
- package/esm2020/lib/service/open-id/TokenHelperService.mjs +71 -0
- package/esm2020/lib/service/open-id/auth-guard.service.mjs +30 -0
- package/esm2020/lib/service/open-id/auth.service.mjs +154 -0
- package/esm2020/public-api.mjs +50 -0
- package/fesm2015/falcon-ng-tailwind.mjs +1906 -0
- package/fesm2015/falcon-ng-tailwind.mjs.map +1 -0
- package/fesm2020/falcon-ng-tailwind.mjs +1880 -0
- package/fesm2020/falcon-ng-tailwind.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/base-control.d.ts +104 -0
- package/lib/base-form-component.d.ts +169 -0
- package/lib/component/auto-complete/auto-complete.component.d.ts +17 -0
- package/lib/component/bottom-sheet/bottom-sheet.component.d.ts +11 -0
- package/lib/component/button/button.component.d.ts +12 -0
- package/lib/component/button-toggle/button-toggle.component.d.ts +14 -0
- package/lib/component/checkbox/checkbox.component.d.ts +10 -0
- package/lib/component/chips/chip.component.d.ts +35 -0
- package/lib/component/date-picker/date-picker.component.d.ts +9 -0
- package/lib/component/dialog/dialog.component.d.ts +8 -0
- package/lib/component/pagination/pagination.component.d.ts +20 -0
- package/lib/component/progress-bar/progress-bar.component.d.ts +11 -0
- package/lib/component/progress-spinner/progress-spinner.component.d.ts +12 -0
- package/lib/component/radio/radio.component.d.ts +14 -0
- package/lib/component/rich-text-editor/rich-text-editor.component.d.ts +9 -0
- package/lib/component/select/select.component.d.ts +15 -0
- package/lib/component/slide-toggle/slide-toggle.component.d.ts +9 -0
- package/lib/component/slider/slider.component.d.ts +9 -0
- package/lib/component/snack-bar/snack-bar.component.d.ts +5 -0
- package/lib/component/table/table.component.d.ts +21 -0
- package/lib/component/textarea/textarea.component.d.ts +9 -0
- package/lib/component/textbox/textbox.component.d.ts +9 -0
- package/lib/control-builder/control-builder.component.d.ts +9 -0
- package/{src/lib/control-type/Chip.ts → lib/control-type/select.d.ts} +2 -3
- package/{src/lib/control-type/Radio.ts → lib/control-type/textarea.d.ts} +2 -3
- package/lib/control-type/textbox.d.ts +5 -0
- package/lib/falcon-core.module.d.ts +35 -0
- package/lib/model/constant.d.ts +5 -0
- package/lib/model/enum.d.ts +144 -0
- package/{src/lib/model/environments.ts → lib/model/environments.d.ts} +5 -7
- package/{src/lib/model/interface.ts → lib/model/interface.d.ts} +80 -91
- package/{src/lib/model/ivalidator.ts → lib/model/ivalidator.d.ts} +3 -3
- package/lib/module/angularmaterial.module.d.ts +49 -0
- package/lib/reactive-field.directive.d.ts +14 -0
- package/lib/service/appsetting.service.d.ts +22 -0
- package/lib/service/http/generic-http-client.d.ts +121 -0
- package/lib/service/http/igeneric-http-client.d.ts +92 -0
- package/lib/service/logger.service.d.ts +18 -0
- package/lib/service/open-id/TokenHelperService.d.ts +11 -0
- package/lib/service/open-id/auth-guard.service.d.ts +11 -0
- package/lib/service/open-id/auth.service.d.ts +36 -0
- package/package.json +22 -2
- package/{src/public-api.ts → public-api.d.ts} +8 -6
- package/ng-package.json +0 -7
- package/src/lib/base-control.ts +0 -142
- package/src/lib/base-form-component.ts +0 -363
- package/src/lib/component/auto-complete/auto-complete.component.html +0 -39
- package/src/lib/component/auto-complete/auto-complete.component.scss +0 -0
- package/src/lib/component/auto-complete/auto-complete.component.spec.ts +0 -23
- package/src/lib/component/auto-complete/auto-complete.component.ts +0 -31
- package/src/lib/component/bottom-sheet/bottom-sheet.component.html +0 -9
- package/src/lib/component/bottom-sheet/bottom-sheet.component.scss +0 -0
- package/src/lib/component/bottom-sheet/bottom-sheet.component.spec.ts +0 -23
- package/src/lib/component/bottom-sheet/bottom-sheet.component.ts +0 -19
- package/src/lib/component/button/button.component.css +0 -0
- package/src/lib/component/button/button.component.html +0 -54
- package/src/lib/component/button/button.component.spec.ts +0 -23
- package/src/lib/component/button/button.component.ts +0 -17
- package/src/lib/component/button-toggle/button-toggle.component.html +0 -21
- package/src/lib/component/button-toggle/button-toggle.component.scss +0 -0
- package/src/lib/component/button-toggle/button-toggle.component.spec.ts +0 -23
- package/src/lib/component/button-toggle/button-toggle.component.ts +0 -26
- package/src/lib/component/checkbox/checkbox.component.html +0 -6
- package/src/lib/component/checkbox/checkbox.component.scss +0 -0
- package/src/lib/component/checkbox/checkbox.component.spec.ts +0 -23
- package/src/lib/component/checkbox/checkbox.component.ts +0 -17
- package/src/lib/component/chips/chip.component.html +0 -75
- package/src/lib/component/chips/chip.component.scss +0 -3
- package/src/lib/component/chips/chip.component.spec.ts +0 -23
- package/src/lib/component/chips/chip.component.ts +0 -125
- package/src/lib/component/date-picker/date-picker.component.html +0 -18
- package/src/lib/component/date-picker/date-picker.component.scss +0 -0
- package/src/lib/component/date-picker/date-picker.component.spec.ts +0 -23
- package/src/lib/component/date-picker/date-picker.component.ts +0 -13
- package/src/lib/component/dialog/dialog.component.html +0 -12
- package/src/lib/component/dialog/dialog.component.scss +0 -3
- package/src/lib/component/dialog/dialog.component.spec.ts +0 -23
- package/src/lib/component/dialog/dialog.component.ts +0 -12
- package/src/lib/component/pagination/pagination.component.html +0 -10
- package/src/lib/component/pagination/pagination.component.scss +0 -0
- package/src/lib/component/pagination/pagination.component.spec.ts +0 -23
- package/src/lib/component/pagination/pagination.component.ts +0 -86
- package/src/lib/component/progress-bar/progress-bar.component.html +0 -1
- package/src/lib/component/progress-bar/progress-bar.component.scss +0 -0
- package/src/lib/component/progress-bar/progress-bar.component.spec.ts +0 -23
- package/src/lib/component/progress-bar/progress-bar.component.ts +0 -15
- package/src/lib/component/progress-spinner/progress-spinner.component.html +0 -7
- package/src/lib/component/progress-spinner/progress-spinner.component.scss +0 -0
- package/src/lib/component/progress-spinner/progress-spinner.component.spec.ts +0 -23
- package/src/lib/component/progress-spinner/progress-spinner.component.ts +0 -16
- package/src/lib/component/radio/radio.component.html +0 -13
- package/src/lib/component/radio/radio.component.scss +0 -14
- package/src/lib/component/radio/radio.component.spec.ts +0 -23
- package/src/lib/component/radio/radio.component.ts +0 -29
- package/src/lib/component/rich-text-editor/rich-text-editor.component.html +0 -10
- package/src/lib/component/rich-text-editor/rich-text-editor.component.scss +0 -0
- package/src/lib/component/rich-text-editor/rich-text-editor.component.spec.ts +0 -23
- package/src/lib/component/rich-text-editor/rich-text-editor.component.ts +0 -13
- package/src/lib/component/select/select.component.html +0 -25
- package/src/lib/component/select/select.component.scss +0 -0
- package/src/lib/component/select/select.component.spec.ts +0 -23
- package/src/lib/component/select/select.component.ts +0 -32
- package/src/lib/component/slide-toggle/slide-toggle.component.html +0 -7
- package/src/lib/component/slide-toggle/slide-toggle.component.scss +0 -0
- package/src/lib/component/slide-toggle/slide-toggle.component.spec.ts +0 -23
- package/src/lib/component/slide-toggle/slide-toggle.component.ts +0 -13
- package/src/lib/component/slider/slider.component.html +0 -11
- package/src/lib/component/slider/slider.component.scss +0 -0
- package/src/lib/component/slider/slider.component.spec.ts +0 -23
- package/src/lib/component/slider/slider.component.ts +0 -13
- package/src/lib/component/snack-bar/snack-bar.component.html +0 -1
- package/src/lib/component/snack-bar/snack-bar.component.scss +0 -0
- package/src/lib/component/snack-bar/snack-bar.component.spec.ts +0 -23
- package/src/lib/component/snack-bar/snack-bar.component.ts +0 -10
- package/src/lib/component/table/table.component.html +0 -82
- package/src/lib/component/table/table.component.scss +0 -17
- package/src/lib/component/table/table.component.spec.ts +0 -23
- package/src/lib/component/table/table.component.ts +0 -54
- package/src/lib/component/textarea/textarea.component.html +0 -22
- package/src/lib/component/textarea/textarea.component.scss +0 -3
- package/src/lib/component/textarea/textarea.component.spec.ts +0 -23
- package/src/lib/component/textarea/textarea.component.ts +0 -13
- package/src/lib/component/textbox/textbox.component.html +0 -27
- package/src/lib/component/textbox/textbox.component.scss +0 -3
- package/src/lib/component/textbox/textbox.component.spec.ts +0 -23
- package/src/lib/component/textbox/textbox.component.ts +0 -13
- package/src/lib/control-builder/control-builder.component.html +0 -5
- package/src/lib/control-builder/control-builder.component.scss +0 -0
- package/src/lib/control-builder/control-builder.component.ts +0 -14
- package/src/lib/control-type/AutoComplete.ts +0 -6
- package/src/lib/control-type/Button.ts +0 -6
- package/src/lib/control-type/ButtonToggle.ts +0 -6
- package/src/lib/control-type/CheckBox.ts +0 -6
- package/src/lib/control-type/DatePicker.ts +0 -6
- package/src/lib/control-type/Divider.ts +0 -6
- package/src/lib/control-type/Editor.ts +0 -6
- package/src/lib/control-type/RichTextEditor.ts +0 -6
- package/src/lib/control-type/SlideToggle.ts +0 -6
- package/src/lib/control-type/Slider.ts +0 -6
- package/src/lib/control-type/select.ts +0 -6
- package/src/lib/control-type/textarea.ts +0 -6
- package/src/lib/control-type/textbox.ts +0 -6
- package/src/lib/falcon-core.module.ts +0 -141
- package/src/lib/model/constant.ts +0 -32
- package/src/lib/model/enum.ts +0 -151
- package/src/lib/module/angularmaterial.module.ts +0 -98
- package/src/lib/reactive-field.directive.ts +0 -24
- package/src/lib/service/appsetting.service.ts +0 -57
- package/src/lib/service/http/generic-http-client.ts +0 -205
- package/src/lib/service/http/httpInterceptor.ts +0 -36
- package/src/lib/service/http/igeneric-http-client.ts +0 -110
- package/src/lib/service/logger.service.ts +0 -75
- package/src/lib/service/open-id/TokenHelperService.ts +0 -76
- package/src/lib/service/open-id/auth-guard.service.ts +0 -25
- package/src/lib/service/open-id/auth.service.ts +0 -179
- package/tsconfig.lib.json +0 -15
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -14
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class LoggerService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.initialized = false;
|
|
6
|
+
this._level = "Warnings" /* LoggingLevel.Warnings */;
|
|
7
|
+
}
|
|
8
|
+
async initialize(appSettings) {
|
|
9
|
+
if (this.initialized)
|
|
10
|
+
return;
|
|
11
|
+
this._level = appSettings.loggingLevel;
|
|
12
|
+
this.initialized = true;
|
|
13
|
+
}
|
|
14
|
+
log(message, level = "Warnings" /* LoggingLevel.Warnings */, ...optionalParams) {
|
|
15
|
+
if (this.shouldLog(level)) {
|
|
16
|
+
switch (level) {
|
|
17
|
+
case "Errors" /* LoggingLevel.Errors */:
|
|
18
|
+
console.error(message, optionalParams);
|
|
19
|
+
break;
|
|
20
|
+
case "Warnings" /* LoggingLevel.Warnings */:
|
|
21
|
+
console.warn(message, optionalParams);
|
|
22
|
+
break;
|
|
23
|
+
case "Info" /* LoggingLevel.Info */:
|
|
24
|
+
console.info(message, optionalParams);
|
|
25
|
+
break;
|
|
26
|
+
default:
|
|
27
|
+
console.debug(message, optionalParams);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
shouldLog(level) {
|
|
32
|
+
if (this._level === "None" /* LoggingLevel.None */) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
else if (this._level === "Errors" /* LoggingLevel.Errors */) {
|
|
36
|
+
return level === "Errors" /* LoggingLevel.Errors */;
|
|
37
|
+
}
|
|
38
|
+
else if (this._level === "Warnings" /* LoggingLevel.Warnings */) {
|
|
39
|
+
return level === "Errors" /* LoggingLevel.Errors */ || level === "Warnings" /* LoggingLevel.Warnings */;
|
|
40
|
+
}
|
|
41
|
+
else if (this._level === "Info" /* LoggingLevel.Info */) {
|
|
42
|
+
return level === "Errors" /* LoggingLevel.Errors */ || level === "Warnings" /* LoggingLevel.Warnings */ || level === "Info" /* LoggingLevel.Info */;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
error(message, ...optionalParams) {
|
|
49
|
+
this.log(message, "Errors" /* LoggingLevel.Errors */, optionalParams);
|
|
50
|
+
}
|
|
51
|
+
warning(message, ...optionalParams) {
|
|
52
|
+
this.log(message, "Warnings" /* LoggingLevel.Warnings */, optionalParams);
|
|
53
|
+
}
|
|
54
|
+
info(message, ...optionalParams) {
|
|
55
|
+
this.log(message, "Info" /* LoggingLevel.Info */, optionalParams);
|
|
56
|
+
}
|
|
57
|
+
verbose(message, ...optionalParams) {
|
|
58
|
+
this.log(message, "Verbose" /* LoggingLevel.Verbose */, optionalParams);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
LoggerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: LoggerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
62
|
+
LoggerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: LoggerService, providedIn: 'root' });
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: LoggerService, decorators: [{
|
|
64
|
+
type: Injectable,
|
|
65
|
+
args: [{
|
|
66
|
+
providedIn: 'root'
|
|
67
|
+
}]
|
|
68
|
+
}], ctorParameters: function () { return []; } });
|
|
69
|
+
export function loggerServiceFactory(loggerService, appSettings) {
|
|
70
|
+
return async () => {
|
|
71
|
+
appSettings.isServiceReady.subscribe(item => {
|
|
72
|
+
if (item)
|
|
73
|
+
loggerService.initialize(appSettings.getAppsettingValue());
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
;
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYWxjb24tbmcvdGFpbHdpbmQvc3JjL2xpYi9zZXJ2aWNlL2xvZ2dlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUTNDLE1BQU0sT0FBTyxhQUFhO0lBR3hCO1FBRlEsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsV0FBTSwwQ0FBdUM7SUFDckMsQ0FBQztJQUVqQixLQUFLLENBQUMsVUFBVSxDQUFDLFdBQWlDO1FBQ2hELElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLFlBQTRCLENBQUM7UUFDdkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVPLEdBQUcsQ0FBQyxPQUFZLEVBQUUsS0FBSyx5Q0FBd0IsRUFBRSxHQUFHLGNBQXFCO1FBQy9FLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QixRQUFRLEtBQUssRUFBRTtnQkFDYjtvQkFDRSxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztvQkFDdkMsTUFBTTtnQkFDUjtvQkFDRSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztvQkFDdEMsTUFBTTtnQkFDUjtvQkFDRSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztvQkFDdEMsTUFBTTtnQkFDUjtvQkFDRSxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQzthQUMxQztTQUNGO0lBQ0gsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFtQjtRQUNuQyxJQUFJLElBQUksQ0FBQyxNQUFNLG1DQUFzQixFQUFFO1lBQ3JDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLHVDQUF3QixFQUFFO1lBQzlDLE9BQU8sS0FBSyx1Q0FBd0IsQ0FBQztTQUN0QzthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sMkNBQTBCLEVBQUU7WUFDaEQsT0FBTyxLQUFLLHVDQUF3QixJQUFJLEtBQUssMkNBQTBCLENBQUM7U0FDekU7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLG1DQUFzQixFQUFFO1lBQzVDLE9BQU8sS0FBSyx1Q0FBd0IsSUFBSSxLQUFLLDJDQUEwQixJQUFJLEtBQUssbUNBQXNCLENBQUM7U0FDeEc7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQVksRUFBRSxHQUFHLGNBQXFCO1FBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxzQ0FBdUIsY0FBYyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFZLEVBQUUsR0FBRyxjQUFxQjtRQUM1QyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sMENBQXlCLGNBQWMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFJLENBQUMsT0FBWSxFQUFFLEdBQUcsY0FBcUI7UUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLGtDQUFxQixjQUFjLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQVksRUFBRSxHQUFHLGNBQXFCO1FBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyx3Q0FBd0IsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7MEdBekRVLGFBQWE7OEdBQWIsYUFBYSxjQUZaLE1BQU07MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBNERELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxhQUE0QixFQUFFLFdBQThCO0lBQy9GLE9BQU8sS0FBSyxJQUFJLEVBQUU7UUFDaEIsV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDMUMsSUFBSSxJQUFJO2dCQUNOLGFBQWEsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUEwQixDQUFDLENBQUM7UUFDdkYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUE7QUFDSCxDQUFDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcFNldHRpbmdTZXJ2aWNlIH0gZnJvbSAnLi9hcHBzZXR0aW5nLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gXCIuLi9tb2RlbC9lbnVtXCI7XG5pbXBvcnQge0lBcHBTZXR0aW5nVmlld01vZGVsfSBmcm9tIFwiLi4vbW9kZWwvaW50ZXJmYWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExvZ2dlclNlcnZpY2Uge1xuICBwcml2YXRlIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2xldmVsOiBMb2dnaW5nTGV2ZWwgPSBMb2dnaW5nTGV2ZWwuV2FybmluZ3M7XG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgYXN5bmMgaW5pdGlhbGl6ZShhcHBTZXR0aW5nczogSUFwcFNldHRpbmdWaWV3TW9kZWwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pbml0aWFsaXplZCkgcmV0dXJuO1xuICAgIHRoaXMuX2xldmVsID0gYXBwU2V0dGluZ3MubG9nZ2luZ0xldmVsIGFzIExvZ2dpbmdMZXZlbDtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nKG1lc3NhZ2U6IGFueSwgbGV2ZWwgPSBMb2dnaW5nTGV2ZWwuV2FybmluZ3MsIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xuICAgIGlmICh0aGlzLnNob3VsZExvZyhsZXZlbCkpIHtcbiAgICAgIHN3aXRjaCAobGV2ZWwpIHtcbiAgICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRXJyb3JzOlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwgb3B0aW9uYWxQYXJhbXMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvZ2dpbmdMZXZlbC5XYXJuaW5nczpcbiAgICAgICAgICBjb25zb2xlLndhcm4obWVzc2FnZSwgb3B0aW9uYWxQYXJhbXMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvZ2dpbmdMZXZlbC5JbmZvOlxuICAgICAgICAgIGNvbnNvbGUuaW5mbyhtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS5kZWJ1ZyhtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRMb2cobGV2ZWw6IExvZ2dpbmdMZXZlbCkge1xuICAgIGlmICh0aGlzLl9sZXZlbCA9PT0gTG9nZ2luZ0xldmVsLk5vbmUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2xldmVsID09PSBMb2dnaW5nTGV2ZWwuRXJyb3JzKSB7XG4gICAgICByZXR1cm4gbGV2ZWwgPT09IExvZ2dpbmdMZXZlbC5FcnJvcnM7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9sZXZlbCA9PT0gTG9nZ2luZ0xldmVsLldhcm5pbmdzKSB7XG4gICAgICByZXR1cm4gbGV2ZWwgPT09IExvZ2dpbmdMZXZlbC5FcnJvcnMgfHwgbGV2ZWwgPT09IExvZ2dpbmdMZXZlbC5XYXJuaW5ncztcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2xldmVsID09PSBMb2dnaW5nTGV2ZWwuSW5mbykge1xuICAgICAgcmV0dXJuIGxldmVsID09PSBMb2dnaW5nTGV2ZWwuRXJyb3JzIHx8IGxldmVsID09PSBMb2dnaW5nTGV2ZWwuV2FybmluZ3MgfHwgbGV2ZWwgPT09IExvZ2dpbmdMZXZlbC5JbmZvO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBlcnJvcihtZXNzYWdlOiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xuICAgIHRoaXMubG9nKG1lc3NhZ2UsIExvZ2dpbmdMZXZlbC5FcnJvcnMsIG9wdGlvbmFsUGFyYW1zKTtcbiAgfVxuXG4gIHdhcm5pbmcobWVzc2FnZTogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcbiAgICB0aGlzLmxvZyhtZXNzYWdlLCBMb2dnaW5nTGV2ZWwuV2FybmluZ3MsIG9wdGlvbmFsUGFyYW1zKTtcbiAgfVxuXG4gIGluZm8obWVzc2FnZTogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcbiAgICB0aGlzLmxvZyhtZXNzYWdlLCBMb2dnaW5nTGV2ZWwuSW5mbywgb3B0aW9uYWxQYXJhbXMpO1xuICB9XG5cbiAgdmVyYm9zZShtZXNzYWdlOiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xuICAgIHRoaXMubG9nKG1lc3NhZ2UsIExvZ2dpbmdMZXZlbC5WZXJib3NlLCBvcHRpb25hbFBhcmFtcyk7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBsb2dnZXJTZXJ2aWNlRmFjdG9yeShsb2dnZXJTZXJ2aWNlOiBMb2dnZXJTZXJ2aWNlLCBhcHBTZXR0aW5nczogQXBwU2V0dGluZ1NlcnZpY2UpIHtcbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBhcHBTZXR0aW5ncy5pc1NlcnZpY2VSZWFkeS5zdWJzY3JpYmUoaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbSlcbiAgICAgICAgbG9nZ2VyU2VydmljZS5pbml0aWFsaXplKGFwcFNldHRpbmdzLmdldEFwcHNldHRpbmdWYWx1ZSgpIGFzIElBcHBTZXR0aW5nVmlld01vZGVsKTtcbiAgICB9KTtcbiAgfVxufTsiXX0=
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class TokenHelperService {
|
|
4
|
+
constructor() { }
|
|
5
|
+
getTokenExpirationDate(dataIdToken) {
|
|
6
|
+
if (!dataIdToken.hasOwnProperty('exp')) {
|
|
7
|
+
return new Date();
|
|
8
|
+
}
|
|
9
|
+
const date = new Date(0); // The 0 here is the key, which sets the date to the epoch
|
|
10
|
+
date.setUTCSeconds(dataIdToken.exp);
|
|
11
|
+
return date;
|
|
12
|
+
}
|
|
13
|
+
getPayloadFromToken(token, encode) {
|
|
14
|
+
let data = {};
|
|
15
|
+
if (typeof token !== 'undefined') {
|
|
16
|
+
const encoded = token.split('.')[1];
|
|
17
|
+
if (encode) {
|
|
18
|
+
return encoded;
|
|
19
|
+
}
|
|
20
|
+
data = JSON.parse(this.urlBase64Decode(encoded));
|
|
21
|
+
}
|
|
22
|
+
return data;
|
|
23
|
+
}
|
|
24
|
+
getHeaderFromToken(token, encode) {
|
|
25
|
+
let data = {};
|
|
26
|
+
if (typeof token !== 'undefined') {
|
|
27
|
+
const encoded = token.split('.')[0];
|
|
28
|
+
if (encode) {
|
|
29
|
+
return encoded;
|
|
30
|
+
}
|
|
31
|
+
data = JSON.parse(this.urlBase64Decode(encoded));
|
|
32
|
+
}
|
|
33
|
+
return data;
|
|
34
|
+
}
|
|
35
|
+
getSignatureFromToken(token, encode) {
|
|
36
|
+
let data = {};
|
|
37
|
+
if (typeof token !== 'undefined') {
|
|
38
|
+
const encoded = token.split('.')[2];
|
|
39
|
+
if (encode) {
|
|
40
|
+
return encoded;
|
|
41
|
+
}
|
|
42
|
+
data = JSON.parse(this.urlBase64Decode(encoded));
|
|
43
|
+
}
|
|
44
|
+
return data;
|
|
45
|
+
}
|
|
46
|
+
urlBase64Decode(str) {
|
|
47
|
+
let output = str.replace('-', '+').replace('_', '/');
|
|
48
|
+
switch (output.length % 4) {
|
|
49
|
+
case 0:
|
|
50
|
+
break;
|
|
51
|
+
case 2:
|
|
52
|
+
output += '==';
|
|
53
|
+
break;
|
|
54
|
+
case 3:
|
|
55
|
+
output += '=';
|
|
56
|
+
break;
|
|
57
|
+
default:
|
|
58
|
+
throw Error('Illegal base64url string!');
|
|
59
|
+
}
|
|
60
|
+
return window.atob(output);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
TokenHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TokenHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
64
|
+
TokenHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TokenHelperService, providedIn: 'root' });
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TokenHelperService, decorators: [{
|
|
66
|
+
type: Injectable,
|
|
67
|
+
args: [{
|
|
68
|
+
providedIn: 'root'
|
|
69
|
+
}]
|
|
70
|
+
}], ctorParameters: function () { return []; } });
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9rZW5IZWxwZXJTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLW5nL3RhaWx3aW5kL3NyYy9saWIvc2VydmljZS9vcGVuLWlkL1Rva2VuSGVscGVyU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLGdCQUFnQixDQUFDO0lBRWpCLHNCQUFzQixDQUFDLFdBQWdCO1FBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztTQUNuQjtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsMERBQTBEO1FBQ3BGLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXBDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQVUsRUFBRSxNQUFlO1FBQzdDLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVyxFQUFFO1lBQ2hDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsT0FBTyxPQUFPLENBQUM7YUFDaEI7WUFDRCxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDbEQ7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFVLEVBQUUsTUFBZTtRQUM1QyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLE9BQU8sS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUNoQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLElBQUksTUFBTSxFQUFFO2dCQUNWLE9BQU8sT0FBTyxDQUFDO2FBQ2hCO1lBQ0QsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBVSxFQUFFLE1BQWU7UUFDL0MsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXLEVBQUU7WUFDaEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxJQUFJLE1BQU0sRUFBRTtnQkFDVixPQUFPLE9BQU8sQ0FBQzthQUNoQjtZQUNELElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNsRDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFXO1FBQ3pCLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDckQsUUFBUSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzQixLQUFLLENBQUM7Z0JBQ0osTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixNQUFNLElBQUksSUFBSSxDQUFDO2dCQUNmLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osTUFBTSxJQUFJLEdBQUcsQ0FBQztnQkFDZCxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUMxQztRQUVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDOzsrR0FyRVUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUb2tlbkhlbHBlclNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIGdldFRva2VuRXhwaXJhdGlvbkRhdGUoZGF0YUlkVG9rZW46IGFueSk6IERhdGUge1xuICAgIGlmICghZGF0YUlkVG9rZW4uaGFzT3duUHJvcGVydHkoJ2V4cCcpKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMCk7IC8vIFRoZSAwIGhlcmUgaXMgdGhlIGtleSwgd2hpY2ggc2V0cyB0aGUgZGF0ZSB0byB0aGUgZXBvY2hcbiAgICBkYXRlLnNldFVUQ1NlY29uZHMoZGF0YUlkVG9rZW4uZXhwKTtcblxuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgZ2V0UGF5bG9hZEZyb21Ub2tlbih0b2tlbjogYW55LCBlbmNvZGU6IGJvb2xlYW4pIHtcbiAgICBsZXQgZGF0YSA9IHt9O1xuICAgIGlmICh0eXBlb2YgdG9rZW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zdCBlbmNvZGVkID0gdG9rZW4uc3BsaXQoJy4nKVsxXTtcbiAgICAgIGlmIChlbmNvZGUpIHtcbiAgICAgICAgcmV0dXJuIGVuY29kZWQ7XG4gICAgICB9XG4gICAgICBkYXRhID0gSlNPTi5wYXJzZSh0aGlzLnVybEJhc2U2NERlY29kZShlbmNvZGVkKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBnZXRIZWFkZXJGcm9tVG9rZW4odG9rZW46IGFueSwgZW5jb2RlOiBib29sZWFuKSB7XG4gICAgbGV0IGRhdGEgPSB7fTtcbiAgICBpZiAodHlwZW9mIHRva2VuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3QgZW5jb2RlZCA9IHRva2VuLnNwbGl0KCcuJylbMF07XG4gICAgICBpZiAoZW5jb2RlKSB7XG4gICAgICAgIHJldHVybiBlbmNvZGVkO1xuICAgICAgfVxuICAgICAgZGF0YSA9IEpTT04ucGFyc2UodGhpcy51cmxCYXNlNjREZWNvZGUoZW5jb2RlZCkpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlRnJvbVRva2VuKHRva2VuOiBhbnksIGVuY29kZTogYm9vbGVhbikge1xuICAgIGxldCBkYXRhID0ge307XG4gICAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IGVuY29kZWQgPSB0b2tlbi5zcGxpdCgnLicpWzJdO1xuICAgICAgaWYgKGVuY29kZSkge1xuICAgICAgICByZXR1cm4gZW5jb2RlZDtcbiAgICAgIH1cbiAgICAgIGRhdGEgPSBKU09OLnBhcnNlKHRoaXMudXJsQmFzZTY0RGVjb2RlKGVuY29kZWQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHVybEJhc2U2NERlY29kZShzdHI6IHN0cmluZykge1xuICAgIGxldCBvdXRwdXQgPSBzdHIucmVwbGFjZSgnLScsICcrJykucmVwbGFjZSgnXycsICcvJyk7XG4gICAgc3dpdGNoIChvdXRwdXQubGVuZ3RoICUgNCkge1xuICAgIGNhc2UgMDpcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIG91dHB1dCArPSAnPT0nO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzOlxuICAgICAgb3V0cHV0ICs9ICc9JztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBFcnJvcignSWxsZWdhbCBiYXNlNjR1cmwgc3RyaW5nIScpO1xuICAgIH1cblxuICAgIHJldHVybiB3aW5kb3cuYXRvYihvdXRwdXQpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./auth.service";
|
|
4
|
+
export class AuthGuardService {
|
|
5
|
+
constructor(authService) {
|
|
6
|
+
this.authService = authService;
|
|
7
|
+
}
|
|
8
|
+
canActivate(route, state) {
|
|
9
|
+
return new Promise(resolve => {
|
|
10
|
+
this.authService.isServiceReady().then(() => {
|
|
11
|
+
if (this.authService.isLoggedIn()) {
|
|
12
|
+
resolve(true);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
this.authService.startAuthentication(state.url);
|
|
16
|
+
resolve(false);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
AuthGuardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthGuardService, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
+
AuthGuardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthGuardService, providedIn: 'root' });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthGuardService, decorators: [{
|
|
25
|
+
type: Injectable,
|
|
26
|
+
args: [{
|
|
27
|
+
providedIn: 'root'
|
|
28
|
+
}]
|
|
29
|
+
}], ctorParameters: function () { return [{ type: i1.AuthService }]; } });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLW5nL3RhaWx3aW5kL3NyYy9saWIvc2VydmljZS9vcGVuLWlkL2F1dGgtZ3VhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixZQUFvQixXQUF5QjtRQUF6QixnQkFBVyxHQUFYLFdBQVcsQ0FBYztJQUFJLENBQUM7SUFFbEQsV0FBVyxDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFDbkUsT0FBTyxJQUFJLE9BQU8sQ0FBVSxPQUFPLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQzFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsRUFBRTtvQkFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNmO3FCQUFNO29CQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2hCO1lBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzZHQWZVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZFNlcnZpY2UgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZXtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlIDogQXV0aFNlcnZpY2UpIHsgfVxuXG4gIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkgOiBib29sZWFuIHwgT2JzZXJ2YWJsZTxib29sZWFuPiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPihyZXNvbHZlID0+IHtcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuaXNTZXJ2aWNlUmVhZHkoKS50aGVuKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuaXNMb2dnZWRJbigpKSB7XG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnN0YXJ0QXV0aGVudGljYXRpb24oc3RhdGUudXJsKTtcbiAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { UserManager } from 'oidc-client';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../logger.service";
|
|
5
|
+
import * as i2 from "./TokenHelperService";
|
|
6
|
+
export class AuthService {
|
|
7
|
+
constructor(logger, tokenHelperService) {
|
|
8
|
+
this.logger = logger;
|
|
9
|
+
this.tokenHelperService = tokenHelperService;
|
|
10
|
+
this.initialized = false;
|
|
11
|
+
this.signingOut = false;
|
|
12
|
+
}
|
|
13
|
+
async initialize(environment) {
|
|
14
|
+
if (this.initialized)
|
|
15
|
+
return;
|
|
16
|
+
this.settings = this.getClientSettings(environment);
|
|
17
|
+
this.userManager = new UserManager(this.settings);
|
|
18
|
+
this.userManager.events.addUserLoaded(user => {
|
|
19
|
+
this.user = user;
|
|
20
|
+
});
|
|
21
|
+
this.userManager.events.addAccessTokenExpiring(() => {
|
|
22
|
+
this.logger.info("IdSvr token expiring " + new Date().toLocaleString());
|
|
23
|
+
});
|
|
24
|
+
this.userManager.events.addAccessTokenExpired(() => {
|
|
25
|
+
this.logger.info("IdSvr token expired " + new Date().toLocaleString());
|
|
26
|
+
this.logout(false);
|
|
27
|
+
});
|
|
28
|
+
this.userManager.events.addSilentRenewError(e => {
|
|
29
|
+
this.logger.error("IdSvr silent renew error " + e.message + new Date().toLocaleString());
|
|
30
|
+
this.logout(false);
|
|
31
|
+
});
|
|
32
|
+
this.userManager.events.addUserLoaded(user => {
|
|
33
|
+
this.logger.info("IdSvr user session is ready " + new Date().toLocaleString());
|
|
34
|
+
this.accessToken = this.tokenHelperService.getPayloadFromToken(user.access_token, false);
|
|
35
|
+
this.user = user;
|
|
36
|
+
});
|
|
37
|
+
this.userManager.events.addUserUnloaded(() => {
|
|
38
|
+
this.logger.info("IdSvr user session has ended " + new Date().toLocaleString());
|
|
39
|
+
if (!this.signingOut) {
|
|
40
|
+
this.startAuthentication(window.location.pathname + window.location.search);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
this.userManager.events.addUserSignedOut(() => {
|
|
44
|
+
this.logger.info("IdSvr user signed out " + new Date().toLocaleString());
|
|
45
|
+
this.logout(false);
|
|
46
|
+
});
|
|
47
|
+
this.user = await this.userManager.getUser();
|
|
48
|
+
this.initialized = true;
|
|
49
|
+
}
|
|
50
|
+
isLoggedIn() {
|
|
51
|
+
return this.user != null && !this.user.expired;
|
|
52
|
+
}
|
|
53
|
+
getUser() {
|
|
54
|
+
return this.userManager.getUser();
|
|
55
|
+
}
|
|
56
|
+
getProfile() {
|
|
57
|
+
return this.user.profile;
|
|
58
|
+
}
|
|
59
|
+
getClaims() {
|
|
60
|
+
return this.user.profile;
|
|
61
|
+
}
|
|
62
|
+
getAuthorizationHeaderValue() {
|
|
63
|
+
if (this.user != null)
|
|
64
|
+
return `${this.user.token_type} ${this.user.access_token}`;
|
|
65
|
+
return '';
|
|
66
|
+
}
|
|
67
|
+
getAccessToken() {
|
|
68
|
+
return this.accessToken || this.tokenHelperService.getPayloadFromToken(this.user.access_token, false);
|
|
69
|
+
;
|
|
70
|
+
}
|
|
71
|
+
async startAuthentication(returnUrl) {
|
|
72
|
+
this.logger.info("[AuthService] startAuthentication", returnUrl);
|
|
73
|
+
await this.userManager.clearStaleState();
|
|
74
|
+
await this.userManager.signinRedirect({ data: { returnUrl: returnUrl } }).catch(err => {
|
|
75
|
+
//this.$log.debug("IdSvr sign in failed", err);
|
|
76
|
+
return err;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
async completeAuthentication() {
|
|
80
|
+
this.logger.info("[AuthService] completeAuthentication");
|
|
81
|
+
let user = await new Promise((resolve, reject) => {
|
|
82
|
+
this.userManager.signinRedirectCallback().then(user => {
|
|
83
|
+
resolve(user);
|
|
84
|
+
}).catch(error => {
|
|
85
|
+
reject(error);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
this.user = user;
|
|
89
|
+
return this.user;
|
|
90
|
+
}
|
|
91
|
+
login() {
|
|
92
|
+
return this.userManager.signinRedirect();
|
|
93
|
+
}
|
|
94
|
+
renewToken() {
|
|
95
|
+
return this.userManager.signinSilent();
|
|
96
|
+
}
|
|
97
|
+
logout(signoutRedirect) {
|
|
98
|
+
if (signoutRedirect === undefined || signoutRedirect !== false) {
|
|
99
|
+
this.signingOut = true;
|
|
100
|
+
signoutRedirect = true;
|
|
101
|
+
}
|
|
102
|
+
return this.userManager.signoutRedirect();
|
|
103
|
+
}
|
|
104
|
+
getClientSettings(environment) {
|
|
105
|
+
return {
|
|
106
|
+
authority: environment?.openID?.authority,
|
|
107
|
+
client_id: environment?.openID?.client_id,
|
|
108
|
+
redirect_uri: environment?.openID?.redirect_uri,
|
|
109
|
+
post_logout_redirect_uri: environment?.openID?.post_logout_redirect_uri,
|
|
110
|
+
response_type: environment?.openID?.response_type,
|
|
111
|
+
scope: environment?.openID?.scope,
|
|
112
|
+
filterProtocolClaims: environment?.openID?.filterProtocolClaims,
|
|
113
|
+
loadUserInfo: true,
|
|
114
|
+
monitorSession: true,
|
|
115
|
+
silent_redirect_uri: environment?.openID?.silent_redirect_uri,
|
|
116
|
+
automaticSilentRenew: environment?.openID?.automaticSilentRenew,
|
|
117
|
+
accessTokenExpiringNotificationTime: 20,
|
|
118
|
+
checkSessionInterval: 2000,
|
|
119
|
+
silentRequestTimeout: 20000,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
async isServiceReady() {
|
|
123
|
+
return new Promise(async (resolve, reject) => {
|
|
124
|
+
if (this.initialized) {
|
|
125
|
+
this.logger.info("[AuthService] isServiceReady", true);
|
|
126
|
+
resolve(true);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
this.logger.info("[AuthService] isServiceReady", false);
|
|
130
|
+
reject(false);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
AuthService.USER_LOADED_EVENT = "USER_LOADED";
|
|
136
|
+
AuthService.USER_UNLOADED_EVENT = "USER_UNLOADED";
|
|
137
|
+
AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthService, deps: [{ token: i1.LoggerService }, { token: i2.TokenHelperService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
138
|
+
AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthService, providedIn: 'root' });
|
|
139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthService, decorators: [{
|
|
140
|
+
type: Injectable,
|
|
141
|
+
args: [{
|
|
142
|
+
providedIn: 'root'
|
|
143
|
+
}]
|
|
144
|
+
}], ctorParameters: function () { return [{ type: i1.LoggerService }, { type: i2.TokenHelperService }]; } });
|
|
145
|
+
export function authServiceFactory(authService, appSettings, environment) {
|
|
146
|
+
return async () => {
|
|
147
|
+
appSettings.isServiceReady.subscribe(item => {
|
|
148
|
+
if (item)
|
|
149
|
+
authService.initialize(environment);
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
;
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLW5nL3RhaWx3aW5kL3NyYy9saWIvc2VydmljZS9vcGVuLWlkL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBZ0IsV0FBVyxFQUFzQixNQUFNLGFBQWEsQ0FBQzs7OztBQVM1RSxNQUFNLE9BQU8sV0FBVztJQVl0QixZQUFvQixNQUFxQixFQUFVLGtCQUFzQztRQUFyRSxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQVJqRixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQU03QixlQUFVLEdBQVksS0FBSyxDQUFDO0lBSXBDLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQWlDO1FBQ2hELElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUdILElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRTtZQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7WUFDakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUN6RixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywrQkFBK0IsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFFaEYsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzdFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7WUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNqRCxDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDM0IsQ0FBQztJQUVNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFTSwyQkFBMkI7UUFDaEMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUk7WUFDbkIsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEcsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsU0FBaUI7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUNBQW1DLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDakUsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBQyxJQUFJLEVBQUUsRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoRiwrQ0FBK0M7WUFDL0MsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDekQsSUFBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLE9BQU8sQ0FBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMxRCxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNwRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDZixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVNLEtBQUs7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxlQUF5QjtRQUVyQyxJQUFJLGVBQWUsS0FBSyxTQUFTLElBQUksZUFBZSxLQUFLLEtBQUssRUFBRTtZQUM5RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixlQUFlLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO1FBRUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxXQUFpQztRQUN6RCxPQUFPO1lBQ0wsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsU0FBUztZQUN6QyxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxTQUFTO1lBQ3pDLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFlBQVk7WUFDL0Msd0JBQXdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSx3QkFBd0I7WUFDdkUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsYUFBYTtZQUNqRCxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLO1lBQ2pDLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsb0JBQW9CO1lBQy9ELFlBQVksRUFBRSxJQUFJO1lBQ2xCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsbUJBQW1CO1lBQzdELG9CQUFvQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsb0JBQW9CO1lBQy9ELG1DQUFtQyxFQUFFLEVBQUU7WUFDdkMsb0JBQW9CLEVBQUUsSUFBSTtZQUMxQixvQkFBb0IsRUFBRSxLQUFLO1NBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNmO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN4RCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDZjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUE3Sk0sNkJBQWlCLEdBQUcsYUFBYSxDQUFDO0FBQ2xDLCtCQUFtQixHQUFHLGVBQWUsQ0FBQzt3R0FGbEMsV0FBVzs0R0FBWCxXQUFXLGNBRlYsTUFBTTsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUFrS0QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFdBQXdCLEVBQUUsV0FBOEIsRUFBRSxXQUFpQztJQUM1SCxPQUFPLEtBQUssSUFBSSxFQUFFO1FBQ2hCLFdBQVcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFDLElBQUksSUFBSTtnQkFDTixXQUFXLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQcm9maWxlLCBVc2VyLCBVc2VyTWFuYWdlciwgVXNlck1hbmFnZXJTZXR0aW5nc30gZnJvbSAnb2lkYy1jbGllbnQnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge1Rva2VuSGVscGVyU2VydmljZX0gZnJvbSAnLi9Ub2tlbkhlbHBlclNlcnZpY2UnO1xuaW1wb3J0IHtFbnZpcm9ubWVudFZpZXdNb2RlbH0gZnJvbSBcIi4uLy4uL21vZGVsL2Vudmlyb25tZW50c1wiO1xuaW1wb3J0IHtBcHBTZXR0aW5nU2VydmljZX0gZnJvbSBcIi4uL2FwcHNldHRpbmcuc2VydmljZVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG4gIHN0YXRpYyBVU0VSX0xPQURFRF9FVkVOVCA9IFwiVVNFUl9MT0FERURcIjtcbiAgc3RhdGljIFVTRVJfVU5MT0FERURfRVZFTlQgPSBcIlVTRVJfVU5MT0FERURcIjtcblxuICBwcml2YXRlIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgdXNlck1hbmFnZXIhOiBVc2VyTWFuYWdlcjtcbiAgcHJpdmF0ZSB1c2VyOiBhbnk7XG4gIHB1YmxpYyBzZXR0aW5ncyE6IFVzZXJNYW5hZ2VyU2V0dGluZ3M7XG5cbiAgcHJpdmF0ZSBhY2Nlc3NUb2tlbiE6IE9iamVjdDtcbiAgcHJpdmF0ZSBzaWduaW5nT3V0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsIHByaXZhdGUgdG9rZW5IZWxwZXJTZXJ2aWNlOiBUb2tlbkhlbHBlclNlcnZpY2UpIHtcblxuICB9XG5cbiAgYXN5bmMgaW5pdGlhbGl6ZShlbnZpcm9ubWVudDogRW52aXJvbm1lbnRWaWV3TW9kZWwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pbml0aWFsaXplZCkgcmV0dXJuO1xuICAgIHRoaXMuc2V0dGluZ3MgPSB0aGlzLmdldENsaWVudFNldHRpbmdzKGVudmlyb25tZW50KTtcbiAgICB0aGlzLnVzZXJNYW5hZ2VyID0gbmV3IFVzZXJNYW5hZ2VyKHRoaXMuc2V0dGluZ3MpO1xuICAgIHRoaXMudXNlck1hbmFnZXIuZXZlbnRzLmFkZFVzZXJMb2FkZWQodXNlciA9PiB7XG4gICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgIH0pO1xuXG5cbiAgICB0aGlzLnVzZXJNYW5hZ2VyLmV2ZW50cy5hZGRBY2Nlc3NUb2tlbkV4cGlyaW5nKCgpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmluZm8oXCJJZFN2ciB0b2tlbiBleHBpcmluZyBcIiArIG5ldyBEYXRlKCkudG9Mb2NhbGVTdHJpbmcoKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnVzZXJNYW5hZ2VyLmV2ZW50cy5hZGRBY2Nlc3NUb2tlbkV4cGlyZWQoKCkgPT4ge1xuICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcIklkU3ZyIHRva2VuIGV4cGlyZWQgXCIgKyBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKCkpO1xuICAgICAgdGhpcy5sb2dvdXQoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgdGhpcy51c2VyTWFuYWdlci5ldmVudHMuYWRkU2lsZW50UmVuZXdFcnJvcihlID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFwiSWRTdnIgc2lsZW50IHJlbmV3IGVycm9yIFwiICsgZS5tZXNzYWdlICsgbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpKTtcbiAgICAgIHRoaXMubG9nb3V0KGZhbHNlKTtcbiAgICB9KTtcblxuICAgIHRoaXMudXNlck1hbmFnZXIuZXZlbnRzLmFkZFVzZXJMb2FkZWQodXNlciA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5pbmZvKFwiSWRTdnIgdXNlciBzZXNzaW9uIGlzIHJlYWR5IFwiICsgbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpKTtcbiAgICAgIHRoaXMuYWNjZXNzVG9rZW4gPSB0aGlzLnRva2VuSGVscGVyU2VydmljZS5nZXRQYXlsb2FkRnJvbVRva2VuKHVzZXIuYWNjZXNzX3Rva2VuLCBmYWxzZSk7XG4gICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgIH0pO1xuXG4gICAgdGhpcy51c2VyTWFuYWdlci5ldmVudHMuYWRkVXNlclVubG9hZGVkKCgpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmluZm8oXCJJZFN2ciB1c2VyIHNlc3Npb24gaGFzIGVuZGVkIFwiICsgbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpKTtcblxuICAgICAgaWYgKCF0aGlzLnNpZ25pbmdPdXQpIHtcbiAgICAgICAgdGhpcy5zdGFydEF1dGhlbnRpY2F0aW9uKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy51c2VyTWFuYWdlci5ldmVudHMuYWRkVXNlclNpZ25lZE91dCgoKSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5pbmZvKFwiSWRTdnIgdXNlciBzaWduZWQgb3V0IFwiICsgbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpKTtcbiAgICAgIHRoaXMubG9nb3V0KGZhbHNlKTtcbiAgICB9KTtcblxuICAgIHRoaXMudXNlciA9IGF3YWl0IHRoaXMudXNlck1hbmFnZXIuZ2V0VXNlcigpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGlzTG9nZ2VkSW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudXNlciAhPSBudWxsICYmICF0aGlzLnVzZXIuZXhwaXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVc2VyKCk6IFByb21pc2U8VXNlciB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyTWFuYWdlci5nZXRVc2VyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJvZmlsZSgpOiBQcm9maWxlIHtcbiAgICByZXR1cm4gdGhpcy51c2VyLnByb2ZpbGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2xhaW1zKCk6IFByb2ZpbGUge1xuICAgIHJldHVybiB0aGlzLnVzZXIucHJvZmlsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy51c2VyICE9IG51bGwpXG4gICAgICByZXR1cm4gYCR7dGhpcy51c2VyLnRva2VuX3R5cGV9ICR7dGhpcy51c2VyLmFjY2Vzc190b2tlbn1gO1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldEFjY2Vzc1Rva2VuKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuYWNjZXNzVG9rZW4gfHwgdGhpcy50b2tlbkhlbHBlclNlcnZpY2UuZ2V0UGF5bG9hZEZyb21Ub2tlbih0aGlzLnVzZXIuYWNjZXNzX3Rva2VuLCBmYWxzZSk7XG4gICAgO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRBdXRoZW50aWNhdGlvbihyZXR1cm5Vcmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubG9nZ2VyLmluZm8oXCJbQXV0aFNlcnZpY2VdIHN0YXJ0QXV0aGVudGljYXRpb25cIiwgcmV0dXJuVXJsKTtcbiAgICBhd2FpdCB0aGlzLnVzZXJNYW5hZ2VyLmNsZWFyU3RhbGVTdGF0ZSgpO1xuICAgIGF3YWl0IHRoaXMudXNlck1hbmFnZXIuc2lnbmluUmVkaXJlY3Qoe2RhdGE6IHtyZXR1cm5Vcmw6IHJldHVyblVybH19KS5jYXRjaChlcnIgPT4ge1xuICAgICAgLy90aGlzLiRsb2cuZGVidWcoXCJJZFN2ciBzaWduIGluIGZhaWxlZFwiLCBlcnIpO1xuICAgICAgcmV0dXJuIGVycjtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGNvbXBsZXRlQXV0aGVudGljYXRpb24oKTogUHJvbWlzZTxPaWRjLlVzZXI+IHtcbiAgICB0aGlzLmxvZ2dlci5pbmZvKFwiW0F1dGhTZXJ2aWNlXSBjb21wbGV0ZUF1dGhlbnRpY2F0aW9uXCIpO1xuICAgIGxldCB1c2VyID0gYXdhaXQgbmV3IFByb21pc2U8T2lkYy5Vc2VyPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnVzZXJNYW5hZ2VyLnNpZ25pblJlZGlyZWN0Q2FsbGJhY2soKS50aGVuKHVzZXIgPT4ge1xuICAgICAgICByZXNvbHZlKHVzZXIpXG4gICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgIHJldHVybiB0aGlzLnVzZXI7XG4gIH1cblxuICBwdWJsaWMgbG9naW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlck1hbmFnZXIuc2lnbmluUmVkaXJlY3QoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW5ld1Rva2VuKCk6IFByb21pc2U8VXNlcj4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJNYW5hZ2VyLnNpZ25pblNpbGVudCgpO1xuICB9XG5cbiAgcHVibGljIGxvZ291dChzaWdub3V0UmVkaXJlY3Q/OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG5cbiAgICBpZiAoc2lnbm91dFJlZGlyZWN0ID09PSB1bmRlZmluZWQgfHwgc2lnbm91dFJlZGlyZWN0ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5zaWduaW5nT3V0ID0gdHJ1ZTtcbiAgICAgIHNpZ25vdXRSZWRpcmVjdCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudXNlck1hbmFnZXIuc2lnbm91dFJlZGlyZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGdldENsaWVudFNldHRpbmdzKGVudmlyb25tZW50OiBFbnZpcm9ubWVudFZpZXdNb2RlbCk6IFVzZXJNYW5hZ2VyU2V0dGluZ3Mge1xuICAgIHJldHVybiB7XG4gICAgICBhdXRob3JpdHk6IGVudmlyb25tZW50Py5vcGVuSUQ/LmF1dGhvcml0eSxcbiAgICAgIGNsaWVudF9pZDogZW52aXJvbm1lbnQ/Lm9wZW5JRD8uY2xpZW50X2lkLFxuICAgICAgcmVkaXJlY3RfdXJpOiBlbnZpcm9ubWVudD8ub3BlbklEPy5yZWRpcmVjdF91cmksXG4gICAgICBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmk6IGVudmlyb25tZW50Py5vcGVuSUQ/LnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSxcbiAgICAgIHJlc3BvbnNlX3R5cGU6IGVudmlyb25tZW50Py5vcGVuSUQ/LnJlc3BvbnNlX3R5cGUsXG4gICAgICBzY29wZTogZW52aXJvbm1lbnQ/Lm9wZW5JRD8uc2NvcGUsXG4gICAgICBmaWx0ZXJQcm90b2NvbENsYWltczogZW52aXJvbm1lbnQ/Lm9wZW5JRD8uZmlsdGVyUHJvdG9jb2xDbGFpbXMsXG4gICAgICBsb2FkVXNlckluZm86IHRydWUsXG4gICAgICBtb25pdG9yU2Vzc2lvbjogdHJ1ZSxcbiAgICAgIHNpbGVudF9yZWRpcmVjdF91cmk6IGVudmlyb25tZW50Py5vcGVuSUQ/LnNpbGVudF9yZWRpcmVjdF91cmksXG4gICAgICBhdXRvbWF0aWNTaWxlbnRSZW5ldzogZW52aXJvbm1lbnQ/Lm9wZW5JRD8uYXV0b21hdGljU2lsZW50UmVuZXcsXG4gICAgICBhY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZTogMjAsIC8vZGVmYXVsdCA2MFxuICAgICAgY2hlY2tTZXNzaW9uSW50ZXJ2YWw6IDIwMDAsIC8vZGVmYXVsdCAyMDAwXG4gICAgICBzaWxlbnRSZXF1ZXN0VGltZW91dDogMjAwMDAsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGlzU2VydmljZVJlYWR5KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFwiW0F1dGhTZXJ2aWNlXSBpc1NlcnZpY2VSZWFkeVwiLCB0cnVlKTtcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXCJbQXV0aFNlcnZpY2VdIGlzU2VydmljZVJlYWR5XCIsIGZhbHNlKTtcbiAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXV0aFNlcnZpY2VGYWN0b3J5KGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgYXBwU2V0dGluZ3M6IEFwcFNldHRpbmdTZXJ2aWNlLCBlbnZpcm9ubWVudDogRW52aXJvbm1lbnRWaWV3TW9kZWwpIHtcbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBhcHBTZXR0aW5ncy5pc1NlcnZpY2VSZWFkeS5zdWJzY3JpYmUoaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbSlcbiAgICAgICAgYXV0aFNlcnZpY2UuaW5pdGlhbGl6ZShlbnZpcm9ubWVudCk7XG4gICAgfSk7XG4gIH1cbn07Il19
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of falcon-core-module
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/module/angularmaterial.module';
|
|
5
|
+
export * from './lib/falcon-core.module';
|
|
6
|
+
export * from './lib/reactive-field.directive';
|
|
7
|
+
/*
|
|
8
|
+
* Public API Surface of falcon core module service
|
|
9
|
+
*/
|
|
10
|
+
export * from './lib/service/http/igeneric-http-client';
|
|
11
|
+
export * from './lib/service/logger.service';
|
|
12
|
+
export * from './lib/service/open-id/auth.service';
|
|
13
|
+
export * from './lib/service/open-id/auth-guard.service';
|
|
14
|
+
export * from './lib/service/appsetting.service';
|
|
15
|
+
/*
|
|
16
|
+
* Public control type
|
|
17
|
+
*/
|
|
18
|
+
export * from './lib/control-type/select';
|
|
19
|
+
export * from './lib/control-type/textarea';
|
|
20
|
+
export * from './lib/control-type/textbox';
|
|
21
|
+
export * from './lib/model/enum';
|
|
22
|
+
export * from './lib/model/constant';
|
|
23
|
+
export * from './lib/model/environments';
|
|
24
|
+
export * from './lib/model/ivalidator';
|
|
25
|
+
export * from './lib/control-builder/control-builder.component';
|
|
26
|
+
export * from './lib/base-form-component';
|
|
27
|
+
/*
|
|
28
|
+
* Public component type
|
|
29
|
+
*/
|
|
30
|
+
export * from './lib/component/auto-complete/auto-complete.component';
|
|
31
|
+
export * from './lib/component/snack-bar/snack-bar.component';
|
|
32
|
+
export * from './lib/component/chips/chip.component';
|
|
33
|
+
export * from './lib/component/table/table.component';
|
|
34
|
+
export * from './lib/component/pagination/pagination.component';
|
|
35
|
+
export * from './lib/component/rich-text-editor/rich-text-editor.component';
|
|
36
|
+
export * from './lib/component/textbox/textbox.component';
|
|
37
|
+
export * from './lib/component/textarea/textarea.component';
|
|
38
|
+
export * from './lib/component/radio/radio.component';
|
|
39
|
+
export * from './lib/component/select/select.component';
|
|
40
|
+
export * from './lib/component/slide-toggle/slide-toggle.component';
|
|
41
|
+
export * from './lib/component/slider/slider.component';
|
|
42
|
+
export * from './lib/component/date-picker/date-picker.component';
|
|
43
|
+
export * from './lib/component/dialog/dialog.component';
|
|
44
|
+
export * from './lib/component/checkbox/checkbox.component';
|
|
45
|
+
export * from './lib/component/progress-bar/progress-bar.component';
|
|
46
|
+
export * from './lib/component/progress-spinner/progress-spinner.component';
|
|
47
|
+
export * from './lib/component/bottom-sheet/bottom-sheet.component';
|
|
48
|
+
export * from './lib/component/button-toggle/button-toggle.component';
|
|
49
|
+
export * from './lib/component/button/button.component';
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhbGNvbi1uZy90YWlsd2luZC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGdDQUFnQyxDQUFDO0FBRy9DOztHQUVHO0FBQ0gsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGtDQUFrQyxDQUFDO0FBR2pEOztHQUVHO0FBQ0gsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsMkJBQTJCLENBQUM7QUFFMUM7O0dBRUc7QUFDSCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyw2REFBNkQsQ0FBQztBQUM1RSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMseUNBQXlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGZhbGNvbi1jb3JlLW1vZHVsZVxuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2R1bGUvYW5ndWxhcm1hdGVyaWFsLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mYWxjb24tY29yZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVhY3RpdmUtZmllbGQuZGlyZWN0aXZlJztcblxuXG4vKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGZhbGNvbiBjb3JlIG1vZHVsZSBzZXJ2aWNlXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvaHR0cC9pZ2VuZXJpYy1odHRwLWNsaWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2xvZ2dlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2Uvb3Blbi1pZC9hdXRoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9vcGVuLWlkL2F1dGgtZ3VhcmQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2FwcHNldHRpbmcuc2VydmljZSc7XG5cblxuLypcbiAqIFB1YmxpYyBjb250cm9sIHR5cGVcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbC10eXBlL3NlbGVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9sLXR5cGUvdGV4dGFyZWEnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbC10eXBlL3RleHRib3gnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9jb25zdGFudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9lbnZpcm9ubWVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvaXZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9sLWJ1aWxkZXIvY29udHJvbC1idWlsZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLWZvcm0tY29tcG9uZW50JztcblxuLypcbiAqIFB1YmxpYyBjb21wb25lbnQgdHlwZVxuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnQvYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnQvc25hY2stYmFyL3NuYWNrLWJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50L2NoaXBzL2NoaXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudC90YWJsZS90YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50L3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50L3JpY2gtdGV4dC1lZGl0b3IvcmljaC10ZXh0LWVkaXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50L3RleHRib3gvdGV4dGJveC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50L3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnQvcmFkaW8vcmFkaW8uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudC9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnQvc2xpZGUtdG9nZ2xlL3NsaWRlLXRvZ2dsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50L3NsaWRlci9zbGlkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudC9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50L2RpYWxvZy9kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudC9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50L3Byb2dyZXNzLWJhci9wcm9ncmVzcy1iYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudC9wcm9ncmVzcy1zcGlubmVyL3Byb2dyZXNzLXNwaW5uZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudC9ib3R0b20tc2hlZXQvYm90dG9tLXNoZWV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnQvYnV0dG9uLXRvZ2dsZS9idXR0b24tdG9nZ2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnQvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuIl19
|