@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
@@ -7,32 +7,32 @@
7
7
  * from its per-municipality zipped GML.
8
8
  *
9
9
  * The ATOM service at `https://www.catastro.hacienda.gob.es/INSPIRE/Addresses/ES.SDGC.AD.atom.xml`
10
- * lists 55 entries, and 52 of them are the Dirección General del Catastro's own provinces. The other
11
- * three link the foral cadastres of Bizkaia, Gipuzkoa and Navarra, which state their own terms and
12
- * have an adapter each. Every DGC entry links a province feed listing one zipped GML per
13
- * municipality, so a caller harvests municipality by municipality and this adapter reads one archive
14
- * or a directory of them.
10
+ * lists 55 entries. 52 are the Dirección General del Catastro's own provinces. Three link the foral
11
+ * cadastres of Bizkaia, Gipuzkoa and Navarra. Those three state their own terms and have an adapter
12
+ * each. Every DGC entry links a province feed listing one zipped GML per municipality, so a caller
13
+ * harvests municipality by municipality and this adapter reads one archive or a directory of them.
15
14
  *
16
15
  * Three properties of the file decide the reader, and each of the three would silently empty a row
17
16
  * if it were read the way the other INSPIRE publishers are read.
18
17
  *
19
- * The archive carries two members. `A.ES.SDGC.AD.<code>.gml` is the data and
18
+ * The archive holds two members. `A.ES.SDGC.AD.<code>.gml` is the data and
20
19
  * `A.ES.SDGC.AD.MD.<code>.xml` is its ISO 19139 metadata record. A member selector matching `.xml`
21
- * therefore selects the metadata record. That record carries no `AD:Address` at all, so
20
+ * therefore selects the metadata record. That record holds no `AD:Address` at all, so
22
21
  * {@linkcode GML_MEMBER} matches the extension that holds the features.
23
22
  *
24
- * The GML declares `<?xml version="1.0" encoding="ISO-8859-1"?>` and is not valid UTF-8: Ceuta's
25
- * 11,861,975-byte member carries 26 bytes above 0x7F, one of which is the `Ñ` of a street name.
26
- * `streamMarkupElements` decodes with a UTF-8 `TextDecoder`, which answers those bytes with U+FFFD,
27
- * so the bytes pass through `decodeByteStream` first. {@linkcode assertLatin1Declaration} reads the
28
- * declaration rather than trusting this note, because a publisher that re-encodes its output would
29
- * otherwise have every accented name mojibaked under a reader that still claimed to be right.
23
+ * The GML declares `<?xml version="1.0" encoding="ISO-8859-1"?>` and is not valid UTF-8. Ceuta's
24
+ * 11,861,975-byte member holds 26 bytes above 0x7F, one of which is the `Ñ` of a street name.
25
+ * `streamMarkupElements` decodes with a UTF-8 `TextDecoder`. That decoder answers those bytes with
26
+ * U+FFFD. The bytes therefore pass through `decodeByteStream` first. {@linkcode assertLatin1Declaration}
27
+ * reads the declaration rather than trusting this note, because a publisher that re-encodes its
28
+ * output would otherwise have every accented name mojibaked under a reader that still claimed to be
29
+ * right.
30
30
  *
31
31
  * The file binds the INSPIRE namespaces to upper-case prefixes, `AD:Address` and `GN:text`, and
32
32
  * states a designator type and an administrative level as element text rather than as a codelist
33
33
  * URI. `#inspire/address` matches an element by its local name and accepts either form of a coded
34
34
  * value, so the readers there serve this publisher. Only the element names this module passes to the
35
- * markup stream carry the upper-case prefix.
35
+ * markup stream hold the upper-case prefix.
36
36
  *
37
37
  * Each address references exactly three features by local `#` fragment, measured as 8,126 of 8,126
38
38
  * addresses in Ceuta carrying one `ES.SDGC.PD`, one `ES.SDGC.TN` and one `ES.SDGC.AU` reference.
@@ -52,10 +52,10 @@
52
52
  * | `9744803TE8794S` | `13` | `CL SANTIAGO APOSTOL 13 51002 CEUTA (CEUTA)` |
53
53
  * | `9745701TE8794S` | `13D` | `CL SANTIAGO APOSTOL 13(D) 51002 CEUTA (CEUTA)` |
54
54
  *
