# mdlinks-belen

> * [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 **1.0.0** (published 2023-06-07) · ISC license · 0 weekly downloads

## Install

```sh
npm install mdlinks-belen
pnpm add mdlinks-belen
yarn add mdlinks-belen
bun add mdlinks-belen
```

Provides the command `mdlinks-belen`.

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2023-06-07 |
| First published | 2023-06-07 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 232 |
| Unpacked size | 120.2 KB |
| Known vulnerabilities | 0 (+2 in 2 direct dependencies) |
| Install scripts | no |
| Author | Belen Neira |
| Maintainers | bele05noe |

## Links

- npm: https://www.npmjs.com/package/mdlinks-belen
- Repository: https://github.com/Belenoese/DEV005-md-links
- Homepage: https://github.com/Belenoese/DEV005-md-links#readme
- Issues: https://github.com/Belenoese/DEV005-md-links/issues
- npm.io page: https://npm.io/package/mdlinks-belen

## Dependencies (232)

- [co](https://npm.io/package/co.md) ^4.6.0
- [ms](https://npm.io/package/ms.md) ^2.1.2
- [ajv](https://npm.io/package/ajv.md) ^6.12.6
- [has](https://npm.io/package/has.md) ^1.0.3
- [bser](https://npm.io/package/bser.md) ^2.1.1
- [exit](https://npm.io/package/exit.md) ^0.1.2
- [glob](https://npm.io/package/glob.md) ^7.2.3
- [jest](https://npm.io/package/jest.md) ^29.5.0
- [levn](https://npm.io/package/levn.md) ^0.4.1
- [once](https://npm.io/package/once.md) ^1.4.0
- [tmpl](https://npm.io/package/tmpl.md) ^1.0.5
- [y18n](https://npm.io/package/y18n.md) ^5.0.8
- [acorn](https://npm.io/package/acorn.md) ^8.8.2
- [axios](https://npm.io/package/axios.md) ^1.4.0
- [chalk](https://npm.io/package/chalk.md) ^4.1.2
- [cliui](https://npm.io/package/cliui.md) ^8.0.1
- [debug](https://npm.io/package/debug.md) ^4.3.4
- [execa](https://npm.io/package/execa.md) ^5.1.1
- [fastq](https://npm.io/package/fastq.md) ^1.15.0
- [isexe](https://npm.io/package/isexe.md) ^2.0.0
- [jsesc](https://npm.io/package/jsesc.md) ^2.5.2
- [json5](https://npm.io/package/json5.md) ^2.2.3
- [kleur](https://npm.io/package/kleur.md) ^3.0.3
- [leven](https://npm.io/package/leven.md) ^3.1.0
- [p-try](https://npm.io/package/p-try.md) ^2.2.0
- [slash](https://npm.io/package/slash.md) ^3.0.0
- [which](https://npm.io/package/which.md) ^2.0.2
- [yargs](https://npm.io/package/yargs.md) ^17.7.2
- [braces](https://npm.io/package/braces.md) ^3.0.2
- [colors](https://npm.io/package/colors.md) ^1.4.0
- [dedent](https://npm.io/package/dedent.md) ^0.7.0
- [eslint](https://npm.io/package/eslint.md) ^8.40.0
- [espree](https://npm.io/package/espree.md) ^9.5.2
- [expect](https://npm.io/package/expect.md) ^29.5.0
- [ignore](https://npm.io/package/ignore.md) ^5.2.4
- [marked](https://npm.io/package/marked.md) ^5.0.2
- [rimraf](https://npm.io/package/rimraf.md) ^3.0.2
- [semver](https://npm.io/package/semver.md) ^6.3.0
- [uri-js](https://npm.io/package/uri-js.md) ^4.4.1
- [walker](https://npm.io/package/walker.md) ^1.0.8
- [wrappy](https://npm.io/package/wrappy.md) ^1.0.2
- [ci-info](https://npm.io/package/ci-info.md) ^3.8.0
- [deep-is](https://npm.io/package/deep-is.md) ^0.1.4
- [esprima](https://npm.io/package/esprima.md) ^4.0.1
- [esquery](https://npm.io/package/esquery.md) ^1.5.0
- [esutils](https://npm.io/package/esutils.md) ^2.0.3
- [find-up](https://npm.io/package/find-up.md) ^5.0.0
- [flatted](https://npm.io/package/flatted.md) ^3.2.7
- [gensync](https://npm.io/package/gensync.md) ^1.0.0-beta.2
- [globals](https://npm.io/package/globals.md) ^13.20.0
- [is-glob](https://npm.io/package/is-glob.md) ^4.0.3
- [js-sdsl](https://npm.io/package/js-sdsl.md) ^4.4.0
- [js-yaml](https://npm.io/package/js-yaml.md) ^4.1.0
- [onetime](https://npm.io/package/onetime.md) ^5.1.2
- [p-limit](https://npm.io/package/p-limit.md) ^3.1.0
- [pirates](https://npm.io/package/pirates.md) ^4.0.5
- [pkg-dir](https://npm.io/package/pkg-dir.md) ^4.2.0
- [prompts](https://npm.io/package/prompts.md) ^2.4.2
- [resolve](https://npm.io/package/resolve.md) ^1.22.2
- [reusify](https://npm.io/package/reusify.md) ^1.0.4
- [yallist](https://npm.io/package/yallist.md) ^3.1.1
- [anymatch](https://npm.io/package/anymatch.md) ^3.1.3
- [argparse](https://npm.io/package/argparse.md) ^2.0.1
- [doctrine](https://npm.io/package/doctrine.md) ^3.0.0
- [emittery](https://npm.io/package/emittery.md) ^0.13.1
- [error-ex](https://npm.io/package/error-ex.md) ^1.3.2
- [escalade](https://npm.io/package/escalade.md) ^3.1.1
- [has-flag](https://npm.io/package/has-flag.md) ^4.0.0
- [inflight](https://npm.io/package/inflight.md) ^1.0.6
- [inherits](https://npm.io/package/inherits.md) ^2.0.4
- [jest-cli](https://npm.io/package/jest-cli.md) ^29.5.0
- [make-dir](https://npm.io/package/make-dir.md) ^3.1.0
- [mimic-fn](https://npm.io/package/mimic-fn.md) ^2.1.0
- [p-locate](https://npm.io/package/p-locate.md) ^5.0.0
- [path-key](https://npm.io/package/path-key.md) ^3.1.1
- [punycode](https://npm.io/package/punycode.md) ^2.3.0
- [react-is](https://npm.io/package/react-is.md) ^18.2.0
- [acorn-jsx](https://npm.io/package/acorn-jsx.md) ^5.3.2
- [callsites](https://npm.io/package/callsites.md) ^3.1.0
- [camelcase](https://npm.io/package/camelcase.md) ^5.3.1
- [deepmerge](https://npm.io/package/deepmerge.md) ^4.3.1
- [esrecurse](https://npm.io/package/esrecurse.md) ^4.3.0
- [is-number](https://npm.io/package/is-number.md) ^7.0.0
- [is-stream](https://npm.io/package/is-stream.md) ^2.0.1
- [jest-diff](https://npm.io/package/jest-diff.md) ^29.5.0
- [jest-each](https://npm.io/package/jest-each.md) ^29.5.0
- [jest-mock](https://npm.io/package/jest-mock.md) ^29.5.0
- [jest-util](https://npm.io/package/jest-util.md) ^29.5.0
- [js-tokens](https://npm.io/package/js-tokens.md) ^4.0.0
- [lru-cache](https://npm.io/package/lru-cache.md) ^5.1.1
- [makeerror](https://npm.io/package/makeerror.md) ^1.0.12
- [minimatch](https://npm.io/package/minimatch.md) ^3.1.2
- [picomatch](https://npm.io/package/picomatch.md) ^2.3.1
- [pure-rand](https://npm.io/package/pure-rand.md) ^6.0.2
- [strip-bom](https://npm.io/package/strip-bom.md) ^4.0.0
- [type-fest](https://npm.io/package/type-fest.md) ^0.20.2
- [word-wrap](https://npm.io/package/word-wrap.md) ^1.2.3
- [wrap-ansi](https://npm.io/package/wrap-ansi.md) ^7.0.0
- [ansi-regex](https://npm.io/package/ansi-regex.md) ^5.0.1
- [babel-jest](https://npm.io/package/babel-jest.md) ^29.5.0
- [char-regex](https://npm.io/package/char-regex.md) ^1.0.2
- [color-name](https://npm.io/package/color-name.md) ^1.1.4
- [concat-map](https://npm.io/package/concat-map.md) ^0.0.1
- [estraverse](https://npm.io/package/estraverse.md) ^5.3.0
- [fill-range](https://npm.io/package/fill-range.md) ^7.0.1
- [flat-cache](https://npm.io/package/flat-cache.md) ^3.0.4
- [get-stream](https://npm.io/package/get-stream.md) ^6.0.1
- [is-extglob](https://npm.io/package/is-extglob.md) ^2.1.1
- [micromatch](https://npm.io/package/micromatch.md) ^4.0.5
- [node-int64](https://npm.io/package/node-int64.md) ^0.4.0
- [optionator](https://npm.io/package/optionator.md) ^0.9.1
- [parse-json](https://npm.io/package/parse-json.md) ^5.2.0
- [path-parse](https://npm.io/package/path-parse.md) ^1.0.7
- [picocolors](https://npm.io/package/picocolors.md) ^1.0.0
- [prelude-ls](https://npm.io/package/prelude-ls.md) ^1.2.1
- [sisteransi](https://npm.io/package/sisteransi.md) ^1.0.5
- [source-map](https://npm.io/package/source-map.md) ^0.6.1
- [sprintf-js](https://npm.io/package/sprintf-js.md) ^1.0.3
- [strip-ansi](https://npm.io/package/strip-ansi.md) ^6.0.1
- [text-table](https://npm.io/package/text-table.md) ^0.2.0
- [type-check](https://npm.io/package/type-check.md) ^0.4.0
- [ansi-styles](https://npm.io/package/ansi-styles.md) ^4.3.0
- [buffer-from](https://npm.io/package/buffer-from.md) ^1.1.2
- [cross-spawn](https://npm.io/package/cross-spawn.md) ^7.0.3
- [emoji-regex](https://npm.io/package/emoji-regex.md) ^8.0.0
- [fb-watchman](https://npm.io/package/fb-watchman.md) ^2.0.2
- [fs.realpath](https://npm.io/package/fs.realpath.md) ^1.0.0
- [glob-parent](https://npm.io/package/glob-parent.md) ^6.0.2
- [graceful-fs](https://npm.io/package/graceful-fs.md) ^4.2.11
- [imurmurhash](https://npm.io/package/imurmurhash.md) ^0.1.4
- [is-arrayish](https://npm.io/package/is-arrayish.md) ^0.2.1
- [jest-circus](https://npm.io/package/jest-circus.md) ^29.5.0
- [jest-config](https://npm.io/package/jest-config.md) ^29.5.0
- [jest-runner](https://npm.io/package/jest-runner.md) ^29.5.0
- [jest-worker](https://npm.io/package/jest-worker.md) ^29.5.0
- [locate-path](https://npm.io/package/locate-path.md) ^6.0.0
- [path-exists](https://npm.io/package/path-exists.md) ^4.0.0
- [resolve-cwd](https://npm.io/package/resolve-cwd.md) ^3.0.0
- [signal-exit](https://npm.io/package/signal-exit.md) ^3.0.7
- [stack-utils](https://npm.io/package/stack-utils.md) ^2.0.6
- [type-detect](https://npm.io/package/type-detect.md) ^4.0.8
- [yocto-queue](https://npm.io/package/yocto-queue.md) ^0.1.0
- [ansi-escapes](https://npm.io/package/ansi-escapes.md) ^4.3.2
- [browserslist](https://npm.io/package/browserslist.md) ^4.21.5
- [caniuse-lite](https://npm.io/package/caniuse-lite.md) ^1.0.30001487
- [eslint-scope](https://npm.io/package/eslint-scope.md) ^7.2.0
- [html-escaper](https://npm.io/package/html-escaper.md) ^2.0.2
- [import-fresh](https://npm.io/package/import-fresh.md) ^3.3.0
- [import-local](https://npm.io/package/import-local.md) ^3.1.0
- [jest-resolve](https://npm.io/package/jest-resolve.md) ^29.5.0
- [jest-runtime](https://npm.io/package/jest-runtime.md) ^29.5.0
- [jest-watcher](https://npm.io/package/jest-watcher.md) ^29.5.0
- [lodash.merge](https://npm.io/package/lodash.merge.md) ^4.6.2
- [merge-stream](https://npm.io/package/merge-stream.md) ^2.0.0
- [npm-run-path](https://npm.io/package/npm-run-path.md) ^4.0.1
- [resolve-from](https://npm.io/package/resolve-from.md) ^4.0.0
- [run-parallel](https://npm.io/package/run-parallel.md) ^1.2.0
- [string-width](https://npm.io/package/string-width.md) ^4.2.3
- [test-exclude](https://npm.io/package/test-exclude.md) ^6.0.0
- [yargs-parser](https://npm.io/package/yargs-parser.md) ^21.1.1
- [color-convert](https://npm.io/package/color-convert.md) ^2.0.1
- [function-bind](https://npm.io/package/function-bind.md) ^1.1.1
- [human-signals](https://npm.io/package/human-signals.md) ^2.1.0
- [jest-docblock](https://npm.io/package/jest-docblock.md) ^29.4.3
- [jest-get-type](https://npm.io/package/jest-get-type.md) ^29.4.3
- [jest-snapshot](https://npm.io/package/jest-snapshot.md) ^29.5.0
- [jest-validate](https://npm.io/package/jest-validate.md) ^29.5.0
- [node-releases](https://npm.io/package/node-releases.md) ^2.0.10
- [parent-module](https://npm.io/package/parent-module.md) ^1.0.1
- [pretty-format](https://npm.io/package/pretty-format.md) ^29.5.0
- [shebang-regex](https://npm.io/package/shebang-regex.md) ^3.0.0
- [string-length](https://npm.io/package/string-length.md) ^4.0.2
- [balanced-match](https://npm.io/package/balanced-match.md) ^1.0.2
- [detect-newline](https://npm.io/package/detect-newline.md) ^3.1.0
- [diff-sequences](https://npm.io/package/diff-sequences.md) ^29.4.3
- [is-core-module](https://npm.io/package/is-core-module.md) ^2.12.0
- [is-path-inside](https://npm.io/package/is-path-inside.md) ^3.0.3
- [jest-haste-map](https://npm.io/package/jest-haste-map.md) ^29.5.0
- [normalize-path](https://npm.io/package/normalize-path.md) ^3.0.0
- [supports-color](https://npm.io/package/supports-color.md) ^7.2.0
- [to-regex-range](https://npm.io/package/to-regex-range.md) ^5.0.1
- [v8-to-istanbul](https://npm.io/package/v8-to-istanbul.md) ^9.1.0
- [brace-expansion](https://npm.io/package/brace-expansion.md) ^1.1.11
- [fast-deep-equal](https://npm.io/package/fast-deep-equal.md) ^3.1.3
- [get-caller-file](https://npm.io/package/get-caller-file.md) ^2.0.5
- [is-generator-fn](https://npm.io/package/is-generator-fn.md) ^2.1.0
- [jest-regex-util](https://npm.io/package/jest-regex-util.md) ^29.4.3
- [natural-compare](https://npm.io/package/natural-compare.md) ^1.4.0
- [queue-microtask](https://npm.io/package/queue-microtask.md) ^1.2.3
- [resolve.exports](https://npm.io/package/resolve.exports.md) ^2.0.2
- [shebang-command](https://npm.io/package/shebang-command.md) ^2.0.0
- [cjs-module-lexer](https://npm.io/package/cjs-module-lexer.md) ^1.2.2
- [fast-levenshtein](https://npm.io/package/fast-levenshtein.md) ^2.0.6
- [file-entry-cache](https://npm.io/package/file-entry-cache.md) ^6.0.1
- [get-package-type](https://npm.io/package/get-package-type.md) ^0.1.0
- [istanbul-reports](https://npm.io/package/istanbul-reports.md) ^3.1.5
- [path-is-absolute](https://npm.io/package/path-is-absolute.md) ^1.0.1
- [babel-preset-jest](https://npm.io/package/babel-preset-jest.md) ^29.5.0
- [grapheme-splitter](https://npm.io/package/grapheme-splitter.md) ^1.0.4
- [jest-message-util](https://npm.io/package/jest-message-util.md) ^29.5.0
- [jest-pnp-resolver](https://npm.io/package/jest-pnp-resolver.md) ^1.2.3
- [lines-and-columns](https://npm.io/package/lines-and-columns.md) ^1.2.4
- [require-directory](https://npm.io/package/require-directory.md) ^2.1.1
- [write-file-atomic](https://npm.io/package/write-file-atomic.md) ^4.0.2
- [convert-source-map](https://npm.io/package/convert-source-map.md) ^2.0.0
- [jest-changed-files](https://npm.io/package/jest-changed-files.md) ^29.5.0
- [jest-leak-detector](https://npm.io/package/jest-leak-detector.md) ^29.5.0
- [jest-matcher-utils](https://npm.io/package/jest-matcher-utils.md) ^29.5.0
- [source-map-support](https://npm.io/package/source-map-support.md) ^0.5.13
- [to-fast-properties](https://npm.io/package/to-fast-properties.md) ^2.0.0
- [collect-v8-coverage](https://npm.io/package/collect-v8-coverage.md) ^1.0.1
- [eslint-visitor-keys](https://npm.io/package/eslint-visitor-keys.md) ^3.4.1
- [istanbul-lib-report](https://npm.io/package/istanbul-lib-report.md) ^3.0.0
- [strip-final-newline](https://npm.io/package/strip-final-newline.md) ^2.0.0
- [strip-json-comments](https://npm.io/package/strip-json-comments.md) ^3.1.1
- [electron-to-chromium](https://npm.io/package/electron-to-chromium.md) ^1.4.396
- [escape-string-regexp](https://npm.io/package/escape-string-regexp.md) ^4.0.0
- [json-schema-traverse](https://npm.io/package/json-schema-traverse.md) ^0.4.1
- [babel-plugin-istanbul](https://npm.io/package/babel-plugin-istanbul.md) ^6.1.1
- [istanbul-lib-coverage](https://npm.io/package/istanbul-lib-coverage.md) ^3.2.0
- [jest-environment-node](https://npm.io/package/jest-environment-node.md) ^29.5.0
- [update-browserslist-db](https://npm.io/package/update-browserslist-db.md) ^1.0.11
- [babel-plugin-jest-hoist](https://npm.io/package/babel-plugin-jest-hoist.md) ^29.5.0
- [is-fullwidth-code-point](https://npm.io/package/is-fullwidth-code-point.md) ^3.0.0
- [istanbul-lib-instrument](https://npm.io/package/istanbul-lib-instrument.md) ^5.2.1
- [istanbul-lib-source-maps](https://npm.io/package/istanbul-lib-source-maps.md) ^4.0.1
- [jest-resolve-dependencies](https://npm.io/package/jest-resolve-dependencies.md) ^29.5.0
- [fast-json-stable-stringify](https://npm.io/package/fast-json-stable-stringify.md) ^2.1.0
- [json-parse-even-better-errors](https://npm.io/package/json-parse-even-better-errors.md) ^2.3.1
- [supports-preserve-symlinks-flag](https://npm.io/package/supports-preserve-symlinks-flag.md) ^1.0.0
- [babel-preset-current-node-syntax](https://npm.io/package/babel-preset-current-node-syntax.md) ^1.0.1
- [json-stable-stringify-without-jsonify](https://npm.io/package/json-stable-stringify-without-jsonify.md) ^1.0.1

## Recent versions

- 1.0.0 (latest) — 2023-06-07

## README

# mdlinks-belen

mdlinks-belen es una herramienta que analiza archivos Markdown y extrae los enlaces encontrados en ellos brindando diferentes estadisticas de acuerdo a las opciones que accedas. 
## Instalación

Puedes instalar mdlinks-belen utilizando npm. Ejecuta el siguiente comando en tu terminal: 
`npm install <github-belenoese>/mdlinks-belen`

## Guía de uso

Para ejecutar mdLinks ejecuta el siguiente comando desde la terminal:
`mdlinks-belen <path-to-file> [options]`

Por ejemplo:

```sh
$ mdlinks-belen ./some/example.md
./some/example.md http://algo.com/2/3/ Link a algo
./some/example.md https://otra-cosa.net/algun-doc.html algún doc
./some/example.md http://google.com/ Google
```
El comportamiento identifica el archivo Markdown, analiza su contenido e imprime los enlaces encontrados junto con la ruta del archivo y el texto del enlace.

## Opciones
### `--validate`
`mdlinks-belen <path-to-file> --validate`

Si se pasa esta opción, mdlinks-belen realizará una petición HTTP para verificar si los enlaces son válidos.

Por ejemplo:

```sh
$ mdlinks-belen ./some/example.md --validate
./some/example.md http://algo.com/2/3/ ok 200 Link a algo
./some/example.md https://otra-cosa.net/algun-doc.html fail 404 algún doc
./some/example.md http://google.com/ ok 301 Google
```
Como resultado el output incluirá la palabra ok o fail después de la URL, así como el status de la respuesta recibida a la petición HTTP a dicha URL.

### `--stats`
`mdlinks-belen <path-to-file> --stats`

Si pasamos la opción `--stats` el output (salida) será un texto con estadísticas
básicas sobre los links.

```sh
$ mdlinks-belen ./some/example.md --stats
Total: 3
Unique: 3
```

También podemos combinar `--stats` y `--validate` para obtener estadísticas que
necesiten de los resultados de la validación.

```sh
$ mdlinks-belen ./some/example.md --stats --validate
Total: 3
Unique: 3
Broken: 1
```
## Sobre el proyecto
[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.

Dentro de una comunidad de código abierto, nos han propuesto crear una
herramienta usando [Node.js](https://nodejs.org/), que lea y analice archivos
en formato `Markdown`, para verificar los links que contengan y reportar
algunas estadísticas.

## Diagrama de flujo

![diagrama](./diagrama.png)

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