0.1.0 • Published 11 months ago

@mariagarciab/md-links v0.1.0

Weekly downloads
-
License
-
Repository
-
Last release
11 months ago

Markdown Links

Índice


1. Sobre el proyecto

Este proyecto Markdown ofrece a los usuarios una forma eficiente de trabajar con enlaces en sus archivos .md. Mediante el uso de la consola y Node.js, los usuarios pueden acceder a funciones como la validación de enlaces con el comando --validate, obtener estadísticas generales con el comando --stats y identificar enlaces rotos con el comando --broken. Estas características proporcionan a los usuarios la capacidad de garantizar la calidad y funcionalidad de los enlaces en sus archivos Markdown.

Desarrollo de Proyecto

El primer paso en el desarrollo de mi proyecto fue la organización y planificación. Siguiendo los principios de la metodología Scrum, utilizando como herramienta trello y mileston (GitHub), realicé mi planning por sprint(en este caso es una semana).

Realicé un diagrama de flujo para visualizar el proceso general del proyecto, además de ser mi base para comprender las interacciones entre los diferentes componentes. Este diagrama fue elemental para seguir un flujo de trabajo realizando pequeñas tareas que finalmente consolidaron el proyecto.

mdLinks realiza una serie de comprobaciones para asegurarse de que la ruta especificada sea válida y el archivo sea Markdown. Primero, verifica si la ruta proporcionada existe. En caso de que la ruta no exista, se muestra un mensaje de error indicando que no existe una ruta.

Si la ruta existe, analiza si la ruta es relativa o absoluta. En caso de ser sea relativa, se convierte a una ruta absoluta antes de proceder. Esto se debe a que solo puede continuar el proceso con rutas absolutas.

Después de verificar y convertir la ruta, Se hace un filtro del archivo en función de su extensión. Solo se considerarán los archivos con extensión ".md" para extraer los enlaces. Si el archivo no tiene esta extensión, se mostrará un mensaje de error informando al usuario que solo se pueden leer archivos con la extensión ".md".

Una vez realizadas estas verificaciones, se leera el archivo y se extraeran los links con la siguiente estructura: fyle: 'C:\Users\HP-1\Desktop\MariaGracia\Proyectos MariaGracia\MD-links\DEV004-md-links\README.md', text: 'md-links', href: 'https://user-images.githubusercontent.com/110297/42118443-b7a5f1f0-7bc8-11e8-96ad-9cc5593715a6.jpg', status: 200, message: 'OK'

Finalmente implementado una interfaz de línea de comandos (CLI). Los usuarios pueden ejecutar el programa en la consola, pasando como argumento la ruta del archivo Markdown que desean analizar. A través de esta interfaz, pueden acceder a varias opciones y comandos que les permiten obtener información específica sobre los enlaces presentes en el archivo. --validate Da a conocer enlaces de un archivo .md --stats Da a conocer el total de enlaces y enlaces únicos --stats --validate Da a conocer el total de enlaces, los enlaces únicos y enlaces rotos --validate --stats Da a conocer el total de enlaces, los enlaces únicos y enlaces rotos -- cualquie error Da a conocer al usuario que comandos utilizar para obtener lo que desea

Resultado de comandos

--validate

Validate

--stats

stats

--validate --stats

validate-stats

--stats --validate

stats-validate

Estructura de proyecto

index.js

En el archivo index.js se encuentra la función mdLinks, la cual contiene el proceso para verificar si una ruta existe y, en caso de no ser absoluta, convertirla a una ruta absoluta. Además, esta función verifica si la ruta corresponde a un archivo con extensión .md. Dentro de mdLinks se encuentran las funciones que posteriormente serán explicadas en el archivo api.js.

api.js

El archivo api.js, se encuentran las funciones que se encargan de leer el archivo, extraer los enlaces y realizar las peticiones HTTP para verificar el estado de cada enlace. Contiene las siguientes funciones:

leerArchivo: Esta función se encarga de leer el contenido de un archivo específico y devuelve el contenido como una cadena de texto.

extraerLinks: Esta función se utiliza para extraer todos los enlaces encontrados dentro del archivo de formato Markdown (.md). Analiza el contenido del archivo y retorna un arreglo de objetos, donde cada objeto representa un enlace y contiene información relevante, como la URL y el texto asociado.