55
- * So the designator is `pnp` with `plp` appended, and the street is `tv` followed by `nv`, which is
56
- * the `AD:ThoroughfareName` text verbatim once its leading space is trimmed. The abbreviation stays
57
- * in the street component because the publisher writes it in its own rendered line. Expanding `CL`
58
- * to `Calle` would state something the Cadastre did not.
55
+ * So the designator is `pnp` with `plp` appended, and the street is `tv` followed by `nv`. That
56
+ * street matches the `AD:ThoroughfareName` text verbatim once its leading space is trimmed. The
57
+ * abbreviation stays in the street component because the publisher writes it in its own rendered
58
+ * line. `Calle` would state something the Cadastre did not.
59
59
  *
60
60
  * `S-N` is *sin número*, the publisher stating that the address has no number, and it is 856 of
61
61
  * Ceuta's 8,126 designators. A row carrying it writes no `house_number`, because the string is a
@@ -114,13 +114,12 @@ export const ES_CATASTRO_COUNTRIES: readonly string[] = ["ES"]
114
114
  *
115
115
  * The register elects the titled instrument, `Licencia de acceso y uso de los servicios y conjuntos
116
116
  * de datos INSPIRE de la Dirección General del Catastro` at version 1.0, rather than the older
117
- * `all rights reserved` template the feed still carries. It names no license instrument a
118
- * Creative Commons label or an SPDX identifier would cover, so the row records the instrument's
119
- * own title.
117
+ * `all rights reserved` template the feed still shows. No Creative Commons label or SPDX identifier
118
+ * covers that instrument, so the row records the instrument's own title.
120
119
  *
121
- * That decision reads `refused` for `redistribute-data`: clause 1 withholds distribution
120
+ * The register reads `refused` for `redistribute-data`: clause 1 withholds distribution
122
121
  * of the information as supplied, and requires transformation before any public use.
123
- * Ingest, transformation and training are permitted, which is what this adapter performs.
122
+ * Ingest, transformation and training are permitted, and this adapter performs those.
124
123
  */
125
124
  export const ES_CATASTRO_LICENSE =
126
125
  "Licencia de acceso y uso de los servicios y conjuntos de datos INSPIRE de la Dirección General del Catastro"
@@ -130,7 +129,8 @@ export const ES_CATASTRO_LICENSE =
130
129
  *
131
130
  * The archive ships two members and the other is `A.ES.SDGC.AD.MD.<code>.xml`,
132
131
  * the ISO 19139 metadata record.
133
- * A selector matching `.xml` reads that record, which carries no `AD:Address`.
132
+ * A selector matching `.xml` reads that record.
133
+ * That record holds no `AD:Address`.
134
134
  */
135
135
  const GML_MEMBER = /\.gml$/iu
136
136
 
@@ -169,10 +169,12 @@ const MUNICIPALITY_LEVELS = new Set(["4", "4thOrder"])
169
169
  /**
170
170
  * The designator type the publisher writes on every address.
171
171
  *
172
- * Measured over Ceuta: 8,126 of 8,126 addresses carry exactly one designator
172
+ * Measured over Ceuta: 8,126 of 8,126 addresses hold exactly one designator,
173
173
  * and its `AD:type` is the text `1`.
174
- * The value is the house number, which `Consulta_DNPRC`'s `pnp` and `plp` fields
175
- * confirm for the two addresses tabulated in this module's header.
174
+ * The value is the house number.
175
+ *
176
+ * `Consulta_DNPRC`'s `pnp` and `plp` fields confirm that for the two addresses
177
+ * tabulated in this module's header.
176
178
  */
177
179
  const HOUSE_NUMBER_TYPE = "1"
178
180
 
@@ -263,22 +265,22 @@ export function createESCatastroAdapter(): CorpusAdapter {
263
265
  }
264
266
 
265
267
  /**
266
- * One address's row, or undefined when it carries too little to render.
268
+ * One address's row, or null when it holds too little to render.
267
269
  *
268
270
  * The reference index is complete before this is called, so a reference resolving to no
269
271
  * feature is a value the reader asked for and could not read, and it raises.
270
272
  */
