-
Notifications
You must be signed in to change notification settings - Fork 0
Contribuir
Gracias por el interés. palta es open source, creada por zeluizr en asociación con commente.me.
La cobertura regional ya está completa: los 23 países existen. Lo que sigue creciendo es la profundidad. Un bug en una validación, un documento que falta en un país que ya está, un caso borde mal manejado — todo eso es bienvenido.
- Buscá si ya hay un issue o un PR abierto para eso.
- Para cualquier cambio que no sea una corrección chica, abrí un issue primero y discutilo.
- Leé las reglas del proyecto más abajo. No son negociables y la CI las verifica.
git clone https://github.com/zeluizr/palta.git
cd palta
npm install
npm testLos tests importan directo de src/, así que corren sin haber hecho build.
| comando | qué hace |
|---|---|
npm test |
corre todos los tests con vitest |
npm run test:watch |
vitest en modo watch |
npm run test:coverage |
tests más los umbrales de cobertura |
npm run lint |
tsc --noEmit, la única puerta estática |
npm run build |
tsup: ESM, CJS y declaraciones de tipos |
Node >= 20 para desarrollar, porque vitest 4 lo exige. El paquete publicado corre en Node 16.
- Fork del repositorio.
- Rama descriptiva:
git checkout -b feat/uy-rut # país o módulo nuevo
git checkout -b fix/br-cpf-mask # corrección de bug
git checkout -b docs/wiki-medidas # documentación- Implementá el cambio siguiendo las reglas.
- Verificá antes de abrir el PR:
npm run lint
npm run test:coverage
npm run build- Abrí el Pull Request contra
main.
La CI corre lint, cobertura y build en Node 22 en cada push y cada PR. Si falla, el PR no se mergea.
| regla | qué significa |
|---|---|
| Cero dependencias en runtime | solo devDependencies para tooling |
| TypeScript estricto | sin any, sin type assertions sin justificar |
| Funciones puras | sin efectos secundarios, sin estado global, sin mutar argumentos |
| Defensivo |
format(''), validate(null) y strip(undefined) nunca pueden lanzar |
| Cobertura | líneas y statements ≥ 94%, funciones ≥ 98%, ramas ≥ 90% |
| Sin efectos secundarios |
"sideEffects": false en package.json
|
Los contratos están en src/types.ts y no se inventan contratos nuevos. Si algo no encaja en
DocumentModule, CurrencyModule, PhoneModule o ZipcodeModule, la conversación es sobre
el contrato, no sobre una excepción local.
Los umbrales están en vitest.config.ts y no pueden bajar. No son iguales para las cuatro
métricas:
| métrica | umbral |
|---|---|
| líneas | 94% |
| statements | 94% |
| funciones | 98% |
| ramas | 90% |
npm run test:coverageCubrí siempre los tres casos defensivos de cada función pública, además de los casos felices:
expect(cpf.format('')).toBe('')
expect(cpf.validate(null as unknown as string)).toBe(false)
expect(cpf.strip(undefined as unknown as string)).toBe('')Conventional Commits, en español, describiendo el efecto y no el cambio.
feat(uy): agrega validación de RUT uruguayo
fix(br): corrige la máscara de CPF con entradas parciales
docs(wiki): documenta la auto-escala de medidas
chore(deps): actualiza vitest a 4.x
El mensaje dice qué cambia para quien usa la librería. fix(br): corrige el índice del loop
describe el diff; fix(br): corrige la máscara de CPF con entradas parciales describe el
efecto.
Abrí un issue con:
- el país y el módulo, por ejemplo
cl.rut.validate - el valor de entrada exacto
- lo que devuelve y lo que esperabas
- la versión de palta y de Node
Un valor de ejemplo reproducible vale más que cualquier descripción.
Al contribuir aceptás que tu código se publique bajo licencia MIT.
Siguiente paso: Agregar un país o Arquitectura.
Empezar
Referencia
Colaborar
Enlaces