diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 55ae0dc1..23857900 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -9,18 +9,18 @@ jobs: runs-on: ubuntu-latest steps: - name: Carga rama de Git - uses: actions/checkout@v4 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Instala Nix - uses: cachix/install-nix-action@v27 + uses: cachix/install-nix-action@630ae543ea3a38a9a4166f03376c02c50f408342 # v31.11.0 with: nix_path: nixpkgs=channel:nixos-unstable - name: Carga caché Nix - uses: DeterminateSystems/magic-nix-cache-action@v8 + uses: DeterminateSystems/magic-nix-cache-action@55718cd9ebf1737a061487d5ada21abf31e99a98 # v14 - name: Carga caché general - uses: actions/cache@v4 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | .direnv @@ -31,8 +31,9 @@ jobs: - name: Información del entorno run: | - echo $HOME nix develop .#ci --command pnpm store path + echo "HOME=$HOME" + echo "ELM_HOME=$ELM_HOME" - name: Verifica run: nix develop .#ci --command just check diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index fc8f661a..2f31876b 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -5,26 +5,24 @@ on: branches: - master workflow_dispatch: - branches: - - master jobs: deploy: runs-on: ubuntu-latest steps: - name: Carga rama de Git - uses: actions/checkout@v4 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - name: Instala Nix - uses: cachix/install-nix-action@v27 + uses: cachix/install-nix-action@630ae543ea3a38a9a4166f03376c02c50f408342 # v31.11.0 with: nix_path: nixpkgs=channel:nixos-unstable - name: Carga caché Nix - uses: DeterminateSystems/magic-nix-cache-action@v8 + uses: DeterminateSystems/magic-nix-cache-action@55718cd9ebf1737a061487d5ada21abf31e99a98 # v14 - name: Carga caché general - uses: actions/cache@v4 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | .direnv @@ -35,8 +33,9 @@ jobs: - name: Información del entorno run: | - echo $HOME nix develop .#ci --command pnpm store path + echo "HOME=$HOME" + echo "ELM_HOME=$ELM_HOME" - name: Sube a GH Pages run: | diff --git a/.markdownlint.jsonc b/.markdownlint.jsonc new file mode 100644 index 00000000..61ca6c33 --- /dev/null +++ b/.markdownlint.jsonc @@ -0,0 +1,12 @@ +{ + "default": false, + "heading-increment": false, + "link-fragments": true, + "link-image-reference-definitions": true, + "links": true, + "no-duplicate-heading": true, + "no-empty-links": true, + "reference-links-images": true, + "single-title": true, + "table-column-count": true +} \ No newline at end of file diff --git a/book/appendix/function_types.md b/book/appendix/function_types.md index 9f631364..9ff346b2 100644 --- a/book/appendix/function_types.md +++ b/book/appendix/function_types.md @@ -135,4 +135,4 @@ Esto es interesante porque nos permite hacer que el código se lea de izquierda > **Nota:** Yo, personalmente, prefiero cómo queda en el “antes” del ejemplo, pero tal vez es porque aprendí programación funcional en lenguajes que no permiten tuberías. -[pipe]: https://package.elm-lang.org/packages/elm/core/latest/Basics#|> +[pipe]: https://package.elm-lang.org/packages/elm/core/latest/Basics#|%3E diff --git a/book/architecture/forms.md b/book/architecture/forms.md index 8b2fe1f8..9733f655 100644 --- a/book/architecture/forms.md +++ b/book/architecture/forms.md @@ -90,7 +90,7 @@ viewValidation model = Es bastante similar a nuestro [ejemplo de campos de texto](text_fields.md), pero con más campos. -# Modelo +## Modelo Yo siempre empiezo pensando en el `Modelo`. Sabemos que vamos a necesitar tres campos de texto, así que partamos con eso. diff --git a/book/core_language.md b/book/core_language.md index 0914afb7..c7a479b2 100644 --- a/book/core_language.md +++ b/book/core_language.md @@ -49,7 +49,7 @@ Prueba juntar varios strings con el operador `(++)` ⬆️ Estos valores primitivos que hemos visto se vuelven más interesantes a medida que escribamos funciones para transformarlos. -> **Nota:** Puedes leer más sobre distintos operadores, como [`(+)`](op-plus), [`(/)`](op-div) y [`(++)`](op-concat) en la documentación del módulo [`Basics`](core-basics). Lamentablemente, esta documentación está en inglés, pero está escrita en un lenguaje muy poco técnico, y aunque sea con traducción automática, creo que vale la pena darle una leída una vez que te parezca apropiado. +> **Nota:** Puedes leer más sobre distintos operadores, como [`(+)`][op-plus], [`(/)`][op-div] y [`(++)`][op-concat] en la documentación del módulo [`Basics`][core-basics]. Lamentablemente, esta documentación está en inglés, pero está escrita en un lenguaje muy poco técnico, y aunque sea con traducción automática, creo que vale la pena darle una leída una vez que te parezca apropiado. [op-plus]: https://package.elm-lang.org/packages/elm/core/latest/Basics#+ [op-div]: https://package.elm-lang.org/packages/elm/core/latest/Basics#/ diff --git a/book/effects/json.md b/book/effects/json.md index a376396e..833db80a 100644 --- a/book/effects/json.md +++ b/book/effects/json.md @@ -149,7 +149,7 @@ Este ejemplo se parece mucho al anterior: La principal diferencia está en la definición de `getRandomQuote`. En vez de usar `Http.expectString`, lo hemos cambiado a `Http.expectJson`. ¿Qué significa esto? -## JSON +## Datos JSON Si le pides a [`/api/random-quotes`](https://elm-lang.org/api/random-quotes) una cita aleatoria, el servidor produce un poco de JSON con esta estructura: diff --git a/book/effects/time.md b/book/effects/time.md index 1f8f1954..c7c2f98e 100644 --- a/book/effects/time.md +++ b/book/effects/time.md @@ -176,7 +176,6 @@ Leer la documentación de [`Task`][task] es la mejor manera de entender esa lín -[utc]: https://package.elm-lang.org/packages/elm/time/latest/Time#utc [task]: https://package.elm-lang.org/packages/elm/core/latest/Task > **Ejercicios:** diff --git a/book/interop/flags.md b/book/interop/flags.md index bf499d5c..abb3f4e3 100644 --- a/book/interop/flags.md +++ b/book/interop/flags.md @@ -135,20 +135,17 @@ Mucha gente prefiere usar `Json.Decode.Value` porque les otorga un control más Los otros tipos que Elm soporta son un rezago de la época antes de que existieran los decodificadores JSON. Si decides usar estos otros tipos, hay ciertos detalles a tener en cuenta. Los siguientes ejemplos muestran el tipo deseado de la flag, y en forma anidada se ilustra cómo se interpretan distintos valores JS: - `init : Int -> ...` - - `0` → `0` - `7` → `7` - `3.14` → error - `6.12` → error - `init : Maybe Int -> ...` - - `null` → `Nothing` - `42` → `Just 42` - `"hi"` → error - `init : { x : Float, y : Float } -> ...` - - `{ x: 3, y: 4, z: 50 }` → `{ x = 3, y = 4 }` - `{ x: 3, name: "Tom" }` → error - `{ x: 360, y: "why?" }` → error diff --git a/book/interop/ports.md b/book/interop/ports.md index 8b2d8a06..606afa7f 100644 --- a/book/interop/ports.md +++ b/book/interop/ports.md @@ -254,7 +254,7 @@ En este caso lo hacemos al recibir un mensaje vía websocket, pero podríamos en Aquí tienes algunas sugerencias y soluciones a problemas frecuentes: -- **Es recomendado enviar `Json.Encode.Value` en tus puertos.** Igual que con flags, hay ciertos tipos básicos que pueden transmitirse vía puertos. Esto viene del tiempo antes de que existieran los decodificadores de JSON, y puedes leer más al respecto [aquí](/interop/flags.html#verifying-flags). +- **Es recomendado enviar `Json.Encode.Value` en tus puertos.** Igual que con flags, hay ciertos tipos básicos que pueden transmitirse vía puertos. Esto viene del tiempo antes de que existieran los decodificadores de JSON, y puedes leer más al respecto [aquí](/interop/flags.html#verificando-las-flags). - **Todas las declaraciones `port` deben aparecer en un `port module`.** Probablemente lo mejor es organizar tus puertos en un sólo `port module` para que sea más fácil visualizar la interfaz, toda en un sólo lugar. diff --git a/book/optimization/lazy.md b/book/optimization/lazy.md index 45d27165..d36a4b37 100644 --- a/book/optimization/lazy.md +++ b/book/optimization/lazy.md @@ -75,7 +75,7 @@ Este proceso de comparación hace posible minimizar la manipulación del DOM. Si Dicho esto, ¿podemos reducir aún más el trabajo necesario? -## `Html.Lazy` +## Módulo `Html.Lazy` El módulo [`Html.Lazy`](https://package.elm-lang.org/packages/elm/html/latest/Html-Lazy/) nos permite incluso ahorrarnos la construcción de los nodos virtuales. La pieza central es la función `lazy`: diff --git a/book/webapps/navigation.md b/book/webapps/navigation.md index 47154598..95691259 100644 --- a/book/webapps/navigation.md +++ b/book/webapps/navigation.md @@ -42,9 +42,6 @@ En vez de cargar nuevo HTML, estas tres adiciones nos dan control completo sobre [u]: https://package.elm-lang.org/packages/elm/url/latest/Url#Url [ur]: https://package.elm-lang.org/packages/elm/browser/latest/Browser#UrlRequest -[bn]: https://package.elm-lang.org/packages/elm/browser/latest/Browser-Navigation -[bnp]: https://package.elm-lang.org/packages/elm/browser/latest/Browser-Navigation#pushUrl -[bnl]: https://package.elm-lang.org/packages/elm/browser/latest/Browser-Navigation#load ## Ejemplo diff --git a/flake.lock b/flake.lock index f7f34e81..0f706881 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1724395761, - "narHash": "sha256-zRkDV/nbrnp3Y8oCADf5ETl1sDrdmAW6/bBVJ8EbIdQ=", + "lastModified": 1784115452, + "narHash": "sha256-BoYPdqk6jlKXy+DyUzyGV/CtRGfAhk2MmIgBhsemTGI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ae815cee91b417be55d43781eb4b73ae1ecc396c", + "rev": "35d3407a3816f3b341d8cf1d60abaf2b7b8166ac", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index b07f8aea..728aa947 100644 --- a/flake.nix +++ b/flake.nix @@ -16,9 +16,10 @@ pkgs.alejandra pkgs.elmPackages.elm pkgs.just - pkgs.nodePackages.pnpm - pkgs.nodePackages.prettier - pkgs.nodePackages.uglify-js + pkgs.markdownlint-cli + pkgs.pnpm + pkgs.prettier + pkgs.uglify-js pkgs.nodejs-slim_22 ]; in { diff --git a/justfile b/justfile index 68115944..8db5de2c 100644 --- a/justfile +++ b/justfile @@ -21,7 +21,8 @@ format: # Verifica que todo funcione y que los archivos estén formateados. check: build - prettier '**/*.{md,json,yml}' --check + markdownlint book/ + prettier '**/*.{md,json,yml,css}' --check alejandra *.nix --check # Publica en Github Pages. diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..082aac2e --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +allowBuilds: + elm-format: false