UNPKG

@exortek/express-mongo-sanitize

Version:

Express middleware for NoSQL injection prevention — sanitizes request data

56 lines (46 loc) 1.78 kB
/// <reference types="node" /> import { Request, Response, NextFunction, RequestHandler } from 'express'; import { SanitizeOptions, ResolvedOptions, SanitizeEvent } from '@exortek/nosql-sanitize-core'; declare module 'express' { interface Request { /** * Available when `mode: 'manual'`. * Call to sanitize `req.body`, `req.query`, and/or `req.params`. * Optionally pass overrides for this specific call. */ sanitize?: (options?: expressMongoSanitize.SanitizeOptions) => void; } } type ExpressMongoSanitize = (options?: expressMongoSanitize.SanitizeOptions) => RequestHandler; declare namespace expressMongoSanitize { export { SanitizeOptions, ResolvedOptions, SanitizeEvent }; /** * Express middleware factory for NoSQL injection prevention. * * Sanitizes `req.body` and `req.query` by default. * Supports `mode: 'auto'` (default) and `mode: 'manual'`. * * @example * ```js * const mongoSanitize = require('@exortek/express-mongo-sanitize'); * app.use(mongoSanitize()); * ``` */ export const expressMongoSanitize: ExpressMongoSanitize; /** * Express route parameter sanitization handler. * * @example * ```js * const { paramSanitizeHandler } = require('@exortek/express-mongo-sanitize'); * app.param('userId', paramSanitizeHandler()); * app.param('slug', paramSanitizeHandler({ replaceWith: '_' })); * ``` */ export function paramSanitizeHandler( options?: SanitizeOptions, ): (req: Request, res: Response, next: NextFunction, value: string, paramName: string) => void; export { expressMongoSanitize as default }; } declare function expressMongoSanitize(...params: Parameters<ExpressMongoSanitize>): ReturnType<ExpressMongoSanitize>; export = expressMongoSanitize;