{"_id":"@neuralegion/class-sanitizer","_rev":"21-a74267d0ba08e83d8e114d326ef7844d","name":"@neuralegion/class-sanitizer","dist-tags":{"latest":"0.3.8"},"versions":{"0.2.3":{"name":"@neuralegion/class-sanitizer","version":"0.2.3","author":{"name":"Artem Derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"license":"Apache-2.0","_id":"@neuralegion/class-sanitizer@0.2.3","maintainers":[{"name":"bar.hofesh","email":"bar.hofesh@neuralegion.com"},{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"}],"homepage":"https://github.com/NeuraLegion/class-sanitizer#readme","bugs":{"url":"https://github.com/NeuraLegion/class-sanitizer/issues"},"dist":{"shasum":"829771c5d11d3bb7037ed84b8c26c0dce3d3f2b3","tarball":"https://registry.npmjs.org/@neuralegion/class-sanitizer/-/class-sanitizer-0.2.3.tgz","fileCount":41,"integrity":"sha512-P2KLThrvYdGYx/ybDS3IQBVXXXIbvGzn3B08FrGFgYVk+FlUWCsCMdC++Rd6Dqf11RJcTqVdVP5U7APGlYcAkg==","signatures":[{"sig":"MEQCIA7hTzearKJwLkoUJyDfR1vLNA/QrzOJXvLhBZIOEGbUAiA7lbSLM7SyZL9buOx6P+t7O3Jz+UJIcHSCW4nVRuKc5g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":75355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXyT8CRA9TVsSAnZWagAA1zAP/RPO6YP7KLFDxFwopkDa\nbphWStfaN7kVyXYGndUqi0dZVU0QnaV64xvCKDuKf4dGp6N6gAmlIbJqY+f4\npGuyVPnY9Awdo8U031dT0OU2cC5wfWs3gtd+52xlD66GthDHKxn8QgSZc0UW\ncSvfxKHo2FpnXvuFGq0xx6Wkmn4yoYqKKy1DQ/niAc6rAyFxIMoxxvYMS0YW\nYFeW3kEvkWKN/XlebKLWoBxd+lceCEunoKXaMx1O5cyyAHV8Gw/QQrdli65e\n+jPl73NoTodnj35mYxrT1ymZ1GH62qwvCXjaaeNxHvK77moG9H4ABlfVojWo\nHTyRFLRCwocj4sgYqB3g++o/YoisqAVTjNrW98lGREYwWv7HVJvDdB83x+GK\nmnYd9snTGjcW3P5DBP/dsc2RHH12tKHQJ7taM8Syyn+YiFct7rkEr7Gluk80\nvoLK1TpO0pS0BcvzlttAaxqQq11WKs5FwFaX3nF+0niu1VeLD6zWq5KWqORx\nM/Q0wwge5+J/VGUPWox4feFyHea5FFLMwqP4WpoKyg0fZQZG4/MkyzlIBufI\niV3aGLEu4o3xmSduC23zYOrQ65t6o1h61+3dLZj07IJnQO4M2IHL9vMdho38\nUvZ3jDpszj6qA4QRPVo9xJdmseqBjHzaNd+kXUz05E0xmpMB/tsftlNkQO+4\nxdX/\r\n=mdXz\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"skipBabel":true}},"testRegex":"(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"main":"./dist/index.js","tags":["sanitizer","sanitization","typescript","typescript-sanitizer"],"gitHead":"374e717c64016128f52da299944fcff95b9f4407","private":false,"scripts":{"dev":"jest --watch","jest":"jest","test":"run-p --aggregate-output check-ts lint-ts jest","build":"run-s clean build-ts","clean":"del-cli dist","lint-ts":"tslint --exclude 'node_modules' --project tsconfig.json","pretest":"run-p clean","build-ts":"tsc","check-ts":"tsc --noEmit"},"_npmUser":{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"repository":{"url":"git+https://github.com/NeuraLegion/class-sanitizer.git","type":"git"},"_npmVersion":"6.9.0","description":"Class-based sanitization in TypeScript using decorators","directories":{},"_nodeVersion":"10.16.3","dependencies":{"jest":"^24.9.0","validator":"^9.2.0"},"_hasShrinkwrap":false,"devDependencies":{"lodash":"^4.17.4","tslint":"^5.9.1","del-cli":"^1.1.0","nodemon":"^1.11.0","ts-jest":"^24.0.2","ts-node":"^4.1.0","prettier":"^1.10.2","typescript":"^2.6.2","@types/jest":"^22.0.1","@types/node":"^7.0.5","npm-run-all":"^4.1.2","babel-eslint":"^8.0.2","@types/validator":"^6.3.0","expect-more-jest":"^1.0.1","reflect-metadata":"^0.1.12","tslint-plugin-prettier":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/class-sanitizer_0.2.3_1566516475717_0.5681836232890431","host":"s3://npm-registry-packages"}},"0.2.6":{"name":"@neuralegion/class-sanitizer","version":"0.2.6","keywords":["sanitize","sanitization","xss","sanitizer","purify","secure","security"],"author":{"name":"Artem Derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"license":"Apache-2.0","_id":"@neuralegion/class-sanitizer@0.2.6","maintainers":[{"name":"bar.hofesh","email":"bar.hofesh@neuralegion.com"},{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"}],"homepage":"https://github.com/NeuraLegion/class-sanitizer#readme","bugs":{"url":"https://github.com/NeuraLegion/class-sanitizer/issues"},"dist":{"shasum":"fe062141b7e69280cf3bb948b9f41010836b15bc","tarball":"https://registry.npmjs.org/@neuralegion/class-sanitizer/-/class-sanitizer-0.2.6.tgz","fileCount":41,"integrity":"sha512-F2UtfUGCHiZmGOZKu6vFIw0jp/WieD/0EWp3X4/bfj9gTiqNVaFB+SxTxW+yPmSGxeRGEEliFe0j+WERRR9UQA==","signatures":[{"sig":"MEYCIQCUhJ2Tih3WCfatKU2gUq4cQVavUM3b94KVP31e7xpiKwIhANJfOI0uHoETwL1mX5xw66lP/fPlUCZVilSaVJkBiGWJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":77619,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdY/V8CRA9TVsSAnZWagAAnLQP/2putxPvxqSHpUI8yPcy\nyaLtWohrx4ipV7FrrQDbiXu+HREXC+JfBkWzR1G2MDJIFFd52vE4h2KL0IZH\nMhlUu2jesffJA5vT9tJ/h9EQiDUVb/LcPyMWhsO+N/hpGMQuaobwSLiwJ4pO\nD8BwcxQP2j+BpiHemRwY5xjFmG5VXrktqoJHcSJK4tlegWQSM7bULkH3H4Pk\nK4hxRm9uGACmOYhVmTH2bKFgc1AUA0VXYLty3qpSAqQZUzODJtBg8fzgHF4+\nJR02eZ7IgmWlj1NYb1enRJ6yz5yN7pzgBEJ1KFnybLYKWAP65turibOZs0Mg\nSkDo5t5kOzUig+4LPN4onPrr+tOX9ToE6WAcQFuZufzZVOG5qTyg7tfQnjkD\nR1A+mo8Ecw4aUzKoO53K6oNLpoYHKbmrHg1bB7tQ/bbHLKT+tRjKssr33tA1\n5fyvKULfYwDY5Wl7yu/H04PsjGk4ZFU4gTj7tnntBa5SMo85JLwPD1JK4VZ9\nzF1Z44VdmhGM7DO3LcOoen9kBISMHk0GeZcu6MOwrRdls2b0EAcWEI7RjqUY\n/R3kld+zK0io2bswhSJ583Kl8rkZgcj7dqhaehgKFiorkZriOxrGq/uZ4gMv\nNThsCCi7Xdt25oRR8PbyslmpwVAdehkcASbysFYrNTRlFVs3NNiJzzhnMjwN\nARhg\r\n=Bq6I\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"skipBabel":true}},"testRegex":"(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"main":"./dist/index.js","tags":["sanitizer","sanitization","typescript","typescript-sanitizer"],"gitHead":"e43e0663d8973641020f24e868317b0407839e80","private":false,"scripts":{"dev":"jest --watch","jest":"jest","test":"run-p --aggregate-output check-ts lint-ts jest","build":"run-s clean build-ts","clean":"del-cli dist","lint-ts":"tslint --exclude 'node_modules' --project tsconfig.json","pretest":"run-p clean","build-ts":"tsc","check-ts":"tsc --noEmit"},"_npmUser":{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"repository":{"url":"git+https://github.com/NeuraLegion/class-sanitizer.git","type":"git"},"_npmVersion":"6.9.0","description":"Class-based sanitization in TypeScript using decorators","directories":{},"_nodeVersion":"10.16.3","dependencies":{"validator":"^9.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.9.0","lodash":"^4.17.4","tslint":"^5.9.1","del-cli":"^1.1.0","nodemon":"^1.11.0","ts-jest":"^24.0.2","ts-node":"^4.1.0","prettier":"^1.10.2","typescript":"^2.6.2","@types/jest":"^22.0.1","@types/node":"^7.0.5","npm-run-all":"^4.1.2","babel-eslint":"^8.0.2","@types/validator":"^6.3.0","expect-more-jest":"^1.0.1","reflect-metadata":"^0.1.12","tslint-plugin-prettier":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/class-sanitizer_0.2.6_1566831994876_0.5917473824296762","host":"s3://npm-registry-packages"}},"0.3.1":{"name":"@neuralegion/class-sanitizer","version":"0.3.1","keywords":["sanitize","sanitization","xss","sanitizer","purify","secure","security"],"author":{"name":"Artem Derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"license":"Apache-2.0","_id":"@neuralegion/class-sanitizer@0.3.1","maintainers":[{"name":"bar.hofesh","email":"bar.hofesh@neuralegion.com"},{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"}],"homepage":"https://github.com/NeuraLegion/class-sanitizer#readme","bugs":{"url":"https://github.com/NeuraLegion/class-sanitizer/issues"},"dist":{"shasum":"8ab13a0c2e2682417045ccfc086eefee9e9f6229","tarball":"https://registry.npmjs.org/@neuralegion/class-sanitizer/-/class-sanitizer-0.3.1.tgz","fileCount":41,"integrity":"sha512-/tF7QEJJLddrSV9AJV5B1uKTf1qTh6FZMwEKP45Km349/VpQQqRaBqrPPTpNasYpUsgu3N9CvqVhM1OMEUavOA==","signatures":[{"sig":"MEYCIQCsEnrkw8G96fm8w0zxEln5JxiZedZ4jpYXw2lUJRXQBwIhAJZblsEhdizzRyXT6qglCL/TyuaA1IJTu/biXoW2sCBM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":80928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaDWhCRA9TVsSAnZWagAAAx8P/jFFzQTyi/6ytG4mkl99\nXU2sPZhed0VrIgyvNtp/Wj/8et5h2N+X/8saC8LezBHKZy8MK3dmlPuvIUxL\nTbiCsWIfp9x0tCxp6qaYqX73YlKMqdumBegZTy5x36gtkNLI+VouWNgLZApX\nscr+uPUz3HRR2w9rov4u/Jn4VSHERbSy66/Bq9mJTVFeBgrF+mmBDQV58sqw\nixImumigEzH/dXyQNxEV0Z919qoo6AZFa37Yj9j76ghBX+d/XfEoP1SaTOw9\nbj5Bh7ZvVMjPQhMZaEPr/RUAzofvtOG+BVO/dWhVHr4zsK/Lkl4u8MAcgMIQ\nlMS30h3g4yduSqSLX5QNcjJTvEj2JBURC2gYhUWqrAyIkIxMPMhahD3l/COW\nSvHZT+AMIjGoXn+eU1Eym2AdK0Yqnb3GtMNpv0xrWjaebd0r75IPVptL271X\nf9HviIGpuLl/sEp4naqeOFO2D/FXrY56/uLpUBbpjJSjsBEYigZ3ueo/aniF\n9FEkmzPLD2bRzEilNMS3Yi5xoKeDmEKnGizDIny8SOxVproTz9+arfVqE88r\nNto1GUpCL1UvOenZXb3ABmJmKrbQSNHBWVQvQJFZEUXinhDAaOU5URwbPrVf\ngwhIWIw9YdBsC/aIan4XvivWuglKbV5XQpVcG+jaxBbEg/mGnY2PIMvjy0qb\nUNva\r\n=fs7T\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"skipBabel":true}},"testRegex":"(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"main":"./dist/index.js","tags":["sanitizer","sanitization","typescript","typescript-sanitizer"],"gitHead":"6c87e872d8d3056da358ae39774eb81420a4a637","private":false,"scripts":{"dev":"jest --watch","jest":"jest","test":"run-p --aggregate-output check-ts lint-ts jest","build":"run-s clean build-ts","clean":"del-cli dist","lint-ts":"tslint --exclude 'node_modules' --project tsconfig.json","pretest":"run-p clean","build-ts":"tsc","check-ts":"tsc --noEmit"},"_npmUser":{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"repository":{"url":"git+https://github.com/NeuraLegion/class-sanitizer.git","type":"git"},"_npmVersion":"6.9.0","description":"Class-based sanitization in TypeScript using decorators","directories":{},"_nodeVersion":"10.16.3","dependencies":{"sanitizer":"^0.1.3","validator":"^11.1.0","@types/sanitizer":"0.0.28"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.9.0","lodash":"^4.17.4","tslint":"^5.9.1","del-cli":"^1.1.0","nodemon":"^1.11.0","ts-jest":"^24.0.2","ts-node":"^4.1.0","prettier":"^1.10.2","typescript":"^2.6.2","@types/jest":"^22.0.1","@types/node":"^7.0.5","npm-run-all":"^4.1.2","babel-eslint":"^8.0.2","@types/validator":"^6.3.0","expect-more-jest":"^1.0.1","reflect-metadata":"^0.1.12","tslint-plugin-prettier":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/class-sanitizer_0.3.1_1567110560694_0.8099984835456906","host":"s3://npm-registry-packages"}},"0.3.2":{"name":"@neuralegion/class-sanitizer","version":"0.3.2","keywords":["sanitize","sanitization","xss","sanitizer","purify","secure","security"],"author":{"name":"Artem Derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"license":"Apache-2.0","_id":"@neuralegion/class-sanitizer@0.3.2","maintainers":[{"name":"bar.hofesh","email":"bar.hofesh@neuralegion.com"},{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"}],"homepage":"https://github.com/NeuraLegion/class-sanitizer#readme","bugs":{"url":"https://github.com/NeuraLegion/class-sanitizer/issues"},"dist":{"shasum":"f3d7087fdffb848e48ac7cc589bee5141e2f5d39","tarball":"https://registry.npmjs.org/@neuralegion/class-sanitizer/-/class-sanitizer-0.3.2.tgz","fileCount":42,"integrity":"sha512-JP+lwZHanVVxL3yc7HoEobzDIF96NaiEclUR7lzCR46I8yeRyr+VGwuezadA2NVEReQOERWftYUDXWVAbdn6Cg==","signatures":[{"sig":"MEYCIQDNAFEtyVW5NtKUYDHWHLxcEx4W258gkOedk1lw4Fd5vgIhAK8WpFj3DzeFS3JUaEpe176TsSP5YHHE68YRhEN0PdXP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":82269,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaE48CRA9TVsSAnZWagAA8WoQAJD23JIDEv6exDU2zvvv\nB9PsYbM/yGH/jw8KQMpK0idj66TVffbHgSHcAOM58soUGwU+nrTB//fxdCbS\nOAwaWnqaf1Jk40yKfQnumf/eNwrPdK5pZi9592c9YzdwpAL0Y1QhA9DhNxQD\nrBAGuLsWDHUnOj8ukARXUD8Vqk9DNI7VPWZYGUHOgOp/dnsZr90Hgejw2QqU\ndM4yprQxjsJzDOTke8WaLUiUT5HWF+zGYKUL9KpzVIYiTbrz8/Rh06Rv7K3o\nJ+9MxsKngbpZluXbj3oee9lP5RbI1ACMomV4DCFCuI4gVRWiyp4IvbvEogCM\nAcvDG/Ev68Y/dkpV45/9pjoxesZ7544QLgjJqpJgsnUuNEwiw+oMMZV4TnkY\ngeCLQoTks6v9J4eiENHLYMbcqMD8hG8uDE4+xIb/FTybxeziBpi6+LbQOX/M\nfb+JT3nWT4GEz/ra7AEr5PRXcknYojfXZV1LV5xWDDL7E/dX28iWHo1aNKgg\n74D5Ym3xj4kz+lijCe/6JKiwJRTJdY9sjv5hSUitMo4rhG0KaH8wt+ezusYX\nFJjaq+bXqZPXTvtE/UlfJ26CiTtwFnxg8jVer8P9QrhnbQhx5Xp/gnM9H/7q\nmn2NStRP/qlkcOsN0mw/thDH1VBNIyuTV2NU5I+f+RLGsUvNv/BG35Bu4oi2\nLS7v\r\n=/3Xe\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"skipBabel":true}},"testRegex":"(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"main":"./dist/index.js","tags":["sanitizer","sanitization","typescript","typescript-sanitizer"],"gitHead":"cadb70648ff67683f1940c43f0cef0aa38386826","private":false,"scripts":{"dev":"npm run test -- --watch","tsc":"tsc","lint":"tslint --exclude 'node_modules' --project tsconfig.json","test":"jest","build":"npm run clean && npm run tsc","clean":"del-cli dist"},"_npmUser":{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"repository":{"url":"git+https://github.com/NeuraLegion/class-sanitizer.git","type":"git"},"_npmVersion":"6.9.0","description":"Class-based sanitization in TypeScript using decorators","directories":{},"_nodeVersion":"10.16.0","dependencies":{"sanitizer":"^0.1.3","validator":"^11.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.9.0","tslint":"^5.9.1","del-cli":"^2.0.0","ts-jest":"^24.0.2","ts-node":"^4.1.0","prettier":"^1.18.2","typescript":"^2.6.2","@types/jest":"^22.0.1","@types/node":"^4.2.0","@types/sanitizer":"0.0.28","@types/validator":"^10.11.3","expect-more-jest":"^1.0.1","reflect-metadata":"^0.1.13","tslint-plugin-prettier":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/class-sanitizer_0.3.2_1567116859884_0.6887406539970156","host":"s3://npm-registry-packages"}},"0.3.4":{"name":"@neuralegion/class-sanitizer","version":"0.3.4","keywords":["sanitize","sanitization","xss","sanitizer","purify","secure","security"],"author":{"name":"Artem Derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"license":"Apache-2.0","_id":"@neuralegion/class-sanitizer@0.3.4","maintainers":[{"name":"bar.hofesh","email":"bar.hofesh@neuralegion.com"},{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"}],"homepage":"https://github.com/NeuraLegion/class-sanitizer#readme","bugs":{"url":"https://github.com/NeuraLegion/class-sanitizer/issues"},"dist":{"shasum":"78733da7506ce96843e860a919929cbcede05def","tarball":"https://registry.npmjs.org/@neuralegion/class-sanitizer/-/class-sanitizer-0.3.4.tgz","fileCount":41,"integrity":"sha512-x57f+Oz2UiA5DuaDz0GsPM/t0fZbWPN7PP163dC+c9V8MYvez0diYBzGC4rbN3shB7ebKjs4VuUFXHlVaFU+XA==","signatures":[{"sig":"MEYCIQCAfbgkZ0Fxo4+XjxMAb21qXhEc+atHAcK568OY/cMxPwIhAM75Frx0B4Tu0r9FUjViN4/Zf67l6VwLLq5nAtorEZjN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":75705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiA5u5CRA9TVsSAnZWagAA8xEP+gOrOqhZyn2Ahfv9ZTda\nYs34l+D9QuefVG7QHW+AA4eCTC8EFsiD+e7cMYyzOQ/S5geyvtAIMeRg4bzr\nG7S39d2szgXL8nDhKr+m8OM2pbL5SAPIwoMe/Q3qzrBw6k7RDWAfvXaspe8s\nZxeWqCz5oWMdUA+Md3aa2WoDDsFPEUeo9V9UyVp+6qIukRqs0S1e9E+MLck9\n+PhTMSPD4CBtOvXE9VM2WLdEV0cbGRzn0hktMLaZzNfz32EbqFTUnnkzH2Uv\nN6UJStT+bv55Px5Ou6xnjcxCkFqyZ/huaWGk+M2C1X0Tp6pGJiIjMYNCizjH\neLCB1DXgCAWN+O+joqZXML0thIvZtZ438oL1WjUerjgymJKNQT1wivV86tNi\nIpgiZUa0xHJ5TpFapa62AwAMQB/sc0ZKKbxpfeC1b/4bzv5C8QWGM8uab2R7\nJf3jM5ZybUK+Kdhqlxw7WK9uCjEIxI/8WfAk0auNLk4l7Zmjs+QZfLWZAcIQ\nTr0iJcHH/n7aS9XjGhyN/urq8eu7+OKi+ppEaaOnPexqI7r2IN23ZiOGYFRE\nmjG6RS2MhklRDv0t1D+n30FkxJskjizhKpxr4iWEmIY5jo+a9DOpQLetCTWd\nS0vF2Oqr6QlpduqigLHhP0zHX2sVYdd8FSLpxh1dsLOe0w53jR2f8MynrJ1y\nRb98\r\n=YuII\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","tags":["sanitizer","sanitization","typescript","typescript-sanitizer"],"private":false,"scripts":{"dev":"npm run test -- --watch","tsc":"tsc -p tsconfig.build.json","lint":"eslint -c .eslintrc.json src","test":"jest","build":"npm run clean && npm run tsc","clean":"del-cli dist","husky":"husky","format":"prettier --check src","prepare":"is-ci || husky install","semantic-release":"semantic-release"},"_npmUser":{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"repository":{"url":"git+https://github.com/NeuraLegion/class-sanitizer.git","type":"git"},"_npmVersion":"6.14.15","description":"Class-based sanitization in TypeScript using decorators","directories":{},"lint-staged":{"*.ts":["eslint --fix"],"*.{ts,js,json,md}":["prettier --write"]},"_nodeVersion":"14.18.3","dependencies":{"tslib":"~2.3.1","sanitizer":"~0.1.3","validator":"~13.7.0","reflect-metadata":"~0.1.13"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","husky":"^7.0.4","is-ci":"~3.0.1","eslint":"^8.8.0","del-cli":"^4.0.1","ts-jest":"^27.1.3","prettier":"^2.5.1","typescript":"~4.5.5","@types/jest":"^27.4.0","@types/node":"~14.18.10","lint-staged":"^12.3.3","@commitlint/cli":"^16.1.0","@types/sanitizer":"0.0.28","@types/validator":"^13.7.1","expect-more-jest":"^5.4.0","semantic-release":"~19.0.2","eslint-plugin-jest":"^26.1.0","eslint-plugin-import":"^2.25.4","eslint-config-prettier":"^8.3.0","@typescript-eslint/parser":"^5.11.0","@commitlint/config-conventional":"^16.0.0","@typescript-eslint/eslint-plugin":"^5.11.0","eslint-import-resolver-typescript":"^2.5.0"},"_npmOperationalInternal":{"tmp":"tmp/class-sanitizer_0.3.4_1644403641822_0.8220597851449103","host":"s3://npm-registry-packages"}},"0.3.6":{"name":"@neuralegion/class-sanitizer","version":"0.3.6","keywords":["sanitize","sanitization","xss","sanitizer","purify","secure","security"],"author":{"name":"Artem Derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"license":"Apache-2.0","_id":"@neuralegion/class-sanitizer@0.3.6","maintainers":[{"name":"bar.hofesh","email":"bar.hofesh@neuralegion.com"},{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"}],"homepage":"https://github.com/NeuraLegion/class-sanitizer#readme","bugs":{"url":"https://github.com/NeuraLegion/class-sanitizer/issues"},"dist":{"shasum":"56871e9aa13a8b2fe4041d8decab58b3f51645c1","tarball":"https://registry.npmjs.org/@neuralegion/class-sanitizer/-/class-sanitizer-0.3.6.tgz","fileCount":41,"integrity":"sha512-JB5oImrncmYCjPr/AXN48ldsT47xM4l3FTV2hlScoE/+a6KGqvLLnU7Mm70Bwde4g6C33ImlXEzeedDvkrVqPg==","signatures":[{"sig":"MEUCIQCBoqvISp44jm0Ldm+1qUvQHNGiBFK+TkGq131D/0CV/QIgLTt8fgT8dwvAapG9sVumWoUQ9CH8ojzJ0yXoGENhQxY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75777},"main":"./dist/index.js","tags":["sanitizer","sanitization","typescript","typescript-sanitizer"],"type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"private":false,"scripts":{"dev":"npm run test -- --watch","tsc":"tsc -p tsconfig.build.json","lint":"eslint src","test":"jest","build":"npm run clean && npm run tsc","clean":"del-cli dist","husky":"husky","format":"prettier --check src","prepare":"is-ci || husky install","semantic-release":"semantic-release"},"_npmUser":{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"overrides":{"glob":"^13.0.0","minimatch":"^10.2.1"},"commitlint":{"extends":["@commitlint/config-conventional"]},"repository":{"url":"git+https://github.com/NeuraLegion/class-sanitizer.git","type":"git"},"_npmVersion":"11.6.2","description":"Class-based sanitization in TypeScript using decorators","directories":{},"lint-staged":{"*.ts":["eslint --fix"],"*.{ts,js,json,md}":["prettier --write"]},"_nodeVersion":"24.13.0","dependencies":{"tslib":"~2.3.1","sanitizer":"~0.1.3","validator":"^13.15.22","reflect-metadata":"~0.1.13"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.0.0","is-ci":"~3.0.1","eslint":"^9.0.0","del-cli":"^7.0.0","globals":"^17.3.0","ts-jest":"^29.0.0","prettier":"^3.0.0","@eslint/js":"^9.39.2","typescript":"~5.7.0","@types/jest":"^29.5.0","@types/node":"^24.10.7","lint-staged":"^15.0.0","@commitlint/cli":"^20.4.2","@types/sanitizer":"0.0.28","@types/validator":"^13.7.1","expect-more-jest":"^5.4.0","semantic-release":"^25.0.3","typescript-eslint":"^8.56.0","eslint-plugin-jest":"^28.0.0","eslint-plugin-import":"^2.29.0","eslint-config-prettier":"^9.0.0","eslint-plugin-import-x":"^4.16.1","@typescript-eslint/parser":"^8.0.0","@commitlint/config-conventional":"^19.2.0","@typescript-eslint/eslint-plugin":"^8.0.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/class-sanitizer_0.3.6_1771581650700_0.23178611752083222","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@neuralegion/class-sanitizer","version":"0.3.7","keywords":["sanitize","sanitization","xss","sanitizer","purify","secure","security"],"author":{"name":"Artem Derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"license":"Apache-2.0","_id":"@neuralegion/class-sanitizer@0.3.7","maintainers":[{"name":"bar.hofesh","email":"bar.hofesh@neuralegion.com"},{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"}],"homepage":"https://github.com/NeuraLegion/class-sanitizer#readme","bugs":{"url":"https://github.com/NeuraLegion/class-sanitizer/issues"},"dist":{"shasum":"66cf497aaee9125708ff8863caa761366c426544","tarball":"https://registry.npmjs.org/@neuralegion/class-sanitizer/-/class-sanitizer-0.3.7.tgz","fileCount":41,"integrity":"sha512-AyAXYoCgEidH1MouZuhA2YaWep0K+zpQ6WL8M+prWzo9mkkcx+9GMHHtgQ8/YVYM9pxOq7LgNqF3u0JdpjqhWw==","signatures":[{"sig":"MEYCIQDraCN65g/D316QR/9X7v2x7gw3PE5BLxth+DhGRsOQZQIhANo1zPRNBoKNPshmam2Gw88fn40AYPw9CyuNpV4shYnT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75777},"main":"./dist/index.js","tags":["sanitizer","sanitization","typescript","typescript-sanitizer"],"type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"private":false,"scripts":{"dev":"npm run test -- --watch","tsc":"tsc -p tsconfig.build.json","lint":"eslint src","test":"jest","build":"npm run clean && npm run tsc","clean":"del-cli dist","husky":"husky","format":"prettier --check src","prepare":"is-ci || husky install","semantic-release":"semantic-release"},"_npmUser":{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"overrides":{"glob":"^13.0.0","minimatch":"^10.2.1"},"commitlint":{"extends":["@commitlint/config-conventional"]},"repository":{"url":"git+https://github.com/NeuraLegion/class-sanitizer.git","type":"git"},"_npmVersion":"11.6.2","description":"Class-based sanitization in TypeScript using decorators","directories":{},"lint-staged":{"*.ts":["eslint --fix"],"*.{ts,js,json,md}":["prettier --write"]},"_nodeVersion":"24.13.0","dependencies":{"tslib":"~2.3.1","sanitizer":"~0.1.3","validator":"^13.15.22","reflect-metadata":"~0.1.13"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.0.0","is-ci":"~3.0.1","eslint":"^9.0.0","del-cli":"^7.0.0","globals":"^17.3.0","ts-jest":"^29.0.0","prettier":"^3.0.0","@eslint/js":"^9.39.2","typescript":"~5.7.0","@types/jest":"^29.5.0","@types/node":"^24.10.7","lint-staged":"^15.0.0","@commitlint/cli":"^20.4.2","@types/sanitizer":"0.0.28","@types/validator":"^13.7.1","expect-more-jest":"^5.4.0","semantic-release":"^25.0.3","typescript-eslint":"^8.56.0","eslint-plugin-jest":"^28.0.0","eslint-plugin-import":"^2.29.0","eslint-config-prettier":"^9.0.0","eslint-plugin-import-x":"^4.16.1","@typescript-eslint/parser":"^8.0.0","@commitlint/config-conventional":"^19.2.0","@typescript-eslint/eslint-plugin":"^8.0.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/class-sanitizer_0.3.7_1771582511984_0.8847941325378206","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@neuralegion/class-sanitizer","private":false,"version":"0.3.8","description":"Class-based sanitization in TypeScript using decorators","license":"Apache-2.0","author":{"name":"Artem Derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"main":"./dist/index.js","lint-staged":{"*.ts":["eslint --fix"],"*.{ts,js,json,md}":["prettier --write"]},"commitlint":{"extends":["@commitlint/config-conventional"]},"keywords":["sanitize","sanitization","xss","sanitizer","purify","secure","security"],"repository":{"type":"git","url":"git+https://github.com/NeuraLegion/class-sanitizer.git"},"bugs":{"url":"https://github.com/NeuraLegion/class-sanitizer/issues"},"homepage":"https://github.com/NeuraLegion/class-sanitizer#readme","tags":["sanitizer","sanitization","typescript","typescript-sanitizer"],"dependencies":{"reflect-metadata":"~0.1.13","sanitizer":"~0.1.3","tslib":"~2.3.1","validator":"^13.15.22"},"overrides":{"minimatch":"^10.2.1","glob":"^13.0.0"},"devDependencies":{"@commitlint/cli":"^20.4.2","@commitlint/config-conventional":"^19.2.0","@eslint/js":"^9.39.2","@types/jest":"^29.5.0","@types/node":"^24.10.7","@types/sanitizer":"0.0.28","@types/validator":"^13.7.1","@typescript-eslint/eslint-plugin":"^8.0.0","@typescript-eslint/parser":"^8.0.0","del-cli":"^7.0.0","eslint":"^9.0.0","eslint-config-prettier":"^9.0.0","eslint-import-resolver-typescript":"^4.4.4","eslint-plugin-import":"^2.29.0","eslint-plugin-import-x":"^4.16.1","eslint-plugin-jest":"^28.0.0","expect-more-jest":"^5.4.0","globals":"^17.3.0","husky":"^9.0.0","is-ci":"~3.0.1","jest":"^29.0.0","lint-staged":"^15.0.0","prettier":"^3.0.0","semantic-release":"^25.0.3","ts-jest":"^29.0.0","typescript":"~5.7.0","typescript-eslint":"^8.56.0"},"scripts":{"semantic-release":"semantic-release","husky":"husky","lint":"eslint src","format":"prettier --check src","clean":"del-cli dist","test":"jest","dev":"npm run test -- --watch","tsc":"tsc -p tsconfig.build.json","build":"npm run clean && npm run tsc","prepare":"is-ci || husky install"},"engines":{"node":">=24"},"types":"./dist/index.d.ts","_id":"@neuralegion/class-sanitizer@0.3.8","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-vebkFYGqEXrKKiQS9drkyAJecz4nRfopesKfsihMTGrs7R61mU5+g2SvzVDgaFWRtNyK9UX36/zuqk9VuJ633Q==","shasum":"7c033d8d3ceda2d1cb1836e6fc47352dfa2a8693","tarball":"https://registry.npmjs.org/@neuralegion/class-sanitizer/-/class-sanitizer-0.3.8.tgz","fileCount":41,"unpackedSize":75753,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICayT/AQ4x8UIplRa3nLvvLjXirdJo+lgxViNchIP2X9AiEAiRFpp7HBeQh70cfuPlb6qKgm7Oy04MFOkLyWm62Xm6U="}]},"_npmUser":{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"directories":{},"maintainers":[{"name":"bar.hofesh","email":"bar.hofesh@neuralegion.com"},{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/class-sanitizer_0.3.8_1771839533848_0.601202881532976"},"_hasShrinkwrap":false}},"time":{"created":"2019-08-22T23:20:16.836Z","modified":"2026-02-23T09:38:54.122Z","0.2.0":"2019-08-22T23:20:17.156Z","0.2.1":"2019-08-22T23:20:51.555Z","0.2.2":"2019-08-22T23:21:27.999Z","0.2.3":"2019-08-22T23:27:55.894Z","0.2.4":"2019-08-26T14:25:12.759Z","0.2.5":"2019-08-26T15:00:54.442Z","0.2.6":"2019-08-26T15:06:35.477Z","0.3.1":"2019-08-29T20:29:20.869Z","0.3.2":"2019-08-29T22:14:20.036Z","0.3.3":"2022-02-09T10:07:06.710Z","0.3.4":"2022-02-09T10:47:21.962Z","0.3.6":"2026-02-20T10:00:50.863Z","0.3.7":"2026-02-20T10:15:12.134Z","0.3.8":"2026-02-23T09:38:53.985Z"},"bugs":{"url":"https://github.com/NeuraLegion/class-sanitizer/issues"},"author":{"name":"Artem Derevnjuk","email":"artem.derevnjuk@neuralegion.com"},"license":"Apache-2.0","homepage":"https://github.com/NeuraLegion/class-sanitizer#readme","keywords":["sanitize","sanitization","xss","sanitizer","purify","secure","security"],"repository":{"type":"git","url":"git+https://github.com/NeuraLegion/class-sanitizer.git"},"description":"Class-based sanitization in TypeScript using decorators","maintainers":[{"name":"bar.hofesh","email":"bar.hofesh@neuralegion.com"},{"name":"derevnjuk","email":"artem.derevnjuk@neuralegion.com"}],"readme":"# neuralegion/class-sanitizer\n\n![npm](https://img.shields.io/npm/dm/@neuralegion/class-sanitizer?logo=npm)\n![Build Status](https://github.com/NeuraLegion/class-sanitizer/actions/workflows/auto-build.yml/badge.svg?branch=master)\n\nAllows to use decorator and non-decorator based sanitization in your Typescript classes.\nInternally uses [validator.js](https://github.com/chriso/validator.js) and [Caja-HTML-Sanitizer](https://github.com/theSmaw/Caja-HTML-Sanitizer) to make sanitization.\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Sanitizing arrays](#sanitizing-arrays)\n  - [Sanitizing sets](#sanitizing-sets)\n  - [Sanitizing maps](#sanitizing-maps)\n  - [Sanitizing nested objects](#sanitizing-nested-objects)\n  - [Inheriting sanitization decorators](#inheriting-sanitization-decorators)\n  - [Custom sanitization classes](#custom-sanitization-classes)\n  - [Using service container](#using-service-container)\n  - [Manual sanitization](#manual-sanitization)\n  - [Sanitization decorators](#sanitization-decorators)\n- [Examples](#examples)\n\n## Installation\n\n`npm install @neuralegion/class-sanitizer --save`\n\n## Usage\n\nCreate your class and put some sanity decorators on its properties you want to sanitize:\n\n```typescript\nimport { sanitize, Trim, Rtrim, Blacklist } from '@neuralegion/class-sanitizer';\n\nexport class Post {\n  @Trim()\n  public title!: string;\n\n  @Rtrim(['.'])\n  @Blacklist(/(1-9)/)\n  public text!: string;\n}\n\nlet post1 = new Post();\npost1.title = ' Hello world ';\npost1.text = '1. this is a great (2) post about hello 3 world.';\n\nsanitize(post);\nconsole.log(post);\n// now post will look like this:\n// Post {\n// title: \"Hello world\",\n// text: \". this is a great  post about hello  world\"\n// }\n```\n\n### Sanitizing arrays\n\nIf your field is an array and you want to perform sanitization of each item in the array you must specify a\nspecial `each: true` decorator option:\n\n```typescript\nimport { Escape } from '@neuralegion/class-sanitizer';\n\nexport class Post {\n  @Escape({\n    each: true\n  })\n  public tags!: string[];\n}\n```\n\nThis will sanitize each item in `post.tags` array.\n\n### Sanitizing sets\n\nIf your field is an array and you want to perform sanitization of each item in the set you must specify a\nspecial `each: true` decorator option:\n\n```typescript\nimport { Escape } from '@neuralegion/class-sanitizer';\n\nexport class Post {\n  @Escape({\n    each: true\n  })\n  public tags!: Set<string>;\n}\n```\n\nThis will sanitize each item in `post.tags` set.\n\n### Sanitizing maps\n\nIf your field is an array and you want to perform sanitization of each item in the map you must specify a\nspecial `each: true` decorator option:\n\n```typescript\nimport { Escape } from '@neuralegion/class-sanitizer';\n\nexport class Post {\n  @Escape({\n    each: true\n  })\n  public tags!: Map<string, string>;\n}\n```\n\nThis will sanitize each item in `post.tags` map.\n\n### Sanitizing nested objects\n\nIf your object contains nested objects and you want the sanitizer to perform their sanitization too, then you need to\nuse the `@SanitizeNested()` decorator:\n\n```typescript\nimport { SanitizeNested } from '@neuralegion/class-sanitizer';\n\nexport class Post {\n  @SanitizeNested()\n  public user!: User;\n}\n```\n\n### Inheriting sanitization decorators\n\nWhen you define a subclass which extends from another one, the subclass will automatically inherit the parent's decorators. If a property is redefined in the descendant class decorators will be applied on it both from that and the base class.\n\n```typescript\nimport {\n  sanitize,\n  Blacklist,\n  NormalizeEmail,\n  ToString,\n  Escape\n} from '@neuralegion/class-sanitizer';\n\nclass BaseContent {\n  @NormalizeEmail()\n  public email!: string;\n\n  @ToString()\n  public password!: string;\n}\n\nclass User extends BaseContent {\n  @Escape()\n  public name!: string;\n\n  @Blacklist(/(1-9)/)\n  public password!: string;\n}\n\nlet user = new User();\n\nuser.email = 'example+1@example.com'; // inherited property\nuser.password = 'password'; // password wil be perform not only ToString, but Blacklist as well\nuser.name = 'Name <a href=\"/\"></a>';\n\nsanitize(user);\n```\n\n### Custom sanitization classes\n\nIf you have custom sanity logic you want to use as annotations you can do it this way:\n\n1. First create a file, lets say `LetterReplacer.ts`, and create there a new class:\n\n   ```typescript\n   import {\n     SanitizerInterface,\n     SanitizerConstraint\n   } from '@neuralegion/class-sanitizer';\n\n   @SanitizerConstraint()\n   export class LetterReplacer implements SanitizerInterface {\n     public sanitize(text: string): string {\n       return text.replace(/o/g, 'w');\n     }\n   }\n   ```\n\n   Your class must implement `SanitizerInterface` interface and its `sanitize` method, which defines sanitization logic.\n\n2. Then you can use your new sanitization constraint in your class:\n\n   ```typescript\n   import { Sanitize } from '@neuralegion/class-sanitizer';\n   import { LetterReplacer } from './LetterReplacer';\n\n   export class Post {\n     @Sanitize(LetterReplacer)\n     public title!: string;\n   }\n   ```\n\n   Here we set our newly created `LetterReplacer` sanitization constraint for `Post.title`.\n\n3. Now you can use sanitizer as usual:\n\n   ```typescript\n   import { sanitize } from '@neuralegion/class-sanitizer';\n\n   sanitize(post);\n   ```\n\n### Using service container\n\nSanitizer supports service container in the case if want to inject dependencies into your custom sanity constraint\nclasses. Here is example how to integrate it with [typedi](https://github.com/pleerock/typedi):\n\n```typescript\nimport { Container } from 'typedi';\nimport { useContainer, Sanitizer } from '@neuralegion/class-sanitizer';\n\n// do this somewhere in the global application level:\nuseContainer(Container);\nlet sanitizer = Container.get(Sanitizer);\n\n// now everywhere you can inject Sanitizer class which will go from the container\n// also you can inject classes using constructor injection into your custom SanitizerConstraint-s\n```\n\n### Manual sanitization\n\nThere are several methods in the `Sanitizer` that allows to perform non-decorator based sanitization:\n\n```typescript\nimport Sanitizer from '@neuralegion/class-sanitizer';\n\nSanitizer.blacklist(str, chars);\nSanitizer.escape(str);\nSanitizer.secure(str);\nSanitizer.ltrim(str, chars);\nSanitizer.normalizeEmail(str, isLowercase);\nSanitizer.rtrim(str, chars);\nSanitizer.stripLow(str, keepNewLines);\nSanitizer.toBoolean(input, isStrict);\nSanitizer.toDate(input);\nSanitizer.toFloat(input);\nSanitizer.toInt(input, radix);\nSanitizer.toString(input);\nSanitizer.trim(str, chars);\nSanitizer.whitelist(str, chars);\nSanitizer.toUpperCase(str);\nSanitizer.toLowerCase(str);\n```\n\n### Sanitization decorators\n\n| Decorator                        | Description                                                                                                                                                              |\n| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `@Blacklist(chars: RegExp)`      | Remove characters that appear in the blacklist.                                                                                                                          |\n| `@Escape()`                      | Replace <, >, &, ', \" and / with HTML entities.                                                                                                                          |\n| `@Secure()`                      | Strips unsafe tags and attributes from html.                                                                                                                             |\n| `@Ltrim()`                       | Trim characters from the left-side of the input.                                                                                                                         |\n| `@NormalizeEmail()`              | Canonicalize an email address.                                                                                                                                           |\n| `@Rtrim()`                       | Trim characters from the right-side of the input.                                                                                                                        |\n| `@StripLow()`                    | Remove characters with a numerical value < 32 and 127, mostly control characters.                                                                                        |\n| `@ToBoolean(isStrict?: boolean)` | Convert the input to a boolean. Everything except for '0', 'false' and '' returns true. In strict mode only '1' and 'true' return true.                                  |\n| `@ToDate()`                      | Convert the input to a date, or null if the input is not a date.                                                                                                         |\n| `@ToFloat()`                     | Convert the input to a float.                                                                                                                                            |\n| `@ToInt()`                       | Convert the input to an integer, or NaN if the input is not an integer.                                                                                                  |\n| `@ToString()`                    | Convert the input to a string.                                                                                                                                           |\n| `@Trim(chars?: string[])`        | Trim characters (whitespace by default) from both sides of the input. You can specify chars that should be trimmed.                                                      |\n| `@Whitelist(chars: RegExp)`      | Remove characters that do not appear in the whitelist.\\* The characters are used in a RegExp and so you will need to escape some chars, e.g. whitelist(input, '\\\\[\\\\]'). |\n| `@ToUpperCase()`                 | (self-explanatory)                                                                                                                                                       |\n| `@ToLowerCase()`                 | (self-explanatory)                                                                                                                                                       |\n\n## Examples\n\nTake a look at [the tests](./tests) for more examples of usages.\n","readmeFilename":"README.md"}