UNPKG

mongodb-sanitize

Version:

Helper or middleware to sanitize json object to prevent query selector injections for MongoDB

1 lines 861 B
"use strict";const REGEX_TO_MATCH=/(^\$.)|((.+)?\.\$.)/gm,replacerWarning=e=>{"."!==e&&"$"!==e||console.warn(`Sanitize middleware set with prohibited replaceBy value "${e}" that might create problem for you`)},isSanitized=(e={})=>{let i=!0;return JSON.stringify(e,(e,r)=>(e.match(REGEX_TO_MATCH)&&(i=!1),r)),i},sanitize=(e,i={})=>{if(!e)return;let r;if(i.replaceBy){replacerWarning(i.replaceBy);const a=/((?:\.)(?=\$))|((?<=")\$)/gm;r=JSON.stringify(e).replace(a,i.replaceBy)}else r=JSON.stringify(e,(e,i)=>e.match(REGEX_TO_MATCH)?void 0:i);return JSON.parse(r)},sanitizeMiddleWare=(e=["body","params","query"],i={})=>(replacerWarning(i.replaceBy),(r,a,t)=>{e.forEach(e=>{r[e]=sanitize(r[e],i)}),t()});module.exports=sanitizeMiddleWare,module.exports.sanitize=sanitize,module.exports.isSanitized=isSanitized,module.exports.sanitizeMiddleWare=sanitizeMiddleWare;