Skip to content

Початок роботи ​

Встановлення ​

bash
pnpm add belgica
bash
npm install belgica
bash
yarn add belgica

Пакет — це ESM, він постачається з власними визначеннями типів, не має залежностей під час виконання і працює в браузерах та на Node 22.12 або новіших, де його також завантажує require(). Його протестовано на Node 22.12, 22, 24 і 26.

Імпортуйте лише потрібне ​

Дані вбудовано в JavaScript, тож імпорт із кореня пакета завантажує всі набори даних. Кожен набір даних має власний entry point, і найбільші з них — суди та кантони (разом із текстом закону, що описує їхню територію):

ts
import { getInterestRate } from 'belgica/interest-rates'
import { getCourt } from 'belgica/courts'
import { getCanton } from 'belgica/territory'
import { getMunicipalitiesForPostalCode } from 'belgica/postal-codes'

Виняток — межі кантонів: мільйон позицій геометрії, лише в belgica/canton-boundaries, і корінь пакета їх ніколи не завантажує.

Entry pointЗавантажений JavaScriptgzip
belgica1031 KB110 KB
belgica/territory251 KB33 KB
belgica/canton-boundaries254 KB34 KB
belgica/arrondissement-boundaries254 KB34 KB
belgica/courts587 KB55 KB
belgica/court-locations80 KB10 KB
belgica/courts/format1 KB1 KB
belgica/courts/load16 KB2 KB
belgica/cantons67 KB8 KB
belgica/cantons/territory78 KB17 KB
belgica/prisons62 KB7 KB
belgica/houses-of-justice27 KB4 KB
belgica/interest-rates13 KB3 KB
belgica/calendar8 KB3 KB
belgica/postal-codes169 KB19 KB

Перший погляд ​

ts
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: поділене місто, див. `territory` кожного кантону
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, … }

Типові завдання ​

Який vredegerecht / justice de paix відповідає за адресу? ​

Vredegerecht / justice de paix — мировий суд, по одному на кожен судовий кантон. Знайдіть код REFNIS громади, отримайте її кантони, а потім — суд кантону.

ts
import { getCantonsForMunicipality, getJusticeOfThePeace } from 'belgica'

const cantons = getCantonsForMunicipality('44088')
if (cantons.length === 1) {
    const court = getJusticeOfThePeace(cantons[0].id) // кожен кантон має свій суд
}

// На день вручення повістки, а не на сьогодні
getCantonsForMunicipality('44088', { on: '2025-09-15' })

Якщо місто поділене між кількома кантонами (Antwerpen, Gent, Brussel, Luik, …), ви отримаєте більше одного результату. Вирішує вулична адреса, а territory кожного кантону містить юридичний опис його частини. Спробуйте на сторінці території.

Якщо відомі координати адреси, питання вирішують межі кантонів:

ts
import { findCantonsAt } from 'belgica/canton-boundaries'

const [canton] = findCantonsAt(3.7268, 51.053) // довгота, широта: gent-1
const court = getJusticeOfThePeace(canton.id)

Який суд для громади? ​

Кожен суд, окрім vredegerecht / justice de paix, перелічує кантони, які він охоплює (cantons), так, як їх визначає закон. findCourtsWithJurisdiction шукає в них кантони громади.

ts
import { findCourtsWithJurisdiction, getDivisions } from 'belgica'

findCourtsWithJurisdiction('23088', 'police-court') // [police-court-vilvoorde], не Брюссель
findCourtsWithJurisdiction('21004', 'labour-court') // нідерландськомовний і франкомовний суди Брюсселя

// Суд у цілому; яке відділення розглядає справу, в даних поки немає
const [court] = findCourtsWithJurisdiction('44021', 'enterprise-court')
getDivisions(court.id) // enterprise-court-gent-gent, enterprise-court-gent-brugge, …

За поштовим індексом ​

Адреса містить поштовий індекс, а не код REFNIS. findCourtsForPostalCode переходить від поштового індексу до громади (поштові індекси), а звідти — до vredegerechten / justices de paix і до судів певного типу. Відповідь дається для кожної громади окремо: три поштові індекси (1040, 1050, 1804) належать двом громадам, і тоді вирішує вулиця.

ts
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']: вирішує вулиця

findCourtsForPostalCode('1040', 'police-court').map((r) => r.municipality.name.nl) // ['Brussel', 'Etterbeek']
getMunicipalitiesForPostalCode('9050').map((m) => m.id) // ['44021']

У місті, поділеному між кантонами, поштовий індекс звужує питання до громади; для кантону все одно потрібна вулиця, а його межі залишаються юридичним текстом, доки #29 не додасть їх як геометрію.

Проценти, що належать на певний день ​

ts
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 повертає null для дня, для якого ставка невідома, тож ви можете вивести попередження замість того, щоб мовчки використати 0 %. Для неправильно записаного дня, як-от '2024-6-1', функція викидає RangeError: передавайте YYYY-MM-DD або Date.

Назви судів іншою мовою ​

Назви подано так, як їх публікує кожен суд, усіма мовами, якими він має сторінку. Суд у Фландрії публікує лише нідерландською; двомовні суди в Брюсселі — нідерландською і французькою; суди в Eupen — німецькою і французькою.

ts
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 ​

Файли даних також експортуються:

ts
import courts from 'belgica/data/courts.json' with { type: 'json' }

Id — це публічний API ​

Проєкти зберігають id, як-от justice-of-the-peace-gent-1 чи oost-vlaanderen, тож вони ніколи не змінюються в межах major-версії (див. Ідентифікатори), а версії підпорядковуються таким правилам:

ЗмінаВерсія
Додавання данихminor
Виправлення значенняpatch
Видалення або перейменування idmajor

Код за ліцензією MIT, дані за CC BY 4.0. Це довідкові дані, а не юридична консультація: перевіряйте офіційні джерела.