@mailwoman/corpus 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/out/src/adapters/geonames/adapter.d.ts +35 -0
  2. package/out/src/adapters/geonames/adapter.d.ts.map +1 -0
  3. package/out/src/adapters/geonames/adapter.js +161 -0
  4. package/out/src/adapters/geonames/adapter.js.map +1 -0
  5. package/out/src/adapters/geonames-postal/adapter.d.ts +30 -0
  6. package/out/src/adapters/geonames-postal/adapter.d.ts.map +1 -0
  7. package/out/src/adapters/geonames-postal/adapter.js +96 -0
  8. package/out/src/adapters/geonames-postal/adapter.js.map +1 -0
  9. package/out/src/adapters/index.d.ts +3 -0
  10. package/out/src/adapters/index.d.ts.map +1 -1
  11. package/out/src/adapters/index.js +9 -0
  12. package/out/src/adapters/index.js.map +1 -1
  13. package/out/src/adapters/usgov-irs-bmf/adapter.d.ts +26 -0
  14. package/out/src/adapters/usgov-irs-bmf/adapter.d.ts.map +1 -0
  15. package/out/src/adapters/usgov-irs-bmf/adapter.js +115 -0
  16. package/out/src/adapters/usgov-irs-bmf/adapter.js.map +1 -0
  17. package/out/src/synthesize-german.d.ts +10 -8
  18. package/out/src/synthesize-german.d.ts.map +1 -1
  19. package/out/src/synthesize-german.js +10 -9
  20. package/out/src/synthesize-german.js.map +1 -1
  21. package/out/src/synthesize-intersection.d.ts +9 -11
  22. package/out/src/synthesize-intersection.d.ts.map +1 -1
  23. package/out/src/synthesize-intersection.js +28 -14
  24. package/out/src/synthesize-intersection.js.map +1 -1
  25. package/out/src/synthesize-street.d.ts +2 -2
  26. package/out/src/synthesize.d.ts +19 -0
  27. package/out/src/synthesize.d.ts.map +1 -1
  28. package/out/src/synthesize.js +65 -1
  29. package/out/src/synthesize.js.map +1 -1
  30. package/package.json +8 -8
  31. package/out/src/codex/us-street-suffix.d.ts +0 -260
  32. package/out/src/codex/us-street-suffix.d.ts.map +0 -1
  33. package/out/src/codex/us-street-suffix.js +0 -286
  34. package/out/src/codex/us-street-suffix.js.map +0 -1
