Skip to content

Conversation

@enzonotario
Copy link
Member

@enzonotario enzonotario commented Apr 20, 2025

  • Añadir @es-js/runtime

  • Arreglar Error

  • Añadir recomentacion de coderabbitai

  • Añadir ventana, navegador y algunas funciones

  • añadir mas funciones

  • Arreglar Error

  • Arreglar

  • Añadir Apoderado = Proxy

  • Añadir tipos

  • .

  • añadir mas funciones,
    cambiar Apoderado a Puente
    añadir Simbolo = Symbol

  • Arreglar Error en Simbolo

  • Añadir Numero Grande

  • Arreglar Proxy y añadir NumeroGrande a tipos

  • Añadir Documento

  • Arreglar Errores

  • Arreglar error de ventana caches

  • Arreglar propiedades de simbolo

  • Cambiar documento a document estatico

  • Arreglar simbolo aCadena propiedad a etiquetaCadena

  • Arreglar Documento

  • chore(tests): add Plugins fixtures

  • chore(tests): plugins fixtures

  • Update packages/core/src/plugins/ventana/index.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

  • Update packages/core/src/plugins/documento/index.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

  • Update packages/core/src/plugins/ventana/index.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

  • Update packages/core/src/plugins/documento/index.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

  • Update packages/core/src/plugins/documento/index.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

  • change(documento): cambiar agregar por anexar; eliminar funciones deprecadas; agregar Fixture para Tests

  • chore(documento): fix fixture

  • Update packages/core/src/plugins/ventana/index.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

  • Añadir Icono y Simbolo tests

  • Arreglar Symbol...

  • Añadir test de Puente y arreglar Simbolo

  • Añadir NumeroGrande Tests y Arreglar Puente

  • Arreglar NumeroGrande

  • Quitar ;

  • Añadir propiedades Documento

  • Arreglar Errores

  • Arreglar...

  • Añadir ; ...

  • Añadir...

  • Arreglar mensajes de error de Extension VSCode y añadir Ignorar tipos de salto de linea

  • Arreglar Simbolo Test

  • Añadir Navegador

  • Añadir Ventana

  • chore: update tests and add action (chore: update tests and add action #11)

  • Añadir @es-js/runtime

  • Arreglar Ventana

  • chore(documento): cambios && eliminar deprecados

  • chore(documento): cambios && eliminar deprecados

  • change: renombrar NumeroGrande a EnteroGrande

  • change(EnteroGrande): claves && eliminar etiquetaCadena porque esta duplicado en Simbolo

  • change(navegador): keywords

  • change(simbolo): aCadenaEtiqueta

  • chore: renombrar puente -> paoderado

  • chore(simbolo): keywords && tests

  • chore(soporte): keywords

  • chore(ventana): keywords

  • chore(soporte): keywords && tests

  • chore: salto lineas

  • chore: run format

  • chore(documento): keywords

  • chore(navegador): keywords

  • chore(vscode-esjs): revertir errorHandler

  • chore(vscode-esjs): release v0.1.2

  • chore(language-tools): update from develop

  • chore(core/plugins): tipos tests

  • fix(core/plugins): tipos

  • chore: run format

  • chore: remove unused fixtures

  • chore(core/simbolo): quitar aPrimitivo como metodo

  • chore: quitar codigo no usado

  • chore(core/ventana): keywords

  • chore(core/plugins): objetos


Co-authored-by: Enzo Notario enzo.notario@gmail.com
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

Summary by CodeRabbit

  • Nuevas funcionalidades

    • Se agregaron plugins para convertir referencias en español a objetos JavaScript estándar: Apoderado (Proxy), Documento (Document), EnteroGrande (BigInt), Navegador (navigator), Simbolo (Symbol), Ventana (window) y Objetos.
    • Se añadieron numerosos archivos de pruebas y fixtures que cubren estos plugins y sus equivalentes en JavaScript.
    • Se incorporó un flujo de trabajo de pruebas automatizadas (CI) con soporte para múltiples versiones de Node.js y pnpm.
  • Mejoras

    • Se ampliaron los mapeos de palabras clave y métodos soportados en los plugins existentes.
    • Se actualizaron y reorganizaron scripts de test y dependencias en varios paquetes para usar Vitest 2.x.
    • Mejoras en la documentación generada y en la cobertura de pruebas para los nuevos plugins.
  • Corrección de errores

    • Ajustes menores en nombres de métodos y orden de importaciones para mayor coherencia.
  • Estilo y Refactorización

    • Cambios de formato y orden en declaraciones de importación/exportación para mejorar la legibilidad y mantenimiento del código.
    • Se deshabilitaron temporalmente ciertos tests en paquetes de plugins de Prettier y Vite.
  • Tareas de mantenimiento

    • Actualización de versiones de dependencias y scripts de publicación en múltiples paquetes.
    • Añadido soporte explícito para pnpm como gestor de paquetes.

enzonotario and others added 9 commits November 13, 2024 23:06
* Añadir @es-js/runtime

* Arreglar Error

* Añadir recomentacion de coderabbitai

* Añadir ventana, navegador y algunas funciones

* añadir mas funciones

* Arreglar Error

* Arreglar

* Añadir Apoderado = Proxy

* Añadir tipos

* .

* añadir mas funciones,
cambiar Apoderado a Puente
añadir Simbolo = Symbol

* Arreglar Error en Simbolo

* Añadir Numero Grande

* Arreglar Proxy y añadir NumeroGrande a tipos

* Añadir Documento

* Arreglar Errores

* Arreglar error de ventana caches

* Arreglar propiedades de simbolo

* Cambiar documento a document estatico

* Arreglar simbolo aCadena propiedad a etiquetaCadena

* Arreglar Documento

* chore(tests): add Plugins fixtures

* chore(tests): plugins fixtures

* Update packages/core/src/plugins/ventana/index.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/core/src/plugins/documento/index.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/core/src/plugins/ventana/index.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/core/src/plugins/documento/index.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/core/src/plugins/documento/index.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* change(documento): cambiar `agregar` por `anexar`; eliminar funciones deprecadas; agregar Fixture para Tests

* chore(documento): fix fixture

* Update packages/core/src/plugins/ventana/index.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Añadir Icono y Simbolo tests

* Arreglar Symbol...

* Añadir test de Puente y arreglar Simbolo

* Añadir NumeroGrande Tests y Arreglar Puente

* Arreglar NumeroGrande

* Quitar ;

* Añadir propiedades Documento

* Arreglar Errores

* Arreglar...

* Añadir ; ...

* Añadir...

* Arreglar mensajes de error de Extension VSCode y añadir Ignorar tipos de salto de linea

* Arreglar Simbolo Test

* Añadir Navegador

* Añadir Ventana

* chore: update tests and add action (#11)

* Añadir @es-js/runtime

* Arreglar Ventana

* chore(documento): cambios && eliminar deprecados

* chore(documento): cambios && eliminar deprecados

* change: renombrar NumeroGrande a EnteroGrande

* change(EnteroGrande): claves && eliminar `etiquetaCadena` porque esta duplicado en Simbolo

* change(navegador): keywords

* change(simbolo): aCadenaEtiqueta

* chore: renombrar puente -> paoderado

* chore(simbolo): keywords && tests

* chore(soporte): keywords

* chore(ventana): keywords

* chore(soporte): keywords && tests

* chore: salto lineas

* chore: run format

* chore(documento): keywords

* chore(navegador): keywords

* chore(vscode-esjs): revertir errorHandler

* chore(vscode-esjs): release v0.1.2

* chore(language-tools): update from develop

* chore(core/plugins): tipos tests

* fix(core/plugins): tipos

* chore: run format

* chore: remove unused fixtures

* chore(core/simbolo): quitar aPrimitivo como metodo

* chore: quitar codigo no usado

* chore(core/ventana): keywords

* chore(core/plugins): objetos

---------

Co-authored-by: Enzo Notario <enzo.notario@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* chore(runtime): release v0.0.1-beta.1

* change(language-tools): deprecate `osi` and `global`

* chore(esbabel): tests

* chore(language-tools): tests
@vercel
Copy link

vercel bot commented Apr 20, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

1 Skipped Deployment
Name Status Preview Comments Updated (UTC)
editor ⬜️ Ignored (Inspect) Visit Preview Apr 20, 2025 6:17pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Apr 20, 2025

## Walkthrough

Se añade un nuevo flujo de trabajo de GitHub Actions para pruebas automatizadas en múltiples versiones de Node.js. Se introduce una condición para agregar y eliminar un listener de evento `beforeunload` en el componente PlaygroundShell según el entorno y configuración. Se eliminan restricciones para prevenir el cierre de ventana en modo desarrollo. Se actualizan importaciones JSON para usar `with { type: 'json' }`. Se mejoran scripts de test en varios `package.json` y se añade un campo para especificar la versión de pnpm. Se agregan múltiples nuevos plugins para convertir nombres en español a sus equivalentes JavaScript estándar, incluyendo `apoderado`, `documento`, `enterogrande`, `navegador`, `objetos`, `simbolo` y `ventana`. Se reorganizan importaciones y se amplían mapas de palabras clave y tipos. Se añaden numerosos fixtures de prueba para cubrir estos plugins y objetos. Se refactorizan utilidades para reemplazos masivos de palabras clave. Además, se actualizan versiones de dependencias, se ajustan configuraciones de CI/CD, se desactivan ciertos tests en plugins Prettier y Vite, y se realizan mejoras menores de estilo y organización en varios archivos.

## Changes

| Archivos / Grupo                                                      | Resumen de cambios                                                                                                                                                                                                                                                                                                                                                                     |
|----------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `.github/workflows/test.yml`, `package.json`, `packages/cli/package.json`, `packages/language-tools/package.json`, `packages/language-tools/vite.config.js`, `packages/language-tools/test/language-tools.test.js`, `packages/prettier-plugin-eshtml/package.json`, `packages/prettier-plugin-esjs/package.json`, `packages/prettier-plugin-esvue/package.json`, `packages/prueba/package.json`, `packages/runtime/package.json`, `packages/terminal/package.json`, `packages/vite-plugin-eshtml/package.json`, `packages/vite-plugin-esvue/package.json`, `packages/vscode-esjs/package.json`, `packages/esbabel/package.json`, `packages/eshtml/package.json`, `packages/esjs-loader/package.json`, `packages/esvue/package.json` | Añadido workflow de test en GitHub Actions; actualización y adición de scripts de test; incremento de versiones de paquetes y dependencias (especialmente `vitest`); especificación explícita de versión de pnpm; ajustes en scripts de publicación y configuración CI/CD para pruebas automáticas en varios entornos.                                                                                                  |
| `apps/playground/app/components/playground/PlaygroundShell.vue`, `apps/playground/app/composables/usePlayground.ts`, `apps/playground/nuxt.config.ts` | Condición para agregar/remover listener `beforeunload` solo en producción y no embebido; eliminación de restricción para prevenir cierre de ventana en desarrollo; cambio en importación JSON usando `with { type: 'json' }`.                                                                                                                                                             |
| `packages/core/package.json`, `packages/core/src/compiler/esbabel.compiler.ts`, `packages/core/src/compiler/essucrase.compiler.ts`, `packages/core/src/index.ts`, `packages/core/src/keywords.ts`, `packages/core/src/plugins/cadena/index.ts`, `packages/core/src/plugins/fecha/index.ts`, `packages/core/src/plugins/mate/index.ts`, `packages/core/src/plugins/matriz/index.ts`, `packages/core/src/plugins/numero/index.ts`, `packages/core/src/plugins/promesa/index.ts` | Reordenación y limpieza de importaciones; actualización de dependencias de desarrollo (`prettier`, `vitest`); mejoras menores de estilo y organización sin cambios funcionales.                                                                                                                                                                                                     |
| `packages/core/src/plugins/apoderado/index.ts`, `packages/core/src/plugins/documento/index.ts`, `packages/core/src/plugins/enterogrande/index.ts`, `packages/core/src/plugins/navegador/index.ts`, `packages/core/src/plugins/objetos/index.ts`, `packages/core/src/plugins/simbolo/index.ts`, `packages/core/src/plugins/ventana/index.ts` | Nuevos plugins para convertir nombres en español a equivalentes JavaScript (`Proxy`, `Document`, `BigInt`, `navigator`, `window`, `Symbol`, etc.), con mapeos detallados y funciones `replace` que agregan reglas de transformación para métodos, propiedades, objetos y operadores `instanceof`.                                                                                      |
| `packages/core/src/plugins/index.ts`, `packages/core/src/plugins/tipos/index.ts`, `packages/core/src/plugins/soporte/index.ts`, `packages/core/src/plugins/utils.ts` | Inclusión de nuevos plugins en el array principal; ampliación de mapeos de tipos y palabras clave; refactorización para reemplazos masivos de keywords con nueva función `replaceKeywords`; simplificación interna del plugin de soporte.                                                                                                                                               |
| `packages/core/test/fixtures.test.ts`, `packages/core/test/fixtures/extras/*.esjs`, `packages/core/test/fixtures/extras/*.js` | Añadidos numerosos archivos fixture para pruebas de plugins y objetos (`documento`, `ventana`, `navegador`, `simbolo`, `objetos`, `enterogrande`, `apoderado`, etc.); ampliación de suite de tests para verificar conversiones bidireccionales entre ESJS y JavaScript estándar; normalización de saltos de línea en fixtures.                                                           |
| `packages/esbabel/src/keywords.ts`, `packages/esbabel/test/knownIssues.test.ts` | Comentado/deshabilitado mapeos de keywords (`osi`, `esNuN`, `global`) y reasignación de `esNuN` a `numberMethods`; actualización de pruebas relacionadas para reflejar cambios en traducción de variables y palabras clave.                                                                                                                                                               |
| `packages/runtime/src/index.js` | Reformateo de código para mejorar estilo y consistencia sin cambios funcionales.                                                                                                                                                                                                                                                                                                   |
| `packages/sandbox/src/render/index.ts`, `packages/sandbox/test/utils/codeFrame.test.ts` | Correcciones menores de estilo y ajustes en test de renderizado de código (eliminación de punto y coma, ajuste en estilo CSS esperado).                                                                                                                                                                                                                                             |
| `packages/vite-plugin-eshtml/src/index.ts`, `packages/vite-plugin-eshtml/test/vite-plugin-eshtml.test.ts` | Cambio en la importación de la función `template` de lodash (de named a default import); desactivación de tests específicos con `.skip`.                                                                                                                                                                                                                                            |
| `packages/prettier-plugin-eshtml/test/package.test.ts`, `packages/prettier-plugin-esjs/test/package.test.ts`, `packages/prettier-plugin-esvue/test/package.test.ts` | Desactivación de tests de importación y requerimiento de paquetes Prettier plugin mediante `.skip`.                                                                                                                                                                                                                                                                                   |
| `packages/core/test/fixtures/extras/soporte.esjs`, `packages/core/test/fixtures/extras/soporte.js`, `packages/core/test/fixtures/extras/fecha.esjs`, `packages/core/test/fixtures/extras/matriz.esjs` | Ampliación y corrección de fixtures para cubrir más funciones globales y mejorar cobertura de pruebas, incluyendo manejo de timers, alertas, prompts, confirmaciones, fetch y codificación URI; corrección de llamadas a métodos y formato de código.                                                                                                                               |

## Possibly related PRs

- [es-js/esjs#8](https://github.com/es-js/esjs/pull/8): Añade y actualiza el paquete `@es-js/runtime` y su script principal, directamente relacionado con la inclusión y mejoras del runtime en este PR.
- [es-js/esjs#11](https://github.com/es-js/esjs/pull/11): Incorpora el workflow de GitHub Actions `.github/workflows/test.yml` y la especificación de versión de `pnpm`, igual que en este PR y por tanto directamente conectado a la configuración de CI.

## Poema

> ʕ•ᴥ•ʔ  
>  
> ¡Brinca el conejo entre plugins y test,  
> traduce ventanas, documentos y más!  
> Navegador y símbolo saltan al compás,  
> objetos y apoderados en código verás.  
> Con fixtures y scripts, la suite a bailar,  
> ¡es primavera en ESJS, listo para innovar!  
>  
> (∩`-´)⊃━☆゚.*・。゚ 🥕
✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 30

🔭 Outside diff range comments (1)
packages/vite-plugin-eshtml/test/vite-plugin-eshtml.test.ts (1)

44-79: 💡 Verification agent

❓ Verification inconclusive

Verificar razón del skip en 'build pages'
De igual modo, la prueba 'build pages' se omite sin explicación. Recomiendo añadir un comentario justificativo para el skip o eliminarlo una vez la prueba esté lista para correr en el pipeline.


Verificar y justificar/eliminar el it.skip de la prueba 'build pages'
La prueba build pages está deshabilitada mediante it.skip sin indicar la razón. Para mantener la claridad y asegurar que la prueba se ejecute cuando corresponda, añade un comentario que explique el motivo del skip o elimina el skip si la prueba ya está lista.

Punto de atención:

  • packages/vite-plugin-eshtml/test/vite-plugin-eshtml.test.ts (líneas 44–79)
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1311e12 and dfcc526.

⛔ Files ignored due to path filters (13)
  • packages/core/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • packages/esbabel/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • packages/eshtml/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • packages/esjs-loader/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • packages/esvue/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • packages/language-tools/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • packages/language-tools/test/__snapshots__/language-tools.test.js.snap is excluded by !**/*.snap
  • packages/prueba/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • packages/runtime/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • packages/terminal/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • packages/vite-plugin-eshtml/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • packages/vite-plugin-esvue/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • packages/vscode-esjs/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (75)
  • .github/workflows/test.yml (1 hunks)
  • apps/playground/app/components/playground/PlaygroundShell.vue (2 hunks)
  • apps/playground/app/composables/usePlayground.ts (0 hunks)
  • apps/playground/nuxt.config.ts (1 hunks)
  • package.json (2 hunks)
  • packages/cli/package.json (1 hunks)
  • packages/cli/postinstall.js (1 hunks)
  • packages/core/package.json (2 hunks)
  • packages/core/src/compiler/esbabel.compiler.ts (1 hunks)
  • packages/core/src/compiler/essucrase.compiler.ts (1 hunks)
  • packages/core/src/index.ts (1 hunks)
  • packages/core/src/keywords.ts (1 hunks)
  • packages/core/src/plugins/apoderado/index.ts (1 hunks)
  • packages/core/src/plugins/cadena/index.ts (1 hunks)
  • packages/core/src/plugins/documento/index.ts (1 hunks)
  • packages/core/src/plugins/enterogrande/index.ts (1 hunks)
  • packages/core/src/plugins/fecha/index.ts (1 hunks)
  • packages/core/src/plugins/index.ts (2 hunks)
  • packages/core/src/plugins/mate/index.ts (0 hunks)
  • packages/core/src/plugins/matriz/index.ts (1 hunks)
  • packages/core/src/plugins/navegador/index.ts (1 hunks)
  • packages/core/src/plugins/numero/index.ts (1 hunks)
  • packages/core/src/plugins/objetos/index.ts (1 hunks)
  • packages/core/src/plugins/promesa/index.ts (1 hunks)
  • packages/core/src/plugins/simbolo/index.ts (1 hunks)
  • packages/core/src/plugins/soporte/index.ts (1 hunks)
  • packages/core/src/plugins/tipos/index.ts (2 hunks)
  • packages/core/src/plugins/utils.ts (1 hunks)
  • packages/core/src/plugins/ventana/index.ts (1 hunks)
  • packages/core/test/fixtures.test.ts (2 hunks)
  • packages/core/test/fixtures/extras/apoderado.esjs (1 hunks)
  • packages/core/test/fixtures/extras/apoderado.js (1 hunks)
  • packages/core/test/fixtures/extras/documento.esjs (1 hunks)
  • packages/core/test/fixtures/extras/documento.js (1 hunks)
  • packages/core/test/fixtures/extras/enterogrande.esjs (1 hunks)
  • packages/core/test/fixtures/extras/enterogrande.js (1 hunks)
  • packages/core/test/fixtures/extras/fecha.esjs (1 hunks)
  • packages/core/test/fixtures/extras/matriz.esjs (2 hunks)
  • packages/core/test/fixtures/extras/navegador.esjs (1 hunks)
  • packages/core/test/fixtures/extras/navegador.js (1 hunks)
  • packages/core/test/fixtures/extras/objetos.esjs (1 hunks)
  • packages/core/test/fixtures/extras/objetos.js (1 hunks)
  • packages/core/test/fixtures/extras/simbolo.esjs (1 hunks)
  • packages/core/test/fixtures/extras/simbolo.js (1 hunks)
  • packages/core/test/fixtures/extras/soporte.esjs (1 hunks)
  • packages/core/test/fixtures/extras/soporte.js (1 hunks)
  • packages/core/test/fixtures/extras/ventana.esjs (1 hunks)
  • packages/core/test/fixtures/extras/ventana.js (1 hunks)
  • packages/esbabel/package.json (2 hunks)
  • packages/esbabel/src/keywords.ts (3 hunks)
  • packages/esbabel/test/knownIssues.test.ts (2 hunks)
  • packages/eshtml/package.json (1 hunks)
  • packages/esjs-loader/package.json (1 hunks)
  • packages/esvue/package.json (1 hunks)
  • packages/esvue/test/esvue.test.ts (1 hunks)
  • packages/language-tools/package.json (2 hunks)
  • packages/language-tools/test/language-tools.test.js (1 hunks)
  • packages/language-tools/vite.config.js (1 hunks)
  • packages/prettier-plugin-eshtml/package.json (1 hunks)
  • packages/prettier-plugin-eshtml/test/package.test.ts (1 hunks)
  • packages/prettier-plugin-esjs/package.json (1 hunks)
  • packages/prettier-plugin-esjs/test/package.test.ts (1 hunks)
  • packages/prettier-plugin-esvue/package.json (1 hunks)
  • packages/prettier-plugin-esvue/test/package.test.ts (1 hunks)
  • packages/prueba/package.json (2 hunks)
  • packages/runtime/package.json (2 hunks)
  • packages/runtime/src/index.js (1 hunks)
  • packages/sandbox/src/render/index.ts (1 hunks)
  • packages/sandbox/test/utils/codeFrame.test.ts (1 hunks)
  • packages/terminal/package.json (2 hunks)
  • packages/vite-plugin-eshtml/package.json (2 hunks)
  • packages/vite-plugin-eshtml/src/index.ts (1 hunks)
  • packages/vite-plugin-eshtml/test/vite-plugin-eshtml.test.ts (2 hunks)
  • packages/vite-plugin-esvue/package.json (1 hunks)
  • packages/vscode-esjs/package.json (4 hunks)
💤 Files with no reviewable changes (2)
  • packages/core/src/plugins/mate/index.ts
  • apps/playground/app/composables/usePlayground.ts
🧰 Additional context used
🧬 Code Graph Analysis (4)
packages/core/test/fixtures/extras/apoderado.js (1)
packages/core/test/fixtures/extras/objetos.js (1)
  • apoderado (25-25)
packages/core/src/plugins/utils.ts (1)
packages/core/src/plugins/soporte/index.ts (1)
  • keywords (5-19)
packages/core/src/plugins/objetos/index.ts (3)
packages/core/src/plugins/soporte/index.ts (2)
  • report (3-3)
  • replace (21-27)
packages/core/src/plugins/tipos/index.ts (2)
  • report (4-4)
  • types (6-23)
packages/core/src/plugins/utils.ts (1)
  • replaceObjects (65-82)
packages/core/src/plugins/documento/index.ts (1)
packages/core/src/plugins/utils.ts (4)
  • replaceObjectStaticMethods (98-117)
  • replaceObjectStaticProperties (133-152)
  • replaceInstanceof (183-196)
  • replaceObjects (65-82)
🪛 Biome (1.9.4)
packages/sandbox/src/render/index.ts

[error] 24-24: Reassigning a function parameter is confusing.

The parameter is declared here:

Use a local variable instead.

(lint/style/noParameterAssign)

packages/runtime/src/index.js

[error] 5-5: This var should be declared at the root of the enclosing function.

The var is accessible in the whole body of the enclosing function.
To avoid confusion, it should be declared at the root of the enclosing function.

(lint/correctness/noInnerDeclarations)


[error] 8-8: Use === instead of ==. == is only allowed when comparing against null

== is only allowed when comparing against null

Using == may be unsafe if you are relying on type coercion
Unsafe fix: Use ===

(lint/suspicious/noDoubleEquals)


[error] 9-9: Use === instead of ==. == is only allowed when comparing against null

== is only allowed when comparing against null

Using == may be unsafe if you are relying on type coercion
Unsafe fix: Use ===

(lint/suspicious/noDoubleEquals)


[error] 17-17: Use === instead of ==. == is only allowed when comparing against null

== is only allowed when comparing against null

Using == may be unsafe if you are relying on type coercion
Unsafe fix: Use ===

(lint/suspicious/noDoubleEquals)


[error] 35-35: Use === instead of ==. == is only allowed when comparing against null

== is only allowed when comparing against null

Using == may be unsafe if you are relying on type coercion
Unsafe fix: Use ===

(lint/suspicious/noDoubleEquals)


[error] 41-43: This function expression can be turned into an arrow function.

Function expressions that don't use this can be turned into arrow functions.
Safe fix: Use an arrow function instead.

(lint/complexity/useArrowFunction)


[error] 51-51: This var should be declared at the root of the enclosing function.

The var is accessible in the whole body of the enclosing function.
To avoid confusion, it should be declared at the root of the enclosing function.

(lint/correctness/noInnerDeclarations)


[error] 54-54: Use === instead of ==. == is only allowed when comparing against null

== is only allowed when comparing against null

Using == may be unsafe if you are relying on type coercion
Unsafe fix: Use ===

(lint/suspicious/noDoubleEquals)


[error] 55-55: Use === instead of ==. == is only allowed when comparing against null

== is only allowed when comparing against null

Using == may be unsafe if you are relying on type coercion
Unsafe fix: Use ===

(lint/suspicious/noDoubleEquals)


[error] 3-64: This function expression can be turned into an arrow function.

Function expressions that don't use this can be turned into arrow functions.
Safe fix: Use an arrow function instead.

(lint/complexity/useArrowFunction)


[error] 4-4: This let declares a variable that is only assigned once.

'etiquetas' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


[error] 5-5: Use let or const instead of var.

A variable declared with var is accessible in the whole body of the function. Thus, the variable can be accessed before its initialization and outside the block where it is declared.
See MDN web docs for more details.
Unsafe fix: Use 'let' instead.

(lint/style/noVar)


[error] 12-12: This let declares a variable that is only assigned once.

'codigoCom' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


[error] 13-13: This let declares a variable that is only assigned once.

'elemento' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


[error] 30-30: This let declares a variable that is only assigned once.

'codigoCom' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


[error] 31-31: This let declares a variable that is only assigned once.

'elemento' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


[error] 50-50: This let declares a variable that is only assigned once.

'etiquetasH' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


[error] 51-51: Use let or const instead of var.

A variable declared with var is accessible in the whole body of the function. Thus, the variable can be accessed before its initialization and outside the block where it is declared.
See MDN web docs for more details.
Unsafe fix: Use 'let' instead.

(lint/style/noVar)

🪛 actionlint (1.7.4)
.github/workflows/test.yml

22-22: the runner of "actions/checkout@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)


25-25: the runner of "actions/setup-node@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: test (18.x)
🔇 Additional comments (102)
packages/esjs-loader/package.json (1)

29-29: Actualización de vitest a v2.1.5
La dependencia de desarrollo vitest se ha actualizado a la versión ^2.1.5, en línea con la actualización coordinada en otros paquetes.

packages/eshtml/package.json (1)

30-30: Actualización de vitest a v2.1.5
Se ha elevado vitest a ^2.1.5 para garantizar consistencia con el resto del monorepo y compatibilidad con la nueva configuración de CI.

packages/vite-plugin-esvue/package.json (1)

35-35: Actualización de vitest a v2.1.5
Se alinea la versión de vitest con las actualizaciones en los demás paquetes, asegurando uniformidad en el entorno de pruebas.

packages/core/src/index.ts (1)

1-1: Reordenación de imports: putout al inicio
Mover la importación de @putout/bundle a la parte superior mejora la coherencia y visibilidad de las dependencias. Verifica que no se introduzcan dependencias circulares ni efectos secundarios inesperados.

packages/esvue/package.json (1)

28-28: Actualización de vitest a v2.1.5
La versión de vitest se ha unificado a ^2.1.5, coincidendo con el patrón de actualización en todo el repositorio.

packages/esbabel/package.json (2)

3-3: Versión actualizada correctamente
Se ha incrementado la versión a 0.0.1-beta.2 de forma consistente con la estrategia de versionado del proyecto.


22-22: Verificar compatibilidad de Vitest 2.x
La dependencia vitest se ha actualizado a ^2.1.5. Comprueba que todos los tests existentes funcionan sin ajustes adicionales en la configuración o en las APIs de Vitest.

packages/runtime/package.json (1)

3-4: Sincronización de versión
Se ha incrementado la versión a 0.0.1-beta.1, alineando este paquete con el resto de actualizaciones del monorepo.

packages/prueba/package.json (2)

3-3: Versión incrementada correctamente
Se ha pasado de 0.0.10 a 0.0.11, consistente con el patrón de publicación semántica.


17-18: Actualización de dependencias de desarrollo
vite y vitest se han promovido a versiones más recientes (^5.4.11 y ^2.1.5). Valida que la configuración de Vite y los tests corran sin errores después de estos cambios.

packages/core/package.json (2)

3-3: Bump de versión
La versión ha sido actualizada a 0.1.0-beta.17, en línea con el resto del monorepo.


35-35: Compatibilidad con Vitest 2.x
La versión de vitest se ha actualizado a ^2.1.5. Verifica que los tests del paquete funcionen correctamente con esta versión y actualiza la configuración si es necesario.

packages/terminal/package.json (2)

3-3: Actualización correcta de versión del paquete.

La versión del paquete ha sido incrementada de 1.1.9 a 1.1.10, lo cual es apropiado para reflejar los cambios realizados en esta actualización.


32-32: Actualización adecuada de dependencia.

La actualización de la dependencia de desarrollo "xterminal" a la versión 2.1.9 es apropiada. Esta actualización probablemente incluye mejoras o correcciones que beneficiarán al componente de terminal.

packages/cli/postinstall.js (1)

3-3: Actualización correcta de la sintaxis de importación de JSON.

Se ha actualizado la sintaxis de importación de JSON utilizando with { type: 'json' } en lugar de assert { type: 'json' }. Esta es una actualización apropiada que utiliza la nueva sintaxis de importación de módulos de ES.

packages/esvue/test/esvue.test.ts (1)

50-53: Mejora en la legibilidad del objeto de opciones.

El cambio de formato del objeto de opciones de una línea a múltiples líneas mejora la legibilidad del código y sigue buenas prácticas de formato. Esta modificación mantiene la misma funcionalidad mientras hace el código más mantenible.

apps/playground/app/components/playground/PlaygroundShell.vue (3)

10-11: Importación correcta del objeto settings.

Se ha añadido correctamente la importación del objeto de configuración que será utilizado para controlar el comportamiento del evento 'beforeunload'.


27-29: Mejora en la gestión del evento 'beforeunload'.

Se ha añadido una condición adecuada para registrar el evento 'beforeunload' sólo cuando no estamos en modo desarrollo y no está habilitado el modo 'embed'. Esto evita interrupciones innecesarias durante el desarrollo y cuando la aplicación está embebida en otro contexto.


35-37: Consistencia en la eliminación del evento 'beforeunload'.

La condición para eliminar el evento 'beforeunload' coincide correctamente con la condición de su registro, manteniendo la consistencia en la gestión de eventos.

packages/prettier-plugin-eshtml/package.json (1)

21-21: Validación del nuevo script test:run.
Se ha añadido "test:run": "vitest run" de forma consistente con otros paquetes del monorepo. Esto ayuda a unificar la ejecución de tests en CI.

packages/core/src/plugins/promesa/index.ts (1)

4-4: Reordenamiento de import sin impacto funcional.
La posición de replaceObjectStaticMethods cambió para alinear el orden de imports con otros plugins. No hay cambios de lógica ni nuevos efectos secundarios.

packages/core/src/plugins/fecha/index.ts (1)

5-5: Reordenamiento de import sin impacto funcional.
La importación de replaceObjectStaticMethods se movió para mantener consistencia en el orden de los imports; no afecta la funcionalidad existente.

packages/core/src/compiler/esbabel.compiler.ts (1)

2-2: Consolidación de tipos en un solo import.
Se combinó la importación de CompileOptions y Compiler en una línea, mejorando la claridad sin cambiar la lógica.

packages/core/src/plugins/cadena/index.ts (1)

6-6: Reordenamiento de importaciones correcto

El cambio sólo reordena la importación de replaceObjectStaticMethods sin afectar la funcionalidad del código. Este tipo de ajustes de estilo ayuda a mantener la consistencia en la estructura del código.

packages/prettier-plugin-esvue/test/package.test.ts (1)

6-6:

Details

❓ Verification inconclusive

Verificar la omisión de pruebas de importación

Se han desactivado las pruebas de importabilidad y requeribilidad con .skip. Esta modificación es consistente con cambios similares en otros archivos de prueba de plugins de prettier, pero sería útil entender:

  1. ¿Es esta una medida temporal o permanente?
  2. ¿Hay algún problema específico con estas pruebas?
  3. ¿Están planificadas pruebas alternativas?

Also applies to: 12-12


🏁 Script executed:

#!/bin/bash
# Buscar otros archivos de prueba con patrones similares de omisión
echo "Buscando otros tests omitidos con .skip en archivos de prettier-plugin:"
rg "it\.skip\('should be (importable|requireable)" --type ts

Length of output: 791


Verificar alcance y motivación de las pruebas omitidas

Se han desactivado sistemáticamente las pruebas should be importable y should be requireable en todos los archivos package.test.ts de los plugins de Prettier:

  • packages/prettier-plugin-eshtml/test/package.test.ts
  • packages/prettier-plugin-esvue/test/package.test.ts
  • packages/prettier-plugin-esjs/test/package.test.ts

Para mantener la cobertura y entender el contexto, por favor aclara:

  1. ¿Es esta una medida temporal durante el desarrollo o una decisión definitiva?
  2. ¿Qué problemas específicos motivaron la omisión de ambas pruebas?
  3. ¿Se planea reemplazarlas o introducir pruebas alternativas?
packages/core/test/fixtures/extras/fecha.esjs (1)

40-40: Mejora en la consistencia lingüística

El cambio de aCadenaLocale() a aCadenaLocalizada() mejora la coherencia terminológica en español, eliminando el anglicismo "Locale" y utilizando un término completamente traducido. Esta modificación se alinea con la nomenclatura utilizada en otros plugins como enterogrande, creando una experiencia más consistente para los desarrolladores hispanohablantes.

packages/core/src/compiler/essucrase.compiler.ts (1)

2-2: Reordenamiento de importaciones para mejorar la organización.

El cambio reordena las importaciones de tipos antes de las importaciones de funciones, mejorando la estructura y consistencia del código. Esta organización sigue el patrón aplicado en otros archivos del compilador.

packages/vite-plugin-eshtml/package.json (2)

3-3: Actualización de versión a beta.2.

Incremento adecuado de la versión del paquete de "0.0.1-beta.1" a "0.0.1-beta.2", siguiendo las convenciones de versionado semántico para versiones de desarrollo.


23-23: Adición de dependencia de Lodash.

Se ha agregado la dependencia de Lodash que corresponde con cambios en el archivo src/index.ts donde se modifica la forma de importar la función template.

packages/core/test/fixtures/extras/apoderado.esjs (1)

1-1: Nuevo caso de prueba para la transformación de Apoderado a Proxy.

Este fixture de prueba establece la base para verificar la correcta transformación de la sintaxis crear Apoderado() a new Proxy() en JavaScript estándar. Se integra con el nuevo plugin de apoderado añadido en este PR.

packages/core/src/plugins/matriz/index.ts (1)

5-5: Reorganización del orden de importaciones.

La reordenación de la importación de replaceObjectStaticMethods es parte de un esfuerzo más amplio para estandarizar la estructura de las importaciones en todos los módulos de plugins. No hay cambios funcionales en este ajuste.

packages/core/test/fixtures/extras/matriz.esjs (2)

9-9: ¡Buena corrección estilística!

Se agregó un punto y coma después de matriz.longitud para mantener la consistencia con las convenciones de estilo del código.


23-23: Mejora en la legibilidad del código

Se combinaron las llamadas encadenadas a filtrar y mapear en una sola línea, lo que mejora la consistencia del estilo en el código.

packages/prettier-plugin-esjs/package.json (1)

21-21: Adición de script para ejecución de pruebas

La adición del script test:run estandariza la ejecución de pruebas con vitest run y se alinea con los cambios similares en otros paquetes del repositorio. Esta mejora facilita la integración con el flujo de trabajo de CI en GitHub Actions.

packages/prettier-plugin-esvue/package.json (1)

21-21: Adición de script para ejecución de pruebas

La adición del script test:run estandariza la ejecución de pruebas con vitest run y se alinea con los cambios similares en otros paquetes del repositorio. Esta mejora facilita la integración con el flujo de trabajo de CI en GitHub Actions.

packages/prettier-plugin-eshtml/test/package.test.ts (2)

6-10: Uso intencional de it.skip para la prueba de importación ES Module.
Se ha omitido temporalmente la prueba de import dinámico para agilizar el CI. Asegúrate de reactivar o cubrir este caso en el entorno local si hay planes de compatibilidad ESM.


12-16: Uso intencional de it.skip para la prueba de CommonJS.
Al igual que en la importación ESM, se omite la verificación de require para optimizar el pipeline. Verifica manualmente la compatibilidad CommonJS si es requisito de tu distribución.

packages/sandbox/test/utils/codeFrame.test.ts (1)

16-16: Eliminación de white-space: pre-wrap en el span de estilo.
La propiedad de espacio en blanco ya no es necesaria en la salida esperada. Este ajuste simplifica el HTML sin impactar la claridad del resaltado.

packages/cli/package.json (1)

12-12: Unificación del script de test como test:run.
La adición de "test:run" armoniza la invocación de pruebas en CI según el nuevo flujo de trabajo. Buen ajuste para estandarizar comandos en todos los paquetes.

packages/core/src/plugins/numero/index.ts (1)

2-6: Reordenación de imports desde ../utils.
El cambio de posición de replaceExpressionMethods y replaceObjectStaticMethods es solo estilístico y no altera la funcionalidad. Alinea esta ordenación con las convenciones del resto de plugins si existe guía interna.

packages/vite-plugin-eshtml/src/index.ts (1)

2-2: Importación directa de lodash/template.
Pasar de import { template } from 'lodash' a import template from 'lodash/template' reduce el tamaño del bundle y mejora la carga parcial. Asegúrate de que la dependencia lodash o lodash.template esté correctamente instalada en package.json.

packages/language-tools/vite.config.js (1)

1-2: Importación de defineConfig correcta
La importación de defineConfig desde vitest/config es apropiada y necesaria para configurar correctamente Vitest en este paquete.

packages/vite-plugin-eshtml/test/vite-plugin-eshtml.test.ts (1)

16-42:

Details

❓ Verification inconclusive

Verificar razón del skip en 'build basic'
La prueba 'build basic' está marcada con .skip, lo que impide su ejecución en CI. Sería conveniente documentar el motivo (falla intermitente, dependencia externa, etc.) o bien reactivar la prueba si ya está establecida.


Verifica el motivo del .skip en la prueba ‘build basic’
La prueba está marcada con .skip, bloqueando su ejecución en CI. Por favor:

  • Documenta la razón (falla intermitente, dependencia externa, etc.).
  • O, si ya está estable, elimina el .skip para reactivarla.

Ubicación:

  • packages/vite-plugin-eshtml/test/vite-plugin-eshtml.test.ts (líneas 16–42)
package.json (2)

10-10: Script test centralizado correcto
La actualización del script "test": "pnpm --stream -r run test:run" permite ejecutar las pruebas de todos los paquetes del workspace de manera consistente y eficiente.


29-30: Campo private y packageManager añadidos
Marcar el repositorio como privado y fijar pnpm@9.1.1 mejora la seguridad y la reproducibilidad de las instalaciones en CI/CD.

packages/core/src/keywords.ts (2)

1-16: Reordenación de imports para mejorar legibilidad
Los imports han sido reorganizados para agrupar métodos similares (arrayMethods, consoleMethods, keywords, etc.), facilitando la lectura y el mantenimiento sin cambiar la API pública.


18-33: Reordenación de exports coherente con los imports
La exportación de los símbolos ahora refleja el nuevo orden de los imports, manteniendo la consistencia interna y asegurando que no se modifique el superficie API exportada.

packages/core/src/plugins/utils.ts (1)

198-215: ¡Buena implementación para el reemplazo por lotes de palabras clave!

Esta nueva función replaceKeywords proporciona una manera eficiente de aplicar múltiples reemplazos de palabras clave a la vez, reutilizando la función replaceKeyword existente. La implementación sigue el mismo patrón que otras funciones similares en el archivo como replaceObjects, lo que mantiene la consistencia en el código.

Esta adición será especialmente útil para plugins como soporte que necesitan mapear múltiples funciones globales de nombres en español a sus equivalentes en JavaScript estándar.

packages/core/src/plugins/tipos/index.ts (2)

2-2: Reordenamiento de importaciones

El reordenamiento de la importación de getToEsJS después de invertMap mejora la organización del código.


20-22: Adición correcta de nuevos tipos

La adición de los mapeos para Apoderado, EnteroGrande y Documento a sus equivalentes en JavaScript (Proxy, BigInt y Document) está alineada con los nuevos plugins introducidos en este PR. Esta actualización garantiza que el sistema de tipos sea consistente con las implementaciones de los plugins.

packages/vscode-esjs/package.json (5)

5-5: Actualización de versión apropiada

El incremento de versión de 0.1.1 a 0.1.2 es adecuado para este PR que incluye nuevas características y mejoras.


38-38: Adición de script para pruebas en CI

La adición del script "test:run": "vitest run" es una buena práctica para entornos CI/CD donde se necesita ejecutar pruebas sin el modo watch. Esto facilitará la automatización de pruebas en flujos de trabajo de GitHub Actions.


57-57: Actualización de dependencia vitest

La actualización de vitest de ^0.21.1 a ^2.1.5 es una mejora significativa que permite aprovechar las nuevas características y correcciones de errores disponibles en la versión más reciente del framework de pruebas.


75-79: Mejora en la configuración de esvue con iconos

La adición de iconos para el tema oscuro y claro mejora la experiencia visual en VS Code para los archivos .esvue.


86-90: Mejora en la configuración de esjs con iconos

La adición de iconos para el tema oscuro y claro mejora la experiencia visual en VS Code para los archivos .esjs.

packages/esbabel/test/knownIssues.test.ts (3)

21-23: Marcado correctamente el test obsoleto

Has marcado apropiadamente como obsoleto el test para variables nombradas get con it.skip y has añadido un comentario explicativo sobre por qué este test ya no es relevante debido a los cambios en el comportamiento de las declaraciones de variables.


24-24: Actualización de la sintaxis de variable

La actualización de var a mut refleja correctamente los cambios en la sintaxis del lenguaje, donde ahora mut equivale a let en JavaScript.


38-42: Actualización precisa de la descripción y estructura del test

La descripción del test ha sido actualizada para reflejar con precisión el comportamiento actual: "does not compile var/global to var". También se ha mejorado el formato de la cadena multilínea añadiendo un punto y coma al final, lo que mejora la consistencia del código.

packages/language-tools/package.json (3)

3-3: Buen incremento de versión.

El cambio de versión de 0.1.0 a 0.1.1 es adecuado para este tipo de actualización que agrega funcionalidades de prueba sin cambios importantes en la API.


10-12: Buena implementación de scripts de prueba con Vitest.

La adición de scripts de prueba utilizando Vitest mejora significativamente la infraestructura de testing del paquete:

  • test: Ejecuta Vitest en modo observador, ideal para desarrollo
  • test:run: Ejecuta Vitest una sola vez, perfecto para CI/CD
  • Se actualizó prepublishOnly (anteriormente prepublish) siguiendo las mejores prácticas de npm

27-28: Dependencias correctamente configuradas.

La adición de vitest como dependencia de desarrollo es coherente con los nuevos scripts de prueba. También se ha actualizado el formato de la dependencia markdown-table para mantener la consistencia en el archivo.

packages/core/test/fixtures/extras/enterogrande.esjs (1)

1-6: Fixture de prueba para EnteroGrande completo.

El fixture de prueba cubre adecuadamente la funcionalidad de EnteroGrande (equivalente a BigInt en JavaScript):

  • Creación de instancias con crear EnteroGrande
  • Métodos de instancia: aCadenaLocalizada(), aCadena(), valorDe()
  • Métodos estáticos: comoEntero(), comoEnteroSinSigno()

Este fixture es valioso para asegurar que la traducción entre ESJS y JavaScript funcione correctamente para operaciones con números grandes.

packages/esbabel/src/keywords.ts (1)

227-227: Buena adición a numberMethods.

La adición de 'esNuN' a la estructura de numberMethods es apropiada, mejorando la organización del código al agrupar esta funcionalidad con otros métodos relacionados con números.

packages/core/test/fixtures/extras/soporte.js (4)

1-7: Buena implementación de temporizadores.

Las pruebas para setTimeout y setInterval están correctamente implementadas, creando variables para almacenar las referencias que luego se utilizarán para limpiar los temporizadores.


9-9: Correcta verificación de isNaN.

La prueba para isNaN con un valor no numérico es un buen caso de prueba que debería devolver true.


11-13: Limpieza adecuada de temporizadores.

La limpieza de temporizadores utilizando clearTimeout y clearInterval es una buena práctica para evitar fugas de memoria.


23-29: Buenas pruebas de codificación URI.

Las pruebas para las funciones de codificación y decodificación URI son apropiadas y cubren los casos básicos.

packages/language-tools/test/language-tools.test.js (1)

1-30: Buena implementación de pruebas para los archivos generados.

La estructura de pruebas utilizando Vitest está bien organizada y cubre todos los archivos de salida importantes. El uso de snapshots es apropiado para este caso de uso, ya que permite detectar cambios no intencionales en los archivos generados.

La función auxiliar testFile reduce la duplicación de código y hace que las pruebas sean más mantenibles. Buen trabajo implementando una suite de pruebas completa para los language-tools.

packages/core/test/fixtures/extras/ventana.js (1)

1-97: Fixture completo para las propiedades y métodos de window.

Este fixture proporciona una cobertura exhaustiva de las propiedades y métodos del objeto global window, lo que es excelente para probar la conversión entre los nombres en español (ventana) y sus equivalentes en JavaScript.

La organización es clara, separando propiedades (líneas 1-61) de métodos (líneas 62-97), y abarca tanto funcionalidades comunes como aquellas menos utilizadas.

packages/core/src/plugins/objetos/index.ts (1)

1-12:

Details

❓ Verification inconclusive

Implementación correcta, pero verificar la reutilización del mapa de tipos.

El plugin sigue el patrón establecido de exportar funciones report y replace, lo cual es consistente con otros plugins del proyecto.

Sin embargo, observo que se reutiliza el mapa types importado desde el módulo tipos en lugar de definir un mapa específico para objetos. Esto podría ser intencional para mantener la coherencia entre plugins, pero recomendaría verificar si esta reutilización es apropiada o si se deberían definir mapeos específicos para este contexto.


🏁 Script executed:

#!/bin/bash
# Mostrar definición de 'types' en el plugin de tipos
rg --context 3 "export const types" -n packages/core/src/plugins/tipos

# Mostrar implementación de replaceObjects en utils
rg -n "replaceObjects" -n packages/core/src/plugins/utils

Length of output: 691


🏁 Script executed:

#!/bin/bash
# Buscar definición e implementación de replaceObjects en todo el repositorio
rg --context 3 "replaceObjects" -n .

Length of output: 12474


Implementación correcta; confirma la reutilización del mapa types del plugin tipos

El plugin packages/core/src/plugins/objetos/index.ts sigue el patrón establecido (exporta report y replace y usa replaceObjects con un Map<string, string>).
No obstante, a diferencia de otros plugins que definen internamente su propio map de objetos, aquí se importa directamente el mapa types de packages/core/src/plugins/tipos.

Por favor, verifica si:

  • Esta importación de types es intencional para mantener la coherencia con el plugin de tipos.
  • No se requieren mapeos específicos a objetos que deban residir en este plugin.
  • Cualquier cambio futuro en types no introducirá efectos secundarios no deseados en objetos.

Ubicación a revisar:

  • packages/core/src/plugins/objetos/index.ts (líneas 1–11: import { types } … replaceObjects({ objects: types }))
.github/workflows/test.yml (1)

1-41: Buena configuración del flujo de trabajo de pruebas.

La configuración del flujo de trabajo es adecuada:

  • Ejecuta pruebas en múltiples versiones de Node.js (18.x, 20.x y 22.x)
  • Establece un tiempo límite razonable (15 minutos)
  • Incluye todos los pasos necesarios (checkout, configuración, instalación, build y ejecución de pruebas)
  • Utiliza pnpm para la gestión de dependencias de manera consistente con el resto del proyecto

Esto garantizará que las pruebas se ejecuten de manera consistente en diferentes entornos.

🧰 Tools
🪛 actionlint (1.7.4)

22-22: the runner of "actions/checkout@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)


25-25: the runner of "actions/setup-node@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

packages/core/src/plugins/soporte/index.ts (3)

1-1: Buena práctica al importar utilidad común

La importación de la función replaceKeywords mejora la cohesión y reduce la duplicación de código entre los diferentes plugins. Esta refactorización facilita el mantenimiento al centralizar la lógica de reemplazo de palabras clave.


9-18: Excelente ampliación de funcionalidad

La adición de estas nuevas palabras clave enriquece significativamente el plugin, cubriendo funciones esenciales del navegador como temporizadores, diálogos, fetch y manipulación de URIs. Esto proporciona una experiencia más completa para los desarrolladores que utilizan ESJS.


23-25: Simplificación efectiva mediante utilidad

La refactorización del método replace para utilizar la utilidad replaceKeywords simplifica el código y mantiene la coherencia con otros plugins. Esta implementación más concisa facilita las futuras ampliaciones de palabras clave.

packages/core/test/fixtures/extras/ventana.esjs (2)

1-61: Fixture completo para propiedades de ventana

Este archivo de prueba proporciona una cobertura exhaustiva de las propiedades del objeto window con sus traducciones al español. La nomenclatura es coherente y sigue un patrón claro de traducción que facilita la comprensión de las equivalencias.


62-97: Cobertura completa de métodos del objeto ventana

Excelente implementación de los métodos del objeto window con traducciones descriptivas y funcionales en español. Esta completa colección de métodos asegura que el plugin ventana pueda transformar correctamente todas las API comunes del objeto window.

packages/core/test/fixtures/extras/objetos.esjs (3)

1-6: Buena representación de tipos primitivos

Las instanciaciones de los tipos primitivos (Numero, Cadena, Booleano) están correctamente implementadas. Observo el uso de verdadero como equivalente a true, lo que es consistente con la filosofía del proyecto.


7-26: Uso consistente del patrón factory con "crear"

Excelente implementación de la instanciación de objetos complejos utilizando el patrón factory con la palabra crear. La sintaxis es intuitiva y mantiene un estilo español natural mientras conserva la semántica de JavaScript.


27-29: Implementación correcta de tipos especializados

La implementación de EnteroGrande y Documento es adecuada. La integración con el objeto global document en la línea 29 demuestra la interoperabilidad con las APIs del navegador.

packages/core/src/plugins/index.ts (3)

1-20: Integración completa de nuevos plugins

La adición de importaciones para los nuevos plugins (apoderado, documento, enterogrande, navegador, objetos, simbolo, ventana) amplía significativamente las capacidades del sistema. La organización alfabética de las importaciones facilita la lectura y el mantenimiento.


34-41: Orden estratégico de plugins

La colocación de los nuevos plugins en el array antes de tipos y objetos parece estratégica para el pipeline de transformación. Esto asegura que las transformaciones específicas ocurran antes de las más generales, lo que es una buena práctica en sistemas de transformación de código.


44-44: Exportación adecuada de utilidad

La exportación de setToEsJS proporciona acceso a esta utilidad desde fuera del módulo, lo que facilita su uso en otros componentes del sistema. Esto mejora la modularidad y reutilización del código.

packages/core/test/fixtures.test.ts (3)

5-5: Optimización de import para TestCompileOptions

Buena práctica al cambiar la importación a una importación solo de tipo, ya que TestCompileOptions solo se utiliza como tipo y no como valor.


49-52: Normalización correcta de finales de línea

Excelente mejora al normalizar los finales de línea, esto garantiza que las pruebas funcionen correctamente en diferentes plataformas (Windows, macOS, Linux).


55-57: Función auxiliar bien implementada

La función normalizeLineEndings está bien implementada para manejar tanto CRLF como CR, normalizándolos a LF.

packages/core/test/fixtures/extras/documento.js (1)

1-93: Conjunto completo de métodos y propiedades del objeto document.

Este archivo de prueba proporciona una cobertura exhaustiva de la API del objeto document, lo cual es excelente para validar la funcionalidad del plugin de documento. Incluye tanto métodos como propiedades, facilitando pruebas completas de traducción.

packages/core/test/fixtures/extras/simbolo.esjs (3)

1-10: Implementación correcta de Simbolo y su integración con clases personalizadas.

La creación del símbolo y la implementación del getter [Simbolo.aCadenaEtiqueta] en la clase Validador están bien estructuradas. Esta es una buena prueba para verificar la correcta traducción entre Simbolo.aCadenaEtiqueta y Symbol.toStringTag.


12-26: Cobertura completa de propiedades estáticas de Simbolo.

Excelente cobertura de todas las propiedades estáticas relevantes de Simbolo. Esto asegura que el plugin de traducción maneje correctamente todas las propiedades well-known de Symbol.


28-29: Verificación de métodos de registro de símbolos.

La prueba de Simbolo.para() y Simbolo.paraLlave() complementa bien el conjunto de pruebas, asegurando que estos métodos importantes también se traduzcan correctamente.

packages/core/test/fixtures/extras/navegador.js (2)

1-30: Cobertura exhaustiva de propiedades del objeto navigator.

Esta sección proporciona una lista completa de las propiedades y objetos de navigator, lo que es fundamental para probar la funcionalidad del plugin de navegador. La cobertura es amplia e incluye tanto APIs comunes como especializadas.


31-41: Cobertura de métodos del objeto navigator.

La inclusión de métodos como canShare(), getBattery(), vibrate(), entre otros, complementa bien las pruebas de propiedades. Esto permite verificar la correcta traducción de la API completa de navigator.

packages/core/src/plugins/enterogrande/index.ts (4)

1-9: Importaciones y descripción del plugin correctas.

Las importaciones de utilidades son apropiadas para la funcionalidad requerida y la función report() proporciona una descripción clara del propósito del plugin.


10-13: Mapeo adecuado de métodos estáticos.

El mapeo de métodos estáticos es correcto, traduciendo comoEntero a asIntN y comoEnteroSinSigno a asUintN.


15-21: Mapeo completo de métodos de instancia y objetos.

Los mapeos para métodos de instancia (aCadenaLocalizada, aCadena, valorDe) y objetos (EnteroGrande -> BigInt) son correctos y cubren la funcionalidad esencial.


23-41: Implementación completa de la función replace.

La función replace() implementa correctamente todas las transformaciones necesarias utilizando las utilidades importadas. La estructura es clara y organizada, abarcando métodos estáticos, métodos de instancia, verificaciones de instanceof y referencias a objetos.

packages/core/src/plugins/apoderado/index.ts (1)

1-31: ¡El código se ve bien!

La implementación del plugin de Apoderado que transforma referencias desde español (Apoderado) a inglés (Proxy) está bien estructurada y sigue el patrón establecido para otros plugins. La conversión del método estático revocable y las transformaciones de objetos están correctamente implementadas.

packages/core/src/plugins/simbolo/index.ts (1)

1-71: Implementación completa y correcta

El plugin de Simbolo está bien implementado, cubriendo exhaustivamente todos los aspectos de la API de Symbol, incluyendo métodos de instancia, propiedades estáticas, métodos estáticos y símbolos conocidos (well-known symbols). La estructura es consistente con el patrón del proyecto y las traducciones son precisas.

packages/core/src/plugins/documento/index.ts (1)

1-132: Implementación exhaustiva y bien estructurada

El plugin de Documento proporciona una traducción completa de la API de Document, cubriendo correctamente tanto el objeto global documento (minúscula) como el constructor Documento (mayúscula). Las traducciones de métodos y propiedades son precisas y la implementación sigue el patrón establecido para los plugins del proyecto.

packages/core/src/plugins/ventana/index.ts (1)

1-140: Implementación completa de la API de ventana

El plugin de ventana está bien implementado, cubriendo de manera exhaustiva las propiedades y métodos del objeto global window. Las traducciones son precisas (como 'alerta' → 'alert', 'desplazamientoX' → 'scrollX') y siguen una nomenclatura consistente en español. La estructura del plugin sigue el patrón establecido en el proyecto.

packages/core/src/plugins/navegador/index.ts (1)

1-74: Implementación completa y bien estructurada del plugin 'navegador'.

El plugin para convertir referencias de 'navegador' a 'navigator' está bien organizado y sigue el patrón de diseño establecido para los plugins de ESJS. La implementación incluye un mapeo exhaustivo de propiedades, objetos y métodos del API de Navigator.

Sugerencias para considerar:

  • Añadir documentación JSDoc al inicio del archivo para explicar el propósito general del plugin
  • Considerar agrupar las propiedades por categorías funcionales (como geolocalización, medios, etc.) para mejorar la legibilidad y el mantenimiento
+/**
+ * Plugin para convertir referencias del navegador de español a inglés.
+ * Transforma propiedades, objetos y métodos relacionados con el API Navigator.
+ */
 import {
   replaceObjects,
   replaceObjectStaticMethods,
   replaceObjectStaticProperties,
 } from '../utils'
packages/core/test/fixtures/extras/navegador.esjs (1)

1-41: Fixture de prueba completo para el plugin 'navegador'.

Este fixture cubre adecuadamente todas las propiedades y métodos definidos en el plugin navegador, proporcionando una buena cobertura para pruebas. La estructura sigue un formato claro con accesos a propiedades seguidos de llamadas a métodos.

Para mejorar la mantenibilidad:

  • Considerar añadir comentarios para separar las secciones de propiedades y métodos
  • Agrupar propiedades relacionadas (ej. multimedia, geolocalización, etc.)
+// Propiedades del navegador
 navegador.credenciales;
 navegador.memoriaDispositivo;
 navegador.concurrenciaHardware;
 ...
+
+// Métodos del navegador
 navegador.puedeCompartir()
 navegador.borrarInsigniaApp()
 ...
packages/core/test/fixtures/extras/documento.esjs (1)

1-94: Fixture de prueba exhaustivo para el plugin 'documento'.

Este fixture proporciona una cobertura amplia de las funcionalidades del objeto documento, incluyendo métodos para manipulación de nodos, creación de elementos, consultas y propiedades. También incluye la creación de una instancia de documento.

Sugerencias para mejorar:

  • Añadir comentarios para separar las secciones por funcionalidad (ej. creación de elementos, manipulación de DOM, etc.)
  • Verificar que todos los métodos y propiedades incluidos correspondan exactamente con los definidos en el plugin correspondiente
+// Métodos del documento
 documento.adoptarNodo()
 documento.anexar()
 ...
+
+// Propiedades del documento
 documento.elementoActivo;
 documento.hojasEstiloAdoptadas;
 ...
+
+// Creación de instancia de documento
 mut miDocumento = crear Documento()

import * as esJscore from 'https://esm.run/@es-js/core'
import * as esJseshtml from 'https://esm.run/@es-js/eshtml'
window.addEventListener('load', function () {
let etiquetas = document.getElementsByTagName('script')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Usar const para variables inmutables.
La variable etiquetas nunca se reasigna tras su inicialización. Cambiarla a const mejora la claridad y evita reasignaciones accidentales.

🧰 Tools
🪛 Biome (1.9.4)

[error] 4-4: This let declares a variable that is only assigned once.

'etiquetas' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)

} catch (error) {
console.error(error)
}
if (etiquetas[i].hasAttribute('src')) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

¿Considerar desduplicar el bloque de procesamiento de src?
El bloque que maneja <script src="..."> duplica la lógica de compilación y append. Quizás puedas extraer una función auxiliar para evitar repetición de código.

Comment on lines +1 to +29
const foo = Symbol("foo")

foo.valueOf() === "foo"
foo.toString() === "foo"

class Validador {
get [Symbol.toStringTag]() {
return 'Validador';
}
}

Symbol.iterator.description;

Symbol.asyncIterator;
Symbol.hasInstance;
Symbol.isConcatSpreadable;
Symbol.iterator;
Symbol.match;
Symbol.matchAll;
Symbol.replace;
Symbol.search;
Symbol.species;
Symbol.split;
Symbol.toPrimitive;
Symbol.toStringTag;
Symbol.unscopables;

let sym = Symbol.for("foo");
Symbol.keyFor(sym) === "foo";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Buena cobertura de funcionalidades de Symbol

El archivo proporciona una excelente cobertura de las funcionalidades de Symbol en JavaScript. Sin embargo, hay algunas expresiones que se evalúan pero no se verifican sus resultados.

Sugerencias:

  1. Añade comentarios explicativos para cada sección de prueba
  2. Utiliza console.log o aserciones para verificar los resultados esperados
  3. Agrupa las propiedades de Symbol por categorías lógicas
+// Creación básica de Symbol y pruebas de métodos
 const foo = Symbol("foo")

-foo.valueOf() === "foo"
-foo.toString() === "foo"
+// Verificación de métodos
+console.log('valueOf() correcto:', foo.valueOf() === "foo")
+console.log('toString() correcto:', foo.toString() === "foo")

+// Ejemplo de uso con Symbol.toStringTag
 class Validador {
   get [Symbol.toStringTag]() {
     return 'Validador';
   }
 }

+// Acceso a propiedades de Symbol
 Symbol.iterator.description;

+// Símbolos bien conocidos (well-known symbols)
 Symbol.asyncIterator;
 Symbol.hasInstance;
 Symbol.isConcatSpreadable;
 Symbol.iterator;
 Symbol.match;
 Symbol.matchAll;
 Symbol.replace;
 Symbol.search;
 Symbol.species;
 Symbol.split;
 Symbol.toPrimitive;
 Symbol.toStringTag;
 Symbol.unscopables;

+// Registro global de símbolos
 let sym = Symbol.for("foo");
-Symbol.keyFor(sym) === "foo";
+console.log('Symbol.keyFor correcto:', Symbol.keyFor(sym) === "foo");
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const foo = Symbol("foo")
foo.valueOf() === "foo"
foo.toString() === "foo"
class Validador {
get [Symbol.toStringTag]() {
return 'Validador';
}
}
Symbol.iterator.description;
Symbol.asyncIterator;
Symbol.hasInstance;
Symbol.isConcatSpreadable;
Symbol.iterator;
Symbol.match;
Symbol.matchAll;
Symbol.replace;
Symbol.search;
Symbol.species;
Symbol.split;
Symbol.toPrimitive;
Symbol.toStringTag;
Symbol.unscopables;
let sym = Symbol.for("foo");
Symbol.keyFor(sym) === "foo";
// Creación básica de Symbol y pruebas de métodos
const foo = Symbol("foo")
// Verificación de métodos
console.log('valueOf() correcto:', foo.valueOf() === "foo")
console.log('toString() correcto:', foo.toString() === "foo")
// Ejemplo de uso con Symbol.toStringTag
class Validador {
get [Symbol.toStringTag]() {
return 'Validador';
}
}
// Acceso a propiedades de Symbol
Symbol.iterator.description;
// Símbolos bien conocidos (well‑known symbols)
Symbol.asyncIterator;
Symbol.hasInstance;
Symbol.isConcatSpreadable;
Symbol.iterator;
Symbol.match;
Symbol.matchAll;
Symbol.replace;
Symbol.search;
Symbol.species;
Symbol.split;
Symbol.toPrimitive;
Symbol.toStringTag;
Symbol.unscopables;
// Registro global de símbolos
let sym = Symbol.for("foo");
console.log('Symbol.keyFor correcto:', Symbol.keyFor(sym) === "foo");

document.title;
document.URL;

let miDocumento = new Document()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Considera usar const en lugar de let para miDocumento.

Como parece que no se modifica el valor de miDocumento después de su inicialización, es preferible usar const para mejorar la intención del código y prevenir modificaciones accidentales.

-let miDocumento = new Document()
+const miDocumento = new Document()
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
let miDocumento = new Document()
- let miDocumento = new Document()
+ const miDocumento = new Document()

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (8)
packages/runtime/src/index.js (8)

3-3: Convertir callback a función flecha
El listener usa una función anónima que podría simplificarse a una arrow function para consistencia con las prácticas modernas.

🧰 Tools
🪛 Biome (1.9.4)

[error] 3-64: This function expression can be turned into an arrow function.

Function expressions that don't use this can be turned into arrow functions.
Safe fix: Use an arrow function instead.

(lint/complexity/useArrowFunction)


4-4: Usar const para variables inmutables
La variable etiquetas nunca se reasigna. Es más claro declararla como const.

🧰 Tools
🪛 Biome (1.9.4)

[error] 4-4: This let declares a variable that is only assigned once.

'etiquetas' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


5-5: Reemplazar var por let
i solo se usa dentro del bucle, let limita el alcance al bloque y evita fugas.

🧰 Tools
🪛 Biome (1.9.4)

[error] 5-5: This var should be declared at the root of the enclosing function.

The var is accessible in the whole body of the enclosing function.
To avoid confusion, it should be declared at the root of the enclosing function.

(lint/correctness/noInnerDeclarations)


[error] 5-5: Use let or const instead of var.

A variable declared with var is accessible in the whole body of the function. Thus, the variable can be accessed before its initialization and outside the block where it is declared.
See MDN web docs for more details.
Unsafe fix: Use 'let' instead.

(lint/style/noVar)


12-13: Declaraciones inmutables como const
Tanto codigoCom como elemento no se reasignan tras su definición; conviene declararlas como const.

🧰 Tools
🪛 Biome (1.9.4)

[error] 12-12: This let declares a variable that is only assigned once.

'codigoCom' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


[error] 13-13: This let declares a variable that is only assigned once.

'elemento' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


30-31: Usar const en lugar de let
codigoCom y elemento dentro del .then no cambian después de la asignación.

🧰 Tools
🪛 Biome (1.9.4)

[error] 30-30: This let declares a variable that is only assigned once.

'codigoCom' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


[error] 31-31: This let declares a variable that is only assigned once.

'elemento' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


41-43: Convertir .catch a arrow function
La función de manejo de errores usa function(error), se puede concisar con error => { ... }.

🧰 Tools
🪛 Biome (1.9.4)

[error] 41-43: This function expression can be turned into an arrow function.

Function expressions that don't use this can be turned into arrow functions.
Safe fix: Use an arrow function instead.

(lint/complexity/useArrowFunction)


50-50: Declarar etiquetasH como const
Esta variable no se reasigna y debería usar const para mayor claridad.

🧰 Tools
🪛 Biome (1.9.4)

[error] 50-50: This let declares a variable that is only assigned once.

'etiquetasH' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


51-51: Reemplazar var por let
La variable u se limita al bucle; usar let evita posibles problemas de alcance.

🧰 Tools
🪛 Biome (1.9.4)

[error] 51-51: This var should be declared at the root of the enclosing function.

The var is accessible in the whole body of the enclosing function.
To avoid confusion, it should be declared at the root of the enclosing function.

(lint/correctness/noInnerDeclarations)


[error] 51-51: Use let or const instead of var.

A variable declared with var is accessible in the whole body of the function. Thus, the variable can be accessed before its initialization and outside the block where it is declared.
See MDN web docs for more details.
Unsafe fix: Use 'let' instead.

(lint/style/noVar)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between dfcc526 and 0bbadc9.

⛔ Files ignored due to path filters (1)
  • apps/playground/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (3)
  • apps/playground/package.json (1 hunks)
  • packages/runtime/src/index.js (1 hunks)
  • packages/sandbox/package.json (1 hunks)
🧰 Additional context used
🪛 Biome (1.9.4)
packages/runtime/src/index.js

[error] 5-5: This var should be declared at the root of the enclosing function.

The var is accessible in the whole body of the enclosing function.
To avoid confusion, it should be declared at the root of the enclosing function.

(lint/correctness/noInnerDeclarations)


[error] 41-43: This function expression can be turned into an arrow function.

Function expressions that don't use this can be turned into arrow functions.
Safe fix: Use an arrow function instead.

(lint/complexity/useArrowFunction)


[error] 51-51: This var should be declared at the root of the enclosing function.

The var is accessible in the whole body of the enclosing function.
To avoid confusion, it should be declared at the root of the enclosing function.

(lint/correctness/noInnerDeclarations)


[error] 3-64: This function expression can be turned into an arrow function.

Function expressions that don't use this can be turned into arrow functions.
Safe fix: Use an arrow function instead.

(lint/complexity/useArrowFunction)


[error] 4-4: This let declares a variable that is only assigned once.

'etiquetas' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


[error] 5-5: Use let or const instead of var.

A variable declared with var is accessible in the whole body of the function. Thus, the variable can be accessed before its initialization and outside the block where it is declared.
See MDN web docs for more details.
Unsafe fix: Use 'let' instead.

(lint/style/noVar)


[error] 12-12: This let declares a variable that is only assigned once.

'codigoCom' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


[error] 13-13: This let declares a variable that is only assigned once.

'elemento' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


[error] 30-30: This let declares a variable that is only assigned once.

'codigoCom' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


[error] 31-31: This let declares a variable that is only assigned once.

'elemento' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


[error] 50-50: This let declares a variable that is only assigned once.

'etiquetasH' is never reassigned.

Safe fix: Use const instead.

(lint/style/useConst)


[error] 51-51: Use let or const instead of var.

A variable declared with var is accessible in the whole body of the function. Thus, the variable can be accessed before its initialization and outside the block where it is declared.
See MDN web docs for more details.
Unsafe fix: Use 'let' instead.

(lint/style/noVar)

🔇 Additional comments (3)
packages/sandbox/package.json (1)

3-3: Actualización de versión del paquete
Se ha incrementado la versión de @es-js/sandbox de 0.0.20-beta.1 a 0.0.20-beta.2.

Por favor, verifica que la versión 0.0.20-beta.2 ya esté publicada correctamente en el registro npm antes de proceder con el lanzamiento.

apps/playground/package.json (1)

27-29: Alineación de dependencias de desarrollo
Se han actualizado las versiones de @es-js/core, @es-js/language-tools y @es-js/sandbox para reflejar los últimos cambios en el monorepo.

Recomiendo ejecutar un build y las pruebas de integración en apps/playground para asegurar que estos bumps no introduzcan rupturas de compatibilidad.

packages/runtime/src/index.js (1)

1-2: Solo cambios de formato en imports
Los cambios en estas líneas solo reemplazan comillas dobles por simples y no afectan la lógica.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

♻️ Duplicate comments (2)
packages/core/test/fixtures/extras/soporte.js (1)

21-21: Manejo de la promesa de fetch
Solo se usa .then() para parsear el JSON; no hay un .catch() para capturar errores de red o de parseo. Para evitar warnings de promesas no manejadas, incorpora un bloque catch().

 fetch('https://jsonplaceholder.typicode.com/todos/1')
-  .then((respuesta) => { return respuesta.json() })
+  .then((respuesta) => respuesta.json())
+  .then((data) => console.log('Fetch resultado:', data))
+  .catch((error) => console.error('Error en fetch:', error));
packages/core/test/fixtures/extras/soporte.esjs (1)

1-29: ¡Excelente cobertura de funcionalidades de soporte!

El archivo proporciona una buena cobertura de pruebas para las funciones de soporte globales del navegador. Incluye pruebas para temporizadores, diálogos, consultas HTTP y funciones de codificación URI.

Sugerencia: Considera organizar el código con comentarios que agrupen funcionalidades relacionadas para mejorar la legibilidad y mantenimiento.

 const timeout = establecerTemporizador(() => {
   consola.escribir('timeout')
 })

 const interval = establecerIntervalo(() => {
   consola.escribir('interval')
 })

 consola.escribir(esNuN('a'))

+// Limpieza de temporizadores
 limpiarTemporizador(timeout)
 limpiarIntervalo(interval)

+// Funciones de diálogo
 alerta('alert')
 preguntar('prompt')
 confirmar('confirm')

+// Peticiones HTTP
 consultar('https://jsonplaceholder.typicode.com/todos/1').luego((respuesta) => { retornar respuesta.json() })

+// Funciones de codificación/decodificación URI
 consola.escribir(decodificarURI('https://jsonplaceholder.typicode.com/todos/1'))
 consola.escribir(decodificarComponenteURI('https%3A%2F%2Fjsonplaceholder.typicode.com%2Ftodos%2F1'))
 consola.escribir(codificarURI('https://jsonplaceholder.typicode.com/todos/1'))
 consola.escribir(codificarComponenteURI('https://jsonplaceholder.typicode.com/todos/1'))
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0bbadc9 and d31abd4.

📒 Files selected for processing (6)
  • packages/core/test/fixtures/extras/apoderado.esjs (1 hunks)
  • packages/core/test/fixtures/extras/apoderado.js (1 hunks)
  • packages/core/test/fixtures/extras/enterogrande.esjs (1 hunks)
  • packages/core/test/fixtures/extras/enterogrande.js (1 hunks)
  • packages/core/test/fixtures/extras/soporte.esjs (1 hunks)
  • packages/core/test/fixtures/extras/soporte.js (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
packages/core/test/fixtures/extras/apoderado.js (1)
packages/core/test/fixtures/extras/objetos.js (1)
  • apoderado (25-25)
⏰ Context from checks skipped due to timeout of 90000ms (6)
  • GitHub Check: test (22.x)
  • GitHub Check: test (18.x)
  • GitHub Check: test (20.x)
  • GitHub Check: test (22.x)
  • GitHub Check: test (20.x)
  • GitHub Check: test (18.x)
🔇 Additional comments (13)
packages/core/test/fixtures/extras/apoderado.esjs (1)

1-1: Fixture implementado correctamente.

El código parece estar correctamente implementado utilizando la sintaxis de es-js. La variable mutable apoderado se inicializa con crear Apoderado({}, {}), que debería transformarse adecuadamente a new Proxy({}, {}) en JavaScript.

La inicialización incluye correctamente los dos argumentos requeridos para un Proxy: el objeto destino y el objeto manejador, ambos vacíos en este caso.

packages/core/test/fixtures/extras/apoderado.js (1)

1-1: Implementación correcta de Proxy.

Esta implementación es correcta y corresponde adecuadamente con la transformación esperada desde el código es-js. El constructor Proxy recibe los dos argumentos requeridos: un objeto destino vacío y un objeto manejador vacío.

Este código coincide con el patrón de implementación visto en otros archivos del proyecto, como en packages/core/test/fixtures/extras/objetos.js.

packages/core/test/fixtures/extras/enterogrande.js (3)

1-1: ¡Implementación correcta de BigInt!

Excelente trabajo corrigiendo el uso de BigInt. En JavaScript, BigInt no se debe usar con el operador new ya que no es un constructor, sino una función. La implementación actual es correcta.


2-4: Métodos de instancia correctamente implementados

Los métodos de instancia para el objeto BigInt están correctamente implementados. Para completar este fixture, podría ser útil capturar los valores de retorno para mostrar su comportamiento, aunque para fines de prueba la implementación actual es suficiente.


5-6: Métodos estáticos correctamente implementados

Los métodos estáticos asIntN y asUintN están correctamente implementados. Estos métodos son importantes para la manipulación de enteros con tamaños específicos en bits.

packages/core/test/fixtures/extras/enterogrande.esjs (3)

1-1: Declaración correcta de EnteroGrande

La declaración de la variable con mut y la inicialización de EnteroGrande sin el operador new es correcta, siguiendo las convenciones de ES-JS y evitando el error común de usar BigInt como constructor.


2-4: Métodos de instancia en español correctamente implementados

Los métodos de instancia en español (aCadenaLocalizada, aCadena, valorDe) están correctamente implementados y corresponden a sus equivalentes en JavaScript (toLocaleString, toString, valueOf).


5-6: Métodos estáticos en español correctamente implementados

Los métodos estáticos comoEntero y comoEnteroSinSigno están correctamente implementados y corresponden a sus equivalentes en JavaScript (asIntN y asUintN). La firma de los métodos mantiene el mismo orden de parámetros que sus equivalentes en JavaScript.

packages/core/test/fixtures/extras/soporte.js (5)

9-9: Cobertura de isNaN
El uso de console.log(isNaN('a')) es correcto para validar el mapeo de la función global en el plugin.


11-13: Limpieza de los temporizadores
clearTimeout(timeout) y clearInterval(interval) están aplicados correctamente sobre los identificadores capturados.


15-19: Disponibilidad de alert, prompt y confirm en pruebas
Las llamadas directas a estos diálogos pueden no existir en el entorno Node o en un runner de pruebas sin un entorno de navegador (JSDOM) o mocks configurados. Verifica que el test runner proporcione estas funciones globales para evitar errores de ReferenceError.


23-26: Cobertura de funciones de decodificación de URI
Los llamados a decodeURI y decodeURIComponent están bien para probar el plugin de mapeo de keywords.


27-30: Cobertura de funciones de codificación de URI
Los llamados a encodeURI y encodeURIComponent están correctos y completan el conjunto de pruebas para URI.

Comment on lines +5 to +7
const interval = setInterval(() => {
console.log('interval')
})
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Prueba de temporizador recurrente con setInterval
Análogamente, interval se declara bien para luego limpiarse. De nuevo, podrías especificar un retardo explícito (0) para dejar más claro el comportamiento en el fixture.

Comment on lines +1 to +3
const timeout = setTimeout(() => {
console.log('timeout')
})
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Prueba de temporizador con setTimeout
La constante timeout captura correctamente el identificador para su cancelación posterior. Considera, si quieres mayor claridad en el fixture, añadir explícitamente el retardo (0) como segundo parámetro, aunque por defecto sea 0.


confirmar('confirm')

consultar('https://jsonplaceholder.typicode.com/todos/1').luego((respuesta) => { retornar respuesta.json() })
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Añadir manejo de errores a la consulta fetch

La operación de consulta (fetch) debería incluir manejo de errores para asegurar que los fallos en la red o en la respuesta sean capturados correctamente.

-consultar('https://jsonplaceholder.typicode.com/todos/1').luego((respuesta) => { retornar respuesta.json() })
+consultar('https://jsonplaceholder.typicode.com/todos/1')
+  .luego((respuesta) => { 
+    si (!respuesta.ok) {
+      lanzar nuevo Error(`Error en la consulta: ${respuesta.status}`);
+    }
+    retornar respuesta.json() 
+  })
+  .atrapar((error) => {
+    consola.error('Error en la consulta:', error);
+  })
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
consultar('https://jsonplaceholder.typicode.com/todos/1').luego((respuesta) => { retornar respuesta.json() })
consultar('https://jsonplaceholder.typicode.com/todos/1')
.luego((respuesta) => {
si (!respuesta.ok) {
lanzar nuevo Error(`Error en la consulta: ${respuesta.status}`);
}
retornar respuesta.json()
})
.atrapar((error) => {
consola.error('Error en la consulta:', error);
})

consola.escribir('interval')
})

consola.escribir(esNuN('a'))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Probar esNuN con diferentes tipos de entrada

Para una cobertura más completa, considera probar la función esNuN con diferentes tipos de entrada.

-consola.escribir(esNuN('a'))
+// Pruebas de esNuN con diferentes tipos
+consola.escribir('esNuN con string:', esNuN('a'))
+consola.escribir('esNuN con número:', esNuN(123))
+consola.escribir('esNuN con NaN:', esNuN(NaN))
+consola.escribir('esNuN con undefined:', esNuN(indefinido))
+consola.escribir('esNuN con null:', esNuN(nulo))

Committable suggestion skipped: line range outside the PR's diff.

@@ -1,3 +1,29 @@
const data = importar.meta
const timeout = establecerTemporizador(() => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Añadir un comentario descriptivo al inicio del archivo

Para mejorar la documentación, considera añadir un comentario al inicio del archivo que explique su propósito.

+/**
+ * Pruebas para las funciones de soporte global del navegador.
+ * Este archivo verifica la funcionalidad de temporizadores, diálogos,
+ * consultas HTTP y funciones de codificación/decodificación URI.
+ */
 const timeout = establecerTemporizador(() => {
   consola.escribir('timeout')
 })
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const timeout = establecerTemporizador(() => {
/**
* Pruebas para las funciones de soporte global del navegador.
* Este archivo verifica la funcionalidad de temporizadores, diálogos,
* consultas HTTP y funciones de codificación/decodificación URI.
*/
const timeout = establecerTemporizador(() => {
consola.escribir('timeout')
})

Comment on lines +1 to +29
const timeout = establecerTemporizador(() => {
consola.escribir('timeout')
})

consola.escribir(`${importar.meta.env.ESJS}`)
const interval = establecerIntervalo(() => {
consola.escribir('interval')
})

consola.escribir(esNuN('a'))

limpiarTemporizador(timeout)

limpiarIntervalo(interval)

alerta('alert')

preguntar('prompt')

confirmar('confirm')

consultar('https://jsonplaceholder.typicode.com/todos/1').luego((respuesta) => { retornar respuesta.json() })

consola.escribir(decodificarURI('https://jsonplaceholder.typicode.com/todos/1'))

consola.escribir(decodificarComponenteURI('https%3A%2F%2Fjsonplaceholder.typicode.com%2Ftodos%2F1'))

consola.escribir(codificarURI('https://jsonplaceholder.typicode.com/todos/1'))

consola.escribir(codificarComponenteURI('https://jsonplaceholder.typicode.com/todos/1'))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Considerar añadir aserciones para verificar resultados

Este archivo de prueba ejecuta varias funciones pero no verifica que los resultados sean correctos. Para mejorar la cobertura de pruebas, considera añadir aserciones o verificaciones.

 const timeout = establecerTemporizador(() => {
   consola.escribir('timeout')
 })

 const interval = establecerIntervalo(() => {
   consola.escribir('interval')
 })

-consola.escribir(esNuN('a'))
+// Verificar esNuN
+const resultadoEsNuN = esNuN('a')
+consola.escribir(resultadoEsNuN)
+console.assert(resultadoEsNuN === verdadero, 'esNuN("a") debería ser verdadero')

 limpiarTemporizador(timeout)
 limpiarIntervalo(interval)

 alerta('alert')
 preguntar('prompt')
 confirmar('confirm')

 consultar('https://jsonplaceholder.typicode.com/todos/1').luego((respuesta) => { retornar respuesta.json() })

-consola.escribir(decodificarURI('https://jsonplaceholder.typicode.com/todos/1'))
+// Verificar funciones de URI
+const uriOriginal = 'https://jsonplaceholder.typicode.com/todos/1'
+const uriCodificada = codificarURI(uriOriginal)
+const uriDecodificada = decodificarURI(uriCodificada)
+consola.escribir(uriDecodificada)
+console.assert(uriDecodificada === uriOriginal, 'La URI decodificada debería coincidir con la original')

 consola.escribir(decodificarComponenteURI('https%3A%2F%2Fjsonplaceholder.typicode.com%2Ftodos%2F1'))
 consola.escribir(codificarURI('https://jsonplaceholder.typicode.com/todos/1'))
 consola.escribir(codificarComponenteURI('https://jsonplaceholder.typicode.com/todos/1'))
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const timeout = establecerTemporizador(() => {
consola.escribir('timeout')
})
consola.escribir(`${importar.meta.env.ESJS}`)
const interval = establecerIntervalo(() => {
consola.escribir('interval')
})
consola.escribir(esNuN('a'))
limpiarTemporizador(timeout)
limpiarIntervalo(interval)
alerta('alert')
preguntar('prompt')
confirmar('confirm')
consultar('https://jsonplaceholder.typicode.com/todos/1').luego((respuesta) => { retornar respuesta.json() })
consola.escribir(decodificarURI('https://jsonplaceholder.typicode.com/todos/1'))
consola.escribir(decodificarComponenteURI('https%3A%2F%2Fjsonplaceholder.typicode.com%2Ftodos%2F1'))
consola.escribir(codificarURI('https://jsonplaceholder.typicode.com/todos/1'))
consola.escribir(codificarComponenteURI('https://jsonplaceholder.typicode.com/todos/1'))
const timeout = establecerTemporizador(() => {
consola.escribir('timeout')
})
const interval = establecerIntervalo(() => {
consola.escribir('interval')
})
// Verificar esNuN
const resultadoEsNuN = esNuN('a')
consola.escribir(resultadoEsNuN)
console.assert(resultadoEsNuN === verdadero, 'esNuN("a") debería ser verdadero')
limpiarTemporizador(timeout)
limpiarIntervalo(interval)
alerta('alert')
preguntar('prompt')
confirmar('confirm')
consultar('https://jsonplaceholder.typicode.com/todos/1').luego((respuesta) => { retornar respuesta.json() })
// Verificar funciones de URI
const uriOriginal = 'https://jsonplaceholder.typicode.com/todos/1'
const uriCodificada = codificarURI(uriOriginal)
const uriDecodificada = decodificarURI(uriCodificada)
consola.escribir(uriDecodificada)
console.assert(uriDecodificada === uriOriginal, 'La URI decodificada debería coincidir con la original')
consola.escribir(decodificarComponenteURI('https%3A%2F%2Fjsonplaceholder.typicode.com%2Ftodos%2F1'))
consola.escribir(codificarURI('https://jsonplaceholder.typicode.com/todos/1'))
consola.escribir(codificarComponenteURI('https://jsonplaceholder.typicode.com/todos/1'))

@enzonotario enzonotario merged commit d7d3d46 into main Apr 20, 2025
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants