UNPKG

sequelize-admin-panel

Version:
129 lines (105 loc) 3.94 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>JSDoc: Source: middleware/through-params-.js</title> <script src="scripts/prettify/prettify.js"> </script> <script src="scripts/prettify/lang-css.js"> </script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> </head> <body> <div id="main"> <h1 class="page-title">Source: middleware/through-params-.js</h1> <section> <article> <pre class="prettyprint source linenums"><code>const querystring = require('querystring') const escape = require('escape-html') // const deepAssign = require('deep-assign') const path = require('path') const paramsList = ['sort', 'page', 'search', 'subwindow', 'action', 'entryIds', 'backurl'] function extendParams(req, extraParams, unsetParams) { let oldParams = Object.assign({}, req.SA.params) if (unsetParams instanceof Array) unsetParams.map(param => delete oldParams[param]) else if (unsetParams instanceof String) delete oldParams[unsetParams] else if (unsetParams === false) oldParams = {} return Object.assign({}, oldParams, extraParams) } function queryExtender(req) { /** * @method req.SA.queryExtender * @param {Array} pathParts url parts * @param {Object} extraParams new url params * @param {Array|String} unsetParams params to unset, false means unset all * @returns {String} url */ return function(pathParts = [], extraParams = {}, unsetParams = []) { const newParams = extendParams(req, extraParams, unsetParams) return ( path.join(req.baseUrl, ...pathParts.map(p => String(p))) + (Object.keys(newParams).length ? '?' + querystring.stringify({ params: JSON.stringify(newParams) }) : '') ) } } function formExtender(req) { /** * @method req.SA.formExtender * @param {Object} extraParams new form params * @param {Array|String} unsetParams params to unset, false means unset all * @returns {String} html, set of hidden form inputs with params */ return function(extraParams = {}, unsetParams = []) { const newParams = extendParams(req, extraParams, unsetParams) return ( '&lt;input type="hidden" name="params" value="' + escape(JSON.stringify(newParams)) + '"/>' ) } } module.exports = (req, res, next) => { req.SA = Object.assign(req.SA || {}, { params: {}, queryExtender: queryExtender(req), formExtender: formExtender(req) }) req.SA.params = JSON.parse( (req.body || {}).params || (req.query || {}).params || '{}' ) Object.assign( req.SA.params, paramsList.reduce((acc, param) => { ;(req.body || {})[param] ? (acc[param] = req.body[param]) : (req.query || {})[param] ? (acc[param] = req.query[param]) : null return acc }, {}) ) next() } </code></pre> </article> </section> </div> <nav> <h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-cli.html">cli</a></li><li><a href="module-sequelize-admin-panel.html">sequelize-admin-panel</a></li></ul><h3>Classes</h3><ul><li><a href="ModelAdmin.html">ModelAdmin</a></li><li><a href="ModelAdminManager.html">ModelAdminManager</a></li></ul><h3>Namespaces</h3><ul><li><a href="req.html">req</a></li><li><a href="req.SA.html">SA</a></li><li><a href="req.SA.utils.html">utils</a></li><li><a href="res.html">res</a></li></ul> </nav> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed May 30 2018 09:23:34 GMT+0700 (+07) </footer> <script> prettyPrint(); </script> <script src="scripts/linenumber.js"> </script> </body> </html>