@angular-package/property
Version:
Features to handle object properties.
27 lines • 6.38 kB
JavaScript
import { WrapProperty } from './wrap-property.class';
export class Property extends WrapProperty {
static define(object, name, data, accessor) {
typeof data === 'object'
? Object.defineProperty(object, name, data)
: typeof accessor === 'object' &&
Object.defineProperty(object, name, accessor);
return object;
}
static set(object, name, value) {
object[name] = value;
return this;
}
static get(object, name) {
return object[name];
}
static pick(object, ...names) {
return Object.assign({}, ...names.map(key => typeof object[key] !== 'undefined' ? { [key]: object[key] } : undefined));
}
static wrap(object, names, getterCallback, setterCallback) {
return new WrapProperty(object, ...names).wrap(names, getterCallback, setterCallback);
}
constructor(object, ...names) {
super(object, ...names);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcm9wZXJ0eS9zcmMvbGliL3Byb3BlcnR5LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWFyRCxNQUFNLE9BQU8sUUFHWCxTQUFRLFlBQXdCO0lBU3pCLE1BQU0sQ0FBQyxNQUFNLENBQ2xCLE1BQVcsRUFDWCxJQUFVLEVBQ1YsSUFBNEIsRUFDNUIsUUFBb0Q7UUFFcEQsT0FBTyxJQUFJLEtBQUssUUFBUTtZQUN0QixDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztZQUMzQyxDQUFDLENBQUMsT0FBTyxRQUFRLEtBQUssUUFBUTtnQkFDNUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sTUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFTTSxNQUFNLENBQUMsR0FBRyxDQUNmLE1BQVcsRUFDWCxJQUFVLEVBQ1YsS0FBZ0I7UUFFaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFTTSxNQUFNLENBQUMsR0FBRyxDQUNmLE1BQVcsRUFDWCxJQUFVO1FBRVYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQVNNLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLE1BQVcsRUFDWCxHQUFHLEtBQWM7UUFFakIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUNsQixFQUFFLEVBQ0YsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQ2pCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQ3hFLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFXTSxNQUFNLENBQUMsSUFBSSxDQUNoQixNQUFXLEVBQ1gsS0FBYyxFQUNkLGNBQTJDLEVBQzNDLGNBQTJDO1FBRTNDLE9BQU8sSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUM1QyxLQUFLLEVBQ0wsY0FBYyxFQUNkLGNBQWMsQ0FDZixDQUFDO0lBQ0osQ0FBQztJQVFELFlBQVksTUFBVyxFQUFFLEdBQUcsS0FBYztRQUN4QyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ2xhc3MuXG5pbXBvcnQgeyBXcmFwUHJvcGVydHkgfSBmcm9tICcuL3dyYXAtcHJvcGVydHkuY2xhc3MnO1xuXG4vLyBUeXBlLlxuaW1wb3J0IHsgR2V0dGVyQ2FsbGJhY2sgfSBmcm9tICcuLi90eXBlL2dldHRlci1jYWxsYmFjay50eXBlJztcbmltcG9ydCB7IFNldHRlckNhbGxiYWNrIH0gZnJvbSAnLi4vdHlwZS9zZXR0ZXItY2FsbGJhY2sudHlwZSc7XG5cbi8vIEludGVyZmFjZS5cbmltcG9ydCB7IEFjY2Vzc29yRGVzY3JpcHRvciB9IGZyb20gJy4uL2Rlc2NyaXB0b3IvaW50ZXJmYWNlL2FjY2Vzc29yLWRlc2NyaXB0b3IuaW50ZXJmYWNlJztcbmltcG9ydCB7IERhdGFEZXNjcmlwdG9yIH0gZnJvbSAnLi4vZGVzY3JpcHRvci9pbnRlcmZhY2UvZGF0YS1kZXNjcmlwdG9yLmludGVyZmFjZSc7XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIFByb3BlcnR5PFxuICBPYmogZXh0ZW5kcyBvYmplY3QsXG4gIE5hbWVzIGV4dGVuZHMga2V5b2YgT2JqXG4+IGV4dGVuZHMgV3JhcFByb3BlcnR5PE9iaiwgTmFtZXM+IHtcbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBvYmplY3RcbiAgICogQHBhcmFtIG5hbWVcbiAgICogQHBhcmFtIGFjY2Vzc29yXG4gICAqIEByZXR1cm5zXG4gICAqIEBhbmd1bGFycGFja2FnZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZpbmU8T2JqIGV4dGVuZHMgb2JqZWN0LCBOYW1lIGV4dGVuZHMgUHJvcGVydHlLZXksIFZhbHVlPihcbiAgICBvYmplY3Q6IE9iaixcbiAgICBuYW1lOiBOYW1lLFxuICAgIGRhdGE/OiBEYXRhRGVzY3JpcHRvcjxWYWx1ZT4sXG4gICAgYWNjZXNzb3I/OiBBY2Nlc3NvckRlc2NyaXB0b3I8VmFsdWU+ICYgVGhpc1R5cGU8T2JqPlxuICApOiBPYmogJiB7IFtLIGluIE5hbWVdOiBWYWx1ZSB9IHtcbiAgICB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCdcbiAgICAgID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgbmFtZSwgZGF0YSlcbiAgICAgIDogdHlwZW9mIGFjY2Vzc29yID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBuYW1lLCBhY2Nlc3Nvcik7XG4gICAgcmV0dXJuIG9iamVjdCBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIG9ialxuICAgKiBAcGFyYW0gbmFtZVxuICAgKiBAcmV0dXJuc1xuICAgKiBAYW5ndWxhcnBhY2thZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2V0PE9iaiBleHRlbmRzIG9iamVjdCwgTmFtZSBleHRlbmRzIGtleW9mIE9iaj4oXG4gICAgb2JqZWN0OiBPYmosXG4gICAgbmFtZTogTmFtZSxcbiAgICB2YWx1ZTogT2JqW05hbWVdXG4gICk6IHR5cGVvZiBQcm9wZXJ0eSB7XG4gICAgb2JqZWN0W25hbWVdID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIG9iamVjdFxuICAgKiBAcGFyYW0gbmFtZVxuICAgKiBAcmV0dXJuc1xuICAgKiBAYW5ndWxhcnBhY2thZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0PE9iaiBleHRlbmRzIG9iamVjdCwgTmFtZSBleHRlbmRzIGtleW9mIE9iaj4oXG4gICAgb2JqZWN0OiBPYmosXG4gICAgbmFtZTogTmFtZVxuICApOiBPYmpbTmFtZV0ge1xuICAgIHJldHVybiBvYmplY3RbbmFtZV07XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIG9iamVjdFxuICAgKiBAcGFyYW0gbmFtZXNcbiAgICogQHJldHVybnNcbiAgICogQGFuZ3VsYXJwYWNrYWdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHBpY2s8T2JqIGV4dGVuZHMgb2JqZWN0LCBOYW1lcyBleHRlbmRzIGtleW9mIE9iaj4oXG4gICAgb2JqZWN0OiBPYmosXG4gICAgLi4ubmFtZXM6IE5hbWVzW11cbiAgKTogeyBbS2V5IGluIE5hbWVzXTogT2JqW0tleV0gfSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIC4uLm5hbWVzLm1hcChrZXkgPT5cbiAgICAgICAgdHlwZW9mIG9iamVjdFtrZXldICE9PSAndW5kZWZpbmVkJyA/IHsgW2tleV06IG9iamVjdFtrZXldIH0gOiB1bmRlZmluZWRcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBvYmplY3RcbiAgICogQHBhcmFtIG5hbWVzXG4gICAqIEBwYXJhbSBnZXR0ZXJDYWxsYmFja1xuICAgKiBAcGFyYW0gc2V0dGVyQ2FsbGJhY2tcbiAgICogQHJldHVybnNcbiAgICogQGFuZ3VsYXJwYWNrYWdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdyYXA8T2JqIGV4dGVuZHMgb2JqZWN0IHwgRnVuY3Rpb24sIE5hbWVzIGV4dGVuZHMga2V5b2YgT2JqPihcbiAgICBvYmplY3Q6IE9iaixcbiAgICBuYW1lczogTmFtZXNbXSxcbiAgICBnZXR0ZXJDYWxsYmFjaz86IEdldHRlckNhbGxiYWNrPE9iaiwgTmFtZXM+LFxuICAgIHNldHRlckNhbGxiYWNrPzogU2V0dGVyQ2FsbGJhY2s8T2JqLCBOYW1lcz5cbiAgKTogV3JhcFByb3BlcnR5PE9iaiwgTmFtZXM+IHtcbiAgICByZXR1cm4gbmV3IFdyYXBQcm9wZXJ0eShvYmplY3QsIC4uLm5hbWVzKS53cmFwKFxuICAgICAgbmFtZXMsXG4gICAgICBnZXR0ZXJDYWxsYmFjayxcbiAgICAgIHNldHRlckNhbGxiYWNrXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gb2JqZWN0XG4gICAqIEBwYXJhbSBuYW1lc1xuICAgKiBAYW5ndWxhcnBhY2thZ2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9iamVjdDogT2JqLCAuLi5uYW1lczogTmFtZXNbXSkge1xuICAgIHN1cGVyKG9iamVjdCwgLi4ubmFtZXMpO1xuICB9XG59XG4iXX0=