Pierwsze kroki
Instalacja
pnpm add belgicanpm install belgicayarn add belgicaPakiet jest modułem ESM, ma własne definicje typów, nie ma zależności w czasie działania i działa w przeglądarkach oraz na Node 22.12 lub nowszym, gdzie ładuje go także require(). Jest testowany na Node 22.12, 22, 24 i 26.
Importuj tylko to, czego potrzebujesz
Dane są wbudowane w JavaScript, więc import z głównego punktu pakietu ładuje wszystkie zbiory danych. Każdy zbiór ma własny entry point, a sądy i kantony (z tekstem przepisów opisującym ich terytorium) są zdecydowanie największe:
import { getInterestRate } from 'belgica/interest-rates'
import { getCourt } from 'belgica/courts'
import { getCanton } from 'belgica/territory'
import { getMunicipalitiesForPostalCode } from 'belgica/postal-codes'Wyjątkiem są granice kantonów: milion pozycji geometrii, dostępnych tylko w belgica/canton-boundaries i nigdy nieładowanych przez główny punkt pakietu.
| Entry point | Załadowany JavaScript | 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 |
Pierwsze spojrzenie
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: miasto podzielone, zobacz `territory` każdego kantonu
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, … }Typowe zadania
Który vredegerecht / justice de paix jest właściwy dla adresu?
Vredegerecht / justice de paix to belgijski sąd pokoju, najniższy szczebel sądownictwa, po jednym na kanton sądowy. Znajdź kod REFNIS gminy i pobierz jej kantony, a następnie sąd danego kantonu.
import { getCantonsForMunicipality, getJusticeOfThePeace } from 'belgica'
const cantons = getCantonsForMunicipality('44088')
if (cantons.length === 1) {
const court = getJusticeOfThePeace(cantons[0].id) // każdy kanton ma swój sąd
}
// W dniu doręczenia pozwu, a nie dzisiaj
getCantonsForMunicipality('44088', { on: '2025-09-15' })Gdy miasto jest podzielone między kilka kantonów (Antwerpen, Gent, Brussel, Luik, …), dostajesz więcej niż jeden wynik. Rozstrzyga adres ulicy, a territory każdego kantonu zawiera prawny opis jego części. Wypróbuj to na stronie o terytorium.
Jeśli znasz współrzędne adresu, sprawę rozstrzygają granice kantonów:
import { findCantonsAt } from 'belgica/canton-boundaries'
const [canton] = findCantonsAt(3.7268, 51.053) // długość, szerokość geograficzna: gent-1
const court = getJusticeOfThePeace(canton.id)Który sąd dla danej gminy?
Każdy sąd poza vredegerecht / justice de paix wymienia kantony, które obejmuje (cantons), tak jak określa je ustawa. findCourtsWithJurisdiction szuka w nich kantonów danej gminy.
import { findCourtsWithJurisdiction, getDivisions } from 'belgica'
findCourtsWithJurisdiction('23088', 'police-court') // [police-court-vilvoorde], nie Bruksela
findCourtsWithJurisdiction('21004', 'labour-court') // niderlandzkojęzyczny i francuskojęzyczny sąd w Brukseli
// Sąd jako całość; który wydział rozpatruje sprawę, nie ma jeszcze w danych
const [court] = findCourtsWithJurisdiction('44021', 'enterprise-court')
getDivisions(court.id) // enterprise-court-gent-gent, enterprise-court-gent-brugge, …Na podstawie kodu pocztowego
Adres ma kod pocztowy, a nie kod REFNIS. findCourtsForPostalCode przechodzi od kodu pocztowego do gminy (kody pocztowe), a stamtąd do vredegerechten / justices de paix i do sądów danego typu. Odpowiada osobno dla każdej gminy: trzy kody pocztowe (1040, 1050, 1804) należą do dwóch gmin i wtedy rozstrzyga ulica.
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']: rozstrzyga ulica
findCourtsForPostalCode('1040', 'police-court').map((r) => r.municipality.name.nl) // ['Brussel', 'Etterbeek']
getMunicipalitiesForPostalCode('9050').map((m) => m.id) // ['44021']W mieście podzielonym między kantony kod pocztowy zawęża pytanie do gminy; kanton nadal wymaga ulicy, a jego granice pozostają prozą prawniczą, dopóki #29 nie doda ich jako geometrii.
Odsetki należne w danym dniu
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 zwraca null dla dnia, dla którego nie ma stopy w danych, więc możesz ostrzec użytkownika zamiast po cichu przyjąć 0 %. Rzuca RangeError dla błędnie zapisanego dnia, takiego jak '2024-6-1': przekaż YYYY-MM-DD albo Date.
Nazwy sądów w innym języku
Nazwy są podane tak, jak publikuje je każdy sąd, w każdym języku, w którym ma stronę. Sąd we Flandrii publikuje tylko po niderlandzku; dwujęzyczne sądy w Brukseli po niderlandzku i po francusku; sądy w Eupen po niemiecku i po francusku.
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'Surowy JSON
Pliki z danymi są również eksportowane:
import courts from 'belgica/data/courts.json' with { type: 'json' }Id są publicznym API
Projekty zapisują id takie jak justice-of-the-peace-gent-1 czy oost-vlaanderen, więc nigdy nie zmieniają się one w obrębie wersji major (zobacz identyfikatory), a wersje podlegają tym regułom:
| Zmiana | Wersja |
|---|---|
| Dodanie danych | minor |
| Poprawienie wartości | patch |
| Usunięcie lub zmiana nazwy id | major |