@mailwoman/corpus 10.1.0 → 10.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -166,15 +166,15 @@ export const BRUSSELS_COUNTRIES: readonly string[] = ["BE"]
166
166
  * The license label recorded on every row.
167
167
  *
168
168
  * The register's source `be-property-building-3` elects `CC-BY-4.0` for Paradigm, read from
169
- * the `gmd:useConstraints` of ISO 19139 record `260abd6f-c5b4-4a79-aa80-d6c265002d65`,
170
- * which names `URBIS_ADM_Adresses.zip` among its distributions.
171
- * That record governs this archive rather than Paradigm's other address product,
172
- * the BeSt Brussels register, which is CC0-1.0.
169
+ * the `gmd:useConstraints` of ISO 19139 record `260abd6f-c5b4-4a79-aa80-d6c265002d65`.
170
+ * That record lists `URBIS_ADM_Adresses.zip` among its distributions and governs this archive
171
+ * rather than Paradigm's other address product, the BeSt Brussels register, licensed CC0-1.0.
173
172
  *
174
173
  * The value is the SPDX identifier rather than the license's title, because
175
174
  * `licenseVerdict` resolves an identifier and reads a title as unrecognized.
176
- * This constant previously held `unreviewed-be-brussels-urbis`, which resolved to no expression,
177
- * so these rows carried unknown obligations into a build that had no way to filter them.
175
+ * The constant must not hold a placeholder such as `unreviewed-be-brussels-urbis`.
176
+ *
177
+ * That value resolves to no expression, so these rows would reach a build as unknown obligations.
178
178
  */
179
179
  export const BRUSSELS_DEFAULT_LICENSE = "CC-BY-4.0"
180
180
 
@@ -246,21 +246,21 @@ const NIS_CODED_NAME = /^(\d+)\s*\((.*)\)$/u
246
246
  * a prefix the publisher writes rather than parsing a name: a changed shape must reach a
247
247
  * reader as the publisher's own value instead of as a guess at what the name inside might be.
248
248
  *
249
- * A value of that shape whose parentheses hold an empty string answers `undefined`,
249
+ * A value of that shape whose parentheses hold an empty string answers `null`,
250
250
  * so the caller refuses the row rather than writing a NIS code into a locality.
251
251
  *
252
- * @returns The name, or `undefined` for an absent value and for a code with an empty name.
252
+ * @returns The name, or `null` for an absent value and for a code with an empty name.
253
253
  */
