lafayette
Route-level file type validation for hapi parsed multipart/form-data
temporary file request payloads. Also works as a standalone module, and most importantly, works in tandem with thurston for a truly magical experience.
Table of Contents
Installation
Install via NPM.
$ npm install lafayette
Usage
async validate(payload, options)
Validates all values in a payload
that match the hapi
temporary file pattern object given a whitelist
of file types provided in the options
. Results in a joi-like ValidationError
if some file type is not allowed or unknown, otherwise it returns the original parsed payload to account for additional custom validation.
Hapi
const Hapi = ;const Lafayette = ; const server = routes: validate: options: whitelist: 'image/png' ; server;
Standalone
const Fs = ;const Lafayette = ; const options = whitelist: 'image/png' ; Fs; const png = filename: 'file.png' path: '.' headers: 'content-disposition': 'form-data; name="file"; filename="file.png"' 'content-type': 'image/png' bytes: 8; try const payload = await Lafayette; console; // { file: { filename: 'file.png', path: '.', ... } }catch err throw err;
const Fs = ;const Lafayette = ; const options = whitelist: 'image/png' ; Fs; const gif = filename: 'file.gif' path: '.' headers: 'content-disposition': 'form-data; name="file"; filename="file.gif"' 'content-type': 'image/gif' bytes: 6; try await Lafayette;catch err console; // [ValidationError: child "file" fails because ["file" type is not allowed]]
Supported File Types
The same as file-type.