@mailwoman/resolver-wof-sqlite 9.4.0 → 10.1.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 (548) hide show
  1. package/README.md +8 -8
  2. package/lib/address/{point-interpolation.ts → point/interpolation.ts} +40 -38
  3. package/lib/address/point/schema.ts +132 -0
  4. package/lib/address/point.ts +68 -81
  5. package/lib/{address/index.ts → address.ts} +2 -2
  6. package/lib/ancestry/backfill.ts +24 -88
  7. package/lib/{ancestry/index.ts → ancestry.ts} +19 -15
  8. package/lib/build/candidate.ts +608 -0
  9. package/lib/build/population-corrections.ts +64 -0
  10. package/lib/build/slim.ts +338 -0
  11. package/lib/candidate/alias-bags.ts +74 -14
  12. package/lib/candidate/ancestors/schema.ts +211 -0
  13. package/lib/candidate/{ancestors-sidecar.ts → ancestors/sidecar.ts} +17 -24
  14. package/lib/candidate/country-display-names.ts +6 -20
  15. package/lib/candidate/extract-fold.ts +12 -57
  16. package/lib/candidate/fts.ts +28 -0
  17. package/lib/candidate/importance.ts +221 -0
  18. package/lib/candidate/lookup.ts +669 -0
  19. package/lib/candidate/name-roles.ts +16 -34
  20. package/lib/candidate/own-name.ts +34 -31
  21. package/lib/candidate/place-attrs.ts +20 -13
  22. package/lib/candidate/schema.ts +211 -0
  23. package/lib/candidate/scoring.ts +222 -0
  24. package/lib/capital-schema.ts +21 -17
  25. package/lib/capitals.ts +26 -24
  26. package/lib/coincident-roles.ts +74 -55
  27. package/lib/convention/schema.ts +13 -7
  28. package/lib/convention.ts +144 -0
  29. package/lib/coverage-manifest-schema.ts +34 -39
  30. package/lib/currency-backfill.ts +24 -69
  31. package/lib/env.ts +1 -1
  32. package/lib/exact-match.ts +31 -20
  33. package/lib/extracts.ts +96 -73
  34. package/lib/fst/autocomplete.ts +52 -35
  35. package/lib/fst/builder.ts +30 -36
  36. package/lib/fst/deserialize-web.ts +8 -9
  37. package/lib/fst/format.ts +41 -23
  38. package/lib/fst/freshness.ts +17 -95
  39. package/lib/fst/matcher.ts +2 -2
  40. package/lib/fst/serialize.ts +45 -60
  41. package/lib/fst/types.ts +71 -59
  42. package/lib/fts/query.ts +5 -36
  43. package/lib/fts.ts +280 -0
  44. package/lib/geonames/aliases.ts +72 -149
  45. package/lib/geonames/postal.ts +162 -77
  46. package/lib/index.ts +20 -27
  47. package/lib/interpolation.ts +43 -96
  48. package/lib/lookup.ts +137 -257
  49. package/lib/name-score.ts +9 -7
  50. package/lib/nsul/lookup.ts +36 -53
  51. package/lib/nsul/schema.ts +16 -43
  52. package/lib/paths.ts +159 -0
  53. package/lib/place-importance-schema.ts +57 -164
  54. package/lib/poi/lookup.ts +100 -109
  55. package/lib/poi/schema.ts +42 -26
  56. package/lib/polygon-schema.ts +10 -6
  57. package/lib/postal/city/alias/lookup.ts +79 -0
  58. package/lib/postal/{city-alias-schema.ts → city/alias/schema.ts} +14 -10
  59. package/lib/postal/{city-candidate-schema.ts → city/candidate-schema.ts} +26 -20
  60. package/lib/postal.ts +9 -0
  61. package/lib/postcode-point-lookup.ts +9 -19
  62. package/lib/primary-preference.ts +45 -125
  63. package/lib/proximity-rerank.ts +43 -32
  64. package/lib/ranking-weights.ts +98 -76
  65. package/lib/region-keys.ts +68 -40
  66. package/lib/reverse.ts +108 -72
  67. package/lib/schema.ts +74 -42
  68. package/lib/search-fetch.ts +90 -68
  69. package/lib/sqlite/convention-source.ts +57 -0
  70. package/lib/sqlite/utils.ts +79 -0
  71. package/lib/street/centroid/schema.ts +149 -0
  72. package/lib/street/centroid.ts +16 -25
  73. package/lib/street/{morphology-fst-builder.ts → morphology/fst/builder.ts} +56 -41
  74. package/lib/street/{morphology-fst-loader.ts → morphology/fst/loader.ts} +36 -29
  75. package/lib/street/name-lookup.ts +43 -35
  76. package/lib/street/normalize.ts +85 -216
  77. package/lib/street/segment-schema.ts +116 -43
  78. package/lib/{street/index.ts → street.ts} +3 -3
  79. package/lib/types.ts +94 -140
  80. package/lib/unified-schema.ts +29 -29
  81. package/lib/uprn/existence.ts +30 -19
  82. package/lib/uprn/lookup.ts +28 -67
  83. package/lib/uprn/schema.ts +18 -40
  84. package/lib/weights-overlay-linker.ts +204 -232
  85. package/out/address/point/interpolation.d.ts +45 -0
  86. package/out/address/point/interpolation.d.ts.map +1 -0
  87. package/out/address/{point-interpolation.js → point/interpolation.js} +38 -38
  88. package/out/address/point/interpolation.js.map +1 -0
  89. package/out/address/point/schema.d.ts +74 -0
  90. package/out/address/point/schema.d.ts.map +1 -0
  91. package/out/address/{point-schema.js → point/schema.js} +4 -20
  92. package/out/address/point/schema.js.map +1 -0
  93. package/out/address/point.d.ts +24 -21
  94. package/out/address/point.d.ts.map +1 -1
  95. package/out/address/point.js +60 -77
  96. package/out/address/point.js.map +1 -1
  97. package/out/{address/index.js → address.d.ts} +3 -3
  98. package/out/address.d.ts.map +1 -0
  99. package/out/{address/index.d.ts → address.js} +3 -3
  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 +18 -76
  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 +170 -0
  110. package/out/build/candidate.d.ts.map +1 -0
  111. package/out/{build-candidate.js → build/candidate.js} +33 -102
  112. package/out/build/candidate.js.map +1 -0
  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 +44 -0
  118. package/out/build/slim.d.ts.map +1 -0
  119. package/out/{build-slim.js → build/slim.js} +33 -94
  120. package/out/build/slim.js.map +1 -0
  121. package/out/candidate/alias-bags.d.ts +13 -5
  122. package/out/candidate/alias-bags.d.ts.map +1 -1
  123. package/out/candidate/alias-bags.js +55 -12
  124. package/out/candidate/alias-bags.js.map +1 -1
  125. package/out/candidate/ancestors/schema.d.ts +166 -0
  126. package/out/candidate/ancestors/schema.d.ts.map +1 -0
  127. package/out/candidate/ancestors/schema.js +131 -0
  128. package/out/candidate/ancestors/schema.js.map +1 -0
  129. package/out/candidate/ancestors/sidecar.d.ts +27 -0
  130. package/out/candidate/ancestors/sidecar.d.ts.map +1 -0
  131. package/out/candidate/{ancestors-sidecar.js → ancestors/sidecar.js} +17 -24
  132. package/out/candidate/ancestors/sidecar.js.map +1 -0
  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 +8 -16
  138. package/out/candidate/extract-fold.d.ts.map +1 -1
  139. package/out/candidate/extract-fold.js +6 -48
  140. package/out/candidate/extract-fold.js.map +1 -1
  141. package/out/candidate/fts.d.ts +19 -0
  142. package/out/candidate/fts.d.ts.map +1 -0
  143. package/out/candidate/fts.js +22 -0
  144. package/out/candidate/fts.js.map +1 -0
  145. package/out/candidate/importance.d.ts +127 -0
  146. package/out/candidate/importance.d.ts.map +1 -0
  147. package/out/candidate/importance.js +162 -0
  148. package/out/candidate/importance.js.map +1 -0
  149. package/out/candidate/lookup.d.ts +36 -0
  150. package/out/candidate/lookup.d.ts.map +1 -0
  151. package/out/candidate/lookup.js +456 -0
  152. package/out/candidate/lookup.js.map +1 -0
  153. package/out/candidate/name-roles.d.ts +10 -22
  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 +34 -31
  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 +120 -0
  166. package/out/candidate/schema.d.ts.map +1 -0
  167. package/out/{candidate-schema.js → candidate/schema.js} +11 -23
  168. package/out/candidate/schema.js.map +1 -0
  169. package/out/{candidate-scoring.d.ts → candidate/scoring.d.ts} +8 -9
  170. package/out/candidate/scoring.d.ts.map +1 -0
  171. package/out/candidate/scoring.js +157 -0
  172. package/out/candidate/scoring.js.map +1 -0
  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 +26 -24
  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 +61 -50
  184. package/out/coincident-roles.js.map +1 -1
  185. package/out/convention/schema.d.ts +12 -6
  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 +33 -38
  194. package/out/coverage-manifest-schema.d.ts.map +1 -1
  195. package/out/coverage-manifest-schema.js +20 -29
  196. package/out/coverage-manifest-schema.js.map +1 -1
  197. package/out/currency-backfill.d.ts +13 -35
  198. package/out/currency-backfill.d.ts.map +1 -1
  199. package/out/currency-backfill.js +12 -39
  200. package/out/currency-backfill.js.map +1 -1
  201. package/out/env.d.ts +2 -2
  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 +31 -20
  206. package/out/exact-match.js.map +1 -1
  207. package/out/extracts.d.ts +65 -54
  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 +28 -20
  212. package/out/fst/autocomplete.d.ts.map +1 -1
  213. package/out/fst/autocomplete.js +38 -27
  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 +30 -36
  217. package/out/fst/builder.js.map +1 -1
  218. package/out/fst/deserialize-web.d.ts +3 -3
  219. package/out/fst/deserialize-web.d.ts.map +1 -1
  220. package/out/fst/deserialize-web.js +8 -9
  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 +11 -73
  227. package/out/fst/freshness.d.ts.map +1 -1
  228. package/out/fst/freshness.js +12 -76
  229. package/out/fst/freshness.js.map +1 -1
  230. package/out/fst/matcher.d.ts +1 -1
  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 +30 -26
  235. package/out/fst/serialize.d.ts.map +1 -1
  236. package/out/fst/serialize.js +44 -58
  237. package/out/fst/serialize.js.map +1 -1
  238. package/out/fst/types.d.ts +71 -59
  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} +1 -1
  243. package/out/fst.d.ts.map +1 -0
  244. package/out/{fst/index.d.ts → fst.js} +1 -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 -67
  255. package/out/geonames/aliases.d.ts.map +1 -1
  256. package/out/geonames/aliases.js +44 -121
  257. package/out/geonames/aliases.js.map +1 -1
  258. package/out/geonames/postal.d.ts +84 -50
  259. package/out/geonames/postal.d.ts.map +1 -1
  260. package/out/geonames/postal.js +115 -78
  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 +20 -21
  267. package/out/index.d.ts.map +1 -1
  268. package/out/index.js +14 -15
  269. package/out/index.js.map +1 -1
  270. package/out/interpolation.d.ts +15 -52
  271. package/out/interpolation.d.ts.map +1 -1
  272. package/out/interpolation.js +25 -68
  273. package/out/interpolation.js.map +1 -1
  274. package/out/lookup.d.ts +24 -53
  275. package/out/lookup.d.ts.map +1 -1
  276. package/out/lookup.js +117 -223
  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 +49 -141
  299. package/out/place-importance-schema.d.ts.map +1 -1
  300. package/out/place-importance-schema.js +25 -140
  301. package/out/place-importance-schema.js.map +1 -1
  302. package/out/poi/lookup.d.ts +38 -42
  303. package/out/poi/lookup.d.ts.map +1 -1
  304. package/out/poi/lookup.js +67 -90
  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 → city/alias/lookup.d.ts} +22 -25
  319. package/out/postal/city/alias/lookup.d.ts.map +1 -0
  320. package/out/postal/city/alias/lookup.js +49 -0
  321. package/out/postal/city/alias/lookup.js.map +1 -0
  322. package/out/postal/{city-alias-schema.d.ts → city/alias/schema.d.ts} +15 -11
  323. package/out/postal/city/alias/schema.d.ts.map +1 -0
  324. package/out/postal/{city-alias-schema.js → city/alias/schema.js} +11 -9
  325. package/out/postal/city/alias/schema.js.map +1 -0
  326. package/out/postal/city/candidate-schema.d.ts +72 -0
  327. package/out/postal/city/candidate-schema.d.ts.map +1 -0
  328. package/out/postal/city/candidate-schema.js +60 -0
  329. package/out/postal/city/candidate-schema.js.map +1 -0
  330. package/out/postal.d.ts +9 -0
  331. package/out/postal.d.ts.map +1 -0
  332. package/out/postal.js +9 -0
  333. package/out/postal.js.map +1 -0
  334. package/out/postcode-point-lookup.d.ts +9 -19
  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 +39 -93
  339. package/out/primary-preference.d.ts.map +1 -1
  340. package/out/primary-preference.js +13 -97
  341. package/out/primary-preference.js.map +1 -1
  342. package/out/proximity-rerank.d.ts +40 -29
  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 +91 -62
  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 +48 -29
  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 +75 -50
  355. package/out/reverse.d.ts.map +1 -1
  356. package/out/reverse.js +61 -49
  357. package/out/reverse.js.map +1 -1
  358. package/out/schema.d.ts +74 -42
  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 +25 -0
  367. package/out/sqlite/convention-source.d.ts.map +1 -0
  368. package/out/sqlite/convention-source.js +48 -0
  369. package/out/sqlite/convention-source.js.map +1 -0
  370. package/out/sqlite/utils.d.ts +45 -0
  371. package/out/sqlite/utils.d.ts.map +1 -0
  372. package/out/sqlite/utils.js +56 -0
  373. package/out/sqlite/utils.js.map +1 -0
  374. package/out/street/centroid/schema.d.ts +100 -0
  375. package/out/street/centroid/schema.d.ts.map +1 -0
  376. package/out/street/centroid/schema.js +66 -0
  377. package/out/street/centroid/schema.js.map +1 -0
  378. package/out/street/centroid.d.ts +9 -19
  379. package/out/street/centroid.d.ts.map +1 -1
  380. package/out/street/centroid.js +11 -22
  381. package/out/street/centroid.js.map +1 -1
  382. package/out/street/{morphology-fst-builder.d.ts → morphology/fst/builder.d.ts} +21 -11
  383. package/out/street/morphology/fst/builder.d.ts.map +1 -0
  384. package/out/street/{morphology-fst-builder.js → morphology/fst/builder.js} +40 -34
  385. package/out/street/morphology/fst/builder.js.map +1 -0
  386. package/out/street/morphology/fst/loader.d.ts +74 -0
  387. package/out/street/morphology/fst/loader.d.ts.map +1 -0
  388. package/out/street/{morphology-fst-loader.js → morphology/fst/loader.js} +21 -21
  389. package/out/street/morphology/fst/loader.js.map +1 -0
  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 +32 -31
  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 +74 -191
  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.d.ts → street.d.ts} +4 -4
  403. package/out/street.d.ts.map +1 -0
  404. package/out/{street/index.js → street.js} +4 -4
  405. package/out/street.js.map +1 -0
  406. package/out/types.d.ts +69 -138
  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 +20 -56
  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 +132 -141
  431. package/out/weights-overlay-linker.d.ts.map +1 -1
  432. package/out/weights-overlay-linker.js +86 -154
  433. package/out/weights-overlay-linker.js.map +1 -1
  434. package/package.json +94 -599
  435. package/lib/address/point-schema.ts +0 -155
  436. package/lib/build-candidate.ts +0 -632
  437. package/lib/build-slim.ts +0 -408
  438. package/lib/candidate-ancestors-schema.ts +0 -195
  439. package/lib/candidate-fts.ts +0 -46
  440. package/lib/candidate-importance.ts +0 -224
  441. package/lib/candidate-lookup.ts +0 -977
  442. package/lib/candidate-schema.ts +0 -247
  443. package/lib/candidate-scoring.ts +0 -261
  444. package/lib/convention/index.ts +0 -154
  445. package/lib/fts/index.ts +0 -361
  446. package/lib/postal/city-alias-lookup.ts +0 -97
  447. package/lib/postal/index.ts +0 -9
  448. package/lib/sqlite-convention-source.ts +0 -65
  449. package/lib/sqlite-utils.ts +0 -82
  450. package/lib/street/centroid-schema.ts +0 -154
  451. package/out/address/index.d.ts.map +0 -1
  452. package/out/address/index.js.map +0 -1
  453. package/out/address/point-interpolation.d.ts +0 -49
  454. package/out/address/point-interpolation.d.ts.map +0 -1
  455. package/out/address/point-interpolation.js.map +0 -1
  456. package/out/address/point-schema.d.ts +0 -97
  457. package/out/address/point-schema.d.ts.map +0 -1
  458. package/out/address/point-schema.js.map +0 -1
  459. package/out/ancestry/index.d.ts +0 -45
  460. package/out/ancestry/index.d.ts.map +0 -1
  461. package/out/ancestry/index.js +0 -55
  462. package/out/ancestry/index.js.map +0 -1
  463. package/out/build-candidate.d.ts +0 -184
  464. package/out/build-candidate.d.ts.map +0 -1
  465. package/out/build-candidate.js.map +0 -1
  466. package/out/build-slim.d.ts +0 -80
  467. package/out/build-slim.d.ts.map +0 -1
  468. package/out/build-slim.js.map +0 -1
  469. package/out/candidate/ancestors-sidecar.d.ts +0 -32
  470. package/out/candidate/ancestors-sidecar.d.ts.map +0 -1
  471. package/out/candidate/ancestors-sidecar.js.map +0 -1
  472. package/out/candidate-ancestors-schema.d.ts +0 -150
  473. package/out/candidate-ancestors-schema.d.ts.map +0 -1
  474. package/out/candidate-ancestors-schema.js +0 -123
  475. package/out/candidate-ancestors-schema.js.map +0 -1
  476. package/out/candidate-fts.d.ts +0 -37
  477. package/out/candidate-fts.d.ts.map +0 -1
  478. package/out/candidate-fts.js +0 -40
  479. package/out/candidate-fts.js.map +0 -1
  480. package/out/candidate-importance.d.ts +0 -132
  481. package/out/candidate-importance.d.ts.map +0 -1
  482. package/out/candidate-importance.js +0 -169
  483. package/out/candidate-importance.js.map +0 -1
  484. package/out/candidate-lookup.d.ts +0 -76
  485. package/out/candidate-lookup.d.ts.map +0 -1
  486. package/out/candidate-lookup.js +0 -768
  487. package/out/candidate-lookup.js.map +0 -1
  488. package/out/candidate-schema.d.ts +0 -155
  489. package/out/candidate-schema.d.ts.map +0 -1
  490. package/out/candidate-schema.js.map +0 -1
  491. package/out/candidate-scoring.d.ts.map +0 -1
  492. package/out/candidate-scoring.js +0 -196
  493. package/out/candidate-scoring.js.map +0 -1
  494. package/out/convention/index.d.ts +0 -106
  495. package/out/convention/index.d.ts.map +0 -1
  496. package/out/convention/index.js +0 -93
  497. package/out/convention/index.js.map +0 -1
  498. package/out/fst/index.d.ts.map +0 -1
  499. package/out/fst/index.js.map +0 -1
  500. package/out/fts/index.d.ts +0 -184
  501. package/out/fts/index.d.ts.map +0 -1
  502. package/out/fts/index.js +0 -277
  503. package/out/fts/index.js.map +0 -1
  504. package/out/geonames/index.d.ts.map +0 -1
  505. package/out/geonames/index.js.map +0 -1
  506. package/out/nsul/index.d.ts.map +0 -1
  507. package/out/nsul/index.js.map +0 -1
  508. package/out/poi/index.d.ts.map +0 -1
  509. package/out/poi/index.js.map +0 -1
  510. package/out/postal/city-alias-lookup.d.ts.map +0 -1
  511. package/out/postal/city-alias-lookup.js +0 -62
  512. package/out/postal/city-alias-lookup.js.map +0 -1
  513. package/out/postal/city-alias-schema.d.ts.map +0 -1
  514. package/out/postal/city-alias-schema.js.map +0 -1
  515. package/out/postal/city-candidate-schema.d.ts +0 -66
  516. package/out/postal/city-candidate-schema.d.ts.map +0 -1
  517. package/out/postal/city-candidate-schema.js +0 -56
  518. package/out/postal/city-candidate-schema.js.map +0 -1
  519. package/out/postal/index.d.ts +0 -9
  520. package/out/postal/index.d.ts.map +0 -1
  521. package/out/postal/index.js +0 -9
  522. package/out/postal/index.js.map +0 -1
  523. package/out/sqlite-convention-source.d.ts +0 -29
  524. package/out/sqlite-convention-source.d.ts.map +0 -1
  525. package/out/sqlite-convention-source.js +0 -57
  526. package/out/sqlite-convention-source.js.map +0 -1
  527. package/out/sqlite-utils.d.ts +0 -45
  528. package/out/sqlite-utils.d.ts.map +0 -1
  529. package/out/sqlite-utils.js +0 -57
  530. package/out/sqlite-utils.js.map +0 -1
  531. package/out/street/centroid-schema.d.ts +0 -105
  532. package/out/street/centroid-schema.d.ts.map +0 -1
  533. package/out/street/centroid-schema.js +0 -78
  534. package/out/street/centroid-schema.js.map +0 -1
  535. package/out/street/index.d.ts.map +0 -1
  536. package/out/street/index.js.map +0 -1
  537. package/out/street/morphology-fst-builder.d.ts.map +0 -1
  538. package/out/street/morphology-fst-builder.js.map +0 -1
  539. package/out/street/morphology-fst-loader.d.ts +0 -67
  540. package/out/street/morphology-fst-loader.d.ts.map +0 -1
  541. package/out/street/morphology-fst-loader.js.map +0 -1
  542. package/out/uprn/index.d.ts.map +0 -1
  543. package/out/uprn/index.js.map +0 -1
  544. /package/lib/{fst/index.ts → fst.ts} +0 -0
  545. /package/lib/{geonames/index.ts → geonames.ts} +0 -0
  546. /package/lib/{nsul/index.ts → nsul.ts} +0 -0
  547. /package/lib/{poi/index.ts → poi.ts} +0 -0
  548. /package/lib/{uprn/index.ts → uprn.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"candidate-lookup.js","sourceRoot":"","sources":["../lib/candidate-lookup.ts"],"names":[],"mappings":"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"}