@@ -1,260 +0,0 @@
1
- /**
2
- * @copyright Sister Software
3
- * @license AGPL-3.0
4
- * @author Teffen Ellis, et al.
5
- *
6
- * USPS Publication 28, Appendix C — Postal Service Standard Suffix Abbreviations.
7
- *
8
- * This module exposes the codex (the dataset itself) plus a small set of pure helpers used by the
9
- * synthesis layer's `us-street-suffix-abbreviate` / `us-street-suffix-expand` augmentations.
10
- *
11
- * For each canonical suffix the value lists every recognized variant in USPS-published order; the
12
- * first variant is the preferred USPS abbreviation (e.g. `AVENUE → ["AVE", "AV", "AVEN", "AVENU",
13
- * "AVN", "AVNUE"]` — `AVE` is what the post office prints).
14
- *
15
- * Salvaged 2026-05-17 from `isp-nexus/universe@6eeb7bd99643a6d62a8b8abbd50968a1e492b90b`
16
- * `mailwoman/postal/suffix.ts` (originally copyright Sister Software; both projects are
17
- * AGPL-3.0). The dataset is verbatim; the helper API was reshaped to match mailwoman's synthesis
18
- * registry (the original isp-nexus `lookupStreetSuffix` was geared toward parsing, not
19
- * augmentation).
20
- * @see {@link https://pe.usps.com/text/pub28/28apc_002.htm USPS Street Suffix Abbreviations}
21
- */
22
- /**
23
- * Canonical USPS street suffix → list of recognized variants. The first variant in each list is the
24
- * preferred USPS abbreviation. Keys + values are uppercase per the publication.
25
- */
26
- export declare const US_STREET_SUFFIX_VARIANTS: {
27
- readonly ALLEY: readonly ["ALY", "ALLEE", "ALLY"];
28
- readonly ANEX: readonly ["ANX", "ANNEX", "ANNX"];
29
- readonly ARCADE: readonly ["ARC"];
30
- readonly AVENUE: readonly ["AVE", "AV", "AVEN", "AVENU", "AVN", "AVNUE"];
31
- readonly BAYOU: readonly ["BYU", "BAYOO"];
32
- readonly BEACH: readonly ["BCH"];
33
- readonly BEND: readonly ["BND"];
34
- readonly BLUFF: readonly ["BLF", "BLUF"];
35
- readonly BLUFFS: readonly ["BLFS"];
36
- readonly BOTTOM: readonly ["BTM", "BOT", "BOTTM"];
37
- readonly BOULEVARD: readonly ["BLVD", "BOUL", "BOULV"];
38
- readonly BRANCH: readonly ["BR", "BRNCH"];
39
- readonly BRIDGE: readonly ["BRG", "BRDGE"];
40
- readonly BROOK: readonly ["BRK"];
41
- readonly BROOKS: readonly ["BRKS"];
42
- readonly BURG: readonly ["BG"];
43
- readonly BURGS: readonly ["BGS"];
44
- readonly BYPASS: readonly ["BYP", "BYPA", "BYPAS", "BYPS"];
45
- readonly CAMP: readonly ["CP", "CMP"];
46
- readonly CANYON: readonly ["CYN", "CANYN", "CNYN"];
47
- readonly CAPE: readonly ["CPE"];
48
- readonly CAUSEWAY: readonly ["CSWY", "CAUSWA"];
49
- readonly CENTER: readonly ["CTR", "CEN", "CENT", "CENTR", "CENTRE", "CNTER", "CNTR"];
50
- readonly CENTERS: readonly ["CTRS"];
51
- readonly CIRCLE: readonly ["CIR", "CIRC", "CIRCL", "CRCL", "CRCLE"];
52
- readonly CIRCLES: readonly ["CIRS"];
53
- readonly CLIFF: readonly ["CLF"];
54
- readonly CLIFFS: readonly ["CLFS"];
55
- readonly CLUB: readonly ["CLB"];
56
- readonly COMMON: readonly ["CMN"];
57
- readonly COMMONS: readonly ["CMNS"];
58
- readonly CORNER: readonly ["COR"];
59
- readonly CORNERS: readonly ["CORS"];
60
- readonly COURSE: readonly ["CRSE"];
61
- readonly COURT: readonly ["CT"];
62
- readonly COURTS: readonly ["CTS"];
63
- readonly COVE: readonly ["CV"];
64
- readonly COVES: readonly ["CVS"];
65
- readonly CREEK: readonly ["CRK"];
66
- readonly CRESCENT: readonly ["CRES", "CRSENT", "CRSNT"];
67
- readonly CREST: readonly ["CRST"];
68
- readonly CROSSING: readonly ["XING", "CRSSNG"];
69
- readonly CROSSROAD: readonly ["XRD"];
70
- readonly CROSSROADS: readonly ["XRDS"];
71
- readonly CURVE: readonly ["CURV"];
72
- readonly DALE: readonly ["DL"];
73
- readonly DAM: readonly ["DM"];
74
- readonly DIVIDE: readonly ["DV", "DIV", "DVD"];
75
- readonly DRIVE: readonly ["DR", "DRIV", "DRV"];
76
- readonly DRIVES: readonly ["DRS"];
77
- readonly ESTATE: readonly ["EST"];
78
- readonly ESTATES: readonly ["ESTS"];
79
- readonly EXPRESSWAY: readonly ["EXPY", "EXP", "EXPR", "EXPRESS", "EXPW"];
80
- readonly EXTENSION: readonly ["EXT", "EXTN", "EXTNSN"];
81
- readonly EXTENSIONS: readonly ["EXTS"];
82
- readonly FALL: readonly ["FALL"];
83
- readonly FALLS: readonly ["FLS"];
84
- readonly FERRY: readonly ["FRY", "FRRY"];
85
- readonly FIELD: readonly ["FLD"];
86
- readonly FIELDS: readonly ["FLDS"];
87
- readonly FLAT: readonly ["FLT"];
88
- readonly FLATS: readonly ["FLTS"];
89
- readonly FORD: readonly ["FRD"];
90
- readonly FORDS: readonly ["FRDS"];
91
- readonly FOREST: readonly ["FRST", "FORESTS"];
92
- readonly FORGE: readonly ["FRG", "FORG"];
93
- readonly FORGES: readonly ["FRGS"];
94
- readonly FORK: readonly ["FRK"];
95
- readonly FORKS: readonly ["FRKS"];
96
- readonly FORT: readonly ["FT", "FRT"];
97
- readonly FREEWAY: readonly ["FWY", "FREEWY", "FRWAY", "FRWY"];
98
- readonly GARDEN: readonly ["GDN", "GARDN", "GRDEN", "GRDN"];
99
- readonly GARDENS: readonly ["GDNS", "GRDNS"];
100
- readonly GATEWAY: readonly ["GTWY", "GATEWY", "GATWAY", "GTWAY"];
101
- readonly GLEN: readonly ["GLN"];
102
- readonly GLENS: readonly ["GLNS"];
103
- readonly GREEN: readonly ["GRN"];
104
- readonly GREENS: readonly ["GRNS"];
105
- readonly GROVE: readonly ["GRV", "GROV"];
106
- readonly GROVES: readonly ["GRVS"];
107
- readonly HARBOR: readonly ["HBR", "HARB", "HARBR", "HRBOR"];
108
- readonly HARBORS: readonly ["HBRS"];
109
- readonly HAVEN: readonly ["HVN"];
110
- readonly HEIGHTS: readonly ["HTS", "HT"];
111
- readonly HIGHWAY: readonly ["HWY", "HIGHWY", "HIWAY", "HIWY", "HWAY"];
112
- readonly HILL: readonly ["HL"];
113
- readonly HILLS: readonly ["HLS"];
114
- readonly HOLLOW: readonly ["HOLW", "HLLW", "HOLLOWS", "HOLWS"];
115
- readonly INLET: readonly ["INLT"];
116
- readonly ISLAND: readonly ["IS", "ISLND"];
117
- readonly ISLANDS: readonly ["ISS", "ISLNDS"];
118
- readonly ISLE: readonly ["ISLE", "ISLES"];
119
- readonly JUNCTION: readonly ["JCT", "JCTION", "JCTN", "JUNCTN", "JUNCTON"];
120
- readonly JUNCTIONS: readonly ["JCTS", "JCTNS"];
121
- readonly KEY: readonly ["KY"];
122
- readonly KEYS: readonly ["KYS"];
123
- readonly KNOLL: readonly ["KNL", "KNOL"];
124
- readonly KNOLLS: readonly ["KNLS"];
125
- readonly LAKE: readonly ["LK"];
126
- readonly LAKES: readonly ["LKS"];
127
- readonly LAND: readonly ["LAND"];
128
- readonly LANDING: readonly ["LNDG", "LNDNG"];
129
- readonly LANE: readonly ["LN"];
130
- readonly LIGHT: readonly ["LGT"];
131
- readonly LIGHTS: readonly ["LGTS"];
132
- readonly LOAF: readonly ["LF"];
133
- readonly LOCK: readonly ["LCK"];
134
- readonly LOCKS: readonly ["LCKS"];
135
- readonly LODGE: readonly ["LDG", "LDGE", "LODG"];
136
- readonly LOOP: readonly ["LOOP", "LOOPS"];
137
- readonly MALL: readonly ["MALL"];
138
- readonly MANOR: readonly ["MNR"];
139
- readonly MANORS: readonly ["MNRS"];
140
- readonly MEADOW: readonly ["MDW"];
141
- readonly MEADOWS: readonly ["MDWS", "MDW", "MEDOWS"];
142
- readonly MEWS: readonly ["MEWS"];
143
- readonly MILL: readonly ["ML"];
144
- readonly MILLS: readonly ["MLS"];
145
- readonly MISSION: readonly ["MSN", "MISSN", "MSSN"];
146
- readonly MOTORWAY: readonly ["MTWY"];
147
- readonly MOUNT: readonly ["MT", "MNT"];
148
- readonly MOUNTAIN: readonly ["MTN", "MNTAIN", "MNTN", "MOUNTIN", "MTIN"];
149
- readonly MOUNTAINS: readonly ["MTNS", "MNTNS"];
150
- readonly NECK: readonly ["NCK"];
151
- readonly ORCHARD: readonly ["ORCH", "ORCHRD"];
152
- readonly OVAL: readonly ["OVAL", "OVL"];
153
- readonly OVERPASS: readonly ["OPAS"];
154
- readonly PARK: readonly ["PARK", "PRK", "PARKS"];
155
- readonly PARKWAY: readonly ["PKWY", "PARKWY", "PKWAY", "PKY"];
156
- readonly PARKWAYS: readonly ["PKWY", "PKWYS"];
157
- readonly PASS: readonly ["PASS"];
158
- readonly PASSAGE: readonly ["PSGE"];
159
- readonly PATH: readonly ["PATH", "PATHS"];
160
- readonly PIKE: readonly ["PIKE", "PIKES"];
161
- readonly PINE: readonly ["PNE"];
162
- readonly PINES: readonly ["PNES"];
163
- readonly PLACE: readonly ["PL"];
164
- readonly PLAIN: readonly ["PLN"];
165
- readonly PLAINS: readonly ["PLNS"];
166
- readonly PLAZA: readonly ["PLZ", "PLZA"];
167
- readonly POINT: readonly ["PT"];
168
- readonly POINTS: readonly ["PTS"];
169
- readonly PORT: readonly ["PRT"];
170
- readonly PORTS: readonly ["PRTS"];
171
- readonly PRAIRIE: readonly ["PR", "PRR"];
172
- readonly RADIAL: readonly ["RADL", "RAD", "RADIEL"];
173
- readonly RAMP: readonly ["RAMP"];
174
- readonly RANCH: readonly ["RNCH", "RANCHES", "RNCHS"];
175
- readonly RAPID: readonly ["RPD"];
176
- readonly RAPIDS: readonly ["RPDS"];
177
- readonly REST: readonly ["RST"];
178
- readonly RIDGE: readonly ["RDG", "RDGE"];
179
- readonly RIDGES: readonly ["RDGS"];
180
- readonly RIVER: readonly ["RIV", "RVR", "RIVR"];
181
- readonly ROAD: readonly ["RD"];
182
- readonly ROADS: readonly ["RDS"];
183
- readonly ROUTE: readonly ["RTE"];
184
- readonly ROW: readonly ["ROW"];
185
- readonly RUE: readonly ["RUE"];
186
- readonly RUN: readonly ["RUN"];
187
- readonly SHOAL: readonly ["SHL"];
188
- readonly SHOALS: readonly ["SHLS"];
189
- readonly SHORE: readonly ["SHR", "SHOAR"];
190
- readonly SHORES: readonly ["SHRS", "SHOARS"];
191
- readonly SKYWAY: readonly ["SKWY"];
192
- readonly SPRING: readonly ["SPG", "SPNG", "SPRNG"];
193
- readonly SPRINGS: readonly ["SPGS", "SPNGS", "SPRNGS"];
194
- readonly SPUR: readonly ["SPUR"];
195
- readonly SPURS: readonly ["SPUR"];
196
- readonly SQUARE: readonly ["SQ", "SQR", "SQRE", "SQU"];
197
- readonly SQUARES: readonly ["SQS", "SQRS"];
198
- readonly STATION: readonly ["STA", "STATN", "STN"];
199
- readonly STRAVENUE: readonly ["STRA", "STRAV", "STRAVEN", "STRAVN", "STRVN", "STRVNUE"];
200
- readonly STREAM: readonly ["STRM", "STREME"];
201
- readonly STREET: readonly ["ST", "STRT", "STR"];
202
- readonly STREETS: readonly ["STS"];
203
- readonly SUMMIT: readonly ["SMT", "SUMIT", "SUMITT"];
204
- readonly TERRACE: readonly ["TER", "TERR"];
205
- readonly THROUGHWAY: readonly ["TRWY"];
206
- readonly TRACE: readonly ["TRCE", "TRACES"];
207
- readonly TRACK: readonly ["TRAK", "TRACKS", "TRK", "TRKS"];
208
- readonly TRAFFICWAY: readonly ["TRFY"];
209
- readonly TRAIL: readonly ["TRL", "TRAILS", "TRLS"];
210
- readonly TRAILER: readonly ["TRLR", "TRLRS"];
211
- readonly TUNNEL: readonly ["TUNL", "TUNEL", "TUNLS", "TUNNELS", "TUNNL"];
212
- readonly TURNPIKE: readonly ["TPKE", "TRNPK", "TURNPK"];
213
- readonly UNDERPASS: readonly ["UPAS"];
214
- readonly UNION: readonly ["UN"];
215
- readonly UNIONS: readonly ["UNS"];
216
- readonly VALLEY: readonly ["VLY", "VALLY", "VLLY"];
217
- readonly VALLEYS: readonly ["VLYS"];
218
- readonly VIADUCT: readonly ["VIA", "VDCT", "VIADCT"];
219
- readonly VIEW: readonly ["VW"];
220
- readonly VIEWS: readonly ["VWS"];
221
- readonly VILLAGE: readonly ["VLG", "VILL", "VILLAG", "VILLG", "VILLIAGE"];
222
- readonly VILLAGES: readonly ["VLGS"];
223
- readonly VILLE: readonly ["VL"];
224
- readonly VISTA: readonly ["VIS", "VIST", "VST", "VSTA"];
225
- readonly WALK: readonly ["WALK"];
226
- readonly WALKS: readonly ["WALK"];
227
- readonly WALL: readonly ["WALL"];
228
- readonly WAY: readonly ["WAY", "WY"];
229
- readonly WAYS: readonly ["WAYS"];
230
- readonly WELL: readonly ["WL"];
231
- readonly WELLS: readonly ["WLS"];
232
- };
233
- /** Canonical USPS suffix (full word, uppercase per the publication). */
234
- export type UsStreetSuffix = keyof typeof US_STREET_SUFFIX_VARIANTS;
235
- /**
236
- * Inverse lookup: every variant abbreviation OR full canonical word → its canonical key.
237
- *
238
- * Built once at module load. `STREET` → `"STREET"`, `ST` → `"STREET"`, `STRT` → `"STREET"`, etc.
239
- * Built lowercase-keyed for case-insensitive matching.
240
- */
241
- export declare const US_STREET_SUFFIX_LOOKUP: ReadonlyMap<string, UsStreetSuffix>;
242
- /** Preferred USPS abbreviation per canonical (`AVENUE → "AVE"`, `STREET → "ST"`). */
243
- export declare const US_STREET_SUFFIX_PREFERRED_ABBR: Readonly<Record<UsStreetSuffix, string>>;
244
- /**
245
- * Apply `target`'s letters in the same case-pattern as `reference`. Three patterns covered:
246
- *
247
- * - All-uppercase reference (`"AVE"`) → uppercase target (`"AVENUE"`).
248
- * - All-lowercase reference (`"ave"`) → lowercase target (`"avenue"`).
249
- * - Anything else (`"Ave"`, `"aVe"`) → title-case target (`"Avenue"`).
250
- */
251
- export declare function matchCase(target: string, reference: string): string;
252
- /**
253
- * If the last whitespace-separated word of `street` is a known USPS suffix variant, return the
254
- * canonical key and the matched word. Returns null if the trailing word isn't a known suffix.
255
- */
256
- export declare function matchTrailingSuffix(street: string): {
257
- canonical: UsStreetSuffix;
258
- matched: string;
259
- } | null;
260
- //# sourceMappingURL=us-street-suffix.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"us-street-suffix.d.ts","sourceRoot":"","sources":["../../../src/codex/us-street-suffix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8MgB,CAAA;AAEtD,wEAAwE;AACxE,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,yBAAyB,CAAA;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAYpE,CAAA;AAEJ,qFAAqF;AACrF,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAExC,CAAA;AAE7C;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKnE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQzG"}
@@ -1,286 +0,0 @@
1
- /**
2
- * @copyright Sister Software
3
- * @license AGPL-3.0
4
- * @author Teffen Ellis, et al.
5
- *
6
- * USPS Publication 28, Appendix C — Postal Service Standard Suffix Abbreviations.
7
- *
8
- * This module exposes the codex (the dataset itself) plus a small set of pure helpers used by the
9
- * synthesis layer's `us-street-suffix-abbreviate` / `us-street-suffix-expand` augmentations.
10
- *
11
- * For each canonical suffix the value lists every recognized variant in USPS-published order; the
12
- * first variant is the preferred USPS abbreviation (e.g. `AVENUE → ["AVE", "AV", "AVEN", "AVENU",
13
- * "AVN", "AVNUE"]` — `AVE` is what the post office prints).
14
- *
15
- * Salvaged 2026-05-17 from `isp-nexus/universe@6eeb7bd99643a6d62a8b8abbd50968a1e492b90b`
16
- * `mailwoman/postal/suffix.ts` (originally copyright Sister Software; both projects are
17
- * AGPL-3.0). The dataset is verbatim; the helper API was reshaped to match mailwoman's synthesis
18
- * registry (the original isp-nexus `lookupStreetSuffix` was geared toward parsing, not
19
- * augmentation).
20
- * @see {@link https://pe.usps.com/text/pub28/28apc_002.htm USPS Street Suffix Abbreviations}
21
- */
22
- /**
23
- * Canonical USPS street suffix → list of recognized variants. The first variant in each list is the
24
- * preferred USPS abbreviation. Keys + values are uppercase per the publication.
25
- */
26
- export const US_STREET_SUFFIX_VARIANTS = {
27
- ALLEY: ["ALY", "ALLEE", "ALLY"],
28
- ANEX: ["ANX", "ANNEX", "ANNX"],
29
- ARCADE: ["ARC"],
30
- AVENUE: ["AVE", "AV", "AVEN", "AVENU", "AVN", "AVNUE"],
31
- BAYOU: ["BYU", "BAYOO"],
32
- BEACH: ["BCH"],
33
- BEND: ["BND"],
34
- BLUFF: ["BLF", "BLUF"],
35
- BLUFFS: ["BLFS"],
36
- BOTTOM: ["BTM", "BOT", "BOTTM"],
37
- BOULEVARD: ["BLVD", "BOUL", "BOULV"],
38
- BRANCH: ["BR", "BRNCH"],
39
- BRIDGE: ["BRG", "BRDGE"],
40
- BROOK: ["BRK"],
41
- BROOKS: ["BRKS"],
42
- BURG: ["BG"],
43
- BURGS: ["BGS"],
44
- BYPASS: ["BYP", "BYPA", "BYPAS", "BYPS"],
45
- CAMP: ["CP", "CMP"],
46
- CANYON: ["CYN", "CANYN", "CNYN"],
47
- CAPE: ["CPE"],
48
- CAUSEWAY: ["CSWY", "CAUSWA"],
49
- CENTER: ["CTR", "CEN", "CENT", "CENTR", "CENTRE", "CNTER", "CNTR"],
50
- CENTERS: ["CTRS"],
51
- CIRCLE: ["CIR", "CIRC", "CIRCL", "CRCL", "CRCLE"],
52
- CIRCLES: ["CIRS"],
53
- CLIFF: ["CLF"],
54
- CLIFFS: ["CLFS"],
55
- CLUB: ["CLB"],
56
- COMMON: ["CMN"],
57
- COMMONS: ["CMNS"],
58
- CORNER: ["COR"],
59
- CORNERS: ["CORS"],
60
- COURSE: ["CRSE"],
61
- COURT: ["CT"],
62
- COURTS: ["CTS"],
63
- COVE: ["CV"],
64
- COVES: ["CVS"],
65
- CREEK: ["CRK"],
66
- CRESCENT: ["CRES", "CRSENT", "CRSNT"],
67
- CREST: ["CRST"],
68
- CROSSING: ["XING", "CRSSNG"],
69
- CROSSROAD: ["XRD"],
70
- CROSSROADS: ["XRDS"],
71
- CURVE: ["CURV"],
72
- DALE: ["DL"],
73
- DAM: ["DM"],
74
- DIVIDE: ["DV", "DIV", "DVD"],
75
- DRIVE: ["DR", "DRIV", "DRV"],
76
- DRIVES: ["DRS"],
77
- ESTATE: ["EST"],
78
- ESTATES: ["ESTS"],
79
- EXPRESSWAY: ["EXPY", "EXP", "EXPR", "EXPRESS", "EXPW"],
80
- EXTENSION: ["EXT", "EXTN", "EXTNSN"],
81
- EXTENSIONS: ["EXTS"],
82
- FALL: ["FALL"],
83
- FALLS: ["FLS"],
84
- FERRY: ["FRY", "FRRY"],
85
- FIELD: ["FLD"],
86
- FIELDS: ["FLDS"],
87
- FLAT: ["FLT"],
88
- FLATS: ["FLTS"],
89
- FORD: ["FRD"],
90
- FORDS: ["FRDS"],
91
- FOREST: ["FRST", "FORESTS"],
92
- FORGE: ["FRG", "FORG"],
93
- FORGES: ["FRGS"],
94
- FORK: ["FRK"],
95
- FORKS: ["FRKS"],
96
- FORT: ["FT", "FRT"],
97
- FREEWAY: ["FWY", "FREEWY", "FRWAY", "FRWY"],
98
- GARDEN: ["GDN", "GARDN", "GRDEN", "GRDN"],
99
- GARDENS: ["GDNS", "GRDNS"],
100
- GATEWAY: ["GTWY", "GATEWY", "GATWAY", "GTWAY"],
101
- GLEN: ["GLN"],
102
- GLENS: ["GLNS"],
103
- GREEN: ["GRN"],
104
- GREENS: ["GRNS"],
105
- GROVE: ["GRV", "GROV"],
106
- GROVES: ["GRVS"],
107
- HARBOR: ["HBR", "HARB", "HARBR", "HRBOR"],
108
- HARBORS: ["HBRS"],
109
- HAVEN: ["HVN"],
110
- HEIGHTS: ["HTS", "HT"],
111
- HIGHWAY: ["HWY", "HIGHWY", "HIWAY", "HIWY", "HWAY"],
112
- HILL: ["HL"],
113
- HILLS: ["HLS"],
114
- HOLLOW: ["HOLW", "HLLW", "HOLLOWS", "HOLWS"],
115
- INLET: ["INLT"],
116
- ISLAND: ["IS", "ISLND"],
117
- ISLANDS: ["ISS", "ISLNDS"],
118
- ISLE: ["ISLE", "ISLES"],
119
- JUNCTION: ["JCT", "JCTION", "JCTN", "JUNCTN", "JUNCTON"],
120
- JUNCTIONS: ["JCTS", "JCTNS"],
121
- KEY: ["KY"],
122
- KEYS: ["KYS"],
123
- KNOLL: ["KNL", "KNOL"],
124
- KNOLLS: ["KNLS"],
125
- LAKE: ["LK"],
126
- LAKES: ["LKS"],
127
- LAND: ["LAND"],
128
- LANDING: ["LNDG", "LNDNG"],
129
- LANE: ["LN"],
130
- LIGHT: ["LGT"],
131
- LIGHTS: ["LGTS"],
132
- LOAF: ["LF"],
133
- LOCK: ["LCK"],
134
- LOCKS: ["LCKS"],
135
- LODGE: ["LDG", "LDGE", "LODG"],
136
- LOOP: ["LOOP", "LOOPS"],
137
- MALL: ["MALL"],
138
- MANOR: ["MNR"],
139
- MANORS: ["MNRS"],
140
- MEADOW: ["MDW"],
141
- MEADOWS: ["MDWS", "MDW", "MEDOWS"],
142
- MEWS: ["MEWS"],
143
- MILL: ["ML"],
144
- MILLS: ["MLS"],
145
- MISSION: ["MSN", "MISSN", "MSSN"],
146
- MOTORWAY: ["MTWY"],
147
- MOUNT: ["MT", "MNT"],
148
- MOUNTAIN: ["MTN", "MNTAIN", "MNTN", "MOUNTIN", "MTIN"],
149
- MOUNTAINS: ["MTNS", "MNTNS"],
150
- NECK: ["NCK"],
151
- ORCHARD: ["ORCH", "ORCHRD"],
152
- OVAL: ["OVAL", "OVL"],
153
- OVERPASS: ["OPAS"],
154
- PARK: ["PARK", "PRK", "PARKS"],
155
- PARKWAY: ["PKWY", "PARKWY", "PKWAY", "PKY"],
156
- PARKWAYS: ["PKWY", "PKWYS"],
157
- PASS: ["PASS"],
158
- PASSAGE: ["PSGE"],
159
- PATH: ["PATH", "PATHS"],
160
- PIKE: ["PIKE", "PIKES"],
161
- PINE: ["PNE"],
162
- PINES: ["PNES"],
163
- PLACE: ["PL"],
164
- PLAIN: ["PLN"],
165
- PLAINS: ["PLNS"],
166
- PLAZA: ["PLZ", "PLZA"],
167
- POINT: ["PT"],
168
- POINTS: ["PTS"],
169
- PORT: ["PRT"],
170
- PORTS: ["PRTS"],
171
- PRAIRIE: ["PR", "PRR"],
172
- RADIAL: ["RADL", "RAD", "RADIEL"],
173
- RAMP: ["RAMP"],
174
- RANCH: ["RNCH", "RANCHES", "RNCHS"],
175
- RAPID: ["RPD"],
176
- RAPIDS: ["RPDS"],
177
- REST: ["RST"],
178
- RIDGE: ["RDG", "RDGE"],
179
- RIDGES: ["RDGS"],
180
- RIVER: ["RIV", "RVR", "RIVR"],
181
- ROAD: ["RD"],
182
- ROADS: ["RDS"],
183
- ROUTE: ["RTE"],
184
- ROW: ["ROW"],
185
- RUE: ["RUE"],
186
- RUN: ["RUN"],
187
- SHOAL: ["SHL"],
188
- SHOALS: ["SHLS"],
189
- SHORE: ["SHR", "SHOAR"],
190
- SHORES: ["SHRS", "SHOARS"],
191
- SKYWAY: ["SKWY"],
192
- SPRING: ["SPG", "SPNG", "SPRNG"],
193
- SPRINGS: ["SPGS", "SPNGS", "SPRNGS"],
194
- SPUR: ["SPUR"],
195
- SPURS: ["SPUR"],
196
- SQUARE: ["SQ", "SQR", "SQRE", "SQU"],
197
- SQUARES: ["SQS", "SQRS"],
198
- STATION: ["STA", "STATN", "STN"],
199
- STRAVENUE: ["STRA", "STRAV", "STRAVEN", "STRAVN", "STRVN", "STRVNUE"],
200
- STREAM: ["STRM", "STREME"],
201
- STREET: ["ST", "STRT", "STR"],
202
- STREETS: ["STS"],
203
- SUMMIT: ["SMT", "SUMIT", "SUMITT"],
204
- TERRACE: ["TER", "TERR"],
205
- THROUGHWAY: ["TRWY"],
206
- TRACE: ["TRCE", "TRACES"],
207
- TRACK: ["TRAK", "TRACKS", "TRK", "TRKS"],
208
- TRAFFICWAY: ["TRFY"],
209
- TRAIL: ["TRL", "TRAILS", "TRLS"],
210
- TRAILER: ["TRLR", "TRLRS"],
211
- TUNNEL: ["TUNL", "TUNEL", "TUNLS", "TUNNELS", "TUNNL"],
212
- TURNPIKE: ["TPKE", "TRNPK", "TURNPK"],
213
- UNDERPASS: ["UPAS"],
214
- UNION: ["UN"],
215
- UNIONS: ["UNS"],
216
- VALLEY: ["VLY", "VALLY", "VLLY"],
217
- VALLEYS: ["VLYS"],
218
- VIADUCT: ["VIA", "VDCT", "VIADCT"],
219
- VIEW: ["VW"],
220
- VIEWS: ["VWS"],
221
- VILLAGE: ["VLG", "VILL", "VILLAG", "VILLG", "VILLIAGE"],
222
- VILLAGES: ["VLGS"],
223
- VILLE: ["VL"],
224
- VISTA: ["VIS", "VIST", "VST", "VSTA"],
225
- WALK: ["WALK"],
226
- WALKS: ["WALK"],
227
- WALL: ["WALL"],
228
- WAY: ["WAY", "WY"],
229
- WAYS: ["WAYS"],
230
- WELL: ["WL"],
231
- WELLS: ["WLS"],
232
- };
233
- /**
234
- * Inverse lookup: every variant abbreviation OR full canonical word → its canonical key.
235
- *
236
- * Built once at module load. `STREET` → `"STREET"`, `ST` → `"STREET"`, `STRT` → `"STREET"`, etc.
237
- * Built lowercase-keyed for case-insensitive matching.
238
- */
239
- export const US_STREET_SUFFIX_LOOKUP = (() => {
240
- const out = new Map();
241
- for (const canonical of Object.keys(US_STREET_SUFFIX_VARIANTS)) {
242
- out.set(canonical.toLowerCase(), canonical);
243
- for (const variant of US_STREET_SUFFIX_VARIANTS[canonical]) {
244
- // Don't overwrite — first canonical that claims a variant wins (matches USPS Pub-28's
245
- // ordering). E.g. "WALK" and "WALKS" both list "WALK" as a variant; "WALK" wins because
246
- // it sorts first in `Object.keys`.
247
- if (!out.has(variant.toLowerCase()))
248
- out.set(variant.toLowerCase(), canonical);
249
- }
250
- }
251
- return out;
252
- })();
253
- /** Preferred USPS abbreviation per canonical (`AVENUE → "AVE"`, `STREET → "ST"`). */
254
- export const US_STREET_SUFFIX_PREFERRED_ABBR = Object.fromEntries(Object.keys(US_STREET_SUFFIX_VARIANTS).map((k) => [k, US_STREET_SUFFIX_VARIANTS[k][0]]));
255
- /**
256
- * Apply `target`'s letters in the same case-pattern as `reference`. Three patterns covered:
257
- *
258
- * - All-uppercase reference (`"AVE"`) → uppercase target (`"AVENUE"`).
259
- * - All-lowercase reference (`"ave"`) → lowercase target (`"avenue"`).
260
- * - Anything else (`"Ave"`, `"aVe"`) → title-case target (`"Avenue"`).
261
- */
262
- export function matchCase(target, reference) {
263
- if (!reference)
264
- return target;
265
- if (reference === reference.toUpperCase())
266
- return target.toUpperCase();
267
- if (reference === reference.toLowerCase())
268
- return target.toLowerCase();
269
- return target.charAt(0).toUpperCase() + target.slice(1).toLowerCase();
270
- }
271
- /**
272
- * If the last whitespace-separated word of `street` is a known USPS suffix variant, return the
273
- * canonical key and the matched word. Returns null if the trailing word isn't a known suffix.
274
- */
275
- export function matchTrailingSuffix(street) {
276
- const trimmed = street.trim();
277
- if (!trimmed)
278
- return null;
279
- const parts = trimmed.split(/\s+/);
280
- const last = parts[parts.length - 1];
281
- const canonical = US_STREET_SUFFIX_LOOKUP.get(last.toLowerCase());
282
- if (!canonical)
283
- return null;
284
- return { canonical, matched: last };
285
- }
286
- //# sourceMappingURL=us-street-suffix.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"us-street-suffix.js","sourceRoot":"","sources":["../../../src/codex/us-street-suffix.ts"],"names":[],"mappings":"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"}