Contribuir
¡Gracias por tu interés en contribuir a webserial-core!
Configuración del entorno de desarrollo
bash
git clone https://github.com/danidoble/webserial-core.git
cd webserial-core
npm installInicia el servidor de desarrollo Vite para probar los demos de forma interactiva:
bash
npm run devLuego abre cualquiera de las páginas de demo en tu navegador:
http://localhost:5173/— Web Serial (nativo)http://localhost:5173/demos/web-usb/— Polyfill WebUSBhttp://localhost:5173/demos/web-bluetooth/— Web Bluetoothhttp://localhost:5173/demos/websocket/— Puente WebSocket
Estilo de código
- TypeScript en modo estricto — sin
any, todas las APIs públicas totalmente tipadas. - Importaciones ESM — usa extensión
.jsen importaciones relativas (ej.import x from "./foo.js"). Vite las resuelve a los archivos fuente.ts. - Solo en inglés — todos los comentarios, JSDoc, nombres de variables y literales de cadena deben estar en inglés.
- JSDoc — todos los símbolos exportados deben tener JSDoc con
@param,@returnsy@throwsdonde corresponda.
Ejecuta las comprobaciones de lint y formato antes de hacer push:
bash
npm run lint
npm run formatCompilar
bash
npm run buildProduce:
dist/
webserial-core.mjs ← ESM (tree-shakeable, para bundlers)
webserial-core.cjs ← CommonJS (Node.js / bundlers legacy)
webserial-core.umd.js ← UMD (tag <script> independiente / CDN)
index.d.ts ← Declaraciones TypeScript agrupadasCompilar la documentación
bash
npm run docs:dev # Vista previa en vivo
npm run docs:build # Salida estática → docs/.vitepress/distEnviar un pull request
- Haz fork del repositorio y crea una rama:
git checkout -b feat/mi-funcionalidad - Realiza tus cambios y añade JSDoc a cualquier símbolo público nuevo.
- Ejecuta
npm run lintynpm run format. - Verifica la compilación:
npm run build. - Haz push y abre un PR contra
main.
Añadir un nuevo adaptador
Coloca el código del adaptador en src/adapters/<nombre>/:
src/adapters/my-adapter/
MyAdapter.ts ← implementa SerialProvider
index.ts ← re-exportacionesLuego re-expórtalo desde src/index.ts:
ts
export * from "./adapters/my-adapter/index.js";Añade un demo en demos/my-adapter/ siguiendo la estructura de demos existente.