breeze-client
Version:
Breeze data management for JavaScript clients
64 lines (63 loc) • 10.1 kB
JavaScript
import { core } from './core';
import { assertConfig } from './assert-param';
/**
A ValidationOptions instance is used to specify the conditions under which validation will be executed.
*/
export class ValidationOptions {
/**
ValidationOptions constructor
> var newVo = new ValidationOptions( { validateOnSave: false, validateOnAttach: false });
> // assume em1 is a preexisting EntityManager
> em1.setProperties( { validationOptions: newVo });
@param config - A configuration object.
**/
constructor(config) {
updateWithConfig(this, config);
}
/**
Returns a copy of this ValidationOptions with changes to the specified config properties.
> var validationOptions = new ValidationOptions();
> var newOptions = validationOptions.using( { validateOnQuery: true, validateOnSave: false} );
@param config - A configuration object
@return A new ValidationOptions instance.
**/
using(config) {
if (!config)
return this;
let result = new ValidationOptions(this);
updateWithConfig(result, config);
return result;
}
/**
Sets the 'defaultInstance' by creating a copy of the current 'defaultInstance' and then applying all of the properties of the current instance.
The current instance is returned unchanged.
> var validationOptions = new ValidationOptions()
> var newOptions = validationOptions.using( { validateOnQuery: true, validateOnSave: false} );
> var newOptions.setAsDefault();
**/
setAsDefault() {
return core.setAsDefault(this, ValidationOptions);
}
/**
The default instance for use whenever ValidationOptions are not specified.
**/
static defaultInstance = new ValidationOptions({
validateOnAttach: true,
validateOnSave: true,
validateOnQuery: false,
validateOnPropertyChange: true
});
}
ValidationOptions.prototype._$typeName = "ValidationOptions";
function updateWithConfig(options, config) {
if (config) {
assertConfig(config)
.whereParam("validateOnAttach").isBoolean().isOptional()
.whereParam("validateOnSave").isBoolean().isOptional()
.whereParam("validateOnQuery").isBoolean().isOptional()
.whereParam("validateOnPropertyChange").isBoolean().isOptional()
.applyAll(options);
}
return options;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3ZhbGlkYXRpb24tb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFHLE1BQU0sUUFBUSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWtCOUM7OztFQUdFO0FBQ0YsTUFBTSxPQUFPLGlCQUFpQjtJQWtCNUI7Ozs7OztPQU1HO0lBQ0gsWUFBWSxNQUFnQztRQUMxQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUdEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxNQUErQjtRQUNuQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3pCLElBQUksTUFBTSxHQUFHLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxlQUFlLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQztRQUM3QyxnQkFBZ0IsRUFBRSxJQUFJO1FBQ3RCLGNBQWMsRUFBRSxJQUFJO1FBQ3BCLGVBQWUsRUFBRSxLQUFLO1FBQ3RCLHdCQUF3QixFQUFFLElBQUk7S0FDL0IsQ0FBQyxDQUFDOztBQUVMLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsbUJBQW1CLENBQUM7QUFFN0QsU0FBUyxnQkFBZ0IsQ0FBQyxPQUEwQixFQUFFLE1BQStCO0lBQ25GLElBQUksTUFBTSxFQUFFO1FBQ1YsWUFBWSxDQUFDLE1BQU0sQ0FBQzthQUNmLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVUsRUFBRTthQUN2RCxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLEVBQUU7YUFDckQsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsVUFBVSxFQUFFO2FBQ3RELFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVUsRUFBRTthQUMvRCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDeEI7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSAgfSBmcm9tICcuL2NvcmUnO1xyXG5pbXBvcnQgeyBhc3NlcnRDb25maWcgfSBmcm9tICcuL2Fzc2VydC1wYXJhbSc7XHJcblxyXG4vKiogQ29uZmlndXJhdGlvbiBpbmZvIHRvIGJlIHBhc3NlZCB0byB0aGUgW1tWYWxpZGF0aW9uT3B0aW9uc11dIGNvbnN0cnVjdG9yICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbk9wdGlvbnNDb25maWcge1xyXG4gIC8qKiBXaGV0aGVyIGVudGl0eSBhbmQgcHJvcGVydHkgbGV2ZWwgdmFsaWRhdGlvbiBzaG91bGQgb2NjdXIgd2hlbiBlbnRpdGllcyBhcmUgYXR0YWNoZWQgdG8gdGhlIEVudGl0eU1hbmFnZXIgXHJcbiAgb3RoZXIgdGhhbiB2aWEgYSBxdWVyeS4gKGRlZmF1bHQgPSB0cnVlKSAqL1xyXG4gIHZhbGlkYXRlT25BdHRhY2g/OiBib29sZWFuO1xyXG4gIC8qKiAgV2hldGhlciBlbnRpdHkgYW5kIHByb3BlcnR5IGxldmVsIHZhbGlkYXRpb24gc2hvdWxkIG9jY3VyIGJlZm9yZSBlbnRpdGllcyBhcmUgc2F2ZWQuIFxyXG4gIEEgZmFpbGVkIHZhbGlkYXRpb24gd2lsbCBmb3JjZSB0aGUgc2F2ZSB0byBmYWlsIGVhcmx5LiAoZGVmYXVsdCA9IHRydWUpICAqL1xyXG4gIHZhbGlkYXRlT25TYXZlPzogYm9vbGVhbjtcclxuICAvKiogV2hldGhlciBlbnRpdHkgYW5kIHByb3BlcnR5IGxldmVsIHZhbGlkYXRpb24gc2hvdWxkIG9jY3VyIGFmdGVyIGVudGl0aWVzIGFyZSBxdWVyaWVkIGZyb20gYSByZW1vdGUgc2VydmVyLlxyXG4gIChkZWZhdWx0ID0gZmFsc2UpICAqKi9cclxuICB2YWxpZGF0ZU9uUXVlcnk/OiBib29sZWFuO1xyXG4gIC8qKiBXaGV0aGVyIHByb3BlcnR5IGxldmVsIHZhbGlkYXRpb24gc2hvdWxkIG9jY3VyIGFmdGVyIGVudGl0aWVzIGFyZSBtb2RpZmllZC5cclxuICAoZGVmYXVsdCA9IHRydWUpICAqKi9cclxuICB2YWxpZGF0ZU9uUHJvcGVydHlDaGFuZ2U/OiBib29sZWFuO1xyXG59XHJcblxyXG4vKipcclxuQSBWYWxpZGF0aW9uT3B0aW9ucyBpbnN0YW5jZSBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdmFsaWRhdGlvbiB3aWxsIGJlIGV4ZWN1dGVkLlxyXG5cclxuKi9cclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25PcHRpb25zIGltcGxlbWVudHMgVmFsaWRhdGlvbk9wdGlvbnNDb25maWcge1xyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIGRlY2xhcmUgXyR0eXBlTmFtZTogc3RyaW5nOyAvLyBvbiBwcm90b1xyXG4gIC8qKiBXaGV0aGVyIGVudGl0eSBhbmQgcHJvcGVydHkgbGV2ZWwgdmFsaWRhdGlvbiBzaG91bGQgb2NjdXIgd2hlbiBlbnRpdGllcyBhcmUgYXR0YWNoZWQgdG8gdGhlIEVudGl0eU1hbmFnZXIgXHJcbiAgb3RoZXIgdGhhbiB2aWEgYSBxdWVyeS4gKGRlZmF1bHQgPSB0cnVlKSBfX1JlYWQgT25seV9fICovXHJcbiAgZGVjbGFyZSB2YWxpZGF0ZU9uQXR0YWNoOiBib29sZWFuO1xyXG4gIC8qKiBXaGV0aGVyIGVudGl0eSBhbmQgcHJvcGVydHkgbGV2ZWwgdmFsaWRhdGlvbiBzaG91bGQgb2NjdXIgYmVmb3JlIGVudGl0aWVzIGFyZSBzYXZlZC4gXHJcbiAgQSBmYWlsZWQgdmFsaWRhdGlvbiB3aWxsIGZvcmNlIHRoZSBzYXZlIHRvIGZhaWwgZWFybHkuIChkZWZhdWx0ID0gdHJ1ZSkgX19SZWFkIE9ubHlfXyAqL1xyXG4gIGRlY2xhcmUgdmFsaWRhdGVPblNhdmU6IGJvb2xlYW47XHJcbiAgLyoqIFdoZXRoZXIgZW50aXR5IGFuZCBwcm9wZXJ0eSBsZXZlbCB2YWxpZGF0aW9uIHNob3VsZCBvY2N1ciBhZnRlciBlbnRpdGllcyBhcmUgcXVlcmllZCBmcm9tIGEgcmVtb3RlIHNlcnZlci5cclxuICAoZGVmYXVsdCA9IGZhbHNlKSBfX1JlYWQgT25seV9fICAqKi9cclxuICBkZWNsYXJlIHZhbGlkYXRlT25RdWVyeTogYm9vbGVhbjtcclxuICAvKiogV2hldGhlciBwcm9wZXJ0eSBsZXZlbCB2YWxpZGF0aW9uIHNob3VsZCBvY2N1ciBhZnRlciBlbnRpdGllcyBhcmUgbW9kaWZpZWQuXHJcbiAgKGRlZmF1bHQgPSB0cnVlKSBfX1JlYWQgT25seV9fICoqL1xyXG4gIGRlY2xhcmUgdmFsaWRhdGVPblByb3BlcnR5Q2hhbmdlOiBib29sZWFuO1xyXG5cclxuXHJcblxyXG4gIC8qKiBcclxuICBWYWxpZGF0aW9uT3B0aW9ucyBjb25zdHJ1Y3RvclxyXG4gID4gICAgIHZhciBuZXdWbyA9IG5ldyBWYWxpZGF0aW9uT3B0aW9ucyggeyB2YWxpZGF0ZU9uU2F2ZTogZmFsc2UsIHZhbGlkYXRlT25BdHRhY2g6IGZhbHNlIH0pO1xyXG4gID4gICAgIC8vIGFzc3VtZSBlbTEgaXMgYSBwcmVleGlzdGluZyBFbnRpdHlNYW5hZ2VyXHJcbiAgPiAgICAgZW0xLnNldFByb3BlcnRpZXMoIHsgdmFsaWRhdGlvbk9wdGlvbnM6IG5ld1ZvIH0pO1xyXG4gIEBwYXJhbSBjb25maWcgLSBBIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxyXG4gICoqL1xyXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IFZhbGlkYXRpb25PcHRpb25zQ29uZmlnKSB7XHJcbiAgICB1cGRhdGVXaXRoQ29uZmlnKHRoaXMsIGNvbmZpZyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgUmV0dXJucyBhIGNvcHkgb2YgdGhpcyBWYWxpZGF0aW9uT3B0aW9ucyB3aXRoIGNoYW5nZXMgdG8gdGhlIHNwZWNpZmllZCBjb25maWcgcHJvcGVydGllcy5cclxuICA+ICAgICB2YXIgdmFsaWRhdGlvbk9wdGlvbnMgPSBuZXcgVmFsaWRhdGlvbk9wdGlvbnMoKTtcclxuICA+ICAgICB2YXIgbmV3T3B0aW9ucyA9IHZhbGlkYXRpb25PcHRpb25zLnVzaW5nKCB7IHZhbGlkYXRlT25RdWVyeTogdHJ1ZSwgdmFsaWRhdGVPblNhdmU6IGZhbHNlfSApO1xyXG4gIEBwYXJhbSBjb25maWcgLSBBIGNvbmZpZ3VyYXRpb24gb2JqZWN0XHJcbiAgQHJldHVybiBBIG5ldyBWYWxpZGF0aW9uT3B0aW9ucyBpbnN0YW5jZS5cclxuICAqKi9cclxuICB1c2luZyhjb25maWc6IFZhbGlkYXRpb25PcHRpb25zQ29uZmlnKSB7XHJcbiAgICBpZiAoIWNvbmZpZykgcmV0dXJuIHRoaXM7XHJcbiAgICBsZXQgcmVzdWx0ID0gbmV3IFZhbGlkYXRpb25PcHRpb25zKHRoaXMpO1xyXG4gICAgdXBkYXRlV2l0aENvbmZpZyhyZXN1bHQsIGNvbmZpZyk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgU2V0cyB0aGUgJ2RlZmF1bHRJbnN0YW5jZScgYnkgY3JlYXRpbmcgYSBjb3B5IG9mIHRoZSBjdXJyZW50ICdkZWZhdWx0SW5zdGFuY2UnIGFuZCB0aGVuIGFwcGx5aW5nIGFsbCBvZiB0aGUgcHJvcGVydGllcyBvZiB0aGUgY3VycmVudCBpbnN0YW5jZS5cclxuICBUaGUgY3VycmVudCBpbnN0YW5jZSBpcyByZXR1cm5lZCB1bmNoYW5nZWQuXHJcbiAgPiAgICAgdmFyIHZhbGlkYXRpb25PcHRpb25zID0gbmV3IFZhbGlkYXRpb25PcHRpb25zKClcclxuICA+ICAgICB2YXIgbmV3T3B0aW9ucyA9IHZhbGlkYXRpb25PcHRpb25zLnVzaW5nKCB7IHZhbGlkYXRlT25RdWVyeTogdHJ1ZSwgdmFsaWRhdGVPblNhdmU6IGZhbHNlfSApO1xyXG4gID4gICAgIHZhciBuZXdPcHRpb25zLnNldEFzRGVmYXVsdCgpO1xyXG4gICoqL1xyXG4gIHNldEFzRGVmYXVsdCgpIHtcclxuICAgIHJldHVybiBjb3JlLnNldEFzRGVmYXVsdCh0aGlzLCBWYWxpZGF0aW9uT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBUaGUgZGVmYXVsdCBpbnN0YW5jZSBmb3IgdXNlIHdoZW5ldmVyIFZhbGlkYXRpb25PcHRpb25zIGFyZSBub3Qgc3BlY2lmaWVkLlxyXG4gICoqL1xyXG4gIHN0YXRpYyBkZWZhdWx0SW5zdGFuY2UgPSBuZXcgVmFsaWRhdGlvbk9wdGlvbnMoe1xyXG4gICAgdmFsaWRhdGVPbkF0dGFjaDogdHJ1ZSxcclxuICAgIHZhbGlkYXRlT25TYXZlOiB0cnVlLFxyXG4gICAgdmFsaWRhdGVPblF1ZXJ5OiBmYWxzZSxcclxuICAgIHZhbGlkYXRlT25Qcm9wZXJ0eUNoYW5nZTogdHJ1ZVxyXG4gIH0pO1xyXG59XHJcblZhbGlkYXRpb25PcHRpb25zLnByb3RvdHlwZS5fJHR5cGVOYW1lID0gXCJWYWxpZGF0aW9uT3B0aW9uc1wiO1xyXG5cclxuZnVuY3Rpb24gdXBkYXRlV2l0aENvbmZpZyhvcHRpb25zOiBWYWxpZGF0aW9uT3B0aW9ucywgY29uZmlnOiBWYWxpZGF0aW9uT3B0aW9uc0NvbmZpZykge1xyXG4gIGlmIChjb25maWcpIHtcclxuICAgIGFzc2VydENvbmZpZyhjb25maWcpXHJcbiAgICAgICAgLndoZXJlUGFyYW0oXCJ2YWxpZGF0ZU9uQXR0YWNoXCIpLmlzQm9vbGVhbigpLmlzT3B0aW9uYWwoKVxyXG4gICAgICAgIC53aGVyZVBhcmFtKFwidmFsaWRhdGVPblNhdmVcIikuaXNCb29sZWFuKCkuaXNPcHRpb25hbCgpXHJcbiAgICAgICAgLndoZXJlUGFyYW0oXCJ2YWxpZGF0ZU9uUXVlcnlcIikuaXNCb29sZWFuKCkuaXNPcHRpb25hbCgpXHJcbiAgICAgICAgLndoZXJlUGFyYW0oXCJ2YWxpZGF0ZU9uUHJvcGVydHlDaGFuZ2VcIikuaXNCb29sZWFuKCkuaXNPcHRpb25hbCgpXHJcbiAgICAgICAgLmFwcGx5QWxsKG9wdGlvbnMpO1xyXG4gIH1cclxuICByZXR1cm4gb3B0aW9ucztcclxufVxyXG4iXX0=