{"_id":"@charlesy77/seo_defects","_rev":"12-79e6c3fa5a069771737b94064d61bb49","name":"@charlesy77/seo_defects","dist-tags":{"latest":"1.0.1"},"versions":{"0.0.1":{"name":"@charlesy77/seo_defects","version":"0.0.1","description":"Scan a HTML file and show all of the SEO defects","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"charlesy77"},"license":"ISC","dependencies":{"fs":"0.0.1-security","stream":"0.0.2","cheerio":"1.0.0","wait-for-stuff":"1.4.0"},"_id":"@charlesy77/seo_defects@0.0.1","_npmVersion":"5.8.0","_nodeVersion":"8.10.0","_npmUser":{"name":"charlesy77","email":"charlesy77@gmail.com"},"dist":{"integrity":"sha512-4iBe/UcoUpMtpw3rhsVGy8F1WsU7AhxQeT2csIZgj2lnTlzXvCGzteRjxEIIGPGvw72tYmGGSvylfFeDuqsewA==","shasum":"c486119677e6d9c121d9f09d973ff8ed8a0027a8","tarball":"https://registry.npmjs.org/@charlesy77/seo_defects/-/seo_defects-0.0.1.tgz","fileCount":2,"unpackedSize":4784,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHJqMuFjm2ic4tXDomdPnFy9F5CVULyr8ekUMa94wy4YAiEAkh9Hj5NRFATz1jbkVkRH9FHYR9mrWrxLqObkgwjRptI="}]},"maintainers":[{"name":"charlesy77","email":"charlesy77@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/seo_defects_0.0.1_1523461468626_0.7307163372312659"},"_hasShrinkwrap":false},"0.0.2":{"name":"@charlesy77/seo_defects","version":"0.0.2","description":"Scan a HTML file and show all of the SEO defects","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"charlesy77"},"license":"ISC","dependencies":{"fs":"0.0.1-security","stream":"0.0.2","cheerio":"1.0.0-rc.2","wait-for-stuff":"1.4.0"},"_id":"@charlesy77/seo_defects@0.0.2","_npmVersion":"5.8.0","_nodeVersion":"8.10.0","_npmUser":{"name":"charlesy77","email":"charlesy77@gmail.com"},"dist":{"integrity":"sha512-q0w+P+4bEHOBfuoYyHOpf/Z5phkOW4nNfPOBJgYZ4YmbrvBGNicAcFcoSzTzELePTgjjhuOEPdNX7h4AnaKWxA==","shasum":"71f2c10a067a14ca0d8bbbc15db86e621ae43b64","tarball":"https://registry.npmjs.org/@charlesy77/seo_defects/-/seo_defects-0.0.2.tgz","fileCount":2,"unpackedSize":4789,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGGeBJ/UT85RoattuyTYxeMEnGzlQZiLcw/2rWkO5e5cAiA46ORWmlMUWrjR02fX2SsTWx3iF/3ZA6AEcosKpiZA5A=="}]},"maintainers":[{"name":"charlesy77","email":"charlesy77@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/seo_defects_0.0.2_1523461894725_0.7337931752206996"},"_hasShrinkwrap":false},"0.0.3":{"name":"@charlesy77/seo_defects","version":"0.0.3","description":"Scan a HTML file and show all of the SEO defects","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"charlesy77"},"license":"ISC","dependencies":{"fs":"0.0.1-security","stream":"0.0.2","cheerio":"1.0.0-rc.2","wait-for-stuff":"1.4.0"},"_id":"@charlesy77/seo_defects@0.0.3","_npmVersion":"5.8.0","_nodeVersion":"8.10.0","_npmUser":{"name":"charlesy77","email":"charlesy77@gmail.com"},"dist":{"integrity":"sha512-j++MPX9MUQV8VeNX1ZbFp9N1aLdgQQQ6w43ovZI+PUfAEDAExzeLjWijWWehktczJkvlx0k6SQlA75ohskhGsQ==","shasum":"b3b807770702f9f297da6712b3bb547b7c638fb8","tarball":"https://registry.npmjs.org/@charlesy77/seo_defects/-/seo_defects-0.0.3.tgz","fileCount":3,"unpackedSize":4839,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4XqXsW/8qoA8O87jt7E+56wFJB35vApRAbuq6qoqopAIgEOCTWYi7QqryRV6cM6FOcu5fGiJ6CZCHV6W2M7s8G4w="}]},"maintainers":[{"name":"charlesy77","email":"charlesy77@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/seo_defects_0.0.3_1523462640829_0.9490490557119458"},"_hasShrinkwrap":false},"0.0.4":{"name":"@charlesy77/seo_defects","version":"0.0.4","description":"Scan a HTML file and show all of the SEO defects","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"charlesy77"},"license":"ISC","dependencies":{"fs":"0.0.1-security","stream":"0.0.2","cheerio":"1.0.0-rc.2","wait-for-stuff":"1.4.0"},"_id":"@charlesy77/seo_defects@0.0.4","_npmVersion":"5.8.0","_nodeVersion":"8.10.0","_npmUser":{"name":"charlesy77","email":"charlesy77@gmail.com"},"dist":{"integrity":"sha512-UBM4b1RHfTQPZgei0SR4AerS19WUucCB59RU5+1jn0VfNtZpKE5kNAW1SWtvqj/Tj7eVEvEXkWZYQf1MY2FaEg==","shasum":"4b3556c8fbac007843b51ba00754ef3fc3c8087b","tarball":"https://registry.npmjs.org/@charlesy77/seo_defects/-/seo_defects-0.0.4.tgz","fileCount":3,"unpackedSize":6493,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEy+Ah+1LPmpEZYhArfwiiUhRvLz7SOaZZWo6HW4+GimAiBJByBxtaTFQ9lJaOtOQ8k55DKzuepaz6Tws+hclb9KVQ=="}]},"maintainers":[{"name":"charlesy77","email":"charlesy77@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/seo_defects_0.0.4_1523465628001_0.13166623300967828"},"_hasShrinkwrap":false},"0.0.5":{"name":"@charlesy77/seo_defects","version":"0.0.5","description":"Scan a HTML file and show all of the SEO defects","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"charlesy77"},"license":"ISC","dependencies":{"fs":"0.0.1-security","stream":"0.0.2","cheerio":"1.0.0-rc.2","wait-for-stuff":"1.4.0"},"_id":"@charlesy77/seo_defects@0.0.5","_npmVersion":"5.8.0","_nodeVersion":"8.10.0","_npmUser":{"name":"charlesy77","email":"charlesy77@gmail.com"},"dist":{"integrity":"sha512-DgBlP/YgmuwVEex4agkhr0YoHpOSfmfbCV3+XhO/hhCBzXS13BjQiG2sYbke+PvjJHtMwyNGYBsFndmPLYByPw==","shasum":"a31f06786e56ac834ff3a1aa509accf96230ecc7","tarball":"https://registry.npmjs.org/@charlesy77/seo_defects/-/seo_defects-0.0.5.tgz","fileCount":3,"unpackedSize":6658,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC9BE8SG5bGQapSsiJliasRxRbqNPKVvas38uOuFOT2qAiAVD1VdGc+dOqa1hC0fNQbF3VsbjUXjDeG/plbJZbpRJg=="}]},"maintainers":[{"name":"charlesy77","email":"charlesy77@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/seo_defects_0.0.5_1523465905581_0.17475545243082924"},"_hasShrinkwrap":false},"0.0.6":{"name":"@charlesy77/seo_defects","version":"0.0.6","description":"Scan a HTML file and show all of the SEO defects","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"charlesy77"},"license":"ISC","dependencies":{"fs":"0.0.1-security","stream":"0.0.2","cheerio":"1.0.0-rc.2","wait-for-stuff":"1.4.0"},"_id":"@charlesy77/seo_defects@0.0.6","_npmVersion":"5.8.0","_nodeVersion":"8.10.0","_npmUser":{"name":"charlesy77","email":"charlesy77@gmail.com"},"dist":{"integrity":"sha512-G8c/OIHm4252+gpNNEn/L1U6tLaE+/pOjJfhJzvGgGOWyex0PCGAT4UQ265urKYT9WqtG64j+HZcsOdFUhNHUQ==","shasum":"851898ec8b81b35e5ebbcb580775ba1059f48180","tarball":"https://registry.npmjs.org/@charlesy77/seo_defects/-/seo_defects-0.0.6.tgz","fileCount":3,"unpackedSize":6615,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuT9+qpnd/I0DpFpT6nbWBMrwmOYLkZCirf15jYMYXTwIhAIimfd44n/pGFubWPLltNFRm1CLe2C7ruroOw/PKlQmi"}]},"maintainers":[{"name":"charlesy77","email":"charlesy77@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/seo_defects_0.0.6_1523466153585_0.7068483494888456"},"_hasShrinkwrap":false},"0.0.7":{"name":"@charlesy77/seo_defects","version":"0.0.7","description":"Scan a HTML file and show all of the SEO defects","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"charlesy77"},"license":"ISC","dependencies":{"fs":"0.0.1-security","stream":"0.0.2","cheerio":"1.0.0-rc.2","wait-for-stuff":"1.4.0"},"_id":"@charlesy77/seo_defects@0.0.7","_npmVersion":"5.8.0","_nodeVersion":"8.10.0","_npmUser":{"name":"charlesy77","email":"charlesy77@gmail.com"},"dist":{"integrity":"sha512-nPltxWcDhEBkVrEMebtUKCEZW9iOk6YD4qVC6pol9UBdayvISKS4cAK9YnK/MtXZdWejdUFv3118nsoSgJ8rlQ==","shasum":"5454041bb9d2fd770f1082b150bea59f5f327f15","tarball":"https://registry.npmjs.org/@charlesy77/seo_defects/-/seo_defects-0.0.7.tgz","fileCount":3,"unpackedSize":6615,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNDh2La5VnLBSlsfHSrDphFgklp139xw9cKAcMyqTNngIhAMfcHV4BGSK8mI+9Dy7OAhCxcxFxfsHVtTJg6MdFOfdy"}]},"maintainers":[{"name":"charlesy77","email":"charlesy77@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/seo_defects_0.0.7_1523466325627_0.6642860673720308"},"_hasShrinkwrap":false},"0.0.8":{"name":"@charlesy77/seo_defects","version":"0.0.8","description":"Scan a HTML file and show all of the SEO defects","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"charlesy77"},"license":"ISC","dependencies":{"fs":"0.0.1-security","stream":"0.0.2","cheerio":"1.0.0-rc.2","wait-for-stuff":"1.4.0"},"_id":"@charlesy77/seo_defects@0.0.8","_npmVersion":"5.8.0","_nodeVersion":"8.10.0","_npmUser":{"name":"charlesy77","email":"charlesy77@gmail.com"},"dist":{"integrity":"sha512-i3xH3StO0/KPm5pf2CWsgVg9KI+eKLQ6igBpnVA4v8WRzVPyHo2XZcSxc6NoYeL9w6urUzJlCgMVNSW2gmT5CQ==","shasum":"5a25d055ec8f227e7ddf40d7057a0e89baf45064","tarball":"https://registry.npmjs.org/@charlesy77/seo_defects/-/seo_defects-0.0.8.tgz","fileCount":3,"unpackedSize":6783,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDioxPRqKDFjhv60GSYjwYbNuGsMv8XQaLCOTslHqaGvAiEArCrsxNpCepUhzd43X/7mIYxZY4KdwfUm/LJMcNeudsk="}]},"maintainers":[{"name":"charlesy77","email":"charlesy77@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/seo_defects_0.0.8_1523466846853_0.6512163225293786"},"_hasShrinkwrap":false},"0.0.9":{"name":"@charlesy77/seo_defects","version":"0.0.9","description":"Scan a HTML file and show all of the SEO defects","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"charlesy77"},"license":"ISC","dependencies":{"fs":"0.0.1-security","stream":"0.0.2","cheerio":"1.0.0-rc.2","wait-for-stuff":"1.4.0"},"_id":"@charlesy77/seo_defects@0.0.9","_npmVersion":"5.8.0","_nodeVersion":"8.10.0","_npmUser":{"name":"charlesy77","email":"charlesy77@gmail.com"},"dist":{"integrity":"sha512-W6k3dZPTaFmvZo8Lfm49Ff/qeDB12wNXE9+pSnxYGXI1PZbuhQtcX8xKiHrl0tDUw4Ng19oU9HMmz9k5+GJUMQ==","shasum":"ef0a0281bc538bd39b645aebd7652714c07c0bb8","tarball":"https://registry.npmjs.org/@charlesy77/seo_defects/-/seo_defects-0.0.9.tgz","fileCount":3,"unpackedSize":6821,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbW51BlIUefsLea92ozpeJky2a3QqwHe8TfIatl8PwCgIhAJ1TI6ENGUAAEh2jSVTpcteXD3+GY4YzrABTEy07tP2p"}]},"maintainers":[{"name":"charlesy77","email":"charlesy77@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/seo_defects_0.0.9_1523466959314_0.918075661499999"},"_hasShrinkwrap":false},"1.0.0":{"name":"@charlesy77/seo_defects","version":"1.0.0","description":"Scan a HTML file and show all of the SEO defects","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"charlesy77"},"license":"ISC","dependencies":{"fs":"0.0.1-security","stream":"0.0.2","cheerio":"1.0.0-rc.2","wait-for-stuff":"1.4.0"},"_id":"@charlesy77/seo_defects@1.0.0","_npmVersion":"5.8.0","_nodeVersion":"8.10.0","_npmUser":{"name":"charlesy77","email":"charlesy77@gmail.com"},"dist":{"integrity":"sha512-wGwqgCoGhYWEnWYg0IYs2yK4eS79j75XqyKD5aOiL0kJrywxmQrNAhQg3zHycDT3eA6o0cSJ6+BV68TdDW+e8g==","shasum":"781f3acb8ec5bc0718893a293ceedc334b528b53","tarball":"https://registry.npmjs.org/@charlesy77/seo_defects/-/seo_defects-1.0.0.tgz","fileCount":3,"unpackedSize":6897,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB7VDfkV6UGjsEh1EMq1Z7bOecR+iIER2YFKiD5IfH6xAiBx/Yfp1KF2WHf36forNLf4E9vGpK5Vy6OoMx5PkLX3Eg=="}]},"maintainers":[{"name":"charlesy77","email":"charlesy77@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/seo_defects_1.0.0_1523467517614_0.649306038799055"},"_hasShrinkwrap":false},"1.0.1":{"name":"@charlesy77/seo_defects","version":"1.0.1","description":"Scan a HTML file and show all of the SEO defects","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"charlesy77"},"license":"ISC","dependencies":{"fs":"0.0.1-security","stream":"0.0.2","cheerio":"1.0.0-rc.2","wait-for-stuff":"1.4.0"},"_id":"@charlesy77/seo_defects@1.0.1","_npmVersion":"5.8.0","_nodeVersion":"8.10.0","_npmUser":{"name":"charlesy77","email":"charlesy77@gmail.com"},"dist":{"integrity":"sha512-jU2weI/j1tIEDjQ8bFnMmf9ynPiM5+tUstY0FnKoG1vF/tCEMOmK5gxay/7pc6WDCluNlOyzCpvvpzoLgoKSbg==","shasum":"d0fd64274b9c1d71ebc1bf4c8bb412051baafeaa","tarball":"https://registry.npmjs.org/@charlesy77/seo_defects/-/seo_defects-1.0.1.tgz","fileCount":3,"unpackedSize":6899,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHC24wwEk/vr4TAFEzs0v6HDQULrkxoHqDP3/9uQ4eoCAiA526O/sacT83V/MguE6FliZPmVWHucDHyAAUIEVww7fQ=="}]},"maintainers":[{"name":"charlesy77","email":"charlesy77@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/seo_defects_1.0.1_1523468849671_0.8852325508316274"},"_hasShrinkwrap":false}},"time":{"created":"2018-04-11T15:44:28.521Z","0.0.1":"2018-04-11T15:44:28.677Z","modified":"2022-04-04T22:32:20.506Z","0.0.2":"2018-04-11T15:51:34.822Z","0.0.3":"2018-04-11T16:04:00.909Z","0.0.4":"2018-04-11T16:53:48.070Z","0.0.5":"2018-04-11T16:58:25.668Z","0.0.6":"2018-04-11T17:02:33.850Z","0.0.7":"2018-04-11T17:05:25.703Z","0.0.8":"2018-04-11T17:14:06.943Z","0.0.9":"2018-04-11T17:15:59.363Z","1.0.0":"2018-04-11T17:25:17.705Z","1.0.1":"2018-04-11T17:47:29.793Z"},"maintainers":[{"name":"charlesy77","email":"charlesy77@gmail.com"}],"description":"Scan a HTML file and show all of the SEO defects","author":{"name":"charlesy77"},"license":"ISC","readme":"# @charlesy77/seo_defects\n\n> Scan a HTML file and show all of the SEO defects\n\n```\nPre-defined SEO rules:\n1. Detect if any <img /> tag without alt attribute\n2. Detect if any <a /> tag without rel attribute\n3. In <head> tag\n   i. Detect if header doesn’t have <title> tag\n   ii. Detect if header doesn’t have <meta name=“descriptions” ... /> tag\n   iii. Detect if header doesn’t have <meta name=“keywords” ... /> tag\n4. Detect if there’re more than 15 <strong> tag in HTML (15 is a value should be configurable by user)\n5. Detect if a HTML have more than one <H1> tag.\n```\n\n## Usage\n\n```js\n// Import the module\nvar seo_defects = require('@charlesy77/seo_defects');\n\n// Rules can be chained in any order.\nvar Detector = new seo_defects.r1(\n    new seo_defects.r2(\n        new seo_defects.r3(\n            new seo_defects.r4(\n                new seo_defects.r5(),\n                {limit: 15}  // Rule specifed config is given if necessary.\n            )\n        )\n    )\n);\n\n// Input from file and output to console\nDetector.scan(\n    new seo_defects.reader(sample_html_path),\n    new seo_defects.writter()\n);\n\n// Input from file and output to file\nDetector.scan(\n    new seo_defects.reader(sample_html_path),\n    new seo_defects.writter(resut_path_1)\n);\n\n// Input from file and output to stream\nDetector.scan(\n    new seo_defects.reader(sample_html_path),\n    new seo_defects.writter(fs.createWriteStream(resut_path_2)\n);\n\n// Input from stream and output to stream\nDetector.scan(\n    new seo_defects.reader(fs.createReadStream(sample_html_path)),\n    new seo_defects.writter(fs.createWriteStream(resut_path_2))\n);\n\n// Input from stream and output to file\nDetector.scan(\n    new seo_defects.reader(fs.createReadStream(sample_html_path)),\n    new seo_defects.writter(resut_path_2)\n);\n```\n\noutputs\n\n```\nThere are 2 <a> tags without rel attribute.\nThis HTML without <title> tag\nThis HTML without <meta> tag named \"descriptions\"\nThis HTML without <meta> tag named \"keywords\"\n```\n\n## Install\n\nWith [npm](https://npmjs.org/) installed, run\n\n```\n$ npm install @charlesy77/seo_defects\n```\n\n## License\n\nISC\n\n","readmeFilename":"README.md"}