@mailwoman/corpus 10.1.0 → 10.2.1

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 (736) hide show
  1. package/data/licenses/cdla-permissive-2.0.md +1 -1
  2. package/lib/adapters/cordis/adapter.ts +13 -7
  3. package/lib/adapters/dedup-key.ts +1 -1
  4. package/lib/adapters/geonames/adapter.ts +1 -1
  5. package/lib/adapters/gleif/adapter.ts +17 -16
  6. package/lib/adapters/libpostal-dictionary.ts +0 -2
  7. package/lib/adapters/openaddresses/adapter.ts +4 -3
  8. package/lib/adapters/osm/adapter.ts +22 -21
  9. package/lib/adapters/po-box/adapter.ts +10 -5
  10. package/lib/adapters/registry.ts +4 -4
  11. package/lib/adapters/source-id.ts +2 -2
  12. package/lib/adapters/street-line.ts +7 -6
  13. package/lib/adapters/wof/admin/json/adapter.ts +2 -2
  14. package/lib/adapters/wof/json-rows.ts +2 -1
  15. package/lib/adapters/wof/postalcode-json/adapter.ts +6 -2
  16. package/lib/adapters.ts +5 -5
  17. package/lib/au/adapters/gnaf/adapter.ts +1 -1
  18. package/lib/be/adapters/brussels/adapter.ts +22 -22
  19. package/lib/be/adapters/vlaanderen/adapter.ts +54 -57
  20. package/lib/be/adapters/wallonie/adapter.ts +17 -17
  21. package/lib/be/tools/fetch/brussels.ts +13 -10
  22. package/lib/be/tools/fetch/wallonie.ts +8 -7
  23. package/lib/build/adapters.ts +2 -1
  24. package/lib/build/align.ts +5 -4
  25. package/lib/build/checkpoint.ts +5 -3
  26. package/lib/build/eligibility.ts +3 -3
  27. package/lib/build/types.ts +8 -6
  28. package/lib/cz/adapters/cuzk/adapter.ts +41 -38
  29. package/lib/cz/tools/fetch/cuzk.ts +42 -31
  30. package/lib/de/recipes/locale.ts +1 -1
  31. package/lib/dk/adapters/inspire/adapter.ts +38 -38
  32. package/lib/dk/tools/fetch/inspire.ts +16 -14
  33. package/lib/ee/adapters/ads/adapter.ts +26 -32
  34. package/lib/ee/tools/fetch/ads.ts +10 -8
  35. package/lib/es/adapters/bizkaia/adapter.ts +47 -47
  36. package/lib/es/adapters/catastro/adapter.ts +36 -34
  37. package/lib/es/adapters/gipuzkoa/adapter.ts +38 -45
  38. package/lib/es/adapters/navarra/adapter.ts +28 -27
  39. package/lib/es/cadastre.ts +31 -31
  40. package/lib/es/tools/fetch/bizkaia.ts +40 -36
  41. package/lib/es/tools/fetch/catastro.ts +51 -40
  42. package/lib/es/tools/fetch/gipuzkoa.ts +13 -11
  43. package/lib/es/tools/fetch/navarra.ts +33 -25
  44. package/lib/fi/adapters/ryhti/adapter.ts +22 -26
  45. package/lib/fi/tools/fetch/ryhti.ts +31 -31
  46. package/lib/fr/adapters/annuaire-education/adapter.ts +13 -11
  47. package/lib/fr/adapters/ban/adapter.ts +6 -6
  48. package/lib/fr/adapters/finess/adapter.ts +16 -15
  49. package/lib/fr/adapters/finess/voie-type.ts +4 -3
  50. package/lib/fr/insee-country.ts +2 -2
  51. package/lib/fr/recipes/lieudit.ts +8 -6
  52. package/lib/fr/tools/fetch/annuaire-education.ts +11 -8
  53. package/lib/fr/tools/fetch/ban.ts +3 -2
  54. package/lib/fr/tools/fetch/finess.ts +14 -13
  55. package/lib/inspire/address.ts +86 -78
  56. package/lib/inspire/errors.ts +9 -8
  57. package/lib/inspire/stream.ts +29 -26
  58. package/lib/international/recipes/locale.ts +13 -9
  59. package/lib/it/adapters/anac/adapter.ts +51 -46
  60. package/lib/it/tools/fetch/anac.ts +22 -25
  61. package/lib/jp/adapters/wof-admin/adapter.ts +2 -6
  62. package/lib/jp/tools/fetch/houjin.ts +3 -3
  63. package/lib/kr/adapters/localdata/permit-rows.ts +1 -1
  64. package/lib/kr/tools/fetch/juso.ts +1 -1
  65. package/lib/kr/tools/fetch/localdata.ts +2 -2
  66. package/lib/lu/adapters/bd-adresses/adapter.ts +10 -10
  67. package/lib/lu/tools/fetch/bd-adresses.ts +15 -13
  68. package/lib/lv/adapters/varis/adapter.ts +24 -23
  69. package/lib/lv/tools/fetch/varis.ts +3 -2
  70. package/lib/nl/adapters/kadaster/adapter.ts +29 -29
  71. package/lib/nl/tools/fetch/kadaster.ts +16 -12
  72. package/lib/no/adapters/matrikkelen/adapter.ts +6 -5
  73. package/lib/no/tools/fetch/matrikkelen.ts +59 -47
  74. package/lib/parquet/duckdb.ts +7 -4
  75. package/lib/parquet/readers.ts +3 -3
  76. package/lib/parquet/schema.ts +1 -1
  77. package/lib/parquet/writers.ts +3 -2
  78. package/lib/pl/adapters/emuia/adapter.ts +12 -12
  79. package/lib/pl/tools/fetch/emuia.ts +10 -9
  80. package/lib/recipes/bare/postcode.ts +1 -1
  81. package/lib/recipes/boundary-stress.ts +1 -1
  82. package/lib/recipes/house-venue.ts +7 -3
  83. package/lib/recipes/intersection.ts +2 -2
  84. package/lib/recipes/po/box/cedex/recipe.ts +3 -3
  85. package/lib/recipes/po/box/cedex/sources.ts +13 -1
  86. package/lib/recipes/scaffold.ts +31 -21
  87. package/lib/recipes/sources.ts +16 -3
  88. package/lib/recipes/street/bare.ts +2 -2
  89. package/lib/recipes/street.ts +3 -1
  90. package/lib/recipes/sub/venue/context.ts +2 -0
  91. package/lib/recipes/sub/venue/render.ts +1 -1
  92. package/lib/recipes/sub/venue/sources.ts +24 -29
  93. package/lib/recipes/sub/venue.ts +12 -18
  94. package/lib/recipes/trailing-region.ts +6 -2
  95. package/lib/recipes/unit.ts +3 -3
  96. package/lib/recipes/venue.ts +347 -0
  97. package/lib/recipes.ts +4 -2
  98. package/lib/registers.ts +8 -6
  99. package/lib/ro/adapters/retea-scolara/adapter.ts +5 -5
  100. package/lib/ro/tools/fetch/retea-scolara.ts +1 -1
  101. package/lib/runner.ts +4 -3
  102. package/lib/sg/recipes/register.ts +1 -1
  103. package/lib/sg/tools/fetch/acra.ts +3 -3
  104. package/lib/sk/adapters/inspire/adapter.ts +25 -27
  105. package/lib/sk/tools/fetch/inspire.ts +15 -14
  106. package/lib/source-register/effective-manifest.ts +3 -3
  107. package/lib/source-register/register.ts +3 -3
  108. package/lib/source-register/training-manifest.ts +1 -1
  109. package/lib/source-register/types.ts +12 -13
  110. package/lib/subvenue/promotions.ts +1 -1
  111. package/lib/subvenue/table.ts +4 -4
  112. package/lib/surfaces/locale.ts +2 -0
  113. package/lib/synthesizers/anchor-absorption.ts +2 -1
  114. package/lib/synthesizers/boundary-stress.ts +20 -26
  115. package/lib/synthesizers/house-venue.ts +26 -30
  116. package/lib/synthesizers/no-street.ts +2 -1
  117. package/lib/synthesizers/po-box.ts +6 -3
  118. package/lib/synthesizers/tail.ts +55 -0
  119. package/lib/synthesizers/utils.ts +19 -2
  120. package/lib/test-kit.ts +2 -2
  121. package/lib/tools/audit.ts +7 -5
  122. package/lib/tools/corpus-stats.ts +1 -1
  123. package/lib/tools/fetch/atom.ts +10 -10
  124. package/lib/tools/fetch/cordis.ts +11 -9
  125. package/lib/tools/fetch/download/manifest.ts +2 -1
  126. package/lib/tools/fetch/download/network.ts +4 -4
  127. package/lib/tools/fetch/download/retry.ts +4 -4
  128. package/lib/tools/fetch/geonames/dump.ts +5 -3
  129. package/lib/tools/fetch/geonames/postal.ts +2 -2
  130. package/lib/tools/fetch/gleif.ts +6 -4
  131. package/lib/tools/fetch/header.ts +8 -6
  132. package/lib/tools/fetch/inspire-addresses.ts +41 -36
  133. package/lib/tools/fetch/openaddresses.ts +1 -1
  134. package/lib/tools/fetch/vlaanderen-ad.ts +17 -17
  135. package/lib/tools/fetch/wfs-harvest.ts +39 -28
  136. package/lib/tools/fetch.ts +0 -42
  137. package/lib/tools/golden/expand.ts +8 -8
  138. package/lib/tools/golden/promote.ts +12 -8
  139. package/lib/tools/golden/relabel-street/directory.ts +7 -6
  140. package/lib/tools/golden/relabel-street/row.ts +7 -6
  141. package/lib/tools/ingest-csv.ts +3 -3
  142. package/lib/tools/jsonl-to-parquet.ts +1 -1
  143. package/lib/tools/lint/recipe-output/vocab.ts +10 -5
  144. package/lib/tools/lint/recipe-output.ts +26 -8
  145. package/lib/tools/overlay/kryptonite.ts +4 -3
  146. package/lib/tools/overlay/manifest.ts +4 -2
  147. package/lib/tools/overlay/merge-source.ts +2 -1
  148. package/lib/tools/overlay/split-slice.ts +2 -2
  149. package/lib/tools/overlay/translit.ts +6 -4
  150. package/lib/tools/overture-subvenue.ts +1 -1
  151. package/lib/tools/postcode-triples.ts +5 -4
  152. package/lib/tools/source-register/build.ts +17 -14
  153. package/lib/tools/sub/venue/lexicon.ts +4 -8
  154. package/lib/tw/tools/fetch/gcis.ts +4 -4
  155. package/lib/types.ts +4 -3
  156. package/lib/us/adapters/state/hi-schools/workbook.ts +1 -1
  157. package/lib/us/adapters/usgov/nad/adapter.ts +11 -11
  158. package/lib/us/adapters/usgov/samhsa-treatment-locator/adapter.ts +4 -4
  159. package/lib/us/fips-state.ts +2 -2
  160. package/lib/{synthesizers → us/synthesizers}/intersection.ts +12 -13
  161. package/lib/{synthesizers → us/synthesizers}/street.ts +16 -15
  162. package/lib/us/tools/fetch/imls-pls.ts +1 -1
  163. package/lib/us/tools/fetch/nad.ts +7 -7
  164. package/lib/us/tools/fetch/nppes.ts +5 -5
  165. package/lib/us/tools/fetch/state/hi-schools.ts +3 -2
  166. package/lib/us/tools/fetch/tiger-full.ts +1 -1
  167. package/lib/utils/align.ts +13 -10
  168. package/lib/utils/golden.ts +2 -2
  169. package/lib/utils/license.ts +3 -3
  170. package/lib/utils/split.ts +19 -15
  171. package/lib/utils/tokenize.ts +7 -26
  172. package/lib/utils/wof-json.ts +4 -4
  173. package/out/adapters/cordis/adapter.d.ts +5 -3
  174. package/out/adapters/cordis/adapter.d.ts.map +1 -1
  175. package/out/adapters/cordis/adapter.js +13 -7
  176. package/out/adapters/cordis/adapter.js.map +1 -1
  177. package/out/adapters/dedup-key.d.ts +1 -1
  178. package/out/adapters/dedup-key.js +1 -1
  179. package/out/adapters/geonames/adapter.js +1 -1
  180. package/out/adapters/geonames/adapter.js.map +1 -1
  181. package/out/adapters/gleif/adapter.d.ts +9 -9
  182. package/out/adapters/gleif/adapter.d.ts.map +1 -1
  183. package/out/adapters/gleif/adapter.js +15 -14
  184. package/out/adapters/gleif/adapter.js.map +1 -1
  185. package/out/adapters/libpostal-dictionary.d.ts +0 -2
  186. package/out/adapters/libpostal-dictionary.d.ts.map +1 -1
  187. package/out/adapters/libpostal-dictionary.js +0 -2
  188. package/out/adapters/libpostal-dictionary.js.map +1 -1
  189. package/out/adapters/openaddresses/adapter.d.ts +3 -2
  190. package/out/adapters/openaddresses/adapter.d.ts.map +1 -1
  191. package/out/adapters/openaddresses/adapter.js +1 -1
  192. package/out/adapters/openaddresses/adapter.js.map +1 -1
  193. package/out/adapters/osm/adapter.d.ts +17 -16
  194. package/out/adapters/osm/adapter.d.ts.map +1 -1
  195. package/out/adapters/osm/adapter.js +10 -9
  196. package/out/adapters/osm/adapter.js.map +1 -1
  197. package/out/adapters/po-box/adapter.d.ts +6 -3
  198. package/out/adapters/po-box/adapter.d.ts.map +1 -1
  199. package/out/adapters/po-box/adapter.js +4 -2
  200. package/out/adapters/po-box/adapter.js.map +1 -1
  201. package/out/adapters/registry.d.ts +3 -3
  202. package/out/adapters/registry.d.ts.map +1 -1
  203. package/out/adapters/registry.js +1 -1
  204. package/out/adapters/registry.js.map +1 -1
  205. package/out/adapters/source-id.d.ts +2 -2
  206. package/out/adapters/source-id.js +2 -2
  207. package/out/adapters/street-line.d.ts +7 -6
  208. package/out/adapters/street-line.d.ts.map +1 -1
  209. package/out/adapters/street-line.js +7 -6
  210. package/out/adapters/street-line.js.map +1 -1
  211. package/out/adapters/wof/admin/json/adapter.js +1 -1
  212. package/out/adapters/wof/admin/json/adapter.js.map +1 -1
  213. package/out/adapters/wof/json-rows.d.ts +2 -1
  214. package/out/adapters/wof/json-rows.d.ts.map +1 -1
  215. package/out/adapters/wof/json-rows.js.map +1 -1
  216. package/out/adapters/wof/postalcode-json/adapter.d.ts.map +1 -1
  217. package/out/adapters/wof/postalcode-json/adapter.js +5 -1
  218. package/out/adapters/wof/postalcode-json/adapter.js.map +1 -1
  219. package/out/adapters.d.ts +5 -5
  220. package/out/adapters.js +5 -5
  221. package/out/au/adapters/gnaf/adapter.js +1 -1
  222. package/out/au/adapters/gnaf/adapter.js.map +1 -1
  223. package/out/be/adapters/brussels/adapter.d.ts +9 -9
  224. package/out/be/adapters/brussels/adapter.d.ts.map +1 -1
  225. package/out/be/adapters/brussels/adapter.js +21 -21
  226. package/out/be/adapters/brussels/adapter.js.map +1 -1
  227. package/out/be/adapters/vlaanderen/adapter.d.ts +34 -37
  228. package/out/be/adapters/vlaanderen/adapter.d.ts.map +1 -1
  229. package/out/be/adapters/vlaanderen/adapter.js +40 -38
  230. package/out/be/adapters/vlaanderen/adapter.js.map +1 -1
  231. package/out/be/adapters/wallonie/adapter.d.ts +2 -2
  232. package/out/be/adapters/wallonie/adapter.js +17 -17
  233. package/out/be/adapters/wallonie/adapter.js.map +1 -1
  234. package/out/be/tools/fetch/brussels.d.ts +11 -8
  235. package/out/be/tools/fetch/brussels.d.ts.map +1 -1
  236. package/out/be/tools/fetch/brussels.js +10 -8
  237. package/out/be/tools/fetch/brussels.js.map +1 -1
  238. package/out/be/tools/fetch/wallonie.d.ts +6 -5
  239. package/out/be/tools/fetch/wallonie.d.ts.map +1 -1
  240. package/out/be/tools/fetch/wallonie.js +4 -4
  241. package/out/be/tools/fetch/wallonie.js.map +1 -1
  242. package/out/build/adapters.d.ts.map +1 -1
  243. package/out/build/adapters.js +2 -1
  244. package/out/build/adapters.js.map +1 -1
  245. package/out/build/align.d.ts +3 -2
  246. package/out/build/align.d.ts.map +1 -1
  247. package/out/build/align.js +2 -2
  248. package/out/build/align.js.map +1 -1
  249. package/out/build/checkpoint.d.ts +1 -1
  250. package/out/build/checkpoint.d.ts.map +1 -1
  251. package/out/build/checkpoint.js +4 -2
  252. package/out/build/checkpoint.js.map +1 -1
  253. package/out/build/eligibility.d.ts +2 -2
  254. package/out/build/eligibility.js +3 -3
  255. package/out/build/eligibility.js.map +1 -1
  256. package/out/build/types.d.ts +8 -6
  257. package/out/build/types.d.ts.map +1 -1
  258. package/out/cz/adapters/cuzk/adapter.d.ts +14 -14
  259. package/out/cz/adapters/cuzk/adapter.d.ts.map +1 -1
  260. package/out/cz/adapters/cuzk/adapter.js +38 -35
  261. package/out/cz/adapters/cuzk/adapter.js.map +1 -1
  262. package/out/cz/tools/fetch/cuzk.d.ts +31 -22
  263. package/out/cz/tools/fetch/cuzk.d.ts.map +1 -1
  264. package/out/cz/tools/fetch/cuzk.js +21 -19
  265. package/out/cz/tools/fetch/cuzk.js.map +1 -1
  266. package/out/de/recipes/locale.js +1 -1
  267. package/out/de/recipes/locale.js.map +1 -1
  268. package/out/dk/adapters/inspire/adapter.d.ts +32 -33
  269. package/out/dk/adapters/inspire/adapter.d.ts.map +1 -1
  270. package/out/dk/adapters/inspire/adapter.js +38 -38
  271. package/out/dk/adapters/inspire/adapter.js.map +1 -1
  272. package/out/dk/tools/fetch/inspire.d.ts +6 -5
  273. package/out/dk/tools/fetch/inspire.d.ts.map +1 -1
  274. package/out/dk/tools/fetch/inspire.js +15 -13
  275. package/out/dk/tools/fetch/inspire.js.map +1 -1
  276. package/out/ee/adapters/ads/adapter.d.ts +19 -26
  277. package/out/ee/adapters/ads/adapter.d.ts.map +1 -1
  278. package/out/ee/adapters/ads/adapter.js +22 -28
  279. package/out/ee/adapters/ads/adapter.js.map +1 -1
  280. package/out/ee/tools/fetch/ads.d.ts +3 -3
  281. package/out/ee/tools/fetch/ads.d.ts.map +1 -1
  282. package/out/ee/tools/fetch/ads.js +10 -8
  283. package/out/ee/tools/fetch/ads.js.map +1 -1
  284. package/out/es/adapters/bizkaia/adapter.d.ts +28 -28
  285. package/out/es/adapters/bizkaia/adapter.d.ts.map +1 -1
  286. package/out/es/adapters/bizkaia/adapter.js +43 -43
  287. package/out/es/adapters/bizkaia/adapter.js.map +1 -1
  288. package/out/es/adapters/catastro/adapter.d.ts +22 -23
  289. package/out/es/adapters/catastro/adapter.d.ts.map +1 -1
  290. package/out/es/adapters/catastro/adapter.js +35 -33
  291. package/out/es/adapters/catastro/adapter.js.map +1 -1
  292. package/out/es/adapters/gipuzkoa/adapter.d.ts +31 -38
  293. package/out/es/adapters/gipuzkoa/adapter.d.ts.map +1 -1
  294. package/out/es/adapters/gipuzkoa/adapter.js +40 -47
  295. package/out/es/adapters/gipuzkoa/adapter.js.map +1 -1
  296. package/out/es/adapters/navarra/adapter.d.ts +20 -19
  297. package/out/es/adapters/navarra/adapter.d.ts.map +1 -1
  298. package/out/es/adapters/navarra/adapter.js +23 -22
  299. package/out/es/adapters/navarra/adapter.js.map +1 -1
  300. package/out/es/cadastre.d.ts +21 -20
  301. package/out/es/cadastre.d.ts.map +1 -1
  302. package/out/es/cadastre.js +19 -21
  303. package/out/es/cadastre.js.map +1 -1
  304. package/out/es/tools/fetch/bizkaia.d.ts +28 -25
  305. package/out/es/tools/fetch/bizkaia.d.ts.map +1 -1
  306. package/out/es/tools/fetch/bizkaia.js +25 -24
  307. package/out/es/tools/fetch/bizkaia.js.map +1 -1
  308. package/out/es/tools/fetch/catastro.d.ts +28 -20
  309. package/out/es/tools/fetch/catastro.d.ts.map +1 -1
  310. package/out/es/tools/fetch/catastro.js +36 -31
  311. package/out/es/tools/fetch/catastro.js.map +1 -1
  312. package/out/es/tools/fetch/gipuzkoa.d.ts +11 -9
  313. package/out/es/tools/fetch/gipuzkoa.d.ts.map +1 -1
  314. package/out/es/tools/fetch/gipuzkoa.js +9 -8
  315. package/out/es/tools/fetch/gipuzkoa.js.map +1 -1
  316. package/out/es/tools/fetch/navarra.d.ts +20 -15
  317. package/out/es/tools/fetch/navarra.d.ts.map +1 -1
  318. package/out/es/tools/fetch/navarra.js +21 -16
  319. package/out/es/tools/fetch/navarra.js.map +1 -1
  320. package/out/fi/adapters/ryhti/adapter.d.ts +16 -20
  321. package/out/fi/adapters/ryhti/adapter.d.ts.map +1 -1
  322. package/out/fi/adapters/ryhti/adapter.js +21 -25
  323. package/out/fi/adapters/ryhti/adapter.js.map +1 -1
  324. package/out/fi/tools/fetch/ryhti.d.ts +24 -24
  325. package/out/fi/tools/fetch/ryhti.d.ts.map +1 -1
  326. package/out/fi/tools/fetch/ryhti.js +21 -24
  327. package/out/fi/tools/fetch/ryhti.js.map +1 -1
  328. package/out/fr/adapters/annuaire-education/adapter.d.ts +8 -8
  329. package/out/fr/adapters/annuaire-education/adapter.d.ts.map +1 -1
  330. package/out/fr/adapters/annuaire-education/adapter.js +13 -11
  331. package/out/fr/adapters/annuaire-education/adapter.js.map +1 -1
  332. package/out/fr/adapters/ban/adapter.d.ts +4 -4
  333. package/out/fr/adapters/ban/adapter.js +6 -6
  334. package/out/fr/adapters/ban/adapter.js.map +1 -1
  335. package/out/fr/adapters/finess/adapter.d.ts +12 -11
  336. package/out/fr/adapters/finess/adapter.d.ts.map +1 -1
  337. package/out/fr/adapters/finess/adapter.js +16 -15
  338. package/out/fr/adapters/finess/adapter.js.map +1 -1
  339. package/out/fr/adapters/finess/voie-type.d.ts +2 -2
  340. package/out/fr/adapters/finess/voie-type.d.ts.map +1 -1
  341. package/out/fr/adapters/finess/voie-type.js +4 -3
  342. package/out/fr/adapters/finess/voie-type.js.map +1 -1
  343. package/out/fr/insee-country.d.ts +2 -2
  344. package/out/fr/insee-country.js +2 -2
  345. package/out/fr/recipes/lieudit.d.ts.map +1 -1
  346. package/out/fr/recipes/lieudit.js +5 -4
  347. package/out/fr/recipes/lieudit.js.map +1 -1
  348. package/out/fr/tools/fetch/annuaire-education.d.ts +7 -4
  349. package/out/fr/tools/fetch/annuaire-education.d.ts.map +1 -1
  350. package/out/fr/tools/fetch/annuaire-education.js +9 -7
  351. package/out/fr/tools/fetch/annuaire-education.js.map +1 -1
  352. package/out/fr/tools/fetch/ban.d.ts +1 -1
  353. package/out/fr/tools/fetch/ban.d.ts.map +1 -1
  354. package/out/fr/tools/fetch/ban.js +3 -2
  355. package/out/fr/tools/fetch/ban.js.map +1 -1
  356. package/out/fr/tools/fetch/finess.d.ts +5 -5
  357. package/out/fr/tools/fetch/finess.d.ts.map +1 -1
  358. package/out/fr/tools/fetch/finess.js +13 -12
  359. package/out/fr/tools/fetch/finess.js.map +1 -1
  360. package/out/inspire/address.d.ts +62 -52
  361. package/out/inspire/address.d.ts.map +1 -1
  362. package/out/inspire/address.js +71 -60
  363. package/out/inspire/address.js.map +1 -1
  364. package/out/inspire/errors.d.ts +9 -8
  365. package/out/inspire/errors.d.ts.map +1 -1
  366. package/out/inspire/errors.js +7 -6
  367. package/out/inspire/errors.js.map +1 -1
  368. package/out/inspire/stream.d.ts +25 -22
  369. package/out/inspire/stream.d.ts.map +1 -1
  370. package/out/inspire/stream.js +10 -12
  371. package/out/inspire/stream.js.map +1 -1
  372. package/out/international/recipes/locale.d.ts +2 -2
  373. package/out/international/recipes/locale.d.ts.map +1 -1
  374. package/out/international/recipes/locale.js +11 -7
  375. package/out/international/recipes/locale.js.map +1 -1
  376. package/out/it/adapters/anac/adapter.d.ts +45 -43
  377. package/out/it/adapters/anac/adapter.d.ts.map +1 -1
  378. package/out/it/adapters/anac/adapter.js +48 -43
  379. package/out/it/adapters/anac/adapter.js.map +1 -1
  380. package/out/it/tools/fetch/anac.d.ts +16 -19
  381. package/out/it/tools/fetch/anac.d.ts.map +1 -1
  382. package/out/it/tools/fetch/anac.js +20 -23
  383. package/out/it/tools/fetch/anac.js.map +1 -1
  384. package/out/jp/adapters/wof-admin/adapter.d.ts.map +1 -1
  385. package/out/jp/adapters/wof-admin/adapter.js.map +1 -1
  386. package/out/jp/tools/fetch/houjin.js +2 -2
  387. package/out/jp/tools/fetch/houjin.js.map +1 -1
  388. package/out/kr/adapters/localdata/permit-rows.js +1 -1
  389. package/out/kr/adapters/localdata/permit-rows.js.map +1 -1
  390. package/out/kr/tools/fetch/juso.d.ts +1 -1
  391. package/out/kr/tools/fetch/localdata.d.ts +1 -1
  392. package/out/kr/tools/fetch/localdata.js +1 -1
  393. package/out/kr/tools/fetch/localdata.js.map +1 -1
  394. package/out/lu/adapters/bd-adresses/adapter.d.ts +9 -9
  395. package/out/lu/adapters/bd-adresses/adapter.js +10 -10
  396. package/out/lu/tools/fetch/bd-adresses.d.ts +11 -9
  397. package/out/lu/tools/fetch/bd-adresses.d.ts.map +1 -1
  398. package/out/lu/tools/fetch/bd-adresses.js +11 -11
  399. package/out/lu/tools/fetch/bd-adresses.js.map +1 -1
  400. package/out/lv/adapters/varis/adapter.d.ts +24 -23
  401. package/out/lv/adapters/varis/adapter.d.ts.map +1 -1
  402. package/out/lv/adapters/varis/adapter.js +24 -23
  403. package/out/lv/adapters/varis/adapter.js.map +1 -1
  404. package/out/lv/tools/fetch/varis.d.ts +2 -1
  405. package/out/lv/tools/fetch/varis.d.ts.map +1 -1
  406. package/out/lv/tools/fetch/varis.js +1 -1
  407. package/out/lv/tools/fetch/varis.js.map +1 -1
  408. package/out/nl/adapters/kadaster/adapter.d.ts +12 -12
  409. package/out/nl/adapters/kadaster/adapter.d.ts.map +1 -1
  410. package/out/nl/adapters/kadaster/adapter.js +22 -23
  411. package/out/nl/adapters/kadaster/adapter.js.map +1 -1
  412. package/out/nl/tools/fetch/kadaster.d.ts +14 -10
  413. package/out/nl/tools/fetch/kadaster.d.ts.map +1 -1
  414. package/out/nl/tools/fetch/kadaster.js +12 -9
  415. package/out/nl/tools/fetch/kadaster.js.map +1 -1
  416. package/out/no/adapters/matrikkelen/adapter.d.ts +1 -1
  417. package/out/no/adapters/matrikkelen/adapter.d.ts.map +1 -1
  418. package/out/no/adapters/matrikkelen/adapter.js +3 -3
  419. package/out/no/adapters/matrikkelen/adapter.js.map +1 -1
  420. package/out/no/tools/fetch/matrikkelen.d.ts +50 -38
  421. package/out/no/tools/fetch/matrikkelen.d.ts.map +1 -1
  422. package/out/no/tools/fetch/matrikkelen.js +44 -36
  423. package/out/no/tools/fetch/matrikkelen.js.map +1 -1
  424. package/out/parquet/duckdb.d.ts +7 -4
  425. package/out/parquet/duckdb.d.ts.map +1 -1
  426. package/out/parquet/duckdb.js +2 -1
  427. package/out/parquet/duckdb.js.map +1 -1
  428. package/out/parquet/readers.js +3 -3
  429. package/out/parquet/readers.js.map +1 -1
  430. package/out/parquet/schema.js +1 -1
  431. package/out/parquet/schema.js.map +1 -1
  432. package/out/parquet/writers.d.ts +1 -1
  433. package/out/parquet/writers.d.ts.map +1 -1
  434. package/out/parquet/writers.js +2 -1
  435. package/out/parquet/writers.js.map +1 -1
  436. package/out/pl/adapters/emuia/adapter.d.ts +8 -8
  437. package/out/pl/adapters/emuia/adapter.js +12 -12
  438. package/out/pl/adapters/emuia/adapter.js.map +1 -1
  439. package/out/pl/tools/fetch/emuia.d.ts +5 -4
  440. package/out/pl/tools/fetch/emuia.d.ts.map +1 -1
  441. package/out/pl/tools/fetch/emuia.js +10 -9
  442. package/out/pl/tools/fetch/emuia.js.map +1 -1
  443. package/out/recipes/bare/postcode.js +1 -1
  444. package/out/recipes/bare/postcode.js.map +1 -1
  445. package/out/recipes/boundary-stress.js +1 -1
  446. package/out/recipes/boundary-stress.js.map +1 -1
  447. package/out/recipes/house-venue.d.ts.map +1 -1
  448. package/out/recipes/house-venue.js +6 -3
  449. package/out/recipes/house-venue.js.map +1 -1
  450. package/out/recipes/intersection.js +2 -2
  451. package/out/recipes/intersection.js.map +1 -1
  452. package/out/recipes/po/box/cedex/recipe.js +2 -1
  453. package/out/recipes/po/box/cedex/recipe.js.map +1 -1
  454. package/out/recipes/po/box/cedex/sources.d.ts +8 -2
  455. package/out/recipes/po/box/cedex/sources.d.ts.map +1 -1
  456. package/out/recipes/po/box/cedex/sources.js +1 -1
  457. package/out/recipes/po/box/cedex/sources.js.map +1 -1
  458. package/out/recipes/scaffold.d.ts +28 -19
  459. package/out/recipes/scaffold.d.ts.map +1 -1
  460. package/out/recipes/scaffold.js +3 -2
  461. package/out/recipes/scaffold.js.map +1 -1
  462. package/out/recipes/sources.d.ts +1 -1
  463. package/out/recipes/sources.d.ts.map +1 -1
  464. package/out/recipes/sources.js +15 -2
  465. package/out/recipes/sources.js.map +1 -1
  466. package/out/recipes/street/bare.js +2 -2
  467. package/out/recipes/street/bare.js.map +1 -1
  468. package/out/recipes/street.d.ts.map +1 -1
  469. package/out/recipes/street.js +3 -1
  470. package/out/recipes/street.js.map +1 -1
  471. package/out/recipes/sub/venue/context.d.ts.map +1 -1
  472. package/out/recipes/sub/venue/context.js +2 -0
  473. package/out/recipes/sub/venue/context.js.map +1 -1
  474. package/out/recipes/sub/venue/render.js +1 -1
  475. package/out/recipes/sub/venue/render.js.map +1 -1
  476. package/out/recipes/sub/venue/sources.d.ts +6 -3
  477. package/out/recipes/sub/venue/sources.d.ts.map +1 -1
  478. package/out/recipes/sub/venue/sources.js +16 -20
  479. package/out/recipes/sub/venue/sources.js.map +1 -1
  480. package/out/recipes/sub/venue.d.ts +2 -5
  481. package/out/recipes/sub/venue.d.ts.map +1 -1
  482. package/out/recipes/sub/venue.js +10 -14
  483. package/out/recipes/sub/venue.js.map +1 -1
  484. package/out/recipes/trailing-region.d.ts.map +1 -1
  485. package/out/recipes/trailing-region.js +6 -1
  486. package/out/recipes/trailing-region.js.map +1 -1
  487. package/out/recipes/unit.js +2 -2
  488. package/out/recipes/unit.js.map +1 -1
  489. package/out/recipes/venue.d.ts +119 -0
  490. package/out/recipes/venue.d.ts.map +1 -0
  491. package/out/recipes/venue.js +245 -0
  492. package/out/recipes/venue.js.map +1 -0
  493. package/out/recipes.d.ts +1 -1
  494. package/out/recipes.d.ts.map +1 -1
  495. package/out/recipes.js +3 -1
  496. package/out/recipes.js.map +1 -1
  497. package/out/registers.d.ts +8 -6
  498. package/out/registers.d.ts.map +1 -1
  499. package/out/registers.js +8 -6
  500. package/out/registers.js.map +1 -1
  501. package/out/ro/adapters/retea-scolara/adapter.d.ts +5 -5
  502. package/out/ro/adapters/retea-scolara/adapter.js +5 -5
  503. package/out/ro/tools/fetch/retea-scolara.js +1 -1
  504. package/out/ro/tools/fetch/retea-scolara.js.map +1 -1
  505. package/out/runner.d.ts +3 -2
  506. package/out/runner.d.ts.map +1 -1
  507. package/out/runner.js +1 -1
  508. package/out/runner.js.map +1 -1
  509. package/out/sg/recipes/register.js +1 -1
  510. package/out/sg/recipes/register.js.map +1 -1
  511. package/out/sg/tools/fetch/acra.js +2 -2
  512. package/out/sg/tools/fetch/acra.js.map +1 -1
  513. package/out/sk/adapters/inspire/adapter.d.ts +5 -5
  514. package/out/sk/adapters/inspire/adapter.d.ts.map +1 -1
  515. package/out/sk/adapters/inspire/adapter.js +18 -18
  516. package/out/sk/adapters/inspire/adapter.js.map +1 -1
  517. package/out/sk/tools/fetch/inspire.d.ts +11 -10
  518. package/out/sk/tools/fetch/inspire.d.ts.map +1 -1
  519. package/out/sk/tools/fetch/inspire.js +15 -14
  520. package/out/sk/tools/fetch/inspire.js.map +1 -1
  521. package/out/source-register/effective-manifest.js +3 -3
  522. package/out/source-register/effective-manifest.js.map +1 -1
  523. package/out/source-register/register.d.ts +2 -2
  524. package/out/source-register/register.d.ts.map +1 -1
  525. package/out/source-register/register.js +2 -2
  526. package/out/source-register/register.js.map +1 -1
  527. package/out/source-register/training-manifest.d.ts +1 -1
  528. package/out/source-register/types.d.ts +12 -13
  529. package/out/source-register/types.d.ts.map +1 -1
  530. package/out/source-register/types.js +2 -2
  531. package/out/source-register/types.js.map +1 -1
  532. package/out/subvenue/promotions.d.ts +1 -1
  533. package/out/subvenue/promotions.js +1 -1
  534. package/out/subvenue/table.d.ts +4 -4
  535. package/out/subvenue/table.js +3 -3
  536. package/out/surfaces/locale.d.ts.map +1 -1
  537. package/out/surfaces/locale.js +2 -0
  538. package/out/surfaces/locale.js.map +1 -1
  539. package/out/synthesizers/anchor-absorption.d.ts +2 -1
  540. package/out/synthesizers/anchor-absorption.d.ts.map +1 -1
  541. package/out/synthesizers/anchor-absorption.js.map +1 -1
  542. package/out/synthesizers/boundary-stress.d.ts +1 -1
  543. package/out/synthesizers/boundary-stress.d.ts.map +1 -1
  544. package/out/synthesizers/boundary-stress.js +20 -23
  545. package/out/synthesizers/boundary-stress.js.map +1 -1
  546. package/out/synthesizers/house-venue.d.ts +3 -2
  547. package/out/synthesizers/house-venue.d.ts.map +1 -1
  548. package/out/synthesizers/house-venue.js +24 -26
  549. package/out/synthesizers/house-venue.js.map +1 -1
  550. package/out/synthesizers/no-street.d.ts.map +1 -1
  551. package/out/synthesizers/no-street.js.map +1 -1
  552. package/out/synthesizers/po-box.d.ts +4 -2
  553. package/out/synthesizers/po-box.d.ts.map +1 -1
  554. package/out/synthesizers/po-box.js.map +1 -1
  555. package/out/synthesizers/tail.d.ts +36 -0
  556. package/out/synthesizers/tail.d.ts.map +1 -0
  557. package/out/synthesizers/tail.js +32 -0
  558. package/out/synthesizers/tail.js.map +1 -0
  559. package/out/synthesizers/utils.d.ts +2 -1
  560. package/out/synthesizers/utils.d.ts.map +1 -1
  561. package/out/synthesizers/utils.js +17 -1
  562. package/out/synthesizers/utils.js.map +1 -1
  563. package/out/test-kit.js +2 -2
  564. package/out/test-kit.js.map +1 -1
  565. package/out/tools/audit.d.ts +2 -1
  566. package/out/tools/audit.d.ts.map +1 -1
  567. package/out/tools/audit.js +4 -3
  568. package/out/tools/audit.js.map +1 -1
  569. package/out/tools/corpus-stats.js +1 -1
  570. package/out/tools/corpus-stats.js.map +1 -1
  571. package/out/tools/fetch/atom.d.ts +8 -8
  572. package/out/tools/fetch/atom.d.ts.map +1 -1
  573. package/out/tools/fetch/atom.js +7 -8
  574. package/out/tools/fetch/atom.js.map +1 -1
  575. package/out/tools/fetch/cordis.d.ts +4 -3
  576. package/out/tools/fetch/cordis.d.ts.map +1 -1
  577. package/out/tools/fetch/cordis.js +9 -7
  578. package/out/tools/fetch/cordis.js.map +1 -1
  579. package/out/tools/fetch/download/manifest.d.ts.map +1 -1
  580. package/out/tools/fetch/download/manifest.js +2 -1
  581. package/out/tools/fetch/download/manifest.js.map +1 -1
  582. package/out/tools/fetch/download/network.d.ts +4 -4
  583. package/out/tools/fetch/download/retry.js +4 -4
  584. package/out/tools/fetch/download/retry.js.map +1 -1
  585. package/out/tools/fetch/geonames/dump.d.ts +3 -2
  586. package/out/tools/fetch/geonames/dump.d.ts.map +1 -1
  587. package/out/tools/fetch/geonames/dump.js +2 -1
  588. package/out/tools/fetch/geonames/dump.js.map +1 -1
  589. package/out/tools/fetch/geonames/postal.d.ts +2 -2
  590. package/out/tools/fetch/gleif.d.ts +3 -2
  591. package/out/tools/fetch/gleif.d.ts.map +1 -1
  592. package/out/tools/fetch/gleif.js +6 -4
  593. package/out/tools/fetch/gleif.js.map +1 -1
  594. package/out/tools/fetch/header.d.ts +7 -5
  595. package/out/tools/fetch/header.d.ts.map +1 -1
  596. package/out/tools/fetch/header.js +8 -6
  597. package/out/tools/fetch/header.js.map +1 -1
  598. package/out/tools/fetch/inspire-addresses.d.ts +32 -27
  599. package/out/tools/fetch/inspire-addresses.d.ts.map +1 -1
  600. package/out/tools/fetch/inspire-addresses.js +25 -24
  601. package/out/tools/fetch/inspire-addresses.js.map +1 -1
  602. package/out/tools/fetch/openaddresses.js +1 -1
  603. package/out/tools/fetch/openaddresses.js.map +1 -1
  604. package/out/tools/fetch/vlaanderen-ad.d.ts +5 -5
  605. package/out/tools/fetch/vlaanderen-ad.d.ts.map +1 -1
  606. package/out/tools/fetch/vlaanderen-ad.js +16 -16
  607. package/out/tools/fetch/vlaanderen-ad.js.map +1 -1
  608. package/out/tools/fetch/wfs-harvest.d.ts +26 -16
  609. package/out/tools/fetch/wfs-harvest.d.ts.map +1 -1
  610. package/out/tools/fetch/wfs-harvest.js +21 -18
  611. package/out/tools/fetch/wfs-harvest.js.map +1 -1
  612. package/out/tools/fetch.d.ts +0 -41
  613. package/out/tools/fetch.d.ts.map +1 -1
  614. package/out/tools/fetch.js +0 -41
  615. package/out/tools/fetch.js.map +1 -1
  616. package/out/tools/golden/expand.d.ts +7 -7
  617. package/out/tools/golden/expand.js +1 -1
  618. package/out/tools/golden/expand.js.map +1 -1
  619. package/out/tools/golden/promote.d.ts +2 -2
  620. package/out/tools/golden/promote.d.ts.map +1 -1
  621. package/out/tools/golden/promote.js +9 -6
  622. package/out/tools/golden/promote.js.map +1 -1
  623. package/out/tools/golden/relabel-street/directory.d.ts +4 -4
  624. package/out/tools/golden/relabel-street/directory.d.ts.map +1 -1
  625. package/out/tools/golden/relabel-street/directory.js +3 -2
  626. package/out/tools/golden/relabel-street/directory.js.map +1 -1
  627. package/out/tools/golden/relabel-street/row.d.ts +4 -3
  628. package/out/tools/golden/relabel-street/row.d.ts.map +1 -1
  629. package/out/tools/golden/relabel-street/row.js +3 -3
  630. package/out/tools/golden/relabel-street/row.js.map +1 -1
  631. package/out/tools/ingest-csv.js +3 -3
  632. package/out/tools/ingest-csv.js.map +1 -1
  633. package/out/tools/jsonl-to-parquet.d.ts +1 -1
  634. package/out/tools/lint/recipe-output/vocab.d.ts +10 -5
  635. package/out/tools/lint/recipe-output/vocab.d.ts.map +1 -1
  636. package/out/tools/lint/recipe-output/vocab.js.map +1 -1
  637. package/out/tools/lint/recipe-output.d.ts +8 -8
  638. package/out/tools/lint/recipe-output.d.ts.map +1 -1
  639. package/out/tools/lint/recipe-output.js +17 -0
  640. package/out/tools/lint/recipe-output.js.map +1 -1
  641. package/out/tools/overlay/kryptonite.d.ts +2 -2
  642. package/out/tools/overlay/kryptonite.d.ts.map +1 -1
  643. package/out/tools/overlay/kryptonite.js +2 -1
  644. package/out/tools/overlay/kryptonite.js.map +1 -1
  645. package/out/tools/overlay/manifest.d.ts +2 -1
  646. package/out/tools/overlay/manifest.d.ts.map +1 -1
  647. package/out/tools/overlay/manifest.js +2 -1
  648. package/out/tools/overlay/manifest.js.map +1 -1
  649. package/out/tools/overlay/merge-source.d.ts +2 -1
  650. package/out/tools/overlay/merge-source.d.ts.map +1 -1
  651. package/out/tools/overlay/merge-source.js.map +1 -1
  652. package/out/tools/overlay/split-slice.d.ts +1 -1
  653. package/out/tools/overlay/split-slice.js +1 -1
  654. package/out/tools/overlay/split-slice.js.map +1 -1
  655. package/out/tools/overlay/translit.d.ts +4 -3
  656. package/out/tools/overlay/translit.d.ts.map +1 -1
  657. package/out/tools/overlay/translit.js +2 -1
  658. package/out/tools/overlay/translit.js.map +1 -1
  659. package/out/tools/overture-subvenue.d.ts +1 -1
  660. package/out/tools/overture-subvenue.d.ts.map +1 -1
  661. package/out/tools/postcode-triples.d.ts +1 -1
  662. package/out/tools/postcode-triples.d.ts.map +1 -1
  663. package/out/tools/postcode-triples.js +4 -3
  664. package/out/tools/postcode-triples.js.map +1 -1
  665. package/out/tools/source-register/build.d.ts +10 -8
  666. package/out/tools/source-register/build.d.ts.map +1 -1
  667. package/out/tools/source-register/build.js +10 -8
  668. package/out/tools/source-register/build.js.map +1 -1
  669. package/out/tools/sub/venue/lexicon.d.ts +2 -6
  670. package/out/tools/sub/venue/lexicon.d.ts.map +1 -1
  671. package/out/tools/sub/venue/lexicon.js +2 -6
  672. package/out/tools/sub/venue/lexicon.js.map +1 -1
  673. package/out/tw/tools/fetch/gcis.js +3 -3
  674. package/out/tw/tools/fetch/gcis.js.map +1 -1
  675. package/out/types.d.ts +4 -3
  676. package/out/types.d.ts.map +1 -1
  677. package/out/types.js.map +1 -1
  678. package/out/us/adapters/state/hi-schools/workbook.d.ts +1 -1
  679. package/out/us/adapters/state/hi-schools/workbook.d.ts.map +1 -1
  680. package/out/us/adapters/state/hi-schools/workbook.js.map +1 -1
  681. package/out/us/adapters/usgov/nad/adapter.js +6 -6
  682. package/out/us/adapters/usgov/nad/adapter.js.map +1 -1
  683. package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.js +2 -2
  684. package/out/us/adapters/usgov/samhsa-treatment-locator/adapter.js.map +1 -1
  685. package/out/us/fips-state.d.ts +2 -2
  686. package/out/us/fips-state.d.ts.map +1 -1
  687. package/out/us/fips-state.js.map +1 -1
  688. package/out/us/synthesizers/intersection.d.ts.map +1 -0
  689. package/out/{synthesizers → us/synthesizers}/intersection.js +13 -9
  690. package/out/us/synthesizers/intersection.js.map +1 -0
  691. package/out/{synthesizers → us/synthesizers}/street.d.ts +3 -2
  692. package/out/us/synthesizers/street.d.ts.map +1 -0
  693. package/out/{synthesizers → us/synthesizers}/street.js +12 -12
  694. package/out/us/synthesizers/street.js.map +1 -0
  695. package/out/us/tools/fetch/imls-pls.js +1 -1
  696. package/out/us/tools/fetch/imls-pls.js.map +1 -1
  697. package/out/us/tools/fetch/nad.d.ts +6 -6
  698. package/out/us/tools/fetch/nad.js +1 -1
  699. package/out/us/tools/fetch/nad.js.map +1 -1
  700. package/out/us/tools/fetch/nppes.js +3 -3
  701. package/out/us/tools/fetch/nppes.js.map +1 -1
  702. package/out/us/tools/fetch/state/hi-schools.d.ts +2 -1
  703. package/out/us/tools/fetch/state/hi-schools.d.ts.map +1 -1
  704. package/out/us/tools/fetch/state/hi-schools.js +1 -1
  705. package/out/us/tools/fetch/state/hi-schools.js.map +1 -1
  706. package/out/us/tools/fetch/tiger-full.js +1 -1
  707. package/out/us/tools/fetch/tiger-full.js.map +1 -1
  708. package/out/utils/align.d.ts +5 -3
  709. package/out/utils/align.d.ts.map +1 -1
  710. package/out/utils/align.js +5 -5
  711. package/out/utils/align.js.map +1 -1
  712. package/out/utils/golden.js +2 -2
  713. package/out/utils/golden.js.map +1 -1
  714. package/out/utils/license.d.ts +3 -3
  715. package/out/utils/license.d.ts.map +1 -1
  716. package/out/utils/license.js.map +1 -1
  717. package/out/utils/split.d.ts +1 -1
  718. package/out/utils/split.d.ts.map +1 -1
  719. package/out/utils/split.js +18 -14
  720. package/out/utils/split.js.map +1 -1
  721. package/out/utils/tokenize.d.ts +3 -20
  722. package/out/utils/tokenize.d.ts.map +1 -1
  723. package/out/utils/tokenize.js.map +1 -1
  724. package/out/utils/wof-json.js +3 -3
  725. package/out/utils/wof-json.js.map +1 -1
  726. package/package.json +18 -27
  727. package/lib/tools.ts +0 -31
  728. package/out/synthesizers/intersection.d.ts.map +0 -1
  729. package/out/synthesizers/intersection.js.map +0 -1
  730. package/out/synthesizers/street.d.ts.map +0 -1
  731. package/out/synthesizers/street.js.map +0 -1
  732. package/out/tools.d.ts +0 -31
  733. package/out/tools.d.ts.map +0 -1
  734. package/out/tools.js +0 -31
  735. package/out/tools.js.map +0 -1
  736. /package/out/{synthesizers → us/synthesizers}/intersection.d.ts +0 -0