@@ -1,155 +0,0 @@
1
- /**
2
- * @copyright Sister Software
3
- * @license AGPL-3.0
4
- * @author Teffen Ellis, et al.
5
- *
6
- * Typed schema for the byte-range CANDIDATE gazetteer (`candidate.db`) — the single source of truth
7
- * for the columns shared by the BUILDER ({@link buildCandidateTable}) and the READERS (the Node
8
- * {@link WOFCandidateTableLookup} + the browser `@mailwoman/resolver-wof-wasm/httpvfs/resolver`). Before this module each
9
- * side hand-wrote the column list; a rename in one place broke the other at runtime. Now the
10
- * contract is a Kysely `Database` interface (`new DatabaseClient<CandidateDatabase>(...)` for
11
- * typed inserts) plus the table DDL as strings — so a column change is a compile error on every
12
- * consumer.
13
- *
14
- * `cand_stage` is the transient staging table the builder bulk-loads; `candidate` is the clustered
15
- * `WITHOUT ROWID` B-tree it's materialized into (same columns). The reader queries `candidate`.
16
- */
17
- import { type Kysely } from "kysely";
18
- import type { CandidateAncestorsDatabase } from "#candidate-ancestors-schema";
19
- import type { CapitalTable } from "#capital-schema";
20
- import type { NameKey } from "#street/normalize";
21
- /**
22
- * One candidate row. `name_key` + the four small int keys + `neg_rank` + `spr_id` form the clustered primary key; the
23
- * rest is denormalized so a resolve is one probe (no join to `spr`). Coordinates + bbox + name are nullable at the SQL
24
- * level (a postcode extract row may lack a bbox).
25
- */
26
- export interface CandidateTable {
27
- /**
28
- * The shared {@link normalizeLocalityForKey} of the name/alias — the probe key.
29
- */
30
- name_key: NameKey;
31
- /**
32
- * Small int from {@link CountryCodeTable} (shrinks the clustered key).
33
- */
34
- country_id: number;
35
- /**
36
- * The place's region-tier ancestor id, or 0 (carried for the future region 2-step).
37
- */
38
- region_id: number;
39
- /**
40
- * Small int from {@link PlacetypeCodeTable}.
41
- */
42
- placetype_id: number;
43
- /**
44
- * `-log10(population + 1)` — ASC order = highest-population first. 0 for postcodes (no population).
45
- */
46
- neg_rank: number;
47
- /**
48
- * WOF id of the place this row resolves to.
49
- */
50
- spr_id: number;
51
- name: string | null;
52
- latitude: number | null;
53
- longitude: number | null;
54
- min_lat: number | null;
55
- min_lon: number | null;
56
- max_lat: number | null;
57
- max_lon: number | null;
58
- population: number | null;
59
- /**
60
- * 1 when the row is the place's canonical name (vs an alias/abbrev).
61
- */
62
- is_primary: number | null;
63
- /**
64
- * Blended place importance in [0, 1] — the toponym-fame prior the bare-city-name class is decided on (#28). NULL
65
- * means the score source had no row for this place: UNMEASURED, never "an importance of zero" (meaning-of-zero).
66
- * Constant across every row of one place — primary, alias and abbrev alike — because it is a property of the PLACE,
67
- * not of the name that reached it, which is what lets a bare `Moscow` inherit Москва's score through the alias row.
68
- *
69
- * **THIS IS THE PRE-SPLIT CONFLATION, AND THE NAME SAYS SO.** It is `place_importance.importance` copied verbatim
70
- * from the score source — the bounded blend `place-importance-schema.ts`'s `blendImportance` writes (the
71
- * concordance's encyclopedia-derived channel clamped around a population-derived base); that module calls the column
72
- * DEPRECATED. It is NOT the split `encyclopedic` channel, and the two must not be conflated in a future build:
73
- * writing the split value here instead was measured on 2026-08-10 and makes the ranking key INERT on three of the
74
- * four rows it exists to fix. The reason is coverage, not principle — the encyclopedia-concordance join in
75
- * `admin-global-priority-importance.db` reaches 133,888 of 702,709 scored places and only eleven countries
76
- * (US/FR/GB/DE/IT/ES/NL/JP/CN/KR/TW). CA, AU and RU have ZERO concordance rows, so Whitby CA, Windsor CA and Epping
77
- * AU carry the population fallback and nothing else. Under the strict split those three become unmeasured, the
78
- * consumer's positive-evidence-only rule leaves them exactly where population put them (first), and the famous GB
79
- * bearer can never overtake them. The conflated column is the only one on which every bearer of a name is scored on a
80
- * single comparable scale, which is the precondition for comparing them at all.
81
- *
82
- * So a consumer reads this as "fame, with population standing in where fame was never measured" — the legacy blended
83
- * semantics — and NOT as "this place has an encyclopedia entry of this importance". When the score source grows a
84
- * real `encyclopedic` column for every country, add a SECOND column rather than redefining this one.
85
- */
86
- importance: number | null;
87
- /**
88
- * The NAME'S detected role on this row, or NULL (#1730). Two build-time detectors stamp `is_primary = 0` rows only:
89
- *
90
- * - `'abbr'` — provenance-based: the surface is a WOF `variant` name in one of the place's country's official languages
91
- * (or English) — the #936 signal, measured at a 13× key-collision rate vs preferred names.
92
- * - `'gloss'` — anomaly-based: the row belongs to a place whose key count crosses the gloss threshold with a non-admin
93
- * placetype and NO measured prominence (population absent AND importance unmeasured) — the translation-gloss
94
- * fingerprint (#1730's sweep; `Poisson` → a US fish-name place). Provenance CANNOT separate a gloss from an exonym
95
- * (WOF imported both as `x_preferred`), which is why this detector is an anomaly test and stamps only the certain
96
- * core.
97
- *
98
- * NULL = no role detected. The column is WRITE-ONLY in this build generation: no ranking consumer reads it — a rank
99
- * penalty is its own future, D-rule-conditional step with the `gloss_key` board as regression check.
100
- */
101
- name_role: string | null;
102
- }
103
- /**
104
- * `(id → ISO country code)` dictionary.
105
- */
106
- export interface CountryCodeTable {
107
- id: number;
108
- code: string;
109
- }
110
- /**
111
- * `(id → placetype)` dictionary.
112
- */
113
- export interface PlacetypeCodeTable {
114
- id: number;
115
- placetype: string;
116
- }
117
- /**
118
- * The candidate database schema for `new DatabaseClient<CandidateDatabase>(...)`. Extends the ancestors sidecar
119
- * (`candidate_ancestor` + `candidate_interval` — see candidate-ancestors-schema.ts for the encoding decision), so the
120
- * builder's one typed client covers every table in the artifact.
121
- */
122
- export interface CandidateDatabase extends CandidateAncestorsDatabase {
123
- /**
124
- * The clustered `WITHOUT ROWID` lookup table the reader probes.
125
- */
126
- candidate: CandidateTable;
127
- /**
128
- * Transient staging table (same columns); dropped once `candidate` is materialized.
129
- */
130
- cand_stage: CandidateTable;
131
- country_codes: CountryCodeTable;
132
- placetype_codes: PlacetypeCodeTable;
133
- /**
134
- * The capital-status reference carried in-artifact (#1880's distribution home) — see capital-schema.ts.
135
- */
136
- capital: CapitalTable;
137
- }
138
- /**
139
- * The `candidate`/`cand_stage` columns in clustered-key order. The materialization `INSERT INTO candidate SELECT … FROM
140
- * cand_stage` derives its column list from this, so the two tables can't drift. Keep in sync with
141
- * {@link CandidateTable}.
142
- */
143
- export declare const CANDIDATE_COLUMNS: readonly ["name_key", "country_id", "region_id", "placetype_id", "neg_rank", "spr_id", "name", "latitude", "longitude", "min_lat", "min_lon", "max_lat", "max_lon", "population", "is_primary", "importance", "name_role"];
144
- /**
145
- * Create the code dictionaries + the transient staging table — called before the build's load passes. `cand_stage`
146
- * mirrors {@link CandidateTable} but every column is nullable (the loader fills them positionally). Pass a
147
- * {@link DatabaseClient} (or any `Kysely`) over the candidate DB.
148
- */
149
- export declare function createCandidateStagingTables(db: Kysely<CandidateDatabase>): Promise<void>;
150
- /**
151
- * Create the clustered `WITHOUT ROWID` lookup table — called after staging, before the VACUUM. The first six columns
152
- * form the clustered primary key (population-ranked via `neg_rank`).
153
- */
154
- export declare function createCandidateTable(db: Kysely<CandidateDatabase>): Promise<void>;
155
- //# sourceMappingURL=candidate-schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"candidate-schema.d.ts","sourceRoot":"","sources":["../lib/candidate-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAO,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEzC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAA;IACjB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;;;;;;;;;;;;OAaG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,0BAA0B;IACpE;;OAEG;IACH,SAAS,EAAE,cAAc,CAAA;IACzB;;OAEG;IACH,UAAU,EAAE,cAAc,CAAA;IAC1B,aAAa,EAAE,gBAAgB,CAAA;IAC/B,eAAe,EAAE,kBAAkB,CAAA;IACnC;;OAEG;IACH,OAAO,EAAE,YAAY,CAAA;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,4NAoBpB,CAAA;AAEV;;;;GAIG;AACH,wBAAsB,4BAA4B,CAAC,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC/F;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BvF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"candidate-schema.js","sourceRoot":"","sources":["../lib/candidate-schema.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"candidate-scoring.d.ts","sourceRoot":"","sources":["../lib/candidate-scoring.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAI9D,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAE1E;;;;GAIG;AACH,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE;IACR,KAAK,EAAE,cAAc,CAAA;IACrB,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,cAAc,CAAA;CACvB,GACC,cAAc,CAmHhB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAChC,UAAU,EAAE,cAAc,EAAE,EAC5B,OAAO,EAAE;IACR,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,cAAc,CAAA;IACrB,OAAO,EAAE,cAAc,CAAA;CACvB,GACC,IAAI,CAmGN"}
@@ -1,196 +0,0 @@
1
- /**
2
- * @copyright Sister Software
3
- * @license AGPL-3.0
4
- * @author Teffen Ellis, et al.
5
- *
6
- * How a raw `place_search` row becomes a scored `PlaceCandidate`, and how the resulting pool is
7
- * ordered — the weighted-sum score and the exact-match tiering that ranks over it.
8
- */
9
- import { compareReferential, referentialFromPopulation } from "@mailwoman/core/resolver";
10
- import { haversineKm } from "@mailwoman/spatial";
11
- import { exactMatchIDs, officialNameIDs } from "#exact-match";
12
- import { foldQueryText } from "#fts/index";
13
- import { populationBoostTerm } from "#ranking-weights";
14
- /**
15
- * Score one raw FTS row into a `PlaceCandidate`: the weighted sum over the negated BM25 baseline, the placetype /
16
- * country / parent boosts, the length penalty, the proximity and population terms, and the carried fields (referential,
17
- * encyclopedic, bbox) consumers read. `queryLen` is the query text's length, hoisted out of the per-row loop.
18
- */
19
- export function candidateFromSearchRow(row, context) {
20
- const { query, placetypes, queryLen, weights } = context;
21
- // SQLite's bm25() returns a lower-is-better score (negative for matches). Negate so we
22
- // start from a higher-is-better baseline.
23
- let score = -row.rank;
24
- if (placetypes && placetypes.length && placetypes.includes(row.placetype)) {
25
- score += weights.placetypeMatchBoost;
26
- }
27
- if (!placetypes && row.placetype === "locality") {
28
- score += weights.localityImplicitBoost;
29
- }
30
- if (query.country && row.country === query.country) {
31
- score += weights.countryMatchBoost;
32
- }
33
- if (query.parentID !== undefined) {
34
- score += row.parent_id === query.parentID ? weights.directChildBoost : weights.descendantBoost;
35
- }
36
- const extraLen = Math.max(0, row.name.length - queryLen - 3);
37
- score -= (weights.lengthPenaltyWeight * extraLen) / 10;
38
- // Proximity boost: only applied when the query carries `near` AND the candidate has real
39
- // coordinates. The formula decays smoothly with distance so close-but-not-exact hits
40
- // still benefit; tunable via proximityBoost + proximityScaleKm.
41
- let distanceKm;
42
- // The best decayed-distance term over `near` + every `bias` point (each point's term is
43
- // scaled by its weight; the MAX wins — a candidate near ANY hint is "nearby"). Carried
44
- // into the exact-tier prominence sort below when hints are present.
45
- let proximityTerm = 0;
46
- if (row.lat !== null && row.lon !== null && !(row.lat === 0 && row.lon === 0)) {
47
- const hints = [];
48
- if (query.near) {
49
- hints.push({ lat: query.near.lat, lon: query.near.lon, weight: 1 });
50
- }
51
- for (const b of query.bias ?? []) {
52
- hints.push({ lat: b.lat, lon: b.lon, weight: b.weight ?? 1 });
53
- }
54
- let scoreTerm = 0;
55
- for (const h of hints) {
56
- const d = haversineKm(h.lat, h.lon, row.lat, row.lon);
57
- const decay = h.weight / (1 + d / weights.proximityScaleKm);
58
- const prom = decay * weights.biasBoost;
59
- if (prom > proximityTerm) {
60
- proximityTerm = prom;
61
- distanceKm = d;
62
- scoreTerm = decay * weights.proximityBoost;
63
- }
64
- }
65
- score += scoreTerm;
66
- }
67
- // Population boost: capped at `populationBoost` magnitude at `10^populationScaleLog10`
68
- // people. Missing population → no contribution. Never penalizes.
69
- const popTerm = populationBoostTerm(row.population, weights);
70
- score += popTerm;
71
- // Combined prominence for the exact-tier sort when proximity hints are present: population
72
- // and nearness in the SAME additive units, so the map view / the user's location can win a
73
- // cross-country postcode tie without a hard filter.
74
- const prominence = popTerm + proximityTerm;
75
- const candidate = {
76
- id: row.id,
77
- prominence,
78
- name: row.name,
79
- placetype: row.placetype,
80
- country: row.country ?? "",
81
- lat: row.lat ?? 0,
82
- lon: row.lon ?? 0,
83
- parent_id: row.parent_id ?? undefined,
84
- score,
85
- };
86
- if (distanceKm !== undefined) {
87
- candidate.distanceKm = distanceKm;
88
- }
89
- if (row.population !== null && row.population > 0) {
90
- candidate.population = row.population;
91
- // The named ranking key (ROAD_TO_V9 §2). DERIVED, not stored — a pure function of the
92
- // population already on this row, so it cannot drift from what the ordering uses.
93
- candidate.referential = referentialFromPopulation(row.population);
94
- }
95
- // Carried for consumers (annotations / API surfaces). No ranking site reads it.
96
- if (row.encyclopedic !== null) {
97
- candidate.encyclopedic = row.encyclopedic;
98
- }
99
- // Candidate bbox — parity with the WASM lookup (resolver-wof-wasm/lookup.ts), whose
100
- // consumers (the demo cascade's region constraint) read it. Without this the Node
101
- // backend's region→bbox constraint is dead and disambiguation falls to population
102
- // ranking (the Springfield-IL→MO failure the #524 smoke eval caught).
103
- if (row.min_latitude != null && row.max_latitude != null && row.min_longitude != null && row.max_longitude != null) {
104
- candidate.bbox = {
105
- minLat: row.min_latitude,
106
- maxLat: row.max_latitude,
107
- minLon: row.min_longitude,
108
- maxLon: row.max_longitude,
109
- };
110
- }
111
- return candidate;
112
- }
113
- /**
114
- * Order `candidates` IN PLACE — the exact-match tier first when the extract can answer the name probes, otherwise plain
115
- * weighted-score order. Every candidate is stamped with its `exactMatch` flag on the way through.
116
- */
117
- export function rankCandidates(candidates, options) {
118
- const { db, schemaName, query, weights } = options;
119
- // Exact-match tiering: a candidate whose name OR any alias equals the query text (case-folded)
120
- // ranks above any partial match, with the weighted-sum score (incl. population) breaking ties
121
- // WITHIN a tier. See the RankingWeights.exactMatchTiering docstring for why this aligns the
122
- // population prior rather than overriding it. One cheap indexed lookup over the candidate ids.
123
- // Runs even for a SINGLE candidate so `exactMatch` is stamped consistently (parity with the
124
- // WASM lookup) — a sole alias hit ("New York City" → New York) must still carry the flag the
125
- // demo cascade / #369 re-rank read.
126
- if (weights.exactMatchTiering && candidates.length) {
127
- const exactIDs = exactMatchIDs(db, schemaName, candidates.map((c) => c.id), query.text);
128
- // Stamp the tier onto every candidate (not just when the tiering sort fires) so a downstream
129
- // re-rank — #369's postcode-anchor country pin in `resolveTree` — can keep the country pin from
130
- // crossing the exact/partial boundary ("ME" → Maine, not the more-populous Missouri).
131
- for (const c of candidates) {
132
- c.exactMatch = exactIDs.has(c.id);
133
- }
134
- if (exactIDs.size) {
135
- // #905: WITHIN the exact tier, population is the PRIMARY key and the weighted score
136
- // only breaks population ties. Exactness saturates text relevance, and the bm25
137
- // residue inside `score` is length-noise (see the fetch-site comment), so letting it
138
- // order the tier is what sent unscoped "Paris" to an Ohio township. The partial tier
139
- // keeps score order — text relevance still means something there. This makes the
140
- // exactMatchTiering docstring literal: match quality primary, prominence within.
141
- //
142
- // #912 sub-tier: a NAME-exact candidate (spr.name equals the query) outranks an
143
- // ALIAS-exact one ('Paris' the place beats 'Paris Township' held via alias 'Paris').
144
- // The place's own name is a stronger identity claim than an alias — aliases exist to
145
- // widen recall, not to tie primaries. ME→Maine is untouched: 'ME' name-exact-matches
146
- // nothing, so the alias sub-tier still decides there. Population orders within each
147
- // sub-tier as before.
148
- const needle = foldQueryText(query.text);
149
- // #936 option 3: an OFFICIAL name (preferred form in an official language of the place's
150
- // country, `names.official = 1`) counts as the place's own name for the sub-tier — "Åbo" is
151
- // Turku's name, not merely its alias. Floor-conditioned on the holder's population (see the
152
- // RankingWeights docstring for the measured 100k boundary). officialIDs ⊆ exactIDs by
153
- // construction (official rows are names rows), so only the sub-tier KIND changes.
154
- const officialIDs = weights.officialNameExact
155
- ? officialNameIDs(db, schemaName, candidates
156
- .filter((c) => exactIDs.has(c.id) && (c.population ?? 0) >= weights.officialNameExactFloor)
157
- .map((c) => c.id), query.text)
158
- : undefined;
159
- const kind = (c) => {
160
- if (!exactIDs.has(c.id))
161
- return 0;
162
- if (foldQueryText(String(c.name ?? "")) === needle)
163
- return 2;
164
- return officialIDs?.has(c.id) ? 2 : 1;
165
- };
166
- // With proximity hints (near/bias), prominence (population + nearness, same units)
167
- // replaces raw population as the within-tier key — the 48026 rule: the map view or
168
- // the user's location breaks a cross-country postcode tie. Without hints, REFERENTIAL
169
- // ordering decides.
170
- //
171
- // ROAD_TO_V9 §2: this is the site that "orders namesakes", so it is the site that has to
172
- // say what it orders by. `compareReferential` is referential DESC with raw population as
173
- // the tiebreak, which is provably the SAME ORDER as the `(b.population ?? 0) - (a.population ?? 0)`
174
- // it replaces — referential is strictly increasing in population below saturation and
175
- // constant above it, and the tiebreak restores the order in the saturated tail. Measured
176
- // zero-delta, not assumed: see `place-importance-schema.test.ts` and `resolver-referential-ranking.test.ts`.
177
- // Encyclopedic importance is not, and must not become, an input here.
178
- const hasHints = !!query.near || (query.bias?.length ?? 0) > 0;
179
- candidates.sort((a, b) => {
180
- const ax = kind(a);
181
- const bx = kind(b);
182
- if (bx !== ax)
183
- return bx - ax;
184
- if (ax >= 1) {
185
- if (hasHints)
186
- return (b.prominence ?? 0) - (a.prominence ?? 0) || b.score - a.score;
187
- return compareReferential(a, b) || b.score - a.score;
188
- }
189
- return b.score - a.score;
190
- });
191
- return;
192
- }
193
- }
194
- candidates.sort((a, b) => b.score - a.score);
195
- }
196
- //# sourceMappingURL=candidate-scoring.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"candidate-scoring.js","sourceRoot":"","sources":["../lib/candidate-scoring.ts"],"names":[],"mappings":"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"}
@@ -1,106 +0,0 @@
1
- /**
2
- * @copyright Sister Software
3
- * @license AGPL-3.0
4
- * @author Teffen Ellis, et al.
5
- *
6
- * The **Geographic Rule Engine** convention model (Direction E, #289 — see
7
- * `docs/articles/plan/2026-06-05-geographic-rule-engine.md` and epic #288).
8
- *
9
- * A `Convention` is a declarative resolution profile attached to a Who's-On-First admin polygon.
10
- * The engine deep-merges the conventions along a resolved place's ancestor chain — country →
11
- * region → … → locality, most-specific winning — and the backend dispatches the named strategies
12
- * in `candidateStrategies`, first to return candidates wins.
13
- *
14
- * This module is the backend-agnostic core: the convention TYPES, the deep-merge, and the seed
15
- * source. The strategy IMPLEMENTATIONS are SQL-bound and live in `lookup.ts`, registered by
16
- * name.
17
- *
18
- * For the existing EU locales (DE/FR/GB/NL) the seed source is empty, so every query resolves to
19
- * `WORLD_DEFAULT` and the dispatch is byte-identical to the pre-engine coordinate-first path. JP
20
- * / KR / TW add rows here (and #290 swaps the seed map for a build-from-source sqlite-backed
21
- * source).
22
- */
23
- import type { FindPlaceQuery, PlaceCandidate } from "#types";
24
- /**
25
- * Soft-scoring weights for the `postcode_area_resolution` strategy: `pc·S_pc + name·S_name + pop·S_pop`.
26
- */
27
- export interface ScoringWeights {
28
- pc: number;
29
- name: number;
30
- pop: number;
31
- }
32
- /**
33
- * A geographically-scoped resolution profile. Namespaced sections grow per phase; #289 ships the dispatch + scoring
34
- * slice (`candidateStrategies` + `scoringWeights`). Later phases add `fieldMapping` (locale semantics for `locator[]`),
35
- * `tokenNormalization`, etc.
36
- */
37
- export interface Convention {
38
- /**
39
- * Ordered strategy names the dispatcher runs; the first to return a non-null result wins.
40
- */
41
- candidateStrategies?: string[];
42
- /**
43
- * Weights for `postcode_area_resolution`'s soft-score. Partial — a layer may nudge one weight and inherit the rest
44
- * from the layers below it (`resolveConvention` fills any gaps from WORLD_DEFAULT).
45
- */
46
- scoringWeights?: Partial<ScoringWeights>;
47
- }
48
- /**
49
- * A fully-resolved convention: every field present, weights complete. What `resolveConvention` returns and what
50
- * strategies consume.
51
- */
52
- export interface ResolvedConvention {
53
- candidateStrategies: string[];
54
- scoringWeights: ScoringWeights;
55
- }
56
- /**
57
- * The base layer every ancestor chain starts from. Reproduces the pre-engine coordinate-first behavior exactly: try
58
- * `postcode_area_resolution`, else fall back to fuzzy name match; soft-score weights 0.6 / 0.3 / 0.1. Changing these
59
- * changes EU behavior — don't, without a byte-stability run.
60
- */
61
- export declare const WORLD_DEFAULT: ResolvedConvention;
62
- /**
63
- * The strategy names the backend registers. The single source of truth shared by the dispatch registry and the
64
- * build-time validator, so an authored convention that names a non-existent strategy is caught at build (loud) rather
65
- * than silently skipped at runtime.
66
- */
67
- export declare const BUILTIN_STRATEGY_NAMES: readonly ["postcode_area_resolution", "fallback_fuzzy_name_match"];
68
- /**
69
- * Table name for the convention asset (#290). Carried here so the build script, the runtime source, and the extract
70
- * auto-detect all agree.
71
- */
72
- export declare const ADDRESS_CONVENTION_TABLE = "address_convention";
73
- /**
74
- * A named resolution primitive. Returns `null` to abstain (condition unmet / no data) → the dispatcher tries the next
75
- * strategy; returns an array (possibly empty) to claim the result.
76
- */
77
- export type Strategy = (query: FindPlaceQuery, convention: ResolvedConvention) => Promise<PlaceCandidate[] | null>;
78
- /**
79
- * Look up a convention record by WOF polygon id. Returns `undefined` when the polygon has no override.
80
- */
81
- export interface ConventionSource {
82
- get(wofID: number): Convention | undefined;
83
- }
84
- /**
85
- * In-memory convention source seeded from a `{ wofID: Convention }` map. Empty for the EU locales (they ride
86
- * `WORLD_DEFAULT`); JP / KR / TW add rows. #290 replaces this with a sqlite-backed source built from source, same
87
- * distributable-asset discipline as `postcode-locality-intl.db`.
88
- */
89
- export declare class SeedConventionSource implements ConventionSource {
90
- #private;
91
- constructor(rows?: Record<number, Convention>);
92
- get(wofID: number): Convention | undefined;
93
- }
94
- /**
95
- * Deep-merge convention layers, later (more-specific) layers winning per field. `candidateStrategies` is replaced
96
- * wholesale — a convention names its full ordered list, it does not append. `scoringWeights` is merged key-by-key so a
97
- * locality can nudge one weight without restating the others.
98
- */
99
- export declare function mergeConventions(base: Convention, ...overrides: Array<Convention | undefined>): Convention;
100
- /**
101
- * Resolve the effective convention for a place given its ancestor chain, ordered MOST-GENERAL → MOST-SPECIFIC (country,
102
- * region, …, locality). Starts from `WORLD_DEFAULT` so every field is defined regardless of which (if any) ancestors
103
- * carry an override.
104
- */
105
- export declare function resolveConvention(source: ConventionSource, ancestorIDs: readonly number[]): ResolvedConvention;
106
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/convention/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAE5D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACX;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IAC1B;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAClC,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,cAAc,EAAE,cAAc,CAAA;CAC9B;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,kBAG3B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,oEAAqE,CAAA;AAExG;;;GAGG;AACH,eAAO,MAAM,wBAAwB,uBAAuB,CAAA;AAE5D;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,KAAK,OAAO,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CAAA;AAElH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA;CAC1C;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;;gBAGhD,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAM;IAIjD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;CAG1C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,SAAS,EAAE,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG,UAAU,CAmB1G;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,kBAAkB,CAS9G"}
@@ -1,93 +0,0 @@
1
- /**
2
- * @copyright Sister Software
3
- * @license AGPL-3.0
4
- * @author Teffen Ellis, et al.
5
- *
6
- * The **Geographic Rule Engine** convention model (Direction E, #289 — see
7
- * `docs/articles/plan/2026-06-05-geographic-rule-engine.md` and epic #288).
8
- *
9
- * A `Convention` is a declarative resolution profile attached to a Who's-On-First admin polygon.
10
- * The engine deep-merges the conventions along a resolved place's ancestor chain — country →
11
- * region → … → locality, most-specific winning — and the backend dispatches the named strategies
12
- * in `candidateStrategies`, first to return candidates wins.
13
- *
14
- * This module is the backend-agnostic core: the convention TYPES, the deep-merge, and the seed
15
- * source. The strategy IMPLEMENTATIONS are SQL-bound and live in `lookup.ts`, registered by
16
- * name.
17
- *
18
- * For the existing EU locales (DE/FR/GB/NL) the seed source is empty, so every query resolves to
19
- * `WORLD_DEFAULT` and the dispatch is byte-identical to the pre-engine coordinate-first path. JP
20
- * / KR / TW add rows here (and #290 swaps the seed map for a build-from-source sqlite-backed
21
- * source).
22
- */
23
- /**
24
- * The base layer every ancestor chain starts from. Reproduces the pre-engine coordinate-first behavior exactly: try
25
- * `postcode_area_resolution`, else fall back to fuzzy name match; soft-score weights 0.6 / 0.3 / 0.1. Changing these
26
- * changes EU behavior — don't, without a byte-stability run.
27
- */
28
- export const WORLD_DEFAULT = {
29
- candidateStrategies: ["postcode_area_resolution", "fallback_fuzzy_name_match"],
30
- scoringWeights: { pc: 0.6, name: 0.3, pop: 0.1 },
31
- };
32
- /**
33
- * The strategy names the backend registers. The single source of truth shared by the dispatch registry and the
34
- * build-time validator, so an authored convention that names a non-existent strategy is caught at build (loud) rather
35
- * than silently skipped at runtime.
36
- */
37
- export const BUILTIN_STRATEGY_NAMES = ["postcode_area_resolution", "fallback_fuzzy_name_match"];
38
- /**
39
- * Table name for the convention asset (#290). Carried here so the build script, the runtime source, and the extract
40
- * auto-detect all agree.
41
- */
42
- export const ADDRESS_CONVENTION_TABLE = "address_convention";
43
- /**
44
- * In-memory convention source seeded from a `{ wofID: Convention }` map. Empty for the EU locales (they ride
45
- * `WORLD_DEFAULT`); JP / KR / TW add rows. #290 replaces this with a sqlite-backed source built from source, same
46
- * distributable-asset discipline as `postcode-locality-intl.db`.
47
- */
48
- export class SeedConventionSource {
49
- #rows;
50
- constructor(rows = {}) {
51
- this.#rows = new Map(Object.entries(rows).map(([k, v]) => [Number(k), v]));
52
- }
53
- get(wofID) {
54
- return this.#rows.get(wofID);
55
- }
56
- }
57
- /**
58
- * Deep-merge convention layers, later (more-specific) layers winning per field. `candidateStrategies` is replaced
59
- * wholesale — a convention names its full ordered list, it does not append. `scoringWeights` is merged key-by-key so a
60
- * locality can nudge one weight without restating the others.
61
- */
62
- export function mergeConventions(base, ...overrides) {
63
- const out = {
64
- candidateStrategies: base.candidateStrategies ? [...base.candidateStrategies] : undefined,
65
- scoringWeights: base.scoringWeights ? { ...base.scoringWeights } : undefined,
66
- };
67
- for (const o of overrides) {
68
- if (!o)
69
- continue;
70
- if (o.candidateStrategies !== undefined) {
71
- out.candidateStrategies = [...o.candidateStrategies];
72
- }
73
- if (o.scoringWeights !== undefined) {
74
- out.scoringWeights = { ...(out.scoringWeights ?? WORLD_DEFAULT.scoringWeights), ...o.scoringWeights };
75
- }
76
- }
77
- return out;
78
- }
79
- /**
80
- * Resolve the effective convention for a place given its ancestor chain, ordered MOST-GENERAL → MOST-SPECIFIC (country,
81
- * region, …, locality). Starts from `WORLD_DEFAULT` so every field is defined regardless of which (if any) ancestors
82
- * carry an override.
83
- */
84
- export function resolveConvention(source, ancestorIDs) {
85
- const layers = ancestorIDs.map((id) => source.get(id));
86
- const merged = mergeConventions(WORLD_DEFAULT, ...layers);
87
- return {
88
- candidateStrategies: merged.candidateStrategies ?? WORLD_DEFAULT.candidateStrategies,
89
- // Fill any weight gaps from the base so strategies always see a complete set.
90
- scoringWeights: { ...WORLD_DEFAULT.scoringWeights, ...merged.scoringWeights },
91
- };
92
- }
93
- //# sourceMappingURL=index.js.map