Socket
Socket
Sign inDemoInstall

@hdsydsvenskan/forms-utils

Package Overview
Dependencies
Maintainers
12
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hdsydsvenskan/forms-utils - npm Package Compare versions

Comparing version 1.1.6 to 1.2.0

tsconfig.json

6

index.js

@@ -0,3 +1,9 @@

// @ts-check
/// <reference types="node" />
'use strict';
/** @typedef {import('./lib/promise').Form} Form */
/** @typedef {import('./lib/promise').FormBound} FormBound */
const fields = {

@@ -4,0 +10,0 @@ basic: require('./lib/basic-field'),

74

lib/promise.js

@@ -0,7 +1,28 @@

// @ts-check
/// <reference types="node" />
'use strict';
/** @typedef {{ data: { [fieldName: string]: any }, [otherProperties: string]: any }} FormBound */
/** @typedef {{ handle: FormHandleMethod, [otherProperties: string]: any }} Form */
/** @typedef {(form: FormBound) => void} FormHandleCallback */
/**
* @callback FormHandleMethod
* @param {Object<string, any> | import('http').IncomingMessage} req
* @param {{ success?: FormHandleCallback, error?: FormHandleCallback, empty?: FormHandleCallback, other?: FormHandleCallback }} callbacks
*/
/** @typedef {Promise<{ success?: boolean, error?: boolean, empty?: boolean, form: FormBound }>} PromisedFormHandle */
/**
* @param {Form|Promise<Form>} form
* @param {Object<string, any> | import('http').IncomingMessage} body
* @returns {PromisedFormHandle}
*/
const promisedFormHandle = async function (form, body) {
form = await form;
const resolvedForm = await form;
return new Promise(resolve => {
form.handle(body, {
resolvedForm.handle(body, {
success: form => resolve({ success: true, form }),

@@ -14,19 +35,42 @@ error: form => resolve({ error: true, form }),

const promisedFormHandles = function (forms, body) {
/**
* @param {{ [formName: string]: Form|Promise<Form> }[]} forms
* @param {Object<string, any> | import('http').IncomingMessage} body
* @returns {Promise<{ success?: boolean, error?: boolean, empty?: boolean, forms: { [formName: string]: FormBound }}>}
*/
const promisedFormHandles = async function (forms, body) {
const formKeys = Object.keys(forms);
return Promise.all(formKeys.map(formKey => promisedFormHandle(forms[formKey], body)))
.then(results => {
let resultForms = {};
results.forEach((result, i) => { resultForms[formKeys[i]] = result.form; });
if (!formKeys.length) return { success: true, forms: {} };
if (results.some(result => result.error)) {
return { error: true, forms: resultForms };
}
if (results.some(result => !result.success)) {
return { empty: true, forms: resultForms };
}
const formValues = Object.values(forms);
/** @type {Form[]} */
// @ts-ignore
const resolvedFormValues = await Promise.all(formValues);
const [ first, ...remaining ] = resolvedFormValues;
return { success: true, forms: resultForms };
});
/** @type {PromisedFormHandle[]} */
let promisedHandles = [
promisedFormHandle(first, body)
];
for (const value of remaining) {
promisedHandles.push(promisedFormHandle(value, body));
}
const results = await Promise.all(promisedHandles);
/** @type {{ [formName: string]: FormBound }} */
let resultForms = {};
results.forEach((result, i) => { resultForms[formKeys[i]] = result.form; });
if (results.some(result => result.error)) {
return { error: true, forms: resultForms };
}
if (results.some(result => !result.success)) {
return { empty: true, forms: resultForms };
}
return { success: true, forms: resultForms };
};

@@ -33,0 +77,0 @@

{
"name": "@hdsydsvenskan/forms-utils",
"version": "1.1.6",
"version": "1.2.0",
"license": "MIT",
"description": "A set of useful utilities for the forms module",
"author": "Pelle Wessman <pelle.wessman@kodfabrik.se> (http://kodfabrik.se/)",
"author": "Pelle Wessman <pelle.wessman@hdsydsvenskan.se>",
"homepage": "https://github.com/sydsvenskan/node-forms-utils",

@@ -19,5 +19,6 @@ "repository": {

"dependency-check": "JS_FILES=\"*.js lib/*.js\" && dependency-check . $JS_FILES && dependency-check . $JS_FILES --unused --no-dev",
"test": "eslint --ext .js --ext .jsx . && npm run --silent dependency-check"
"test": "eslint --ext .js --ext .jsx . && npm run --silent dependency-check && tsc"
},
"devDependencies": {
"@types/node": "^10.0.0",
"dependency-check": "^3.2.1",

@@ -30,7 +31,9 @@ "eslint": "^5.7.0",

"eslint-plugin-standard": "^4.0.0",
"forms": "1.3.0"
"forms": "1.3.0",
"typescript": "^3.7.5"
},
"peerDependencies": {
"forms": "^1.2.0"
}
},
"dependencies": {}
}

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc