@clregions/data
Version:
Paquete de datos para regiones de Chile, proporcionando acceso a información estructurada en formato JSON, CSV y SQL
142 lines (112 loc) • 7.11 kB
Markdown
# CL Regions Data
CLRegions Data es un proyecto que unifica y mantiene actualizados los datos territoriales de Chile en un solo lugar. Este paquete de JavaScript y TypeScript provee una estructura de datos robusta y tipada, facilitando la integración de lógica de negocio sobre los datos de regiones, provincias y comunas. Los datos, generados mediante un repositorio de Python a partir de fuentes oficiales y colaborativas, se exportan en formatos CSV, JSON y SQL, y se encapsulan para uso seguro en proyectos web o Node.
## Objetivos
- Proveer una estructura de datos robusta.
- Facilitar la integración de lógica de negocio sobre datos regionales.
- Soportar múltiples runtimes (HTML, Node, Vite, etc).
## Librería JS/TS
Esta librería permite:
- Tipado seguro en TypeScript.
- Uso sencillo en proyectos JavaScript.
- Una API consistente para acceder a los datos de regiones, provincias y comunas.
## Instalación
La instalación se puede realizar vía npm, yarn, pnpm o utilizar unpkg para proyectos sencillos en el navegador.
### Vía npm, yarn o pnpm
```bash
npm install @clregions/data
# or
yarn add @clregions/data
# or
pnpm add @clregions/data
```
### Uso vía unpkg
Incluye directamente los archivos desde un CDN:
```html
<script type="module" src="https://unpkg.com/@clregions/data@1.0.0-next.1/dist/array/index.js"></script>
```
## Uso en JS/TS
### Uso de datos como Objeto
```javascript
import { clRegions } from '@clregions/data/object';
// Ejemplo:
console.log(clRegions.regions["01"].name);
```
### Uso de datos como Array
```javascript
import { regions, provinces, communes } from '@clregions/data/array';
// Ejemplo:
console.log(regions[0].name);
```
### Uso vía unpkg en proyectos de navegador
Puedes incluir sólo los datos necesarios de regiones, provincias o comunas en tu proyecto
```html
<script type="module">
import { regions } from "https://unpkg.com/@clregions/data@1.0.0-next.4/dist/array/regions.js";
import { provinces } from "https://unpkg.com/@clregions/data@1.0.0-next.4/dist/array/provinces.js";
import { communes } from "https://unpkg.com/@clregions/data@1.0.0-next.4/dist/array/communes.js";
console.log(regions[0].name);
</script>
```
Como alternativa, puedes importar todos los datos de una sola vez
```html
<script type="module">
// Importa todos los datos como array
import { regions, provinces, communes } from "https://unpkg.com/@clregions/data@1.0.0-next.4/dist/array/index.js";
console.log(regions[0].name);
// Importa todos los datos como objeto
import { clRegions } from "https://unpkg.com/@clregions/data@1.0.0-next.4/dist/object/index.js";
console.log(clRegions.regions["01"].name);
</script>
```
<!-- Nuevo Warning: -->
> [!WARNING]
> Los datos contenidos en el paquete @clregions/data son mutables, por lo que se recomienda no modificarlos directamente. Para un uso seguro, considera utilizar @clregions/core u otros mecanismos de inmutabilidad.
## Desarrollo
### Requisitos
- Python 3.12 o superior (para la generación de datos)
- [uv package manager](https://docs.astral.sh/uv/)
### Instalación de dependencias
```bash
uv venv
uv sync
```
## Contribución
Si deseas contribuir, por favor sigue los siguientes pasos:
1. Haz un fork del repositorio.
2. Crea una nueva rama (`git checkout -b feature/nueva-funcionalidad`).
3. Realiza tus cambios y haz commit (`git commit -am 'Añadir nueva funcionalidad'`).
4. Haz push a la rama (`git push origin feature/nueva-funcionalidad`).
5. Crea un nuevo Pull Request.
## Fuentes de Datos
[BCN Ley 21.074 2018](https://www.bcn.cl/leychile/navegar?idNorma=1115064)
[BCN Decreto 1115 del Ministerio del Interior y Seguridad Pública 2018](https://www.bcn.cl/leychile/navegar?idNorma=1123248)
[BCN Sistema Integrado de Información Territorial (SIIT) Regiones de Chile](https://www.bcn.cl/siit/nuestropais/regiones)
[BCN Sistema Integrado de Información Territorial (SIIT) Regiones, provincias y comunas de Chile](https://www.bcn.cl/siit/nuestropais_29_01_2021/regiones_provincias_comunas_bak.htm)
[ISO 316 — Codes for the representation of names of countries and their subdivisions](https://www.iso.org/obp/ui/#iso:code:3166:CL)
[Observatorio Logístico MAESTRO Códigos Únicos Territoriales - Actualizado al 2018](https://datos.observatoriologistico.cl/dataviews/262940/maestro-codigos-unicos-territoriales-actualizado-al-2018/)
[Observatorio Logístico Provincias por Región](https://datos.observatoriologistico.cl/dataviews/244278/provincias-por-region/)
[Observatorio Logístico Comunas por Región](https://datos.observatoriologistico.cl/dataviews/244276/comunas-por-region/)
[WikiPedia Regiones de Chile](https://es.wikipedia.org/wiki/Regiones_de_Chile)
[WikiPedia Provincias de Chile](https://es.wikipedia.org/wiki/Anexo:Provincias_de_Chile)
[WikiPedia Comunas de Chile](https://es.wikipedia.org/wiki/Anexo:Comunas_de_Chile)
## FAQ
**¿Por qué este paquete es independiente de otros repositorios?**
Este paquete npm se centra en proveer acceso y tipado seguro a los datos procesados. El repositorio de Python se encarga de generar y mantener actualizados los datos (CSV, JSON, SQL), permitiendo que el paquete de JavaScript se enfoque en la integración en aplicaciones web y Node.
**¿Cuáles son las diferencias con otros paquetes?**
- Otros paquetes pueden ofrecer solo un formato de datos (e.g. CSV o JSON), mientras que CL Regions Data permite acceder a datos tanto en formato de Array como de Objeto.
- Integración optimizada para lógica de negocio, con mejoras en tipado y seguridad en TypeScript.
- Múltiples opciones de instalación (npm/yarn/pnpm, unpkg) adaptadas a diferentes entornos.
**¿Por qué es beneficioso contar con un paquete npm?**
- Actualizaciones centralizadas y controladas a través de versiones.
- Integración inmediata en proyectos JS/TS sin necesidad de procesamiento manual de los datos.
- Facilita el uso de herramientas modernas y bundlers (Vite, Webpack, etc).
**En caso de no requerir un paquete npm, ¿qué alternativas existen?**
Puedes trabajar directamente con los archivos CSV, JSON y SQL, los cuales ofrecen acceso libre a los datos sin intermediación, aunque se sacrifica la integración tipada y las optimizaciones específicas para proyectos web.
**Planean soportar otros lenguajes o entornos?**
Sí, estamos evaluando la posibilidad de extender la librería a otros lenguajes y entornos, como Deno, Bun, Python, Java, C#, entre otros. Te invitamos a contribuir con ideas y propuestas.
**¿Cómo reporto problemas o sugiero mejoras?**
Abre un issue en nuestro repositorio de GitHub.
**¿Los datos se actualizan automáticamente?**
No, la actualización de datos se realiza manualmente por la comunidad en el proyecto de Python de este paquete.
**¿Puedo usar esta librería en proyectos comerciales?**
Sí, esta librería está disponible bajo la licencia MIT, por lo que puedes usarla en proyectos comerciales.