Socket
Book a DemoInstallSign in
Socket

@bleskomat/form

Package Overview
Dependencies
Maintainers
2
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bleskomat/form

Form class for node.js with validation (synchronous and asynchronous), post-processing, and support for handlebars templates.

1.3.2
latest
Source
npmnpm
Version published
Weekly downloads
1.1K
148.99%
Maintainers
2
Weekly downloads
 
Created
Source

form-node

Build Status

Form class for node.js with validation (synchronous and asynchronous), post-processing, and support for handlebars templates.

  • Installation
  • Usage
  • Tests
  • Changelog
  • License

Installation

Add to your application via npm:

npm install @bleskomat/form

Usage

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 ],
			}),
		});
	});
});

Tests

Run automated tests as follows:

npm test

Changelog

See CHANGELOG.md

License

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

Package last updated on 30 Aug 2023

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.