{"_id":"@cinthyasegura/md-links","_rev":"5-491e268cc0369f166d9660141f0d49d8","name":"@cinthyasegura/md-links","dist-tags":{"latest":"1.3.0"},"versions":{"1.0.0":{"name":"@cinthyasegura/md-links","version":"1.0.0","description":"Validate and stats of Markdown links @ Laboratoria","main":"lib/index.js","keywords":["javascript","npm","jest"],"license":"ISC","scripts":{"build":"babel src -d lib","eslint":"eslint --ext .js src/ test/","test":"jest --coverage"},"repository":{"type":"git","url":"git+https://github.com/cinthyasegura/LIM008-fe-md-links.git"},"author":{"name":"Cinthya Segura"},"bugs":{"url":"https://github.com/cinthyasegura/LIM008-fe-md-links/issues"},"homepage":"https://github.com/cinthyasegura/LIM008-fe-md-links#readme","bin":{"md-links":"lib/cli.js"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.3.4","@babel/plugin-transform-modules-commonjs":"^7.2.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^24.1.0","eslint":"^5.15.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.16.0","eslint-plugin-jest":"^22.1.2","jest":"^24.1.0","regenerator-runtime":"^0.13.1"},"dependencies":{"node-fetch":"^2.3.0","social-network":"git+https://github.com/cinthyasegura/LIM008-fe-md-links.git"},"gitHead":"e4b6d439fe783685986577d8d295c0814930831d","_id":"@cinthyasegura/md-links@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"cinthyaless","email":"cinthyaless@gmail.com"},"dist":{"integrity":"sha512-vw7RcHC1DHo1Sbqp6833MzMUZG6D+d4wXZ1dDowlcklo1YTMJe93dw6QGclcLjwBcqrRHch3dnPN/li91pcWvg==","shasum":"a2b9d8c60f5bf103adc5a209c8b8c4d77cf4209a","tarball":"https://registry.npmjs.org/@cinthyasegura/md-links/-/md-links-1.0.0.tgz","fileCount":28,"unpackedSize":39406,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJchK92CRA9TVsSAnZWagAATmkP/3OSM7IIGaIDKoiwuB/O\nrAkpcve7Knsf+KmWvrDreUiH5/9dDbULHpuUbi91b3/k17j932Wnic8m5P9Y\nm7Y0UhENLP/OMDybZRoIKB+F7zCypRxIHDwVlA9IS+Vtku9HcexdqlIr/nJi\nMB+hbOZDfgpdVqWQpPYnu6HD37mgUq84DBTzzk47+xsDQx1bxeiiXoqpqCHy\nHLN3jiDjuVRS4WjAHtxnrEGxv55SVoX7yZdtGjv8EF+/P15TrqCgnJ3Bqzu+\nfhCTszFtxkbmjvXTcq+MCzgkf+fJq7KpvnZBjIZb7kS7wnIuyvwxYxbgbd8o\nPLBaEMP6weH1Z/18iwGF8uPLxtbPDHXCGO2jsY9rqCTT5g8zSnGyPARN9p3Q\nYjff7XRTfJwpCMNcA4rTv0Cdb0sjA3+ovTmTcN0SZ0pAM4dLf2rmW+7bzT1k\ndyPP211tQkB7F4HnPzxmAvbsuST0WXqz1otukDaprocMp4vU60iATFCnQGG1\nJxFYUNK2ytL0TzjSAKfY4I46lJyCDn8dxTup5e1dX0u7bzXssq+2Ovzi2TB+\nlYtN0xiIA9BMZ+6fx2oZKTICUNVIvndp6OO6JoKixFOuEw3Fq9ZtseFU9vwg\nn+nqfTdHI5OTIFh4lOftJ9lAj52u42pZonpdN3LEOZo+ZBGExrKe14FBydeO\nS1lx\r\n=muQI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBvI6fuPylS8HL0UvrKxcvqczwn2+kC1juJo7XzZ66XoAiB8NqME/izC12sXv2MwPVc1+OrdauqU43y608JYNL2sMA=="}]},"maintainers":[{"name":"cinthyaless","email":"cinthyaless@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/md-links_1.0.0_1552199541853_0.006480355655054781"},"_hasShrinkwrap":false},"1.0.1":{"name":"@cinthyasegura/md-links","version":"1.0.1","description":"Validate and stats of Markdown links @ Laboratoria","main":"lib/index.js","keywords":["javascript","npm","jest"],"license":"ISC","scripts":{"build":"babel src -d lib","eslint":"eslint --ext .js src/ test/","test":"jest --coverage"},"repository":{"type":"git","url":"git+https://github.com/cinthyasegura/LIM008-fe-md-links.git"},"author":{"name":"Cinthya Segura"},"bugs":{"url":"https://github.com/cinthyasegura/LIM008-fe-md-links/issues"},"homepage":"https://github.com/cinthyasegura/LIM008-fe-md-links#readme","bin":{"md-links":"lib/cli.js"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.3.4","@babel/plugin-transform-modules-commonjs":"^7.2.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^24.1.0","eslint":"^5.15.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.16.0","eslint-plugin-jest":"^22.1.2","jest":"^24.1.0","regenerator-runtime":"^0.13.1"},"dependencies":{"node-fetch":"^2.3.0","social-network":"git+https://github.com/cinthyasegura/LIM008-fe-md-links.git"},"gitHead":"d21f612703e712438afbc5a7fbb590d21c2732a6","_id":"@cinthyasegura/md-links@1.0.1","_nodeVersion":"10.13.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-SMW5+bebqUbsB1Ad1NHQxb3lP8DrrF+wsEl+bwEOeZbFc6Fd2x95I2xulxCc/w6fLrQUzz7z5xFs/3Xk2hhIrg==","shasum":"552efe9e969442a1a5c9903034e659f6281d310d","tarball":"https://registry.npmjs.org/@cinthyasegura/md-links/-/md-links-1.0.1.tgz","fileCount":24,"unpackedSize":35044,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJchcCmCRA9TVsSAnZWagAA+QQQAIe4wFiak9vM5BBiyG0C\n8zDsO/RLEDuwYA9MI0+IezOgOxHLoM3tKMQELIO6qxu61unsBHOnb1301LBr\nO0J8784M/Jkn4u7+CE6Aki8jCkGDjGdsogwr5EOniCK5jI/5Pp7E8nuLFZuM\nh1bUbcy0nleq1Ms5FzAOno6XH11dMeWLb+a2S0HiTPyJYwHlOCCy/nHOZEss\nwSIxaf2XMDjqp/rDpsHekgtAlPWoxbu3+oIoWVPkC2Mo6xaec/Gq17hPk0Dq\nABpb0cAm5f7fqFdjsxevAoyE32JLu5HL+lDayuvVIQzp/7tyF2m3J6Mq7y4S\nl8SvojnoTyYNf01bSzsZlNPqp5ZQ+kH1o8+sRPCwMU0YPTHLF8g+xOz60t0l\nHUaDmkN38UoFXiOj4k1y1H3EGyK5BuBJl33Ao6rSw6d5nVbn20rEtYWcUzQC\np5cGCTiYpsuwwu82aJ7PyQWeKywdU5E7ZcAYeoXa5JqseXJMmLazQYGULAob\nemSeOPt7hg0g4LeTNlOL4Kh2JNhFd0wCHXKOthqs7TNbFOg0HahewVMFisH7\n8G02ta1+REwpUKsIfg5tbUbGb/Ns4vou7n+VTlwo5/ZEkEEynBJCoHKutUku\nmw5e+c1zhMbOxicwBtUmbLIxAkxTSndTZXTMxLnoCyW2NqXYtxw2KSR02s01\nr3Xx\r\n=jhRt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMafn7NRVzoTra3y+DwP1EzSiXckr3A7NDXx7Qw9RS3QIgNv7g0/daVg6weT0KxjX/gTh/CxULBmLLpU88O4i5O/w="}]},"maintainers":[{"name":"cinthyaless","email":"cinthyaless@gmail.com"}],"_npmUser":{"name":"cinthyaless","email":"cinthyaless@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/md-links_1.0.1_1552269477144_0.8815225246978495"},"_hasShrinkwrap":false},"1.1.0":{"name":"@cinthyasegura/md-links","version":"1.1.0","description":"Validate and stats of Markdown links @ Laboratoria","main":"lib/index.js","keywords":["javascript","npm","jest"],"license":"ISC","scripts":{"build":"babel src -d lib","eslint":"eslint --ext .js src/ test/","test":"jest --coverage"},"repository":{"type":"git","url":"git+https://github.com/cinthyasegura/LIM008-fe-md-links.git"},"author":{"name":"Cinthya Segura"},"bugs":{"url":"https://github.com/cinthyasegura/LIM008-fe-md-links/issues"},"homepage":"https://github.com/cinthyasegura/LIM008-fe-md-links#readme","bin":{"md-links":"lib/cli.js"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.3.4","@babel/plugin-transform-modules-commonjs":"^7.2.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^24.1.0","eslint":"^5.15.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.16.0","eslint-plugin-jest":"^22.1.2","jest":"^24.1.0","regenerator-runtime":"^0.13.1"},"dependencies":{"node-fetch":"^2.3.0","social-network":"git+https://github.com/cinthyasegura/LIM008-fe-md-links.git"},"gitHead":"8ff36f0c59759f2b3e29a01bcd1f8f8ec10990a2","_id":"@cinthyasegura/md-links@1.1.0","_nodeVersion":"10.13.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-O0BUWXNd6Dbix9ul+BICtm1XWibtt/JH6xf+/798J81uOv3qV5fO41+Ttv29wTT8uML8MAFsM8KTIQZC4OjUoQ==","shasum":"8485de5173db1c8f66b2c019614b54cfe0a9d268","tarball":"https://registry.npmjs.org/@cinthyasegura/md-links/-/md-links-1.1.0.tgz","fileCount":24,"unpackedSize":34857,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcheS2CRA9TVsSAnZWagAAwgwP/3q+7IBeyOunvDSNbhlY\nTmmX7ZncaZIr5bMaYgcs7lpB/KkwpD9cWCKLuUIB6JJEePuEg2U0nhX2pNOz\n5o5+6vREvvViatXLjiDPkUzPeSElJYgiB7De0OFSwxSkN42gQ5gg9TfEkrkY\nxsMs4k3M+piAmRsl2ZC+YGAbnl5gPlLZxnLES2Av9uigZzQmmXUptcymDPqq\nRq6O9GB5rDSwTbn3EZml5q/BlPcLqH6irRV/lG33huP/Ds13WHjU7sxOYw4h\nnCLAny4lWfs9FEBEhK426kvLRC8egoAt3I5K/eDVejcly06Yf9I5TT/n8q7w\nHHBBe7nsCIHVZOwmyQkGY0Iut8X7qg/a+S4cdqaaK/CVenfohosGVRIKHees\nTiQTK34QMETqJwYAuYP20M05bzehOYRXDcTiznsdr1IvmcZyjBY5TuaPKh1s\nlGHrckC/0lW4aUT86H1PKU4JDaa1rfpD+hgDLX70dibPWWMdz+Me8xbE3qo2\nTW0xmPSE4oLR7ES0znndUS8VsHSwDvUpAVYrZqZH0aFPHpO4A1FyieTaggqY\nzOr+cOJYc+i8HCKjDNCpbE5f4MkuHEDSBt6CABQBnrXvmIcF89ideTTNjLRs\n6QcXPJFj5PHwGkZHZAZEX4QVDdMLN0kVlXhGXvqxf5fy3dFvYn5V+TPI879r\n2qBn\r\n=nSUm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGONRtSaBuMoYIpDbAmBNZfAs84DzIxQjkfhwzjEwZ+AIhANHfJ5B0HxlJUQ3a5X9TBTSDEI6Z/5Ove+79jk7snhaP"}]},"maintainers":[{"name":"cinthyaless","email":"cinthyaless@gmail.com"}],"_npmUser":{"name":"cinthyaless","email":"cinthyaless@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/md-links_1.1.0_1552278709521_0.6183128118875882"},"_hasShrinkwrap":false},"1.2.0":{"name":"@cinthyasegura/md-links","version":"1.2.0","description":"Validate and stats of Markdown links @ Laboratoria","main":"lib/index.js","keywords":["javascript","npm","jest"],"license":"ISC","scripts":{"build":"babel src -d lib","eslint":"eslint --ext .js src/ test/","test":"jest --coverage"},"repository":{"type":"git","url":"git+https://github.com/cinthyasegura/LIM008-fe-md-links.git"},"author":{"name":"Cinthya Segura"},"bugs":{"url":"https://github.com/cinthyasegura/LIM008-fe-md-links/issues"},"homepage":"https://github.com/cinthyasegura/LIM008-fe-md-links#readme","bin":{"md-links":"lib/cli.js"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.3.4","@babel/plugin-transform-modules-commonjs":"^7.2.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^24.1.0","eslint":"^5.15.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.16.0","eslint-plugin-jest":"^22.1.2","jest":"^24.1.0","regenerator-runtime":"^0.13.1"},"dependencies":{"node-fetch":"^2.3.0","social-network":"git+https://github.com/cinthyasegura/LIM008-fe-md-links.git"},"gitHead":"8ff36f0c59759f2b3e29a01bcd1f8f8ec10990a2","_id":"@cinthyasegura/md-links@1.2.0","_nodeVersion":"10.13.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-DwGUy1xVupDy+qwKaV8Jta+YZ/DI/tDKcd43jJoyGhJnzIU/3ypO2PM+SXVu0cGhvJAOayZVKtFLt0iNvX1kMQ==","shasum":"f63ce6e3c0383eaed7869d0648dc44f6a07b7a88","tarball":"https://registry.npmjs.org/@cinthyasegura/md-links/-/md-links-1.2.0.tgz","fileCount":24,"unpackedSize":34950,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcheaXCRA9TVsSAnZWagAAHlAP/2D86lU2hjOEQs2+F5i8\nNwZZ4jr9GXkD+q8xPRG65ohxsrl5ilDGCLIu4GBYSLTOS6kEgLpj40D/zyod\nCsJG8yIP9v2s1HOpi+WLGoLGjwC/ANA5wDgXF2Dgaz2iBALhNMkhEo5CPxBR\nRVRlndu3sVTD/HhfZREwuRafQQtY7ecWXCxuzhN7m9LHdI0CFxM6GVdFnEFa\ndAYBciFv/86L8GhN43gf/PBFvFHKS3THJtw2uzKLqxXWrwt/qHAuSR4UNmmB\nj/cBR4nTEH219TFvkCDyEnPT/twbL6e3eHnp7C+T75GFR0NRyL2UnA0uehou\nqEvr3xfebxPbFzNRGv6YVlzACCEuZnPuJ76Zt77A/H8qcM/POWSysVXJ8I1a\ndSYlSbwxJoJ/fZ91QpQVSlVLiHnqphOekTiqUNAxQT7pMry3lNfagxvVfcbT\nr1gd7GOVfLl3NdtaCWZclPMJvlm+Hvmv5jHLtYHXkwjbgiosub185s3QIC/N\nSbegCGOqNAtfJa9KTo+vAxWfl8DvuL/vjU8hgplAn4bA34wDLoxUCOGwKxwr\n0BaogF+gI4R9MylJvZ3Ig7vaB0fjFl3/UbCcIKwgYD/tYglcf6Q9I4reDHqV\n2ZlUdYTGJ1n1DrAWJ7nbL2/oVOYZw3NccK0cKx2MBm5DfmEh1sUaJk7EYRmL\n769g\r\n=tFMW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBOSq01fhNT/IVOgjZvk3UwsaIGON+zPix5TWgfYBNT+AiEArId6Ekx7leFhgNXpoSyv9ThoSxufqM/3JfvqsaifNeY="}]},"maintainers":[{"name":"cinthyaless","email":"cinthyaless@gmail.com"}],"_npmUser":{"name":"cinthyaless","email":"cinthyaless@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/md-links_1.2.0_1552279190784_0.9639604867198521"},"_hasShrinkwrap":false},"1.3.0":{"name":"@cinthyasegura/md-links","version":"1.3.0","description":"Validate and stats of Markdown links @ Laboratoria","main":"lib/index.js","keywords":["javascript","npm","jest"],"license":"ISC","scripts":{"build":"babel src -d lib","eslint":"eslint --ext .js src/ test/","test":"jest --coverage"},"repository":{"type":"git","url":"git+https://github.com/cinthyasegura/LIM008-fe-md-links.git"},"author":{"name":"Cinthya Segura"},"bugs":{"url":"https://github.com/cinthyasegura/LIM008-fe-md-links/issues"},"homepage":"https://github.com/cinthyasegura/LIM008-fe-md-links#readme","bin":{"md-links":"lib/cli.js"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.3.4","@babel/plugin-transform-modules-commonjs":"^7.2.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^24.1.0","eslint":"^5.15.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.16.0","eslint-plugin-jest":"^22.1.2","jest":"^24.1.0","regenerator-runtime":"^0.13.1"},"dependencies":{"node-fetch":"^2.3.0","social-network":"git+https://github.com/cinthyasegura/LIM008-fe-md-links.git"},"gitHead":"8ff36f0c59759f2b3e29a01bcd1f8f8ec10990a2","_id":"@cinthyasegura/md-links@1.3.0","_nodeVersion":"10.13.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-cpnk8FWu+8yKGyyuE2CA4bZ67gj75GN2qSO+OQud7F8gdWCig2pq9ZzdBQ0ow75RLNpm5VyOXYoHvED8Ahp6ww==","shasum":"f70fc393c0654f709f727c3271990ee3d110f291","tarball":"https://registry.npmjs.org/@cinthyasegura/md-links/-/md-links-1.3.0.tgz","fileCount":24,"unpackedSize":34916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcheklCRA9TVsSAnZWagAA93wQAKAXLJznhBWgiOKF2+r7\n3hcpzb9hMfSxGZ2FHZuwEys0o1E4T4E8s2hLte2S38ZKlAFbfOIoopsJ1HZY\nSzC8R92/JyZbPby4SOZYutjYEQi8Y4izVePFF16jdmuzKqUy8v31hwxWzQF5\nRgt77girEwjko18+rQxFVEo5gyIGxL57LkYDAFM9+JZbspfJ3tJYuKvJ/0ji\nZ1Un2bKpaEVCHWoW0dVk7uC4ZW1+FGTVijq+7b6Qunh6ubUHJLs0afnPAmnt\ni30QD63UlEgh+skoBZKmD43oBJ5EVZHc0aGKw3MXxea35EYufBM2TJ6l8d93\nWUG8XWjwnAaL5Dzq0nd5GEUaQTxYVGpIlP2Z1CsaaBU9ZtmQoxkNpouz65bO\n+dzpUmP7yjcblS4cDg6EM1kRG/51El5XsBBb6iLX/+dDbVXVrhc3sbz8qkZm\nfcVf3BY5riVNcx7wzW+kqiqgvsHaCphp/7vpqm9TeOLZUNm9QEK4Pvi3P+fq\nYvuEQ69PsMgKwmoETUe9ROO+nzJuMc/3KuUIQ+rM7542KBDJUTX3Y1KCnsug\ne5BqQxXldtxUrXFF0Bf3gdQjYIzMI6Ustqvfnr4KR4Ms68JhzSeZ+6EAKAKM\nyO3IDbD7kZ1MN2hg7KuB5gmhfwzcN9PNssNuBK2JRgFAeXU5m5Pw/PycKCSx\nEMSf\r\n=IYSd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTFWerktdw1uUgP0RaWckXf+eAo7kSPqQf9bLYBv3KcAIhAJK0j4OY/VSHmCjv00nF3QRi5CXJzdYBd4mrxnBs8PTm"}]},"maintainers":[{"name":"cinthyaless","email":"cinthyaless@gmail.com"}],"_npmUser":{"name":"cinthyaless","email":"cinthyaless@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/md-links_1.3.0_1552279844795_0.4544548132035675"},"_hasShrinkwrap":false}},"time":{"created":"2019-03-10T06:32:21.655Z","1.0.0":"2019-03-10T06:32:22.005Z","modified":"2022-04-04T23:00:15.608Z","1.0.1":"2019-03-11T01:57:57.328Z","1.1.0":"2019-03-11T04:31:49.743Z","1.2.0":"2019-03-11T04:39:50.927Z","1.3.0":"2019-03-11T04:50:44.983Z"},"maintainers":[{"name":"cinthyaless","email":"cinthyaless@gmail.com"}],"description":"Validate and stats of Markdown links @ Laboratoria","homepage":"https://github.com/cinthyasegura/LIM008-fe-md-links#readme","keywords":["javascript","npm","jest"],"repository":{"type":"git","url":"git+https://github.com/cinthyasegura/LIM008-fe-md-links.git"},"author":{"name":"Cinthya Segura"},"bugs":{"url":"https://github.com/cinthyasegura/LIM008-fe-md-links/issues"},"license":"ISC","readme":"# Markdown Links\r\n\r\n## Preámbulo\r\n\r\n[Markdown](https://es.wikipedia.org/wiki/Markdown) es un lenguaje de marcado\r\nligero muy popular entre developers. Es usado en muchísimas plataformas que\r\nmanejan texto plano (GitHub, foros, blogs, ...), y es muy común\r\nencontrar varios archivos en ese formato en cualquier tipo de repositorio\r\n(empezando por el tradicional `README.md`).\r\n\r\nEstos archivos `Markdown` normalmente contienen _links_ (vínculos/ligas) que\r\nmuchas veces están rotos o ya no son válidos y eso perjudica mucho el valor de\r\nla información que se quiere compartir.\r\n\r\nDentro de una comunidad de código abierto, nos han propuesto crear una\r\nherramienta usando [Node.js](https://nodejs.org/), que lea y analice archivos\r\nen formato `Markdown`, para verificar los links que contengan y reportar\r\nalgunas estadísticas.\r\n\r\n![md-links](https://user-images.githubusercontent.com/110297/42118443-b7a5f1f0-7bc8-11e8-96ad-9cc5593715a6.jpg)\r\n\r\n## Introducción\r\n\r\n[Node.js](https://nodejs.org/es/) es un entorno de ejecución para JavaScript\r\nconstruido con el [motor de JavaScript V8 de Chrome](https://developers.google.com/v8/).\r\nEsto nos va a permitir ejecutar JavaScript en el entorno del sistema operativo,\r\nya sea tu máquina o un servidor, lo cual nos abre las puertas para poder\r\ninteractuar con el sistema en sí, archivos, redes, ...\r\n\r\nEn este proyecto nos alejamos un poco del navegador para construir un programa\r\nque se ejecute usando Node.js, donde aprenderemos sobre cómo interactuar con el\r\nsistema archivos, con el entorno (_proceso_, _env_, _stdin/stdout/stderr_), ...\r\n\r\n## Objetivos\r\n\r\nEl objetivo práctico de este proyecto es que aprendas cómo crear tu propia\r\n**librería** (o biblioteca - _library_) en JavaScript.\r\n\r\nDiseñar tu propia librería es una experiencia fundamental para cualquier\r\ndesarrollador porque que te obliga a pensar en la interfaz (API) de tus\r\n_módulos_ y cómo será usado por otros developers. Debes tener especial\r\nconsideración en peculiaridades del lenguaje, convenciones y buenas prácticas.\r\n\r\nTópicos: [Node.js](https://nodejs.org/en/),\r\n[módulos (CommonJS)](https://nodejs.org/docs/latest-v0.10.x/api/modules.html),\r\n[file system](https://nodejs.org/api/fs.html),\r\n[path](https://nodejs.org/api/path.html),\r\n[http.get](https://nodejs.org/api/http.html#http_http_get_options_callback),\r\nparsing,\r\n[markdown](https://daringfireball.net/projects/markdown/syntax), CLI,\r\n[npm-scripts](https://docs.npmjs.com/misc/scripts),\r\n[semver](https://semver.org/), ...\r\n\r\n## Consideraciones generales\r\n\r\nEste proyecto se debe \"resolver\" de manera individual.\r\n\r\nLa librería debe estar implementada en JavaScript para ser ejecutada con\r\nNode.js. **Está permitido usar librerías externas**.\r\n\r\n## Parte obligatoria\r\n\r\nTu módulo debe ser instalable via `npm install <github-user>/md-links`. Este\r\nmódulo debe incluir tanto un _ejecutable_ que podamos invocar en la línea de\r\ncomando como una interfaz que podamos importar con `require` para usarlo\r\nprogramáticamente.\r\n\r\nLos tests unitarios deben cubrir un mínimo del 70% de _statements_, _functions_,\r\n_lines_ y _branches_. Te recomendamos explorar [Jest](https://jestjs.io/)\r\npara tus pruebas unitarias.\r\n\r\nPara comenzar este proyecto tendrás que hacer un _fork_ y _clonar_ este\r\nrepositorio.\r\n\r\nAntes de comenzar a codear, es necesario que pensemos en la arquitectura y\r\nboilerplate del proyecto, por lo que `antes de que empieces tu planificacion\r\ny a trabajar en la funcionalidad de tu proyecto deberás de haber\r\ncreado tu boilerplate y tus tests`. Esto debería quedar\r\ndetallado en tu repo y haberte asegurado de haber recibido feedback de uno\r\nde tus coaches. Una vez hayas terminado de definir la arquitectura y los tests\r\nde tu proyecto estarás lista para iniciar con tu **planificacion** por lo cual\r\ndeberas de hacer uso de una serie de _issues_ y _milestones_ para priorizar\r\ntus tareas y crear un _project_ para organizar el trabajo y poder hacer\r\nseguimiento de tu progreso.\r\n\r\nDentro de cada _milestone_ se crearán y asignarán los _issues_ que cada quien\r\nconsidere necesarios.\r\n\r\n### JavaScript API\r\n\r\nEl módulo debe poder importarse en otros scripts de Node.js y debe ofrecer la\r\nsiguiente interfaz:\r\n\r\n#### `mdLinks(path, options)`\r\n\r\n##### Argumentos\r\n\r\n- `path`: Ruta absoluta o relativa al archivo o directorio. Si la ruta pasada es\r\n  relativa, debe resolverse como relativa al directorio desde donde se invoca\r\n  node - _current working directory_).\r\n- `options`: Un objeto con las siguientes propiedades:\r\n  * `validate`: Booleano que determina si se desea validar los links\r\n    encontrados.\r\n\r\n##### Valor de retorno\r\n\r\nLa función debe retornar una promesa (`Promise`) que resuelva a un arreglo\r\n(`Array`) de objetos (`Object`), donde cada objeto representa un link y contiene\r\nlas siguientes propiedades:\r\n\r\n- `href`: URL encontrada.\r\n- `text`: Texto que aparecía dentro del link (`<a>`).\r\n- `file`: Ruta del archivo donde se encontró el link.\r\n\r\n#### Ejemplo\r\n\r\n```js\r\nconst mdLinks = require(\"md-links\");\r\n\r\nmdLinks(\"./some/example.md\")\r\n  .then(links => {\r\n    // => [{ href, text, file }]\r\n  })\r\n  .catch(console.error);\r\n\r\nmdLinks(\"./some/example.md\", { validate: true })\r\n  .then(links => {\r\n    // => [{ href, text, file, status, ok }]\r\n  })\r\n  .catch(console.error);\r\n\r\nmdLinks(\"./some/dir\")\r\n  .then(links => {\r\n    // => [{ href, text, file }]\r\n  })\r\n  .catch(console.error);\r\n```\r\n\r\n### CLI (Command Line Interface - Interfaz de Línea de Comando)\r\n\r\nEl ejecutable de nuestra aplicación debe poder ejecutarse de la siguiente\r\nmanera a través de la terminal:\r\n\r\n`md-links <path-to-file> [options]`\r\n\r\nPor ejemplo:\r\n\r\n```sh\r\n$ md-links ./some/example.md\r\n./some/example.md http://algo.com/2/3/ Link a algo\r\n./some/example.md https://otra-cosa.net/algun-doc.html algún doc\r\n./some/example.md http://google.com/ Google\r\n```\r\n\r\nEl comportamiento por defecto no debe validar si las URLs responden ok o no,\r\nsolo debe identificar el archivo markdown (a partir de la ruta que recibe como\r\nargumento), analizar el archivo Markdown e imprimir los links que vaya\r\nencontrando, junto con la ruta del archivo donde aparece y el texto\r\nque hay dentro del link (truncado a 50 caracteres).\r\n\r\n#### Options\r\n\r\n##### `--validate`\r\n\r\nSi pasamos la opción `--validate`, el módulo debe hacer una petición HTTP para\r\naveriguar si el link funciona o no. Si el link resulta en una redirección a una\r\nURL que responde ok, entonces consideraremos el link como ok.\r\n\r\nPor ejemplo:\r\n\r\n```sh\r\n$ md-links ./some/example.md --validate\r\n./some/example.md http://algo.com/2/3/ ok 200 Link a algo\r\n./some/example.md https://otra-cosa.net/algun-doc.html fail 404 algún doc\r\n./some/example.md http://google.com/ ok 301 Google\r\n```\r\n\r\nVemos que el _output_ en este caso incluye la palabra `ok` o `fail` después de\r\nla URL, así como el status de la respuesta recibida a la petición HTTP a dicha\r\nURL.\r\n\r\n##### `--stats`\r\n\r\nSi pasamos la opción `--stats` el output (salida) será un texto con estadísticas\r\nbásicas sobre los links.\r\n\r\n```sh\r\n$ md-links ./some/example.md --stats\r\nTotal: 3\r\nUnique: 3\r\n```\r\n\r\nTambién podemos combinar `--stats` y `--validate` para obtener estadísticas que\r\nnecesiten de los resultados de la validación.\r\n\r\n```sh\r\n$ md-links ./some/example.md --stats --validate\r\nTotal: 3\r\nUnique: 3\r\nBroken: 1\r\n```\r\n\r\n## Entregables\r\n\r\nMódulo instalable via `npm install <github-user>/md-links`. Este módulo debe\r\nincluir tanto un ejecutable como una interfaz que podamos importar con `require`\r\npara usarlo programáticamente.\r\n\r\n## Hacker edition\r\n\r\n- Puedes agregar la propiedad `line` a cada objeto `link` indicando en qué línea\r\n  del archivo se encontró el link.\r\n- Puedes agregar más estadísticas.\r\n- Integración continua con Travis o Circle CI.\r\n\r\n## Evaluación\r\n\r\n### Tech\r\n\r\n| Habilidad              | Nivel esperado |\r\n| ---------------------- | -------------- |\r\n| **JavaScript**         |                |\r\n| Estilo                 | 3              |\r\n| Nomenclatura/semántica | 3              |\r\n| Funciones/modularidad  | 4              |\r\n| Estructuras de datos   | 3              |\r\n| Tests                  | 3              |\r\n| **SCM**                |                |\r\n| Git                    | 3              |\r\n| GitHub                 | 3              |\r\n| **CS**                 |                |\r\n| Lógica                 | 2              |\r\n| Arquitectura           | 3              |\r\n\r\n### Habilidades Blandas\r\n\r\nPara este proyecto esperamos que ya hayas alcanzado el nivel 4 en todas tus\r\nhabilidades blandas. Te aconsejamos revisar la rúbrica:\r\n\r\n| Habilidad                                                  | Nivel esperado |\r\n| ---------------------------------------------------------- | -------------- |\r\n| Planificación y organización                               | 4              |\r\n| Autoaprendizaje                                            | 4              |\r\n| Solución de Problemas                                      | 4              |\r\n| Dar y recibir feedback                                     | 4              |\r\n| Adaptabilidad                                              | 4              |\r\n| Trabajo en equipo (trabajo colaborativo y responsabilidad) | 4              |\r\n| Comunicación eficaz                                        | 4              |\r\n| Presentaciones                                             | 4              |\r\n\r\n## Pistas / Tips\r\n\r\n### FAQs\r\n\r\n#### ¿Cómo hago para que mi módulo sea _instalable_ desde GitHub?\r\n\r\nPara que el módulo sea instalable desde GitHub solo tiene que:\r\n\r\n- Estar en un repo público de GitHub\r\n- Contener un `package.json` válido\r\n\r\nCon el comando `npm install githubname/reponame` podemos instalar directamente\r\ndesde GitHub. Ver [docs oficiales de `npm install` acá](https://docs.npmjs.com/cli/install).\r\n\r\nPor ejemplo, el [`course-parser`](https://github.com/Laboratoria/course-parser)\r\nque usamos para la currícula no está publicado en el registro público de NPM,\r\nasí que lo instalamos directamente desde GitHub con el comando `npm install\r\nLaboratoria/course-parser`.\r\n\r\n### Sugerencias de implementación\r\n\r\nLa implementación de este proyecto tiene varias partes: leer del sistema de\r\narchivos, recibir argumentos a través de la línea de comando, analizar texto,\r\nhacer consultas HTTP, ... y todas estas cosas pueden enfocarse de muchas formas,\r\ntanto usando librerías como implementando en VanillaJS.\r\n\r\nPor poner un ejemplo, el _parseado_ (análisis) del markdown para extraer los\r\nlinks podría plantearse de las siguientes maneras (todas válidas):\r\n\r\n- Usando un _módulo_ como [markdown-it](https://github.com/markdown-it/markdown-it),\r\n  que nos devuelve un arreglo de _tokens_ que podemos recorrer para identificar\r\n  los links.\r\n- Siguiendo otro camino completamente, podríamos usar\r\n  [expresiones regulares (`RegExp`)](https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Regular_Expressions).\r\n- También podríamos usar una combinación de varios _módulos_ (podría ser válido\r\n  transformar el markdown a HTML usando algo como [marked](https://github.com/markedjs/marked)\r\n  y de ahí extraer los link con una librería de DOM como [JSDOM](https://github.com/jsdom/jsdom)\r\n  o [Cheerio](https://github.com/cheeriojs/cheerio) entre otras).\r\n- Usando un _custom renderer_ de [marked](https://github.com/markedjs/marked)\r\n  (`new marked.Renderer()`).\r\n\r\nNo dudes en consultar a tus compañeras, coaches y/o el [foro de la comunidad](http://community.laboratoria.la/c/js)\r\nsi tienes dudas existenciales con respecto a estas decisiones. No existe una\r\n\"única\" manera correcta :wink:\r\n\r\n### Tutoriales / NodeSchool workshoppers\r\n\r\n- [learnyounode](https://github.com/workshopper/learnyounode)\r\n- [how-to-npm](https://github.com/workshopper/how-to-npm)\r\n- [promise-it-wont-hurt](https://github.com/stevekane/promise-it-wont-hurt)\r\n\r\n### Otros recursos\r\n\r\n- [Acerca de Node.js - Documentación oficial](https://nodejs.org/es/about/)\r\n- [Node.js file system - Documentación oficial](https://nodejs.org/api/fs.html)\r\n- [Node.js http.get - Documentación oficial](https://nodejs.org/api/http.html#http_http_get_options_callback)\r\n- [Node.js - Wikipedia](https://es.wikipedia.org/wiki/Node.js)\r\n- [What exactly is Node.js? - freeCodeCamp](https://medium.freecodecamp.org/what-exactly-is-node-js-ae36e97449f5)\r\n- [¿Qué es Node.js y para qué sirve? - drauta.com](https://www.drauta.com/que-es-nodejs-y-para-que-sirve)\r\n- [¿Qué es Nodejs? Javascript en el Servidor - Fazt en YouTube](https://www.youtube.com/watch?v=WgSc1nv_4Gw)\r\n- [¿Simplemente qué es Node.js? - IBM Developer Works, 2011](https://www.ibm.com/developerworks/ssa/opensource/library/os-nodejs/index.html)\r\n- [Node.js y npm](https://www.genbeta.com/desarrollo/node-js-y-npm)\r\n- [Módulos, librerías, paquetes, frameworks... ¿cuál es la diferencia?](http://community.laboratoria.la/t/modulos-librerias-paquetes-frameworks-cual-es-la-diferencia/175)\r\n- [Asíncronía en js](https://carlosazaustre.com/manejando-la-asincronia-en-javascript/)\r\n- [NPM](https://docs.npmjs.com/getting-started/what-is-npm)\r\n- [Publicar packpage](https://docs.npmjs.com/getting-started/publishing-npm-packages)\r\n- [Crear módulos en Node.js](https://docs.npmjs.com/getting-started/publishing-npm-packages)\r\n- [Leer un archivo](https://nodejs.org/api/fs.html#fs_fs_readfile_path_options_callback)\r\n- [Leer un directorio](https://nodejs.org/api/fs.html#fs_fs_readdir_path_options_callback)\r\n- [Path](https://nodejs.org/api/path.html)\r\n- [Linea de comando CLI](https://medium.com/netscape/a-guide-to-create-a-nodejs-command-line-package-c2166ad0452e)\r\n\r\n## Checklist\r\n\r\n### General\r\n\r\n- [ ] Puede instalarse via `npm install --global <github-user>/md-links`\r\n- [ ] Crear un script en el `package.json` que transforme el codigo ES6+ a ES5.\r\n\r\n### `README.md`\r\n\r\n- [ ] Colocar el *pseudo codigo* o *diagrama de flujo* con el algoritmo que\r\n  soluciona el problema.\r\n- [ ] Un board con el backlog para la implementación de la librería.\r\n- [ ] Documentación técnica de la librería.\r\n- [ ] Guía de uso e instalación de la librería\r\n\r\n### API `mdLinks(path, opts)`\r\n\r\n- [ ] El módulo exporta una función con la interfaz (API) esperada.\r\n- [ ] Implementa soporte para archivo individual\r\n- [ ] Implementa soporte para directorios\r\n- [ ] Implementa `options.validate`\r\n\r\n### CLI\r\n\r\n- [ ] Expone ejecutable `md-links` en el path (configurado en `package.json`)\r\n- [ ] Se ejecuta sin errores / output esperado\r\n- [ ] Implementa `--validate`\r\n- [ ] Implementa `--stats`\r\n\r\n### Pruebas / tests\r\n\r\n- [ ] Pruebas unitarias cubren un mínimo del 70% de statements, functions,\r\n  lines, y branches.\r\n- [ ] Pasa tests (y linters) (`npm test`).\r\n","readmeFilename":"README.md"}