UNPKG

super-siren

Version:

Siren client based built on top of superagent

106 lines (74 loc) 3.21 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _immutable = require('immutable'); var _immutable2 = _interopRequireDefault(_immutable); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _SirenHelpers = require('./SirenHelpers'); var _SirenHelpers2 = _interopRequireDefault(_SirenHelpers); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Represents an sub-entity of an entity which is represented * as a URL to the actual entity instance. */ var LinkedSubEntity = function (_Immutable$Record) { (0, _inherits3.default)(LinkedSubEntity, _Immutable$Record); function LinkedSubEntity() { (0, _classCallCheck3.default)(this, LinkedSubEntity); return (0, _possibleConstructorReturn3.default)(this, (0, _getPrototypeOf2.default)(LinkedSubEntity).apply(this, arguments)); } (0, _createClass3.default)(LinkedSubEntity, null, [{ key: 'fromJson', /** * Parses the provided json instance and returns * the LinkedSubEntity representation of that json * * @param {Object} json Object representation of the linked sub-entity * @param {String} [baseUrl=null] Optional baseUrl to use if the href is a relative URL * @return {LinkedSubEntity} Parsed representation of the linked sub-entity. */ value: function fromJson(json) { var baseUrl = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1]; if (!json.rel || !_lodash2.default.isArray(json.rel) || json.rel.length === 0) { throw new Error('A rel array with at least one rel is required to create a linked sub entity'); } if (!json.href) { throw new Error('a href is required for a linked sub entity'); } return empty.withMutations(function (map) { map.set('rels', new _immutable2.default.Set(json.rel)); map.set('href', _SirenHelpers2.default.processUrl(json.href || map.href, baseUrl)); map.set('classes', new _immutable2.default.Set(json.class || [])); }); } /** * Default empty instance of a LinkedSubEntity * @return {LinkedSubEntity} Default empty state */ }, { key: 'empty', get: function get() { return empty; } }]); return LinkedSubEntity; }(_immutable2.default.Record({ rels: new _immutable2.default.Set(), classes: new _immutable2.default.Set(), href: null })); var empty = new LinkedSubEntity(); exports.default = LinkedSubEntity; //# sourceMappingURL=LinkedSubEntity.js.map