@@ -31,7 +31,9 @@
31
31
  * ```
32
32
  */
33
33
 
34
- import { pathExists } from "@mailwoman/core/fs/readers"
34
+ import { layoutForCountry, layoutPrintsPostcodeBeforeLocality } from "@mailwoman/codex/address/layouts"
35
+ import { matchCountry } from "@mailwoman/codex/country"
36
+ import { pathExists } from "@mailwoman/core/fs/readers/stat"
35
37
  import { copyFileTo, makeDirectories, writeLocalJSONFile } from "@mailwoman/core/fs/writers"
36
38
  import { sha256File } from "@mailwoman/core/hash"
37
39
  import { stringifyJSON } from "@mailwoman/core/json"
@@ -78,13 +80,13 @@ export interface PromoteGoldenOptions {
78
80
  /**
79
81
  * Previous version to forward-copy + dedup against.
80
82
  *
81
- * Default `v0.1.0`.
83
+ * @defaultValue `v0.1.0`
82
84
  */
83
85
  prior?: string
84
86
  /**
85
87
  * Golden dir root.
86
88
  *
87
- * Default `data/eval/golden`.
89
+ * @defaultValue `data/eval/golden`
88
90
  */
89
91
  goldenRoot?: PathBuilderLike
90
92
  /**
@@ -113,16 +115,18 @@ function isComponentsGlued(entry: GoldenEntry): boolean {
113
115
  }
114
116
 
115
117
  /**
116
- * Heuristic: in US/UK conventions, postcode goes at the END of the address.
118
+ * Heuristic: where the country's layout prints the postcode after the locality, a postcode in the
119
+ * first third of a multi-component raw with 4+ components means the LLM reordered the address.
117
120
  *
118
- * If postcode appears in the first third of a multi-component raw and there are 4+
119
- * components, the LLM probably over-aggressively reordered.
120
- * FR is exempt (postcode often precedes locality there).
121
+ * A country whose layout prints the postcode before the locality (FR, DE) is exempt,
122
+ * as is a country with no layout or a layout that prints one of the two.
121
123
  */
122
124
  function isPostcodeBadlyLeading(entry: GoldenEntry): boolean {
123
125
  if (Object.keys(entry.components).length < MIN_PROMOTABLE_COMPONENTS) return false
124
126
 
125
- if (entry.country === "FR" || entry.country === "France") return false
127
+ const layout = layoutForCountry(matchCountry(entry.country)?.iso2 ?? entry.country)
128
+
129
+ if (!layout || layoutPrintsPostcodeBeforeLocality(layout) !== false) return false
126
130
  const postcode = entry.components.postcode
127
131
 
128
132
  if (!postcode) return false
@@ -5,7 +5,8 @@
5
5
  * @file Rewrites a golden-set directory and renders its review deck.
6
6
  */
7
7
 
8
- import { pathExists, readLocalBuffer, readLocalTextFile } from "@mailwoman/core/fs/readers"
8
+ import { readLocalBuffer, readLocalTextFile } from "@mailwoman/core/fs/readers"
9
+ import { pathExists } from "@mailwoman/core/fs/readers/stat"
9
10
  import {
10
11
  makeDirectories,
11
12
  writeLocalFile,
@@ -65,13 +66,13 @@ export interface RelabelGoldenOptions {
65
66
  /**
66
67
  * Review-deck jsonl path.
67
68
  *
68
- * Default `<output>/review-deck.jsonl`.
69
+ * @defaultValue `<output>/review-deck.jsonl`
69
70
  */
70
71
  deck?: string
71
72
  /**
72
73
  * Parent version label recorded in the manifest.
73
74
  *
74
- * Default: the input dir's basename.
75
+ * @defaultValue the input dir's basename.
75
76
  */
76
77
  parentLabel?: string
77
78
  /**
@@ -81,13 +82,13 @@ export interface RelabelGoldenOptions {
81
82
  /**
82
83
  * Passed through to {@linkcode relabelGoldenStreetRow}.
83
84
  *
84
- * Default true.
85
+ * @defaultValue `true`
85
86
  */
86
87
  splitPrefix?: boolean
87
88
  }
88
89
 
89
90
  /**
90
- * Aggregate outcome for a whole golden version.
91
+ * Aggregate result for a whole golden version.
91
92
  */
92
93
  export interface RelabelGoldenReport {
93
94
  files: Record<
@@ -251,7 +252,7 @@ export async function relabelGoldenDirectory(
251
252
  parent: options.parentLabel ?? basename(input),
252
253
  generated_at: new Date().toISOString(),
253
254
  tool: "corpus/src/tools/golden-relabel-street.ts (mailwoman corpus golden-relabel)",
254
- ...(options.commit ? { commit: options.commit } : {}),
255
+ commit: options.commit || null,
255
256
  convention: {
256
257
  street_convention: { US: "split", "*": "folded" },
257
258
  declared:
@@ -29,7 +29,7 @@ export interface GoldenStreetRow {
29
29
  }
30
30
 
31
31
  /**
32
- * The relabel outcome class for one row.
32
+ * The relabel result class for one row.
33
33
  */
34
34
  export type GoldenRelabelClass =
35
35
  | "split-suffix"
@@ -140,8 +140,9 @@ export interface RelabelStreetRowOptions {
140
140
  /**
141
141
  * Whether to also move a leading directional into `street_prefix`.
142
142
  *
143
- * Defaults to `true`; without it `N Desmet Avenue` grades as `street: "N Desmet"`
144
- * against a model that emits a prefix.
143
+ * Without it `N Desmet Avenue` grades as `street: "N Desmet"` against a model that emits a prefix.
144
+ *
145
+ * @defaultValue `true`
145
146
  */
146
147
  splitPrefix?: boolean
147
148
  }
@@ -178,9 +179,9 @@ export function relabelGoldenStreetRow(
178
179
  const flags: GoldenRelabelFlag[] = []
179
180
  let rowClass: GoldenRelabelClass
180
181
  let name = street
181
- let suffix: string | undefined
182
+ let suffix: string | null = null
182
183
  let suffixGap = ""
183
- let canonical: USStreetSuffix | undefined
184
+ let canonical: USStreetSuffix | null = null
184
185
 
185
186
  const split = splitLastWord(street)
186
187
 
@@ -215,7 +216,7 @@ export function relabelGoldenStreetRow(
215
216
  }
216
217
  }
217
218
 
218
- let prefix: string | undefined
219
+ let prefix: string | null = null
219
220
  let prefixGap = ""
220
221
 
221
222
  if (splitPrefix && !row.components.street_prefix) {
@@ -30,7 +30,7 @@
30
30
  */
31
31
 
32
32
  import { ByteFormatter } from "@mailwoman/core/fs/formatters"
33
- import { tryStat, pathExists } from "@mailwoman/core/fs/readers"
33
+ import { tryStat, pathExists } from "@mailwoman/core/fs/readers/stat"
34
34
  import { makeDirectories, writeLocalJSONFile } from "@mailwoman/core/fs/writers"
35
35
  import type { SQLInputValue } from "@mailwoman/sqlite/client"
36
36
  import type { Database } from "@mailwoman/sqlite/database-schema"
@@ -99,7 +99,7 @@ function inferColumnType(samples: (string | null)[]): ColumnInfo {
99
99
  let textCount = 0
100
100
 
101
101
  for (const s of samples) {
102
- if (s === null) {
102
+ if (!s) {
103
103
  nullCount++
104
104
 
105
105
  continue
@@ -263,7 +263,7 @@ async function runIngest(opts: IngestOptions): Promise<void> {
263
263
  const values = fields.map((f, i) => {
264
264
  const v = normalizeField(f)
265
265
 
266
- if (v === null) return null
266
+ if (!v) return null
267
267
  const col = columns[i]
268
268
 
269
269
  if (col?.type === "INTEGER" && /^-?\d+$/.test(v)) return Number.parseInt(v, 10)
@@ -55,7 +55,7 @@ export interface JSONLToParquetOptions {
55
55
  /**
56
56
  * Parquet row-group size.
57
57
  *
58
- * Default 50000.
58
+ * @defaultValue `50000`
59
59
  */
60
60
  rowGroupSize?: number
61
61
  }
@@ -167,27 +167,32 @@ export interface LintRecipeVocabOptions {
167
167
  recipeOutputPath: string
168
168
  /**
169
169
  * Base corpus version.
170
- * Default `v0.5.0`.
170
+ *
171
+ * @defaultValue `v0.5.0`
171
172
  */
172
173
  baseVersion?: string
173
174
  /**
174
175
  * Base corpus root.
175
- * Default `$MAILWOMAN_DATA_ROOT/corpus/versioned`.
176
+ *
177
+ * @defaultValue `$MAILWOMAN_DATA_ROOT/corpus/versioned`
176
178
  */
177
179
  baseRoot?: string
178
180
  /**
179
181
  * Base-majority confidence floor for a contradiction.
180
- * Default 0.7.
182
+ *
183
+ * @defaultValue `0.7`
181
184
  */
182
185
  threshold?: number
183
186
  /**
184
187
  * Minimum base support to judge a token.
185
- * Default 50.
188
+ *
189
+ * @defaultValue `50`
186
190
  */
187
191
  minCount?: number
188
192
  /**
189
193
  * Fraction of base parts to scan, a proportional per-source sample below 1.0.
190
- * Default 1.0.
194
+ *
195
+ * @defaultValue `1.0`
191
196
  */
192
197
  fraction?: number
193
198
  }
@@ -73,7 +73,7 @@ export interface LintRecipeOutputOptions {
73
73
  /**
74
74
  * Anti-pattern rules JSON.
75
75
  *
76
- * Default: the `lint-rules.json` beside this module.
76
+ * @defaultValue the `lint-rules.json` beside this module.
77
77
  */
78
78
  rulesPath?: string
79
79
  /**
@@ -173,16 +173,26 @@ function majorityLabel(distribution: Map<string, number> | Record<string, number
173
173
  export interface LintFlag {
174
174
  check: string
175
175
  severity: "error" | "warn"
176
- token?: string
177
- bigram?: string
178
- outputLabel?: string
179
- corpusLabel?: string
180
- outputCount?: number
181
- corpusCount?: number
176
+ token: string | null
177
+ bigram: string | null
178
+ outputLabel: string | null
179
+ corpusLabel: string | null
180
+ outputCount: number | null
181
+ corpusCount: number | null
182
182
  detail: string
183
- ruleID?: string
183
+ ruleID: string | null
184
184
  }
185
185
 
186
+ const EMPTY_FLAG_FIELDS = {
187
+ token: null,
188
+ bigram: null,
189
+ outputLabel: null,
190
+ corpusLabel: null,
191
+ outputCount: null,
192
+ corpusCount: null,
193
+ ruleID: null,
194
+ } as const satisfies Partial<LintFlag>
195
+
186
196
  /**
187
197
  * Findings summary returned by {@linkcode lintRecipeOutput}.
188
198
  */
@@ -213,6 +223,7 @@ function checkDistributionOutliers(output: RecipeOutputStats, corpus: CorpusStat
213
223
  corpusMaj.total >= CORPUS_MIN_COUNT
214
224
  ) {
215
225
  flags.push({
226
+ ...EMPTY_FLAG_FIELDS,
216
227
  check: "distribution-outlier",
217
228
  severity: "error",
218
229
  token,
@@ -244,6 +255,7 @@ function checkLabelVacuum(output: RecipeOutputStats, corpus: CorpusStats): LintF
244
255
 
245
256
  if (corpusLabelMap[label] === undefined || corpusLabelMap[label] === 0) {
246
257
  flags.push({
258
+ ...EMPTY_FLAG_FIELDS,
247
259
  check: "label-vacuum",
248
260
  severity: "error",
249
261
  token,
@@ -279,6 +291,7 @@ function checkBigramCollisions(output: RecipeOutputStats, corpus: CorpusStats):
279
291
  const renderCorpusLabel = corpusMaj.label.split(SEP).join(" → ")
280
292
 
281
293
  flags.push({
294
+ ...EMPTY_FLAG_FIELDS,
282
295
  check: "bigram-collision",
283
296
  severity: "error",
284
297
  bigram: renderBigram,
@@ -309,6 +322,7 @@ function checkRules(output: RecipeOutputStats, rulesFile: LintRulesFile): LintFl
309
322
  for (const [label, count] of labelMap) {
310
323
  if (rule.forbidden_labels.includes(label) && count >= FORBIDDEN_LABEL_REPORT_THRESHOLD) {
311
324
  flags.push({
325
+ ...EMPTY_FLAG_FIELDS,
312
326
  check: "anti-pattern-rule",
313
327
  severity: rule.severity,
314
328
  ruleID: rule.id,
@@ -330,6 +344,7 @@ function checkSanity(output: RecipeOutputStats): LintFlag[] {
330
344
 
331
345
  if (output.truncatedRows > 0) {
332
346
  flags.push({
347
+ ...EMPTY_FLAG_FIELDS,
333
348
  check: "truncated-rows",
334
349
  severity: "error",
335
350
  detail: `${output.truncatedRows} row(s) have tokens.length !== labels.length. Pipeline alignment bug.`,
@@ -340,6 +355,7 @@ function checkSanity(output: RecipeOutputStats): LintFlag[] {
340
355
 
341
356
  if (allORatio >= ALL_O_RATIO_CEILING) {
342
357
  flags.push({
358
+ ...EMPTY_FLAG_FIELDS,
343
359
  check: "all-O-output",
344
360
  severity: "warn",
345
361
  detail: `${output.allORows}/${output.rowCount} rows (${(allORatio * 100).toFixed(0)}%) are entirely O-labeled. The recipe output contributes no signal.`,
@@ -349,6 +365,8 @@ function checkSanity(output: RecipeOutputStats): LintFlag[] {
349
365
  return flags
350
366
  }
351
367
 
368
+ // repo-health-ignore private-name-shadows-export -- renders a recipe-lint report.
369
+ // The dossier export renders a building dossier, an unrelated document.
352
370
  function renderReport(
353
371
  opts: { outputPath: string; statsPath: string; rulesPath: string },
354
372
  output: RecipeOutputStats,
@@ -17,7 +17,8 @@
17
17
  */
18
18
 
19
19
  import { delimitedSource } from "@mailwoman/core/fs/delimited"
20
- import { pathExists, readLocalJSONFile } from "@mailwoman/core/fs/readers"
20
+ import { readLocalJSONFile } from "@mailwoman/core/fs/readers"
21
+ import { pathExists } from "@mailwoman/core/fs/readers/stat"
21
22
  import { writeLocalJSONFile, writeLocalTextFile, makeDirectories } from "@mailwoman/core/fs/writers"
22
23
  import { PathBuilder, type PathBuilderLike } from "path-ts"
23
24
  import { JSONSpliterator } from "spliterator"
@@ -33,11 +34,11 @@ export interface KryptoniteOverlayOptions {
33
34
  baseManifest: string
34
35
  outDir: PathBuilderLike
35
36
  /**
36
- * Default `"0.4.0"`.
37
+ * @defaultValue `"0.4.0"`
37
38
  */
38
39
  corpusVersion?: string
39
40
  /**
40
- * Default `"deepseek-kryptonite"`.
41
+ * @defaultValue `"deepseek-kryptonite"`
41
42
  */
42
43
  source?: string
43
44
  }
@@ -7,7 +7,8 @@
7
7
  */
8
8
 
9
9
  import { dataRootPath } from "@mailwoman/core/data-root"
10
- import { readLocalBuffer, readLocalJSONFile, statPath } from "@mailwoman/core/fs/readers"
10
+ import { readLocalBuffer, readLocalJSONFile } from "@mailwoman/core/fs/readers"
11
+ import { statPath } from "@mailwoman/core/fs/readers/stat"
11
12
  import { writeLocalJSONFile } from "@mailwoman/core/fs/writers"
12
13
  import { sha256Hex } from "@mailwoman/core/hash"
13
14
  import { stringifyJSON } from "@mailwoman/core/json"
@@ -91,10 +92,11 @@ export interface OverlayFile {
91
92
  source: string
92
93
  /**
93
94
  * The split that the file's rows belong to.
94
- * The default is `train`.
95
95
  *
96
96
  * `val` and `test` are allowed only for files that `splitOverlaySlice` returned,
97
97
  * so that the holdout policy chooses held-out rows.
98
+ *
99
+ * @defaultValue `train`
98
100
  */
99
101
  split?: SplitName
100
102
  }
@@ -32,7 +32,8 @@ export interface MergeSourceOptions {
32
32
  output: PathBuilderLike
33
33
  /**
34
34
  * The number of rows held in memory while shuffling.
35
- * It defaults to the corpus writer's window.
35
+ *
36
+ * @defaultValue the corpus writer's window.
36
37
  */
37
38
  windowSize?: number
38
39
  /**
@@ -63,7 +63,7 @@ export function holdoutComponents(row: SpannedRow, index: number, input: string)
63
63
  const components: Record<string, string> = {}
64
64
 
65
65
  for (const [span, tag] of tags.entries()) {
66
- if (!HOLDOUT_TAGS.has(tag) || components[tag] !== undefined) continue
66
+ if (!HOLDOUT_TAGS.has(tag) || components[tag]) continue
67
67
 
68
68
  components[tag] = raw.slice(starts[span]!, ends[span]!)
69
69
  }
@@ -83,7 +83,7 @@ export interface SplitSliceOptions {
83
83
  */
84
84
  outputDir: PathBuilderLike
85
85
  /**
86
- * Defaults to `defaultHoldouts()`, which is the policy the base build applies.
86
+ * @defaultValue `defaultHoldouts()`, which is the policy the base build applies.
87
87
  */
88
88
  holdouts?: Record<string, CountryHoldout>
89
89
  }
@@ -30,7 +30,8 @@
30
30
 
31
31
  import { dataRootPath } from "@mailwoman/core/data-root"
32
32
  import { delimitedSource } from "@mailwoman/core/fs/delimited"
33
- import { pathExists, readLocalJSONFile, tryStat } from "@mailwoman/core/fs/readers"
33
+ import { readLocalJSONFile } from "@mailwoman/core/fs/readers"
34
+ import { pathExists, tryStat } from "@mailwoman/core/fs/readers/stat"
34
35
  import { writeLocalJSONFile, writeLocalTextFile, makeDirectories } from "@mailwoman/core/fs/writers"
35
36
  import { sha256File } from "@mailwoman/core/hash"
36
37
  import { PathBuilder, type PathBuilderLike } from "path-ts"
@@ -48,20 +49,21 @@ export interface TranslitOverlayOptions {
48
49
  baseManifest: string
49
50
  outDir: PathBuilderLike
50
51
  /**
51
- * Default `"0.4.0"`.
52
+ * @defaultValue `"0.4.0"`
52
53
  */
53
54
  corpusVersion?: string
54
55
  /**
55
- * Default `"/data/"`.
56
+ * @defaultValue `"/data/"`
56
57
  */
57
58
  canonicalPathPrefix?: string
58
59
  /**
59
60
  * Prefix currently used in the base manifest's file paths, to be rewritten
60
61
  * to {@link TranslitOverlayOptions.canonicalPathPrefix}.
61
62
  *
62
- * Defaults to `dataRootPath()` with a trailing slash — the root that wrote those paths.
63
63
  * Pass it explicitly when translating a manifest generated under a different
64
64
  * `$MAILWOMAN_DATA_ROOT` than the one you are running with.
65
+ *
66
+ * @defaultValue `dataRootPath()` with a trailing slash — the root that wrote those paths.
65
67
  */
66
68
  legacyPathPrefix?: string
67
69
  }
@@ -13,7 +13,7 @@
13
13
  import { DatabaseClient } from "@mailwoman/sqlite/client"
14
14
  import type { PathBuilderLike } from "path-ts"
15
15
 
16
- import type { SubVenueHarvestRow } from "#tools/sub/venue/lexicon"
16
+ import type { SubVenueHarvestRow } from "#subvenue/harvest"
17
17
 
18
18
  /**
19
19
  * Overture categories selected for sub-venue designator evidence.
@@ -11,7 +11,7 @@
11
11
  import { officialLanguagesAlpha3, regionLanguagesAlpha3 } from "@mailwoman/codex/country"
12
12
  import { foldName } from "@mailwoman/codex/normalize"
13
13
  import { dataRootPath } from "@mailwoman/core/data-root"
14
- import { assertPathExists } from "@mailwoman/core/fs/readers"
14
+ import { assertPathExists } from "@mailwoman/core/fs/readers/stat"
15
15
  import { wofDatabasePath } from "@mailwoman/resolver-wof-sqlite/paths"
16
16
  import type { WOFDatabase } from "@mailwoman/resolver-wof-sqlite/schema"
17
17
  import { DatabaseClient } from "@mailwoman/sqlite/client"
@@ -32,7 +32,7 @@ export interface PostcodeTriple {
32
32
  *
33
33
  * A recipe output whose every row begins with the locality teaches that the first segment is the locality.
34
34
  */
35
- dependentLocality?: string
35
+ dependentLocality: string | null
36
36
  locality: string
37
37
  region: string
38
38
  country: string
@@ -288,6 +288,7 @@ export async function readTriplesFromParentJoin(
288
288
  for (const region of surfaces.region(cc, row.region_id, row.region)) {
289
289
  out.push({
290
290
  postcode: row.postcode,
291
+ dependentLocality: null,
291
292
  locality,
292
293
  region,
293
294
  country: row.country ?? "",
@@ -429,7 +430,7 @@ export async function readPairsFromAdmin(
429
430
  // The recipe drops that pair, so filtering it here keeps the country budget for rows that remain.
430
431
  if (region === locality) continue
431
432
 
432
- out.push({ locality, region, country: row.country ?? "", cc, locale })
433
+ out.push({ dependentLocality: null, locality, region, country: row.country ?? "", cc, locale })
433
434
  }
434
435
  }
435
436
  }
@@ -534,7 +535,7 @@ export async function readTriplesFromGeonames(
534
535
 
535
536
  out.push({
536
537
  postcode,
537
- ...(dep ? { dependentLocality: dep } : {}),
538
+ dependentLocality: dep || null,
538
539
  locality,
539
540
  region,
540
541
  country: countryName,
@@ -8,7 +8,8 @@
8
8
  * The second input is mostly not input: the eight global discovery lookups repeat once per jurisdiction and are dropped, because they name a lookup rather than a national source.
9
9
  */
10
10
 
11
- import { pathExists, readLocalJSONFile } from "@mailwoman/core/fs/readers"
11
+ import { readLocalJSONFile } from "@mailwoman/core/fs/readers"
12
+ import { pathExists } from "@mailwoman/core/fs/readers/stat"
12
13
  import { writeLocalFile } from "@mailwoman/core/fs/writers"
13
14
  import { prettyJSON, stringifyJSON } from "@mailwoman/core/json"
14
15
  import type { PathBuilderLike } from "path-ts"
@@ -262,7 +263,7 @@ export interface BuildSourceRegisterOptions {
262
263
  sourceVersion?: string
263
264
  }
264
265
 
265
- function required(value: string | undefined, field: string, row: number): string {
266
+ function required(value: string | null | undefined, field: string, row: number): string {
266
267
  const trimmed = (value ?? "").trim()
267
268
 
268
269
  if (!trimmed) throw new Error(`row ${row}: ${field} is empty, and the register has nowhere to put an unnamed value`)
@@ -543,17 +544,17 @@ async function readSources(
543
544
  const UNRESOLVED_COLUMN_PLACEHOLDERS: ReadonlySet<string> = new Set(["varies", "country-specific", "unknown", "n/a"])
544
545
 
545
546
  /**
546
- * A column's value, or `undefined` when the research pass left it unresolved.
547
+ * A column's value, or `null` when the research pass left it unresolved.
547
548
  *
548
549
  * Every value outside the placeholder set is returned, so a value somebody fills in
549
550
  * later reaches the register or fails the build rather than being lost.
550
551
  */
551
- export function readUnresolvedColumn(value: string | undefined, column: string, row: number): string | undefined {
552
+ export function readUnresolvedColumn(value: string | null | undefined, column: string, row: number): string | null {
552
553
  const trimmed = (value ?? "").trim()
553
554
 
554
- if (!trimmed) return undefined
555
+ if (!trimmed) return null
555
556
 
556
- if (UNRESOLVED_COLUMN_PLACEHOLDERS.has(trimmed.toLowerCase())) return undefined
557
+ if (UNRESOLVED_COLUMN_PLACEHOLDERS.has(trimmed.toLowerCase())) return null
557
558
 
558
559
  if (column === "address_role" && !ADDRESS_ROLE_BY_NAME[trimmed.toLowerCase()]) {
559
560
  throw new Error(
@@ -590,8 +591,8 @@ type RecordedDecision = Omit<ElectedLicense, "licenseID"> | Omit<RefusedLicense,
590
591
  * One publisher can hold a license over several jurisdictions, and the register
591
592
  * scopes a decision to one publisher in one jurisdiction, so reading that publisher's
592
593
  * terms once produces several decisions with the same body.
593
- * Naming the shared body keeps each license id's own decision while the prose behind
594
- * it has one home, so nine copies cannot drift apart under later editing.
594
+ * A shared body keeps each license id's own decision while the prose behind it has one home.
595
+ * Nine copies cannot drift apart under later editing.
595
596
  */
596
597
  interface SharedDecisionReference {
597
598
  sameAs: string
@@ -613,7 +614,8 @@ function isSharedReference(value: RecordedDecision | SharedDecisionReference): v
613
614
  }
614
615
 
615
616
  /**
616
- * The source fields a review resolves, which the research CSV records as placeholders.
617
+ * The source fields a review resolves.
618
+ * The research CSV records placeholders for them.
617
619
  *
618
620
  * The CSV holds the research pass's findings and is a working document of that pass,
619
621
  * so a later review records its own findings here rather than by editing the pass's record.
@@ -652,7 +654,8 @@ async function readSourceResolutions(
652
654
  *
653
655
  * @throws When a resolution's source id is absent from the register.
654
656
  * Such an entry is a typo or a source that has been removed.
655
- * Keeping it silently would leave a review whose fields reach no row, which reads as work already done.
657
+ * An entry kept silently would leave a review whose fields reach no row.
658
+ * That reads as work already done.
656
659
  */
657
660
  export function applySourceResolutions(
658
661
  sources: readonly AddressSourceRecord[],
@@ -683,7 +686,7 @@ export function applySourceResolutions(
683
686
  * because reading it as empty would silently drop somebody's recorded work.
684
687
  * This function validates no decision it reads, because `auditAddressSourceRegister` already does.
685
688
  */
686
- async function readLicenseDecisions(decisionsPath: PathBuilderLike | undefined): Promise<Map<string, LicenseDecision>> {
689
+ async function readLicenseDecisions(decisionsPath: PathBuilderLike | null): Promise<Map<string, LicenseDecision>> {
687
690
  if (!decisionsPath || !(await pathExists(decisionsPath))) return new Map()
688
691
 
689
692
  return resolveRecordedDecisions(await readLocalJSONFile<LicenseDecisionsFile>(decisionsPath))
@@ -697,8 +700,8 @@ async function readLicenseDecisions(decisionsPath: PathBuilderLike | undefined):
697
700
  * function checks only that the file declares a reading for each reference.
698
701
  *
699
702
  * @throws When a `sameAs` reads a reading absent from `sharedReadings`.
700
- * Such a reference would otherwise produce a decision carrying no terms, which the audit
701
- * would report as an unknown review state rather than as the typo it is.
703
+ * Such a reference would otherwise produce a decision holding no terms.
704
+ * The audit would report that as an unknown review state rather than as the typo it is.
702
705
  */
703
706
  export function resolveRecordedDecisions(file: LicenseDecisionsFile): Map<string, LicenseDecision> {
704
707
  const shared = file.sharedReadings ?? {}
@@ -764,7 +767,7 @@ export async function buildSourceRegister(options: BuildSourceRegisterOptions):
764
767
  })
765
768
  .toSorted((left, right) => left.licenseID.localeCompare(right.licenseID))
766
769
 
767
- const licenses = applyLicenseDecisions(generated, await readLicenseDecisions(options.decisionsPath))
770
+ const licenses = applyLicenseDecisions(generated, await readLicenseDecisions(options.decisionsPath ?? null))
768
771
 
769
772
  const register: AddressSourceRegister = {
770
773
  registerID: "address-source-register",
@@ -6,7 +6,8 @@
6
6
  * @file Builds the sub-venue designator lexicon from Wikidata, OSM and Overture fetch outputs.
7
7
  */
8
8
 
9
- import { readLocalJSONFile, statPath } from "@mailwoman/core/fs/readers"
9
+ import { readLocalJSONFile } from "@mailwoman/core/fs/readers"
10
+ import { statPath } from "@mailwoman/core/fs/readers/stat"
10
11
  import { writeLocalFile } from "@mailwoman/core/fs/writers"
11
12
  import { prettyJSON } from "@mailwoman/core/json"
12
13
  import { isoDate } from "@mailwoman/core/utils"
@@ -32,12 +33,6 @@ import {
32
33
  import { deriveHeadNounSurfaces } from "#tools/sub/venue/head-nouns"
33
34
  import { surfacesFromWikidata } from "#tools/sub/venue/wikidata"
34
35
 
35
- export * from "#subvenue/harvest"
36
- export * from "#tools/sub/venue/head-nouns"
37
- export * from "#subvenue/surfaces"
38
- export * from "#subvenue/table"
39
- export * from "#tools/sub/venue/wikidata"
40
-
41
36
  /**
42
37
  * Returns a copy of the surfaces with `curated: true` set on each surface that a promotion matches.
43
38
  *
@@ -115,9 +110,10 @@ export interface BuildSubVenueLexiconInput {
115
110
  */
116
111
  sources: readonly SubVenueLexiconSource[]
117
112
  /**
118
- * Defaults to {@link SUBVENUE_PROMOTIONS}.
119
113
  *
120
114
  * An empty array builds the uncurated table.
115
+ *
116
+ * @defaultValue {@linkcode SUBVENUE_PROMOTIONS}
121
117
  */
122
118
  promotions?: readonly SubVenuePromotion[]
123
119
  }
@@ -25,7 +25,7 @@
25
25
  */
26
26
 
27
27
  import { BYTES_PER_KIB } from "@mailwoman/core/fs/formatters"
28
- import { pathExists } from "@mailwoman/core/fs/readers"
28
+ import { pathExists } from "@mailwoman/core/fs/readers/stat"
29
29
  import { makeDirectories } from "@mailwoman/core/fs/writers"
30
30
  import { sha256File } from "@mailwoman/core/hash"
31
31
  import { sleep } from "@mailwoman/core/utils/sleep"
@@ -84,14 +84,14 @@ async function listBulkDatasets(): Promise<Dataset[]> {
84
84
  /**
85
85
  * The `/od/file?oid=…` link a dataset's detail page hands its download dialog.
86
86
  */
87
- async function fileURLFor(dataset: Dataset): Promise<string | undefined> {
87
+ async function fileURLFor(dataset: Dataset): Promise<string | null> {
88
88
  const res = await fetch(`${PORTAL}${dataset.detailPath}`, { headers: { accept: "text/html" } })
89
89
 
90
- if (!res.ok) return undefined
90
+ if (!res.ok) return null
91
91
  const html = await res.text()
92
92
  const path = /showDialog\('(\/od\/file\?oid=[^']+)'\)/.exec(html)?.[1]
93
93
 
94
- return path ? `${PORTAL}${path}` : undefined
94
+ return path ? `${PORTAL}${path}` : null
95
95
  }
96
96
 
97
97
  export async function fetchGCISTW(options: FetchGCISTWOptions, report?: (line: string) => void): Promise<FetchSummary> {