@mailwoman/corpus 10.0.0 → 10.2.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 +791 -0
- package/lib/adapters/dedup-key.ts +40 -0
- package/lib/adapters/errors.ts +21 -0
- package/lib/adapters/geonames/adapter.ts +43 -53
- package/lib/adapters/geonames/postal/adapter.ts +31 -37
- package/lib/adapters/gleif/adapter.ts +829 -0
- package/lib/adapters/libpostal-dictionary.ts +37 -0
- package/lib/adapters/openaddresses/adapter.ts +52 -55
- package/lib/adapters/osm/adapter.ts +162 -83
- package/lib/adapters/overture/adapter.ts +52 -43
- package/lib/adapters/po-box/adapter.ts +207 -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 +136 -0
- package/lib/adapters/wof/admin/json/adapter.ts +50 -35
- package/lib/adapters/wof/json-rows.ts +57 -26
- package/lib/adapters/wof/postalcode-json/adapter.ts +63 -61
- package/lib/adapters.ts +230 -0
- package/lib/au/adapters/gnaf/adapter.ts +36 -44
- 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 +667 -0
- package/lib/be/adapters/wallonie/adapter.ts +537 -0
- package/lib/be/tools/fetch/brussels.ts +242 -0
- package/lib/be/tools/fetch/wallonie.ts +275 -0
- package/lib/build/adapters.ts +111 -0
- package/lib/build/align.ts +365 -0
- package/lib/build/checkpoint.ts +133 -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 +234 -0
- package/lib/build.ts +127 -315
- package/lib/cn/recipes/organizational-units.ts +20 -41
- package/lib/cz/adapters/cuzk/adapter.ts +320 -0
- package/lib/cz/recipes/pcfirst-preposition.ts +40 -27
- package/lib/cz/tools/fetch/cuzk.ts +710 -0
- package/lib/de/recipes/locale.ts +69 -59
- package/lib/directory.ts +31 -0
- package/lib/dk/adapters/inspire/adapter.ts +345 -0
- package/lib/dk/tools/fetch/inspire.ts +323 -0
- package/lib/ee/adapters/ads/adapter.ts +240 -0
- package/lib/ee/tools/fetch/ads.ts +272 -0
- package/lib/env.ts +6 -2
- package/lib/es/adapters/bizkaia/adapter.ts +388 -0
- package/lib/es/adapters/catastro/adapter.ts +345 -0
- package/lib/es/adapters/gipuzkoa/adapter.ts +256 -0
- package/lib/es/adapters/navarra/adapter.ts +290 -0
- package/lib/es/cadastre.ts +194 -0
- package/lib/es/tools/fetch/bizkaia.ts +752 -0
- package/lib/es/tools/fetch/catastro.ts +765 -0
- package/lib/es/tools/fetch/gipuzkoa.ts +338 -0
- package/lib/es/tools/fetch/navarra.ts +496 -0
- package/lib/fi/adapters/ryhti/adapter.ts +319 -0
- package/lib/fi/tools/fetch/ryhti.ts +476 -0
- package/lib/fingerprints.ts +154 -0
- package/lib/fr/adapters/annuaire-education/adapter.ts +600 -0
- package/lib/fr/adapters/ban/adapter.ts +87 -59
- package/lib/fr/adapters/finess/adapter.ts +619 -0
- package/lib/fr/adapters/finess/postal-lines.ts +157 -0
- package/lib/fr/adapters/finess/voie-type.ts +201 -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 +111 -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 +309 -0
- package/lib/fr/tools/fetch/ban.ts +30 -20
- package/lib/fr/tools/fetch/finess.ts +353 -0
- package/lib/gauntlet-inputs.ts +92 -0
- package/lib/index.ts +9 -3
- package/lib/inspire/address.ts +465 -0
- package/lib/inspire/archive.ts +44 -0
- package/lib/inspire/errors.ts +72 -0
- package/lib/inspire/stream.ts +265 -0
- package/lib/international/recipes/locale.ts +146 -184
- package/lib/it/adapters/anac/adapter.ts +527 -0
- package/lib/it/tools/fetch/anac.ts +391 -0
- package/lib/jp/adapters/wof-admin/adapter.ts +29 -23
- package/lib/jp/tools/fetch/houjin.ts +19 -21
- 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 +34 -27
- package/lib/kr/tools/fetch/juso.ts +19 -21
- package/lib/kr/tools/fetch/localdata.ts +29 -30
- package/lib/lu/adapters/bd-adresses/adapter.ts +240 -0
- package/lib/lu/tools/fetch/bd-adresses.ts +353 -0
- package/lib/lv/adapters/varis/adapter.ts +500 -0
- package/lib/lv/tools/fetch/varis.ts +215 -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 +302 -0
- package/lib/no/adapters/matrikkelen/adapter.ts +188 -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 +531 -0
- package/lib/parquet/duckdb.ts +147 -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 +452 -0
- package/lib/pl/adapters/emuia/adapter.ts +202 -0
- package/lib/pl/tools/fetch/emuia.ts +361 -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 +37 -20
- package/lib/recipes/country-balanced.ts +66 -86
- package/lib/recipes/house-venue.ts +36 -14
- package/lib/recipes/intersection.ts +84 -62
- 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 +31 -19
- package/lib/recipes/po/box/cedex/sources.ts +16 -4
- 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 +267 -158
- package/lib/recipes/sources.ts +412 -0
- package/lib/recipes/street/affix.ts +54 -154
- package/lib/recipes/street/bare.ts +30 -17
- package/lib/recipes/street.ts +35 -9
- package/lib/recipes/sub/venue/context.ts +32 -23
- package/lib/recipes/sub/venue/render.ts +170 -0
- package/lib/recipes/sub/venue/sources.ts +92 -248
- package/lib/recipes/sub/venue.ts +795 -0
- package/lib/recipes/trailing-region.ts +75 -87
- package/lib/recipes/unit/sources.ts +44 -0
- package/lib/recipes/unit.ts +101 -89
- package/lib/recipes/venue.ts +347 -0
- package/lib/{recipes/index.ts → recipes.ts} +15 -11
- package/lib/registers.ts +280 -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 +221 -84
- package/lib/sg/recipes/register.ts +47 -53
- package/lib/sg/tools/fetch/acra.ts +23 -28
- package/lib/si/recipes/bare-village.ts +34 -17
- package/lib/sk/adapters/inspire/adapter.ts +393 -0
- package/lib/sk/tools/fetch/inspire.ts +403 -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 +589 -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 +248 -0
- package/lib/synthesizers/anchor-absorption.ts +56 -91
- package/lib/synthesizers/boundary-stress.ts +67 -155
- package/lib/synthesizers/house-venue.ts +65 -127
- package/lib/synthesizers/no-street.ts +71 -119
- package/lib/synthesizers/po-box.ts +93 -105
- package/lib/synthesizers/tail.ts +55 -0
- package/lib/synthesizers/utils.ts +82 -219
- 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 +117 -120
- package/lib/tools/corpus-stats.ts +45 -31
- package/lib/tools/fetch/atom.ts +164 -0
- package/lib/tools/fetch/cordis.ts +320 -0
- package/lib/tools/fetch/download/manifest.ts +36 -23
- package/lib/tools/fetch/download/network.ts +55 -31
- package/lib/tools/fetch/download/retry.ts +30 -29
- package/lib/tools/fetch/geonames/dump.ts +75 -55
- package/lib/tools/fetch/geonames/postal.ts +27 -62
- package/lib/tools/fetch/gleif.ts +362 -0
- package/lib/tools/fetch/header.ts +71 -0
- package/lib/tools/fetch/inspire-addresses.ts +500 -0
- package/lib/tools/fetch/openaddresses.ts +23 -112
- 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 +954 -0
- package/lib/tools/fetch/wikidata-subvenue.ts +45 -145
- package/lib/tools/fetch/zip-archive.ts +100 -0
- package/lib/tools/fetch.ts +101 -0
- package/lib/tools/golden/expand.ts +75 -44
- package/lib/tools/golden/promote.ts +47 -34
- package/lib/tools/golden/relabel-street/directory.ts +67 -39
- package/lib/tools/golden/relabel-street/row.ts +32 -109
- package/lib/tools/ingest-csv.ts +48 -51
- package/lib/tools/jsonl-to-parquet.ts +59 -98
- package/lib/tools/lint/recipe-output/vocab.ts +371 -0
- package/lib/tools/lint/{slice/index.ts → recipe-output.ts} +130 -126
- 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 +47 -39
- package/lib/tools/overlay/manifest.ts +409 -0
- package/lib/tools/overlay/merge-source.ts +139 -0
- package/lib/tools/overlay/split-slice.ts +144 -0
- package/lib/tools/overlay/translit.ts +236 -0
- package/lib/tools/overture-subvenue.ts +18 -91
- package/lib/tools/postcode-triples.ts +284 -212
- package/lib/tools/source-register/build.ts +822 -0
- package/lib/tools/sub/venue/head-nouns.ts +38 -75
- package/lib/tools/sub/venue/lexicon.ts +71 -110
- package/lib/tools/sub/venue/wikidata.ts +13 -10
- package/lib/tw/tools/fetch/gcis.ts +21 -20
- package/lib/types.ts +305 -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 +8 -3
- 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 +61 -122
- package/lib/us/adapters/usgov/nppes/adapter.ts +72 -35
- package/lib/us/adapters/usgov/samhsa-treatment-locator/adapter.ts +47 -34
- package/lib/us/fips-state.ts +19 -10
- package/lib/{synthesizers → us/synthesizers}/intersection.ts +45 -35
- package/lib/{synthesizers → us/synthesizers}/street.ts +56 -43
- package/lib/us/tools/fetch/hrsa.ts +7 -8
- package/lib/us/tools/fetch/imls-pls.ts +18 -36
- package/lib/us/tools/fetch/nad.ts +51 -33
- package/lib/us/tools/fetch/nppes.ts +27 -39
- package/lib/us/tools/fetch/state/hi-schools.ts +24 -17
- package/lib/us/tools/fetch/state/sources.ts +12 -12
- package/lib/us/tools/fetch/tiger-full.ts +22 -74
- package/lib/utils/align.ts +52 -59
- package/lib/utils/{slice-stats.ts → cooccurrence-stats.ts} +22 -16
- package/lib/utils/golden.ts +36 -51
- package/lib/utils/license.ts +239 -27
- package/lib/utils/split.ts +209 -88
- package/lib/utils/tokenize.ts +25 -56
- package/lib/utils/wof-json.ts +130 -77
- 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 +326 -0
- package/out/adapters/cordis/adapter.d.ts.map +1 -0
- package/out/adapters/cordis/adapter.js +622 -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 +40 -50
- 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 +685 -0
- package/out/adapters/gleif/adapter.js.map +1 -0
- package/out/adapters/libpostal-dictionary.d.ts +20 -0
- package/out/adapters/libpostal-dictionary.d.ts.map +1 -0
- package/out/adapters/libpostal-dictionary.js +34 -0
- package/out/adapters/libpostal-dictionary.js.map +1 -0
- package/out/adapters/openaddresses/adapter.d.ts +29 -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 +59 -52
- package/out/adapters/osm/adapter.d.ts.map +1 -1
- package/out/adapters/osm/adapter.js +119 -69
- 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 +66 -0
- package/out/adapters/po-box/adapter.d.ts.map +1 -0
- package/out/adapters/{synth-po-box → po-box}/adapter.js +48 -47
- 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 +103 -0
- package/out/adapters/street-line.d.ts.map +1 -0
- package/out/adapters/street-line.js +118 -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 +48 -32
- package/out/adapters/wof/admin/json/adapter.js.map +1 -1
- package/out/adapters/wof/json-rows.d.ts +36 -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 +60 -58
- 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 +35 -43
- 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 +230 -0
- package/out/be/adapters/vlaanderen/adapter.d.ts.map +1 -0
- package/out/be/adapters/vlaanderen/adapter.js +418 -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 +122 -0
- package/out/be/tools/fetch/brussels.d.ts.map +1 -0
- package/out/be/tools/fetch/brussels.js +148 -0
- package/out/be/tools/fetch/brussels.js.map +1 -0
- package/out/be/tools/fetch/wallonie.d.ts +120 -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 +69 -0
- package/out/build/adapters.js.map +1 -0
- package/out/build/align.d.ts +74 -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 +61 -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 +222 -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 +269 -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 +281 -0
- package/out/cz/tools/fetch/cuzk.d.ts.map +1 -0
- package/out/cz/tools/fetch/cuzk.js +448 -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 +67 -57
- 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 +153 -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 +101 -0
- package/out/dk/tools/fetch/inspire.d.ts.map +1 -0
- package/out/dk/tools/fetch/inspire.js +232 -0
- package/out/dk/tools/fetch/inspire.js.map +1 -0
- package/out/ee/adapters/ads/adapter.d.ts +102 -0
- package/out/ee/adapters/ads/adapter.d.ts.map +1 -0
- package/out/ee/adapters/ads/adapter.js +185 -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 +197 -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 +103 -0
- package/out/es/adapters/catastro/adapter.d.ts.map +1 -0
- package/out/es/adapters/catastro/adapter.js +290 -0
- package/out/es/adapters/catastro/adapter.js.map +1 -0
- package/out/es/adapters/gipuzkoa/adapter.d.ts +84 -0
- package/out/es/adapters/gipuzkoa/adapter.d.ts.map +1 -0
- package/out/es/adapters/gipuzkoa/adapter.js +218 -0
- package/out/es/adapters/gipuzkoa/adapter.js.map +1 -0
- package/out/es/adapters/navarra/adapter.d.ts +106 -0
- package/out/es/adapters/navarra/adapter.d.ts.map +1 -0
- package/out/es/adapters/navarra/adapter.js +242 -0
- package/out/es/adapters/navarra/adapter.js.map +1 -0
- package/out/es/cadastre.d.ts +110 -0
- package/out/es/cadastre.d.ts.map +1 -0
- package/out/es/cadastre.js +128 -0
- package/out/es/cadastre.js.map +1 -0
- package/out/es/tools/fetch/bizkaia.d.ts +281 -0
- package/out/es/tools/fetch/bizkaia.d.ts.map +1 -0
- package/out/es/tools/fetch/bizkaia.js +478 -0
- package/out/es/tools/fetch/bizkaia.js.map +1 -0
- package/out/es/tools/fetch/catastro.d.ts +280 -0
- package/out/es/tools/fetch/catastro.d.ts.map +1 -0
- package/out/es/tools/fetch/catastro.js +491 -0
- package/out/es/tools/fetch/catastro.js.map +1 -0
- package/out/es/tools/fetch/gipuzkoa.d.ts +164 -0
- package/out/es/tools/fetch/gipuzkoa.d.ts.map +1 -0
- package/out/es/tools/fetch/gipuzkoa.js +210 -0
- package/out/es/tools/fetch/gipuzkoa.js.map +1 -0
- package/out/es/tools/fetch/navarra.d.ts +194 -0
- package/out/es/tools/fetch/navarra.d.ts.map +1 -0
- package/out/es/tools/fetch/navarra.js +321 -0
- package/out/es/tools/fetch/navarra.js.map +1 -0
- package/out/fi/adapters/ryhti/adapter.d.ts +111 -0
- package/out/fi/adapters/ryhti/adapter.d.ts.map +1 -0
- package/out/fi/adapters/ryhti/adapter.js +240 -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 +324 -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 +477 -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 +277 -0
- package/out/fr/adapters/finess/adapter.d.ts.map +1 -0
- package/out/fr/adapters/finess/adapter.js +520 -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 +173 -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 +89 -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 +133 -0
- package/out/fr/tools/fetch/annuaire-education.d.ts.map +1 -0
- package/out/fr/tools/fetch/annuaire-education.js +198 -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 +29 -19
- 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 +229 -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 +261 -0
- package/out/inspire/address.d.ts.map +1 -0
- package/out/inspire/address.js +395 -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 +56 -0
- package/out/inspire/errors.d.ts.map +1 -0
- package/out/inspire/errors.js +65 -0
- package/out/inspire/errors.js.map +1 -0
- package/out/inspire/stream.d.ts +140 -0
- package/out/inspire/stream.d.ts.map +1 -0
- package/out/inspire/stream.js +123 -0
- package/out/inspire/stream.js.map +1 -0
- package/out/international/recipes/locale.d.ts +40 -86
- package/out/international/recipes/locale.d.ts.map +1 -1
- package/out/international/recipes/locale.js +122 -157
- package/out/international/recipes/locale.js.map +1 -1
- package/out/it/adapters/anac/adapter.d.ts +269 -0
- package/out/it/adapters/anac/adapter.d.ts.map +1 -0
- package/out/it/adapters/anac/adapter.js +434 -0
- package/out/it/adapters/anac/adapter.js.map +1 -0
- package/out/it/tools/fetch/anac.d.ts +171 -0
- package/out/it/tools/fetch/anac.d.ts.map +1 -0
- package/out/it/tools/fetch/anac.js +269 -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 +17 -13
- 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 +31 -26
- 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 +24 -16
- 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 +165 -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 +284 -0
- package/out/lv/adapters/varis/adapter.d.ts.map +1 -0
- package/out/lv/adapters/varis/adapter.js +405 -0
- package/out/lv/adapters/varis/adapter.js.map +1 -0
- package/out/lv/tools/fetch/varis.d.ts +81 -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 +309 -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 +159 -0
- package/out/nl/tools/fetch/kadaster.d.ts.map +1 -0
- package/out/nl/tools/fetch/kadaster.js +182 -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 +263 -0
- package/out/no/tools/fetch/matrikkelen.d.ts.map +1 -0
- package/out/no/tools/fetch/matrikkelen.js +353 -0
- package/out/no/tools/fetch/matrikkelen.js.map +1 -0
- package/out/parquet/duckdb.d.ts +103 -0
- package/out/parquet/duckdb.d.ts.map +1 -0
- package/out/parquet/duckdb.js +93 -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 +252 -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 +166 -0
- package/out/pl/tools/fetch/emuia.d.ts.map +1 -0
- package/out/pl/tools/fetch/emuia.js +261 -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} +92 -80
- 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 +37 -20
- 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 +33 -14
- 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 +67 -55
- 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 +27 -16
- package/out/recipes/po/box/cedex/recipe.js.map +1 -1
- package/out/recipes/po/box/cedex/sources.d.ts +20 -14
- package/out/recipes/po/box/cedex/sources.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/sources.js +2 -2
- 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 +223 -141
- package/out/recipes/scaffold.d.ts.map +1 -1
- package/out/recipes/scaffold.js +75 -65
- 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 +361 -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 +27 -16
- 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 +32 -9
- 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 +23 -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 +53 -93
- package/out/recipes/sub/venue/sources.d.ts.map +1 -1
- package/out/recipes/sub/venue/sources.js +57 -197
- package/out/recipes/sub/venue/sources.js.map +1 -1
- package/out/recipes/sub/venue.d.ts +173 -0
- package/out/recipes/sub/venue.d.ts.map +1 -0
- package/out/recipes/sub/venue.js +558 -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 +61 -86
- 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/venue.d.ts +119 -0
- package/out/recipes/venue.d.ts.map +1 -0
- package/out/recipes/venue.js +245 -0
- package/out/recipes/venue.js.map +1 -0
- package/out/recipes.d.ts +26 -0
- package/out/recipes.d.ts.map +1 -0
- package/out/{recipes/index.js → recipes.js} +16 -12
- package/out/recipes.js.map +1 -0
- package/out/registers.d.ts +279 -0
- package/out/registers.d.ts.map +1 -0
- package/out/registers.js +275 -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 +121 -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 +45 -50
- 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 +18 -21
- 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 +196 -0
- package/out/sk/tools/fetch/inspire.d.ts.map +1 -0
- package/out/sk/tools/fetch/inspire.js +281 -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 +538 -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 +138 -0
- package/out/surfaces/locale.js.map +1 -0
- package/out/synthesizers/anchor-absorption.d.ts +22 -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 +18 -49
- package/out/synthesizers/boundary-stress.d.ts.map +1 -1
- package/out/synthesizers/boundary-stress.js +45 -142
- package/out/synthesizers/boundary-stress.js.map +1 -1
- package/out/synthesizers/house-venue.d.ts +23 -25
- package/out/synthesizers/house-venue.d.ts.map +1 -1
- package/out/synthesizers/house-venue.js +47 -118
- package/out/synthesizers/house-venue.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 +48 -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/tail.d.ts +36 -0
- package/out/synthesizers/tail.d.ts.map +1 -0
- package/out/synthesizers/tail.js +32 -0
- package/out/synthesizers/tail.js.map +1 -0
- package/out/synthesizers/utils.d.ts +33 -129
- package/out/synthesizers/utils.d.ts.map +1 -1
- package/out/synthesizers/utils.js +71 -167
- 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 +19 -11
- package/out/tools/audit.d.ts.map +1 -1
- package/out/tools/audit.js +89 -97
- 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 +34 -30
- 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 +83 -0
- package/out/tools/fetch/atom.js.map +1 -0
- package/out/tools/fetch/cordis.d.ts +124 -0
- package/out/tools/fetch/cordis.d.ts.map +1 -0
- package/out/tools/fetch/cordis.js +210 -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 +22 -14
- 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 +28 -28
- 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 +51 -32
- package/out/tools/fetch/geonames/dump.d.ts.map +1 -1
- package/out/tools/fetch/geonames/dump.js +54 -43
- 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 +138 -0
- package/out/tools/fetch/gleif.d.ts.map +1 -0
- package/out/tools/fetch/gleif.js +222 -0
- package/out/tools/fetch/gleif.js.map +1 -0
- package/out/tools/fetch/header.d.ts +43 -0
- package/out/tools/fetch/header.d.ts.map +1 -0
- package/out/tools/fetch/header.js +61 -0
- package/out/tools/fetch/header.js.map +1 -0
- package/out/tools/fetch/inspire-addresses.d.ts +254 -0
- package/out/tools/fetch/inspire-addresses.d.ts.map +1 -0
- package/out/tools/fetch/inspire-addresses.js +277 -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 +20 -99
- 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 +420 -0
- package/out/tools/fetch/wfs-harvest.d.ts.map +1 -0
- package/out/tools/fetch/wfs-harvest.js +525 -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 +99 -0
- package/out/tools/fetch.d.ts.map +1 -0
- package/out/tools/fetch.js +95 -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 +51 -37
- 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 +38 -30
- package/out/tools/golden/promote.js.map +1 -1
- package/out/tools/golden/relabel-street/directory.d.ts +25 -10
- package/out/tools/golden/relabel-street/directory.d.ts.map +1 -1
- package/out/tools/golden/relabel-street/directory.js +44 -32
- package/out/tools/golden/relabel-street/directory.js.map +1 -1
- package/out/tools/golden/relabel-street/row.d.ts +18 -69
- package/out/tools/golden/relabel-street/row.d.ts.map +1 -1
- package/out/tools/golden/relabel-street/row.js +19 -77
- 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 +42 -46
- 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 +82 -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} +93 -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 +39 -29
- package/out/tools/overlay/kryptonite.js.map +1 -0
- package/out/tools/overlay/manifest.d.ts +143 -0
- package/out/tools/overlay/manifest.d.ts.map +1 -0
- package/out/tools/overlay/manifest.js +261 -0
- package/out/tools/overlay/manifest.js.map +1 -0
- package/out/tools/overlay/merge-source.d.ts +74 -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 +55 -0
- package/out/tools/overlay/translit.d.ts.map +1 -0
- package/out/tools/{slice → overlay}/translit.js +61 -49
- package/out/tools/overlay/translit.js.map +1 -0
- package/out/tools/overture-subvenue.d.ts +17 -76
- 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 +78 -127
- package/out/tools/postcode-triples.d.ts.map +1 -1
- package/out/tools/postcode-triples.js +200 -193
- package/out/tools/postcode-triples.js.map +1 -1
- package/out/tools/source-register/build.d.ts +147 -0
- package/out/tools/source-register/build.d.ts.map +1 -0
- package/out/tools/source-register/build.js +517 -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 +53 -84
- package/out/tools/sub/venue/lexicon.d.ts.map +1 -1
- package/out/tools/sub/venue/lexicon.js +42 -90
- 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/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 +19 -13
- package/out/tw/tools/fetch/gcis.js.map +1 -1
- package/out/types.d.ts +271 -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 +8 -3
- 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 +57 -111
- 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 +38 -28
- package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.js.map +1 -1
- package/out/us/fips-state.d.ts +19 -10
- 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/{synthesizers → us/synthesizers}/intersection.d.ts +10 -8
- package/out/us/synthesizers/intersection.d.ts.map +1 -0
- package/out/{synthesizers → us/synthesizers}/intersection.js +46 -35
- package/out/us/synthesizers/intersection.js.map +1 -0
- package/out/{synthesizers → us/synthesizers}/street.d.ts +19 -12
- package/out/us/synthesizers/street.d.ts.map +1 -0
- package/out/{synthesizers → us/synthesizers}/street.js +45 -38
- package/out/us/synthesizers/street.js.map +1 -0
- 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 +17 -34
- 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 +30 -25
- 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 +24 -36
- package/out/us/tools/fetch/nppes.js.map +1 -1
- package/out/us/tools/fetch/state/hi-schools.d.ts +9 -5
- package/out/us/tools/fetch/state/hi-schools.d.ts.map +1 -1
- package/out/us/tools/fetch/state/hi-schools.js +16 -14
- 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 +16 -55
- package/out/us/tools/fetch/tiger-full.js.map +1 -1
- package/out/utils/align.d.ts +26 -19
- package/out/utils/align.d.ts.map +1 -1
- package/out/utils/align.js +32 -47
- 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 +30 -46
- package/out/utils/golden.js.map +1 -1
- package/out/utils/license.d.ts +159 -22
- 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 +162 -69
- package/out/utils/split.js.map +1 -1
- package/out/utils/tokenize.d.ts +15 -44
- 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 +77 -56
- 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 +45 -488
- 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/slice/translit.ts +0 -218
- 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/intersection.d.ts.map +0 -1
- package/out/synthesizers/intersection.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/synthesizers/street.d.ts.map +0 -1
- package/out/synthesizers/street.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,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Download ANAC's OCDS contract releases for the `it-anac` adapter.
|
|
7
|
+
*
|
|
8
|
+
* The Open Contracting Partnership's Data Registry serves publication 117 at
|
|
9
|
+
* `https://data.open-contracting.org/en/publication/117/download?name=<edition>.jsonl.gz`, where an
|
|
10
|
+
* edition is a year, `undated`, or `full` for every year in one file. Each file is JSON Lines, one
|
|
11
|
+
* OCDS release per line. That is the shape `#it/adapters/anac/adapter` reads.
|
|
12
|
+
*
|
|
13
|
+
* The acquisition belongs under a `tools/` root. `@mailwoman/corpus` is one of the
|
|
14
|
+
* `TOOLING_PACKAGES` in `dependency-cruiser.config.mjs`, which keep their tooling under `lib/`, so
|
|
15
|
+
* this module sits beside `#fi/tools/fetch/ryhti` rather than in an `sdk/` root the workspace does
|
|
16
|
+
* not declare.
|
|
17
|
+
*
|
|
18
|
+
* Three host behaviors decide what this module does:
|
|
19
|
+
*
|
|
20
|
+
* 1. **The host honors `Range`.** It answers `accept-ranges: bytes`, so an interrupted transfer
|
|
21
|
+
* resumes through {@linkcode resumableDownload} rather than restarting. That matters most for
|
|
22
|
+
* the `full` edition.
|
|
23
|
+
* 2. **An edition's length and modification time are both served by `HEAD`.** The re-run check
|
|
24
|
+
* compares the pair against the manifest, so one small request per edition replaces the body.
|
|
25
|
+
* 3. **This module moves bytes and decodes none of them.** The compressed body is streamed to disk
|
|
26
|
+
* and then decompressed stream to stream, so no chunk boundary is interpreted as a character
|
|
27
|
+
* boundary. ANAC's data holds accented Italian place names, and a `chunk.toString("utf8")` per
|
|
28
|
+
* gzip chunk would write U+FFFD at every split multi-byte character.
|
|
29
|
+
*
|
|
30
|
+
* ANAC updates the publication monthly, on the second of the month. The current year's
|
|
31
|
+
* edition is re-fetched on a `HEAD` disagreement rather than treated as final.
|
|
32
|
+
*
|
|
33
|
+
* The registry publishes this release under CC BY 4.0. The address-source register elected it.
|
|
34
|
+
* The manifest records the license and the attribution, and the adapter records the license on every
|
|
35
|
+
* row.
|
|
36
|
+
*/
|
|
37
|
+
import { APIClient } from "@mailwoman/core/api";
|
|
38
|
+
import { gunzipChunks } from "@mailwoman/core/fs/compression";
|
|
39
|
+
import { ByteFormatter } from "@mailwoman/core/fs/formatters";
|
|
40
|
+
import { tryStat } from "@mailwoman/core/fs/readers/stat";
|
|
41
|
+
import { openReadStream, openWriteStream, pipeline, Readable } from "@mailwoman/core/fs/streams";
|
|
42
|
+
import { makeDirectories, removePathIfPresent } from "@mailwoman/core/fs/writers";
|
|
43
|
+
import { sha256File } from "@mailwoman/core/hash";
|
|
44
|
+
import { PathBuilder } from "path-ts";
|
|
45
|
+
import { IT_ANAC_ADAPTER_ID, IT_ANAC_ATTRIBUTION, IT_ANAC_LICENSE } from "#it/adapters/anac/adapter";
|
|
46
|
+
import { loadCollectionFiles, resumableDownload, writeManifest } from "#tools/fetch/download";
|
|
47
|
+
/**
|
|
48
|
+
* The publication the registry serves this release under.
|
|
49
|
+
*
|
|
50
|
+
* Italy has four publications on the registry and id 117 is ANAC's.
|
|
51
|
+
* Id 87 is OpenTender's Italian publication, so a reader that filters by country
|
|
52
|
+
* would take the wrong publication.
|
|
53
|
+
*/
|
|
54
|
+
export const IT_ANAC_PUBLICATION_ID = 117;
|
|
55
|
+
/**
|
|
56
|
+
* The download endpoint for one edition.
|
|
57
|
+
*/
|
|
58
|
+
export function anacEditionURL(edition) {
|
|
59
|
+
return `https://data.open-contracting.org/en/publication/${IT_ANAC_PUBLICATION_ID}/download?name=${edition}.jsonl.gz`;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The directory the editions are written under, the adapter's `inputPath`.
|
|
63
|
+
*/
|
|
64
|
+
const SLUG = IT_ANAC_ADAPTER_ID;
|
|
65
|
+
/**
|
|
66
|
+
* The edition fetched when a caller names none.
|
|
67
|
+
*
|
|
68
|
+
* `full` is every year in one file.
|
|
69
|
+
* A corpus build reads that edition.
|
|
70
|
+
* A caller measuring one year names that year instead.
|
|
71
|
+
*/
|
|
72
|
+
export const IT_ANAC_DEFAULT_EDITIONS = ["full"];
|
|
73
|
+
/**
|
|
74
|
+
* Read what the host states about one edition.
|
|
75
|
+
*
|
|
76
|
+
* Through `APIClient`, which is the interface for a repeated request with a small response.
|
|
77
|
+
* The bodies are not taken this way: `APIClient` buffers a response, and the `full` edition is 184 MB.
|
|
78
|
+
*
|
|
79
|
+
* A header the host does not send is reported as `null` rather than raised on,
|
|
80
|
+
* and the caller then downloads rather than reading the absence as a match.
|
|
81
|
+
*/
|
|
82
|
+
export async function readANACEditionHead(client, edition) {
|
|
83
|
+
const response = await client.fetch({ method: "head", url: anacEditionURL(edition) });
|
|
84
|
+
const headers = response.headers;
|
|
85
|
+
const length = headers?.["content-length"];
|
|
86
|
+
return {
|
|
87
|
+
lastModified: headers?.["last-modified"] ?? null,
|
|
88
|
+
contentLength: length && /^\d+$/u.test(length) ? Number(length) : null,
|
|
89
|
+
contentType: headers?.["content-type"] ?? null,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The directory `#it/adapters/anac/adapter` reads under a fetch root.
|
|
94
|
+
*
|
|
95
|
+
* The adapter takes the directory rather than one file, because a build reading
|
|
96
|
+
* several years reads every edition in it.
|
|
97
|
+
*/
|
|
98
|
+
export function itANACInputPath(outRoot) {
|
|
99
|
+
return outRoot(SLUG);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Whether an edition on disk is still the one the manifest describes and the host still serves.
|
|
103
|
+
*
|
|
104
|
+
* The `HEAD` decides first, because ANAC republishes the publication monthly
|
|
105
|
+
* and the host states a new length and modification time when it does.
|
|
106
|
+
* The file's own length is then checked, so a truncated local copy is re-fetched even
|
|
107
|
+
* where the host has not changed.
|
|
108
|
+
*
|
|
109
|
+
* Exported so a test can exercise the decision without a transfer: the alternative is
|
|
110
|
+
* letting {@linkcode downloadITANAC} reach the host to find out which branch it took.
|
|
111
|
+
*/
|
|
112
|
+
export async function isANACEditionCurrent(recorded, head, path, verifyDigest) {
|
|
113
|
+
if (!recorded)
|
|
114
|
+
return false;
|
|
115
|
+
// A host that states neither cannot be compared against, so the edition is downloaded.
|
|
116
|
+
if (!head.lastModified && head.contentLength === null)
|
|
117
|
+
return false;
|
|
118
|
+
if (head.lastModified && head.lastModified !== recorded.last_modified)
|
|
119
|
+
return false;
|
|
120
|
+
if (head.contentLength !== null && head.contentLength !== recorded.compressed_bytes)
|
|
121
|
+
return false;
|
|
122
|
+
const stat = await tryStat(path);
|
|
123
|
+
if (!stat || stat.size !== recorded.bytes)
|
|
124
|
+
return false;
|
|
125
|
+
if (!verifyDigest)
|
|
126
|
+
return true;
|
|
127
|
+
return (await sha256File(path)) === recorded.sha256;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Download each requested edition into `options.outputDir` and leave them beside one manifest.
|
|
131
|
+
*
|
|
132
|
+
* Re-runnable per edition: an edition whose `HEAD` matches the manifest's recorded
|
|
133
|
+
* modification time and compressed length, and whose `.jsonl` is still on disk at
|
|
134
|
+
* the recorded length, makes no request for the body.
|
|
135
|
+
*/
|
|
136
|
+
export async function downloadITANAC(client, options) {
|
|
137
|
+
const { report } = options;
|
|
138
|
+
const destDir = PathBuilder.from(options.outputDir);
|
|
139
|
+
const editions = options.editions?.length ? options.editions : IT_ANAC_DEFAULT_EDITIONS;
|
|
140
|
+
await makeDirectories(destDir);
|
|
141
|
+
const manifestPath = destDir("MANIFEST.json");
|
|
142
|
+
const recorded = (await loadCollectionFiles(manifestPath));
|
|
143
|
+
const written = new Map(recorded);
|
|
144
|
+
const summary = { fetched: 0, skipped: 0, failed: 0, failedCodes: [] };
|
|
145
|
+
report?.(`=== ${SLUG}`);
|
|
146
|
+
for (const edition of editions) {
|
|
147
|
+
const filename = `${edition}.jsonl`;
|
|
148
|
+
const editionPath = destDir(filename);
|
|
149
|
+
const compressedPath = destDir(`${filename}.gz`);
|
|
150
|
+
let head;
|
|
151
|
+
try {
|
|
152
|
+
head = await readANACEditionHead(client, edition);
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
report?.(` ✗ ${edition}: ${error instanceof Error ? error.message : String(error)}`);
|
|
156
|
+
summary.failed++;
|
|
157
|
+
summary.failedCodes.push(edition);
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
report?.(` ${edition}: ${head.contentLength === null ? "no content-length" : `${ByteFormatter.formatIEC(head.contentLength)} compressed`}` +
|
|
161
|
+
`, last-modified ${head.lastModified ?? "absent"}`);
|
|
162
|
+
const current = !options.force &&
|
|
163
|
+
(await isANACEditionCurrent(recorded.get(filename) ?? null, head, editionPath, options.verifyDigest ?? false));
|
|
164
|
+
if (current) {
|
|
165
|
+
report?.(` ✓ ${edition} already current — no download.`);
|
|
166
|
+
summary.skipped++;
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
let compressedBytes;
|
|
170
|
+
try {
|
|
171
|
+
compressedBytes = await resumableDownload({
|
|
172
|
+
url: anacEditionURL(edition),
|
|
173
|
+
dest: compressedPath,
|
|
174
|
+
headers: { accept: "application/gzip, application/x-gzip, */*" },
|
|
175
|
+
retryDelayMs: options.retryDelayMs,
|
|
176
|
+
report,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
report?.(` ✗ ${edition} download failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
181
|
+
await removePathIfPresent(compressedPath);
|
|
182
|
+
summary.failed++;
|
|
183
|
+
summary.failedCodes.push(edition);
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
// The delivered count rather than the stated one.
|
|
187
|
+
// ANAC republishes monthly, so a `HEAD` taken before the transfer can describe
|
|
188
|
+
// a different edition than the body that arrived.
|
|
189
|
+
if (head.contentLength !== null && head.contentLength !== compressedBytes) {
|
|
190
|
+
report?.(` ! ${edition}: the HEAD stated ${head.contentLength} compressed bytes and ${compressedBytes} arrived, ` +
|
|
191
|
+
`so the edition was republished between the two requests`);
|
|
192
|
+
}
|
|
193
|
+
try {
|
|
194
|
+
await decompressToJSONL(compressedPath, editionPath);
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
report?.(` ✗ ${edition} decompress failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
198
|
+
await removePathIfPresent(compressedPath);
|
|
199
|
+
summary.failed++;
|
|
200
|
+
summary.failedCodes.push(edition);
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
const stat = await tryStat(editionPath);
|
|
204
|
+
if (!stat) {
|
|
205
|
+
report?.(` ✗ ${edition}: the decompressed edition is not at ${editionPath.toString()}`);
|
|
206
|
+
summary.failed++;
|
|
207
|
+
summary.failedCodes.push(edition);
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
if (!options.keepCompressed) {
|
|
211
|
+
await removePathIfPresent(compressedPath);
|
|
212
|
+
}
|
|
213
|
+
written.set(filename, {
|
|
214
|
+
source_url: anacEditionURL(edition),
|
|
215
|
+
downloaded_at: new Date().toISOString(),
|
|
216
|
+
filename,
|
|
217
|
+
sha256: await sha256File(editionPath),
|
|
218
|
+
bytes: stat.size,
|
|
219
|
+
last_modified: head.lastModified,
|
|
220
|
+
compressed_bytes: compressedBytes,
|
|
221
|
+
});
|
|
222
|
+
report?.(` ✓ ${edition}: ${ByteFormatter.formatIEC(stat.size)} decompressed`);
|
|
223
|
+
summary.fetched++;
|
|
224
|
+
}
|
|
225
|
+
const manifest = {
|
|
226
|
+
source: SLUG,
|
|
227
|
+
source_url: `https://data.open-contracting.org/en/publication/${IT_ANAC_PUBLICATION_ID}`,
|
|
228
|
+
license: IT_ANAC_LICENSE,
|
|
229
|
+
attribution: IT_ANAC_ATTRIBUTION,
|
|
230
|
+
downloaded_at: new Date().toISOString(),
|
|
231
|
+
files: [...written.values()].toSorted((left, right) => left.filename.localeCompare(right.filename)),
|
|
232
|
+
};
|
|
233
|
+
await writeManifest(manifestPath, manifest);
|
|
234
|
+
report?.(` MANIFEST written to ${manifestPath.toString()}`);
|
|
235
|
+
return summary;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Download ANAC's OCDS editions into `<outRoot>/it-anac/`.
|
|
239
|
+
*
|
|
240
|
+
* The registry entry point.
|
|
241
|
+
* `#it/adapters/anac/adapter` is pointed at {@linkcode itANACInputPath},
|
|
242
|
+
* the directory itself, so it reads every edition inside it.
|
|
243
|
+
*/
|
|
244
|
+
export async function fetchITANAC(options, report) {
|
|
245
|
+
await using client = new APIClient({ displayName: SLUG, retry: true });
|
|
246
|
+
// Awaited rather than returned: `await using` disposes the client when this scope exits,
|
|
247
|
+
// and a disposed `APIClient` refuses every later request.
|
|
248
|
+
return await downloadITANAC(client, {
|
|
249
|
+
outputDir: options.outRoot(SLUG),
|
|
250
|
+
editions: options.editions,
|
|
251
|
+
keepCompressed: options.keepCompressed,
|
|
252
|
+
verifyDigest: options.verifyDigest,
|
|
253
|
+
force: options.force,
|
|
254
|
+
retryDelayMs: options.retryDelayMs,
|
|
255
|
+
signal: options.signal,
|
|
256
|
+
report,
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Decompress one gzip file to another path, stream to stream.
|
|
261
|
+
*
|
|
262
|
+
* Exported because a test exercises it directly: an accented Italian place name
|
|
263
|
+
* split across two gzip chunks must arrive whole.
|
|
264
|
+
*/
|
|
265
|
+
export async function decompressToJSONL(source, destination) {
|
|
266
|
+
const decompressed = gunzipChunks(openReadStream(source));
|
|
267
|
+
await pipeline(Readable.fromWeb(decompressed), openWriteStream(destination));
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=anac.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anac.js","sourceRoot":"","sources":["../../../../lib/it/tools/fetch/anac.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,33 +5,34 @@
|
|
|
5
5
|
*
|
|
6
6
|
* `wof-admin-jp`: Japanese admin-hierarchy adapter.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
8
|
+
* prototype — not yet wired into the Stage 3 training corpus. Demonstrates the JP address shape and
|
|
9
9
|
* synthesizes BIO-labeled training rows from the global WOF SQLite.
|
|
10
10
|
*
|
|
11
11
|
* JP addresses differ from US/EU in three ways:
|
|
12
12
|
*
|
|
13
13
|
* 1. **Reversed ordering** — region → county → locality → block → house_number "東京都世田谷区南町1-2-3" not
|
|
14
14
|
* "1-2-3 Minamicho, Setagaya, Tokyo"
|
|
15
|
-
* 2. **No street names** — most JP addresses use a block/sub-block grid system. The "
|
|
15
|
+
* 2. **No street names** — most JP addresses use a block/sub-block grid system. The "neighborhood"
|
|
16
16
|
* placetype (丁目) is the closest analog to a street but is actually a grid cell.
|
|
17
|
-
* 3. **Postcode-first convention** — addresses are often prefixed with `〒NNN-
|
|
17
|
+
* 3. **Postcode-first convention** — addresses are often prefixed with `〒NNN-nnnn`.
|
|
18
18
|
*
|
|
19
19
|
* Schema mapping to ComponentTags (subset of Stage 3 + JP-specific Phase 6 tags):
|
|
20
20
|
*
|
|
21
21
|
* | JP concept | WOF placetype | ComponentTag (Phase 6) |
|
|
22
22
|
* |-----------------|--------------------|-----------------------| | 都道府県 (prefecture) | region |
|
|
23
23
|
* region (or prefecture) | | 市区町村 (city/ward) | county/locality | locality (or municipality) | |
|
|
24
|
-
* 丁目 (chome) |
|
|
24
|
+
* 丁目 (chome) | neighborhood | block (Phase 6 tag) | | 番地 (banchi) | (synth) | sub_block | | 号
|
|
25
25
|
* (gō) | (synth) | house_number | | 〒 (postcode prefix) | — | postcode |
|
|
26
26
|
*
|
|
27
27
|
* This adapter currently emits only the admin chain (region → locality → block). House numbers and
|
|
28
28
|
* sub-blocks require a different data source (JP postcode database or real-world address dumps
|
|
29
|
-
* from
|
|
29
|
+
* from mlit/JapanPost).
|
|
30
30
|
*/
|
|
31
|
-
import type
|
|
31
|
+
import { type CanonicalRow, type CorpusAdapter } from "#types";
|
|
32
32
|
/**
|
|
33
|
-
* Registry id for this adapter.
|
|
34
|
-
*
|
|
33
|
+
* Registry id for this adapter.
|
|
34
|
+
*
|
|
35
|
+
* Stamped into every row it emits, so a corpus record can be traced back to the dataset it came from.
|
|
35
36
|
*/
|
|
36
37
|
export declare const WOF_ADMIN_JP_ADAPTER_ID = "wof-admin-jp";
|
|
37
38
|
interface PlaceRow {
|
|
@@ -46,15 +47,17 @@ interface PlaceRow {
|
|
|
46
47
|
*
|
|
47
48
|
* Format: `〒<postcode>? <region><locality><neighbourhood>?`
|
|
48
49
|
*
|
|
49
|
-
* No house numbers yet — needs
|
|
50
|
+
* No house numbers yet — needs mlit data.
|
|
50
51
|
*/
|
|
51
52
|
export declare function synthesizeJpAddress(chain: PlaceRow[], jpnNames: Map<number, string>): {
|
|
52
53
|
raw: string;
|
|
53
54
|
components: CanonicalRow["components"];
|
|
54
55
|
} | null;
|
|
55
56
|
/**
|
|
56
|
-
* Build the JP adapter.
|
|
57
|
-
*
|
|
57
|
+
* Build the JP adapter.
|
|
58
|
+
*
|
|
59
|
+
* Reads from the unified global WOF SQLite and walks admin chains from neighborhoods.
|
|
60
|
+
* Yields canonical rows.
|
|
58
61
|
*/
|
|
59
62
|
export declare function createWOFAdminJpAdapter(): CorpusAdapter;
|
|
60
63
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../lib/jp/adapters/wof-admin/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../lib/jp/adapters/wof-admin/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAQH,OAAO,EAAoC,KAAK,YAAY,EAAE,KAAK,aAAa,EAAiB,MAAM,QAAQ,CAAA;AAO/G;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,iBAAiB,CAAA;AAErD,UAAU,QAAQ;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CACf;AAmCD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,QAAQ,EAAE,EACjB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B;IACF,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACtC,GAAG,IAAI,CAyBP;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,aAAa,CA4EvD;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,eAA4B,CAAA"}
|
|
@@ -5,48 +5,54 @@
|
|
|
5
5
|
*
|
|
6
6
|
* `wof-admin-jp`: Japanese admin-hierarchy adapter.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
8
|
+
* prototype — not yet wired into the Stage 3 training corpus. Demonstrates the JP address shape and
|
|
9
9
|
* synthesizes BIO-labeled training rows from the global WOF SQLite.
|
|
10
10
|
*
|
|
11
11
|
* JP addresses differ from US/EU in three ways:
|
|
12
12
|
*
|
|
13
13
|
* 1. **Reversed ordering** — region → county → locality → block → house_number "東京都世田谷区南町1-2-3" not
|
|
14
14
|
* "1-2-3 Minamicho, Setagaya, Tokyo"
|
|
15
|
-
* 2. **No street names** — most JP addresses use a block/sub-block grid system. The "
|
|
15
|
+
* 2. **No street names** — most JP addresses use a block/sub-block grid system. The "neighborhood"
|
|
16
16
|
* placetype (丁目) is the closest analog to a street but is actually a grid cell.
|
|
17
|
-
* 3. **Postcode-first convention** — addresses are often prefixed with `〒NNN-
|
|
17
|
+
* 3. **Postcode-first convention** — addresses are often prefixed with `〒NNN-nnnn`.
|
|
18
18
|
*
|
|
19
19
|
* Schema mapping to ComponentTags (subset of Stage 3 + JP-specific Phase 6 tags):
|
|
20
20
|
*
|
|
21
21
|
* | JP concept | WOF placetype | ComponentTag (Phase 6) |
|
|
22
22
|
* |-----------------|--------------------|-----------------------| | 都道府県 (prefecture) | region |
|
|
23
23
|
* region (or prefecture) | | 市区町村 (city/ward) | county/locality | locality (or municipality) | |
|
|
24
|
-
* 丁目 (chome) |
|
|
24
|
+
* 丁目 (chome) | neighborhood | block (Phase 6 tag) | | 番地 (banchi) | (synth) | sub_block | | 号
|
|
25
25
|
* (gō) | (synth) | house_number | | 〒 (postcode prefix) | — | postcode |
|
|
26
26
|
*
|
|
27
27
|
* This adapter currently emits only the admin chain (region → locality → block). House numbers and
|
|
28
28
|
* sub-blocks require a different data source (JP postcode database or real-world address dumps
|
|
29
|
-
* from
|
|
29
|
+
* from mlit/JapanPost).
|
|
30
30
|
*/
|
|
31
31
|
import { isPresent } from "@mailwoman/core/objects";
|
|
32
32
|
import { allRows, getRow } from "@mailwoman/core/utils";
|
|
33
33
|
import { DatabaseClient } from "@mailwoman/sqlite/client";
|
|
34
|
+
import { SourceRegister } from "#registers";
|
|
35
|
+
import { AddressRole, SurfaceOrigin } from "#types";
|
|
34
36
|
/**
|
|
35
37
|
* Ancestry hops walked upward from a WOF record before giving up — deeper than any real JP admin chain.
|
|
36
38
|
*/
|
|
37
39
|
const MAX_ANCESTRY_DEPTH = 6;
|
|
38
40
|
/**
|
|
39
|
-
* Registry id for this adapter.
|
|
40
|
-
*
|
|
41
|
+
* Registry id for this adapter.
|
|
42
|
+
*
|
|
43
|
+
* Stamped into every row it emits, so a corpus record can be traced back to the dataset it came from.
|
|
41
44
|
*/
|
|
42
45
|
export const WOF_ADMIN_JP_ADAPTER_ID = "wof-admin-jp";
|
|
43
46
|
/**
|
|
44
47
|
* Walk parent chain up to 6 levels, over a place table already resident in memory.
|
|
45
48
|
*
|
|
46
|
-
* `resolve` is the override for a parent outside the preloaded set (a chain that leaves the country);
|
|
47
|
-
* query, so keeping the common case out of it is the whole point.
|
|
48
|
-
* `
|
|
49
|
-
* the preloaded country set.
|
|
49
|
+
* `resolve` is the override for a parent outside the preloaded set (a chain that leaves the country);
|
|
50
|
+
* it is a point query, so keeping the common case out of it is the whole point.
|
|
51
|
+
* The GeoJSON adapters' in-memory analogue is `buildAncestorNameIndex` (`#utils`), and the two stay
|
|
52
|
+
* separate because this one's rows come from SQLite and a chain can leave the preloaded country set.
|
|
53
|
+
*
|
|
54
|
+
* That analogue stores the nearest ancestor's name for each tag.
|
|
55
|
+
* This function receives one `PlaceRow` per level and reads the chain directly.
|
|
50
56
|
*/
|
|
51
57
|
function chainOf(byID, resolve, startID) {
|
|
52
58
|
const out = [];
|
|
@@ -71,7 +77,7 @@ function pickName(row, jpnNames) {
|
|
|
71
77
|
*
|
|
72
78
|
* Format: `〒<postcode>? <region><locality><neighbourhood>?`
|
|
73
79
|
*
|
|
74
|
-
* No house numbers yet — needs
|
|
80
|
+
* No house numbers yet — needs mlit data.
|
|
75
81
|
*/
|
|
76
82
|
export function synthesizeJpAddress(chain, jpnNames) {
|
|
77
83
|
const region = chain.find((r) => r.placetype === "region");
|
|
@@ -94,13 +100,18 @@ export function synthesizeJpAddress(chain, jpnNames) {
|
|
|
94
100
|
return { raw, components };
|
|
95
101
|
}
|
|
96
102
|
/**
|
|
97
|
-
* Build the JP adapter.
|
|
98
|
-
*
|
|
103
|
+
* Build the JP adapter.
|
|
104
|
+
*
|
|
105
|
+
* Reads from the unified global WOF SQLite and walks admin chains from neighborhoods.
|
|
106
|
+
* Yields canonical rows.
|
|
99
107
|
*/
|
|
100
108
|
export function createWOFAdminJpAdapter() {
|
|
101
109
|
return {
|
|
102
110
|
id: WOF_ADMIN_JP_ADAPTER_ID,
|
|
103
111
|
defaultLicense: "CC-BY-4.0",
|
|
112
|
+
addressRole: AddressRole.Premise,
|
|
113
|
+
register: SourceRegister.WhosOnFirst,
|
|
114
|
+
surface: SurfaceOrigin.Rendered,
|
|
104
115
|
description: "Japanese admin hierarchy from WOF (synthesized addresses without house numbers).",
|
|
105
116
|
async *rows(opts) {
|
|
106
117
|
if (opts.country && opts.country !== "JP") {
|
|
@@ -114,8 +125,8 @@ export function createWOFAdminJpAdapter() {
|
|
|
114
125
|
jpnNames.set(row.id, row.name);
|
|
115
126
|
}
|
|
116
127
|
}
|
|
117
|
-
// One read of the JP place table instead of a fresh `prepare` + up to six point queries per
|
|
118
|
-
//
|
|
128
|
+
// One read of the JP place table instead of a fresh `prepare` + up to six point queries per seed.
|
|
129
|
+
// There are tens of thousands of neighborhood seeds.
|
|
119
130
|
const byID = new Map();
|
|
120
131
|
for (const row of allRows(db.prepare(`SELECT id, name, placetype, parent_id, country FROM spr WHERE country='JP'`))) {
|
|
121
132
|
byID.set(row.id, row);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../lib/jp/adapters/wof-admin/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../lib/jp/adapters/wof-admin/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,19 +6,22 @@
|
|
|
6
6
|
* Fetch the National Tax Agency's corporate-number register (法人番号公表サイト 全件データ): every
|
|
7
7
|
* corporation assigned a number, about 5,000,000 rows, with the head-office address as one string
|
|
8
8
|
* (国内所在地) plus the prefecture and municipality split out and the postcode. The nationwide CSV
|
|
9
|
-
* in Unicode is one zip of about 255 MB.
|
|
10
|
-
*
|
|
9
|
+
* in Unicode is one zip of about 255 MB.
|
|
10
|
+
*
|
|
11
|
+
* The agency issues the corporate number, so the identifier is an `identity` assertion. The head-office
|
|
12
|
+
* string beside it is an `observation` the corporation filed, on `registered-office` rows. The Overture
|
|
13
|
+
* rows the JP corpus is built from assert `address` on `premise` rows. That distinction matters when the two are mixed.
|
|
11
14
|
*
|
|
12
15
|
* The agency states the three published fields may be used freely by anyone ("どなたでも自由にご利用
|
|
13
16
|
* いただくことができます"), with no attribution condition on the download page.
|
|
14
17
|
*
|
|
15
|
-
* The file sits behind a form
|
|
18
|
+
* The file sits behind a form. The page hands out a per-session token. A post with that token,
|
|
16
19
|
* `event=download` and the file number of the nationwide Unicode CSV answers the zip. The file
|
|
17
20
|
* number is read off the page rather than pinned, because the agency re-issues the files monthly.
|
|
18
21
|
*
|
|
19
22
|
* Invoke via `mailwoman corpus fetch houjin-jp --out-root <path>`.
|
|
20
23
|
*/
|
|
21
|
-
import type { BaseFetchOptions, FetchSummary } from "#tools/fetch/download
|
|
24
|
+
import type { BaseFetchOptions, FetchSummary } from "#tools/fetch/download";
|
|
22
25
|
export type FetchHoujinJPOptions = BaseFetchOptions;
|
|
23
26
|
export declare function fetchHoujinJP(options: FetchHoujinJPOptions, report?: (line: string) => void): Promise<FetchSummary>;
|
|
24
27
|
//# sourceMappingURL=houjin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"houjin.d.ts","sourceRoot":"","sources":["../../../../lib/jp/tools/fetch/houjin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"houjin.d.ts","sourceRoot":"","sources":["../../../../lib/jp/tools/fetch/houjin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAA4B,MAAM,uBAAuB,CAAA;AAWrG,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAA;AAenD,wBAAsB,aAAa,CAClC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC7B,OAAO,CAAC,YAAY,CAAC,CAkFvB"}
|
|
@@ -6,13 +6,16 @@
|
|
|
6
6
|
* Fetch the National Tax Agency's corporate-number register (法人番号公表サイト 全件データ): every
|
|
7
7
|
* corporation assigned a number, about 5,000,000 rows, with the head-office address as one string
|
|
8
8
|
* (国内所在地) plus the prefecture and municipality split out and the postcode. The nationwide CSV
|
|
9
|
-
* in Unicode is one zip of about 255 MB.
|
|
10
|
-
*
|
|
9
|
+
* in Unicode is one zip of about 255 MB.
|
|
10
|
+
*
|
|
11
|
+
* The agency issues the corporate number, so the identifier is an `identity` assertion. The head-office
|
|
12
|
+
* string beside it is an `observation` the corporation filed, on `registered-office` rows. The Overture
|
|
13
|
+
* rows the JP corpus is built from assert `address` on `premise` rows. That distinction matters when the two are mixed.
|
|
11
14
|
*
|
|
12
15
|
* The agency states the three published fields may be used freely by anyone ("どなたでも自由にご利用
|
|
13
16
|
* いただくことができます"), with no attribution condition on the download page.
|
|
14
17
|
*
|
|
15
|
-
* The file sits behind a form
|
|
18
|
+
* The file sits behind a form. The page hands out a per-session token. A post with that token,
|
|
16
19
|
* `event=download` and the file number of the nationwide Unicode CSV answers the zip. The file
|
|
17
20
|
* number is read off the page rather than pinned, because the agency re-issues the files monthly.
|
|
18
21
|
*
|
|
@@ -20,8 +23,7 @@
|
|
|
20
23
|
*/
|
|
21
24
|
import { makeDirectories } from "@mailwoman/core/fs/writers";
|
|
22
25
|
import { sha256File } from "@mailwoman/core/hash";
|
|
23
|
-
import {
|
|
24
|
-
import { attachmentFilename, cookieHeader, streamBodyToFile, withRetries, writeManifest, } from "#tools/fetch/download/index";
|
|
26
|
+
import { attachmentFilename, cookieHeader, streamBodyToFile, withRetries, writeManifest } from "#tools/fetch/download";
|
|
25
27
|
const SLUG = "houjin-jp";
|
|
26
28
|
const PAGE_URL = "https://www.houjin-bangou.nta.go.jp/download/zenken/";
|
|
27
29
|
const FORM_URL = `${PAGE_URL}index.html`;
|
|
@@ -30,18 +32,18 @@ const LICENSE = "国税庁法人番号公表サイト — the three published fi
|
|
|
30
32
|
const ATTRIBUTION = "国税庁 法人番号公表サイト (National Tax Agency, Corporate Number Publication Site)";
|
|
31
33
|
const USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) mailwoman-corpus-fetch";
|
|
32
34
|
/**
|
|
33
|
-
* The nationwide row of the "CSV形式・Unicode" table
|
|
35
|
+
* The nationwide row of the "CSV形式・Unicode" table stores the file number in its `doDownload(N)` handler.
|
|
34
36
|
*/
|
|
35
37
|
function nationwideUnicodeFileNumber(html) {
|
|
36
38
|
const start = html.indexOf('id="csv-unicode"');
|
|
37
39
|
if (start === -1)
|
|
38
|
-
return
|
|
40
|
+
return null;
|
|
39
41
|
const section = html.slice(start, html.indexOf('id="xml-unicode"', start));
|
|
40
42
|
const row = /全国[\s\S]{0,600}?doDownload\((\d+)\)/.exec(section);
|
|
41
|
-
return row?.[1];
|
|
43
|
+
return row?.[1] ?? null;
|
|
42
44
|
}
|
|
43
45
|
export async function fetchHoujinJP(options, report) {
|
|
44
|
-
const destDir =
|
|
46
|
+
const destDir = options.outRoot(SLUG);
|
|
45
47
|
await makeDirectories(destDir);
|
|
46
48
|
const page = await fetch(PAGE_URL, { headers: { "user-agent": USER_AGENT, accept: "text/html" } });
|
|
47
49
|
if (!page.ok)
|
|
@@ -58,7 +60,9 @@ export async function fetchHoujinJP(options, report) {
|
|
|
58
60
|
let bytes;
|
|
59
61
|
try {
|
|
60
62
|
bytes = await withRetries(async () => {
|
|
61
|
-
// A fresh page per attempt
|
|
63
|
+
// A fresh page per attempt.
|
|
64
|
+
// The token is bound to the session cookie.
|
|
65
|
+
// Either may have lapsed.
|
|
62
66
|
const attemptPage = await fetch(PAGE_URL, { headers: { "user-agent": USER_AGENT, accept: "text/html" } });
|
|
63
67
|
const attemptToken = new RegExp(`${TOKEN_FIELD.replaceAll(".", "\\.")}" value="([^"]+)"`).exec(await attemptPage.text())?.[1];
|
|
64
68
|
if (!attemptToken)
|
|
@@ -78,14 +82,14 @@ export async function fetchHoujinJP(options, report) {
|
|
|
78
82
|
throw new Error(`HTTP ${res.status} ${res.headers.get("content-type") ?? ""}`);
|
|
79
83
|
}
|
|
80
84
|
filename = attachmentFilename(res, filename);
|
|
81
|
-
return streamBodyToFile(res,
|
|
85
|
+
return streamBodyToFile(res, destDir(filename));
|
|
82
86
|
}, { report, label: filename });
|
|
83
87
|
}
|
|
84
88
|
catch (error) {
|
|
85
89
|
report?.(` ✗ ${error.message}`);
|
|
86
90
|
return { fetched: 0, skipped: 0, failed: 1, failedCodes: ["zenkoku-csv-unicode"] };
|
|
87
91
|
}
|
|
88
|
-
const dest =
|
|
92
|
+
const dest = destDir(filename);
|
|
89
93
|
const sha = await sha256File(dest);
|
|
90
94
|
report?.(` ✓ ${filename} ${(bytes / 1024 / 1024).toFixed(1)} MB sha256=${sha}`);
|
|
91
95
|
const manifest = {
|
|
@@ -96,7 +100,7 @@ export async function fetchHoujinJP(options, report) {
|
|
|
96
100
|
downloaded_at: new Date().toISOString(),
|
|
97
101
|
files: [{ source_url: FORM_URL, downloaded_at: new Date().toISOString(), filename, sha256: sha, bytes }],
|
|
98
102
|
};
|
|
99
|
-
await writeManifest(
|
|
103
|
+
await writeManifest(destDir("MANIFEST.json"), manifest);
|
|
100
104
|
return { fetched: 1, skipped: 0, failed: 0, failedCodes: [] };
|
|
101
105
|
}
|
|
102
106
|
//# sourceMappingURL=houjin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"houjin.js","sourceRoot":"","sources":["../../../../lib/jp/tools/fetch/houjin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"houjin.js","sourceRoot":"","sources":["../../../../lib/jp/tools/fetch/houjin.ts"],"names":[],"mappings":"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"}
|