vulcain-corejs
Version:
Vulcain micro-service framework
35 lines (33 loc) • 1.45 kB
JavaScript
// Copyright (c) Zenasoft. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
const dynamicProperty_1 = require("./dynamicProperty");
const chainedDynamicProperty_1 = require("./chainedDynamicProperty");
class PropertiesFactory {
constructor(_properties) {
this._properties = _properties;
}
add(name, prop) {
this._properties.addProperty(name, prop);
}
asProperty(value, name, dontCheck = false) {
if (!dontCheck && name && this._properties.getProperty(name)) {
throw new Error("Duplicate property name");
}
let p = new dynamicProperty_1.DynamicProperty(this._properties, name, value);
if (name)
this.add(name, p);
p.set(value); // To send propertychanged
return p;
}
asChainedProperty(defaultValue, name, fallbackPropertyNames) {
fallbackPropertyNames = fallbackPropertyNames.filter(n => !!n);
if (fallbackPropertyNames.length === 0 || !name)
throw new Error("You must provide at least one fallback property name");
let properties = [name].concat(fallbackPropertyNames);
let p = new chainedDynamicProperty_1.ChainedDynamicProperty(this._properties, properties, defaultValue);
return p;
}
}
exports.PropertiesFactory = PropertiesFactory;
//# sourceMappingURL=propertiesFactory.js.map
;