@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
@@ -309,6 +309,10 @@ const STATE_ABBR_TO_NAME: Record<string, string> = Object.fromEntries(
309
309
  * Expand state abbreviation to full name.
310
310
  */
311
311
  export const stateExpand: Augmentation = (row) => {
312
+ // country-branch: the state, directional, street-suffix, unit and ZIP+4
313
+ // augmentations below read US vocabulary tables.
314
+ // Per-country abbreviation tables in the codex would let
315
+ // `defaultAugmentationsForCountry` serve every country.
312
316
  if (row.country !== "US") return null
313
317
  const region = row.components.region
314
318
 
@@ -330,6 +334,7 @@ export const stateExpand: Augmentation = (row) => {
330
334
  * Abbreviate full state name to alpha-2.
331
335
  */
332
336
  export const stateAbbreviate: Augmentation = (row) => {
337
+ // country-branch: see `stateExpand`.
333
338
  if (row.country !== "US") return null
334
339
  const region = row.components.region
335
340
 
@@ -365,6 +370,7 @@ const DIRECTIONAL_ABBR_TO_FULL: Record<string, string> = Object.fromEntries(
365
370
  * Expand directional abbreviations.
366
371
  */
367
372
  export const directionalExpand: Augmentation = (row) => {
373
+ // country-branch: see `stateExpand`.
368
374
  if (row.country !== "US") return null
369
375
  const tagsToCheck: ComponentTag[] = ["street", "street_suffix", "street_prefix"]
370
376
  let changed = false
@@ -393,6 +399,7 @@ export const directionalExpand: Augmentation = (row) => {
393
399
  * Abbreviate directional words.
394
400
  */
395
401
  export const directionalAbbreviate: Augmentation = (row) => {
402
+ // country-branch: see `stateExpand`.
396
403
  if (row.country !== "US") return null
397
404
  const tagsToCheck: ComponentTag[] = ["street", "street_suffix", "street_prefix"]
398
405
  let changed = false
@@ -425,6 +432,7 @@ export const directionalAbbreviate: Augmentation = (row) => {
425
432
  * Abbreviate trailing US street suffix.
426
433
  */
427
434
  export const streetSuffixAbbreviate: Augmentation = (row) => {
435
+ // country-branch: see `stateExpand`.
428
436
  if (row.country !== "US") return null
429
437
  const street = row.components.street
430
438
 
@@ -454,6 +462,7 @@ export const streetSuffixAbbreviate: Augmentation = (row) => {
454
462
  * Expand trailing US street suffix.
455
463
  */
456
464
  export const streetSuffixExpand: Augmentation = (row) => {
465
+ // country-branch: see `stateExpand`.
457
466
  if (row.country !== "US") return null
458
467
  const street = row.components.street
459
468
 
@@ -482,6 +491,7 @@ export const streetSuffixExpand: Augmentation = (row) => {
482
491
  * Abbreviate leading US unit designator.
483
492
  */
484
493
  export const unitDesignatorAbbreviate: Augmentation = (row) => {
494
+ // country-branch: see `stateExpand`.
485
495
  if (row.country !== "US") return null
486
496
  const unit = row.components.unit
487
497
 
@@ -511,6 +521,7 @@ export const unitDesignatorAbbreviate: Augmentation = (row) => {
511
521
  * Expand leading US unit designator.
512
522
  */
513
523
  export const unitDesignatorExpand: Augmentation = (row) => {
524
+ // country-branch: see `stateExpand`.
514
525
  if (row.country !== "US") return null
515
526
  const unit = row.components.unit
516
527
 
@@ -539,6 +550,7 @@ export const unitDesignatorExpand: Augmentation = (row) => {
539
550
  * Drop dash from ZIP+4.
540
551
  */
541
552
  export const zipPlus4DashDrop: Augmentation = (row) => {
553
+ // country-branch: see `stateExpand`.
542
554
  if (row.country !== "US") return null
543
555
  const postcode = row.components.postcode
544
556
 
@@ -557,6 +569,8 @@ export const zipPlus4DashDrop: Augmentation = (row) => {
557
569
  * Drop French street particle.
558
570
  */
559
571
  export const particleStrip: Augmentation = (row) => {
572
+ // country-branch: the particle list is French.
573
+ // A per-language particle table in the codex would replace this.
560
574
  if (row.country !== "FR") return null
561
575
  const particle = row.components.street_prefix_particle
562
576
 
@@ -604,6 +618,7 @@ export function defaultAugmentationsForCountry(country: string): readonly Augmen
604
618
  const universal = [caseUpper, caseLower, dropCommas, doubleSpace]
605
619
 
606
620
  switch (country) {
621
+ // country-branch: the US and FR augmentation lists exist because the two tier-1 locales have vocabulary tables. See `stateExpand`.
607
622
  case "US":
608
623
  return [
609
624
  ...universal,
@@ -617,6 +632,7 @@ export function defaultAugmentationsForCountry(country: string): readonly Augmen
617
632
  unitDesignatorExpand,
618
633
  zipPlus4DashDrop,
619
634
  ]
635
+ // country-branch: see the US case above.
620
636
  case "FR":
621
637
  return [...universal, accentStrip, particleStrip]
622
638
  default:
@@ -731,7 +747,8 @@ export interface ComposeAdversarialOptions {
731
747
 
732
748
  /**
733
749
  * Separator between venue and address raw.
734
- * Default `", "`.
750
+ *
751
+ * @defaultValue `", "`
735
752
  */
736
753
  separator?: string
737
754
 
@@ -799,7 +816,7 @@ export function composeAdversarialRow(
799
816
  // Shift address spans by venue + separator and prepend one venue span.
800
817
  const { span_starts: addrStarts, span_ends: addrEnds, span_tags: addrTags } = addressAligned.row
801
818
 
802
- if (addrStarts === undefined || addrEnds === undefined || addrTags === undefined) {
819
+ if (!addrStarts || !addrEnds || !addrTags) {
803
820
  throw new Error(
804
821
  `composeAdversarialRow: alignRow returned a labeled row without the span triple ` +
805
822
  `(source=${address.source}, source_id=${address.source_id}) — alignment interface violation`
package/lib/test-kit.ts CHANGED
@@ -36,7 +36,7 @@ export interface ScratchDir {
36
36
  * or a platform holding a handle open must not turn a passing assertion into a failing suite.
37
37
  */
38
38
  export function useScratchDir(slug: string): ScratchDir {
39
- let owned: TemporaryDirectory | undefined
39
+ let owned: TemporaryDirectory | null = null
40
40
 
41
41
  beforeEach(async () => {
42
42
  owned = await temporaryDirectory(`mailwoman-${slug}-`)
@@ -49,7 +49,7 @@ export function useScratchDir(slug: string): ScratchDir {
49
49
  await owned?.[Symbol.asyncDispose]()
50
50
  } catch {}
51
51
 
52
- owned = undefined
52
+ owned = null
53
53
  })
54
54
 
55
55
  return {
@@ -15,7 +15,8 @@
15
15
  * Emits warnings to stderr and the audit table to stdout. never throws on an empty corpus.
16
16
  */
17
17
 
18
- import { pathExists, readLocalJSONFile, readLocalTextFile } from "@mailwoman/core/fs/readers"
18
+ import { readLocalJSONFile, readLocalTextFile } from "@mailwoman/core/fs/readers"
19
+ import { pathExists } from "@mailwoman/core/fs/readers/stat"
19
20
  import { basename, type PathBuilderLike, resolvePathBuilder } from "path-ts"
20
21
  import { Globerator } from "spliterator/node/fs"
21
22
 
@@ -43,11 +44,12 @@ export interface AuditOpts {
43
44
  /**
44
45
  * Sample at most N parquet files per split when counting sources.
45
46
  *
46
- * Default 100 for speed.
47
47
  * Bump to read the full set on a slow run.
48
48
  *
49
49
  * The first row of each file determines its source — corpus-v0.2.0+ files are 100%
50
50
  * source-segregated, so a one-row read is authoritative.
51
+ *
52
+ * @defaultValue `100` for speed
51
53
  */
52
54
  sampleFileCount?: number
53
55
  }
@@ -134,7 +136,7 @@ function inferSourceFromFilename(filename: string): string {
134
136
  // Return "<unknown>" so the caller flags this case.
135
137
  const m = basename(filename).match(/part-([\w-]+)-\d+\.parquet$/)
136
138
 
137
- if (m && m[1] !== undefined) return m[1]
139
+ if (m && m[1]) return m[1]
138
140
 
139
141
  return "<unknown>"
140
142
  }
@@ -303,7 +305,7 @@ function formatPct(v: number | "—"): string {
303
305
 
304
306
  function printReport(
305
307
  corpusDir: PathBuilderLike,
306
- configPath: PathBuilderLike | undefined,
308
+ configPath: PathBuilderLike | null,
307
309
  stats: FileCountStats,
308
310
  rows: AuditRow[]
309
311
  ): void {
@@ -395,5 +397,5 @@ export async function audit(opts: AuditOpts): Promise<void> {
395
397
 
396
398
  const trainStats = stats.bySplit["train"] ?? {}
397
399
  const rows = buildAuditRows(trainStats, config?.sourceWeights ?? {})
398
- printReport(opts.corpusDir, opts.configPath, stats, rows)
400
+ printReport(opts.corpusDir, opts.configPath ?? null, stats, rows)
399
401
  }
@@ -37,7 +37,7 @@
37
37
  */
38
38
 
39
39
  import { ByteFormatter } from "@mailwoman/core/fs/formatters"
40
- import { statPath } from "@mailwoman/core/fs/readers"
40
+ import { statPath } from "@mailwoman/core/fs/readers/stat"
41
41
  import { writeLocalJSONFile } from "@mailwoman/core/fs/writers"
42
42
  import { stringifyJSON } from "@mailwoman/core/json"
43
43
  import { PathBuilder } from "path-ts"
@@ -10,12 +10,12 @@
10
10
  * that feed's entries point at files, and both are `<entry>` with `<link>` children.
11
11
  *
12
12
  * Parsed with `@mailwoman/core/html/elements` rather than matched with a pattern, because a feed
13
- * needs the two things a pattern handles badly. An entry's open tag carries attributes
13
+ * needs the two things a pattern handles badly. An entry's open tag holds attributes
14
14
  * (`xml:lang`), and an href escapes the ampersand between its query parameters, so a reader has to
15
15
  * keep attributes and decode entities. XML mode is required: a feed's links self-close, and HTML
16
16
  * mode leaves them open.
17
17
  *
18
- * Feed-level links are told from entry-level links by the parser rather than by position. Asking
18
+ * Feed-level links are told from entry-level links by the parser rather than by position. One request
19
19
  * for `link` and `entry` together yields a `link` only where it is not already inside an `entry`,
20
20
  * because capture runs to the outermost requested element's close.
21
21
  */
@@ -86,7 +86,8 @@ export interface AtomEntry {
86
86
  */
87
87
  export interface AtomFeed {
88
88
  /**
89
- * The feed's own links, which are the ones not inside an entry.
89
+ * The feed's own links.
90
+ * These sit outside every entry.
90
91
  */
91
92
  links: readonly AtomLink[]
92
93
  entries: readonly AtomEntry[]
@@ -100,7 +101,7 @@ function atomLinkOf(element: MarkupElement): AtomLink {
100
101
  rel: (element.attributes.rel ?? "").toLowerCase(),
101
102
  type: element.attributes.type ?? null,
102
103
  title: element.attributes.title ?? null,
103
- length: length !== undefined && /^\d+$/u.test(length) ? Number(length) : null,
104
+ length: length && /^\d+$/u.test(length) ? Number(length) : null,
104
105
  }
105
106
  }
106
107
 
@@ -118,8 +119,7 @@ function atomEntryOf(element: MarkupElement): AtomEntry {
118
119
  /**
119
120
  * Read a feed's links and entries out of its markup.
120
121
  *
121
- * Streaming rather than whole-document, because a service document may be large:
122
- * ČÚZK's lists one entry per municipality in 8,373,817 bytes, measured 2026-10-02.
122
+ * The reader streams because a service document may be large: ČÚZK's lists one entry per municipality.
123
123
  *
124
124
  * @param chunks The feed's bytes or text, in order.
125
125
  * A Node `Readable` satisfies this.
@@ -154,11 +154,11 @@ export async function* feedChunks(text: string): AsyncIterable<string> {
154
154
  }
155
155
 
156
156
  /**
157
- * The first link carrying `rel`, or `undefined` where the collection holds none.
157
+ * The first link carrying `rel`, or `null` where the collection holds none.
158
158
  *
159
- * A feed's entry commonly carries several: ČÚZK writes a `describedby` link to its ISO 19139
159
+ * A feed's entry commonly holds several: ČÚZK writes a `describedby` link to its ISO 19139
160
160
  * record beside the `alternate` link that is the data, and either would download as a dataset.
161
161
  */
162
- export function linkWithRel(links: readonly AtomLink[], rel: string): AtomLink | undefined {
163
- return links.find((link) => link.rel === rel.toLowerCase())
162
+ export function linkWithRel(links: readonly AtomLink[], rel: string): AtomLink | null {
163
+ return links.find((link) => link.rel === rel.toLowerCase()) ?? null
164
164
  }
@@ -29,7 +29,7 @@
29
29
 
30
30
  import { APIClient } from "@mailwoman/core/api"
31
31
  import { ByteFormatter } from "@mailwoman/core/fs/formatters"
32
- import { tryStat } from "@mailwoman/core/fs/readers"
32
+ import { tryStat } from "@mailwoman/core/fs/readers/stat"
33
33
  import { makeDirectories, removePathIfPresent } from "@mailwoman/core/fs/writers"
34
34
  import { listZipEntries } from "@mailwoman/core/fs/zip"
35
35
  import { sha256File } from "@mailwoman/core/hash"
@@ -57,7 +57,8 @@ export function cordisArchiveURL(programme: string): string {
57
57
  }
58
58
 
59
59
  /**
60
- * The file name one programme's archive is kept under, which is the URL's own last segment.
60
+ * The file name one programme's archive is kept under.
61
+ * It is the URL's own last segment.
61
62
  */
62
63
  export function cordisArchiveFilename(programme: string): string {
63
64
  return `cordis-${programme}projects-csv.zip`
@@ -69,7 +70,8 @@ export function cordisArchiveFilename(programme: string): string {
69
70
  export const CORDIS_LEGAL_NOTICE_URL = "https://cordis.europa.eu/about/legal"
70
71
 
71
72
  /**
72
- * The directory the archives are written under, which is the adapter's `inputPath`.
73
+ * The directory the archives are written under.
74
+ * It is the adapter's `inputPath`.
73
75
  */
74
76
  const SLUG = CORDIS_ADAPTER_ID
75
77
 
@@ -110,7 +112,7 @@ export async function readCORDISArchiveHead(
110
112
 
111
113
  return {
112
114
  lastModified: headers?.["last-modified"] ?? null,
113
- contentLength: length !== undefined && /^\d+$/u.test(length) ? Number(length) : null,
115
+ contentLength: length && /^\d+$/u.test(length) ? Number(length) : null,
114
116
  }
115
117
  }
116
118
 
@@ -120,16 +122,16 @@ export async function readCORDISArchiveHead(
120
122
  * The `HEAD` decides first, then the file's own length, then, when asked, its digest.
121
123
  */
122
124
  export async function isCORDISArchiveCurrent(
123
- recorded: CORDISArchiveManifest | undefined,
125
+ recorded: CORDISArchiveManifest | null,
124
126
  head: CORDISArchiveHead,
125
127
  path: PathBuilderLike,
126
128
  verifyDigest: boolean
127
129
  ): Promise<boolean> {
128
130
  if (!recorded) return false
129
131
 
130
- if (head.lastModified === null && head.contentLength === null) return false
132
+ if (!head.lastModified && head.contentLength === null) return false
131
133
 
132
- if (head.lastModified !== null && head.lastModified !== recorded.last_modified) return false
134
+ if (head.lastModified && head.lastModified !== recorded.last_modified) return false
133
135
 
134
136
  if (head.contentLength !== null && head.contentLength !== recorded.bytes) return false
135
137
 
@@ -150,7 +152,7 @@ export interface DownloadCORDISOptions {
150
152
  outputDir: PathBuilderLike
151
153
  /**
152
154
  * Which programmes to fetch.
153
- * Defaults to {@linkcode CORDIS_PROGRAMMES}.
155
+ * @defaultValue {@linkcode CORDIS_PROGRAMMES}
154
156
  */
155
157
  programmes?: readonly string[]
156
158
  /**
@@ -225,7 +227,7 @@ export async function downloadCORDIS(
225
227
 
226
228
  const current =
227
229
  !options.force &&
228
- (await isCORDISArchiveCurrent(recorded.get(filename), head, archivePath, options.verifyDigest ?? false))
230
+ (await isCORDISArchiveCurrent(recorded.get(filename) ?? null, head, archivePath, options.verifyDigest ?? false))
229
231
 
230
232
  if (current) {
231
233
  report?.(` ✓ ${programme} already current — no download.`)
@@ -5,7 +5,8 @@
5
5
  * @file Reads and writes corpus-source manifests.
6
6
  */
7
7
 
8
- import { pathExists, readLocalTextFile } from "@mailwoman/core/fs/readers"
8
+ import { readLocalTextFile } from "@mailwoman/core/fs/readers"
9
+ import { pathExists } from "@mailwoman/core/fs/readers/stat"
9
10
  import { openWriteStream, pipeline, Readable } from "@mailwoman/core/fs/streams"
10
11
  import { movePath, writeLocalJSONFile } from "@mailwoman/core/fs/writers"
11
12
  import { tryParsingJSON } from "@mailwoman/core/json"
@@ -46,7 +46,7 @@ export interface BaseFetchOptions {
46
46
  /**
47
47
  * Pause between transfer retries, in milliseconds.
48
48
  *
49
- * Defaults to {@linkcode DEFAULT_RETRY_DELAY_MS}.
49
+ * @defaultValue {@linkcode DEFAULT_RETRY_DELAY_MS}
50
50
  *
51
51
  * A test that exercises the failure path pays this delay once per retry in real time.
52
52
  * Measured at 20.1 s for the two failing-transfer cases in `geonames-postal.test.ts`,
@@ -115,19 +115,19 @@ export interface DownloadOptions {
115
115
  /**
116
116
  * Per-attempt timeout.
117
117
  *
118
- * Default 10 minutes — these are multi-GB government dumps.
118
+ * @defaultValue `10` minutes — these are multi-GB government dumps
119
119
  */
120
120
  timeoutMs?: number
121
121
  /**
122
122
  * Extra attempts after the first, taken only on transient statuses or network errors.
123
123
  *
124
- * Default 0.
124
+ * @defaultValue `0`
125
125
  */
126
126
  retries?: number
127
127
  /**
128
128
  * Delay between attempts.
129
129
  *
130
- * Default 5s.
130
+ * @defaultValue `5s`
131
131
  */
132
132
  retryDelayMs?: number
133
133
  headers?: Record<string, string>
@@ -5,7 +5,7 @@
5
5
  * @file Retries and resumes interrupted corpus downloads.
6
6
  */
7
7
 
8
- import { tryStat } from "@mailwoman/core/fs/readers"
8
+ import { tryStat } from "@mailwoman/core/fs/readers/stat"
9
9
  import { openWriteStream, pipeline, Readable } from "@mailwoman/core/fs/streams"
10
10
  import { movePath } from "@mailwoman/core/fs/writers"
11
11
  import { sleep } from "@mailwoman/core/utils/sleep"
@@ -80,10 +80,10 @@ export async function resumableDownload(options: {
80
80
  const { url, dest, headers = {}, maxConnections = 400, retryDelayMs = DEFAULT_RETRY_DELAY_MS, report } = options
81
81
  const tmp = dest + ".tmp"
82
82
  let have = await bytesOnDisk(tmp)
83
- let total: number | undefined
83
+ let total: number | null = null
84
84
 
85
85
  for (let connection = 0; connection < maxConnections; connection++) {
86
- if (total !== undefined && have >= total) break
86
+ if (total !== null && have >= total) break
87
87
 
88
88
  let res: Response
89
89
 
@@ -137,7 +137,7 @@ export async function resumableDownload(options: {
137
137
  }
138
138
  }
139
139
 
140
- if (total === undefined || have < total) {
140
+ if (total === null || have < total) {
141
141
  throw new Error(`resumable download stalled at ${have} of ${total ?? "?"} bytes — ${url}`)
142
142
  }
143
143
 
@@ -18,7 +18,8 @@
18
18
  * the basename, so a postal export receives `wrong_format_present` and does not count as coverage.
19
19
  */
20
20
 
21
- import { pathExists, readFileHead, readLocalBuffer, readLocalTextFile } from "@mailwoman/core/fs/readers"
21
+ import { readFileHead, readLocalBuffer, readLocalTextFile } from "@mailwoman/core/fs/readers"
22
+ import { pathExists } from "@mailwoman/core/fs/readers/stat"
22
23
  import { makeDirectories, removePathIfPresent } from "@mailwoman/core/fs/writers"
23
24
  import { extractZipEntry } from "@mailwoman/core/fs/zip"
24
25
  import { sha256File } from "@mailwoman/core/hash"
@@ -50,14 +51,15 @@ export interface FetchGeonamesDumpOptions extends BaseFetchOptions {
50
51
  /**
51
52
  * Dump directory to read from.
52
53
  *
53
- * Defaults to GeoNames' own.
54
54
  * Exists so the 404 and coverage behavior can be exercised against a local server.
55
+ *
56
+ * @defaultValue GeoNames' own.
55
57
  */
56
58
  baseURL?: string
57
59
  /**
58
60
  * Refetch a dump whose `<CC>.txt` already exists.
59
61
  *
60
- * Default false — the tool fills gaps.
62
+ * @defaultValue `false` — the tool fills gaps
61
63
  */
62
64
  force?: boolean
63
65
  }
@@ -42,13 +42,13 @@ export interface FetchGeonamesPostalOptions extends BaseFetchOptions {
42
42
  /**
43
43
  * ISO alpha-2 codes in any casing.
44
44
  *
45
- * Defaults to `{@linkcode GEONAMES_POSTAL_DEFAULT_COUNTRIES}`.
45
+ * @defaultValue {@linkcode GEONAMES_POSTAL_DEFAULT_COUNTRIES}
46
46
  */
47
47
  countries?: readonly string[]
48
48
  /**
49
49
  * Export directory to read from.
50
50
  *
51
- * Defaults to GeoNames' own, so the 404-is-coverage behavior can be exercised against a local server.
51
+ * @defaultValue GeoNames' own, so the 404-is-coverage behavior can be exercised against a local server.
52
52
  */
53
53
  baseURL?: string
54
54
  }
@@ -28,12 +28,12 @@
28
28
  * streams the member out of the archive rather than reading an extracted copy.
29
29
  *
30
30
  * The receipt written beside the archive records the URL, the publish date, the byte count and the
31
- * sha256 of the archive, which identify the bytes a corpus row was read from.
31
+ * sha256 of the archive. Together they identify the bytes a corpus row was read from.
32
32
  */
33
33
 
34
34
  import { APIClient } from "@mailwoman/core/api"
35
35
  import { ByteFormatter } from "@mailwoman/core/fs/formatters"
36
- import { tryStat } from "@mailwoman/core/fs/readers"
36
+ import { tryStat } from "@mailwoman/core/fs/readers/stat"
37
37
  import { makeDirectories, removePathIfPresent } from "@mailwoman/core/fs/writers"
38
38
  import { listZipEntries } from "@mailwoman/core/fs/zip"
39
39
  import { sha256File } from "@mailwoman/core/hash"
@@ -56,7 +56,8 @@ import { readManifest, resumableDownload, writeManifest } from "#tools/fetch/dow
56
56
  export const GLEIF_LATEST_PUBLISH_URL = "https://goldencopy.gleif.org/api/v2/golden-copies/publishes/latest"
57
57
 
58
58
  /**
59
- * The directory the archive and its receipt are written under, which is the adapter's `inputPath`.
59
+ * The directory the archive and its receipt are written under.
60
+ * It is the adapter's `inputPath`.
60
61
  */
61
62
  const SLUG = "gleif"
62
63
 
@@ -155,7 +156,8 @@ export async function readGLEIFLatestPublish(client: Pick<APIClient, "fetch">):
155
156
  }
156
157
 
157
158
  /**
158
- * The archive's file name, which is the last path segment of the URL the API names.
159
+ * The archive's file name.
160
+ * It is the last path segment of the URL the API returns.
159
161
  */
160
162
  export function gleifArchiveFilename(url: string): string {
161
163
  const name = new URL(url).pathname.split("/").at(-1) ?? ""
@@ -3,7 +3,7 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  *
6
- * Reading a delimited file's header line, and refusing one that stops naming a column an adapter
6
+ * This module reads a delimited file's header line and refuses one that drops a column an adapter
7
7
  * indexes.
8
8
  *
9
9
  * A fetch module checks the file it just wrote against the columns its adapter reads by name,
@@ -22,11 +22,12 @@ import { CSVSpliterator } from "spliterator"
22
22
  * Read through `CSVSpliterator`, which is the reader the adapters use, rather than through
23
23
  * a split of a fetch module's own: which columns a publisher quotes is a property of
24
24
  * the edition, and a second reader would be a second answer to that question.
25
- * `columnScan: "rows"` keeps the first row from decoding the whole file,
26
- * which the default `"auto"` does even for one row.
25
+ * `columnScan: "rows"` keeps the first row from decoding the whole file.
26
+ *
27
+ * The default `"auto"` decodes the whole file even for one row.
27
28
  *
28
29
  * @param path The written file.
29
- * @param columnDelimiter The publisher's delimiter, which defaults to a comma.
30
+ * @param columnDelimiter [","] The publisher's delimiter.
30
31
  * @throws When the file holds no row at all, so an empty or truncated file reports itself
31
32
  * rather than reading as a file with no columns.
32
33
  */
@@ -37,7 +38,7 @@ export async function readDelimitedHeader(path: PathBuilderLike, columnDelimiter
37
38
  mode: "array",
38
39
  columnScan: "rows",
39
40
  take: 1,
40
- ...(columnDelimiter === undefined ? {} : { columnDelimiter }),
41
+ ...(columnDelimiter ? { columnDelimiter } : {}),
41
42
  })
42
43
  )
43
44
 
@@ -53,7 +54,8 @@ export async function readDelimitedHeader(path: PathBuilderLike, columnDelimiter
53
54
  *
54
55
  * @param columns The header {@linkcode readDelimitedHeader} returned.
55
56
  * @param required The columns the adapter indexes by name.
56
- * @param context What is being checked, which opens the message.
57
+ * @param context What is being checked.
58
+ * This value opens the message.
57
59
  * @throws Naming the columns that are absent, so a renamed column is a reported failure
58
60
  * rather than an empty string on every row the adapter emits.
59
61
  */