jsdom
Version:
A JavaScript implementation of many web standards
33 lines (28 loc) • 858 B
JavaScript
;
/**
* Define a set of properties on an object, by copying the property descriptors
* from the original object.
*
* - `object` {Object} the target object
* - `properties` {Object} the source from which to copy property descriptors
*/
exports.define = function define(object, properties) {
for (const name of Object.getOwnPropertyNames(properties)) {
const propDesc = Object.getOwnPropertyDescriptor(properties, name);
Object.defineProperty(object, name, propDesc);
}
};
exports.mixin = (target, source) => {
const keys = Reflect.ownKeys(source);
for (let i = 0; i < keys.length; ++i) {
if (keys[i] in target) {
continue;
}
Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
}
};
try {
exports.Canvas = require("canvas");
} catch {
exports.Canvas = null;
}