@mailwoman/resolver-wof-sqlite 10.0.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 (477) hide show
  1. package/README.md +9 -8
  2. package/lib/address/point/interpolation.ts +45 -39
  3. package/lib/address/point/schema.ts +17 -40
  4. package/lib/address/point.ts +316 -0
  5. package/lib/{address/index.ts → address.ts} +1 -1
  6. package/lib/ancestry/backfill.ts +20 -86
  7. package/lib/{ancestry/index.ts → ancestry.ts} +19 -15
  8. package/lib/build/candidate.ts +122 -174
  9. package/lib/build/population-corrections.ts +64 -0
  10. package/lib/build/slim.ts +44 -114
  11. package/lib/candidate/alias-bags.ts +16 -17
  12. package/lib/candidate/ancestors/schema.ts +77 -61
  13. package/lib/candidate/ancestors/sidecar.ts +15 -22
  14. package/lib/candidate/country-display-names.ts +6 -20
  15. package/lib/candidate/extract-fold.ts +10 -55
  16. package/lib/candidate/fts.ts +5 -23
  17. package/lib/candidate/importance.ts +65 -68
  18. package/lib/candidate/lookup.ts +124 -415
  19. package/lib/candidate/name-roles.ts +15 -33
  20. package/lib/candidate/own-name.ts +35 -32
  21. package/lib/candidate/place-attrs.ts +20 -13
  22. package/lib/candidate/schema.ts +29 -65
  23. package/lib/candidate/scoring.ts +54 -93
  24. package/lib/capital-schema.ts +21 -17
  25. package/lib/capitals.ts +29 -27
  26. package/lib/coincident-roles.ts +85 -55
  27. package/lib/convention/schema.ts +15 -16
  28. package/lib/convention.ts +144 -0
  29. package/lib/coverage-manifest-schema.ts +40 -45
  30. package/lib/currency-backfill.ts +34 -79
  31. package/lib/env.ts +1 -1
  32. package/lib/exact-match.ts +32 -21
  33. package/lib/extracts.ts +97 -74
  34. package/lib/fst/autocomplete.ts +54 -37
  35. package/lib/fst/builder.ts +37 -41
  36. package/lib/fst/deserialize-web.ts +16 -17
  37. package/lib/fst/format.ts +41 -23
  38. package/lib/fst/freshness.ts +43 -120
  39. package/lib/fst/matcher.ts +7 -5
  40. package/lib/fst/serialize.ts +54 -74
  41. package/lib/fst/types.ts +78 -75
  42. package/lib/{fst/index.ts → fst.ts} +1 -0
  43. package/lib/fts/query.ts +5 -36
  44. package/lib/fts.ts +280 -0
  45. package/lib/geonames/aliases.ts +73 -144
  46. package/lib/geonames/postal.ts +162 -71
  47. package/lib/index.ts +9 -8
  48. package/lib/interpolation.ts +48 -100
  49. package/lib/lookup.ts +155 -270
  50. package/lib/name-score.ts +9 -7
  51. package/lib/nsul/lookup.ts +37 -54
  52. package/lib/nsul/schema.ts +16 -43
  53. package/lib/paths.ts +159 -0
  54. package/lib/place-importance-schema.ts +62 -169
  55. package/lib/poi/lookup.ts +104 -121
  56. package/lib/poi/schema.ts +42 -26
  57. package/lib/polygon-schema.ts +10 -6
  58. package/lib/postal/city/alias/lookup.ts +22 -40
  59. package/lib/postal/city/alias/schema.ts +14 -10
  60. package/lib/postal/city/candidate-schema.ts +26 -20
  61. package/lib/postcode-point-lookup.ts +8 -27
  62. package/lib/primary-preference.ts +46 -126
  63. package/lib/proximity-rerank.ts +44 -33
  64. package/lib/ranking-weights.ts +105 -78
  65. package/lib/region-keys.ts +70 -42
  66. package/lib/reverse.ts +149 -86
  67. package/lib/schema.ts +73 -50
  68. package/lib/search-fetch.ts +90 -68
  69. package/lib/sqlite/convention-source.ts +15 -23
  70. package/lib/sqlite/utils.ts +19 -22
  71. package/lib/street/centroid/schema.ts +37 -42
  72. package/lib/street/{centroid/index.ts → centroid.ts} +16 -25
  73. package/lib/street/morphology/fst/builder.ts +60 -42
  74. package/lib/street/morphology/fst/loader.ts +40 -32
  75. package/lib/street/name-lookup.ts +45 -41
  76. package/lib/street/normalize.ts +88 -219
  77. package/lib/street/segment-schema.ts +116 -43
  78. package/lib/{street/index.ts → street.ts} +1 -1
  79. package/lib/types.ts +109 -150
  80. package/lib/unified-schema.ts +29 -29
  81. package/lib/uprn/existence.ts +30 -19
  82. package/lib/uprn/lookup.ts +29 -68
  83. package/lib/uprn/schema.ts +18 -40
  84. package/lib/weights-overlay-linker.ts +236 -252
  85. package/out/address/point/interpolation.d.ts +20 -23
  86. package/out/address/point/interpolation.d.ts.map +1 -1
  87. package/out/address/point/interpolation.js +42 -39
  88. package/out/address/point/interpolation.js.map +1 -1
  89. package/out/address/point/schema.d.ts +12 -35
  90. package/out/address/point/schema.d.ts.map +1 -1
  91. package/out/address/point/schema.js +3 -19
  92. package/out/address/point/schema.js.map +1 -1
  93. package/out/address/point.d.ts +57 -0
  94. package/out/address/point.d.ts.map +1 -0
  95. package/out/address/point.js +206 -0
  96. package/out/address/point.js.map +1 -0
  97. package/out/{address/index.js → address.d.ts} +2 -2
  98. package/out/address.d.ts.map +1 -0
  99. package/out/{address/index.d.ts → address.js} +2 -2
  100. package/out/address.js.map +1 -0
  101. package/out/ancestry/backfill.d.ts +11 -64
  102. package/out/ancestry/backfill.d.ts.map +1 -1
  103. package/out/ancestry/backfill.js +14 -74
  104. package/out/ancestry/backfill.js.map +1 -1
  105. package/out/ancestry.d.ts +49 -0
  106. package/out/ancestry.d.ts.map +1 -0
  107. package/out/ancestry.js +59 -0
  108. package/out/ancestry.js.map +1 -0
  109. package/out/build/candidate.d.ts +82 -112
  110. package/out/build/candidate.d.ts.map +1 -1
  111. package/out/build/candidate.js +17 -100
  112. package/out/build/candidate.js.map +1 -1
  113. package/out/build/population-corrections.d.ts +52 -0
  114. package/out/build/population-corrections.d.ts.map +1 -0
  115. package/out/build/population-corrections.js +40 -0
  116. package/out/build/population-corrections.js.map +1 -0
  117. package/out/build/slim.d.ts +8 -44
  118. package/out/build/slim.d.ts.map +1 -1
  119. package/out/build/slim.js +33 -94
  120. package/out/build/slim.js.map +1 -1
  121. package/out/candidate/alias-bags.d.ts +6 -6
  122. package/out/candidate/alias-bags.d.ts.map +1 -1
  123. package/out/candidate/alias-bags.js +16 -17
  124. package/out/candidate/alias-bags.js.map +1 -1
  125. package/out/candidate/ancestors/schema.d.ts +73 -57
  126. package/out/candidate/ancestors/schema.d.ts.map +1 -1
  127. package/out/candidate/ancestors/schema.js +56 -48
  128. package/out/candidate/ancestors/schema.js.map +1 -1
  129. package/out/candidate/ancestors/sidecar.d.ts +3 -8
  130. package/out/candidate/ancestors/sidecar.d.ts.map +1 -1
  131. package/out/candidate/ancestors/sidecar.js +15 -22
  132. package/out/candidate/ancestors/sidecar.js.map +1 -1
  133. package/out/candidate/country-display-names.d.ts +5 -15
  134. package/out/candidate/country-display-names.d.ts.map +1 -1
  135. package/out/candidate/country-display-names.js +6 -20
  136. package/out/candidate/country-display-names.js.map +1 -1
  137. package/out/candidate/extract-fold.d.ts +7 -15
  138. package/out/candidate/extract-fold.d.ts.map +1 -1
  139. package/out/candidate/extract-fold.js +5 -47
  140. package/out/candidate/extract-fold.js.map +1 -1
  141. package/out/candidate/fts.d.ts +5 -23
  142. package/out/candidate/fts.d.ts.map +1 -1
  143. package/out/candidate/fts.js +5 -23
  144. package/out/candidate/fts.js.map +1 -1
  145. package/out/candidate/importance.d.ts +60 -65
  146. package/out/candidate/importance.d.ts.map +1 -1
  147. package/out/candidate/importance.js +56 -63
  148. package/out/candidate/importance.js.map +1 -1
  149. package/out/candidate/lookup.d.ts +18 -55
  150. package/out/candidate/lookup.d.ts.map +1 -1
  151. package/out/candidate/lookup.js +82 -385
  152. package/out/candidate/lookup.js.map +1 -1
  153. package/out/candidate/name-roles.d.ts +9 -21
  154. package/out/candidate/name-roles.d.ts.map +1 -1
  155. package/out/candidate/name-roles.js +15 -33
  156. package/out/candidate/name-roles.js.map +1 -1
  157. package/out/candidate/own-name.d.ts +23 -25
  158. package/out/candidate/own-name.d.ts.map +1 -1
  159. package/out/candidate/own-name.js +35 -32
  160. package/out/candidate/own-name.js.map +1 -1
  161. package/out/candidate/place-attrs.d.ts +20 -13
  162. package/out/candidate/place-attrs.d.ts.map +1 -1
  163. package/out/candidate/place-attrs.js +4 -5
  164. package/out/candidate/place-attrs.js.map +1 -1
  165. package/out/candidate/schema.d.ts +27 -62
  166. package/out/candidate/schema.d.ts.map +1 -1
  167. package/out/candidate/schema.js +10 -22
  168. package/out/candidate/schema.js.map +1 -1
  169. package/out/candidate/scoring.d.ts +7 -8
  170. package/out/candidate/scoring.d.ts.map +1 -1
  171. package/out/candidate/scoring.js +52 -89
  172. package/out/candidate/scoring.js.map +1 -1
  173. package/out/capital-schema.d.ts +21 -17
  174. package/out/capital-schema.d.ts.map +1 -1
  175. package/out/capital-schema.js +17 -15
  176. package/out/capital-schema.js.map +1 -1
  177. package/out/capitals.d.ts +27 -25
  178. package/out/capitals.d.ts.map +1 -1
  179. package/out/capitals.js +23 -21
  180. package/out/capitals.js.map +1 -1
  181. package/out/coincident-roles.d.ts +60 -43
  182. package/out/coincident-roles.d.ts.map +1 -1
  183. package/out/coincident-roles.js +72 -50
  184. package/out/coincident-roles.js.map +1 -1
  185. package/out/convention/schema.d.ts +14 -14
  186. package/out/convention/schema.d.ts.map +1 -1
  187. package/out/convention/schema.js +6 -4
  188. package/out/convention/schema.js.map +1 -1
  189. package/out/convention.d.ts +97 -0
  190. package/out/convention.d.ts.map +1 -0
  191. package/out/convention.js +81 -0
  192. package/out/convention.js.map +1 -0
  193. package/out/coverage-manifest-schema.d.ts +34 -39
  194. package/out/coverage-manifest-schema.d.ts.map +1 -1
  195. package/out/coverage-manifest-schema.js +25 -34
  196. package/out/coverage-manifest-schema.js.map +1 -1
  197. package/out/currency-backfill.d.ts +16 -38
  198. package/out/currency-backfill.d.ts.map +1 -1
  199. package/out/currency-backfill.js +19 -46
  200. package/out/currency-backfill.js.map +1 -1
  201. package/out/env.d.ts +1 -1
  202. package/out/env.js +1 -1
  203. package/out/exact-match.d.ts +19 -10
  204. package/out/exact-match.d.ts.map +1 -1
  205. package/out/exact-match.js +32 -21
  206. package/out/exact-match.js.map +1 -1
  207. package/out/extracts.d.ts +66 -55
  208. package/out/extracts.d.ts.map +1 -1
  209. package/out/extracts.js +63 -55
  210. package/out/extracts.js.map +1 -1
  211. package/out/fst/autocomplete.d.ts +29 -21
  212. package/out/fst/autocomplete.d.ts.map +1 -1
  213. package/out/fst/autocomplete.js +39 -28
  214. package/out/fst/autocomplete.js.map +1 -1
  215. package/out/fst/builder.d.ts.map +1 -1
  216. package/out/fst/builder.js +37 -41
  217. package/out/fst/builder.js.map +1 -1
  218. package/out/fst/deserialize-web.d.ts +4 -4
  219. package/out/fst/deserialize-web.d.ts.map +1 -1
  220. package/out/fst/deserialize-web.js +15 -16
  221. package/out/fst/deserialize-web.js.map +1 -1
  222. package/out/fst/format.d.ts +41 -23
  223. package/out/fst/format.d.ts.map +1 -1
  224. package/out/fst/format.js +41 -23
  225. package/out/fst/format.js.map +1 -1
  226. package/out/fst/freshness.d.ts +19 -81
  227. package/out/fst/freshness.d.ts.map +1 -1
  228. package/out/fst/freshness.js +31 -94
  229. package/out/fst/freshness.js.map +1 -1
  230. package/out/fst/matcher.d.ts +5 -4
  231. package/out/fst/matcher.d.ts.map +1 -1
  232. package/out/fst/matcher.js +2 -2
  233. package/out/fst/matcher.js.map +1 -1
  234. package/out/fst/serialize.d.ts +28 -28
  235. package/out/fst/serialize.d.ts.map +1 -1
  236. package/out/fst/serialize.js +53 -71
  237. package/out/fst/serialize.js.map +1 -1
  238. package/out/fst/types.d.ts +78 -74
  239. package/out/fst/types.d.ts.map +1 -1
  240. package/out/fst/types.js +1 -4
  241. package/out/fst/types.js.map +1 -1
  242. package/out/{fst/index.js → fst.d.ts} +2 -1
  243. package/out/fst.d.ts.map +1 -0
  244. package/out/{fst/index.d.ts → fst.js} +2 -1
  245. package/out/fst.js.map +1 -0
  246. package/out/fts/query.d.ts +2 -27
  247. package/out/fts/query.d.ts.map +1 -1
  248. package/out/fts/query.js +5 -36
  249. package/out/fts/query.js.map +1 -1
  250. package/out/fts.d.ts +126 -0
  251. package/out/fts.d.ts.map +1 -0
  252. package/out/fts.js +188 -0
  253. package/out/fts.js.map +1 -0
  254. package/out/geonames/aliases.d.ts +26 -62
  255. package/out/geonames/aliases.d.ts.map +1 -1
  256. package/out/geonames/aliases.js +45 -117
  257. package/out/geonames/aliases.js.map +1 -1
  258. package/out/geonames/postal.d.ts +84 -44
  259. package/out/geonames/postal.d.ts.map +1 -1
  260. package/out/geonames/postal.js +115 -73
  261. package/out/geonames/postal.js.map +1 -1
  262. package/out/{geonames/index.js → geonames.d.ts} +1 -1
  263. package/out/geonames.d.ts.map +1 -0
  264. package/out/{geonames/index.d.ts → geonames.js} +1 -1
  265. package/out/geonames.js.map +1 -0
  266. package/out/index.d.ts +9 -8
  267. package/out/index.d.ts.map +1 -1
  268. package/out/index.js +6 -5
  269. package/out/index.js.map +1 -1
  270. package/out/interpolation.d.ts +18 -55
  271. package/out/interpolation.d.ts.map +1 -1
  272. package/out/interpolation.js +27 -69
  273. package/out/interpolation.js.map +1 -1
  274. package/out/lookup.d.ts +23 -51
  275. package/out/lookup.d.ts.map +1 -1
  276. package/out/lookup.js +136 -234
  277. package/out/lookup.js.map +1 -1
  278. package/out/name-score.d.ts +2 -2
  279. package/out/name-score.d.ts.map +1 -1
  280. package/out/name-score.js +9 -7
  281. package/out/name-score.js.map +1 -1
  282. package/out/nsul/lookup.d.ts +33 -34
  283. package/out/nsul/lookup.d.ts.map +1 -1
  284. package/out/nsul/lookup.js +26 -40
  285. package/out/nsul/lookup.js.map +1 -1
  286. package/out/nsul/schema.d.ts +16 -43
  287. package/out/nsul/schema.d.ts.map +1 -1
  288. package/out/nsul/schema.js +9 -35
  289. package/out/nsul/schema.js.map +1 -1
  290. package/out/{nsul/index.d.ts → nsul.d.ts} +1 -1
  291. package/out/nsul.d.ts.map +1 -0
  292. package/out/{nsul/index.js → nsul.js} +1 -1
  293. package/out/nsul.js.map +1 -0
  294. package/out/paths.d.ts +124 -0
  295. package/out/paths.d.ts.map +1 -0
  296. package/out/paths.js +104 -0
  297. package/out/paths.js.map +1 -0
  298. package/out/place-importance-schema.d.ts +51 -143
  299. package/out/place-importance-schema.d.ts.map +1 -1
  300. package/out/place-importance-schema.js +28 -143
  301. package/out/place-importance-schema.js.map +1 -1
  302. package/out/poi/lookup.d.ts +40 -47
  303. package/out/poi/lookup.d.ts.map +1 -1
  304. package/out/poi/lookup.js +69 -96
  305. package/out/poi/lookup.js.map +1 -1
  306. package/out/poi/schema.d.ts +41 -25
  307. package/out/poi/schema.d.ts.map +1 -1
  308. package/out/poi/schema.js +25 -17
  309. package/out/poi/schema.js.map +1 -1
  310. package/out/{poi/index.js → poi.d.ts} +1 -1
  311. package/out/poi.d.ts.map +1 -0
  312. package/out/{poi/index.d.ts → poi.js} +1 -1
  313. package/out/poi.js.map +1 -0
  314. package/out/polygon-schema.d.ts +10 -6
  315. package/out/polygon-schema.d.ts.map +1 -1
  316. package/out/polygon-schema.js +2 -2
  317. package/out/polygon-schema.js.map +1 -1
  318. package/out/postal/city/alias/lookup.d.ts +20 -23
  319. package/out/postal/city/alias/lookup.d.ts.map +1 -1
  320. package/out/postal/city/alias/lookup.js +17 -30
  321. package/out/postal/city/alias/lookup.js.map +1 -1
  322. package/out/postal/city/alias/schema.d.ts +14 -10
  323. package/out/postal/city/alias/schema.d.ts.map +1 -1
  324. package/out/postal/city/alias/schema.js +10 -8
  325. package/out/postal/city/alias/schema.js.map +1 -1
  326. package/out/postal/city/candidate-schema.d.ts +25 -19
  327. package/out/postal/city/candidate-schema.d.ts.map +1 -1
  328. package/out/postal/city/candidate-schema.js +21 -17
  329. package/out/postal/city/candidate-schema.js.map +1 -1
  330. package/out/{postal/index.d.ts → postal.d.ts} +1 -1
  331. package/out/postal.d.ts.map +1 -0
  332. package/out/{postal/index.js → postal.js} +1 -1
  333. package/out/postal.js.map +1 -0
  334. package/out/postcode-point-lookup.d.ts +6 -24
  335. package/out/postcode-point-lookup.d.ts.map +1 -1
  336. package/out/postcode-point-lookup.js +5 -17
  337. package/out/postcode-point-lookup.js.map +1 -1
  338. package/out/primary-preference.d.ts +38 -92
  339. package/out/primary-preference.d.ts.map +1 -1
  340. package/out/primary-preference.js +15 -99
  341. package/out/primary-preference.js.map +1 -1
  342. package/out/proximity-rerank.d.ts +41 -30
  343. package/out/proximity-rerank.d.ts.map +1 -1
  344. package/out/proximity-rerank.js +38 -29
  345. package/out/proximity-rerank.js.map +1 -1
  346. package/out/ranking-weights.d.ts +98 -64
  347. package/out/ranking-weights.d.ts.map +1 -1
  348. package/out/ranking-weights.js +26 -25
  349. package/out/ranking-weights.js.map +1 -1
  350. package/out/region-keys.d.ts +50 -31
  351. package/out/region-keys.d.ts.map +1 -1
  352. package/out/region-keys.js +68 -40
  353. package/out/region-keys.js.map +1 -1
  354. package/out/reverse.d.ts +78 -50
  355. package/out/reverse.d.ts.map +1 -1
  356. package/out/reverse.js +98 -61
  357. package/out/reverse.js.map +1 -1
  358. package/out/schema.d.ts +72 -49
  359. package/out/schema.d.ts.map +1 -1
  360. package/out/schema.js +4 -5
  361. package/out/schema.js.map +1 -1
  362. package/out/search-fetch.d.ts +16 -12
  363. package/out/search-fetch.d.ts.map +1 -1
  364. package/out/search-fetch.js +83 -63
  365. package/out/search-fetch.js.map +1 -1
  366. package/out/sqlite/convention-source.d.ts +12 -16
  367. package/out/sqlite/convention-source.d.ts.map +1 -1
  368. package/out/sqlite/convention-source.js +13 -22
  369. package/out/sqlite/convention-source.js.map +1 -1
  370. package/out/sqlite/utils.d.ts +19 -19
  371. package/out/sqlite/utils.d.ts.map +1 -1
  372. package/out/sqlite/utils.js +14 -15
  373. package/out/sqlite/utils.js.map +1 -1
  374. package/out/street/centroid/schema.d.ts +37 -42
  375. package/out/street/centroid/schema.d.ts.map +1 -1
  376. package/out/street/centroid/schema.js +9 -21
  377. package/out/street/centroid/schema.js.map +1 -1
  378. package/out/street/centroid.d.ts +30 -0
  379. package/out/street/centroid.d.ts.map +1 -0
  380. package/out/street/{centroid/index.js → centroid.js} +13 -24
  381. package/out/street/centroid.js.map +1 -0
  382. package/out/street/morphology/fst/builder.d.ts +20 -10
  383. package/out/street/morphology/fst/builder.d.ts.map +1 -1
  384. package/out/street/morphology/fst/builder.js +44 -34
  385. package/out/street/morphology/fst/builder.js.map +1 -1
  386. package/out/street/morphology/fst/loader.d.ts +33 -26
  387. package/out/street/morphology/fst/loader.d.ts.map +1 -1
  388. package/out/street/morphology/fst/loader.js +23 -22
  389. package/out/street/morphology/fst/loader.js.map +1 -1
  390. package/out/street/name-lookup.d.ts +24 -18
  391. package/out/street/name-lookup.d.ts.map +1 -1
  392. package/out/street/name-lookup.js +34 -35
  393. package/out/street/name-lookup.js.map +1 -1
  394. package/out/street/normalize.d.ts +35 -136
  395. package/out/street/normalize.d.ts.map +1 -1
  396. package/out/street/normalize.js +77 -194
  397. package/out/street/normalize.js.map +1 -1
  398. package/out/street/segment-schema.d.ts +79 -39
  399. package/out/street/segment-schema.d.ts.map +1 -1
  400. package/out/street/segment-schema.js +71 -21
  401. package/out/street/segment-schema.js.map +1 -1
  402. package/out/{street/index.js → street.d.ts} +2 -2
  403. package/out/street.d.ts.map +1 -0
  404. package/out/{street/index.d.ts → street.js} +2 -2
  405. package/out/street.js.map +1 -0
  406. package/out/types.d.ts +84 -149
  407. package/out/types.d.ts.map +1 -1
  408. package/out/types.js +0 -6
  409. package/out/types.js.map +1 -1
  410. package/out/unified-schema.d.ts +8 -12
  411. package/out/unified-schema.d.ts.map +1 -1
  412. package/out/unified-schema.js +29 -29
  413. package/out/unified-schema.js.map +1 -1
  414. package/out/uprn/existence.d.ts +28 -17
  415. package/out/uprn/existence.d.ts.map +1 -1
  416. package/out/uprn/existence.js +26 -16
  417. package/out/uprn/existence.js.map +1 -1
  418. package/out/uprn/lookup.d.ts +14 -44
  419. package/out/uprn/lookup.d.ts.map +1 -1
  420. package/out/uprn/lookup.js +21 -57
  421. package/out/uprn/lookup.js.map +1 -1
  422. package/out/uprn/schema.d.ts +18 -40
  423. package/out/uprn/schema.d.ts.map +1 -1
  424. package/out/uprn/schema.js +10 -32
  425. package/out/uprn/schema.js.map +1 -1
  426. package/out/{uprn/index.d.ts → uprn.d.ts} +1 -1
  427. package/out/uprn.d.ts.map +1 -0
  428. package/out/{uprn/index.js → uprn.js} +1 -1
  429. package/out/uprn.js.map +1 -0
  430. package/out/weights-overlay-linker.d.ts +138 -144
  431. package/out/weights-overlay-linker.d.ts.map +1 -1
  432. package/out/weights-overlay-linker.js +105 -159
  433. package/out/weights-overlay-linker.js.map +1 -1
  434. package/package.json +91 -596
  435. package/lib/address/point/index.ts +0 -328
  436. package/lib/convention/index.ts +0 -154
  437. package/lib/fts/index.ts +0 -361
  438. package/out/address/index.d.ts.map +0 -1
  439. package/out/address/index.js.map +0 -1
  440. package/out/address/point/index.d.ts +0 -53
  441. package/out/address/point/index.d.ts.map +0 -1
  442. package/out/address/point/index.js +0 -222
  443. package/out/address/point/index.js.map +0 -1
  444. package/out/ancestry/index.d.ts +0 -45
  445. package/out/ancestry/index.d.ts.map +0 -1
  446. package/out/ancestry/index.js +0 -55
  447. package/out/ancestry/index.js.map +0 -1
  448. package/out/convention/index.d.ts +0 -106
  449. package/out/convention/index.d.ts.map +0 -1
  450. package/out/convention/index.js +0 -93
  451. package/out/convention/index.js.map +0 -1
  452. package/out/fst/index.d.ts.map +0 -1
  453. package/out/fst/index.js.map +0 -1
  454. package/out/fts/index.d.ts +0 -184
  455. package/out/fts/index.d.ts.map +0 -1
  456. package/out/fts/index.js +0 -277
  457. package/out/fts/index.js.map +0 -1
  458. package/out/geonames/index.d.ts.map +0 -1
  459. package/out/geonames/index.js.map +0 -1
  460. package/out/nsul/index.d.ts.map +0 -1
  461. package/out/nsul/index.js.map +0 -1
  462. package/out/poi/index.d.ts.map +0 -1
  463. package/out/poi/index.js.map +0 -1
  464. package/out/postal/index.d.ts.map +0 -1
  465. package/out/postal/index.js.map +0 -1
  466. package/out/street/centroid/index.d.ts +0 -40
  467. package/out/street/centroid/index.d.ts.map +0 -1
  468. package/out/street/centroid/index.js.map +0 -1
  469. package/out/street/index.d.ts.map +0 -1
  470. package/out/street/index.js.map +0 -1
  471. package/out/uprn/index.d.ts.map +0 -1
  472. package/out/uprn/index.js.map +0 -1
  473. /package/lib/{geonames/index.ts → geonames.ts} +0 -0
  474. /package/lib/{nsul/index.ts → nsul.ts} +0 -0
  475. /package/lib/{poi/index.ts → poi.ts} +0 -0
  476. /package/lib/{postal/index.ts → postal.ts} +0 -0
  477. /package/lib/{uprn/index.ts → uprn.ts} +0 -0