hacerPeticionHTTP: Esta función se encarga de realizar una petición HTTP para verificar el estado de los enlaces. Utiliza la URL de cada enlace extraído y realiza una solicitud para obtener información sobre el estado de la URL, como el código de respuesta.

cli.js

El archivo cli.js es responsable de proporcionar una línea de comandos (CLI) para la función mdLinks. A través de process.argv, se pueden agregar opciones adicionales al comando, lo que permite obtener información adicional sobre los enlaces.

Existen tres opciones disponibles:

--validate

--stats

--validate --stats o --stats --validate

Test

test-jest

Evaluación de la función mdLinks:

Verifica si existe un archivo .md: Prueba exitosa: Se espera que la función resuelva correctamente al pasar un archivo .md y devuelva cualquier resultado. Prueba fallida: Se espera que la función rechace la promesa y devuelva un mensaje de error al pasar un archivo que no sea .md.

Evaluación de la función readMD:

Lee archivos .md: Prueba exitosa: Se espera que la función lea correctamente el contenido del archivo .md especificado y lo devuelva como una cadena de texto. Prueba fallida: Se espera que la función lance un error con el mensaje "No está leyendo archivo .md" si ocurre algún problema al leer el archivo.

Evaluación de la función findLinks:

Encuentra enlaces en un documento: Prueba exitosa: Se espera que la función findLinks encuentre los enlaces presentes en el contenido del documento especificado y los devuelva como un arreglo de objetos, donde cada objeto representa un enlace con sus propiedades (ruta del archivo, texto y URL). Prueba fallida: Se espera que la función devuelva un arreglo vacío si no se encuentran enlaces en el contenido del documento.

Evaluación de la función validate:

Valida el estado de los enlaces: Prueba exitosa: Se espera que la función validate realice una solicitud HTTP para cada enlace especificado y devuelva un arreglo con el estado de cada enlace, representado por su código de respuesta (200 para enlaces válidos, 404 para enlaces rotos, etc.). Prueba fallida: Se espera que la función lance un error con el mensaje "Links no válidos" si ocurre algún problema al realizar las solicitudes HTTP.

2. Preámbulo

Markdown es un lenguaje de marcado ligero muy popular entre developers. Es usado en muchísimas plataformas que manejan texto plano (GitHub, foros, blogs, ...) y es muy común encontrar varios archivos en ese formato en cualquier tipo de repositorio (empezando por el tradicional README.md).

Estos archivos Markdown normalmente contienen links (vínculos/ligas) que muchas veces están rotos o ya no son válidos y eso perjudica mucho el valor de la información que se quiere compartir.

Dentro de una comunidad de código abierto, nos han propuesto crear una herramienta usando Node.js, que lea y analice archivos en formato Markdown, para verificar los links que contengan y reportar algunas estadísticas. Por ejemplo en Laboratoria podrían usar esta herramienta para detectar los links rotos en los readmes de los proyectos o en un área de facturación verificar los links rotos de una factura dígital.

Preámbulo: Laboratoria.

3. Objetivos de aprendizaje

Los objetivos de aprendizaje trabajados en este proyecto

JavaScript

  • Diferenciar entre tipos de datos primitivos y no primitivos

  • Arrays (arreglos)

  • Objetos (key, value)

  • Uso de condicionales (if-else, switch, operador ternario, lógica booleana)

  • Funciones (params, args, return)

  • Diferenciar entre expresiones (expressions) y sentencias (statements)

  • Callbacks

  • Promesas

  • Pruebas unitarias (unit tests)

  • Uso de linter (ESLINT)

  • Uso de identificadores descriptivos (Nomenclatura y Semántica)

Node.js

  • Instalar y usar módulos con npm

  • Configuración de package.json

  • Configuración de npm-scripts

  • process (env, argv, stdin-stdout-stderr, exit-code)

  • File system (fs, path)

Control de Versiones (Git y GitHub)

  • Git: Instalación y configuración

  • Git: Control de versiones con git (init, clone, add, commit, status, push, pull, remote)

  • Git: Integración de cambios entre ramas (branch, checkout, fetch, merge, reset, rebase, tag)

  • GitHub: Creación de cuenta y repos, configuración de llaves SSH

  • GitHub: Colaboración en Github (branches | forks | pull requests | code review | tags)

  • GitHub: Organización en Github (projects | issues | labels | milestones | releases)

HTTP

  • Consulta o petición (request) y respuesta (response).

  • Códigos de status de HTTP

0.1.0

11 months ago