@mailwoman/corpus 10.0.0 → 10.1.0
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/README.md +120 -34
- package/data/PROVENANCE.md +623 -17
- package/data/address-source-register.json +14249 -0
- package/data/builds/v0.7.0-de-holdout/inputs.json +22 -0
- package/data/builds/v0.8.0-registers/inputs.json +92 -0
- package/data/license-decisions.json +1603 -0
- package/data/licenses/PROVENANCE.md +65 -0
- package/data/licenses/cdla-permissive-2.0.md +43 -0
- package/data/licenses/geonames-publication.md +34 -0
- package/data/licenses/licence-ouverte-2.0.md +36 -0
- package/data/licenses/national-address-database.md +46 -0
- package/data/licenses/nlod-2.0.md +90 -0
- package/data/licenses/sirene-publication.md +38 -0
- package/data/licenses/whosonfirst-licenses.md +65 -0
- package/data/source-resolutions.json +804 -0
- package/data/sub-venue-lexicon.json +1 -1
- package/data/training-manifests/v0.7.0-de-holdout.effective.json +477 -0
- package/data/training-manifests/v0.7.0-de-holdout.json +78 -0
- package/lib/adapters/cordis/adapter.ts +785 -0
- package/lib/adapters/dedup-key.ts +40 -0
- package/lib/adapters/errors.ts +21 -0
- package/lib/adapters/geonames/adapter.ts +42 -52
- package/lib/adapters/geonames/postal/adapter.ts +31 -37
- package/lib/adapters/gleif/adapter.ts +828 -0
- package/lib/adapters/libpostal-dictionary.ts +39 -0
- package/lib/adapters/openaddresses/adapter.ts +51 -55
- package/lib/adapters/osm/adapter.ts +148 -70
- package/lib/adapters/overture/adapter.ts +52 -43
- package/lib/adapters/po-box/adapter.ts +202 -0
- package/lib/adapters/registry.ts +79 -0
- package/lib/adapters/sha256-stream.ts +49 -0
- package/lib/adapters/source-id.ts +49 -0
- package/lib/adapters/street-line.ts +135 -0
- package/lib/adapters/wof/admin/json/adapter.ts +48 -33
- package/lib/adapters/wof/json-rows.ts +56 -26
- package/lib/adapters/wof/postalcode-json/adapter.ts +57 -59
- package/lib/adapters.ts +230 -0
- package/lib/au/adapters/gnaf/adapter.ts +35 -43
- package/lib/au/adapters/gnaf/assemble.ts +31 -51
- package/lib/be/adapters/brussels/adapter.ts +566 -0
- package/lib/be/adapters/vlaanderen/adapter.ts +670 -0
- package/lib/be/adapters/wallonie/adapter.ts +537 -0
- package/lib/be/tools/fetch/brussels.ts +239 -0
- package/lib/be/tools/fetch/wallonie.ts +274 -0
- package/lib/build/adapters.ts +110 -0
- package/lib/build/align.ts +364 -0
- package/lib/build/checkpoint.ts +131 -0
- package/lib/build/eligibility.ts +96 -0
- package/lib/build/heap.ts +53 -0
- package/lib/build/inputs.ts +81 -0
- package/lib/build/rows.ts +21 -0
- package/lib/build/types.ts +232 -0
- package/lib/build.ts +127 -315
- package/lib/cn/recipes/organizational-units.ts +20 -41
- package/lib/cz/adapters/cuzk/adapter.ts +317 -0
- package/lib/cz/recipes/pcfirst-preposition.ts +40 -27
- package/lib/cz/tools/fetch/cuzk.ts +699 -0
- package/lib/de/recipes/locale.ts +68 -58
- package/lib/directory.ts +31 -0
- package/lib/dk/adapters/inspire/adapter.ts +345 -0
- package/lib/dk/tools/fetch/inspire.ts +321 -0
- package/lib/ee/adapters/ads/adapter.ts +246 -0
- package/lib/ee/tools/fetch/ads.ts +270 -0
- package/lib/env.ts +6 -2
- package/lib/es/adapters/bizkaia/adapter.ts +388 -0
- package/lib/es/adapters/catastro/adapter.ts +343 -0
- package/lib/es/adapters/gipuzkoa/adapter.ts +263 -0
- package/lib/es/adapters/navarra/adapter.ts +289 -0
- package/lib/es/cadastre.ts +194 -0
- package/lib/es/tools/fetch/bizkaia.ts +748 -0
- package/lib/es/tools/fetch/catastro.ts +754 -0
- package/lib/es/tools/fetch/gipuzkoa.ts +336 -0
- package/lib/es/tools/fetch/navarra.ts +488 -0
- package/lib/fi/adapters/ryhti/adapter.ts +323 -0
- package/lib/fi/tools/fetch/ryhti.ts +476 -0
- package/lib/fingerprints.ts +154 -0
- package/lib/fr/adapters/annuaire-education/adapter.ts +598 -0
- package/lib/fr/adapters/ban/adapter.ts +87 -59
- package/lib/fr/adapters/finess/adapter.ts +618 -0
- package/lib/fr/adapters/finess/postal-lines.ts +157 -0
- package/lib/fr/adapters/finess/voie-type.ts +200 -0
- package/lib/fr/insee-country.ts +62 -0
- package/lib/fr/recipes/admin-split.ts +38 -60
- package/lib/fr/recipes/bare-street.ts +37 -50
- package/lib/fr/recipes/fragment.ts +59 -142
- package/lib/fr/recipes/lieudit.ts +109 -73
- package/lib/fr/recipes/order.ts +32 -59
- package/lib/fr/{adapters/ban/street-decompose.ts → street-decompose.ts} +4 -3
- package/lib/fr/tools/fetch/annuaire-education.ts +306 -0
- package/lib/fr/tools/fetch/ban.ts +28 -19
- package/lib/fr/tools/fetch/finess.ts +352 -0
- package/lib/gauntlet-inputs.ts +92 -0
- package/lib/index.ts +9 -3
- package/lib/inspire/address.ts +457 -0
- package/lib/inspire/archive.ts +44 -0
- package/lib/inspire/errors.ts +71 -0
- package/lib/inspire/stream.ts +262 -0
- package/lib/international/recipes/locale.ts +134 -176
- package/lib/it/adapters/anac/adapter.ts +522 -0
- package/lib/it/tools/fetch/anac.ts +394 -0
- package/lib/jp/adapters/wof-admin/adapter.ts +27 -17
- package/lib/jp/tools/fetch/houjin.ts +16 -18
- package/lib/kr/adapters/juso/label-rows.ts +24 -44
- package/lib/kr/adapters/localdata/align.ts +20 -31
- package/lib/kr/adapters/localdata/key-index.ts +17 -25
- package/lib/kr/adapters/localdata/permit-rows.ts +33 -26
- package/lib/kr/tools/fetch/juso.ts +19 -21
- package/lib/kr/tools/fetch/localdata.ts +28 -29
- package/lib/lu/adapters/bd-adresses/adapter.ts +240 -0
- package/lib/lu/tools/fetch/bd-adresses.ts +351 -0
- package/lib/lv/adapters/varis/adapter.ts +499 -0
- package/lib/lv/tools/fetch/varis.ts +214 -0
- package/lib/nl/adapters/kadaster/adapter.ts +386 -0
- package/lib/nl/recipes/postcode.ts +46 -24
- package/lib/nl/tools/fetch/kadaster.ts +298 -0
- package/lib/no/adapters/matrikkelen/adapter.ts +187 -0
- package/lib/no/recipes/fragment.ts +34 -58
- package/lib/no/recipes/street/led.ts +44 -25
- package/lib/no/recipes/{street/index.ts → street.ts} +29 -11
- package/lib/no/tools/fetch/matrikkelen.ts +519 -0
- package/lib/parquet/duckdb.ts +144 -0
- package/lib/parquet/readers.ts +86 -0
- package/lib/parquet/schema.ts +214 -0
- package/lib/parquet/shuffle.ts +59 -0
- package/lib/parquet/span-sql.ts +54 -0
- package/lib/parquet/streams.ts +113 -0
- package/lib/parquet/writers.ts +451 -0
- package/lib/pl/adapters/emuia/adapter.ts +202 -0
- package/lib/pl/tools/fetch/emuia.ts +360 -0
- package/lib/recipes/anchor-absorption.ts +30 -19
- package/lib/recipes/bare/country.ts +24 -32
- package/lib/recipes/bare/postcode/eval.ts +1 -1
- package/lib/recipes/bare/postcode.ts +346 -0
- package/lib/recipes/boundary-stress.ts +36 -19
- package/lib/recipes/country-balanced.ts +66 -86
- package/lib/recipes/house-venue.ts +31 -13
- package/lib/recipes/intersection.ts +82 -60
- package/lib/recipes/po/box/cedex/au-nz.ts +3 -3
- package/lib/recipes/po/box/cedex/ca.ts +3 -2
- package/lib/recipes/po/box/cedex/fr.ts +4 -3
- package/lib/recipes/po/box/cedex/phrases.ts +7 -6
- package/lib/recipes/po/box/cedex/recipe.ts +28 -16
- package/lib/recipes/po/box/cedex/sources.ts +3 -3
- package/lib/recipes/po/box/cedex/us.ts +7 -2
- package/lib/recipes/po/{box/index.ts → box.ts} +39 -18
- package/lib/recipes/scaffold.ts +252 -153
- package/lib/recipes/sources.ts +399 -0
- package/lib/recipes/street/affix.ts +54 -154
- package/lib/recipes/street/bare.ts +28 -15
- package/lib/recipes/street.ts +32 -8
- package/lib/recipes/sub/venue/context.ts +30 -23
- package/lib/recipes/sub/venue/render.ts +170 -0
- package/lib/recipes/sub/venue/sources.ts +68 -219
- package/lib/recipes/sub/venue.ts +801 -0
- package/lib/recipes/trailing-region.ts +69 -85
- package/lib/recipes/unit/sources.ts +44 -0
- package/lib/recipes/unit.ts +101 -89
- package/lib/{recipes/index.ts → recipes.ts} +13 -11
- package/lib/registers.ts +278 -0
- package/lib/ro/adapters/retea-scolara/adapter.ts +264 -0
- package/lib/ro/tools/fetch/retea-scolara.ts +187 -0
- package/lib/runner.ts +220 -84
- package/lib/sg/recipes/register.ts +46 -52
- package/lib/sg/tools/fetch/acra.ts +20 -25
- package/lib/si/recipes/bare-village.ts +34 -17
- package/lib/sk/adapters/inspire/adapter.ts +395 -0
- package/lib/sk/tools/fetch/inspire.ts +402 -0
- package/lib/source-register/effective-manifest.ts +659 -0
- package/lib/source-register/register.ts +539 -0
- package/lib/source-register/training-manifest.ts +218 -0
- package/lib/source-register/types.ts +590 -0
- package/lib/source-register.ts +71 -0
- package/lib/south-asia/recipes/register.ts +45 -26
- package/lib/subvenue/harvest.ts +251 -0
- package/lib/{tools/sub/venue → subvenue}/promotions.ts +33 -70
- package/lib/subvenue/surfaces.ts +94 -0
- package/lib/subvenue/table.ts +264 -0
- package/lib/surfaces/locale.ts +246 -0
- package/lib/synthesizers/anchor-absorption.ts +55 -91
- package/lib/synthesizers/boundary-stress.ts +49 -131
- package/lib/synthesizers/house-venue.ts +44 -102
- package/lib/synthesizers/intersection.ts +37 -26
- package/lib/synthesizers/no-street.ts +70 -119
- package/lib/synthesizers/po-box.ts +90 -105
- package/lib/synthesizers/street.ts +46 -34
- package/lib/synthesizers/utils.ts +64 -218
- package/lib/test-kit/corpus-recipe.ts +45 -28
- package/lib/test-kit.ts +116 -0
- package/lib/tools/align-canonical.ts +64 -0
- package/lib/tools/audit.ts +113 -118
- package/lib/tools/corpus-stats.ts +44 -30
- package/lib/tools/fetch/atom.ts +164 -0
- package/lib/tools/fetch/cordis.ts +318 -0
- package/lib/tools/fetch/download/manifest.ts +34 -22
- package/lib/tools/fetch/download/network.ts +55 -31
- package/lib/tools/fetch/download/retry.ts +26 -25
- package/lib/tools/fetch/geonames/dump.ts +72 -54
- package/lib/tools/fetch/geonames/postal.ts +27 -62
- package/lib/tools/fetch/gleif.ts +360 -0
- package/lib/tools/fetch/header.ts +69 -0
- package/lib/tools/fetch/inspire-addresses.ts +495 -0
- package/lib/tools/fetch/openaddresses.ts +22 -111
- package/lib/tools/fetch/ourairports.ts +18 -51
- package/lib/tools/fetch/ppd.ts +10 -8
- package/lib/tools/fetch/vlaanderen-ad.ts +435 -0
- package/lib/tools/fetch/wfs-harvest.ts +943 -0
- package/lib/tools/fetch/wikidata-subvenue.ts +45 -145
- package/lib/tools/fetch/zip-archive.ts +100 -0
- package/lib/tools/fetch.ts +143 -0
- package/lib/tools/golden/expand.ts +74 -43
- package/lib/tools/golden/promote.ts +41 -32
- package/lib/tools/golden/relabel-street/directory.ts +63 -36
- package/lib/tools/golden/relabel-street/row.ts +28 -106
- package/lib/tools/ingest-csv.ts +45 -48
- package/lib/tools/jsonl-to-parquet.ts +59 -98
- package/lib/tools/lint/recipe-output/vocab.ts +366 -0
- package/lib/tools/lint/{slice/index.ts → recipe-output.ts} +107 -121
- package/lib/tools/migrate/overlay-parquet.ts +173 -0
- package/lib/tools/migrate/recipe-output.ts +153 -0
- package/lib/tools/migrate/source-names.ts +161 -0
- package/lib/tools/{slice → overlay}/kryptonite.ts +43 -36
- package/lib/tools/overlay/manifest.ts +407 -0
- package/lib/tools/overlay/merge-source.ts +138 -0
- package/lib/tools/overlay/split-slice.ts +144 -0
- package/lib/tools/{slice → overlay}/translit.ts +74 -58
- package/lib/tools/overture-subvenue.ts +17 -90
- package/lib/tools/postcode-triples.ts +281 -210
- package/lib/tools/source-register/build.ts +819 -0
- package/lib/tools/sub/venue/head-nouns.ts +38 -75
- package/lib/tools/sub/venue/lexicon.ts +71 -106
- package/lib/tools/sub/venue/wikidata.ts +13 -10
- package/lib/tools.ts +31 -0
- package/lib/tw/tools/fetch/gcis.ts +17 -16
- package/lib/types.ts +304 -101
- package/lib/us/adapters/fcc-bdc/adapter.ts +26 -41
- package/lib/us/adapters/state/hi-schools/adapter.ts +28 -17
- package/lib/us/adapters/state/hi-schools/workbook.ts +7 -2
- package/lib/us/adapters/state/ia-contractors/adapter.ts +27 -15
- package/lib/us/adapters/state/ny-notaries/adapter.ts +24 -25
- package/lib/us/adapters/state/tx-notaries/adapter.ts +21 -15
- package/lib/us/adapters/tiger/adapter.ts +19 -44
- package/lib/us/adapters/tiger/street-decompose.ts +7 -17
- package/lib/us/adapters/usgov/hrsa-fqhc/adapter.ts +49 -34
- package/lib/us/adapters/usgov/imls-pls/adapter.ts +25 -19
- package/lib/us/adapters/usgov/irs-bmf/adapter.ts +32 -23
- package/lib/us/adapters/usgov/nad/adapter.ts +51 -112
- package/lib/us/adapters/usgov/nppes/adapter.ts +72 -35
- package/lib/us/adapters/usgov/samhsa-treatment-locator/adapter.ts +43 -30
- package/lib/us/fips-state.ts +17 -8
- package/lib/us/tools/fetch/hrsa.ts +7 -8
- package/lib/us/tools/fetch/imls-pls.ts +17 -35
- package/lib/us/tools/fetch/nad.ts +50 -32
- package/lib/us/tools/fetch/nppes.ts +23 -35
- package/lib/us/tools/fetch/state/hi-schools.ts +22 -16
- package/lib/us/tools/fetch/state/sources.ts +12 -12
- package/lib/us/tools/fetch/tiger-full.ts +21 -73
- package/lib/utils/align.ts +42 -52
- package/lib/utils/{slice-stats.ts → cooccurrence-stats.ts} +22 -16
- package/lib/utils/golden.ts +34 -49
- package/lib/utils/license.ts +238 -26
- package/lib/utils/split.ts +205 -88
- package/lib/utils/tokenize.ts +22 -34
- package/lib/utils/wof-json.ts +129 -76
- package/lib/{utils/index.ts → utils.ts} +0 -1
- package/lib/ve/recipes/reviewed-postcode-tail.ts +40 -13
- package/out/adapters/cordis/adapter.d.ts +324 -0
- package/out/adapters/cordis/adapter.d.ts.map +1 -0
- package/out/adapters/cordis/adapter.js +616 -0
- package/out/adapters/cordis/adapter.js.map +1 -0
- package/out/adapters/dedup-key.d.ts +30 -0
- package/out/adapters/dedup-key.d.ts.map +1 -0
- package/out/adapters/dedup-key.js +35 -0
- package/out/adapters/dedup-key.js.map +1 -0
- package/out/adapters/errors.d.ts +17 -0
- package/out/adapters/errors.d.ts.map +1 -0
- package/out/adapters/errors.js +20 -0
- package/out/adapters/errors.js.map +1 -0
- package/out/adapters/geonames/adapter.d.ts +26 -28
- package/out/adapters/geonames/adapter.d.ts.map +1 -1
- package/out/adapters/geonames/adapter.js +39 -49
- package/out/adapters/geonames/adapter.js.map +1 -1
- package/out/adapters/geonames/postal/adapter.d.ts +14 -27
- package/out/adapters/geonames/postal/adapter.d.ts.map +1 -1
- package/out/adapters/geonames/postal/adapter.js +30 -35
- package/out/adapters/geonames/postal/adapter.js.map +1 -1
- package/out/adapters/gleif/adapter.d.ts +293 -0
- package/out/adapters/gleif/adapter.d.ts.map +1 -0
- package/out/adapters/gleif/adapter.js +684 -0
- package/out/adapters/gleif/adapter.js.map +1 -0
- package/out/adapters/libpostal-dictionary.d.ts +22 -0
- package/out/adapters/libpostal-dictionary.d.ts.map +1 -0
- package/out/adapters/libpostal-dictionary.js +36 -0
- package/out/adapters/libpostal-dictionary.js.map +1 -0
- package/out/adapters/openaddresses/adapter.d.ts +28 -43
- package/out/adapters/openaddresses/adapter.d.ts.map +1 -1
- package/out/adapters/openaddresses/adapter.js +34 -46
- package/out/adapters/openaddresses/adapter.js.map +1 -1
- package/out/adapters/osm/adapter.d.ts +48 -42
- package/out/adapters/osm/adapter.d.ts.map +1 -1
- package/out/adapters/osm/adapter.js +116 -67
- package/out/adapters/osm/adapter.js.map +1 -1
- package/out/adapters/overture/adapter.d.ts +11 -37
- package/out/adapters/overture/adapter.d.ts.map +1 -1
- package/out/adapters/overture/adapter.js +45 -42
- package/out/adapters/overture/adapter.js.map +1 -1
- package/out/adapters/po-box/adapter.d.ts +63 -0
- package/out/adapters/po-box/adapter.d.ts.map +1 -0
- package/out/adapters/{synth-po-box → po-box}/adapter.js +45 -46
- package/out/adapters/po-box/adapter.js.map +1 -0
- package/out/adapters/registry.d.ts +55 -0
- package/out/adapters/registry.d.ts.map +1 -0
- package/out/adapters/registry.js +43 -0
- package/out/adapters/registry.js.map +1 -0
- package/out/adapters/sha256-stream.d.ts +26 -0
- package/out/adapters/sha256-stream.d.ts.map +1 -0
- package/out/adapters/sha256-stream.js +34 -0
- package/out/adapters/sha256-stream.js.map +1 -0
- package/out/adapters/source-id.d.ts +33 -0
- package/out/adapters/source-id.d.ts.map +1 -0
- package/out/adapters/source-id.js +42 -0
- package/out/adapters/source-id.js.map +1 -0
- package/out/adapters/street-line.d.ts +102 -0
- package/out/adapters/street-line.d.ts.map +1 -0
- package/out/adapters/street-line.js +117 -0
- package/out/adapters/street-line.js.map +1 -0
- package/out/adapters/wof/admin/json/adapter.d.ts +27 -18
- package/out/adapters/wof/admin/json/adapter.d.ts.map +1 -1
- package/out/adapters/wof/admin/json/adapter.js +47 -31
- package/out/adapters/wof/admin/json/adapter.js.map +1 -1
- package/out/adapters/wof/json-rows.d.ts +35 -19
- package/out/adapters/wof/json-rows.d.ts.map +1 -1
- package/out/adapters/wof/json-rows.js +35 -15
- package/out/adapters/wof/json-rows.js.map +1 -1
- package/out/adapters/wof/postalcode-json/adapter.d.ts +22 -38
- package/out/adapters/wof/postalcode-json/adapter.d.ts.map +1 -1
- package/out/adapters/wof/postalcode-json/adapter.js +55 -57
- package/out/adapters/wof/postalcode-json/adapter.js.map +1 -1
- package/out/adapters.d.ts +75 -0
- package/out/adapters.d.ts.map +1 -0
- package/out/adapters.js +167 -0
- package/out/adapters.js.map +1 -0
- package/out/au/adapters/gnaf/adapter.d.ts +15 -27
- package/out/au/adapters/gnaf/adapter.d.ts.map +1 -1
- package/out/au/adapters/gnaf/adapter.js +34 -42
- package/out/au/adapters/gnaf/adapter.js.map +1 -1
- package/out/au/adapters/gnaf/assemble.d.ts +15 -26
- package/out/au/adapters/gnaf/assemble.d.ts.map +1 -1
- package/out/au/adapters/gnaf/assemble.js +26 -46
- package/out/au/adapters/gnaf/assemble.js.map +1 -1
- package/out/be/adapters/brussels/adapter.d.ts +212 -0
- package/out/be/adapters/brussels/adapter.d.ts.map +1 -0
- package/out/be/adapters/brussels/adapter.js +435 -0
- package/out/be/adapters/brussels/adapter.js.map +1 -0
- package/out/be/adapters/vlaanderen/adapter.d.ts +233 -0
- package/out/be/adapters/vlaanderen/adapter.d.ts.map +1 -0
- package/out/be/adapters/vlaanderen/adapter.js +416 -0
- package/out/be/adapters/vlaanderen/adapter.js.map +1 -0
- package/out/be/adapters/wallonie/adapter.d.ts +196 -0
- package/out/be/adapters/wallonie/adapter.d.ts.map +1 -0
- package/out/be/adapters/wallonie/adapter.js +437 -0
- package/out/be/adapters/wallonie/adapter.js.map +1 -0
- package/out/be/tools/fetch/brussels.d.ts +119 -0
- package/out/be/tools/fetch/brussels.d.ts.map +1 -0
- package/out/be/tools/fetch/brussels.js +146 -0
- package/out/be/tools/fetch/brussels.js.map +1 -0
- package/out/be/tools/fetch/wallonie.d.ts +119 -0
- package/out/be/tools/fetch/wallonie.d.ts.map +1 -0
- package/out/be/tools/fetch/wallonie.js +167 -0
- package/out/be/tools/fetch/wallonie.js.map +1 -0
- package/out/build/adapters.d.ts +33 -0
- package/out/build/adapters.d.ts.map +1 -0
- package/out/build/adapters.js +68 -0
- package/out/build/adapters.js.map +1 -0
- package/out/build/align.d.ts +73 -0
- package/out/build/align.d.ts.map +1 -0
- package/out/build/align.js +226 -0
- package/out/build/align.js.map +1 -0
- package/out/build/checkpoint.d.ts +94 -0
- package/out/build/checkpoint.d.ts.map +1 -0
- package/out/build/checkpoint.js +59 -0
- package/out/build/checkpoint.js.map +1 -0
- package/out/build/eligibility.d.ts +47 -0
- package/out/build/eligibility.d.ts.map +1 -0
- package/out/build/eligibility.js +80 -0
- package/out/build/eligibility.js.map +1 -0
- package/out/build/heap.d.ts +28 -0
- package/out/build/heap.d.ts.map +1 -0
- package/out/build/heap.js +47 -0
- package/out/build/heap.js.map +1 -0
- package/out/build/inputs.d.ts +52 -0
- package/out/build/inputs.d.ts.map +1 -0
- package/out/build/inputs.js +49 -0
- package/out/build/inputs.js.map +1 -0
- package/out/build/rows.d.ts +16 -0
- package/out/build/rows.d.ts.map +1 -0
- package/out/build/rows.js +19 -0
- package/out/build/rows.js.map +1 -0
- package/out/build/types.d.ts +220 -0
- package/out/build/types.d.ts.map +1 -0
- package/out/build/types.js +34 -0
- package/out/build/types.js.map +1 -0
- package/out/build.d.ts +6 -121
- package/out/build.d.ts.map +1 -1
- package/out/build.js +112 -207
- package/out/build.js.map +1 -1
- package/out/cn/recipes/organizational-units.d.ts +5 -22
- package/out/cn/recipes/organizational-units.d.ts.map +1 -1
- package/out/cn/recipes/organizational-units.js +20 -41
- package/out/cn/recipes/organizational-units.js.map +1 -1
- package/out/cz/adapters/cuzk/adapter.d.ts +52 -0
- package/out/cz/adapters/cuzk/adapter.d.ts.map +1 -0
- package/out/cz/adapters/cuzk/adapter.js +266 -0
- package/out/cz/adapters/cuzk/adapter.js.map +1 -0
- package/out/cz/recipes/pcfirst-preposition.d.ts +7 -11
- package/out/cz/recipes/pcfirst-preposition.d.ts.map +1 -1
- package/out/cz/recipes/pcfirst-preposition.js +36 -27
- package/out/cz/recipes/pcfirst-preposition.js.map +1 -1
- package/out/cz/tools/fetch/cuzk.d.ts +272 -0
- package/out/cz/tools/fetch/cuzk.d.ts.map +1 -0
- package/out/cz/tools/fetch/cuzk.js +446 -0
- package/out/cz/tools/fetch/cuzk.js.map +1 -0
- package/out/de/recipes/locale.d.ts +24 -26
- package/out/de/recipes/locale.d.ts.map +1 -1
- package/out/de/recipes/locale.js +66 -56
- package/out/de/recipes/locale.js.map +1 -1
- package/out/directory.d.ts +20 -0
- package/out/directory.d.ts.map +1 -0
- package/out/directory.js +27 -0
- package/out/directory.js.map +1 -0
- package/out/dk/adapters/inspire/adapter.d.ts +154 -0
- package/out/dk/adapters/inspire/adapter.d.ts.map +1 -0
- package/out/dk/adapters/inspire/adapter.js +258 -0
- package/out/dk/adapters/inspire/adapter.js.map +1 -0
- package/out/dk/tools/fetch/inspire.d.ts +100 -0
- package/out/dk/tools/fetch/inspire.d.ts.map +1 -0
- package/out/dk/tools/fetch/inspire.js +230 -0
- package/out/dk/tools/fetch/inspire.js.map +1 -0
- package/out/ee/adapters/ads/adapter.d.ts +109 -0
- package/out/ee/adapters/ads/adapter.d.ts.map +1 -0
- package/out/ee/adapters/ads/adapter.js +191 -0
- package/out/ee/adapters/ads/adapter.js.map +1 -0
- package/out/ee/tools/fetch/ads.d.ts +123 -0
- package/out/ee/tools/fetch/ads.d.ts.map +1 -0
- package/out/ee/tools/fetch/ads.js +195 -0
- package/out/ee/tools/fetch/ads.js.map +1 -0
- package/out/env.d.ts +6 -2
- package/out/env.d.ts.map +1 -1
- package/out/env.js +6 -2
- package/out/env.js.map +1 -1
- package/out/es/adapters/bizkaia/adapter.d.ts +143 -0
- package/out/es/adapters/bizkaia/adapter.d.ts.map +1 -0
- package/out/es/adapters/bizkaia/adapter.js +332 -0
- package/out/es/adapters/bizkaia/adapter.js.map +1 -0
- package/out/es/adapters/catastro/adapter.d.ts +104 -0
- package/out/es/adapters/catastro/adapter.d.ts.map +1 -0
- package/out/es/adapters/catastro/adapter.js +288 -0
- package/out/es/adapters/catastro/adapter.js.map +1 -0
- package/out/es/adapters/gipuzkoa/adapter.d.ts +91 -0
- package/out/es/adapters/gipuzkoa/adapter.d.ts.map +1 -0
- package/out/es/adapters/gipuzkoa/adapter.js +225 -0
- package/out/es/adapters/gipuzkoa/adapter.js.map +1 -0
- package/out/es/adapters/navarra/adapter.d.ts +105 -0
- package/out/es/adapters/navarra/adapter.d.ts.map +1 -0
- package/out/es/adapters/navarra/adapter.js +241 -0
- package/out/es/adapters/navarra/adapter.js.map +1 -0
- package/out/es/cadastre.d.ts +109 -0
- package/out/es/cadastre.d.ts.map +1 -0
- package/out/es/cadastre.js +130 -0
- package/out/es/cadastre.js.map +1 -0
- package/out/es/tools/fetch/bizkaia.d.ts +278 -0
- package/out/es/tools/fetch/bizkaia.d.ts.map +1 -0
- package/out/es/tools/fetch/bizkaia.js +477 -0
- package/out/es/tools/fetch/bizkaia.js.map +1 -0
- package/out/es/tools/fetch/catastro.d.ts +272 -0
- package/out/es/tools/fetch/catastro.d.ts.map +1 -0
- package/out/es/tools/fetch/catastro.js +486 -0
- package/out/es/tools/fetch/catastro.js.map +1 -0
- package/out/es/tools/fetch/gipuzkoa.d.ts +162 -0
- package/out/es/tools/fetch/gipuzkoa.d.ts.map +1 -0
- package/out/es/tools/fetch/gipuzkoa.js +209 -0
- package/out/es/tools/fetch/gipuzkoa.js.map +1 -0
- package/out/es/tools/fetch/navarra.d.ts +189 -0
- package/out/es/tools/fetch/navarra.d.ts.map +1 -0
- package/out/es/tools/fetch/navarra.js +316 -0
- package/out/es/tools/fetch/navarra.js.map +1 -0
- package/out/fi/adapters/ryhti/adapter.d.ts +115 -0
- package/out/fi/adapters/ryhti/adapter.d.ts.map +1 -0
- package/out/fi/adapters/ryhti/adapter.js +244 -0
- package/out/fi/adapters/ryhti/adapter.js.map +1 -0
- package/out/fi/tools/fetch/ryhti.d.ts +206 -0
- package/out/fi/tools/fetch/ryhti.d.ts.map +1 -0
- package/out/fi/tools/fetch/ryhti.js +327 -0
- package/out/fi/tools/fetch/ryhti.js.map +1 -0
- package/out/fingerprints.d.ts +68 -0
- package/out/fingerprints.d.ts.map +1 -0
- package/out/fingerprints.js +130 -0
- package/out/fingerprints.js.map +1 -0
- package/out/fr/adapters/annuaire-education/adapter.d.ts +236 -0
- package/out/fr/adapters/annuaire-education/adapter.d.ts.map +1 -0
- package/out/fr/adapters/annuaire-education/adapter.js +475 -0
- package/out/fr/adapters/annuaire-education/adapter.js.map +1 -0
- package/out/fr/adapters/ban/adapter.d.ts +19 -25
- package/out/fr/adapters/ban/adapter.d.ts.map +1 -1
- package/out/fr/adapters/ban/adapter.js +65 -54
- package/out/fr/adapters/ban/adapter.js.map +1 -1
- package/out/fr/adapters/finess/adapter.d.ts +276 -0
- package/out/fr/adapters/finess/adapter.d.ts.map +1 -0
- package/out/fr/adapters/finess/adapter.js +519 -0
- package/out/fr/adapters/finess/adapter.js.map +1 -0
- package/out/fr/adapters/finess/postal-lines.d.ts +61 -0
- package/out/fr/adapters/finess/postal-lines.d.ts.map +1 -0
- package/out/fr/adapters/finess/postal-lines.js +114 -0
- package/out/fr/adapters/finess/postal-lines.js.map +1 -0
- package/out/fr/adapters/finess/voie-type.d.ts +77 -0
- package/out/fr/adapters/finess/voie-type.d.ts.map +1 -0
- package/out/fr/adapters/finess/voie-type.js +172 -0
- package/out/fr/adapters/finess/voie-type.js.map +1 -0
- package/out/fr/insee-country.d.ts +45 -0
- package/out/fr/insee-country.d.ts.map +1 -0
- package/out/fr/insee-country.js +60 -0
- package/out/fr/insee-country.js.map +1 -0
- package/out/fr/recipes/admin-split.d.ts +4 -27
- package/out/fr/recipes/admin-split.d.ts.map +1 -1
- package/out/fr/recipes/admin-split.js +36 -58
- package/out/fr/recipes/admin-split.js.map +1 -1
- package/out/fr/recipes/bare-street.d.ts +2 -17
- package/out/fr/recipes/bare-street.d.ts.map +1 -1
- package/out/fr/recipes/bare-street.js +35 -50
- package/out/fr/recipes/bare-street.js.map +1 -1
- package/out/fr/recipes/fragment.d.ts +6 -65
- package/out/fr/recipes/fragment.d.ts.map +1 -1
- package/out/fr/recipes/fragment.js +55 -135
- package/out/fr/recipes/fragment.js.map +1 -1
- package/out/fr/recipes/lieudit.d.ts +17 -19
- package/out/fr/recipes/lieudit.d.ts.map +1 -1
- package/out/fr/recipes/lieudit.js +88 -68
- package/out/fr/recipes/lieudit.js.map +1 -1
- package/out/fr/recipes/order.d.ts +4 -27
- package/out/fr/recipes/order.d.ts.map +1 -1
- package/out/fr/recipes/order.js +31 -58
- package/out/fr/recipes/order.js.map +1 -1
- package/out/fr/{adapters/ban/street-decompose.d.ts → street-decompose.d.ts} +3 -2
- package/out/fr/street-decompose.d.ts.map +1 -0
- package/out/fr/{adapters/ban/street-decompose.js → street-decompose.js} +4 -3
- package/out/fr/street-decompose.js.map +1 -0
- package/out/fr/tools/fetch/annuaire-education.d.ts +130 -0
- package/out/fr/tools/fetch/annuaire-education.d.ts.map +1 -0
- package/out/fr/tools/fetch/annuaire-education.js +196 -0
- package/out/fr/tools/fetch/annuaire-education.js.map +1 -0
- package/out/fr/tools/fetch/ban.d.ts +9 -7
- package/out/fr/tools/fetch/ban.d.ts.map +1 -1
- package/out/fr/tools/fetch/ban.js +27 -18
- package/out/fr/tools/fetch/ban.js.map +1 -1
- package/out/fr/tools/fetch/finess.d.ts +145 -0
- package/out/fr/tools/fetch/finess.d.ts.map +1 -0
- package/out/fr/tools/fetch/finess.js +228 -0
- package/out/fr/tools/fetch/finess.js.map +1 -0
- package/out/gauntlet-inputs.d.ts +42 -0
- package/out/gauntlet-inputs.d.ts.map +1 -0
- package/out/gauntlet-inputs.js +78 -0
- package/out/gauntlet-inputs.js.map +1 -0
- package/out/index.d.ts +9 -3
- package/out/index.d.ts.map +1 -1
- package/out/index.js +9 -3
- package/out/index.js.map +1 -1
- package/out/inspire/address.d.ts +251 -0
- package/out/inspire/address.d.ts.map +1 -0
- package/out/inspire/address.js +384 -0
- package/out/inspire/address.js.map +1 -0
- package/out/inspire/archive.d.ts +36 -0
- package/out/inspire/archive.d.ts.map +1 -0
- package/out/inspire/archive.js +42 -0
- package/out/inspire/archive.js.map +1 -0
- package/out/inspire/errors.d.ts +55 -0
- package/out/inspire/errors.d.ts.map +1 -0
- package/out/inspire/errors.js +64 -0
- package/out/inspire/errors.js.map +1 -0
- package/out/inspire/stream.d.ts +137 -0
- package/out/inspire/stream.d.ts.map +1 -0
- package/out/inspire/stream.js +125 -0
- package/out/inspire/stream.js.map +1 -0
- package/out/international/recipes/locale.d.ts +38 -84
- package/out/international/recipes/locale.d.ts.map +1 -1
- package/out/international/recipes/locale.js +112 -151
- package/out/international/recipes/locale.js.map +1 -1
- package/out/it/adapters/anac/adapter.d.ts +267 -0
- package/out/it/adapters/anac/adapter.d.ts.map +1 -0
- package/out/it/adapters/anac/adapter.js +429 -0
- package/out/it/adapters/anac/adapter.js.map +1 -0
- package/out/it/tools/fetch/anac.d.ts +174 -0
- package/out/it/tools/fetch/anac.d.ts.map +1 -0
- package/out/it/tools/fetch/anac.js +272 -0
- package/out/it/tools/fetch/anac.js.map +1 -0
- package/out/jp/adapters/wof-admin/adapter.d.ts +14 -11
- package/out/jp/adapters/wof-admin/adapter.d.ts.map +1 -1
- package/out/jp/adapters/wof-admin/adapter.js +27 -16
- package/out/jp/adapters/wof-admin/adapter.js.map +1 -1
- package/out/jp/tools/fetch/houjin.d.ts +7 -4
- package/out/jp/tools/fetch/houjin.d.ts.map +1 -1
- package/out/jp/tools/fetch/houjin.js +15 -11
- package/out/jp/tools/fetch/houjin.js.map +1 -1
- package/out/kr/adapters/juso/label-rows.d.ts +17 -31
- package/out/kr/adapters/juso/label-rows.d.ts.map +1 -1
- package/out/kr/adapters/juso/label-rows.js +19 -41
- package/out/kr/adapters/juso/label-rows.js.map +1 -1
- package/out/kr/adapters/localdata/align.d.ts +4 -16
- package/out/kr/adapters/localdata/align.d.ts.map +1 -1
- package/out/kr/adapters/localdata/align.js +19 -30
- package/out/kr/adapters/localdata/align.js.map +1 -1
- package/out/kr/adapters/localdata/key-index.d.ts +13 -22
- package/out/kr/adapters/localdata/key-index.d.ts.map +1 -1
- package/out/kr/adapters/localdata/key-index.js +15 -21
- package/out/kr/adapters/localdata/key-index.js.map +1 -1
- package/out/kr/adapters/localdata/permit-rows.d.ts +21 -14
- package/out/kr/adapters/localdata/permit-rows.d.ts.map +1 -1
- package/out/kr/adapters/localdata/permit-rows.js +30 -25
- package/out/kr/adapters/localdata/permit-rows.js.map +1 -1
- package/out/kr/tools/fetch/juso.d.ts +11 -8
- package/out/kr/tools/fetch/juso.d.ts.map +1 -1
- package/out/kr/tools/fetch/juso.js +15 -14
- package/out/kr/tools/fetch/juso.js.map +1 -1
- package/out/kr/tools/fetch/localdata.d.ts +16 -9
- package/out/kr/tools/fetch/localdata.d.ts.map +1 -1
- package/out/kr/tools/fetch/localdata.js +23 -15
- package/out/kr/tools/fetch/localdata.js.map +1 -1
- package/out/lu/adapters/bd-adresses/adapter.d.ts +109 -0
- package/out/lu/adapters/bd-adresses/adapter.d.ts.map +1 -0
- package/out/lu/adapters/bd-adresses/adapter.js +196 -0
- package/out/lu/adapters/bd-adresses/adapter.js.map +1 -0
- package/out/lu/tools/fetch/bd-adresses.d.ts +163 -0
- package/out/lu/tools/fetch/bd-adresses.d.ts.map +1 -0
- package/out/lu/tools/fetch/bd-adresses.js +223 -0
- package/out/lu/tools/fetch/bd-adresses.js.map +1 -0
- package/out/lv/adapters/varis/adapter.d.ts +283 -0
- package/out/lv/adapters/varis/adapter.d.ts.map +1 -0
- package/out/lv/adapters/varis/adapter.js +404 -0
- package/out/lv/adapters/varis/adapter.js.map +1 -0
- package/out/lv/tools/fetch/varis.d.ts +80 -0
- package/out/lv/tools/fetch/varis.d.ts.map +1 -0
- package/out/lv/tools/fetch/varis.js +133 -0
- package/out/lv/tools/fetch/varis.js.map +1 -0
- package/out/nl/adapters/kadaster/adapter.d.ts +125 -0
- package/out/nl/adapters/kadaster/adapter.d.ts.map +1 -0
- package/out/nl/adapters/kadaster/adapter.js +310 -0
- package/out/nl/adapters/kadaster/adapter.js.map +1 -0
- package/out/nl/recipes/postcode.d.ts +12 -14
- package/out/nl/recipes/postcode.d.ts.map +1 -1
- package/out/nl/recipes/postcode.js +42 -24
- package/out/nl/recipes/postcode.js.map +1 -1
- package/out/nl/tools/fetch/kadaster.d.ts +155 -0
- package/out/nl/tools/fetch/kadaster.d.ts.map +1 -0
- package/out/nl/tools/fetch/kadaster.js +179 -0
- package/out/nl/tools/fetch/kadaster.js.map +1 -0
- package/out/no/adapters/matrikkelen/adapter.d.ts +44 -0
- package/out/no/adapters/matrikkelen/adapter.d.ts.map +1 -0
- package/out/no/adapters/matrikkelen/adapter.js +143 -0
- package/out/no/adapters/matrikkelen/adapter.js.map +1 -0
- package/out/no/recipes/fragment.d.ts +1 -33
- package/out/no/recipes/fragment.d.ts.map +1 -1
- package/out/no/recipes/fragment.js +23 -57
- package/out/no/recipes/fragment.js.map +1 -1
- package/out/no/recipes/street/led.d.ts +9 -12
- package/out/no/recipes/street/led.d.ts.map +1 -1
- package/out/no/recipes/street/led.js +34 -24
- package/out/no/recipes/street/led.js.map +1 -1
- package/out/no/recipes/street.d.ts +19 -0
- package/out/no/recipes/street.d.ts.map +1 -0
- package/out/no/recipes/{street/index.js → street.js} +28 -12
- package/out/no/recipes/street.js.map +1 -0
- package/out/no/tools/fetch/matrikkelen.d.ts +251 -0
- package/out/no/tools/fetch/matrikkelen.d.ts.map +1 -0
- package/out/no/tools/fetch/matrikkelen.js +345 -0
- package/out/no/tools/fetch/matrikkelen.js.map +1 -0
- package/out/parquet/duckdb.d.ts +100 -0
- package/out/parquet/duckdb.d.ts.map +1 -0
- package/out/parquet/duckdb.js +92 -0
- package/out/parquet/duckdb.js.map +1 -0
- package/out/parquet/readers.d.ts +44 -0
- package/out/parquet/readers.d.ts.map +1 -0
- package/out/parquet/readers.js +69 -0
- package/out/parquet/readers.js.map +1 -0
- package/out/parquet/schema.d.ts +95 -0
- package/out/parquet/schema.d.ts.map +1 -0
- package/out/parquet/schema.js +157 -0
- package/out/parquet/schema.js.map +1 -0
- package/out/parquet/shuffle.d.ts +25 -0
- package/out/parquet/shuffle.d.ts.map +1 -0
- package/out/parquet/shuffle.js +44 -0
- package/out/parquet/shuffle.js.map +1 -0
- package/out/parquet/span-sql.d.ts +49 -0
- package/out/parquet/span-sql.d.ts.map +1 -0
- package/out/parquet/span-sql.js +53 -0
- package/out/parquet/span-sql.js.map +1 -0
- package/out/parquet/streams.d.ts +47 -0
- package/out/parquet/streams.d.ts.map +1 -0
- package/out/parquet/streams.js +78 -0
- package/out/parquet/streams.js.map +1 -0
- package/out/parquet/writers.d.ts +124 -0
- package/out/parquet/writers.d.ts.map +1 -0
- package/out/parquet/writers.js +251 -0
- package/out/parquet/writers.js.map +1 -0
- package/out/pl/adapters/emuia/adapter.d.ts +81 -0
- package/out/pl/adapters/emuia/adapter.d.ts.map +1 -0
- package/out/pl/adapters/emuia/adapter.js +178 -0
- package/out/pl/adapters/emuia/adapter.js.map +1 -0
- package/out/pl/tools/fetch/emuia.d.ts +165 -0
- package/out/pl/tools/fetch/emuia.d.ts.map +1 -0
- package/out/pl/tools/fetch/emuia.js +260 -0
- package/out/pl/tools/fetch/emuia.js.map +1 -0
- package/out/recipes/anchor-absorption.d.ts +9 -9
- package/out/recipes/anchor-absorption.d.ts.map +1 -1
- package/out/recipes/anchor-absorption.js +29 -19
- package/out/recipes/anchor-absorption.js.map +1 -1
- package/out/recipes/bare/country.d.ts +2 -20
- package/out/recipes/bare/country.d.ts.map +1 -1
- package/out/recipes/bare/country.js +20 -31
- package/out/recipes/bare/country.js.map +1 -1
- package/out/recipes/bare/postcode/eval.d.ts +1 -1
- package/out/recipes/bare/postcode/eval.js +1 -1
- package/out/recipes/bare/postcode.d.ts +41 -0
- package/out/recipes/bare/postcode.d.ts.map +1 -0
- package/out/recipes/bare/{postcode/index.js → postcode.js} +91 -79
- package/out/recipes/bare/postcode.js.map +1 -0
- package/out/recipes/boundary-stress.d.ts +8 -8
- package/out/recipes/boundary-stress.d.ts.map +1 -1
- package/out/recipes/boundary-stress.js +36 -19
- package/out/recipes/boundary-stress.js.map +1 -1
- package/out/recipes/country-balanced.d.ts +3 -21
- package/out/recipes/country-balanced.d.ts.map +1 -1
- package/out/recipes/country-balanced.js +58 -76
- package/out/recipes/country-balanced.js.map +1 -1
- package/out/recipes/house-venue.d.ts +8 -6
- package/out/recipes/house-venue.d.ts.map +1 -1
- package/out/recipes/house-venue.js +29 -13
- package/out/recipes/house-venue.js.map +1 -1
- package/out/recipes/intersection.d.ts +20 -20
- package/out/recipes/intersection.d.ts.map +1 -1
- package/out/recipes/intersection.js +65 -53
- package/out/recipes/intersection.js.map +1 -1
- package/out/recipes/po/box/cedex/au-nz.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/au-nz.js +3 -3
- package/out/recipes/po/box/cedex/au-nz.js.map +1 -1
- package/out/recipes/po/box/cedex/ca.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/ca.js +2 -2
- package/out/recipes/po/box/cedex/ca.js.map +1 -1
- package/out/recipes/po/box/cedex/fr.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/fr.js +3 -3
- package/out/recipes/po/box/cedex/fr.js.map +1 -1
- package/out/recipes/po/box/cedex/phrases.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/phrases.js +7 -6
- package/out/recipes/po/box/cedex/phrases.js.map +1 -1
- package/out/recipes/po/box/cedex/recipe.d.ts +1 -1
- package/out/recipes/po/box/cedex/recipe.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/recipe.js +25 -15
- package/out/recipes/po/box/cedex/recipe.js.map +1 -1
- package/out/recipes/po/box/cedex/sources.d.ts +12 -12
- 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/po/box/cedex/us.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/us.js +5 -2
- package/out/recipes/po/box/cedex/us.js.map +1 -1
- package/out/recipes/po/box.d.ts +18 -0
- package/out/recipes/po/box.d.ts.map +1 -0
- package/out/recipes/po/{box/index.js → box.js} +37 -19
- package/out/recipes/po/box.js.map +1 -0
- package/out/recipes/scaffold.d.ts +211 -138
- package/out/recipes/scaffold.d.ts.map +1 -1
- package/out/recipes/scaffold.js +72 -63
- package/out/recipes/scaffold.js.map +1 -1
- package/out/recipes/sources.d.ts +178 -0
- package/out/recipes/sources.d.ts.map +1 -0
- package/out/recipes/sources.js +348 -0
- package/out/recipes/sources.js.map +1 -0
- package/out/recipes/street/affix.d.ts +20 -50
- package/out/recipes/street/affix.d.ts.map +1 -1
- package/out/recipes/street/affix.js +45 -133
- package/out/recipes/street/affix.js.map +1 -1
- package/out/recipes/street/bare.d.ts +9 -7
- package/out/recipes/street/bare.d.ts.map +1 -1
- package/out/recipes/street/bare.js +25 -14
- package/out/recipes/street/bare.js.map +1 -1
- package/out/recipes/street.d.ts +6 -4
- package/out/recipes/street.d.ts.map +1 -1
- package/out/recipes/street.js +29 -8
- package/out/recipes/street.js.map +1 -1
- package/out/recipes/sub/venue/context.d.ts +12 -9
- package/out/recipes/sub/venue/context.d.ts.map +1 -1
- package/out/recipes/sub/venue/context.js +21 -17
- package/out/recipes/sub/venue/context.js.map +1 -1
- package/out/recipes/sub/venue/render.d.ts +58 -0
- package/out/recipes/sub/venue/render.d.ts.map +1 -0
- package/out/recipes/sub/venue/render.js +118 -0
- package/out/recipes/sub/venue/render.js.map +1 -0
- package/out/recipes/sub/venue/sources.d.ts +49 -92
- package/out/recipes/sub/venue/sources.d.ts.map +1 -1
- package/out/recipes/sub/venue/sources.js +43 -179
- package/out/recipes/sub/venue/sources.js.map +1 -1
- package/out/recipes/sub/venue.d.ts +176 -0
- package/out/recipes/sub/venue.d.ts.map +1 -0
- package/out/recipes/sub/venue.js +562 -0
- package/out/recipes/sub/venue.js.map +1 -0
- package/out/recipes/trailing-region.d.ts +9 -61
- package/out/recipes/trailing-region.d.ts.map +1 -1
- package/out/recipes/trailing-region.js +55 -85
- package/out/recipes/trailing-region.js.map +1 -1
- package/out/recipes/unit/sources.d.ts +28 -0
- package/out/recipes/unit/sources.d.ts.map +1 -0
- package/out/recipes/unit/sources.js +30 -0
- package/out/recipes/unit/sources.js.map +1 -0
- package/out/recipes/unit.d.ts +30 -17
- package/out/recipes/unit.d.ts.map +1 -1
- package/out/recipes/unit.js +90 -79
- package/out/recipes/unit.js.map +1 -1
- package/out/recipes.d.ts +26 -0
- package/out/recipes.d.ts.map +1 -0
- package/out/{recipes/index.js → recipes.js} +14 -12
- package/out/recipes.js.map +1 -0
- package/out/registers.d.ts +277 -0
- package/out/registers.d.ts.map +1 -0
- package/out/registers.js +273 -0
- package/out/registers.js.map +1 -0
- package/out/ro/adapters/retea-scolara/adapter.d.ts +114 -0
- package/out/ro/adapters/retea-scolara/adapter.d.ts.map +1 -0
- package/out/ro/adapters/retea-scolara/adapter.js +209 -0
- package/out/ro/adapters/retea-scolara/adapter.js.map +1 -0
- package/out/ro/tools/fetch/retea-scolara.d.ts +69 -0
- package/out/ro/tools/fetch/retea-scolara.d.ts.map +1 -0
- package/out/ro/tools/fetch/retea-scolara.js +117 -0
- package/out/ro/tools/fetch/retea-scolara.js.map +1 -0
- package/out/runner.d.ts +120 -60
- package/out/runner.d.ts.map +1 -1
- package/out/runner.js +130 -56
- package/out/runner.js.map +1 -1
- package/out/sg/recipes/register.d.ts +18 -32
- package/out/sg/recipes/register.d.ts.map +1 -1
- package/out/sg/recipes/register.js +44 -49
- package/out/sg/recipes/register.js.map +1 -1
- package/out/sg/tools/fetch/acra.d.ts +11 -14
- package/out/sg/tools/fetch/acra.d.ts.map +1 -1
- package/out/sg/tools/fetch/acra.js +16 -19
- package/out/sg/tools/fetch/acra.js.map +1 -1
- package/out/si/recipes/bare-village.d.ts +12 -13
- package/out/si/recipes/bare-village.d.ts.map +1 -1
- package/out/si/recipes/bare-village.js +31 -17
- package/out/si/recipes/bare-village.js.map +1 -1
- package/out/sk/adapters/inspire/adapter.d.ts +119 -0
- package/out/sk/adapters/inspire/adapter.d.ts.map +1 -0
- package/out/sk/adapters/inspire/adapter.js +318 -0
- package/out/sk/adapters/inspire/adapter.js.map +1 -0
- package/out/sk/tools/fetch/inspire.d.ts +195 -0
- package/out/sk/tools/fetch/inspire.d.ts.map +1 -0
- package/out/sk/tools/fetch/inspire.js +280 -0
- package/out/sk/tools/fetch/inspire.js.map +1 -0
- package/out/source-register/effective-manifest.d.ts +355 -0
- package/out/source-register/effective-manifest.d.ts.map +1 -0
- package/out/source-register/effective-manifest.js +355 -0
- package/out/source-register/effective-manifest.js.map +1 -0
- package/out/source-register/register.d.ts +79 -0
- package/out/source-register/register.d.ts.map +1 -0
- package/out/source-register/register.js +400 -0
- package/out/source-register/register.js.map +1 -0
- package/out/source-register/training-manifest.d.ts +111 -0
- package/out/source-register/training-manifest.d.ts.map +1 -0
- package/out/source-register/training-manifest.js +120 -0
- package/out/source-register/training-manifest.js.map +1 -0
- package/out/source-register/types.d.ts +539 -0
- package/out/source-register/types.d.ts.map +1 -0
- package/out/source-register/types.js +263 -0
- package/out/source-register/types.js.map +1 -0
- package/out/source-register.d.ts +19 -0
- package/out/source-register.d.ts.map +1 -0
- package/out/source-register.js +16 -0
- package/out/source-register.js.map +1 -0
- package/out/south-asia/recipes/register.d.ts +20 -17
- package/out/south-asia/recipes/register.d.ts.map +1 -1
- package/out/south-asia/recipes/register.js +44 -24
- package/out/south-asia/recipes/register.js.map +1 -1
- package/out/subvenue/harvest.d.ts +117 -0
- package/out/subvenue/harvest.d.ts.map +1 -0
- package/out/subvenue/harvest.js +172 -0
- package/out/subvenue/harvest.js.map +1 -0
- package/out/subvenue/promotions.d.ts +65 -0
- package/out/subvenue/promotions.d.ts.map +1 -0
- package/out/{tools/sub/venue → subvenue}/promotions.js +15 -55
- package/out/subvenue/promotions.js.map +1 -0
- package/out/subvenue/surfaces.d.ts +39 -0
- package/out/subvenue/surfaces.d.ts.map +1 -0
- package/out/subvenue/surfaces.js +75 -0
- package/out/subvenue/surfaces.js.map +1 -0
- package/out/subvenue/table.d.ts +212 -0
- package/out/subvenue/table.d.ts.map +1 -0
- package/out/subvenue/table.js +94 -0
- package/out/subvenue/table.js.map +1 -0
- package/out/surfaces/locale.d.ts +113 -0
- package/out/surfaces/locale.d.ts.map +1 -0
- package/out/surfaces/locale.js +136 -0
- package/out/surfaces/locale.js.map +1 -0
- package/out/synthesizers/anchor-absorption.d.ts +21 -30
- package/out/synthesizers/anchor-absorption.d.ts.map +1 -1
- package/out/synthesizers/anchor-absorption.js +30 -85
- package/out/synthesizers/anchor-absorption.js.map +1 -1
- package/out/synthesizers/boundary-stress.d.ts +17 -48
- package/out/synthesizers/boundary-stress.d.ts.map +1 -1
- package/out/synthesizers/boundary-stress.js +27 -121
- package/out/synthesizers/boundary-stress.js.map +1 -1
- package/out/synthesizers/house-venue.d.ts +22 -25
- package/out/synthesizers/house-venue.d.ts.map +1 -1
- package/out/synthesizers/house-venue.js +28 -97
- package/out/synthesizers/house-venue.js.map +1 -1
- package/out/synthesizers/intersection.d.ts +10 -8
- package/out/synthesizers/intersection.d.ts.map +1 -1
- package/out/synthesizers/intersection.js +33 -26
- package/out/synthesizers/intersection.js.map +1 -1
- package/out/synthesizers/no-street.d.ts +7 -37
- package/out/synthesizers/no-street.d.ts.map +1 -1
- package/out/synthesizers/no-street.js +55 -111
- package/out/synthesizers/no-street.js.map +1 -1
- package/out/synthesizers/po-box.d.ts +46 -45
- package/out/synthesizers/po-box.d.ts.map +1 -1
- package/out/synthesizers/po-box.js +57 -97
- package/out/synthesizers/po-box.js.map +1 -1
- package/out/synthesizers/street.d.ts +18 -12
- package/out/synthesizers/street.d.ts.map +1 -1
- package/out/synthesizers/street.js +36 -29
- package/out/synthesizers/street.js.map +1 -1
- package/out/synthesizers/utils.d.ts +32 -129
- package/out/synthesizers/utils.d.ts.map +1 -1
- package/out/synthesizers/utils.js +54 -166
- package/out/synthesizers/utils.js.map +1 -1
- package/out/test-kit/corpus-recipe.d.ts +29 -23
- package/out/test-kit/corpus-recipe.d.ts.map +1 -1
- package/out/test-kit/corpus-recipe.js +28 -13
- package/out/test-kit/corpus-recipe.js.map +1 -1
- package/out/test-kit.d.ts +63 -0
- package/out/test-kit.d.ts.map +1 -0
- package/out/test-kit.js +88 -0
- package/out/test-kit.js.map +1 -0
- package/out/tools/align-canonical.d.ts +7 -0
- package/out/tools/align-canonical.d.ts.map +1 -0
- package/out/tools/align-canonical.js +52 -0
- package/out/tools/align-canonical.js.map +1 -0
- package/out/tools/audit.d.ts +18 -11
- package/out/tools/audit.d.ts.map +1 -1
- package/out/tools/audit.js +86 -95
- package/out/tools/audit.js.map +1 -1
- package/out/tools/corpus-stats.d.ts +24 -15
- package/out/tools/corpus-stats.d.ts.map +1 -1
- package/out/tools/corpus-stats.js +33 -29
- package/out/tools/corpus-stats.js.map +1 -1
- package/out/tools/fetch/atom.d.ts +115 -0
- package/out/tools/fetch/atom.d.ts.map +1 -0
- package/out/tools/fetch/atom.js +84 -0
- package/out/tools/fetch/atom.js.map +1 -0
- package/out/tools/fetch/cordis.d.ts +123 -0
- package/out/tools/fetch/cordis.d.ts.map +1 -0
- package/out/tools/fetch/cordis.js +208 -0
- package/out/tools/fetch/cordis.js.map +1 -0
- package/out/tools/fetch/download/manifest.d.ts +27 -18
- package/out/tools/fetch/download/manifest.d.ts.map +1 -1
- package/out/tools/fetch/download/manifest.js +20 -13
- package/out/tools/fetch/download/manifest.js.map +1 -1
- package/out/tools/fetch/download/network.d.ts +48 -27
- package/out/tools/fetch/download/network.d.ts.map +1 -1
- package/out/tools/fetch/download/network.js +26 -16
- package/out/tools/fetch/download/network.js.map +1 -1
- package/out/tools/fetch/download/retry.d.ts +16 -15
- package/out/tools/fetch/download/retry.d.ts.map +1 -1
- package/out/tools/fetch/download/retry.js +24 -24
- package/out/tools/fetch/download/retry.js.map +1 -1
- package/out/tools/fetch/{download/index.d.ts → download.d.ts} +1 -1
- package/out/tools/fetch/download.d.ts.map +1 -0
- package/out/tools/fetch/{download/index.js → download.js} +1 -1
- package/out/tools/fetch/download.js.map +1 -0
- package/out/tools/fetch/geonames/dump.d.ts +50 -32
- package/out/tools/fetch/geonames/dump.d.ts.map +1 -1
- package/out/tools/fetch/geonames/dump.js +52 -42
- package/out/tools/fetch/geonames/dump.js.map +1 -1
- package/out/tools/fetch/geonames/postal.d.ts +14 -49
- package/out/tools/fetch/geonames/postal.d.ts.map +1 -1
- package/out/tools/fetch/geonames/postal.js +17 -56
- package/out/tools/fetch/geonames/postal.js.map +1 -1
- package/out/tools/fetch/gleif.d.ts +137 -0
- package/out/tools/fetch/gleif.d.ts.map +1 -0
- package/out/tools/fetch/gleif.js +220 -0
- package/out/tools/fetch/gleif.js.map +1 -0
- package/out/tools/fetch/header.d.ts +41 -0
- package/out/tools/fetch/header.d.ts.map +1 -0
- package/out/tools/fetch/header.js +59 -0
- package/out/tools/fetch/header.js.map +1 -0
- package/out/tools/fetch/inspire-addresses.d.ts +249 -0
- package/out/tools/fetch/inspire-addresses.d.ts.map +1 -0
- package/out/tools/fetch/inspire-addresses.js +276 -0
- package/out/tools/fetch/inspire-addresses.js.map +1 -0
- package/out/tools/fetch/openaddresses.d.ts +1 -4
- package/out/tools/fetch/openaddresses.d.ts.map +1 -1
- package/out/tools/fetch/openaddresses.js +19 -98
- package/out/tools/fetch/openaddresses.js.map +1 -1
- package/out/tools/fetch/ourairports.d.ts +6 -33
- package/out/tools/fetch/ourairports.d.ts.map +1 -1
- package/out/tools/fetch/ourairports.js +14 -47
- package/out/tools/fetch/ourairports.js.map +1 -1
- package/out/tools/fetch/ppd.d.ts +4 -3
- package/out/tools/fetch/ppd.d.ts.map +1 -1
- package/out/tools/fetch/ppd.js +10 -7
- package/out/tools/fetch/ppd.js.map +1 -1
- package/out/tools/fetch/vlaanderen-ad.d.ts +131 -0
- package/out/tools/fetch/vlaanderen-ad.d.ts.map +1 -0
- package/out/tools/fetch/vlaanderen-ad.js +293 -0
- package/out/tools/fetch/vlaanderen-ad.js.map +1 -0
- package/out/tools/fetch/wfs-harvest.d.ts +410 -0
- package/out/tools/fetch/wfs-harvest.d.ts.map +1 -0
- package/out/tools/fetch/wfs-harvest.js +522 -0
- package/out/tools/fetch/wfs-harvest.js.map +1 -0
- package/out/tools/fetch/wikidata-subvenue.d.ts +32 -100
- package/out/tools/fetch/wikidata-subvenue.d.ts.map +1 -1
- package/out/tools/fetch/wikidata-subvenue.js +27 -122
- package/out/tools/fetch/wikidata-subvenue.js.map +1 -1
- package/out/tools/fetch/zip-archive.d.ts +54 -0
- package/out/tools/fetch/zip-archive.d.ts.map +1 -0
- package/out/tools/fetch/zip-archive.js +58 -0
- package/out/tools/fetch/zip-archive.js.map +1 -0
- package/out/tools/fetch.d.ts +140 -0
- package/out/tools/fetch.d.ts.map +1 -0
- package/out/tools/fetch.js +136 -0
- package/out/tools/fetch.js.map +1 -0
- package/out/tools/golden/expand.d.ts +28 -13
- package/out/tools/golden/expand.d.ts.map +1 -1
- package/out/tools/golden/expand.js +50 -36
- package/out/tools/golden/expand.js.map +1 -1
- package/out/tools/golden/promote.d.ts +13 -8
- package/out/tools/golden/promote.d.ts.map +1 -1
- package/out/tools/golden/promote.js +33 -28
- package/out/tools/golden/promote.js.map +1 -1
- package/out/tools/golden/relabel-street/directory.d.ts +24 -9
- package/out/tools/golden/relabel-street/directory.d.ts.map +1 -1
- package/out/tools/golden/relabel-street/directory.js +41 -30
- package/out/tools/golden/relabel-street/directory.js.map +1 -1
- package/out/tools/golden/relabel-street/row.d.ts +17 -69
- package/out/tools/golden/relabel-street/row.d.ts.map +1 -1
- package/out/tools/golden/relabel-street/row.js +16 -74
- package/out/tools/golden/relabel-street/row.js.map +1 -1
- package/out/tools/golden/{relabel-street/index.d.ts → relabel-street.d.ts} +1 -1
- package/out/tools/golden/relabel-street.d.ts.map +1 -0
- package/out/tools/golden/{relabel-street/index.js → relabel-street.js} +1 -1
- package/out/tools/golden/relabel-street.js.map +1 -0
- package/out/tools/ingest-csv.d.ts +19 -15
- package/out/tools/ingest-csv.d.ts.map +1 -1
- package/out/tools/ingest-csv.js +39 -43
- package/out/tools/ingest-csv.js.map +1 -1
- package/out/tools/jsonl-to-parquet.d.ts +15 -28
- package/out/tools/jsonl-to-parquet.d.ts.map +1 -1
- package/out/tools/jsonl-to-parquet.js +49 -91
- package/out/tools/jsonl-to-parquet.js.map +1 -1
- package/out/tools/lint/recipe-output/vocab.d.ts +77 -0
- package/out/tools/lint/recipe-output/vocab.d.ts.map +1 -0
- package/out/tools/lint/{slice → recipe-output}/vocab.js +54 -69
- package/out/tools/lint/recipe-output/vocab.js.map +1 -0
- package/out/tools/lint/recipe-output.d.ts +73 -0
- package/out/tools/lint/recipe-output.d.ts.map +1 -0
- package/out/tools/lint/{slice/index.js → recipe-output.js} +76 -96
- package/out/tools/lint/recipe-output.js.map +1 -0
- package/out/tools/migrate/overlay-parquet.d.ts +30 -0
- package/out/tools/migrate/overlay-parquet.d.ts.map +1 -0
- package/out/tools/migrate/overlay-parquet.js +141 -0
- package/out/tools/migrate/overlay-parquet.js.map +1 -0
- package/out/tools/migrate/recipe-output.d.ts +35 -0
- package/out/tools/migrate/recipe-output.d.ts.map +1 -0
- package/out/tools/migrate/recipe-output.js +124 -0
- package/out/tools/migrate/recipe-output.js.map +1 -0
- package/out/tools/migrate/source-names.d.ts +52 -0
- package/out/tools/migrate/source-names.d.ts.map +1 -0
- package/out/tools/migrate/source-names.js +105 -0
- package/out/tools/migrate/source-names.js.map +1 -0
- package/out/tools/overlay/kryptonite.d.ts +33 -0
- package/out/tools/overlay/kryptonite.d.ts.map +1 -0
- package/out/tools/{slice → overlay}/kryptonite.js +37 -28
- package/out/tools/overlay/kryptonite.js.map +1 -0
- package/out/tools/overlay/manifest.d.ts +142 -0
- package/out/tools/overlay/manifest.d.ts.map +1 -0
- package/out/tools/overlay/manifest.js +260 -0
- package/out/tools/overlay/manifest.js.map +1 -0
- package/out/tools/overlay/merge-source.d.ts +73 -0
- package/out/tools/overlay/merge-source.d.ts.map +1 -0
- package/out/tools/overlay/merge-source.js +63 -0
- package/out/tools/overlay/merge-source.js.map +1 -0
- package/out/tools/overlay/split-slice.d.ts +66 -0
- package/out/tools/overlay/split-slice.d.ts.map +1 -0
- package/out/tools/overlay/split-slice.js +78 -0
- package/out/tools/overlay/split-slice.js.map +1 -0
- package/out/tools/overlay/translit.d.ts +54 -0
- package/out/tools/overlay/translit.d.ts.map +1 -0
- package/out/tools/{slice → overlay}/translit.js +59 -48
- package/out/tools/overlay/translit.js.map +1 -0
- package/out/tools/overture-subvenue.d.ts +16 -75
- package/out/tools/overture-subvenue.d.ts.map +1 -1
- package/out/tools/overture-subvenue.js +7 -74
- package/out/tools/overture-subvenue.js.map +1 -1
- package/out/tools/postcode-triples.d.ts +77 -126
- package/out/tools/postcode-triples.d.ts.map +1 -1
- package/out/tools/postcode-triples.js +198 -192
- package/out/tools/postcode-triples.js.map +1 -1
- package/out/tools/source-register/build.d.ts +145 -0
- package/out/tools/source-register/build.d.ts.map +1 -0
- package/out/tools/source-register/build.js +515 -0
- package/out/tools/source-register/build.js.map +1 -0
- package/out/tools/sub/venue/head-nouns.d.ts +9 -38
- package/out/tools/sub/venue/head-nouns.d.ts.map +1 -1
- package/out/tools/sub/venue/head-nouns.js +37 -74
- package/out/tools/sub/venue/head-nouns.js.map +1 -1
- package/out/tools/sub/venue/lexicon.d.ts +55 -82
- package/out/tools/sub/venue/lexicon.d.ts.map +1 -1
- package/out/tools/sub/venue/lexicon.js +43 -87
- package/out/tools/sub/venue/lexicon.js.map +1 -1
- package/out/tools/sub/venue/wikidata.d.ts +8 -6
- package/out/tools/sub/venue/wikidata.d.ts.map +1 -1
- package/out/tools/sub/venue/wikidata.js +12 -9
- package/out/tools/sub/venue/wikidata.js.map +1 -1
- package/out/tools.d.ts +31 -0
- package/out/tools.d.ts.map +1 -0
- package/out/tools.js +31 -0
- package/out/tools.js.map +1 -0
- package/out/tw/tools/fetch/gcis.d.ts +9 -3
- package/out/tw/tools/fetch/gcis.d.ts.map +1 -1
- package/out/tw/tools/fetch/gcis.js +16 -10
- package/out/tw/tools/fetch/gcis.js.map +1 -1
- package/out/types.d.ts +270 -101
- package/out/types.d.ts.map +1 -1
- package/out/types.js +133 -9
- package/out/types.js.map +1 -1
- package/out/us/adapters/fcc-bdc/adapter.d.ts +18 -36
- package/out/us/adapters/fcc-bdc/adapter.d.ts.map +1 -1
- package/out/us/adapters/fcc-bdc/adapter.js +25 -38
- package/out/us/adapters/fcc-bdc/adapter.js.map +1 -1
- package/out/us/adapters/state/hi-schools/adapter.d.ts +12 -11
- package/out/us/adapters/state/hi-schools/adapter.d.ts.map +1 -1
- package/out/us/adapters/state/hi-schools/adapter.js +26 -16
- package/out/us/adapters/state/hi-schools/adapter.js.map +1 -1
- package/out/us/adapters/state/hi-schools/workbook.d.ts +7 -2
- package/out/us/adapters/state/hi-schools/workbook.d.ts.map +1 -1
- package/out/us/adapters/state/hi-schools/workbook.js +3 -1
- package/out/us/adapters/state/hi-schools/workbook.js.map +1 -1
- package/out/us/adapters/state/ia-contractors/adapter.d.ts +13 -6
- package/out/us/adapters/state/ia-contractors/adapter.d.ts.map +1 -1
- package/out/us/adapters/state/ia-contractors/adapter.js +27 -14
- package/out/us/adapters/state/ia-contractors/adapter.js.map +1 -1
- package/out/us/adapters/state/ny-notaries/adapter.d.ts +7 -6
- package/out/us/adapters/state/ny-notaries/adapter.d.ts.map +1 -1
- package/out/us/adapters/state/ny-notaries/adapter.js +24 -22
- package/out/us/adapters/state/ny-notaries/adapter.js.map +1 -1
- package/out/us/adapters/state/tx-notaries/adapter.d.ts +8 -7
- package/out/us/adapters/state/tx-notaries/adapter.d.ts.map +1 -1
- package/out/us/adapters/state/tx-notaries/adapter.js +21 -14
- package/out/us/adapters/state/tx-notaries/adapter.js.map +1 -1
- package/out/us/adapters/tiger/adapter.d.ts +10 -34
- package/out/us/adapters/tiger/adapter.d.ts.map +1 -1
- package/out/us/adapters/tiger/adapter.js +18 -42
- package/out/us/adapters/tiger/adapter.js.map +1 -1
- package/out/us/adapters/tiger/street-decompose.d.ts +6 -13
- package/out/us/adapters/tiger/street-decompose.d.ts.map +1 -1
- package/out/us/adapters/tiger/street-decompose.js +7 -17
- package/out/us/adapters/tiger/street-decompose.js.map +1 -1
- package/out/us/adapters/usgov/hrsa-fqhc/adapter.d.ts +26 -20
- package/out/us/adapters/usgov/hrsa-fqhc/adapter.d.ts.map +1 -1
- package/out/us/adapters/usgov/hrsa-fqhc/adapter.js +41 -29
- package/out/us/adapters/usgov/hrsa-fqhc/adapter.js.map +1 -1
- package/out/us/adapters/usgov/imls-pls/adapter.d.ts +8 -7
- package/out/us/adapters/usgov/imls-pls/adapter.d.ts.map +1 -1
- package/out/us/adapters/usgov/imls-pls/adapter.js +25 -18
- package/out/us/adapters/usgov/imls-pls/adapter.js.map +1 -1
- package/out/us/adapters/usgov/irs-bmf/adapter.d.ts +11 -10
- package/out/us/adapters/usgov/irs-bmf/adapter.d.ts.map +1 -1
- package/out/us/adapters/usgov/irs-bmf/adapter.js +32 -22
- package/out/us/adapters/usgov/irs-bmf/adapter.js.map +1 -1
- package/out/us/adapters/usgov/nad/adapter.d.ts +11 -31
- package/out/us/adapters/usgov/nad/adapter.d.ts.map +1 -1
- package/out/us/adapters/usgov/nad/adapter.js +51 -105
- package/out/us/adapters/usgov/nad/adapter.js.map +1 -1
- package/out/us/adapters/usgov/nppes/adapter.d.ts +12 -22
- package/out/us/adapters/usgov/nppes/adapter.d.ts.map +1 -1
- package/out/us/adapters/usgov/nppes/adapter.js +62 -32
- package/out/us/adapters/usgov/nppes/adapter.js.map +1 -1
- package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.d.ts +16 -15
- package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.d.ts.map +1 -1
- package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.js +36 -26
- package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.js.map +1 -1
- package/out/us/fips-state.d.ts +17 -8
- package/out/us/fips-state.d.ts.map +1 -1
- package/out/us/fips-state.js +17 -8
- package/out/us/fips-state.js.map +1 -1
- package/out/us/tools/fetch/hrsa.d.ts +3 -3
- package/out/us/tools/fetch/hrsa.d.ts.map +1 -1
- package/out/us/tools/fetch/hrsa.js +6 -7
- package/out/us/tools/fetch/hrsa.js.map +1 -1
- package/out/us/tools/fetch/imls-pls.d.ts +5 -16
- package/out/us/tools/fetch/imls-pls.d.ts.map +1 -1
- package/out/us/tools/fetch/imls-pls.js +16 -33
- package/out/us/tools/fetch/imls-pls.js.map +1 -1
- package/out/us/tools/fetch/nad.d.ts +22 -10
- package/out/us/tools/fetch/nad.d.ts.map +1 -1
- package/out/us/tools/fetch/nad.js +29 -24
- package/out/us/tools/fetch/nad.js.map +1 -1
- package/out/us/tools/fetch/nppes.d.ts +6 -16
- package/out/us/tools/fetch/nppes.d.ts.map +1 -1
- package/out/us/tools/fetch/nppes.js +21 -33
- package/out/us/tools/fetch/nppes.js.map +1 -1
- package/out/us/tools/fetch/state/hi-schools.d.ts +8 -5
- package/out/us/tools/fetch/state/hi-schools.d.ts.map +1 -1
- package/out/us/tools/fetch/state/hi-schools.js +15 -13
- package/out/us/tools/fetch/state/hi-schools.js.map +1 -1
- package/out/us/tools/fetch/state/sources.d.ts +8 -7
- package/out/us/tools/fetch/state/sources.d.ts.map +1 -1
- package/out/us/tools/fetch/state/sources.js +8 -9
- package/out/us/tools/fetch/state/sources.js.map +1 -1
- package/out/us/tools/fetch/tiger-full.d.ts +1 -14
- package/out/us/tools/fetch/tiger-full.d.ts.map +1 -1
- package/out/us/tools/fetch/tiger-full.js +15 -54
- package/out/us/tools/fetch/tiger-full.js.map +1 -1
- package/out/utils/align.d.ts +24 -19
- package/out/utils/align.d.ts.map +1 -1
- package/out/utils/align.js +27 -42
- package/out/utils/align.js.map +1 -1
- package/out/utils/cooccurrence-stats.d.ts +58 -0
- package/out/utils/cooccurrence-stats.d.ts.map +1 -0
- package/out/utils/cooccurrence-stats.js +62 -0
- package/out/utils/cooccurrence-stats.js.map +1 -0
- package/out/utils/golden.d.ts +21 -31
- package/out/utils/golden.d.ts.map +1 -1
- package/out/utils/golden.js +28 -44
- package/out/utils/golden.js.map +1 -1
- package/out/utils/license.d.ts +158 -21
- package/out/utils/license.d.ts.map +1 -1
- package/out/utils/license.js +156 -26
- package/out/utils/license.js.map +1 -1
- package/out/utils/split.d.ts +66 -70
- package/out/utils/split.d.ts.map +1 -1
- package/out/utils/split.js +158 -69
- package/out/utils/split.js.map +1 -1
- package/out/utils/tokenize.d.ts +16 -28
- package/out/utils/tokenize.d.ts.map +1 -1
- package/out/utils/tokenize.js +18 -31
- package/out/utils/tokenize.js.map +1 -1
- package/out/utils/wof-json.d.ts +88 -62
- package/out/utils/wof-json.d.ts.map +1 -1
- package/out/utils/wof-json.js +76 -55
- package/out/utils/wof-json.js.map +1 -1
- package/out/{utils/index.js → utils.d.ts} +1 -2
- package/out/utils.d.ts.map +1 -0
- package/out/{utils/index.d.ts → utils.js} +1 -2
- package/out/utils.js.map +1 -0
- package/out/ve/recipes/reviewed-postcode-tail.d.ts +25 -7
- package/out/ve/recipes/reviewed-postcode-tail.d.ts.map +1 -1
- package/out/ve/recipes/reviewed-postcode-tail.js +33 -12
- package/out/ve/recipes/reviewed-postcode-tail.js.map +1 -1
- package/package.json +46 -480
- package/lib/adapters/index.ts +0 -160
- package/lib/adapters/synth-po-box/adapter.ts +0 -204
- package/lib/adapters/utils/index.ts +0 -307
- package/lib/recipes/bare/postcode/index.ts +0 -327
- package/lib/recipes/sub/venue/index.ts +0 -997
- package/lib/synthesizers/locale.ts +0 -261
- package/lib/test-kit/index.ts +0 -100
- package/lib/tools/align-slice.ts +0 -68
- package/lib/tools/fetch/index.ts +0 -174
- package/lib/tools/gb-title-case.ts +0 -69
- package/lib/tools/index.ts +0 -28
- package/lib/tools/lint/slice/vocab.ts +0 -376
- package/lib/tools/overlay-manifest.ts +0 -215
- package/lib/tools/sub/venue/harvest.ts +0 -234
- package/lib/tools/sub/venue/surfaces.ts +0 -95
- package/lib/tools/sub/venue/table.ts +0 -281
- package/lib/utils/parquet.ts +0 -582
- package/out/adapters/index.d.ts +0 -51
- package/out/adapters/index.d.ts.map +0 -1
- package/out/adapters/index.js +0 -97
- package/out/adapters/index.js.map +0 -1
- package/out/adapters/synth-po-box/adapter.d.ts +0 -67
- package/out/adapters/synth-po-box/adapter.d.ts.map +0 -1
- package/out/adapters/synth-po-box/adapter.js.map +0 -1
- package/out/adapters/utils/index.d.ts +0 -191
- package/out/adapters/utils/index.d.ts.map +0 -1
- package/out/adapters/utils/index.js +0 -206
- package/out/adapters/utils/index.js.map +0 -1
- package/out/fr/adapters/ban/street-decompose.d.ts.map +0 -1
- package/out/fr/adapters/ban/street-decompose.js.map +0 -1
- package/out/no/recipes/street/index.d.ts +0 -18
- package/out/no/recipes/street/index.d.ts.map +0 -1
- package/out/no/recipes/street/index.js.map +0 -1
- package/out/recipes/bare/postcode/index.d.ts +0 -62
- package/out/recipes/bare/postcode/index.d.ts.map +0 -1
- package/out/recipes/bare/postcode/index.js.map +0 -1
- package/out/recipes/index.d.ts +0 -24
- package/out/recipes/index.d.ts.map +0 -1
- package/out/recipes/index.js.map +0 -1
- package/out/recipes/po/box/index.d.ts +0 -17
- package/out/recipes/po/box/index.d.ts.map +0 -1
- package/out/recipes/po/box/index.js.map +0 -1
- package/out/recipes/sub/venue/index.d.ts +0 -270
- package/out/recipes/sub/venue/index.d.ts.map +0 -1
- package/out/recipes/sub/venue/index.js +0 -728
- package/out/recipes/sub/venue/index.js.map +0 -1
- package/out/synthesizers/locale.d.ts +0 -116
- package/out/synthesizers/locale.d.ts.map +0 -1
- package/out/synthesizers/locale.js +0 -150
- package/out/synthesizers/locale.js.map +0 -1
- package/out/test-kit/index.d.ts +0 -48
- package/out/test-kit/index.d.ts.map +0 -1
- package/out/test-kit/index.js +0 -78
- package/out/test-kit/index.js.map +0 -1
- package/out/tools/align-slice.d.ts +0 -7
- package/out/tools/align-slice.d.ts.map +0 -1
- package/out/tools/align-slice.js +0 -55
- package/out/tools/align-slice.js.map +0 -1
- package/out/tools/fetch/download/index.d.ts.map +0 -1
- package/out/tools/fetch/download/index.js.map +0 -1
- package/out/tools/fetch/index.d.ts +0 -171
- package/out/tools/fetch/index.d.ts.map +0 -1
- package/out/tools/fetch/index.js +0 -170
- package/out/tools/fetch/index.js.map +0 -1
- package/out/tools/gb-title-case.d.ts +0 -2
- package/out/tools/gb-title-case.d.ts.map +0 -1
- package/out/tools/gb-title-case.js +0 -65
- package/out/tools/gb-title-case.js.map +0 -1
- package/out/tools/golden/relabel-street/index.d.ts.map +0 -1
- package/out/tools/golden/relabel-street/index.js.map +0 -1
- package/out/tools/index.d.ts +0 -28
- package/out/tools/index.d.ts.map +0 -1
- package/out/tools/index.js +0 -28
- package/out/tools/index.js.map +0 -1
- package/out/tools/lint/slice/index.d.ts +0 -93
- package/out/tools/lint/slice/index.d.ts.map +0 -1
- package/out/tools/lint/slice/index.js.map +0 -1
- package/out/tools/lint/slice/vocab.d.ts +0 -90
- package/out/tools/lint/slice/vocab.d.ts.map +0 -1
- package/out/tools/lint/slice/vocab.js.map +0 -1
- package/out/tools/overlay-manifest.d.ts +0 -89
- package/out/tools/overlay-manifest.d.ts.map +0 -1
- package/out/tools/overlay-manifest.js +0 -131
- package/out/tools/overlay-manifest.js.map +0 -1
- package/out/tools/slice/kryptonite.d.ts +0 -32
- package/out/tools/slice/kryptonite.d.ts.map +0 -1
- package/out/tools/slice/kryptonite.js.map +0 -1
- package/out/tools/slice/translit.d.ts +0 -51
- package/out/tools/slice/translit.d.ts.map +0 -1
- package/out/tools/slice/translit.js.map +0 -1
- package/out/tools/sub/venue/harvest.d.ts +0 -100
- package/out/tools/sub/venue/harvest.d.ts.map +0 -1
- package/out/tools/sub/venue/harvest.js +0 -168
- package/out/tools/sub/venue/harvest.js.map +0 -1
- package/out/tools/sub/venue/promotions.d.ts +0 -94
- package/out/tools/sub/venue/promotions.d.ts.map +0 -1
- package/out/tools/sub/venue/promotions.js.map +0 -1
- package/out/tools/sub/venue/surfaces.d.ts +0 -45
- package/out/tools/sub/venue/surfaces.d.ts.map +0 -1
- package/out/tools/sub/venue/surfaces.js +0 -77
- package/out/tools/sub/venue/surfaces.js.map +0 -1
- package/out/tools/sub/venue/table.d.ts +0 -229
- package/out/tools/sub/venue/table.d.ts.map +0 -1
- package/out/tools/sub/venue/table.js +0 -108
- package/out/tools/sub/venue/table.js.map +0 -1
- package/out/utils/index.d.ts.map +0 -1
- package/out/utils/index.js.map +0 -1
- package/out/utils/parquet.d.ts +0 -178
- package/out/utils/parquet.d.ts.map +0 -1
- package/out/utils/parquet.js +0 -371
- package/out/utils/parquet.js.map +0 -1
- package/out/utils/slice-stats.d.ts +0 -52
- package/out/utils/slice-stats.d.ts.map +0 -1
- package/out/utils/slice-stats.js +0 -58
- package/out/utils/slice-stats.js.map +0 -1
- /package/lib/tools/fetch/{download/index.ts → download.ts} +0 -0
- /package/lib/tools/golden/{relabel-street/index.ts → relabel-street.ts} +0 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Harvests Estonia's INSPIRE Addresses (AD) theme into the newline-delimited JSON file that
|
|
7
|
+
* `#ee/adapters/ads/adapter` reads.
|
|
8
|
+
*
|
|
9
|
+
* Maa- ja Ruumiamet publishes the Aadressiandmete süsteem through GeoServer at
|
|
10
|
+
* {@linkcode EE_ADS_WFS}. The service's dataset record states Creative Commons CC0 1.0 in
|
|
11
|
+
* `otherConstraints`, which the address-source register elected under `spdx` `CC0-1.0`. CC0 reserves
|
|
12
|
+
* no act, so paging the service and storing what it returns is granted and the harvest needs no
|
|
13
|
+
* attribution clause.
|
|
14
|
+
*
|
|
15
|
+
* `#tools/fetch/inspire-addresses` owns the capabilities read and the GeoJSON page read, and
|
|
16
|
+
* `#tools/fetch/wfs-harvest` owns the appending, the manifest and the resumption. This module states
|
|
17
|
+
* what is particular to Estonia, which is four measurements taken on 2026-10-02:
|
|
18
|
+
*
|
|
19
|
+
* 1. The payload needs no component resolution. GeoServer flattens the application schema here, so
|
|
20
|
+
* each `component<n>_xlink_href` has a sibling `component<n>_xlink_title` carrying the referenced
|
|
21
|
+
* feature's value, and the adapter reads the titles. The harvest therefore takes one feature type
|
|
22
|
+
* rather than the five a harmonized INSPIRE service splits an address across.
|
|
23
|
+
* 2. `resultType=hits` at `startIndex=1` reports `numberMatched="729973"` and a feature page reports
|
|
24
|
+
* the same number, so this service's count is real. It is read through
|
|
25
|
+
* `readCheckedWFSFeatureCount`, which proves the number against a page before a caller uses it,
|
|
26
|
+
* and no count is written into this file.
|
|
27
|
+
* 3. The service honors a sort. `ImplementsSorting` is `TRUE`, `sortBy=gml_id` answers HTTP 200 and
|
|
28
|
+
* `sortBy=gml_id D` returns the type's last features first, which is what proves the parameter is
|
|
29
|
+
* applied rather than accepted and dropped. `sortBy=gml:identifier` and `sortBy=inspireId` answer
|
|
30
|
+
* HTTP 400 `Illegal property name`, so the sort property is one of the flattened names.
|
|
31
|
+
* 4. A `count=10000` page of `application/json` is 31,198,909 bytes and takes about 6 seconds. At
|
|
32
|
+
* 729,973 features that is 73 pages and about 2.3 GB, plus three requests for the capabilities and
|
|
33
|
+
* the checked count.
|
|
34
|
+
*
|
|
35
|
+
* The harvest writes one feature per line, which is what lets the adapter stream the whole extract
|
|
36
|
+
* without holding a page. The `FeatureCollection` envelope is dropped: its counts describe one page
|
|
37
|
+
* and the manifest records them per page instead.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
import { readCheckedWFSFeatureCount, type APIClient, type ReadWFSFeatureCountOptions } from "@mailwoman/core/api"
|
|
41
|
+
import { stringifyJSON } from "@mailwoman/core/json"
|
|
42
|
+
import type { PathBuilderLike } from "path-ts"
|
|
43
|
+
|
|
44
|
+
import type { BaseFetchOptions, FetchSummary } from "#tools/fetch/download"
|
|
45
|
+
import { readFeaturePage, readWFSCapabilities } from "#tools/fetch/inspire-addresses"
|
|
46
|
+
import {
|
|
47
|
+
harvestPagedWFS,
|
|
48
|
+
runWFSHarvest,
|
|
49
|
+
statedFeatureCount,
|
|
50
|
+
type HarvestedPayload,
|
|
51
|
+
type WFSHarvestManifest,
|
|
52
|
+
} from "#tools/fetch/wfs-harvest"
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* The service this module harvests.
|
|
56
|
+
*/
|
|
57
|
+
export const EE_ADS_WFS = "https://inspire.geoportaal.ee/geoserver/AD_Address/wfs"
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* The qualified name the service publishes its addresses under.
|
|
61
|
+
*
|
|
62
|
+
* Read from the capabilities document per run.
|
|
63
|
+
* This constant is the name a refusal quotes when the document stops publishing an Addresses type.
|
|
64
|
+
*/
|
|
65
|
+
export const EE_ADS_TYPE_NAME = "AD_Address:AD.Address"
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* The property the pages are ordered by.
|
|
69
|
+
*
|
|
70
|
+
* A flattened property name, because the service refuses `gml:identifier`
|
|
71
|
+
* and `inspireId` with HTTP 400 `Illegal property name`.
|
|
72
|
+
*/
|
|
73
|
+
export const EE_ADS_SORT_BY = "gml_id"
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Features per page.
|
|
77
|
+
*
|
|
78
|
+
* The service's `CountDefault` is 1,000,000 and it honors `count=10000`, which is where the page
|
|
79
|
+
* size is set: a 10,000-feature page is 31,198,909 bytes, and a larger page buys fewer requests
|
|
80
|
+
* at the cost of holding a larger body in memory and losing more work when one request fails.
|
|
81
|
+
*/
|
|
82
|
+
export const EE_ADS_PAGE_SIZE = 10_000
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* The file the adapter's `inputPath` points at, inside the harvest directory.
|
|
86
|
+
*/
|
|
87
|
+
export const EE_ADS_HARVEST_FILE = "address.jsonl"
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* The adapter slug this module fetches for, and the directory it writes under.
|
|
91
|
+
*/
|
|
92
|
+
const SLUG = "ads"
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Names the service in every refusal this module raises.
|
|
96
|
+
*/
|
|
97
|
+
const CONTEXT = "ee ads wfs"
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* The license the address-source register elected for this publisher.
|
|
101
|
+
*/
|
|
102
|
+
const LICENSE = "CC0-1.0"
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* The spacing between requests.
|
|
106
|
+
*
|
|
107
|
+
* The service answers a 10,000-feature page in about 6 seconds, so this is not what limits the harvest.
|
|
108
|
+
* It bounds the harvest to one request per second against a government host whose published terms
|
|
109
|
+
* state no rate, which the shorter requests — the capabilities and the count — would otherwise exceed.
|
|
110
|
+
*/
|
|
111
|
+
const MIN_REQUEST_INTERVAL_MS = 1000
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* One page of features as newline-delimited JSON, one feature per line.
|
|
115
|
+
*
|
|
116
|
+
* A trailing newline on a non-empty page, so the next page's first feature starts its own line.
|
|
117
|
+
*/
|
|
118
|
+
export function featuresAsJSONL(features: readonly unknown[]): string {
|
|
119
|
+
if (!features.length) return ""
|
|
120
|
+
|
|
121
|
+
return `${features.map((feature) => stringifyJSON(feature)).join("\n")}\n`
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export interface HarvestADSOptions {
|
|
125
|
+
/**
|
|
126
|
+
* Where the harvest is written.
|
|
127
|
+
*
|
|
128
|
+
* The adapter reads {@linkcode EE_ADS_HARVEST_FILE} inside it.
|
|
129
|
+
*/
|
|
130
|
+
outputDir: PathBuilderLike
|
|
131
|
+
/**
|
|
132
|
+
* Features per page, defaulting to {@linkcode EE_ADS_PAGE_SIZE}.
|
|
133
|
+
*/
|
|
134
|
+
pageSize?: number
|
|
135
|
+
/**
|
|
136
|
+
* Stop once the manifest holds this many pages, for a probe rather than a full harvest.
|
|
137
|
+
*/
|
|
138
|
+
maxPages?: number
|
|
139
|
+
signal?: AbortSignal
|
|
140
|
+
report?: (line: string) => void
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Harvests the service into `options.outputDir` and writes the manifest beside the data file.
|
|
145
|
+
*
|
|
146
|
+
* The capabilities document is read first, so the type name, the JSON format
|
|
147
|
+
* and the paging support come from the service rather than from this file.
|
|
148
|
+
* A service that stops publishing any of the three raises here rather than
|
|
149
|
+
* producing a harvest of the wrong thing.
|
|
150
|
+
*
|
|
151
|
+
* @returns The manifest as written.
|
|
152
|
+
*/
|
|
153
|
+
export async function harvestADSEE(
|
|
154
|
+
client: Pick<APIClient, "fetch">,
|
|
155
|
+
options: HarvestADSOptions
|
|
156
|
+
): Promise<WFSHarvestManifest> {
|
|
157
|
+
const capabilities = await readWFSCapabilities(client, { wfsURL: EE_ADS_WFS, context: CONTEXT })
|
|
158
|
+
const typeName = capabilities.typeNames.Address
|
|
159
|
+
|
|
160
|
+
if (!typeName) {
|
|
161
|
+
throw new Error(
|
|
162
|
+
`${CONTEXT}: the capabilities document publishes no Addresses feature type, so ${EE_ADS_TYPE_NAME} could not be confirmed`
|
|
163
|
+
)
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (!capabilities.jsonFormat) {
|
|
167
|
+
throw new Error(
|
|
168
|
+
`${CONTEXT}: the service advertises no JSON output format, and the adapter reads newline-delimited JSON — it advertises ${capabilities.outputFormats.join(", ")}`
|
|
169
|
+
)
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
if (!capabilities.supportsPaging) {
|
|
173
|
+
throw new Error(
|
|
174
|
+
`${CONTEXT}: the service does not advertise ImplementsResultPaging, and such a service answers every page with the first, so a paged harvest would store one page repeated`
|
|
175
|
+
)
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
const countOptions: ReadWFSFeatureCountOptions = { wfsURL: EE_ADS_WFS, typeNames: typeName, context: CONTEXT }
|
|
179
|
+
|
|
180
|
+
// The cap comes from the service's own `CountDefault`, because a `numberMatched` equal
|
|
181
|
+
// to it cannot be told apart from the largest page the service will serve.
|
|
182
|
+
const featureCount = statedFeatureCount(
|
|
183
|
+
await readCheckedWFSFeatureCount(client, countOptions),
|
|
184
|
+
capabilities.countDefault
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
options.report?.(` Feature count: ${featureCount.count ?? "not stated"} — ${featureCount.because}`)
|
|
188
|
+
|
|
189
|
+
return await harvestPagedWFS({
|
|
190
|
+
context: CONTEXT,
|
|
191
|
+
source: SLUG,
|
|
192
|
+
outputDir: options.outputDir,
|
|
193
|
+
filename: EE_ADS_HARVEST_FILE,
|
|
194
|
+
request: {
|
|
195
|
+
wfsURL: EE_ADS_WFS,
|
|
196
|
+
typeName,
|
|
197
|
+
outputFormat: capabilities.jsonFormat,
|
|
198
|
+
sortBy: EE_ADS_SORT_BY,
|
|
199
|
+
},
|
|
200
|
+
license: LICENSE,
|
|
201
|
+
// CC0 reserves no act, so the elected terms require none.
|
|
202
|
+
attribution: "",
|
|
203
|
+
featureCount,
|
|
204
|
+
pageSize: options.pageSize ?? EE_ADS_PAGE_SIZE,
|
|
205
|
+
maxPages: options.maxPages,
|
|
206
|
+
signal: options.signal,
|
|
207
|
+
report: options.report,
|
|
208
|
+
readPage: async ({ startIndex, count }): Promise<HarvestedPayload> => {
|
|
209
|
+
const page = await readFeaturePage(client, {
|
|
210
|
+
wfsURL: EE_ADS_WFS,
|
|
211
|
+
typeName,
|
|
212
|
+
outputFormat: capabilities.jsonFormat ?? "",
|
|
213
|
+
count,
|
|
214
|
+
startIndex,
|
|
215
|
+
supportsPaging: capabilities.supportsPaging,
|
|
216
|
+
sortBy: EE_ADS_SORT_BY,
|
|
217
|
+
context: CONTEXT,
|
|
218
|
+
})
|
|
219
|
+
|
|
220
|
+
return {
|
|
221
|
+
payload: featuresAsJSONL(page.features),
|
|
222
|
+
numberReturned: page.numberReturned,
|
|
223
|
+
numberMatched: page.numberMatched,
|
|
224
|
+
retrievedAt: page.timeStamp,
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
})
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export type FetchADSEEOptions = BaseFetchOptions &
|
|
231
|
+
Pick<HarvestADSOptions, "maxPages" | "pageSize" | "signal"> & {
|
|
232
|
+
/**
|
|
233
|
+
* An injected client, for a test that supplies its own transport.
|
|
234
|
+
*
|
|
235
|
+
* A caller that leaves it out gets a paced client of this module's own.
|
|
236
|
+
*/
|
|
237
|
+
client?: Pick<APIClient, "fetch">
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Harvests Estonia's addresses under `<outRoot>/ads/`, for `mailwoman corpus fetch ads-ee`.
|
|
242
|
+
*
|
|
243
|
+
* Re-runnable: a complete harvest whose file still hashes to the manifest's digest makes
|
|
244
|
+
* no request, and an interrupted one resumes at the page after the last that reached disk.
|
|
245
|
+
*/
|
|
246
|
+
export async function fetchADSEE(options: FetchADSEEOptions, report?: (line: string) => void): Promise<FetchSummary> {
|
|
247
|
+
const pageSize = options.pageSize ?? EE_ADS_PAGE_SIZE
|
|
248
|
+
|
|
249
|
+
return await runWFSHarvest(
|
|
250
|
+
{
|
|
251
|
+
slug: SLUG,
|
|
252
|
+
outRoot: options.outRoot,
|
|
253
|
+
filename: EE_ADS_HARVEST_FILE,
|
|
254
|
+
expect: { wfsURL: EE_ADS_WFS, sortBy: EE_ADS_SORT_BY, pageSize },
|
|
255
|
+
displayName: "ee-ads",
|
|
256
|
+
minRequestIntervalMs: MIN_REQUEST_INTERVAL_MS,
|
|
257
|
+
client: options.client,
|
|
258
|
+
maxPages: options.maxPages,
|
|
259
|
+
harvest: async (client) =>
|
|
260
|
+
await harvestADSEE(client, {
|
|
261
|
+
outputDir: options.outRoot(SLUG),
|
|
262
|
+
pageSize,
|
|
263
|
+
maxPages: options.maxPages,
|
|
264
|
+
signal: options.signal,
|
|
265
|
+
report,
|
|
266
|
+
}),
|
|
267
|
+
},
|
|
268
|
+
report
|
|
269
|
+
)
|
|
270
|
+
}
|
package/lib/env.ts
CHANGED
|
@@ -20,7 +20,9 @@ export const PublicCorpusEnvSchema = z.object({
|
|
|
20
20
|
})
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
|
-
* Credentials the corpus acquisition and golden-expansion tooling send.
|
|
23
|
+
* Credentials the corpus acquisition and golden-expansion tooling send.
|
|
24
|
+
*
|
|
25
|
+
* Never log their values.
|
|
24
26
|
*/
|
|
25
27
|
export const PrivateCorpusEnvSchema = z.object({
|
|
26
28
|
// OpenAddresses batch-download API token (`corpus/lib/tools/fetch/openaddresses.ts`).
|
|
@@ -45,6 +47,8 @@ export const PrivateCorpusEnvSchema = z.object({
|
|
|
45
47
|
export const $public = liveEnv(PublicCorpusEnvSchema, corePublic)
|
|
46
48
|
|
|
47
49
|
/**
|
|
48
|
-
* Live corpus credentials over core's.
|
|
50
|
+
* Live corpus credentials over core's.
|
|
51
|
+
*
|
|
52
|
+
* Never log their values.
|
|
49
53
|
*/
|
|
50
54
|
export const $private = liveEnv(PrivateCorpusEnvSchema, corePrivate)
|
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* `es-bizkaia`: the INSPIRE Addresses theme the Diputación Foral de Bizkaia publishes, read from its
|
|
7
|
+
* per-municipality archives together with the component features its WFS serves.
|
|
8
|
+
*
|
|
9
|
+
* The ATOM service at `https://apli.bizkaia.eus/apps/Danok/INSPIRE/addresses.xml` lists 112
|
|
10
|
+
* municipality entries, one zipped GML each. Catastro's national feed links this service rather than
|
|
11
|
+
* serving its data, which is why the publisher is a register of its own.
|
|
12
|
+
*
|
|
13
|
+
* The archives carry addresses alone, and that is what shapes this reader. Abadiño's
|
|
14
|
+
* `ES.BFA.AD.001.zip` holds one member, `ES.BFA.AD.gml`, whose 1,360 `ad:Address` features write
|
|
15
|
+
* 4,080 `ad:component` references and not one `ad:ThoroughfareName`, `ad:PostalDescriptor` or
|
|
16
|
+
* `ad:AdminUnitName` feature. Every reference is a stored-query URL on
|
|
17
|
+
* `https://geo.bizkaia.eus/arcgisserverinspire/…` addressing an `adComponent.<n>` the ATOM feed never
|
|
18
|
+
* publishes. A reader of the archive alone therefore writes every address in the province without
|
|
19
|
+
* its street, its postcode or its municipality.
|
|
20
|
+
*
|
|
21
|
+
* Those features are on the publisher's WFS, which serves the whole province in three requests. The
|
|
22
|
+
* service answers `ad:ThoroughfareName` with `numberMatched="6921"`, `ad:PostalDescriptor` with
|
|
23
|
+
* `96` and `ad:AdminUnitName` with `113`, and a `GetFeature` with `COUNT=10000` returns each type
|
|
24
|
+
* whole: 6,921 thoroughfare names arrive in one 13,916,056-byte document. One request per type is
|
|
25
|
+
* also the only way to read them. The capabilities document does not advertise
|
|
26
|
+
* `ImplementsResultPaging` and its `CountDefault` is 1,000, so a reader that paged a type would
|
|
27
|
+
* receive the first page again. Acquisition saves those three documents and the adapter reads a
|
|
28
|
+
* directory holding them beside the municipality archives.
|
|
29
|
+
*
|
|
30
|
+
* The join is therefore across files, and the index is complete before the first address is read:
|
|
31
|
+
* the first pass reads every input for component features and the second reads every input for
|
|
32
|
+
* addresses. An unresolved reference is a value the reader asked for and could not read, and it
|
|
33
|
+
* raises.
|
|
34
|
+
*
|
|
35
|
+
* Two of the publisher's own spellings decide what a row carries.
|
|
36
|
+
*
|
|
37
|
+
* A thoroughfare name is a cadastral field rather than a street name:
|
|
38
|
+
* `BO\TRAÑA-MATIENA(1)` is the street-type abbreviation `BO`, a backslash, the name, and the
|
|
39
|
+
* street's own sequence code in parentheses. All 6,921 take that form. The row keeps the
|
|
40
|
+
* abbreviation, as the Dirección General del Catastro's own rendered line does with `CL SANTIAGO
|
|
41
|
+
* APOSTOL`, writes a space where the cadastre writes its separator, and drops the sequence code,
|
|
42
|
+
* which is an identifier rather than part of the name.
|
|
43
|
+
*
|
|
44
|
+
* The house number is the last of the four dot-separated fields of the designator, and the
|
|
45
|
+
* designator is a cadastral code: `48.001.00026.003` is municipality 48001, street 00026 and number
|
|
46
|
+
* 003. All 1,360 of Abadiño's designators have exactly four fields, its street field is five digits
|
|
47
|
+
* wide on 1,360 of 1,360, and its number field is fixed-width three. The row writes that field with
|
|
48
|
+
* its padding removed and every other character as written. Four shapes appear, counted over Abadiño:
|
|
49
|
+
*
|
|
50
|
+
* | shape | count | written |
|
|
51
|
+
* | --- | --- | --- |
|
|
52
|
+
* | `003` | 688 | `3` |
|
|
53
|
+
* | `008A` | 470 | `8A` |
|
|
54
|
+
* | `001BIS`, `004IZ`, `004DR` | 21 | `1BIS`, `4IZ`, `4DR` |
|
|
55
|
+
* | `033005`, `019A02` | 181 | `33005`, `19A02` |
|
|
56
|
+
*
|
|
57
|
+
* The first three are an ordinary Spanish number, a number with a letter, and a number with a
|
|
58
|
+
* *bis*, *izquierda* or *derecha* qualifier. The fourth is two fields concatenated and what its
|
|
59
|
+
* second field designates is not established: it is three digits wide like the number itself, and
|
|
60
|
+
* no document the publisher publishes says what it counts. Those 181 of 1,360 rows therefore carry the
|
|
61
|
+
* publisher's own concatenation with its padding removed, which transcribes the designator without
|
|
62
|
+
* interpreting it. Splitting the field on a guessed separator would state a number the cadastre does
|
|
63
|
+
* not hold.
|
|
64
|
+
*
|
|
65
|
+
* The municipality is `ad:AdminUnitName` at `3rdOrder`, which is the only level the service
|
|
66
|
+
* publishes: 113 of 113 of its administrative-unit features state it, and their names are padded
|
|
67
|
+
* with trailing spaces that `#inspire/address` trims. A reader keyed on the `4thOrder` that Czechia,
|
|
68
|
+
* Slovakia and Gipuzkoa use finds no municipality here.
|
|
69
|
+
*
|
|
70
|
+
* The publisher's own cross-rendering is `ad:LocatorName`, populated on 1,360 of 1,360 addresses:
|
|
71
|
+
* `48 001 CL\TRAÑAETXOSTE(00066) 002` for the address whose designator is `48.001.00066.002`. It
|
|
72
|
+
* restates the municipality code, the street type and name, the street code zero-padded to five, and
|
|
73
|
+
* the number field, and it is written inside the archive while the street itself comes from a
|
|
74
|
+
* separate WFS document. Putting the resolved street and the composed number beside it therefore
|
|
75
|
+
* checks that the right feature was joined, which is what the adapter's test does. The register's
|
|
76
|
+
* personal-data review reads these values as internal cadastral references rather than names, and
|
|
77
|
+
* the adapter writes none of them into a row.
|
|
78
|
+
*
|
|
79
|
+
* No service either publisher runs was found to render a postal address for this province: the
|
|
80
|
+
* ArcGIS layer behind the WFS exposes INSPIRE fields alone. So the number's unexplained second field
|
|
81
|
+
* stays an open question rather than one this adapter resolved.
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
import { openReadStream } from "@mailwoman/core/fs/streams"
|
|
85
|
+
import { type MarkupElement, streamMarkupElements } from "@mailwoman/core/html/elements"
|
|
86
|
+
import { PathBuilder, type PathBuilderLike } from "path-ts"
|
|
87
|
+
import { Globerator } from "spliterator/node/fs"
|
|
88
|
+
|
|
89
|
+
import { UnsupportedCountryError } from "#adapters/errors"
|
|
90
|
+
import { cadastralRow } from "#es/cadastre"
|
|
91
|
+
import {
|
|
92
|
+
adminUnitLevel,
|
|
93
|
+
componentHrefs,
|
|
94
|
+
componentJoinKey,
|
|
95
|
+
designator,
|
|
96
|
+
designatorsByType,
|
|
97
|
+
inspireNameIs,
|
|
98
|
+
placeName,
|
|
99
|
+
postalDescriptorCode,
|
|
100
|
+
thoroughfareName,
|
|
101
|
+
voidDesignatorTypes,
|
|
102
|
+
} from "#inspire/address"
|
|
103
|
+
import { inspireGMLChunks } from "#inspire/archive"
|
|
104
|
+
import { InspireArchiveError, UnresolvedComponentReferenceError, VoidDesignatorError } from "#inspire/errors"
|
|
105
|
+
import { SourceRegister } from "#registers"
|
|
106
|
+
import { AddressRole, type AdapterOptions, type CanonicalRow, type CorpusAdapter, SurfaceOrigin } from "#types"
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Registry id for this adapter.
|
|
110
|
+
*
|
|
111
|
+
* Stamped into every row it emits, so a corpus record can be traced back to the dataset it came from.
|
|
112
|
+
*/
|
|
113
|
+
export const ES_BIZKAIA_ADAPTER_ID = "es-bizkaia"
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* The jurisdiction this adapter emits.
|
|
117
|
+
*/
|
|
118
|
+
export const ES_BIZKAIA_COUNTRIES: readonly string[] = ["ES"]
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* The license the address-source register elected for this publisher.
|
|
122
|
+
*
|
|
123
|
+
* Bizkaia names no license instrument, so no SPDX identifier is written and this records the
|
|
124
|
+
* publisher's own words. Its INSPIRE metadata carries the controlled values `No limitations to
|
|
125
|
+
* public access` and `No conditions to access and use`, and its feed-level `rights` adds the
|
|
126
|
+
* condition that authorship and ownership of the BFA be stated as «©Bizkaiko Foru Aldundia». The
|
|
127
|
+
* register records two contradictions it did not resolve: all 112 municipality entries also read
|
|
128
|
+
* `Copyright (c) 2017", ES.BFA; all rights reserved`, and Catastro's national feed labels this
|
|
129
|
+
* publisher `CC BY 3.0 ES`, which no document Bizkaia publishes names.
|
|
130
|
+
*/
|
|
131
|
+
export const ES_BIZKAIA_LICENSE = "No conditions to access and use, with attribution to «©Bizkaiko Foru Aldundia»"
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* The member of a municipality's archive that holds the GML.
|
|
135
|
+
*
|
|
136
|
+
* Each archive ships one member, named `ES.BFA.AD.gml` whichever municipality it holds,
|
|
137
|
+
* so the extension selects it and the archive's own name carries the municipality.
|
|
138
|
+
*/
|
|
139
|
+
const GML_MEMBER = /\.gml$/iu
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* The feature types the saved WFS documents carry, indexed before any address is read.
|
|
143
|
+
*/
|
|
144
|
+
const COMPONENT_ELEMENTS = [
|
|
145
|
+
"ad:ThoroughfareName",
|
|
146
|
+
"ad:PostalDescriptor",
|
|
147
|
+
"ad:AdminUnitName",
|
|
148
|
+
"ad:AddressAreaName",
|
|
149
|
+
] as const
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* The administrative level that is the municipality.
|
|
153
|
+
*
|
|
154
|
+
* The only level the service publishes, on 113 of 113 `ad:AdminUnitName` features.
|
|
155
|
+
*/
|
|
156
|
+
const MUNICIPALITY_LEVEL = "3rdOrder"
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* The designator type the publisher writes.
|
|
160
|
+
*
|
|
161
|
+
* The href the publisher writes repeats the value,
|
|
162
|
+
* `…/LocatorDesignatorTypeValue/buildingIdentifier/buildingIdentifier`, and `codelistValue`
|
|
163
|
+
* reads the final segment, so the type name is the same as everyone else's.
|
|
164
|
+
*/
|
|
165
|
+
const HOUSE_NUMBER_TYPE = "buildingIdentifier"
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* How many dot-separated fields a designator carries.
|
|
169
|
+
*
|
|
170
|
+
* Municipality, street, number: `48.001.00026.003` splits the municipality code across two.
|
|
171
|
+
*/
|
|
172
|
+
const DESIGNATOR_FIELDS = 4
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* The street name and type a thoroughfare feature states, without its cadastral decoration.
|
|
176
|
+
*
|
|
177
|
+
* `BO\TRAÑA-MATIENA(1)` answers `BO TRAÑA-MATIENA`.
|
|
178
|
+
* The backslash is the cadastre's separator between the street-type abbreviation
|
|
179
|
+
* and the name, and the trailing parenthesis holds the street's sequence code,
|
|
180
|
+
* which the address's own designator repeats as its third field.
|
|
181
|
+
*
|
|
182
|
+
* @returns The street, or undefined where the feature states no name.
|
|
183
|
+
*/
|
|
184
|
+
export function bizkaiaStreet(feature: MarkupElement): string | undefined {
|
|
185
|
+
const text = thoroughfareName(feature)
|
|
186
|
+
|
|
187
|
+
if (!text) return undefined
|
|
188
|
+
|
|
189
|
+
const street = text
|
|
190
|
+
.replace(/\((\d+)\)\s*$/u, "")
|
|
191
|
+
.replaceAll("\\", " ")
|
|
192
|
+
.replaceAll(/\s+/gu, " ")
|
|
193
|
+
.trim()
|
|
194
|
+
|
|
195
|
+
return street || undefined
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* The street's sequence code a thoroughfare feature states, as the feature writes it.
|
|
200
|
+
*
|
|
201
|
+
* The code the address's designator joins on, which is what makes the publisher's own
|
|
202
|
+
* `ad:LocatorName` a check of the join rather than a copy of it.
|
|
203
|
+
*
|
|
204
|
+
* @returns The digits inside the trailing parentheses, or undefined where there are none.
|
|
205
|
+
*/
|
|
206
|
+
export function bizkaiaStreetCode(feature: MarkupElement): string | undefined {
|
|
207
|
+
return /\((\d+)\)\s*$/u.exec(thoroughfareName(feature) ?? "")?.[1]
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* The house number the designator's fourth field states.
|
|
212
|
+
*
|
|
213
|
+
* The field is fixed-width three.
|
|
214
|
+
* The row writes it with that padding removed and every other character as written.
|
|
215
|
+
*
|
|
216
|
+
* This module's header tabulates the four shapes it takes, with their counts.
|
|
217
|
+
*
|
|
218
|
+
* @returns The number, or undefined where the designator is absent or does not carry four fields.
|
|
219
|
+
*/
|
|
220
|
+
export function bizkaiaHouseNumber(byType: ReadonlyMap<string, readonly string[]>): string | undefined {
|
|
221
|
+
const code = designator(byType, HOUSE_NUMBER_TYPE)
|
|
222
|
+
|
|
223
|
+
if (!code) return undefined
|
|
224
|
+
|
|
225
|
+
const fields = code.split(".")
|
|
226
|
+
|
|
227
|
+
if (fields.length !== DESIGNATOR_FIELDS) return undefined
|
|
228
|
+
|
|
229
|
+
const number = fields[DESIGNATOR_FIELDS - 1]!.replace(/^0+(?=.)/u, "")
|
|
230
|
+
|
|
231
|
+
return number || undefined
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
export function createESBizkaiaAdapter(): CorpusAdapter {
|
|
235
|
+
return {
|
|
236
|
+
id: ES_BIZKAIA_ADAPTER_ID,
|
|
237
|
+
defaultLicense: ES_BIZKAIA_LICENSE,
|
|
238
|
+
addressRole: AddressRole.Premise,
|
|
239
|
+
register: SourceRegister.BizkaiaInspireAddresses,
|
|
240
|
+
surface: SurfaceOrigin.Rendered,
|
|
241
|
+
description:
|
|
242
|
+
"INSPIRE Addresses (Diputación Foral de Bizkaia): house-number-level addresses for the province, from 112 municipality archives joined against saved WFS component pages.",
|
|
243
|
+
|
|
244
|
+
async *rows(opts: AdapterOptions): AsyncIterable<CanonicalRow> {
|
|
245
|
+
if (opts.country && !ES_BIZKAIA_COUNTRIES.includes(opts.country)) {
|
|
246
|
+
throw new UnsupportedCountryError(ES_BIZKAIA_ADAPTER_ID, ES_BIZKAIA_COUNTRIES, opts.country)
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
const inputs = await inputPaths(opts.inputPath)
|
|
250
|
+
const referenced = new Map<string, MarkupElement>()
|
|
251
|
+
|
|
252
|
+
for (const path of inputs) {
|
|
253
|
+
if (opts.signal?.aborted) return
|
|
254
|
+
|
|
255
|
+
for await (const feature of streamMarkupElements(memberChunks(path), COMPONENT_ELEMENTS, { xml: true })) {
|
|
256
|
+
const id = feature.attributes["gml:id"]
|
|
257
|
+
|
|
258
|
+
if (id) {
|
|
259
|
+
referenced.set(id, feature)
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// Every address references a street, a postcode and a municipality, so an empty
|
|
265
|
+
// index turns each row into a row with no place rather than into fewer rows.
|
|
266
|
+
if (!referenced.size) {
|
|
267
|
+
throw new InspireArchiveError(
|
|
268
|
+
ES_BIZKAIA_ADAPTER_ID,
|
|
269
|
+
`${PathBuilder.from(opts.inputPath).toString()} holds no component feature. The municipality archives carry addresses alone, and the features they reference come from the publisher's WFS.`
|
|
270
|
+
)
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
let emitted = 0
|
|
274
|
+
|
|
275
|
+
for (const path of inputs) {
|
|
276
|
+
if (opts.signal?.aborted) break
|
|
277
|
+
|
|
278
|
+
if (opts.limit !== undefined && emitted >= opts.limit) break
|
|
279
|
+
|
|
280
|
+
for await (const address of streamMarkupElements(memberChunks(path), "ad:Address", { xml: true })) {
|
|
281
|
+
if (opts.signal?.aborted) break
|
|
282
|
+
|
|
283
|
+
if (opts.limit !== undefined && emitted >= opts.limit) break
|
|
284
|
+
|
|
285
|
+
const row = composeRow(address, referenced)
|
|
286
|
+
|
|
287
|
+
if (!row) continue
|
|
288
|
+
|
|
289
|
+
yield row
|
|
290
|
+
|
|
291
|
+
emitted++
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* One address's row, or undefined when it carries too little to render.
|
|
300
|
+
*/
|
|
301
|
+
function composeRow(address: MarkupElement, referenced: ReadonlyMap<string, MarkupElement>): CanonicalRow | undefined {
|
|
302
|
+
const addressID = address.attributes["gml:id"]?.trim()
|
|
303
|
+
|
|
304
|
+
if (voidDesignatorTypes(address).has(HOUSE_NUMBER_TYPE)) {
|
|
305
|
+
throw new VoidDesignatorError(ES_BIZKAIA_ADAPTER_ID, addressID, HOUSE_NUMBER_TYPE)
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
let street: string | undefined
|
|
309
|
+
let postcode: string | undefined
|
|
310
|
+
let locality: string | undefined
|
|
311
|
+
let settlement: string | undefined
|
|
312
|
+
|
|
313
|
+
for (const href of componentHrefs(address)) {
|
|
314
|
+
const key = componentJoinKey(href)
|
|
315
|
+
const feature = key ? referenced.get(key) : undefined
|
|
316
|
+
|
|
317
|
+
if (!feature) throw new UnresolvedComponentReferenceError(ES_BIZKAIA_ADAPTER_ID, addressID, href)
|
|
318
|
+
|
|
319
|
+
const name = feature.name
|
|
320
|
+
|
|
321
|
+
if (inspireNameIs(name, "ad:ThoroughfareName")) {
|
|
322
|
+
street = bizkaiaStreet(feature)
|
|
323
|
+
} else if (inspireNameIs(name, "ad:PostalDescriptor")) {
|
|
324
|
+
postcode = postalDescriptorCode(feature)
|
|
325
|
+
} else if (inspireNameIs(name, "ad:AddressAreaName")) {
|
|
326
|
+
settlement = placeName(feature)
|
|
327
|
+
} else if (inspireNameIs(name, "ad:AdminUnitName") && adminUnitLevel(feature) === MUNICIPALITY_LEVEL) {
|
|
328
|
+
locality = placeName(feature)
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
// Bizkaia's number is read by its own reader rather than `spanishHouseNumber`, because its
|
|
333
|
+
// designator packs a fixed-width number field that the other three cadastres do not write.
|
|
334
|
+
return cadastralRow(
|
|
335
|
+
{
|
|
336
|
+
street,
|
|
337
|
+
house: bizkaiaHouseNumber(designatorsByType(address)),
|
|
338
|
+
postcode,
|
|
339
|
+
locality,
|
|
340
|
+
settlement,
|
|
341
|
+
addressID,
|
|
342
|
+
},
|
|
343
|
+
{ adapterID: ES_BIZKAIA_ADAPTER_ID, license: ES_BIZKAIA_LICENSE }
|
|
344
|
+
)
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* One input's bytes, whether it arrives zipped or unpacked.
|
|
349
|
+
*/
|
|
350
|
+
function memberChunks(path: PathBuilderLike): AsyncIterable<string | Uint8Array> {
|
|
351
|
+
const resolved = PathBuilder.from(path)
|
|
352
|
+
|
|
353
|
+
if (resolved.basename().toLowerCase().endsWith(".zip")) return inspireGMLChunks(resolved, GML_MEMBER)
|
|
354
|
+
|
|
355
|
+
return openReadStream(resolved)
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Every input under `inputPath`, which is one file or a directory holding several.
|
|
360
|
+
*
|
|
361
|
+
* The two passes read the same list, so an input holding addresses and an input holding
|
|
362
|
+
* component features need not be told apart: a municipality archive contributes addresses
|
|
363
|
+
* to the second pass and no feature to the first, and a saved WFS page the reverse.
|
|
364
|
+
* Deciding by extension would be wrong on a hand-assembled input that holds both,
|
|
365
|
+
* and the publisher's own naming distinguishes neither.
|
|
366
|
+
*
|
|
367
|
+
* A path holding no input raises rather than yielding zero rows, so a wrong path
|
|
368
|
+
* reports itself instead of reading as an empty publisher.
|
|
369
|
+
*/
|
|
370
|
+
async function inputPaths(inputPath: PathBuilderLike): Promise<readonly PathBuilderLike[]> {
|
|
371
|
+
const path = PathBuilder.from(inputPath)
|
|
372
|
+
const basename = path.basename().toLowerCase()
|
|
373
|
+
|
|
374
|
+
if (basename.endsWith(".zip") || basename.endsWith(".gml") || basename.endsWith(".xml")) return [path]
|
|
375
|
+
|
|
376
|
+
const names = await Globerator.from("*.{zip,gml,xml}", { cwd: path.toString(), absolute: false }).toSorted()
|
|
377
|
+
|
|
378
|
+
if (!names.length) {
|
|
379
|
+
throw new InspireArchiveError(ES_BIZKAIA_ADAPTER_ID, `${path.toString()} holds no .zip archive or saved WFS page`)
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
return names.map((name) => path(name))
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* The configured adapter instance registered with the corpus builder.
|
|
387
|
+
*/
|
|
388
|
+
export const esBizkaiaAdapter = createESBizkaiaAdapter()
|