@mailwoman/corpus 10.0.0 → 10.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +120 -34
- package/data/PROVENANCE.md +623 -17
- package/data/address-source-register.json +14249 -0
- package/data/builds/v0.7.0-de-holdout/inputs.json +22 -0
- package/data/builds/v0.8.0-registers/inputs.json +92 -0
- package/data/license-decisions.json +1603 -0
- package/data/licenses/PROVENANCE.md +65 -0
- package/data/licenses/cdla-permissive-2.0.md +43 -0
- package/data/licenses/geonames-publication.md +34 -0
- package/data/licenses/licence-ouverte-2.0.md +36 -0
- package/data/licenses/national-address-database.md +46 -0
- package/data/licenses/nlod-2.0.md +90 -0
- package/data/licenses/sirene-publication.md +38 -0
- package/data/licenses/whosonfirst-licenses.md +65 -0
- package/data/source-resolutions.json +804 -0
- package/data/sub-venue-lexicon.json +1 -1
- package/data/training-manifests/v0.7.0-de-holdout.effective.json +477 -0
- package/data/training-manifests/v0.7.0-de-holdout.json +78 -0
- package/lib/adapters/cordis/adapter.ts +785 -0
- package/lib/adapters/dedup-key.ts +40 -0
- package/lib/adapters/errors.ts +21 -0
- package/lib/adapters/geonames/adapter.ts +42 -52
- package/lib/adapters/geonames/postal/adapter.ts +31 -37
- package/lib/adapters/gleif/adapter.ts +828 -0
- package/lib/adapters/libpostal-dictionary.ts +39 -0
- package/lib/adapters/openaddresses/adapter.ts +51 -55
- package/lib/adapters/osm/adapter.ts +148 -70
- package/lib/adapters/overture/adapter.ts +52 -43
- package/lib/adapters/po-box/adapter.ts +202 -0
- package/lib/adapters/registry.ts +79 -0
- package/lib/adapters/sha256-stream.ts +49 -0
- package/lib/adapters/source-id.ts +49 -0
- package/lib/adapters/street-line.ts +135 -0
- package/lib/adapters/wof/admin/json/adapter.ts +48 -33
- package/lib/adapters/wof/json-rows.ts +56 -26
- package/lib/adapters/wof/postalcode-json/adapter.ts +57 -59
- package/lib/adapters.ts +230 -0
- package/lib/au/adapters/gnaf/adapter.ts +35 -43
- package/lib/au/adapters/gnaf/assemble.ts +31 -51
- package/lib/be/adapters/brussels/adapter.ts +566 -0
- package/lib/be/adapters/vlaanderen/adapter.ts +670 -0
- package/lib/be/adapters/wallonie/adapter.ts +537 -0
- package/lib/be/tools/fetch/brussels.ts +239 -0
- package/lib/be/tools/fetch/wallonie.ts +274 -0
- package/lib/build/adapters.ts +110 -0
- package/lib/build/align.ts +364 -0
- package/lib/build/checkpoint.ts +131 -0
- package/lib/build/eligibility.ts +96 -0
- package/lib/build/heap.ts +53 -0
- package/lib/build/inputs.ts +81 -0
- package/lib/build/rows.ts +21 -0
- package/lib/build/types.ts +232 -0
- package/lib/build.ts +127 -315
- package/lib/cn/recipes/organizational-units.ts +20 -41
- package/lib/cz/adapters/cuzk/adapter.ts +317 -0
- package/lib/cz/recipes/pcfirst-preposition.ts +40 -27
- package/lib/cz/tools/fetch/cuzk.ts +699 -0
- package/lib/de/recipes/locale.ts +68 -58
- package/lib/directory.ts +31 -0
- package/lib/dk/adapters/inspire/adapter.ts +345 -0
- package/lib/dk/tools/fetch/inspire.ts +321 -0
- package/lib/ee/adapters/ads/adapter.ts +246 -0
- package/lib/ee/tools/fetch/ads.ts +270 -0
- package/lib/env.ts +6 -2
- package/lib/es/adapters/bizkaia/adapter.ts +388 -0
- package/lib/es/adapters/catastro/adapter.ts +343 -0
- package/lib/es/adapters/gipuzkoa/adapter.ts +263 -0
- package/lib/es/adapters/navarra/adapter.ts +289 -0
- package/lib/es/cadastre.ts +194 -0
- package/lib/es/tools/fetch/bizkaia.ts +748 -0
- package/lib/es/tools/fetch/catastro.ts +754 -0
- package/lib/es/tools/fetch/gipuzkoa.ts +336 -0
- package/lib/es/tools/fetch/navarra.ts +488 -0
- package/lib/fi/adapters/ryhti/adapter.ts +323 -0
- package/lib/fi/tools/fetch/ryhti.ts +476 -0
- package/lib/fingerprints.ts +154 -0
- package/lib/fr/adapters/annuaire-education/adapter.ts +598 -0
- package/lib/fr/adapters/ban/adapter.ts +87 -59
- package/lib/fr/adapters/finess/adapter.ts +618 -0
- package/lib/fr/adapters/finess/postal-lines.ts +157 -0
- package/lib/fr/adapters/finess/voie-type.ts +200 -0
- package/lib/fr/insee-country.ts +62 -0
- package/lib/fr/recipes/admin-split.ts +38 -60
- package/lib/fr/recipes/bare-street.ts +37 -50
- package/lib/fr/recipes/fragment.ts +59 -142
- package/lib/fr/recipes/lieudit.ts +109 -73
- package/lib/fr/recipes/order.ts +32 -59
- package/lib/fr/{adapters/ban/street-decompose.ts → street-decompose.ts} +4 -3
- package/lib/fr/tools/fetch/annuaire-education.ts +306 -0
- package/lib/fr/tools/fetch/ban.ts +28 -19
- package/lib/fr/tools/fetch/finess.ts +352 -0
- package/lib/gauntlet-inputs.ts +92 -0
- package/lib/index.ts +9 -3
- package/lib/inspire/address.ts +457 -0
- package/lib/inspire/archive.ts +44 -0
- package/lib/inspire/errors.ts +71 -0
- package/lib/inspire/stream.ts +262 -0
- package/lib/international/recipes/locale.ts +134 -176
- package/lib/it/adapters/anac/adapter.ts +522 -0
- package/lib/it/tools/fetch/anac.ts +394 -0
- package/lib/jp/adapters/wof-admin/adapter.ts +27 -17
- package/lib/jp/tools/fetch/houjin.ts +16 -18
- package/lib/kr/adapters/juso/label-rows.ts +24 -44
- package/lib/kr/adapters/localdata/align.ts +20 -31
- package/lib/kr/adapters/localdata/key-index.ts +17 -25
- package/lib/kr/adapters/localdata/permit-rows.ts +33 -26
- package/lib/kr/tools/fetch/juso.ts +19 -21
- package/lib/kr/tools/fetch/localdata.ts +28 -29
- package/lib/lu/adapters/bd-adresses/adapter.ts +240 -0
- package/lib/lu/tools/fetch/bd-adresses.ts +351 -0
- package/lib/lv/adapters/varis/adapter.ts +499 -0
- package/lib/lv/tools/fetch/varis.ts +214 -0
- package/lib/nl/adapters/kadaster/adapter.ts +386 -0
- package/lib/nl/recipes/postcode.ts +46 -24
- package/lib/nl/tools/fetch/kadaster.ts +298 -0
- package/lib/no/adapters/matrikkelen/adapter.ts +187 -0
- package/lib/no/recipes/fragment.ts +34 -58
- package/lib/no/recipes/street/led.ts +44 -25
- package/lib/no/recipes/{street/index.ts → street.ts} +29 -11
- package/lib/no/tools/fetch/matrikkelen.ts +519 -0
- package/lib/parquet/duckdb.ts +144 -0
- package/lib/parquet/readers.ts +86 -0
- package/lib/parquet/schema.ts +214 -0
- package/lib/parquet/shuffle.ts +59 -0
- package/lib/parquet/span-sql.ts +54 -0
- package/lib/parquet/streams.ts +113 -0
- package/lib/parquet/writers.ts +451 -0
- package/lib/pl/adapters/emuia/adapter.ts +202 -0
- package/lib/pl/tools/fetch/emuia.ts +360 -0
- package/lib/recipes/anchor-absorption.ts +30 -19
- package/lib/recipes/bare/country.ts +24 -32
- package/lib/recipes/bare/postcode/eval.ts +1 -1
- package/lib/recipes/bare/postcode.ts +346 -0
- package/lib/recipes/boundary-stress.ts +36 -19
- package/lib/recipes/country-balanced.ts +66 -86
- package/lib/recipes/house-venue.ts +31 -13
- package/lib/recipes/intersection.ts +82 -60
- package/lib/recipes/po/box/cedex/au-nz.ts +3 -3
- package/lib/recipes/po/box/cedex/ca.ts +3 -2
- package/lib/recipes/po/box/cedex/fr.ts +4 -3
- package/lib/recipes/po/box/cedex/phrases.ts +7 -6
- package/lib/recipes/po/box/cedex/recipe.ts +28 -16
- package/lib/recipes/po/box/cedex/sources.ts +3 -3
- package/lib/recipes/po/box/cedex/us.ts +7 -2
- package/lib/recipes/po/{box/index.ts → box.ts} +39 -18
- package/lib/recipes/scaffold.ts +252 -153
- package/lib/recipes/sources.ts +399 -0
- package/lib/recipes/street/affix.ts +54 -154
- package/lib/recipes/street/bare.ts +28 -15
- package/lib/recipes/street.ts +32 -8
- package/lib/recipes/sub/venue/context.ts +30 -23
- package/lib/recipes/sub/venue/render.ts +170 -0
- package/lib/recipes/sub/venue/sources.ts +68 -219
- package/lib/recipes/sub/venue.ts +801 -0
- package/lib/recipes/trailing-region.ts +69 -85
- package/lib/recipes/unit/sources.ts +44 -0
- package/lib/recipes/unit.ts +101 -89
- package/lib/{recipes/index.ts → recipes.ts} +13 -11
- package/lib/registers.ts +278 -0
- package/lib/ro/adapters/retea-scolara/adapter.ts +264 -0
- package/lib/ro/tools/fetch/retea-scolara.ts +187 -0
- package/lib/runner.ts +220 -84
- package/lib/sg/recipes/register.ts +46 -52
- package/lib/sg/tools/fetch/acra.ts +20 -25
- package/lib/si/recipes/bare-village.ts +34 -17
- package/lib/sk/adapters/inspire/adapter.ts +395 -0
- package/lib/sk/tools/fetch/inspire.ts +402 -0
- package/lib/source-register/effective-manifest.ts +659 -0
- package/lib/source-register/register.ts +539 -0
- package/lib/source-register/training-manifest.ts +218 -0
- package/lib/source-register/types.ts +590 -0
- package/lib/source-register.ts +71 -0
- package/lib/south-asia/recipes/register.ts +45 -26
- package/lib/subvenue/harvest.ts +251 -0
- package/lib/{tools/sub/venue → subvenue}/promotions.ts +33 -70
- package/lib/subvenue/surfaces.ts +94 -0
- package/lib/subvenue/table.ts +264 -0
- package/lib/surfaces/locale.ts +246 -0
- package/lib/synthesizers/anchor-absorption.ts +55 -91
- package/lib/synthesizers/boundary-stress.ts +49 -131
- package/lib/synthesizers/house-venue.ts +44 -102
- package/lib/synthesizers/intersection.ts +37 -26
- package/lib/synthesizers/no-street.ts +70 -119
- package/lib/synthesizers/po-box.ts +90 -105
- package/lib/synthesizers/street.ts +46 -34
- package/lib/synthesizers/utils.ts +64 -218
- package/lib/test-kit/corpus-recipe.ts +45 -28
- package/lib/test-kit.ts +116 -0
- package/lib/tools/align-canonical.ts +64 -0
- package/lib/tools/audit.ts +113 -118
- package/lib/tools/corpus-stats.ts +44 -30
- package/lib/tools/fetch/atom.ts +164 -0
- package/lib/tools/fetch/cordis.ts +318 -0
- package/lib/tools/fetch/download/manifest.ts +34 -22
- package/lib/tools/fetch/download/network.ts +55 -31
- package/lib/tools/fetch/download/retry.ts +26 -25
- package/lib/tools/fetch/geonames/dump.ts +72 -54
- package/lib/tools/fetch/geonames/postal.ts +27 -62
- package/lib/tools/fetch/gleif.ts +360 -0
- package/lib/tools/fetch/header.ts +69 -0
- package/lib/tools/fetch/inspire-addresses.ts +495 -0
- package/lib/tools/fetch/openaddresses.ts +22 -111
- package/lib/tools/fetch/ourairports.ts +18 -51
- package/lib/tools/fetch/ppd.ts +10 -8
- package/lib/tools/fetch/vlaanderen-ad.ts +435 -0
- package/lib/tools/fetch/wfs-harvest.ts +943 -0
- package/lib/tools/fetch/wikidata-subvenue.ts +45 -145
- package/lib/tools/fetch/zip-archive.ts +100 -0
- package/lib/tools/fetch.ts +143 -0
- package/lib/tools/golden/expand.ts +74 -43
- package/lib/tools/golden/promote.ts +41 -32
- package/lib/tools/golden/relabel-street/directory.ts +63 -36
- package/lib/tools/golden/relabel-street/row.ts +28 -106
- package/lib/tools/ingest-csv.ts +45 -48
- package/lib/tools/jsonl-to-parquet.ts +59 -98
- package/lib/tools/lint/recipe-output/vocab.ts +366 -0
- package/lib/tools/lint/{slice/index.ts → recipe-output.ts} +107 -121
- package/lib/tools/migrate/overlay-parquet.ts +173 -0
- package/lib/tools/migrate/recipe-output.ts +153 -0
- package/lib/tools/migrate/source-names.ts +161 -0
- package/lib/tools/{slice → overlay}/kryptonite.ts +43 -36
- package/lib/tools/overlay/manifest.ts +407 -0
- package/lib/tools/overlay/merge-source.ts +138 -0
- package/lib/tools/overlay/split-slice.ts +144 -0
- package/lib/tools/{slice → overlay}/translit.ts +74 -58
- package/lib/tools/overture-subvenue.ts +17 -90
- package/lib/tools/postcode-triples.ts +281 -210
- package/lib/tools/source-register/build.ts +819 -0
- package/lib/tools/sub/venue/head-nouns.ts +38 -75
- package/lib/tools/sub/venue/lexicon.ts +71 -106
- package/lib/tools/sub/venue/wikidata.ts +13 -10
- package/lib/tools.ts +31 -0
- package/lib/tw/tools/fetch/gcis.ts +17 -16
- package/lib/types.ts +304 -101
- package/lib/us/adapters/fcc-bdc/adapter.ts +26 -41
- package/lib/us/adapters/state/hi-schools/adapter.ts +28 -17
- package/lib/us/adapters/state/hi-schools/workbook.ts +7 -2
- package/lib/us/adapters/state/ia-contractors/adapter.ts +27 -15
- package/lib/us/adapters/state/ny-notaries/adapter.ts +24 -25
- package/lib/us/adapters/state/tx-notaries/adapter.ts +21 -15
- package/lib/us/adapters/tiger/adapter.ts +19 -44
- package/lib/us/adapters/tiger/street-decompose.ts +7 -17
- package/lib/us/adapters/usgov/hrsa-fqhc/adapter.ts +49 -34
- package/lib/us/adapters/usgov/imls-pls/adapter.ts +25 -19
- package/lib/us/adapters/usgov/irs-bmf/adapter.ts +32 -23
- package/lib/us/adapters/usgov/nad/adapter.ts +51 -112
- package/lib/us/adapters/usgov/nppes/adapter.ts +72 -35
- package/lib/us/adapters/usgov/samhsa-treatment-locator/adapter.ts +43 -30
- package/lib/us/fips-state.ts +17 -8
- package/lib/us/tools/fetch/hrsa.ts +7 -8
- package/lib/us/tools/fetch/imls-pls.ts +17 -35
- package/lib/us/tools/fetch/nad.ts +50 -32
- package/lib/us/tools/fetch/nppes.ts +23 -35
- package/lib/us/tools/fetch/state/hi-schools.ts +22 -16
- package/lib/us/tools/fetch/state/sources.ts +12 -12
- package/lib/us/tools/fetch/tiger-full.ts +21 -73
- package/lib/utils/align.ts +42 -52
- package/lib/utils/{slice-stats.ts → cooccurrence-stats.ts} +22 -16
- package/lib/utils/golden.ts +34 -49
- package/lib/utils/license.ts +238 -26
- package/lib/utils/split.ts +205 -88
- package/lib/utils/tokenize.ts +22 -34
- package/lib/utils/wof-json.ts +129 -76
- package/lib/{utils/index.ts → utils.ts} +0 -1
- package/lib/ve/recipes/reviewed-postcode-tail.ts +40 -13
- package/out/adapters/cordis/adapter.d.ts +324 -0
- package/out/adapters/cordis/adapter.d.ts.map +1 -0
- package/out/adapters/cordis/adapter.js +616 -0
- package/out/adapters/cordis/adapter.js.map +1 -0
- package/out/adapters/dedup-key.d.ts +30 -0
- package/out/adapters/dedup-key.d.ts.map +1 -0
- package/out/adapters/dedup-key.js +35 -0
- package/out/adapters/dedup-key.js.map +1 -0
- package/out/adapters/errors.d.ts +17 -0
- package/out/adapters/errors.d.ts.map +1 -0
- package/out/adapters/errors.js +20 -0
- package/out/adapters/errors.js.map +1 -0
- package/out/adapters/geonames/adapter.d.ts +26 -28
- package/out/adapters/geonames/adapter.d.ts.map +1 -1
- package/out/adapters/geonames/adapter.js +39 -49
- package/out/adapters/geonames/adapter.js.map +1 -1
- package/out/adapters/geonames/postal/adapter.d.ts +14 -27
- package/out/adapters/geonames/postal/adapter.d.ts.map +1 -1
- package/out/adapters/geonames/postal/adapter.js +30 -35
- package/out/adapters/geonames/postal/adapter.js.map +1 -1
- package/out/adapters/gleif/adapter.d.ts +293 -0
- package/out/adapters/gleif/adapter.d.ts.map +1 -0
- package/out/adapters/gleif/adapter.js +684 -0
- package/out/adapters/gleif/adapter.js.map +1 -0
- package/out/adapters/libpostal-dictionary.d.ts +22 -0
- package/out/adapters/libpostal-dictionary.d.ts.map +1 -0
- package/out/adapters/libpostal-dictionary.js +36 -0
- package/out/adapters/libpostal-dictionary.js.map +1 -0
- package/out/adapters/openaddresses/adapter.d.ts +28 -43
- package/out/adapters/openaddresses/adapter.d.ts.map +1 -1
- package/out/adapters/openaddresses/adapter.js +34 -46
- package/out/adapters/openaddresses/adapter.js.map +1 -1
- package/out/adapters/osm/adapter.d.ts +48 -42
- package/out/adapters/osm/adapter.d.ts.map +1 -1
- package/out/adapters/osm/adapter.js +116 -67
- package/out/adapters/osm/adapter.js.map +1 -1
- package/out/adapters/overture/adapter.d.ts +11 -37
- package/out/adapters/overture/adapter.d.ts.map +1 -1
- package/out/adapters/overture/adapter.js +45 -42
- package/out/adapters/overture/adapter.js.map +1 -1
- package/out/adapters/po-box/adapter.d.ts +63 -0
- package/out/adapters/po-box/adapter.d.ts.map +1 -0
- package/out/adapters/{synth-po-box → po-box}/adapter.js +45 -46
- package/out/adapters/po-box/adapter.js.map +1 -0
- package/out/adapters/registry.d.ts +55 -0
- package/out/adapters/registry.d.ts.map +1 -0
- package/out/adapters/registry.js +43 -0
- package/out/adapters/registry.js.map +1 -0
- package/out/adapters/sha256-stream.d.ts +26 -0
- package/out/adapters/sha256-stream.d.ts.map +1 -0
- package/out/adapters/sha256-stream.js +34 -0
- package/out/adapters/sha256-stream.js.map +1 -0
- package/out/adapters/source-id.d.ts +33 -0
- package/out/adapters/source-id.d.ts.map +1 -0
- package/out/adapters/source-id.js +42 -0
- package/out/adapters/source-id.js.map +1 -0
- package/out/adapters/street-line.d.ts +102 -0
- package/out/adapters/street-line.d.ts.map +1 -0
- package/out/adapters/street-line.js +117 -0
- package/out/adapters/street-line.js.map +1 -0
- package/out/adapters/wof/admin/json/adapter.d.ts +27 -18
- package/out/adapters/wof/admin/json/adapter.d.ts.map +1 -1
- package/out/adapters/wof/admin/json/adapter.js +47 -31
- package/out/adapters/wof/admin/json/adapter.js.map +1 -1
- package/out/adapters/wof/json-rows.d.ts +35 -19
- package/out/adapters/wof/json-rows.d.ts.map +1 -1
- package/out/adapters/wof/json-rows.js +35 -15
- package/out/adapters/wof/json-rows.js.map +1 -1
- package/out/adapters/wof/postalcode-json/adapter.d.ts +22 -38
- package/out/adapters/wof/postalcode-json/adapter.d.ts.map +1 -1
- package/out/adapters/wof/postalcode-json/adapter.js +55 -57
- package/out/adapters/wof/postalcode-json/adapter.js.map +1 -1
- package/out/adapters.d.ts +75 -0
- package/out/adapters.d.ts.map +1 -0
- package/out/adapters.js +167 -0
- package/out/adapters.js.map +1 -0
- package/out/au/adapters/gnaf/adapter.d.ts +15 -27
- package/out/au/adapters/gnaf/adapter.d.ts.map +1 -1
- package/out/au/adapters/gnaf/adapter.js +34 -42
- package/out/au/adapters/gnaf/adapter.js.map +1 -1
- package/out/au/adapters/gnaf/assemble.d.ts +15 -26
- package/out/au/adapters/gnaf/assemble.d.ts.map +1 -1
- package/out/au/adapters/gnaf/assemble.js +26 -46
- package/out/au/adapters/gnaf/assemble.js.map +1 -1
- package/out/be/adapters/brussels/adapter.d.ts +212 -0
- package/out/be/adapters/brussels/adapter.d.ts.map +1 -0
- package/out/be/adapters/brussels/adapter.js +435 -0
- package/out/be/adapters/brussels/adapter.js.map +1 -0
- package/out/be/adapters/vlaanderen/adapter.d.ts +233 -0
- package/out/be/adapters/vlaanderen/adapter.d.ts.map +1 -0
- package/out/be/adapters/vlaanderen/adapter.js +416 -0
- package/out/be/adapters/vlaanderen/adapter.js.map +1 -0
- package/out/be/adapters/wallonie/adapter.d.ts +196 -0
- package/out/be/adapters/wallonie/adapter.d.ts.map +1 -0
- package/out/be/adapters/wallonie/adapter.js +437 -0
- package/out/be/adapters/wallonie/adapter.js.map +1 -0
- package/out/be/tools/fetch/brussels.d.ts +119 -0
- package/out/be/tools/fetch/brussels.d.ts.map +1 -0
- package/out/be/tools/fetch/brussels.js +146 -0
- package/out/be/tools/fetch/brussels.js.map +1 -0
- package/out/be/tools/fetch/wallonie.d.ts +119 -0
- package/out/be/tools/fetch/wallonie.d.ts.map +1 -0
- package/out/be/tools/fetch/wallonie.js +167 -0
- package/out/be/tools/fetch/wallonie.js.map +1 -0
- package/out/build/adapters.d.ts +33 -0
- package/out/build/adapters.d.ts.map +1 -0
- package/out/build/adapters.js +68 -0
- package/out/build/adapters.js.map +1 -0
- package/out/build/align.d.ts +73 -0
- package/out/build/align.d.ts.map +1 -0
- package/out/build/align.js +226 -0
- package/out/build/align.js.map +1 -0
- package/out/build/checkpoint.d.ts +94 -0
- package/out/build/checkpoint.d.ts.map +1 -0
- package/out/build/checkpoint.js +59 -0
- package/out/build/checkpoint.js.map +1 -0
- package/out/build/eligibility.d.ts +47 -0
- package/out/build/eligibility.d.ts.map +1 -0
- package/out/build/eligibility.js +80 -0
- package/out/build/eligibility.js.map +1 -0
- package/out/build/heap.d.ts +28 -0
- package/out/build/heap.d.ts.map +1 -0
- package/out/build/heap.js +47 -0
- package/out/build/heap.js.map +1 -0
- package/out/build/inputs.d.ts +52 -0
- package/out/build/inputs.d.ts.map +1 -0
- package/out/build/inputs.js +49 -0
- package/out/build/inputs.js.map +1 -0
- package/out/build/rows.d.ts +16 -0
- package/out/build/rows.d.ts.map +1 -0
- package/out/build/rows.js +19 -0
- package/out/build/rows.js.map +1 -0
- package/out/build/types.d.ts +220 -0
- package/out/build/types.d.ts.map +1 -0
- package/out/build/types.js +34 -0
- package/out/build/types.js.map +1 -0
- package/out/build.d.ts +6 -121
- package/out/build.d.ts.map +1 -1
- package/out/build.js +112 -207
- package/out/build.js.map +1 -1
- package/out/cn/recipes/organizational-units.d.ts +5 -22
- package/out/cn/recipes/organizational-units.d.ts.map +1 -1
- package/out/cn/recipes/organizational-units.js +20 -41
- package/out/cn/recipes/organizational-units.js.map +1 -1
- package/out/cz/adapters/cuzk/adapter.d.ts +52 -0
- package/out/cz/adapters/cuzk/adapter.d.ts.map +1 -0
- package/out/cz/adapters/cuzk/adapter.js +266 -0
- package/out/cz/adapters/cuzk/adapter.js.map +1 -0
- package/out/cz/recipes/pcfirst-preposition.d.ts +7 -11
- package/out/cz/recipes/pcfirst-preposition.d.ts.map +1 -1
- package/out/cz/recipes/pcfirst-preposition.js +36 -27
- package/out/cz/recipes/pcfirst-preposition.js.map +1 -1
- package/out/cz/tools/fetch/cuzk.d.ts +272 -0
- package/out/cz/tools/fetch/cuzk.d.ts.map +1 -0
- package/out/cz/tools/fetch/cuzk.js +446 -0
- package/out/cz/tools/fetch/cuzk.js.map +1 -0
- package/out/de/recipes/locale.d.ts +24 -26
- package/out/de/recipes/locale.d.ts.map +1 -1
- package/out/de/recipes/locale.js +66 -56
- package/out/de/recipes/locale.js.map +1 -1
- package/out/directory.d.ts +20 -0
- package/out/directory.d.ts.map +1 -0
- package/out/directory.js +27 -0
- package/out/directory.js.map +1 -0
- package/out/dk/adapters/inspire/adapter.d.ts +154 -0
- package/out/dk/adapters/inspire/adapter.d.ts.map +1 -0
- package/out/dk/adapters/inspire/adapter.js +258 -0
- package/out/dk/adapters/inspire/adapter.js.map +1 -0
- package/out/dk/tools/fetch/inspire.d.ts +100 -0
- package/out/dk/tools/fetch/inspire.d.ts.map +1 -0
- package/out/dk/tools/fetch/inspire.js +230 -0
- package/out/dk/tools/fetch/inspire.js.map +1 -0
- package/out/ee/adapters/ads/adapter.d.ts +109 -0
- package/out/ee/adapters/ads/adapter.d.ts.map +1 -0
- package/out/ee/adapters/ads/adapter.js +191 -0
- package/out/ee/adapters/ads/adapter.js.map +1 -0
- package/out/ee/tools/fetch/ads.d.ts +123 -0
- package/out/ee/tools/fetch/ads.d.ts.map +1 -0
- package/out/ee/tools/fetch/ads.js +195 -0
- package/out/ee/tools/fetch/ads.js.map +1 -0
- package/out/env.d.ts +6 -2
- package/out/env.d.ts.map +1 -1
- package/out/env.js +6 -2
- package/out/env.js.map +1 -1
- package/out/es/adapters/bizkaia/adapter.d.ts +143 -0
- package/out/es/adapters/bizkaia/adapter.d.ts.map +1 -0
- package/out/es/adapters/bizkaia/adapter.js +332 -0
- package/out/es/adapters/bizkaia/adapter.js.map +1 -0
- package/out/es/adapters/catastro/adapter.d.ts +104 -0
- package/out/es/adapters/catastro/adapter.d.ts.map +1 -0
- package/out/es/adapters/catastro/adapter.js +288 -0
- package/out/es/adapters/catastro/adapter.js.map +1 -0
- package/out/es/adapters/gipuzkoa/adapter.d.ts +91 -0
- package/out/es/adapters/gipuzkoa/adapter.d.ts.map +1 -0
- package/out/es/adapters/gipuzkoa/adapter.js +225 -0
- package/out/es/adapters/gipuzkoa/adapter.js.map +1 -0
- package/out/es/adapters/navarra/adapter.d.ts +105 -0
- package/out/es/adapters/navarra/adapter.d.ts.map +1 -0
- package/out/es/adapters/navarra/adapter.js +241 -0
- package/out/es/adapters/navarra/adapter.js.map +1 -0
- package/out/es/cadastre.d.ts +109 -0
- package/out/es/cadastre.d.ts.map +1 -0
- package/out/es/cadastre.js +130 -0
- package/out/es/cadastre.js.map +1 -0
- package/out/es/tools/fetch/bizkaia.d.ts +278 -0
- package/out/es/tools/fetch/bizkaia.d.ts.map +1 -0
- package/out/es/tools/fetch/bizkaia.js +477 -0
- package/out/es/tools/fetch/bizkaia.js.map +1 -0
- package/out/es/tools/fetch/catastro.d.ts +272 -0
- package/out/es/tools/fetch/catastro.d.ts.map +1 -0
- package/out/es/tools/fetch/catastro.js +486 -0
- package/out/es/tools/fetch/catastro.js.map +1 -0
- package/out/es/tools/fetch/gipuzkoa.d.ts +162 -0
- package/out/es/tools/fetch/gipuzkoa.d.ts.map +1 -0
- package/out/es/tools/fetch/gipuzkoa.js +209 -0
- package/out/es/tools/fetch/gipuzkoa.js.map +1 -0
- package/out/es/tools/fetch/navarra.d.ts +189 -0
- package/out/es/tools/fetch/navarra.d.ts.map +1 -0
- package/out/es/tools/fetch/navarra.js +316 -0
- package/out/es/tools/fetch/navarra.js.map +1 -0
- package/out/fi/adapters/ryhti/adapter.d.ts +115 -0
- package/out/fi/adapters/ryhti/adapter.d.ts.map +1 -0
- package/out/fi/adapters/ryhti/adapter.js +244 -0
- package/out/fi/adapters/ryhti/adapter.js.map +1 -0
- package/out/fi/tools/fetch/ryhti.d.ts +206 -0
- package/out/fi/tools/fetch/ryhti.d.ts.map +1 -0
- package/out/fi/tools/fetch/ryhti.js +327 -0
- package/out/fi/tools/fetch/ryhti.js.map +1 -0
- package/out/fingerprints.d.ts +68 -0
- package/out/fingerprints.d.ts.map +1 -0
- package/out/fingerprints.js +130 -0
- package/out/fingerprints.js.map +1 -0
- package/out/fr/adapters/annuaire-education/adapter.d.ts +236 -0
- package/out/fr/adapters/annuaire-education/adapter.d.ts.map +1 -0
- package/out/fr/adapters/annuaire-education/adapter.js +475 -0
- package/out/fr/adapters/annuaire-education/adapter.js.map +1 -0
- package/out/fr/adapters/ban/adapter.d.ts +19 -25
- package/out/fr/adapters/ban/adapter.d.ts.map +1 -1
- package/out/fr/adapters/ban/adapter.js +65 -54
- package/out/fr/adapters/ban/adapter.js.map +1 -1
- package/out/fr/adapters/finess/adapter.d.ts +276 -0
- package/out/fr/adapters/finess/adapter.d.ts.map +1 -0
- package/out/fr/adapters/finess/adapter.js +519 -0
- package/out/fr/adapters/finess/adapter.js.map +1 -0
- package/out/fr/adapters/finess/postal-lines.d.ts +61 -0
- package/out/fr/adapters/finess/postal-lines.d.ts.map +1 -0
- package/out/fr/adapters/finess/postal-lines.js +114 -0
- package/out/fr/adapters/finess/postal-lines.js.map +1 -0
- package/out/fr/adapters/finess/voie-type.d.ts +77 -0
- package/out/fr/adapters/finess/voie-type.d.ts.map +1 -0
- package/out/fr/adapters/finess/voie-type.js +172 -0
- package/out/fr/adapters/finess/voie-type.js.map +1 -0
- package/out/fr/insee-country.d.ts +45 -0
- package/out/fr/insee-country.d.ts.map +1 -0
- package/out/fr/insee-country.js +60 -0
- package/out/fr/insee-country.js.map +1 -0
- package/out/fr/recipes/admin-split.d.ts +4 -27
- package/out/fr/recipes/admin-split.d.ts.map +1 -1
- package/out/fr/recipes/admin-split.js +36 -58
- package/out/fr/recipes/admin-split.js.map +1 -1
- package/out/fr/recipes/bare-street.d.ts +2 -17
- package/out/fr/recipes/bare-street.d.ts.map +1 -1
- package/out/fr/recipes/bare-street.js +35 -50
- package/out/fr/recipes/bare-street.js.map +1 -1
- package/out/fr/recipes/fragment.d.ts +6 -65
- package/out/fr/recipes/fragment.d.ts.map +1 -1
- package/out/fr/recipes/fragment.js +55 -135
- package/out/fr/recipes/fragment.js.map +1 -1
- package/out/fr/recipes/lieudit.d.ts +17 -19
- package/out/fr/recipes/lieudit.d.ts.map +1 -1
- package/out/fr/recipes/lieudit.js +88 -68
- package/out/fr/recipes/lieudit.js.map +1 -1
- package/out/fr/recipes/order.d.ts +4 -27
- package/out/fr/recipes/order.d.ts.map +1 -1
- package/out/fr/recipes/order.js +31 -58
- package/out/fr/recipes/order.js.map +1 -1
- package/out/fr/{adapters/ban/street-decompose.d.ts → street-decompose.d.ts} +3 -2
- package/out/fr/street-decompose.d.ts.map +1 -0
- package/out/fr/{adapters/ban/street-decompose.js → street-decompose.js} +4 -3
- package/out/fr/street-decompose.js.map +1 -0
- package/out/fr/tools/fetch/annuaire-education.d.ts +130 -0
- package/out/fr/tools/fetch/annuaire-education.d.ts.map +1 -0
- package/out/fr/tools/fetch/annuaire-education.js +196 -0
- package/out/fr/tools/fetch/annuaire-education.js.map +1 -0
- package/out/fr/tools/fetch/ban.d.ts +9 -7
- package/out/fr/tools/fetch/ban.d.ts.map +1 -1
- package/out/fr/tools/fetch/ban.js +27 -18
- package/out/fr/tools/fetch/ban.js.map +1 -1
- package/out/fr/tools/fetch/finess.d.ts +145 -0
- package/out/fr/tools/fetch/finess.d.ts.map +1 -0
- package/out/fr/tools/fetch/finess.js +228 -0
- package/out/fr/tools/fetch/finess.js.map +1 -0
- package/out/gauntlet-inputs.d.ts +42 -0
- package/out/gauntlet-inputs.d.ts.map +1 -0
- package/out/gauntlet-inputs.js +78 -0
- package/out/gauntlet-inputs.js.map +1 -0
- package/out/index.d.ts +9 -3
- package/out/index.d.ts.map +1 -1
- package/out/index.js +9 -3
- package/out/index.js.map +1 -1
- package/out/inspire/address.d.ts +251 -0
- package/out/inspire/address.d.ts.map +1 -0
- package/out/inspire/address.js +384 -0
- package/out/inspire/address.js.map +1 -0
- package/out/inspire/archive.d.ts +36 -0
- package/out/inspire/archive.d.ts.map +1 -0
- package/out/inspire/archive.js +42 -0
- package/out/inspire/archive.js.map +1 -0
- package/out/inspire/errors.d.ts +55 -0
- package/out/inspire/errors.d.ts.map +1 -0
- package/out/inspire/errors.js +64 -0
- package/out/inspire/errors.js.map +1 -0
- package/out/inspire/stream.d.ts +137 -0
- package/out/inspire/stream.d.ts.map +1 -0
- package/out/inspire/stream.js +125 -0
- package/out/inspire/stream.js.map +1 -0
- package/out/international/recipes/locale.d.ts +38 -84
- package/out/international/recipes/locale.d.ts.map +1 -1
- package/out/international/recipes/locale.js +112 -151
- package/out/international/recipes/locale.js.map +1 -1
- package/out/it/adapters/anac/adapter.d.ts +267 -0
- package/out/it/adapters/anac/adapter.d.ts.map +1 -0
- package/out/it/adapters/anac/adapter.js +429 -0
- package/out/it/adapters/anac/adapter.js.map +1 -0
- package/out/it/tools/fetch/anac.d.ts +174 -0
- package/out/it/tools/fetch/anac.d.ts.map +1 -0
- package/out/it/tools/fetch/anac.js +272 -0
- package/out/it/tools/fetch/anac.js.map +1 -0
- package/out/jp/adapters/wof-admin/adapter.d.ts +14 -11
- package/out/jp/adapters/wof-admin/adapter.d.ts.map +1 -1
- package/out/jp/adapters/wof-admin/adapter.js +27 -16
- package/out/jp/adapters/wof-admin/adapter.js.map +1 -1
- package/out/jp/tools/fetch/houjin.d.ts +7 -4
- package/out/jp/tools/fetch/houjin.d.ts.map +1 -1
- package/out/jp/tools/fetch/houjin.js +15 -11
- package/out/jp/tools/fetch/houjin.js.map +1 -1
- package/out/kr/adapters/juso/label-rows.d.ts +17 -31
- package/out/kr/adapters/juso/label-rows.d.ts.map +1 -1
- package/out/kr/adapters/juso/label-rows.js +19 -41
- package/out/kr/adapters/juso/label-rows.js.map +1 -1
- package/out/kr/adapters/localdata/align.d.ts +4 -16
- package/out/kr/adapters/localdata/align.d.ts.map +1 -1
- package/out/kr/adapters/localdata/align.js +19 -30
- package/out/kr/adapters/localdata/align.js.map +1 -1
- package/out/kr/adapters/localdata/key-index.d.ts +13 -22
- package/out/kr/adapters/localdata/key-index.d.ts.map +1 -1
- package/out/kr/adapters/localdata/key-index.js +15 -21
- package/out/kr/adapters/localdata/key-index.js.map +1 -1
- package/out/kr/adapters/localdata/permit-rows.d.ts +21 -14
- package/out/kr/adapters/localdata/permit-rows.d.ts.map +1 -1
- package/out/kr/adapters/localdata/permit-rows.js +30 -25
- package/out/kr/adapters/localdata/permit-rows.js.map +1 -1
- package/out/kr/tools/fetch/juso.d.ts +11 -8
- package/out/kr/tools/fetch/juso.d.ts.map +1 -1
- package/out/kr/tools/fetch/juso.js +15 -14
- package/out/kr/tools/fetch/juso.js.map +1 -1
- package/out/kr/tools/fetch/localdata.d.ts +16 -9
- package/out/kr/tools/fetch/localdata.d.ts.map +1 -1
- package/out/kr/tools/fetch/localdata.js +23 -15
- package/out/kr/tools/fetch/localdata.js.map +1 -1
- package/out/lu/adapters/bd-adresses/adapter.d.ts +109 -0
- package/out/lu/adapters/bd-adresses/adapter.d.ts.map +1 -0
- package/out/lu/adapters/bd-adresses/adapter.js +196 -0
- package/out/lu/adapters/bd-adresses/adapter.js.map +1 -0
- package/out/lu/tools/fetch/bd-adresses.d.ts +163 -0
- package/out/lu/tools/fetch/bd-adresses.d.ts.map +1 -0
- package/out/lu/tools/fetch/bd-adresses.js +223 -0
- package/out/lu/tools/fetch/bd-adresses.js.map +1 -0
- package/out/lv/adapters/varis/adapter.d.ts +283 -0
- package/out/lv/adapters/varis/adapter.d.ts.map +1 -0
- package/out/lv/adapters/varis/adapter.js +404 -0
- package/out/lv/adapters/varis/adapter.js.map +1 -0
- package/out/lv/tools/fetch/varis.d.ts +80 -0
- package/out/lv/tools/fetch/varis.d.ts.map +1 -0
- package/out/lv/tools/fetch/varis.js +133 -0
- package/out/lv/tools/fetch/varis.js.map +1 -0
- package/out/nl/adapters/kadaster/adapter.d.ts +125 -0
- package/out/nl/adapters/kadaster/adapter.d.ts.map +1 -0
- package/out/nl/adapters/kadaster/adapter.js +310 -0
- package/out/nl/adapters/kadaster/adapter.js.map +1 -0
- package/out/nl/recipes/postcode.d.ts +12 -14
- package/out/nl/recipes/postcode.d.ts.map +1 -1
- package/out/nl/recipes/postcode.js +42 -24
- package/out/nl/recipes/postcode.js.map +1 -1
- package/out/nl/tools/fetch/kadaster.d.ts +155 -0
- package/out/nl/tools/fetch/kadaster.d.ts.map +1 -0
- package/out/nl/tools/fetch/kadaster.js +179 -0
- package/out/nl/tools/fetch/kadaster.js.map +1 -0
- package/out/no/adapters/matrikkelen/adapter.d.ts +44 -0
- package/out/no/adapters/matrikkelen/adapter.d.ts.map +1 -0
- package/out/no/adapters/matrikkelen/adapter.js +143 -0
- package/out/no/adapters/matrikkelen/adapter.js.map +1 -0
- package/out/no/recipes/fragment.d.ts +1 -33
- package/out/no/recipes/fragment.d.ts.map +1 -1
- package/out/no/recipes/fragment.js +23 -57
- package/out/no/recipes/fragment.js.map +1 -1
- package/out/no/recipes/street/led.d.ts +9 -12
- package/out/no/recipes/street/led.d.ts.map +1 -1
- package/out/no/recipes/street/led.js +34 -24
- package/out/no/recipes/street/led.js.map +1 -1
- package/out/no/recipes/street.d.ts +19 -0
- package/out/no/recipes/street.d.ts.map +1 -0
- package/out/no/recipes/{street/index.js → street.js} +28 -12
- package/out/no/recipes/street.js.map +1 -0
- package/out/no/tools/fetch/matrikkelen.d.ts +251 -0
- package/out/no/tools/fetch/matrikkelen.d.ts.map +1 -0
- package/out/no/tools/fetch/matrikkelen.js +345 -0
- package/out/no/tools/fetch/matrikkelen.js.map +1 -0
- package/out/parquet/duckdb.d.ts +100 -0
- package/out/parquet/duckdb.d.ts.map +1 -0
- package/out/parquet/duckdb.js +92 -0
- package/out/parquet/duckdb.js.map +1 -0
- package/out/parquet/readers.d.ts +44 -0
- package/out/parquet/readers.d.ts.map +1 -0
- package/out/parquet/readers.js +69 -0
- package/out/parquet/readers.js.map +1 -0
- package/out/parquet/schema.d.ts +95 -0
- package/out/parquet/schema.d.ts.map +1 -0
- package/out/parquet/schema.js +157 -0
- package/out/parquet/schema.js.map +1 -0
- package/out/parquet/shuffle.d.ts +25 -0
- package/out/parquet/shuffle.d.ts.map +1 -0
- package/out/parquet/shuffle.js +44 -0
- package/out/parquet/shuffle.js.map +1 -0
- package/out/parquet/span-sql.d.ts +49 -0
- package/out/parquet/span-sql.d.ts.map +1 -0
- package/out/parquet/span-sql.js +53 -0
- package/out/parquet/span-sql.js.map +1 -0
- package/out/parquet/streams.d.ts +47 -0
- package/out/parquet/streams.d.ts.map +1 -0
- package/out/parquet/streams.js +78 -0
- package/out/parquet/streams.js.map +1 -0
- package/out/parquet/writers.d.ts +124 -0
- package/out/parquet/writers.d.ts.map +1 -0
- package/out/parquet/writers.js +251 -0
- package/out/parquet/writers.js.map +1 -0
- package/out/pl/adapters/emuia/adapter.d.ts +81 -0
- package/out/pl/adapters/emuia/adapter.d.ts.map +1 -0
- package/out/pl/adapters/emuia/adapter.js +178 -0
- package/out/pl/adapters/emuia/adapter.js.map +1 -0
- package/out/pl/tools/fetch/emuia.d.ts +165 -0
- package/out/pl/tools/fetch/emuia.d.ts.map +1 -0
- package/out/pl/tools/fetch/emuia.js +260 -0
- package/out/pl/tools/fetch/emuia.js.map +1 -0
- package/out/recipes/anchor-absorption.d.ts +9 -9
- package/out/recipes/anchor-absorption.d.ts.map +1 -1
- package/out/recipes/anchor-absorption.js +29 -19
- package/out/recipes/anchor-absorption.js.map +1 -1
- package/out/recipes/bare/country.d.ts +2 -20
- package/out/recipes/bare/country.d.ts.map +1 -1
- package/out/recipes/bare/country.js +20 -31
- package/out/recipes/bare/country.js.map +1 -1
- package/out/recipes/bare/postcode/eval.d.ts +1 -1
- package/out/recipes/bare/postcode/eval.js +1 -1
- package/out/recipes/bare/postcode.d.ts +41 -0
- package/out/recipes/bare/postcode.d.ts.map +1 -0
- package/out/recipes/bare/{postcode/index.js → postcode.js} +91 -79
- package/out/recipes/bare/postcode.js.map +1 -0
- package/out/recipes/boundary-stress.d.ts +8 -8
- package/out/recipes/boundary-stress.d.ts.map +1 -1
- package/out/recipes/boundary-stress.js +36 -19
- package/out/recipes/boundary-stress.js.map +1 -1
- package/out/recipes/country-balanced.d.ts +3 -21
- package/out/recipes/country-balanced.d.ts.map +1 -1
- package/out/recipes/country-balanced.js +58 -76
- package/out/recipes/country-balanced.js.map +1 -1
- package/out/recipes/house-venue.d.ts +8 -6
- package/out/recipes/house-venue.d.ts.map +1 -1
- package/out/recipes/house-venue.js +29 -13
- package/out/recipes/house-venue.js.map +1 -1
- package/out/recipes/intersection.d.ts +20 -20
- package/out/recipes/intersection.d.ts.map +1 -1
- package/out/recipes/intersection.js +65 -53
- package/out/recipes/intersection.js.map +1 -1
- package/out/recipes/po/box/cedex/au-nz.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/au-nz.js +3 -3
- package/out/recipes/po/box/cedex/au-nz.js.map +1 -1
- package/out/recipes/po/box/cedex/ca.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/ca.js +2 -2
- package/out/recipes/po/box/cedex/ca.js.map +1 -1
- package/out/recipes/po/box/cedex/fr.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/fr.js +3 -3
- package/out/recipes/po/box/cedex/fr.js.map +1 -1
- package/out/recipes/po/box/cedex/phrases.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/phrases.js +7 -6
- package/out/recipes/po/box/cedex/phrases.js.map +1 -1
- package/out/recipes/po/box/cedex/recipe.d.ts +1 -1
- package/out/recipes/po/box/cedex/recipe.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/recipe.js +25 -15
- package/out/recipes/po/box/cedex/recipe.js.map +1 -1
- package/out/recipes/po/box/cedex/sources.d.ts +12 -12
- package/out/recipes/po/box/cedex/sources.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/sources.js +1 -1
- package/out/recipes/po/box/cedex/sources.js.map +1 -1
- package/out/recipes/po/box/cedex/us.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/us.js +5 -2
- package/out/recipes/po/box/cedex/us.js.map +1 -1
- package/out/recipes/po/box.d.ts +18 -0
- package/out/recipes/po/box.d.ts.map +1 -0
- package/out/recipes/po/{box/index.js → box.js} +37 -19
- package/out/recipes/po/box.js.map +1 -0
- package/out/recipes/scaffold.d.ts +211 -138
- package/out/recipes/scaffold.d.ts.map +1 -1
- package/out/recipes/scaffold.js +72 -63
- package/out/recipes/scaffold.js.map +1 -1
- package/out/recipes/sources.d.ts +178 -0
- package/out/recipes/sources.d.ts.map +1 -0
- package/out/recipes/sources.js +348 -0
- package/out/recipes/sources.js.map +1 -0
- package/out/recipes/street/affix.d.ts +20 -50
- package/out/recipes/street/affix.d.ts.map +1 -1
- package/out/recipes/street/affix.js +45 -133
- package/out/recipes/street/affix.js.map +1 -1
- package/out/recipes/street/bare.d.ts +9 -7
- package/out/recipes/street/bare.d.ts.map +1 -1
- package/out/recipes/street/bare.js +25 -14
- package/out/recipes/street/bare.js.map +1 -1
- package/out/recipes/street.d.ts +6 -4
- package/out/recipes/street.d.ts.map +1 -1
- package/out/recipes/street.js +29 -8
- package/out/recipes/street.js.map +1 -1
- package/out/recipes/sub/venue/context.d.ts +12 -9
- package/out/recipes/sub/venue/context.d.ts.map +1 -1
- package/out/recipes/sub/venue/context.js +21 -17
- package/out/recipes/sub/venue/context.js.map +1 -1
- package/out/recipes/sub/venue/render.d.ts +58 -0
- package/out/recipes/sub/venue/render.d.ts.map +1 -0
- package/out/recipes/sub/venue/render.js +118 -0
- package/out/recipes/sub/venue/render.js.map +1 -0
- package/out/recipes/sub/venue/sources.d.ts +49 -92
- package/out/recipes/sub/venue/sources.d.ts.map +1 -1
- package/out/recipes/sub/venue/sources.js +43 -179
- package/out/recipes/sub/venue/sources.js.map +1 -1
- package/out/recipes/sub/venue.d.ts +176 -0
- package/out/recipes/sub/venue.d.ts.map +1 -0
- package/out/recipes/sub/venue.js +562 -0
- package/out/recipes/sub/venue.js.map +1 -0
- package/out/recipes/trailing-region.d.ts +9 -61
- package/out/recipes/trailing-region.d.ts.map +1 -1
- package/out/recipes/trailing-region.js +55 -85
- package/out/recipes/trailing-region.js.map +1 -1
- package/out/recipes/unit/sources.d.ts +28 -0
- package/out/recipes/unit/sources.d.ts.map +1 -0
- package/out/recipes/unit/sources.js +30 -0
- package/out/recipes/unit/sources.js.map +1 -0
- package/out/recipes/unit.d.ts +30 -17
- package/out/recipes/unit.d.ts.map +1 -1
- package/out/recipes/unit.js +90 -79
- package/out/recipes/unit.js.map +1 -1
- package/out/recipes.d.ts +26 -0
- package/out/recipes.d.ts.map +1 -0
- package/out/{recipes/index.js → recipes.js} +14 -12
- package/out/recipes.js.map +1 -0
- package/out/registers.d.ts +277 -0
- package/out/registers.d.ts.map +1 -0
- package/out/registers.js +273 -0
- package/out/registers.js.map +1 -0
- package/out/ro/adapters/retea-scolara/adapter.d.ts +114 -0
- package/out/ro/adapters/retea-scolara/adapter.d.ts.map +1 -0
- package/out/ro/adapters/retea-scolara/adapter.js +209 -0
- package/out/ro/adapters/retea-scolara/adapter.js.map +1 -0
- package/out/ro/tools/fetch/retea-scolara.d.ts +69 -0
- package/out/ro/tools/fetch/retea-scolara.d.ts.map +1 -0
- package/out/ro/tools/fetch/retea-scolara.js +117 -0
- package/out/ro/tools/fetch/retea-scolara.js.map +1 -0
- package/out/runner.d.ts +120 -60
- package/out/runner.d.ts.map +1 -1
- package/out/runner.js +130 -56
- package/out/runner.js.map +1 -1
- package/out/sg/recipes/register.d.ts +18 -32
- package/out/sg/recipes/register.d.ts.map +1 -1
- package/out/sg/recipes/register.js +44 -49
- package/out/sg/recipes/register.js.map +1 -1
- package/out/sg/tools/fetch/acra.d.ts +11 -14
- package/out/sg/tools/fetch/acra.d.ts.map +1 -1
- package/out/sg/tools/fetch/acra.js +16 -19
- package/out/sg/tools/fetch/acra.js.map +1 -1
- package/out/si/recipes/bare-village.d.ts +12 -13
- package/out/si/recipes/bare-village.d.ts.map +1 -1
- package/out/si/recipes/bare-village.js +31 -17
- package/out/si/recipes/bare-village.js.map +1 -1
- package/out/sk/adapters/inspire/adapter.d.ts +119 -0
- package/out/sk/adapters/inspire/adapter.d.ts.map +1 -0
- package/out/sk/adapters/inspire/adapter.js +318 -0
- package/out/sk/adapters/inspire/adapter.js.map +1 -0
- package/out/sk/tools/fetch/inspire.d.ts +195 -0
- package/out/sk/tools/fetch/inspire.d.ts.map +1 -0
- package/out/sk/tools/fetch/inspire.js +280 -0
- package/out/sk/tools/fetch/inspire.js.map +1 -0
- package/out/source-register/effective-manifest.d.ts +355 -0
- package/out/source-register/effective-manifest.d.ts.map +1 -0
- package/out/source-register/effective-manifest.js +355 -0
- package/out/source-register/effective-manifest.js.map +1 -0
- package/out/source-register/register.d.ts +79 -0
- package/out/source-register/register.d.ts.map +1 -0
- package/out/source-register/register.js +400 -0
- package/out/source-register/register.js.map +1 -0
- package/out/source-register/training-manifest.d.ts +111 -0
- package/out/source-register/training-manifest.d.ts.map +1 -0
- package/out/source-register/training-manifest.js +120 -0
- package/out/source-register/training-manifest.js.map +1 -0
- package/out/source-register/types.d.ts +539 -0
- package/out/source-register/types.d.ts.map +1 -0
- package/out/source-register/types.js +263 -0
- package/out/source-register/types.js.map +1 -0
- package/out/source-register.d.ts +19 -0
- package/out/source-register.d.ts.map +1 -0
- package/out/source-register.js +16 -0
- package/out/source-register.js.map +1 -0
- package/out/south-asia/recipes/register.d.ts +20 -17
- package/out/south-asia/recipes/register.d.ts.map +1 -1
- package/out/south-asia/recipes/register.js +44 -24
- package/out/south-asia/recipes/register.js.map +1 -1
- package/out/subvenue/harvest.d.ts +117 -0
- package/out/subvenue/harvest.d.ts.map +1 -0
- package/out/subvenue/harvest.js +172 -0
- package/out/subvenue/harvest.js.map +1 -0
- package/out/subvenue/promotions.d.ts +65 -0
- package/out/subvenue/promotions.d.ts.map +1 -0
- package/out/{tools/sub/venue → subvenue}/promotions.js +15 -55
- package/out/subvenue/promotions.js.map +1 -0
- package/out/subvenue/surfaces.d.ts +39 -0
- package/out/subvenue/surfaces.d.ts.map +1 -0
- package/out/subvenue/surfaces.js +75 -0
- package/out/subvenue/surfaces.js.map +1 -0
- package/out/subvenue/table.d.ts +212 -0
- package/out/subvenue/table.d.ts.map +1 -0
- package/out/subvenue/table.js +94 -0
- package/out/subvenue/table.js.map +1 -0
- package/out/surfaces/locale.d.ts +113 -0
- package/out/surfaces/locale.d.ts.map +1 -0
- package/out/surfaces/locale.js +136 -0
- package/out/surfaces/locale.js.map +1 -0
- package/out/synthesizers/anchor-absorption.d.ts +21 -30
- package/out/synthesizers/anchor-absorption.d.ts.map +1 -1
- package/out/synthesizers/anchor-absorption.js +30 -85
- package/out/synthesizers/anchor-absorption.js.map +1 -1
- package/out/synthesizers/boundary-stress.d.ts +17 -48
- package/out/synthesizers/boundary-stress.d.ts.map +1 -1
- package/out/synthesizers/boundary-stress.js +27 -121
- package/out/synthesizers/boundary-stress.js.map +1 -1
- package/out/synthesizers/house-venue.d.ts +22 -25
- package/out/synthesizers/house-venue.d.ts.map +1 -1
- package/out/synthesizers/house-venue.js +28 -97
- package/out/synthesizers/house-venue.js.map +1 -1
- package/out/synthesizers/intersection.d.ts +10 -8
- package/out/synthesizers/intersection.d.ts.map +1 -1
- package/out/synthesizers/intersection.js +33 -26
- package/out/synthesizers/intersection.js.map +1 -1
- package/out/synthesizers/no-street.d.ts +7 -37
- package/out/synthesizers/no-street.d.ts.map +1 -1
- package/out/synthesizers/no-street.js +55 -111
- package/out/synthesizers/no-street.js.map +1 -1
- package/out/synthesizers/po-box.d.ts +46 -45
- package/out/synthesizers/po-box.d.ts.map +1 -1
- package/out/synthesizers/po-box.js +57 -97
- package/out/synthesizers/po-box.js.map +1 -1
- package/out/synthesizers/street.d.ts +18 -12
- package/out/synthesizers/street.d.ts.map +1 -1
- package/out/synthesizers/street.js +36 -29
- package/out/synthesizers/street.js.map +1 -1
- package/out/synthesizers/utils.d.ts +32 -129
- package/out/synthesizers/utils.d.ts.map +1 -1
- package/out/synthesizers/utils.js +54 -166
- package/out/synthesizers/utils.js.map +1 -1
- package/out/test-kit/corpus-recipe.d.ts +29 -23
- package/out/test-kit/corpus-recipe.d.ts.map +1 -1
- package/out/test-kit/corpus-recipe.js +28 -13
- package/out/test-kit/corpus-recipe.js.map +1 -1
- package/out/test-kit.d.ts +63 -0
- package/out/test-kit.d.ts.map +1 -0
- package/out/test-kit.js +88 -0
- package/out/test-kit.js.map +1 -0
- package/out/tools/align-canonical.d.ts +7 -0
- package/out/tools/align-canonical.d.ts.map +1 -0
- package/out/tools/align-canonical.js +52 -0
- package/out/tools/align-canonical.js.map +1 -0
- package/out/tools/audit.d.ts +18 -11
- package/out/tools/audit.d.ts.map +1 -1
- package/out/tools/audit.js +86 -95
- package/out/tools/audit.js.map +1 -1
- package/out/tools/corpus-stats.d.ts +24 -15
- package/out/tools/corpus-stats.d.ts.map +1 -1
- package/out/tools/corpus-stats.js +33 -29
- package/out/tools/corpus-stats.js.map +1 -1
- package/out/tools/fetch/atom.d.ts +115 -0
- package/out/tools/fetch/atom.d.ts.map +1 -0
- package/out/tools/fetch/atom.js +84 -0
- package/out/tools/fetch/atom.js.map +1 -0
- package/out/tools/fetch/cordis.d.ts +123 -0
- package/out/tools/fetch/cordis.d.ts.map +1 -0
- package/out/tools/fetch/cordis.js +208 -0
- package/out/tools/fetch/cordis.js.map +1 -0
- package/out/tools/fetch/download/manifest.d.ts +27 -18
- package/out/tools/fetch/download/manifest.d.ts.map +1 -1
- package/out/tools/fetch/download/manifest.js +20 -13
- package/out/tools/fetch/download/manifest.js.map +1 -1
- package/out/tools/fetch/download/network.d.ts +48 -27
- package/out/tools/fetch/download/network.d.ts.map +1 -1
- package/out/tools/fetch/download/network.js +26 -16
- package/out/tools/fetch/download/network.js.map +1 -1
- package/out/tools/fetch/download/retry.d.ts +16 -15
- package/out/tools/fetch/download/retry.d.ts.map +1 -1
- package/out/tools/fetch/download/retry.js +24 -24
- package/out/tools/fetch/download/retry.js.map +1 -1
- package/out/tools/fetch/{download/index.d.ts → download.d.ts} +1 -1
- package/out/tools/fetch/download.d.ts.map +1 -0
- package/out/tools/fetch/{download/index.js → download.js} +1 -1
- package/out/tools/fetch/download.js.map +1 -0
- package/out/tools/fetch/geonames/dump.d.ts +50 -32
- package/out/tools/fetch/geonames/dump.d.ts.map +1 -1
- package/out/tools/fetch/geonames/dump.js +52 -42
- package/out/tools/fetch/geonames/dump.js.map +1 -1
- package/out/tools/fetch/geonames/postal.d.ts +14 -49
- package/out/tools/fetch/geonames/postal.d.ts.map +1 -1
- package/out/tools/fetch/geonames/postal.js +17 -56
- package/out/tools/fetch/geonames/postal.js.map +1 -1
- package/out/tools/fetch/gleif.d.ts +137 -0
- package/out/tools/fetch/gleif.d.ts.map +1 -0
- package/out/tools/fetch/gleif.js +220 -0
- package/out/tools/fetch/gleif.js.map +1 -0
- package/out/tools/fetch/header.d.ts +41 -0
- package/out/tools/fetch/header.d.ts.map +1 -0
- package/out/tools/fetch/header.js +59 -0
- package/out/tools/fetch/header.js.map +1 -0
- package/out/tools/fetch/inspire-addresses.d.ts +249 -0
- package/out/tools/fetch/inspire-addresses.d.ts.map +1 -0
- package/out/tools/fetch/inspire-addresses.js +276 -0
- package/out/tools/fetch/inspire-addresses.js.map +1 -0
- package/out/tools/fetch/openaddresses.d.ts +1 -4
- package/out/tools/fetch/openaddresses.d.ts.map +1 -1
- package/out/tools/fetch/openaddresses.js +19 -98
- package/out/tools/fetch/openaddresses.js.map +1 -1
- package/out/tools/fetch/ourairports.d.ts +6 -33
- package/out/tools/fetch/ourairports.d.ts.map +1 -1
- package/out/tools/fetch/ourairports.js +14 -47
- package/out/tools/fetch/ourairports.js.map +1 -1
- package/out/tools/fetch/ppd.d.ts +4 -3
- package/out/tools/fetch/ppd.d.ts.map +1 -1
- package/out/tools/fetch/ppd.js +10 -7
- package/out/tools/fetch/ppd.js.map +1 -1
- package/out/tools/fetch/vlaanderen-ad.d.ts +131 -0
- package/out/tools/fetch/vlaanderen-ad.d.ts.map +1 -0
- package/out/tools/fetch/vlaanderen-ad.js +293 -0
- package/out/tools/fetch/vlaanderen-ad.js.map +1 -0
- package/out/tools/fetch/wfs-harvest.d.ts +410 -0
- package/out/tools/fetch/wfs-harvest.d.ts.map +1 -0
- package/out/tools/fetch/wfs-harvest.js +522 -0
- package/out/tools/fetch/wfs-harvest.js.map +1 -0
- package/out/tools/fetch/wikidata-subvenue.d.ts +32 -100
- package/out/tools/fetch/wikidata-subvenue.d.ts.map +1 -1
- package/out/tools/fetch/wikidata-subvenue.js +27 -122
- package/out/tools/fetch/wikidata-subvenue.js.map +1 -1
- package/out/tools/fetch/zip-archive.d.ts +54 -0
- package/out/tools/fetch/zip-archive.d.ts.map +1 -0
- package/out/tools/fetch/zip-archive.js +58 -0
- package/out/tools/fetch/zip-archive.js.map +1 -0
- package/out/tools/fetch.d.ts +140 -0
- package/out/tools/fetch.d.ts.map +1 -0
- package/out/tools/fetch.js +136 -0
- package/out/tools/fetch.js.map +1 -0
- package/out/tools/golden/expand.d.ts +28 -13
- package/out/tools/golden/expand.d.ts.map +1 -1
- package/out/tools/golden/expand.js +50 -36
- package/out/tools/golden/expand.js.map +1 -1
- package/out/tools/golden/promote.d.ts +13 -8
- package/out/tools/golden/promote.d.ts.map +1 -1
- package/out/tools/golden/promote.js +33 -28
- package/out/tools/golden/promote.js.map +1 -1
- package/out/tools/golden/relabel-street/directory.d.ts +24 -9
- package/out/tools/golden/relabel-street/directory.d.ts.map +1 -1
- package/out/tools/golden/relabel-street/directory.js +41 -30
- package/out/tools/golden/relabel-street/directory.js.map +1 -1
- package/out/tools/golden/relabel-street/row.d.ts +17 -69
- package/out/tools/golden/relabel-street/row.d.ts.map +1 -1
- package/out/tools/golden/relabel-street/row.js +16 -74
- package/out/tools/golden/relabel-street/row.js.map +1 -1
- package/out/tools/golden/{relabel-street/index.d.ts → relabel-street.d.ts} +1 -1
- package/out/tools/golden/relabel-street.d.ts.map +1 -0
- package/out/tools/golden/{relabel-street/index.js → relabel-street.js} +1 -1
- package/out/tools/golden/relabel-street.js.map +1 -0
- package/out/tools/ingest-csv.d.ts +19 -15
- package/out/tools/ingest-csv.d.ts.map +1 -1
- package/out/tools/ingest-csv.js +39 -43
- package/out/tools/ingest-csv.js.map +1 -1
- package/out/tools/jsonl-to-parquet.d.ts +15 -28
- package/out/tools/jsonl-to-parquet.d.ts.map +1 -1
- package/out/tools/jsonl-to-parquet.js +49 -91
- package/out/tools/jsonl-to-parquet.js.map +1 -1
- package/out/tools/lint/recipe-output/vocab.d.ts +77 -0
- package/out/tools/lint/recipe-output/vocab.d.ts.map +1 -0
- package/out/tools/lint/{slice → recipe-output}/vocab.js +54 -69
- package/out/tools/lint/recipe-output/vocab.js.map +1 -0
- package/out/tools/lint/recipe-output.d.ts +73 -0
- package/out/tools/lint/recipe-output.d.ts.map +1 -0
- package/out/tools/lint/{slice/index.js → recipe-output.js} +76 -96
- package/out/tools/lint/recipe-output.js.map +1 -0
- package/out/tools/migrate/overlay-parquet.d.ts +30 -0
- package/out/tools/migrate/overlay-parquet.d.ts.map +1 -0
- package/out/tools/migrate/overlay-parquet.js +141 -0
- package/out/tools/migrate/overlay-parquet.js.map +1 -0
- package/out/tools/migrate/recipe-output.d.ts +35 -0
- package/out/tools/migrate/recipe-output.d.ts.map +1 -0
- package/out/tools/migrate/recipe-output.js +124 -0
- package/out/tools/migrate/recipe-output.js.map +1 -0
- package/out/tools/migrate/source-names.d.ts +52 -0
- package/out/tools/migrate/source-names.d.ts.map +1 -0
- package/out/tools/migrate/source-names.js +105 -0
- package/out/tools/migrate/source-names.js.map +1 -0
- package/out/tools/overlay/kryptonite.d.ts +33 -0
- package/out/tools/overlay/kryptonite.d.ts.map +1 -0
- package/out/tools/{slice → overlay}/kryptonite.js +37 -28
- package/out/tools/overlay/kryptonite.js.map +1 -0
- package/out/tools/overlay/manifest.d.ts +142 -0
- package/out/tools/overlay/manifest.d.ts.map +1 -0
- package/out/tools/overlay/manifest.js +260 -0
- package/out/tools/overlay/manifest.js.map +1 -0
- package/out/tools/overlay/merge-source.d.ts +73 -0
- package/out/tools/overlay/merge-source.d.ts.map +1 -0
- package/out/tools/overlay/merge-source.js +63 -0
- package/out/tools/overlay/merge-source.js.map +1 -0
- package/out/tools/overlay/split-slice.d.ts +66 -0
- package/out/tools/overlay/split-slice.d.ts.map +1 -0
- package/out/tools/overlay/split-slice.js +78 -0
- package/out/tools/overlay/split-slice.js.map +1 -0
- package/out/tools/overlay/translit.d.ts +54 -0
- package/out/tools/overlay/translit.d.ts.map +1 -0
- package/out/tools/{slice → overlay}/translit.js +59 -48
- package/out/tools/overlay/translit.js.map +1 -0
- package/out/tools/overture-subvenue.d.ts +16 -75
- package/out/tools/overture-subvenue.d.ts.map +1 -1
- package/out/tools/overture-subvenue.js +7 -74
- package/out/tools/overture-subvenue.js.map +1 -1
- package/out/tools/postcode-triples.d.ts +77 -126
- package/out/tools/postcode-triples.d.ts.map +1 -1
- package/out/tools/postcode-triples.js +198 -192
- package/out/tools/postcode-triples.js.map +1 -1
- package/out/tools/source-register/build.d.ts +145 -0
- package/out/tools/source-register/build.d.ts.map +1 -0
- package/out/tools/source-register/build.js +515 -0
- package/out/tools/source-register/build.js.map +1 -0
- package/out/tools/sub/venue/head-nouns.d.ts +9 -38
- package/out/tools/sub/venue/head-nouns.d.ts.map +1 -1
- package/out/tools/sub/venue/head-nouns.js +37 -74
- package/out/tools/sub/venue/head-nouns.js.map +1 -1
- package/out/tools/sub/venue/lexicon.d.ts +55 -82
- package/out/tools/sub/venue/lexicon.d.ts.map +1 -1
- package/out/tools/sub/venue/lexicon.js +43 -87
- package/out/tools/sub/venue/lexicon.js.map +1 -1
- package/out/tools/sub/venue/wikidata.d.ts +8 -6
- package/out/tools/sub/venue/wikidata.d.ts.map +1 -1
- package/out/tools/sub/venue/wikidata.js +12 -9
- package/out/tools/sub/venue/wikidata.js.map +1 -1
- package/out/tools.d.ts +31 -0
- package/out/tools.d.ts.map +1 -0
- package/out/tools.js +31 -0
- package/out/tools.js.map +1 -0
- package/out/tw/tools/fetch/gcis.d.ts +9 -3
- package/out/tw/tools/fetch/gcis.d.ts.map +1 -1
- package/out/tw/tools/fetch/gcis.js +16 -10
- package/out/tw/tools/fetch/gcis.js.map +1 -1
- package/out/types.d.ts +270 -101
- package/out/types.d.ts.map +1 -1
- package/out/types.js +133 -9
- package/out/types.js.map +1 -1
- package/out/us/adapters/fcc-bdc/adapter.d.ts +18 -36
- package/out/us/adapters/fcc-bdc/adapter.d.ts.map +1 -1
- package/out/us/adapters/fcc-bdc/adapter.js +25 -38
- package/out/us/adapters/fcc-bdc/adapter.js.map +1 -1
- package/out/us/adapters/state/hi-schools/adapter.d.ts +12 -11
- package/out/us/adapters/state/hi-schools/adapter.d.ts.map +1 -1
- package/out/us/adapters/state/hi-schools/adapter.js +26 -16
- package/out/us/adapters/state/hi-schools/adapter.js.map +1 -1
- package/out/us/adapters/state/hi-schools/workbook.d.ts +7 -2
- package/out/us/adapters/state/hi-schools/workbook.d.ts.map +1 -1
- package/out/us/adapters/state/hi-schools/workbook.js +3 -1
- package/out/us/adapters/state/hi-schools/workbook.js.map +1 -1
- package/out/us/adapters/state/ia-contractors/adapter.d.ts +13 -6
- package/out/us/adapters/state/ia-contractors/adapter.d.ts.map +1 -1
- package/out/us/adapters/state/ia-contractors/adapter.js +27 -14
- package/out/us/adapters/state/ia-contractors/adapter.js.map +1 -1
- package/out/us/adapters/state/ny-notaries/adapter.d.ts +7 -6
- package/out/us/adapters/state/ny-notaries/adapter.d.ts.map +1 -1
- package/out/us/adapters/state/ny-notaries/adapter.js +24 -22
- package/out/us/adapters/state/ny-notaries/adapter.js.map +1 -1
- package/out/us/adapters/state/tx-notaries/adapter.d.ts +8 -7
- package/out/us/adapters/state/tx-notaries/adapter.d.ts.map +1 -1
- package/out/us/adapters/state/tx-notaries/adapter.js +21 -14
- package/out/us/adapters/state/tx-notaries/adapter.js.map +1 -1
- package/out/us/adapters/tiger/adapter.d.ts +10 -34
- package/out/us/adapters/tiger/adapter.d.ts.map +1 -1
- package/out/us/adapters/tiger/adapter.js +18 -42
- package/out/us/adapters/tiger/adapter.js.map +1 -1
- package/out/us/adapters/tiger/street-decompose.d.ts +6 -13
- package/out/us/adapters/tiger/street-decompose.d.ts.map +1 -1
- package/out/us/adapters/tiger/street-decompose.js +7 -17
- package/out/us/adapters/tiger/street-decompose.js.map +1 -1
- package/out/us/adapters/usgov/hrsa-fqhc/adapter.d.ts +26 -20
- package/out/us/adapters/usgov/hrsa-fqhc/adapter.d.ts.map +1 -1
- package/out/us/adapters/usgov/hrsa-fqhc/adapter.js +41 -29
- package/out/us/adapters/usgov/hrsa-fqhc/adapter.js.map +1 -1
- package/out/us/adapters/usgov/imls-pls/adapter.d.ts +8 -7
- package/out/us/adapters/usgov/imls-pls/adapter.d.ts.map +1 -1
- package/out/us/adapters/usgov/imls-pls/adapter.js +25 -18
- package/out/us/adapters/usgov/imls-pls/adapter.js.map +1 -1
- package/out/us/adapters/usgov/irs-bmf/adapter.d.ts +11 -10
- package/out/us/adapters/usgov/irs-bmf/adapter.d.ts.map +1 -1
- package/out/us/adapters/usgov/irs-bmf/adapter.js +32 -22
- package/out/us/adapters/usgov/irs-bmf/adapter.js.map +1 -1
- package/out/us/adapters/usgov/nad/adapter.d.ts +11 -31
- package/out/us/adapters/usgov/nad/adapter.d.ts.map +1 -1
- package/out/us/adapters/usgov/nad/adapter.js +51 -105
- package/out/us/adapters/usgov/nad/adapter.js.map +1 -1
- package/out/us/adapters/usgov/nppes/adapter.d.ts +12 -22
- package/out/us/adapters/usgov/nppes/adapter.d.ts.map +1 -1
- package/out/us/adapters/usgov/nppes/adapter.js +62 -32
- package/out/us/adapters/usgov/nppes/adapter.js.map +1 -1
- package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.d.ts +16 -15
- package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.d.ts.map +1 -1
- package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.js +36 -26
- package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.js.map +1 -1
- package/out/us/fips-state.d.ts +17 -8
- package/out/us/fips-state.d.ts.map +1 -1
- package/out/us/fips-state.js +17 -8
- package/out/us/fips-state.js.map +1 -1
- package/out/us/tools/fetch/hrsa.d.ts +3 -3
- package/out/us/tools/fetch/hrsa.d.ts.map +1 -1
- package/out/us/tools/fetch/hrsa.js +6 -7
- package/out/us/tools/fetch/hrsa.js.map +1 -1
- package/out/us/tools/fetch/imls-pls.d.ts +5 -16
- package/out/us/tools/fetch/imls-pls.d.ts.map +1 -1
- package/out/us/tools/fetch/imls-pls.js +16 -33
- package/out/us/tools/fetch/imls-pls.js.map +1 -1
- package/out/us/tools/fetch/nad.d.ts +22 -10
- package/out/us/tools/fetch/nad.d.ts.map +1 -1
- package/out/us/tools/fetch/nad.js +29 -24
- package/out/us/tools/fetch/nad.js.map +1 -1
- package/out/us/tools/fetch/nppes.d.ts +6 -16
- package/out/us/tools/fetch/nppes.d.ts.map +1 -1
- package/out/us/tools/fetch/nppes.js +21 -33
- package/out/us/tools/fetch/nppes.js.map +1 -1
- package/out/us/tools/fetch/state/hi-schools.d.ts +8 -5
- package/out/us/tools/fetch/state/hi-schools.d.ts.map +1 -1
- package/out/us/tools/fetch/state/hi-schools.js +15 -13
- package/out/us/tools/fetch/state/hi-schools.js.map +1 -1
- package/out/us/tools/fetch/state/sources.d.ts +8 -7
- package/out/us/tools/fetch/state/sources.d.ts.map +1 -1
- package/out/us/tools/fetch/state/sources.js +8 -9
- package/out/us/tools/fetch/state/sources.js.map +1 -1
- package/out/us/tools/fetch/tiger-full.d.ts +1 -14
- package/out/us/tools/fetch/tiger-full.d.ts.map +1 -1
- package/out/us/tools/fetch/tiger-full.js +15 -54
- package/out/us/tools/fetch/tiger-full.js.map +1 -1
- package/out/utils/align.d.ts +24 -19
- package/out/utils/align.d.ts.map +1 -1
- package/out/utils/align.js +27 -42
- package/out/utils/align.js.map +1 -1
- package/out/utils/cooccurrence-stats.d.ts +58 -0
- package/out/utils/cooccurrence-stats.d.ts.map +1 -0
- package/out/utils/cooccurrence-stats.js +62 -0
- package/out/utils/cooccurrence-stats.js.map +1 -0
- package/out/utils/golden.d.ts +21 -31
- package/out/utils/golden.d.ts.map +1 -1
- package/out/utils/golden.js +28 -44
- package/out/utils/golden.js.map +1 -1
- package/out/utils/license.d.ts +158 -21
- package/out/utils/license.d.ts.map +1 -1
- package/out/utils/license.js +156 -26
- package/out/utils/license.js.map +1 -1
- package/out/utils/split.d.ts +66 -70
- package/out/utils/split.d.ts.map +1 -1
- package/out/utils/split.js +158 -69
- package/out/utils/split.js.map +1 -1
- package/out/utils/tokenize.d.ts +16 -28
- package/out/utils/tokenize.d.ts.map +1 -1
- package/out/utils/tokenize.js +18 -31
- package/out/utils/tokenize.js.map +1 -1
- package/out/utils/wof-json.d.ts +88 -62
- package/out/utils/wof-json.d.ts.map +1 -1
- package/out/utils/wof-json.js +76 -55
- package/out/utils/wof-json.js.map +1 -1
- package/out/{utils/index.js → utils.d.ts} +1 -2
- package/out/utils.d.ts.map +1 -0
- package/out/{utils/index.d.ts → utils.js} +1 -2
- package/out/utils.js.map +1 -0
- package/out/ve/recipes/reviewed-postcode-tail.d.ts +25 -7
- package/out/ve/recipes/reviewed-postcode-tail.d.ts.map +1 -1
- package/out/ve/recipes/reviewed-postcode-tail.js +33 -12
- package/out/ve/recipes/reviewed-postcode-tail.js.map +1 -1
- package/package.json +46 -480
- package/lib/adapters/index.ts +0 -160
- package/lib/adapters/synth-po-box/adapter.ts +0 -204
- package/lib/adapters/utils/index.ts +0 -307
- package/lib/recipes/bare/postcode/index.ts +0 -327
- package/lib/recipes/sub/venue/index.ts +0 -997
- package/lib/synthesizers/locale.ts +0 -261
- package/lib/test-kit/index.ts +0 -100
- package/lib/tools/align-slice.ts +0 -68
- package/lib/tools/fetch/index.ts +0 -174
- package/lib/tools/gb-title-case.ts +0 -69
- package/lib/tools/index.ts +0 -28
- package/lib/tools/lint/slice/vocab.ts +0 -376
- package/lib/tools/overlay-manifest.ts +0 -215
- package/lib/tools/sub/venue/harvest.ts +0 -234
- package/lib/tools/sub/venue/surfaces.ts +0 -95
- package/lib/tools/sub/venue/table.ts +0 -281
- package/lib/utils/parquet.ts +0 -582
- package/out/adapters/index.d.ts +0 -51
- package/out/adapters/index.d.ts.map +0 -1
- package/out/adapters/index.js +0 -97
- package/out/adapters/index.js.map +0 -1
- package/out/adapters/synth-po-box/adapter.d.ts +0 -67
- package/out/adapters/synth-po-box/adapter.d.ts.map +0 -1
- package/out/adapters/synth-po-box/adapter.js.map +0 -1
- package/out/adapters/utils/index.d.ts +0 -191
- package/out/adapters/utils/index.d.ts.map +0 -1
- package/out/adapters/utils/index.js +0 -206
- package/out/adapters/utils/index.js.map +0 -1
- package/out/fr/adapters/ban/street-decompose.d.ts.map +0 -1
- package/out/fr/adapters/ban/street-decompose.js.map +0 -1
- package/out/no/recipes/street/index.d.ts +0 -18
- package/out/no/recipes/street/index.d.ts.map +0 -1
- package/out/no/recipes/street/index.js.map +0 -1
- package/out/recipes/bare/postcode/index.d.ts +0 -62
- package/out/recipes/bare/postcode/index.d.ts.map +0 -1
- package/out/recipes/bare/postcode/index.js.map +0 -1
- package/out/recipes/index.d.ts +0 -24
- package/out/recipes/index.d.ts.map +0 -1
- package/out/recipes/index.js.map +0 -1
- package/out/recipes/po/box/index.d.ts +0 -17
- package/out/recipes/po/box/index.d.ts.map +0 -1
- package/out/recipes/po/box/index.js.map +0 -1
- package/out/recipes/sub/venue/index.d.ts +0 -270
- package/out/recipes/sub/venue/index.d.ts.map +0 -1
- package/out/recipes/sub/venue/index.js +0 -728
- package/out/recipes/sub/venue/index.js.map +0 -1
- package/out/synthesizers/locale.d.ts +0 -116
- package/out/synthesizers/locale.d.ts.map +0 -1
- package/out/synthesizers/locale.js +0 -150
- package/out/synthesizers/locale.js.map +0 -1
- package/out/test-kit/index.d.ts +0 -48
- package/out/test-kit/index.d.ts.map +0 -1
- package/out/test-kit/index.js +0 -78
- package/out/test-kit/index.js.map +0 -1
- package/out/tools/align-slice.d.ts +0 -7
- package/out/tools/align-slice.d.ts.map +0 -1
- package/out/tools/align-slice.js +0 -55
- package/out/tools/align-slice.js.map +0 -1
- package/out/tools/fetch/download/index.d.ts.map +0 -1
- package/out/tools/fetch/download/index.js.map +0 -1
- package/out/tools/fetch/index.d.ts +0 -171
- package/out/tools/fetch/index.d.ts.map +0 -1
- package/out/tools/fetch/index.js +0 -170
- package/out/tools/fetch/index.js.map +0 -1
- package/out/tools/gb-title-case.d.ts +0 -2
- package/out/tools/gb-title-case.d.ts.map +0 -1
- package/out/tools/gb-title-case.js +0 -65
- package/out/tools/gb-title-case.js.map +0 -1
- package/out/tools/golden/relabel-street/index.d.ts.map +0 -1
- package/out/tools/golden/relabel-street/index.js.map +0 -1
- package/out/tools/index.d.ts +0 -28
- package/out/tools/index.d.ts.map +0 -1
- package/out/tools/index.js +0 -28
- package/out/tools/index.js.map +0 -1
- package/out/tools/lint/slice/index.d.ts +0 -93
- package/out/tools/lint/slice/index.d.ts.map +0 -1
- package/out/tools/lint/slice/index.js.map +0 -1
- package/out/tools/lint/slice/vocab.d.ts +0 -90
- package/out/tools/lint/slice/vocab.d.ts.map +0 -1
- package/out/tools/lint/slice/vocab.js.map +0 -1
- package/out/tools/overlay-manifest.d.ts +0 -89
- package/out/tools/overlay-manifest.d.ts.map +0 -1
- package/out/tools/overlay-manifest.js +0 -131
- package/out/tools/overlay-manifest.js.map +0 -1
- package/out/tools/slice/kryptonite.d.ts +0 -32
- package/out/tools/slice/kryptonite.d.ts.map +0 -1
- package/out/tools/slice/kryptonite.js.map +0 -1
- package/out/tools/slice/translit.d.ts +0 -51
- package/out/tools/slice/translit.d.ts.map +0 -1
- package/out/tools/slice/translit.js.map +0 -1
- package/out/tools/sub/venue/harvest.d.ts +0 -100
- package/out/tools/sub/venue/harvest.d.ts.map +0 -1
- package/out/tools/sub/venue/harvest.js +0 -168
- package/out/tools/sub/venue/harvest.js.map +0 -1
- package/out/tools/sub/venue/promotions.d.ts +0 -94
- package/out/tools/sub/venue/promotions.d.ts.map +0 -1
- package/out/tools/sub/venue/promotions.js.map +0 -1
- package/out/tools/sub/venue/surfaces.d.ts +0 -45
- package/out/tools/sub/venue/surfaces.d.ts.map +0 -1
- package/out/tools/sub/venue/surfaces.js +0 -77
- package/out/tools/sub/venue/surfaces.js.map +0 -1
- package/out/tools/sub/venue/table.d.ts +0 -229
- package/out/tools/sub/venue/table.d.ts.map +0 -1
- package/out/tools/sub/venue/table.js +0 -108
- package/out/tools/sub/venue/table.js.map +0 -1
- package/out/utils/index.d.ts.map +0 -1
- package/out/utils/index.js.map +0 -1
- package/out/utils/parquet.d.ts +0 -178
- package/out/utils/parquet.d.ts.map +0 -1
- package/out/utils/parquet.js +0 -371
- package/out/utils/parquet.js.map +0 -1
- package/out/utils/slice-stats.d.ts +0 -52
- package/out/utils/slice-stats.d.ts.map +0 -1
- package/out/utils/slice-stats.js +0 -58
- package/out/utils/slice-stats.js.map +0 -1
- /package/lib/tools/fetch/{download/index.ts → download.ts} +0 -0
- /package/lib/tools/golden/{relabel-street/index.ts → relabel-street.ts} +0 -0
|
@@ -3,61 +3,11 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* ## Why this exists
|
|
9
|
-
*
|
|
10
|
-
* The golden answer key and the training corpus disagreed about ONE thing, and the v9.0.0
|
|
11
|
-
* promotion eval read the disagreement as a model regression (`us.street` 87.4 vs a floor of
|
|
12
|
-
* 87.8). The corpus SPLITS a US street into `street` + `street_suffix` — TIGER's adapter
|
|
13
|
-
* decomposes at `corpus/src/adapters/tiger/street-decompose.ts`, the `street-affix` slice recipe
|
|
14
|
-
* teaches it from USPS Pub-28, and `ComponentTag` carries `street_suffix` as a first-class tag.
|
|
15
|
-
* The golden set FOLDED it: 2,216 US rows carry a `street`, and exactly 2 of them label a
|
|
16
|
-
* `street_suffix`. Operator ruling, 2026-08-06: **the split is canonical**; the golden is the
|
|
17
|
-
* stale side. This tool moves the answer key onto the corpus convention.
|
|
18
|
-
*
|
|
19
|
-
* ## The instrument
|
|
20
|
-
*
|
|
21
|
-
* `matchTrailingSuffix` from `@mailwoman/codex/us` — the USPS Pub-28 Appendix C table, which is
|
|
22
|
-
* also what the corpus slice recipe splits on. The table is NOT re-implemented here, and the
|
|
23
|
-
* libpostal dictionary TIGER reads is deliberately not used: measured on this golden set the two
|
|
24
|
-
* disagree on 51 US rows, and the disagreements run in the codex table's favour (libpostal's
|
|
25
|
-
* `directionals.txt` lists `center|c`, so TIGER reads the `C` of "C STREET" as a directional
|
|
26
|
-
* prefix and then emits no suffix at all).
|
|
27
|
-
*
|
|
28
|
-
* ## What it changes, and what it refuses to
|
|
29
|
-
*
|
|
30
|
-
* Applied only to rows whose `country` is `US`. Three branches, mirroring the SHAPE of TIGER's
|
|
31
|
-
* `decomposeStreet` on codex tables:
|
|
32
|
-
*
|
|
33
|
-
* - **street type** — the last whitespace-separated word is a Pub-28 suffix, and something is left
|
|
34
|
-
* over: "Main St" → `street: "Main"`, `street_suffix: "St"` (1,559 rows).
|
|
35
|
-
* - **street type + post-directional** — the last word is a directional AND the one before it is a
|
|
36
|
-
* Pub-28 suffix: "Pennsylvania Avenue NW" → `street: "Pennsylvania"`,
|
|
37
|
-
* `street_suffix: "Avenue NW"` (347 rows). The post-directional joins the suffix rather than
|
|
38
|
-
* becoming a tag of its own, because that is what the corpus adapter emits; there is no
|
|
39
|
-
* `street_postfix` tag to move it to.
|
|
40
|
-
* - **everything else is left folded** and reported. In particular a BARE post-directional tail
|
|
41
|
-
* ("Seymour East", "BROADWAY N" — 16 rows) is NOT split: a directional is not a Pub-28 suffix,
|
|
42
|
-
* and the observed rows in that class are unit-contaminated ("1ST AVE SW BOX E", where the
|
|
43
|
-
* trailing "E" is a box letter).
|
|
44
|
-
*
|
|
45
|
-
* FR rows are untouched, deliberately and permanently as far as this tool is concerned. French
|
|
46
|
-
* street typology puts the type FIRST ("Rue de la Paix") and the golden labels only 7 of 665 FR
|
|
47
|
-
* street rows with a `street_prefix`; whether FR should split at all is a different question with
|
|
48
|
-
* a different table behind it, and nothing here should be read as having answered it.
|
|
49
|
-
*
|
|
50
|
-
* ## Surface bytes
|
|
51
|
-
*
|
|
52
|
-
* The split is a break at a whitespace run in the ORIGINAL string — no trimming, no case
|
|
53
|
-
* normalization, no re-joining of tokens. `street + gap + street_suffix` reconstructs the input
|
|
54
|
-
* byte-for-byte, so the whitespace between them belongs to neither span (the same shape the corpus
|
|
55
|
-
* adapter's spans have). The tool asserts this per row and refuses to write a file if it ever
|
|
56
|
-
* fails.
|
|
6
|
+
* Splits the street span of US golden rows into `street_prefix`, `street` and `street_suffix` with the USPS Pub-28 table.
|
|
57
7
|
*/
|
|
58
8
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
9
|
+
* The golden row fields that the relabeler reads.
|
|
10
|
+
* Other fields are copied unchanged.
|
|
61
11
|
*/
|
|
62
12
|
export interface GoldenStreetRow {
|
|
63
13
|
raw: string;
|
|
@@ -68,34 +18,32 @@ export interface GoldenStreetRow {
|
|
|
68
18
|
[key: string]: unknown;
|
|
69
19
|
}
|
|
70
20
|
/**
|
|
71
|
-
*
|
|
21
|
+
* The relabel outcome class for one row.
|
|
72
22
|
*/
|
|
73
23
|
export type GoldenRelabelClass = "split-suffix" | "split-suffix-postdirectional" | "split-prefix-only" | "already-split" | "single-token" | "suffix-only-street" | "postdirectional-tail-only" | "no-suffix-match" | "no-street" | "not-us" | "untrimmed-street";
|
|
74
24
|
/**
|
|
75
|
-
* A review
|
|
76
|
-
*
|
|
25
|
+
* A review note attached to a changed row.
|
|
26
|
+
* The relabel decision ignores it.
|
|
77
27
|
*/
|
|
78
28
|
export interface GoldenRelabelFlag {
|
|
79
29
|
kind: "name-prone-suffix" | "venue-context" | "remainder-is-affix";
|
|
80
30
|
detail: string;
|
|
81
31
|
}
|
|
82
32
|
/**
|
|
83
|
-
*
|
|
33
|
+
* The relabel result for one row.
|
|
84
34
|
*/
|
|
85
35
|
export interface GoldenRelabelResult {
|
|
86
36
|
/**
|
|
87
|
-
* The row to write.
|
|
37
|
+
* The row to write.
|
|
38
|
+
* This is the input object itself when no field changed.
|
|
88
39
|
*/
|
|
89
40
|
row: GoldenStreetRow;
|
|
90
41
|
changed: boolean;
|
|
91
42
|
rowClass: GoldenRelabelClass;
|
|
92
43
|
flags: GoldenRelabelFlag[];
|
|
93
|
-
/**
|
|
94
|
-
* A leading directional was lifted into `street_prefix` on this row.
|
|
95
|
-
*/
|
|
96
44
|
prefixSplit: boolean;
|
|
97
45
|
/**
|
|
98
|
-
* The street span
|
|
46
|
+
* The original street span of a changed row, for review.
|
|
99
47
|
*/
|
|
100
48
|
beforeStreet?: string;
|
|
101
49
|
}
|
|
@@ -104,18 +52,18 @@ export interface GoldenRelabelResult {
|
|
|
104
52
|
*/
|
|
105
53
|
export interface RelabelStreetRowOptions {
|
|
106
54
|
/**
|
|
107
|
-
*
|
|
55
|
+
* Whether to also move a leading directional into `street_prefix`.
|
|
108
56
|
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
* — "N Desmet Avenue" would have graded `street: "N Desmet"` against a model that says `street_prefix: "N", street:
|
|
112
|
-
* "Desmet"`. Turn it OFF only to measure what the prefix fold alone costs.
|
|
57
|
+
* Defaults to `true`; without it `N Desmet Avenue` grades as `street: "N Desmet"`
|
|
58
|
+
* against a model that emits a prefix.
|
|
113
59
|
*/
|
|
114
60
|
splitPrefix?: boolean;
|
|
115
61
|
}
|
|
116
62
|
/**
|
|
117
|
-
*
|
|
118
|
-
*
|
|
63
|
+
* Splits the street span of one US golden row without mutating its argument,
|
|
64
|
+
* returning it when no field changes.
|
|
65
|
+
*
|
|
66
|
+
* @throws When the split spans do not rebuild the original street byte for byte.
|
|
119
67
|
*/
|
|
120
68
|
export declare function relabelGoldenStreetRow(row: GoldenStreetRow, options?: RelabelStreetRowOptions): GoldenRelabelResult;
|
|
121
69
|
//# sourceMappingURL=row.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row.d.ts","sourceRoot":"","sources":["../../../../lib/tools/golden/relabel-street/row.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"row.d.ts","sourceRoot":"","sources":["../../../../lib/tools/golden/relabel-street/row.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC3B,cAAc,GACd,8BAA8B,GAC9B,mBAAmB,GACnB,eAAe,GACf,cAAc,GACd,oBAAoB,GACpB,2BAA2B,GAC3B,iBAAiB,GACjB,WAAW,GACX,QAAQ,GACR,kBAAkB,CAAA;AAErB;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,mBAAmB,GAAG,eAAe,GAAG,oBAAoB,CAAA;IAClE,MAAM,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC;;;OAGG;IACH,GAAG,EAAE,eAAe,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,KAAK,EAAE,iBAAiB,EAAE,CAAA;IAC1B,WAAW,EAAE,OAAO,CAAA;IACpB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACrB;AA+DD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,eAAe,EACpB,OAAO,GAAE,uBAA4B,GACnC,mBAAmB,CA6HrB"}
|
|
@@ -3,64 +3,13 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* ## Why this exists
|
|
9
|
-
*
|
|
10
|
-
* The golden answer key and the training corpus disagreed about ONE thing, and the v9.0.0
|
|
11
|
-
* promotion eval read the disagreement as a model regression (`us.street` 87.4 vs a floor of
|
|
12
|
-
* 87.8). The corpus SPLITS a US street into `street` + `street_suffix` — TIGER's adapter
|
|
13
|
-
* decomposes at `corpus/src/adapters/tiger/street-decompose.ts`, the `street-affix` slice recipe
|
|
14
|
-
* teaches it from USPS Pub-28, and `ComponentTag` carries `street_suffix` as a first-class tag.
|
|
15
|
-
* The golden set FOLDED it: 2,216 US rows carry a `street`, and exactly 2 of them label a
|
|
16
|
-
* `street_suffix`. Operator ruling, 2026-08-06: **the split is canonical**; the golden is the
|
|
17
|
-
* stale side. This tool moves the answer key onto the corpus convention.
|
|
18
|
-
*
|
|
19
|
-
* ## The instrument
|
|
20
|
-
*
|
|
21
|
-
* `matchTrailingSuffix` from `@mailwoman/codex/us` — the USPS Pub-28 Appendix C table, which is
|
|
22
|
-
* also what the corpus slice recipe splits on. The table is NOT re-implemented here, and the
|
|
23
|
-
* libpostal dictionary TIGER reads is deliberately not used: measured on this golden set the two
|
|
24
|
-
* disagree on 51 US rows, and the disagreements run in the codex table's favour (libpostal's
|
|
25
|
-
* `directionals.txt` lists `center|c`, so TIGER reads the `C` of "C STREET" as a directional
|
|
26
|
-
* prefix and then emits no suffix at all).
|
|
27
|
-
*
|
|
28
|
-
* ## What it changes, and what it refuses to
|
|
29
|
-
*
|
|
30
|
-
* Applied only to rows whose `country` is `US`. Three branches, mirroring the SHAPE of TIGER's
|
|
31
|
-
* `decomposeStreet` on codex tables:
|
|
32
|
-
*
|
|
33
|
-
* - **street type** — the last whitespace-separated word is a Pub-28 suffix, and something is left
|
|
34
|
-
* over: "Main St" → `street: "Main"`, `street_suffix: "St"` (1,559 rows).
|
|
35
|
-
* - **street type + post-directional** — the last word is a directional AND the one before it is a
|
|
36
|
-
* Pub-28 suffix: "Pennsylvania Avenue NW" → `street: "Pennsylvania"`,
|
|
37
|
-
* `street_suffix: "Avenue NW"` (347 rows). The post-directional joins the suffix rather than
|
|
38
|
-
* becoming a tag of its own, because that is what the corpus adapter emits; there is no
|
|
39
|
-
* `street_postfix` tag to move it to.
|
|
40
|
-
* - **everything else is left folded** and reported. In particular a BARE post-directional tail
|
|
41
|
-
* ("Seymour East", "BROADWAY N" — 16 rows) is NOT split: a directional is not a Pub-28 suffix,
|
|
42
|
-
* and the observed rows in that class are unit-contaminated ("1ST AVE SW BOX E", where the
|
|
43
|
-
* trailing "E" is a box letter).
|
|
44
|
-
*
|
|
45
|
-
* FR rows are untouched, deliberately and permanently as far as this tool is concerned. French
|
|
46
|
-
* street typology puts the type FIRST ("Rue de la Paix") and the golden labels only 7 of 665 FR
|
|
47
|
-
* street rows with a `street_prefix`; whether FR should split at all is a different question with
|
|
48
|
-
* a different table behind it, and nothing here should be read as having answered it.
|
|
49
|
-
*
|
|
50
|
-
* ## Surface bytes
|
|
51
|
-
*
|
|
52
|
-
* The split is a break at a whitespace run in the ORIGINAL string — no trimming, no case
|
|
53
|
-
* normalization, no re-joining of tokens. `street + gap + street_suffix` reconstructs the input
|
|
54
|
-
* byte-for-byte, so the whitespace between them belongs to neither span (the same shape the corpus
|
|
55
|
-
* adapter's spans have). The tool asserts this per row and refuses to write a file if it ever
|
|
56
|
-
* fails.
|
|
6
|
+
* Splits the street span of US golden rows into `street_prefix`, `street` and `street_suffix` with the USPS Pub-28 table.
|
|
57
7
|
*/
|
|
58
8
|
import { isStreetDirectionalToken, matchTrailingSuffix, NAME_PRONE_US_SUFFIXES, } from "@mailwoman/codex/us";
|
|
9
|
+
import { stringifyJSON } from "@mailwoman/core/json";
|
|
59
10
|
import { escapeRegExp } from "@mailwoman/core/strings/regexp";
|
|
60
11
|
/**
|
|
61
|
-
*
|
|
62
|
-
* when the head would be empty, or when `s` carries leading/trailing whitespace (a golden row is stored trimmed; an
|
|
63
|
-
* untrimmed one is reported rather than silently normalized).
|
|
12
|
+
* Splits `s` at its last whitespace run, or returns `null` for an empty, untrimmed, or single-token string.
|
|
64
13
|
*/
|
|
65
14
|
function splitLastWord(s) {
|
|
66
15
|
if (s !== s.trim() || !s)
|
|
@@ -71,8 +20,7 @@ function splitLastWord(s) {
|
|
|
71
20
|
return { head: match[1], gap: match[2], tail: match[3] };
|
|
72
21
|
}
|
|
73
22
|
/**
|
|
74
|
-
*
|
|
75
|
-
* first word, `tail` the rest, both verbatim.
|
|
23
|
+
* Splits `s` at its first whitespace run, with the same `null` cases as {@link splitLastWord}.
|
|
76
24
|
*/
|
|
77
25
|
function splitFirstWord(s) {
|
|
78
26
|
if (s !== s.trim() || !s)
|
|
@@ -82,10 +30,8 @@ function splitFirstWord(s) {
|
|
|
82
30
|
return null;
|
|
83
31
|
return { head: match[1], gap: match[2], tail: match[3] };
|
|
84
32
|
}
|
|
85
|
-
// ── Row-level relabel ──────────────────────────────────────────────────────
|
|
86
33
|
/**
|
|
87
|
-
*
|
|
88
|
-
* order rather than with the new tag appended at the end.
|
|
34
|
+
* Rebuilds `components` with the street spans in place of `street`, so the keys stay in address order.
|
|
89
35
|
*/
|
|
90
36
|
function withStreetSpans(components, spans) {
|
|
91
37
|
const out = {};
|
|
@@ -107,8 +53,10 @@ function withStreetSpans(components, spans) {
|
|
|
107
53
|
return out;
|
|
108
54
|
}
|
|
109
55
|
/**
|
|
110
|
-
*
|
|
111
|
-
*
|
|
56
|
+
* Splits the street span of one US golden row without mutating its argument,
|
|
57
|
+
* returning it when no field changes.
|
|
58
|
+
*
|
|
59
|
+
* @throws When the split spans do not rebuild the original street byte for byte.
|
|
112
60
|
*/
|
|
113
61
|
export function relabelGoldenStreetRow(row, options = {}) {
|
|
114
62
|
const splitPrefix = options.splitPrefix ?? true;
|
|
@@ -139,8 +87,8 @@ export function relabelGoldenStreetRow(row, options = {}) {
|
|
|
139
87
|
rowClass = matchTrailingSuffix(street) ? "suffix-only-street" : "single-token";
|
|
140
88
|
}
|
|
141
89
|
else if (isStreetDirectionalToken(split.tail)) {
|
|
142
|
-
//
|
|
143
|
-
//
|
|
90
|
+
// A street type and a post-directional, as in "Pennsylvania Avenue NW",
|
|
91
|
+
// form one suffix span because no post-directional tag exists.
|
|
144
92
|
const inner = splitLastWord(split.head);
|
|
145
93
|
const typeMatch = inner ? matchTrailingSuffix(inner.tail) : null;
|
|
146
94
|
if (!inner || !typeMatch) {
|
|
@@ -167,8 +115,6 @@ export function relabelGoldenStreetRow(row, options = {}) {
|
|
|
167
115
|
canonical = typeMatch.canonical;
|
|
168
116
|
}
|
|
169
117
|
}
|
|
170
|
-
// Leading directional → street_prefix, on whatever name survived the suffix move. Independent of the
|
|
171
|
-
// suffix branch, because "N Main" is as folded as "N Main St" is.
|
|
172
118
|
let prefix;
|
|
173
119
|
let prefixGap = "";
|
|
174
120
|
if (splitPrefix && !row.components.street_prefix) {
|
|
@@ -184,11 +130,9 @@ export function relabelGoldenStreetRow(row, options = {}) {
|
|
|
184
130
|
if (!suffix) {
|
|
185
131
|
rowClass = "split-prefix-only";
|
|
186
132
|
}
|
|
187
|
-
// The invariant this tool exists to keep: the spans plus the whitespace between them ARE the original
|
|
188
|
-
// span, byte for byte. Anything else means a token was rewritten.
|
|
189
133
|
const rebuilt = `${prefix ? prefix + prefixGap : ""}${name}${suffix ? suffixGap + suffix : ""}`;
|
|
190
134
|
if (rebuilt !== street) {
|
|
191
|
-
throw new Error(`golden-relabel: span reconstruction failed for ${
|
|
135
|
+
throw new Error(`golden-relabel: span reconstruction failed for ${stringifyJSON(street)}`);
|
|
192
136
|
}
|
|
193
137
|
if (canonical && NAME_PRONE_US_SUFFIXES.has(canonical)) {
|
|
194
138
|
flags.push({
|
|
@@ -200,17 +144,15 @@ export function relabelGoldenStreetRow(row, options = {}) {
|
|
|
200
144
|
if (suffix && venue && new RegExp(`(^|\\W)${escapeRegExp(suffix)}(\\W|$)`, "i").test(venue)) {
|
|
201
145
|
flags.push({
|
|
202
146
|
kind: "venue-context",
|
|
203
|
-
detail: `venue ${
|
|
147
|
+
detail: `venue ${stringifyJSON(venue)} also carries ${stringifyJSON(suffix)}`,
|
|
204
148
|
});
|
|
205
149
|
}
|
|
206
|
-
//
|
|
207
|
-
// "Valley Dr"
|
|
208
|
-
// on the first run). A name that is a bare DIRECTIONAL is: "East Rd" leaves `street: "East"`, which is
|
|
209
|
-
// a direction, not a name.
|
|
150
|
+
// Only a bare directional remainder is flagged, as in "East Rd"; a Pub-28 suffix
|
|
151
|
+
// word like "Valley Dr" is an ordinary street.
|
|
210
152
|
if (isStreetDirectionalToken(name)) {
|
|
211
153
|
flags.push({
|
|
212
154
|
kind: "remainder-is-affix",
|
|
213
|
-
detail: `street would become the bare directional ${
|
|
155
|
+
detail: `street would become the bare directional ${stringifyJSON(name)}`,
|
|
214
156
|
});
|
|
215
157
|
}
|
|
216
158
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row.js","sourceRoot":"","sources":["../../../../lib/tools/golden/relabel-street/row.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"row.js","sourceRoot":"","sources":["../../../../lib/tools/golden/relabel-street/row.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relabel-street.d.ts","sourceRoot":"","sources":["../../../lib/tools/golden/relabel-street.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,wCAAwC,CAAA;AACtD,cAAc,kCAAkC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relabel-street.js","sourceRoot":"","sources":["../../../lib/tools/golden/relabel-street.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,wCAAwC,CAAA;AACtD,cAAc,kCAAkC,CAAA"}
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
* CSV → SQLite ingest tool.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* The tool reads a CSV and samples rows to infer column types.
|
|
9
|
+
* It creates a SQLite table and imports all rows.
|
|
10
|
+
* It handles quoted fields, null-like values and duplicate column names.
|
|
10
11
|
*
|
|
11
|
-
*
|
|
12
|
+
* ## Usage
|
|
12
13
|
*
|
|
13
14
|
* ```sh
|
|
14
15
|
* mailwoman corpus ingest-csv \
|
|
@@ -17,15 +18,19 @@
|
|
|
17
18
|
* --output /data/corpus/sources/usgov-nppes/nppes.db
|
|
18
19
|
* ```
|
|
19
20
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
21
|
+
* Options:
|
|
22
|
+
* --input <path> Required CSV path
|
|
23
|
+
* --table <name> Table name (default: from filename)
|
|
24
|
+
* --output <path> DB path (default: input dir/<table>.db)
|
|
25
|
+
* --sample <n> Rows used for type inference (default: 100)
|
|
26
|
+
* --separator <char> Field delimiter (default: ,)
|
|
27
|
+
* --skip <n> Lines to skip before header (default: 0)
|
|
28
|
+
* --no-header Treat CSV as headerless (col_0, col_1, ...)
|
|
29
|
+
* --dry-run Print inferred schema, skip import
|
|
26
30
|
*/
|
|
27
31
|
/**
|
|
28
|
-
*
|
|
32
|
+
* Options for {@linkcode ingestCSV}.
|
|
33
|
+
* `table` and `output` default from `input`.
|
|
29
34
|
*/
|
|
30
35
|
export interface IngestCSVOptions {
|
|
31
36
|
input: string;
|
|
@@ -38,10 +43,9 @@ export interface IngestCSVOptions {
|
|
|
38
43
|
dryRun?: boolean;
|
|
39
44
|
}
|
|
40
45
|
/**
|
|
41
|
-
* Ingest a CSV into SQLite: infer column types from a sample, create the table, import the rows.
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* it.
|
|
46
|
+
* Ingest a CSV into SQLite: infer column types from a sample, create the table, import the rows.
|
|
47
|
+
*
|
|
48
|
+
* @throws When `input` does not exist.
|
|
45
49
|
*/
|
|
46
50
|
export declare function ingestCSV(options: IngestCSVOptions): Promise<void>;
|
|
47
51
|
//# sourceMappingURL=ingest-csv.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest-csv.d.ts","sourceRoot":"","sources":["../../lib/tools/ingest-csv.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ingest-csv.d.ts","sourceRoot":"","sources":["../../lib/tools/ingest-csv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAgTH;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBxE"}
|
package/out/tools/ingest-csv.js
CHANGED
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
* CSV → SQLite ingest tool.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* The tool reads a CSV and samples rows to infer column types.
|
|
9
|
+
* It creates a SQLite table and imports all rows.
|
|
10
|
+
* It handles quoted fields, null-like values and duplicate column names.
|
|
10
11
|
*
|
|
11
|
-
*
|
|
12
|
+
* ## Usage
|
|
12
13
|
*
|
|
13
14
|
* ```sh
|
|
14
15
|
* mailwoman corpus ingest-csv \
|
|
@@ -17,21 +18,25 @@
|
|
|
17
18
|
* --output /data/corpus/sources/usgov-nppes/nppes.db
|
|
18
19
|
* ```
|
|
19
20
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
21
|
+
* Options:
|
|
22
|
+
* --input <path> Required CSV path
|
|
23
|
+
* --table <name> Table name (default: from filename)
|
|
24
|
+
* --output <path> DB path (default: input dir/<table>.db)
|
|
25
|
+
* --sample <n> Rows used for type inference (default: 100)
|
|
26
|
+
* --separator <char> Field delimiter (default: ,)
|
|
27
|
+
* --skip <n> Lines to skip before header (default: 0)
|
|
28
|
+
* --no-header Treat CSV as headerless (col_0, col_1, ...)
|
|
29
|
+
* --dry-run Print inferred schema, skip import
|
|
26
30
|
*/
|
|
27
31
|
import { ByteFormatter } from "@mailwoman/core/fs/formatters";
|
|
28
32
|
import { tryStat, pathExists } from "@mailwoman/core/fs/readers";
|
|
29
33
|
import { makeDirectories, writeLocalJSONFile } from "@mailwoman/core/fs/writers";
|
|
30
|
-
import { basename, dirname, extname,
|
|
34
|
+
import { basename, dirname, extname, PathBuilder } from "path-ts";
|
|
31
35
|
import { CSVSpliterator } from "spliterator";
|
|
32
|
-
|
|
36
|
+
// #region Column name normalization
|
|
33
37
|
/**
|
|
34
|
-
* @deprecated
|
|
38
|
+
* @deprecated This helper may belong in core.
|
|
39
|
+
* Keep it here until then.
|
|
35
40
|
*/
|
|
36
41
|
function normalizeColumnName(raw) {
|
|
37
42
|
return (raw
|
|
@@ -85,17 +90,14 @@ function inferColumnType(samples) {
|
|
|
85
90
|
return { name: "", type, nullable: nullCount / total >= 0.5 };
|
|
86
91
|
}
|
|
87
92
|
async function runIngest(opts) {
|
|
88
|
-
//
|
|
89
|
-
//
|
|
90
|
-
// dropped here and the header row taken by hand. Quote handling is end-to-end (quoted delimiters, doubled quotes);
|
|
91
|
-
// `skipEmpty` drops blank lines that readline would have turned into all-null rows. The early `break` closes the
|
|
92
|
-
// file descriptor.
|
|
93
|
+
// Keep parser header handling off so `--skip` works predictably.
|
|
94
|
+
// We read the header row ourselves.
|
|
93
95
|
const rows = () => CSVSpliterator.fromAsync(opts.inputPath, {
|
|
94
96
|
header: false,
|
|
95
97
|
columnDelimiter: opts.separator,
|
|
96
98
|
drop: opts.skipLines,
|
|
97
99
|
});
|
|
98
|
-
// Read
|
|
100
|
+
// Read header + sample rows to infer schema.
|
|
99
101
|
process.stderr.write(`Reading ${opts.inputPath} for schema inference...\n`);
|
|
100
102
|
let headerRow = null;
|
|
101
103
|
const sampleRows = [];
|
|
@@ -114,18 +116,18 @@ async function runIngest(opts) {
|
|
|
114
116
|
if (!headerRow && opts.hasHeader) {
|
|
115
117
|
throw new Error("No header line found in CSV");
|
|
116
118
|
}
|
|
117
|
-
// Normalize and
|
|
119
|
+
// Normalize and dedupe column names.
|
|
118
120
|
let rawHeaders;
|
|
119
121
|
if (opts.hasHeader && headerRow) {
|
|
120
122
|
rawHeaders = headerRow;
|
|
121
123
|
}
|
|
122
124
|
else {
|
|
123
|
-
//
|
|
125
|
+
// No header: generate col_0, col_1, ...
|
|
124
126
|
const numCols = sampleRows[0]?.length ?? 0;
|
|
125
127
|
rawHeaders = Array.from({ length: numCols }, (_, i) => `col_${i}`);
|
|
126
128
|
}
|
|
127
129
|
const colNames = dedupColumns(rawHeaders.map(normalizeColumnName));
|
|
128
|
-
// Infer each column
|
|
130
|
+
// Infer each column type from samples.
|
|
129
131
|
const columns = colNames.map((name, i) => {
|
|
130
132
|
const samples = sampleRows.map((row) => {
|
|
131
133
|
const raw = row[i] ?? "";
|
|
@@ -135,10 +137,9 @@ async function runIngest(opts) {
|
|
|
135
137
|
info.name = name;
|
|
136
138
|
return info;
|
|
137
139
|
});
|
|
138
|
-
//
|
|
140
|
+
// Build CREATE TABLE and INSERT SQL.
|
|
139
141
|
const colDefs = columns.map((c) => `"${c.name}" ${c.type}`).join(",\n ");
|
|
140
|
-
// Raw
|
|
141
|
-
// so a Kysely builder loop would just wrap the same dynamic strings with ceremony and no type safety.
|
|
142
|
+
// Raw SQL is intentional: columns and types are dynamic at runtime.
|
|
142
143
|
const createTableSQL = `CREATE TABLE IF NOT EXISTS "${opts.tableName}" (\n ${colDefs}\n);`;
|
|
143
144
|
const tempCols = columns.map((c) => `"${c.name}"`).join(", ");
|
|
144
145
|
process.stderr.write(`\nSchema inferred from ${sampleRows.length} sample rows:\n`);
|
|
@@ -147,25 +148,21 @@ async function runIngest(opts) {
|
|
|
147
148
|
process.stderr.write("--dry-run: stopping before import\n");
|
|
148
149
|
return;
|
|
149
150
|
}
|
|
150
|
-
// Create
|
|
151
|
+
// Create database and import rows.
|
|
151
152
|
const { DatabaseClient } = await import("@mailwoman/sqlite/client");
|
|
152
153
|
await makeDirectories(dirname(opts.outputPath));
|
|
153
|
-
//
|
|
154
|
-
// types inferred from the CSV at runtime, so there is no table this file could name at compile time. Every write
|
|
155
|
-
// below goes through `exec`/`prepare` for the same reason.
|
|
154
|
+
// Empty schema type is intentional: table shape is runtime-generated.
|
|
156
155
|
using db = new DatabaseClient(opts.outputPath);
|
|
157
156
|
db.exec("PRAGMA journal_mode = OFF"); // faster for bulk import
|
|
158
157
|
db.exec("PRAGMA synchronous = OFF");
|
|
159
158
|
db.exec(createTableSQL);
|
|
160
|
-
//
|
|
161
|
-
// NULL normalization and type coercion.
|
|
162
|
-
// better-sqlite3 doesn't support .import natively, so we use a different approach:
|
|
163
|
-
// Read the CSV line-by-line and INSERT in a transaction.
|
|
159
|
+
// Insert line-by-line in batches (no native .import here).
|
|
164
160
|
process.stderr.write(`Importing rows...\n`);
|
|
165
161
|
const insertStmt = db.prepare(`INSERT INTO "${opts.tableName}" (${tempCols}) VALUES (${columns.map(() => "?").join(", ")})`);
|
|
166
162
|
let imported = 0;
|
|
167
163
|
let headerSkipped = false;
|
|
168
|
-
// node:sqlite has no
|
|
164
|
+
// node:sqlite has no transaction helper.
|
|
165
|
+
// The code uses BEGIN/COMMIT.
|
|
169
166
|
const doInsert = () => {
|
|
170
167
|
db.exec("BEGIN");
|
|
171
168
|
try {
|
|
@@ -197,7 +194,7 @@ async function runIngest(opts) {
|
|
|
197
194
|
return Number.parseFloat(v);
|
|
198
195
|
return v;
|
|
199
196
|
});
|
|
200
|
-
// Pad or
|
|
197
|
+
// Pad or trim to expected column count.
|
|
201
198
|
while (values.length < columns.length) {
|
|
202
199
|
values.push(null);
|
|
203
200
|
}
|
|
@@ -212,13 +209,13 @@ async function runIngest(opts) {
|
|
|
212
209
|
}
|
|
213
210
|
}
|
|
214
211
|
}
|
|
215
|
-
// Flush remaining
|
|
212
|
+
// Flush remaining rows.
|
|
216
213
|
if (batch.length) {
|
|
217
214
|
doInsert();
|
|
218
215
|
imported += batch.length;
|
|
219
216
|
}
|
|
220
217
|
process.stderr.write(` Imported ${imported.toLocaleString()} rows into "${opts.tableName}"\n`);
|
|
221
|
-
//
|
|
218
|
+
// Create a simple index on the first text column.
|
|
222
219
|
const firstTextCol = columns.find((c) => c.type === "TEXT");
|
|
223
220
|
if (firstTextCol) {
|
|
224
221
|
process.stderr.write(`Building index on "${firstTextCol.name}"...\n`);
|
|
@@ -238,10 +235,9 @@ async function runIngest(opts) {
|
|
|
238
235
|
process.stderr.write(`Done. ${imported.toLocaleString()} rows → ${opts.outputPath} (${ByteFormatter.formatIEC(stat.size)})\n`);
|
|
239
236
|
}
|
|
240
237
|
/**
|
|
241
|
-
* Ingest a CSV into SQLite: infer column types from a sample, create the table, import the rows.
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
* it.
|
|
238
|
+
* Ingest a CSV into SQLite: infer column types from a sample, create the table, import the rows.
|
|
239
|
+
*
|
|
240
|
+
* @throws When `input` does not exist.
|
|
245
241
|
*/
|
|
246
242
|
export async function ingestCSV(options) {
|
|
247
243
|
if (!(await pathExists(options.input))) {
|
|
@@ -251,7 +247,7 @@ export async function ingestCSV(options) {
|
|
|
251
247
|
await runIngest({
|
|
252
248
|
inputPath: options.input,
|
|
253
249
|
tableName: options.table ?? csvName.replaceAll(/[^a-zA-Z0-9_]/g, "_"),
|
|
254
|
-
outputPath: options.output ??
|
|
250
|
+
outputPath: options.output ?? PathBuilder.from(options.input).dirname()(`${csvName}.db`).toString(),
|
|
255
251
|
sampleSize: options.sample ?? 100,
|
|
256
252
|
separator: options.separator ?? ",",
|
|
257
253
|
skipLines: options.skip ?? 0,
|
|
@@ -259,5 +255,5 @@ export async function ingestCSV(options) {
|
|
|
259
255
|
dryRun: options.dryRun ?? false,
|
|
260
256
|
});
|
|
261
257
|
}
|
|
262
|
-
|
|
258
|
+
// #endregion
|
|
263
259
|
//# sourceMappingURL=ingest-csv.js.map
|