@@ -3,36 +3,19 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  *
6
- * Pass 1c of the candidate build (#1737): resurrect deprecated-with-no-successor WOF localities that a second
7
- * source independently attests. Extracted from `build-candidate.ts` as a cohesive unit — the checks, their measured
8
- * constants, and the GeoNames dump reader live together here; the build calls {@link resurrectCurrencyHoles} once,
9
- * between the primaries pass and the alias pass.
6
+ * Restores deprecated WOF localities only when an independent source attests them.
10
7
  */
11
8
  import type { DatabaseClient } from "@mailwoman/sqlite/client";
9
+ import { type PathBuilderLike } from "path-ts";
12
10
  import type { loadImportanceIndex } from "#candidate/importance";
13
11
  import type { PlaceAttrs, StageRow } from "#candidate/place-attrs";
14
12
  import type { CandidateDatabase } from "#candidate/schema";
15
13
  import type { WOFDatabase } from "#schema";
16
14
  /**
17
- * Pass 1c (#1737): resurrect deprecated-with-no-successor localities that a second source independently attests.
18
- *
19
- * WOF deprecations WITH a successor need nothing — the successor indexes. A deprecation with `is_superseded = 0` on a
20
- * populated place is the shape of an upstream mistake (Rochester Kent, Aldershot, Telford; 120 GB localities alone),
21
- * and it is indistinguishable from a correct pruning at this layer without outside evidence. So every resurrection
22
- * requires all three conditions, positive evidence only:
23
- *
24
- * 1. NO live same-name spr row of any placetype within {@link CURRENCY_BACKFILL_RADIUS_KM} of the dead record — a live row
25
- * means the place is alive (possibly under another placetype) and there is no hole. A DISTANT same-name row is a
26
- * namesake and does not block.
27
- * 2. A GeoNames feature-class-P attestation of the same folded name within the radius.
28
- * 3. The attestor at or above {@link CURRENCY_BACKFILL_POP_FLOOR}.
29
- *
30
- * The staged row keeps the WOF identity — id, name, centroid, bbox, region ancestry — because the dead record's own
31
- * data is not what is wrong with it. GeoNames contributes exactly two things: the attestation, and the population that
32
- * lets the row stand in prominence races (the dead record's own population is absent). Each name is judged once per
33
- * country; the resurrected place joins `attrs`, so the alias pass explodes its alt names like any primary's.
15
+ * Restore a deprecated locality only when no nearby live namesake exists and GeoNames
16
+ * attests the same folded name above {@link CURRENCY_BACKFILL_POP_FLOOR}.
34
17
  */
35
- export interface CurrencyBackfillOutcomes {
18
+ export interface CurrencyBackfillResults {
36
19
  judged: number;
37
20
  blocked: number;
38
21
  unattested: number;
@@ -40,50 +23,45 @@ export interface CurrencyBackfillOutcomes {
40
23
  resurrected: number;
41
24
  }
42
25
  /**
43
- * One country's read of the check — every dead name judged, by outcome and by the dead row's placetype — so a census
44
- * can say what a wider dead-row query admits before a build carries it.
26
+ * One country's read of the check — every dead name judged, by result and by the dead
27
+ * row's placetype — so a census can say what a wider query admits.
45
28
  */
46
- export interface CurrencyBackfillCountryReport extends CurrencyBackfillOutcomes {
29
+ export interface CurrencyBackfillCountryReport extends CurrencyBackfillResults {
47
30
  country: string;
48
31
  deadPlacetypes: readonly string[];
49
32
  dumpPresent: boolean;
50
- byDeadPlacetype: Record<string, CurrencyBackfillOutcomes>;
33
+ byDeadPlacetype: Record<string, CurrencyBackfillResults>;
51
34
  /**
52
- * The first resurrected names, `placetype:name`, so a census reads what a wider query admits — capped, because the
53
- * report is a receipt and not the table.
35
+ * The first resurrected names, `placetype:name`, capped because the report is a receipt and not the table.
54
36
  */
55
37
  sample: string[];
56
38
  }
57
39
  /**
58
- * The placetypes a dead row may carry to be judged at all. `locality` is the shipped default; `localadmin` is the
59
- * second cause #1746 named (one GB row of seventeen) and is admitted through this option once its census is read.
40
+ * The placetypes a dead row may have to be judged at all; `locality` is the shipped default.
60
41
  */
61
42
  export declare const DEFAULT_DEAD_PLACETYPES: readonly string[];
62
43
  export declare function resurrectCurrencyHoles(ctx: {
63
44
  src: DatabaseClient<WOFDatabase>;
64
45
  /**
65
- * The candidate build's transaction. Required unless `dryRun` — a dry run judges every row and stages nothing.
46
+ * The candidate build's transaction, required unless `dryRun`.
66
47
  */
67
48
  tx?: DatabaseClient<CandidateDatabase>;
68
- geonamesDir: string;
49
+ geonamesDir: PathBuilderLike;
69
50
  countries: readonly string[];
70
51
  attrs: Map<number, PlaceAttrs>;
71
52
  ccID: (code: string | null) => number;
72
53
  ptID: (pt: string | null) => number;
73
54
  regionOf: Map<number, number>;
74
- importance: ReturnType<typeof loadImportanceIndex> | undefined;
55
+ importance: ReturnType<typeof loadImportanceIndex> | null;
75
56
  stageRow: StageRow;
76
57
  progress: (phase: string, message: string) => void;
77
- /**
78
- * Which dead placetypes are judged. Default {@link DEFAULT_DEAD_PLACETYPES}.
79
- */
80
58
  deadPlacetypes?: readonly string[];
81
59
  /**
82
- * Judge and count, stage nothing — the census mode. No transaction is opened.
60
+ * Judge and count while staging no row and opening no transaction.
83
61
  */
84
62
  dryRun?: boolean;
85
63
  /**
86
- * Receives one report per country judged (a country with no dump or no dead rows reports zero outcomes).
64
+ * Receives one report per country judged (a country with no dump or no dead rows reports zero results).
87
65
  */
88
66
  onCountry?: (report: CurrencyBackfillCountryReport) => void;
89
67
  }): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"currency-backfill.d.ts","sourceRoot":"","sources":["../lib/currency-backfill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAI9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAmB1C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,wBAAwB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,6BAA8B,SAAQ,wBAAwB;IAC9E,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,WAAW,EAAE,OAAO,CAAA;IACpB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAA;IACzD;;;OAGG;IACH,MAAM,EAAE,MAAM,EAAE,CAAA;CAChB;AAID;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAAiB,CAAA;AAMtE,wBAAsB,sBAAsB,CAAC,GAAG,EAAE;IACjD,GAAG,EAAE,cAAc,CAAC,WAAW,CAAC,CAAA;IAChC;;OAEG;IACH,EAAE,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAA;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAC9B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAA;IACrC,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAA;IACnC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,UAAU,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,GAAG,SAAS,CAAA;IAC9D,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAClD;;OAEG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,6BAA6B,KAAK,IAAI,CAAA;CAC3D,GAAG,OAAO,CAAC,MAAM,CAAC,CAmNlB"}
1
+ {"version":3,"file":"currency-backfill.d.ts","sourceRoot":"","sources":["../lib/currency-backfill.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,KAAK,eAAe,EAAe,MAAM,SAAS,CAAA;AAG3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAO1C;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACvC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,6BAA8B,SAAQ,uBAAuB;IAC7E,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,WAAW,EAAE,OAAO,CAAA;IACpB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IACxD;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAA;CAChB;AAID;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAAiB,CAAA;AAMtE,wBAAsB,sBAAsB,CAAC,GAAG,EAAE;IACjD,GAAG,EAAE,cAAc,CAAC,WAAW,CAAC,CAAA;IAChC;;OAEG;IACH,EAAE,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAA;IACtC,WAAW,EAAE,eAAe,CAAA;IAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAC9B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAA;IACrC,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAA;IACnC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,UAAU,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,GAAG,IAAI,CAAA;IACzD,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAElD,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,6BAA6B,KAAK,IAAI,CAAA;CAC3D,GAAG,OAAO,CAAC,MAAM,CAAC,CAwMlB"}
@@ -3,38 +3,22 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  *
6
- * Pass 1c of the candidate build (#1737): resurrect deprecated-with-no-successor WOF localities that a second
7
- * source independently attests. Extracted from `build-candidate.ts` as a cohesive unit — the checks, their measured
8
- * constants, and the GeoNames dump reader live together here; the build calls {@link resurrectCurrencyHoles} once,
9
- * between the primaries pass and the alias pass.
6
+ * Restores deprecated WOF localities only when an independent source attests them.
10
7
  */
11
- import { pathExists } from "@mailwoman/core/fs/readers";
8
+ import { pathExists } from "@mailwoman/core/fs/readers/stat";
12
9
  import { isStrictlyFiner } from "@mailwoman/core/resources/whosonfirst";
13
10
  import { haversineKm } from "@mailwoman/spatial";
14
11
  import { resolvePath } from "path-ts";
15
12
  import { TSVSpliterator } from "spliterator";
16
13
  import { normalizeLocalityForKey } from "#street/normalize";
17
- /**
18
- * Corroboration radius for the currency backfill (#1737), km — both for the live-near blocker and the GeoNames
19
- * attestation. Measured basis (2026-08-19 prototype, GB locality slice): at 10 km, 20 of 108 dead names resurrect —
20
- * Rochester (Kent), Aldershot, Staines, Telford, Ebbw Vale among them — while the `Birmingham/Wolverhampton/…`
21
- * conurbation blobs stay dead (no attestation) and Swansea/Wrexham stay out because a live same-name row already serves
22
- * them within the radius.
23
- */
24
14
  const CURRENCY_BACKFILL_RADIUS_KM = 10;
25
- /**
26
- * Minimum attestor population for a resurrection. The same prototype measured 44 of 108 dead GB names attested but
27
- * under this floor — hamlet-scale ghosts whose absence from the index nobody has reported. A floor keeps the pass
28
- * answering the measured defect (real settlements) rather than re-importing the tail WOF chose to prune.
29
- */
30
15
  const CURRENCY_BACKFILL_POP_FLOOR = 1000;
31
16
  const REPORT_SAMPLE_SIZE = 25;
32
17
  /**
33
- * The placetypes a dead row may carry to be judged at all. `locality` is the shipped default; `localadmin` is the
34
- * second cause #1746 named (one GB row of seventeen) and is admitted through this option once its census is read.
18
+ * The placetypes a dead row may have to be judged at all; `locality` is the shipped default.
35
19
  */
36
20
  export const DEFAULT_DEAD_PLACETYPES = ["locality"];
37
- function emptyOutcomes() {
21
+ function emptyResults() {
38
22
  return { judged: 0, blocked: 0, unattested: 0, floored: 0, resurrected: 0 };
39
23
  }
40
24
  export async function resurrectCurrencyHoles(ctx) {
@@ -56,7 +40,7 @@ export async function resurrectCurrencyHoles(ctx) {
56
40
  country: cc,
57
41
  deadPlacetypes,
58
42
  dumpPresent: await pathExists(dumpPath),
59
- ...emptyOutcomes(),
43
+ ...emptyResults(),
60
44
  byDeadPlacetype: {},
61
45
  sample: [],
62
46
  };
@@ -65,17 +49,17 @@ export async function resurrectCurrencyHoles(ctx) {
65
49
  ctx.onCountry?.(report);
66
50
  continue;
67
51
  }
68
- // Dead rows FIRST: a country with no deprecated-no-successor localities needs no attestors at all, and
69
- // loading a national dump to judge zero rows is pure heap pressure on a build already near its ceiling
70
- // (the first live run OOM'd in a later pass with JP/KR dumps loaded for 0 dead names each).
52
+ // Read dead rows first.
53
+ // A country with no dead names then avoids loading its national dump.
54
+ // That avoids heap pressure on a build near its limit.
71
55
  const dead = deadStmt.all(cc, ...deadPlacetypes);
72
56
  if (!dead.length) {
73
57
  ctx.progress("currency-backfill", `${cc}: 0 dead names — dump not loaded`);
74
58
  ctx.onCountry?.(report);
75
59
  continue;
76
60
  }
77
- // Only the dead names' own folded keys can ever be probed, so only those keys are worth holding —
78
- // the rest of the national dump streams through without residency.
61
+ // Only the dead names' own folded keys can ever be probed, so the rest of the
62
+ // national dump streams through without residency.
79
63
  const deadKeys = new Set();
80
64
  for (const d of dead) {
81
65
  const k = normalizeLocalityForKey(String(d.name ?? ""));
@@ -83,8 +67,7 @@ export async function resurrectCurrencyHoles(ctx) {
83
67
  deadKeys.add(k);
84
68
  }
85
69
  }
86
- // Folded name → P-class attestors. GeoNames columns by index: 1 name, 2 ascii, 4 lat, 5 lon,
87
- // 6 feature_class, 14 population.
70
+ // GeoNames columns by index: 1 name, 2 ascii, 4 lat, 5 lon, 6 feature_class, 14 population.
88
71
  const attestors = new Map();
89
72
  for await (const f of TSVSpliterator.fromAsync(dumpPath, { header: false })) {
90
73
  if (f[6] !== "P")
@@ -104,10 +87,10 @@ export async function resurrectCurrencyHoles(ctx) {
104
87
  }
105
88
  }
106
89
  const seen = new Set();
107
- const count = (deadPlacetype, outcome) => {
108
- report[outcome] += 1;
109
- const bucket = (report.byDeadPlacetype[deadPlacetype] ??= emptyOutcomes());
110
- bucket[outcome] += 1;
90
+ const count = (deadPlacetype, result) => {
91
+ report[result] += 1;
92
+ const bucket = (report.byDeadPlacetype[deadPlacetype] ??= emptyResults());
93
+ bucket[result] += 1;
111
94
  };
112
95
  if (!dryRun) {
113
96
  ctx.tx.exec("BEGIN");
@@ -118,28 +101,18 @@ export async function resurrectCurrencyHoles(ctx) {
118
101
  if (!pkey || seen.has(pkey))
119
102
  continue;
120
103
  seen.add(pkey);
121
- // Read from the row: the query admits whatever `deadPlacetypes` names, and the rank comparison below must
122
- // judge each candidate against ITS dead rung, never a hardcoded one.
104
+ // The query admits whatever `deadPlacetypes` names, so the rank comparison
105
+ // judges each candidate against its own dead rung.
123
106
  const deadPlacetype = String(d.placetype ?? "locality");
124
107
  count(deadPlacetype, "judged");
125
108
  const dLat = Number(d.latitude);
126
109
  const dLon = Number(d.longitude);
127
- // A live row blocks only when it is AT LEAST AS COARSE as the dead one. The original check compared name and
128
- // distance alone, on the premise that a nearby same-name row means "the place is alive under another
129
- // placetype" — true for a place recorded twice, false for a placetype DEMOTION, which is the shape that
130
- // actually occurs: WOF retired `Gillingham` the locality (pop 101,187) and kept `Gillingham` the
131
- // neighbourhood 3.2 km away, and the check read the surviving CHILD as covering its own dead parent.
132
- // Sixteen of seventeen GB refusals had exactly that shape (#1746).
133
- //
134
- // An UNRANKED placetype blocks, which is the conservative direction: this check's failure mode is inventing
135
- // a place, so a row we cannot rank is treated as covering rather than waved through.
110
+ // A live row blocks unless it is strictly finer than the dead one.
111
+ // An unranked placetype also blocks because the failure mode is inventing a place.
136
112
  const liveNear = liveStmt.all(cc, name).some((row) => {
137
113
  if (haversineKm(dLat, dLon, Number(row.latitude), Number(row.longitude)) > CURRENCY_BACKFILL_RADIUS_KM) {
138
114
  return false;
139
115
  }
140
- // Blocks UNLESS the live row is strictly finer. The equal rung must still block — a live `locality`
141
- // covers a dead `locality` — and an unranked placetype blocks too, since this check's failure mode
142
- // is inventing a place.
143
116
  return isStrictlyFiner(String(row.placetype ?? ""), deadPlacetype) !== true;
144
117
  });
145
118
  if (liveNear) {
@@ -1 +1 @@
1
- {"version":3,"file":"currency-backfill.js","sourceRoot":"","sources":["../lib/currency-backfill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"currency-backfill.js","sourceRoot":"","sources":["../lib/currency-backfill.ts"],"names":[],"mappings":"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"}
package/out/env.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  *
6
- * Environment variables naming the WOF SQLite artifacts this resolver opens, and the development weights the overlay
6
+ * Environment variables name the WOF SQLite artifacts this resolver opens and the development weights the overlay
7
7
  * linker materializes. CLI flags (`--resolve-db`, …) override these at the call site.
8
8
  */
9
9
  import { z } from "zod";
package/out/env.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  *
6
- * Environment variables naming the WOF SQLite artifacts this resolver opens, and the development weights the overlay
6
+ * Environment variables name the WOF SQLite artifacts this resolver opens and the development weights the overlay
7
7
  * linker materializes. CLI flags (`--resolve-db`, …) override these at the call site.
8
8
  */
9
9
  import { $public as corePublic, liveEnv } from "@mailwoman/core/env";
@@ -3,23 +3,32 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  *
6
- * The exact-match tier's name probes — the two case-folded equality lookups that decide whether a
6
+ * The exact-match tier's name probes, the two case-folded equality lookups that decide whether a
7
7
  * candidate holds the query text as its own name, an alias, or an official name.
8
8
  */
9
9
  import type { DatabaseClient } from "@mailwoman/sqlite/client";
10
10
  /**
11
- * Among `ids`, return the subset whose name OR any alias equals `text` case-insensitively — the exact-match tier for
12
- * ranking. One indexed query over `<schema>.names`. When the extract has no `names` table (a slim DB built with
13
- * `dropNames`, or a postcode-only extract), fall back to the self-contained `place_search` FTS content: its `alt_names`
14
- * column is the same alias set joined on the boundary-preserving `ALIAS_SEPARATOR` (#523), so `aliasBagExactMatch`
15
- * recovers the exact alias tier ("New York City" → New York) that the dropped `names` table used to provide.
11
+ * Among `ids`, return the subset whose name or any alias equals `text` case-insensitively,
12
+ * the exact-match tier for ranking.
13
+ *
14
+ * One indexed query over `<schema>.names`.
15
+ * When the extract has no `names` table (a slim database built with `dropNames`, or a postcode-only extract),
16
+ * fall back to the self-contained `place_search` FTS content.
17
+ *
18
+ * Its `alt_names` column is the same alias set joined on the boundary-preserving
19
+ * `ALIAS_SEPARATOR`, so `aliasBagExactMatch` recovers the exact alias tier
20
+ * ("New York City" → New York) that the dropped `names` table used to provide.
16
21
  */
17
22
  export declare function exactMatchIDs<DB>(db: DatabaseClient<DB>, schemaName: string, ids: number[], text: string): Set<number>;
18
23
  /**
19
- * Among `ids` (already known exact matches), the subset holding `text` as an OFFICIAL name (`names.official = 1`, the
20
- * #940 ingest bit). Same COLLATE NOCASE semantics as {@link WOFSQLitePlaceLookup.#exactMatchIDs} so the two probes
21
- * agree on what "equals the query" means. Fails soft on gazetteers built before #940 (no `official` column) — the
22
- * sub-tier then behaves exactly as if `officialNameExact` were off.
24
+ * Among `ids` (already known exact matches), the subset holding `text` as an
25
+ * official name (`names.official = 1`, the ingest bit).
26
+ *
27
+ * Same collate nocase semantics as {@link WOFSQLitePlaceLookup.#exactMatchIDs},
28
+ * so the two probes agree on what "equals the query" means.
29
+ * Fails soft on gazetteers built before the `official` column existed.
30
+ *
31
+ * The sub-tier then behaves exactly as if `officialNameExact` were off.
23
32
  */
24
33
  export declare function officialNameIDs<DB>(db: DatabaseClient<DB>, schemaName: string, ids: number[], text: string): Set<number>;
25
34
  //# sourceMappingURL=exact-match.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exact-match.d.ts","sourceRoot":"","sources":["../lib/exact-match.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAI9D;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAC/B,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,EACtB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EAAE,EACb,IAAI,EAAE,MAAM,GACV,GAAG,CAAC,MAAM,CAAC,CAoDb;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,EACjC,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,EACtB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EAAE,EACb,IAAI,EAAE,MAAM,GACV,GAAG,CAAC,MAAM,CAAC,CAsBb"}
1
+ {"version":3,"file":"exact-match.d.ts","sourceRoot":"","sources":["../lib/exact-match.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAI9D;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAC/B,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,EACtB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EAAE,EACb,IAAI,EAAE,MAAM,GACV,GAAG,CAAC,MAAM,CAAC,CAsDb;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAAE,EACjC,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,EACtB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EAAE,EACb,IAAI,EAAE,MAAM,GACV,GAAG,CAAC,MAAM,CAAC,CAsBb"}
@@ -3,16 +3,21 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  *
6
- * The exact-match tier's name probes — the two case-folded equality lookups that decide whether a
6
+ * The exact-match tier's name probes, the two case-folded equality lookups that decide whether a
7
7
  * candidate holds the query text as its own name, an alias, or an official name.
8
8
  */
9
- import { aliasBagExactMatch, foldQueryText } from "#fts/index";
9
+ import { aliasBagExactMatch, foldQueryText } from "#fts";
10
10
  /**
11
- * Among `ids`, return the subset whose name OR any alias equals `text` case-insensitively — the exact-match tier for
12
- * ranking. One indexed query over `<schema>.names`. When the extract has no `names` table (a slim DB built with
13
- * `dropNames`, or a postcode-only extract), fall back to the self-contained `place_search` FTS content: its `alt_names`
14
- * column is the same alias set joined on the boundary-preserving `ALIAS_SEPARATOR` (#523), so `aliasBagExactMatch`
15
- * recovers the exact alias tier ("New York City" → New York) that the dropped `names` table used to provide.
11
+ * Among `ids`, return the subset whose name or any alias equals `text` case-insensitively,
12
+ * the exact-match tier for ranking.
13
+ *
14
+ * One indexed query over `<schema>.names`.
15
+ * When the extract has no `names` table (a slim database built with `dropNames`, or a postcode-only extract),
16
+ * fall back to the self-contained `place_search` FTS content.
17
+ *
18
+ * Its `alt_names` column is the same alias set joined on the boundary-preserving
19
+ * `ALIAS_SEPARATOR`, so `aliasBagExactMatch` recovers the exact alias tier
20
+ * ("New York City" → New York) that the dropped `names` table used to provide.
16
21
  */
17
22
  export function exactMatchIDs(db, schemaName, ids, text) {
18
23
  const out = new Set();
@@ -30,7 +35,8 @@ export function exactMatchIDs(db, schemaName, ids, text) {
30
35
  return out;
31
36
  }
32
37
  catch {
33
- // No `names` table on this extract — fall through to the place_search alias bag.
38
+ // No `names` table on this extract.
39
+ // Fall through to the place_search alias bag.
34
40
  }
35
41
  try {
36
42
  const rows = db
@@ -38,16 +44,16 @@ export function exactMatchIDs(db, schemaName, ids, text) {
38
44
  .all(...ids);
39
45
  const needle = foldQueryText(trimmed);
40
46
  for (const r of rows) {
41
- if (r.name !== null && foldQueryText(r.name) === needle) {
47
+ if (r.name && foldQueryText(r.name) === needle) {
42
48
  out.add(r.id);
43
49
  }
44
50
  }
45
- // Alias pass via the shared bag parser (#523). Separated bags (built since #523) get a true
46
- // per-alias equality check, unrestricted — matching the `names`-table branch above, where an
47
- // alias match counts as exact regardless of other candidates. Legacy bags (no separator)
48
- // fall back to padded containment, conditioned on "no canonical exact in the pool" because their
49
- // lost boundaries would otherwise false-promote interior fragments ("York" inside the alias
50
- // "New York City") or cross-alias fragments ("York New" across "…York" + "New City…").
51
+ // Alias pass via the shared bag parser.
52
+ // Separated bags get a true per-alias equality check, unrestricted, matching the `names`-table
53
+ // branch above where an alias match counts as exact regardless of other candidates.
54
+ // Legacy bags without a separator fall back to padded containment, conditioned on "no
55
+ // canonical exact in the pool" because their lost boundaries would otherwise false-promote
56
+ // interior fragments ("York" inside the alias "New York City") or cross-alias fragments.
51
57
  const anyCanonicalExact = out.size > 0;
52
58
  for (const r of rows) {
53
59
  if (aliasBagExactMatch(r.alt_names, needle, anyCanonicalExact)) {
@@ -56,15 +62,20 @@ export function exactMatchIDs(db, schemaName, ids, text) {
56
62
  }
57
63
  }
58
64
  catch {
59
- // Extract without place_search either → no exact-match tier. Falls back to weighted-sum order.
65
+ // Extract without place_search either, so there is no exact-match tier.
66
+ // The caller falls back to weighted-sum order.
60
67
  }
61
68
  return out;
62
69
  }
63
70
  /**
64
- * Among `ids` (already known exact matches), the subset holding `text` as an OFFICIAL name (`names.official = 1`, the
65
- * #940 ingest bit). Same COLLATE NOCASE semantics as {@link WOFSQLitePlaceLookup.#exactMatchIDs} so the two probes
66
- * agree on what "equals the query" means. Fails soft on gazetteers built before #940 (no `official` column) — the
67
- * sub-tier then behaves exactly as if `officialNameExact` were off.
71
+ * Among `ids` (already known exact matches), the subset holding `text` as an
72
+ * official name (`names.official = 1`, the ingest bit).
73
+ *
74
+ * Same collate nocase semantics as {@link WOFSQLitePlaceLookup.#exactMatchIDs},
75
+ * so the two probes agree on what "equals the query" means.
76
+ * Fails soft on gazetteers built before the `official` column existed.
77
+ *
78
+ * The sub-tier then behaves exactly as if `officialNameExact` were off.
68
79
  */
69
80
  export function officialNameIDs(db, schemaName, ids, text) {
70
81
  const out = new Set();
@@ -81,7 +92,7 @@ export function officialNameIDs(db, schemaName, ids, text) {
81
92
  }
82
93
  }
83
94
  catch {
84
- // Pre-#940 gazetteer (no `official` column) or a names-less slim extract — feature inert.
95
+ // A gazetteer without the `official` column, or a names-less slim extract, leaves the feature inert.
85
96
  }
86
97
  return out;
87
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"exact-match.js","sourceRoot":"","sources":["../lib/exact-match.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exact-match.js","sourceRoot":"","sources":["../lib/exact-match.ts"],"names":[],"mappings":"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"}