Abstract
Protected
configServices accessor. Note: Not passed into the constructor because this object should be created before ValidationServices itself. So it gets assigned when the associated service property on ValidationService is assigned the service instance.
Provides access to services.
Protected
loggerProvides an API for logging, sending entries to the loggerService.
If the user needs to abandon this instance, they should use this to clean up active resources (like timers) and to release memory that would stall the garbage collector from disposing this object. It should assign any object reference to undefined as a strong indicator that the object has been disposed.
Assigns the rule for a property on any Config and subclass. Once assigned, some rules allow change and others, like 'locked' cannot be changed and throw an error. If no rule has been assigned, merge() assumes "replace".
The rule assigned to the property or undefined if not assigned.
Protected
mergeApplies the ConfigMergeService rules to all properties found in the source config. If the destination does not have the same property, it is copied. Otherwise, we use the ConfigMergeService rule. If there is no ConfigMergeService rule for a property found on source, it is always copied. The result is changes made to destination. If the rule is 'delete', then it checks for the property in the destination config and deletes that, without regard to the property being present in the source.
Used by your PropertyConfigMergeServiceHandler function to know what specifically is being resolved.
Protected
mergeHandle one property based on the rule. Expects both source and destination to have the same property.
Exposes property names that are not expected to be changed by the rules. Ignores rules with functions. Intent is to allow ValueHostsManagerConfigModifier to know of properties to strip out instead of allowing them to make it into the merge code. Value is cached upon first request. Cache is cleared if rules are changed.
Protected
hasProtected
updateChanges the services on all implementations of IServicesAccessor
Generated using TypeDoc v0.25.12
The ValidationManagerConfig file may be populated in 2 phases:
The IConfigMergeService interface and its class are used by Phase 2. It allows the UI developer to effectively create the same named ValueHosts, but with different characteristics. ConfigMergeService will merge the business logic's configuration but only where it does not lose the goals established, especially in validation rules.
Suppose that Phase 1 creates this (with services passed to it from the UI):
The UI can use the ConfigMergeService by installing it with the builder.startUILayerConfig() function. From that point on, builder will make it available to the fluent syntax system and fluent will call upon it to address conflicts.
Here is the Phase 2 continuation of the above:
The resulting valueHostConfig will be (* where changes where made)
ConfigMergeService has to deal with several types of Config objects:
Its basic behavior is to copy a list of properties from phase 2 over phase 1's object. When phase2 has a property not found in phase1, its just copied. When phase1 and phase2 both have that property (not assigned to undefined), we have to resolve the conflict. The user controls some of those properties, providing rules of: replace, nochange, delete, and a callback.
There are some properties that are strictly controlled by ConfigMergeService like ValueHostName (cannot change it) and ValueHostType (changes automatically for upscaling Property to Input). Also ValidationConfig, ConditionConfig cannot be specified for replacement. But their children can.
Conditions -- the validatorConfig.conditionConfig property -- are a special case. They are resolved by defining the conditions through combineWithRule() or replaceRule() functions where used in the Builder/Modifier.