UNPKG

redink

Version:
64 lines (49 loc) 5.57 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* eslint-disable no-param-reassign */ var _hasOwnProperty = require('./hasOwnProperty'); var _hasOwnProperty2 = _interopRequireDefault(_hasOwnProperty); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = function (record, schema) { var normalizedRecord = _extends({}, record, { _meta: { _archived: false } }); var normalize = function normalize(id) { return { id: id, _archived: false, _related: true }; }; var normalizeMany = function normalizeMany(ids) { return ids.map(function (id) { return normalize(id); }); }; Object.keys(schema.relationships).forEach(function (relationship) { var relationshipObject = schema.relationships[relationship]; var field = relationshipObject.field; var relation = relationshipObject.relation; var inverse = relationshipObject.inverse; var data = record[field]; if ((0, _hasOwnProperty2.default)(record, field)) { switch (relation) { case 'hasMany': if (inverse.relation === 'hasMany') normalizedRecord[field] = normalizeMany(data);else delete normalizedRecord[field]; break; case 'hasOne': case 'belongsTo': if (!data) normalizedRecord[field] = data;else normalizedRecord[field] = normalize(data); break; default: throw new Error('Tried to normalize record with an invalid relationship of type \'' + relation + '\''); } } }); return normalizedRecord; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9ub3JtYWxpemVSZWNvcmQuanMiXSwibmFtZXMiOlsicmVjb3JkIiwic2NoZW1hIiwibm9ybWFsaXplZFJlY29yZCIsIl9tZXRhIiwiX2FyY2hpdmVkIiwibm9ybWFsaXplIiwiaWQiLCJfcmVsYXRlZCIsIm5vcm1hbGl6ZU1hbnkiLCJpZHMiLCJtYXAiLCJPYmplY3QiLCJrZXlzIiwicmVsYXRpb25zaGlwcyIsImZvckVhY2giLCJyZWxhdGlvbnNoaXBPYmplY3QiLCJyZWxhdGlvbnNoaXAiLCJmaWVsZCIsInJlbGF0aW9uIiwiaW52ZXJzZSIsImRhdGEiLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7O2tRQUFBOzs7QUFDQTs7Ozs7O2tCQUVlLFVBQUNBLE1BQUQsRUFBU0MsTUFBVCxFQUFvQjtBQUNqQyxNQUFNQyxnQ0FDREYsTUFEQztBQUVKRyxXQUFPO0FBQ0xDLGlCQUFXO0FBRE47QUFGSCxJQUFOOztBQU9BLE1BQU1DLFlBQVksU0FBWkEsU0FBWSxDQUFDQyxFQUFEO0FBQUEsV0FBUztBQUN6QkEsWUFEeUI7QUFFekJGLGlCQUFXLEtBRmM7QUFHekJHLGdCQUFVO0FBSGUsS0FBVDtBQUFBLEdBQWxCOztBQU1BLE1BQU1DLGdCQUFnQixTQUFoQkEsYUFBZ0IsQ0FBQ0MsR0FBRDtBQUFBLFdBQVNBLElBQUlDLEdBQUosQ0FBUTtBQUFBLGFBQU1MLFVBQVVDLEVBQVYsQ0FBTjtBQUFBLEtBQVIsQ0FBVDtBQUFBLEdBQXRCOztBQUVBSyxTQUFPQyxJQUFQLENBQVlYLE9BQU9ZLGFBQW5CLEVBQWtDQyxPQUFsQyxDQUEwQyx3QkFBZ0I7QUFDeEQsUUFBTUMscUJBQXFCZCxPQUFPWSxhQUFQLENBQXFCRyxZQUFyQixDQUEzQjtBQUR3RCxRQUVoREMsS0FGZ0QsR0FFbkJGLGtCQUZtQixDQUVoREUsS0FGZ0Q7QUFBQSxRQUV6Q0MsUUFGeUMsR0FFbkJILGtCQUZtQixDQUV6Q0csUUFGeUM7QUFBQSxRQUUvQkMsT0FGK0IsR0FFbkJKLGtCQUZtQixDQUUvQkksT0FGK0I7O0FBR3hELFFBQU1DLE9BQU9wQixPQUFPaUIsS0FBUCxDQUFiOztBQUVBLFFBQUksOEJBQWVqQixNQUFmLEVBQXVCaUIsS0FBdkIsQ0FBSixFQUFtQztBQUNqQyxjQUFRQyxRQUFSO0FBQ0UsYUFBSyxTQUFMO0FBQ0UsY0FBSUMsUUFBUUQsUUFBUixLQUFxQixTQUF6QixFQUFvQ2hCLGlCQUFpQmUsS0FBakIsSUFBMEJULGNBQWNZLElBQWQsQ0FBMUIsQ0FBcEMsS0FDSyxPQUFPbEIsaUJBQWlCZSxLQUFqQixDQUFQO0FBQ0w7O0FBRUYsYUFBSyxRQUFMO0FBQ0EsYUFBSyxXQUFMO0FBQ0UsY0FBSSxDQUFDRyxJQUFMLEVBQVdsQixpQkFBaUJlLEtBQWpCLElBQTBCRyxJQUExQixDQUFYLEtBQ0tsQixpQkFBaUJlLEtBQWpCLElBQTBCWixVQUFVZSxJQUFWLENBQTFCO0FBQ0w7O0FBRUY7QUFDRSxnQkFBTSxJQUFJQyxLQUFKLHVFQUMrREgsUUFEL0QsUUFBTjtBQWJKO0FBaUJEO0FBQ0YsR0F4QkQ7O0FBMEJBLFNBQU9oQixnQkFBUDtBQUNELEMiLCJmaWxlIjoibm9ybWFsaXplUmVjb3JkLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCBoYXNPd25Qcm9wZXJ0eSBmcm9tICcuL2hhc093blByb3BlcnR5JztcblxuZXhwb3J0IGRlZmF1bHQgKHJlY29yZCwgc2NoZW1hKSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRSZWNvcmQgPSB7XG4gICAgLi4ucmVjb3JkLFxuICAgIF9tZXRhOiB7XG4gICAgICBfYXJjaGl2ZWQ6IGZhbHNlLFxuICAgIH0sXG4gIH07XG5cbiAgY29uc3Qgbm9ybWFsaXplID0gKGlkKSA9PiAoe1xuICAgIGlkLFxuICAgIF9hcmNoaXZlZDogZmFsc2UsXG4gICAgX3JlbGF0ZWQ6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0IG5vcm1hbGl6ZU1hbnkgPSAoaWRzKSA9PiBpZHMubWFwKGlkID0+IG5vcm1hbGl6ZShpZCkpO1xuXG4gIE9iamVjdC5rZXlzKHNjaGVtYS5yZWxhdGlvbnNoaXBzKS5mb3JFYWNoKHJlbGF0aW9uc2hpcCA9PiB7XG4gICAgY29uc3QgcmVsYXRpb25zaGlwT2JqZWN0ID0gc2NoZW1hLnJlbGF0aW9uc2hpcHNbcmVsYXRpb25zaGlwXTtcbiAgICBjb25zdCB7IGZpZWxkLCByZWxhdGlvbiwgaW52ZXJzZSB9ID0gcmVsYXRpb25zaGlwT2JqZWN0O1xuICAgIGNvbnN0IGRhdGEgPSByZWNvcmRbZmllbGRdO1xuXG4gICAgaWYgKGhhc093blByb3BlcnR5KHJlY29yZCwgZmllbGQpKSB7XG4gICAgICBzd2l0Y2ggKHJlbGF0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2hhc01hbnknOlxuICAgICAgICAgIGlmIChpbnZlcnNlLnJlbGF0aW9uID09PSAnaGFzTWFueScpIG5vcm1hbGl6ZWRSZWNvcmRbZmllbGRdID0gbm9ybWFsaXplTWFueShkYXRhKTtcbiAgICAgICAgICBlbHNlIGRlbGV0ZSBub3JtYWxpemVkUmVjb3JkW2ZpZWxkXTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdoYXNPbmUnOlxuICAgICAgICBjYXNlICdiZWxvbmdzVG8nOlxuICAgICAgICAgIGlmICghZGF0YSkgbm9ybWFsaXplZFJlY29yZFtmaWVsZF0gPSBkYXRhO1xuICAgICAgICAgIGVsc2Ugbm9ybWFsaXplZFJlY29yZFtmaWVsZF0gPSBub3JtYWxpemUoZGF0YSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgVHJpZWQgdG8gbm9ybWFsaXplIHJlY29yZCB3aXRoIGFuIGludmFsaWQgcmVsYXRpb25zaGlwIG9mIHR5cGUgJyR7cmVsYXRpb259J2BcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRSZWNvcmQ7XG59O1xuIl19