Security News
CISA Brings KEV Data to GitHub
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.
strong-params
Advanced tools
Rails-style strong parameters for javascript projects. (e.g. Express, Koa)
Rails-style implementation of strong parameters. It supports Express, Koa and also can be used as standalone. The middleware adds the parameters
object to the Express request (or ctx.parameters
for Koa context) which returns an object, built from query string
, request body
and route params
data. The returned object has some useful methods allows for data requiring
and filtering
.
The implementation of strong parameters was previously forked from koa-strong-params but now has it's own implementation. Along with this change only
, except
and merge
methods have been dropped from the API as they do not exist in Rails Strong Parameters API.
Install the npm package.
npm install strong-params --save
var express = require('express')
var params = require('strong-params')
app.use(params.expressMiddleware())
var koa = require('koa')
var params = require('strong-params')
var app = new koa()
app.use(params.koaMiddleware())
app.use(function (req, res, next) {
var params = req.parameters
})
app.use(function (ctx, next) {
var params = ctx.parameters
})
var Parameters = require('strong-params').Parameters
var params = Parameters({
id: '13',
name: 'Bob',
age: '13',
hobbies: ['skydiving', 'football', 'photographing'],
address: {
country: 'US',
street: '261 West'
},
contacts: [
{
type: 'e-mail',
value: 'bob@random.rnd'
}, {
type: 'mobile',
value: '+123987456'
}
]
})
// All available params
params.all()
// -> { id: '13', name: 'Bob', age: '13', hobbies: ['skydiving', 'football', 'photographing'], address: { country: 'US', street: '261 West' }, contacts: [{ type: 'e-mail', value: 'bob@random.rnd' }, { type: 'mobile', value: '+123987456' }] }
// Only selected params
params.permit('name', 'age').value()
// -> { name: 'Bob', age: '13' }
params.permit('id', 'name', {hobbies: []}).value()
// -> { id: '13', name: 'Bob', hobbies: ['skydiving', 'football', 'photographing'] }
params.permit('id', 'name', {contacts: []}).value()
// -> { id: '13', name: 'Bob', contacts: [] }
params.permit('id', 'name', {contacts: ['type', 'value']}).value()
// -> { id: '13', name: 'Bob', contacts: [{ type: 'e-mail', value: 'bob@random.rnd' }, { type: 'mobile', value: '+123987456' }] }
// All params of a sub-object
params.require('address').all()
// -> { country: 'US', street: '261 West' }
// All params of a sub-object
params.require('contacts').permit('type', 'value').value()
// -> [{ type: 'e-mail', value: 'bob@random.rnd' }, { type: 'mobile', value: '+123987456' }]
// ParameterMissingError
try {
params.require('missingKey')
} catch(err) {
err instanceof ParameterMissingError // -> true
err instanceof Error // -> true
}
Look Rails Strong Parameters specification for more information.
Please follow Contributing
FAQs
Rails-style strong parameters for javascript projects. (e.g. Express, Koa)
We found that strong-params demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.
Security News
Opengrep forks Semgrep to preserve open source SAST in response to controversial licensing changes.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.