{"_id":"fastscan","_rev":"9-c8f5d5a22773ca5a30b5788e13061414","name":"fastscan","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.0":{"name":"fastscan","version":"1.0.0","description":"quickly search by ahocorasick algorithm ","main":"index.js","scripts":{"test":"mocha index.test.js"},"repository":{"type":"git","url":"git+https://github.com/pyloque/fastscan.git"},"keywords":["ahocorasick","javascript","node"],"author":{"name":"qianwp"},"license":"Apache-2.0","bugs":{"url":"https://github.com/pyloque/fastscan/issues"},"homepage":"https://github.com/pyloque/fastscan#readme","devDependencies":{"mocha":"^5.2.0"},"gitHead":"8898991d1d34999e4e8b591dc1464d70f5263b8e","_id":"fastscan@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.5.0","_npmUser":{"name":"qianwp","email":"holycoder@163.com"},"dist":{"integrity":"sha512-tyERW+En/nXBJBLAtD2ZhX0sYt0RxMj3+eX5qaPCv0pR9iw059UOHOEhEJE+eHispZCKe507XG1JM5CGn4xR0Q==","shasum":"5de13f0a058863c782341692752985e3faf94ed1","tarball":"https://registry.npmjs.org/fastscan/-/fastscan-1.0.0.tgz","fileCount":5,"unpackedSize":18150,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbzupzCRA9TVsSAnZWagAANykQAJWzbF3Um1h1N4YuTmyD\ncjphUC7ucag5gqcWw8Vee4IZB0dmkoeYB2O7ZJwDnev9AN5aPjH5jHJ4dgK2\nJgC8i1KWW7p8vF+SmR4V595IOO5QKMGpbdvxXPbmsyXSCnScT2K1XeBK8sRK\nVbPouW8u9n1w37slRpIyntU085d82kYGoLrwVwE8i6sWEnkAktEQ1Y24I5PM\nMXW1D1l1q9VcCvwtwSzj8Ilos+MmHRd5C5BdZQDVCpK3+SI1855fqVzub6tg\n/Ic012siI2PsMVLzcAr72DHWQtlm2LRHyu6SX5CzqA353VfXUREHm/MaSYGh\ndKBzZ+uFtOLbbog2xypdPLzvhF2WNUouOzokMqGuPzlfTE7HkQDiGfCaFo/B\n8lVzzQHfsPmKxfD2wsINOzSFcDkj9j1N+mSJ1AZiOrisG2g4YT8cJCK62Nd1\nYrDwc/m7o+2KoZk8NE474g9w7J9/6WowYWg+JXr6jTpsk38dz0vPnp+xeaPZ\n98f+mk3CtV3+iK33sqkPw+Q1aTe5Io4WI8E1FZz6jvUJzHccZDb+MrbQNLnk\npJMWMrFvbChY7EhpnU/sseJQTKxNQLBSpIsutDG6e763lsCIFdfRfMUiKptB\nKitFqEJhsJ9/Jkz+AySaOSpz1VdC8BNvYbeE+N8kfC1reI8/k2N600B+VArW\nCu30\r\n=B9y6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHdI+/gy8QVzPDWlCuGBbHrpkZMoru98GnB4fcDEaWYwIgefDO1CRuzg9+fEbAOFdRBlE1vQ8YZv5TrldFM2EzhA0="}]},"maintainers":[{"name":"qianwp","email":"holycoder@163.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fastscan_1.0.0_1540287090636_0.7986253052557544"},"_hasShrinkwrap":false},"0.0.1":{"name":"fastscan","version":"0.0.1","description":"quickly search by ahocorasick algorithm ","main":"index.js","scripts":{"test":"mocha index.test.js"},"repository":{"type":"git","url":"git+https://github.com/pyloque/fastscan.git"},"keywords":["ahocorasick","javascript","node"],"author":{"name":"qianwp"},"license":"Apache-2.0","bugs":{"url":"https://github.com/pyloque/fastscan/issues"},"homepage":"https://github.com/pyloque/fastscan#readme","devDependencies":{"mocha":"^5.2.0"},"gitHead":"76e88930d82196e9783db04d5c5599f2abe374fa","_id":"fastscan@0.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.5.0","_npmUser":{"name":"qianwp","email":"holycoder@163.com"},"dist":{"integrity":"sha512-vIa3sZGAjDXdNsBD7bFak6oM55Ly14MK2ClkMw+eiH9qXG0dWyfq4Ab2qiMwASLYUrigbuAke1lf7Li6JiSpPQ==","shasum":"4b5b599ceeebea72b6340fa35b5a988fe4cf2449","tarball":"https://registry.npmjs.org/fastscan/-/fastscan-0.0.1.tgz","fileCount":5,"unpackedSize":18586,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbzvbICRA9TVsSAnZWagAAH1AP/iB1hj39siOnKnmL/dd9\nAPFb67p95L4649w4J6HHCH9hnYUM0D50zDWD0reJXubPx8t4hvMFaT1q6sFV\nb6KGp4yR0jbqrjOfZS4BN1pQ7+Heu9InC11cn4k3fUmv1hx2HaO3EImXCS7s\nmI+Nkm88Mr2tQBNdOvYBfj/6a9vCuNbKGABESDv8QMFVTkXkSKcf0d0pKQK1\nL/NZ07ul3edYsHZog+g3wUFHN/hTsR58N7QMmiCJJvMHoZ77uJojVRojxfZ4\nchN/lMN2QW98uo13M/3a6lwCbirdZFJ9etlK1J5D3RsRWSfp+/7G0BNNyf3K\nJkhdYQKk2JU6V9J6/lO31NE3B2y/MnV5TWZv096ipONrjqmsyhBwoF+ZqUOk\nUeLsRtUNf7wpm+o3u08SlpR32xL1RYZvC7mzH60GRhWPlyu0qKhZY8GQHssn\n1kJNOLDm/iiMRjcHbYjaxQNP+M+ScX83MMLmTP+GJdf7ADQIt6v16U/I4K6Z\n0o3oQxTeH/fzUzWXYRi+XpbQfh2rJxLlNTEfHl57GjFDOPAk5777ypBv2e1w\n3J5LZPgcKDIpRuQdiSeTTRfDSEeIrplrqQe3TYkd+IdX1J3Hy4WZWpxVzRcd\ncN4mQN6a2UEn9rrxDZ6iuX9ZRCT0oTY5xPSX0FNiNnOrAHtq8SnGHesh4hbz\n64Pi\r\n=XD0h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDc3K4M7venLrmSTiVwOZduFn2pju3rB77lKxpGoQbHhQIhAJSlUbysu52Tdpi02S2Fip/bAE+4KKqSVZsC4BBGhzH4"}]},"maintainers":[{"name":"qianwp","email":"holycoder@163.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fastscan_0.0.1_1540290248186_0.13509292322795452"},"_hasShrinkwrap":false},"1.0.1":{"name":"fastscan","version":"1.0.1","description":"quickly search by ahocorasick algorithm ","main":"index.js","scripts":{"test":"mocha index.test.js"},"repository":{"type":"git","url":"git+https://github.com/pyloque/fastscan.git"},"keywords":["ahocorasick","javascript","node"],"author":{"name":"qianwp"},"license":"Apache-2.0","bugs":{"url":"https://github.com/pyloque/fastscan/issues"},"homepage":"https://github.com/pyloque/fastscan#readme","devDependencies":{"mocha":"^5.2.0"},"gitHead":"76e88930d82196e9783db04d5c5599f2abe374fa","_id":"fastscan@1.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.5.0","_npmUser":{"name":"qianwp","email":"holycoder@163.com"},"dist":{"integrity":"sha512-+CcHbpWMmvOESU8ZsHLc8KH2OIGAvKcOC07agpd96mr4FZZq3wNV9DJbozb7Yhn/zAxYsBlaYe2qDx3cmjv0aQ==","shasum":"b2727ddb5edab24d656aa285b986452926ebe736","tarball":"https://registry.npmjs.org/fastscan/-/fastscan-1.0.1.tgz","fileCount":5,"unpackedSize":18586,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbzveQCRA9TVsSAnZWagAAV5IQAImsRtgjgxqUiTxDpQVW\nPo/4shBBHwoSUoyxawVcaFLpaRD9vXeXBnKhqbbuaCYYtNa5EzUEhmHzyx0R\nX20F8yIpllbHchq0k+PYtPciqspdIAkVdUs8aEBoxBNQBjODbfmIvsnpKZhy\n1eCp5ZsxQlat7khDfgC4l6CXqEjo0cpKR/9MAK066dHWcMxQUKKYPVufZNsC\nWFvOxAwbJuL1qsfkFp4rkNw6CjRAqAboRUkpl2TTy5V9W9LYboHY1EUZR4nY\nwG1S1OyhSv88VuFoL1ub57BDksyd+oxQczhBVF8uQSjmYKlx1DPEhRm+fefs\nIImcVZiebl/VI6NiFXxI4T+PLcDsIZGZuhD+8i0KQ44wZqmwidBrzFdEm3nS\nnMZIz/lhhPKLNyofnPQS506EJErbn2JNEljRc0GhGugXXuxUPuPUSildr9xZ\nHDak3ADN8OhoProjIzkXDjBnUNxK/rqOE9m+2rUm5jvj0TVUU1eygaeMFS9y\nHTztco035M1Aag9D5rcGDgVyTkCD2Y4iR4xj4C0dxqqXTlMoZGY32mXbjAJp\n8H0mr37yF5uFIj9PDSBz8YV/motuxKnrwYPNC7eD4lbSSWrcvlsYSlhBbwvI\nMDYxon+jEIAWfwmqT35BSyrrOQ2puX1d307vEj0273NaHvob2Scggv/8t0NO\nxxtg\r\n=DO3n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDDvvwxBJNtyr6oO442WoYsrYOdqEIWSZjcJ7eYJJ0azAiAJp8qF/eOmtShxv1KchnyE5XeXJOZT8EV3bgMpEcl4Ww=="}]},"maintainers":[{"name":"qianwp","email":"holycoder@163.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fastscan_1.0.1_1540290448217_0.29361471906726644"},"_hasShrinkwrap":false},"1.0.2":{"name":"fastscan","version":"1.0.2","description":"quickly search by ahocorasick algorithm ","main":"index.js","scripts":{"test":"mocha index.test.js"},"repository":{"type":"git","url":"git+https://github.com/pyloque/fastscan.git"},"keywords":["ahocorasick","javascript","node"],"author":{"name":"qianwp"},"license":"Apache-2.0","bugs":{"url":"https://github.com/pyloque/fastscan/issues"},"homepage":"https://github.com/pyloque/fastscan#readme","devDependencies":{"mocha":"^5.2.0"},"gitHead":"2612038fbb46b587de3b345a2ff5fc3e6c2250ad","_id":"fastscan@1.0.2","_npmVersion":"6.4.1","_nodeVersion":"10.5.0","_npmUser":{"name":"qianwp","email":"holycoder@163.com"},"dist":{"integrity":"sha512-2XsekrwKtGxfbPwkIK/WYoo3xwIZ8qt3kg4fb7dvi3nUD4JZ+NRh/Ys1QORGz7hHZGM0Br6mwnBtJQugDyYK2g==","shasum":"669d9d70e56aae8b64ddd4f6e158116b3e9b3d01","tarball":"https://registry.npmjs.org/fastscan/-/fastscan-1.0.2.tgz","fileCount":6,"unpackedSize":48799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0ANTCRA9TVsSAnZWagAAHDAQAIhSTd9bTaVQQcn/j1la\nS5TNHsD4uoOXfSk3NDTWMeHu5EEAS+/eQdorMCUqBaemj1+Ul3siRkNXxHe/\nT02h9uvOVrxFa4bpfEzeIJnOB0apJD5orZE+HZuNSlaECoSChrTdDVDZIbv1\n8LiWdirQo2nC2aOhF0ISM39hulwhTl/DnBwGizj2kQg3vRV2gdtKRWSFCtcY\nay3J59KyQbPohlF/7Cn8YiYes3ciOTEH9x60ubSqlwpzHbWbv7mRL4nc7VHU\neMSy3r4VNA8kD+hHXInfpYeZDRZbVKp6zI3F8wlIF8C2Thz+GXBPLFCi9P2f\nqlUIbdcbMQYzpxC3GlCwGmV0yWPIfY1zlxGRJ9u9ay2vRvGhFGqvbI9nXXSU\nOhrviKpcnAVnfL9iRPiS6cc9S1nTD/2c0rCcm7CXx5Zg+C5C6jgWxr5Al7un\n75XXMR4vITLiDvSb/3nJjrMKmxZOuIvAHeSNaGeLw3oMPGiY/zdUnhCXXrRK\nTYKn5VmqGWcnhEz4JZldsxQdtbu0KlTdOQnXUQUHwm3Wurs9MQZDRtpMj+vl\nQHNbwvL79poGQPcDpOLqCac4uPtRqG1U8nW6x8YeUHmGH/H6jRRFGgf1MZQw\n8DI1mG8Lcnondaq7h6WdlTwt1BXlH0PkR+8GprnZf6DYKkQHzbXlNGKPDuhv\nX0Dk\r\n=Gghk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHPvvH3yWXzOMg06skyTIZB4sQID435aVQ9xVPlUhZ5VAiEA58P/lPfa94VpVbi+DuFyU/ggwq5a3U5eysKRso6K/PM="}]},"maintainers":[{"name":"qianwp","email":"holycoder@163.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fastscan_1.0.2_1540358994743_0.3346832943740772"},"_hasShrinkwrap":false},"1.0.3":{"name":"fastscan","version":"1.0.3","description":"quickly search by ahocorasick algorithm ","main":"index.min.js","scripts":{"test":"mocha index.test.js"},"repository":{"type":"git","url":"git+https://github.com/pyloque/fastscan.git"},"keywords":["ahocorasick","javascript","node"],"author":{"name":"qianwp"},"license":"Apache-2.0","bugs":{"url":"https://github.com/pyloque/fastscan/issues"},"homepage":"https://github.com/pyloque/fastscan#readme","devDependencies":{"mocha":"^5.2.0"},"gitHead":"39617686edd5973a9bb659a39212ce3c92126456","_id":"fastscan@1.0.3","_npmVersion":"6.4.1","_nodeVersion":"10.5.0","_npmUser":{"name":"qianwp","email":"holycoder@163.com"},"dist":{"integrity":"sha512-k+WrBPmEY/PXYvxSTIV7X1jlxT1CvytxE7zVefzh4k8q9jqTaM9KPM6ct8NQTEuMEvxt3H2hsno8nf8MHqEsYA==","shasum":"679e8614a4b5aa577caccf78971b9c3ea6cfd716","tarball":"https://registry.npmjs.org/fastscan/-/fastscan-1.0.3.tgz","fileCount":7,"unpackedSize":50877,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0AtECRA9TVsSAnZWagAAv54P/ju3448a7D1shNhsI0T0\nTMKFWuUYXuR8AsnjQA6xRHfTYNbqpFHfJVs68GH1X+KQlbFnYWINrZLdc1ah\nKT/WC58ObjUXG+5qieE7q2wvfSfQ1fSE9zdb0PIhoQkcY/dUfEjghxM0B8VP\ndsElkfzHTdRRSVv92EtbTKDQG4OM68vTgswPxzX5G25/WgdrzZyqcwh5Opb2\nyUk3uJX+TwTp5bAyAx1/otD5AcucFpxIjP+Xc8fREtM+U9ewLmhfS5SOUyJI\nBFCU4Fc8har7F5lAb+q6qJmWAqEJd7PEjy3LerbbgmTv8z5vDSlJu/SPviFS\noRWnNukDrisnoqvOhRfn5RPImId5vNICv06+Y8DuDyzpO+MHzSgkOw+wtywC\n7maxo3MbkgYe0CZziWMh6661abF6GUk18EkQNuh/XWsrGJhRL7gcZNHCybbi\n40s2cYVB4OBySp69QyaOYXmN1aeFaJiFjfghl07eGkF15VwC4ZcC3JYtYziV\nx2QuRMD5xw9oFLJelYotutD94tFvLjU655e6Yqx6y/myowPirZpo2TZlRfhr\n+aJNkAytOlldJz/CVsOS0143grxhlaHgKHzfiWUNgpxgWMkzAA2bmtar4hBS\ndFm0USCLYoqDU5pHntsxZvxmJXh7Q6JJ/3jHDd/bhl4fkkN8VvuCWmfXYGdr\nf4Dc\r\n=k5m6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCie6Z7dnWP/kltQspIus02pWolPg/W6O3X9wR48yANowIgeEBa93n5qfHc59BQplBxShXWnitc2F/j0TFkmu8pRZA="}]},"maintainers":[{"name":"qianwp","email":"holycoder@163.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fastscan_1.0.3_1540361027635_0.7397763322147859"},"_hasShrinkwrap":false},"1.0.4":{"name":"fastscan","version":"1.0.4","description":"quickly search by ahocorasick algorithm ","main":"index.min.js","scripts":{"test":"mocha index.test.js"},"repository":{"type":"git","url":"git+https://github.com/pyloque/fastscan.git"},"keywords":["ahocorasick","javascript","node"],"author":{"name":"qianwp"},"license":"Apache-2.0","bugs":{"url":"https://github.com/pyloque/fastscan/issues"},"homepage":"https://github.com/pyloque/fastscan#readme","devDependencies":{"mocha":"^5.2.0"},"gitHead":"7ce717f3d0b7afce90c9e86c2ae4847f41ec9401","_id":"fastscan@1.0.4","_npmVersion":"6.4.1","_nodeVersion":"10.5.0","_npmUser":{"name":"qianwp","email":"holycoder@163.com"},"dist":{"integrity":"sha512-cK8pIPkQKsibfCop14SgQVUWrzBN7J2SKSIAivjZZRZOgOjLw+eK1mdlm2v6JRSURxxrrMplh7TE4ljOD9M7ag==","shasum":"ec74dc275980d9045db89a9758ce45011cb23379","tarball":"https://registry.npmjs.org/fastscan/-/fastscan-1.0.4.tgz","fileCount":8,"unpackedSize":92805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0XWNCRA9TVsSAnZWagAAwx0QAJCrcyrEI8/8ARXlDEoD\nJK5zeCX/25EZlDAej/wvh7IyKyMDh7kO75NpHGqY9BGqvQKKQ/jHl3pcRlRv\nlsJ5fL3rYaKHvy+6kKRn4xz87ezySmE6gfeup3TcXXxAagRooxU1meJuvhBN\nKL2+BLSDhWrkchgnx9VZ38rnHQBzd2h4n109PLd3RMLP/YxDOSPLGR1JnMlv\nYz5sWS7o/73K8ha1+X5Z+1J7S6W2uViVx9IHRBnTJpp+pSsywkyRR1vqlieQ\nofznA3a76oEwIQ4TOUG4gVkolj5vZw5T0z/76ohxGcXSYxHwII1LKA8w617F\nKj/6cNNPTka7MhcyJpJlq1zkXcfBgcrQ9/tR82Gl3XDz6i3f4HBqE1AwbKhf\nYP7WD5p5Nfe2Q0ucUjGSOaHdjqzSrc4EVKtqWT77gsPJk+hiTzemgm1JieIZ\nxIkSZ8gYV0FE7sTVn3r33HzStNTOBNbDvWZvxQWLB8COcz+QxAMOrmJVCJ5g\n+8GlXLAxEMRNuFzi53x5DzeS3zjQ4cZ5xRXB+hdMY+XCkXpqwMPpNHW+7kwi\nxhsYSX2i+yYsmadXvqmsKPT9cnmhs4kONhHBIem/OgGMpeOBeDttKX2cUg9k\nUv4YbIZBo5iCYq5avYTnRmDcRng17w6owv4/vUm4OKtlG3iBL8R/vxFDIntL\nxUIF\r\n=cESL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBi1FaUAEJranpuxSsJQ/MsCMrtJBtdilkBlUWvp3CQYAiEAi4jqiYBvH2K9uP3iEk3Dl9r3NFxr+yJ5E4GLSAjryBA="}]},"maintainers":[{"name":"qianwp","email":"holycoder@163.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fastscan_1.0.4_1540453772641_0.7595277710309978"},"_hasShrinkwrap":false},"1.0.5":{"name":"fastscan","version":"1.0.5","description":"quickly search by ahocorasick algorithm ","main":"index.min.js","scripts":{"test":"mocha index.test.js","bench":"node --expose-gc index.bench.js"},"repository":{"type":"git","url":"git+https://github.com/pyloque/fastscan.git"},"keywords":["ahocorasick","javascript","node"],"author":{"name":"qianwp"},"license":"Apache-2.0","bugs":{"url":"https://github.com/pyloque/fastscan/issues"},"homepage":"https://github.com/pyloque/fastscan#readme","devDependencies":{"mocha":"^5.2.0"},"gitHead":"cf2a7c171e992c4b847b4d8383d7664c6db2f969","_id":"fastscan@1.0.5","_npmVersion":"6.4.1","_nodeVersion":"10.5.0","_npmUser":{"name":"qianwp","email":"holycoder@163.com"},"dist":{"integrity":"sha512-djesVOZEKuhEd5f/W1Oe73ev2KCxbdaZHKRlekJPSRuqkVjRi8+d0L6YUJMWZlNuClWhrqvkklrbxZLPhUiaKw==","shasum":"2770cf70d21e526dba2f8a2b70ba50faf33e55ce","tarball":"https://registry.npmjs.org/fastscan/-/fastscan-1.0.5.tgz","fileCount":9,"unpackedSize":94962,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb1IOkCRA9TVsSAnZWagAApbIQAI6YtsmCeevAoDtWjcub\nayGyzkuFfM1xcg0sj/eoZ9xFGTXYbbqqjLrKOaojwT6GZV8WjQBXxCe9BG1k\nMIAVIloR7cTchf67ddRJmicXFRd7ukT6qXi8+PazLmj6OyFmH1iv0jiauvRj\nF/ACktTlsVlaTY8idnWQkEhztbK8swd/cf7F/BmS7z8cYiXK1wWq+RiVSOa+\n0+KCcWgvl734+giKqC1ZRrj5ec4MNZ35rrNPnIArW1NCwiFLhZuUB44puDBY\nuWmUFUo30n5OiHUU6uU6Vec8M97CIwV3Lc8fgBIzDpyKVrGKnmUQtYnCDSwM\ndfCkLP/p5+c/JjFbfOK82qbAmXXy/66I1et26IclT5P7Ap2Rbf8KNB4W27+F\ns3+7G0t5exKbfU67DCVYdr4Rvfc6wOh4WCdoaYOpmB8hAlA+3iiniNKQ4dwA\noNn2z/zPP8dYMvWbljTKRicPzbYfodoZCFgbNtCHFqq9N528g5JzVVlLefOp\nK2Y/diAKKbQLO+BNP6VeWPQstgbrMK/EPry+24HWEB0UVRRnyphgvnFkj/hD\n4q9cemZ0LJBjSdWsrQJ1bHf0M/3WTr+egPPpgfT19MkvJPaFsyNIsoDSrIY7\n4jXviuwZblLlW/SEjvb0GOWgQiBOzfKfH0W7fai0p0ActQ5Ax7WutGcsBv46\nRs3n\r\n=I7I3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEp33HLvkr22dLRL/7rVDw53zjr9iC7rkb8hDW/eWDcUAiA8mE83Io8lBEC0woEtGyQ9RpO47J2qigzZBXJJaBzEBw=="}]},"maintainers":[{"name":"qianwp","email":"holycoder@163.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fastscan_1.0.5_1540653987508_0.5410226178888569"},"_hasShrinkwrap":false},"1.0.6":{"name":"fastscan","version":"1.0.6","description":"quickly search by ahocorasick algorithm ","main":"index.min.js","scripts":{"test":"mocha index.test.js","bench":"node --expose-gc index.bench.js"},"repository":{"type":"git","url":"git+https://github.com/pyloque/fastscan.git"},"keywords":["ahocorasick","javascript","node"],"author":{"name":"qianwp"},"license":"Apache-2.0","bugs":{"url":"https://github.com/pyloque/fastscan/issues"},"homepage":"https://github.com/pyloque/fastscan#readme","devDependencies":{"mocha":"^5.2.0"},"gitHead":"aae2115bb3ac1f5bd8db4f7f99ed5122da4c6b8b","_id":"fastscan@1.0.6","_npmVersion":"6.4.1","_nodeVersion":"10.5.0","_npmUser":{"name":"qianwp","email":"holycoder@163.com"},"dist":{"integrity":"sha512-PGpoEDNcA4CEvLgJ0p8zN16A7jy1+F2VnxtEHq8ShafOd1SvAdEEnrlm7ZJQ0XxRka+bltaqYbB+lw2sSug6Hw==","shasum":"4efea05f60394f2d3e3634f5ee2291be0e67d356","tarball":"https://registry.npmjs.org/fastscan/-/fastscan-1.0.6.tgz","fileCount":9,"unpackedSize":95170,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb1YZACRA9TVsSAnZWagAAsPMQAJyXGP92cZmWh0KWGp20\n2PFgor48t5xHMb2AUOxgA7RXhVyYuD5vG1Wz9wPD6e0NVxe3crxBfTF4bP0O\nQ/CK20NKPikpK0NOkWOeX5RgicruBpkAOhpQM67NagyQileE8gduHk1/LxzO\n+ornMMTe9JKlrOv48WNAUClrSN0kCt58LjQwoVFSlTZt3BB3/an87Ew4ZNW6\nDCQTZjpbrW+X++NFWglvJNuZmbW6tbGbBZ4FbaqFPzp170bIAbykrApwoKGY\nfhCLMEEaH+AgtgixkiuUijWzC7zEBGgqmkj7gmOeAgtNGFatnQYRlGVWHulJ\nGJtec47eIJUrS6JkqhF2aOMWK0CL4YVc3+8/CDmw0tfII73hcNx92k5qnk2c\n/aD6N+1OrAQeDnk6La00xJ7f+Kh7G1Q99qI/TsjpVUBOmmgKrQDsoc69vZ46\nExWedpNuFfO9nUPUljHb9m9nhNw7IO4R282zw3lRezACAzMWC8KRzN1DKZG4\n+TJ8yJ0m/ym4OT21XlpFF2Hkp6uf+wI15e1bENwdIcU7EO675ZdZtHeZRIy2\ntX6gGngL4+EneVJydjsEzIKj1hqnYZA4dneJfIcg97mL3zBSmSCW4SYuSc3Y\nMQe2K6TjRbQXZr/pnV5/42QFkLDfWB0WgQ3mEGqi8h2uQ6Sw1oakMyOPLvZa\nEEZN\r\n=G9Yp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGhC6iPSPscUMEFnUNwEW7tV93F/X6SVuamoJuKuRaanAiEArqL1Fr3Jdxg7jAkW2KIEOekMfnkt0fSVqN4bnJrP4QI="}]},"maintainers":[{"name":"qianwp","email":"holycoder@163.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fastscan_1.0.6_1540720191814_0.339136459531153"},"_hasShrinkwrap":false}},"time":{"created":"2018-10-23T09:31:30.635Z","1.0.0":"2018-10-23T09:31:30.753Z","modified":"2022-05-02T05:08:23.955Z","0.0.1":"2018-10-23T10:24:08.269Z","1.0.1":"2018-10-23T10:27:28.330Z","1.0.2":"2018-10-24T05:29:54.904Z","1.0.3":"2018-10-24T06:03:47.828Z","1.0.4":"2018-10-25T07:49:32.809Z","1.0.5":"2018-10-27T15:26:27.676Z","1.0.6":"2018-10-28T09:49:52.042Z"},"maintainers":[{"name":"qianwp","email":"holycoder@163.com"}],"description":"quickly search by ahocorasick algorithm ","homepage":"https://github.com/pyloque/fastscan#readme","keywords":["ahocorasick","javascript","node"],"repository":{"type":"git","url":"git+https://github.com/pyloque/fastscan.git"},"author":{"name":"qianwp"},"bugs":{"url":"https://github.com/pyloque/fastscan/issues"},"license":"Apache-2.0","readme":"## FastScan\n苦于没有找到一个比较合适的敏感词过滤库，所以我自己花了点时间撸了一个。\n它基于广为人知的 ahocorasick 字符串匹配算法，使用原生的 js 实现，浏览器和服务端都可以使用。\n![](images/graph.png)\n\n## 演示地址\n[FastScan PlayGround](https://pyloque.github.io/fastscan/)\n\n## 安装方法\n```\n# 安装到当前项目\nnpm install --save fastscan\n```\n\n## 使用方法\n```\nimport FastScanner from fastscan\n\nvar words = [\"今日头条\"，\"微信\", \"支付宝\"]\nvar scanner = new FastScanner(words)\nvar content = \"今日头条小程序终于来了，这是继微信、支付宝、百度后，第四个推出小程序功能的App。猫眼电影率先试水，出现在今日头条。\"\nvar offWords = scanner.search(content)\nconsole.log(offWords)\nvar hits = scanner.hits(content)\nconsole.log(hits)\n\n-------------\n[ [ 0, '今日头条' ], [ 15, '微信' ], [ 18, '支付宝' ], [ 53, '今日头条' ] ]\n{ '今日头条': 2, '微信': 1, '支付宝': 1 }\n```\n\n## API\n\n1. 查询匹配的词汇以及所在字符串的位置 search(content, option={})\n2. 查询匹配词汇的命中数量 hits(content, options={})\n3. 临时动态增加词汇，不修正其它词汇的回溯指针 add(word)\n\n```\noptions = {quick: false, longest: false}\n```\n1. quick 选项表示快速模式，匹配到一个就立即返回\n2. longest 表示最长模式，同一个位置出现多个词汇(中国、中国人)，选择最长的一个(中国人)\n3. 默认匹配出所有的词汇，同一个位置可能会出现多个词汇\n\n## 性能\n项目代码使用原生的 js 实现，我开始非常担心词汇树的构建速度会不会太慢。经测试后发现虽然性能不算太快，不过也不是太差，对于绝大多数项目来说已经绰绰有余了。我分别测试了构造 20000～100000 个词汇的树结构，每个词汇随机在 10～20之间，耗时情况如下\n\n单词数|耗时\n-------|--------\n 20000 words   | 385ms   \n 40000 words   | 654ms   \n 60000 words   | 1108ms   \n 80000 words   | 1273ms   \n 100000 words   | 1659ms   \n\n如果你的词汇比较短小，构建树的速度还会更快。\n\n查询性能我并不担心，因为 ahocorasick 算法在词汇长度较短的情况下复杂度是 O(n)，性能和被过滤内容的长度呈线性变化。下面我使用 100000 词汇量构建的树分别对 20000 ～ 100000字的内容进行了过滤，耗时情况如下\n\n字数|耗时\n---|----\n| 20000 words   | 14ms   | \n| 40000 words   | 32ms   | \n| 60000 words   | 67ms   | \n| 80000 words   | 71ms   | \n| 100000 words   | 84ms   | \n\nfastscan 可以做到以迅雷不及掩耳的速度扫遍一幅 10w 字的长文，10w 大概就是一部中篇小说的长度了。如果你要扫百万字的长篇小说，那还是建议你分章分节来扫吧。\n\n内存占用也是需要考虑的点，内存对于 Node 程序来说本来就非常有限，如果因为敏感词树占据了太大的内存那是非常要不得的大问题。所以我也对内存占用进行了测试，下面是测试的结果\n\n词汇数|内存占用\n-----|-------\n| 0 words   | 14M   | \n| 20000 words   | 81M   | \n| 40000 words   | 135M   | \n| 60000 words   | 184M   | \n| 80000 words   | 234M   | \n| 100000 words   | 277M   | \n\n词汇量不是太大的话，这样的内存占用还是可以接受的。如果你对内存占用不满意，那就只能使用 Node 的 C 语言扩展来打造更高性能的库了，考虑到成本问题，恕我目前无能为力。\n\n![码洞](/images/qrcode.jpg)\n\n如果读者比较关心算法的原理和细节，扫一扫上面的二维码关注我的公众号「码洞」，后续我会编写相关文章来仔细讲解算法的原理，以及对 fastscan 项目代码的剖析。\n","readmeFilename":"README.md","users":{"yanghcc":true}}