@mailwoman/corpus 9.1.0 → 9.3.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 +24 -24
- package/data/PROVENANCE.md +20 -7
- package/data/reviewed-ve-postcode-tuples.json +74 -0
- package/lib/adapters/ban/adapter.ts +190 -0
- package/lib/adapters/ban/street-decompose.ts +66 -0
- package/lib/adapters/fcc-bdc/adapter.ts +174 -0
- package/lib/adapters/geonames/adapter.ts +199 -0
- package/lib/adapters/geonames-postal/adapter.ts +122 -0
- package/lib/adapters/gnaf/adapter.ts +149 -0
- package/lib/adapters/gnaf/assemble.ts +225 -0
- package/lib/adapters/index.ts +153 -0
- package/lib/adapters/openaddresses/adapter.ts +251 -0
- package/lib/adapters/overture/adapter.ts +162 -0
- package/lib/adapters/state-hi-schools/adapter.ts +170 -0
- package/lib/adapters/state-hi-schools/workbook.ts +35 -0
- package/lib/adapters/state-ia-contractors/adapter.ts +144 -0
- package/lib/adapters/state-ny-notaries/adapter.ts +141 -0
- package/lib/adapters/state-tx-notaries/adapter.ts +157 -0
- package/lib/adapters/synth-po-box/adapter.ts +204 -0
- package/lib/adapters/tiger/adapter.ts +252 -0
- package/lib/adapters/tiger/street-decompose.ts +83 -0
- package/lib/adapters/usgov-hrsa-fqhc/adapter.ts +167 -0
- package/lib/adapters/usgov-imls-pls/adapter.ts +143 -0
- package/lib/adapters/usgov-irs-bmf/adapter.ts +151 -0
- package/lib/adapters/usgov-nad/adapter.ts +334 -0
- package/lib/adapters/usgov-nppes/adapter.ts +151 -0
- package/lib/adapters/usgov-samhsa-treatment-locator/adapter.ts +193 -0
- package/lib/adapters/utils/index.ts +307 -0
- package/lib/adapters/wof-admin-jp/adapter.ts +214 -0
- package/lib/adapters/wof-admin-json/adapter.ts +231 -0
- package/lib/adapters/wof-json-rows.ts +129 -0
- package/lib/adapters/wof-postalcode-json/adapter.ts +176 -0
- package/lib/build.ts +378 -0
- package/lib/env.ts +50 -0
- package/lib/index.ts +13 -0
- package/lib/name-prone-us-suffixes.ts +12 -0
- package/lib/recipes/anchor-absorption.ts +101 -0
- package/lib/recipes/bare-country.ts +95 -0
- package/lib/recipes/boundary-stress.ts +100 -0
- package/lib/recipes/cn-organizational-units.ts +199 -0
- package/lib/recipes/country-balanced.ts +509 -0
- package/lib/recipes/cz-pcfirst-preposition.ts +111 -0
- package/lib/recipes/fr-admin-split.ts +242 -0
- package/lib/recipes/fr-bare-street.ts +170 -0
- package/lib/recipes/fr-fragment.ts +333 -0
- package/lib/recipes/fr-lieudit.ts +301 -0
- package/lib/recipes/fr-order.ts +245 -0
- package/lib/recipes/german.ts +359 -0
- package/lib/recipes/house-venue.ts +92 -0
- package/lib/recipes/index.ts +97 -0
- package/lib/recipes/intersection.ts +618 -0
- package/lib/recipes/locale.ts +599 -0
- package/lib/recipes/nl-postcode.ts +115 -0
- package/lib/recipes/no-fragment.ts +219 -0
- package/lib/recipes/no-street-led.ts +141 -0
- package/lib/recipes/no-street.ts +90 -0
- package/lib/recipes/po-box-cedex.ts +976 -0
- package/lib/recipes/po-box.ts +123 -0
- package/lib/recipes/reviewed-postcode-tail.ts +190 -0
- package/lib/recipes/scaffold.ts +469 -0
- package/lib/recipes/si-bare-village.ts +97 -0
- package/lib/recipes/street-affix.ts +804 -0
- package/lib/recipes/street-bare.ts +100 -0
- package/lib/recipes/street.ts +81 -0
- package/lib/recipes/sub-venue-sources.ts +877 -0
- package/lib/recipes/sub-venue.ts +997 -0
- package/lib/recipes/trailing-region.ts +183 -0
- package/lib/recipes/unit.ts +304 -0
- package/lib/runner.ts +312 -0
- package/lib/synthesizers/anchor-absorption.ts +288 -0
- package/lib/synthesizers/boundary-stress.ts +532 -0
- package/lib/synthesizers/german.ts +260 -0
- package/lib/synthesizers/house-venue.ts +308 -0
- package/lib/synthesizers/intersection.ts +233 -0
- package/lib/synthesizers/no-street.ts +327 -0
- package/lib/synthesizers/po-box.ts +323 -0
- package/lib/synthesizers/street.ts +269 -0
- package/lib/synthesizers/utils.ts +993 -0
- package/lib/test-kit/corpus-recipe.ts +86 -0
- package/lib/test-kit/index.ts +100 -0
- package/lib/tools/align-slice.ts +68 -0
- package/lib/tools/audit.ts +403 -0
- package/lib/tools/corpus-stats.ts +136 -0
- package/lib/tools/fetch/ban.ts +289 -0
- package/lib/tools/fetch/download.ts +262 -0
- package/lib/tools/fetch/geonames-dump.ts +257 -0
- package/lib/tools/fetch/geonames-postal.ts +180 -0
- package/lib/tools/fetch/hrsa.ts +59 -0
- package/lib/tools/fetch/imls-pls.ts +149 -0
- package/lib/tools/fetch/index.ts +147 -0
- package/lib/tools/fetch/nad.ts +341 -0
- package/lib/tools/fetch/nppes.ts +165 -0
- package/lib/tools/fetch/openaddresses.ts +347 -0
- package/lib/tools/fetch/ourairports.ts +170 -0
- package/lib/tools/fetch/ppd.ts +121 -0
- package/lib/tools/fetch/state-hi-schools.ts +161 -0
- package/lib/tools/fetch/state-sources.ts +146 -0
- package/lib/tools/fetch/tiger-full.ts +308 -0
- package/lib/tools/fetch/wikidata-subvenue.ts +384 -0
- package/lib/tools/golden-expand.ts +574 -0
- package/lib/tools/golden-promote.ts +337 -0
- package/lib/tools/golden-relabel-street.ts +683 -0
- package/lib/tools/index.ts +28 -0
- package/lib/tools/ingest-csv.ts +378 -0
- package/lib/tools/jsonl-to-parquet.ts +207 -0
- package/lib/tools/lint-slice-vocab.ts +388 -0
- package/lib/tools/lint-slice.ts +496 -0
- package/lib/tools/overlay-manifest.ts +148 -0
- package/lib/tools/overture-subvenue.ts +209 -0
- package/lib/tools/postcode-triples.ts +363 -0
- package/lib/tools/slice-kryptonite.ts +137 -0
- package/lib/tools/slice-translit.ts +218 -0
- package/lib/tools/sub-venue/harvest.ts +234 -0
- package/lib/tools/sub-venue/head-nouns.ts +245 -0
- package/lib/tools/sub-venue/surfaces.ts +95 -0
- package/lib/tools/sub-venue/table.ts +281 -0
- package/lib/tools/sub-venue/wikidata.ts +85 -0
- package/lib/tools/sub-venue-lexicon.ts +429 -0
- package/lib/tools/sub-venue-promotions.ts +330 -0
- package/lib/types.ts +247 -0
- package/lib/utils/align.ts +330 -0
- package/lib/utils/golden.ts +189 -0
- package/lib/utils/index.ts +14 -0
- package/lib/utils/license.ts +50 -0
- package/lib/utils/parquet.ts +582 -0
- package/lib/utils/slice-stats.ts +95 -0
- package/lib/utils/split.ts +279 -0
- package/lib/utils/tokenize.ts +120 -0
- package/lib/utils/wof-json.ts +247 -0
- package/out/adapters/ban/adapter.d.ts +44 -0
- package/out/adapters/ban/adapter.d.ts.map +1 -0
- package/out/adapters/ban/adapter.js +149 -0
- package/out/adapters/ban/adapter.js.map +1 -0
- package/out/adapters/ban/street-decompose.d.ts.map +1 -0
- package/out/adapters/ban/street-decompose.js +51 -0
- package/out/adapters/ban/street-decompose.js.map +1 -0
- package/out/adapters/fcc-bdc/adapter.d.ts +68 -0
- package/out/adapters/fcc-bdc/adapter.d.ts.map +1 -0
- package/out/adapters/fcc-bdc/adapter.js +144 -0
- package/out/adapters/fcc-bdc/adapter.js.map +1 -0
- package/out/adapters/geonames/adapter.d.ts +46 -0
- package/out/adapters/geonames/adapter.d.ts.map +1 -0
- package/out/adapters/geonames/adapter.js +176 -0
- package/out/adapters/geonames/adapter.js.map +1 -0
- package/out/adapters/geonames-postal/adapter.d.ts +54 -0
- package/out/adapters/geonames-postal/adapter.d.ts.map +1 -0
- package/out/adapters/geonames-postal/adapter.js +107 -0
- package/out/adapters/geonames-postal/adapter.js.map +1 -0
- package/out/adapters/gnaf/adapter.d.ts +49 -0
- package/out/adapters/gnaf/adapter.d.ts.map +1 -0
- package/out/adapters/gnaf/adapter.js +124 -0
- package/out/adapters/gnaf/adapter.js.map +1 -0
- package/out/adapters/gnaf/assemble.d.ts +65 -0
- package/out/adapters/gnaf/assemble.d.ts.map +1 -0
- package/out/adapters/gnaf/assemble.js +154 -0
- package/out/adapters/gnaf/assemble.js.map +1 -0
- package/out/adapters/index.d.ts +51 -0
- package/out/adapters/index.d.ts.map +1 -0
- package/out/adapters/index.js +95 -0
- package/out/adapters/index.js.map +1 -0
- package/out/adapters/openaddresses/adapter.d.ts +72 -0
- package/out/adapters/openaddresses/adapter.d.ts.map +1 -0
- package/out/adapters/openaddresses/adapter.js +186 -0
- package/out/adapters/openaddresses/adapter.js.map +1 -0
- package/out/adapters/overture/adapter.d.ts +48 -0
- package/out/adapters/overture/adapter.d.ts.map +1 -0
- package/out/adapters/overture/adapter.js +125 -0
- package/out/adapters/overture/adapter.js.map +1 -0
- package/out/adapters/state-hi-schools/adapter.d.ts +46 -0
- package/out/adapters/state-hi-schools/adapter.d.ts.map +1 -0
- package/out/adapters/state-hi-schools/adapter.js +145 -0
- package/out/adapters/state-hi-schools/adapter.js.map +1 -0
- package/out/adapters/state-hi-schools/workbook.d.ts +29 -0
- package/out/adapters/state-hi-schools/workbook.d.ts.map +1 -0
- package/out/adapters/state-hi-schools/workbook.js +20 -0
- package/out/adapters/state-hi-schools/workbook.js.map +1 -0
- package/out/adapters/state-ia-contractors/adapter.d.ts +34 -0
- package/out/adapters/state-ia-contractors/adapter.d.ts.map +1 -0
- package/out/adapters/state-ia-contractors/adapter.js +111 -0
- package/out/adapters/state-ia-contractors/adapter.js.map +1 -0
- package/out/adapters/state-ny-notaries/adapter.d.ts +32 -0
- package/out/adapters/state-ny-notaries/adapter.d.ts.map +1 -0
- package/out/adapters/state-ny-notaries/adapter.js +119 -0
- package/out/adapters/state-ny-notaries/adapter.js.map +1 -0
- package/out/adapters/state-tx-notaries/adapter.d.ts +33 -0
- package/out/adapters/state-tx-notaries/adapter.d.ts.map +1 -0
- package/out/adapters/state-tx-notaries/adapter.js +125 -0
- package/out/adapters/state-tx-notaries/adapter.js.map +1 -0
- package/out/adapters/synth-po-box/adapter.d.ts +67 -0
- package/out/adapters/synth-po-box/adapter.d.ts.map +1 -0
- package/out/adapters/synth-po-box/adapter.js +140 -0
- package/out/adapters/synth-po-box/adapter.js.map +1 -0
- package/out/adapters/tiger/adapter.d.ts +55 -0
- package/out/adapters/tiger/adapter.d.ts.map +1 -0
- package/out/adapters/tiger/adapter.js +201 -0
- package/out/adapters/tiger/adapter.js.map +1 -0
- package/out/adapters/tiger/street-decompose.d.ts.map +1 -0
- package/out/adapters/tiger/street-decompose.js +68 -0
- package/out/adapters/tiger/street-decompose.js.map +1 -0
- package/out/adapters/usgov-hrsa-fqhc/adapter.d.ts +56 -0
- package/out/adapters/usgov-hrsa-fqhc/adapter.d.ts.map +1 -0
- package/out/adapters/usgov-hrsa-fqhc/adapter.js +132 -0
- package/out/adapters/usgov-hrsa-fqhc/adapter.js.map +1 -0
- package/out/adapters/usgov-imls-pls/adapter.d.ts +36 -0
- package/out/adapters/usgov-imls-pls/adapter.d.ts.map +1 -0
- package/out/adapters/usgov-imls-pls/adapter.js +114 -0
- package/out/adapters/usgov-imls-pls/adapter.js.map +1 -0
- package/out/adapters/usgov-irs-bmf/adapter.d.ts +37 -0
- package/out/adapters/usgov-irs-bmf/adapter.d.ts.map +1 -0
- package/out/adapters/usgov-irs-bmf/adapter.js +120 -0
- package/out/adapters/usgov-irs-bmf/adapter.js.map +1 -0
- package/out/adapters/usgov-nad/adapter.d.ts +48 -0
- package/out/adapters/usgov-nad/adapter.d.ts.map +1 -0
- package/out/adapters/usgov-nad/adapter.js +249 -0
- package/out/adapters/usgov-nad/adapter.js.map +1 -0
- package/out/adapters/usgov-nppes/adapter.d.ts +39 -0
- package/out/adapters/usgov-nppes/adapter.d.ts.map +1 -0
- package/out/adapters/usgov-nppes/adapter.js +118 -0
- package/out/adapters/usgov-nppes/adapter.js.map +1 -0
- package/out/adapters/usgov-samhsa-treatment-locator/adapter.d.ts +46 -0
- package/out/adapters/usgov-samhsa-treatment-locator/adapter.d.ts.map +1 -0
- package/out/adapters/usgov-samhsa-treatment-locator/adapter.js +154 -0
- package/out/adapters/usgov-samhsa-treatment-locator/adapter.js.map +1 -0
- package/out/adapters/utils/index.d.ts +191 -0
- package/out/adapters/utils/index.d.ts.map +1 -0
- package/out/adapters/utils/index.js +206 -0
- package/out/adapters/utils/index.js.map +1 -0
- package/out/adapters/wof-admin-jp/adapter.d.ts +65 -0
- package/out/adapters/wof-admin-jp/adapter.d.ts.map +1 -0
- package/out/adapters/wof-admin-jp/adapter.js +161 -0
- package/out/adapters/wof-admin-jp/adapter.js.map +1 -0
- package/out/adapters/wof-admin-json/adapter.d.ts +79 -0
- package/out/adapters/wof-admin-json/adapter.d.ts.map +1 -0
- package/out/adapters/wof-admin-json/adapter.js +197 -0
- package/out/adapters/wof-admin-json/adapter.js.map +1 -0
- package/out/adapters/wof-json-rows.d.ts +62 -0
- package/out/adapters/wof-json-rows.d.ts.map +1 -0
- package/out/adapters/wof-json-rows.js +83 -0
- package/out/adapters/wof-json-rows.js.map +1 -0
- package/out/adapters/wof-postalcode-json/adapter.d.ts +65 -0
- package/out/adapters/wof-postalcode-json/adapter.d.ts.map +1 -0
- package/out/adapters/wof-postalcode-json/adapter.js +151 -0
- package/out/adapters/wof-postalcode-json/adapter.js.map +1 -0
- package/out/build.d.ts +132 -0
- package/out/build.d.ts.map +1 -0
- package/out/build.js +245 -0
- package/out/build.js.map +1 -0
- package/out/codex/us-fips-state.d.ts.map +1 -0
- package/out/codex/us-fips-state.js.map +1 -0
- package/out/env.d.ts +46 -0
- package/out/env.d.ts.map +1 -0
- package/out/env.js +46 -0
- package/out/env.js.map +1 -0
- package/out/index.d.ts +13 -0
- package/out/index.d.ts.map +1 -0
- package/out/index.js +13 -0
- package/out/index.js.map +1 -0
- package/out/name-prone-us-suffixes.d.ts +12 -0
- package/out/name-prone-us-suffixes.d.ts.map +1 -0
- package/out/name-prone-us-suffixes.js +12 -0
- package/out/name-prone-us-suffixes.js.map +1 -0
- package/out/recipes/anchor-absorption.d.ts +20 -0
- package/out/recipes/anchor-absorption.d.ts.map +1 -0
- package/out/recipes/anchor-absorption.js +81 -0
- package/out/recipes/anchor-absorption.js.map +1 -0
- package/out/recipes/bare-country.d.ts +25 -0
- package/out/recipes/bare-country.d.ts.map +1 -0
- package/out/recipes/bare-country.js +87 -0
- package/out/recipes/bare-country.js.map +1 -0
- package/out/recipes/boundary-stress.d.ts +20 -0
- package/out/recipes/boundary-stress.d.ts.map +1 -0
- package/out/recipes/boundary-stress.js +83 -0
- package/out/recipes/boundary-stress.js.map +1 -0
- package/out/recipes/cn-organizational-units.d.ts +36 -0
- package/out/recipes/cn-organizational-units.d.ts.map +1 -0
- package/out/recipes/cn-organizational-units.js +159 -0
- package/out/recipes/cn-organizational-units.js.map +1 -0
- package/out/recipes/country-balanced.d.ts +32 -0
- package/out/recipes/country-balanced.d.ts.map +1 -0
- package/out/recipes/country-balanced.js +393 -0
- package/out/recipes/country-balanced.js.map +1 -0
- package/out/recipes/cz-pcfirst-preposition.d.ts +22 -0
- package/out/recipes/cz-pcfirst-preposition.d.ts.map +1 -0
- package/out/recipes/cz-pcfirst-preposition.js +100 -0
- package/out/recipes/cz-pcfirst-preposition.js.map +1 -0
- package/out/recipes/fr-admin-split.d.ts +38 -0
- package/out/recipes/fr-admin-split.d.ts.map +1 -0
- package/out/recipes/fr-admin-split.js +192 -0
- package/out/recipes/fr-admin-split.js.map +1 -0
- package/out/recipes/fr-bare-street.d.ts +28 -0
- package/out/recipes/fr-bare-street.d.ts.map +1 -0
- package/out/recipes/fr-bare-street.js +143 -0
- package/out/recipes/fr-bare-street.js.map +1 -0
- package/out/recipes/fr-fragment.d.ts +77 -0
- package/out/recipes/fr-fragment.d.ts.map +1 -0
- package/out/recipes/fr-fragment.js +276 -0
- package/out/recipes/fr-fragment.js.map +1 -0
- package/out/recipes/fr-lieudit.d.ts +32 -0
- package/out/recipes/fr-lieudit.d.ts.map +1 -0
- package/out/recipes/fr-lieudit.js +227 -0
- package/out/recipes/fr-lieudit.js.map +1 -0
- package/out/recipes/fr-order.d.ts +38 -0
- package/out/recipes/fr-order.d.ts.map +1 -0
- package/out/recipes/fr-order.js +197 -0
- package/out/recipes/fr-order.js.map +1 -0
- package/out/recipes/german.d.ts +44 -0
- package/out/recipes/german.d.ts.map +1 -0
- package/out/recipes/german.js +288 -0
- package/out/recipes/german.js.map +1 -0
- package/out/recipes/house-venue.d.ts +18 -0
- package/out/recipes/house-venue.d.ts.map +1 -0
- package/out/recipes/house-venue.js +73 -0
- package/out/recipes/house-venue.js.map +1 -0
- package/out/recipes/index.d.ts +24 -0
- package/out/recipes/index.d.ts.map +1 -0
- package/out/recipes/index.js +91 -0
- package/out/recipes/index.js.map +1 -0
- package/out/recipes/intersection.d.ts +42 -0
- package/out/recipes/intersection.d.ts.map +1 -0
- package/out/recipes/intersection.js +452 -0
- package/out/recipes/intersection.js.map +1 -0
- package/out/recipes/locale.d.ts +136 -0
- package/out/recipes/locale.d.ts.map +1 -0
- package/out/recipes/locale.js +460 -0
- package/out/recipes/locale.js.map +1 -0
- package/out/recipes/nl-postcode.d.ts +26 -0
- package/out/recipes/nl-postcode.d.ts.map +1 -0
- package/out/recipes/nl-postcode.js +102 -0
- package/out/recipes/nl-postcode.js.map +1 -0
- package/out/recipes/no-fragment.d.ts +43 -0
- package/out/recipes/no-fragment.d.ts.map +1 -0
- package/out/recipes/no-fragment.js +182 -0
- package/out/recipes/no-fragment.js.map +1 -0
- package/out/recipes/no-street-led.d.ts +24 -0
- package/out/recipes/no-street-led.d.ts.map +1 -0
- package/out/recipes/no-street-led.js +113 -0
- package/out/recipes/no-street-led.js.map +1 -0
- package/out/recipes/no-street.d.ts +18 -0
- package/out/recipes/no-street.d.ts.map +1 -0
- package/out/recipes/no-street.js +71 -0
- package/out/recipes/no-street.js.map +1 -0
- package/out/recipes/po-box-cedex.d.ts +38 -0
- package/out/recipes/po-box-cedex.d.ts.map +1 -0
- package/out/recipes/po-box-cedex.js +767 -0
- package/out/recipes/po-box-cedex.js.map +1 -0
- package/out/recipes/po-box.d.ts +17 -0
- package/out/recipes/po-box.d.ts.map +1 -0
- package/out/recipes/po-box.js +100 -0
- package/out/recipes/po-box.js.map +1 -0
- package/out/recipes/reviewed-postcode-tail.d.ts +47 -0
- package/out/recipes/reviewed-postcode-tail.d.ts.map +1 -0
- package/out/recipes/reviewed-postcode-tail.js +125 -0
- package/out/recipes/reviewed-postcode-tail.js.map +1 -0
- package/out/recipes/scaffold.d.ts +324 -0
- package/out/recipes/scaffold.d.ts.map +1 -0
- package/out/recipes/scaffold.js +186 -0
- package/out/recipes/scaffold.js.map +1 -0
- package/out/recipes/si-bare-village.d.ts +32 -0
- package/out/recipes/si-bare-village.d.ts.map +1 -0
- package/out/recipes/si-bare-village.js +88 -0
- package/out/recipes/si-bare-village.js.map +1 -0
- package/out/recipes/street-affix.d.ts +89 -0
- package/out/recipes/street-affix.d.ts.map +1 -0
- package/out/recipes/street-affix.js +563 -0
- package/out/recipes/street-affix.js.map +1 -0
- package/out/recipes/street-bare.d.ts +25 -0
- package/out/recipes/street-bare.d.ts.map +1 -0
- package/out/recipes/street-bare.js +86 -0
- package/out/recipes/street-bare.js.map +1 -0
- package/out/recipes/street.d.ts +15 -0
- package/out/recipes/street.d.ts.map +1 -0
- package/out/recipes/street.js +69 -0
- package/out/recipes/street.js.map +1 -0
- package/out/recipes/sub-venue-sources.d.ts +229 -0
- package/out/recipes/sub-venue-sources.d.ts.map +1 -0
- package/out/recipes/sub-venue-sources.js +653 -0
- package/out/recipes/sub-venue-sources.js.map +1 -0
- package/out/recipes/sub-venue.d.ts +269 -0
- package/out/recipes/sub-venue.d.ts.map +1 -0
- package/out/recipes/sub-venue.js +725 -0
- package/out/recipes/sub-venue.js.map +1 -0
- package/out/recipes/trailing-region.d.ts +74 -0
- package/out/recipes/trailing-region.d.ts.map +1 -0
- package/out/recipes/trailing-region.js +157 -0
- package/out/recipes/trailing-region.js.map +1 -0
- package/out/recipes/unit.d.ts +29 -0
- package/out/recipes/unit.d.ts.map +1 -0
- package/out/recipes/unit.js +230 -0
- package/out/recipes/unit.js.map +1 -0
- package/out/runner.d.ts +130 -0
- package/out/runner.d.ts.map +1 -0
- package/out/runner.js +185 -0
- package/out/runner.js.map +1 -0
- package/out/synthesizers/anchor-absorption.d.ts +63 -0
- package/out/synthesizers/anchor-absorption.d.ts.map +1 -0
- package/out/synthesizers/anchor-absorption.js +221 -0
- package/out/synthesizers/anchor-absorption.js.map +1 -0
- package/out/synthesizers/boundary-stress.d.ts +78 -0
- package/out/synthesizers/boundary-stress.d.ts.map +1 -0
- package/out/synthesizers/boundary-stress.js +455 -0
- package/out/synthesizers/boundary-stress.js.map +1 -0
- package/out/synthesizers/german.d.ts +115 -0
- package/out/synthesizers/german.d.ts.map +1 -0
- package/out/synthesizers/german.js +149 -0
- package/out/synthesizers/german.js.map +1 -0
- package/out/synthesizers/house-venue.d.ts +56 -0
- package/out/synthesizers/house-venue.d.ts.map +1 -0
- package/out/synthesizers/house-venue.js +247 -0
- package/out/synthesizers/house-venue.js.map +1 -0
- package/out/synthesizers/intersection.d.ts +52 -0
- package/out/synthesizers/intersection.d.ts.map +1 -0
- package/out/synthesizers/intersection.js +175 -0
- package/out/synthesizers/intersection.js.map +1 -0
- package/out/synthesizers/no-street.d.ts +72 -0
- package/out/synthesizers/no-street.d.ts.map +1 -0
- package/out/synthesizers/no-street.js +262 -0
- package/out/synthesizers/no-street.js.map +1 -0
- package/out/synthesizers/po-box.d.ts +108 -0
- package/out/synthesizers/po-box.d.ts.map +1 -0
- package/out/synthesizers/po-box.js +250 -0
- package/out/synthesizers/po-box.js.map +1 -0
- package/out/synthesizers/street.d.ts +54 -0
- package/out/synthesizers/street.d.ts.map +1 -0
- package/out/synthesizers/street.js +218 -0
- package/out/synthesizers/street.js.map +1 -0
- package/out/synthesizers/utils.d.ts +241 -0
- package/out/synthesizers/utils.d.ts.map +1 -0
- package/out/synthesizers/utils.js +776 -0
- package/out/synthesizers/utils.js.map +1 -0
- package/out/test-kit/corpus-recipe.d.ts +59 -0
- package/out/test-kit/corpus-recipe.d.ts.map +1 -0
- package/out/test-kit/corpus-recipe.js +39 -0
- package/out/test-kit/corpus-recipe.js.map +1 -0
- package/out/test-kit/index.d.ts +48 -0
- package/out/test-kit/index.d.ts.map +1 -0
- package/out/test-kit/index.js +78 -0
- package/out/test-kit/index.js.map +1 -0
- package/out/tools/align-slice.d.ts +7 -0
- package/out/tools/align-slice.d.ts.map +1 -0
- package/out/tools/align-slice.js +55 -0
- package/out/tools/align-slice.js.map +1 -0
- package/out/tools/audit.d.ts +29 -0
- package/out/tools/audit.d.ts.map +1 -0
- package/out/tools/audit.js +282 -0
- package/out/tools/audit.js.map +1 -0
- package/out/tools/corpus-stats.d.ts +44 -0
- package/out/tools/corpus-stats.d.ts.map +1 -0
- package/out/tools/corpus-stats.js +102 -0
- package/out/tools/corpus-stats.js.map +1 -0
- package/out/tools/fetch/ban.d.ts +31 -0
- package/out/tools/fetch/ban.d.ts.map +1 -0
- package/out/tools/fetch/ban.js +239 -0
- package/out/tools/fetch/ban.js.map +1 -0
- package/out/tools/fetch/download.d.ts +117 -0
- package/out/tools/fetch/download.d.ts.map +1 -0
- package/out/tools/fetch/download.js +160 -0
- package/out/tools/fetch/download.js.map +1 -0
- package/out/tools/fetch/geonames-dump.d.ts +91 -0
- package/out/tools/fetch/geonames-dump.d.ts.map +1 -0
- package/out/tools/fetch/geonames-dump.js +171 -0
- package/out/tools/fetch/geonames-dump.js.map +1 -0
- package/out/tools/fetch/geonames-postal.d.ts +76 -0
- package/out/tools/fetch/geonames-postal.d.ts.map +1 -0
- package/out/tools/fetch/geonames-postal.js +126 -0
- package/out/tools/fetch/geonames-postal.js.map +1 -0
- package/out/tools/fetch/hrsa.d.ts +18 -0
- package/out/tools/fetch/hrsa.d.ts.map +1 -0
- package/out/tools/fetch/hrsa.js +46 -0
- package/out/tools/fetch/hrsa.js.map +1 -0
- package/out/tools/fetch/imls-pls.d.ts +25 -0
- package/out/tools/fetch/imls-pls.d.ts.map +1 -0
- package/out/tools/fetch/imls-pls.js +108 -0
- package/out/tools/fetch/imls-pls.js.map +1 -0
- package/out/tools/fetch/index.d.ts +144 -0
- package/out/tools/fetch/index.d.ts.map +1 -0
- package/out/tools/fetch/index.js +143 -0
- package/out/tools/fetch/index.js.map +1 -0
- package/out/tools/fetch/nad.d.ts +70 -0
- package/out/tools/fetch/nad.d.ts.map +1 -0
- package/out/tools/fetch/nad.js +234 -0
- package/out/tools/fetch/nad.js.map +1 -0
- package/out/tools/fetch/nppes.d.ts +26 -0
- package/out/tools/fetch/nppes.d.ts.map +1 -0
- package/out/tools/fetch/nppes.js +126 -0
- package/out/tools/fetch/nppes.js.map +1 -0
- package/out/tools/fetch/openaddresses.d.ts +9 -0
- package/out/tools/fetch/openaddresses.d.ts.map +1 -0
- package/out/tools/fetch/openaddresses.js +279 -0
- package/out/tools/fetch/openaddresses.js.map +1 -0
- package/out/tools/fetch/ourairports.d.ts +45 -0
- package/out/tools/fetch/ourairports.d.ts.map +1 -0
- package/out/tools/fetch/ourairports.js +128 -0
- package/out/tools/fetch/ourairports.js.map +1 -0
- package/out/tools/fetch/ppd.d.ts +14 -0
- package/out/tools/fetch/ppd.d.ts.map +1 -0
- package/out/tools/fetch/ppd.js +85 -0
- package/out/tools/fetch/ppd.js.map +1 -0
- package/out/tools/fetch/state-hi-schools.d.ts +26 -0
- package/out/tools/fetch/state-hi-schools.d.ts.map +1 -0
- package/out/tools/fetch/state-hi-schools.js +112 -0
- package/out/tools/fetch/state-hi-schools.js.map +1 -0
- package/out/tools/fetch/state-sources.d.ts +26 -0
- package/out/tools/fetch/state-sources.d.ts.map +1 -0
- package/out/tools/fetch/state-sources.js +111 -0
- package/out/tools/fetch/state-sources.js.map +1 -0
- package/out/tools/fetch/tiger-full.d.ts +22 -0
- package/out/tools/fetch/tiger-full.d.ts.map +1 -0
- package/out/tools/fetch/tiger-full.js +217 -0
- package/out/tools/fetch/tiger-full.js.map +1 -0
- package/out/tools/fetch/wikidata-subvenue.d.ts +171 -0
- package/out/tools/fetch/wikidata-subvenue.d.ts.map +1 -0
- package/out/tools/fetch/wikidata-subvenue.js +274 -0
- package/out/tools/fetch/wikidata-subvenue.js.map +1 -0
- package/out/tools/gb-title-case.d.ts.map +1 -0
- package/out/tools/gb-title-case.js.map +1 -0
- package/out/tools/golden-expand.d.ts +90 -0
- package/out/tools/golden-expand.d.ts.map +1 -0
- package/out/tools/golden-expand.js +406 -0
- package/out/tools/golden-expand.js.map +1 -0
- package/out/tools/golden-promote.d.ts.map +1 -0
- package/out/tools/golden-promote.js +240 -0
- package/out/tools/golden-promote.js.map +1 -0
- package/out/tools/golden-relabel-street.d.ts +196 -0
- package/out/tools/golden-relabel-street.d.ts.map +1 -0
- package/out/tools/golden-relabel-street.js +440 -0
- package/out/tools/golden-relabel-street.js.map +1 -0
- package/out/tools/index.d.ts +28 -0
- package/out/tools/index.d.ts.map +1 -0
- package/out/tools/index.js +28 -0
- package/out/tools/index.js.map +1 -0
- package/out/tools/ingest-csv.d.ts.map +1 -0
- package/out/tools/ingest-csv.js +265 -0
- package/out/tools/ingest-csv.js.map +1 -0
- package/out/tools/jsonl-to-parquet.d.ts +61 -0
- package/out/tools/jsonl-to-parquet.d.ts.map +1 -0
- package/out/tools/jsonl-to-parquet.js +150 -0
- package/out/tools/jsonl-to-parquet.js.map +1 -0
- package/out/tools/lint-slice-vocab.d.ts +90 -0
- package/out/tools/lint-slice-vocab.d.ts.map +1 -0
- package/out/tools/lint-slice-vocab.js +267 -0
- package/out/tools/lint-slice-vocab.js.map +1 -0
- package/out/tools/lint-slice.d.ts +93 -0
- package/out/tools/lint-slice.d.ts.map +1 -0
- package/out/tools/lint-slice.js +322 -0
- package/out/tools/lint-slice.js.map +1 -0
- package/out/tools/overlay-manifest.d.ts +39 -0
- package/out/tools/overlay-manifest.d.ts.map +1 -0
- package/out/tools/overlay-manifest.js +90 -0
- package/out/tools/overlay-manifest.js.map +1 -0
- package/out/tools/overture-subvenue.d.ts +112 -0
- package/out/tools/overture-subvenue.d.ts.map +1 -0
- package/out/tools/overture-subvenue.js +139 -0
- package/out/tools/overture-subvenue.js.map +1 -0
- package/out/tools/postcode-triples.d.ts +174 -0
- package/out/tools/postcode-triples.d.ts.map +1 -0
- package/out/tools/postcode-triples.js +292 -0
- package/out/tools/postcode-triples.js.map +1 -0
- package/out/tools/slice-kryptonite.d.ts +32 -0
- package/out/tools/slice-kryptonite.d.ts.map +1 -0
- package/out/tools/slice-kryptonite.js +99 -0
- package/out/tools/slice-kryptonite.js.map +1 -0
- package/out/tools/slice-translit.d.ts +51 -0
- package/out/tools/slice-translit.d.ts.map +1 -0
- package/out/tools/slice-translit.js +166 -0
- package/out/tools/slice-translit.js.map +1 -0
- package/out/tools/sub-venue/harvest.d.ts +100 -0
- package/out/tools/sub-venue/harvest.d.ts.map +1 -0
- package/out/tools/sub-venue/harvest.js +168 -0
- package/out/tools/sub-venue/harvest.js.map +1 -0
- package/out/tools/sub-venue/head-nouns.d.ts +50 -0
- package/out/tools/sub-venue/head-nouns.d.ts.map +1 -0
- package/out/tools/sub-venue/head-nouns.js +213 -0
- package/out/tools/sub-venue/head-nouns.js.map +1 -0
- package/out/tools/sub-venue/surfaces.d.ts +45 -0
- package/out/tools/sub-venue/surfaces.d.ts.map +1 -0
- package/out/tools/sub-venue/surfaces.js +77 -0
- package/out/tools/sub-venue/surfaces.js.map +1 -0
- package/out/tools/sub-venue/table.d.ts +229 -0
- package/out/tools/sub-venue/table.d.ts.map +1 -0
- package/out/tools/sub-venue/table.js +108 -0
- package/out/tools/sub-venue/table.js.map +1 -0
- package/out/tools/sub-venue/wikidata.d.ts +26 -0
- package/out/tools/sub-venue/wikidata.d.ts.map +1 -0
- package/out/tools/sub-venue/wikidata.js +62 -0
- package/out/tools/sub-venue/wikidata.js.map +1 -0
- package/out/tools/sub-venue-lexicon.d.ts +156 -0
- package/out/tools/sub-venue-lexicon.d.ts.map +1 -0
- package/out/tools/sub-venue-lexicon.js +283 -0
- package/out/tools/sub-venue-lexicon.js.map +1 -0
- package/out/tools/sub-venue-promotions.d.ts +94 -0
- package/out/tools/sub-venue-promotions.d.ts.map +1 -0
- package/out/tools/sub-venue-promotions.js +266 -0
- package/out/tools/sub-venue-promotions.js.map +1 -0
- package/out/types.d.ts +221 -0
- package/out/types.d.ts.map +1 -0
- package/out/types.js.map +1 -0
- package/out/utils/align.d.ts +93 -0
- package/out/utils/align.d.ts.map +1 -0
- package/out/utils/align.js +234 -0
- package/out/utils/align.js.map +1 -0
- package/out/utils/golden.d.ts +85 -0
- package/out/utils/golden.d.ts.map +1 -0
- package/out/utils/golden.js +127 -0
- package/out/utils/golden.js.map +1 -0
- package/out/utils/index.d.ts +14 -0
- package/out/utils/index.d.ts.map +1 -0
- package/out/utils/index.js +14 -0
- package/out/utils/index.js.map +1 -0
- package/out/utils/license.d.ts.map +1 -0
- package/out/utils/license.js +47 -0
- package/out/utils/license.js.map +1 -0
- package/out/utils/parquet.d.ts +178 -0
- package/out/utils/parquet.d.ts.map +1 -0
- package/out/utils/parquet.js +371 -0
- package/out/utils/parquet.js.map +1 -0
- package/out/utils/slice-stats.d.ts +52 -0
- package/out/utils/slice-stats.d.ts.map +1 -0
- package/out/utils/slice-stats.js +58 -0
- package/out/utils/slice-stats.js.map +1 -0
- package/out/utils/split.d.ts +128 -0
- package/out/utils/split.d.ts.map +1 -0
- package/out/utils/split.js +204 -0
- package/out/utils/split.js.map +1 -0
- package/out/utils/tokenize.d.ts +64 -0
- package/out/utils/tokenize.d.ts.map +1 -0
- package/out/utils/tokenize.js +82 -0
- package/out/utils/tokenize.js.map +1 -0
- package/out/utils/wof-json.d.ts +113 -0
- package/out/utils/wof-json.d.ts.map +1 -0
- package/out/utils/wof-json.js +173 -0
- package/out/utils/wof-json.js.map +1 -0
- package/package.json +350 -65
- package/out/src/adapters/ban/adapter.d.ts +0 -44
- package/out/src/adapters/ban/adapter.d.ts.map +0 -1
- package/out/src/adapters/ban/adapter.js +0 -148
- package/out/src/adapters/ban/adapter.js.map +0 -1
- package/out/src/adapters/ban/street-decompose.d.ts.map +0 -1
- package/out/src/adapters/ban/street-decompose.js +0 -75
- package/out/src/adapters/ban/street-decompose.js.map +0 -1
- package/out/src/adapters/fcc-bdc/adapter.d.ts +0 -68
- package/out/src/adapters/fcc-bdc/adapter.d.ts.map +0 -1
- package/out/src/adapters/fcc-bdc/adapter.js +0 -144
- package/out/src/adapters/fcc-bdc/adapter.js.map +0 -1
- package/out/src/adapters/geonames/adapter.d.ts +0 -46
- package/out/src/adapters/geonames/adapter.d.ts.map +0 -1
- package/out/src/adapters/geonames/adapter.js +0 -176
- package/out/src/adapters/geonames/adapter.js.map +0 -1
- package/out/src/adapters/geonames-postal/adapter.d.ts +0 -41
- package/out/src/adapters/geonames-postal/adapter.d.ts.map +0 -1
- package/out/src/adapters/geonames-postal/adapter.js +0 -104
- package/out/src/adapters/geonames-postal/adapter.js.map +0 -1
- package/out/src/adapters/gnaf/adapter.d.ts +0 -49
- package/out/src/adapters/gnaf/adapter.d.ts.map +0 -1
- package/out/src/adapters/gnaf/adapter.js +0 -124
- package/out/src/adapters/gnaf/adapter.js.map +0 -1
- package/out/src/adapters/gnaf/assemble.d.ts +0 -65
- package/out/src/adapters/gnaf/assemble.d.ts.map +0 -1
- package/out/src/adapters/gnaf/assemble.js +0 -154
- package/out/src/adapters/gnaf/assemble.js.map +0 -1
- package/out/src/adapters/index.d.ts +0 -51
- package/out/src/adapters/index.d.ts.map +0 -1
- package/out/src/adapters/index.js +0 -95
- package/out/src/adapters/index.js.map +0 -1
- package/out/src/adapters/openaddresses/adapter.d.ts +0 -72
- package/out/src/adapters/openaddresses/adapter.d.ts.map +0 -1
- package/out/src/adapters/openaddresses/adapter.js +0 -186
- package/out/src/adapters/openaddresses/adapter.js.map +0 -1
- package/out/src/adapters/overture/adapter.d.ts +0 -48
- package/out/src/adapters/overture/adapter.d.ts.map +0 -1
- package/out/src/adapters/overture/adapter.js +0 -125
- package/out/src/adapters/overture/adapter.js.map +0 -1
- package/out/src/adapters/state-hi-schools/adapter.d.ts +0 -47
- package/out/src/adapters/state-hi-schools/adapter.d.ts.map +0 -1
- package/out/src/adapters/state-hi-schools/adapter.js +0 -132
- package/out/src/adapters/state-hi-schools/adapter.js.map +0 -1
- package/out/src/adapters/state-ia-contractors/adapter.d.ts +0 -34
- package/out/src/adapters/state-ia-contractors/adapter.d.ts.map +0 -1
- package/out/src/adapters/state-ia-contractors/adapter.js +0 -106
- package/out/src/adapters/state-ia-contractors/adapter.js.map +0 -1
- package/out/src/adapters/state-ny-notaries/adapter.d.ts +0 -32
- package/out/src/adapters/state-ny-notaries/adapter.d.ts.map +0 -1
- package/out/src/adapters/state-ny-notaries/adapter.js +0 -125
- package/out/src/adapters/state-ny-notaries/adapter.js.map +0 -1
- package/out/src/adapters/state-tx-notaries/adapter.d.ts +0 -33
- package/out/src/adapters/state-tx-notaries/adapter.d.ts.map +0 -1
- package/out/src/adapters/state-tx-notaries/adapter.js +0 -120
- package/out/src/adapters/state-tx-notaries/adapter.js.map +0 -1
- package/out/src/adapters/synth-po-box/adapter.d.ts +0 -67
- package/out/src/adapters/synth-po-box/adapter.d.ts.map +0 -1
- package/out/src/adapters/synth-po-box/adapter.js +0 -140
- package/out/src/adapters/synth-po-box/adapter.js.map +0 -1
- package/out/src/adapters/tiger/adapter.d.ts +0 -55
- package/out/src/adapters/tiger/adapter.d.ts.map +0 -1
- package/out/src/adapters/tiger/adapter.js +0 -201
- package/out/src/adapters/tiger/adapter.js.map +0 -1
- package/out/src/adapters/tiger/street-decompose.d.ts.map +0 -1
- package/out/src/adapters/tiger/street-decompose.js +0 -90
- package/out/src/adapters/tiger/street-decompose.js.map +0 -1
- package/out/src/adapters/usgov-hrsa-fqhc/adapter.d.ts +0 -47
- package/out/src/adapters/usgov-hrsa-fqhc/adapter.d.ts.map +0 -1
- package/out/src/adapters/usgov-hrsa-fqhc/adapter.js +0 -138
- package/out/src/adapters/usgov-hrsa-fqhc/adapter.js.map +0 -1
- package/out/src/adapters/usgov-imls-pls/adapter.d.ts +0 -36
- package/out/src/adapters/usgov-imls-pls/adapter.d.ts.map +0 -1
- package/out/src/adapters/usgov-imls-pls/adapter.js +0 -110
- package/out/src/adapters/usgov-imls-pls/adapter.js.map +0 -1
- package/out/src/adapters/usgov-irs-bmf/adapter.d.ts +0 -37
- package/out/src/adapters/usgov-irs-bmf/adapter.d.ts.map +0 -1
- package/out/src/adapters/usgov-irs-bmf/adapter.js +0 -123
- package/out/src/adapters/usgov-irs-bmf/adapter.js.map +0 -1
- package/out/src/adapters/usgov-nad/adapter.d.ts +0 -48
- package/out/src/adapters/usgov-nad/adapter.d.ts.map +0 -1
- package/out/src/adapters/usgov-nad/adapter.js +0 -252
- package/out/src/adapters/usgov-nad/adapter.js.map +0 -1
- package/out/src/adapters/usgov-nppes/adapter.d.ts +0 -39
- package/out/src/adapters/usgov-nppes/adapter.d.ts.map +0 -1
- package/out/src/adapters/usgov-nppes/adapter.js +0 -116
- package/out/src/adapters/usgov-nppes/adapter.js.map +0 -1
- package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.d.ts +0 -46
- package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.d.ts.map +0 -1
- package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.js +0 -155
- package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.js.map +0 -1
- package/out/src/adapters/utils/index.d.ts +0 -144
- package/out/src/adapters/utils/index.d.ts.map +0 -1
- package/out/src/adapters/utils/index.js +0 -151
- package/out/src/adapters/utils/index.js.map +0 -1
- package/out/src/adapters/wof-admin-jp/adapter.d.ts +0 -65
- package/out/src/adapters/wof-admin-jp/adapter.d.ts.map +0 -1
- package/out/src/adapters/wof-admin-jp/adapter.js +0 -164
- package/out/src/adapters/wof-admin-jp/adapter.js.map +0 -1
- package/out/src/adapters/wof-admin-json/adapter.d.ts +0 -93
- package/out/src/adapters/wof-admin-json/adapter.d.ts.map +0 -1
- package/out/src/adapters/wof-admin-json/adapter.js +0 -248
- package/out/src/adapters/wof-admin-json/adapter.js.map +0 -1
- package/out/src/adapters/wof-postalcode-json/adapter.d.ts +0 -70
- package/out/src/adapters/wof-postalcode-json/adapter.d.ts.map +0 -1
- package/out/src/adapters/wof-postalcode-json/adapter.js +0 -185
- package/out/src/adapters/wof-postalcode-json/adapter.js.map +0 -1
- package/out/src/build.d.ts +0 -131
- package/out/src/build.d.ts.map +0 -1
- package/out/src/build.js +0 -248
- package/out/src/build.js.map +0 -1
- package/out/src/codex/us-fips-state.d.ts.map +0 -1
- package/out/src/codex/us-fips-state.js.map +0 -1
- package/out/src/index.d.ts +0 -14
- package/out/src/index.d.ts.map +0 -1
- package/out/src/index.js +0 -14
- package/out/src/index.js.map +0 -1
- package/out/src/name-prone-us-suffixes.d.ts +0 -12
- package/out/src/name-prone-us-suffixes.d.ts.map +0 -1
- package/out/src/name-prone-us-suffixes.js +0 -12
- package/out/src/name-prone-us-suffixes.js.map +0 -1
- package/out/src/parquet-wrapper/index.d.ts +0 -9
- package/out/src/parquet-wrapper/index.d.ts.map +0 -1
- package/out/src/parquet-wrapper/index.js +0 -9
- package/out/src/parquet-wrapper/index.js.map +0 -1
- package/out/src/parquet-wrapper/reader.d.ts +0 -34
- package/out/src/parquet-wrapper/reader.d.ts.map +0 -1
- package/out/src/parquet-wrapper/reader.js +0 -64
- package/out/src/parquet-wrapper/reader.js.map +0 -1
- package/out/src/parquet-wrapper/schema.d.ts +0 -49
- package/out/src/parquet-wrapper/schema.d.ts.map +0 -1
- package/out/src/parquet-wrapper/schema.js +0 -55
- package/out/src/parquet-wrapper/schema.js.map +0 -1
- package/out/src/parquet-wrapper/writer.d.ts +0 -46
- package/out/src/parquet-wrapper/writer.d.ts.map +0 -1
- package/out/src/parquet-wrapper/writer.js +0 -76
- package/out/src/parquet-wrapper/writer.js.map +0 -1
- package/out/src/runner.d.ts +0 -126
- package/out/src/runner.d.ts.map +0 -1
- package/out/src/runner.js +0 -189
- package/out/src/runner.js.map +0 -1
- package/out/src/shard-recipes/anchor-absorption.d.ts +0 -20
- package/out/src/shard-recipes/anchor-absorption.d.ts.map +0 -1
- package/out/src/shard-recipes/anchor-absorption.js +0 -83
- package/out/src/shard-recipes/anchor-absorption.js.map +0 -1
- package/out/src/shard-recipes/boundary-stress.d.ts +0 -20
- package/out/src/shard-recipes/boundary-stress.d.ts.map +0 -1
- package/out/src/shard-recipes/boundary-stress.js +0 -83
- package/out/src/shard-recipes/boundary-stress.js.map +0 -1
- package/out/src/shard-recipes/country-balanced.d.ts +0 -32
- package/out/src/shard-recipes/country-balanced.d.ts.map +0 -1
- package/out/src/shard-recipes/country-balanced.js +0 -405
- package/out/src/shard-recipes/country-balanced.js.map +0 -1
- package/out/src/shard-recipes/cz-pcfirst-preposition.d.ts +0 -22
- package/out/src/shard-recipes/cz-pcfirst-preposition.d.ts.map +0 -1
- package/out/src/shard-recipes/cz-pcfirst-preposition.js +0 -82
- package/out/src/shard-recipes/cz-pcfirst-preposition.js.map +0 -1
- package/out/src/shard-recipes/fr-admin-split.d.ts +0 -38
- package/out/src/shard-recipes/fr-admin-split.d.ts.map +0 -1
- package/out/src/shard-recipes/fr-admin-split.js +0 -187
- package/out/src/shard-recipes/fr-admin-split.js.map +0 -1
- package/out/src/shard-recipes/fr-bare-street.d.ts +0 -28
- package/out/src/shard-recipes/fr-bare-street.d.ts.map +0 -1
- package/out/src/shard-recipes/fr-bare-street.js +0 -82
- package/out/src/shard-recipes/fr-bare-street.js.map +0 -1
- package/out/src/shard-recipes/fr-fragment.d.ts +0 -77
- package/out/src/shard-recipes/fr-fragment.d.ts.map +0 -1
- package/out/src/shard-recipes/fr-fragment.js +0 -276
- package/out/src/shard-recipes/fr-fragment.js.map +0 -1
- package/out/src/shard-recipes/fr-lieudit.d.ts +0 -32
- package/out/src/shard-recipes/fr-lieudit.d.ts.map +0 -1
- package/out/src/shard-recipes/fr-lieudit.js +0 -225
- package/out/src/shard-recipes/fr-lieudit.js.map +0 -1
- package/out/src/shard-recipes/fr-order.d.ts +0 -38
- package/out/src/shard-recipes/fr-order.d.ts.map +0 -1
- package/out/src/shard-recipes/fr-order.js +0 -207
- package/out/src/shard-recipes/fr-order.js.map +0 -1
- package/out/src/shard-recipes/german.d.ts +0 -23
- package/out/src/shard-recipes/german.d.ts.map +0 -1
- package/out/src/shard-recipes/german.js +0 -132
- package/out/src/shard-recipes/german.js.map +0 -1
- package/out/src/shard-recipes/house-venue.d.ts +0 -18
- package/out/src/shard-recipes/house-venue.d.ts.map +0 -1
- package/out/src/shard-recipes/house-venue.js +0 -74
- package/out/src/shard-recipes/house-venue.js.map +0 -1
- package/out/src/shard-recipes/index.d.ts +0 -24
- package/out/src/shard-recipes/index.d.ts.map +0 -1
- package/out/src/shard-recipes/index.js +0 -83
- package/out/src/shard-recipes/index.js.map +0 -1
- package/out/src/shard-recipes/intersection.d.ts +0 -42
- package/out/src/shard-recipes/intersection.d.ts.map +0 -1
- package/out/src/shard-recipes/intersection.js +0 -460
- package/out/src/shard-recipes/intersection.js.map +0 -1
- package/out/src/shard-recipes/locale.d.ts +0 -135
- package/out/src/shard-recipes/locale.d.ts.map +0 -1
- package/out/src/shard-recipes/locale.js +0 -458
- package/out/src/shard-recipes/locale.js.map +0 -1
- package/out/src/shard-recipes/nl-postcode.d.ts +0 -26
- package/out/src/shard-recipes/nl-postcode.d.ts.map +0 -1
- package/out/src/shard-recipes/nl-postcode.js +0 -102
- package/out/src/shard-recipes/nl-postcode.js.map +0 -1
- package/out/src/shard-recipes/no-fragment.d.ts +0 -43
- package/out/src/shard-recipes/no-fragment.d.ts.map +0 -1
- package/out/src/shard-recipes/no-fragment.js +0 -188
- package/out/src/shard-recipes/no-fragment.js.map +0 -1
- package/out/src/shard-recipes/no-street-led.d.ts +0 -24
- package/out/src/shard-recipes/no-street-led.d.ts.map +0 -1
- package/out/src/shard-recipes/no-street-led.js +0 -121
- package/out/src/shard-recipes/no-street-led.js.map +0 -1
- package/out/src/shard-recipes/no-street.d.ts +0 -18
- package/out/src/shard-recipes/no-street.d.ts.map +0 -1
- package/out/src/shard-recipes/no-street.js +0 -72
- package/out/src/shard-recipes/no-street.js.map +0 -1
- package/out/src/shard-recipes/po-box-cedex.d.ts +0 -38
- package/out/src/shard-recipes/po-box-cedex.d.ts.map +0 -1
- package/out/src/shard-recipes/po-box-cedex.js +0 -726
- package/out/src/shard-recipes/po-box-cedex.js.map +0 -1
- package/out/src/shard-recipes/po-box.d.ts +0 -17
- package/out/src/shard-recipes/po-box.d.ts.map +0 -1
- package/out/src/shard-recipes/po-box.js +0 -101
- package/out/src/shard-recipes/po-box.js.map +0 -1
- package/out/src/shard-recipes/scaffold.d.ts +0 -217
- package/out/src/shard-recipes/scaffold.d.ts.map +0 -1
- package/out/src/shard-recipes/scaffold.js +0 -138
- package/out/src/shard-recipes/scaffold.js.map +0 -1
- package/out/src/shard-recipes/si-bare-village.d.ts +0 -32
- package/out/src/shard-recipes/si-bare-village.d.ts.map +0 -1
- package/out/src/shard-recipes/si-bare-village.js +0 -88
- package/out/src/shard-recipes/si-bare-village.js.map +0 -1
- package/out/src/shard-recipes/street-affix.d.ts +0 -89
- package/out/src/shard-recipes/street-affix.d.ts.map +0 -1
- package/out/src/shard-recipes/street-affix.js +0 -578
- package/out/src/shard-recipes/street-affix.js.map +0 -1
- package/out/src/shard-recipes/street-bare.d.ts +0 -25
- package/out/src/shard-recipes/street-bare.d.ts.map +0 -1
- package/out/src/shard-recipes/street-bare.js +0 -86
- package/out/src/shard-recipes/street-bare.js.map +0 -1
- package/out/src/shard-recipes/street.d.ts +0 -15
- package/out/src/shard-recipes/street.d.ts.map +0 -1
- package/out/src/shard-recipes/street.js +0 -69
- package/out/src/shard-recipes/street.js.map +0 -1
- package/out/src/shard-recipes/sub-venue-sources.d.ts +0 -228
- package/out/src/shard-recipes/sub-venue-sources.d.ts.map +0 -1
- package/out/src/shard-recipes/sub-venue-sources.js +0 -664
- package/out/src/shard-recipes/sub-venue-sources.js.map +0 -1
- package/out/src/shard-recipes/sub-venue.d.ts +0 -269
- package/out/src/shard-recipes/sub-venue.d.ts.map +0 -1
- package/out/src/shard-recipes/sub-venue.js +0 -709
- package/out/src/shard-recipes/sub-venue.js.map +0 -1
- package/out/src/shard-recipes/unit.d.ts +0 -29
- package/out/src/shard-recipes/unit.d.ts.map +0 -1
- package/out/src/shard-recipes/unit.js +0 -243
- package/out/src/shard-recipes/unit.js.map +0 -1
- package/out/src/synthesizers/anchor-absorption.d.ts +0 -63
- package/out/src/synthesizers/anchor-absorption.d.ts.map +0 -1
- package/out/src/synthesizers/anchor-absorption.js +0 -223
- package/out/src/synthesizers/anchor-absorption.js.map +0 -1
- package/out/src/synthesizers/boundary-stress.d.ts +0 -78
- package/out/src/synthesizers/boundary-stress.d.ts.map +0 -1
- package/out/src/synthesizers/boundary-stress.js +0 -455
- package/out/src/synthesizers/boundary-stress.js.map +0 -1
- package/out/src/synthesizers/german.d.ts +0 -107
- package/out/src/synthesizers/german.d.ts.map +0 -1
- package/out/src/synthesizers/german.js +0 -148
- package/out/src/synthesizers/german.js.map +0 -1
- package/out/src/synthesizers/house-venue.d.ts +0 -56
- package/out/src/synthesizers/house-venue.d.ts.map +0 -1
- package/out/src/synthesizers/house-venue.js +0 -253
- package/out/src/synthesizers/house-venue.js.map +0 -1
- package/out/src/synthesizers/intersection.d.ts +0 -52
- package/out/src/synthesizers/intersection.d.ts.map +0 -1
- package/out/src/synthesizers/intersection.js +0 -175
- package/out/src/synthesizers/intersection.js.map +0 -1
- package/out/src/synthesizers/no-street.d.ts +0 -72
- package/out/src/synthesizers/no-street.d.ts.map +0 -1
- package/out/src/synthesizers/no-street.js +0 -282
- package/out/src/synthesizers/no-street.js.map +0 -1
- package/out/src/synthesizers/po-box.d.ts +0 -104
- package/out/src/synthesizers/po-box.d.ts.map +0 -1
- package/out/src/synthesizers/po-box.js +0 -266
- package/out/src/synthesizers/po-box.js.map +0 -1
- package/out/src/synthesizers/street.d.ts +0 -54
- package/out/src/synthesizers/street.d.ts.map +0 -1
- package/out/src/synthesizers/street.js +0 -220
- package/out/src/synthesizers/street.js.map +0 -1
- package/out/src/synthesizers/utils.d.ts +0 -203
- package/out/src/synthesizers/utils.d.ts.map +0 -1
- package/out/src/synthesizers/utils.js +0 -707
- package/out/src/synthesizers/utils.js.map +0 -1
- package/out/src/tools/align-shard.d.ts +0 -8
- package/out/src/tools/align-shard.d.ts.map +0 -1
- package/out/src/tools/align-shard.js +0 -56
- package/out/src/tools/align-shard.js.map +0 -1
- package/out/src/tools/audit.d.ts +0 -28
- package/out/src/tools/audit.d.ts.map +0 -1
- package/out/src/tools/audit.js +0 -285
- package/out/src/tools/audit.js.map +0 -1
- package/out/src/tools/corpus-stats.d.ts +0 -44
- package/out/src/tools/corpus-stats.d.ts.map +0 -1
- package/out/src/tools/corpus-stats.js +0 -138
- package/out/src/tools/corpus-stats.js.map +0 -1
- package/out/src/tools/fetch/ban.d.ts +0 -31
- package/out/src/tools/fetch/ban.d.ts.map +0 -1
- package/out/src/tools/fetch/ban.js +0 -255
- package/out/src/tools/fetch/ban.js.map +0 -1
- package/out/src/tools/fetch/download.d.ts +0 -69
- package/out/src/tools/fetch/download.d.ts.map +0 -1
- package/out/src/tools/fetch/download.js +0 -100
- package/out/src/tools/fetch/download.js.map +0 -1
- package/out/src/tools/fetch/hrsa.d.ts +0 -18
- package/out/src/tools/fetch/hrsa.d.ts.map +0 -1
- package/out/src/tools/fetch/hrsa.js +0 -46
- package/out/src/tools/fetch/hrsa.js.map +0 -1
- package/out/src/tools/fetch/imls-pls.d.ts +0 -25
- package/out/src/tools/fetch/imls-pls.d.ts.map +0 -1
- package/out/src/tools/fetch/imls-pls.js +0 -108
- package/out/src/tools/fetch/imls-pls.js.map +0 -1
- package/out/src/tools/fetch/index.d.ts +0 -133
- package/out/src/tools/fetch/index.d.ts.map +0 -1
- package/out/src/tools/fetch/index.js +0 -132
- package/out/src/tools/fetch/index.js.map +0 -1
- package/out/src/tools/fetch/nad.d.ts +0 -70
- package/out/src/tools/fetch/nad.d.ts.map +0 -1
- package/out/src/tools/fetch/nad.js +0 -225
- package/out/src/tools/fetch/nad.js.map +0 -1
- package/out/src/tools/fetch/nppes.d.ts +0 -26
- package/out/src/tools/fetch/nppes.d.ts.map +0 -1
- package/out/src/tools/fetch/nppes.js +0 -124
- package/out/src/tools/fetch/nppes.js.map +0 -1
- package/out/src/tools/fetch/openaddresses.d.ts +0 -61
- package/out/src/tools/fetch/openaddresses.d.ts.map +0 -1
- package/out/src/tools/fetch/openaddresses.js +0 -316
- package/out/src/tools/fetch/openaddresses.js.map +0 -1
- package/out/src/tools/fetch/ourairports.d.ts +0 -45
- package/out/src/tools/fetch/ourairports.d.ts.map +0 -1
- package/out/src/tools/fetch/ourairports.js +0 -123
- package/out/src/tools/fetch/ourairports.js.map +0 -1
- package/out/src/tools/fetch/ppd.d.ts +0 -18
- package/out/src/tools/fetch/ppd.d.ts.map +0 -1
- package/out/src/tools/fetch/ppd.js +0 -100
- package/out/src/tools/fetch/ppd.js.map +0 -1
- package/out/src/tools/fetch/state-hi-schools.d.ts +0 -25
- package/out/src/tools/fetch/state-hi-schools.d.ts.map +0 -1
- package/out/src/tools/fetch/state-hi-schools.js +0 -178
- package/out/src/tools/fetch/state-hi-schools.js.map +0 -1
- package/out/src/tools/fetch/state-sources.d.ts +0 -22
- package/out/src/tools/fetch/state-sources.d.ts.map +0 -1
- package/out/src/tools/fetch/state-sources.js +0 -115
- package/out/src/tools/fetch/state-sources.js.map +0 -1
- package/out/src/tools/fetch/tiger-full.d.ts +0 -42
- package/out/src/tools/fetch/tiger-full.d.ts.map +0 -1
- package/out/src/tools/fetch/tiger-full.js +0 -254
- package/out/src/tools/fetch/tiger-full.js.map +0 -1
- package/out/src/tools/fetch/wikidata-subvenue.d.ts +0 -171
- package/out/src/tools/fetch/wikidata-subvenue.d.ts.map +0 -1
- package/out/src/tools/fetch/wikidata-subvenue.js +0 -275
- package/out/src/tools/fetch/wikidata-subvenue.js.map +0 -1
- package/out/src/tools/gb-title-case.d.ts.map +0 -1
- package/out/src/tools/gb-title-case.js.map +0 -1
- package/out/src/tools/golden-expand.d.ts +0 -90
- package/out/src/tools/golden-expand.d.ts.map +0 -1
- package/out/src/tools/golden-expand.js +0 -404
- package/out/src/tools/golden-expand.js.map +0 -1
- package/out/src/tools/golden-promote.d.ts.map +0 -1
- package/out/src/tools/golden-promote.js +0 -244
- package/out/src/tools/golden-promote.js.map +0 -1
- package/out/src/tools/golden-relabel-street.d.ts +0 -196
- package/out/src/tools/golden-relabel-street.d.ts.map +0 -1
- package/out/src/tools/golden-relabel-street.js +0 -440
- package/out/src/tools/golden-relabel-street.js.map +0 -1
- package/out/src/tools/index.d.ts +0 -28
- package/out/src/tools/index.d.ts.map +0 -1
- package/out/src/tools/index.js +0 -28
- package/out/src/tools/index.js.map +0 -1
- package/out/src/tools/ingest-csv.d.ts.map +0 -1
- package/out/src/tools/ingest-csv.js +0 -307
- package/out/src/tools/ingest-csv.js.map +0 -1
- package/out/src/tools/jsonl-to-parquet.d.ts +0 -61
- package/out/src/tools/jsonl-to-parquet.d.ts.map +0 -1
- package/out/src/tools/jsonl-to-parquet.js +0 -164
- package/out/src/tools/jsonl-to-parquet.js.map +0 -1
- package/out/src/tools/lint-shard-vocab.d.ts +0 -90
- package/out/src/tools/lint-shard-vocab.d.ts.map +0 -1
- package/out/src/tools/lint-shard-vocab.js +0 -281
- package/out/src/tools/lint-shard-vocab.js.map +0 -1
- package/out/src/tools/lint-shard.d.ts +0 -93
- package/out/src/tools/lint-shard.d.ts.map +0 -1
- package/out/src/tools/lint-shard.js +0 -354
- package/out/src/tools/lint-shard.js.map +0 -1
- package/out/src/tools/overlay-manifest.d.ts +0 -35
- package/out/src/tools/overlay-manifest.d.ts.map +0 -1
- package/out/src/tools/overlay-manifest.js +0 -88
- package/out/src/tools/overlay-manifest.js.map +0 -1
- package/out/src/tools/overture-subvenue.d.ts +0 -112
- package/out/src/tools/overture-subvenue.d.ts.map +0 -1
- package/out/src/tools/overture-subvenue.js +0 -144
- package/out/src/tools/overture-subvenue.js.map +0 -1
- package/out/src/tools/shard-kryptonite.d.ts +0 -32
- package/out/src/tools/shard-kryptonite.d.ts.map +0 -1
- package/out/src/tools/shard-kryptonite.js +0 -101
- package/out/src/tools/shard-kryptonite.js.map +0 -1
- package/out/src/tools/shard-translit.d.ts +0 -51
- package/out/src/tools/shard-translit.d.ts.map +0 -1
- package/out/src/tools/shard-translit.js +0 -197
- package/out/src/tools/shard-translit.js.map +0 -1
- package/out/src/tools/sub-venue-lexicon.d.ts +0 -507
- package/out/src/tools/sub-venue-lexicon.d.ts.map +0 -1
- package/out/src/tools/sub-venue-lexicon.js +0 -817
- package/out/src/tools/sub-venue-lexicon.js.map +0 -1
- package/out/src/tools/sub-venue-promotions.d.ts +0 -94
- package/out/src/tools/sub-venue-promotions.d.ts.map +0 -1
- package/out/src/tools/sub-venue-promotions.js +0 -266
- package/out/src/tools/sub-venue-promotions.js.map +0 -1
- package/out/src/types.d.ts +0 -221
- package/out/src/types.d.ts.map +0 -1
- package/out/src/types.js.map +0 -1
- package/out/src/utils/align.d.ts +0 -93
- package/out/src/utils/align.d.ts.map +0 -1
- package/out/src/utils/align.js +0 -234
- package/out/src/utils/align.js.map +0 -1
- package/out/src/utils/golden.d.ts +0 -69
- package/out/src/utils/golden.d.ts.map +0 -1
- package/out/src/utils/golden.js +0 -127
- package/out/src/utils/golden.js.map +0 -1
- package/out/src/utils/index.d.ts +0 -14
- package/out/src/utils/index.d.ts.map +0 -1
- package/out/src/utils/index.js +0 -14
- package/out/src/utils/index.js.map +0 -1
- package/out/src/utils/license.d.ts.map +0 -1
- package/out/src/utils/license.js +0 -47
- package/out/src/utils/license.js.map +0 -1
- package/out/src/utils/parquet.d.ts +0 -143
- package/out/src/utils/parquet.d.ts.map +0 -1
- package/out/src/utils/parquet.js +0 -258
- package/out/src/utils/parquet.js.map +0 -1
- package/out/src/utils/split.d.ts +0 -127
- package/out/src/utils/split.d.ts.map +0 -1
- package/out/src/utils/split.js +0 -204
- package/out/src/utils/split.js.map +0 -1
- package/out/src/utils/tokenize.d.ts +0 -56
- package/out/src/utils/tokenize.d.ts.map +0 -1
- package/out/src/utils/tokenize.js +0 -48
- package/out/src/utils/tokenize.js.map +0 -1
- package/out/src/utils/wof-json.d.ts +0 -109
- package/out/src/utils/wof-json.d.ts.map +0 -1
- package/out/src/utils/wof-json.js +0 -173
- package/out/src/utils/wof-json.js.map +0 -1
- package/src/adapters/ban/adapter.ts +0 -189
- package/src/adapters/ban/street-decompose.ts +0 -96
- package/src/adapters/fcc-bdc/adapter.ts +0 -173
- package/src/adapters/geonames/adapter.ts +0 -199
- package/src/adapters/geonames-postal/adapter.ts +0 -118
- package/src/adapters/gnaf/adapter.ts +0 -148
- package/src/adapters/gnaf/assemble.ts +0 -226
- package/src/adapters/index.ts +0 -149
- package/src/adapters/openaddresses/adapter.ts +0 -250
- package/src/adapters/overture/adapter.ts +0 -161
- package/src/adapters/state-hi-schools/adapter.ts +0 -162
- package/src/adapters/state-ia-contractors/adapter.ts +0 -138
- package/src/adapters/state-ny-notaries/adapter.ts +0 -159
- package/src/adapters/state-tx-notaries/adapter.ts +0 -151
- package/src/adapters/synth-po-box/adapter.ts +0 -203
- package/src/adapters/tiger/adapter.ts +0 -252
- package/src/adapters/tiger/street-decompose.ts +0 -111
- package/src/adapters/usgov-hrsa-fqhc/adapter.ts +0 -181
- package/src/adapters/usgov-imls-pls/adapter.ts +0 -138
- package/src/adapters/usgov-irs-bmf/adapter.ts +0 -161
- package/src/adapters/usgov-nad/adapter.ts +0 -347
- package/src/adapters/usgov-nppes/adapter.ts +0 -157
- package/src/adapters/usgov-samhsa-treatment-locator/adapter.ts +0 -202
- package/src/adapters/utils/index.ts +0 -220
- package/src/adapters/wof-admin-jp/adapter.ts +0 -219
- package/src/adapters/wof-admin-json/adapter.ts +0 -294
- package/src/adapters/wof-postalcode-json/adapter.ts +0 -216
- package/src/build.ts +0 -386
- package/src/index.ts +0 -14
- package/src/name-prone-us-suffixes.ts +0 -12
- package/src/parquet-wrapper/index.ts +0 -9
- package/src/parquet-wrapper/reader.ts +0 -88
- package/src/parquet-wrapper/schema.ts +0 -88
- package/src/parquet-wrapper/writer.ts +0 -110
- package/src/runner.ts +0 -322
- package/src/shard-recipes/anchor-absorption.ts +0 -103
- package/src/shard-recipes/boundary-stress.ts +0 -104
- package/src/shard-recipes/country-balanced.ts +0 -522
- package/src/shard-recipes/cz-pcfirst-preposition.ts +0 -92
- package/src/shard-recipes/fr-admin-split.ts +0 -237
- package/src/shard-recipes/fr-bare-street.ts +0 -95
- package/src/shard-recipes/fr-fragment.ts +0 -332
- package/src/shard-recipes/fr-lieudit.ts +0 -300
- package/src/shard-recipes/fr-order.ts +0 -256
- package/src/shard-recipes/german.ts +0 -169
- package/src/shard-recipes/house-venue.ts +0 -88
- package/src/shard-recipes/index.ts +0 -89
- package/src/shard-recipes/intersection.ts +0 -629
- package/src/shard-recipes/locale.ts +0 -601
- package/src/shard-recipes/nl-postcode.ts +0 -115
- package/src/shard-recipes/no-fragment.ts +0 -219
- package/src/shard-recipes/no-street-led.ts +0 -143
- package/src/shard-recipes/no-street.ts +0 -86
- package/src/shard-recipes/po-box-cedex.ts +0 -919
- package/src/shard-recipes/po-box.ts +0 -123
- package/src/shard-recipes/scaffold.ts +0 -329
- package/src/shard-recipes/si-bare-village.ts +0 -97
- package/src/shard-recipes/street-affix.ts +0 -825
- package/src/shard-recipes/street-bare.ts +0 -101
- package/src/shard-recipes/street.ts +0 -82
- package/src/shard-recipes/sub-venue-sources.ts +0 -895
- package/src/shard-recipes/sub-venue.ts +0 -982
- package/src/shard-recipes/unit.ts +0 -320
- package/src/synthesizers/anchor-absorption.ts +0 -290
- package/src/synthesizers/boundary-stress.ts +0 -531
- package/src/synthesizers/german.ts +0 -250
- package/src/synthesizers/house-venue.ts +0 -316
- package/src/synthesizers/intersection.ts +0 -232
- package/src/synthesizers/no-street.ts +0 -349
- package/src/synthesizers/po-box.ts +0 -339
- package/src/synthesizers/street.ts +0 -272
- package/src/synthesizers/utils.ts +0 -901
- package/src/tools/align-shard.ts +0 -69
- package/src/tools/audit.ts +0 -399
- package/src/tools/corpus-stats.ts +0 -184
- package/src/tools/fetch/ban.ts +0 -310
- package/src/tools/fetch/download.ts +0 -158
- package/src/tools/fetch/hrsa.ts +0 -68
- package/src/tools/fetch/imls-pls.ts +0 -158
- package/src/tools/fetch/index.ts +0 -136
- package/src/tools/fetch/nad.ts +0 -331
- package/src/tools/fetch/nppes.ts +0 -172
- package/src/tools/fetch/openaddresses.ts +0 -408
- package/src/tools/fetch/ourairports.ts +0 -166
- package/src/tools/fetch/ppd.ts +0 -137
- package/src/tools/fetch/state-hi-schools.ts +0 -228
- package/src/tools/fetch/state-sources.ts +0 -155
- package/src/tools/fetch/tiger-full.ts +0 -361
- package/src/tools/fetch/wikidata-subvenue.ts +0 -386
- package/src/tools/golden-expand.ts +0 -573
- package/src/tools/golden-promote.ts +0 -353
- package/src/tools/golden-relabel-street.ts +0 -685
- package/src/tools/index.ts +0 -28
- package/src/tools/ingest-csv.ts +0 -435
- package/src/tools/jsonl-to-parquet.ts +0 -221
- package/src/tools/lint-shard-vocab.ts +0 -409
- package/src/tools/lint-shard.ts +0 -543
- package/src/tools/overlay-manifest.ts +0 -145
- package/src/tools/overture-subvenue.ts +0 -215
- package/src/tools/shard-kryptonite.ts +0 -138
- package/src/tools/shard-translit.ts +0 -270
- package/src/tools/sub-venue-lexicon.ts +0 -1250
- package/src/tools/sub-venue-promotions.ts +0 -330
- package/src/types.ts +0 -247
- package/src/utils/align.ts +0 -330
- package/src/utils/golden.ts +0 -176
- package/src/utils/index.ts +0 -14
- package/src/utils/license.ts +0 -50
- package/src/utils/parquet.ts +0 -377
- package/src/utils/split.ts +0 -278
- package/src/utils/tokenize.ts +0 -78
- package/src/utils/wof-json.ts +0 -244
- /package/{src → lib}/codex/us-fips-state.ts +0 -0
- /package/{src → lib}/tools/gb-title-case.ts +0 -0
- /package/out/{src/adapters → adapters}/ban/street-decompose.d.ts +0 -0
- /package/out/{src/adapters → adapters}/tiger/street-decompose.d.ts +0 -0
- /package/out/{src/codex → codex}/us-fips-state.d.ts +0 -0
- /package/out/{src/codex → codex}/us-fips-state.js +0 -0
- /package/out/{src/tools → tools}/gb-title-case.d.ts +0 -0
- /package/out/{src/tools → tools}/gb-title-case.js +0 -0
- /package/out/{src/tools → tools}/golden-promote.d.ts +0 -0
- /package/out/{src/tools → tools}/ingest-csv.d.ts +0 -0
- /package/out/{src/types.js → types.js} +0 -0
- /package/out/{src/utils → utils}/license.d.ts +0 -0
|
@@ -1,408 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @copyright Sister Software
|
|
3
|
-
* @license AGPL-3.0
|
|
4
|
-
* @author Teffen Ellis, et al.
|
|
5
|
-
*
|
|
6
|
-
* Fetch an OpenAddresses country collection from batch.openaddresses.io.
|
|
7
|
-
*
|
|
8
|
-
* Source: https://batch.openaddresses.io
|
|
9
|
-
* License: MIXED — OpenAddresses aggregates hundreds of upstream sources with per-source licenses
|
|
10
|
-
* (CC-BY, CC0, PDDL, ODbL, CC-BY-SA, and proprietary attribution-only). The per-row LICENSE filter
|
|
11
|
-
* in the openaddresses adapter is essential for proprietary-weights training: Tier-C rows (ODbL,
|
|
12
|
-
* CC-BY-SA, CC-SA) are dropped at ingest by default. This module downloads the raw collection; the
|
|
13
|
-
* adapter does the license gating.
|
|
14
|
-
*
|
|
15
|
-
* Native `fetch` streams the download to disk (no curl + Python subprocess tax);
|
|
16
|
-
* `node:child_process` keeps the genuine shell ops it still needs (`file` magic detection +
|
|
17
|
-
* `gunzip` decompression, both nice/ionice-deprioritized).
|
|
18
|
-
*
|
|
19
|
-
* ## Authentication note (2026-05-18)
|
|
20
|
-
*
|
|
21
|
-
* The batch.openaddresses.io download endpoint now requires a registered account. Downloads are
|
|
22
|
-
* still free at the "basic" tier (GeoJSON+LD output).
|
|
23
|
-
*
|
|
24
|
-
* 1. Register at https://batch.openaddresses.io/register
|
|
25
|
-
* 2. Log in and go to Profile → "Create Token"
|
|
26
|
-
* 3. Export the token: `export OA_BATCH_TOKEN=<your-token>`
|
|
27
|
-
* 4. Re-run the command.
|
|
28
|
-
*
|
|
29
|
-
* The collection URL pattern (verified 2026-05-18):
|
|
30
|
-
*
|
|
31
|
-
* - `POST /api/login {username, password}` → `{token}`
|
|
32
|
-
* - `GET /api/job/{job_id}/output/source.geojson.gz?token={token}`
|
|
33
|
-
*
|
|
34
|
-
* Collections are downloaded as a combined GeoJSON.gz via:
|
|
35
|
-
*
|
|
36
|
-
* - `GET /api/collections/{collection_id}/download` (returns a redirect to S3)
|
|
37
|
-
*
|
|
38
|
-
* Collection IDs discovered from `/api/collections`:
|
|
39
|
-
*
|
|
40
|
-
* - `id=6 name="ca" size=2044467556` (~1.9 GiB uncompressed, verified 2026-05-18)
|
|
41
|
-
*
|
|
42
|
-
* ## Usage
|
|
43
|
-
*
|
|
44
|
-
* ```sh
|
|
45
|
-
* # With token (preferred). Default country: ca. Supports any OA country code (us-west, fr, …)
|
|
46
|
-
* OA_BATCH_TOKEN=<token> mailwoman corpus fetch openaddresses --country ca \
|
|
47
|
-
* --out-root $MAILWOMAN_DATA_ROOT/corpus/sources
|
|
48
|
-
*
|
|
49
|
-
* # Without token (will detect + print instructions, then report the failure):
|
|
50
|
-
* mailwoman corpus fetch openaddresses --country ca
|
|
51
|
-
* ```
|
|
52
|
-
*/
|
|
53
|
-
|
|
54
|
-
/* oxlint-disable sister-software/prefer-region-over-marks -- these markers label steps inside one
|
|
55
|
-
procedure, not sections of declarations. A region there folds nothing a reader wants folded. */
|
|
56
|
-
|
|
57
|
-
import { execFile, spawn } from "node:child_process"
|
|
58
|
-
import { createReadStream, createWriteStream, existsSync, mkdirSync, renameSync, rmSync, statSync } from "node:fs"
|
|
59
|
-
import { join } from "node:path"
|
|
60
|
-
import { Readable } from "node:stream"
|
|
61
|
-
import { pipeline } from "node:stream/promises"
|
|
62
|
-
import { setTimeout as sleep } from "node:timers/promises"
|
|
63
|
-
import { promisify } from "node:util"
|
|
64
|
-
|
|
65
|
-
import { $private } from "@mailwoman/core/env"
|
|
66
|
-
import { sha256File } from "@mailwoman/core/utils"
|
|
67
|
-
|
|
68
|
-
import type { BaseFetchOptions, FetchSummary } from "./download.ts"
|
|
69
|
-
import { isTransientStatus, writeManifest } from "./download.ts"
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Bytes per KiB — the divisor for human-readable sizes, and the floor below which a "download" is an error page rather
|
|
73
|
-
* than data.
|
|
74
|
-
*/
|
|
75
|
-
/**
|
|
76
|
-
* A successful fetch; anything else is an error page or a redirect we did not follow.
|
|
77
|
-
*/
|
|
78
|
-
const HTTP_OK = 200
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Smallest plausible OpenAddresses shard. Below 10 KiB the file is a stub or an error body.
|
|
82
|
-
*/
|
|
83
|
-
const MIN_PLAUSIBLE_SHARD_BYTES = 10_240
|
|
84
|
-
|
|
85
|
-
const BYTES_PER_KIB = 1024
|
|
86
|
-
|
|
87
|
-
const execFileAsync = promisify(execFile)
|
|
88
|
-
|
|
89
|
-
const OA_BASE = "https://batch.openaddresses.io"
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Collection IDs known as of 2026-05-18 (discovered via `GET /api/collections`). OA assigns stable integer IDs to each
|
|
93
|
-
* country collection; re-check `GET /api/collections` if a new country is needed and the ID is unknown.
|
|
94
|
-
*/
|
|
95
|
-
const OA_COLLECTION_IDS: Record<string, number> = {
|
|
96
|
-
ca: 6,
|
|
97
|
-
"us-west": 4,
|
|
98
|
-
"us-south": 3,
|
|
99
|
-
"us-northeast": 2,
|
|
100
|
-
"us-midwest": 5,
|
|
101
|
-
global: 1,
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export interface FetchOpenAddressesOptions extends BaseFetchOptions {
|
|
105
|
-
/**
|
|
106
|
-
* OA country collection code. Default `ca`.
|
|
107
|
-
*/
|
|
108
|
-
country?: string
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
interface OaCollection {
|
|
112
|
-
name?: string
|
|
113
|
-
id?: number
|
|
114
|
-
human?: string
|
|
115
|
-
size?: number
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Stream-count newlines, matching `wc -l` (memory-safe for the multi-GB collection).
|
|
120
|
-
*/
|
|
121
|
-
async function countLines(path: string): Promise<number> {
|
|
122
|
-
let count = 0
|
|
123
|
-
|
|
124
|
-
for await (const chunk of createReadStream(path) as AsyncIterable<Buffer>) {
|
|
125
|
-
for (const byte of chunk) {
|
|
126
|
-
if (byte === 0x0a) {
|
|
127
|
-
count++
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
return count
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
function humanBytes(bytes: number): string {
|
|
136
|
-
const units = ["B", "KiB", "MiB", "GiB", "TiB"]
|
|
137
|
-
let value = bytes
|
|
138
|
-
let unit = 0
|
|
139
|
-
|
|
140
|
-
while (value >= BYTES_PER_KIB && unit < units.length - 1) {
|
|
141
|
-
value /= 1024
|
|
142
|
-
|
|
143
|
-
unit++
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
return `${value.toFixed(unit === 0 ? 0 : 1)}${units[unit]}`
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
interface StreamDownloadOpts {
|
|
150
|
-
headers?: Record<string, string>
|
|
151
|
-
timeoutMs: number
|
|
152
|
-
retries: number
|
|
153
|
-
retryDelayMs: number
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Stream an HTTP download to disk, returning the final HTTP status (0 on network error after retries). Follows
|
|
158
|
-
* redirects (the OA download endpoint 302s to a pre-signed S3 URL).
|
|
159
|
-
*
|
|
160
|
-
* NOTE(phase1): kept local instead of the shared `downloadToFile` — this one streams a multi-GB body to disk (the
|
|
161
|
-
* shared util buffers via `arrayBuffer()`) and returns the HTTP status instead of throwing, which the caller needs for
|
|
162
|
-
* its two-URL fallback ladder.
|
|
163
|
-
*/
|
|
164
|
-
async function streamDownload(url: string, dest: string, opts: StreamDownloadOpts): Promise<number> {
|
|
165
|
-
for (let attempt = 0; attempt <= opts.retries; attempt++) {
|
|
166
|
-
try {
|
|
167
|
-
const res = await fetch(url, {
|
|
168
|
-
headers: opts.headers ?? {},
|
|
169
|
-
redirect: "follow",
|
|
170
|
-
signal: AbortSignal.timeout(opts.timeoutMs),
|
|
171
|
-
})
|
|
172
|
-
|
|
173
|
-
if (res.ok && res.body) {
|
|
174
|
-
await pipeline(Readable.fromWeb(res.body), createWriteStream(dest))
|
|
175
|
-
|
|
176
|
-
return res.status
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
if (attempt < opts.retries && isTransientStatus(res.status)) {
|
|
180
|
-
await sleep(opts.retryDelayMs)
|
|
181
|
-
|
|
182
|
-
continue
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
return res.status
|
|
186
|
-
} catch {
|
|
187
|
-
if (attempt < opts.retries) {
|
|
188
|
-
await sleep(opts.retryDelayMs)
|
|
189
|
-
|
|
190
|
-
continue
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
return 0
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
return 0
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Decompress `src` → `dest` with the same deprioritized subprocess the old fetcher used.
|
|
202
|
-
*/
|
|
203
|
-
async function gunzipToFile(src: string, dest: string): Promise<void> {
|
|
204
|
-
const child = spawn("nice", ["-n", "15", "ionice", "-c", "3", "gunzip", "-c", src], {
|
|
205
|
-
stdio: ["ignore", "pipe", "inherit"],
|
|
206
|
-
})
|
|
207
|
-
|
|
208
|
-
await pipeline(child.stdout!, createWriteStream(dest))
|
|
209
|
-
|
|
210
|
-
await new Promise<void>((resolve, reject) => {
|
|
211
|
-
child.on("close", (code) => (code === 0 ? resolve() : reject(new Error(`gunzip exited with code ${code}`))))
|
|
212
|
-
child.on("error", reject)
|
|
213
|
-
})
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
export async function fetchOpenAddresses(
|
|
217
|
-
options: FetchOpenAddressesOptions,
|
|
218
|
-
report?: (line: string) => void
|
|
219
|
-
): Promise<FetchSummary> {
|
|
220
|
-
const country = options.country ?? "ca"
|
|
221
|
-
const token = $private.OA_BATCH_TOKEN
|
|
222
|
-
|
|
223
|
-
const destDir = join(options.outRoot, "openaddresses", country)
|
|
224
|
-
const manifestPath = join(destDir, "MANIFEST.json")
|
|
225
|
-
const outputFile = join(destDir, "collection.geojsonl")
|
|
226
|
-
|
|
227
|
-
const fail = (code: string): FetchSummary => ({ fetched: 0, skipped: 0, failed: 1, failedCodes: [code] })
|
|
228
|
-
|
|
229
|
-
report?.(`=== fetch openaddresses: country=${country}`)
|
|
230
|
-
report?.(` dest: ${destDir}`)
|
|
231
|
-
|
|
232
|
-
mkdirSync(destDir, { recursive: true })
|
|
233
|
-
|
|
234
|
-
// MARK: Authentication check
|
|
235
|
-
|
|
236
|
-
if (!token) {
|
|
237
|
-
report?.(`
|
|
238
|
-
ERROR: OA_BATCH_TOKEN is not set.
|
|
239
|
-
|
|
240
|
-
As of 2026-05-18, batch.openaddresses.io requires a registered (free) account
|
|
241
|
-
to download collection files. Data remains openly licensed — the auth gate
|
|
242
|
-
is there to prevent CDN abuse, not to restrict access.
|
|
243
|
-
|
|
244
|
-
Steps to get a token:
|
|
245
|
-
1. Register at: https://batch.openaddresses.io/register
|
|
246
|
-
2. Verify your email and log in.
|
|
247
|
-
3. Go to Profile → "Create Token" → copy the token.
|
|
248
|
-
4. Export it in this shell:
|
|
249
|
-
export OA_BATCH_TOKEN=<your-token>
|
|
250
|
-
5. Re-run this command.
|
|
251
|
-
|
|
252
|
-
The Canada collection (ca) is ~2 GiB compressed / ~7 GiB uncompressed
|
|
253
|
-
(estimated), so budget ~20–45 minutes at typical cloud-to-host bandwidth.
|
|
254
|
-
`)
|
|
255
|
-
|
|
256
|
-
return fail("OA_BATCH_TOKEN")
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
// MARK: Determine collection ID
|
|
260
|
-
|
|
261
|
-
let collectionID = OA_COLLECTION_IDS[country]
|
|
262
|
-
|
|
263
|
-
if (collectionID === undefined) {
|
|
264
|
-
report?.(`Unknown country code '${country}'. Fetching collection list to find ID...`)
|
|
265
|
-
|
|
266
|
-
const res = await fetch(`${OA_BASE}/api/collections`, {
|
|
267
|
-
headers: { Authorization: `Bearer ${token}`, "Accept-Encoding": "gzip, br" },
|
|
268
|
-
signal: AbortSignal.timeout(30_000),
|
|
269
|
-
})
|
|
270
|
-
|
|
271
|
-
if (!res.ok) {
|
|
272
|
-
report?.(`ERROR: GET /api/collections returned HTTP ${res.status}.`)
|
|
273
|
-
|
|
274
|
-
return fail(country)
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
const collections = (await res.json()) as OaCollection[]
|
|
278
|
-
const match = collections.find((item) => item.name === country)
|
|
279
|
-
|
|
280
|
-
if (match?.id === undefined) {
|
|
281
|
-
report?.(`ERROR: Could not find a collection named '${country}' in GET /api/collections.`)
|
|
282
|
-
report?.(`Available collections:`)
|
|
283
|
-
|
|
284
|
-
for (const item of collections) {
|
|
285
|
-
const size = (item.size ?? 0).toLocaleString()
|
|
286
|
-
report?.(` ${(item.name ?? "").padEnd(20)} id=${item.id} ${item.human ?? ""} size=${size} bytes`)
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
return fail(country)
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
collectionID = match.id
|
|
293
|
-
report?.(` Found collection id=${collectionID} for '${country}'`)
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
// MARK: Download via the collections download endpoint (302s to S3)
|
|
297
|
-
|
|
298
|
-
report?.(` Resolving download URL for collection id=${collectionID}...`)
|
|
299
|
-
report?.(` Attempting authenticated download...`)
|
|
300
|
-
|
|
301
|
-
const tmpGz = join(destDir, "collection.geojsonl.gz.tmp")
|
|
302
|
-
const tmpRaw = join(destDir, "collection.geojsonl.tmp")
|
|
303
|
-
const sourceURL = `${OA_BASE}/api/collections/${collectionID}/download`
|
|
304
|
-
|
|
305
|
-
let httpStatus = await streamDownload(sourceURL, tmpGz, {
|
|
306
|
-
headers: { Authorization: `Bearer ${token}` },
|
|
307
|
-
timeoutMs: 7_200_000,
|
|
308
|
-
retries: 3,
|
|
309
|
-
retryDelayMs: 30_000,
|
|
310
|
-
})
|
|
311
|
-
|
|
312
|
-
if (httpStatus !== HTTP_OK) {
|
|
313
|
-
// Try the geojsonl.gz directly with token as query param (alternate URL shape).
|
|
314
|
-
httpStatus = await streamDownload(`${OA_BASE}/api/collections/${collectionID}/geojsonl.gz?token=${token}`, tmpGz, {
|
|
315
|
-
timeoutMs: 7_200_000,
|
|
316
|
-
retries: 3,
|
|
317
|
-
retryDelayMs: 30_000,
|
|
318
|
-
})
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
if (httpStatus !== HTTP_OK) {
|
|
322
|
-
rmSync(tmpGz, { force: true })
|
|
323
|
-
|
|
324
|
-
report?.(`
|
|
325
|
-
ERROR: Download returned HTTP ${httpStatus}.
|
|
326
|
-
|
|
327
|
-
Likely causes:
|
|
328
|
-
1. OA_BATCH_TOKEN is invalid or expired — re-create it at Profile → Tokens.
|
|
329
|
-
2. The collection download endpoint URL has changed (this module was written
|
|
330
|
-
against the 2026-05-18 batch.openaddresses.io API; it may need updating).
|
|
331
|
-
3. Network error or CDN outage.
|
|
332
|
-
|
|
333
|
-
Manual download (after logging in to batch.openaddresses.io):
|
|
334
|
-
- Navigate to https://batch.openaddresses.io/collection/${collectionID}
|
|
335
|
-
- Click "GeoJSON+LD" to download the collection.
|
|
336
|
-
- Save as: ${outputFile}
|
|
337
|
-
|
|
338
|
-
URL tried: ${OA_BASE}/api/collections/${collectionID}/download
|
|
339
|
-
`)
|
|
340
|
-
|
|
341
|
-
return fail(country)
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
// MARK: Decompress if the downloaded file is gzipped
|
|
345
|
-
|
|
346
|
-
const fileMagic = (await execFileAsync("file", ["--brief", tmpGz]).catch(() => ({ stdout: "" }))).stdout
|
|
347
|
-
|
|
348
|
-
if (/gzip|compressed/i.test(fileMagic)) {
|
|
349
|
-
report?.(` Decompressing gzip archive...`)
|
|
350
|
-
await gunzipToFile(tmpGz, tmpRaw)
|
|
351
|
-
rmSync(tmpGz, { force: true })
|
|
352
|
-
renameSync(tmpRaw, outputFile)
|
|
353
|
-
} else if (/JSON|ASCII|UTF-8/i.test(fileMagic)) {
|
|
354
|
-
// Already line-delimited GeoJSON.
|
|
355
|
-
renameSync(tmpGz, outputFile)
|
|
356
|
-
rmSync(tmpRaw, { force: true })
|
|
357
|
-
} else {
|
|
358
|
-
// Unknown type — keep as-is and let the operator inspect.
|
|
359
|
-
renameSync(tmpGz, outputFile)
|
|
360
|
-
report?.(` WARNING: Downloaded file type is '${fileMagic.trim()}' — may need manual decompression.`)
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
// MARK: Verify + write MANIFEST
|
|
364
|
-
|
|
365
|
-
if (!existsSync(outputFile)) {
|
|
366
|
-
report?.(`ERROR: Output file not found at ${outputFile} after download.`)
|
|
367
|
-
|
|
368
|
-
return fail(country)
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
const size = statSync(outputFile).size
|
|
372
|
-
|
|
373
|
-
if (size < MIN_PLAUSIBLE_SHARD_BYTES) {
|
|
374
|
-
report?.(`ERROR: File is suspiciously small (${size} bytes) — likely an error response.`)
|
|
375
|
-
|
|
376
|
-
return fail(country)
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
const sha = await sha256File(outputFile)
|
|
380
|
-
const rowCount = await countLines(outputFile)
|
|
381
|
-
const downloadedAt = new Date().toISOString().replace(/\.\d{3}Z$/, "Z")
|
|
382
|
-
|
|
383
|
-
const manifest = {
|
|
384
|
-
source_url: sourceURL,
|
|
385
|
-
collection_id: collectionID,
|
|
386
|
-
country,
|
|
387
|
-
filename: "collection.geojsonl",
|
|
388
|
-
downloaded_at: downloadedAt,
|
|
389
|
-
sha256: sha,
|
|
390
|
-
bytes: size,
|
|
391
|
-
row_count: rowCount,
|
|
392
|
-
notes:
|
|
393
|
-
"batch.openaddresses.io requires a free registered account for downloads. License is mixed per-row; use the openaddresses adapter with allowShareAlike=false (default) to filter Tier-C rows.",
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
await writeManifest(manifestPath, manifest)
|
|
397
|
-
|
|
398
|
-
report?.(` ✓ ${humanBytes(size)} rows=${rowCount} sha256=${sha}`)
|
|
399
|
-
report?.(` MANIFEST written to ${manifestPath}`)
|
|
400
|
-
report?.(`=== done`)
|
|
401
|
-
report?.(`Feed to the adapter:`)
|
|
402
|
-
report?.(` mailwoman corpus run openaddresses \\`)
|
|
403
|
-
report?.(` --input ${outputFile} \\`)
|
|
404
|
-
report?.(` --country ${country.toUpperCase()} \\`)
|
|
405
|
-
report?.(` --output ${options.outRoot}`)
|
|
406
|
-
|
|
407
|
-
return { fetched: 1, skipped: 0, failed: 0, failedCodes: [] }
|
|
408
|
-
}
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @copyright Sister Software
|
|
3
|
-
* @license AGPL-3.0
|
|
4
|
-
* @author Teffen Ellis, et al.
|
|
5
|
-
*
|
|
6
|
-
* Fetch the OurAirports CSV dumps — the VENUE side of the sub-venue corpus arc (#35).
|
|
7
|
-
*
|
|
8
|
-
* Source : https://davidmegginson.github.io/ourairports-data/ (the project's own GitHub Pages
|
|
9
|
-
* mirror of the nightly export; `ourairports.com/data/` redirects here).
|
|
10
|
-
* License: PUBLIC DOMAIN. OurAirports places its data in the public domain and asks only for a
|
|
11
|
-
* courtesy credit — no attribution obligation rides on a derived shard, which makes this
|
|
12
|
-
* the one transport source in the arc with no licensing question at all. Tier A.
|
|
13
|
-
*
|
|
14
|
-
* ## What it is good for, and what it is not
|
|
15
|
-
*
|
|
16
|
-
* `airports.csv` is every airport on earth with ICAO/IATA codes, coordinates, `municipality`, and
|
|
17
|
-
* `iso_country` — 12.7 MB, ~83,000 rows as of 2026-08-04. That is the CONTAINING VENUE for a
|
|
18
|
-
* `<sub-venue>, <venue>, <street>, <locality>, <postcode>` corpus line, and it is better at that job
|
|
19
|
-
* than OSM: every row is named, the name is canonical, and `municipality` gives the locality without
|
|
20
|
-
* a spatial join.
|
|
21
|
-
*
|
|
22
|
-
* It carries NO interior structure. There is no terminal, concourse, gate or pier table — the
|
|
23
|
-
* corpus task says as much ("Good for the venue side of each pair, weaker on interior structure")
|
|
24
|
-
* and a row-level read confirms it. Pair it with the OSM `aeroway` extractor
|
|
25
|
-
* (`@mailwoman/osm/sdk`'s `extractOSMSubVenues`), which is where the sub-venue half comes from.
|
|
26
|
-
*
|
|
27
|
-
* ## Why `downloadToFile` and not `APIClient`
|
|
28
|
-
*
|
|
29
|
-
* `AGENTS.md` routes HTTP through `APIClient`, and that rule is about API REQUESTS — small bodies,
|
|
30
|
-
* repeated calls, rate-limited hosts. This is four static file transfers against a GitHub Pages CDN
|
|
31
|
-
* with no rate limit and nothing to pace, run once per refresh. It uses the same `downloadToFile`
|
|
32
|
-
* every other module in this `fetch/` family uses, which is where the retry and timeout live.
|
|
33
|
-
* The Wikidata sibling (`wikidata-subvenue.ts`) IS an API client and is built on `APIClient`
|
|
34
|
-
* accordingly; the split between the two is the one `AGENTS.md` draws.
|
|
35
|
-
*
|
|
36
|
-
* Invoke via `mailwoman corpus fetch ourairports --out-root <path>`.
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
import { mkdirSync } from "node:fs"
|
|
40
|
-
import { join } from "node:path"
|
|
41
|
-
|
|
42
|
-
import { sha256File } from "@mailwoman/core/utils"
|
|
43
|
-
|
|
44
|
-
import type { BaseFetchOptions, FetchSummary } from "./download.ts"
|
|
45
|
-
import { downloadToFile, writeManifest } from "./download.ts"
|
|
46
|
-
|
|
47
|
-
const SLUG = "ourairports"
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* The GitHub Pages mirror the project itself publishes. `ourairports.com/data/*.csv` 302s here, so pointing at the
|
|
51
|
-
* mirror directly saves a redirect and is the URL the project's own README gives.
|
|
52
|
-
*/
|
|
53
|
-
const BASE_URL = "https://davidmegginson.github.io/ourairports-data"
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* The files worth having, and why each one.
|
|
57
|
-
*
|
|
58
|
-
* `airports.csv` is the payload. The other three are small joins that turn its codes into text: `countries.csv` and
|
|
59
|
-
* `regions.csv` expand `iso_country`/`iso_region` into names (a corpus line needs "Germany", not "DE"), and
|
|
60
|
-
* `runways.csv` is the only file carrying per-airport sub-structure of any kind — runway designators, which are NOT
|
|
61
|
-
* sub-venue designators (nobody addresses mail to a runway) but are worth having on disk as the negative class if the
|
|
62
|
-
* shard ever needs one.
|
|
63
|
-
*/
|
|
64
|
-
const FILES = ["airports.csv", "countries.csv", "regions.csv", "runways.csv"] as const
|
|
65
|
-
|
|
66
|
-
export type FetchOurAirportsOptions = BaseFetchOptions
|
|
67
|
-
|
|
68
|
-
interface OurAirportsFileEntry {
|
|
69
|
-
filename: string
|
|
70
|
-
source_url: string
|
|
71
|
-
sha256: string
|
|
72
|
-
bytes: number
|
|
73
|
-
/**
|
|
74
|
-
* The upstream `Last-Modified`, when the CDN gave one. This is the DATA's vintage; `downloaded_at` is only when we
|
|
75
|
-
* asked. `corpus/AGENTS.md` has the standing warning that a file's mtime is not its data's vintage — recording the
|
|
76
|
-
* upstream header is how a later refresh decision gets made on the right number.
|
|
77
|
-
*/
|
|
78
|
-
last_modified: string | null
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
interface OurAirportsManifest {
|
|
82
|
-
source: string
|
|
83
|
-
base_url: string
|
|
84
|
-
license: string
|
|
85
|
-
downloaded_at: string
|
|
86
|
-
files: OurAirportsFileEntry[]
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Read the upstream `Last-Modified` with a HEAD. Returns `null` on any failure — provenance metadata is nice to have
|
|
91
|
-
* and must never fail a download that otherwise succeeded.
|
|
92
|
-
*/
|
|
93
|
-
async function readLastModified(url: string): Promise<string | null> {
|
|
94
|
-
try {
|
|
95
|
-
const res = await fetch(url, { method: "HEAD", signal: AbortSignal.timeout(30_000) })
|
|
96
|
-
|
|
97
|
-
return res.ok ? res.headers.get("last-modified") : null
|
|
98
|
-
} catch {
|
|
99
|
-
return null
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Download the OurAirports CSVs into `<outRoot>/ourairports/`, with a sibling `MANIFEST.json` carrying each file's
|
|
105
|
-
* origin URL, sha256, byte count and upstream `Last-Modified`.
|
|
106
|
-
*/
|
|
107
|
-
export async function fetchOurAirports(
|
|
108
|
-
options: FetchOurAirportsOptions,
|
|
109
|
-
report?: (line: string) => void
|
|
110
|
-
): Promise<FetchSummary> {
|
|
111
|
-
const destDir = join(options.outRoot, SLUG)
|
|
112
|
-
mkdirSync(destDir, { recursive: true })
|
|
113
|
-
|
|
114
|
-
const entries: OurAirportsFileEntry[] = []
|
|
115
|
-
const failedCodes: string[] = []
|
|
116
|
-
let fetched = 0
|
|
117
|
-
let failed = 0
|
|
118
|
-
|
|
119
|
-
for (const filename of FILES) {
|
|
120
|
-
const url = `${BASE_URL}/${filename}`
|
|
121
|
-
const dest = join(destDir, filename)
|
|
122
|
-
|
|
123
|
-
report?.(`=== ${SLUG} / ${filename}`)
|
|
124
|
-
|
|
125
|
-
try {
|
|
126
|
-
const [{ bytes }, lastModified] = await Promise.all([
|
|
127
|
-
downloadToFile({
|
|
128
|
-
url,
|
|
129
|
-
dest,
|
|
130
|
-
timeoutMs: 600_000,
|
|
131
|
-
retries: 2,
|
|
132
|
-
headers: { "Accept-Encoding": "gzip, br" },
|
|
133
|
-
report,
|
|
134
|
-
}),
|
|
135
|
-
readLastModified(url),
|
|
136
|
-
])
|
|
137
|
-
|
|
138
|
-
entries.push({
|
|
139
|
-
filename,
|
|
140
|
-
source_url: url,
|
|
141
|
-
sha256: await sha256File(dest),
|
|
142
|
-
bytes,
|
|
143
|
-
last_modified: lastModified,
|
|
144
|
-
})
|
|
145
|
-
|
|
146
|
-
fetched++
|
|
147
|
-
} catch (error) {
|
|
148
|
-
report?.(`✗ ${filename}: ${error instanceof Error ? error.message : String(error)}`)
|
|
149
|
-
failedCodes.push(filename)
|
|
150
|
-
|
|
151
|
-
failed++
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
const manifest: OurAirportsManifest = {
|
|
156
|
-
source: "OurAirports",
|
|
157
|
-
base_url: BASE_URL,
|
|
158
|
-
license: "public domain (courtesy credit requested)",
|
|
159
|
-
downloaded_at: new Date().toISOString(),
|
|
160
|
-
files: entries,
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
await writeManifest(join(destDir, "MANIFEST.json"), manifest)
|
|
164
|
-
|
|
165
|
-
return { fetched, skipped: 0, failed, failedCodes }
|
|
166
|
-
}
|
package/src/tools/fetch/ppd.ts
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @copyright Sister Software
|
|
3
|
-
* @license AGPL-3.0
|
|
4
|
-
* @author Teffen Ellis, et al.
|
|
5
|
-
*
|
|
6
|
-
* HM Land Registry Price Paid Data → OA-shaped GB tuples CSV for the `locale` shard recipe.
|
|
7
|
-
*
|
|
8
|
-
* PPD is E&W-only, ALL-CAPS, and column-structured (no header row). We emit the exact OA header
|
|
9
|
-
* `readTuples` (`shard-recipes/locale.ts`) indexes by name, mapped for `districtAsLocality: true`:
|
|
10
|
-
* CITY = PPD locality (dependent locality; blank when it merely repeats the town — 1995-era rows
|
|
11
|
-
* pad locality=town), DISTRICT = PPD post town, REGION = county. SAON (flat/unit) rows and
|
|
12
|
-
* building-name PAONs are skipped in v1 and counted — `LocaleBaseTuple` has no unit field yet.
|
|
13
|
-
*
|
|
14
|
-
* Snapshot provenance: `$MAILWOMAN_DATA_ROOT/ppd/<date>/pp-complete.csv` (md5 sibling).
|
|
15
|
-
* License: OGL v3 (attribution: HM Land Registry).
|
|
16
|
-
*/
|
|
17
|
-
import { createReadStream, createWriteStream } from "node:fs"
|
|
18
|
-
import { parseArgs } from "node:util"
|
|
19
|
-
|
|
20
|
-
import { runIfScript } from "@mailwoman/core/scripting"
|
|
21
|
-
import { dataRootPath } from "@mailwoman/core/utils"
|
|
22
|
-
import { CSVSpliterator } from "spliterator"
|
|
23
|
-
|
|
24
|
-
import { titleCaseGB } from "../gb-title-case.ts"
|
|
25
|
-
|
|
26
|
-
const HOUSE_NUMBER_PATTERN = /^\d+[A-Za-z]?(\s*-\s*\d+[A-Za-z]?)?$/
|
|
27
|
-
|
|
28
|
-
export interface PPDExtractStats {
|
|
29
|
-
kept: number
|
|
30
|
-
skippedSAON: number
|
|
31
|
-
skippedPAON: number
|
|
32
|
-
skippedNoStreet: number
|
|
33
|
-
skippedNoPostcode: number
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const quote = (value: string): string => (value ? `"${value.replaceAll('"', '""')}"` : "")
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Convert PPD rows (`id,price,date,postcode,type,new,tenure,PAON,SAON,street,locality,town,district,county,cat,status`
|
|
40
|
-
* — headerless) into OA-shaped tuple lines via `write`, applying the skip rules + title-casing. Accepts a plain array
|
|
41
|
-
* of rows (tests) or a streamed async source (the real 31M-row extraction).
|
|
42
|
-
*/
|
|
43
|
-
export async function extractPPDTuples(
|
|
44
|
-
input: AsyncIterable<string[]> | Iterable<string[]>,
|
|
45
|
-
write: (line: string) => void
|
|
46
|
-
): Promise<PPDExtractStats> {
|
|
47
|
-
const stats: PPDExtractStats = { kept: 0, skippedSAON: 0, skippedPAON: 0, skippedNoStreet: 0, skippedNoPostcode: 0 }
|
|
48
|
-
write("NUMBER,STREET,CITY,DISTRICT,REGION,POSTCODE")
|
|
49
|
-
|
|
50
|
-
for await (const cells of input) {
|
|
51
|
-
// HM Land Registry Price Paid Data column order (see the PPD FAQ for the full field list).
|
|
52
|
-
const postcode = cells[3]
|
|
53
|
-
const paon = cells[7]
|
|
54
|
-
const saon = cells[8]
|
|
55
|
-
const street = cells[9]
|
|
56
|
-
const locality = cells[10]
|
|
57
|
-
const town = cells[11]
|
|
58
|
-
const county = cells[13]
|
|
59
|
-
|
|
60
|
-
if (saon) {
|
|
61
|
-
stats.skippedSAON++
|
|
62
|
-
|
|
63
|
-
continue
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
if (!paon || !HOUSE_NUMBER_PATTERN.test(paon)) {
|
|
67
|
-
stats.skippedPAON++
|
|
68
|
-
|
|
69
|
-
continue
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (!street) {
|
|
73
|
-
stats.skippedNoStreet++
|
|
74
|
-
|
|
75
|
-
continue
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
if (!postcode) {
|
|
79
|
-
stats.skippedNoPostcode++
|
|
80
|
-
|
|
81
|
-
continue
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const number = paon.replace(/\s*-\s*/, "-")
|
|
85
|
-
const city = locality && locality !== town ? titleCaseGB(locality) : ""
|
|
86
|
-
|
|
87
|
-
write(
|
|
88
|
-
[
|
|
89
|
-
number,
|
|
90
|
-
quote(titleCaseGB(street)),
|
|
91
|
-
quote(city),
|
|
92
|
-
quote(titleCaseGB(town ?? "")),
|
|
93
|
-
quote(titleCaseGB(county ?? "")),
|
|
94
|
-
postcode,
|
|
95
|
-
].join(",")
|
|
96
|
-
)
|
|
97
|
-
|
|
98
|
-
stats.kept++
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return stats
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Stream `inputPath` (PPD CSV) → `outputPath` (OA-shaped tuples CSV), returning the row-count stats.
|
|
106
|
-
*/
|
|
107
|
-
export async function runPPDExtract(inputPath: string, outputPath: string): Promise<PPDExtractStats> {
|
|
108
|
-
// No `encoding` — CSVSpliterator delimits raw bytes and decodes utf-8 itself (see readTuples in
|
|
109
|
-
// shard-recipes/locale.ts). `header: false` yields every row as data — PPD ships no header row.
|
|
110
|
-
const rows = CSVSpliterator.fromAsync<string[]>(createReadStream(inputPath), {
|
|
111
|
-
mode: "array",
|
|
112
|
-
header: false,
|
|
113
|
-
enableQuoteHandling: true,
|
|
114
|
-
})
|
|
115
|
-
|
|
116
|
-
const out = createWriteStream(outputPath, { encoding: "utf8" })
|
|
117
|
-
const stats = await extractPPDTuples(rows, (line) => out.write(line + "\n"))
|
|
118
|
-
|
|
119
|
-
await new Promise<void>((res) => {
|
|
120
|
-
out.end(res)
|
|
121
|
-
})
|
|
122
|
-
|
|
123
|
-
return stats
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
runIfScript(import.meta, async () => {
|
|
127
|
-
const { values } = parseArgs({
|
|
128
|
-
options: {
|
|
129
|
-
input: { type: "string", default: dataRootPath("ppd", "2026-07-22", "pp-complete.csv") },
|
|
130
|
-
output: { type: "string", default: dataRootPath("ppd", "2026-07-22", "gb-tuples.csv") },
|
|
131
|
-
},
|
|
132
|
-
})
|
|
133
|
-
|
|
134
|
-
const stats = await runPPDExtract(values.input!, values.output!)
|
|
135
|
-
|
|
136
|
-
console.log(`[ppd] ${JSON.stringify(stats)}`)
|
|
137
|
-
})
|