254
- export function placeNameWithoutNISCode(value: string | undefined): string | undefined {
254
+ export function placeNameWithoutNISCode(value: string | null): string | null {
255
255
  const trimmed = value?.trim()
256
256
 
257
- if (!trimmed) return undefined
257
+ if (!trimmed) return null
258
258
 
259
259
  const coded = NIS_CODED_NAME.exec(trimmed)
260
260
 
261
261
  if (!coded) return trimmed
262
262
 
263
- return coded[2]!.trim() || undefined
263
+ return coded[2]!.trim() || null
264
264
  }
265
265
 
266
266
  /**
@@ -337,19 +337,19 @@ export async function readBrusselsComponents(
337
337
  if (feature.name === "ad:ThoroughfareName") {
338
338
  const street = thoroughfareName(feature)
339
339
 
340
- if (street !== undefined) {
340
+ if (street) {
341
341
  streets.set(id, street)
342
342
  }
343
343
  } else if (feature.name === "ad:PostalDescriptor") {
344
344
  const postcode = postalDescriptorCode(feature)
345
345
 
346
- if (postcode !== undefined) {
346
+ if (postcode) {
347
347
  postcodes.set(id, postcode)
348
348
  }
349
349
  } else if (adminUnitLevel(feature) === MUNICIPALITY_LEVEL) {
350
350
  const municipality = placeNameWithoutNISCode(placeName(feature))
351
351
 
352
- if (municipality !== undefined) {
352
+ if (municipality) {
353
353
  municipalities.set(id, municipality)
354
354
  }
355
355
  }
@@ -451,10 +451,10 @@ export function createBrusselsAdapter(): CorpusAdapter {
451
451
  if (opts.limit !== undefined && emitted >= opts.limit) break
452
452
 
453
453
  // `designatorsByType` leaves out a designator the publisher marked void, so a void number
454
- // and an absent one both read as undefined and `voidDesignatorTypes` separates them below.
454
+ // and an absent one both read as null and `voidDesignatorTypes` separates them below.
455
455
  const house = designator(designatorsByType(address), HOUSE_NUMBER_DESIGNATOR)
456
456
 
457
- if (house === undefined) {
457
+ if (!house) {
458
458
  // A void number is a value this run could not read and an absent one is
459
459
  // a number the publisher states the address has none of.
460
460
  // Neither is emitted, and the two are counted apart so a run reports which it met.
@@ -472,14 +472,14 @@ export function createBrusselsAdapter(): CorpusAdapter {
472
472
  // exactly the nine addresses whose postal zone is empty.
473
473
  const slots = componentHrefs(address)
474
474
 
475
- let street: string | undefined
476
- let postcode: string | undefined
477
- let locality: string | undefined
475
+ let street: string | null = null
476
+ let postcode: string | null = null
477
+ let locality: string | null = null
478
478
 
479
479
  for (const href of slots) {
480
480
  const key = componentJoinKey(href)
481
481
 
482
- if (key === undefined) continue
482
+ if (!key) continue
483
483
 
484
484
  street = index.streets.get(key) ?? street
485
485
  postcode = index.postcodes.get(key) ?? postcode
@@ -488,7 +488,7 @@ export function createBrusselsAdapter(): CorpusAdapter {
488
488
  locality = index.municipalities.get(key) ?? locality
489
489
  }
490
490
 
491
- if (postcode === undefined && slots.length < COMPONENTS_PER_ADDRESS) {
491
+ if (!postcode && slots.length < COMPONENTS_PER_ADDRESS) {
492
492
  // The publisher wrote the postal-zone reference empty.
493
493
  // The row is refused and reported rather than yielded with the postcode missing,
494
494
  // because an unstated value is not an address without a postcode.
@@ -499,7 +499,7 @@ export function createBrusselsAdapter(): CorpusAdapter {
499
499
 
500
500
  // A component the index cannot answer is a street, postcode or locality this run could not read.
501
501
  // A row emitted without it would record an absence the publisher never stated.
502
- if (street === undefined || postcode === undefined || locality === undefined) {
502
+ if (!street || !postcode || !locality) {
503
503
  refused.unjoined++
504
504
 
505
505
  continue
@@ -10,24 +10,24 @@
10
10
  * through their own services, so this adapter emits `BE` on every row it yields, and a Belgian build needs
11
11
  * two more sources beside it.
12
12
  *
13
- * The schema-level reading is `#inspire/address`, which owns every part of an `ad:Address` that the
14
- * publishers spell alike. This module holds only what is Flanders' own: the `resourceId` rewrite its
15
- * references need, the homonym discriminator its street names carry, and the lost characters its
16
- * values carry.
13
+ * The schema-level reading is `#inspire/address`. That module owns every part of an `ad:Address` the
14
+ * publishers spell alike. This module holds only Flanders' own additions: the `resourceId` rewrite
15
+ * its references need, the homonym discriminator appended to its street names, and the lost
16
+ * characters in its values.
17
17
  *
18
18
  * The adapter records `Modellicentie voor gratis hergebruik Vlaanderen` on every row, the terms the
19
19
  * address-source register elects for `be-property-building-1` in `electedTerms`. Article 3 grants
20
20
  * reproduction, adaptation and commercial exploitation for any lawful purpose. Article 4 makes
21
- * attribution the only condition, in the form the licensor specifies, so the model card must carry
21
+ * attribution the only condition, in the form the licensor specifies, so the model card must state
22
22
  * `Bron: Digitaal Vlaanderen`.
23
23
  *
24
24
  * The capabilities document's `ows:Fees` and `ows:AccessConstraints` state what calling the service
25
25
  * costs and who may call it. They describe the service rather than licensing the data, so the
26
- * license comes from the register and this adapter reads the capabilities for feature types alone.
26
+ * license comes from the register and this adapter reads the capabilities only for feature types.
27
27
  *
28
28
  * ## Why the input is a harvest rather than the service
29
29
  *
30
- * An `ad:Address` carries its house number inline and everything else by reference. Each address
30
+ * An `ad:Address` states its house number inline and everything else by reference. Each address
31
31
  * holds exactly four `ad:component/@xlink:href` values, measured over 1,000 addresses at six
32
32
  * `startIndex` offsets with all four prefixes occurring 1,000 times each. The references are
33
33
  * absolute URIs that resolve back into the same service under the `resourceId` rewrite that
@@ -40,7 +40,7 @@
40
40
  * | `https://data.vlaanderen.be/id/gemeentenaam/44083` | `gemeentenaam_44083` | `ad:AdminUnitName` |
41
41
  * | `http://vocab.belgif.be/auth/refnis1995/1000#id` | `refnis1995_1000` | `ad:AdminUnitName` |
42
42
  *
43
- * Resolving per address would cost four requests per row against 4,563,062 addresses. The component
43
+ * A per-address resolution would cost four requests per row against 4,563,062 addresses. The component
44
44
  * types are small — 167,218 thoroughfare names, 1,190 postal descriptors, 609 administrative-unit
45
45
  * names — so the harvest takes each component type whole and the adapter joins locally.
46
46
  *
@@ -98,9 +98,10 @@ export const VLAANDEREN_ADAPTER_ID = "vlaanderen"
98
98
  /**
99
99
  * The terms the address-source register elects for `be-property-building-1`.
100
100
  *
101
- * The value is the register's `electedTerms` for license
102
- * `unchecked-access-free-be-agentschap-digitaal-vlaanderen`, which carries no `spdx`,
103
- * so `electedLicenseLabel` answers this string and the share-alike prefix filter matches it.
101
+ * The register's `electedTerms` for license
102
+ * `unchecked-access-free-be-agentschap-digitaal-vlaanderen` states this value.
103
+ * That license has no `spdx`, so `electedLicenseLabel` answers this string
104
+ * and the share-alike prefix filter matches it.
104
105
  */
105
106
  export const VLAANDEREN_DEFAULT_LICENSE = "Modellicentie voor gratis hergebruik Vlaanderen"
106
107
 
@@ -108,8 +109,9 @@ export const VLAANDEREN_DEFAULT_LICENSE = "Modellicentie voor gratis hergebruik
108
109
  * The one jurisdiction this adapter emits.
109
110
  *
110
111
  * The service publishes the Flemish Region.
111
- * ISO 3166-1 assigns that region no code of its own, so its own, so the set holds one code
112
- * and a caller naming any other gets {@linkcode UnsupportedCountryError} rather than zero rows.
112
+ * ISO 3166-1 assigns that region no code of its own, so the set holds one code.
113
+ *
114
+ * A caller that requests any other gets {@linkcode UnsupportedCountryError} rather than zero rows.
113
115
  */
114
116
  export const VLAANDEREN_COUNTRIES: readonly string[] = ["BE"]
115
117
 
@@ -120,19 +122,19 @@ export const VLAANDEREN_COUNTRIES: readonly string[] = ["BE"]
120
122
  * rather than by position.
121
123
  * Flanders uses one type across 1,000 addresses sampled.
122
124
  *
123
- * Czechia and Brussels write `buildingIdentifier` and the Netherlands `addressNumber` for
124
- * the same part, which is why `#inspire/address` leaves the vocabulary to the caller.
125
+ * Czechia and Brussels write `buildingIdentifier` and the Netherlands `addressNumber` for the same part.
126
+ * `#inspire/address` therefore leaves the vocabulary to the caller.
125
127
  */
126
128
  const HOUSE_NUMBER_DESIGNATOR = "addressIdentifierGeneral"
127
129
 
128
130
  /**
129
- * The `ad:level` of the administrative unit that carries the municipality name.
131
+ * The `ad:level` of the administrative unit that states the municipality name.
130
132
  *
131
133
  * An address references two `ad:AdminUnitName` features.
132
134
  * `gemeentenaam_44083` is `5thOrder` and resolves to the municipality `Deinze`.
133
135
  *
134
136
  * `refnis1995_1000` is `1stOrder` and resolves to the country (`België`).
135
- * Taking whichever arrives first would write `België` into the `locality` of some rows.
137
+ * A reader that takes whichever arrives first would write `België` into the `locality` of some rows.
136
138
  */
137
139
  const MUNICIPALITY_LEVEL = "5thOrder"
138
140
 
@@ -146,8 +148,8 @@ const MUNICIPALITY_LEVEL = "5thOrder"
146
148
  * for `straatnaam_138007`, with zero bytes above 0x7F in either body.
147
149
  *
148
150
  * Measured over 20,000 `ad:ThoroughfareName` values at twenty offsets,
149
- * 1,657 carry a `?` and 0 carry any non-ASCII character.
150
- * `ad:AdminUnitName` carries 34 of 609 and `ad:PostalDescriptor` 161 of 1,189 — and `ad:AdminUnitName`
151
+ * 1,657 have a `?` and 0 have any non-ASCII character.
152
+ * `ad:AdminUnitName` has 34 of 609 and `ad:PostalDescriptor` 161 of 1,189 — and `ad:AdminUnitName`
151
153
  * also serves `België` intact, so the loss is per-value rather than a service-wide transcode.
152
154
  *
153
155
  * No address component is written with a question mark, so a value holding one
@@ -279,24 +281,19 @@ export function componentResourceID(href: string): string | null {
279
281
  /**
280
282
  * A Flemish street name read apart from the homonym discriminator that follows it.
281
283
  *
282
- * `gn:text` on an `ad:ThoroughfareName` is not the street name alone: it is the name,
284
+ * `gn:text` on an `ad:ThoroughfareName` states more than the street name: the name,
283
285
  * an underscore, and a discriminator that is usually empty.
284
- * Over 20,000 values at twenty offsets, 19,979 end with `_` and the remaining 21 carry a
285
- * discriminator after it — `Rue de Cronwez_01`, `Rue de Cronwez_02`, `Heide_01`, `Heide_02`,
286
- * `Kattenberg_BO`, `Kattenberg_EK`, `Ringlaan_ME`, `Ringlaan_BEWI`, `Berkenlaan_WI`,
287
- * `Weerstandlaan_BO`, `Weerstandlaan_HO`, `Cit? du Repos_01` through `_04`, `Rue du Roeulx_01`,
288
- * `Rue du Roeulx_02`, `Rue Verte_01`, `Rue Verte_02` and `Rue des Par?onniers_01`/`_02`.
289
- *
290
- * Exactly 21 values carry an `_` anywhere but at the end, and they are the same 21: no value holds
291
- * both a discriminator and a trailing separator, so the field is one separator at one position.
292
- *
293
- * The same streets read through `ad:AddressRepresentation/ad:thoroughfare` carry
294
- * no separator at all, 0 of 10,000, which is the publisher's own evidence that
295
- * everything from the `_` onward is bookkeeping rather than name.
296
- *
297
- * So the split takes the last `_` and keeps the head.
298
- * Stripping only a trailing `_` would leave `Rue de Cronwez_01` in a corpus,
299
- * and keeping the whole value would leave `Acacialaan_`.
286
+ * Over 20,000 values at twenty offsets, 19,979 end with `_` and the remaining
287
+ * 21 have a discriminator after it.
288
+ *
289
+ * Exactly 21 values have an `_` somewhere other than the end.
290
+ * Those same 21 values hold the only discriminators, so the field has one separator at one position.
291
+ *
292
+ * The same streets read through `ad:AddressRepresentation/ad:thoroughfare` have no separator, 0 of 10,000.
293
+ * The publisher's own data therefore marks everything from the `_` onward as bookkeeping.
294
+ *
295
+ * The split takes the last `_` and keeps the head.
296
+ * That drops a trailing separator and any discriminator in one step.
300
297
  */
301
298
  export interface SplitStreetName {
302
299
  /**
@@ -312,10 +309,10 @@ export interface SplitStreetName {
312
309
  /**
313
310
  * Splits an `ad:ThoroughfareName` `gn:text` value into its {@link SplitStreetName}.
314
311
  *
315
- * @throws {@linkcode VlaanderenHarvestError} when the value carries no `_`,
316
- * which no value of the 20,000 measured did.
317
- * That is a change in the publisher's field rather than an odd street, and guessing at
318
- * it would write a bookkeeping suffix into every row sharing the new shape.
312
+ * @throws {@linkcode VlaanderenHarvestError} when the value has no `_`.
313
+ * Every one of the 20,000 measured values had one.
314
+ * That would be a change in the publisher's field.
315
+ * A guess at it would write a bookkeeping suffix into every row sharing the new shape.
319
316
  */
320
317
  export function splitStreetName(value: string): SplitStreetName {
321
318
  const separator = value.lastIndexOf("_")
@@ -332,17 +329,17 @@ export function splitStreetName(value: string): SplitStreetName {
332
329
  }
333
330
 
334
331
  /**
335
- * The house number an address states inline, or `undefined` when it states none this adapter can use.
332
+ * The house number an address states inline, or `null` when it states none this adapter can use.
336
333
  *
337
334
  * `designatorsByType` skips a designator the publisher marked void, so a void number
338
- * and an absent one both answer `undefined` here.
335
+ * and an absent one both answer `null` here.
339
336
  * Both are refusals rather than addresses with no number, and the caller counts
340
337
  * them together for that reason.
341
338
  *
342
339
  * `ad:designator` was present and populated on 1,000 of 1,000 addresses sampled,
343
340
  * so neither condition has been seen on this service.
344
341
  */
345
- export function houseNumberOf(address: MarkupElement): string | undefined {
342
+ export function houseNumberOf(address: MarkupElement): string | null {
346
343
  return designator(designatorsByType(address), HOUSE_NUMBER_DESIGNATOR)
347
344
  }
348
345
 
@@ -353,7 +350,7 @@ async function readComponentFiles<T>(
353
350
  root: PathBuilder,
354
351
  files: readonly string[],
355
352
  typeName: string,
356
- read: (feature: MarkupElement) => T | undefined,
353
+ read: (feature: MarkupElement) => T | null,
357
354
  signal?: AbortSignal
358
355
  ): Promise<Map<string, T>> {
359
356
  const index = new Map<string, T>()
@@ -374,7 +371,7 @@ async function readComponentFiles<T>(
374
371
 
375
372
  const value = read(feature)
376
373
 
377
- if (value !== undefined) {
374
+ if (value !== null) {
378
375
  index.set(id, value)
379
376
  }
380
377
  }
@@ -415,7 +412,7 @@ async function readComponentIndex(
415
412
  root,
416
413
  harvest.components.AdminUnitName,
417
414
  "ad:AdminUnitName",
418
- (feature) => (adminUnitLevel(feature) === MUNICIPALITY_LEVEL ? placeName(feature) : undefined),
415
+ (feature) => (adminUnitLevel(feature) === MUNICIPALITY_LEVEL ? placeName(feature) : null),
419
416
  signal
420
417
  )
421
418
 
@@ -539,21 +536,21 @@ export function createVlaanderenAdapter(): CorpusAdapter {
539
536
 
540
537
  const house = houseNumberOf(address)
541
538
 
542
- if (house === undefined) {
539
+ if (!house) {
543
540
  refused.noHouseNumber++
544
541
 
545
542
  continue
546
543
  }
547
544
 
548
- let street: string | undefined
549
- let postcode: string | undefined
550
- let locality: string | undefined
545
+ let street: string | null = null
546
+ let postcode: string | null = null
547
+ let locality: string | null = null
551
548
  let unreadable = false
552
549
 
553
550
  for (const href of componentHrefs(address)) {
554
551
  const id = componentResourceID(href)
555
552
 
556
- if (id === null) {
553
+ if (!id) {
557
554
  unreadable = true
558
555
 
559
556
  break
@@ -561,7 +558,7 @@ export function createVlaanderenAdapter(): CorpusAdapter {
561
558
 
562
559
  const streetValue = index.streets.get(id)
563
560
 
564
- if (streetValue !== undefined) {
561
+ if (streetValue) {
565
562
  street = streetValue
566
563
 
567
564
  continue
@@ -569,7 +566,7 @@ export function createVlaanderenAdapter(): CorpusAdapter {
569
566
 
570
567
  const postcodeValue = index.postcodes.get(id)
571
568
 
572
- if (postcodeValue !== undefined) {
569
+ if (postcodeValue) {
573
570
  postcode = postcodeValue
574
571
 
575
572
  continue
@@ -582,8 +579,8 @@ export function createVlaanderenAdapter(): CorpusAdapter {
582
579
 
583
580
  // A reference the harvest cannot answer is a street, postcode
584
581
  // or locality this run could not read.
585
- // Emitting the row without it would record an absence the publisher never stated.
586
- if (unreadable || street === undefined || postcode === undefined || locality === undefined) {
582
+ // A row emitted without it would record an absence the publisher never stated.
583
+ if (unreadable || !street || !postcode || !locality) {
587
584
  refused.unjoined++
588
585
 
589
586
  continue
@@ -637,8 +634,8 @@ export function createVlaanderenAdapter(): CorpusAdapter {
637
634
  }
638
635
 
639
636
  // A short page is a page this run could not read whole.
640
- // Reading it as a smaller page would drop its tail silently,
641
- // and a harvest of 457 pages hides one missing tail.
637
+ // A smaller-page read would drop its tail silently, and a harvest of
638
+ // 457 pages hides one missing tail.
642
639
  const bounded = opts.limit !== undefined || Boolean(opts.signal?.aborted)
643
640
 
644
641
  if (!bounded && seen !== page.numberReturned) {
@@ -78,8 +78,8 @@
78
78
  * and states what identifies it: the SPW's ICAR presentation to the Club des utilisateurs du PICC
79
79
  * (27 February 2015) lists the communes' validation of sub-addresses identified by their
80
80
  * `numéro de boîte`, the box number, and its ICAR address form records each sub-address's `Numéro` apart from the `Index`
81
- * field. A box number identifies one delivery point inside the numbered premise, which is the
82
- * concept the `unit` tag carries. It is not a floor, a building, an entrance or a staircase, even
81
+ * field. A box number identifies one delivery point inside the numbered premise. That is the
82
+ * concept the `unit` tag records. It is not a floor, a building, an entrance or a staircase, even
83
83
  * where a code such as `0RCH` (rez-de-chaussée) names the box after the floor it sits on.
84
84
  *
85
85
  * The value is rendered as the publisher writes it, with no designator word: `Rue de la Station 29
@@ -308,25 +308,25 @@ export async function readWallonieComponents(
308
308
  if (feature.name === "ad:ThoroughfareName") {
309
309
  const street = thoroughfareName(feature)
310
310
 
311
- if (street !== undefined) {
311
+ if (street) {
312
312
  streets.set(id, street)
313
313
  }
314
314
  } else if (feature.name === "ad:PostalDescriptor") {
315
315
  const postcode = postalDescriptorCode(feature)
316
316
 
317
- if (postcode !== undefined) {
317
+ if (postcode) {
318
318
  postcodes.set(id, postcode)
319
319
  }
320
320
  } else if (feature.name === "ad:AddressAreaName") {
321
321
  const area = placeName(feature)
322
322
 
323
- if (area !== undefined) {
323
+ if (area) {
324
324
  areas.set(id, area)
325
325
  }
326
326
  } else if (adminUnitLevel(feature) === MUNICIPALITY_LEVEL) {
327
327
  const municipality = placeName(feature)
328
328
 
329
- if (municipality !== undefined) {
329
+ if (municipality) {
330
330
  municipalities.set(id, municipality)
331
331
  }
332
332
  }
@@ -413,11 +413,11 @@ export function createWallonieAdapter(): CorpusAdapter {
413
413
  if (opts.limit !== undefined && emitted >= opts.limit) break
414
414
 
415
415
  // `designatorsByType` leaves out a designator the publisher marked void, so a void number
416
- // and an absent one both read as undefined and `voidDesignatorTypes` separates them below.
416
+ // and an absent one both read as null and `voidDesignatorTypes` separates them below.
417
417
  const byType = designatorsByType(address)
418
418
  const house = designator(byType, HOUSE_NUMBER_DESIGNATOR)
419
419
 
420
- if (house === undefined) {
420
+ if (!house) {
421
421
  // A void number is a value this run could not read and an absent one is
422
422
  // a number the publisher states the address has none of.
423
423
  // Neither is emitted, and the two are counted apart so a run reports which it met.
@@ -432,19 +432,19 @@ export function createWallonieAdapter(): CorpusAdapter {
432
432
 
433
433
  const box = designator(byType, NUMBER_EXTENSION_DESIGNATOR)
434
434
 
435
- if (box !== undefined) {
435
+ if (box) {
436
436
  extensions++
437
437
  }
438
438
 
439
- let street: string | undefined
440
- let postcode: string | undefined
441
- let locality: string | undefined
442
- let area: string | undefined
439
+ let street: string | null = null
440
+ let postcode: string | null = null
441
+ let locality: string | null = null
442
+ let area: string | null = null
443
443
 
444
444
  for (const href of componentHrefs(address)) {
445
445
  const key = componentJoinKey(href)
446
446
 
447
- if (key === undefined) continue
447
+ if (!key) continue
448
448
 
449
449
  street = index.streets.get(key) ?? street
450
450
  postcode = index.postcodes.get(key) ?? postcode
@@ -456,7 +456,7 @@ export function createWallonieAdapter(): CorpusAdapter {
456
456
 
457
457
  // A component the index cannot answer is a street, postcode or locality this run could not read.
458
458
  // A row emitted without it would record an absence the publisher never stated.
459
- if (street === undefined || postcode === undefined || locality === undefined) {
459
+ if (!street || !postcode || !locality) {
460
460
  countDropped(tally, Refusal.Unjoined)
461
461
 
462
462
  continue
@@ -469,14 +469,14 @@ export function createWallonieAdapter(): CorpusAdapter {
469
469
  locality,
470
470
  }
471
471
 
472
- if (box !== undefined) {
472
+ if (box) {
473
473
  components.unit = box
474
474
  }
475
475
 
476
476
  // The `partie de commune` is a dependent locality only where it names
477
477
  // something other than the municipality.
478
478
  // `Braine-l'Alleud` has an area of the same name, and `Beauvechain` has `Hamme-Mille`.
479
- if (area !== undefined && area !== locality) {
479
+ if (area && area !== locality) {
480
480
  components.dependent_locality = area
481
481
  }
482
482
 
@@ -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 } from "@mailwoman/core/fs/writers"
34
34
  import { sha256File } from "@mailwoman/core/hash"
35
35
  import { PathBuilder, type PathBuilderLike } from "path-ts"
@@ -39,12 +39,13 @@ import type { BaseFetchOptions, FetchSummary, SourceManifest } from "#tools/fetc
39
39
  import { downloadToFile, readManifest, writeManifest } from "#tools/fetch/download"
40
40
 
41
41
  /**
42
- * The archive's URL, which is the whole acquisition path for this theme.
42
+ * The archive's URL, the whole acquisition path for this theme.
43
43
  */
44
44
  export const BE_BRUSSELS_ARCHIVE_URL = "https://urbisdownload.datastore.brussels/INSPIRE/URBIS_ADM_Adresses.zip"
45
45
 
46
46
  /**
47
- * The name the archive is written under, which is what the adapter's `inputPath` states.
47
+ * The name the archive is written under.
48
+ * The adapter's `inputPath` states this name.
48
49
  */
49
50
  export const BE_BRUSSELS_ARCHIVE_FILENAME = "URBIS_ADM_Adresses.zip"
50
51
 
@@ -86,8 +87,9 @@ export interface DownloadBrusselsOptions {
86
87
  * What the publisher's HEAD response states about the archive it holds.
87
88
  *
88
89
  * Both fields read `null` where the header is absent, rather than an empty string or zero.
89
- * An absent `last-modified` is the service declining to state a version, which is a
90
- * different fact from a version that happens to match the one on disk.
90
+ * An absent `last-modified` is the service declining to state a version.
91
+ *
92
+ * That differs from a version that happens to match the one on disk.
91
93
  */
92
94
  export interface BrusselsPublication {
93
95
  lastModified: string | null
@@ -97,7 +99,7 @@ export interface BrusselsPublication {
97
99
  /**
98
100
  * Reads the publisher's HEAD response.
99
101
  *
100
- * Separate from {@linkcode downloadBrussels} because this one request carries the whole freshness
102
+ * Separate from {@linkcode downloadBrussels} because this one request holds the whole freshness
101
103
  * decision, and the download itself runs on global `fetch`, which a unit test cannot intercept.
102
104
  */
103
105
  export async function readBrusselsPublication(
@@ -123,16 +125,17 @@ export async function readBrusselsPublication(
123
125
  * Whether the archive on disk is the one the publisher currently serves.
124
126
  *
125
127
  * A skip requires the publisher to state a `last-modified` value.
126
- * Where it states none, both sides read `null` and an equality test would hold,
127
- * which would keep an archive of unknown age for as long as the service stayed silent.
128
- * Downloading 11 MiB again is the cheaper error.
128
+ * Where it states none, both sides read `null` and an equality test would hold.
129
+ *
130
+ * A skip there would keep an archive of unknown age for as long as the service stayed silent.
131
+ * A second 11 MiB download is the cheaper error.
129
132
  */
130
133
  export function brusselsPublicationIsRecorded(
131
134
  recorded: BrusselsManifest,
132
135
  bytesOnDisk: number,
133
136
  publication: BrusselsPublication
134
137
  ): boolean {
135
- if (publication.lastModified === null) return false
138
+ if (!publication.lastModified) return false
136
139
 
137
140
  return recorded.last_modified === publication.lastModified && recorded.bytes === bytesOnDisk
138
141
  }
@@ -27,7 +27,7 @@
27
27
 
28
28
  import { APIClient, assertNoOGCServiceException } from "@mailwoman/core/api"
29
29
  import { ByteFormatter } from "@mailwoman/core/fs/formatters"
30
- import { tryStat } from "@mailwoman/core/fs/readers"
30
+ import { tryStat } from "@mailwoman/core/fs/readers/stat"
31
31
  import { makeDirectories } from "@mailwoman/core/fs/writers"
32
32
  import { sha256File } from "@mailwoman/core/hash"
33
33
  import { PathBuilder, type PathBuilderLike } from "path-ts"
@@ -38,12 +38,12 @@ import type { BaseFetchOptions, FetchSummary, SourceManifest } from "#tools/fetc
38
38
  import { downloadToFile, readManifest, writeManifest } from "#tools/fetch/download"
39
39
 
40
40
  /**
41
- * The ATOM service document, which lists the region's one dataset feed.
41
+ * The ATOM service document for the region's one dataset feed.
42
42
  */
43
43
  export const BE_WALLONIE_SERVICE_URL = "https://geoservices.wallonie.be/inspire/atom/AD_Service.xml"
44
44
 
45
45
  /**
46
- * The name the archive is written under, which is what the adapter's `inputPath` states.
46
+ * The archive filename, the same one the adapter's `inputPath` states.
47
47
  */
48
48
  export const BE_WALLONIE_ARCHIVE_FILENAME = "AD.Addresses.gml.zip"
49
49
 
@@ -58,8 +58,9 @@ const SLUG = WALLONIE_ADAPTER_ID
58
58
  * What one run recorded.
59
59
  *
60
60
  * `feed_updated` is the dataset feed's own `<updated>`.
61
- * A later run downloads again when that value changes, which is what the INSPIRE
62
- * pattern offers in place of an HTTP validator.
61
+ * A later run downloads again when that value changes.
62
+ *
63
+ * The INSPIRE pattern offers that field in place of an HTTP validator.
63
64
  */
64
65
  export interface WallonieManifest extends SourceManifest {
65
66
  service_url: string
@@ -93,7 +94,7 @@ export interface WallonieArchiveReference {
93
94
  * The archive entry's own `<updated>`, or `null` where the feed states none.
94
95
  *
95
96
  * `updated` sits on an Atom entry rather than on the feed, so this reads the
96
- * entry that carried the archive link.
97
+ * entry that holds the archive link.
97
98
  * Wallonia's feed reported `2025-12-11` when this reader was written.
98
99
  */
99
100
  feedUpdated: string | null
@@ -196,7 +197,7 @@ export async function downloadWallonie(
196
197
  const recorded = await readManifest<WallonieManifest>(manifestPath)
197
198
  const stat = await tryStat(archivePath)
198
199
 
199
- if (!options.force && recorded && stat && feedUpdated !== null && recorded.feed_updated === feedUpdated) {
200
+ if (!options.force && recorded && stat && feedUpdated && recorded.feed_updated === feedUpdated) {
200
201
  report?.(` present, and the dataset feed reports the recorded updated ${feedUpdated}`)
201
202
 
202
203
  return { fetched: 0, skipped: 1, failed: 0, failedCodes: [] }
@@ -6,7 +6,8 @@
6
6
  * previous build finished.
7
7
  */
8
8
 
9
- import { pathExists, readLocalJSONFile, statPath } from "@mailwoman/core/fs/readers"
9
+ import { readLocalJSONFile } from "@mailwoman/core/fs/readers"
10
+ import { pathExists, statPath } from "@mailwoman/core/fs/readers/stat"
10
11
  import type { PathBuilder } from "path-ts"
11
12
 
12
13
  import type { BuildStage } from "#build/types"
@@ -78,8 +78,9 @@ export interface AlignPhaseResult {
78
78
  /**
79
79
  * Rows the license policy refused, counted per `source`.
80
80
  *
81
- * A source here contributed zero rows to the corpus whatever its adapter reported writing, which is
82
- * the distinction between a source present in corpus provenance and one present in model provenance.
81
+ * A source here contributed zero rows to the corpus whatever its adapter reported writing.
82
+ * That is the distinction between a source present in corpus provenance
83
+ * and one present in model provenance.
83
84
  */
84
85
  refusedBySource: Map<string, number>
85
86
  excludedByLicense: number
@@ -256,8 +257,8 @@ export async function runAlignPhase(opts: AlignPhaseOptions): Promise<AlignPhase
256
257
 
257
258
  // Counted per source as well as per refusal kind, because an adapter's own
258
259
  // `written` count records what it emitted rather than what entered the corpus.
259
- // A source refused here contributed no row, and model provenance generated from
260
- // `adapters[].written` alone would credit it with rows it did not supply.
260
+ // A source refused here contributed no row, and model provenance generated from model provenance
261
+ // generated from `adapters[].written` only would credit it with rows it did not supply.
261
262
  result.refusedBySource.set(row.source, (result.refusedBySource.get(row.source) ?? 0) + 1)
262
263
 
263
264
  continue