UNPKG

@parch-js/json-serializer

Version:

JSONSerializer for parch to normalize request/response

128 lines (115 loc) 3.76 kB
"use strict"; /** * @class JSONSerializer * @constructor */ Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var JSONSerializer = function () { function JSONSerializer() { _classCallCheck(this, JSONSerializer); } _createClass(JSONSerializer, [{ key: "normalizeArrayResponse", /** * Returns an array of Sequelize instances * * @method normalizeArrayResponse * @param {Array} instances Sequelize instances * @return {Promise}<Object, Error> * * @example * ```javascript * return orm.findAll("user").then(users => { * return serializer.normalizeArrayResponse(instances); * }).then(response => { * /** * * [{ * * firstName: "foo", * * lastName; "bar" * * }] * }); * ``` */ value: function normalizeArrayResponse(instances) { return Promise.resolve(instances); } /** * Takes one or several Sequelize intances and returns them. * * @method normalizeResponse * @param {Object} instance * @param {String} method * @return {Promise}<Object, Error> * * @example * ```javascript * return orm.findOne("user", 1).then(user => { * return serializer.normalizeResponse(user, "findOne"); * }).then(response => { * /** * * { * * firstName: "foo", * * lastName; "bar" * * } * }) * * return orm.findAll("user").then(users => { * return serializer.normalizeResponse(users, "findAll"); * }).then(response => { * /** * * [{ * * firstName: "foo", * * lastName: "bar" * * }] * }); * ``` */ }, { key: "normalizeResponse", value: function normalizeResponse(instance, method, fallbackName) { switch (method) { case "createRecord": case "findOne": case "queryRecord": case "updateRecord": return this.normalizeSingularResponse(instance, fallbackName); case "findAll": return this.normalizeArrayResponse(instance, fallbackName); default: return this.normalizeSingularResponse(instance, fallbackName); } } /** * Returns a single sequelize instance * * @method normalizeSingularResponse * @param {Object} instance Sequelize model instance * @return {Promise}<Object, Error> * * @example * ```javascript * return orm.findOne("user", 1).then(user => { * return serializer.normalizeSingularResponse(instance, "findOne"); * }).then(response => { * /** * * { * * firstName: "foo", * * lastName; "bar" * * } * }); * ``` */ }, { key: "normalizeSingularResponse", value: function normalizeSingularResponse(instance) { return Promise.resolve(instance); } }]); return JSONSerializer; }(); exports.default = JSONSerializer; module.exports = exports["default"];