@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,776 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Synthesis / augmentation per Phase 1 task #6.
|
|
7
|
+
*
|
|
8
|
+
* An `Augmentation` is a pure function that takes a `CanonicalRow` and either returns a new
|
|
9
|
+
* `CanonicalRow` (with `raw` AND `components` transformed in lockstep so alignment still
|
|
10
|
+
* succeeds) or `null` when the augmentation doesn't apply to the row's shape.
|
|
11
|
+
*
|
|
12
|
+
* Synthesis runs **before** alignment: augmentations transform raw + components together, and the
|
|
13
|
+
* runner reruns alignment on each augmented row to produce its labels. This keeps the synthesis
|
|
14
|
+
* surface small (no token/label arithmetic) at the cost of a re-run.
|
|
15
|
+
*
|
|
16
|
+
* Every augmented row carries the `synth` marker:
|
|
17
|
+
*
|
|
18
|
+
* - `method`: the augmentation's stable id (e.g. `"case-upper"`, `"accent-strip"`).
|
|
19
|
+
* - `base_source_id`: the source_id of the un-augmented (or upstream-augmented) row, so ancestry is
|
|
20
|
+
* traceable.
|
|
21
|
+
*
|
|
22
|
+
* Phase 1 implements the locale-agnostic + most useful US/FR augmentations. Typo injection (#530)
|
|
23
|
+
* is now implemented ({@link typoInject}) — the "seed-aware API" the deferral asked for is
|
|
24
|
+
* resolved by seeding the PRNG from each row's `source_id`. It ships in {@link AUGMENTATIONS} but
|
|
25
|
+
* is kept OUT of the default set ({@link defaultAugmentationsForCountry}) until its on-model
|
|
26
|
+
* effect is measured; see the note there.
|
|
27
|
+
*/
|
|
28
|
+
import { US_STREET_SUFFIX_PREFERRED_ABBR, US_UNIT_DESIGNATOR_PREFERRED_ABBR, matchCase, matchLeadingDesignator, matchTrailingSuffix, } from "@mailwoman/codex/us";
|
|
29
|
+
import { isPresent } from "@mailwoman/core/objects";
|
|
30
|
+
import { mulberry32 } from "@mailwoman/core/random";
|
|
31
|
+
import { escapeRegExp } from "@mailwoman/core/strings/regexp";
|
|
32
|
+
import { stripCombiningMarks } from "@mailwoman/normalize/fold";
|
|
33
|
+
import { alignRow, assertSpanInvariants } from "#utils/align";
|
|
34
|
+
import { whitespaceTokenizer } from "#utils/tokenize";
|
|
35
|
+
/**
|
|
36
|
+
* Helper: build the augmented row with synth marker + chained source_id.
|
|
37
|
+
*/
|
|
38
|
+
function withAugmentation(source, method, newRaw, newComponents) {
|
|
39
|
+
const baseID = source.synth?.base_source_id ?? source.source_id;
|
|
40
|
+
return {
|
|
41
|
+
...source,
|
|
42
|
+
raw: newRaw,
|
|
43
|
+
components: newComponents,
|
|
44
|
+
source_id: `${source.source_id}+${method}`,
|
|
45
|
+
synth: { method, base_source_id: baseID },
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// ===========================================================================
|
|
49
|
+
// Locale-agnostic augmentations
|
|
50
|
+
// ===========================================================================
|
|
51
|
+
/**
|
|
52
|
+
* Upper-case raw + every component value. Returns null if already all-upper.
|
|
53
|
+
*/
|
|
54
|
+
export const caseUpper = (row) => {
|
|
55
|
+
if (row.raw === row.raw.toUpperCase())
|
|
56
|
+
return null;
|
|
57
|
+
const upRaw = row.raw.toUpperCase();
|
|
58
|
+
const upComponents = {};
|
|
59
|
+
for (const [k, v] of Object.entries(row.components)) {
|
|
60
|
+
if (v) {
|
|
61
|
+
upComponents[k] = v.toUpperCase();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return withAugmentation(row, "case-upper", upRaw, upComponents);
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Lower-case raw + every component value. Returns null if already all-lower.
|
|
68
|
+
*/
|
|
69
|
+
export const caseLower = (row) => {
|
|
70
|
+
if (row.raw === row.raw.toLowerCase())
|
|
71
|
+
return null;
|
|
72
|
+
const downRaw = row.raw.toLowerCase();
|
|
73
|
+
const downComponents = {};
|
|
74
|
+
for (const [k, v] of Object.entries(row.components)) {
|
|
75
|
+
if (v) {
|
|
76
|
+
downComponents[k] = v.toLowerCase();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return withAugmentation(row, "case-lower", downRaw, downComponents);
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Drop commas from `raw`. Components unchanged (they didn't carry commas).
|
|
83
|
+
*/
|
|
84
|
+
export const dropCommas = (row) => {
|
|
85
|
+
if (!row.raw.includes(","))
|
|
86
|
+
return null;
|
|
87
|
+
const newRaw = row.raw.replaceAll(",", "").replaceAll(/\s+/g, " ").trim();
|
|
88
|
+
return withAugmentation(row, "drop-commas", newRaw, { ...row.components });
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Replace single spaces with double spaces in `raw` AND in every component value. The component update is essential for
|
|
92
|
+
* alignment: `alignRow` substring-searches each component's surface form inside `raw`, so doubling the spaces in `raw`
|
|
93
|
+
* only would leave single-spaced components unfindable (this was the bug behind v0.1.1's first build attempt — 99.9% of
|
|
94
|
+
* quarantined rows traced back to this augmentation). Doubling both keeps the substring contract intact.
|
|
95
|
+
*/
|
|
96
|
+
export const doubleSpace = (row) => {
|
|
97
|
+
if (!/ /.test(row.raw))
|
|
98
|
+
return null;
|
|
99
|
+
const newRaw = row.raw.replaceAll(" ", " ");
|
|
100
|
+
const newComponents = {};
|
|
101
|
+
for (const [k, v] of Object.entries(row.components)) {
|
|
102
|
+
if (v) {
|
|
103
|
+
newComponents[k] = v.replaceAll(" ", " ");
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return withAugmentation(row, "double-space", newRaw, newComponents);
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Strip Unicode combining marks (accents, diacritics) from raw + components. "Hôtel" → "Hotel"; "Île-de-France" →
|
|
110
|
+
* "Ile-de-France". Returns null if the row has no accents.
|
|
111
|
+
*/
|
|
112
|
+
export const accentStrip = (row) => {
|
|
113
|
+
const stripped = stripCombiningMarks(row.raw);
|
|
114
|
+
if (stripped === row.raw)
|
|
115
|
+
return null;
|
|
116
|
+
const newComponents = {};
|
|
117
|
+
for (const [k, v] of Object.entries(row.components)) {
|
|
118
|
+
if (v) {
|
|
119
|
+
newComponents[k] = stripCombiningMarks(v);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return withAugmentation(row, "accent-strip", stripped, newComponents);
|
|
123
|
+
};
|
|
124
|
+
// --- typo injection (#530) -------------------------------------------------
|
|
125
|
+
// The Phase-1 deferral asked for a "seed-aware API" so the corpus stays reproducible. Resolution:
|
|
126
|
+
// seed the PRNG from the row's own `source_id` — deterministic per row, no global state, fits the
|
|
127
|
+
// existing `(row) => CanonicalRow | null` signature unchanged.
|
|
128
|
+
/**
|
|
129
|
+
* QWERTY adjacency for realistic single-key substitutions (lowercase; case is restored on apply).
|
|
130
|
+
*/
|
|
131
|
+
const QWERTY_ADJACENCY = {
|
|
132
|
+
a: "qwsz",
|
|
133
|
+
b: "vghn",
|
|
134
|
+
c: "xdfv",
|
|
135
|
+
d: "serfcx",
|
|
136
|
+
e: "wsdr",
|
|
137
|
+
f: "drtgvc",
|
|
138
|
+
g: "ftyhbv",
|
|
139
|
+
h: "gyujnb",
|
|
140
|
+
i: "ujko",
|
|
141
|
+
j: "huikmn",
|
|
142
|
+
k: "jiolm",
|
|
143
|
+
l: "kop",
|
|
144
|
+
m: "njk",
|
|
145
|
+
n: "bhjm",
|
|
146
|
+
o: "iklp",
|
|
147
|
+
p: "ol",
|
|
148
|
+
q: "wa",
|
|
149
|
+
r: "edft",
|
|
150
|
+
s: "awedxz",
|
|
151
|
+
t: "rfgy",
|
|
152
|
+
u: "yhji",
|
|
153
|
+
v: "cfgb",
|
|
154
|
+
w: "qase",
|
|
155
|
+
x: "zsdc",
|
|
156
|
+
y: "tghu",
|
|
157
|
+
z: "asx",
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* A component value eligible for a typo: a pure-letter name of ≥4 chars (excludes numbers/postcodes/units).
|
|
161
|
+
*/
|
|
162
|
+
const ALPHA_NAME = /^[\p{L}][\p{L} '.-]{3,}$/u;
|
|
163
|
+
/**
|
|
164
|
+
* Djb2 → uint32 seed. Deterministic; no `Math.random` (banned here and breaks corpus reproducibility).
|
|
165
|
+
*/
|
|
166
|
+
function hashString(s) {
|
|
167
|
+
let h = 5381;
|
|
168
|
+
for (let i = 0; i < s.length; i++) {
|
|
169
|
+
h = ((h << 5) + h + s.charCodeAt(i)) >>> 0;
|
|
170
|
+
}
|
|
171
|
+
return h >>> 0;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Inject ONE realistic typo — an adjacent-QWERTY-key substitution OR an adjacent-character transposition — into a
|
|
175
|
+
* single alpha name component (street/locality/region…), teaching the model to recover from real-world misspellings
|
|
176
|
+
* ("Cupertino" → "Cupertimo"). The edit is applied to BOTH `raw` and the component so the substring contract `alignRow`
|
|
177
|
+
* depends on holds. Number / postcode / unit components are never touched (they fail {@link ALPHA_NAME}). Deterministic
|
|
178
|
+
* per row (seeded from `source_id`). Returns `null` when no eligible component exists or the edit is a no-op.
|
|
179
|
+
*/
|
|
180
|
+
export const typoInject = (row) => {
|
|
181
|
+
const rng = mulberry32(hashString(`${row.source_id}:typo`));
|
|
182
|
+
// Count occurrences so we only edit an UNAMBIGUOUS target — a value that appears exactly once in
|
|
183
|
+
// raw and isn't a substring of another component. (e.g. "Cupertino" the locality is a substring of
|
|
184
|
+
// "Cupertino Avenue" the street; editing it would `replace` the street's occurrence and break the
|
|
185
|
+
// span. The substring contract `alignRow` enforces is why we filter rather than guess the position.)
|
|
186
|
+
const occurs = (needle) => {
|
|
187
|
+
let n = 0;
|
|
188
|
+
for (let i = row.raw.indexOf(needle); i >= 0; i = row.raw.indexOf(needle, i + needle.length)) {
|
|
189
|
+
n++;
|
|
190
|
+
}
|
|
191
|
+
return n;
|
|
192
|
+
};
|
|
193
|
+
const values = Object.values(row.components).filter(isPresent);
|
|
194
|
+
const eligible = Object.entries(row.components).filter(([, v]) => v && ALPHA_NAME.test(v) && occurs(v) === 1 && !values.some((o) => o !== v && o.includes(v)));
|
|
195
|
+
if (!eligible.length)
|
|
196
|
+
return null;
|
|
197
|
+
const [tag, value] = pick(eligible, rng);
|
|
198
|
+
// Interior alpha positions only — keep the first char (most real typos are interior) + a right neighbour.
|
|
199
|
+
const positions = [];
|
|
200
|
+
for (let i = 1; i < value.length - 1; i++)
|
|
201
|
+
if (/\p{L}/u.test(value[i])) {
|
|
202
|
+
positions.push(i);
|
|
203
|
+
}
|
|
204
|
+
if (!positions.length)
|
|
205
|
+
return null;
|
|
206
|
+
const i = pick(positions, rng);
|
|
207
|
+
const ch = value[i];
|
|
208
|
+
let typed;
|
|
209
|
+
if (rng() < 0.5) {
|
|
210
|
+
const next = value[i + 1];
|
|
211
|
+
if (ch === next)
|
|
212
|
+
return null; // transposing equal chars is a no-op
|
|
213
|
+
typed = value.slice(0, i) + next + ch + value.slice(i + 2);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
const lower = ch.toLowerCase();
|
|
217
|
+
const adj = QWERTY_ADJACENCY[lower];
|
|
218
|
+
if (!adj)
|
|
219
|
+
return null;
|
|
220
|
+
const sub = adj[Math.floor(rng() * adj.length)];
|
|
221
|
+
typed = value.slice(0, i) + (ch !== lower ? sub.toUpperCase() : sub) + value.slice(i + 1);
|
|
222
|
+
}
|
|
223
|
+
if (typed === value)
|
|
224
|
+
return null;
|
|
225
|
+
const newRaw = row.raw.replace(value, typed);
|
|
226
|
+
// first occurrence; `replace(string, …)` is literal, not regex
|
|
227
|
+
return withAugmentation(row, "typo-inject", newRaw, { ...row.components, [tag]: typed });
|
|
228
|
+
};
|
|
229
|
+
// ===========================================================================
|
|
230
|
+
// US-specific augmentations
|
|
231
|
+
// ===========================================================================
|
|
232
|
+
/**
|
|
233
|
+
* US state full ↔ alpha-2 mapping. Two-way: `STATE_TO_ABBR["Oregon"] = "OR"`.
|
|
234
|
+
*/
|
|
235
|
+
const STATE_NAME_TO_ABBR = {
|
|
236
|
+
Alabama: "AL",
|
|
237
|
+
Alaska: "AK",
|
|
238
|
+
Arizona: "AZ",
|
|
239
|
+
Arkansas: "AR",
|
|
240
|
+
California: "CA",
|
|
241
|
+
Colorado: "CO",
|
|
242
|
+
Connecticut: "CT",
|
|
243
|
+
Delaware: "DE",
|
|
244
|
+
Florida: "FL",
|
|
245
|
+
Georgia: "GA",
|
|
246
|
+
Hawaii: "HI",
|
|
247
|
+
Idaho: "ID",
|
|
248
|
+
Illinois: "IL",
|
|
249
|
+
Indiana: "IN",
|
|
250
|
+
Iowa: "IA",
|
|
251
|
+
Kansas: "KS",
|
|
252
|
+
Kentucky: "KY",
|
|
253
|
+
Louisiana: "LA",
|
|
254
|
+
Maine: "ME",
|
|
255
|
+
Maryland: "MD",
|
|
256
|
+
Massachusetts: "MA",
|
|
257
|
+
Michigan: "MI",
|
|
258
|
+
Minnesota: "MN",
|
|
259
|
+
Mississippi: "MS",
|
|
260
|
+
Missouri: "MO",
|
|
261
|
+
Montana: "MT",
|
|
262
|
+
Nebraska: "NE",
|
|
263
|
+
Nevada: "NV",
|
|
264
|
+
"New Hampshire": "NH",
|
|
265
|
+
"New Jersey": "NJ",
|
|
266
|
+
"New Mexico": "NM",
|
|
267
|
+
"New York": "NY",
|
|
268
|
+
"North Carolina": "NC",
|
|
269
|
+
"North Dakota": "ND",
|
|
270
|
+
Ohio: "OH",
|
|
271
|
+
Oklahoma: "OK",
|
|
272
|
+
Oregon: "OR",
|
|
273
|
+
Pennsylvania: "PA",
|
|
274
|
+
"Rhode Island": "RI",
|
|
275
|
+
"South Carolina": "SC",
|
|
276
|
+
"South Dakota": "SD",
|
|
277
|
+
Tennessee: "TN",
|
|
278
|
+
Texas: "TX",
|
|
279
|
+
Utah: "UT",
|
|
280
|
+
Vermont: "VT",
|
|
281
|
+
Virginia: "VA",
|
|
282
|
+
Washington: "WA",
|
|
283
|
+
"West Virginia": "WV",
|
|
284
|
+
Wisconsin: "WI",
|
|
285
|
+
Wyoming: "WY",
|
|
286
|
+
"District of Columbia": "DC",
|
|
287
|
+
};
|
|
288
|
+
const STATE_ABBR_TO_NAME = Object.fromEntries(Object.entries(STATE_NAME_TO_ABBR).map(([k, v]) => [v, k]));
|
|
289
|
+
/**
|
|
290
|
+
* US: substitute the full state name for its alpha-2 abbreviation.
|
|
291
|
+
*/
|
|
292
|
+
export const stateExpand = (row) => {
|
|
293
|
+
if (row.country !== "US")
|
|
294
|
+
return null;
|
|
295
|
+
const region = row.components.region;
|
|
296
|
+
if (!region)
|
|
297
|
+
return null;
|
|
298
|
+
const full = STATE_ABBR_TO_NAME[region];
|
|
299
|
+
if (!full)
|
|
300
|
+
return null;
|
|
301
|
+
// Replace the bounded "OR" surface form with "Oregon" in raw. Use word boundaries so we
|
|
302
|
+
// don't match inside "Stop" or similar.
|
|
303
|
+
const re = new RegExp(`\\b${region}\\b`, "g");
|
|
304
|
+
if (!re.test(row.raw))
|
|
305
|
+
return null;
|
|
306
|
+
const newRaw = row.raw.replaceAll(new RegExp(`\\b${region}\\b`, "g"), full);
|
|
307
|
+
const newComponents = { ...row.components, region: full };
|
|
308
|
+
return withAugmentation(row, "state-expand", newRaw, newComponents);
|
|
309
|
+
};
|
|
310
|
+
/**
|
|
311
|
+
* US: substitute the alpha-2 abbreviation for the full state name.
|
|
312
|
+
*/
|
|
313
|
+
export const stateAbbreviate = (row) => {
|
|
314
|
+
if (row.country !== "US")
|
|
315
|
+
return null;
|
|
316
|
+
const region = row.components.region;
|
|
317
|
+
if (!region)
|
|
318
|
+
return null;
|
|
319
|
+
const abbr = STATE_NAME_TO_ABBR[region];
|
|
320
|
+
if (!abbr)
|
|
321
|
+
return null;
|
|
322
|
+
const re = new RegExp(`\\b${region}\\b`, "g");
|
|
323
|
+
if (!re.test(row.raw))
|
|
324
|
+
return null;
|
|
325
|
+
const newRaw = row.raw.replaceAll(new RegExp(`\\b${region}\\b`, "g"), abbr);
|
|
326
|
+
const newComponents = { ...row.components, region: abbr };
|
|
327
|
+
return withAugmentation(row, "state-abbreviate", newRaw, newComponents);
|
|
328
|
+
};
|
|
329
|
+
const DIRECTIONAL_FULL_TO_ABBR = {
|
|
330
|
+
North: "N",
|
|
331
|
+
South: "S",
|
|
332
|
+
East: "E",
|
|
333
|
+
West: "W",
|
|
334
|
+
Northeast: "NE",
|
|
335
|
+
Northwest: "NW",
|
|
336
|
+
Southeast: "SE",
|
|
337
|
+
Southwest: "SW",
|
|
338
|
+
};
|
|
339
|
+
const DIRECTIONAL_ABBR_TO_FULL = Object.fromEntries(Object.entries(DIRECTIONAL_FULL_TO_ABBR).map(([k, v]) => [v, k]));
|
|
340
|
+
/**
|
|
341
|
+
* US: expand directional abbreviations in `street`/`street_suffix` (NW → Northwest).
|
|
342
|
+
*/
|
|
343
|
+
export const directionalExpand = (row) => {
|
|
344
|
+
if (row.country !== "US")
|
|
345
|
+
return null;
|
|
346
|
+
const tagsToCheck = ["street", "street_suffix", "street_prefix"];
|
|
347
|
+
let changed = false;
|
|
348
|
+
let newRaw = row.raw;
|
|
349
|
+
const newComponents = { ...row.components };
|
|
350
|
+
for (const tag of tagsToCheck) {
|
|
351
|
+
const v = newComponents[tag];
|
|
352
|
+
if (!v)
|
|
353
|
+
continue;
|
|
354
|
+
const replaced = v.replaceAll(/\b(N|S|E|W|NE|NW|SE|SW)\b/g, (m) => DIRECTIONAL_ABBR_TO_FULL[m] ?? m);
|
|
355
|
+
if (replaced !== v) {
|
|
356
|
+
newComponents[tag] = replaced;
|
|
357
|
+
newRaw = newRaw.replaceAll(new RegExp(`\\b${escapeRegExp(v)}\\b`, "g"), replaced);
|
|
358
|
+
changed = true;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
if (!changed)
|
|
362
|
+
return null;
|
|
363
|
+
return withAugmentation(row, "directional-expand", newRaw, newComponents);
|
|
364
|
+
};
|
|
365
|
+
/**
|
|
366
|
+
* US: abbreviate directional words (Northwest → NW).
|
|
367
|
+
*/
|
|
368
|
+
export const directionalAbbreviate = (row) => {
|
|
369
|
+
if (row.country !== "US")
|
|
370
|
+
return null;
|
|
371
|
+
const tagsToCheck = ["street", "street_suffix", "street_prefix"];
|
|
372
|
+
let changed = false;
|
|
373
|
+
let newRaw = row.raw;
|
|
374
|
+
const newComponents = { ...row.components };
|
|
375
|
+
for (const tag of tagsToCheck) {
|
|
376
|
+
const v = newComponents[tag];
|
|
377
|
+
if (!v)
|
|
378
|
+
continue;
|
|
379
|
+
const replaced = v.replaceAll(/\b(North|South|East|West|Northeast|Northwest|Southeast|Southwest)\b/g, (m) => DIRECTIONAL_FULL_TO_ABBR[m] ?? m);
|
|
380
|
+
if (replaced !== v) {
|
|
381
|
+
newComponents[tag] = replaced;
|
|
382
|
+
newRaw = newRaw.replaceAll(new RegExp(`\\b${escapeRegExp(v)}\\b`, "g"), replaced);
|
|
383
|
+
changed = true;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
if (!changed)
|
|
387
|
+
return null;
|
|
388
|
+
return withAugmentation(row, "directional-abbreviate", newRaw, newComponents);
|
|
389
|
+
};
|
|
390
|
+
/**
|
|
391
|
+
* US: swap the trailing street-suffix word in `components.street` to its preferred USPS abbreviation, preserving case.
|
|
392
|
+
* `"5th Avenue"` → `"5th Ave"`; `"5TH AVENUE"` → `"5TH AVE"`; `"main street"` → `"main st"`. Returns null when no
|
|
393
|
+
* trailing suffix is recognized, when the trailing word is already the preferred abbreviation, or when the swap would
|
|
394
|
+
* leave `raw` un- touched (alignment requires both raw and components to move in lockstep).
|
|
395
|
+
*
|
|
396
|
+
* Targets the trailing word only to avoid mangling streets like "Avenue of the Americas" where the suffix-shaped word
|
|
397
|
+
* is part of the proper name rather than a USPS suffix.
|
|
398
|
+
*/
|
|
399
|
+
export const streetSuffixAbbreviate = (row) => {
|
|
400
|
+
if (row.country !== "US")
|
|
401
|
+
return null;
|
|
402
|
+
const street = row.components.street;
|
|
403
|
+
if (!street)
|
|
404
|
+
return null;
|
|
405
|
+
const match = matchTrailingSuffix(street);
|
|
406
|
+
if (!match)
|
|
407
|
+
return null;
|
|
408
|
+
const preferred = US_STREET_SUFFIX_PREFERRED_ABBR[match.canonical];
|
|
409
|
+
const target = matchCase(preferred, match.matched);
|
|
410
|
+
if (target === match.matched)
|
|
411
|
+
return null;
|
|
412
|
+
const newStreet = `${street.slice(0, street.lastIndexOf(match.matched))}${target}`;
|
|
413
|
+
if (newStreet === street)
|
|
414
|
+
return null;
|
|
415
|
+
const newComponents = { ...row.components, street: newStreet };
|
|
416
|
+
const newRaw = row.raw.replaceAll(new RegExp(`\\b${escapeRegExp(street)}\\b`, "g"), newStreet);
|
|
417
|
+
if (newRaw === row.raw)
|
|
418
|
+
return null;
|
|
419
|
+
return withAugmentation(row, "us-street-suffix-abbreviate", newRaw, newComponents);
|
|
420
|
+
};
|
|
421
|
+
/**
|
|
422
|
+
* US: swap the trailing street-suffix word in `components.street` to its full canonical form, preserving case. `"5th
|
|
423
|
+
* Ave"` → `"5th Avenue"`; `"5TH AVE"` → `"5TH AVENUE"`; `"main st"` → `"main street"`. Returns null when no trailing
|
|
424
|
+
* suffix is recognized, when the trailing word is already the canonical full form, or when the swap would leave `raw`
|
|
425
|
+
* untouched.
|
|
426
|
+
*
|
|
427
|
+
* Same trailing-word-only rule as `streetSuffixAbbreviate`.
|
|
428
|
+
*/
|
|
429
|
+
export const streetSuffixExpand = (row) => {
|
|
430
|
+
if (row.country !== "US")
|
|
431
|
+
return null;
|
|
432
|
+
const street = row.components.street;
|
|
433
|
+
if (!street)
|
|
434
|
+
return null;
|
|
435
|
+
const match = matchTrailingSuffix(street);
|
|
436
|
+
if (!match)
|
|
437
|
+
return null;
|
|
438
|
+
const target = matchCase(match.canonical, match.matched);
|
|
439
|
+
if (target === match.matched)
|
|
440
|
+
return null;
|
|
441
|
+
const newStreet = `${street.slice(0, street.lastIndexOf(match.matched))}${target}`;
|
|
442
|
+
if (newStreet === street)
|
|
443
|
+
return null;
|
|
444
|
+
const newComponents = { ...row.components, street: newStreet };
|
|
445
|
+
const newRaw = row.raw.replaceAll(new RegExp(`\\b${escapeRegExp(street)}\\b`, "g"), newStreet);
|
|
446
|
+
if (newRaw === row.raw)
|
|
447
|
+
return null;
|
|
448
|
+
return withAugmentation(row, "us-street-suffix-expand", newRaw, newComponents);
|
|
449
|
+
};
|
|
450
|
+
/**
|
|
451
|
+
* US: swap the LEADING secondary-unit designator in `components.unit` to its approved USPS abbreviation, preserving
|
|
452
|
+
* case + the identifier. `"Apartment 4B"` → `"Apt 4B"`; `"SUITE 200"` → `"STE 200"`; `"floor 3"` → `"fl 3"`. Returns
|
|
453
|
+
* null when the unit has no recognized leading designator (a bare `"4B"` / `"#210"`), the designator is already the
|
|
454
|
+
* approved abbreviation, or the swap would leave `raw` untouched.
|
|
455
|
+
*
|
|
456
|
+
* Mirrors `streetSuffixAbbreviate`, but designators LEAD the unit (vs suffixes that trail the street). Sourced from the
|
|
457
|
+
* USPS Pub-28 C2 codex — the data-generation counterpart to the runtime `UnitDesignatorClassifier`.
|
|
458
|
+
*/
|
|
459
|
+
export const unitDesignatorAbbreviate = (row) => {
|
|
460
|
+
if (row.country !== "US")
|
|
461
|
+
return null;
|
|
462
|
+
const unit = row.components.unit;
|
|
463
|
+
if (!unit)
|
|
464
|
+
return null;
|
|
465
|
+
const match = matchLeadingDesignator(unit);
|
|
466
|
+
if (!match)
|
|
467
|
+
return null;
|
|
468
|
+
const preferred = US_UNIT_DESIGNATOR_PREFERRED_ABBR[match.canonical];
|
|
469
|
+
const target = matchCase(preferred, match.matched);
|
|
470
|
+
if (target === match.matched)
|
|
471
|
+
return null;
|
|
472
|
+
const newUnit = `${target}${unit.slice(match.matched.length)}`;
|
|
473
|
+
if (newUnit === unit)
|
|
474
|
+
return null;
|
|
475
|
+
const newComponents = { ...row.components, unit: newUnit };
|
|
476
|
+
const newRaw = row.raw.replaceAll(new RegExp(`\\b${escapeRegExp(unit)}\\b`, "g"), newUnit);
|
|
477
|
+
if (newRaw === row.raw)
|
|
478
|
+
return null;
|
|
479
|
+
return withAugmentation(row, "us-unit-designator-abbreviate", newRaw, newComponents);
|
|
480
|
+
};
|
|
481
|
+
/**
|
|
482
|
+
* US: swap the LEADING secondary-unit designator in `components.unit` to its full canonical form, preserving case + the
|
|
483
|
+
* identifier. `"Apt 4B"` → `"Apartment 4B"`; `"STE 200"` → `"SUITE 200"`. Returns null when there's no recognized
|
|
484
|
+
* leading designator, it's already the canonical word, or the swap would leave `raw` untouched. Same leading-word-only
|
|
485
|
+
* rule as `unitDesignatorAbbreviate`.
|
|
486
|
+
*/
|
|
487
|
+
export const unitDesignatorExpand = (row) => {
|
|
488
|
+
if (row.country !== "US")
|
|
489
|
+
return null;
|
|
490
|
+
const unit = row.components.unit;
|
|
491
|
+
if (!unit)
|
|
492
|
+
return null;
|
|
493
|
+
const match = matchLeadingDesignator(unit);
|
|
494
|
+
if (!match)
|
|
495
|
+
return null;
|
|
496
|
+
const target = matchCase(match.canonical, match.matched);
|
|
497
|
+
if (target === match.matched)
|
|
498
|
+
return null;
|
|
499
|
+
const newUnit = `${target}${unit.slice(match.matched.length)}`;
|
|
500
|
+
if (newUnit === unit)
|
|
501
|
+
return null;
|
|
502
|
+
const newComponents = { ...row.components, unit: newUnit };
|
|
503
|
+
const newRaw = row.raw.replaceAll(new RegExp(`\\b${escapeRegExp(unit)}\\b`, "g"), newUnit);
|
|
504
|
+
if (newRaw === row.raw)
|
|
505
|
+
return null;
|
|
506
|
+
return withAugmentation(row, "us-unit-designator-expand", newRaw, newComponents);
|
|
507
|
+
};
|
|
508
|
+
/**
|
|
509
|
+
* US: ZIP+4 form `12345-6789` → `123456789` (dash dropped).
|
|
510
|
+
*/
|
|
511
|
+
export const zipPlus4DashDrop = (row) => {
|
|
512
|
+
if (row.country !== "US")
|
|
513
|
+
return null;
|
|
514
|
+
const postcode = row.components.postcode;
|
|
515
|
+
if (!postcode || !/^\d{5}-\d{4}$/.test(postcode))
|
|
516
|
+
return null;
|
|
517
|
+
const noDash = postcode.replace("-", "");
|
|
518
|
+
const newRaw = row.raw.replace(postcode, noDash);
|
|
519
|
+
if (newRaw === row.raw)
|
|
520
|
+
return null;
|
|
521
|
+
return withAugmentation(row, "zip-plus4-dash-drop", newRaw, { ...row.components, postcode: noDash });
|
|
522
|
+
};
|
|
523
|
+
// ===========================================================================
|
|
524
|
+
// FR-specific augmentations
|
|
525
|
+
// ===========================================================================
|
|
526
|
+
/**
|
|
527
|
+
* FR: drop the article particle from a street ("Rue de la République" → "Rue République").
|
|
528
|
+
*/
|
|
529
|
+
export const particleStrip = (row) => {
|
|
530
|
+
if (row.country !== "FR")
|
|
531
|
+
return null;
|
|
532
|
+
const particle = row.components.street_prefix_particle;
|
|
533
|
+
if (!particle)
|
|
534
|
+
return null;
|
|
535
|
+
const newComponents = { ...row.components };
|
|
536
|
+
delete newComponents.street_prefix_particle;
|
|
537
|
+
// Drop the particle from raw, then collapse any double spaces.
|
|
538
|
+
const re = new RegExp(`\\s+${escapeRegExp(particle)}\\s+`, "g");
|
|
539
|
+
if (!re.test(row.raw))
|
|
540
|
+
return null;
|
|
541
|
+
const newRaw = row.raw.replace(re, " ").replaceAll(/\s+/g, " ").trim();
|
|
542
|
+
return withAugmentation(row, "particle-strip", newRaw, newComponents);
|
|
543
|
+
};
|
|
544
|
+
// ===========================================================================
|
|
545
|
+
// Registry + default policies
|
|
546
|
+
// ===========================================================================
|
|
547
|
+
/**
|
|
548
|
+
* Stable id → augmentation table.
|
|
549
|
+
*/
|
|
550
|
+
export const AUGMENTATIONS = {
|
|
551
|
+
"case-upper": caseUpper,
|
|
552
|
+
"case-lower": caseLower,
|
|
553
|
+
"drop-commas": dropCommas,
|
|
554
|
+
"double-space": doubleSpace,
|
|
555
|
+
"accent-strip": accentStrip,
|
|
556
|
+
"state-expand": stateExpand,
|
|
557
|
+
"state-abbreviate": stateAbbreviate,
|
|
558
|
+
"directional-expand": directionalExpand,
|
|
559
|
+
"directional-abbreviate": directionalAbbreviate,
|
|
560
|
+
"us-street-suffix-abbreviate": streetSuffixAbbreviate,
|
|
561
|
+
"us-street-suffix-expand": streetSuffixExpand,
|
|
562
|
+
"us-unit-designator-abbreviate": unitDesignatorAbbreviate,
|
|
563
|
+
"us-unit-designator-expand": unitDesignatorExpand,
|
|
564
|
+
"zip-plus4-dash-drop": zipPlus4DashDrop,
|
|
565
|
+
"particle-strip": particleStrip,
|
|
566
|
+
"typo-inject": typoInject,
|
|
567
|
+
};
|
|
568
|
+
/**
|
|
569
|
+
* Default augmentation set, by country. Phase 1: US + FR; others get the locale-agnostic set.
|
|
570
|
+
*/
|
|
571
|
+
export function defaultAugmentationsForCountry(country) {
|
|
572
|
+
// `typoInject` (#530) is deliberately NOT in the default set. It is implemented, tested, and
|
|
573
|
+
// registered in {@link AUGMENTATIONS} so callers can opt in (add it here or compose it directly),
|
|
574
|
+
// but it changes the synthesized corpus distribution and its effect on the trained model is not
|
|
575
|
+
// yet measured. Per the project's default-OFF discipline, promotion into the default build is an
|
|
576
|
+
// operator call once an A/B vs the current corpus exists — keeping the default byte-stable.
|
|
577
|
+
const universal = [caseUpper, caseLower, dropCommas, doubleSpace];
|
|
578
|
+
switch (country) {
|
|
579
|
+
case "US":
|
|
580
|
+
return [
|
|
581
|
+
...universal,
|
|
582
|
+
stateExpand,
|
|
583
|
+
stateAbbreviate,
|
|
584
|
+
directionalExpand,
|
|
585
|
+
directionalAbbreviate,
|
|
586
|
+
streetSuffixAbbreviate,
|
|
587
|
+
streetSuffixExpand,
|
|
588
|
+
unitDesignatorAbbreviate,
|
|
589
|
+
unitDesignatorExpand,
|
|
590
|
+
zipPlus4DashDrop,
|
|
591
|
+
];
|
|
592
|
+
case "FR":
|
|
593
|
+
return [...universal, accentStrip, particleStrip];
|
|
594
|
+
default:
|
|
595
|
+
return universal;
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
/**
|
|
599
|
+
* Run every augmentation against a row; collect the non-null outputs. The augmentations are pure, so callers can
|
|
600
|
+
* compose them off this generator (e.g. nesting accent-strip ∘ state-abbreviate).
|
|
601
|
+
*/
|
|
602
|
+
export function* synthesizeRow(row, augmentations = defaultAugmentationsForCountry(row.country)) {
|
|
603
|
+
for (const aug of augmentations) {
|
|
604
|
+
const out = aug(row);
|
|
605
|
+
if (out) {
|
|
606
|
+
yield out;
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
/**
|
|
611
|
+
* One element of `arr`, drawn with the supplied unit-interval source.
|
|
612
|
+
*/
|
|
613
|
+
export function pick(arr, random) {
|
|
614
|
+
return arr[Math.floor(random() * arr.length)];
|
|
615
|
+
}
|
|
616
|
+
/**
|
|
617
|
+
* One element of `items`, drawn with probability proportional to `weightOf(item)`.
|
|
618
|
+
*
|
|
619
|
+
* One `random()` draw per call. `inclusive` (the default) keeps an item whose cumulative weight lands exactly on the
|
|
620
|
+
* draw (`r <= 0` after subtraction); pass `inclusive: false` for the strict `r < 0` boundary — the two callers this
|
|
621
|
+
* consolidates disagreed on that float-exact edge, and each keeps its own reading so its draw stream is unchanged.
|
|
622
|
+
*/
|
|
623
|
+
export function weightedPick(items, random, weightOf, options = {}) {
|
|
624
|
+
const inclusive = options.inclusive ?? true;
|
|
625
|
+
const total = items.reduce((sum, item) => sum + weightOf(item), 0);
|
|
626
|
+
let r = random() * total;
|
|
627
|
+
for (const item of items) {
|
|
628
|
+
r -= weightOf(item);
|
|
629
|
+
if (inclusive ? r <= 0 : r < 0)
|
|
630
|
+
return item;
|
|
631
|
+
}
|
|
632
|
+
return items.at(-1);
|
|
633
|
+
}
|
|
634
|
+
/**
|
|
635
|
+
* A number drawn from a tiered magnitude distribution — the house/box-number shape the synthesizers share.
|
|
636
|
+
*
|
|
637
|
+
* Exactly two `random()` draws per call, in the order every caller established: one tier draw, then one value draw
|
|
638
|
+
* inside the chosen band.
|
|
639
|
+
*/
|
|
640
|
+
export function tieredNumber(random, bands) {
|
|
641
|
+
const r = random();
|
|
642
|
+
let chosen = bands.at(-1);
|
|
643
|
+
for (const band of bands) {
|
|
644
|
+
if (band.cutoff === undefined || r < band.cutoff) {
|
|
645
|
+
chosen = band;
|
|
646
|
+
break;
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
return String(chosen.base + Math.floor(random() * chosen.span));
|
|
650
|
+
}
|
|
651
|
+
/**
|
|
652
|
+
* The primary locale a synthesizer renders for a country — ISO-3166-1 alpha-2, alpha-3, or the English display name,
|
|
653
|
+
* case- and whitespace-tolerant. Unknown countries render as `en-US`.
|
|
654
|
+
*
|
|
655
|
+
* The PO-box synthesizer keeps its own template-scoped `countryToLocale` on top of this one: it maps any locale WITHOUT
|
|
656
|
+
* a PO-box template back to `en-US` (so `DE` still renders the en-US box vocabulary there).
|
|
657
|
+
*/
|
|
658
|
+
export function countryToLocale(country) {
|
|
659
|
+
const c = country.trim().toUpperCase();
|
|
660
|
+
if (c === "US" || c === "USA" || c === "UNITED STATES")
|
|
661
|
+
return "en-US";
|
|
662
|
+
if (c === "CA" || c === "CAN" || c === "CANADA")
|
|
663
|
+
return "en-CA";
|
|
664
|
+
if (c === "GB" || c === "UK" || c === "GBR" || c === "UNITED KINGDOM")
|
|
665
|
+
return "en-GB";
|
|
666
|
+
if (c === "AU" || c === "AUS" || c === "AUSTRALIA")
|
|
667
|
+
return "en-AU";
|
|
668
|
+
if (c === "NZ" || c === "NZL" || c === "NEW ZEALAND")
|
|
669
|
+
return "en-NZ";
|
|
670
|
+
if (c === "FR" || c === "FRA" || c === "FRANCE")
|
|
671
|
+
return "fr-FR";
|
|
672
|
+
if (c === "DE" || c === "DEU" || c === "GERMANY")
|
|
673
|
+
return "de-DE";
|
|
674
|
+
if (c === "ES" || c === "ESP" || c === "SPAIN")
|
|
675
|
+
return "es-ES";
|
|
676
|
+
if (c === "MX" || c === "MEX" || c === "MEXICO")
|
|
677
|
+
return "es-MX";
|
|
678
|
+
if (c === "AR" || c === "ARG" || c === "ARGENTINA")
|
|
679
|
+
return "es-AR";
|
|
680
|
+
return "en-US";
|
|
681
|
+
}
|
|
682
|
+
/**
|
|
683
|
+
* Compose a venue string + an address row into a single adversarial `LabeledRow`.
|
|
684
|
+
*
|
|
685
|
+
* The emitted row's `raw` is `${venue}${separator}${address.raw}`. Tokens are produced by tokenizing the two halves
|
|
686
|
+
* independently and concatenating; labels are venue tokens → `B-venue` / `I-venue` followed by the address's labels
|
|
687
|
+
* (obtained by aligning the input address in isolation). This deterministic boundary is the entire point of the
|
|
688
|
+
* primitive: the embedded place-shaped tokens in the venue stay labeled as `venue`, never as the address's locality /
|
|
689
|
+
* region / etc., even when they share surface forms.
|
|
690
|
+
*
|
|
691
|
+
* The char-offset span triple (#519) is re-targeted to the composed surface by the same deterministic boundary: one
|
|
692
|
+
* `venue` span over `[0, venue.length)` (no re-search), then the address's own spans shifted by `venue.length +
|
|
693
|
+
* separator.length` — plain offset arithmetic, no token indirection. The separator chars sit outside every span
|
|
694
|
+
* (deliberately unlabeled — now expressible). The composed triple is passed through `assertSpanInvariants` so a
|
|
695
|
+
* composition bug can't ride into a corpus.
|
|
696
|
+
*
|
|
697
|
+
* The address's components are forwarded as-is (alignment ran on them and they survived); `venue` is added on top with
|
|
698
|
+
* the trimmed venue string as its surface form.
|
|
699
|
+
*
|
|
700
|
+
* Returns `{ kind: "quarantined" }` when:
|
|
701
|
+
*
|
|
702
|
+
* - The venue is empty or whitespace-only.
|
|
703
|
+
* - The venue is not NFC-normalized (char offsets over a non-NFC raw are ambiguous — the same discipline `alignRow`
|
|
704
|
+
* enforces on adapter rows, surfaced as quarantine here because the venue is caller-supplied data).
|
|
705
|
+
* - The address row fails alignment in isolation (the underlying failure reason is propagated).
|
|
706
|
+
*/
|
|
707
|
+
export function composeAdversarialRow(venue, address, options) {
|
|
708
|
+
const separator = options.separator ?? ", ";
|
|
709
|
+
const tokenizer = options.tokenizer ?? whitespaceTokenizer();
|
|
710
|
+
const venueTrimmed = venue.trim();
|
|
711
|
+
if (!venueTrimmed) {
|
|
712
|
+
return { kind: "quarantined", row: { row: address, reason: "venue-empty" } };
|
|
713
|
+
}
|
|
714
|
+
// Char-offset spans over the composed raw are only meaningful under NFC (#519) — the address
|
|
715
|
+
// half is enforced by alignRow; the venue is caller-supplied and checked here.
|
|
716
|
+
if (venueTrimmed.normalize("NFC") !== venueTrimmed) {
|
|
717
|
+
return { kind: "quarantined", row: { row: address, reason: "venue-not-nfc" } };
|
|
718
|
+
}
|
|
719
|
+
const addressAligned = alignRow(address, { tokenizer });
|
|
720
|
+
if (addressAligned.kind !== "labeled") {
|
|
721
|
+
// Surface the address's quarantine reason but tag it with the compose attempt for
|
|
722
|
+
// debugging. The original CanonicalRow stays on the QuarantinedRow so callers can
|
|
723
|
+
// inspect the address payload.
|
|
724
|
+
return {
|
|
725
|
+
kind: "quarantined",
|
|
726
|
+
row: { row: address, reason: `compose-address-${addressAligned.row.reason}` },
|
|
727
|
+
};
|
|
728
|
+
}
|
|
729
|
+
const venueTokens = tokenizer.tokenize(venueTrimmed);
|
|
730
|
+
if (!venueTokens.length) {
|
|
731
|
+
return { kind: "quarantined", row: { row: address, reason: "venue-no-tokens" } };
|
|
732
|
+
}
|
|
733
|
+
const venueLabels = venueTokens.map((_, i) => (i === 0 ? "B-venue" : "I-venue"));
|
|
734
|
+
const tokens = [...venueTokens.map((t) => t.text), ...addressAligned.row.tokens];
|
|
735
|
+
const labels = [...venueLabels, ...addressAligned.row.labels];
|
|
736
|
+
const composedRaw = `${venueTrimmed}${separator}${address.raw}`;
|
|
737
|
+
const composedComponents = {
|
|
738
|
+
venue: venueTrimmed,
|
|
739
|
+
...address.components,
|
|
740
|
+
};
|
|
741
|
+
// Re-target the char-offset spans (#519) onto the composed surface: the venue span covers the
|
|
742
|
+
// whole trimmed venue (internal punctuation included — the token path cannot say that), and the
|
|
743
|
+
// address's spans shift right by the venue + separator length. alignRow emits the triple on
|
|
744
|
+
// every labeled row, so absence here is an alignment-contract bug, not data — fail loudly.
|
|
745
|
+
const { span_starts: addrStarts, span_ends: addrEnds, span_tags: addrTags } = addressAligned.row;
|
|
746
|
+
if (addrStarts === undefined || addrEnds === undefined || addrTags === undefined) {
|
|
747
|
+
throw new Error(`composeAdversarialRow: alignRow returned a labeled row without the span triple ` +
|
|
748
|
+
`(source=${address.source}, source_id=${address.source_id}) — alignment contract violation`);
|
|
749
|
+
}
|
|
750
|
+
const offset = venueTrimmed.length + separator.length;
|
|
751
|
+
const spans = [
|
|
752
|
+
{ tag: "venue", start: 0, end: venueTrimmed.length },
|
|
753
|
+
...addrTags.map((tag, i) => ({ tag, start: addrStarts[i] + offset, end: addrEnds[i] + offset })),
|
|
754
|
+
];
|
|
755
|
+
const baseSourceID = address.synth?.base_source_id ?? address.source_id;
|
|
756
|
+
const method = `compose:${options.pattern}`;
|
|
757
|
+
const composed = {
|
|
758
|
+
raw: composedRaw,
|
|
759
|
+
components: composedComponents,
|
|
760
|
+
country: address.country,
|
|
761
|
+
locale: address.locale,
|
|
762
|
+
source: address.source,
|
|
763
|
+
source_id: `${address.source_id}+${method}`,
|
|
764
|
+
corpus_version: address.corpus_version,
|
|
765
|
+
license: address.license,
|
|
766
|
+
synth: { method, base_source_id: baseSourceID },
|
|
767
|
+
tokens,
|
|
768
|
+
labels,
|
|
769
|
+
span_starts: spans.map((s) => s.start),
|
|
770
|
+
span_ends: spans.map((s) => s.end),
|
|
771
|
+
span_tags: spans.map((s) => s.tag),
|
|
772
|
+
};
|
|
773
|
+
assertSpanInvariants(spans, composed);
|
|
774
|
+
return { kind: "labeled", row: composed };
|
|
775
|
+
}
|
|
776
|
+
//# sourceMappingURL=utils.js.map
|