
Product
Introducing Socket Scanning for OpenVSX Extensions
Socket now scans OpenVSX extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.
@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
Note that since this project is private, the installation step requires authentication with a GitHub account which has read access to this repository.
To use with express-handlebars:
const bodyParser = require('body-parser');
const express = require('express');
const Form = require('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.
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.

Product
Socket now scans OpenVSX extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.

Product
Bringing supply chain security to the next generation of JavaScript package managers

Product
A safer, faster way to eliminate vulnerabilities without updating dependencies