@singularsystems/neo-core 1.0.0-alpha.2 → 1.0.0-alpha.4
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/CHANGELOG.md +15 -0
- package/dist/ApiClient/ApiClientBase.d.ts +5 -5
- package/dist/ApiClient/ApiClientBase.js +13 -13
- package/dist/ApiClient/ReadApiClient.d.ts +16 -16
- package/dist/ApiClient/ReadApiClient.js +24 -24
- package/dist/ApiClient/UpdateableApiClient.d.ts +28 -28
- package/dist/ApiClient/UpdateableApiClient.js +33 -33
- package/dist/AppServices/AppService.d.ts +46 -46
- package/dist/AppServices/AppService.js +25 -25
- package/dist/AppServices/Config/ConfigModel.d.ts +21 -20
- package/dist/AppServices/Config/ConfigModel.js +28 -17
- package/dist/AppServices/Config/ConfigService.d.ts +15 -15
- package/dist/AppServices/Config/ConfigService.js +49 -53
- package/dist/AppServices/Module.d.ts +11 -11
- package/dist/AppServices/Module.js +13 -13
- package/dist/AppServices/NeoContainer.d.ts +22 -22
- package/dist/AppServices/NeoContainer.js +42 -42
- package/dist/AppServices/NeoModule.d.ts +3 -3
- package/dist/AppServices/NeoModule.js +30 -30
- package/dist/AppServices/NeoTypes.d.ts +61 -61
- package/dist/AppServices/NeoTypes.js +42 -42
- package/dist/AppServices/ServiceIdentifier.d.ts +23 -23
- package/dist/AppServices/ServiceIdentifier.js +38 -39
- package/dist/AppServices/index.d.ts +7 -7
- package/dist/AppServices/index.js +7 -7
- package/dist/Components/AnimationHelper.d.ts +69 -69
- package/dist/Components/AnimationHelper.js +182 -182
- package/dist/Components/BootstrapHelpers.d.ts +8 -8
- package/dist/Components/BootstrapHelpers.js +30 -30
- package/dist/Components/BootstrapTypes.d.ts +35 -35
- package/dist/Components/BootstrapTypes.js +1 -1
- package/dist/Components/ButtonOptions.d.ts +63 -61
- package/dist/Components/ButtonOptions.js +1 -1
- package/dist/Components/ContextMenu/ContextMenu.d.ts +16 -16
- package/dist/Components/ContextMenu/ContextMenu.js +1 -1
- package/dist/Components/ContextMenu/MenuUtils.d.ts +16 -16
- package/dist/Components/ContextMenu/MenuUtils.js +34 -34
- package/dist/Components/DatePicker/DatePicker.d.ts +70 -69
- package/dist/Components/DatePicker/DatePicker.js +502 -487
- package/dist/Components/DatePicker/DatePickerOptions.d.ts +43 -34
- package/dist/Components/DatePicker/DatePickerOptions.js +33 -33
- package/dist/Components/ErrorHandler.d.ts +59 -55
- package/dist/Components/ErrorHandler.js +210 -138
- package/dist/Components/FileManager/BoundFileManager.d.ts +18 -18
- package/dist/Components/FileManager/BoundFileManager.js +60 -60
- package/dist/Components/FileManager/FileManager.d.ts +80 -78
- package/dist/Components/FileManager/FileManager.js +277 -257
- package/dist/Components/FileManager/FileUploadBatch.d.ts +37 -37
- package/dist/Components/FileManager/FileUploadBatch.js +83 -82
- package/dist/Components/FileManager/IFileManagerOptions.d.ts +42 -42
- package/dist/Components/FileManager/IFileManagerOptions.js +1 -1
- package/dist/Components/FormOptions.d.ts +34 -34
- package/dist/Components/FormOptions.js +1 -1
- package/dist/Components/ICollapsableOptions.d.ts +11 -11
- package/dist/Components/ICollapsableOptions.js +1 -1
- package/dist/Components/Modal/ModalHelper.d.ts +31 -31
- package/dist/Components/Modal/ModalHelper.js +174 -174
- package/dist/Components/Modal/ModalOptions.d.ts +61 -61
- package/dist/Components/Modal/ModalOptions.js +1 -1
- package/dist/Components/Modal/ModalStore.d.ts +32 -32
- package/dist/Components/Modal/ModalStore.js +82 -82
- package/dist/Components/Modal/ModalUtils.d.ts +61 -61
- package/dist/Components/Modal/ModalUtils.js +109 -109
- package/dist/Components/Notifications/INotificationHelper.d.ts +56 -56
- package/dist/Components/Notifications/INotificationHelper.js +1 -1
- package/dist/Components/Notifications/Notification.d.ts +32 -32
- package/dist/Components/Notifications/Notification.js +26 -27
- package/dist/Components/Notifications/NotificationHelper.d.ts +63 -63
- package/dist/Components/Notifications/NotificationHelper.js +111 -112
- package/dist/Components/Notifications/NotificationStore.d.ts +34 -34
- package/dist/Components/Notifications/NotificationStore.js +78 -79
- package/dist/Components/PositionHelper.d.ts +10 -10
- package/dist/Components/PositionHelper.js +43 -43
- package/dist/Components/TaskRunner/Decorators.d.ts +6 -6
- package/dist/Components/TaskRunner/Decorators.js +24 -24
- package/dist/Components/TaskRunner/ProgressState.d.ts +22 -22
- package/dist/Components/TaskRunner/ProgressState.js +71 -72
- package/dist/Components/TaskRunner/TaskRunner.d.ts +114 -114
- package/dist/Components/TaskRunner/TaskRunner.js +253 -244
- package/dist/Components/TooltipOptions.d.ts +8 -8
- package/dist/Components/TooltipOptions.js +1 -1
- package/dist/Components/index.d.ts +22 -22
- package/dist/Components/index.js +13 -13
- package/dist/ConnectionManager.d.ts +45 -45
- package/dist/ConnectionManager.js +60 -61
- package/dist/Data/ApiDataSource.d.ts +46 -46
- package/dist/Data/ApiDataSource.js +140 -144
- package/dist/Data/AsyncDataSource.d.ts +35 -35
- package/dist/Data/AsyncDataSource.js +79 -80
- package/dist/Data/CacheService.d.ts +40 -40
- package/dist/Data/CacheService.js +63 -64
- package/dist/Data/DataCacheEntry.d.ts +42 -42
- package/dist/Data/DataCacheEntry.js +80 -80
- package/dist/Data/DataView.d.ts +43 -43
- package/dist/Data/DataView.js +173 -172
- package/dist/Data/Deserialiser.d.ts +42 -42
- package/dist/Data/Deserialiser.js +255 -255
- package/dist/Data/Paging/PageManager.d.ts +167 -167
- package/dist/Data/Paging/PageManager.js +323 -323
- package/dist/Data/Paging/PageRequest.d.ts +24 -24
- package/dist/Data/Paging/PageRequest.js +38 -39
- package/dist/Data/Paging/PageResult.d.ts +10 -10
- package/dist/Data/Paging/PageResult.js +14 -14
- package/dist/Data/Serialiser.d.ts +41 -41
- package/dist/Data/Serialiser.js +201 -201
- package/dist/Data/SortOperation.d.ts +8 -8
- package/dist/Data/SortOperation.js +26 -26
- package/dist/Data/StaticDataSource.d.ts +9 -9
- package/dist/Data/StaticDataSource.js +27 -27
- package/dist/Data/WindowedDataView.d.ts +8 -8
- package/dist/Data/WindowedDataView.js +49 -50
- package/dist/Data/index.d.ts +15 -15
- package/dist/Data/index.js +15 -15
- package/dist/Dates/DateUtils.d.ts +47 -47
- package/dist/Dates/DateUtils.js +226 -226
- package/dist/Dates/TimeSpan.d.ts +24 -24
- package/dist/Dates/TimeSpan.js +46 -46
- package/dist/DebounceHelper.d.ts +44 -38
- package/dist/DebounceHelper.js +122 -95
- package/dist/Extensions.d.ts +82 -82
- package/dist/Extensions.js +182 -182
- package/dist/FileUtils.d.ts +6 -6
- package/dist/FileUtils.js +37 -37
- package/dist/Globals.d.ts +19 -19
- package/dist/Globals.js +41 -41
- package/dist/JsonSchema/ClassMetadata.d.ts +25 -25
- package/dist/JsonSchema/ClassMetadata.js +53 -53
- package/dist/JsonSchema/JsonData.d.ts +16 -16
- package/dist/JsonSchema/JsonData.js +97 -97
- package/dist/JsonSchema/JsonSchemaTypes.d.ts +37 -37
- package/dist/JsonSchema/JsonSchemaTypes.js +1 -1
- package/dist/JsonSchema/PropertyMetadata.d.ts +8 -8
- package/dist/JsonSchema/PropertyMetadata.js +8 -8
- package/dist/JsonSchema/TypeCache.d.ts +16 -16
- package/dist/JsonSchema/TypeCache.js +44 -44
- package/dist/JsonSchema/TypeMetadata.d.ts +45 -45
- package/dist/JsonSchema/TypeMetadata.js +170 -170
- package/dist/JsonSchema/index.d.ts +7 -7
- package/dist/JsonSchema/index.js +6 -6
- package/dist/Localisation/ILocalisationService.d.ts +11 -11
- package/dist/Localisation/ILocalisationService.js +1 -1
- package/dist/Localisation/LocalisationService.d.ts +4 -4
- package/dist/Localisation/LocalisationService.js +17 -17
- package/dist/Localisation/index.d.ts +1 -1
- package/dist/Localisation/index.js +1 -1
- package/dist/Misc.d.ts +6 -6
- package/dist/Misc.js +6 -6
- package/dist/Model/BaseModels/AuditValues.d.ts +12 -12
- package/dist/Model/BaseModels/AuditValues.js +46 -48
- package/dist/Model/BaseModels/CriteriaBase.d.ts +18 -16
- package/dist/Model/BaseModels/CriteriaBase.js +45 -34
- package/dist/Model/BaseModels/FileDescriptorBase.d.ts +12 -12
- package/dist/Model/BaseModels/FileDescriptorBase.js +22 -22
- package/dist/Model/BaseModels/ReasonedUserEvent.d.ts +5 -4
- package/dist/Model/BaseModels/ReasonedUserEvent.js +23 -19
- package/dist/Model/BaseModels/UserEvent.d.ts +9 -8
- package/dist/Model/BaseModels/UserEvent.js +36 -32
- package/dist/Model/BindableBase.d.ts +46 -40
- package/dist/Model/BindableBase.js +79 -76
- package/dist/Model/Decorators.d.ts +47 -44
- package/dist/Model/Decorators.js +182 -177
- package/dist/Model/EnumHelper.d.ts +54 -54
- package/dist/Model/EnumHelper.js +104 -100
- package/dist/Model/IAutoRunner.d.ts +5 -5
- package/dist/Model/IAutoRunner.js +1 -1
- package/dist/Model/IModelBase.d.ts +92 -79
- package/dist/Model/IModelBase.js +1 -1
- package/dist/Model/IModelCreatorBase.d.ts +9 -9
- package/dist/Model/IModelCreatorBase.js +1 -1
- package/dist/Model/List.d.ts +79 -77
- package/dist/Model/List.js +208 -198
- package/dist/Model/LookupBase.d.ts +13 -6
- package/dist/Model/LookupBase.js +19 -10
- package/dist/Model/Misc.d.ts +83 -81
- package/dist/Model/Misc.js +59 -59
- package/dist/Model/ModelBase.d.ts +88 -86
- package/dist/Model/ModelBase.js +182 -180
- package/dist/Model/ModelCreatorBase.d.ts +24 -23
- package/dist/Model/ModelCreatorBase.js +92 -92
- package/dist/Model/ModelFieldInfo.d.ts +29 -12
- package/dist/Model/ModelFieldInfo.js +35 -26
- package/dist/Model/ModelGraphTraverser.d.ts +35 -35
- package/dist/Model/ModelGraphTraverser.js +101 -99
- package/dist/Model/NeoModel.d.ts +6 -6
- package/dist/Model/NeoModel.js +13 -13
- package/dist/Model/NeoTypeInfo.d.ts +52 -41
- package/dist/Model/NeoTypeInfo.js +300 -250
- package/dist/Model/ObservableProperty.d.ts +8 -8
- package/dist/Model/ObservableProperty.js +41 -41
- package/dist/Model/ObservableValue.d.ts +9 -9
- package/dist/Model/ObservableValue.js +25 -26
- package/dist/Model/PropertyInfo.d.ts +83 -81
- package/dist/Model/PropertyInfo.js +138 -137
- package/dist/Model/PropertyInstance.d.ts +84 -48
- package/dist/Model/PropertyInstance.js +173 -113
- package/dist/Model/ValueObject.d.ts +3 -3
- package/dist/Model/ValueObject.js +10 -10
- package/dist/Model/index.d.ts +15 -14
- package/dist/Model/index.js +13 -12
- package/dist/NumberUtils.d.ts +63 -49
- package/dist/NumberUtils.js +247 -197
- package/dist/Routing/IMenuItemProvider.d.ts +9 -9
- package/dist/Routing/IMenuItemProvider.js +1 -1
- package/dist/Routing/IMenuRoute.d.ts +18 -18
- package/dist/Routing/IMenuRoute.js +1 -1
- package/dist/Routing/INavigationHelper.d.ts +7 -7
- package/dist/Routing/INavigationHelper.js +1 -1
- package/dist/Routing/IPageLeaveHandler.d.ts +23 -23
- package/dist/Routing/IPageLeaveHandler.js +7 -7
- package/dist/Routing/IRoute.d.ts +27 -27
- package/dist/Routing/IRoute.js +1 -1
- package/dist/Routing/IRouteSecurityService.d.ts +14 -14
- package/dist/Routing/IRouteSecurityService.js +1 -1
- package/dist/Routing/MenuItemProvider.d.ts +17 -17
- package/dist/Routing/MenuItemProvider.js +53 -54
- package/dist/Routing/RouteSecurityService.d.ts +18 -18
- package/dist/Routing/RouteSecurityService.js +35 -36
- package/dist/Routing/index.d.ts +7 -7
- package/dist/Routing/index.js +3 -3
- package/dist/Security/IAuthenticationService.d.ts +41 -36
- package/dist/Security/IAuthenticationService.js +1 -1
- package/dist/Security/IAuthorisationService.d.ts +11 -11
- package/dist/Security/IAuthorisationService.js +1 -1
- package/dist/Security/ILoginErrorHandler.d.ts +4 -4
- package/dist/Security/ILoginErrorHandler.js +1 -1
- package/dist/Security/ISecurityService.d.ts +10 -10
- package/dist/Security/ISecurityService.js +1 -1
- package/dist/Security/IUser.d.ts +10 -10
- package/dist/Security/IUser.js +1 -1
- package/dist/Security/IUserRole.d.ts +6 -6
- package/dist/Security/IUserRole.js +1 -1
- package/dist/Security/LoginErrorHandler.d.ts +15 -15
- package/dist/Security/LoginErrorHandler.js +97 -98
- package/dist/Security/Oidc/OidcAuthService.d.ts +67 -60
- package/dist/Security/Oidc/OidcAuthService.js +216 -189
- package/dist/Security/Oidc/OidcTypes.d.ts +46 -29
- package/dist/Security/Oidc/OidcTypes.js +1 -1
- package/dist/Security/Oidc/OidcUser.d.ts +9 -9
- package/dist/Security/Oidc/OidcUser.js +33 -33
- package/dist/Security/SecurityService.d.ts +12 -12
- package/dist/Security/SecurityService.js +33 -34
- package/dist/Security/SignInResult.d.ts +13 -13
- package/dist/Security/SignInResult.js +8 -8
- package/dist/Security/User.d.ts +12 -12
- package/dist/Security/User.js +24 -24
- package/dist/Security/index.d.ts +10 -10
- package/dist/Security/index.js +5 -5
- package/dist/Settings.d.ts +71 -57
- package/dist/Settings.js +100 -87
- package/dist/SignalR/HubBase.d.ts +70 -70
- package/dist/SignalR/HubBase.js +164 -164
- package/dist/SignalR/HubReceiver.d.ts +11 -11
- package/dist/SignalR/HubReceiver.js +25 -25
- package/dist/SignalR/HubSubscription.d.ts +12 -12
- package/dist/SignalR/HubSubscription.js +14 -14
- package/dist/SignalR/index.d.ts +3 -3
- package/dist/SignalR/index.js +1 -1
- package/dist/StringUtils.d.ts +7 -7
- package/dist/StringUtils.js +24 -24
- package/dist/Utils.d.ts +81 -80
- package/dist/Utils.js +220 -218
- package/dist/Validation/Decorators.d.ts +12 -12
- package/dist/Validation/Decorators.js +52 -52
- package/dist/Validation/DisplayHelper.d.ts +20 -19
- package/dist/Validation/DisplayHelper.js +104 -104
- package/dist/Validation/Misc.d.ts +10 -10
- package/dist/Validation/Misc.js +11 -11
- package/dist/Validation/ModelProxy.d.ts +20 -20
- package/dist/Validation/ModelProxy.js +46 -46
- package/dist/Validation/RuleContext.d.ts +86 -86
- package/dist/Validation/RuleContext.js +130 -130
- package/dist/Validation/Rules.d.ts +70 -70
- package/dist/Validation/Rules.js +177 -177
- package/dist/Validation/ValidationHelpers.d.ts +12 -12
- package/dist/Validation/ValidationHelpers.js +57 -57
- package/dist/Validation/ValidationRules.d.ts +18 -18
- package/dist/Validation/ValidationRules.js +34 -34
- package/dist/Validation/ValidationState.d.ts +42 -42
- package/dist/Validation/ValidationState.js +74 -74
- package/dist/Validation/Validators/IModelValidator.d.ts +28 -24
- package/dist/Validation/Validators/IModelValidator.js +1 -1
- package/dist/Validation/Validators/IPropertyValidator.d.ts +21 -21
- package/dist/Validation/Validators/IPropertyValidator.js +15 -15
- package/dist/Validation/Validators/ModelValidator.d.ts +46 -45
- package/dist/Validation/Validators/ModelValidator.js +143 -137
- package/dist/Validation/Validators/PropertyValidator.d.ts +21 -21
- package/dist/Validation/Validators/PropertyValidator.js +64 -67
- package/dist/Validation/Validators/RuleValidator.d.ts +19 -19
- package/dist/Validation/Validators/RuleValidator.js +51 -55
- package/dist/Validation/index.d.ts +9 -9
- package/dist/Validation/index.js +7 -7
- package/dist/Views/IViewBase.d.ts +5 -5
- package/dist/Views/IViewBase.js +1 -1
- package/dist/index.d.ts +37 -36
- package/dist/index.js +44 -43
- package/package.json +11 -10
|
@@ -1,137 +1,143 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
var ModelValidator = /** @class */ (function () {
|
|
11
|
-
function ModelValidator(model, objectRules) {
|
|
12
|
-
var _this = this;
|
|
13
|
-
this.model = model;
|
|
14
|
-
// Properties that contain at least 1 rule.
|
|
15
|
-
this.ruleProperties = [];
|
|
16
|
-
// Rules which don't display on any properties.
|
|
17
|
-
this.objectRules = [];
|
|
18
|
-
// Rules belonging to properties, by ruleId.
|
|
19
|
-
this.propertyRules = new Map();
|
|
20
|
-
this.hasCheckedRules = false;
|
|
21
|
-
this.forceShowErrors = false;
|
|
22
|
-
if (objectRules.length) {
|
|
23
|
-
var tempPropertyInstance_1 = new PropertyInstance(model, new PropertyInfo(""));
|
|
24
|
-
objectRules.forEach(function (rule) {
|
|
25
|
-
_this.objectRules.push(new RuleValidator(tempPropertyInstance_1, rule));
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
*
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
var
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
this.
|
|
77
|
-
_this._ruleState.
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
var
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { Observable, Computed } from '../../Model/Decorators';
|
|
3
|
+
import PropertyInstance from '../../Model/PropertyInstance';
|
|
4
|
+
import RuleValidator from './RuleValidator';
|
|
5
|
+
import { ContainerValidationState } from '../ValidationState';
|
|
6
|
+
import PropertyValidator from './PropertyValidator';
|
|
7
|
+
import PropertyInfo from '../../Model/PropertyInfo';
|
|
8
|
+
import ValidationDisplayHelper from '../DisplayHelper';
|
|
9
|
+
import { NeoTypeInfo } from '../../Model/NeoTypeInfo';
|
|
10
|
+
var ModelValidator = /** @class */ (function () {
|
|
11
|
+
function ModelValidator(model, objectRules) {
|
|
12
|
+
var _this = this;
|
|
13
|
+
this.model = model;
|
|
14
|
+
// Properties that contain at least 1 rule.
|
|
15
|
+
this.ruleProperties = [];
|
|
16
|
+
// Rules which don't display on any properties.
|
|
17
|
+
this.objectRules = [];
|
|
18
|
+
// Rules belonging to properties, by ruleId.
|
|
19
|
+
this.propertyRules = new Map();
|
|
20
|
+
this.hasCheckedRules = false;
|
|
21
|
+
this.forceShowErrors = false;
|
|
22
|
+
if (objectRules.length) {
|
|
23
|
+
var tempPropertyInstance_1 = new PropertyInstance(model, new PropertyInfo(""));
|
|
24
|
+
objectRules.forEach(function (rule) {
|
|
25
|
+
_this.objectRules.push(new RuleValidator(tempPropertyInstance_1, rule));
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
NeoTypeInfo.makeObservable(this);
|
|
29
|
+
}
|
|
30
|
+
ModelValidator.prototype.addProperty = function (property) {
|
|
31
|
+
this.ruleProperties.push(property);
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Creates a property validator from its list of Rules.
|
|
35
|
+
* One RuleValidator will be created per rule, even if the rule is added to multiple properties.
|
|
36
|
+
*/
|
|
37
|
+
ModelValidator.prototype.createPropertyValidator = function (property) {
|
|
38
|
+
var ruleList = [];
|
|
39
|
+
for (var _i = 0, _a = property.propertyInfo.rules; _i < _a.length; _i++) {
|
|
40
|
+
var rule = _a[_i];
|
|
41
|
+
var ruleValidator = this.propertyRules.get(rule.ruleId);
|
|
42
|
+
if (!ruleValidator) {
|
|
43
|
+
ruleValidator = new RuleValidator(property, rule);
|
|
44
|
+
this.propertyRules.set(rule.ruleId, ruleValidator);
|
|
45
|
+
}
|
|
46
|
+
ruleValidator.properties.push(property);
|
|
47
|
+
ruleList.push(ruleValidator);
|
|
48
|
+
}
|
|
49
|
+
return new PropertyValidator(property, ruleList);
|
|
50
|
+
};
|
|
51
|
+
Object.defineProperty(ModelValidator.prototype, "ruleState", {
|
|
52
|
+
get: function () {
|
|
53
|
+
this.checkRules();
|
|
54
|
+
return this._ruleState;
|
|
55
|
+
},
|
|
56
|
+
enumerable: false,
|
|
57
|
+
configurable: true
|
|
58
|
+
});
|
|
59
|
+
Object.defineProperty(ModelValidator.prototype, "isValid", {
|
|
60
|
+
get: function () {
|
|
61
|
+
return this.ruleState.isValid;
|
|
62
|
+
},
|
|
63
|
+
enumerable: false,
|
|
64
|
+
configurable: true
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(ModelValidator.prototype, "severity", {
|
|
67
|
+
get: function () {
|
|
68
|
+
return this.ruleState.severity;
|
|
69
|
+
},
|
|
70
|
+
enumerable: false,
|
|
71
|
+
configurable: true
|
|
72
|
+
});
|
|
73
|
+
ModelValidator.prototype.checkRules = function () {
|
|
74
|
+
var _this = this;
|
|
75
|
+
this._ruleState = new ContainerValidationState();
|
|
76
|
+
this.objectRules.forEach(function (r) {
|
|
77
|
+
_this._ruleState.merge(r.ruleContext);
|
|
78
|
+
});
|
|
79
|
+
// Make sure all property validators have been initialised
|
|
80
|
+
if (!this.hasCheckedRules) {
|
|
81
|
+
this.hasCheckedRules = true;
|
|
82
|
+
this.ruleProperties.forEach(function (p) { return p.validator; });
|
|
83
|
+
}
|
|
84
|
+
this.propertyRules.forEach(function (v) {
|
|
85
|
+
_this._ruleState.update(v.ruleContext);
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Gets the broken rules for this object. If you need the summary for an object graph, use Validation.getValidationSummary()
|
|
90
|
+
*/
|
|
91
|
+
ModelValidator.prototype.getBrokenRules = function () {
|
|
92
|
+
var ruleState = this.ruleState;
|
|
93
|
+
var objectInfo = this.objectRules.filter(function (v) { return v.ruleContext.hasDetail; }).map(function (v, index) {
|
|
94
|
+
return {
|
|
95
|
+
order: index,
|
|
96
|
+
displayInfo: ValidationDisplayHelper.getDisplayInfo(v.ruleContext, true),
|
|
97
|
+
properties: []
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
var properties = Array.from(this.propertyRules.values()).filter(function (v) { return v.ruleContext.hasDetail; }).map(function (v, index) {
|
|
101
|
+
return {
|
|
102
|
+
order: index + 1000,
|
|
103
|
+
displayInfo: ValidationDisplayHelper.getDisplayInfo(v.ruleContext, true),
|
|
104
|
+
properties: v.properties
|
|
105
|
+
};
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
model: this.model,
|
|
109
|
+
isValid: ruleState.isValid,
|
|
110
|
+
objectDisplayInfo: objectInfo,
|
|
111
|
+
propertyRules: properties
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
ModelValidator.prototype.getRuleResult = function (ruleDefinition) {
|
|
115
|
+
if (ruleDefinition) {
|
|
116
|
+
var rule = this.objectRules.find(function (c) { return c.ruleId === ruleDefinition.ruleId; });
|
|
117
|
+
if (!rule) {
|
|
118
|
+
rule = this.propertyRules.get(ruleDefinition.ruleId);
|
|
119
|
+
}
|
|
120
|
+
if (rule) {
|
|
121
|
+
return rule.ruleContext;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return null;
|
|
125
|
+
};
|
|
126
|
+
ModelValidator.prototype.resetDisplay = function () {
|
|
127
|
+
this.forceShowErrors = false;
|
|
128
|
+
this.ruleProperties.forEach(function (p) { return p.validator.hasBlurred = false; });
|
|
129
|
+
};
|
|
130
|
+
__decorate([
|
|
131
|
+
Observable()
|
|
132
|
+
/** True if errors must be shown for this object, even if the user hasnt tabbed off some properties */
|
|
133
|
+
,
|
|
134
|
+
__metadata("design:type", Boolean)
|
|
135
|
+
], ModelValidator.prototype, "forceShowErrors", void 0);
|
|
136
|
+
__decorate([
|
|
137
|
+
Computed(),
|
|
138
|
+
__metadata("design:type", ContainerValidationState),
|
|
139
|
+
__metadata("design:paramtypes", [])
|
|
140
|
+
], ModelValidator.prototype, "ruleState", null);
|
|
141
|
+
return ModelValidator;
|
|
142
|
+
}());
|
|
143
|
+
export default ModelValidator;
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { IPropertyInstance } from '../../Model/PropertyInstance';
|
|
2
|
-
import { IRuleValidator } from './RuleValidator';
|
|
3
|
-
import { ContainerValidationState } from '../ValidationState';
|
|
4
|
-
import { ValidationDisplayMode } from '../Misc';
|
|
5
|
-
import { ValidationDisplayInfo } from '../DisplayHelper';
|
|
6
|
-
import { IPropertyValidator } from './IPropertyValidator';
|
|
7
|
-
export default class PropertyValidator implements IPropertyValidator {
|
|
8
|
-
propertyInstance: IPropertyInstance;
|
|
9
|
-
private ruleList;
|
|
10
|
-
constructor(propertyInstance: IPropertyInstance, ruleList: IRuleValidator[]);
|
|
11
|
-
private _ruleState;
|
|
12
|
-
/** True if an element bound to this property has lost focus. Used for displaying rules. */
|
|
13
|
-
hasBlurred: boolean;
|
|
14
|
-
get ruleState(): ContainerValidationState;
|
|
15
|
-
get isValid(): boolean;
|
|
16
|
-
private checkRules;
|
|
17
|
-
/** Infomation about the errors that must be shown on the UI. Independent from whether or not the property is valid. */
|
|
18
|
-
getDisplayState(validationMode: ValidationDisplayMode): ValidationDisplayInfo;
|
|
19
|
-
/** True if the validation state is final, e.g. the property has blurred, or validation display mode is always. */
|
|
20
|
-
canDisplayAll(validationMode: ValidationDisplayMode): boolean;
|
|
21
|
-
}
|
|
1
|
+
import { IPropertyInstance } from '../../Model/PropertyInstance';
|
|
2
|
+
import { IRuleValidator } from './RuleValidator';
|
|
3
|
+
import { ContainerValidationState } from '../ValidationState';
|
|
4
|
+
import { ValidationDisplayMode } from '../Misc';
|
|
5
|
+
import { ValidationDisplayInfo } from '../DisplayHelper';
|
|
6
|
+
import { IPropertyValidator } from './IPropertyValidator';
|
|
7
|
+
export default class PropertyValidator implements IPropertyValidator {
|
|
8
|
+
propertyInstance: IPropertyInstance;
|
|
9
|
+
private ruleList;
|
|
10
|
+
constructor(propertyInstance: IPropertyInstance, ruleList: IRuleValidator[]);
|
|
11
|
+
private _ruleState;
|
|
12
|
+
/** True if an element bound to this property has lost focus. Used for displaying rules. */
|
|
13
|
+
hasBlurred: boolean;
|
|
14
|
+
get ruleState(): ContainerValidationState;
|
|
15
|
+
get isValid(): boolean;
|
|
16
|
+
private checkRules;
|
|
17
|
+
/** Infomation about the errors that must be shown on the UI. Independent from whether or not the property is valid. */
|
|
18
|
+
getDisplayState(validationMode: ValidationDisplayMode): ValidationDisplayInfo;
|
|
19
|
+
/** True if the validation state is final, e.g. the property has blurred, or validation display mode is always. */
|
|
20
|
+
canDisplayAll(validationMode: ValidationDisplayMode): boolean;
|
|
21
|
+
}
|
|
@@ -1,67 +1,64 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { ContainerValidationState } from '../ValidationState';
|
|
3
|
-
import { ValidationDisplayMode } from '../Misc';
|
|
4
|
-
import { ValidationDisplayInfo } from '../DisplayHelper';
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
var PropertyValidator = /** @class */ (function () {
|
|
8
|
-
function PropertyValidator(propertyInstance, ruleList) {
|
|
9
|
-
this.propertyInstance = propertyInstance;
|
|
10
|
-
this.ruleList = ruleList;
|
|
11
|
-
/** True if an element bound to this property has lost focus. Used for displaying rules. */
|
|
12
|
-
this.hasBlurred = false;
|
|
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
|
-
__metadata("design:
|
|
60
|
-
|
|
61
|
-
PropertyValidator
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return PropertyValidator;
|
|
66
|
-
}());
|
|
67
|
-
export default PropertyValidator;
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { ContainerValidationState } from '../ValidationState';
|
|
3
|
+
import { ValidationDisplayMode } from '../Misc';
|
|
4
|
+
import { ValidationDisplayInfo } from '../DisplayHelper';
|
|
5
|
+
import { Observable, Computed } from '../../Model/Decorators';
|
|
6
|
+
import { NeoTypeInfo } from '../../Model/NeoTypeInfo';
|
|
7
|
+
var PropertyValidator = /** @class */ (function () {
|
|
8
|
+
function PropertyValidator(propertyInstance, ruleList) {
|
|
9
|
+
this.propertyInstance = propertyInstance;
|
|
10
|
+
this.ruleList = ruleList;
|
|
11
|
+
/** True if an element bound to this property has lost focus. Used for displaying rules. */
|
|
12
|
+
this.hasBlurred = false;
|
|
13
|
+
NeoTypeInfo.makeObservable(this);
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(PropertyValidator.prototype, "ruleState", {
|
|
16
|
+
get: function () {
|
|
17
|
+
this.checkRules();
|
|
18
|
+
return this._ruleState;
|
|
19
|
+
},
|
|
20
|
+
enumerable: false,
|
|
21
|
+
configurable: true
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(PropertyValidator.prototype, "isValid", {
|
|
24
|
+
get: function () {
|
|
25
|
+
return this.ruleState.isValid;
|
|
26
|
+
},
|
|
27
|
+
enumerable: false,
|
|
28
|
+
configurable: true
|
|
29
|
+
});
|
|
30
|
+
PropertyValidator.prototype.checkRules = function () {
|
|
31
|
+
this._ruleState = new ContainerValidationState();
|
|
32
|
+
if (this.ruleList) {
|
|
33
|
+
for (var i = 0; i < this.ruleList.length; i++) {
|
|
34
|
+
this._ruleState.merge(this.ruleList[i].ruleContext);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
/** Infomation about the errors that must be shown on the UI. Independent from whether or not the property is valid. */
|
|
39
|
+
PropertyValidator.prototype.getDisplayState = function (validationMode) {
|
|
40
|
+
if (validationMode === ValidationDisplayMode.Never) {
|
|
41
|
+
return new ValidationDisplayInfo();
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return this.ruleState.getDisplayInfo(this.canDisplayAll(validationMode));
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
/** True if the validation state is final, e.g. the property has blurred, or validation display mode is always. */
|
|
48
|
+
PropertyValidator.prototype.canDisplayAll = function (validationMode) {
|
|
49
|
+
return (validationMode == ValidationDisplayMode.Always ||
|
|
50
|
+
this.propertyInstance.attachedTo.validator.forceShowErrors ||
|
|
51
|
+
(validationMode == ValidationDisplayMode.AfterBlur && this.hasBlurred));
|
|
52
|
+
};
|
|
53
|
+
__decorate([
|
|
54
|
+
Observable(),
|
|
55
|
+
__metadata("design:type", Object)
|
|
56
|
+
], PropertyValidator.prototype, "hasBlurred", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
Computed(),
|
|
59
|
+
__metadata("design:type", ContainerValidationState),
|
|
60
|
+
__metadata("design:paramtypes", [])
|
|
61
|
+
], PropertyValidator.prototype, "ruleState", null);
|
|
62
|
+
return PropertyValidator;
|
|
63
|
+
}());
|
|
64
|
+
export default PropertyValidator;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { Rule } from '../Rules';
|
|
2
|
-
import PropertyInstance, { IPropertyInstance } from '../../Model/PropertyInstance';
|
|
3
|
-
import { RuleContextBase, RuleContext, AsyncStage } from '../RuleContext';
|
|
4
|
-
import { Nullable } from '../../Utils';
|
|
5
|
-
export interface IRuleValidator {
|
|
6
|
-
ruleContext: RuleContext;
|
|
7
|
-
}
|
|
8
|
-
export default class RuleValidator implements IRuleValidator {
|
|
9
|
-
propertyInstance: IPropertyInstance;
|
|
10
|
-
private rule;
|
|
11
|
-
constructor(propertyInstance: IPropertyInstance, rule: Rule);
|
|
12
|
-
asyncContext: Nullable<RuleContextBase>;
|
|
13
|
-
asyncStage: AsyncStage;
|
|
14
|
-
debounce: any;
|
|
15
|
-
properties: PropertyInstance[];
|
|
16
|
-
refreshValue: number;
|
|
17
|
-
get ruleId(): string;
|
|
18
|
-
get ruleContext(): RuleContext;
|
|
19
|
-
}
|
|
1
|
+
import { Rule } from '../Rules';
|
|
2
|
+
import PropertyInstance, { IPropertyInstance } from '../../Model/PropertyInstance';
|
|
3
|
+
import { RuleContextBase, RuleContext, AsyncStage } from '../RuleContext';
|
|
4
|
+
import { Nullable } from '../../Utils';
|
|
5
|
+
export interface IRuleValidator {
|
|
6
|
+
ruleContext: RuleContext;
|
|
7
|
+
}
|
|
8
|
+
export default class RuleValidator implements IRuleValidator {
|
|
9
|
+
propertyInstance: IPropertyInstance;
|
|
10
|
+
private rule;
|
|
11
|
+
constructor(propertyInstance: IPropertyInstance, rule: Rule);
|
|
12
|
+
asyncContext: Nullable<RuleContextBase>;
|
|
13
|
+
asyncStage: AsyncStage;
|
|
14
|
+
debounce: any;
|
|
15
|
+
properties: PropertyInstance[];
|
|
16
|
+
refreshValue: number;
|
|
17
|
+
get ruleId(): string;
|
|
18
|
+
get ruleContext(): RuleContext;
|
|
19
|
+
}
|
|
@@ -1,55 +1,51 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
this.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
this.
|
|
12
|
-
this
|
|
13
|
-
|
|
14
|
-
this.
|
|
15
|
-
this
|
|
16
|
-
}
|
|
17
|
-
Object.defineProperty(RuleValidator.prototype, "ruleId", {
|
|
18
|
-
get: function () {
|
|
19
|
-
return this.rule.ruleId;
|
|
20
|
-
},
|
|
21
|
-
enumerable: false,
|
|
22
|
-
configurable: true
|
|
23
|
-
});
|
|
24
|
-
Object.defineProperty(RuleValidator.prototype, "ruleContext", {
|
|
25
|
-
get: function () {
|
|
26
|
-
void this.refreshValue; // create dependency on refreshValue
|
|
27
|
-
var ruleContext = new RuleContext(this);
|
|
28
|
-
if (this.asyncStage !== AsyncStage.Completing) {
|
|
29
|
-
this.asyncContext = null;
|
|
30
|
-
}
|
|
31
|
-
this.rule.checkRule(this.propertyInstance, ruleContext);
|
|
32
|
-
if (this.asyncContext) {
|
|
33
|
-
ruleContext.merge(this.asyncContext, true);
|
|
34
|
-
}
|
|
35
|
-
return ruleContext;
|
|
36
|
-
},
|
|
37
|
-
enumerable: false,
|
|
38
|
-
configurable: true
|
|
39
|
-
});
|
|
40
|
-
__decorate([
|
|
41
|
-
Observable(),
|
|
42
|
-
__metadata("design:type", Object)
|
|
43
|
-
], RuleValidator.prototype, "refreshValue", void 0);
|
|
44
|
-
__decorate([
|
|
45
|
-
Computed(),
|
|
46
|
-
__metadata("design:type", Object),
|
|
47
|
-
__metadata("design:paramtypes", [])
|
|
48
|
-
], RuleValidator.prototype, "ruleContext", null);
|
|
49
|
-
RuleValidator
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
], RuleValidator);
|
|
53
|
-
return RuleValidator;
|
|
54
|
-
}());
|
|
55
|
-
export default RuleValidator;
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { RuleContext, AsyncStage } from '../RuleContext';
|
|
3
|
+
import { Observable, Computed } from '../../Model/Decorators';
|
|
4
|
+
import { NeoTypeInfo } from '../../Model/NeoTypeInfo';
|
|
5
|
+
var RuleValidator = /** @class */ (function () {
|
|
6
|
+
function RuleValidator(propertyInstance, rule) {
|
|
7
|
+
this.propertyInstance = propertyInstance;
|
|
8
|
+
this.rule = rule;
|
|
9
|
+
// Last context which called beginAsync
|
|
10
|
+
this.asyncContext = null;
|
|
11
|
+
this.asyncStage = AsyncStage.None;
|
|
12
|
+
// Properties this rule has been added to, including the primary property.
|
|
13
|
+
this.properties = [];
|
|
14
|
+
this.refreshValue = 0;
|
|
15
|
+
NeoTypeInfo.makeObservable(this);
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(RuleValidator.prototype, "ruleId", {
|
|
18
|
+
get: function () {
|
|
19
|
+
return this.rule.ruleId;
|
|
20
|
+
},
|
|
21
|
+
enumerable: false,
|
|
22
|
+
configurable: true
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(RuleValidator.prototype, "ruleContext", {
|
|
25
|
+
get: function () {
|
|
26
|
+
void this.refreshValue; // create dependency on refreshValue
|
|
27
|
+
var ruleContext = new RuleContext(this);
|
|
28
|
+
if (this.asyncStage !== AsyncStage.Completing) {
|
|
29
|
+
this.asyncContext = null;
|
|
30
|
+
}
|
|
31
|
+
this.rule.checkRule(this.propertyInstance, ruleContext);
|
|
32
|
+
if (this.asyncContext) {
|
|
33
|
+
ruleContext.merge(this.asyncContext, true);
|
|
34
|
+
}
|
|
35
|
+
return ruleContext;
|
|
36
|
+
},
|
|
37
|
+
enumerable: false,
|
|
38
|
+
configurable: true
|
|
39
|
+
});
|
|
40
|
+
__decorate([
|
|
41
|
+
Observable(),
|
|
42
|
+
__metadata("design:type", Object)
|
|
43
|
+
], RuleValidator.prototype, "refreshValue", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
Computed(),
|
|
46
|
+
__metadata("design:type", Object),
|
|
47
|
+
__metadata("design:paramtypes", [])
|
|
48
|
+
], RuleValidator.prototype, "ruleContext", null);
|
|
49
|
+
return RuleValidator;
|
|
50
|
+
}());
|
|
51
|
+
export default RuleValidator;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { default as ModelValidator } from './Validators/ModelValidator';
|
|
2
|
-
export { default as PropertyValidator } from './Validators/PropertyValidator';
|
|
3
|
-
export { ValidationDisplayMode as DisplayMode } from './Misc';
|
|
4
|
-
export { RuleSeverity } from './ValidationState';
|
|
5
|
-
export { ValidationDisplayInfo as DisplayInfo } from './DisplayHelper';
|
|
6
|
-
export { IRuleContext } from './RuleContext';
|
|
7
|
-
export { ValidationRules as Rules } from './ValidationRules';
|
|
8
|
-
export { getValidationSummary, IInvalidObjectGraph } from './ValidationHelpers';
|
|
9
|
-
export { IRule } from './Rules';
|
|
1
|
+
export { default as ModelValidator } from './Validators/ModelValidator';
|
|
2
|
+
export { default as PropertyValidator } from './Validators/PropertyValidator';
|
|
3
|
+
export { ValidationDisplayMode as DisplayMode } from './Misc';
|
|
4
|
+
export { RuleSeverity } from './ValidationState';
|
|
5
|
+
export { ValidationDisplayInfo as DisplayInfo } from './DisplayHelper';
|
|
6
|
+
export { IRuleContext } from './RuleContext';
|
|
7
|
+
export { ValidationRules as Rules } from './ValidationRules';
|
|
8
|
+
export { getValidationSummary, IInvalidObjectGraph } from './ValidationHelpers';
|
|
9
|
+
export { IRule } from './Rules';
|