Innovenergy_trunk/frontend/node_modules/testcafe/lib/utils/assignable.js

76 lines
11 KiB
JavaScript
Raw Normal View History

"use strict";
// -------------------------------------------------------------
// WARNING: this file is used by both the client and the server.
// Do not use any browser or node-specific API!
// -------------------------------------------------------------
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const errors_1 = require("../shared/errors");
const string_ends_with_1 = __importDefault(require("./string-ends-with"));
const arrayIndexOf = Array.prototype.indexOf;
const arrayMap = Array.prototype.map;
const arraySort = Array.prototype.sort;
const arrayFilter = Array.prototype.filter;
const arrayConcat = Array.prototype.concat;
const COMMAND_NAME_SUFFIX = 'Command';
function validateObjectProps(obj, dest) {
const objectName = dest.constructor.name;
const validKeys = arrayMap.call(dest.getAllAssignableProperties(), p => p.name);
const reportedProperties = arraySort.call(dest.getReportedProperties());
for (const key in obj) {
if (!(arrayIndexOf.call(validKeys, key) > -1 || key in dest))
throw new errors_1.ActionInvalidObjectPropertyError(objectName, key, reportedProperties);
}
}
function getDisplayTypeName(constructorName, propName) {
if (string_ends_with_1.default.call(constructorName, COMMAND_NAME_SUFFIX))
return propName;
return `${constructorName}.${propName}`;
}
class Assignable {
getAssignableProperties() {
return [];
}
getAllAssignableProperties() {
let parent = Object.getPrototypeOf(this);
let result = [];
while (parent && parent.getAssignableProperties) {
result = arrayConcat.call(result, parent.getAssignableProperties());
parent = Object.getPrototypeOf(parent);
}
return result;
}
getNonReportedProperties() {
return [];
}
getReportedProperties() {
const props = arrayMap.call(this.getAllAssignableProperties(), prop => prop.name);
const nonReportedProps = this.getNonReportedProperties();
return arrayFilter.call(props, name => !(arrayIndexOf.call(nonReportedProps, name) > -1));
}
_assignFrom(obj, validate, initOptions = {}) {
if (!obj)
return;
if (validate)
validateObjectProps(obj, this);
const props = this.getAllAssignableProperties();
for (let i = 0; i < props.length; i++) {
const { name, type, required, init, defaultValue } = props[i];
if (defaultValue !== void 0)
this[name] = defaultValue;
const srcVal = obj[name];
if (srcVal === void 0 && !required)
continue;
if (validate && type) {
const typeName = getDisplayTypeName(this.constructor.name, name);
type(typeName, srcVal);
}
this[name] = init ? init(name, srcVal, initOptions, validate) : srcVal;
}
}
}
exports.default = Assignable;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWduYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hc3NpZ25hYmxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxnRUFBZ0U7QUFDaEUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxnRUFBZ0U7Ozs7O0FBRWhFLDZDQUFvRTtBQUNwRSwwRUFBZ0Q7QUFFaEQsTUFBTSxZQUFZLEdBQUssS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7QUFDL0MsTUFBTSxRQUFRLEdBQVMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFDM0MsTUFBTSxTQUFTLEdBQVEsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDNUMsTUFBTSxXQUFXLEdBQU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7QUFDOUMsTUFBTSxXQUFXLEdBQU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7QUFFOUMsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUM7QUFHdEMsU0FBUyxtQkFBbUIsQ0FBRSxHQUFHLEVBQUUsSUFBSTtJQUNuQyxNQUFNLFVBQVUsR0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUNqRCxNQUFNLFNBQVMsR0FBWSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pGLE1BQU0sa0JBQWtCLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0lBRXhFLEtBQUssTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFO1FBQ25CLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUM7WUFDeEQsTUFBTSxJQUFJLHlDQUFnQyxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztLQUN2RjtBQUNMLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFFLGVBQWUsRUFBRSxRQUFRO0lBQ2xELElBQUksMEJBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLG1CQUFtQixDQUFDO1FBQ3pELE9BQU8sUUFBUSxDQUFDO0lBRXBCLE9BQU8sR0FBSSxlQUFnQixJQUFLLFFBQVMsRUFBRSxDQUFDO0FBQ2hELENBQUM7QUFFRCxNQUFxQixVQUFVO0lBQzNCLHVCQUF1QjtRQUNuQixPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCwwQkFBMEI7UUFDdEIsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFaEIsT0FBTyxNQUFNLElBQUksTUFBTSxDQUFDLHVCQUF1QixFQUFFO1lBQzdDLE1BQU0sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELHdCQUF3QjtRQUNwQixPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxxQkFBcUI7UUFDakIsTUFBTSxLQUFLLEdBQWMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBRXpELE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELFdBQVcsQ0FBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsR0FBRyxFQUFFO1FBQ3hDLElBQUksQ0FBQyxHQUFHO1lBQ0osT0FBTztRQUVYLElBQUksUUFBUTtZQUNSLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVuQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUVoRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU5RCxJQUFJLFlBQVksS0FBSyxLQUFLLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUM7WUFFOUIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpCLElBQUksTUFBTSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDOUIsU0FBUztZQUViLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtnQkFDbEIsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBRWpFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDMUI7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUMxRTtJQUNMLENBQUM7Q0FDSjtBQXpERCw2QkF5REMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBXQVJOSU5HOiB0aGlzIGZpbGUgaXMgdXNlZCBieSBib3RoIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIuXG4vLyBEbyBub3QgdXNlIGFueSBicm93c2VyIG9yIG5vZGUtc3BlY2lmaWMgQVBJIVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5pbXBvcnQgeyBBY3Rpb25JbnZhb