
Security News
Package Maintainers Call for Improvements to GitHub’s New npm Security Plan
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.
@bleskomat/form
Advanced tools
Form class for node.js with validation (synchronous and asynchronous), post-processing, and support for handlebars templates.
Form class for node.js with validation (synchronous and asynchronous), post-processing, and support for handlebars templates.
Add to your application via npm
:
npm install @bleskomat/form
To use with express-handlebars:
const bodyParser = require('body-parser');
const express = require('express');
const Form = require('@bleskomat/form');
const Handlebars = require('express-handlebars');
const path = require('path');
const { ValidationError } = Form;
const app = express();
const hbs = Handlebars.create({
extname: '.html',
helpers: Form.handlebars.helpers,
partialsDir: [
path.join(__dirname, 'views', 'partials'),
Form.handlebars.partialsDir,
],
});
app.engine('.html', hbs.engine);
app.set('view engine', '.html');
app.set('views', path.join(__dirname, 'views'));
app.enable('view cache');
// Parse application/x-www-form-urlencoded:
app.use(bodyParser.urlencoded({ extended: false }));
const form = new Form({
title: 'Form partial example',
action: '/form',
groups: [
{
name: 'login',
inputs: [
{
name: 'username',
label: 'Username',
required: true,
validate: function(value, data) {
// `value` contains the value submitted for this field.
// `data` is an object which contains all form data.
// Perform custom validations for this field here.
// Throw an error here to fail the validation.
// Optionally return an instance of Promise to perform asynchronous validation.
},
process: function(value) {
// `value` contains the value submitted for this field.
// Perform custom processing for this field's value.
return value;
},
},
{
name: 'password',
label: 'Password',
required: true,
},
],
},
],
});
app.get('/form', function(req, res, next) {
res.render('form', {
form: form.serialize(),
});
});
app.post('/form', function(req, res, next) {
// `req.body` is provided by the `bodyParser` middleware.
form.validate(req.body).then(values => {
// Validation successful.
// `values` is an object which contains processed form data.
}).catch(error => {
if (error instanceof ValidationError) {
res.status(400);
} else {
error = new Error('An unexpected error has occurred');
res.status(500);
}
res.render('form', {
form: form.serialize({
errors: [ error.message ],
}),
});
});
});
Run automated tests as follows:
npm test
See CHANGELOG.md
This software is MIT licensed:
A short, permissive software license. Basically, you can do whatever you want as long as you include the original copyright and license notice in any copy of the software/source. There are many variations of this license in use.
FAQs
Form class for node.js with validation (synchronous and asynchronous), post-processing, and support for handlebars templates.
The npm package @bleskomat/form receives a total of 727 weekly downloads. As such, @bleskomat/form popularity was classified as not popular.
We found that @bleskomat/form demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers 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
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.
Product
Socket Firewall is a free tool that blocks malicious packages at install time, giving developers proactive protection against rising supply chain attacks.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.