@mailwoman/corpus 10.1.0 → 10.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/licenses/cdla-permissive-2.0.md +1 -1
- package/lib/adapters/cordis/adapter.ts +13 -7
- package/lib/adapters/dedup-key.ts +1 -1
- package/lib/adapters/geonames/adapter.ts +1 -1
- package/lib/adapters/gleif/adapter.ts +17 -16
- package/lib/adapters/libpostal-dictionary.ts +0 -2
- package/lib/adapters/openaddresses/adapter.ts +4 -3
- package/lib/adapters/osm/adapter.ts +22 -21
- package/lib/adapters/po-box/adapter.ts +10 -5
- package/lib/adapters/registry.ts +4 -4
- package/lib/adapters/source-id.ts +2 -2
- package/lib/adapters/street-line.ts +7 -6
- package/lib/adapters/wof/admin/json/adapter.ts +2 -2
- package/lib/adapters/wof/json-rows.ts +2 -1
- package/lib/adapters/wof/postalcode-json/adapter.ts +6 -2
- package/lib/adapters.ts +5 -5
- package/lib/au/adapters/gnaf/adapter.ts +1 -1
- package/lib/be/adapters/brussels/adapter.ts +22 -22
- package/lib/be/adapters/vlaanderen/adapter.ts +54 -57
- package/lib/be/adapters/wallonie/adapter.ts +17 -17
- package/lib/be/tools/fetch/brussels.ts +13 -10
- package/lib/be/tools/fetch/wallonie.ts +8 -7
- package/lib/build/adapters.ts +2 -1
- package/lib/build/align.ts +5 -4
- package/lib/build/checkpoint.ts +5 -3
- package/lib/build/eligibility.ts +3 -3
- package/lib/build/types.ts +8 -6
- package/lib/cz/adapters/cuzk/adapter.ts +41 -38
- package/lib/cz/tools/fetch/cuzk.ts +42 -31
- package/lib/de/recipes/locale.ts +1 -1
- package/lib/dk/adapters/inspire/adapter.ts +38 -38
- package/lib/dk/tools/fetch/inspire.ts +16 -14
- package/lib/ee/adapters/ads/adapter.ts +26 -32
- package/lib/ee/tools/fetch/ads.ts +10 -8
- package/lib/es/adapters/bizkaia/adapter.ts +47 -47
- package/lib/es/adapters/catastro/adapter.ts +36 -34
- package/lib/es/adapters/gipuzkoa/adapter.ts +38 -45
- package/lib/es/adapters/navarra/adapter.ts +28 -27
- package/lib/es/cadastre.ts +31 -31
- package/lib/es/tools/fetch/bizkaia.ts +40 -36
- package/lib/es/tools/fetch/catastro.ts +51 -40
- package/lib/es/tools/fetch/gipuzkoa.ts +13 -11
- package/lib/es/tools/fetch/navarra.ts +33 -25
- package/lib/fi/adapters/ryhti/adapter.ts +22 -26
- package/lib/fi/tools/fetch/ryhti.ts +31 -31
- package/lib/fr/adapters/annuaire-education/adapter.ts +13 -11
- package/lib/fr/adapters/ban/adapter.ts +6 -6
- package/lib/fr/adapters/finess/adapter.ts +16 -15
- package/lib/fr/adapters/finess/voie-type.ts +4 -3
- package/lib/fr/insee-country.ts +2 -2
- package/lib/fr/recipes/lieudit.ts +8 -6
- package/lib/fr/tools/fetch/annuaire-education.ts +11 -8
- package/lib/fr/tools/fetch/ban.ts +3 -2
- package/lib/fr/tools/fetch/finess.ts +14 -13
- package/lib/inspire/address.ts +86 -78
- package/lib/inspire/errors.ts +9 -8
- package/lib/inspire/stream.ts +29 -26
- package/lib/international/recipes/locale.ts +13 -9
- package/lib/it/adapters/anac/adapter.ts +51 -46
- package/lib/it/tools/fetch/anac.ts +22 -25
- package/lib/jp/adapters/wof-admin/adapter.ts +2 -6
- package/lib/jp/tools/fetch/houjin.ts +3 -3
- package/lib/kr/adapters/localdata/permit-rows.ts +1 -1
- package/lib/kr/tools/fetch/juso.ts +1 -1
- package/lib/kr/tools/fetch/localdata.ts +2 -2
- package/lib/lu/adapters/bd-adresses/adapter.ts +10 -10
- package/lib/lu/tools/fetch/bd-adresses.ts +15 -13
- package/lib/lv/adapters/varis/adapter.ts +24 -23
- package/lib/lv/tools/fetch/varis.ts +3 -2
- package/lib/nl/adapters/kadaster/adapter.ts +29 -29
- package/lib/nl/tools/fetch/kadaster.ts +16 -12
- package/lib/no/adapters/matrikkelen/adapter.ts +6 -5
- package/lib/no/tools/fetch/matrikkelen.ts +59 -47
- package/lib/parquet/duckdb.ts +7 -4
- package/lib/parquet/readers.ts +3 -3
- package/lib/parquet/schema.ts +1 -1
- package/lib/parquet/writers.ts +3 -2
- package/lib/pl/adapters/emuia/adapter.ts +12 -12
- package/lib/pl/tools/fetch/emuia.ts +10 -9
- package/lib/recipes/bare/postcode.ts +1 -1
- package/lib/recipes/boundary-stress.ts +1 -1
- package/lib/recipes/house-venue.ts +7 -3
- package/lib/recipes/intersection.ts +2 -2
- package/lib/recipes/po/box/cedex/recipe.ts +3 -3
- package/lib/recipes/po/box/cedex/sources.ts +13 -1
- package/lib/recipes/scaffold.ts +31 -21
- package/lib/recipes/sources.ts +16 -3
- package/lib/recipes/street/bare.ts +2 -2
- package/lib/recipes/street.ts +3 -1
- package/lib/recipes/sub/venue/context.ts +2 -0
- package/lib/recipes/sub/venue/render.ts +1 -1
- package/lib/recipes/sub/venue/sources.ts +24 -29
- package/lib/recipes/sub/venue.ts +12 -18
- package/lib/recipes/trailing-region.ts +6 -2
- package/lib/recipes/unit.ts +3 -3
- package/lib/recipes/venue.ts +347 -0
- package/lib/recipes.ts +4 -2
- package/lib/registers.ts +8 -6
- package/lib/ro/adapters/retea-scolara/adapter.ts +5 -5
- package/lib/ro/tools/fetch/retea-scolara.ts +1 -1
- package/lib/runner.ts +4 -3
- package/lib/sg/recipes/register.ts +1 -1
- package/lib/sg/tools/fetch/acra.ts +3 -3
- package/lib/sk/adapters/inspire/adapter.ts +25 -27
- package/lib/sk/tools/fetch/inspire.ts +15 -14
- package/lib/source-register/effective-manifest.ts +3 -3
- package/lib/source-register/register.ts +3 -3
- package/lib/source-register/training-manifest.ts +1 -1
- package/lib/source-register/types.ts +12 -13
- package/lib/subvenue/promotions.ts +1 -1
- package/lib/subvenue/table.ts +4 -4
- package/lib/surfaces/locale.ts +2 -0
- package/lib/synthesizers/anchor-absorption.ts +2 -1
- package/lib/synthesizers/boundary-stress.ts +20 -26
- package/lib/synthesizers/house-venue.ts +26 -30
- package/lib/synthesizers/no-street.ts +2 -1
- package/lib/synthesizers/po-box.ts +6 -3
- package/lib/synthesizers/tail.ts +55 -0
- package/lib/synthesizers/utils.ts +19 -2
- package/lib/test-kit.ts +2 -2
- package/lib/tools/audit.ts +7 -5
- package/lib/tools/corpus-stats.ts +1 -1
- package/lib/tools/fetch/atom.ts +10 -10
- package/lib/tools/fetch/cordis.ts +11 -9
- package/lib/tools/fetch/download/manifest.ts +2 -1
- package/lib/tools/fetch/download/network.ts +4 -4
- package/lib/tools/fetch/download/retry.ts +4 -4
- package/lib/tools/fetch/geonames/dump.ts +5 -3
- package/lib/tools/fetch/geonames/postal.ts +2 -2
- package/lib/tools/fetch/gleif.ts +6 -4
- package/lib/tools/fetch/header.ts +8 -6
- package/lib/tools/fetch/inspire-addresses.ts +41 -36
- package/lib/tools/fetch/openaddresses.ts +1 -1
- package/lib/tools/fetch/vlaanderen-ad.ts +17 -17
- package/lib/tools/fetch/wfs-harvest.ts +39 -28
- package/lib/tools/fetch.ts +0 -42
- package/lib/tools/golden/expand.ts +8 -8
- package/lib/tools/golden/promote.ts +12 -8
- package/lib/tools/golden/relabel-street/directory.ts +7 -6
- package/lib/tools/golden/relabel-street/row.ts +7 -6
- package/lib/tools/ingest-csv.ts +3 -3
- package/lib/tools/jsonl-to-parquet.ts +1 -1
- package/lib/tools/lint/recipe-output/vocab.ts +10 -5
- package/lib/tools/lint/recipe-output.ts +26 -8
- package/lib/tools/overlay/kryptonite.ts +4 -3
- package/lib/tools/overlay/manifest.ts +4 -2
- package/lib/tools/overlay/merge-source.ts +2 -1
- package/lib/tools/overlay/split-slice.ts +2 -2
- package/lib/tools/overlay/translit.ts +6 -4
- package/lib/tools/overture-subvenue.ts +1 -1
- package/lib/tools/postcode-triples.ts +5 -4
- package/lib/tools/source-register/build.ts +17 -14
- package/lib/tools/sub/venue/lexicon.ts +4 -8
- package/lib/tw/tools/fetch/gcis.ts +4 -4
- package/lib/types.ts +4 -3
- package/lib/us/adapters/state/hi-schools/workbook.ts +1 -1
- package/lib/us/adapters/usgov/nad/adapter.ts +11 -11
- package/lib/us/adapters/usgov/samhsa-treatment-locator/adapter.ts +4 -4
- package/lib/us/fips-state.ts +2 -2
- package/lib/{synthesizers → us/synthesizers}/intersection.ts +12 -13
- package/lib/{synthesizers → us/synthesizers}/street.ts +16 -15
- package/lib/us/tools/fetch/imls-pls.ts +1 -1
- package/lib/us/tools/fetch/nad.ts +7 -7
- package/lib/us/tools/fetch/nppes.ts +5 -5
- package/lib/us/tools/fetch/state/hi-schools.ts +3 -2
- package/lib/us/tools/fetch/tiger-full.ts +1 -1
- package/lib/utils/align.ts +13 -10
- package/lib/utils/golden.ts +2 -2
- package/lib/utils/license.ts +3 -3
- package/lib/utils/split.ts +19 -15
- package/lib/utils/tokenize.ts +7 -26
- package/lib/utils/wof-json.ts +4 -4
- package/out/adapters/cordis/adapter.d.ts +5 -3
- package/out/adapters/cordis/adapter.d.ts.map +1 -1
- package/out/adapters/cordis/adapter.js +13 -7
- package/out/adapters/cordis/adapter.js.map +1 -1
- package/out/adapters/dedup-key.d.ts +1 -1
- package/out/adapters/dedup-key.js +1 -1
- package/out/adapters/geonames/adapter.js +1 -1
- package/out/adapters/geonames/adapter.js.map +1 -1
- package/out/adapters/gleif/adapter.d.ts +9 -9
- package/out/adapters/gleif/adapter.d.ts.map +1 -1
- package/out/adapters/gleif/adapter.js +15 -14
- package/out/adapters/gleif/adapter.js.map +1 -1
- package/out/adapters/libpostal-dictionary.d.ts +0 -2
- package/out/adapters/libpostal-dictionary.d.ts.map +1 -1
- package/out/adapters/libpostal-dictionary.js +0 -2
- package/out/adapters/libpostal-dictionary.js.map +1 -1
- package/out/adapters/openaddresses/adapter.d.ts +3 -2
- package/out/adapters/openaddresses/adapter.d.ts.map +1 -1
- package/out/adapters/openaddresses/adapter.js +1 -1
- package/out/adapters/openaddresses/adapter.js.map +1 -1
- package/out/adapters/osm/adapter.d.ts +17 -16
- package/out/adapters/osm/adapter.d.ts.map +1 -1
- package/out/adapters/osm/adapter.js +10 -9
- package/out/adapters/osm/adapter.js.map +1 -1
- package/out/adapters/po-box/adapter.d.ts +6 -3
- package/out/adapters/po-box/adapter.d.ts.map +1 -1
- package/out/adapters/po-box/adapter.js +4 -2
- package/out/adapters/po-box/adapter.js.map +1 -1
- package/out/adapters/registry.d.ts +3 -3
- package/out/adapters/registry.d.ts.map +1 -1
- package/out/adapters/registry.js +1 -1
- package/out/adapters/registry.js.map +1 -1
- package/out/adapters/source-id.d.ts +2 -2
- package/out/adapters/source-id.js +2 -2
- package/out/adapters/street-line.d.ts +7 -6
- package/out/adapters/street-line.d.ts.map +1 -1
- package/out/adapters/street-line.js +7 -6
- package/out/adapters/street-line.js.map +1 -1
- package/out/adapters/wof/admin/json/adapter.js +1 -1
- package/out/adapters/wof/admin/json/adapter.js.map +1 -1
- package/out/adapters/wof/json-rows.d.ts +2 -1
- package/out/adapters/wof/json-rows.d.ts.map +1 -1
- package/out/adapters/wof/json-rows.js.map +1 -1
- package/out/adapters/wof/postalcode-json/adapter.d.ts.map +1 -1
- package/out/adapters/wof/postalcode-json/adapter.js +5 -1
- package/out/adapters/wof/postalcode-json/adapter.js.map +1 -1
- package/out/adapters.d.ts +5 -5
- package/out/adapters.js +5 -5
- package/out/au/adapters/gnaf/adapter.js +1 -1
- package/out/au/adapters/gnaf/adapter.js.map +1 -1
- package/out/be/adapters/brussels/adapter.d.ts +9 -9
- package/out/be/adapters/brussels/adapter.d.ts.map +1 -1
- package/out/be/adapters/brussels/adapter.js +21 -21
- package/out/be/adapters/brussels/adapter.js.map +1 -1
- package/out/be/adapters/vlaanderen/adapter.d.ts +34 -37
- package/out/be/adapters/vlaanderen/adapter.d.ts.map +1 -1
- package/out/be/adapters/vlaanderen/adapter.js +40 -38
- package/out/be/adapters/vlaanderen/adapter.js.map +1 -1
- package/out/be/adapters/wallonie/adapter.d.ts +2 -2
- package/out/be/adapters/wallonie/adapter.js +17 -17
- package/out/be/adapters/wallonie/adapter.js.map +1 -1
- package/out/be/tools/fetch/brussels.d.ts +11 -8
- package/out/be/tools/fetch/brussels.d.ts.map +1 -1
- package/out/be/tools/fetch/brussels.js +10 -8
- package/out/be/tools/fetch/brussels.js.map +1 -1
- package/out/be/tools/fetch/wallonie.d.ts +6 -5
- package/out/be/tools/fetch/wallonie.d.ts.map +1 -1
- package/out/be/tools/fetch/wallonie.js +4 -4
- package/out/be/tools/fetch/wallonie.js.map +1 -1
- package/out/build/adapters.d.ts.map +1 -1
- package/out/build/adapters.js +2 -1
- package/out/build/adapters.js.map +1 -1
- package/out/build/align.d.ts +3 -2
- package/out/build/align.d.ts.map +1 -1
- package/out/build/align.js +2 -2
- package/out/build/align.js.map +1 -1
- package/out/build/checkpoint.d.ts +1 -1
- package/out/build/checkpoint.d.ts.map +1 -1
- package/out/build/checkpoint.js +4 -2
- package/out/build/checkpoint.js.map +1 -1
- package/out/build/eligibility.d.ts +2 -2
- package/out/build/eligibility.js +3 -3
- package/out/build/eligibility.js.map +1 -1
- package/out/build/types.d.ts +8 -6
- package/out/build/types.d.ts.map +1 -1
- package/out/cz/adapters/cuzk/adapter.d.ts +14 -14
- package/out/cz/adapters/cuzk/adapter.d.ts.map +1 -1
- package/out/cz/adapters/cuzk/adapter.js +38 -35
- package/out/cz/adapters/cuzk/adapter.js.map +1 -1
- package/out/cz/tools/fetch/cuzk.d.ts +31 -22
- package/out/cz/tools/fetch/cuzk.d.ts.map +1 -1
- package/out/cz/tools/fetch/cuzk.js +21 -19
- package/out/cz/tools/fetch/cuzk.js.map +1 -1
- package/out/de/recipes/locale.js +1 -1
- package/out/de/recipes/locale.js.map +1 -1
- package/out/dk/adapters/inspire/adapter.d.ts +32 -33
- package/out/dk/adapters/inspire/adapter.d.ts.map +1 -1
- package/out/dk/adapters/inspire/adapter.js +38 -38
- package/out/dk/adapters/inspire/adapter.js.map +1 -1
- package/out/dk/tools/fetch/inspire.d.ts +6 -5
- package/out/dk/tools/fetch/inspire.d.ts.map +1 -1
- package/out/dk/tools/fetch/inspire.js +15 -13
- package/out/dk/tools/fetch/inspire.js.map +1 -1
- package/out/ee/adapters/ads/adapter.d.ts +19 -26
- package/out/ee/adapters/ads/adapter.d.ts.map +1 -1
- package/out/ee/adapters/ads/adapter.js +22 -28
- package/out/ee/adapters/ads/adapter.js.map +1 -1
- package/out/ee/tools/fetch/ads.d.ts +3 -3
- package/out/ee/tools/fetch/ads.d.ts.map +1 -1
- package/out/ee/tools/fetch/ads.js +10 -8
- package/out/ee/tools/fetch/ads.js.map +1 -1
- package/out/es/adapters/bizkaia/adapter.d.ts +28 -28
- package/out/es/adapters/bizkaia/adapter.d.ts.map +1 -1
- package/out/es/adapters/bizkaia/adapter.js +43 -43
- package/out/es/adapters/bizkaia/adapter.js.map +1 -1
- package/out/es/adapters/catastro/adapter.d.ts +22 -23
- package/out/es/adapters/catastro/adapter.d.ts.map +1 -1
- package/out/es/adapters/catastro/adapter.js +35 -33
- package/out/es/adapters/catastro/adapter.js.map +1 -1
- package/out/es/adapters/gipuzkoa/adapter.d.ts +31 -38
- package/out/es/adapters/gipuzkoa/adapter.d.ts.map +1 -1
- package/out/es/adapters/gipuzkoa/adapter.js +40 -47
- package/out/es/adapters/gipuzkoa/adapter.js.map +1 -1
- package/out/es/adapters/navarra/adapter.d.ts +20 -19
- package/out/es/adapters/navarra/adapter.d.ts.map +1 -1
- package/out/es/adapters/navarra/adapter.js +23 -22
- package/out/es/adapters/navarra/adapter.js.map +1 -1
- package/out/es/cadastre.d.ts +21 -20
- package/out/es/cadastre.d.ts.map +1 -1
- package/out/es/cadastre.js +19 -21
- package/out/es/cadastre.js.map +1 -1
- package/out/es/tools/fetch/bizkaia.d.ts +28 -25
- package/out/es/tools/fetch/bizkaia.d.ts.map +1 -1
- package/out/es/tools/fetch/bizkaia.js +25 -24
- package/out/es/tools/fetch/bizkaia.js.map +1 -1
- package/out/es/tools/fetch/catastro.d.ts +28 -20
- package/out/es/tools/fetch/catastro.d.ts.map +1 -1
- package/out/es/tools/fetch/catastro.js +36 -31
- package/out/es/tools/fetch/catastro.js.map +1 -1
- package/out/es/tools/fetch/gipuzkoa.d.ts +11 -9
- package/out/es/tools/fetch/gipuzkoa.d.ts.map +1 -1
- package/out/es/tools/fetch/gipuzkoa.js +9 -8
- package/out/es/tools/fetch/gipuzkoa.js.map +1 -1
- package/out/es/tools/fetch/navarra.d.ts +20 -15
- package/out/es/tools/fetch/navarra.d.ts.map +1 -1
- package/out/es/tools/fetch/navarra.js +21 -16
- package/out/es/tools/fetch/navarra.js.map +1 -1
- package/out/fi/adapters/ryhti/adapter.d.ts +16 -20
- package/out/fi/adapters/ryhti/adapter.d.ts.map +1 -1
- package/out/fi/adapters/ryhti/adapter.js +21 -25
- package/out/fi/adapters/ryhti/adapter.js.map +1 -1
- package/out/fi/tools/fetch/ryhti.d.ts +24 -24
- package/out/fi/tools/fetch/ryhti.d.ts.map +1 -1
- package/out/fi/tools/fetch/ryhti.js +21 -24
- package/out/fi/tools/fetch/ryhti.js.map +1 -1
- package/out/fr/adapters/annuaire-education/adapter.d.ts +8 -8
- package/out/fr/adapters/annuaire-education/adapter.d.ts.map +1 -1
- package/out/fr/adapters/annuaire-education/adapter.js +13 -11
- package/out/fr/adapters/annuaire-education/adapter.js.map +1 -1
- package/out/fr/adapters/ban/adapter.d.ts +4 -4
- package/out/fr/adapters/ban/adapter.js +6 -6
- package/out/fr/adapters/ban/adapter.js.map +1 -1
- package/out/fr/adapters/finess/adapter.d.ts +12 -11
- package/out/fr/adapters/finess/adapter.d.ts.map +1 -1
- package/out/fr/adapters/finess/adapter.js +16 -15
- package/out/fr/adapters/finess/adapter.js.map +1 -1
- package/out/fr/adapters/finess/voie-type.d.ts +2 -2
- package/out/fr/adapters/finess/voie-type.d.ts.map +1 -1
- package/out/fr/adapters/finess/voie-type.js +4 -3
- package/out/fr/adapters/finess/voie-type.js.map +1 -1
- package/out/fr/insee-country.d.ts +2 -2
- package/out/fr/insee-country.js +2 -2
- package/out/fr/recipes/lieudit.d.ts.map +1 -1
- package/out/fr/recipes/lieudit.js +5 -4
- package/out/fr/recipes/lieudit.js.map +1 -1
- package/out/fr/tools/fetch/annuaire-education.d.ts +7 -4
- package/out/fr/tools/fetch/annuaire-education.d.ts.map +1 -1
- package/out/fr/tools/fetch/annuaire-education.js +9 -7
- package/out/fr/tools/fetch/annuaire-education.js.map +1 -1
- package/out/fr/tools/fetch/ban.d.ts +1 -1
- package/out/fr/tools/fetch/ban.d.ts.map +1 -1
- package/out/fr/tools/fetch/ban.js +3 -2
- package/out/fr/tools/fetch/ban.js.map +1 -1
- package/out/fr/tools/fetch/finess.d.ts +5 -5
- package/out/fr/tools/fetch/finess.d.ts.map +1 -1
- package/out/fr/tools/fetch/finess.js +13 -12
- package/out/fr/tools/fetch/finess.js.map +1 -1
- package/out/inspire/address.d.ts +62 -52
- package/out/inspire/address.d.ts.map +1 -1
- package/out/inspire/address.js +71 -60
- package/out/inspire/address.js.map +1 -1
- package/out/inspire/errors.d.ts +9 -8
- package/out/inspire/errors.d.ts.map +1 -1
- package/out/inspire/errors.js +7 -6
- package/out/inspire/errors.js.map +1 -1
- package/out/inspire/stream.d.ts +25 -22
- package/out/inspire/stream.d.ts.map +1 -1
- package/out/inspire/stream.js +10 -12
- package/out/inspire/stream.js.map +1 -1
- package/out/international/recipes/locale.d.ts +2 -2
- package/out/international/recipes/locale.d.ts.map +1 -1
- package/out/international/recipes/locale.js +11 -7
- package/out/international/recipes/locale.js.map +1 -1
- package/out/it/adapters/anac/adapter.d.ts +45 -43
- package/out/it/adapters/anac/adapter.d.ts.map +1 -1
- package/out/it/adapters/anac/adapter.js +48 -43
- package/out/it/adapters/anac/adapter.js.map +1 -1
- package/out/it/tools/fetch/anac.d.ts +16 -19
- package/out/it/tools/fetch/anac.d.ts.map +1 -1
- package/out/it/tools/fetch/anac.js +20 -23
- package/out/it/tools/fetch/anac.js.map +1 -1
- package/out/jp/adapters/wof-admin/adapter.d.ts.map +1 -1
- package/out/jp/adapters/wof-admin/adapter.js.map +1 -1
- package/out/jp/tools/fetch/houjin.js +2 -2
- package/out/jp/tools/fetch/houjin.js.map +1 -1
- package/out/kr/adapters/localdata/permit-rows.js +1 -1
- package/out/kr/adapters/localdata/permit-rows.js.map +1 -1
- package/out/kr/tools/fetch/juso.d.ts +1 -1
- package/out/kr/tools/fetch/localdata.d.ts +1 -1
- package/out/kr/tools/fetch/localdata.js +1 -1
- package/out/kr/tools/fetch/localdata.js.map +1 -1
- package/out/lu/adapters/bd-adresses/adapter.d.ts +9 -9
- package/out/lu/adapters/bd-adresses/adapter.js +10 -10
- package/out/lu/tools/fetch/bd-adresses.d.ts +11 -9
- package/out/lu/tools/fetch/bd-adresses.d.ts.map +1 -1
- package/out/lu/tools/fetch/bd-adresses.js +11 -11
- package/out/lu/tools/fetch/bd-adresses.js.map +1 -1
- package/out/lv/adapters/varis/adapter.d.ts +24 -23
- package/out/lv/adapters/varis/adapter.d.ts.map +1 -1
- package/out/lv/adapters/varis/adapter.js +24 -23
- package/out/lv/adapters/varis/adapter.js.map +1 -1
- package/out/lv/tools/fetch/varis.d.ts +2 -1
- package/out/lv/tools/fetch/varis.d.ts.map +1 -1
- package/out/lv/tools/fetch/varis.js +1 -1
- package/out/lv/tools/fetch/varis.js.map +1 -1
- package/out/nl/adapters/kadaster/adapter.d.ts +12 -12
- package/out/nl/adapters/kadaster/adapter.d.ts.map +1 -1
- package/out/nl/adapters/kadaster/adapter.js +22 -23
- package/out/nl/adapters/kadaster/adapter.js.map +1 -1
- package/out/nl/tools/fetch/kadaster.d.ts +14 -10
- package/out/nl/tools/fetch/kadaster.d.ts.map +1 -1
- package/out/nl/tools/fetch/kadaster.js +12 -9
- package/out/nl/tools/fetch/kadaster.js.map +1 -1
- package/out/no/adapters/matrikkelen/adapter.d.ts +1 -1
- package/out/no/adapters/matrikkelen/adapter.d.ts.map +1 -1
- package/out/no/adapters/matrikkelen/adapter.js +3 -3
- package/out/no/adapters/matrikkelen/adapter.js.map +1 -1
- package/out/no/tools/fetch/matrikkelen.d.ts +50 -38
- package/out/no/tools/fetch/matrikkelen.d.ts.map +1 -1
- package/out/no/tools/fetch/matrikkelen.js +44 -36
- package/out/no/tools/fetch/matrikkelen.js.map +1 -1
- package/out/parquet/duckdb.d.ts +7 -4
- package/out/parquet/duckdb.d.ts.map +1 -1
- package/out/parquet/duckdb.js +2 -1
- package/out/parquet/duckdb.js.map +1 -1
- package/out/parquet/readers.js +3 -3
- package/out/parquet/readers.js.map +1 -1
- package/out/parquet/schema.js +1 -1
- package/out/parquet/schema.js.map +1 -1
- package/out/parquet/writers.d.ts +1 -1
- package/out/parquet/writers.d.ts.map +1 -1
- package/out/parquet/writers.js +2 -1
- package/out/parquet/writers.js.map +1 -1
- package/out/pl/adapters/emuia/adapter.d.ts +8 -8
- package/out/pl/adapters/emuia/adapter.js +12 -12
- package/out/pl/adapters/emuia/adapter.js.map +1 -1
- package/out/pl/tools/fetch/emuia.d.ts +5 -4
- package/out/pl/tools/fetch/emuia.d.ts.map +1 -1
- package/out/pl/tools/fetch/emuia.js +10 -9
- package/out/pl/tools/fetch/emuia.js.map +1 -1
- package/out/recipes/bare/postcode.js +1 -1
- package/out/recipes/bare/postcode.js.map +1 -1
- package/out/recipes/boundary-stress.js +1 -1
- package/out/recipes/boundary-stress.js.map +1 -1
- package/out/recipes/house-venue.d.ts.map +1 -1
- package/out/recipes/house-venue.js +6 -3
- package/out/recipes/house-venue.js.map +1 -1
- package/out/recipes/intersection.js +2 -2
- package/out/recipes/intersection.js.map +1 -1
- package/out/recipes/po/box/cedex/recipe.js +2 -1
- package/out/recipes/po/box/cedex/recipe.js.map +1 -1
- package/out/recipes/po/box/cedex/sources.d.ts +8 -2
- package/out/recipes/po/box/cedex/sources.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/sources.js +1 -1
- package/out/recipes/po/box/cedex/sources.js.map +1 -1
- package/out/recipes/scaffold.d.ts +28 -19
- package/out/recipes/scaffold.d.ts.map +1 -1
- package/out/recipes/scaffold.js +3 -2
- package/out/recipes/scaffold.js.map +1 -1
- package/out/recipes/sources.d.ts +1 -1
- package/out/recipes/sources.d.ts.map +1 -1
- package/out/recipes/sources.js +15 -2
- package/out/recipes/sources.js.map +1 -1
- package/out/recipes/street/bare.js +2 -2
- package/out/recipes/street/bare.js.map +1 -1
- package/out/recipes/street.d.ts.map +1 -1
- package/out/recipes/street.js +3 -1
- package/out/recipes/street.js.map +1 -1
- package/out/recipes/sub/venue/context.d.ts.map +1 -1
- package/out/recipes/sub/venue/context.js +2 -0
- package/out/recipes/sub/venue/context.js.map +1 -1
- package/out/recipes/sub/venue/render.js +1 -1
- package/out/recipes/sub/venue/render.js.map +1 -1
- package/out/recipes/sub/venue/sources.d.ts +6 -3
- package/out/recipes/sub/venue/sources.d.ts.map +1 -1
- package/out/recipes/sub/venue/sources.js +16 -20
- package/out/recipes/sub/venue/sources.js.map +1 -1
- package/out/recipes/sub/venue.d.ts +2 -5
- package/out/recipes/sub/venue.d.ts.map +1 -1
- package/out/recipes/sub/venue.js +10 -14
- package/out/recipes/sub/venue.js.map +1 -1
- package/out/recipes/trailing-region.d.ts.map +1 -1
- package/out/recipes/trailing-region.js +6 -1
- package/out/recipes/trailing-region.js.map +1 -1
- package/out/recipes/unit.js +2 -2
- package/out/recipes/unit.js.map +1 -1
- package/out/recipes/venue.d.ts +119 -0
- package/out/recipes/venue.d.ts.map +1 -0
- package/out/recipes/venue.js +245 -0
- package/out/recipes/venue.js.map +1 -0
- package/out/recipes.d.ts +1 -1
- package/out/recipes.d.ts.map +1 -1
- package/out/recipes.js +3 -1
- package/out/recipes.js.map +1 -1
- package/out/registers.d.ts +8 -6
- package/out/registers.d.ts.map +1 -1
- package/out/registers.js +8 -6
- package/out/registers.js.map +1 -1
- package/out/ro/adapters/retea-scolara/adapter.d.ts +5 -5
- package/out/ro/adapters/retea-scolara/adapter.js +5 -5
- package/out/ro/tools/fetch/retea-scolara.js +1 -1
- package/out/ro/tools/fetch/retea-scolara.js.map +1 -1
- package/out/runner.d.ts +3 -2
- package/out/runner.d.ts.map +1 -1
- package/out/runner.js +1 -1
- package/out/runner.js.map +1 -1
- package/out/sg/recipes/register.js +1 -1
- package/out/sg/recipes/register.js.map +1 -1
- package/out/sg/tools/fetch/acra.js +2 -2
- package/out/sg/tools/fetch/acra.js.map +1 -1
- package/out/sk/adapters/inspire/adapter.d.ts +5 -5
- package/out/sk/adapters/inspire/adapter.d.ts.map +1 -1
- package/out/sk/adapters/inspire/adapter.js +18 -18
- package/out/sk/adapters/inspire/adapter.js.map +1 -1
- package/out/sk/tools/fetch/inspire.d.ts +11 -10
- package/out/sk/tools/fetch/inspire.d.ts.map +1 -1
- package/out/sk/tools/fetch/inspire.js +15 -14
- package/out/sk/tools/fetch/inspire.js.map +1 -1
- package/out/source-register/effective-manifest.js +3 -3
- package/out/source-register/effective-manifest.js.map +1 -1
- package/out/source-register/register.d.ts +2 -2
- package/out/source-register/register.d.ts.map +1 -1
- package/out/source-register/register.js +2 -2
- package/out/source-register/register.js.map +1 -1
- package/out/source-register/training-manifest.d.ts +1 -1
- package/out/source-register/types.d.ts +12 -13
- package/out/source-register/types.d.ts.map +1 -1
- package/out/source-register/types.js +2 -2
- package/out/source-register/types.js.map +1 -1
- package/out/subvenue/promotions.d.ts +1 -1
- package/out/subvenue/promotions.js +1 -1
- package/out/subvenue/table.d.ts +4 -4
- package/out/subvenue/table.js +3 -3
- package/out/surfaces/locale.d.ts.map +1 -1
- package/out/surfaces/locale.js +2 -0
- package/out/surfaces/locale.js.map +1 -1
- package/out/synthesizers/anchor-absorption.d.ts +2 -1
- package/out/synthesizers/anchor-absorption.d.ts.map +1 -1
- package/out/synthesizers/anchor-absorption.js.map +1 -1
- package/out/synthesizers/boundary-stress.d.ts +1 -1
- package/out/synthesizers/boundary-stress.d.ts.map +1 -1
- package/out/synthesizers/boundary-stress.js +20 -23
- package/out/synthesizers/boundary-stress.js.map +1 -1
- package/out/synthesizers/house-venue.d.ts +3 -2
- package/out/synthesizers/house-venue.d.ts.map +1 -1
- package/out/synthesizers/house-venue.js +24 -26
- package/out/synthesizers/house-venue.js.map +1 -1
- package/out/synthesizers/no-street.d.ts.map +1 -1
- package/out/synthesizers/no-street.js.map +1 -1
- package/out/synthesizers/po-box.d.ts +4 -2
- package/out/synthesizers/po-box.d.ts.map +1 -1
- package/out/synthesizers/po-box.js.map +1 -1
- package/out/synthesizers/tail.d.ts +36 -0
- package/out/synthesizers/tail.d.ts.map +1 -0
- package/out/synthesizers/tail.js +32 -0
- package/out/synthesizers/tail.js.map +1 -0
- package/out/synthesizers/utils.d.ts +2 -1
- package/out/synthesizers/utils.d.ts.map +1 -1
- package/out/synthesizers/utils.js +17 -1
- package/out/synthesizers/utils.js.map +1 -1
- package/out/test-kit.js +2 -2
- package/out/test-kit.js.map +1 -1
- package/out/tools/audit.d.ts +2 -1
- package/out/tools/audit.d.ts.map +1 -1
- package/out/tools/audit.js +4 -3
- package/out/tools/audit.js.map +1 -1
- package/out/tools/corpus-stats.js +1 -1
- package/out/tools/corpus-stats.js.map +1 -1
- package/out/tools/fetch/atom.d.ts +8 -8
- package/out/tools/fetch/atom.d.ts.map +1 -1
- package/out/tools/fetch/atom.js +7 -8
- package/out/tools/fetch/atom.js.map +1 -1
- package/out/tools/fetch/cordis.d.ts +4 -3
- package/out/tools/fetch/cordis.d.ts.map +1 -1
- package/out/tools/fetch/cordis.js +9 -7
- package/out/tools/fetch/cordis.js.map +1 -1
- package/out/tools/fetch/download/manifest.d.ts.map +1 -1
- package/out/tools/fetch/download/manifest.js +2 -1
- package/out/tools/fetch/download/manifest.js.map +1 -1
- package/out/tools/fetch/download/network.d.ts +4 -4
- package/out/tools/fetch/download/retry.js +4 -4
- package/out/tools/fetch/download/retry.js.map +1 -1
- package/out/tools/fetch/geonames/dump.d.ts +3 -2
- package/out/tools/fetch/geonames/dump.d.ts.map +1 -1
- package/out/tools/fetch/geonames/dump.js +2 -1
- package/out/tools/fetch/geonames/dump.js.map +1 -1
- package/out/tools/fetch/geonames/postal.d.ts +2 -2
- package/out/tools/fetch/gleif.d.ts +3 -2
- package/out/tools/fetch/gleif.d.ts.map +1 -1
- package/out/tools/fetch/gleif.js +6 -4
- package/out/tools/fetch/gleif.js.map +1 -1
- package/out/tools/fetch/header.d.ts +7 -5
- package/out/tools/fetch/header.d.ts.map +1 -1
- package/out/tools/fetch/header.js +8 -6
- package/out/tools/fetch/header.js.map +1 -1
- package/out/tools/fetch/inspire-addresses.d.ts +32 -27
- package/out/tools/fetch/inspire-addresses.d.ts.map +1 -1
- package/out/tools/fetch/inspire-addresses.js +25 -24
- package/out/tools/fetch/inspire-addresses.js.map +1 -1
- package/out/tools/fetch/openaddresses.js +1 -1
- package/out/tools/fetch/openaddresses.js.map +1 -1
- package/out/tools/fetch/vlaanderen-ad.d.ts +5 -5
- package/out/tools/fetch/vlaanderen-ad.d.ts.map +1 -1
- package/out/tools/fetch/vlaanderen-ad.js +16 -16
- package/out/tools/fetch/vlaanderen-ad.js.map +1 -1
- package/out/tools/fetch/wfs-harvest.d.ts +26 -16
- package/out/tools/fetch/wfs-harvest.d.ts.map +1 -1
- package/out/tools/fetch/wfs-harvest.js +21 -18
- package/out/tools/fetch/wfs-harvest.js.map +1 -1
- package/out/tools/fetch.d.ts +0 -41
- package/out/tools/fetch.d.ts.map +1 -1
- package/out/tools/fetch.js +0 -41
- package/out/tools/fetch.js.map +1 -1
- package/out/tools/golden/expand.d.ts +7 -7
- package/out/tools/golden/expand.js +1 -1
- package/out/tools/golden/expand.js.map +1 -1
- package/out/tools/golden/promote.d.ts +2 -2
- package/out/tools/golden/promote.d.ts.map +1 -1
- package/out/tools/golden/promote.js +9 -6
- package/out/tools/golden/promote.js.map +1 -1
- package/out/tools/golden/relabel-street/directory.d.ts +4 -4
- package/out/tools/golden/relabel-street/directory.d.ts.map +1 -1
- package/out/tools/golden/relabel-street/directory.js +3 -2
- package/out/tools/golden/relabel-street/directory.js.map +1 -1
- package/out/tools/golden/relabel-street/row.d.ts +4 -3
- package/out/tools/golden/relabel-street/row.d.ts.map +1 -1
- package/out/tools/golden/relabel-street/row.js +3 -3
- package/out/tools/golden/relabel-street/row.js.map +1 -1
- package/out/tools/ingest-csv.js +3 -3
- package/out/tools/ingest-csv.js.map +1 -1
- package/out/tools/jsonl-to-parquet.d.ts +1 -1
- package/out/tools/lint/recipe-output/vocab.d.ts +10 -5
- package/out/tools/lint/recipe-output/vocab.d.ts.map +1 -1
- package/out/tools/lint/recipe-output/vocab.js.map +1 -1
- package/out/tools/lint/recipe-output.d.ts +8 -8
- package/out/tools/lint/recipe-output.d.ts.map +1 -1
- package/out/tools/lint/recipe-output.js +17 -0
- package/out/tools/lint/recipe-output.js.map +1 -1
- package/out/tools/overlay/kryptonite.d.ts +2 -2
- package/out/tools/overlay/kryptonite.d.ts.map +1 -1
- package/out/tools/overlay/kryptonite.js +2 -1
- package/out/tools/overlay/kryptonite.js.map +1 -1
- package/out/tools/overlay/manifest.d.ts +2 -1
- package/out/tools/overlay/manifest.d.ts.map +1 -1
- package/out/tools/overlay/manifest.js +2 -1
- package/out/tools/overlay/manifest.js.map +1 -1
- package/out/tools/overlay/merge-source.d.ts +2 -1
- package/out/tools/overlay/merge-source.d.ts.map +1 -1
- package/out/tools/overlay/merge-source.js.map +1 -1
- package/out/tools/overlay/split-slice.d.ts +1 -1
- package/out/tools/overlay/split-slice.js +1 -1
- package/out/tools/overlay/split-slice.js.map +1 -1
- package/out/tools/overlay/translit.d.ts +4 -3
- package/out/tools/overlay/translit.d.ts.map +1 -1
- package/out/tools/overlay/translit.js +2 -1
- package/out/tools/overlay/translit.js.map +1 -1
- package/out/tools/overture-subvenue.d.ts +1 -1
- package/out/tools/overture-subvenue.d.ts.map +1 -1
- package/out/tools/postcode-triples.d.ts +1 -1
- package/out/tools/postcode-triples.d.ts.map +1 -1
- package/out/tools/postcode-triples.js +4 -3
- package/out/tools/postcode-triples.js.map +1 -1
- package/out/tools/source-register/build.d.ts +10 -8
- package/out/tools/source-register/build.d.ts.map +1 -1
- package/out/tools/source-register/build.js +10 -8
- package/out/tools/source-register/build.js.map +1 -1
- package/out/tools/sub/venue/lexicon.d.ts +2 -6
- package/out/tools/sub/venue/lexicon.d.ts.map +1 -1
- package/out/tools/sub/venue/lexicon.js +2 -6
- package/out/tools/sub/venue/lexicon.js.map +1 -1
- package/out/tw/tools/fetch/gcis.js +3 -3
- package/out/tw/tools/fetch/gcis.js.map +1 -1
- package/out/types.d.ts +4 -3
- package/out/types.d.ts.map +1 -1
- package/out/types.js.map +1 -1
- package/out/us/adapters/state/hi-schools/workbook.d.ts +1 -1
- package/out/us/adapters/state/hi-schools/workbook.d.ts.map +1 -1
- package/out/us/adapters/state/hi-schools/workbook.js.map +1 -1
- package/out/us/adapters/usgov/nad/adapter.js +6 -6
- package/out/us/adapters/usgov/nad/adapter.js.map +1 -1
- package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.js +2 -2
- package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.js.map +1 -1
- package/out/us/fips-state.d.ts +2 -2
- package/out/us/fips-state.d.ts.map +1 -1
- package/out/us/fips-state.js.map +1 -1
- package/out/us/synthesizers/intersection.d.ts.map +1 -0
- package/out/{synthesizers → us/synthesizers}/intersection.js +13 -9
- package/out/us/synthesizers/intersection.js.map +1 -0
- package/out/{synthesizers → us/synthesizers}/street.d.ts +3 -2
- package/out/us/synthesizers/street.d.ts.map +1 -0
- package/out/{synthesizers → us/synthesizers}/street.js +12 -12
- package/out/us/synthesizers/street.js.map +1 -0
- package/out/us/tools/fetch/imls-pls.js +1 -1
- package/out/us/tools/fetch/imls-pls.js.map +1 -1
- package/out/us/tools/fetch/nad.d.ts +6 -6
- package/out/us/tools/fetch/nad.js +1 -1
- package/out/us/tools/fetch/nad.js.map +1 -1
- package/out/us/tools/fetch/nppes.js +3 -3
- package/out/us/tools/fetch/nppes.js.map +1 -1
- package/out/us/tools/fetch/state/hi-schools.d.ts +2 -1
- package/out/us/tools/fetch/state/hi-schools.d.ts.map +1 -1
- package/out/us/tools/fetch/state/hi-schools.js +1 -1
- package/out/us/tools/fetch/state/hi-schools.js.map +1 -1
- package/out/us/tools/fetch/tiger-full.js +1 -1
- package/out/us/tools/fetch/tiger-full.js.map +1 -1
- package/out/utils/align.d.ts +5 -3
- package/out/utils/align.d.ts.map +1 -1
- package/out/utils/align.js +5 -5
- package/out/utils/align.js.map +1 -1
- package/out/utils/golden.js +2 -2
- package/out/utils/golden.js.map +1 -1
- package/out/utils/license.d.ts +3 -3
- package/out/utils/license.d.ts.map +1 -1
- package/out/utils/license.js.map +1 -1
- package/out/utils/split.d.ts +1 -1
- package/out/utils/split.d.ts.map +1 -1
- package/out/utils/split.js +18 -14
- package/out/utils/split.js.map +1 -1
- package/out/utils/tokenize.d.ts +3 -20
- package/out/utils/tokenize.d.ts.map +1 -1
- package/out/utils/tokenize.js.map +1 -1
- package/out/utils/wof-json.js +3 -3
- package/out/utils/wof-json.js.map +1 -1
- package/package.json +18 -27
- package/lib/tools.ts +0 -31
- package/out/synthesizers/intersection.d.ts.map +0 -1
- package/out/synthesizers/intersection.js.map +0 -1
- package/out/synthesizers/street.d.ts.map +0 -1
- package/out/synthesizers/street.js.map +0 -1
- package/out/tools.d.ts +0 -31
- package/out/tools.d.ts.map +0 -1
- package/out/tools.js +0 -31
- package/out/tools.js.map +0 -1
- /package/out/{synthesizers → us/synthesizers}/intersection.d.ts +0 -0
|
@@ -166,15 +166,15 @@ export const BRUSSELS_COUNTRIES: readonly string[] = ["BE"]
|
|
|
166
166
|
* The license label recorded on every row.
|
|
167
167
|
*
|
|
168
168
|
* The register's source `be-property-building-3` elects `CC-BY-4.0` for Paradigm, read from
|
|
169
|
-
* the `gmd:useConstraints` of ISO 19139 record `260abd6f-c5b4-4a79-aa80-d6c265002d65
|
|
170
|
-
*
|
|
171
|
-
*
|
|
172
|
-
* the BeSt Brussels register, which is CC0-1.0.
|
|
169
|
+
* the `gmd:useConstraints` of ISO 19139 record `260abd6f-c5b4-4a79-aa80-d6c265002d65`.
|
|
170
|
+
* That record lists `URBIS_ADM_Adresses.zip` among its distributions and governs this archive
|
|
171
|
+
* rather than Paradigm's other address product, the BeSt Brussels register, licensed CC0-1.0.
|
|
173
172
|
*
|
|
174
173
|
* The value is the SPDX identifier rather than the license's title, because
|
|
175
174
|
* `licenseVerdict` resolves an identifier and reads a title as unrecognized.
|
|
176
|
-
*
|
|
177
|
-
*
|
|
175
|
+
* The constant must not hold a placeholder such as `unreviewed-be-brussels-urbis`.
|
|
176
|
+
*
|
|
177
|
+
* That value resolves to no expression, so these rows would reach a build as unknown obligations.
|
|
178
178
|
*/
|
|
179
179
|
export const BRUSSELS_DEFAULT_LICENSE = "CC-BY-4.0"
|
|
180
180
|
|
|
@@ -246,21 +246,21 @@ const NIS_CODED_NAME = /^(\d+)\s*\((.*)\)$/u
|
|
|
246
246
|
* a prefix the publisher writes rather than parsing a name: a changed shape must reach a
|
|
247
247
|
* reader as the publisher's own value instead of as a guess at what the name inside might be.
|
|
248
248
|
*
|
|
249
|
-
* A value of that shape whose parentheses hold an empty string answers `
|
|
249
|
+
* A value of that shape whose parentheses hold an empty string answers `null`,
|
|
250
250
|
* so the caller refuses the row rather than writing a NIS code into a locality.
|
|
251
251
|
*
|
|
252
|
-
* @returns The name, or `
|
|
252
|
+
* @returns The name, or `null` for an absent value and for a code with an empty name.
|
|
253
253
|
*/
|
|
254
|
-
export function placeNameWithoutNISCode(value: string |
|
|
254
|
+
export function placeNameWithoutNISCode(value: string | null): string | null {
|
|
255
255
|
const trimmed = value?.trim()
|
|
256
256
|
|
|
257
|
-
if (!trimmed) return
|
|
257
|
+
if (!trimmed) return null
|
|
258
258
|
|
|
259
259
|
const coded = NIS_CODED_NAME.exec(trimmed)
|
|
260
260
|
|
|
261
261
|
if (!coded) return trimmed
|
|
262
262
|
|
|
263
|
-
return coded[2]!.trim() ||
|
|
263
|
+
return coded[2]!.trim() || null
|
|
264
264
|
}
|
|
265
265
|
|
|
266
266
|
/**
|
|
@@ -337,19 +337,19 @@ export async function readBrusselsComponents(
|
|
|
337
337
|
if (feature.name === "ad:ThoroughfareName") {
|
|
338
338
|
const street = thoroughfareName(feature)
|
|
339
339
|
|
|
340
|
-
if (street
|
|
340
|
+
if (street) {
|
|
341
341
|
streets.set(id, street)
|
|
342
342
|
}
|
|
343
343
|
} else if (feature.name === "ad:PostalDescriptor") {
|
|
344
344
|
const postcode = postalDescriptorCode(feature)
|
|
345
345
|
|
|
346
|
-
if (postcode
|
|
346
|
+
if (postcode) {
|
|
347
347
|
postcodes.set(id, postcode)
|
|
348
348
|
}
|
|
349
349
|
} else if (adminUnitLevel(feature) === MUNICIPALITY_LEVEL) {
|
|
350
350
|
const municipality = placeNameWithoutNISCode(placeName(feature))
|
|
351
351
|
|
|
352
|
-
if (municipality
|
|
352
|
+
if (municipality) {
|
|
353
353
|
municipalities.set(id, municipality)
|
|
354
354
|
}
|
|
355
355
|
}
|
|
@@ -451,10 +451,10 @@ export function createBrusselsAdapter(): CorpusAdapter {
|
|
|
451
451
|
if (opts.limit !== undefined && emitted >= opts.limit) break
|
|
452
452
|
|
|
453
453
|
// `designatorsByType` leaves out a designator the publisher marked void, so a void number
|
|
454
|
-
// and an absent one both read as
|
|
454
|
+
// and an absent one both read as null and `voidDesignatorTypes` separates them below.
|
|
455
455
|
const house = designator(designatorsByType(address), HOUSE_NUMBER_DESIGNATOR)
|
|
456
456
|
|
|
457
|
-
if (house
|
|
457
|
+
if (!house) {
|
|
458
458
|
// A void number is a value this run could not read and an absent one is
|
|
459
459
|
// a number the publisher states the address has none of.
|
|
460
460
|
// Neither is emitted, and the two are counted apart so a run reports which it met.
|
|
@@ -472,14 +472,14 @@ export function createBrusselsAdapter(): CorpusAdapter {
|
|
|
472
472
|
// exactly the nine addresses whose postal zone is empty.
|
|
473
473
|
const slots = componentHrefs(address)
|
|
474
474
|
|
|
475
|
-
let street: string |
|
|
476
|
-
let postcode: string |
|
|
477
|
-
let locality: string |
|
|
475
|
+
let street: string | null = null
|
|
476
|
+
let postcode: string | null = null
|
|
477
|
+
let locality: string | null = null
|
|
478
478
|
|
|
479
479
|
for (const href of slots) {
|
|
480
480
|
const key = componentJoinKey(href)
|
|
481
481
|
|
|
482
|
-
if (key
|
|
482
|
+
if (!key) continue
|
|
483
483
|
|
|
484
484
|
street = index.streets.get(key) ?? street
|
|
485
485
|
postcode = index.postcodes.get(key) ?? postcode
|
|
@@ -488,7 +488,7 @@ export function createBrusselsAdapter(): CorpusAdapter {
|
|
|
488
488
|
locality = index.municipalities.get(key) ?? locality
|
|
489
489
|
}
|
|
490
490
|
|
|
491
|
-
if (postcode
|
|
491
|
+
if (!postcode && slots.length < COMPONENTS_PER_ADDRESS) {
|
|
492
492
|
// The publisher wrote the postal-zone reference empty.
|
|
493
493
|
// The row is refused and reported rather than yielded with the postcode missing,
|
|
494
494
|
// because an unstated value is not an address without a postcode.
|
|
@@ -499,7 +499,7 @@ export function createBrusselsAdapter(): CorpusAdapter {
|
|
|
499
499
|
|
|
500
500
|
// A component the index cannot answer is a street, postcode or locality this run could not read.
|
|
501
501
|
// A row emitted without it would record an absence the publisher never stated.
|
|
502
|
-
if (street
|
|
502
|
+
if (!street || !postcode || !locality) {
|
|
503
503
|
refused.unjoined++
|
|
504
504
|
|
|
505
505
|
continue
|
|
@@ -10,24 +10,24 @@
|
|
|
10
10
|
* through their own services, so this adapter emits `BE` on every row it yields, and a Belgian build needs
|
|
11
11
|
* two more sources beside it.
|
|
12
12
|
*
|
|
13
|
-
* The schema-level reading is `#inspire/address
|
|
14
|
-
* publishers spell alike. This module holds only
|
|
15
|
-
* references need, the homonym discriminator its street names
|
|
16
|
-
* values
|
|
13
|
+
* The schema-level reading is `#inspire/address`. That module owns every part of an `ad:Address` the
|
|
14
|
+
* publishers spell alike. This module holds only Flanders' own additions: the `resourceId` rewrite
|
|
15
|
+
* its references need, the homonym discriminator appended to its street names, and the lost
|
|
16
|
+
* characters in its values.
|
|
17
17
|
*
|
|
18
18
|
* The adapter records `Modellicentie voor gratis hergebruik Vlaanderen` on every row, the terms the
|
|
19
19
|
* address-source register elects for `be-property-building-1` in `electedTerms`. Article 3 grants
|
|
20
20
|
* reproduction, adaptation and commercial exploitation for any lawful purpose. Article 4 makes
|
|
21
|
-
* attribution the only condition, in the form the licensor specifies, so the model card must
|
|
21
|
+
* attribution the only condition, in the form the licensor specifies, so the model card must state
|
|
22
22
|
* `Bron: Digitaal Vlaanderen`.
|
|
23
23
|
*
|
|
24
24
|
* The capabilities document's `ows:Fees` and `ows:AccessConstraints` state what calling the service
|
|
25
25
|
* costs and who may call it. They describe the service rather than licensing the data, so the
|
|
26
|
-
* license comes from the register and this adapter reads the capabilities for feature types
|
|
26
|
+
* license comes from the register and this adapter reads the capabilities only for feature types.
|
|
27
27
|
*
|
|
28
28
|
* ## Why the input is a harvest rather than the service
|
|
29
29
|
*
|
|
30
|
-
* An `ad:Address`
|
|
30
|
+
* An `ad:Address` states its house number inline and everything else by reference. Each address
|
|
31
31
|
* holds exactly four `ad:component/@xlink:href` values, measured over 1,000 addresses at six
|
|
32
32
|
* `startIndex` offsets with all four prefixes occurring 1,000 times each. The references are
|
|
33
33
|
* absolute URIs that resolve back into the same service under the `resourceId` rewrite that
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
* | `https://data.vlaanderen.be/id/gemeentenaam/44083` | `gemeentenaam_44083` | `ad:AdminUnitName` |
|
|
41
41
|
* | `http://vocab.belgif.be/auth/refnis1995/1000#id` | `refnis1995_1000` | `ad:AdminUnitName` |
|
|
42
42
|
*
|
|
43
|
-
*
|
|
43
|
+
* A per-address resolution would cost four requests per row against 4,563,062 addresses. The component
|
|
44
44
|
* types are small — 167,218 thoroughfare names, 1,190 postal descriptors, 609 administrative-unit
|
|
45
45
|
* names — so the harvest takes each component type whole and the adapter joins locally.
|
|
46
46
|
*
|
|
@@ -98,9 +98,10 @@ export const VLAANDEREN_ADAPTER_ID = "vlaanderen"
|
|
|
98
98
|
/**
|
|
99
99
|
* The terms the address-source register elects for `be-property-building-1`.
|
|
100
100
|
*
|
|
101
|
-
* The
|
|
102
|
-
* `unchecked-access-free-be-agentschap-digitaal-vlaanderen
|
|
103
|
-
* so `electedLicenseLabel` answers this string
|
|
101
|
+
* The register's `electedTerms` for license
|
|
102
|
+
* `unchecked-access-free-be-agentschap-digitaal-vlaanderen` states this value.
|
|
103
|
+
* That license has no `spdx`, so `electedLicenseLabel` answers this string
|
|
104
|
+
* and the share-alike prefix filter matches it.
|
|
104
105
|
*/
|
|
105
106
|
export const VLAANDEREN_DEFAULT_LICENSE = "Modellicentie voor gratis hergebruik Vlaanderen"
|
|
106
107
|
|
|
@@ -108,8 +109,9 @@ export const VLAANDEREN_DEFAULT_LICENSE = "Modellicentie voor gratis hergebruik
|
|
|
108
109
|
* The one jurisdiction this adapter emits.
|
|
109
110
|
*
|
|
110
111
|
* The service publishes the Flemish Region.
|
|
111
|
-
* ISO 3166-1 assigns that region no code of its own, so
|
|
112
|
-
*
|
|
112
|
+
* ISO 3166-1 assigns that region no code of its own, so the set holds one code.
|
|
113
|
+
*
|
|
114
|
+
* A caller that requests any other gets {@linkcode UnsupportedCountryError} rather than zero rows.
|
|
113
115
|
*/
|
|
114
116
|
export const VLAANDEREN_COUNTRIES: readonly string[] = ["BE"]
|
|
115
117
|
|
|
@@ -120,19 +122,19 @@ export const VLAANDEREN_COUNTRIES: readonly string[] = ["BE"]
|
|
|
120
122
|
* rather than by position.
|
|
121
123
|
* Flanders uses one type across 1,000 addresses sampled.
|
|
122
124
|
*
|
|
123
|
-
* Czechia and Brussels write `buildingIdentifier` and the Netherlands `addressNumber` for
|
|
124
|
-
*
|
|
125
|
+
* Czechia and Brussels write `buildingIdentifier` and the Netherlands `addressNumber` for the same part.
|
|
126
|
+
* `#inspire/address` therefore leaves the vocabulary to the caller.
|
|
125
127
|
*/
|
|
126
128
|
const HOUSE_NUMBER_DESIGNATOR = "addressIdentifierGeneral"
|
|
127
129
|
|
|
128
130
|
/**
|
|
129
|
-
* The `ad:level` of the administrative unit that
|
|
131
|
+
* The `ad:level` of the administrative unit that states the municipality name.
|
|
130
132
|
*
|
|
131
133
|
* An address references two `ad:AdminUnitName` features.
|
|
132
134
|
* `gemeentenaam_44083` is `5thOrder` and resolves to the municipality `Deinze`.
|
|
133
135
|
*
|
|
134
136
|
* `refnis1995_1000` is `1stOrder` and resolves to the country (`België`).
|
|
135
|
-
*
|
|
137
|
+
* A reader that takes whichever arrives first would write `België` into the `locality` of some rows.
|
|
136
138
|
*/
|
|
137
139
|
const MUNICIPALITY_LEVEL = "5thOrder"
|
|
138
140
|
|
|
@@ -146,8 +148,8 @@ const MUNICIPALITY_LEVEL = "5thOrder"
|
|
|
146
148
|
* for `straatnaam_138007`, with zero bytes above 0x7F in either body.
|
|
147
149
|
*
|
|
148
150
|
* Measured over 20,000 `ad:ThoroughfareName` values at twenty offsets,
|
|
149
|
-
* 1,657
|
|
150
|
-
* `ad:AdminUnitName`
|
|
151
|
+
* 1,657 have a `?` and 0 have any non-ASCII character.
|
|
152
|
+
* `ad:AdminUnitName` has 34 of 609 and `ad:PostalDescriptor` 161 of 1,189 — and `ad:AdminUnitName`
|
|
151
153
|
* also serves `België` intact, so the loss is per-value rather than a service-wide transcode.
|
|
152
154
|
*
|
|
153
155
|
* No address component is written with a question mark, so a value holding one
|
|
@@ -279,24 +281,19 @@ export function componentResourceID(href: string): string | null {
|
|
|
279
281
|
/**
|
|
280
282
|
* A Flemish street name read apart from the homonym discriminator that follows it.
|
|
281
283
|
*
|
|
282
|
-
* `gn:text` on an `ad:ThoroughfareName`
|
|
284
|
+
* `gn:text` on an `ad:ThoroughfareName` states more than the street name: the name,
|
|
283
285
|
* an underscore, and a discriminator that is usually empty.
|
|
284
|
-
* Over 20,000 values at twenty offsets, 19,979 end with `_` and the remaining
|
|
285
|
-
* discriminator after it
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
-
*
|
|
289
|
-
*
|
|
290
|
-
*
|
|
291
|
-
*
|
|
292
|
-
*
|
|
293
|
-
* The
|
|
294
|
-
*
|
|
295
|
-
* everything from the `_` onward is bookkeeping rather than name.
|
|
296
|
-
*
|
|
297
|
-
* So the split takes the last `_` and keeps the head.
|
|
298
|
-
* Stripping only a trailing `_` would leave `Rue de Cronwez_01` in a corpus,
|
|
299
|
-
* and keeping the whole value would leave `Acacialaan_`.
|
|
286
|
+
* Over 20,000 values at twenty offsets, 19,979 end with `_` and the remaining
|
|
287
|
+
* 21 have a discriminator after it.
|
|
288
|
+
*
|
|
289
|
+
* Exactly 21 values have an `_` somewhere other than the end.
|
|
290
|
+
* Those same 21 values hold the only discriminators, so the field has one separator at one position.
|
|
291
|
+
*
|
|
292
|
+
* The same streets read through `ad:AddressRepresentation/ad:thoroughfare` have no separator, 0 of 10,000.
|
|
293
|
+
* The publisher's own data therefore marks everything from the `_` onward as bookkeeping.
|
|
294
|
+
*
|
|
295
|
+
* The split takes the last `_` and keeps the head.
|
|
296
|
+
* That drops a trailing separator and any discriminator in one step.
|
|
300
297
|
*/
|
|
301
298
|
export interface SplitStreetName {
|
|
302
299
|
/**
|
|
@@ -312,10 +309,10 @@ export interface SplitStreetName {
|
|
|
312
309
|
/**
|
|
313
310
|
* Splits an `ad:ThoroughfareName` `gn:text` value into its {@link SplitStreetName}.
|
|
314
311
|
*
|
|
315
|
-
* @throws {@linkcode VlaanderenHarvestError} when the value
|
|
316
|
-
*
|
|
317
|
-
* That
|
|
318
|
-
* it would write a bookkeeping suffix into every row sharing the new shape.
|
|
312
|
+
* @throws {@linkcode VlaanderenHarvestError} when the value has no `_`.
|
|
313
|
+
* Every one of the 20,000 measured values had one.
|
|
314
|
+
* That would be a change in the publisher's field.
|
|
315
|
+
* A guess at it would write a bookkeeping suffix into every row sharing the new shape.
|
|
319
316
|
*/
|
|
320
317
|
export function splitStreetName(value: string): SplitStreetName {
|
|
321
318
|
const separator = value.lastIndexOf("_")
|
|
@@ -332,17 +329,17 @@ export function splitStreetName(value: string): SplitStreetName {
|
|
|
332
329
|
}
|
|
333
330
|
|
|
334
331
|
/**
|
|
335
|
-
* The house number an address states inline, or `
|
|
332
|
+
* The house number an address states inline, or `null` when it states none this adapter can use.
|
|
336
333
|
*
|
|
337
334
|
* `designatorsByType` skips a designator the publisher marked void, so a void number
|
|
338
|
-
* and an absent one both answer `
|
|
335
|
+
* and an absent one both answer `null` here.
|
|
339
336
|
* Both are refusals rather than addresses with no number, and the caller counts
|
|
340
337
|
* them together for that reason.
|
|
341
338
|
*
|
|
342
339
|
* `ad:designator` was present and populated on 1,000 of 1,000 addresses sampled,
|
|
343
340
|
* so neither condition has been seen on this service.
|
|
344
341
|
*/
|
|
345
|
-
export function houseNumberOf(address: MarkupElement): string |
|
|
342
|
+
export function houseNumberOf(address: MarkupElement): string | null {
|
|
346
343
|
return designator(designatorsByType(address), HOUSE_NUMBER_DESIGNATOR)
|
|
347
344
|
}
|
|
348
345
|
|
|
@@ -353,7 +350,7 @@ async function readComponentFiles<T>(
|
|
|
353
350
|
root: PathBuilder,
|
|
354
351
|
files: readonly string[],
|
|
355
352
|
typeName: string,
|
|
356
|
-
read: (feature: MarkupElement) => T |
|
|
353
|
+
read: (feature: MarkupElement) => T | null,
|
|
357
354
|
signal?: AbortSignal
|
|
358
355
|
): Promise<Map<string, T>> {
|
|
359
356
|
const index = new Map<string, T>()
|
|
@@ -374,7 +371,7 @@ async function readComponentFiles<T>(
|
|
|
374
371
|
|
|
375
372
|
const value = read(feature)
|
|
376
373
|
|
|
377
|
-
if (value !==
|
|
374
|
+
if (value !== null) {
|
|
378
375
|
index.set(id, value)
|
|
379
376
|
}
|
|
380
377
|
}
|
|
@@ -415,7 +412,7 @@ async function readComponentIndex(
|
|
|
415
412
|
root,
|
|
416
413
|
harvest.components.AdminUnitName,
|
|
417
414
|
"ad:AdminUnitName",
|
|
418
|
-
(feature) => (adminUnitLevel(feature) === MUNICIPALITY_LEVEL ? placeName(feature) :
|
|
415
|
+
(feature) => (adminUnitLevel(feature) === MUNICIPALITY_LEVEL ? placeName(feature) : null),
|
|
419
416
|
signal
|
|
420
417
|
)
|
|
421
418
|
|
|
@@ -539,21 +536,21 @@ export function createVlaanderenAdapter(): CorpusAdapter {
|
|
|
539
536
|
|
|
540
537
|
const house = houseNumberOf(address)
|
|
541
538
|
|
|
542
|
-
if (house
|
|
539
|
+
if (!house) {
|
|
543
540
|
refused.noHouseNumber++
|
|
544
541
|
|
|
545
542
|
continue
|
|
546
543
|
}
|
|
547
544
|
|
|
548
|
-
let street: string |
|
|
549
|
-
let postcode: string |
|
|
550
|
-
let locality: string |
|
|
545
|
+
let street: string | null = null
|
|
546
|
+
let postcode: string | null = null
|
|
547
|
+
let locality: string | null = null
|
|
551
548
|
let unreadable = false
|
|
552
549
|
|
|
553
550
|
for (const href of componentHrefs(address)) {
|
|
554
551
|
const id = componentResourceID(href)
|
|
555
552
|
|
|
556
|
-
if (id
|
|
553
|
+
if (!id) {
|
|
557
554
|
unreadable = true
|
|
558
555
|
|
|
559
556
|
break
|
|
@@ -561,7 +558,7 @@ export function createVlaanderenAdapter(): CorpusAdapter {
|
|
|
561
558
|
|
|
562
559
|
const streetValue = index.streets.get(id)
|
|
563
560
|
|
|
564
|
-
if (streetValue
|
|
561
|
+
if (streetValue) {
|
|
565
562
|
street = streetValue
|
|
566
563
|
|
|
567
564
|
continue
|
|
@@ -569,7 +566,7 @@ export function createVlaanderenAdapter(): CorpusAdapter {
|
|
|
569
566
|
|
|
570
567
|
const postcodeValue = index.postcodes.get(id)
|
|
571
568
|
|
|
572
|
-
if (postcodeValue
|
|
569
|
+
if (postcodeValue) {
|
|
573
570
|
postcode = postcodeValue
|
|
574
571
|
|
|
575
572
|
continue
|
|
@@ -582,8 +579,8 @@ export function createVlaanderenAdapter(): CorpusAdapter {
|
|
|
582
579
|
|
|
583
580
|
// A reference the harvest cannot answer is a street, postcode
|
|
584
581
|
// or locality this run could not read.
|
|
585
|
-
//
|
|
586
|
-
if (unreadable || street
|
|
582
|
+
// A row emitted without it would record an absence the publisher never stated.
|
|
583
|
+
if (unreadable || !street || !postcode || !locality) {
|
|
587
584
|
refused.unjoined++
|
|
588
585
|
|
|
589
586
|
continue
|
|
@@ -637,8 +634,8 @@ export function createVlaanderenAdapter(): CorpusAdapter {
|
|
|
637
634
|
}
|
|
638
635
|
|
|
639
636
|
// A short page is a page this run could not read whole.
|
|
640
|
-
//
|
|
641
|
-
//
|
|
637
|
+
// A smaller-page read would drop its tail silently, and a harvest of
|
|
638
|
+
// 457 pages hides one missing tail.
|
|
642
639
|
const bounded = opts.limit !== undefined || Boolean(opts.signal?.aborted)
|
|
643
640
|
|
|
644
641
|
if (!bounded && seen !== page.numberReturned) {
|
|
@@ -78,8 +78,8 @@
|
|
|
78
78
|
* and states what identifies it: the SPW's ICAR presentation to the Club des utilisateurs du PICC
|
|
79
79
|
* (27 February 2015) lists the communes' validation of sub-addresses identified by their
|
|
80
80
|
* `numéro de boîte`, the box number, and its ICAR address form records each sub-address's `Numéro` apart from the `Index`
|
|
81
|
-
* field. A box number identifies one delivery point inside the numbered premise
|
|
82
|
-
* concept the `unit` tag
|
|
81
|
+
* field. A box number identifies one delivery point inside the numbered premise. That is the
|
|
82
|
+
* concept the `unit` tag records. It is not a floor, a building, an entrance or a staircase, even
|
|
83
83
|
* where a code such as `0RCH` (rez-de-chaussée) names the box after the floor it sits on.
|
|
84
84
|
*
|
|
85
85
|
* The value is rendered as the publisher writes it, with no designator word: `Rue de la Station 29
|
|
@@ -308,25 +308,25 @@ export async function readWallonieComponents(
|
|
|
308
308
|
if (feature.name === "ad:ThoroughfareName") {
|
|
309
309
|
const street = thoroughfareName(feature)
|
|
310
310
|
|
|
311
|
-
if (street
|
|
311
|
+
if (street) {
|
|
312
312
|
streets.set(id, street)
|
|
313
313
|
}
|
|
314
314
|
} else if (feature.name === "ad:PostalDescriptor") {
|
|
315
315
|
const postcode = postalDescriptorCode(feature)
|
|
316
316
|
|
|
317
|
-
if (postcode
|
|
317
|
+
if (postcode) {
|
|
318
318
|
postcodes.set(id, postcode)
|
|
319
319
|
}
|
|
320
320
|
} else if (feature.name === "ad:AddressAreaName") {
|
|
321
321
|
const area = placeName(feature)
|
|
322
322
|
|
|
323
|
-
if (area
|
|
323
|
+
if (area) {
|
|
324
324
|
areas.set(id, area)
|
|
325
325
|
}
|
|
326
326
|
} else if (adminUnitLevel(feature) === MUNICIPALITY_LEVEL) {
|
|
327
327
|
const municipality = placeName(feature)
|
|
328
328
|
|
|
329
|
-
if (municipality
|
|
329
|
+
if (municipality) {
|
|
330
330
|
municipalities.set(id, municipality)
|
|
331
331
|
}
|
|
332
332
|
}
|
|
@@ -413,11 +413,11 @@ export function createWallonieAdapter(): CorpusAdapter {
|
|
|
413
413
|
if (opts.limit !== undefined && emitted >= opts.limit) break
|
|
414
414
|
|
|
415
415
|
// `designatorsByType` leaves out a designator the publisher marked void, so a void number
|
|
416
|
-
// and an absent one both read as
|
|
416
|
+
// and an absent one both read as null and `voidDesignatorTypes` separates them below.
|
|
417
417
|
const byType = designatorsByType(address)
|
|
418
418
|
const house = designator(byType, HOUSE_NUMBER_DESIGNATOR)
|
|
419
419
|
|
|
420
|
-
if (house
|
|
420
|
+
if (!house) {
|
|
421
421
|
// A void number is a value this run could not read and an absent one is
|
|
422
422
|
// a number the publisher states the address has none of.
|
|
423
423
|
// Neither is emitted, and the two are counted apart so a run reports which it met.
|
|
@@ -432,19 +432,19 @@ export function createWallonieAdapter(): CorpusAdapter {
|
|
|
432
432
|
|
|
433
433
|
const box = designator(byType, NUMBER_EXTENSION_DESIGNATOR)
|
|
434
434
|
|
|
435
|
-
if (box
|
|
435
|
+
if (box) {
|
|
436
436
|
extensions++
|
|
437
437
|
}
|
|
438
438
|
|
|
439
|
-
let street: string |
|
|
440
|
-
let postcode: string |
|
|
441
|
-
let locality: string |
|
|
442
|
-
let area: string |
|
|
439
|
+
let street: string | null = null
|
|
440
|
+
let postcode: string | null = null
|
|
441
|
+
let locality: string | null = null
|
|
442
|
+
let area: string | null = null
|
|
443
443
|
|
|
444
444
|
for (const href of componentHrefs(address)) {
|
|
445
445
|
const key = componentJoinKey(href)
|
|
446
446
|
|
|
447
|
-
if (key
|
|
447
|
+
if (!key) continue
|
|
448
448
|
|
|
449
449
|
street = index.streets.get(key) ?? street
|
|
450
450
|
postcode = index.postcodes.get(key) ?? postcode
|
|
@@ -456,7 +456,7 @@ export function createWallonieAdapter(): CorpusAdapter {
|
|
|
456
456
|
|
|
457
457
|
// A component the index cannot answer is a street, postcode or locality this run could not read.
|
|
458
458
|
// A row emitted without it would record an absence the publisher never stated.
|
|
459
|
-
if (street
|
|
459
|
+
if (!street || !postcode || !locality) {
|
|
460
460
|
countDropped(tally, Refusal.Unjoined)
|
|
461
461
|
|
|
462
462
|
continue
|
|
@@ -469,14 +469,14 @@ export function createWallonieAdapter(): CorpusAdapter {
|
|
|
469
469
|
locality,
|
|
470
470
|
}
|
|
471
471
|
|
|
472
|
-
if (box
|
|
472
|
+
if (box) {
|
|
473
473
|
components.unit = box
|
|
474
474
|
}
|
|
475
475
|
|
|
476
476
|
// The `partie de commune` is a dependent locality only where it names
|
|
477
477
|
// something other than the municipality.
|
|
478
478
|
// `Braine-l'Alleud` has an area of the same name, and `Beauvechain` has `Hamme-Mille`.
|
|
479
|
-
if (area
|
|
479
|
+
if (area && area !== locality) {
|
|
480
480
|
components.dependent_locality = area
|
|
481
481
|
}
|
|
482
482
|
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
import { APIClient } from "@mailwoman/core/api"
|
|
31
31
|
import { ByteFormatter } from "@mailwoman/core/fs/formatters"
|
|
32
|
-
import { tryStat } from "@mailwoman/core/fs/readers"
|
|
32
|
+
import { tryStat } from "@mailwoman/core/fs/readers/stat"
|
|
33
33
|
import { makeDirectories } from "@mailwoman/core/fs/writers"
|
|
34
34
|
import { sha256File } from "@mailwoman/core/hash"
|
|
35
35
|
import { PathBuilder, type PathBuilderLike } from "path-ts"
|
|
@@ -39,12 +39,13 @@ import type { BaseFetchOptions, FetchSummary, SourceManifest } from "#tools/fetc
|
|
|
39
39
|
import { downloadToFile, readManifest, writeManifest } from "#tools/fetch/download"
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
|
-
* The archive's URL,
|
|
42
|
+
* The archive's URL, the whole acquisition path for this theme.
|
|
43
43
|
*/
|
|
44
44
|
export const BE_BRUSSELS_ARCHIVE_URL = "https://urbisdownload.datastore.brussels/INSPIRE/URBIS_ADM_Adresses.zip"
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
|
-
* The name the archive is written under
|
|
47
|
+
* The name the archive is written under.
|
|
48
|
+
* The adapter's `inputPath` states this name.
|
|
48
49
|
*/
|
|
49
50
|
export const BE_BRUSSELS_ARCHIVE_FILENAME = "URBIS_ADM_Adresses.zip"
|
|
50
51
|
|
|
@@ -86,8 +87,9 @@ export interface DownloadBrusselsOptions {
|
|
|
86
87
|
* What the publisher's HEAD response states about the archive it holds.
|
|
87
88
|
*
|
|
88
89
|
* Both fields read `null` where the header is absent, rather than an empty string or zero.
|
|
89
|
-
* An absent `last-modified` is the service declining to state a version
|
|
90
|
-
*
|
|
90
|
+
* An absent `last-modified` is the service declining to state a version.
|
|
91
|
+
*
|
|
92
|
+
* That differs from a version that happens to match the one on disk.
|
|
91
93
|
*/
|
|
92
94
|
export interface BrusselsPublication {
|
|
93
95
|
lastModified: string | null
|
|
@@ -97,7 +99,7 @@ export interface BrusselsPublication {
|
|
|
97
99
|
/**
|
|
98
100
|
* Reads the publisher's HEAD response.
|
|
99
101
|
*
|
|
100
|
-
* Separate from {@linkcode downloadBrussels} because this one request
|
|
102
|
+
* Separate from {@linkcode downloadBrussels} because this one request holds the whole freshness
|
|
101
103
|
* decision, and the download itself runs on global `fetch`, which a unit test cannot intercept.
|
|
102
104
|
*/
|
|
103
105
|
export async function readBrusselsPublication(
|
|
@@ -123,16 +125,17 @@ export async function readBrusselsPublication(
|
|
|
123
125
|
* Whether the archive on disk is the one the publisher currently serves.
|
|
124
126
|
*
|
|
125
127
|
* A skip requires the publisher to state a `last-modified` value.
|
|
126
|
-
* Where it states none, both sides read `null` and an equality test would hold
|
|
127
|
-
*
|
|
128
|
-
*
|
|
128
|
+
* Where it states none, both sides read `null` and an equality test would hold.
|
|
129
|
+
*
|
|
130
|
+
* A skip there would keep an archive of unknown age for as long as the service stayed silent.
|
|
131
|
+
* A second 11 MiB download is the cheaper error.
|
|
129
132
|
*/
|
|
130
133
|
export function brusselsPublicationIsRecorded(
|
|
131
134
|
recorded: BrusselsManifest,
|
|
132
135
|
bytesOnDisk: number,
|
|
133
136
|
publication: BrusselsPublication
|
|
134
137
|
): boolean {
|
|
135
|
-
if (publication.lastModified
|
|
138
|
+
if (!publication.lastModified) return false
|
|
136
139
|
|
|
137
140
|
return recorded.last_modified === publication.lastModified && recorded.bytes === bytesOnDisk
|
|
138
141
|
}
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
import { APIClient, assertNoOGCServiceException } from "@mailwoman/core/api"
|
|
29
29
|
import { ByteFormatter } from "@mailwoman/core/fs/formatters"
|
|
30
|
-
import { tryStat } from "@mailwoman/core/fs/readers"
|
|
30
|
+
import { tryStat } from "@mailwoman/core/fs/readers/stat"
|
|
31
31
|
import { makeDirectories } from "@mailwoman/core/fs/writers"
|
|
32
32
|
import { sha256File } from "@mailwoman/core/hash"
|
|
33
33
|
import { PathBuilder, type PathBuilderLike } from "path-ts"
|
|
@@ -38,12 +38,12 @@ import type { BaseFetchOptions, FetchSummary, SourceManifest } from "#tools/fetc
|
|
|
38
38
|
import { downloadToFile, readManifest, writeManifest } from "#tools/fetch/download"
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
|
-
* The ATOM service document
|
|
41
|
+
* The ATOM service document for the region's one dataset feed.
|
|
42
42
|
*/
|
|
43
43
|
export const BE_WALLONIE_SERVICE_URL = "https://geoservices.wallonie.be/inspire/atom/AD_Service.xml"
|
|
44
44
|
|
|
45
45
|
/**
|
|
46
|
-
* The
|
|
46
|
+
* The archive filename, the same one the adapter's `inputPath` states.
|
|
47
47
|
*/
|
|
48
48
|
export const BE_WALLONIE_ARCHIVE_FILENAME = "AD.Addresses.gml.zip"
|
|
49
49
|
|
|
@@ -58,8 +58,9 @@ const SLUG = WALLONIE_ADAPTER_ID
|
|
|
58
58
|
* What one run recorded.
|
|
59
59
|
*
|
|
60
60
|
* `feed_updated` is the dataset feed's own `<updated>`.
|
|
61
|
-
* A later run downloads again when that value changes
|
|
62
|
-
*
|
|
61
|
+
* A later run downloads again when that value changes.
|
|
62
|
+
*
|
|
63
|
+
* The INSPIRE pattern offers that field in place of an HTTP validator.
|
|
63
64
|
*/
|
|
64
65
|
export interface WallonieManifest extends SourceManifest {
|
|
65
66
|
service_url: string
|
|
@@ -93,7 +94,7 @@ export interface WallonieArchiveReference {
|
|
|
93
94
|
* The archive entry's own `<updated>`, or `null` where the feed states none.
|
|
94
95
|
*
|
|
95
96
|
* `updated` sits on an Atom entry rather than on the feed, so this reads the
|
|
96
|
-
* entry that
|
|
97
|
+
* entry that holds the archive link.
|
|
97
98
|
* Wallonia's feed reported `2025-12-11` when this reader was written.
|
|
98
99
|
*/
|
|
99
100
|
feedUpdated: string | null
|
|
@@ -196,7 +197,7 @@ export async function downloadWallonie(
|
|
|
196
197
|
const recorded = await readManifest<WallonieManifest>(manifestPath)
|
|
197
198
|
const stat = await tryStat(archivePath)
|
|
198
199
|
|
|
199
|
-
if (!options.force && recorded && stat && feedUpdated
|
|
200
|
+
if (!options.force && recorded && stat && feedUpdated && recorded.feed_updated === feedUpdated) {
|
|
200
201
|
report?.(` present, and the dataset feed reports the recorded updated ${feedUpdated}`)
|
|
201
202
|
|
|
202
203
|
return { fetched: 0, skipped: 1, failed: 0, failedCodes: [] }
|
package/lib/build/adapters.ts
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* previous build finished.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import { readLocalJSONFile } from "@mailwoman/core/fs/readers"
|
|
10
|
+
import { pathExists, statPath } from "@mailwoman/core/fs/readers/stat"
|
|
10
11
|
import type { PathBuilder } from "path-ts"
|
|
11
12
|
|
|
12
13
|
import type { BuildStage } from "#build/types"
|
package/lib/build/align.ts
CHANGED
|
@@ -78,8 +78,9 @@ export interface AlignPhaseResult {
|
|
|
78
78
|
/**
|
|
79
79
|
* Rows the license policy refused, counted per `source`.
|
|
80
80
|
*
|
|
81
|
-
* A source here contributed zero rows to the corpus whatever its adapter reported writing
|
|
82
|
-
* the distinction between a source present in corpus provenance
|
|
81
|
+
* A source here contributed zero rows to the corpus whatever its adapter reported writing.
|
|
82
|
+
* That is the distinction between a source present in corpus provenance
|
|
83
|
+
* and one present in model provenance.
|
|
83
84
|
*/
|
|
84
85
|
refusedBySource: Map<string, number>
|
|
85
86
|
excludedByLicense: number
|
|
@@ -256,8 +257,8 @@ export async function runAlignPhase(opts: AlignPhaseOptions): Promise<AlignPhase
|
|
|
256
257
|
|
|
257
258
|
// Counted per source as well as per refusal kind, because an adapter's own
|
|
258
259
|
// `written` count records what it emitted rather than what entered the corpus.
|
|
259
|
-
// A source refused here contributed no row, and model provenance generated from
|
|
260
|
-
// `adapters[].written`
|
|
260
|
+
// A source refused here contributed no row, and model provenance generated from model provenance
|
|
261
|
+
// generated from `adapters[].written` only would credit it with rows it did not supply.
|
|
261
262
|
result.refusedBySource.set(row.source, (result.refusedBySource.get(row.source) ?? 0) + 1)
|
|
262
263
|
|
|
263
264
|
continue
|