# st-md-links

> * [1. Preámbulo](#1-preámbulo) * [2. Resumen del proyecto](#2-resumen-del-proyecto) * [3. Objetivos de aprendizaje](#3-objetivos-de-aprendizaje) * [4. Consideraciones generales](#4-consideraciones-generales) * [5. Criterios de aceptación mínimos del p

Latest version **0.1.1** (published 2023-06-02) · ISC license · 0 weekly downloads

## Install

```sh
npm install st-md-links
pnpm add st-md-links
yarn add st-md-links
bun add st-md-links
```

Provides the command `md-Links`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.1 |
| Published | 2023-06-02 |
| First published | 2023-06-02 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=16.x |
| Dependencies | 5 |
| Unpacked size | 371.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Maintainers | sofia-torres-vilca |

## Links

- npm: https://www.npmjs.com/package/st-md-links
- Repository: https://github.com/sofia-torres-v/DEV005-md-links
- Homepage: https://github.com/sofia-torres-v/DEV005-md-links#readme
- Issues: https://github.com/sofia-torres-v/DEV005-md-links/issues
- npm.io page: https://npm.io/package/st-md-links

## Dependencies (5)

- [jsdom](https://npm.io/package/jsdom.md) ^22.0.0
- [colors](https://npm.io/package/colors.md) ^1.4.0
- [marked](https://npm.io/package/marked.md) ^5.0.2
- [md-links](https://npm.io/package/md-links.md) ^0.1.0
- [node-fetch](https://npm.io/package/node-fetch.md) ^2.6.11

## Recent versions

- 0.1.1 (latest) — 2023-06-02

## README

# Markdown Links

## Índice

* [1. Preámbulo](#1-preámbulo)
* [2. Resumen del proyecto](#2-resumen-del-proyecto)
* [3. Diagrama de Flujo](#1-preámbulo)
* [4. Requisitos y Especificaciones Técnicas](#1-preámbulo)
* [5. Guía de Uso e instalación de la Librería](#1-preámbulo)
* [6. Checklist](#6-checklist)

***

## 1. Preámbulo

[Markdown](https://es.wikipedia.org/wiki/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.



## 2. Resumen del proyecto

mdLinks es una herramienta de línea de comandos desarrollada en Node.js que te permite analizar archivos Markdown y extraer información sobre los enlaces presentes en ellos.
mdLinks ofrece estas principales características:

* Información detallada: Verificando la válidez de cada enlace de archivo Markdow y proporcionando detalles como la URL, el texto y el estado de cada enlace.

* Ahorro de tiempo: Con mdLinks, puedes analizar rápidamente tus archivos Markdown y obtener información sobre los enlaces sin tener que hacerlo manualmente.

## 3. Diagrama de Flujo: mdLinks
El siguiente diagrama de flujo representa el proceso de funcionamiento de la herramienta mdLinks. Proporciona una visión general de las principales etapas y acciones que se llevan a cabo durante su ejecución.

_Diagrama de flujo con opciones_
![Diagrama de Flujo](./images/Diagram.png)

## 4. Requisítos y Especificaciones Técnicas
Para la construcción de esta librería, se utilizaron las siguientes herramientas y dependencias:

#### Ejecución
Node.js: Entorno de desarrollo de JavaScript.

#### Dependencias

* JSDOM: Librería para manipular y analizar el DOM en Node.js.
* Colors: Librería para agregar color y estilo a la salida en la consola.
* Node-fetch: Librería para realizar solicitudes HTTP desde Node.js.
* Eslint: Herramienta para identificar patrones encontrados en código ECMAScript / JavaScript.
* Jest: Framework de JavaScript para los test unitarios.

#### Módulos

* fs: Permite manejar los archivos del sistema.
* path: Proporciona trabajar con rutas de archivos y directorios.
* process: Proporciona información y control sobre el proceso de Node.js actual.


## 5. Guía de Uso e instalación de la Librería

###  Instalación

A continuación, te explicare cómo instalar la librería en tu proyecto:

1. Abre una terminal y navega hasta el directorio de tu proyecto.
2. Ejecuta el siguiente comando: npm install  `sofia-torres-v/DEV005-md-links`

### Modo de Uso Básico

El ejecutable de nuestra aplicación puede ejecutarse de la siguiente manera a través de la terminal:

En el primer caso, si el usuario simplemente ingresa el siguiente comando en la terminal :
   
   `md-links <path-to-file-or-directory> `

##### El valor de retorno será

* `href`: URL encontrada.
* `text`: Texto que aparecía dentro del link (`<a>`).
* `file`: Ruta del archivo donde se encontró el link.

##### Captura de Pantalla: Ejemplo de Retorno en la Terminal:
![Diagrama de Flujo](./images/files.jpg)


### Modo de Uso con ingreso de Opciones

En el segundo caso, si el usuario ingresa en la termina la ruta y la opción --validate :
 
  `mdLinks <path-to-file-or-directory> --validate`

##### El valor de retorno será

* `href`: URL encontrada.
* `text`: Texto que aparecía dentro del link (`<a>`).
* `file`: Ruta del archivo donde se encontró el link.
* `status`: Código de respuesta HTTP.
* `statusText`: Mensaje `Not Found`en caso de fallo u `OK` en caso de éxito.

##### Captura de Pantalla: Ejemplo de Retorno en la Terminal:
![Diagrama de Flujo](./images/validate.jpg)


En el tercer caso, si el usuario ingresa en la termina la ruta y la opción --stats :

`mdLinks <path-to-file-or-directory> --stats`

##### El valor de retorno será

* `Total`: Número de links encontardos.
* `Unique`: Número de links que no se repiten.

##### Captura de Pantalla: Ejemplo de Retorno en la Terminal:
![Diagrama de Flujo](./images/stats.jpg)
 
En el cuarto y último caso, si el usuario ingresa en la termina la ruta y las opciones --stats --valiate :

`mdLinks <path-to-file-or-directory> --stats --validate`

También acepta el siguiente orden

`mdLinks <path-to-file-or-directory>  --validate --stats`

##### EL valor de retorno será

* `Total`: Número de links encontardos.
* `Unique`: Número de links que no se repiten.
* `Broken`: Número de links que no son válidos.

##### Captura de Pantalla: Ejemplo de Retorno en la Terminal:
![Diagrama de Flujo](./images/statsBroquen.jpg)
 
## 6. Checklist

### General

* [X] Puede instalarse via `npm install --global <github-user>/md-links`

### `README.md`

* [X] Un board con el backlog para la implementación de la librería.
* [X] Documentación técnica de la librería.
* [X] Guía de uso e instalación de la librería

### API `mdLinks(path, opts)`

* [X] El módulo exporta una función con la interfaz (API) esperada.
* [X] Implementa soporte para archivo individual
* [X] Implementa soporte para directorios
* [X] Implementa `options.validate`

### CLI

* [x] Expone ejecutable `md-links` en el path (configurado en `package.json`)
* [X] Se ejecuta sin errores / output esperado
* [x] Implementa `--validate`
* [X] Implementa `--stats`

### Pruebas / tests

* [X] Pruebas unitarias cubren un mínimo del 70% de statements, functions,
  lines, y branches.
* [X] Pasa tests (y linters) (`npm test`).

### Desplegado en NPM

---
_Source: https://npm.io/package/st-md-links · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
