@mailwoman/corpus 9.4.0 → 10.0.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 (981) hide show
  1. package/README.md +16 -0
  2. package/lib/adapters/geonames/adapter.ts +3 -3
  3. package/lib/adapters/geonames/postal/adapter.ts +122 -0
  4. package/lib/adapters/index.ts +39 -32
  5. package/lib/adapters/openaddresses/adapter.ts +4 -7
  6. package/lib/adapters/osm/adapter.ts +278 -0
  7. package/lib/adapters/overture/adapter.ts +22 -7
  8. package/lib/adapters/utils/index.ts +1 -1
  9. package/lib/adapters/wof/admin/json/adapter.ts +239 -0
  10. package/lib/adapters/wof/json-rows.ts +181 -0
  11. package/lib/adapters/wof/postalcode-json/adapter.ts +196 -0
  12. package/lib/au/adapters/gnaf/adapter.ts +152 -0
  13. package/lib/au/adapters/gnaf/assemble.ts +225 -0
  14. package/lib/de/recipes/locale.ts +360 -0
  15. package/lib/fr/adapters/ban/adapter.ts +159 -0
  16. package/lib/fr/recipes/admin-split.ts +243 -0
  17. package/lib/fr/recipes/bare-street.ts +171 -0
  18. package/lib/fr/recipes/fragment.ts +334 -0
  19. package/lib/fr/recipes/lieudit.ts +274 -0
  20. package/lib/fr/recipes/order.ts +246 -0
  21. package/lib/fr/tools/fetch/ban.ts +289 -0
  22. package/lib/index.ts +1 -1
  23. package/lib/international/recipes/locale.ts +598 -0
  24. package/lib/jp/tools/fetch/houjin.ts +141 -0
  25. package/lib/kr/adapters/juso/label-rows.ts +259 -0
  26. package/lib/kr/adapters/localdata/align.ts +299 -0
  27. package/lib/kr/adapters/localdata/key-index.ts +185 -0
  28. package/lib/kr/adapters/localdata/permit-rows.ts +186 -0
  29. package/lib/kr/tools/fetch/juso.ts +172 -0
  30. package/lib/kr/tools/fetch/localdata.ts +206 -0
  31. package/lib/recipes/bare/postcode/eval.ts +99 -0
  32. package/lib/recipes/bare/postcode/index.ts +327 -0
  33. package/lib/recipes/country-balanced.ts +1 -1
  34. package/lib/recipes/index.ts +28 -21
  35. package/lib/recipes/intersection.ts +1 -1
  36. package/lib/recipes/po/box/cedex/au-nz.ts +82 -0
  37. package/lib/recipes/po/box/cedex/ca.ts +58 -0
  38. package/lib/recipes/po/box/cedex/fr.ts +76 -0
  39. package/lib/recipes/po/box/cedex/phrases.ts +108 -0
  40. package/lib/recipes/po/box/cedex/recipe.ts +203 -0
  41. package/lib/recipes/po/box/cedex/sources.ts +189 -0
  42. package/lib/recipes/po/box/cedex/types.ts +35 -0
  43. package/lib/recipes/po/box/cedex/us.ts +69 -0
  44. package/lib/recipes/po/box/cedex/vocabulary.ts +106 -0
  45. package/lib/recipes/po/box/cedex.ts +9 -0
  46. package/lib/recipes/po/box/index.ts +128 -0
  47. package/lib/recipes/scaffold.ts +18 -41
  48. package/lib/recipes/street/affix.ts +807 -0
  49. package/lib/recipes/sub/venue/context.ts +149 -0
  50. package/lib/recipes/sub/venue/index.ts +997 -0
  51. package/lib/recipes/sub/venue/sources.ts +739 -0
  52. package/lib/recipes/trailing-region.ts +6 -1
  53. package/lib/recipes/unit.ts +1 -1
  54. package/lib/sg/recipes/register.ts +270 -0
  55. package/lib/sg/tools/fetch/acra.ts +179 -0
  56. package/lib/south-asia/recipes/register.ts +214 -0
  57. package/lib/synthesizers/anchor-absorption.ts +1 -1
  58. package/lib/synthesizers/locale.ts +261 -0
  59. package/lib/synthesizers/street.ts +1 -1
  60. package/lib/synthesizers/utils.ts +2 -2
  61. package/lib/tools/audit.ts +3 -2
  62. package/lib/tools/corpus-stats.ts +3 -3
  63. package/lib/tools/fetch/download/index.ts +10 -0
  64. package/lib/tools/fetch/download/manifest.ts +102 -0
  65. package/lib/tools/fetch/download/network.ts +226 -0
  66. package/lib/tools/fetch/download/retry.ts +173 -0
  67. package/lib/tools/fetch/geonames/dump.ts +257 -0
  68. package/lib/tools/fetch/geonames/postal.ts +180 -0
  69. package/lib/tools/fetch/index.ts +30 -30
  70. package/lib/tools/fetch/openaddresses.ts +2 -2
  71. package/lib/tools/fetch/ourairports.ts +2 -2
  72. package/lib/tools/fetch/ppd.ts +1 -3
  73. package/lib/tools/fetch/wikidata-subvenue.ts +2 -2
  74. package/lib/tools/golden/promote.ts +340 -0
  75. package/lib/tools/golden/relabel-street/directory.ts +340 -0
  76. package/lib/tools/golden/relabel-street/index.ts +9 -0
  77. package/lib/tools/golden/relabel-street/row.ts +361 -0
  78. package/lib/tools/index.ts +10 -10
  79. package/lib/tools/ingest-csv.ts +5 -7
  80. package/lib/tools/lint/slice/vocab.ts +376 -0
  81. package/lib/tools/overlay-manifest.ts +92 -25
  82. package/lib/tools/overture-subvenue.ts +1 -1
  83. package/lib/tools/postcode-triples.ts +138 -14
  84. package/lib/tools/sub/venue/harvest.ts +234 -0
  85. package/lib/tools/sub/venue/head-nouns.ts +245 -0
  86. package/lib/tools/sub/venue/lexicon.ts +429 -0
  87. package/lib/tools/sub/venue/surfaces.ts +95 -0
  88. package/lib/tools/sub/venue/table.ts +281 -0
  89. package/lib/tools/sub/venue/wikidata.ts +85 -0
  90. package/lib/tw/tools/fetch/gcis.ts +180 -0
  91. package/lib/types.ts +1 -1
  92. package/lib/us/adapters/fcc-bdc/adapter.ts +173 -0
  93. package/lib/us/adapters/state/hi-schools/adapter.ts +160 -0
  94. package/lib/us/adapters/state/ia-contractors/adapter.ts +136 -0
  95. package/lib/us/adapters/state/ny-notaries/adapter.ts +133 -0
  96. package/lib/us/adapters/state/tx-notaries/adapter.ts +149 -0
  97. package/lib/us/adapters/tiger/adapter.ts +250 -0
  98. package/lib/us/adapters/usgov/hrsa-fqhc/adapter.ts +156 -0
  99. package/lib/us/adapters/usgov/imls-pls/adapter.ts +134 -0
  100. package/lib/us/adapters/usgov/irs-bmf/adapter.ts +145 -0
  101. package/lib/us/adapters/usgov/nad/adapter.ts +324 -0
  102. package/lib/us/adapters/usgov/nppes/adapter.ts +143 -0
  103. package/lib/us/adapters/usgov/samhsa-treatment-locator/adapter.ts +182 -0
  104. package/lib/us/tools/fetch/hrsa.ts +59 -0
  105. package/lib/us/tools/fetch/imls-pls.ts +149 -0
  106. package/lib/us/tools/fetch/nad.ts +341 -0
  107. package/lib/us/tools/fetch/nppes.ts +165 -0
  108. package/lib/us/tools/fetch/state/hi-schools.ts +161 -0
  109. package/lib/us/tools/fetch/state/sources.ts +146 -0
  110. package/lib/us/tools/fetch/tiger-full.ts +308 -0
  111. package/lib/utils/align.ts +1 -1
  112. package/lib/utils/golden.ts +12 -8
  113. package/lib/utils/wof-json.ts +7 -13
  114. package/out/adapters/geonames/adapter.d.ts +1 -1
  115. package/out/adapters/geonames/adapter.js +3 -3
  116. package/out/adapters/geonames/adapter.js.map +1 -1
  117. package/out/adapters/geonames/postal/adapter.d.ts.map +1 -0
  118. package/out/adapters/geonames/postal/adapter.js +107 -0
  119. package/out/adapters/geonames/postal/adapter.js.map +1 -0
  120. package/out/adapters/index.d.ts +16 -16
  121. package/out/adapters/index.d.ts.map +1 -1
  122. package/out/adapters/index.js +34 -32
  123. package/out/adapters/index.js.map +1 -1
  124. package/out/adapters/openaddresses/adapter.d.ts.map +1 -1
  125. package/out/adapters/openaddresses/adapter.js +4 -6
  126. package/out/adapters/openaddresses/adapter.js.map +1 -1
  127. package/out/adapters/osm/adapter.d.ts +95 -0
  128. package/out/adapters/osm/adapter.d.ts.map +1 -0
  129. package/out/adapters/osm/adapter.js +211 -0
  130. package/out/adapters/osm/adapter.js.map +1 -0
  131. package/out/adapters/overture/adapter.d.ts +10 -0
  132. package/out/adapters/overture/adapter.d.ts.map +1 -1
  133. package/out/adapters/overture/adapter.js +20 -7
  134. package/out/adapters/overture/adapter.js.map +1 -1
  135. package/out/adapters/synth-po-box/adapter.js.map +1 -1
  136. package/out/adapters/utils/index.d.ts +1 -1
  137. package/out/adapters/utils/index.d.ts.map +1 -1
  138. package/out/adapters/utils/index.js.map +1 -1
  139. package/out/adapters/wof/admin/json/adapter.d.ts +79 -0
  140. package/out/adapters/wof/admin/json/adapter.d.ts.map +1 -0
  141. package/out/adapters/wof/admin/json/adapter.js +204 -0
  142. package/out/adapters/wof/admin/json/adapter.js.map +1 -0
  143. package/out/adapters/wof/json-rows.d.ts +73 -0
  144. package/out/adapters/wof/json-rows.d.ts.map +1 -0
  145. package/out/adapters/wof/json-rows.js +115 -0
  146. package/out/adapters/wof/json-rows.js.map +1 -0
  147. package/out/adapters/wof/postalcode-json/adapter.d.ts +65 -0
  148. package/out/adapters/wof/postalcode-json/adapter.d.ts.map +1 -0
  149. package/out/adapters/wof/postalcode-json/adapter.js +167 -0
  150. package/out/adapters/wof/postalcode-json/adapter.js.map +1 -0
  151. package/out/au/adapters/gnaf/adapter.d.ts.map +1 -0
  152. package/out/au/adapters/gnaf/adapter.js +127 -0
  153. package/out/au/adapters/gnaf/adapter.js.map +1 -0
  154. package/out/au/adapters/gnaf/assemble.d.ts +65 -0
  155. package/out/au/adapters/gnaf/assemble.d.ts.map +1 -0
  156. package/out/au/adapters/gnaf/assemble.js +154 -0
  157. package/out/au/adapters/gnaf/assemble.js.map +1 -0
  158. package/out/cn/recipes/organizational-units.d.ts +36 -0
  159. package/out/cn/recipes/organizational-units.d.ts.map +1 -0
  160. package/out/cn/recipes/organizational-units.js +159 -0
  161. package/out/cn/recipes/organizational-units.js.map +1 -0
  162. package/out/cz/recipes/pcfirst-preposition.d.ts +22 -0
  163. package/out/cz/recipes/pcfirst-preposition.d.ts.map +1 -0
  164. package/out/cz/recipes/pcfirst-preposition.js +101 -0
  165. package/out/cz/recipes/pcfirst-preposition.js.map +1 -0
  166. package/out/de/recipes/locale.d.ts +44 -0
  167. package/out/de/recipes/locale.d.ts.map +1 -0
  168. package/out/de/recipes/locale.js +289 -0
  169. package/out/de/recipes/locale.js.map +1 -0
  170. package/out/env.d.ts +1 -1
  171. package/out/fr/adapters/ban/adapter.d.ts.map +1 -0
  172. package/out/fr/adapters/ban/adapter.js +123 -0
  173. package/out/fr/adapters/ban/adapter.js.map +1 -0
  174. package/out/fr/adapters/ban/street-decompose.d.ts.map +1 -0
  175. package/out/fr/adapters/ban/street-decompose.js.map +1 -0
  176. package/out/fr/recipes/admin-split.d.ts +38 -0
  177. package/out/fr/recipes/admin-split.d.ts.map +1 -0
  178. package/out/fr/recipes/admin-split.js +192 -0
  179. package/out/fr/recipes/admin-split.js.map +1 -0
  180. package/out/fr/recipes/bare-street.d.ts +28 -0
  181. package/out/fr/recipes/bare-street.d.ts.map +1 -0
  182. package/out/fr/recipes/bare-street.js +144 -0
  183. package/out/fr/recipes/bare-street.js.map +1 -0
  184. package/out/fr/recipes/fragment.d.ts +77 -0
  185. package/out/fr/recipes/fragment.d.ts.map +1 -0
  186. package/out/fr/recipes/fragment.js +277 -0
  187. package/out/fr/recipes/fragment.js.map +1 -0
  188. package/out/fr/recipes/lieudit.d.ts +32 -0
  189. package/out/fr/recipes/lieudit.d.ts.map +1 -0
  190. package/out/fr/recipes/lieudit.js +211 -0
  191. package/out/fr/recipes/lieudit.js.map +1 -0
  192. package/out/fr/recipes/order.d.ts +38 -0
  193. package/out/fr/recipes/order.d.ts.map +1 -0
  194. package/out/fr/recipes/order.js +198 -0
  195. package/out/fr/recipes/order.js.map +1 -0
  196. package/out/fr/tools/fetch/ban.d.ts +31 -0
  197. package/out/fr/tools/fetch/ban.d.ts.map +1 -0
  198. package/out/fr/tools/fetch/ban.js +239 -0
  199. package/out/fr/tools/fetch/ban.js.map +1 -0
  200. package/out/index.d.ts +1 -1
  201. package/out/index.d.ts.map +1 -1
  202. package/out/index.js +1 -1
  203. package/out/index.js.map +1 -1
  204. package/out/international/recipes/locale.d.ts +136 -0
  205. package/out/international/recipes/locale.d.ts.map +1 -0
  206. package/out/international/recipes/locale.js +458 -0
  207. package/out/international/recipes/locale.js.map +1 -0
  208. package/out/jp/adapters/wof-admin/adapter.d.ts.map +1 -0
  209. package/out/jp/adapters/wof-admin/adapter.js.map +1 -0
  210. package/out/jp/tools/fetch/houjin.d.ts +24 -0
  211. package/out/jp/tools/fetch/houjin.d.ts.map +1 -0
  212. package/out/jp/tools/fetch/houjin.js +102 -0
  213. package/out/jp/tools/fetch/houjin.js.map +1 -0
  214. package/out/kr/adapters/juso/label-rows.d.ts +76 -0
  215. package/out/kr/adapters/juso/label-rows.d.ts.map +1 -0
  216. package/out/kr/adapters/juso/label-rows.js +194 -0
  217. package/out/kr/adapters/juso/label-rows.js.map +1 -0
  218. package/out/kr/adapters/localdata/align.d.ts +43 -0
  219. package/out/kr/adapters/localdata/align.d.ts.map +1 -0
  220. package/out/kr/adapters/localdata/align.js +223 -0
  221. package/out/kr/adapters/localdata/align.js.map +1 -0
  222. package/out/kr/adapters/localdata/key-index.d.ts +71 -0
  223. package/out/kr/adapters/localdata/key-index.d.ts.map +1 -0
  224. package/out/kr/adapters/localdata/key-index.js +133 -0
  225. package/out/kr/adapters/localdata/key-index.js.map +1 -0
  226. package/out/kr/adapters/localdata/permit-rows.d.ts +66 -0
  227. package/out/kr/adapters/localdata/permit-rows.d.ts.map +1 -0
  228. package/out/kr/adapters/localdata/permit-rows.js +131 -0
  229. package/out/kr/adapters/localdata/permit-rows.js.map +1 -0
  230. package/out/kr/tools/fetch/juso.d.ts +30 -0
  231. package/out/kr/tools/fetch/juso.d.ts.map +1 -0
  232. package/out/kr/tools/fetch/juso.js +120 -0
  233. package/out/kr/tools/fetch/juso.js.map +1 -0
  234. package/out/kr/tools/fetch/localdata.d.ts +30 -0
  235. package/out/kr/tools/fetch/localdata.d.ts.map +1 -0
  236. package/out/kr/tools/fetch/localdata.js +139 -0
  237. package/out/kr/tools/fetch/localdata.js.map +1 -0
  238. package/out/nl/recipes/postcode.d.ts +26 -0
  239. package/out/nl/recipes/postcode.d.ts.map +1 -0
  240. package/out/nl/recipes/postcode.js +103 -0
  241. package/out/nl/recipes/postcode.js.map +1 -0
  242. package/out/no/recipes/fragment.d.ts +43 -0
  243. package/out/no/recipes/fragment.d.ts.map +1 -0
  244. package/out/no/recipes/fragment.js +183 -0
  245. package/out/no/recipes/fragment.js.map +1 -0
  246. package/out/no/recipes/street/index.d.ts +18 -0
  247. package/out/no/recipes/street/index.d.ts.map +1 -0
  248. package/out/no/recipes/street/index.js +72 -0
  249. package/out/no/recipes/street/index.js.map +1 -0
  250. package/out/no/recipes/street/led.d.ts +24 -0
  251. package/out/no/recipes/street/led.d.ts.map +1 -0
  252. package/out/no/recipes/street/led.js +114 -0
  253. package/out/no/recipes/street/led.js.map +1 -0
  254. package/out/recipes/bare/country.d.ts +25 -0
  255. package/out/recipes/bare/country.d.ts.map +1 -0
  256. package/out/recipes/bare/country.js +88 -0
  257. package/out/recipes/bare/country.js.map +1 -0
  258. package/out/recipes/bare/postcode/eval.d.ts +29 -0
  259. package/out/recipes/bare/postcode/eval.d.ts.map +1 -0
  260. package/out/recipes/bare/postcode/eval.js +85 -0
  261. package/out/recipes/bare/postcode/eval.js.map +1 -0
  262. package/out/recipes/bare/postcode/index.d.ts +62 -0
  263. package/out/recipes/bare/postcode/index.d.ts.map +1 -0
  264. package/out/recipes/bare/postcode/index.js +267 -0
  265. package/out/recipes/bare/postcode/index.js.map +1 -0
  266. package/out/recipes/country-balanced.js.map +1 -1
  267. package/out/recipes/index.d.ts.map +1 -1
  268. package/out/recipes/index.js +28 -21
  269. package/out/recipes/index.js.map +1 -1
  270. package/out/recipes/intersection.js.map +1 -1
  271. package/out/recipes/po/box/cedex/au-nz.d.ts +7 -0
  272. package/out/recipes/po/box/cedex/au-nz.d.ts.map +1 -0
  273. package/out/recipes/po/box/cedex/au-nz.js +56 -0
  274. package/out/recipes/po/box/cedex/au-nz.js.map +1 -0
  275. package/out/recipes/po/box/cedex/ca.d.ts +7 -0
  276. package/out/recipes/po/box/cedex/ca.d.ts.map +1 -0
  277. package/out/recipes/po/box/cedex/ca.js +38 -0
  278. package/out/recipes/po/box/cedex/ca.js.map +1 -0
  279. package/out/recipes/po/box/cedex/fr.d.ts +7 -0
  280. package/out/recipes/po/box/cedex/fr.d.ts.map +1 -0
  281. package/out/recipes/po/box/cedex/fr.js +57 -0
  282. package/out/recipes/po/box/cedex/fr.js.map +1 -0
  283. package/out/recipes/po/box/cedex/phrases.d.ts +8 -0
  284. package/out/recipes/po/box/cedex/phrases.d.ts.map +1 -0
  285. package/out/recipes/po/box/cedex/phrases.js +76 -0
  286. package/out/recipes/po/box/cedex/phrases.js.map +1 -0
  287. package/out/recipes/po/box/cedex/recipe.d.ts +9 -0
  288. package/out/recipes/po/box/cedex/recipe.d.ts.map +1 -0
  289. package/out/recipes/po/box/cedex/recipe.js +153 -0
  290. package/out/recipes/po/box/cedex/recipe.js.map +1 -0
  291. package/out/recipes/po/box/cedex/sources.d.ts +86 -0
  292. package/out/recipes/po/box/cedex/sources.d.ts.map +1 -0
  293. package/out/recipes/po/box/cedex/sources.js +143 -0
  294. package/out/recipes/po/box/cedex/sources.js.map +1 -0
  295. package/out/recipes/po/box/cedex/types.d.ts +31 -0
  296. package/out/recipes/po/box/cedex/types.d.ts.map +1 -0
  297. package/out/recipes/po/box/cedex/types.js +5 -0
  298. package/out/recipes/po/box/cedex/types.js.map +1 -0
  299. package/out/recipes/po/box/cedex/us.d.ts +7 -0
  300. package/out/recipes/po/box/cedex/us.d.ts.map +1 -0
  301. package/out/recipes/po/box/cedex/us.js +51 -0
  302. package/out/recipes/po/box/cedex/us.js.map +1 -0
  303. package/out/recipes/po/box/cedex/vocabulary.d.ts +68 -0
  304. package/out/recipes/po/box/cedex/vocabulary.d.ts.map +1 -0
  305. package/out/recipes/po/box/cedex/vocabulary.js +90 -0
  306. package/out/recipes/po/box/cedex/vocabulary.js.map +1 -0
  307. package/out/recipes/po/box/cedex.d.ts +9 -0
  308. package/out/recipes/po/box/cedex.d.ts.map +1 -0
  309. package/out/recipes/po/box/cedex.js +9 -0
  310. package/out/recipes/po/box/cedex.js.map +1 -0
  311. package/out/recipes/po/box/index.d.ts +17 -0
  312. package/out/recipes/po/box/index.d.ts.map +1 -0
  313. package/out/recipes/po/box/index.js +105 -0
  314. package/out/recipes/po/box/index.js.map +1 -0
  315. package/out/recipes/scaffold.d.ts +20 -0
  316. package/out/recipes/scaffold.d.ts.map +1 -1
  317. package/out/recipes/scaffold.js +18 -37
  318. package/out/recipes/scaffold.js.map +1 -1
  319. package/out/recipes/street/affix.d.ts +89 -0
  320. package/out/recipes/street/affix.d.ts.map +1 -0
  321. package/out/recipes/street/affix.js +565 -0
  322. package/out/recipes/street/affix.js.map +1 -0
  323. package/out/recipes/street/bare.d.ts +25 -0
  324. package/out/recipes/street/bare.d.ts.map +1 -0
  325. package/out/recipes/street/bare.js +87 -0
  326. package/out/recipes/street/bare.js.map +1 -0
  327. package/out/recipes/sub/venue/context.d.ts +29 -0
  328. package/out/recipes/sub/venue/context.d.ts.map +1 -0
  329. package/out/recipes/sub/venue/context.js +106 -0
  330. package/out/recipes/sub/venue/context.js.map +1 -0
  331. package/out/recipes/sub/venue/index.d.ts +270 -0
  332. package/out/recipes/sub/venue/index.d.ts.map +1 -0
  333. package/out/recipes/sub/venue/index.js +728 -0
  334. package/out/recipes/sub/venue/index.js.map +1 -0
  335. package/out/recipes/sub/venue/sources.d.ts +209 -0
  336. package/out/recipes/sub/venue/sources.d.ts.map +1 -0
  337. package/out/recipes/sub/venue/sources.js +555 -0
  338. package/out/recipes/sub/venue/sources.js.map +1 -0
  339. package/out/recipes/trailing-region.d.ts.map +1 -1
  340. package/out/recipes/trailing-region.js +6 -1
  341. package/out/recipes/trailing-region.js.map +1 -1
  342. package/out/recipes/unit.js.map +1 -1
  343. package/out/sg/recipes/register.d.ts +69 -0
  344. package/out/sg/recipes/register.d.ts.map +1 -0
  345. package/out/sg/recipes/register.js +211 -0
  346. package/out/sg/recipes/register.js.map +1 -0
  347. package/out/sg/tools/fetch/acra.d.ts +23 -0
  348. package/out/sg/tools/fetch/acra.d.ts.map +1 -0
  349. package/out/sg/tools/fetch/acra.js +126 -0
  350. package/out/sg/tools/fetch/acra.js.map +1 -0
  351. package/out/si/recipes/bare-village.d.ts +32 -0
  352. package/out/si/recipes/bare-village.d.ts.map +1 -0
  353. package/out/si/recipes/bare-village.js +89 -0
  354. package/out/si/recipes/bare-village.js.map +1 -0
  355. package/out/south-asia/recipes/register.d.ts +51 -0
  356. package/out/south-asia/recipes/register.d.ts.map +1 -0
  357. package/out/south-asia/recipes/register.js +154 -0
  358. package/out/south-asia/recipes/register.js.map +1 -0
  359. package/out/synthesizers/anchor-absorption.d.ts +1 -1
  360. package/out/synthesizers/anchor-absorption.d.ts.map +1 -1
  361. package/out/synthesizers/anchor-absorption.js.map +1 -1
  362. package/out/synthesizers/boundary-stress.js.map +1 -1
  363. package/out/synthesizers/house-venue.js.map +1 -1
  364. package/out/synthesizers/intersection.js.map +1 -1
  365. package/out/synthesizers/locale.d.ts +116 -0
  366. package/out/synthesizers/locale.d.ts.map +1 -0
  367. package/out/synthesizers/locale.js +150 -0
  368. package/out/synthesizers/locale.js.map +1 -0
  369. package/out/synthesizers/no-street.d.ts.map +1 -1
  370. package/out/synthesizers/no-street.js.map +1 -1
  371. package/out/synthesizers/po-box.js.map +1 -1
  372. package/out/synthesizers/street.d.ts.map +1 -1
  373. package/out/synthesizers/street.js +1 -1
  374. package/out/synthesizers/street.js.map +1 -1
  375. package/out/synthesizers/utils.js +1 -1
  376. package/out/synthesizers/utils.js.map +1 -1
  377. package/out/test-kit/corpus-recipe.d.ts.map +1 -1
  378. package/out/test-kit/corpus-recipe.js.map +1 -1
  379. package/out/tools/audit.d.ts.map +1 -1
  380. package/out/tools/audit.js +3 -2
  381. package/out/tools/audit.js.map +1 -1
  382. package/out/tools/corpus-stats.js +3 -3
  383. package/out/tools/corpus-stats.js.map +1 -1
  384. package/out/tools/fetch/download/index.d.ts +10 -0
  385. package/out/tools/fetch/download/index.d.ts.map +1 -0
  386. package/out/tools/fetch/download/index.js +10 -0
  387. package/out/tools/fetch/download/index.js.map +1 -0
  388. package/out/tools/fetch/download/manifest.d.ts +47 -0
  389. package/out/tools/fetch/download/manifest.d.ts.map +1 -0
  390. package/out/tools/fetch/download/manifest.js +74 -0
  391. package/out/tools/fetch/download/manifest.js.map +1 -0
  392. package/out/tools/fetch/download/network.d.ts +105 -0
  393. package/out/tools/fetch/download/network.d.ts.map +1 -0
  394. package/out/tools/fetch/download/network.js +130 -0
  395. package/out/tools/fetch/download/network.js.map +1 -0
  396. package/out/tools/fetch/download/retry.d.ts +45 -0
  397. package/out/tools/fetch/download/retry.d.ts.map +1 -0
  398. package/out/tools/fetch/download/retry.js +136 -0
  399. package/out/tools/fetch/download/retry.js.map +1 -0
  400. package/out/tools/fetch/geonames/dump.d.ts +91 -0
  401. package/out/tools/fetch/geonames/dump.d.ts.map +1 -0
  402. package/out/tools/fetch/geonames/dump.js +171 -0
  403. package/out/tools/fetch/geonames/dump.js.map +1 -0
  404. package/out/tools/fetch/geonames/postal.d.ts +76 -0
  405. package/out/tools/fetch/geonames/postal.d.ts.map +1 -0
  406. package/out/tools/fetch/geonames/postal.js +126 -0
  407. package/out/tools/fetch/geonames/postal.js.map +1 -0
  408. package/out/tools/fetch/index.d.ts +30 -30
  409. package/out/tools/fetch/index.d.ts.map +1 -1
  410. package/out/tools/fetch/index.js +30 -30
  411. package/out/tools/fetch/index.js.map +1 -1
  412. package/out/tools/fetch/openaddresses.d.ts +1 -1
  413. package/out/tools/fetch/openaddresses.d.ts.map +1 -1
  414. package/out/tools/fetch/openaddresses.js +1 -1
  415. package/out/tools/fetch/openaddresses.js.map +1 -1
  416. package/out/tools/fetch/ourairports.d.ts +1 -1
  417. package/out/tools/fetch/ourairports.d.ts.map +1 -1
  418. package/out/tools/fetch/ourairports.js +1 -1
  419. package/out/tools/fetch/ourairports.js.map +1 -1
  420. package/out/tools/fetch/ppd.js +1 -3
  421. package/out/tools/fetch/ppd.js.map +1 -1
  422. package/out/tools/fetch/wikidata-subvenue.d.ts +1 -1
  423. package/out/tools/fetch/wikidata-subvenue.d.ts.map +1 -1
  424. package/out/tools/fetch/wikidata-subvenue.js +1 -1
  425. package/out/tools/fetch/wikidata-subvenue.js.map +1 -1
  426. package/out/tools/golden/expand.d.ts +90 -0
  427. package/out/tools/golden/expand.d.ts.map +1 -0
  428. package/out/tools/golden/expand.js +406 -0
  429. package/out/tools/golden/expand.js.map +1 -0
  430. package/out/tools/golden/promote.d.ts +72 -0
  431. package/out/tools/golden/promote.d.ts.map +1 -0
  432. package/out/tools/golden/promote.js +243 -0
  433. package/out/tools/golden/promote.js.map +1 -0
  434. package/out/tools/golden/relabel-street/directory.d.ts +83 -0
  435. package/out/tools/golden/relabel-street/directory.d.ts.map +1 -0
  436. package/out/tools/golden/relabel-street/directory.js +216 -0
  437. package/out/tools/golden/relabel-street/directory.js.map +1 -0
  438. package/out/tools/golden/relabel-street/index.d.ts +9 -0
  439. package/out/tools/golden/relabel-street/index.d.ts.map +1 -0
  440. package/out/tools/golden/relabel-street/index.js +9 -0
  441. package/out/tools/golden/relabel-street/index.js.map +1 -0
  442. package/out/tools/golden/relabel-street/row.d.ts +121 -0
  443. package/out/tools/golden/relabel-street/row.d.ts.map +1 -0
  444. package/out/tools/golden/relabel-street/row.js +232 -0
  445. package/out/tools/golden/relabel-street/row.js.map +1 -0
  446. package/out/tools/index.d.ts +10 -10
  447. package/out/tools/index.d.ts.map +1 -1
  448. package/out/tools/index.js +10 -10
  449. package/out/tools/index.js.map +1 -1
  450. package/out/tools/ingest-csv.d.ts.map +1 -1
  451. package/out/tools/ingest-csv.js +5 -7
  452. package/out/tools/ingest-csv.js.map +1 -1
  453. package/out/tools/lint/slice/index.d.ts +93 -0
  454. package/out/tools/lint/slice/index.d.ts.map +1 -0
  455. package/out/tools/lint/slice/index.js +322 -0
  456. package/out/tools/lint/slice/index.js.map +1 -0
  457. package/out/tools/lint/slice/vocab.d.ts +90 -0
  458. package/out/tools/lint/slice/vocab.d.ts.map +1 -0
  459. package/out/tools/lint/slice/vocab.js +254 -0
  460. package/out/tools/lint/slice/vocab.js.map +1 -0
  461. package/out/tools/overlay-manifest.d.ts +56 -6
  462. package/out/tools/overlay-manifest.d.ts.map +1 -1
  463. package/out/tools/overlay-manifest.js +56 -15
  464. package/out/tools/overlay-manifest.js.map +1 -1
  465. package/out/tools/overture-subvenue.d.ts +1 -1
  466. package/out/tools/postcode-triples.d.ts +36 -0
  467. package/out/tools/postcode-triples.d.ts.map +1 -1
  468. package/out/tools/postcode-triples.js +91 -12
  469. package/out/tools/postcode-triples.js.map +1 -1
  470. package/out/tools/slice/kryptonite.d.ts +32 -0
  471. package/out/tools/slice/kryptonite.d.ts.map +1 -0
  472. package/out/tools/slice/kryptonite.js +99 -0
  473. package/out/tools/slice/kryptonite.js.map +1 -0
  474. package/out/tools/slice/translit.d.ts +51 -0
  475. package/out/tools/slice/translit.d.ts.map +1 -0
  476. package/out/tools/slice/translit.js +166 -0
  477. package/out/tools/slice/translit.js.map +1 -0
  478. package/out/tools/sub/venue/harvest.d.ts +100 -0
  479. package/out/tools/sub/venue/harvest.d.ts.map +1 -0
  480. package/out/tools/sub/venue/harvest.js +168 -0
  481. package/out/tools/sub/venue/harvest.js.map +1 -0
  482. package/out/tools/sub/venue/head-nouns.d.ts +50 -0
  483. package/out/tools/sub/venue/head-nouns.d.ts.map +1 -0
  484. package/out/tools/sub/venue/head-nouns.js.map +1 -0
  485. package/out/tools/sub/venue/lexicon.d.ts +156 -0
  486. package/out/tools/sub/venue/lexicon.d.ts.map +1 -0
  487. package/out/tools/sub/venue/lexicon.js +283 -0
  488. package/out/tools/sub/venue/lexicon.js.map +1 -0
  489. package/out/tools/sub/venue/promotions.d.ts +94 -0
  490. package/out/tools/sub/venue/promotions.d.ts.map +1 -0
  491. package/out/tools/sub/venue/promotions.js +266 -0
  492. package/out/tools/sub/venue/promotions.js.map +1 -0
  493. package/out/tools/sub/venue/surfaces.d.ts +45 -0
  494. package/out/tools/sub/venue/surfaces.d.ts.map +1 -0
  495. package/out/tools/sub/venue/surfaces.js.map +1 -0
  496. package/out/tools/sub/venue/table.d.ts +229 -0
  497. package/out/tools/sub/venue/table.d.ts.map +1 -0
  498. package/out/tools/sub/venue/table.js.map +1 -0
  499. package/out/tools/sub/venue/wikidata.d.ts +26 -0
  500. package/out/tools/sub/venue/wikidata.d.ts.map +1 -0
  501. package/out/tools/sub/venue/wikidata.js +62 -0
  502. package/out/tools/sub/venue/wikidata.js.map +1 -0
  503. package/out/tw/tools/fetch/gcis.d.ts +23 -0
  504. package/out/tw/tools/fetch/gcis.d.ts.map +1 -0
  505. package/out/tw/tools/fetch/gcis.js +135 -0
  506. package/out/tw/tools/fetch/gcis.js.map +1 -0
  507. package/out/types.d.ts +1 -1
  508. package/out/types.d.ts.map +1 -1
  509. package/out/us/adapters/fcc-bdc/adapter.d.ts.map +1 -0
  510. package/out/us/adapters/fcc-bdc/adapter.js +142 -0
  511. package/out/us/adapters/fcc-bdc/adapter.js.map +1 -0
  512. package/out/us/adapters/state/hi-schools/adapter.d.ts.map +1 -0
  513. package/out/us/adapters/state/hi-schools/adapter.js +136 -0
  514. package/out/us/adapters/state/hi-schools/adapter.js.map +1 -0
  515. package/out/us/adapters/state/hi-schools/workbook.d.ts.map +1 -0
  516. package/out/us/adapters/state/hi-schools/workbook.js.map +1 -0
  517. package/out/us/adapters/state/ia-contractors/adapter.d.ts.map +1 -0
  518. package/out/us/adapters/state/ia-contractors/adapter.js +104 -0
  519. package/out/us/adapters/state/ia-contractors/adapter.js.map +1 -0
  520. package/out/us/adapters/state/ny-notaries/adapter.d.ts.map +1 -0
  521. package/out/us/adapters/state/ny-notaries/adapter.js +112 -0
  522. package/out/us/adapters/state/ny-notaries/adapter.js.map +1 -0
  523. package/out/us/adapters/state/tx-notaries/adapter.d.ts.map +1 -0
  524. package/out/us/adapters/state/tx-notaries/adapter.js +118 -0
  525. package/out/us/adapters/state/tx-notaries/adapter.js.map +1 -0
  526. package/out/us/adapters/tiger/adapter.d.ts +55 -0
  527. package/out/us/adapters/tiger/adapter.d.ts.map +1 -0
  528. package/out/us/adapters/tiger/adapter.js +197 -0
  529. package/out/us/adapters/tiger/adapter.js.map +1 -0
  530. package/out/us/adapters/tiger/street-decompose.d.ts.map +1 -0
  531. package/out/us/adapters/tiger/street-decompose.js.map +1 -0
  532. package/out/us/adapters/usgov/hrsa-fqhc/adapter.d.ts.map +1 -0
  533. package/out/us/adapters/usgov/hrsa-fqhc/adapter.js +121 -0
  534. package/out/us/adapters/usgov/hrsa-fqhc/adapter.js.map +1 -0
  535. package/out/us/adapters/usgov/imls-pls/adapter.d.ts.map +1 -0
  536. package/out/us/adapters/usgov/imls-pls/adapter.js +106 -0
  537. package/out/us/adapters/usgov/imls-pls/adapter.js.map +1 -0
  538. package/out/us/adapters/usgov/irs-bmf/adapter.d.ts.map +1 -0
  539. package/out/us/adapters/usgov/irs-bmf/adapter.js +116 -0
  540. package/out/us/adapters/usgov/irs-bmf/adapter.js.map +1 -0
  541. package/out/us/adapters/usgov/nad/adapter.d.ts.map +1 -0
  542. package/out/us/adapters/usgov/nad/adapter.js +239 -0
  543. package/out/us/adapters/usgov/nad/adapter.js.map +1 -0
  544. package/out/us/adapters/usgov/nppes/adapter.d.ts.map +1 -0
  545. package/out/us/adapters/usgov/nppes/adapter.js +110 -0
  546. package/out/us/adapters/usgov/nppes/adapter.js.map +1 -0
  547. package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.d.ts.map +1 -0
  548. package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.js +143 -0
  549. package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.js.map +1 -0
  550. package/out/us/fips-state.d.ts +41 -0
  551. package/out/us/fips-state.d.ts.map +1 -0
  552. package/out/us/fips-state.js +100 -0
  553. package/out/us/fips-state.js.map +1 -0
  554. package/out/us/tools/fetch/hrsa.d.ts +18 -0
  555. package/out/us/tools/fetch/hrsa.d.ts.map +1 -0
  556. package/out/us/tools/fetch/hrsa.js +46 -0
  557. package/out/us/tools/fetch/hrsa.js.map +1 -0
  558. package/out/us/tools/fetch/imls-pls.d.ts +25 -0
  559. package/out/us/tools/fetch/imls-pls.d.ts.map +1 -0
  560. package/out/us/tools/fetch/imls-pls.js +108 -0
  561. package/out/us/tools/fetch/imls-pls.js.map +1 -0
  562. package/out/us/tools/fetch/nad.d.ts +70 -0
  563. package/out/us/tools/fetch/nad.d.ts.map +1 -0
  564. package/out/us/tools/fetch/nad.js +234 -0
  565. package/out/us/tools/fetch/nad.js.map +1 -0
  566. package/out/us/tools/fetch/nppes.d.ts +26 -0
  567. package/out/us/tools/fetch/nppes.d.ts.map +1 -0
  568. package/out/us/tools/fetch/nppes.js +126 -0
  569. package/out/us/tools/fetch/nppes.js.map +1 -0
  570. package/out/us/tools/fetch/state/hi-schools.d.ts +26 -0
  571. package/out/us/tools/fetch/state/hi-schools.d.ts.map +1 -0
  572. package/out/us/tools/fetch/state/hi-schools.js +112 -0
  573. package/out/us/tools/fetch/state/hi-schools.js.map +1 -0
  574. package/out/us/tools/fetch/state/sources.d.ts +26 -0
  575. package/out/us/tools/fetch/state/sources.d.ts.map +1 -0
  576. package/out/us/tools/fetch/state/sources.js +111 -0
  577. package/out/us/tools/fetch/state/sources.js.map +1 -0
  578. package/out/us/tools/fetch/tiger-full.d.ts +22 -0
  579. package/out/us/tools/fetch/tiger-full.d.ts.map +1 -0
  580. package/out/us/tools/fetch/tiger-full.js +217 -0
  581. package/out/us/tools/fetch/tiger-full.js.map +1 -0
  582. package/out/utils/align.d.ts +1 -1
  583. package/out/utils/align.d.ts.map +1 -1
  584. package/out/utils/align.js.map +1 -1
  585. package/out/utils/golden.d.ts +7 -3
  586. package/out/utils/golden.d.ts.map +1 -1
  587. package/out/utils/golden.js +12 -8
  588. package/out/utils/golden.js.map +1 -1
  589. package/out/utils/parquet.d.ts.map +1 -1
  590. package/out/utils/split.js.map +1 -1
  591. package/out/utils/wof-json.d.ts.map +1 -1
  592. package/out/utils/wof-json.js +7 -12
  593. package/out/utils/wof-json.js.map +1 -1
  594. package/out/ve/recipes/reviewed-postcode-tail.d.ts.map +1 -0
  595. package/out/ve/recipes/reviewed-postcode-tail.js.map +1 -0
  596. package/package.json +196 -46
  597. package/lib/adapters/ban/adapter.ts +0 -190
  598. package/lib/adapters/fcc-bdc/adapter.ts +0 -174
  599. package/lib/adapters/geonames-postal/adapter.ts +0 -122
  600. package/lib/adapters/gnaf/adapter.ts +0 -149
  601. package/lib/adapters/gnaf/assemble.ts +0 -225
  602. package/lib/adapters/state-hi-schools/adapter.ts +0 -170
  603. package/lib/adapters/state-ia-contractors/adapter.ts +0 -144
  604. package/lib/adapters/state-ny-notaries/adapter.ts +0 -141
  605. package/lib/adapters/state-tx-notaries/adapter.ts +0 -157
  606. package/lib/adapters/tiger/adapter.ts +0 -252
  607. package/lib/adapters/usgov-hrsa-fqhc/adapter.ts +0 -167
  608. package/lib/adapters/usgov-imls-pls/adapter.ts +0 -143
  609. package/lib/adapters/usgov-irs-bmf/adapter.ts +0 -151
  610. package/lib/adapters/usgov-nad/adapter.ts +0 -334
  611. package/lib/adapters/usgov-nppes/adapter.ts +0 -151
  612. package/lib/adapters/usgov-samhsa-treatment-locator/adapter.ts +0 -193
  613. package/lib/adapters/wof-admin-json/adapter.ts +0 -231
  614. package/lib/adapters/wof-json-rows.ts +0 -129
  615. package/lib/adapters/wof-postalcode-json/adapter.ts +0 -176
  616. package/lib/recipes/fr-admin-split.ts +0 -243
  617. package/lib/recipes/fr-bare-street.ts +0 -171
  618. package/lib/recipes/fr-fragment.ts +0 -334
  619. package/lib/recipes/fr-lieudit.ts +0 -301
  620. package/lib/recipes/fr-order.ts +0 -246
  621. package/lib/recipes/german.ts +0 -360
  622. package/lib/recipes/locale.ts +0 -600
  623. package/lib/recipes/po-box-cedex.ts +0 -976
  624. package/lib/recipes/po-box.ts +0 -124
  625. package/lib/recipes/street-affix.ts +0 -805
  626. package/lib/recipes/sub-venue-sources.ts +0 -878
  627. package/lib/recipes/sub-venue.ts +0 -998
  628. package/lib/synthesizers/german.ts +0 -260
  629. package/lib/tools/fetch/acra-sg.ts +0 -174
  630. package/lib/tools/fetch/ban.ts +0 -289
  631. package/lib/tools/fetch/download.ts +0 -477
  632. package/lib/tools/fetch/gcis-tw.ts +0 -175
  633. package/lib/tools/fetch/geonames-dump.ts +0 -257
  634. package/lib/tools/fetch/geonames-postal.ts +0 -180
  635. package/lib/tools/fetch/houjin-jp.ts +0 -135
  636. package/lib/tools/fetch/hrsa.ts +0 -59
  637. package/lib/tools/fetch/imls-pls.ts +0 -149
  638. package/lib/tools/fetch/juso-kr.ts +0 -165
  639. package/lib/tools/fetch/localdata-kr.ts +0 -194
  640. package/lib/tools/fetch/nad.ts +0 -341
  641. package/lib/tools/fetch/nppes.ts +0 -165
  642. package/lib/tools/fetch/state-hi-schools.ts +0 -161
  643. package/lib/tools/fetch/state-sources.ts +0 -146
  644. package/lib/tools/fetch/tiger-full.ts +0 -308
  645. package/lib/tools/golden-promote.ts +0 -337
  646. package/lib/tools/golden-relabel-street.ts +0 -686
  647. package/lib/tools/lint-slice-vocab.ts +0 -388
  648. package/lib/tools/sub-venue/harvest.ts +0 -234
  649. package/lib/tools/sub-venue/head-nouns.ts +0 -245
  650. package/lib/tools/sub-venue/surfaces.ts +0 -95
  651. package/lib/tools/sub-venue/table.ts +0 -281
  652. package/lib/tools/sub-venue/wikidata.ts +0 -85
  653. package/lib/tools/sub-venue-lexicon.ts +0 -429
  654. package/out/adapters/ban/adapter.d.ts.map +0 -1
  655. package/out/adapters/ban/adapter.js +0 -149
  656. package/out/adapters/ban/adapter.js.map +0 -1
  657. package/out/adapters/ban/street-decompose.d.ts.map +0 -1
  658. package/out/adapters/ban/street-decompose.js.map +0 -1
  659. package/out/adapters/fcc-bdc/adapter.d.ts.map +0 -1
  660. package/out/adapters/fcc-bdc/adapter.js +0 -144
  661. package/out/adapters/fcc-bdc/adapter.js.map +0 -1
  662. package/out/adapters/geonames-postal/adapter.d.ts.map +0 -1
  663. package/out/adapters/geonames-postal/adapter.js +0 -107
  664. package/out/adapters/geonames-postal/adapter.js.map +0 -1
  665. package/out/adapters/gnaf/adapter.d.ts.map +0 -1
  666. package/out/adapters/gnaf/adapter.js +0 -124
  667. package/out/adapters/gnaf/adapter.js.map +0 -1
  668. package/out/adapters/gnaf/assemble.d.ts +0 -65
  669. package/out/adapters/gnaf/assemble.d.ts.map +0 -1
  670. package/out/adapters/gnaf/assemble.js +0 -154
  671. package/out/adapters/gnaf/assemble.js.map +0 -1
  672. package/out/adapters/state-hi-schools/adapter.d.ts.map +0 -1
  673. package/out/adapters/state-hi-schools/adapter.js +0 -145
  674. package/out/adapters/state-hi-schools/adapter.js.map +0 -1
  675. package/out/adapters/state-hi-schools/workbook.d.ts.map +0 -1
  676. package/out/adapters/state-hi-schools/workbook.js.map +0 -1
  677. package/out/adapters/state-ia-contractors/adapter.d.ts.map +0 -1
  678. package/out/adapters/state-ia-contractors/adapter.js +0 -111
  679. package/out/adapters/state-ia-contractors/adapter.js.map +0 -1
  680. package/out/adapters/state-ny-notaries/adapter.d.ts.map +0 -1
  681. package/out/adapters/state-ny-notaries/adapter.js +0 -119
  682. package/out/adapters/state-ny-notaries/adapter.js.map +0 -1
  683. package/out/adapters/state-tx-notaries/adapter.d.ts.map +0 -1
  684. package/out/adapters/state-tx-notaries/adapter.js +0 -125
  685. package/out/adapters/state-tx-notaries/adapter.js.map +0 -1
  686. package/out/adapters/tiger/adapter.d.ts +0 -55
  687. package/out/adapters/tiger/adapter.d.ts.map +0 -1
  688. package/out/adapters/tiger/adapter.js +0 -201
  689. package/out/adapters/tiger/adapter.js.map +0 -1
  690. package/out/adapters/tiger/street-decompose.d.ts.map +0 -1
  691. package/out/adapters/tiger/street-decompose.js.map +0 -1
  692. package/out/adapters/usgov-hrsa-fqhc/adapter.d.ts.map +0 -1
  693. package/out/adapters/usgov-hrsa-fqhc/adapter.js +0 -132
  694. package/out/adapters/usgov-hrsa-fqhc/adapter.js.map +0 -1
  695. package/out/adapters/usgov-imls-pls/adapter.d.ts.map +0 -1
  696. package/out/adapters/usgov-imls-pls/adapter.js +0 -114
  697. package/out/adapters/usgov-imls-pls/adapter.js.map +0 -1
  698. package/out/adapters/usgov-irs-bmf/adapter.d.ts.map +0 -1
  699. package/out/adapters/usgov-irs-bmf/adapter.js +0 -120
  700. package/out/adapters/usgov-irs-bmf/adapter.js.map +0 -1
  701. package/out/adapters/usgov-nad/adapter.d.ts.map +0 -1
  702. package/out/adapters/usgov-nad/adapter.js +0 -249
  703. package/out/adapters/usgov-nad/adapter.js.map +0 -1
  704. package/out/adapters/usgov-nppes/adapter.d.ts.map +0 -1
  705. package/out/adapters/usgov-nppes/adapter.js +0 -118
  706. package/out/adapters/usgov-nppes/adapter.js.map +0 -1
  707. package/out/adapters/usgov-samhsa-treatment-locator/adapter.d.ts.map +0 -1
  708. package/out/adapters/usgov-samhsa-treatment-locator/adapter.js +0 -154
  709. package/out/adapters/usgov-samhsa-treatment-locator/adapter.js.map +0 -1
  710. package/out/adapters/wof-admin-jp/adapter.d.ts.map +0 -1
  711. package/out/adapters/wof-admin-jp/adapter.js.map +0 -1
  712. package/out/adapters/wof-admin-json/adapter.d.ts +0 -79
  713. package/out/adapters/wof-admin-json/adapter.d.ts.map +0 -1
  714. package/out/adapters/wof-admin-json/adapter.js +0 -197
  715. package/out/adapters/wof-admin-json/adapter.js.map +0 -1
  716. package/out/adapters/wof-json-rows.d.ts +0 -62
  717. package/out/adapters/wof-json-rows.d.ts.map +0 -1
  718. package/out/adapters/wof-json-rows.js +0 -83
  719. package/out/adapters/wof-json-rows.js.map +0 -1
  720. package/out/adapters/wof-postalcode-json/adapter.d.ts +0 -65
  721. package/out/adapters/wof-postalcode-json/adapter.d.ts.map +0 -1
  722. package/out/adapters/wof-postalcode-json/adapter.js +0 -151
  723. package/out/adapters/wof-postalcode-json/adapter.js.map +0 -1
  724. package/out/codex/us-fips-state.d.ts +0 -41
  725. package/out/codex/us-fips-state.d.ts.map +0 -1
  726. package/out/codex/us-fips-state.js +0 -100
  727. package/out/codex/us-fips-state.js.map +0 -1
  728. package/out/recipes/bare-country.d.ts +0 -25
  729. package/out/recipes/bare-country.d.ts.map +0 -1
  730. package/out/recipes/bare-country.js +0 -88
  731. package/out/recipes/bare-country.js.map +0 -1
  732. package/out/recipes/cn-organizational-units.d.ts +0 -36
  733. package/out/recipes/cn-organizational-units.d.ts.map +0 -1
  734. package/out/recipes/cn-organizational-units.js +0 -159
  735. package/out/recipes/cn-organizational-units.js.map +0 -1
  736. package/out/recipes/cz-pcfirst-preposition.d.ts +0 -22
  737. package/out/recipes/cz-pcfirst-preposition.d.ts.map +0 -1
  738. package/out/recipes/cz-pcfirst-preposition.js +0 -101
  739. package/out/recipes/cz-pcfirst-preposition.js.map +0 -1
  740. package/out/recipes/fr-admin-split.d.ts +0 -38
  741. package/out/recipes/fr-admin-split.d.ts.map +0 -1
  742. package/out/recipes/fr-admin-split.js +0 -192
  743. package/out/recipes/fr-admin-split.js.map +0 -1
  744. package/out/recipes/fr-bare-street.d.ts +0 -28
  745. package/out/recipes/fr-bare-street.d.ts.map +0 -1
  746. package/out/recipes/fr-bare-street.js +0 -144
  747. package/out/recipes/fr-bare-street.js.map +0 -1
  748. package/out/recipes/fr-fragment.d.ts +0 -77
  749. package/out/recipes/fr-fragment.d.ts.map +0 -1
  750. package/out/recipes/fr-fragment.js +0 -277
  751. package/out/recipes/fr-fragment.js.map +0 -1
  752. package/out/recipes/fr-lieudit.d.ts +0 -32
  753. package/out/recipes/fr-lieudit.d.ts.map +0 -1
  754. package/out/recipes/fr-lieudit.js +0 -227
  755. package/out/recipes/fr-lieudit.js.map +0 -1
  756. package/out/recipes/fr-order.d.ts +0 -38
  757. package/out/recipes/fr-order.d.ts.map +0 -1
  758. package/out/recipes/fr-order.js +0 -198
  759. package/out/recipes/fr-order.js.map +0 -1
  760. package/out/recipes/german.d.ts +0 -44
  761. package/out/recipes/german.d.ts.map +0 -1
  762. package/out/recipes/german.js +0 -289
  763. package/out/recipes/german.js.map +0 -1
  764. package/out/recipes/locale.d.ts +0 -136
  765. package/out/recipes/locale.d.ts.map +0 -1
  766. package/out/recipes/locale.js +0 -460
  767. package/out/recipes/locale.js.map +0 -1
  768. package/out/recipes/nl-postcode.d.ts +0 -26
  769. package/out/recipes/nl-postcode.d.ts.map +0 -1
  770. package/out/recipes/nl-postcode.js +0 -103
  771. package/out/recipes/nl-postcode.js.map +0 -1
  772. package/out/recipes/no-fragment.d.ts +0 -43
  773. package/out/recipes/no-fragment.d.ts.map +0 -1
  774. package/out/recipes/no-fragment.js +0 -183
  775. package/out/recipes/no-fragment.js.map +0 -1
  776. package/out/recipes/no-street-led.d.ts +0 -24
  777. package/out/recipes/no-street-led.d.ts.map +0 -1
  778. package/out/recipes/no-street-led.js +0 -114
  779. package/out/recipes/no-street-led.js.map +0 -1
  780. package/out/recipes/no-street.d.ts +0 -18
  781. package/out/recipes/no-street.d.ts.map +0 -1
  782. package/out/recipes/no-street.js +0 -72
  783. package/out/recipes/no-street.js.map +0 -1
  784. package/out/recipes/po-box-cedex.d.ts +0 -38
  785. package/out/recipes/po-box-cedex.d.ts.map +0 -1
  786. package/out/recipes/po-box-cedex.js +0 -768
  787. package/out/recipes/po-box-cedex.js.map +0 -1
  788. package/out/recipes/po-box.d.ts +0 -17
  789. package/out/recipes/po-box.d.ts.map +0 -1
  790. package/out/recipes/po-box.js +0 -101
  791. package/out/recipes/po-box.js.map +0 -1
  792. package/out/recipes/reviewed-postcode-tail.d.ts.map +0 -1
  793. package/out/recipes/reviewed-postcode-tail.js.map +0 -1
  794. package/out/recipes/si-bare-village.d.ts +0 -32
  795. package/out/recipes/si-bare-village.d.ts.map +0 -1
  796. package/out/recipes/si-bare-village.js +0 -89
  797. package/out/recipes/si-bare-village.js.map +0 -1
  798. package/out/recipes/street-affix.d.ts +0 -89
  799. package/out/recipes/street-affix.d.ts.map +0 -1
  800. package/out/recipes/street-affix.js +0 -563
  801. package/out/recipes/street-affix.js.map +0 -1
  802. package/out/recipes/street-bare.d.ts +0 -25
  803. package/out/recipes/street-bare.d.ts.map +0 -1
  804. package/out/recipes/street-bare.js +0 -87
  805. package/out/recipes/street-bare.js.map +0 -1
  806. package/out/recipes/sub-venue-sources.d.ts +0 -229
  807. package/out/recipes/sub-venue-sources.d.ts.map +0 -1
  808. package/out/recipes/sub-venue-sources.js +0 -654
  809. package/out/recipes/sub-venue-sources.js.map +0 -1
  810. package/out/recipes/sub-venue.d.ts +0 -269
  811. package/out/recipes/sub-venue.d.ts.map +0 -1
  812. package/out/recipes/sub-venue.js +0 -726
  813. package/out/recipes/sub-venue.js.map +0 -1
  814. package/out/synthesizers/german.d.ts +0 -115
  815. package/out/synthesizers/german.d.ts.map +0 -1
  816. package/out/synthesizers/german.js +0 -149
  817. package/out/synthesizers/german.js.map +0 -1
  818. package/out/tools/fetch/acra-sg.d.ts +0 -23
  819. package/out/tools/fetch/acra-sg.d.ts.map +0 -1
  820. package/out/tools/fetch/acra-sg.js +0 -126
  821. package/out/tools/fetch/acra-sg.js.map +0 -1
  822. package/out/tools/fetch/ban.d.ts +0 -31
  823. package/out/tools/fetch/ban.d.ts.map +0 -1
  824. package/out/tools/fetch/ban.js +0 -239
  825. package/out/tools/fetch/ban.js.map +0 -1
  826. package/out/tools/fetch/download.d.ts +0 -182
  827. package/out/tools/fetch/download.d.ts.map +0 -1
  828. package/out/tools/fetch/download.js +0 -318
  829. package/out/tools/fetch/download.js.map +0 -1
  830. package/out/tools/fetch/gcis-tw.d.ts +0 -23
  831. package/out/tools/fetch/gcis-tw.d.ts.map +0 -1
  832. package/out/tools/fetch/gcis-tw.js +0 -135
  833. package/out/tools/fetch/gcis-tw.js.map +0 -1
  834. package/out/tools/fetch/geonames-dump.d.ts +0 -91
  835. package/out/tools/fetch/geonames-dump.d.ts.map +0 -1
  836. package/out/tools/fetch/geonames-dump.js +0 -171
  837. package/out/tools/fetch/geonames-dump.js.map +0 -1
  838. package/out/tools/fetch/geonames-postal.d.ts +0 -76
  839. package/out/tools/fetch/geonames-postal.d.ts.map +0 -1
  840. package/out/tools/fetch/geonames-postal.js +0 -126
  841. package/out/tools/fetch/geonames-postal.js.map +0 -1
  842. package/out/tools/fetch/houjin-jp.d.ts +0 -24
  843. package/out/tools/fetch/houjin-jp.d.ts.map +0 -1
  844. package/out/tools/fetch/houjin-jp.js +0 -102
  845. package/out/tools/fetch/houjin-jp.js.map +0 -1
  846. package/out/tools/fetch/hrsa.d.ts +0 -18
  847. package/out/tools/fetch/hrsa.d.ts.map +0 -1
  848. package/out/tools/fetch/hrsa.js +0 -46
  849. package/out/tools/fetch/hrsa.js.map +0 -1
  850. package/out/tools/fetch/imls-pls.d.ts +0 -25
  851. package/out/tools/fetch/imls-pls.d.ts.map +0 -1
  852. package/out/tools/fetch/imls-pls.js +0 -108
  853. package/out/tools/fetch/imls-pls.js.map +0 -1
  854. package/out/tools/fetch/juso-kr.d.ts +0 -30
  855. package/out/tools/fetch/juso-kr.d.ts.map +0 -1
  856. package/out/tools/fetch/juso-kr.js +0 -120
  857. package/out/tools/fetch/juso-kr.js.map +0 -1
  858. package/out/tools/fetch/localdata-kr.d.ts +0 -30
  859. package/out/tools/fetch/localdata-kr.d.ts.map +0 -1
  860. package/out/tools/fetch/localdata-kr.js +0 -139
  861. package/out/tools/fetch/localdata-kr.js.map +0 -1
  862. package/out/tools/fetch/nad.d.ts +0 -70
  863. package/out/tools/fetch/nad.d.ts.map +0 -1
  864. package/out/tools/fetch/nad.js +0 -234
  865. package/out/tools/fetch/nad.js.map +0 -1
  866. package/out/tools/fetch/nppes.d.ts +0 -26
  867. package/out/tools/fetch/nppes.d.ts.map +0 -1
  868. package/out/tools/fetch/nppes.js +0 -126
  869. package/out/tools/fetch/nppes.js.map +0 -1
  870. package/out/tools/fetch/state-hi-schools.d.ts +0 -26
  871. package/out/tools/fetch/state-hi-schools.d.ts.map +0 -1
  872. package/out/tools/fetch/state-hi-schools.js +0 -112
  873. package/out/tools/fetch/state-hi-schools.js.map +0 -1
  874. package/out/tools/fetch/state-sources.d.ts +0 -26
  875. package/out/tools/fetch/state-sources.d.ts.map +0 -1
  876. package/out/tools/fetch/state-sources.js +0 -111
  877. package/out/tools/fetch/state-sources.js.map +0 -1
  878. package/out/tools/fetch/tiger-full.d.ts +0 -22
  879. package/out/tools/fetch/tiger-full.d.ts.map +0 -1
  880. package/out/tools/fetch/tiger-full.js +0 -217
  881. package/out/tools/fetch/tiger-full.js.map +0 -1
  882. package/out/tools/golden-expand.d.ts +0 -90
  883. package/out/tools/golden-expand.d.ts.map +0 -1
  884. package/out/tools/golden-expand.js +0 -406
  885. package/out/tools/golden-expand.js.map +0 -1
  886. package/out/tools/golden-promote.d.ts +0 -72
  887. package/out/tools/golden-promote.d.ts.map +0 -1
  888. package/out/tools/golden-promote.js +0 -240
  889. package/out/tools/golden-promote.js.map +0 -1
  890. package/out/tools/golden-relabel-street.d.ts +0 -196
  891. package/out/tools/golden-relabel-street.d.ts.map +0 -1
  892. package/out/tools/golden-relabel-street.js +0 -439
  893. package/out/tools/golden-relabel-street.js.map +0 -1
  894. package/out/tools/lint-slice-vocab.d.ts +0 -90
  895. package/out/tools/lint-slice-vocab.d.ts.map +0 -1
  896. package/out/tools/lint-slice-vocab.js +0 -267
  897. package/out/tools/lint-slice-vocab.js.map +0 -1
  898. package/out/tools/lint-slice.d.ts +0 -93
  899. package/out/tools/lint-slice.d.ts.map +0 -1
  900. package/out/tools/lint-slice.js +0 -322
  901. package/out/tools/lint-slice.js.map +0 -1
  902. package/out/tools/slice-kryptonite.d.ts +0 -32
  903. package/out/tools/slice-kryptonite.d.ts.map +0 -1
  904. package/out/tools/slice-kryptonite.js +0 -99
  905. package/out/tools/slice-kryptonite.js.map +0 -1
  906. package/out/tools/slice-translit.d.ts +0 -51
  907. package/out/tools/slice-translit.d.ts.map +0 -1
  908. package/out/tools/slice-translit.js +0 -166
  909. package/out/tools/slice-translit.js.map +0 -1
  910. package/out/tools/sub-venue/harvest.d.ts +0 -100
  911. package/out/tools/sub-venue/harvest.d.ts.map +0 -1
  912. package/out/tools/sub-venue/harvest.js +0 -168
  913. package/out/tools/sub-venue/harvest.js.map +0 -1
  914. package/out/tools/sub-venue/head-nouns.d.ts +0 -50
  915. package/out/tools/sub-venue/head-nouns.d.ts.map +0 -1
  916. package/out/tools/sub-venue/head-nouns.js.map +0 -1
  917. package/out/tools/sub-venue/surfaces.d.ts +0 -45
  918. package/out/tools/sub-venue/surfaces.d.ts.map +0 -1
  919. package/out/tools/sub-venue/surfaces.js.map +0 -1
  920. package/out/tools/sub-venue/table.d.ts +0 -229
  921. package/out/tools/sub-venue/table.d.ts.map +0 -1
  922. package/out/tools/sub-venue/table.js.map +0 -1
  923. package/out/tools/sub-venue/wikidata.d.ts +0 -26
  924. package/out/tools/sub-venue/wikidata.d.ts.map +0 -1
  925. package/out/tools/sub-venue/wikidata.js +0 -62
  926. package/out/tools/sub-venue/wikidata.js.map +0 -1
  927. package/out/tools/sub-venue-lexicon.d.ts +0 -156
  928. package/out/tools/sub-venue-lexicon.d.ts.map +0 -1
  929. package/out/tools/sub-venue-lexicon.js +0 -283
  930. package/out/tools/sub-venue-lexicon.js.map +0 -1
  931. package/out/tools/sub-venue-promotions.d.ts +0 -94
  932. package/out/tools/sub-venue-promotions.d.ts.map +0 -1
  933. package/out/tools/sub-venue-promotions.js +0 -266
  934. package/out/tools/sub-venue-promotions.js.map +0 -1
  935. /package/lib/{recipes/cn-organizational-units.ts → cn/recipes/organizational-units.ts} +0 -0
  936. /package/lib/{recipes/cz-pcfirst-preposition.ts → cz/recipes/pcfirst-preposition.ts} +0 -0
  937. /package/lib/{adapters → fr/adapters}/ban/street-decompose.ts +0 -0
  938. /package/lib/{adapters/wof-admin-jp → jp/adapters/wof-admin}/adapter.ts +0 -0
  939. /package/lib/{recipes/nl-postcode.ts → nl/recipes/postcode.ts} +0 -0
  940. /package/lib/{recipes/no-fragment.ts → no/recipes/fragment.ts} +0 -0
  941. /package/lib/{recipes/no-street.ts → no/recipes/street/index.ts} +0 -0
  942. /package/lib/{recipes/no-street-led.ts → no/recipes/street/led.ts} +0 -0
  943. /package/lib/recipes/{bare-country.ts → bare/country.ts} +0 -0
  944. /package/lib/recipes/{street-bare.ts → street/bare.ts} +0 -0
  945. /package/lib/{recipes/si-bare-village.ts → si/recipes/bare-village.ts} +0 -0
  946. /package/lib/tools/{golden-expand.ts → golden/expand.ts} +0 -0
  947. /package/lib/tools/{lint-slice.ts → lint/slice/index.ts} +0 -0
  948. /package/lib/tools/{slice-kryptonite.ts → slice/kryptonite.ts} +0 -0
  949. /package/lib/tools/{slice-translit.ts → slice/translit.ts} +0 -0
  950. /package/lib/tools/{sub-venue-promotions.ts → sub/venue/promotions.ts} +0 -0
  951. /package/lib/{adapters/state-hi-schools → us/adapters/state/hi-schools}/workbook.ts +0 -0
  952. /package/lib/{adapters → us/adapters}/tiger/street-decompose.ts +0 -0
  953. /package/lib/{codex/us-fips-state.ts → us/fips-state.ts} +0 -0
  954. /package/lib/{recipes → ve/recipes}/reviewed-postcode-tail.ts +0 -0
  955. /package/out/adapters/{geonames-postal → geonames/postal}/adapter.d.ts +0 -0
  956. /package/out/{adapters → au/adapters}/gnaf/adapter.d.ts +0 -0
  957. /package/out/{adapters → fr/adapters}/ban/adapter.d.ts +0 -0
  958. /package/out/{adapters → fr/adapters}/ban/street-decompose.d.ts +0 -0
  959. /package/out/{adapters → fr/adapters}/ban/street-decompose.js +0 -0
  960. /package/out/{adapters/wof-admin-jp → jp/adapters/wof-admin}/adapter.d.ts +0 -0
  961. /package/out/{adapters/wof-admin-jp → jp/adapters/wof-admin}/adapter.js +0 -0
  962. /package/out/tools/{sub-venue → sub/venue}/head-nouns.js +0 -0
  963. /package/out/tools/{sub-venue → sub/venue}/surfaces.js +0 -0
  964. /package/out/tools/{sub-venue → sub/venue}/table.js +0 -0
  965. /package/out/{adapters → us/adapters}/fcc-bdc/adapter.d.ts +0 -0
  966. /package/out/{adapters/state-hi-schools → us/adapters/state/hi-schools}/adapter.d.ts +0 -0
  967. /package/out/{adapters/state-hi-schools → us/adapters/state/hi-schools}/workbook.d.ts +0 -0
  968. /package/out/{adapters/state-hi-schools → us/adapters/state/hi-schools}/workbook.js +0 -0
  969. /package/out/{adapters/state-ia-contractors → us/adapters/state/ia-contractors}/adapter.d.ts +0 -0
  970. /package/out/{adapters/state-ny-notaries → us/adapters/state/ny-notaries}/adapter.d.ts +0 -0
  971. /package/out/{adapters/state-tx-notaries → us/adapters/state/tx-notaries}/adapter.d.ts +0 -0
  972. /package/out/{adapters → us/adapters}/tiger/street-decompose.d.ts +0 -0
  973. /package/out/{adapters → us/adapters}/tiger/street-decompose.js +0 -0
  974. /package/out/{adapters/usgov-hrsa-fqhc → us/adapters/usgov/hrsa-fqhc}/adapter.d.ts +0 -0
  975. /package/out/{adapters/usgov-imls-pls → us/adapters/usgov/imls-pls}/adapter.d.ts +0 -0
  976. /package/out/{adapters/usgov-irs-bmf → us/adapters/usgov/irs-bmf}/adapter.d.ts +0 -0
  977. /package/out/{adapters/usgov-nad → us/adapters/usgov/nad}/adapter.d.ts +0 -0
  978. /package/out/{adapters/usgov-nppes → us/adapters/usgov/nppes}/adapter.d.ts +0 -0
  979. /package/out/{adapters/usgov-samhsa-treatment-locator → us/adapters/usgov/samhsa-treatment-locator}/adapter.d.ts +0 -0
  980. /package/out/{recipes → ve/recipes}/reviewed-postcode-tail.d.ts +0 -0
  981. /package/out/{recipes → ve/recipes}/reviewed-postcode-tail.js +0 -0
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ */
4
+ import { makeCaPostcode, makePoBoxPhrase } from "#recipes/po/box/cedex/phrases";
5
+ import { CA_EN_LEADERS, CA_FR_LEADERS, ON_FSA_LETTERS, QC_FSA_LETTERS, VENUES_FR, } from "#recipes/po/box/cedex/vocabulary";
6
+ import { pick } from "#synthesizers/utils";
7
+ const CA_FR_GOLDEN_ORDER_CUTOFF = 0.4, CA_FR_NATIVE_CUTOFF = 0.7, CA_FR_BARE_CUTOFF = 0.85;
8
+ const CA_EN_STANDARD_CUTOFF = 0.5, CA_EN_GOLDEN_ORDER_CUTOFF = 0.8;
9
+ export function renderCaFr(random, locality) {
10
+ const phrase = makePoBoxPhrase(random, CA_FR_LEADERS);
11
+ const postcode = makeCaPostcode(random, QC_FSA_LETTERS);
12
+ const components = { po_box: phrase, postcode, locality, region: "QC" };
13
+ const draw = random();
14
+ if (draw < CA_FR_GOLDEN_ORDER_CUTOFF)
15
+ return { fmt: "ca-fr-golden-order", raw: `${phrase}, ${postcode} ${locality}, QC`, components };
16
+ if (draw < CA_FR_NATIVE_CUTOFF)
17
+ return { fmt: "ca-fr-native", raw: `${phrase}, ${locality} QC ${postcode}`, components };
18
+ if (draw < CA_FR_BARE_CUTOFF)
19
+ return { fmt: "ca-fr-bare", raw: phrase, components: { po_box: phrase } };
20
+ const venue = pick(VENUES_FR, random);
21
+ return {
22
+ fmt: "ca-fr-venue",
23
+ raw: `${venue}, ${phrase}, ${locality} QC ${postcode}`,
24
+ components: { venue, ...components },
25
+ };
26
+ }
27
+ export function renderCaEn(random, locality) {
28
+ const phrase = makePoBoxPhrase(random, CA_EN_LEADERS);
29
+ const postcode = makeCaPostcode(random, ON_FSA_LETTERS);
30
+ const components = { po_box: phrase, locality, region: "ON", postcode };
31
+ const draw = random();
32
+ if (draw < CA_EN_STANDARD_CUTOFF)
33
+ return { fmt: "ca-en-standard", raw: `${phrase}, ${locality}, ON ${postcode}`, components };
34
+ if (draw < CA_EN_GOLDEN_ORDER_CUTOFF)
35
+ return { fmt: "ca-en-golden-order", raw: `${phrase}, ${postcode} ${locality}, ON`, components };
36
+ return { fmt: "ca-en-bare", raw: phrase, components: { po_box: phrase } };
37
+ }
38
+ //# sourceMappingURL=ca.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ca.js","sourceRoot":"","sources":["../../../../../lib/recipes/po/box/cedex/ca.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/E,OAAO,EACN,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,SAAS,GACT,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,MAAM,yBAAyB,GAAG,GAAG,EACpC,mBAAmB,GAAG,GAAG,EACzB,iBAAiB,GAAG,IAAI,CAAA;AAEzB,MAAM,qBAAqB,GAAG,GAAG,EAChC,yBAAyB,GAAG,GAAG,CAAA;AAEhC,MAAM,UAAU,UAAU,CAAC,MAAoB,EAAE,QAAgB;IAChE,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACrD,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACvD,MAAM,UAAU,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IACvE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAA;IAErB,IAAI,IAAI,GAAG,yBAAyB;QACnC,OAAO,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,GAAG,MAAM,KAAK,QAAQ,IAAI,QAAQ,MAAM,EAAE,UAAU,EAAE,CAAA;IAEhG,IAAI,IAAI,GAAG,mBAAmB;QAC7B,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,MAAM,KAAK,QAAQ,OAAO,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAA;IAEzF,IAAI,IAAI,GAAG,iBAAiB;QAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAA;IACvG,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAErC,OAAO;QACN,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,GAAG,KAAK,KAAK,MAAM,KAAK,QAAQ,OAAO,QAAQ,EAAE;QACtD,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE;KACpC,CAAA;AACF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAoB,EAAE,QAAgB;IAChE,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACrD,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACvD,MAAM,UAAU,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;IACvE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAA;IAErB,IAAI,IAAI,GAAG,qBAAqB;QAC/B,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,MAAM,KAAK,QAAQ,QAAQ,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAA;IAE5F,IAAI,IAAI,GAAG,yBAAyB;QACnC,OAAO,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,GAAG,MAAM,KAAK,QAAQ,IAAI,QAAQ,MAAM,EAAE,UAAU,EAAE,CAAA;IAEhG,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAA;AAC1E,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ */
4
+ import type { FRTuple, Rendered } from "#recipes/po/box/cedex/types";
5
+ export declare function renderBpFr(random: () => number, tuple: FRTuple): Rendered;
6
+ export declare function renderCedexFr(random: () => number, tuple: FRTuple): Rendered;
7
+ //# sourceMappingURL=fr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fr.d.ts","sourceRoot":"","sources":["../../../../../lib/recipes/po/box/cedex/fr.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAapE,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,QAAQ,CAiCzE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,QAAQ,CAsB5E"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ */
4
+ import { makeCedex, makePoBoxPhrase } from "#recipes/po/box/cedex/phrases";
5
+ import { FR_LEADERS, VENUES_FR } from "#recipes/po/box/cedex/vocabulary";
6
+ import { pick } from "#synthesizers/utils";
7
+ const BP_TAIL_CUTOFF = 0.45, BP_BARE_CUTOFF = 0.6, BP_CEDEX_CUTOFF = 0.8;
8
+ const CEDEX_UPPER_LOCALITY_SHARE = 0.6, CEDEX_LINE_CUTOFF = 0.4, CEDEX_FULL_CUTOFF = 0.75, CEDEX_GOLDEN_ORDER_CUTOFF = 0.85;
9
+ export function renderBpFr(random, tuple) {
10
+ const phrase = makePoBoxPhrase(random, FR_LEADERS);
11
+ const { locality, postcode } = tuple;
12
+ const location = random() < 0.5 ? locality.toUpperCase() : locality;
13
+ const draw = random();
14
+ if (draw < BP_TAIL_CUTOFF)
15
+ return {
16
+ fmt: "bp-tail",
17
+ raw: `${phrase}, ${postcode} ${location}`,
18
+ components: { po_box: phrase, postcode, locality: location },
19
+ };
20
+ if (draw < BP_BARE_CUTOFF)
21
+ return { fmt: "bp-bare", raw: phrase, components: { po_box: phrase } };
22
+ if (draw < BP_CEDEX_CUTOFF) {
23
+ const cedex = makeCedex(random);
24
+ const upperLocality = locality.toUpperCase();
25
+ return {
26
+ fmt: "bp-cedex",
27
+ raw: `${phrase}, ${postcode} ${upperLocality} ${cedex}`,
28
+ components: { po_box: phrase, postcode, locality: upperLocality, cedex },
29
+ };
30
+ }
31
+ const venue = pick(VENUES_FR, random);
32
+ return {
33
+ fmt: "bp-venue",
34
+ raw: `${venue}, ${phrase}, ${postcode} ${location}`,
35
+ components: { venue, po_box: phrase, postcode, locality: location },
36
+ };
37
+ }
38
+ export function renderCedexFr(random, tuple) {
39
+ const cedex = makeCedex(random);
40
+ const { house_number, street, locality, postcode } = tuple;
41
+ const location = random() < CEDEX_UPPER_LOCALITY_SHARE ? locality.toUpperCase() : locality;
42
+ const line = { postcode, locality: location, cedex };
43
+ const draw = random();
44
+ if (draw < CEDEX_LINE_CUTOFF)
45
+ return { fmt: "cedex-line", raw: `${postcode} ${location} ${cedex}`, components: line };
46
+ if (draw < CEDEX_FULL_CUTOFF)
47
+ return {
48
+ fmt: "cedex-full",
49
+ raw: `${house_number} ${street}, ${postcode} ${location} ${cedex}`,
50
+ components: { house_number, street, ...line },
51
+ };
52
+ if (draw < CEDEX_GOLDEN_ORDER_CUTOFF)
53
+ return { fmt: "cedex-golden-order", raw: `${postcode} ${cedex} ${location}`, components: line };
54
+ const venue = pick(VENUES_FR, random);
55
+ return { fmt: "cedex-venue", raw: `${venue}, ${postcode} ${location} ${cedex}`, components: { venue, ...line } };
56
+ }
57
+ //# sourceMappingURL=fr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fr.js","sourceRoot":"","sources":["../../../../../lib/recipes/po/box/cedex/fr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ */
4
+ export declare function makePoBoxPhrase(random: () => number, leaders: ReadonlyArray<string>, rareLeaders?: ReadonlyArray<string>): string;
5
+ export declare function makeCedex(random: () => number): string;
6
+ export declare function makeAuNZPoBoxPhrase(random: () => number, leaders: ReadonlyArray<string>, rareLeaders: ReadonlyArray<string>, validate: (input: unknown) => boolean): string;
7
+ export declare function makeCaPostcode(random: () => number, fsaLetters: string[]): string;
8
+ //# sourceMappingURL=phrases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phrases.d.ts","sourceRoot":"","sources":["../../../../../lib/recipes/po/box/cedex/phrases.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmCH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,MAAM,MAAM,EACpB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,EAC9B,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GACjC,MAAM,CAcR;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,MAAM,GAAG,MAAM,CAatD;AAED,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,MAAM,MAAM,EACpB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,EAC9B,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,EAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,GACnC,MAAM,CAoBR;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAQjF"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ */
4
+ import { normalizeCaPostalCode } from "@mailwoman/codex/ca";
5
+ import { isCedex } from "@mailwoman/codex/fr";
6
+ import { isNZDeliveryService } from "@mailwoman/codex/nz";
7
+ import { isUSPoBoxDesignator, matchPOBox } from "@mailwoman/codex/us";
8
+ import { CA_INTERIOR_LETTERS } from "#recipes/po/box/cedex/vocabulary";
9
+ import { maybeNoisifyBoxNumber } from "#synthesizers/po-box";
10
+ import { pick, tieredNumber } from "#synthesizers/utils";
11
+ const BOX_TWO_DIGIT_CUTOFF = 0.3;
12
+ const BOX_THREE_DIGIT_CUTOFF = 0.7;
13
+ const BOX_FOUR_DIGIT_CUTOFF = 0.95;
14
+ const TEMPLATE_CASE_CUTOFF = 0.7;
15
+ const UPPER_CASE_CUTOFF = 0.92;
16
+ const RARE_LEADER_SHARE = 0.1;
17
+ const CEDEX_UPPER_CUTOFF = 0.6;
18
+ const CEDEX_TITLE_CUTOFF = 0.9;
19
+ const CEDEX_UNNUMBERED_SHARE = 0.2;
20
+ const pickBoxNumber = (random) => tieredNumber(random, [
21
+ { cutoff: BOX_TWO_DIGIT_CUTOFF, base: 1, span: 99 },
22
+ { cutoff: BOX_THREE_DIGIT_CUTOFF, base: 100, span: 900 },
23
+ { cutoff: BOX_FOUR_DIGIT_CUTOFF, base: 1000, span: 9000 },
24
+ { base: 10_000, span: 90_000 },
25
+ ]);
26
+ const caseDial = (random, value) => {
27
+ const draw = random();
28
+ return draw < TEMPLATE_CASE_CUTOFF ? value : draw < UPPER_CASE_CUTOFF ? value.toUpperCase() : value.toLowerCase();
29
+ };
30
+ export function makePoBoxPhrase(random, leaders, rareLeaders) {
31
+ let leader = pick(leaders, random);
32
+ if (rareLeaders && random() < RARE_LEADER_SHARE) {
33
+ leader = pick(rareLeaders, random);
34
+ }
35
+ const number = maybeNoisifyBoxNumber(pickBoxNumber(random), random);
36
+ const phrase = leader === "#" ? `#${number}` : `${caseDial(random, leader)} ${number}`;
37
+ if (isUSPoBoxDesignator(leader) && /^[\dA-Za-z][\dA-Za-z-]*$/.test(number) && !matchPOBox(phrase))
38
+ throw new Error(`generated a po_box phrase the codex matcher rejects: "${phrase}"`);
39
+ return phrase;
40
+ }
41
+ export function makeCedex(random) {
42
+ const draw = random();
43
+ const word = draw < CEDEX_UPPER_CUTOFF ? "CEDEX" : draw < CEDEX_TITLE_CUTOFF ? "Cedex" : "cedex";
44
+ let phrase = word;
45
+ if (random() >= CEDEX_UNNUMBERED_SHARE) {
46
+ const number = 1 + Math.floor(random() * 20);
47
+ phrase = `${word} ${random() < 0.5 ? String(number).padStart(2, "0") : String(number)}`;
48
+ }
49
+ if (!isCedex(phrase))
50
+ throw new Error(`makeCedex emitted a phrase the codex matcher rejects: "${phrase}"`);
51
+ return phrase;
52
+ }
53
+ export function makeAuNZPoBoxPhrase(random, leaders, rareLeaders, validate) {
54
+ let leader = pick(leaders, random);
55
+ if (random() < RARE_LEADER_SHARE) {
56
+ leader = pick(rareLeaders, random);
57
+ }
58
+ let number = maybeNoisifyBoxNumber(pickBoxNumber(random), random);
59
+ if (leader === "CMB" && validate === isNZDeliveryService) {
60
+ number = `B${number}`;
61
+ }
62
+ const phrase = `${caseDial(random, leader)} ${number}`;
63
+ const cleanID = validate === isNZDeliveryService ? /^[\dA-Za-z]+$/ : /^[\dA-Za-z][\dA-Za-z-]*$/;
64
+ if (cleanID.test(number) && !validate(phrase))
65
+ throw new Error(`generated a phrase the codex matcher rejects: "${phrase}"`);
66
+ return phrase;
67
+ }
68
+ export function makeCaPostcode(random, fsaLetters) {
69
+ const letter = () => CA_INTERIOR_LETTERS[Math.floor(random() * CA_INTERIOR_LETTERS.length)];
70
+ const digit = () => String(Math.floor(random() * 10));
71
+ const postcode = `${pick(fsaLetters, random)}${digit()}${letter()} ${digit()}${letter()}${digit()}`;
72
+ if (!normalizeCaPostalCode(postcode))
73
+ throw new Error(`generated an invalid CA postcode: ${postcode}`);
74
+ return postcode;
75
+ }
76
+ //# sourceMappingURL=phrases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phrases.js","sourceRoot":"","sources":["../../../../../lib/recipes/po/box/cedex/phrases.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ */
4
+ import { type CorpusRecipe } from "#recipes/scaffold";
5
+ /**
6
+ * Generate PO-box and CEDEX rows from US, French, Canadian, Australian, and New Zealand source pools.
7
+ */
8
+ export declare const poBoxCedexRecipe: CorpusRecipe;
9
+ //# sourceMappingURL=recipe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../../../../../lib/recipes/po/box/cedex/recipe.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwBH,OAAO,EAAyC,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAsB5F;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAuJ9B,CAAA"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ */
4
+ import { dataRootPath } from "@mailwoman/core/data-root";
5
+ import { mulberry32 as makeMulberry32 } from "@mailwoman/core/utils";
6
+ import { renderAUPoBox, renderNZPoBox } from "#recipes/po/box/cedex/au-nz";
7
+ import { renderCaEn, renderCaFr } from "#recipes/po/box/cedex/ca";
8
+ import { renderBpFr, renderCedexFr } from "#recipes/po/box/cedex/fr";
9
+ import { FR_SOURCE, GEONAMES_CA, GEONAMES_POSTAL_AU, GEONAMES_POSTAL_NZ, isHoldoutLocality, readCaLocalities, readFrTuples, readPostalTuples, readUsTuples, US_EVAL_SOURCE, US_TRAIN_SOURCES, } from "#recipes/po/box/cedex/sources";
10
+ import { renderPmbUs, renderPoBoxUs } from "#recipes/po/box/cedex/us";
11
+ import { CLASS_MIX } from "#recipes/po/box/cedex/vocabulary";
12
+ import { sliceSourceID } from "#recipes/scaffold";
13
+ import { synthesizeMilitaryPoBoxRow } from "#synthesizers/po-box";
14
+ import { pick } from "#synthesizers/utils";
15
+ import { alignRow } from "#utils";
16
+ const COMPONENT_ORDER = ["house_number", "street", "po_box", "venue", "locality", "postcode", "region", "cedex"];
17
+ const orderComponents = (components) => Object.fromEntries(COMPONENT_ORDER.filter((key) => components[key]).map((key) => [key, components[key]]));
18
+ const pickClass = (draw) => {
19
+ let accumulated = 0;
20
+ for (const [name, weight] of CLASS_MIX) {
21
+ accumulated += weight;
22
+ if (draw < accumulated)
23
+ return name;
24
+ }
25
+ return CLASS_MIX.at(-1)[0];
26
+ };
27
+ /**
28
+ * Generate PO-box and CEDEX rows from US, French, Canadian, Australian, and New Zealand source pools.
29
+ */
30
+ export const poBoxCedexRecipe = {
31
+ name: "po-box-cedex",
32
+ description: "PO box / CEDEX coverage rows (US/FR/CA/AU/NZ) — self-generated from cached OA + GeoNames pools",
33
+ mode: "generate",
34
+ options: [{ flag: "--golden", description: "Emit the leakage-safe holdout variant ({raw, components, country})" }],
35
+ async run(opts, write) {
36
+ const random = makeMulberry32(opts.seed);
37
+ const count = opts.count ?? 50_000;
38
+ const source = opts.sourceName ?? "synth-po-box-cedex";
39
+ const usPool = [];
40
+ for (const sourceEntry of opts.golden ? [US_EVAL_SOURCE] : US_TRAIN_SOURCES) {
41
+ const tuples = await readUsTuples(sourceEntry);
42
+ console.error(` ${sourceEntry.csv}: ${tuples.length} tuples`);
43
+ for (const tuple of tuples) {
44
+ usPool.push(tuple);
45
+ }
46
+ }
47
+ const frAll = await readFrTuples(80_000);
48
+ const frPool = frAll.filter((tuple) => isHoldoutLocality(tuple.locality) === opts.golden);
49
+ console.error(` ${FR_SOURCE.csv}: ${frAll.length} tuples (${frPool.length} after holdout split)`);
50
+ const qcAll = await readCaLocalities("10"), onAll = await readCaLocalities("08");
51
+ const qcPool = qcAll.filter((locality) => isHoldoutLocality(locality) === opts.golden), onPool = onAll.filter((locality) => isHoldoutLocality(locality) === opts.golden);
52
+ console.error(` GeoNames CA: QC ${qcAll.length}→${qcPool.length}, ON ${onAll.length}→${onPool.length}`);
53
+ const auAll = (await readPostalTuples(GEONAMES_POSTAL_AU, { withState: true })), nzAll = (await readPostalTuples(GEONAMES_POSTAL_NZ, { withState: false }));
54
+ const auPool = auAll.filter((tuple) => isHoldoutLocality(tuple.locality) === opts.golden), nzPool = nzAll.filter((tuple) => isHoldoutLocality(tuple.locality) === opts.golden);
55
+ console.error(` GeoNames postal: AU ${auAll.length}→${auPool.length}, NZ ${nzAll.length}→${nzPool.length}`);
56
+ if (!usPool.length || !frPool.length || !qcPool.length || !onPool.length || !auPool.length || !nzPool.length)
57
+ throw new Error(`A base pool is empty — check ${dataRootPath("oa-cache")}, ${GEONAMES_CA}, ${GEONAMES_POSTAL_AU.zip}, and ${GEONAMES_POSTAL_NZ.zip}.`);
58
+ let emitted = 0, skipped = 0, guard = 0;
59
+ while (emitted < count && guard++ < count * 10) {
60
+ const kind = pickClass(random());
61
+ let rendered;
62
+ let country;
63
+ let locale;
64
+ if (kind === "po-box-us") {
65
+ rendered = renderPoBoxUs(random, pick(usPool, random));
66
+ country = "US";
67
+ locale = "en-US";
68
+ }
69
+ else if (kind === "pmb-us") {
70
+ const tuple = pick(usPool, random);
71
+ if (!tuple.postcode || !tuple.street || !tuple.house_number)
72
+ continue;
73
+ rendered = renderPmbUs(random, tuple);
74
+ country = "US";
75
+ locale = "en-US";
76
+ }
77
+ else if (kind === "bp-fr") {
78
+ rendered = renderBpFr(random, pick(frPool, random));
79
+ country = "FR";
80
+ locale = "fr-FR";
81
+ }
82
+ else if (kind === "cedex-fr") {
83
+ rendered = renderCedexFr(random, pick(frPool, random));
84
+ country = "FR";
85
+ locale = "fr-FR";
86
+ }
87
+ else if (kind === "cp-ca-fr") {
88
+ rendered = renderCaFr(random, pick(qcPool, random));
89
+ country = "CA";
90
+ locale = "fr-CA";
91
+ }
92
+ else if (kind === "po-box-au") {
93
+ rendered = renderAUPoBox(random, pick(auPool, random));
94
+ country = "AU";
95
+ locale = "en-AU";
96
+ }
97
+ else if (kind === "po-box-nz") {
98
+ rendered = renderNZPoBox(random, pick(nzPool, random));
99
+ country = "NZ";
100
+ locale = "en-NZ";
101
+ }
102
+ else if (kind === "po-box-us-military") {
103
+ const military = synthesizeMilitaryPoBoxRow({ random });
104
+ const { country: _country, ...components } = military.components;
105
+ rendered = { fmt: "po-box-military", raw: military.raw, components: components };
106
+ country = "US";
107
+ locale = "en-US";
108
+ }
109
+ else {
110
+ rendered = renderCaEn(random, pick(onPool, random));
111
+ country = "CA";
112
+ locale = "en-CA";
113
+ }
114
+ const { raw, components } = rendered;
115
+ if (!Object.values(components).every((value) => raw.includes(value))) {
116
+ skipped++;
117
+ continue;
118
+ }
119
+ if (opts.golden) {
120
+ write(JSON.stringify({ raw, components: orderComponents(components), country }) + "\n");
121
+ emitted++;
122
+ continue;
123
+ }
124
+ const canonical = {
125
+ raw,
126
+ components: orderComponents(components),
127
+ country,
128
+ locale,
129
+ source,
130
+ source_id: sliceSourceID(source, components),
131
+ corpus_version: "0.4.0",
132
+ license: country === "CA"
133
+ ? "GeoNames CA (CC-BY 4.0) locality skeletons + Canada Post box forms (corpus templates); postcodes synthesized to the codex CA pattern"
134
+ : country === "FR"
135
+ ? "OpenAddresses FR (BAN-derived) skeletons + La Poste BP/CEDEX forms (corpus templates, NF Z 10-011)"
136
+ : country === "AU"
137
+ ? "GeoNames AU postal dump (CC-BY 4.0) locality/state/postcode tails + Australia Post Postal Delivery Type designators (@mailwoman/codex/au)"
138
+ : country === "NZ"
139
+ ? "GeoNames NZ postal dump (CC-BY 4.0) locality/postcode tails + NZ Post ADV358 Delivery Service Types (@mailwoman/codex/nz)"
140
+ : "OpenAddresses US (non-VT) skeletons + USPS Pub-28 §29 PO-box designators (codex/corpus templates)",
141
+ };
142
+ const aligned = alignRow(canonical);
143
+ if (aligned.kind !== "labeled" || !aligned.row) {
144
+ skipped++;
145
+ continue;
146
+ }
147
+ write(JSON.stringify({ ...aligned.row, synth_method: kind, synth_base_id: null }) + "\n");
148
+ emitted++;
149
+ }
150
+ return { emitted, skipped };
151
+ },
152
+ };
153
+ //# sourceMappingURL=recipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../../../../lib/recipes/po/box/cedex/recipe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ */
4
+ import type { PathBuilderLike } from "path-ts";
5
+ import type { AUTuple, FRTuple, NZTuple, USTuple } from "#recipes/po/box/cedex/types";
6
+ /**
7
+ * Non-Vermont OpenAddresses files used for training rows.
8
+ */
9
+ export declare const US_TRAIN_SOURCES: ({
10
+ zip: import("path-ts").PathBuilder<"~/oa-cache/us__ca__berkeley.zip">;
11
+ csv: string;
12
+ region: string;
13
+ } | {
14
+ zip: import("path-ts").PathBuilder<"~/oa-cache/us__ca__marin.zip">;
15
+ csv: string;
16
+ region: string;
17
+ } | {
18
+ zip: import("path-ts").PathBuilder<"~/oa-cache/us__dc__statewide.zip">;
19
+ csv: string;
20
+ region: string;
21
+ } | {
22
+ zip: import("path-ts").PathBuilder<"~/oa-cache/us__ia__statewide.zip">;
23
+ csv: string;
24
+ region: string;
25
+ } | {
26
+ zip: import("path-ts").PathBuilder<"~/oa-cache/us__il__cook.zip">;
27
+ csv: string;
28
+ region: string;
29
+ } | {
30
+ zip: import("path-ts").PathBuilder<"~/oa-cache/us__mt__statewide.zip">;
31
+ csv: string;
32
+ region: string;
33
+ } | {
34
+ zip: import("path-ts").PathBuilder<"~/oa-cache/us__sd__statewide.zip">;
35
+ csv: string;
36
+ region: string;
37
+ })[];
38
+ /**
39
+ * Vermont OpenAddresses file reserved for golden rows.
40
+ */
41
+ export declare const US_EVAL_SOURCE: {
42
+ zip: import("path-ts").PathBuilder<"~/oa-cache/us__vt__statewide.zip">;
43
+ csv: string;
44
+ region: string;
45
+ };
46
+ /**
47
+ * Countrywide French OpenAddresses source.
48
+ */
49
+ export declare const FR_SOURCE: {
50
+ zip: import("path-ts").PathBuilder<"~/oa-cache/fr__countrywide.zip">;
51
+ csv: string;
52
+ };
53
+ /**
54
+ * GeoNames Canada feature dump.
55
+ */
56
+ export declare const GEONAMES_CA: import("path-ts").PathBuilder<"~/geonames/CA.zip">;
57
+ /**
58
+ * GeoNames Australian postal-code dump.
59
+ */
60
+ export declare const GEONAMES_POSTAL_AU: {
61
+ zip: import("path-ts").PathBuilder<"~/geonames-postal/AU.zip">;
62
+ txt: string;
63
+ };
64
+ /**
65
+ * GeoNames New Zealand postal-code dump.
66
+ */
67
+ export declare const GEONAMES_POSTAL_NZ: {
68
+ zip: import("path-ts").PathBuilder<"~/geonames-postal/NZ.zip">;
69
+ txt: string;
70
+ };
71
+ export declare const localityHash: (name: string) => number;
72
+ export declare const isHoldoutLocality: (name: string) => boolean;
73
+ export declare function readUsTuples(source: {
74
+ zip: PathBuilderLike;
75
+ csv: string;
76
+ region: string;
77
+ }): Promise<USTuple[]>;
78
+ export declare function readFrTuples(limit: number): Promise<FRTuple[]>;
79
+ export declare function readCaLocalities(admin1: string): Promise<string[]>;
80
+ export declare function readPostalTuples(source: {
81
+ zip: PathBuilderLike;
82
+ txt: string;
83
+ }, opts: {
84
+ withState: boolean;
85
+ }): Promise<Array<AUTuple | NZTuple>>;
86
+ //# sourceMappingURL=sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../../../../lib/recipes/po/box/cedex/sources.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAG9C,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAGrF;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQ5B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;IAC1B,GAAG;IACH,GAAG;IACH,MAAM;CACN,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;IAAK,GAAG;IAAmD,GAAG;CAAwB,CAAA;AAC5G;;GAEG;AACH,eAAO,MAAM,WAAW,oDAAqC,CAAA;AAC7D;;GAEG;AACH,eAAO,MAAM,kBAAkB;IAAK,GAAG;IAA6C,GAAG;CAAY,CAAA;AACnG;;GAEG;AACH,eAAO,MAAM,kBAAkB;IAAK,GAAG;IAA6C,GAAG;CAAY,CAAA;AAOnG,eAAO,MAAM,YAAY,SAAU,MAAM,KAAG,MAQ3C,CAAA;AAED,eAAO,MAAM,iBAAiB,SAAU,MAAM,KAAG,OAAwC,CAAA;AAKzF,wBAAsB,YAAY,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAwBpH;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAgCpE;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBxE;AAED,wBAAsB,gBAAgB,CACrC,MAAM,EAAE;IAAE,GAAG,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAC7C,IAAI,EAAE;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,GAC1B,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CA2BnC"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ */
4
+ import { isAuPostcode, isAuStateAbbreviation } from "@mailwoman/codex/au";
5
+ import { isNZPostcode } from "@mailwoman/codex/nz";
6
+ import { dataRootPath } from "@mailwoman/core/data-root";
7
+ import { pathExists } from "@mailwoman/core/fs/readers";
8
+ import { readZipEntry } from "@mailwoman/core/fs/zip";
9
+ import { TextSpliterator, TSVSpliterator } from "spliterator";
10
+ import { readCSVRecords, readZippedCSVRecords } from "#recipes/scaffold";
11
+ /**
12
+ * Non-Vermont OpenAddresses files used for training rows.
13
+ */
14
+ export const US_TRAIN_SOURCES = [
15
+ { zip: dataRootPath("oa-cache", "us__ca__berkeley.zip"), csv: "us/ca/berkeley.csv", region: "CA" },
16
+ { zip: dataRootPath("oa-cache", "us__ca__marin.zip"), csv: "us/ca/marin.csv", region: "CA" },
17
+ { zip: dataRootPath("oa-cache", "us__dc__statewide.zip"), csv: "us/dc/statewide.csv", region: "DC" },
18
+ { zip: dataRootPath("oa-cache", "us__ia__statewide.zip"), csv: "us/ia/statewide.csv", region: "IA" },
19
+ { zip: dataRootPath("oa-cache", "us__il__cook.zip"), csv: "us/il/cook.csv", region: "IL" },
20
+ { zip: dataRootPath("oa-cache", "us__mt__statewide.zip"), csv: "us/mt/statewide.csv", region: "MT" },
21
+ { zip: dataRootPath("oa-cache", "us__sd__statewide.zip"), csv: "us/sd/statewide.csv", region: "SD" },
22
+ ];
23
+ /**
24
+ * Vermont OpenAddresses file reserved for golden rows.
25
+ */
26
+ export const US_EVAL_SOURCE = {
27
+ zip: dataRootPath("oa-cache", "us__vt__statewide.zip"),
28
+ csv: "us/vt/statewide.csv",
29
+ region: "VT",
30
+ };
31
+ /**
32
+ * Countrywide French OpenAddresses source.
33
+ */
34
+ export const FR_SOURCE = { zip: dataRootPath("oa-cache", "fr__countrywide.zip"), csv: "fr/countrywide.csv" };
35
+ /**
36
+ * GeoNames Canada feature dump.
37
+ */
38
+ export const GEONAMES_CA = dataRootPath("geonames", "CA.zip");
39
+ /**
40
+ * GeoNames Australian postal-code dump.
41
+ */
42
+ export const GEONAMES_POSTAL_AU = { zip: dataRootPath("geonames-postal", "AU.zip"), txt: "AU.txt" };
43
+ /**
44
+ * GeoNames New Zealand postal-code dump.
45
+ */
46
+ export const GEONAMES_POSTAL_NZ = { zip: dataRootPath("geonames-postal", "NZ.zip"), txt: "NZ.txt" };
47
+ const MAX_LOCALITY_LENGTH = 40;
48
+ const FR_STRIDE = 211;
49
+ const FR_STRIDE_OFFSET = 3;
50
+ const CA_LOCALITY_MIN_POPULATION = 1000;
51
+ export const localityHash = (name) => {
52
+ let hash = 5381;
53
+ for (const character of name.toLowerCase()) {
54
+ hash = ((hash << 5) + hash + character.charCodeAt(0)) >>> 0;
55
+ }
56
+ return hash;
57
+ };
58
+ export const isHoldoutLocality = (name) => localityHash(name) % 10 === 0;
59
+ const cleanLocality = (locality) => locality && locality.length <= MAX_LOCALITY_LENGTH && !/\d|,/.test(locality) && !/cedex/i.test(locality);
60
+ export async function readUsTuples(source) {
61
+ const tuples = [];
62
+ const seen = new Set();
63
+ for await (const row of readZippedCSVRecords(source.zip, source.csv)) {
64
+ const locality = row.city ?? "";
65
+ if (!cleanLocality(locality))
66
+ continue;
67
+ const street = row.street ?? "";
68
+ const pairKey = `${locality}|${street}`.toLowerCase();
69
+ if (seen.has(pairKey))
70
+ continue;
71
+ seen.add(pairKey);
72
+ tuples.push({
73
+ house_number: row.number ?? "",
74
+ street,
75
+ locality,
76
+ region: source.region,
77
+ postcode: row.postcode ?? "",
78
+ });
79
+ }
80
+ return tuples;
81
+ }
82
+ export async function readFrTuples(limit) {
83
+ if (!(await pathExists(FR_SOURCE.zip))) {
84
+ console.error(` WARN: ${FR_SOURCE.zip} is not cached — skipping ${FR_SOURCE.csv}`);
85
+ return [];
86
+ }
87
+ const encoder = new TextEncoder();
88
+ const strided = TextSpliterator.fromAsync(readZipEntry(FR_SOURCE.zip, FR_SOURCE.csv), { skipEmpty: false })
89
+ .filter((_line, index) => index === 0 || (index + 1) % FR_STRIDE === FR_STRIDE_OFFSET)
90
+ .take(limit + 1)
91
+ .map((line) => encoder.encode(line + "\n"));
92
+ const tuples = [];
93
+ const seen = new Set();
94
+ for await (const row of readCSVRecords(strided)) {
95
+ const locality = row.city ?? "", postcode = row.postcode ?? "", street = row.street ?? "", house_number = row.number ?? "";
96
+ if (!cleanLocality(locality) || !/^\d{5}$/.test(postcode) || !street || !house_number)
97
+ continue;
98
+ const key = `${locality}|${street}`.toLowerCase();
99
+ if (seen.has(key))
100
+ continue;
101
+ seen.add(key);
102
+ tuples.push({ house_number, street, locality, postcode });
103
+ }
104
+ return tuples;
105
+ }
106
+ export async function readCaLocalities(admin1) {
107
+ if (!(await pathExists(GEONAMES_CA))) {
108
+ console.error(` WARN: ${GEONAMES_CA} is not cached — skipping CA localities (admin1=${admin1})`);
109
+ return [];
110
+ }
111
+ const localities = new Set();
112
+ for await (const columns of TSVSpliterator.fromAsync(readZipEntry(GEONAMES_CA, "CA.txt"), { header: false })) {
113
+ if (columns[6] === "P" &&
114
+ columns[8] === "CA" &&
115
+ columns[10] === admin1 &&
116
+ Number(columns[14]) > CA_LOCALITY_MIN_POPULATION &&
117
+ cleanLocality(columns[1] ?? "")) {
118
+ localities.add(columns[1]);
119
+ }
120
+ }
121
+ return [...localities];
122
+ }
123
+ export async function readPostalTuples(source, opts) {
124
+ if (!(await pathExists(source.zip))) {
125
+ console.error(` WARN: ${source.zip} is not cached — skipping ${source.txt}`);
126
+ return [];
127
+ }
128
+ const tuples = [];
129
+ const seen = new Set();
130
+ const validPostcode = opts.withState ? isAuPostcode : isNZPostcode;
131
+ for await (const columns of TSVSpliterator.fromAsync(readZipEntry(source.zip, source.txt), { header: false })) {
132
+ const postcode = (columns[1] ?? "").trim(), locality = (columns[2] ?? "").trim(), region = (columns[4] ?? "").trim();
133
+ if (!cleanLocality(locality) || !validPostcode(postcode) || (opts.withState && !isAuStateAbbreviation(region)))
134
+ continue;
135
+ const key = `${locality}|${postcode}`.toLowerCase();
136
+ if (seen.has(key))
137
+ continue;
138
+ seen.add(key);
139
+ tuples.push(opts.withState ? { locality, region, postcode } : { locality, postcode });
140
+ }
141
+ return tuples;
142
+ }
143
+ //# sourceMappingURL=sources.js.map