hurt
Version:
HTTP and SPA routing using RFC 6570 URI templates
34 lines (27 loc) • 3.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = mixin;
var _util = require('./_util');
var hasOwnProperty = Object.prototype.hasOwnProperty;
var arrayPush = Array.prototype.push;
function mixin(target, mixin) {
Object.getOwnPropertyNames(mixin).forEach(function (name) {
var descriptor = Object.getOwnPropertyDescriptor(mixin, name);
var exists = hasOwnProperty.call(target, name);
if (exists && Array.isArray(target[name])) {
arrayPush.apply(target[name], Array.isArray(descriptor.value) ? descriptor.value : [descriptor.value]);
return;
}
if (typeof descriptor.value === 'function') {
descriptor.value = (0, _util.bind)(descriptor.value, exists ? (0, _util.proxy)(target, name) : target);
}
try {
Object.defineProperty(target, name, descriptor);
} catch (e) {
//eslint-disable-no-empty
}
});
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9taXhpbi5qcyJdLCJuYW1lcyI6WyJtaXhpbiIsImhhc093blByb3BlcnR5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwiYXJyYXlQdXNoIiwiQXJyYXkiLCJwdXNoIiwidGFyZ2V0IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImZvckVhY2giLCJkZXNjcmlwdG9yIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwibmFtZSIsImV4aXN0cyIsImNhbGwiLCJpc0FycmF5IiwiYXBwbHkiLCJ2YWx1ZSIsImRlZmluZVByb3BlcnR5IiwiZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7a0JBTXdCQSxLOztBQU54Qjs7QUFFQSxJQUFNQyxpQkFBaUJDLE9BQU9DLFNBQVAsQ0FBaUJGLGNBQXhDO0FBQ0EsSUFBTUcsWUFBWUMsTUFBTUYsU0FBTixDQUFnQkcsSUFBbEM7O0FBR2UsU0FBU04sS0FBVCxDQUFlTyxNQUFmLEVBQXVCUCxLQUF2QixFQUE4QjtBQUMzQ0UsU0FBT00sbUJBQVAsQ0FBMkJSLEtBQTNCLEVBQWtDUyxPQUFsQyxDQUEwQyxnQkFBUTtBQUNoRCxRQUFNQyxhQUFhUixPQUFPUyx3QkFBUCxDQUFnQ1gsS0FBaEMsRUFBdUNZLElBQXZDLENBQW5CO0FBQ0EsUUFBTUMsU0FBU1osZUFBZWEsSUFBZixDQUFvQlAsTUFBcEIsRUFBNEJLLElBQTVCLENBQWY7O0FBRUEsUUFBSUMsVUFBVVIsTUFBTVUsT0FBTixDQUFjUixPQUFPSyxJQUFQLENBQWQsQ0FBZCxFQUEyQztBQUN6Q1IsZ0JBQVVZLEtBQVYsQ0FBZ0JULE9BQU9LLElBQVAsQ0FBaEIsRUFBOEJQLE1BQU1VLE9BQU4sQ0FBY0wsV0FBV08sS0FBekIsSUFBa0NQLFdBQVdPLEtBQTdDLEdBQXFELENBQUNQLFdBQVdPLEtBQVosQ0FBbkY7QUFDQTtBQUNEOztBQUVELFFBQUksT0FBT1AsV0FBV08sS0FBbEIsS0FBNEIsVUFBaEMsRUFBNEM7QUFDMUNQLGlCQUFXTyxLQUFYLEdBQW1CLGdCQUFLUCxXQUFXTyxLQUFoQixFQUF1QkosU0FBUyxpQkFBTU4sTUFBTixFQUFjSyxJQUFkLENBQVQsR0FBK0JMLE1BQXRELENBQW5CO0FBQ0Q7O0FBRUQsUUFBSTtBQUNGTCxhQUFPZ0IsY0FBUCxDQUFzQlgsTUFBdEIsRUFBOEJLLElBQTlCLEVBQW9DRixVQUFwQztBQUNELEtBRkQsQ0FHQSxPQUFPUyxDQUFQLEVBQVU7QUFDUjtBQUNEO0FBQ0YsR0FuQkQ7QUFvQkQiLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm94eSwgYmluZCB9IGZyb20gJy4vX3V0aWwnO1xuXG5jb25zdCBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5jb25zdCBhcnJheVB1c2ggPSBBcnJheS5wcm90b3R5cGUucHVzaDtcblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtaXhpbih0YXJnZXQsIG1peGluKSB7XG4gIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG1peGluKS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG1peGluLCBuYW1lKVxuICAgIGNvbnN0IGV4aXN0cyA9IGhhc093blByb3BlcnR5LmNhbGwodGFyZ2V0LCBuYW1lKTtcblxuICAgIGlmIChleGlzdHMgJiYgQXJyYXkuaXNBcnJheSh0YXJnZXRbbmFtZV0pKSB7XG4gICAgICBhcnJheVB1c2guYXBwbHkodGFyZ2V0W25hbWVdLCBBcnJheS5pc0FycmF5KGRlc2NyaXB0b3IudmFsdWUpID8gZGVzY3JpcHRvci52YWx1ZSA6IFtkZXNjcmlwdG9yLnZhbHVlXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkZXNjcmlwdG9yLnZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBkZXNjcmlwdG9yLnZhbHVlID0gYmluZChkZXNjcmlwdG9yLnZhbHVlLCBleGlzdHMgPyBwcm94eSh0YXJnZXQsIG5hbWUpIDogdGFyZ2V0KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcilcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgIC8vZXNsaW50LWRpc2FibGUtbm8tZW1wdHlcbiAgICB9XG4gIH0pO1xufVxuIl19