UNPKG

hurt

Version:

HTTP and SPA routing using RFC 6570 URI templates

37 lines (33 loc) 3.59 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.proxy = proxy; exports.bind = bind; function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /** * Returns an object prototypicaly proxying the given target, but * statically binding the name property to its current value. If the * current value is a function it is, in turn, bound to the un-proxied * target object. */ function proxy(target, name) { var descriptor = Object.getOwnPropertyDescriptor(target, name); if (typeof descriptor.value === 'function') { descriptor.value = bind(descriptor.value, target); } return Object.create(target, _defineProperty({}, name, descriptor)); } /** * Bind the given function's `this` to the given object. If, however, the * function returns `this`, it will be replaced with the `this` the bound * function was called with. */ function bind(fn, thisArg) { function bound() { var returnValue = fn.apply(thisArg, arguments); return returnValue === thisArg ? this : returnValue; } return bound; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9fdXRpbC5qcyJdLCJuYW1lcyI6WyJwcm94eSIsImJpbmQiLCJ0YXJnZXQiLCJuYW1lIiwiZGVzY3JpcHRvciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInZhbHVlIiwiY3JlYXRlIiwiZm4iLCJ0aGlzQXJnIiwiYm91bmQiLCJyZXR1cm5WYWx1ZSIsImFwcGx5IiwiYXJndW1lbnRzIl0sIm1hcHBpbmdzIjoiOzs7OztRQU9nQkEsSyxHQUFBQSxLO1FBZUFDLEksR0FBQUEsSTs7OztBQXJCaEI7Ozs7OztBQU1PLFNBQVNELEtBQVQsQ0FBZUUsTUFBZixFQUF1QkMsSUFBdkIsRUFBNkI7QUFDbEMsTUFBTUMsYUFBYUMsT0FBT0Msd0JBQVAsQ0FBZ0NKLE1BQWhDLEVBQXdDQyxJQUF4QyxDQUFuQjtBQUNBLE1BQUksT0FBT0MsV0FBV0csS0FBbEIsS0FBNEIsVUFBaEMsRUFBNEM7QUFDMUNILGVBQVdHLEtBQVgsR0FBbUJOLEtBQUtHLFdBQVdHLEtBQWhCLEVBQXVCTCxNQUF2QixDQUFuQjtBQUNEO0FBQ0QsU0FBT0csT0FBT0csTUFBUCxDQUFjTixNQUFkLHNCQUNKQyxJQURJLEVBQ0dDLFVBREgsRUFBUDtBQUdEOztBQUVEOzs7OztBQUtPLFNBQVNILElBQVQsQ0FBY1EsRUFBZCxFQUFrQkMsT0FBbEIsRUFBMkI7QUFDaEMsV0FBU0MsS0FBVCxHQUFpQjtBQUNmLFFBQU1DLGNBQWNILEdBQUdJLEtBQUgsQ0FBU0gsT0FBVCxFQUFrQkksU0FBbEIsQ0FBcEI7QUFDQSxXQUFRRixnQkFBZ0JGLE9BQWpCLEdBQTRCLElBQTVCLEdBQW1DRSxXQUExQztBQUNEO0FBQ0QsU0FBT0QsS0FBUDtBQUNEIiwiZmlsZSI6Il91dGlsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vKipcbiAqIFJldHVybnMgYW4gb2JqZWN0IHByb3RvdHlwaWNhbHkgcHJveHlpbmcgdGhlIGdpdmVuIHRhcmdldCwgYnV0XG4gKiBzdGF0aWNhbGx5IGJpbmRpbmcgdGhlIG5hbWUgcHJvcGVydHkgdG8gaXRzIGN1cnJlbnQgdmFsdWUuIElmIHRoZVxuICogY3VycmVudCB2YWx1ZSBpcyBhIGZ1bmN0aW9uIGl0IGlzLCBpbiB0dXJuLCBib3VuZCB0byB0aGUgdW4tcHJveGllZFxuICogdGFyZ2V0IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3h5KHRhcmdldCwgbmFtZSkge1xuICBjb25zdCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIG5hbWUpO1xuICBpZiAodHlwZW9mIGRlc2NyaXB0b3IudmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gYmluZChkZXNjcmlwdG9yLnZhbHVlLCB0YXJnZXQpO1xuICB9XG4gIHJldHVybiBPYmplY3QuY3JlYXRlKHRhcmdldCwge1xuICAgIFtuYW1lXTogZGVzY3JpcHRvclxuICB9KTtcbn1cblxuLyoqXG4gKiBCaW5kIHRoZSBnaXZlbiBmdW5jdGlvbidzIGB0aGlzYCB0byB0aGUgZ2l2ZW4gb2JqZWN0LiBJZiwgaG93ZXZlciwgdGhlXG4gKiBmdW5jdGlvbiByZXR1cm5zIGB0aGlzYCwgaXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBgdGhpc2AgdGhlIGJvdW5kXG4gKiBmdW5jdGlvbiB3YXMgY2FsbGVkIHdpdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kKGZuLCB0aGlzQXJnKSB7XG4gIGZ1bmN0aW9uIGJvdW5kKCkge1xuICAgIGNvbnN0IHJldHVyblZhbHVlID0gZm4uYXBwbHkodGhpc0FyZywgYXJndW1lbnRzKTtcbiAgICByZXR1cm4gKHJldHVyblZhbHVlID09PSB0aGlzQXJnKSA/IHRoaXMgOiByZXR1cm5WYWx1ZTtcbiAgfVxuICByZXR1cm4gYm91bmQ7XG59XG5cbiJdfQ==