@mailwoman/corpus 9.2.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 +22 -22
- package/data/PROVENANCE.md +7 -7
- 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/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/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.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.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.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.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.map +1 -0
- package/out/adapters/state-ia-contractors/adapter.js.map +1 -0
- package/out/adapters/state-ny-notaries/adapter.d.ts.map +1 -0
- package/out/adapters/state-ny-notaries/adapter.js.map +1 -0
- package/out/adapters/state-tx-notaries/adapter.d.ts.map +1 -0
- package/out/adapters/state-tx-notaries/adapter.js.map +1 -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.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.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.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.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.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 +259 -194
- package/out/src/adapters/ban/adapter.d.ts.map +0 -1
- package/out/src/adapters/ban/adapter.js +0 -149
- 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.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.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.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 -133
- package/out/src/adapters/state-hi-schools/adapter.js.map +0 -1
- package/out/src/adapters/state-ia-contractors/adapter.d.ts.map +0 -1
- package/out/src/adapters/state-ia-contractors/adapter.js.map +0 -1
- package/out/src/adapters/state-ny-notaries/adapter.d.ts.map +0 -1
- package/out/src/adapters/state-ny-notaries/adapter.js.map +0 -1
- package/out/src/adapters/state-tx-notaries/adapter.d.ts.map +0 -1
- package/out/src/adapters/state-tx-notaries/adapter.js.map +0 -1
- 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 -139
- 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 -114
- 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 -124
- 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.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.map +0 -1
- package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.js +0 -156
- package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.js.map +0 -1
- package/out/src/adapters/utils/index.d.ts +0 -150
- package/out/src/adapters/utils/index.d.ts.map +0 -1
- package/out/src/adapters/utils/index.js +0 -159
- package/out/src/adapters/utils/index.js.map +0 -1
- 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 -82
- package/out/src/adapters/wof-admin-json/adapter.d.ts.map +0 -1
- package/out/src/adapters/wof-admin-json/adapter.js +0 -224
- package/out/src/adapters/wof-admin-json/adapter.js.map +0 -1
- package/out/src/adapters/wof-json-rows.d.ts +0 -32
- package/out/src/adapters/wof-json-rows.d.ts.map +0 -1
- package/out/src/adapters/wof-json-rows.js +0 -45
- package/out/src/adapters/wof-json-rows.js.map +0 -1
- package/out/src/adapters/wof-postalcode-json/adapter.d.ts +0 -65
- package/out/src/adapters/wof-postalcode-json/adapter.d.ts.map +0 -1
- package/out/src/adapters/wof-postalcode-json/adapter.js +0 -160
- package/out/src/adapters/wof-postalcode-json/adapter.js.map +0 -1
- package/out/src/build.d.ts +0 -132
- package/out/src/build.d.ts.map +0 -1
- package/out/src/build.js +0 -251
- 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 -69
- 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 -82
- package/out/src/shard-recipes/anchor-absorption.js.map +0 -1
- package/out/src/shard-recipes/bare-country.d.ts +0 -25
- package/out/src/shard-recipes/bare-country.d.ts.map +0 -1
- package/out/src/shard-recipes/bare-country.js +0 -87
- package/out/src/shard-recipes/bare-country.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 -406
- 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 -100
- 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 -188
- 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 -143
- 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 -226
- 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 -208
- 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 -89
- 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 -459
- 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/reviewed-postcode-tail.d.ts +0 -47
- package/out/src/shard-recipes/reviewed-postcode-tail.d.ts.map +0 -1
- package/out/src/shard-recipes/reviewed-postcode-tail.js +0 -125
- package/out/src/shard-recipes/reviewed-postcode-tail.js.map +0 -1
- package/out/src/shard-recipes/scaffold.d.ts +0 -246
- package/out/src/shard-recipes/scaffold.d.ts.map +0 -1
- package/out/src/shard-recipes/scaffold.js +0 -137
- 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 -710
- package/out/src/shard-recipes/sub-venue.js.map +0 -1
- package/out/src/shard-recipes/trailing-region.d.ts +0 -74
- package/out/src/shard-recipes/trailing-region.d.ts.map +0 -1
- package/out/src/shard-recipes/trailing-region.js +0 -157
- package/out/src/shard-recipes/trailing-region.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 -267
- 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 -221
- 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 -708
- 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 -239
- package/out/src/tools/fetch/ban.js.map +0 -1
- package/out/src/tools/fetch/download.d.ts +0 -78
- package/out/src/tools/fetch/download.d.ts.map +0 -1
- package/out/src/tools/fetch/download.js +0 -116
- package/out/src/tools/fetch/download.js.map +0 -1
- package/out/src/tools/fetch/geonames-dump.d.ts +0 -87
- package/out/src/tools/fetch/geonames-dump.d.ts.map +0 -1
- package/out/src/tools/fetch/geonames-dump.js +0 -178
- package/out/src/tools/fetch/geonames-dump.js.map +0 -1
- package/out/src/tools/fetch/geonames-postal.d.ts +0 -76
- package/out/src/tools/fetch/geonames-postal.d.ts.map +0 -1
- package/out/src/tools/fetch/geonames-postal.js +0 -125
- package/out/src/tools/fetch/geonames-postal.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 -144
- package/out/src/tools/fetch/index.d.ts.map +0 -1
- package/out/src/tools/fetch/index.js +0 -143
- 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 -234
- 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 -126
- 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 -317
- 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 -128
- package/out/src/tools/fetch/ourairports.js.map +0 -1
- 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 -162
- package/out/src/tools/fetch/state-hi-schools.js.map +0 -1
- package/out/src/tools/fetch/state-sources.d.ts +0 -26
- package/out/src/tools/fetch/state-sources.d.ts.map +0 -1
- package/out/src/tools/fetch/state-sources.js +0 -111
- 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 -248
- 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 -413
- 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 -296
- 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 -39
- package/out/src/tools/overlay-manifest.d.ts.map +0 -1
- package/out/src/tools/overlay-manifest.js +0 -98
- 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/postcode-triples.d.ts +0 -175
- package/out/src/tools/postcode-triples.d.ts.map +0 -1
- package/out/src/tools/postcode-triples.js +0 -304
- package/out/src/tools/postcode-triples.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 -100
- 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 -175
- package/out/src/tools/shard-translit.js.map +0 -1
- package/out/src/tools/sub-venue/harvest.d.ts +0 -100
- package/out/src/tools/sub-venue/harvest.d.ts.map +0 -1
- package/out/src/tools/sub-venue/harvest.js +0 -168
- package/out/src/tools/sub-venue/harvest.js.map +0 -1
- package/out/src/tools/sub-venue/head-nouns.d.ts +0 -50
- package/out/src/tools/sub-venue/head-nouns.d.ts.map +0 -1
- package/out/src/tools/sub-venue/head-nouns.js +0 -210
- package/out/src/tools/sub-venue/head-nouns.js.map +0 -1
- package/out/src/tools/sub-venue/surfaces.d.ts +0 -45
- package/out/src/tools/sub-venue/surfaces.d.ts.map +0 -1
- package/out/src/tools/sub-venue/surfaces.js +0 -77
- package/out/src/tools/sub-venue/surfaces.js.map +0 -1
- package/out/src/tools/sub-venue/table.d.ts +0 -229
- package/out/src/tools/sub-venue/table.d.ts.map +0 -1
- package/out/src/tools/sub-venue/table.js +0 -108
- package/out/src/tools/sub-venue/table.js.map +0 -1
- package/out/src/tools/sub-venue/wikidata.d.ts +0 -26
- package/out/src/tools/sub-venue/wikidata.d.ts.map +0 -1
- package/out/src/tools/sub-venue/wikidata.js +0 -62
- package/out/src/tools/sub-venue/wikidata.js.map +0 -1
- package/out/src/tools/sub-venue-lexicon.d.ts +0 -156
- package/out/src/tools/sub-venue-lexicon.d.ts.map +0 -1
- package/out/src/tools/sub-venue-lexicon.js +0 -282
- 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.map +0 -1
- package/out/src/utils/parquet.d.ts +0 -162
- package/out/src/utils/parquet.d.ts.map +0 -1
- package/out/src/utils/parquet.js +0 -262
- 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 -191
- package/src/adapters/ban/street-decompose.ts +0 -96
- package/src/adapters/fcc-bdc/adapter.ts +0 -174
- package/src/adapters/geonames/adapter.ts +0 -200
- package/src/adapters/geonames-postal/adapter.ts +0 -119
- package/src/adapters/gnaf/adapter.ts +0 -149
- package/src/adapters/gnaf/assemble.ts +0 -226
- package/src/adapters/index.ts +0 -149
- package/src/adapters/openaddresses/adapter.ts +0 -251
- package/src/adapters/overture/adapter.ts +0 -162
- package/src/adapters/state-hi-schools/adapter.ts +0 -164
- package/src/adapters/synth-po-box/adapter.ts +0 -204
- package/src/adapters/tiger/adapter.ts +0 -253
- package/src/adapters/tiger/street-decompose.ts +0 -111
- package/src/adapters/usgov-hrsa-fqhc/adapter.ts +0 -183
- package/src/adapters/usgov-imls-pls/adapter.ts +0 -143
- package/src/adapters/usgov-irs-bmf/adapter.ts +0 -163
- package/src/adapters/usgov-nad/adapter.ts +0 -348
- package/src/adapters/usgov-nppes/adapter.ts +0 -159
- package/src/adapters/usgov-samhsa-treatment-locator/adapter.ts +0 -204
- package/src/adapters/utils/index.ts +0 -233
- package/src/adapters/wof-admin-jp/adapter.ts +0 -216
- package/src/adapters/wof-admin-json/adapter.ts +0 -256
- package/src/adapters/wof-json-rows.ts +0 -79
- package/src/adapters/wof-postalcode-json/adapter.ts +0 -183
- 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 -97
- package/src/parquet-wrapper/schema.ts +0 -88
- package/src/parquet-wrapper/writer.ts +0 -110
- package/src/runner.ts +0 -317
- package/src/shard-recipes/anchor-absorption.ts +0 -103
- package/src/shard-recipes/bare-country.ts +0 -95
- package/src/shard-recipes/boundary-stress.ts +0 -101
- package/src/shard-recipes/country-balanced.ts +0 -524
- package/src/shard-recipes/cz-pcfirst-preposition.ts +0 -111
- package/src/shard-recipes/fr-admin-split.ts +0 -239
- package/src/shard-recipes/fr-bare-street.ts +0 -170
- package/src/shard-recipes/fr-fragment.ts +0 -332
- package/src/shard-recipes/fr-lieudit.ts +0 -302
- package/src/shard-recipes/fr-order.ts +0 -258
- package/src/shard-recipes/german.ts +0 -170
- package/src/shard-recipes/house-venue.ts +0 -88
- package/src/shard-recipes/index.ts +0 -95
- package/src/shard-recipes/intersection.ts +0 -630
- package/src/shard-recipes/locale.ts +0 -599
- 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 -920
- package/src/shard-recipes/po-box.ts +0 -119
- package/src/shard-recipes/reviewed-postcode-tail.ts +0 -189
- package/src/shard-recipes/scaffold.ts +0 -360
- package/src/shard-recipes/si-bare-village.ts +0 -97
- package/src/shard-recipes/street-affix.ts +0 -826
- 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 -885
- package/src/shard-recipes/sub-venue.ts +0 -984
- package/src/shard-recipes/trailing-region.ts +0 -183
- package/src/shard-recipes/unit.ts +0 -321
- package/src/synthesizers/anchor-absorption.ts +0 -290
- package/src/synthesizers/boundary-stress.ts +0 -531
- package/src/synthesizers/german.ts +0 -251
- package/src/synthesizers/house-venue.ts +0 -330
- 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 -274
- package/src/synthesizers/utils.ts +0 -903
- package/src/tools/align-shard.ts +0 -70
- package/src/tools/audit.ts +0 -399
- package/src/tools/corpus-stats.ts +0 -184
- package/src/tools/fetch/ban.ts +0 -290
- package/src/tools/fetch/download.ts +0 -176
- package/src/tools/fetch/geonames-dump.ts +0 -267
- package/src/tools/fetch/geonames-postal.ts +0 -180
- package/src/tools/fetch/hrsa.ts +0 -68
- package/src/tools/fetch/imls-pls.ts +0 -158
- package/src/tools/fetch/index.ts +0 -147
- package/src/tools/fetch/nad.ts +0 -342
- package/src/tools/fetch/nppes.ts +0 -174
- package/src/tools/fetch/openaddresses.ts +0 -404
- package/src/tools/fetch/ourairports.ts +0 -171
- package/src/tools/fetch/ppd.ts +0 -137
- package/src/tools/fetch/state-hi-schools.ts +0 -208
- package/src/tools/fetch/state-sources.ts +0 -155
- package/src/tools/fetch/tiger-full.ts +0 -354
- package/src/tools/fetch/wikidata-subvenue.ts +0 -386
- package/src/tools/golden-expand.ts +0 -584
- 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 -422
- 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 -157
- package/src/tools/overture-subvenue.ts +0 -215
- package/src/tools/postcode-triples.ts +0 -375
- package/src/tools/shard-kryptonite.ts +0 -139
- package/src/tools/shard-translit.ts +0 -245
- package/src/tools/sub-venue/harvest.ts +0 -235
- package/src/tools/sub-venue/head-nouns.ts +0 -242
- package/src/tools/sub-venue/surfaces.ts +0 -95
- package/src/tools/sub-venue/table.ts +0 -281
- package/src/tools/sub-venue/wikidata.ts +0 -85
- package/src/tools/sub-venue-lexicon.ts +0 -431
- package/src/tools/sub-venue-promotions.ts +0 -330
- package/src/types.ts +0 -247
- package/src/utils/align.ts +0 -331
- package/src/utils/golden.ts +0 -176
- package/src/utils/index.ts +0 -14
- package/src/utils/parquet.ts +0 -391
- package/src/utils/split.ts +0 -279
- package/src/utils/tokenize.ts +0 -78
- package/src/utils/wof-json.ts +0 -244
- /package/{src → lib}/adapters/state-ia-contractors/adapter.ts +0 -0
- /package/{src → lib}/adapters/state-ny-notaries/adapter.ts +0 -0
- /package/{src → lib}/adapters/state-tx-notaries/adapter.ts +0 -0
- /package/{src → lib}/codex/us-fips-state.ts +0 -0
- /package/{src → lib}/tools/gb-title-case.ts +0 -0
- /package/{src → lib}/utils/license.ts +0 -0
- /package/out/{src/adapters → adapters}/ban/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/ban/street-decompose.d.ts +0 -0
- /package/out/{src/adapters → adapters}/fcc-bdc/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/geonames/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/openaddresses/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/state-ia-contractors/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/state-ia-contractors/adapter.js +0 -0
- /package/out/{src/adapters → adapters}/state-ny-notaries/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/state-ny-notaries/adapter.js +0 -0
- /package/out/{src/adapters → adapters}/state-tx-notaries/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/state-tx-notaries/adapter.js +0 -0
- /package/out/{src/adapters → adapters}/synth-po-box/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/tiger/street-decompose.d.ts +0 -0
- /package/out/{src/adapters → adapters}/usgov-nppes/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/usgov-samhsa-treatment-locator/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/wof-admin-jp/adapter.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}/fetch/ppd.d.ts +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
- /package/out/{src/utils → utils}/license.js +0 -0
|
@@ -0,0 +1,599 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* `locale` slice recipe — the multi-locale generalization of the `german` recipe. Reads REAL
|
|
7
|
+
* OpenAddresses tuples for a `--country` (DE/FR/NL/IT/ES), renders each via
|
|
8
|
+
* {@link synthesizeLocaleRow} in BOTH orders (`--intl-fraction`, default 0.4 international / the
|
|
9
|
+
* rest country-native), aligns to BIO, and emits a labeled JSONL. Generate-mode: it STREAMS each
|
|
10
|
+
* source CSV (a streamed zip member for cached zips, plain `createReadStream` for extracted CSVs) and
|
|
11
|
+
* reservoir-samples to {@link RESERVOIR_CAP} (so FR/ES countrywide work in bounded memory), then
|
|
12
|
+
* draws `--count` rows from the pool with the passed `random`. Ported from
|
|
13
|
+
* scripts/build-locale-slice.mjs.
|
|
14
|
+
*
|
|
15
|
+
* The reservoir uses its OWN seeded PRNG ({@link makeMulberry32}, per part), independent of the
|
|
16
|
+
* emit `random`, so the input sample is reproducible WITHOUT perturbing the synth/order draws.
|
|
17
|
+
*
|
|
18
|
+
* SURFACE DIVERSITY (#241): two per-country shape draws ride the emit loop, sized by the
|
|
19
|
+
* 2026-07-02 format-diversity audit against the `openaddresses-{es,nl,it}-sample.jsonl` observed
|
|
20
|
+
* forms. ES: the OpenCage template comma-joins the house number (`CALLE MAYOR, 12`) but all 3,000
|
|
21
|
+
* eval rows space-join (`CALLE MAYOR 12`) — {@link ES_SPACE_JOIN_FRACTION} of native rows collapse
|
|
22
|
+
* the comma. NL: OA (and the eval, 3,000/3,000) glue the postcode (`1187LM`) while the national
|
|
23
|
+
* convention spaces it (`1187 LM`) — {@link NL_GLUED_POSTCODE_FRACTION} of rows keep the glued
|
|
24
|
+
* source shape, the rest the spaced conventional one. These draws are consumed ONLY for their
|
|
25
|
+
* country, so DE/FR emit streams are unchanged for a given seed.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
import { COUNTRY_SURFACE_FORMS } from "@mailwoman/codex/country"
|
|
29
|
+
import { dataRootPath } from "@mailwoman/core/data-root"
|
|
30
|
+
import { openReadStream } from "@mailwoman/core/fs/streams"
|
|
31
|
+
import { readZipEntry } from "@mailwoman/core/fs/zip"
|
|
32
|
+
import { isPresent } from "@mailwoman/core/objects"
|
|
33
|
+
import type { PathBuilderLike } from "path-ts"
|
|
34
|
+
import { CSVSpliterator } from "spliterator"
|
|
35
|
+
|
|
36
|
+
import { stableSourceID } from "#adapters/utils"
|
|
37
|
+
import { makeMulberry32, type CorpusRecipe } from "#recipes/scaffold"
|
|
38
|
+
import { type LocaleBaseTuple, type SynthesizedLocaleRow, synthesizeLocaleRow } from "#synthesizers/german"
|
|
39
|
+
import { pick } from "#synthesizers/utils"
|
|
40
|
+
import { alignRow } from "#utils"
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* One per-country OA source part: either a cached `zip` + `csv` member (streamed out of the archive) or an extracted
|
|
44
|
+
* plain `path` (streamed via `createReadStream`). Both carry the standard OA header
|
|
45
|
+
* (LON,LAT,NUMBER,STREET,UNIT,CITY,DISTRICT,REGION,POSTCODE,ID,HASH). An optional `region` fallback covers countries
|
|
46
|
+
* whose REGION column is empty (DE — the Bundesland is implied by the per-state file).
|
|
47
|
+
*/
|
|
48
|
+
export interface LocalePart {
|
|
49
|
+
zip?: PathBuilderLike
|
|
50
|
+
csv?: string
|
|
51
|
+
path?: PathBuilderLike
|
|
52
|
+
region?: string
|
|
53
|
+
/**
|
|
54
|
+
* NZ — the OA DISTRICT column holds the city (`Auckland`) and CITY holds the suburb (`Birkenhead`). When set, map
|
|
55
|
+
* DISTRICT→locality and CITY→dependent_locality (falling back to CITY→locality when DISTRICT is empty, ~18% of NZ
|
|
56
|
+
* rows). Without this, the default CITY→locality mapping wrongly trains the suburb as the locality.
|
|
57
|
+
*/
|
|
58
|
+
districtAsLocality?: boolean
|
|
59
|
+
/**
|
|
60
|
+
* ES pedanía part only — the header is the RAW (un-conformed) CNIG export schema (`numero`, `tipo_vial`,
|
|
61
|
+
* `nombre_via`, `poblacion`, `municipio`, `comunidad_autonoma`, `cod_postal`), NOT the standard OA
|
|
62
|
+
* NUMBER/STREET/CITY/DISTRICT/REGION/POSTCODE header every other part uses. Verified 2026-07-22 by exact- coordinate
|
|
63
|
+
* cross-check: the OA-conformed `extracted/es/countrywide.csv` collapses CITY to `municipio` and drops `poblacion`
|
|
64
|
+
* (Spain's below-municipio núcleo/pedanía name) entirely, so the pedanía signal survives ONLY in this raw export.
|
|
65
|
+
* `street` is reconstructed as `tipo_vial + " " + nombre_via` (verified byte-identical to the conformed STREET column
|
|
66
|
+
* for the same row). CITY-analog = `poblacion`, DISTRICT-analog = `municipio`.
|
|
67
|
+
*/
|
|
68
|
+
cnigRaw?: boolean
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface LocaleCountrySource {
|
|
72
|
+
source: string
|
|
73
|
+
parts: LocalePart[]
|
|
74
|
+
/**
|
|
75
|
+
* The `corpus_version` stamped on emitted rows. DE/FR keep the historical `0.4.0` (regenerating those slices must
|
|
76
|
+
* stay lineage-identical); ES/IT/NL are the #241 staging lineage (`v0.9.9-es-it-nl`).
|
|
77
|
+
*/
|
|
78
|
+
corpusVersion: string
|
|
79
|
+
/**
|
|
80
|
+
* An ALTERNATE part list, read instead of {@link parts} when the `--district-as-locality` override is explicitly
|
|
81
|
+
* `true` for this invocation (see `run()`). ES-only for now — the standard `parts` entry can't supply real
|
|
82
|
+
* dependent-locality signal (its OA-conformed CSV drops `poblacion`; see {@link LocalePart.cnigRaw}), so the pedanía
|
|
83
|
+
* build reads a wholly different raw source instead of flipping the standard CITY/DISTRICT columns. `undefined` for
|
|
84
|
+
* every other country — the override then just forces `districtAsLocality` on the normal `parts`, as GB/NZ already do
|
|
85
|
+
* per-part.
|
|
86
|
+
*/
|
|
87
|
+
pedaniaParts?: LocalePart[]
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Per-country OA sources + the source name used in the corpus. DE/FR read their historical build inputs, the cached
|
|
92
|
+
* zips under `$MAILWOMAN_DATA_ROOT/oa-cache` — materialize them there to regenerate. ES/NL read the extracted
|
|
93
|
+
* countrywide CSVs and IT the cached national zip under `$MAILWOMAN_DATA_ROOT` (#241; the fresh ES extract is
|
|
94
|
+
* OA-conformed, so the old raw-CNIG conform map is gone). DE carries a per-part `region` fallback (its REGION column is
|
|
95
|
+
* empty; the international-order tail needs it, #327). FR/NL/IT/ES REGION is populated per-row (ES = comunidad
|
|
96
|
+
* autónoma, IT = regione, NL = province).
|
|
97
|
+
*/
|
|
98
|
+
const COUNTRY_SOURCES: Record<string, LocaleCountrySource> = {
|
|
99
|
+
DE: {
|
|
100
|
+
source: "synth-german",
|
|
101
|
+
corpusVersion: "0.4.0",
|
|
102
|
+
parts: [
|
|
103
|
+
{ zip: dataRootPath("oa-cache", "de__berlin.zip"), csv: "de/berlin.csv", region: "Berlin" },
|
|
104
|
+
{ zip: dataRootPath("oa-cache", "de__sn__statewide.zip"), csv: "de/sn/statewide.csv", region: "Sachsen" },
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
FR: {
|
|
108
|
+
source: "synth-fr",
|
|
109
|
+
corpusVersion: "0.4.0",
|
|
110
|
+
parts: [{ zip: dataRootPath("oa-cache", "fr__countrywide.zip"), csv: "fr/countrywide.csv" }],
|
|
111
|
+
},
|
|
112
|
+
NL: {
|
|
113
|
+
source: "synth-nl",
|
|
114
|
+
corpusVersion: "0.9.9",
|
|
115
|
+
parts: [{ path: dataRootPath("openaddresses", "extracted", "nl", "countrywide.csv") }],
|
|
116
|
+
},
|
|
117
|
+
IT: {
|
|
118
|
+
source: "synth-it",
|
|
119
|
+
corpusVersion: "0.9.9",
|
|
120
|
+
parts: [{ zip: dataRootPath("oa-cache", "it__countrywide.zip"), csv: "it/countrywide.csv" }],
|
|
121
|
+
},
|
|
122
|
+
ES: {
|
|
123
|
+
source: "synth-es",
|
|
124
|
+
corpusVersion: "0.9.9",
|
|
125
|
+
parts: [{ path: dataRootPath("openaddresses", "extracted", "es", "countrywide.csv") }],
|
|
126
|
+
// Pedanía slice (`synth-es-pedania`, `--district-as-locality`). Reads the RAW (un-conformed) CNIG export
|
|
127
|
+
// cached at oa-cache/es__countrywide.zip — the `parts` CSV above lost `poblacion` in OA's own conform step
|
|
128
|
+
// (see {@link LocalePart.cnigRaw}). districtAsLocality is pinned true here (this part only exists to be
|
|
129
|
+
// read pedanía-style); the CLI override still applies harmlessly on top.
|
|
130
|
+
pedaniaParts: [
|
|
131
|
+
{
|
|
132
|
+
zip: dataRootPath("oa-cache", "es__countrywide.zip"),
|
|
133
|
+
csv: "es_addresses.csv",
|
|
134
|
+
cnigRaw: true,
|
|
135
|
+
districtAsLocality: true,
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
},
|
|
139
|
+
NZ: {
|
|
140
|
+
// LINZ-derived OA countrywide extract (2.12M rows). `districtAsLocality` inverts the CITY/DISTRICT
|
|
141
|
+
// mapping: DISTRICT holds the city (Auckland), CITY the suburb (Birkenhead). NZ OA carries no postcode.
|
|
142
|
+
source: "synth-nz",
|
|
143
|
+
corpusVersion: "0.9.9",
|
|
144
|
+
// Eval holdout: a probe build excludes ~12% of NZ localities (a locality-bucket split) for a source-disjoint
|
|
145
|
+
// coord board; that split is a BUILD-TIME concern (scratchpad), so the committed recipe reads the full CSV.
|
|
146
|
+
parts: [{ path: dataRootPath("openaddresses", "extracted", "nz", "countrywide.csv"), districtAsLocality: true }],
|
|
147
|
+
},
|
|
148
|
+
GB: {
|
|
149
|
+
// HM Land Registry Price Paid Data tuples (25.67M rows out of the PPD ingest). PPD's DISTRICT is the
|
|
150
|
+
// postal town (locality) and CITY is the dependent locality — legitimately EMPTY on the majority of rows
|
|
151
|
+
// (most GB addresses have no dependent locality). `districtAsLocality` maps DISTRICT→locality and, when
|
|
152
|
+
// present, CITY→dependent_locality; the `readTuples` check above only drops a row when BOTH are empty, so
|
|
153
|
+
// the majority empty-CITY rows survive.
|
|
154
|
+
source: "synth-gb",
|
|
155
|
+
corpusVersion: "0.9.9",
|
|
156
|
+
parts: [{ path: dataRootPath("ppd", "2026-07-22", "gb-tuples.csv"), districtAsLocality: true }],
|
|
157
|
+
},
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Per-part reservoir cap. Streaming + Algorithm-R reservoir sampling to this size keeps memory bounded regardless of
|
|
162
|
+
* source size, where buffering the whole CSV OOMs / overflows on FR/ES countrywide (~2.5 GB, ~25M rows). DE/NL-scale
|
|
163
|
+
* sources (≤ ~1.2M) fit entirely, so they're sampled losslessly.
|
|
164
|
+
*/
|
|
165
|
+
const RESERVOIR_CAP = 1_200_000
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Fraction of NATIVE-order ES rows whose street→house join is space-collapsed (`CALLE MAYOR 12`) instead of the
|
|
169
|
+
* template's comma (`CALLE MAYOR, 12`). Both are real Spanish surfaces — the comma is the official convention, the
|
|
170
|
+
* space is what OA-derived feeds (and all 3,000 `openaddresses-es-sample.jsonl` rows) carry. 0.5 teaches both.
|
|
171
|
+
*/
|
|
172
|
+
const ES_SPACE_JOIN_FRACTION = 0.5
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Fraction of NL rows whose postcode keeps OA's glued shape (`1187LM`) instead of the spaced national convention (`1187
|
|
176
|
+
* LM`). The eval sample is 100% glued; the conventional spaced form is the `1012 LM` two-letter-suffix shape the model
|
|
177
|
+
* currently glues onto the city (#241). 0.5 teaches both.
|
|
178
|
+
*/
|
|
179
|
+
const NL_GLUED_POSTCODE_FRACTION = 0.5
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* OA CITY-noise normalization (#241) — the documented cleaning step, derived from the 2026-07-02 FULL-STREAM audit of
|
|
183
|
+
* the ES (15.6M rows), IT (13.9M), and NL (9.1M) sources (not a hand-list). Returns the cleaned city, or `null` to drop
|
|
184
|
+
* the tuple.
|
|
185
|
+
*
|
|
186
|
+
* Cleaned classes:
|
|
187
|
+
*
|
|
188
|
+
* 1. DROP pseudo-localities — the ES cadastral aggregates (`Comunidad de 09076, 09150 y 09578`, `Ledanía de …`; 0.06% of
|
|
189
|
+
* ES rows): any CITY containing a comma or a ≥4-digit run is a land-register aggregate, not a renderable city.
|
|
190
|
+
* Structural, locale-safe — NL's genuine `2e Valthermond` (one digit) survives; IT/NL have zero hits.
|
|
191
|
+
* 2. STRIP a trailing parenthesized 1–3-letter admin code — the NL BAG province disambiguator (`Bergen (NH)`, `Rijswijk
|
|
192
|
+
* (GLD)` → `Bergen`, `Rijswijk`; 0.13% of NL rows). The analogue of the German Kreis/region-suffix class (#241 names
|
|
193
|
+
* `Rabenau Sachs` / `Weißwasser /O.L.`): an admin-region gloss glued onto the locality value that dirties locality
|
|
194
|
+
* labels.
|
|
195
|
+
*
|
|
196
|
+
* Audit-verified NON-noise, deliberately NOT cleaned (a naive suffix rule would mangle real names):
|
|
197
|
+
*
|
|
198
|
+
* - ES/IT city-ends-with-province (`Alhama de Almería`, `GENZANO DI ROMA`; ~0.8% each): genuine toponyms whose linking
|
|
199
|
+
* `de`/`di` makes them full names, unlike the German glued-abbreviation class.
|
|
200
|
+
* - ES bilingual slash names (`Laudio/Llodio`; 2.16%): official co-names — the eval expects them verbatim.
|
|
201
|
+
* - IT ALL-CAPS city casing (98.79% of the source, and the eval's observed form): casing is the #829 case-augmentation
|
|
202
|
+
* change, not this slice's.
|
|
203
|
+
*/
|
|
204
|
+
export function cleanCityNoise(city: string): string | null {
|
|
205
|
+
if (/,|\d{4}/.test(city)) return null
|
|
206
|
+
|
|
207
|
+
const stripped = city.replace(/\s*\(\p{L}{1,3}\)\s*$/u, "").trim()
|
|
208
|
+
|
|
209
|
+
return stripped || null
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
interface ColumnIndex {
|
|
213
|
+
num: number
|
|
214
|
+
street: number
|
|
215
|
+
city: number
|
|
216
|
+
district: number
|
|
217
|
+
region: number
|
|
218
|
+
post: number
|
|
219
|
+
/**
|
|
220
|
+
* {@link LocalePart.cnigRaw} only — the road-type column (`tipo_vial`) joined onto `street` (`nombre_via`). -1
|
|
221
|
+
* otherwise.
|
|
222
|
+
*/
|
|
223
|
+
tipoVial: number
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Stream real tuples out of an OA source part and reservoir-sample to {@link RESERVOIR_CAP}. Reads the CSV row-by-row —
|
|
228
|
+
* `readZipEntry | CSVSpliterator` for zip parts, `createReadStream | CSVSpliterator` for extracted parts (both bounded
|
|
229
|
+
* memory) — and keeps a uniform random sample (Algorithm R) seeded by `rng`, separate from the emit loop's PRNG. NO
|
|
230
|
+
* global dedup (a 25M-key Set would OOM; OA rows are near-unique). The city passes through {@link cleanCityNoise}; the
|
|
231
|
+
* region falls back to `part.region` when the row's REGION cell is empty (DE).
|
|
232
|
+
*
|
|
233
|
+
* Exported for {@link locale.test.ts} — the CSV read path (quote handling, CRLF, region fallback) has no other test.
|
|
234
|
+
*/
|
|
235
|
+
export async function readTuples(part: LocalePart, rng: () => number): Promise<LocaleBaseTuple[]> {
|
|
236
|
+
// No `encoding` on the file path — CSVSpliterator delimits raw bytes and decodes utf-8 itself; a string stream
|
|
237
|
+
// (from `{ encoding: "utf8" }`) would defeat its byte-range scanner.
|
|
238
|
+
const input: NodeJS.ReadableStream | AsyncIterable<Uint8Array> = part.path
|
|
239
|
+
? openReadStream(part.path)
|
|
240
|
+
: readZipEntry(part.zip!, part.csv!)
|
|
241
|
+
|
|
242
|
+
const get = (cells: string[], i: number): string => (i >= 0 && i < cells.length ? (cells[i] ?? "").trim() : "")
|
|
243
|
+
const reservoir: LocaleBaseTuple[] = []
|
|
244
|
+
let cols: ColumnIndex | null = null
|
|
245
|
+
let header: string[] | null = null
|
|
246
|
+
let seen = 0
|
|
247
|
+
let dropped = 0
|
|
248
|
+
|
|
249
|
+
try {
|
|
250
|
+
// CSVSpliterator handles OA's quoted fields (embedded commas/newlines) and CRLF row terminators
|
|
251
|
+
// (spliterator ≥ 3.2.0); `header: false` yields the header row too, so the column index is built
|
|
252
|
+
// from that first row rather than from a header option.
|
|
253
|
+
for await (const cells of CSVSpliterator.fromAsync<string[]>(input, {
|
|
254
|
+
mode: "array",
|
|
255
|
+
header: false,
|
|
256
|
+
enableQuoteHandling: true,
|
|
257
|
+
})) {
|
|
258
|
+
if (header === null) {
|
|
259
|
+
header = cells.map((h) => h.trim().toLowerCase())
|
|
260
|
+
// oxlint-disable-next-line no-loop-func -- the binding is per-iteration (for-of/for-await) and the batch is awaited before the next
|
|
261
|
+
const ix = (name: string): number => header!.indexOf(name)
|
|
262
|
+
|
|
263
|
+
// `cnigRaw` (ES pedanía only): the RAW CNIG header has no NUMBER/STREET/CITY/DISTRICT/REGION/POSTCODE
|
|
264
|
+
// at all — `numero`/`nombre_via`/`poblacion`/`municipio`/`comunidad_autonoma`/`cod_postal` instead.
|
|
265
|
+
// See {@link LocalePart.cnigRaw}.
|
|
266
|
+
cols = part.cnigRaw
|
|
267
|
+
? {
|
|
268
|
+
num: ix("numero"),
|
|
269
|
+
street: ix("nombre_via"),
|
|
270
|
+
tipoVial: ix("tipo_vial"),
|
|
271
|
+
city: ix("poblacion"),
|
|
272
|
+
district: ix("municipio"),
|
|
273
|
+
region: ix("comunidad_autonoma"),
|
|
274
|
+
post: ix("cod_postal"),
|
|
275
|
+
}
|
|
276
|
+
: {
|
|
277
|
+
num: ix("number"),
|
|
278
|
+
street: ix("street"),
|
|
279
|
+
tipoVial: -1,
|
|
280
|
+
city: ix("city"),
|
|
281
|
+
district: ix("district"),
|
|
282
|
+
region: ix("region"),
|
|
283
|
+
post: ix("postcode"),
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
continue
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
if (cols === null) continue
|
|
290
|
+
|
|
291
|
+
// cnigRaw: STREET is split into a road-type column (`tipo_vial`, e.g. "CARRETERA") and the name
|
|
292
|
+
// (`nombre_via`) — rejoin them exactly as OA's own conform step does (verified byte-identical to the
|
|
293
|
+
// conformed STREET column for the same source row). Every other part's header already carries the
|
|
294
|
+
// pre-joined STREET column, so `cols.tipoVial === -1` and this is a no-op there.
|
|
295
|
+
const street =
|
|
296
|
+
cols.tipoVial >= 0
|
|
297
|
+
? [get(cells, cols.tipoVial), get(cells, cols.street)].filter(isPresent).join(" ")
|
|
298
|
+
: get(cells, cols.street)
|
|
299
|
+
|
|
300
|
+
const rawCity = get(cells, cols.city)
|
|
301
|
+
|
|
302
|
+
if (!street) continue
|
|
303
|
+
|
|
304
|
+
// Default: CITY → locality. NZ/GB (`districtAsLocality`) inverts it — the OA DISTRICT holds the city
|
|
305
|
+
// (`Auckland`) and CITY holds the suburb (`Birkenhead`), so DISTRICT → locality and CITY →
|
|
306
|
+
// dependent_locality. When DISTRICT is empty (~18% of NZ rows), fall back to CITY → locality with no
|
|
307
|
+
// sub-locality. GB PPD tuples flip which side is legitimately empty — on the MAJORITY of GB rows CITY
|
|
308
|
+
// (the dependent_locality) is empty and DISTRICT (the locality) is populated, so the check below only
|
|
309
|
+
// drops a `districtAsLocality` row when BOTH are empty, never when CITY alone is — filtering on CITY
|
|
310
|
+
// alone silently discards most of the GB source. See {@link LocalePart.districtAsLocality}.
|
|
311
|
+
let locality: string | null
|
|
312
|
+
let dependent_locality: string | undefined
|
|
313
|
+
|
|
314
|
+
if (part.districtAsLocality) {
|
|
315
|
+
const rawDistrict = get(cells, cols.district)
|
|
316
|
+
|
|
317
|
+
if (!rawCity && !rawDistrict) continue
|
|
318
|
+
|
|
319
|
+
const cleanedDistrict = cleanCityNoise(rawDistrict)
|
|
320
|
+
|
|
321
|
+
if (cleanedDistrict) {
|
|
322
|
+
locality = cleanedDistrict
|
|
323
|
+
const cleanedCity = cleanCityNoise(rawCity)
|
|
324
|
+
|
|
325
|
+
// ES pedanía lesson (2026-07-22): the CNIG `poblacion` column is filled on ~93% of rows but
|
|
326
|
+
// EQUALS `municipio` on the majority of those (the address point sits in the municipio's own
|
|
327
|
+
// main town, not a below-municipio pedanía) — only ~32.6% of ES rows carry a genuinely
|
|
328
|
+
// DISTINCT poblacion. GB/NZ never hit this (CITY/DISTRICT name the same place only by rare
|
|
329
|
+
// coincidence), but the guard is general: a dependent_locality equal to its own locality is
|
|
330
|
+
// never a real sub-locality, so drop it rather than emit a same-value pair (would fail the
|
|
331
|
+
// dep_loc≠locality invariant every recipe otherwise upholds).
|
|
332
|
+
dependent_locality =
|
|
333
|
+
cleanedCity && cleanedCity.localeCompare(locality, undefined, { sensitivity: "base" }) !== 0
|
|
334
|
+
? cleanedCity
|
|
335
|
+
: undefined
|
|
336
|
+
} else {
|
|
337
|
+
locality = cleanCityNoise(rawCity)
|
|
338
|
+
}
|
|
339
|
+
} else {
|
|
340
|
+
if (!rawCity) continue
|
|
341
|
+
locality = cleanCityNoise(rawCity)
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
if (!locality) {
|
|
345
|
+
dropped++
|
|
346
|
+
|
|
347
|
+
continue
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
const tuple: LocaleBaseTuple = {
|
|
351
|
+
house_number: get(cells, cols.num),
|
|
352
|
+
street,
|
|
353
|
+
locality,
|
|
354
|
+
region: get(cells, cols.region) || part.region || "",
|
|
355
|
+
postcode: get(cells, cols.post),
|
|
356
|
+
...(dependent_locality ? { dependent_locality } : {}),
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
seen++
|
|
360
|
+
|
|
361
|
+
if (reservoir.length < RESERVOIR_CAP) {
|
|
362
|
+
reservoir.push(tuple)
|
|
363
|
+
} else {
|
|
364
|
+
const j = Math.floor(rng() * seen)
|
|
365
|
+
|
|
366
|
+
// 0 .. seen-1
|
|
367
|
+
if (j < RESERVOIR_CAP) {
|
|
368
|
+
reservoir[j] = tuple
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
} catch (error) {
|
|
373
|
+
console.error(` WARN: read failed for ${part.path ?? part.zip}: ${(error as Error).message}`)
|
|
374
|
+
|
|
375
|
+
return []
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
console.error(` ${part.path ?? part.csv}: ${reservoir.length} sampled of ${seen} rows (${dropped} city-noise drops)`)
|
|
379
|
+
|
|
380
|
+
return reservoir
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* Country-append fraction (the fr-admin-split #728 pattern, generalized to the locale recipe): mutates `synth` in
|
|
385
|
+
* place, `countryFraction` of the time appending an explicit country surface form ("United Kingdom") to `raw` + a
|
|
386
|
+
* `country` component — the model relearns to emit country WHEN the token is present without over-firing it on the
|
|
387
|
+
* (still-majority) country-less rows. `countryFraction <= 0` (the default) short-circuits the `random()` draw away
|
|
388
|
+
* entirely — no `synth` mutation and no RNG consumption — so every existing locale's emit stream stays byte-identical
|
|
389
|
+
* to before this option existed. Exported for {@link locale.test.ts}.
|
|
390
|
+
*/
|
|
391
|
+
export function applyCountryAppend(
|
|
392
|
+
synth: SynthesizedLocaleRow,
|
|
393
|
+
country: string,
|
|
394
|
+
countryFraction: number,
|
|
395
|
+
random: () => number
|
|
396
|
+
): void {
|
|
397
|
+
if (countryFraction > 0 && random() < countryFraction) {
|
|
398
|
+
const forms = COUNTRY_SURFACE_FORMS[country as keyof typeof COUNTRY_SURFACE_FORMS]
|
|
399
|
+
|
|
400
|
+
if (!forms?.length) {
|
|
401
|
+
// The BR/NZ lesson: a missing table entry must never silently no-op a requested fraction —
|
|
402
|
+
// it must raise so the gap is caught at build time, not discovered later as a 0% check failure.
|
|
403
|
+
throw new Error(
|
|
404
|
+
`No COUNTRY_SURFACE_FORMS entry for ${country} — add it to codex/country/country.ts before using --country-fraction`
|
|
405
|
+
)
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
const form = pick(forms, random)
|
|
409
|
+
synth.raw = `${synth.raw}, ${form}`
|
|
410
|
+
synth.components = { ...synth.components, country: form }
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* Merge the `--district-as-locality` CLI override onto one part. `undefined` (flag absent) returns `part` unchanged
|
|
416
|
+
* (same object — no allocation, no behavior change); `true`/`false` returns a shallow copy with `districtAsLocality`
|
|
417
|
+
* forced to that value for this invocation only. Exported for {@link locale.test.ts}.
|
|
418
|
+
*/
|
|
419
|
+
export function applyDistrictAsLocalityOverride(part: LocalePart, override: boolean | undefined): LocalePart {
|
|
420
|
+
return override === undefined ? part : { ...part, districtAsLocality: override }
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
/**
|
|
424
|
+
* Pick which part list a `--country` run reads: {@link LocaleCountrySource.pedaniaParts} when the override is explicitly
|
|
425
|
+
* `true` AND the country registers one (ES only, so far), else the default `parts` — unchanged for every other
|
|
426
|
+
* country/override combination. Exported for {@link locale.test.ts}.
|
|
427
|
+
*/
|
|
428
|
+
export function resolveLocaleParts(countrySource: LocaleCountrySource, override: boolean | undefined): LocalePart[] {
|
|
429
|
+
return override === true && countrySource.pedaniaParts ? countrySource.pedaniaParts : countrySource.parts
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Slice recipe registered with the corpus builder — see the file header for the parse behaviour it exists to exercise,
|
|
434
|
+
* and `description` below for the surface form it generates.
|
|
435
|
+
*/
|
|
436
|
+
export const localeRecipe: CorpusRecipe = {
|
|
437
|
+
name: "locale",
|
|
438
|
+
description: "Per-locale coverage rows (DE/FR/NL/IT/ES/NZ/GB) from real OA tuples, both orders → synthesizeLocaleRow",
|
|
439
|
+
mode: "generate",
|
|
440
|
+
options: [
|
|
441
|
+
{ flag: "--country <cc>", description: "Target country (DE|FR|NL|IT|ES|NZ|GB). Default DE" },
|
|
442
|
+
{ flag: "--intl-fraction <f>", description: "Fraction rendered international order. Default 0.4" },
|
|
443
|
+
{
|
|
444
|
+
flag: "--country-fraction <f>",
|
|
445
|
+
description:
|
|
446
|
+
"Fraction of rows that append an explicit country surface form (`, United Kingdom`) + a `country` component (fr-admin-split pattern). Default 0 — byte-identical to before when unset.",
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
flag: "--district-as-locality / --no-district-as-locality",
|
|
450
|
+
description:
|
|
451
|
+
"Override the per-part districtAsLocality mapping for this run. Unset (default) leaves each COUNTRY_SOURCES part's own value untouched — every existing build stays byte-identical. ES additionally switches to the pedanía (poblacion→dependent_locality) source when passed as true — combine with --source-name synth-es-pedania.",
|
|
452
|
+
},
|
|
453
|
+
],
|
|
454
|
+
async run(opts, write) {
|
|
455
|
+
// Emit PRNG: the legacy build-locale-slice.mjs seeded mulberry32(opts.seed). The reservoir uses a
|
|
456
|
+
// SEPARATE per-part mulberry32 (below) so input sampling never perturbs this emit stream.
|
|
457
|
+
const random = makeMulberry32(opts.seed)
|
|
458
|
+
const country = (opts.country ?? "DE").toUpperCase()
|
|
459
|
+
const countrySource = COUNTRY_SOURCES[country]
|
|
460
|
+
|
|
461
|
+
if (!countrySource) {
|
|
462
|
+
throw new Error(
|
|
463
|
+
`No OA sources registered for --country ${country}. Known: ${Object.keys(COUNTRY_SOURCES).join(", ")}.`
|
|
464
|
+
)
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
const intlFraction = opts.intlFraction ?? 0.4
|
|
468
|
+
|
|
469
|
+
if (!(intlFraction >= 0 && intlFraction <= 1)) {
|
|
470
|
+
throw new Error(`--intl-fraction must be in [0, 1], got ${intlFraction}`)
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
// Default 0 → the `random() < countryFraction` draw below is short-circuited away entirely (never
|
|
474
|
+
// consumed), so every existing locale's emit stream is byte-identical to before this option existed.
|
|
475
|
+
const countryFraction = opts.countryFraction ?? 0
|
|
476
|
+
|
|
477
|
+
if (!(countryFraction >= 0 && countryFraction <= 1)) {
|
|
478
|
+
throw new Error(`--country-fraction must be in [0, 1], got ${countryFraction}`)
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
const source = opts.sourceName ?? countrySource.source
|
|
482
|
+
const count = opts.count ?? 4000
|
|
483
|
+
// Tri-state: `undefined` (flag absent) touches nothing below — `parts` stays the default list and each
|
|
484
|
+
// part keeps its own `districtAsLocality`, so every existing locale build is byte-identical to before this
|
|
485
|
+
// option existed. `true` additionally selects `pedaniaParts` when the country registers one (ES); `false`
|
|
486
|
+
// forces the mapping off on every part read this run (a debugging override for GB/NZ).
|
|
487
|
+
const districtAsLocalityOverride = opts.districtAsLocality
|
|
488
|
+
const parts = resolveLocaleParts(countrySource, districtAsLocalityOverride)
|
|
489
|
+
|
|
490
|
+
const pool: LocaleBaseTuple[] = []
|
|
491
|
+
|
|
492
|
+
for (let pi = 0; pi < parts.length; pi++) {
|
|
493
|
+
// A reservoir PRNG per part, seeded but independent of the emit loop's `random`, so the sample is
|
|
494
|
+
// reproducible without perturbing the synth/order draws.
|
|
495
|
+
const reservoirRng = makeMulberry32((opts.seed ^ (0x9e_37_79_b9 * (pi + 1))) >>> 0)
|
|
496
|
+
const effectivePart = applyDistrictAsLocalityOverride(parts[pi]!, districtAsLocalityOverride)
|
|
497
|
+
const t = await readTuples(effectivePart, reservoirRng)
|
|
498
|
+
|
|
499
|
+
for (const x of t) {
|
|
500
|
+
pool.push(x)
|
|
501
|
+
} // NOT pool.push(...t) — spreading huge arrays overflows the stack
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
if (!pool.length) {
|
|
505
|
+
throw new Error(`No ${country} tuples found — are the source CSVs/zips present? (see COUNTRY_SOURCES)`)
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
let emitted = 0
|
|
509
|
+
let skipped = 0
|
|
510
|
+
let guard = 0
|
|
511
|
+
const N = pool.length
|
|
512
|
+
|
|
513
|
+
while (emitted < count && guard++ < count * 6) {
|
|
514
|
+
const base = pool[Math.floor(random() * N)]!
|
|
515
|
+
const order = random() < intlFraction ? "international" : "native"
|
|
516
|
+
|
|
517
|
+
// Per-country surface-shape draws (#241) — consumed ONLY for that country, so the DE/FR emit
|
|
518
|
+
// streams for a given seed are unchanged by their existence.
|
|
519
|
+
const nativeHouseJoin =
|
|
520
|
+
country === "ES" ? (random() < ES_SPACE_JOIN_FRACTION ? ("space" as const) : ("template" as const)) : undefined
|
|
521
|
+
|
|
522
|
+
const postcodeShape =
|
|
523
|
+
country === "NL"
|
|
524
|
+
? random() < NL_GLUED_POSTCODE_FRACTION
|
|
525
|
+
? ("as-source" as const)
|
|
526
|
+
: ("conventional" as const)
|
|
527
|
+
: undefined
|
|
528
|
+
|
|
529
|
+
const synth = synthesizeLocaleRow(base, country, { random, order, nativeHouseJoin, postcodeShape })
|
|
530
|
+
|
|
531
|
+
if (!synth) {
|
|
532
|
+
skipped++
|
|
533
|
+
|
|
534
|
+
continue
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
applyCountryAppend(synth, country, countryFraction, random)
|
|
538
|
+
|
|
539
|
+
if (opts.golden) {
|
|
540
|
+
// Golden rows must round-trip through alignRow exactly like training rows (#241 done-when): a
|
|
541
|
+
// render that can't be BIO-labeled can't serve as a parser golden either. Consumes no RNG draw.
|
|
542
|
+
const goldenCanonical = {
|
|
543
|
+
raw: synth.raw,
|
|
544
|
+
components: synth.components,
|
|
545
|
+
country,
|
|
546
|
+
locale: synth.locale,
|
|
547
|
+
source,
|
|
548
|
+
source_id: "golden:align-check",
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
const goldenAligned = alignRow(goldenCanonical as Parameters<typeof alignRow>[0])
|
|
552
|
+
|
|
553
|
+
if (goldenAligned.kind !== "labeled" || !goldenAligned.row) {
|
|
554
|
+
skipped++
|
|
555
|
+
|
|
556
|
+
continue
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
write(JSON.stringify({ raw: synth.raw, components: synth.components, country, order }) + "\n")
|
|
560
|
+
|
|
561
|
+
emitted++
|
|
562
|
+
|
|
563
|
+
continue
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
const sourceID = stableSourceID(source, {
|
|
567
|
+
street: synth.components.street,
|
|
568
|
+
house_number: synth.components.house_number,
|
|
569
|
+
locality: synth.components.locality,
|
|
570
|
+
postcode: synth.components.postcode,
|
|
571
|
+
})
|
|
572
|
+
|
|
573
|
+
const canonical = {
|
|
574
|
+
raw: synth.raw,
|
|
575
|
+
components: synth.components,
|
|
576
|
+
country,
|
|
577
|
+
locale: synth.locale,
|
|
578
|
+
source,
|
|
579
|
+
source_id: sourceID,
|
|
580
|
+
corpus_version: countrySource.corpusVersion,
|
|
581
|
+
license: `OpenAddresses ${country} tuples, rendered ${order}-order — see ingest SOURCES`,
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
const aligned = alignRow(canonical as Parameters<typeof alignRow>[0])
|
|
585
|
+
|
|
586
|
+
if (aligned.kind !== "labeled" || !aligned.row) {
|
|
587
|
+
skipped++
|
|
588
|
+
|
|
589
|
+
continue
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
write(JSON.stringify({ ...aligned.row, synth_method: source, synth_order: order, synth_base_id: null }) + "\n")
|
|
593
|
+
|
|
594
|
+
emitted++
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
return { emitted, skipped }
|
|
598
|
+
},
|
|
599
|
+
}
|