271
- function composeRow(address: MarkupElement, referenced: ReadonlyMap<string, MarkupElement>): CanonicalRow | undefined {
272
- const addressID = address.attributes["gml:id"]?.trim()
273
+ function composeRow(address: MarkupElement, referenced: ReadonlyMap<string, MarkupElement>): CanonicalRow | null {
274
+ const addressID = address.attributes["gml:id"]?.trim() ?? null
273
275
 
274
276
  if (voidDesignatorTypes(address).has(HOUSE_NUMBER_TYPE)) {
275
277
  throw new VoidDesignatorError(ES_CATASTRO_ADAPTER_ID, addressID, HOUSE_NUMBER_TYPE)
276
278
  }
277
279
 
278
- let street: string | undefined
279
- let postcode: string | undefined
280
- let locality: string | undefined
281
- let settlement: string | undefined
280
+ let street: string | null = null
281
+ let postcode: string | null = null
282
+ let locality: string | null = null
283
+ let settlement: string | null = null
282
284
 
283
285
  for (const href of componentHrefs(address)) {
284
286
  const key = componentJoinKey(href)
@@ -4,21 +4,18 @@
4
4
  * @author Teffen Ellis, et al.
5
5
  *
6
6
  * `es-gipuzkoa`: the INSPIRE Addresses theme the Diputación Foral de Gipuzkoa publishes, read from
7
- * the one zipped GML that carries the whole province.
7
+ * the one zipped GML that holds the whole province.
8
8
  *
9
- * The ATOM service at `https://b5m.gipuzkoa.eus/inspire/download/addresses.xml` is 4,469 bytes and
10
- * holds a single entry for the province rather than one per municipality. That entry links its
11
- * dataset through `rel="alternate"` and not `rel="enclosure"`, so a fetcher that looks only for an
12
- * enclosure finds no dataset here. The adapter is handed the archive and the feed is acquisition's
13
- * concern. The archive `ES.GFA.AD.zip` is 7,959,103 bytes and its one member `ES.GFA.AD.gml` is
14
- * 313,162,472 bytes, a ratio of 39, so the member is read as a chunk sequence and never buffered.
9
+ * The ATOM service at `https://b5m.gipuzkoa.eus/inspire/download/addresses.xml` holds a single entry
10
+ * for the province and links its dataset through `rel="alternate"` rather than `rel="enclosure"`, so
11
+ * a fetcher that looks only for an enclosure finds no dataset here. The adapter is handed the
12
+ * archive and the feed is acquisition's concern. The archive holds one 313 MB GML member. The
13
+ * adapter reads that member as a chunk sequence and never buffers it.
15
14
  *
16
- * The member is self-contained and its order decides the reader. Counted over all 313,162,472 bytes:
17
- * 68,744 `ad:Address`, 4,250 `ad:ThoroughfareName`, 178 `ad:PostalDescriptor` and 88
18
- * `ad:AdminUnitName`, which is every one of the 73,260 `gml:featureMember` elements. The 4,516
19
- * reference features are written last, beginning at byte 306,440,816. Holding an address until the
20
- * document ends would therefore hold all 68,744, so the adapter reads the member twice through
21
- * {@linkcode streamIndexedInspireRows} and indexes 4,516 features instead.
15
+ * The member is self-contained and its order decides the reader. Addresses number 68,744, and the
16
+ * 4,516 reference features they point at are written last. An address held until the document ends
17
+ * would keep all 68,744 pending, so the adapter reads the member twice through
18
+ * {@linkcode streamIndexedInspireRows} and indexes the 4,516 references instead.
22
19
  *
23
20
  * A reference is a WFS stored-query URL whose `ID` parameter equals the target's `gml:id`, written
24
21
  * against the internal host `http://b5mdev/` and with the id repeated as the URL's fragment:
@@ -28,31 +25,26 @@
28
25
  *
29
26
  * A postal-descriptor reference whose final segment is empty, `…&ID=ES.GFA.PD.059. #…`, states that
30
27
  * the publisher holds no postcode, and `referenceStatesNoValue` separates it from a broken join.
31
- * The Cadastre writes the same form, which is why the predicate has one home.
28
+ * The Cadastre writes the same form. The predicate therefore has one home.
32
29
  *
33
- * The locator vocabulary is one type. 68,743 of 68,744 addresses write exactly one designator, typed
34
- * `LocatorDesignatorTypeValue/addressIdentifierGeneral`; one address writes none. The municipality is
35
- * the only `ad:AdminUnitName` level published, `4thOrder`, and the province publishes 88 of them for
36
- * its 88 municipalities.
30
+ * The locator vocabulary is one type,
31
+ * `LocatorDesignatorTypeValue/addressIdentifierGeneral`. The municipality is the only
32
+ * `ad:AdminUnitName` level published, `4thOrder`.
37
33
  *
38
34
  * The publisher writes its street names in Basque, with the street type as a trailing word rather
39
35
  * than a leading abbreviation: `Samikolla ibilbidea`. The name is taken as written.
40
36
  *
41
- * `ad:LocatorName` is populated on 46,365 of 68,744 addresses and holds a building name as a Basque
42
- * and Spanish pair, `Gasolinera` with `Gasolindegia` and `Agirre, baserria` with `Agirre, caserío`.
43
- * The adapter writes none of them. The address-source register's personal-data review reads `absent`
44
- * on the ground that these name the building rather than its occupant, and it records that a Basque
45
- * *baserri* name is commonly also a surname. Keeping them out of the corpus keeps that reading from
46
- * resting on the stronger claim that the name is safe to publish as address text.
37
+ * `ad:LocatorName` holds a building name as a Basque and Spanish pair, `Gasolinera` with
38
+ * `Gasolindegia` and `Agirre, baserria` with `Agirre, caserío`. The adapter writes none of them: the
39
+ * address-source register's personal-data review reads `absent` because these identify the building
40
+ * rather than its occupant, and a Basque *baserri* name is commonly also a surname. The review
41
+ * therefore does not rest on the stronger claim that the name is safe to publish as address text.
47
42
  *
48
- * No publisher-side rendering of a whole address was found for this source. `ad:alternativeIdentifier`
49
- * is populated on all 68,744 addresses and holds a serial number such as `36798` rather than an
50
- * address. What the file does state twice is the join: the address `gml:id`
51
- * `ES.GFA.AD.056_1110_003` concatenates the municipality code `056`, the thoroughfare code `1110`
52
- * and the number `003`, and the references it carries are `AU_ADMINISTRATIVEUNIT_34162020056`,
53
- * `ES.GFA.TN.056.1110` and `ES.GFA.PD.056.20830`. The adapter's test checks the composed street and
54
- * number against that identifier, which is a check that the right features were joined rather than a
55
- * check of the address the publisher would print.
43
+ * The address `gml:id` `ES.GFA.AD.056_1110_003` concatenates the municipality code `056`, the
44
+ * thoroughfare code `1110` and the number `003`, and holds references
45
+ * `AU_ADMINISTRATIVEUNIT_34162020056`, `ES.GFA.TN.056.1110` and `ES.GFA.PD.056.20830`. The
46
+ * adapter's test checks the composed street and number against that identifier. That check confirms
47
+ * the right features were joined. It does not check the address the publisher would print.
56
48
  */
57
49
 
58
50
  import type { MarkupElement } from "@mailwoman/core/html/elements"
@@ -88,7 +80,8 @@ export const ES_GIPUZKOA_ADAPTER_ID = "es-gipuzkoa"
88
80
  /**
89
81
  * The jurisdiction this adapter emits.
90
82
  *
91
- * Coverage is the province of Gipuzkoa, which the feed states as the dataset's whole extent.
83
+ * Coverage is the province of Gipuzkoa.
84
+ * The feed states that as the dataset's whole extent.
92
85
  */
93
86
  export const ES_GIPUZKOA_COUNTRIES: readonly string[] = ["ES"]
94
87
 
@@ -97,15 +90,15 @@ export const ES_GIPUZKOA_COUNTRIES: readonly string[] = ["ES"]
97
90
  *
98
91
  * Gipuzkoa states four things, and the register elects the one addressing this dataset:
99
92
  * the `otherConstraints` of its ISO 19139 dataset record, `CC BY-SA 4.0`.
100
- * Its feed states attribution alone and its website states CC BY 4.0, and the register
101
- * records why the stricter reading is the one to err towards: the share-alike filter reads
102
- * this label, so recording CC BY 4.0 would hide an obligation the publisher may hold.
93
+ * Its feed states attribution only and its website states CC BY 4.0, and the register records
94
+ * why the stricter reading is the one to err towards: the share-alike filter reads this label,
95
+ * so recording CC BY 4.0 would hide an obligation the publisher may hold.
103
96
  *
104
97
  * The value is the SPDX identifier the register elected rather than the license's title,
105
98
  * because `licenseVerdict` resolves an identifier and reads a title as unrecognized.
106
99
  * Under `LicensePolicy.ShareAlikeFree` the title returns `{refusal: null, mentionsShareAlike: false}`
107
- * and `CC-BY-SA-4.0` returns `{refusal: "share-alike-carried"}`, so the title admits
108
- * these rows to a corpus assembled to hold no share-alike source.
100
+ * and `CC-BY-SA-4.0` returns a share-alike refusal, so the title admits these rows
101
+ * to a corpus assembled to hold no share-alike source.
109
102
  */
110
103
  export const ES_GIPUZKOA_LICENSE = "CC-BY-SA-4.0"
111
104
 
@@ -181,22 +174,22 @@ export function createESGipuzkoaAdapter(): CorpusAdapter {
181
174
  }
182
175
 
183
176
  /**
184
- * One address's row, or undefined when it carries too little to render.
177
+ * One address's row, or null when it holds too little to render.
185
178
  *
186
179
  * The reference index is complete before this is called, so a reference resolving to no
187
180
  * feature is a value the reader asked for and could not read, and it raises.
188
181
  */
189
- function composeRow(address: MarkupElement, referenced: ReadonlyMap<string, MarkupElement>): CanonicalRow | undefined {
190
- const addressID = address.attributes["gml:id"]?.trim()
182
+ function composeRow(address: MarkupElement, referenced: ReadonlyMap<string, MarkupElement>): CanonicalRow | null {
183
+ const addressID = address.attributes["gml:id"]?.trim() ?? null
191
184
 
192
185
  if (voidDesignatorTypes(address).has(HOUSE_NUMBER_TYPE)) {
193
186
  throw new VoidDesignatorError(ES_GIPUZKOA_ADAPTER_ID, addressID, HOUSE_NUMBER_TYPE)
194
187
  }
195
188
 
196
- let street: string | undefined
197
- let postcode: string | undefined
198
- let locality: string | undefined
199
- let settlement: string | undefined
189
+ let street: string | null = null
190
+ let postcode: string | null = null
191
+ let locality: string | null = null
192
+ let settlement: string | null = null
200
193
 
201
194
  for (const href of componentHrefs(address)) {
202
195
  const key = componentJoinKey(href)
@@ -9,15 +9,15 @@
9
9
  * The ATOM service at
10
10
  * `https://filescartografia.navarra.es/2_CARTOGRAFIA_TEMATICA/2_7_CATASTRO/2_7_3_INSPIRE_ATOM/2_7_3_3_AD/Addresses_ServiceATOM_Navarra.xml`
11
11
  * is 671,131 bytes and splits the province across 272 entries. Every entry is titled `Address
12
- * Navarra`, so a partition cannot be selected by place from the feed alone. The three measured each
13
- * turned out to hold one municipality, partition 1 Abáigar, partition 100 Eulate and partition 250
14
- * Bera, but the feed states no such mapping and this adapter claims none. It reads one archive or a
15
- * directory of them, which is how a caller harvests all 272.
12
+ * Navarra`, and the feed states no place for a partition. The three measured each held one
13
+ * municipality: partition 1 Abáigar, partition 100 Eulate and partition 250 Bera. The feed states
14
+ * no such mapping and this adapter claims none. It reads one archive or a directory of them. A
15
+ * caller harvests all 272 by pointing it at the directory.
16
16
  *
17
17
  * This publisher is read entirely from its references' titles, and that is what separates it from
18
18
  * every other INSPIRE reader here. Its own file publishes no `AD:ThoroughfareName`,
19
19
  * `AD:PostalDescriptor` or `AD:AdminUnitName` feature at all: partition 1 holds 29 distinct element
20
- * names across 115 addresses and none of them is a component feature. Each address instead carries
20
+ * names across 115 addresses and none of them is a component feature. Each address instead holds
21
21
  * six `AD:component` references whose `xlink:title` states the value:
22
22
  *
23
23
  * | `xlink:href` | `xlink:title` | read as |
@@ -30,7 +30,7 @@
30
30
  * | `PostalDescriptor` | `31280` | the postcode |
31
31
  *
32
32
  * The counts are exact and regular: 690 references over 115 addresses in partition 1, 1,728 over 288
33
- * in partition 100 and 6,324 over 1,054 in partition 250, which is six per address in each, one of
33
+ * in partition 100 and 6,324 over 1,054 in partition 250. Each address holds six references, one of
34
34
  * each shape above.
35
35
  *
36
36
  * The two place titles are not the same value. In Abáigar and Eulate the `5thOrder` title repeats the
@@ -39,7 +39,7 @@
39
39
  * dependent locality where it differs from the municipality and left out where it repeats it.
40
40
  *
41
41
  * `Comunidad Foral de Navarra` is the autonomous community's own name rather than the province name a
42
- * Spanish address writes, and the publisher's own address layer carries no region column, so no
42
+ * Spanish address writes, and the publisher's own address layer has no region column, so no
43
43
  * `region` is written.
44
44
  *
45
45
  * The publisher's own rendering is in a different service, and it agrees. `IDENA` publishes
@@ -47,12 +47,12 @@
47
47
  * `VIA` and `PORTAL`. Partition 1's `AD.Address.1` composes `CALLE CALLEJA, 4, 31280 Abáigar`, and
48
48
  * that layer's `DIRECC_Txt_Direcciones.1` reads `MUNICIPIO` `Abáigar`, `ENTIDAD` `Abáigar`,
49
49
  * `CODPOSTAL` `31280`, `VIA` `CALLE CALLEJA`, `PORTAL` `4`. The adapter's integration test checks a
50
- * sample of rows against that layer, which is this source's publisher-side oracle.
50
+ * sample of rows against that layer, the publisher-side oracle for this source.
51
51
  *
52
52
  * Two values state an absence rather than a value. A `PostalDescriptor` title of `0` is the publisher
53
- * holding no postcode, measured in Bera, and a designator of `S/N` is *sin número*, which
54
- * `#es/cadastre` reads for all four Spanish cadastres. A designator may also carry a space-separated
55
- * letter, `18 A` and `34 A` in Eulate, which is kept as the publisher wrote it.
53
+ * holding no postcode, measured in Bera. A designator of `S/N` is *sin número*, and `#es/cadastre`
54
+ * reads it for all four Spanish cadastres. A designator may also hold a space-separated letter,
55
+ * `18 A` and `34 A` in Eulate. The adapter keeps that letter as the publisher wrote it.
56
56
  */
57
57
 
58
58
  import { type MarkupElement, streamMarkupElements } from "@mailwoman/core/html/elements"
@@ -93,10 +93,11 @@ export const ES_NAVARRA_COUNTRIES: readonly string[] = ["ES"]
93
93
  * Creative Commons Attribution 4.0 International (CC BY 4.0)`, and all 272 of its entries repeat it.
94
94
  * The version is stated, so the register records `CC-BY-4.0` as the SPDX identifier.
95
95
  *
96
- * The row carries that identifier rather than the license's title.
97
- * `licenseVerdict` resolves an identifier and reads a title as unrecognized,
98
- * and a row whose license resolves to no expression has unknown obligations
99
- * rather than none, which the build reports separately from a refusal.
96
+ * The row states that identifier rather than the license's title.
97
+ * `licenseVerdict` resolves an identifier and reads a title as unrecognized.
98
+ *
99
+ * A row whose license resolves to no expression has unknown obligations rather than none.
100
+ * The build reports that separately from a refusal.
100
101
  */
101
102
  export const ES_NAVARRA_LICENSE = "CC-BY-4.0"
102
103
 
@@ -146,7 +147,7 @@ const SETTLEMENT_LEVEL = "5thOrder"
146
147
  /**
147
148
  * The postcode title that states that the publisher holds none.
148
149
  *
149
- * Measured in Bera, which writes `0` beside its `31780`.
150
+ * Bera writes `0` beside its `31780`.
150
151
  */
151
152
  const NO_POSTCODE_TITLE = "0"
152
153
 
@@ -154,10 +155,10 @@ const NO_POSTCODE_TITLE = "0"
154
155
  * What one address's references state, read from their titles.
155
156
  */
156
157
  interface ReferencedTitles {
157
- street?: string
158
- postcode?: string
159
- locality?: string
160
- settlement?: string
158
+ street: string | null
159
+ postcode: string | null
160
+ locality: string | null
161
+ settlement: string | null
161
162
  }
162
163
 
163
164
  /**
@@ -167,7 +168,7 @@ interface ReferencedTitles {
167
168
  * order in the three partitions measured and that order is the publisher's rather than the schema's.
168
169
  */
169
170
  export function navarraReferencedTitles(address: MarkupElement): ReferencedTitles {
170
- const titles: ReferencedTitles = {}
171
+ const titles: ReferencedTitles = { street: null, postcode: null, locality: null, settlement: null }
171
172
 
172
173
  for (const { href, title } of componentLinks(address)) {
173
174
  if (!title) continue
@@ -177,7 +178,7 @@ export function navarraReferencedTitles(address: MarkupElement): ReferencedTitle
177
178
  if (lowered === THOROUGHFARE_HREF) {
178
179
  titles.street = title
179
180
  } else if (lowered === POSTAL_DESCRIPTOR_HREF) {
180
- titles.postcode = title === NO_POSTCODE_TITLE ? undefined : title
181
+ titles.postcode = title === NO_POSTCODE_TITLE ? null : title
181
182
  } else if (codelistValue(href) === SETTLEMENT_LEVEL) {
182
183
  titles.settlement = title
183
184
  } else if (componentJoinKey(href)?.startsWith(MUNICIPALITY_ID_PREFIX)) {
@@ -234,10 +235,10 @@ export function createESNavarraAdapter(): CorpusAdapter {
234
235
  }
235
236
 
236
237
  /**
237
- * One address's row, or undefined when it carries too little to render.
238
+ * One address's row, or null when it holds too little to render.
238
239
  */
239
- function composeRow(address: MarkupElement): CanonicalRow | undefined {
240
- const addressID = address.attributes["gml:id"]?.trim()
240
+ function composeRow(address: MarkupElement): CanonicalRow | null {
241
+ const addressID = address.attributes["gml:id"]?.trim() ?? null
241
242
 
242
243
  if (voidDesignatorTypes(address).has(HOUSE_NUMBER_TYPE)) {
243
244
  throw new VoidDesignatorError(ES_NAVARRA_ADAPTER_ID, addressID, HOUSE_NUMBER_TYPE)
@@ -245,8 +246,8 @@ function composeRow(address: MarkupElement): CanonicalRow | undefined {
245
246
 
246
247
  const { street, postcode, locality, settlement } = navarraReferencedTitles(address)
247
248
 
248
- // Navarra's settlement is a fifth-order title, a *concejo* within the municipality, which
249
- // `cadastralRow` writes as a dependent locality only where it differs from the municipality.
249
+ // Navarra's settlement is a fifth-order title, a *concejo* within the municipality.
250
+ // `cadastralRow` writes it as a dependent locality only where it differs from the municipality.
250
251
  return cadastralRow(
251
252
  {
252
253
  street,
@@ -3,7 +3,7 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  *
6
- * The two ways a Spanish cadastre states that it holds no value, which all four of them share.
6
+ * The two ways a Spanish cadastre states that it holds no value. All four cadastres share them.
7
7
  *
8
8
  * Spain publishes the INSPIRE Addresses theme through four cadastres: the Dirección General del
9
9
  * Catastro for 52 provinces, and the Diputación Foral de Bizkaia, the Diputación Foral de Gipuzkoa
@@ -25,10 +25,9 @@ import type { CanonicalRow } from "#types"
25
25
  * `S-N` is the Dirección General del Catastro's spelling, on 856 of Ceuta's 8,126 addresses.
26
26
  * `S/N` is the Gobierno de Navarra's and the Diputación Foral de Gipuzkoa's.
27
27
  *
28
- * Both are accepted by each of the four readers.
29
- * Neither is a number under any jurisdiction's rules, and the files measured are a few municipalities
30
- * out of the 52 provinces, 112 municipalities and 272 partitions those services publish,
31
- * so a reader scoped to the one spelling its own sample carried would write the other into a row.
28
+ * All four readers accept both.
29
+ * Neither is a number under any jurisdiction's rules, and a reader scoped to one
30
+ * spelling would write the other spelling into a row.
32
31
  */
33
32
  const SIN_NUMERO = new Set(["s-n", "s/n"])
34
33
 
@@ -36,7 +35,7 @@ const SIN_NUMERO = new Set(["s-n", "s/n"])
36
35
  * Whether a designator value states that the address has no number.
37
36
  *
38
37
  * The whole value has to be the token.
39
- * A value that carries more, such as Gipuzkoa's `S/N-A`, `S/N-C` and `S/N-5`,
38
+ * A value that holds more, such as Gipuzkoa's `S/N-A`, `S/N-C` and `S/N-5`,
40
39
  * states something further and is kept as the publisher wrote it: what the trailing part
41
40
  * designates is not established, dropping it would merge several addresses of one building,
42
41
  * and rewriting it would state a number the publisher did not.
@@ -46,7 +45,7 @@ export function isSinNumero(value: string): boolean {
46
45
  }
47
46
 
48
47
  /**
49
- * The house number a Spanish cadastre states, or undefined where it states that there is none.
48
+ * The house number a Spanish cadastre states, or null where it states that there is none.
50
49
  *
51
50
  * @param types The publisher's own designator types, in the caller's order of precedence.
52
51
  * The Dirección General del Catastro writes the type as the element text `1`, while Navarra
@@ -55,10 +54,10 @@ export function isSinNumero(value: string): boolean {
55
54
  export function spanishHouseNumber(
56
55
  byType: ReadonlyMap<string, readonly string[]>,
57
56
  ...types: readonly string[]
58
- ): string | undefined {
57
+ ): string | null {
59
58
  const value = designator(byType, ...types)
60
59
 
61
- if (!value || isSinNumero(value)) return undefined
60
+ if (!value || isSinNumero(value)) return null
62
61
 
63
62
  return value
64
63
  }
@@ -72,9 +71,7 @@ export function spanishHouseNumber(
72
71
  * Where the cadastre holds no postcode it writes the same identifier with that segment empty,
73
72
  * `ES.SDGC.PD.55.101.` and `ES.GFA.PD.059.`, against no feature of that id.
74
73
  *
75
- * Those truncated references are the only unresolvable ones measured in either
76
- * file: 70 of Ceuta's 8,126 addresses carry one, while its thoroughfare
77
- * and administrative-unit references resolve 8,126 of 8,126 each.
74
+ * Those truncated references are the only unresolvable ones measured in either file.
78
75
  * A reader taking every unresolved reference as an absence would also swallow a genuinely
79
76
  * broken join, so the two are separated here and every other unresolved reference raises.
80
77
  */
@@ -92,27 +89,29 @@ export interface CadastralAddress {
92
89
  /**
93
90
  * The thoroughfare name the address references, absent where the publisher writes none.
94
91
  */
95
- street: string | undefined
92
+ street: string | null
96
93
  /**
97
94
  * The house number this cadastre's own designator type states.
98
95
  */
99
- house: string | undefined
96
+ house: string | null
100
97
  /**
101
98
  * The postal descriptor's code.
102
99
  */
103
- postcode: string | undefined
100
+ postcode: string | null
104
101
  /**
105
102
  * The municipality-level administrative unit's name.
106
103
  */
107
- locality: string | undefined
104
+ locality: string | null
108
105
  /**
109
- * The address-area name, which is a settlement within the municipality.
106
+ * The address-area name.
107
+ * It is a settlement within the municipality.
110
108
  */
111
- settlement: string | undefined
109
+ settlement: string | null
112
110
  /**
113
- * The publisher's own identifier for the address, which keys `source_id` where it exists.
111
+ * The publisher's own identifier for the address.
112
+ * It keys `source_id` where it exists.
114
113
  */
115
- addressID: string | undefined
114
+ addressID: string | null
116
115
  }
117
116
 
118
117
  /**
@@ -136,16 +135,17 @@ export interface CadastralSource {
136
135
  * The address area supplies a dependent locality only where the two differ.
137
136
  * The line renders in Spain's order.
138
137
  *
139
- * Composing that in each adapter repeated 42 lines four times.
138
+ * Each adapter would otherwise repeat those 42 lines four times.
140
139
  *
141
- * Returns `undefined` in two cases: the address carries neither a municipality
142
- * nor an address area, which would leave the row without a locality, or `formatAddressRow`
143
- * returns `undefined` for the components it was given.
140
+ * Returns `null` in two cases.
141
+ * The address holds neither a municipality nor an address area, so the row would have no locality.
142
+ *
143
+ * Otherwise `formatAddressRow` returns `null` for the components it was given.
144
144
  */
145
- export function cadastralRow(address: CadastralAddress, source: CadastralSource): CanonicalRow | undefined {
145
+ export function cadastralRow(address: CadastralAddress, source: CadastralSource): CanonicalRow | null {
146
146
  const place = address.locality ?? address.settlement
147
147
 
148
- if (!place) return undefined
148
+ if (!place) return null
149
149
 
150
150
  const components: CanonicalRow["components"] = {}
151
151
 
@@ -165,14 +165,14 @@ export function cadastralRow(address: CadastralAddress, source: CadastralSource)
165
165
 
166
166
  // The address area is a settlement within the municipality where the two names differ,
167
167
  // and repeats the municipality where they do not.
168
- // Writing the repetition would state a dependent locality the publisher does not hold.
168
+ // The repetition would state a dependent locality the publisher does not hold.
169
169
  if (address.settlement && address.locality && address.settlement !== address.locality) {
170
170
  components.dependent_locality = address.settlement
171
171
  }
172
172
 
173
173
  const rendered = formatAddressRow(components, "ES", { singleLine: true })
174
174
 
175
- if (!rendered) return undefined
175
+ if (!rendered) return null
176
176
 
177
177
  const { raw, components: aligned } = rendered
178
178
 
@@ -181,9 +181,9 @@ export function cadastralRow(address: CadastralAddress, source: CadastralSource)
181
181
  components: aligned,
182
182
  country: "ES",
183
183
  locale: "es-ES",
184
- // `register` is left to `runAdapter`, which stamps the adapter's own
185
- // declaration onto a row that omits it.
186
- // Setting it here would state per row what the adapter already states once.
184
+ // The row omits `register`.
185
+ // `runAdapter` stamps the adapter's own declaration onto it.
186
+ // A per-row `register` would repeat what the adapter already states once.
187
187
  source: source.adapterID,
188
188
  source_id: address.addressID
189
189
  ? `${source.adapterID}-${address.addressID}`