{"_id":"@angelicab7/md-links","_rev":"1-b61b440610403e9bbc88a403790ece30","name":"@angelicab7/md-links","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@angelicab7/md-links","version":"1.0.0","description":"* [1. Preámbulo](#1-preámbulo)\r * [2. Resumen del proyecto](#2-resumen-del-proyecto)\r * [3. Objetivos de aprendizaje](#3-objetivos-de-aprendizaje)\r * [4. Consideraciones generales](#4-consideraciones-generales)\r * [5. Criterios de aceptación mínimos del p","main":"./src/index.js","directories":{"test":"test"},"scripts":{"test":"jest --coverage"},"repository":{"type":"git","url":"git+https://github.com/angelicab7/bog001-md-links.git"},"keywords":[],"author":{"name":"Angelica Bonilla"},"license":"ISC","bugs":{"url":"https://github.com/angelicab7/bog001-md-links/issues"},"homepage":"https://github.com/angelicab7/bog001-md-links#readme","dependencies":{"axios":"^0.20.0","marked":"^1.1.1","yargs":"^16.0.3"},"bin":{"md-links":"cli.js"},"jest":{"collectCoverage":true,"collectCoverageFrom":["./src/**"],"coverageThreshold":{"global":{"branches":70,"functions":70,"lines":70}},"testEnvironment":"node","testPathIgnorePatterns":["<rootDir>/node_modules/"],"coverageReporters":["json","text","lcov","clover","html"]},"devDependencies":{"jest":"^26.4.2"},"gitHead":"d5be91c554e5abe74169505908beb87f15b9e059","_id":"@angelicab7/md-links@1.0.0","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-fX7PEHZv1jy0pLu13AZ/vpm9AAUqgyIQ0CDVpbt+vTL9UOZb4O7EpowqB9EOh8yUcd3PG318PeO5Po3X2ubm3g==","shasum":"bbb799e351986ecad06c3993cc22522a5ee2ce40","tarball":"https://registry.npmjs.org/@angelicab7/md-links/-/md-links-1.0.0.tgz","fileCount":10,"unpackedSize":92800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfajquCRA9TVsSAnZWagAA9RgQAIBW0Hc60hA5IK4AJ871\nOICIkqb7wM1OHx+4+Em69t8jLyze9zXle1+kxGsZfnVHxDVz8x1wSnJFznJT\nuqQrgM9Mi/GhsDeEnrSdn+81+KMYhb8R+nF1uCEZQ5B5n4vUmXPias5kTGOP\nTDnRrbOG7IiaKPPkGZIqSBhs9s25C9aGjjgXyqffhoAlPP1kcYd0dBzvbL8n\nbxX3HQEJdkJ3prrF87oDDMCQegpgRW/BhWPXjEA9zXy6zfOnLdFZIinHE9fs\ncGYx/Fyqx4uMxh0RnxcVbtK6ekiXEXQ2Slda5g0Is+GeDNXhJRyxLr0JeEDz\n8Qq/FnQ+hhMIap2Cp67Mv5v+8d2rWtDb5YBP7fBdNefv/6K6cwe81xdCaq2v\natBe8LLsNKG2OepleQpLThRdE/B5x6VhRJ6/Q0NtgOFJWx35SONvDMn5qLer\nZcooUYg94QwiIZ5LWnytsYeDmJFcr7l3vt7ScFH+a78vnI+zJwWztqZYhFIK\nIE5sP+WYDGIgcIFAKZc6pKtFjp/OqClr08H8FCdeg8DmNEoVUlfS5oKf8bnS\nFxqbkxEyDfm3wmPWInIkgTC2Ka8EdtbLlBA7W+04mC6W1VWFPgfop1Q+guok\np3ZpbVhnLKwLrYRQVYINAhkvPRu+KhJ8gWbHf/R75otWwExTHbwMbSkKnF/o\nDnn9\r\n=STTz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICUM3XzJHokGvzDsoPf4caiycWirMX/unLrnmHVINzjYAiEA9JO23/4HYT0i1Px5btctuahEocMfDVsirDPTB0AI1nM="}]},"maintainers":[{"name":"angelicab7","email":"angelicabonilla723@gmail.com"}],"_npmUser":{"name":"angelicab7","email":"angelicabonilla723@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/md-links_1.0.0_1600797357627_0.9310468311468092"},"_hasShrinkwrap":false}},"time":{"created":"2020-09-22T17:55:57.588Z","1.0.0":"2020-09-22T17:55:57.775Z","modified":"2022-04-04T14:05:44.516Z"},"maintainers":[{"name":"angelicab7","email":"angelicabonilla723@gmail.com"}],"description":"* [1. Preámbulo](#1-preámbulo)\r * [2. Resumen del proyecto](#2-resumen-del-proyecto)\r * [3. Objetivos de aprendizaje](#3-objetivos-de-aprendizaje)\r * [4. Consideraciones generales](#4-consideraciones-generales)\r * [5. Criterios de aceptación mínimos del p","homepage":"https://github.com/angelicab7/bog001-md-links#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/angelicab7/bog001-md-links.git"},"author":{"name":"Angelica Bonilla"},"bugs":{"url":"https://github.com/angelicab7/bog001-md-links/issues"},"license":"ISC","readme":"# Markdown Links\r\n\r\n<img src='./src/img/Md-links.svg'>\r\n\r\n\r\n## 1. 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\r\n## 2. Como usarlo\r\n\r\n******************************************\r\n\r\n## Instalar CLI\r\n\r\n  <kbd>\r\n      $ npm install -g angelicabonilla/md-links\r\n  </kbd>\r\n\r\n## Uso CLI\r\n  Recibe como argumento un archivo \".md\" o una carpeta que contenga un archivo \".md\".\r\n\r\n  *Al ejecutar el comando, te imprime un arreglo de objetos con las url, la referencia dada al enlace, el archivo donde se encontró el enlace*\r\n\r\n  <kbd>\r\n    $ md-links ./README.md\r\n  </kbd>\r\n\r\n ```\r\n    {\r\n    href: 'https://es.wikipedia.org/wiki/Markdown',\r\n    text: 'Markdown',\r\n    file: 'C:\\\\Users\\\\angel\\\\Documents\\\\Repositories\\\\bog001-md-links\\\\README.md'\r\n  },\r\n  ```\r\n\r\n  *Si ejecutas el comando con  --validate, verifica el status de los links*\r\n\r\n  <kbd>\r\n    $ md-links ./README.md  --validate\r\n  </kbd>\r\n\r\n ```\r\n   {\r\n    href: 'https://nodejs.org/api/fs.html#fs_fs_readfile_path_options_callback',\r\n    text: 'Leer un archivo',\r\n    file: 'C:\\\\Users\\\\angel\\\\Documents\\\\Repositories\\\\bog001-md-links\\\\README.md',\r\n    status: 200,\r\n    ok: true\r\n  },\r\n   ```\r\n  *Si ejecutas el comando con --stats, te muestra cuantos enlaces hay en total y cuantos son únicos*\r\n\r\n  <kbd>\r\n    $ md-links ./README.md --stats\r\n  </kbd>\r\n\r\n ```\r\n  {\r\n    href: 'https://medium.com/netscape/a-guide-to-create-a-nodejs-command-line-package-c2166ad0452e',\r\n    text: 'Linea de comando CLI',\r\n    file: 'C:\\\\Users\\\\angel\\\\Documents\\\\Repositories\\\\bog001-md-links\\\\README.md'\r\n  }\r\n] { total: 51, unique: 46 }\r\n ```\r\n\r\n  *Si ejecutas el comando con --validate --stats, verifica el status de los links y te imprime cuantos enlaces hay en total, cuantos son únicos y cuantos están rotos*\r\n\r\n   <kbd>\r\n  $ md-links ./README.md --stats --validate\r\n  </kbd>\r\n\r\n ```\r\n {\r\n    href: 'https://medium.com/netscape/a-guide-to-create-a-nodejs-command-line-package-c2166ad0452e',\r\n    text: 'Linea de comando CLI',\r\n    file: 'C:\\\\Users\\\\angel\\\\Documents\\\\Repositories\\\\bog001-md-links\\\\README.md',\r\n    status: 200,\r\n    ok: true\r\n  }\r\n] { total: 51, unique: 46, broken: 1 }\r\n ```\r\n\r\n## Instalar como Modulo\r\n\r\n\r\nGithub Packages\r\n  <kbd>\r\n      $ npm install @angelicabonilla/md-links\r\n  </kbd>\r\n\r\n## Uso del Modulo\r\n\r\n  <kbd>\r\n      const mdlinks = require('@angelicabonilla/md-links')\r\n  </kbd>\r\n\r\n  *Muestra un arreglo de objetos con las url y  el archivo donde se encontró el enlace*\r\n```\r\nmdlinks('./README.md')\r\n  .then((res) => {\r\n    console.log(res);\r\n  })\r\n```\r\n  *Muestra un arreglo de objetos con las url, el archivo donde se encontró el link y verifica cada uno de los links, imprimiendo así el status de cada link*\r\n```\r\nmdlinks('./README.md', { validate: true})\r\n  .then((res) => {\r\n    console.log(res);\r\n  })\r\n```\r\n  *Devuelve las estadísticas de los links en el archivo, cuantos hay en total y cuantos son únicos*\r\n```\r\nmdlinks('./README.md', { stats: true})\r\n  .then((res) => {\r\n    console.log(res);\r\n  })\r\n```\r\n  *Muestra las estadísticas de los links  en el archivo, cuantos hay en total, cuantos son únicos y cuales están rotos*\r\n```\r\nmdlinks('./README.md', { validate: true, stats: true})\r\n  .then((res) => {\r\n    console.log(res);\r\n  })\r\n```\r\n\r\n*****************************************************************\r\n## 3. Objetivos de aprendizaje\r\n### JavaScript\r\n\r\n* [x] Uso de condicionales (if-else | switch | operador ternario)\r\n* [x] Uso de funciones (parámetros | argumentos | valor de retorno)\r\n* [x] Manipular arrays (filter | map | sort | reduce)\r\n* [x] Manipular objects (key | value)\r\n* [x] Uso ES modules ([`import`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import)\r\n| [`export`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export))\r\n* [x] Diferenciar entre expression y statements.\r\n* [x] Diferenciar entre tipos de datos atómicos y estructurados.\r\n* [x] [Uso de callbacks.](https://developer.mozilla.org/es/docs/Glossary/Callback_function)\r\n* [x] [Consumo de Promesas.](https://scotch.io/tutorials/javascript-promises-for-dummies#toc-consuming-promises)\r\n* [x] [Creación de Promesas.](https://www.freecodecamp.org/news/how-to-write-a-javascript-promise-4ed8d44292b8/)\r\n\r\n### Node\r\n\r\n* [x] Uso de sistema de archivos. ([fs](https://nodejs.org/api/fs.html), [path](https://nodejs.org/api/path.html))\r\n* [x] Instalar y usar módulos. ([npm](https://www.npmjs.com/))\r\n* [x] Creación de modules. [(CommonJS)](https://nodejs.org/docs/latest-v0.10.x/api/modules.html)\r\n* [x] [Configuración de package.json.](https://docs.npmjs.com/files/package.json)\r\n* [x] [Configuración de npm-scripts](https://docs.npmjs.com/misc/scripts)\r\n* [x] Uso de CLI (Command Line Interface - Interfaz de Línea de Comando)\r\n\r\n### Testing\r\n\r\n* [ ] [Testeo unitario.](https://jestjs.io/docs/es-ES/getting-started)\r\n* [ ] [Testeo asíncrono.](https://jestjs.io/docs/es-ES/asynchronous)\r\n* [ ] [Uso de librerias de Mock.](https://jestjs.io/docs/es-ES/manual-mocks)\r\n* [ ] Uso de Mocks manuales.\r\n* [ ] Testeo para múltiples Sistemas Operativos.\r\n\r\n### Estructura del código y guía de estilo\r\n\r\n* [x] Organizar y dividir el código en módulos (Modularización)\r\n* [x] Uso de identificadores descriptivos (Nomenclatura | Semántica)\r\n* [ ] Uso de linter (ESLINT)\r\n\r\n### Git y GitHub\r\n\r\n* [x] Uso de comandos de git (add | commit | pull | status | push)\r\n* [x] Manejo de repositorios de GitHub (clone | fork | gh-pages)\r\n* [x] Colaboración en Github (branches | pull requests | |tags)\r\n* [ ] Organización en Github (projects | issues | labels | milestones)\r\n\r\n### HTTP\r\n\r\n* [x] Verbos HTTP ([http.get](https://nodejs.org/api/http.html#http_http_get_options_callback))\r\n\r\n### Fundamentos de programación\r\n\r\n* [ ] [Recursión.](https://www.youtube.com/watch?v=lPPgY3HLlhQ)\r\n\r\n\r\n* [ ] Puede instalarse via `npm install --global <github-user>/md-links`\r\n\r\n### `README.md`\r\n\r\n* [x] Un board con el backlog para la implementación de la librería.\r\n* [x] Documentación técnica de la librería.\r\n* [x] Guía de uso e instalación de la librería\r\n\r\n### API `mdLinks(path, opts)`\r\n\r\n* [x] El módulo exporta una función con la interfaz (API) esperada.\r\n* [x] Implementa soporte para archivo individual\r\n* [x] Implementa soporte para directorios\r\n* [x] Implementa `options.validate`\r\n\r\n### CLI\r\n\r\n* [x] Expone ejecutable `md-links` en el path (configurado en `package.json`)\r\n* [x] Se ejecuta sin errores / output esperado\r\n* [x] Implementa `--validate`\r\n* [x] 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"}