Primeros pasos
Instalación
pnpm add belgicanpm install belgicayarn add belgicaEl paquete es ESM, incluye sus propias definiciones de tipos, no tiene dependencias en tiempo de ejecución y funciona en navegadores y en Node 22.12 o posterior, donde también se puede cargar con require(). Se prueba en Node 22.12, 22, 24 y 26.
Importa solo lo que necesitas
Los datos van empaquetados dentro del JavaScript, así que importar desde la raíz del paquete carga todos los conjuntos de datos. Cada conjunto tiene su propio entry point, y los tribunales y los cantones (con el texto legal de sus territorios) son con diferencia los más grandes:
import { getInterestRate } from 'belgica/interest-rates'
import { getCourt } from 'belgica/courts'
import { getCanton } from 'belgica/territory'
import { getMunicipalitiesForPostalCode } from 'belgica/postal-codes'Los límites de los cantones son la excepción: un millón de posiciones de geometría, solo en belgica/canton-boundaries, que la raíz del paquete nunca carga.
| Entry point | JavaScript cargado | gzip |
|---|---|---|
belgica | 1031 KB | 110 KB |
belgica/territory | 251 KB | 33 KB |
belgica/canton-boundaries | 254 KB | 34 KB |
belgica/arrondissement-boundaries | 254 KB | 34 KB |
belgica/courts | 587 KB | 55 KB |
belgica/court-locations | 80 KB | 10 KB |
belgica/courts/format | 1 KB | 1 KB |
belgica/courts/load | 16 KB | 2 KB |
belgica/cantons | 67 KB | 8 KB |
belgica/cantons/territory | 78 KB | 17 KB |
belgica/prisons | 62 KB | 7 KB |
belgica/houses-of-justice | 27 KB | 4 KB |
belgica/interest-rates | 13 KB | 3 KB |
belgica/calendar | 8 KB | 3 KB |
belgica/postal-codes | 169 KB | 19 KB |
Un primer vistazo
import {
getCourt,
findCourts,
getCanton,
getCantonsForMunicipality,
getInterestRate,
} from 'belgica'
getCourt('justice-of-the-peace-gent-1').name.nl // 'Vredegerecht Gent 1'
findCourts({ type: 'enterprise-court', arrondissement: 'west-vlaanderen' })
getCantonsForMunicipality('44088') // [Canton merelbeke-melle]
getCantonsForMunicipality('44021') // Gent 1–5: ciudad dividida, ver el `territory` de cada cantón
getCanton('oudergem').seat.nl // 'Etterbeek'
getInterestRate('2024-06-15', 'legal') // { rate: 5.75, period: { from: '2024-01-01', to: '2024-12-31' } }
getInterestRate(new Date(2014, 5, 15), 'commercial', { contractAfter20130316: true }) // { rate: 8.5, … }Tareas habituales
¿Qué justice de paix corresponde a una dirección?
La justice de paix (vredegerecht) es el juzgado de paz de un cantón judicial. Busca el código REFNIS del municipio y obtén sus cantones, y luego el tribunal del cantón.
import { getCantonsForMunicipality, getJusticeOfThePeace } from 'belgica'
const cantons = getCantonsForMunicipality('44088')
if (cantons.length === 1) {
const court = getJusticeOfThePeace(cantons[0].id) // cada cantón tiene su tribunal
}
// En el día en que se notificó la citación, en lugar de hoy
getCantonsForMunicipality('44088', { on: '2025-09-15' })Cuando una ciudad está dividida entre varios cantones (Antwerpen, Gent, Brussel, Luik, …), obtienes más de un resultado. Decide la dirección postal, y el territory de cada cantón contiene la descripción legal de su parte. Pruébalo en la página del territorio.
Con las coordenadas de la dirección, los límites de los cantones lo resuelven:
import { findCantonsAt } from 'belgica/canton-boundaries'
const [canton] = findCantonsAt(3.7268, 51.053) // longitud, latitud: gent-1
const court = getJusticeOfThePeace(canton.id)¿Qué tribunal para un municipio?
Todo tribunal que no sea una justice de paix enumera los cantones que cubre (cantons), tal como los fija la ley. findCourtsWithJurisdiction busca en ellos los cantones de un municipio.
import { findCourtsWithJurisdiction, getDivisions } from 'belgica'
findCourtsWithJurisdiction('23088', 'police-court') // [police-court-vilvoorde], no Bruselas
findCourtsWithJurisdiction('21004', 'labour-court') // el tribunal neerlandófono y el francófono de Bruselas
// El tribunal en su conjunto; qué división conoce del asunto aún no está en los datos
const [court] = findCourtsWithJurisdiction('44021', 'enterprise-court')
getDivisions(court.id) // enterprise-court-gent-gent, enterprise-court-gent-brugge, …A partir de un código postal
Una dirección viene con un código postal, no con un código REFNIS. findCourtsForPostalCode va del código postal al municipio (códigos postales) y de ahí a las justices de paix y a los tribunales de un tipo. Responde por municipio: tres códigos postales (1040, 1050, 1804) pertenecen a dos municipios, y entonces decide la calle.
import { findCourtsForPostalCode, getMunicipalitiesForPostalCode } from 'belgica'
const [gent] = findCourtsForPostalCode('9050', 'labour-court')
gent.municipality.name.nl // 'Gent'
gent.courts.map((c) => c.id) // ['labour-court-gent']
gent.justicesOfThePeace.map((c) => c.canton.id) // ['gent-1', …, 'gent-5']: decide la calle
findCourtsForPostalCode('1040', 'police-court').map((r) => r.municipality.name.nl) // ['Brussel', 'Etterbeek']
getMunicipalitiesForPostalCode('9050').map((m) => m.id) // ['44021']En una ciudad dividida entre cantones, el código postal reduce la pregunta al municipio; el cantón sigue necesitando la calle, y sus límites son prosa legal hasta que #29 los añada como geometría.
Intereses debidos en un día
import { getInterestRate, getLatestKnownRateDate } from 'belgica'
const result = getInterestRate(new Date(), 'commercial')
if (!result) {
console.warn(`No rate on file; latest known day is ${getLatestKnownRateDate('commercial')}`)
}getInterestRate devuelve null para un día sin tipo registrado, de modo que puedes avisar en lugar de usar 0 % sin decir nada. Lanza un RangeError para un día mal formado como '2024-6-1': pasa YYYY-MM-DD o un Date.
Nombres de tribunales en otra lengua
Los nombres son los que publica cada tribunal, en cada lengua en la que tiene página. Un tribunal de Flandes publica solo en neerlandés; los tribunales bilingües de Bruselas en neerlandés y francés; los tribunales de Eupen en alemán y francés.
getCourt('court-of-appeal-brussel').name.fr // "Cour d'appel de Bruxelles"
getCourt('police-court-eupen-sankt-vith').name.de // 'Polizeigericht Eupen, Abteilung Sankt Vith'JSON sin procesar
Los archivos de datos también se exportan:
import courts from 'belgica/data/courts.json' with { type: 'json' }Los ids son API pública
Los proyectos guardan ids como justice-of-the-peace-gent-1 u oost-vlaanderen, así que nunca cambian dentro de una versión mayor (ver identificadores), y las versiones siguen estas reglas:
| Cambio | Versión |
|---|---|
| Añadir datos | minor |
| Corregir un valor | patch |
| Eliminar o renombrar un id | major |