@mailwoman/resolver-wof-sqlite 9.2.0 → 9.3.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.
- package/README.md +16 -19
- package/lib/address/index.ts +9 -0
- package/{address-point-interpolation.ts → lib/address/point-interpolation.ts} +24 -22
- package/{address-point-schema.ts → lib/address/point-schema.ts} +18 -4
- package/{address-point.ts → lib/address/point.ts} +89 -27
- package/{ancestry-backfill.ts → lib/ancestry/backfill.ts} +14 -19
- package/{ancestry.ts → lib/ancestry/index.ts} +5 -3
- package/{build-candidate.ts → lib/build-candidate.ts} +84 -77
- package/{build-slim.ts → lib/build-slim.ts} +150 -165
- package/{candidate → lib/candidate}/alias-bags.ts +8 -6
- package/{candidate → lib/candidate}/ancestors-sidecar.ts +13 -15
- package/{candidate → lib/candidate}/country-display-names.ts +2 -2
- package/{candidate/shard-fold.ts → lib/candidate/extract-fold.ts} +26 -25
- package/{candidate → lib/candidate}/name-roles.ts +17 -16
- package/{candidate → lib/candidate}/own-name.ts +1 -1
- package/{candidate → lib/candidate}/place-attrs.ts +3 -3
- package/{candidate-ancestors-schema.ts → lib/candidate-ancestors-schema.ts} +4 -4
- package/{candidate-fts.ts → lib/candidate-fts.ts} +3 -3
- package/{candidate-importance.ts → lib/candidate-importance.ts} +53 -57
- package/{candidate-lookup.ts → lib/candidate-lookup.ts} +76 -73
- package/{candidate-schema.ts → lib/candidate-schema.ts} +5 -5
- package/{candidate-scoring.ts → lib/candidate-scoring.ts} +15 -22
- package/{capital-schema.ts → lib/capital-schema.ts} +5 -6
- package/{capitals.ts → lib/capitals.ts} +2 -2
- package/{coincident-roles.ts → lib/coincident-roles.ts} +8 -11
- package/{convention.ts → lib/convention/index.ts} +3 -3
- package/{convention-schema.ts → lib/convention/schema.ts} +2 -2
- package/{coverage-manifest-schema.ts → lib/coverage-manifest-schema.ts} +9 -10
- package/{currency-backfill.ts → lib/currency-backfill.ts} +126 -41
- package/lib/env.ts +50 -0
- package/{exact-match.ts → lib/exact-match.ts} +23 -14
- package/{sharding.ts → lib/extracts.ts} +61 -58
- package/{fst-autocomplete.ts → lib/fst/autocomplete.ts} +4 -4
- package/{fst-builder.ts → lib/fst/builder.ts} +17 -16
- package/{fst-deserialize-web.ts → lib/fst/deserialize-web.ts} +27 -87
- package/lib/fst/format.ts +106 -0
- package/{fst-freshness.ts → lib/fst/freshness.ts} +41 -74
- package/lib/fst/index.ts +14 -0
- package/{fst-matcher.ts → lib/fst/matcher.ts} +1 -1
- package/{fst-serialize.ts → lib/fst/serialize.ts} +37 -115
- package/{fst-types.ts → lib/fst/types.ts} +4 -2
- package/{fts.ts → lib/fts/index.ts} +24 -19
- package/{fts-query.ts → lib/fts/query.ts} +1 -1
- package/{geonames-aliases.ts → lib/geonames/aliases.ts} +13 -13
- package/lib/geonames/index.ts +8 -0
- package/{geonames-postal.ts → lib/geonames/postal.ts} +14 -13
- package/{index.ts → lib/index.ts} +37 -37
- package/{interpolation.ts → lib/interpolation.ts} +27 -25
- package/{lookup.ts → lib/lookup.ts} +129 -141
- package/lib/nsul/index.ts +8 -0
- package/lib/nsul/lookup.ts +144 -0
- package/lib/nsul/schema.ts +130 -0
- package/{place-importance-schema.ts → lib/place-importance-schema.ts} +7 -8
- package/lib/poi/index.ts +8 -0
- package/{poi-lookup.ts → lib/poi/lookup.ts} +22 -28
- package/{poi-schema.ts → lib/poi/schema.ts} +3 -4
- package/{postal-city-alias-lookup.ts → lib/postal/city-alias-lookup.ts} +14 -20
- package/{postal-city-candidate-schema.ts → lib/postal/city-candidate-schema.ts} +2 -2
- package/lib/postal/index.ts +9 -0
- package/{postcode-point-lookup.ts → lib/postcode-point-lookup.ts} +17 -15
- package/{primary-preference.ts → lib/primary-preference.ts} +29 -10
- package/{proximity-rerank.ts → lib/proximity-rerank.ts} +2 -2
- package/{ranking-weights.ts → lib/ranking-weights.ts} +30 -4
- package/{region-keys.ts → lib/region-keys.ts} +9 -9
- package/{reverse.ts → lib/reverse.ts} +34 -46
- package/{schema.ts → lib/schema.ts} +10 -0
- package/{search-fetch.ts → lib/search-fetch.ts} +29 -28
- package/{sqlite-convention-source.ts → lib/sqlite-convention-source.ts} +9 -10
- package/{sqlite-utils.ts → lib/sqlite-utils.ts} +14 -18
- package/{street-centroid-schema.ts → lib/street/centroid-schema.ts} +5 -5
- package/{street-centroid.ts → lib/street/centroid.ts} +14 -21
- package/lib/street/index.ts +13 -0
- package/{street-morphology-fst-builder.ts → lib/street/morphology-fst-builder.ts} +24 -14
- package/{street-morphology-fst-loader.ts → lib/street/morphology-fst-loader.ts} +14 -12
- package/{street-name-lookup.ts → lib/street/name-lookup.ts} +14 -30
- package/{street-normalize.ts → lib/street/normalize.ts} +44 -19
- package/{street-segment-schema.ts → lib/street/segment-schema.ts} +7 -7
- package/{types.ts → lib/types.ts} +18 -12
- package/{unified-schema.ts → lib/unified-schema.ts} +20 -24
- package/lib/uprn/existence.ts +84 -0
- package/lib/uprn/index.ts +9 -0
- package/{uprn-lookup.ts → lib/uprn/lookup.ts} +14 -18
- package/{uprn-schema.ts → lib/uprn/schema.ts} +3 -3
- package/lib/weights-overlay-linker.ts +878 -0
- package/out/address/index.d.ts +9 -0
- package/out/address/index.d.ts.map +1 -0
- package/out/address/index.js +9 -0
- package/out/address/index.js.map +1 -0
- package/out/{address-point-interpolation.d.ts → address/point-interpolation.d.ts} +11 -10
- package/out/address/point-interpolation.d.ts.map +1 -0
- package/out/{address-point-interpolation.js → address/point-interpolation.js} +18 -18
- package/out/address/point-interpolation.js.map +1 -0
- package/out/{address-point-schema.d.ts → address/point-schema.d.ts} +16 -6
- package/out/address/point-schema.d.ts.map +1 -0
- package/out/{address-point-schema.js → address/point-schema.js} +7 -3
- package/out/address/point-schema.js.map +1 -0
- package/out/{address-point.d.ts → address/point.d.ts} +16 -8
- package/out/address/point.d.ts.map +1 -0
- package/out/{address-point.js → address/point.js} +71 -20
- package/out/address/point.js.map +1 -0
- package/out/{ancestry-backfill.d.ts → ancestry/backfill.d.ts} +7 -5
- package/out/ancestry/backfill.d.ts.map +1 -0
- package/out/{ancestry-backfill.js → ancestry/backfill.js} +12 -16
- package/out/ancestry/backfill.js.map +1 -0
- package/out/{ancestry.d.ts → ancestry/index.d.ts} +4 -3
- package/out/ancestry/index.d.ts.map +1 -0
- package/out/{ancestry.js → ancestry/index.js} +3 -2
- package/out/ancestry/index.js.map +1 -0
- package/out/build-candidate.d.ts +30 -24
- package/out/build-candidate.d.ts.map +1 -1
- package/out/build-candidate.js +50 -52
- package/out/build-candidate.js.map +1 -1
- package/out/build-slim.d.ts +4 -4
- package/out/build-slim.d.ts.map +1 -1
- package/out/build-slim.js +124 -139
- package/out/build-slim.js.map +1 -1
- package/out/candidate/alias-bags.d.ts +5 -3
- package/out/candidate/alias-bags.d.ts.map +1 -1
- package/out/candidate/alias-bags.js +2 -2
- package/out/candidate/alias-bags.js.map +1 -1
- package/out/candidate/ancestors-sidecar.d.ts +9 -10
- package/out/candidate/ancestors-sidecar.d.ts.map +1 -1
- package/out/candidate/ancestors-sidecar.js +7 -7
- package/out/candidate/ancestors-sidecar.js.map +1 -1
- package/out/candidate/country-display-names.d.ts +1 -1
- package/out/candidate/country-display-names.d.ts.map +1 -1
- package/out/candidate/country-display-names.js +1 -1
- package/out/candidate/country-display-names.js.map +1 -1
- package/out/candidate/extract-fold.d.ts +32 -0
- package/out/candidate/extract-fold.d.ts.map +1 -0
- package/out/candidate/{shard-fold.js → extract-fold.js} +20 -20
- package/out/candidate/extract-fold.js.map +1 -0
- package/out/candidate/name-roles.d.ts +13 -11
- package/out/candidate/name-roles.d.ts.map +1 -1
- package/out/candidate/name-roles.js +11 -10
- package/out/candidate/name-roles.js.map +1 -1
- package/out/candidate/own-name.d.ts +1 -1
- package/out/candidate/own-name.d.ts.map +1 -1
- package/out/candidate/own-name.js +1 -1
- package/out/candidate/own-name.js.map +1 -1
- package/out/candidate/place-attrs.d.ts +3 -3
- package/out/candidate/place-attrs.d.ts.map +1 -1
- package/out/candidate/place-attrs.js +1 -1
- package/out/candidate/place-attrs.js.map +1 -1
- package/out/candidate-ancestors-schema.d.ts +4 -4
- package/out/candidate-ancestors-schema.d.ts.map +1 -1
- package/out/candidate-ancestors-schema.js +2 -2
- package/out/candidate-ancestors-schema.js.map +1 -1
- package/out/candidate-fts.d.ts +3 -3
- package/out/candidate-fts.d.ts.map +1 -1
- package/out/candidate-fts.js +1 -1
- package/out/candidate-fts.js.map +1 -1
- package/out/candidate-importance.d.ts +16 -16
- package/out/candidate-importance.d.ts.map +1 -1
- package/out/candidate-importance.js +46 -51
- package/out/candidate-importance.js.map +1 -1
- package/out/candidate-lookup.d.ts +11 -9
- package/out/candidate-lookup.d.ts.map +1 -1
- package/out/candidate-lookup.js +61 -58
- package/out/candidate-lookup.js.map +1 -1
- package/out/candidate-schema.d.ts +5 -5
- package/out/candidate-schema.d.ts.map +1 -1
- package/out/candidate-schema.js.map +1 -1
- package/out/candidate-scoring.d.ts +7 -7
- package/out/candidate-scoring.d.ts.map +1 -1
- package/out/candidate-scoring.js +10 -14
- package/out/candidate-scoring.js.map +1 -1
- package/out/capital-schema.d.ts +3 -3
- package/out/capital-schema.d.ts.map +1 -1
- package/out/capital-schema.js +2 -2
- package/out/capital-schema.js.map +1 -1
- package/out/capitals.d.ts +1 -1
- package/out/capitals.d.ts.map +1 -1
- package/out/capitals.js +2 -2
- package/out/capitals.js.map +1 -1
- package/out/coincident-roles.d.ts +6 -5
- package/out/coincident-roles.d.ts.map +1 -1
- package/out/coincident-roles.js +2 -4
- package/out/coincident-roles.js.map +1 -1
- package/out/{convention.d.ts → convention/index.d.ts} +4 -4
- package/out/convention/index.d.ts.map +1 -0
- package/out/{convention.js → convention/index.js} +2 -2
- package/out/convention/index.js.map +1 -0
- package/out/{convention-schema.d.ts → convention/schema.d.ts} +2 -2
- package/out/convention/schema.d.ts.map +1 -0
- package/out/{convention-schema.js → convention/schema.js} +3 -3
- package/out/convention/schema.js.map +1 -0
- package/out/coverage-manifest-schema.d.ts +8 -8
- package/out/coverage-manifest-schema.d.ts.map +1 -1
- package/out/coverage-manifest-schema.js +4 -4
- package/out/coverage-manifest-schema.js.map +1 -1
- package/out/currency-backfill.d.ts +51 -7
- package/out/currency-backfill.d.ts.map +1 -1
- package/out/currency-backfill.js +65 -49
- package/out/currency-backfill.js.map +1 -1
- package/out/env.d.ts +43 -0
- package/out/env.d.ts.map +1 -0
- package/out/env.js +48 -0
- package/out/env.js.map +1 -0
- package/out/exact-match.d.ts +5 -5
- package/out/exact-match.d.ts.map +1 -1
- package/out/exact-match.js +10 -11
- package/out/exact-match.js.map +1 -1
- package/out/extracts.d.ts +114 -0
- package/out/extracts.d.ts.map +1 -0
- package/out/{sharding.js → extracts.js} +38 -38
- package/out/extracts.js.map +1 -0
- package/out/{fst-autocomplete.d.ts → fst/autocomplete.d.ts} +2 -2
- package/out/fst/autocomplete.d.ts.map +1 -0
- package/out/{fst-autocomplete.js → fst/autocomplete.js} +3 -3
- package/out/fst/autocomplete.js.map +1 -0
- package/out/{fst-builder.d.ts → fst/builder.d.ts} +5 -5
- package/out/fst/builder.d.ts.map +1 -0
- package/out/{fst-builder.js → fst/builder.js} +14 -13
- package/out/fst/builder.js.map +1 -0
- package/out/{fst-deserialize-web.d.ts → fst/deserialize-web.d.ts} +3 -3
- package/out/fst/deserialize-web.d.ts.map +1 -0
- package/out/{fst-deserialize-web.js → fst/deserialize-web.js} +10 -74
- package/out/fst/deserialize-web.js.map +1 -0
- package/out/fst/format.d.ts +80 -0
- package/out/fst/format.d.ts.map +1 -0
- package/out/fst/format.js +91 -0
- package/out/fst/format.js.map +1 -0
- package/out/{fst-freshness.d.ts → fst/freshness.d.ts} +10 -13
- package/out/fst/freshness.d.ts.map +1 -0
- package/out/{fst-freshness.js → fst/freshness.js} +41 -73
- package/out/fst/freshness.js.map +1 -0
- package/out/fst/index.d.ts +14 -0
- package/out/fst/index.d.ts.map +1 -0
- package/out/fst/index.js +14 -0
- package/out/fst/index.js.map +1 -0
- package/out/{fst-matcher.d.ts → fst/matcher.d.ts} +2 -2
- package/out/fst/matcher.d.ts.map +1 -0
- package/out/{fst-matcher.js → fst/matcher.js} +1 -1
- package/out/fst/matcher.js.map +1 -0
- package/out/{fst-serialize.d.ts → fst/serialize.d.ts} +5 -10
- package/out/fst/serialize.d.ts.map +1 -0
- package/out/{fst-serialize.js → fst/serialize.js} +18 -98
- package/out/fst/serialize.js.map +1 -0
- package/out/{fst-types.d.ts → fst/types.d.ts} +4 -3
- package/out/fst/types.d.ts.map +1 -0
- package/out/{fst-types.js → fst/types.js} +1 -1
- package/out/fst/types.js.map +1 -0
- package/out/{fts.d.ts → fts/index.d.ts} +16 -9
- package/out/fts/index.d.ts.map +1 -0
- package/out/{fts.js → fts/index.js} +16 -11
- package/out/fts/index.js.map +1 -0
- package/out/{fts-query.d.ts → fts/query.d.ts} +2 -2
- package/out/fts/query.d.ts.map +1 -0
- package/out/{fts-query.js → fts/query.js} +1 -1
- package/out/fts/query.js.map +1 -0
- package/out/{geonames-aliases.d.ts → geonames/aliases.d.ts} +8 -6
- package/out/geonames/aliases.d.ts.map +1 -0
- package/out/{geonames-aliases.js → geonames/aliases.js} +7 -7
- package/out/geonames/aliases.js.map +1 -0
- package/out/geonames/index.d.ts +8 -0
- package/out/geonames/index.d.ts.map +1 -0
- package/out/geonames/index.js +8 -0
- package/out/geonames/index.js.map +1 -0
- package/out/{geonames-postal.d.ts → geonames/postal.d.ts} +10 -8
- package/out/geonames/postal.d.ts.map +1 -0
- package/out/{geonames-postal.js → geonames/postal.js} +9 -9
- package/out/geonames/postal.js.map +1 -0
- package/out/index.d.ts +32 -32
- package/out/index.d.ts.map +1 -1
- package/out/index.js +24 -24
- package/out/index.js.map +1 -1
- package/out/interpolation.d.ts +10 -9
- package/out/interpolation.d.ts.map +1 -1
- package/out/interpolation.js +20 -20
- package/out/interpolation.js.map +1 -1
- package/out/lookup.d.ts +21 -20
- package/out/lookup.d.ts.map +1 -1
- package/out/lookup.js +102 -112
- package/out/lookup.js.map +1 -1
- package/out/name-score.d.ts.map +1 -1
- package/out/name-score.js.map +1 -1
- package/out/nsul/index.d.ts +8 -0
- package/out/nsul/index.d.ts.map +1 -0
- package/out/nsul/index.js +8 -0
- package/out/nsul/index.js.map +1 -0
- package/out/nsul/lookup.d.ts +83 -0
- package/out/nsul/lookup.d.ts.map +1 -0
- package/out/nsul/lookup.js +80 -0
- package/out/nsul/lookup.js.map +1 -0
- package/out/nsul/schema.d.ts +100 -0
- package/out/nsul/schema.d.ts.map +1 -0
- package/out/nsul/schema.js +78 -0
- package/out/nsul/schema.js.map +1 -0
- package/out/place-importance-schema.d.ts +5 -5
- package/out/place-importance-schema.d.ts.map +1 -1
- package/out/place-importance-schema.js +3 -3
- package/out/place-importance-schema.js.map +1 -1
- package/out/poi/index.d.ts +8 -0
- package/out/poi/index.d.ts.map +1 -0
- package/out/poi/index.js +8 -0
- package/out/poi/index.js.map +1 -0
- package/out/{poi-lookup.d.ts → poi/lookup.d.ts} +8 -10
- package/out/poi/lookup.d.ts.map +1 -0
- package/out/{poi-lookup.js → poi/lookup.js} +14 -18
- package/out/poi/lookup.js.map +1 -0
- package/out/{poi-schema.d.ts → poi/schema.d.ts} +4 -4
- package/out/poi/schema.d.ts.map +1 -0
- package/out/{poi-schema.js → poi/schema.js} +1 -1
- package/out/poi/schema.js.map +1 -0
- package/out/polygon-schema.d.ts.map +1 -1
- package/out/polygon-schema.js.map +1 -1
- package/out/{postal-city-alias-lookup.d.ts → postal/city-alias-lookup.d.ts} +6 -5
- package/out/postal/city-alias-lookup.d.ts.map +1 -0
- package/out/{postal-city-alias-lookup.js → postal/city-alias-lookup.js} +11 -15
- package/out/postal/city-alias-lookup.js.map +1 -0
- package/out/{postal-city-alias-schema.d.ts → postal/city-alias-schema.d.ts} +1 -1
- package/out/{postal-city-alias-schema.d.ts.map → postal/city-alias-schema.d.ts.map} +1 -1
- package/out/{postal-city-alias-schema.js → postal/city-alias-schema.js} +1 -1
- package/out/{postal-city-alias-schema.js.map → postal/city-alias-schema.js.map} +1 -1
- package/out/{postal-city-candidate-schema.d.ts → postal/city-candidate-schema.d.ts} +3 -3
- package/out/{postal-city-candidate-schema.d.ts.map → postal/city-candidate-schema.d.ts.map} +1 -1
- package/out/{postal-city-candidate-schema.js → postal/city-candidate-schema.js} +2 -2
- package/out/{postal-city-candidate-schema.js.map → postal/city-candidate-schema.js.map} +1 -1
- package/out/postal/index.d.ts +9 -0
- package/out/postal/index.d.ts.map +1 -0
- package/out/postal/index.js +9 -0
- package/out/postal/index.js.map +1 -0
- package/out/postcode-point-lookup.d.ts +10 -10
- package/out/postcode-point-lookup.d.ts.map +1 -1
- package/out/postcode-point-lookup.js +13 -13
- package/out/postcode-point-lookup.js.map +1 -1
- package/out/primary-preference.d.ts +13 -5
- package/out/primary-preference.d.ts.map +1 -1
- package/out/primary-preference.js +16 -8
- package/out/primary-preference.js.map +1 -1
- package/out/proximity-rerank.d.ts +2 -2
- package/out/proximity-rerank.d.ts.map +1 -1
- package/out/proximity-rerank.js +2 -2
- package/out/proximity-rerank.js.map +1 -1
- package/out/ranking-weights.d.ts +15 -3
- package/out/ranking-weights.d.ts.map +1 -1
- package/out/ranking-weights.js +21 -3
- package/out/ranking-weights.js.map +1 -1
- package/out/region-keys.d.ts +8 -8
- package/out/region-keys.d.ts.map +1 -1
- package/out/region-keys.js +9 -9
- package/out/region-keys.js.map +1 -1
- package/out/reverse.d.ts +6 -6
- package/out/reverse.d.ts.map +1 -1
- package/out/reverse.js +20 -29
- package/out/reverse.js.map +1 -1
- package/out/schema.d.ts +9 -0
- package/out/schema.d.ts.map +1 -1
- package/out/schema.js.map +1 -1
- package/out/search-fetch.d.ts +12 -10
- package/out/search-fetch.d.ts.map +1 -1
- package/out/search-fetch.js +21 -20
- package/out/search-fetch.js.map +1 -1
- package/out/sqlite-convention-source.d.ts +7 -7
- package/out/sqlite-convention-source.d.ts.map +1 -1
- package/out/sqlite-convention-source.js +5 -5
- package/out/sqlite-convention-source.js.map +1 -1
- package/out/sqlite-utils.d.ts +8 -8
- package/out/sqlite-utils.d.ts.map +1 -1
- package/out/sqlite-utils.js +7 -8
- package/out/sqlite-utils.js.map +1 -1
- package/out/{street-centroid-schema.d.ts → street/centroid-schema.d.ts} +6 -6
- package/out/{street-centroid-schema.d.ts.map → street/centroid-schema.d.ts.map} +1 -1
- package/out/{street-centroid-schema.js → street/centroid-schema.js} +5 -5
- package/out/{street-centroid-schema.js.map → street/centroid-schema.js.map} +1 -1
- package/out/{street-centroid.d.ts → street/centroid.d.ts} +6 -6
- package/out/street/centroid.d.ts.map +1 -0
- package/out/{street-centroid.js → street/centroid.js} +13 -19
- package/out/street/centroid.js.map +1 -0
- package/out/street/index.d.ts +13 -0
- package/out/street/index.d.ts.map +1 -0
- package/out/street/index.js +13 -0
- package/out/street/index.js.map +1 -0
- package/out/{street-morphology-fst-builder.d.ts → street/morphology-fst-builder.d.ts} +4 -4
- package/out/street/morphology-fst-builder.d.ts.map +1 -0
- package/out/{street-morphology-fst-builder.js → street/morphology-fst-builder.js} +18 -13
- package/out/street/morphology-fst-builder.js.map +1 -0
- package/out/{street-morphology-fst-loader.d.ts → street/morphology-fst-loader.d.ts} +5 -5
- package/out/street/morphology-fst-loader.d.ts.map +1 -0
- package/out/{street-morphology-fst-loader.js → street/morphology-fst-loader.js} +11 -10
- package/out/street/morphology-fst-loader.js.map +1 -0
- package/out/{street-name-lookup.d.ts → street/name-lookup.d.ts} +4 -7
- package/out/street/name-lookup.d.ts.map +1 -0
- package/out/{street-name-lookup.js → street/name-lookup.js} +9 -23
- package/out/street/name-lookup.js.map +1 -0
- package/out/{street-normalize.d.ts → street/normalize.d.ts} +25 -14
- package/out/street/normalize.d.ts.map +1 -0
- package/out/{street-normalize.js → street/normalize.js} +36 -17
- package/out/street/normalize.js.map +1 -0
- package/out/{street-segment-schema.d.ts → street/segment-schema.d.ts} +8 -8
- package/out/{street-segment-schema.d.ts.map → street/segment-schema.d.ts.map} +1 -1
- package/out/{street-segment-schema.js → street/segment-schema.js} +4 -4
- package/out/{street-segment-schema.js.map → street/segment-schema.js.map} +1 -1
- package/out/types.d.ts +18 -12
- package/out/types.d.ts.map +1 -1
- package/out/types.js.map +1 -1
- package/out/unified-schema.d.ts +5 -4
- package/out/unified-schema.d.ts.map +1 -1
- package/out/unified-schema.js +15 -18
- package/out/unified-schema.js.map +1 -1
- package/out/uprn/existence.d.ts +53 -0
- package/out/uprn/existence.d.ts.map +1 -0
- package/out/uprn/existence.js +61 -0
- package/out/uprn/existence.js.map +1 -0
- package/out/uprn/index.d.ts +9 -0
- package/out/uprn/index.d.ts.map +1 -0
- package/out/uprn/index.js +9 -0
- package/out/uprn/index.js.map +1 -0
- package/out/{uprn-lookup.d.ts → uprn/lookup.d.ts} +4 -4
- package/out/uprn/lookup.d.ts.map +1 -0
- package/out/{uprn-lookup.js → uprn/lookup.js} +11 -14
- package/out/uprn/lookup.js.map +1 -0
- package/out/{uprn-schema.d.ts → uprn/schema.d.ts} +4 -4
- package/out/uprn/schema.d.ts.map +1 -0
- package/out/{uprn-schema.js → uprn/schema.js} +4 -4
- package/out/uprn/schema.js.map +1 -0
- package/out/weights-overlay-linker.d.ts +184 -26
- package/out/weights-overlay-linker.d.ts.map +1 -1
- package/out/weights-overlay-linker.js +338 -86
- package/out/weights-overlay-linker.js.map +1 -1
- package/package.json +465 -269
- package/out/address-point-interpolation.d.ts.map +0 -1
- package/out/address-point-interpolation.js.map +0 -1
- package/out/address-point-schema.d.ts.map +0 -1
- package/out/address-point-schema.js.map +0 -1
- package/out/address-point.d.ts.map +0 -1
- package/out/address-point.js.map +0 -1
- package/out/ancestry-backfill.d.ts.map +0 -1
- package/out/ancestry-backfill.js.map +0 -1
- package/out/ancestry.d.ts.map +0 -1
- package/out/ancestry.js.map +0 -1
- package/out/candidate/shard-fold.d.ts +0 -31
- package/out/candidate/shard-fold.d.ts.map +0 -1
- package/out/candidate/shard-fold.js.map +0 -1
- package/out/convention-schema.d.ts.map +0 -1
- package/out/convention-schema.js.map +0 -1
- package/out/convention.d.ts.map +0 -1
- package/out/convention.js.map +0 -1
- package/out/fst-autocomplete.d.ts.map +0 -1
- package/out/fst-autocomplete.js.map +0 -1
- package/out/fst-builder.d.ts.map +0 -1
- package/out/fst-builder.js.map +0 -1
- package/out/fst-deserialize-web.d.ts.map +0 -1
- package/out/fst-deserialize-web.js.map +0 -1
- package/out/fst-freshness.d.ts.map +0 -1
- package/out/fst-freshness.js.map +0 -1
- package/out/fst-matcher.d.ts.map +0 -1
- package/out/fst-matcher.js.map +0 -1
- package/out/fst-serialize.d.ts.map +0 -1
- package/out/fst-serialize.js.map +0 -1
- package/out/fst-types.d.ts.map +0 -1
- package/out/fst-types.js.map +0 -1
- package/out/fts-query.d.ts.map +0 -1
- package/out/fts-query.js.map +0 -1
- package/out/fts.d.ts.map +0 -1
- package/out/fts.js.map +0 -1
- package/out/geonames-aliases.d.ts.map +0 -1
- package/out/geonames-aliases.js.map +0 -1
- package/out/geonames-postal.d.ts.map +0 -1
- package/out/geonames-postal.js.map +0 -1
- package/out/poi-lookup.d.ts.map +0 -1
- package/out/poi-lookup.js.map +0 -1
- package/out/poi-schema.d.ts.map +0 -1
- package/out/poi-schema.js.map +0 -1
- package/out/postal-city-alias-lookup.d.ts.map +0 -1
- package/out/postal-city-alias-lookup.js.map +0 -1
- package/out/sharding.d.ts +0 -114
- package/out/sharding.d.ts.map +0 -1
- package/out/sharding.js.map +0 -1
- package/out/street-centroid.d.ts.map +0 -1
- package/out/street-centroid.js.map +0 -1
- package/out/street-morphology-fst-builder.d.ts.map +0 -1
- package/out/street-morphology-fst-builder.js.map +0 -1
- package/out/street-morphology-fst-loader.d.ts.map +0 -1
- package/out/street-morphology-fst-loader.js.map +0 -1
- package/out/street-name-lookup.d.ts.map +0 -1
- package/out/street-name-lookup.js.map +0 -1
- package/out/street-normalize.d.ts.map +0 -1
- package/out/street-normalize.js.map +0 -1
- package/out/uprn-lookup.d.ts.map +0 -1
- package/out/uprn-lookup.js.map +0 -1
- package/out/uprn-schema.d.ts.map +0 -1
- package/out/uprn-schema.js.map +0 -1
- package/weights-overlay-linker.ts +0 -377
- /package/{name-score.ts → lib/name-score.ts} +0 -0
- /package/{polygon-schema.ts → lib/polygon-schema.ts} +0 -0
- /package/{postal-city-alias-schema.ts → lib/postal/city-alias-schema.ts} +0 -0
|
@@ -12,23 +12,20 @@
|
|
|
12
12
|
* `place_search` FTS5 + `place_bbox` R*Tree are built separately by `build-fts` (fts.ts).
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import type {
|
|
15
|
+
import type { DatabaseClient } from "@mailwoman/sqlite/client"
|
|
16
16
|
|
|
17
|
-
import {
|
|
17
|
+
import type { WOFDatabase } from "#schema"
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export async function createUnifiedSchema(db: DatabaseSync): Promise<void> {
|
|
19
|
+
export async function createUnifiedSchema(db: DatabaseClient<WOFDatabase>): Promise<void> {
|
|
22
20
|
// PRAGMAs stay raw — not Kysely-modelled, and these tune the bulk build.
|
|
23
21
|
db.exec("PRAGMA journal_mode = WAL")
|
|
24
22
|
db.exec("PRAGMA busy_timeout = 10000")
|
|
25
23
|
db.exec("PRAGMA synchronous = OFF")
|
|
26
24
|
|
|
27
|
-
// `
|
|
25
|
+
// `db` wraps `db` for the DDL (the house idiom); the caller owns `db`'s lifecycle, so we don't
|
|
28
26
|
// destroy it here. The bulk INSERTs (populateAncestors + build-unified-wof) stay on the raw handle.
|
|
29
|
-
const kdb = new DatabaseClient<WOFDatabase>({ database: db })
|
|
30
27
|
|
|
31
|
-
await
|
|
28
|
+
await db.schema
|
|
32
29
|
.createTable("spr")
|
|
33
30
|
.ifNotExists()
|
|
34
31
|
.addColumn("id", "integer", (c) => c.primaryKey())
|
|
@@ -56,7 +53,7 @@ export async function createUnifiedSchema(db: DatabaseSync): Promise<void> {
|
|
|
56
53
|
// x_variant rows tagged with an official language ("MSP", "Frisco") stay 0. Primary-name mirror
|
|
57
54
|
// rows stay 0 too: the name-exact tier already consults spr.name; `official` only marks the
|
|
58
55
|
// ALIASES eligible to join it. Both are ingest-time facts, never computed at query time.
|
|
59
|
-
await
|
|
56
|
+
await db.schema
|
|
60
57
|
.createTable("names")
|
|
61
58
|
.ifNotExists()
|
|
62
59
|
.addColumn("id", "integer", (c) => c.notNull())
|
|
@@ -69,7 +66,7 @@ export async function createUnifiedSchema(db: DatabaseSync): Promise<void> {
|
|
|
69
66
|
.addColumn("lastmodified", "integer", (c) => c.notNull().defaultTo(0))
|
|
70
67
|
.execute()
|
|
71
68
|
|
|
72
|
-
await
|
|
69
|
+
await db.schema
|
|
73
70
|
.createTable("concordances")
|
|
74
71
|
.ifNotExists()
|
|
75
72
|
.addColumn("id", "integer", (c) => c.notNull())
|
|
@@ -78,7 +75,7 @@ export async function createUnifiedSchema(db: DatabaseSync): Promise<void> {
|
|
|
78
75
|
.addColumn("lastmodified", "integer", (c) => c.notNull().defaultTo(0))
|
|
79
76
|
.execute()
|
|
80
77
|
|
|
81
|
-
await
|
|
78
|
+
await db.schema
|
|
82
79
|
.createTable("place_population")
|
|
83
80
|
.ifNotExists()
|
|
84
81
|
.addColumn("id", "integer", (c) => c.primaryKey())
|
|
@@ -90,7 +87,7 @@ export async function createUnifiedSchema(db: DatabaseSync): Promise<void> {
|
|
|
90
87
|
// `spr.id IN (SELECT id FROM ancestors WHERE ancestor_id = ?)`. The off-the-shelf WOF dumps
|
|
91
88
|
// ship this table; our build derives it from the parent_id chain (see populateAncestors) since
|
|
92
89
|
// we don't capture `wof:hierarchy`.
|
|
93
|
-
await
|
|
90
|
+
await db.schema
|
|
94
91
|
.createTable("ancestors")
|
|
95
92
|
.ifNotExists()
|
|
96
93
|
.addColumn("id", "integer", (c) => c.notNull())
|
|
@@ -107,7 +104,7 @@ export async function createUnifiedSchema(db: DatabaseSync): Promise<void> {
|
|
|
107
104
|
* Sentinel/negative parent_ids and cycles terminate the walk. ~4 rows/place average; a transaction keeps the ~5M
|
|
108
105
|
* inserts fast.
|
|
109
106
|
*/
|
|
110
|
-
export function populateAncestors(db:
|
|
107
|
+
export function populateAncestors<DB>(db: DatabaseClient<DB>): number {
|
|
111
108
|
db.exec("DELETE FROM ancestors")
|
|
112
109
|
|
|
113
110
|
const rows = db.prepare("SELECT id, parent_id, placetype FROM spr").all() as Array<{
|
|
@@ -151,22 +148,21 @@ export function populateAncestors(db: DatabaseSync): number {
|
|
|
151
148
|
return count
|
|
152
149
|
}
|
|
153
150
|
|
|
154
|
-
export async function createUnifiedIndexes(db:
|
|
155
|
-
|
|
156
|
-
await
|
|
157
|
-
await
|
|
158
|
-
await
|
|
159
|
-
await
|
|
160
|
-
await kdb.schema.createIndex("names_by_name").ifNotExists().on("names").column("name").execute()
|
|
151
|
+
export async function createUnifiedIndexes(db: DatabaseClient<WOFDatabase>): Promise<void> {
|
|
152
|
+
await db.schema.createIndex("spr_by_placetype").ifNotExists().on("spr").column("placetype").execute()
|
|
153
|
+
await db.schema.createIndex("spr_by_country").ifNotExists().on("spr").column("country").execute()
|
|
154
|
+
await db.schema.createIndex("spr_by_parent").ifNotExists().on("spr").column("parent_id").execute()
|
|
155
|
+
await db.schema.createIndex("names_by_id").ifNotExists().on("names").column("id").execute()
|
|
156
|
+
await db.schema.createIndex("names_by_name").ifNotExists().on("names").column("name").execute()
|
|
161
157
|
|
|
162
|
-
await
|
|
158
|
+
await db.schema
|
|
163
159
|
.createIndex("concordances_by_id")
|
|
164
160
|
.ifNotExists()
|
|
165
161
|
.on("concordances")
|
|
166
162
|
.columns(["id", "lastmodified"])
|
|
167
163
|
.execute()
|
|
168
164
|
|
|
169
|
-
await
|
|
165
|
+
await db.schema
|
|
170
166
|
.createIndex("concordances_by_other_id")
|
|
171
167
|
.ifNotExists()
|
|
172
168
|
.on("concordances")
|
|
@@ -175,6 +171,6 @@ export async function createUnifiedIndexes(db: DatabaseSync): Promise<void> {
|
|
|
175
171
|
|
|
176
172
|
// ancestor_id is the hot column (parent-constraint queries `WHERE ancestor_id = ?`); id supports
|
|
177
173
|
// the reverse lookup.
|
|
178
|
-
await
|
|
179
|
-
await
|
|
174
|
+
await db.schema.createIndex("ancestors_by_ancestor").ifNotExists().on("ancestors").column("ancestor_id").execute()
|
|
175
|
+
await db.schema.createIndex("ancestors_by_id").ifNotExists().on("ancestors").column("id").execute()
|
|
180
176
|
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
* @file The consult `./lookup.ts`'s docstring instructs: "callers building negative evidence must consult
|
|
6
|
+
* `readLayerCoverage`, not this reader alone." A bare `null` from `nearestUPRN` is two different facts — no UPRN here,
|
|
7
|
+
* or nobody surveyed here — and this is the only place that separates them. It answers an {@link Exclusion} or `null`,
|
|
8
|
+
* so a caller cannot read an unsurveyed cell as an empty one by accident.
|
|
9
|
+
*
|
|
10
|
+
* `radiusM` is a CALLER'S parameter with no default. There is no radius that is correct for both "which property is
|
|
11
|
+
* this coordinate" and "is this street built at all", and picking one here would bury that choice where nobody
|
|
12
|
+
* reviewing an exclusion can see it.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { readLayerCoverage, readLayerManifest, type LayerContractHandle } from "@mailwoman/core/layers"
|
|
16
|
+
import { foldIdentity, requireExclusionBasis, type Exclusion } from "@mailwoman/evidence"
|
|
17
|
+
import { shortCellToParentInt } from "@mailwoman/spatial"
|
|
18
|
+
|
|
19
|
+
import type { UPRNLookup } from "#uprn/lookup"
|
|
20
|
+
import { UPRN_COVERAGE_H3_RESOLUTION, UPRN_H3_RESOLUTION, uprnH3Cell } from "#uprn/schema"
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The identity fold, on purpose: this probe keys on a COORDINATE, not a name, so there is no string folding for the
|
|
24
|
+
* builder and the probe to disagree about. Passing the same identity as both `probeFold` and `layerFold` records that
|
|
25
|
+
* the fold axis is not in play here, rather than silently omitting the check. It is not a stub.
|
|
26
|
+
*/
|
|
27
|
+
export const UPRN_EXISTENCE_FOLD = foldIdentity((s) => s)
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The countries OS Open UPRN covers. Northern Ireland is outside the product, so a `null` there is unknown and must
|
|
31
|
+
* never become evidence of absence; the country check is what keeps it out.
|
|
32
|
+
*/
|
|
33
|
+
export const UPRN_COVERED_COUNTRIES: ReadonlySet<string> = new Set(["GB"])
|
|
34
|
+
|
|
35
|
+
export interface UPRNAbsenceInput {
|
|
36
|
+
lookup: UPRNLookup
|
|
37
|
+
/**
|
|
38
|
+
* The same file the lookup reads; the layer contract tables live beside the points.
|
|
39
|
+
*/
|
|
40
|
+
contractDB: LayerContractHandle
|
|
41
|
+
latitude: number
|
|
42
|
+
longitude: number
|
|
43
|
+
radiusM: number
|
|
44
|
+
/**
|
|
45
|
+
* ISO-2 country of the thing whose absence is being asserted, when known.
|
|
46
|
+
*/
|
|
47
|
+
country?: string
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The coverage cell a coordinate falls in, derived from its stored res-9 cell exactly as the builder derives it — never
|
|
52
|
+
* from the centroid, which lands in a different parent for a fraction of cells.
|
|
53
|
+
*/
|
|
54
|
+
export function uprnCoverageCell(latitude: number, longitude: number): number {
|
|
55
|
+
return shortCellToParentInt(uprnH3Cell(latitude, longitude), UPRN_H3_RESOLUTION, UPRN_COVERAGE_H3_RESOLUTION)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* An {@link Exclusion} when no UPRN lies within `radiusM` AND the layer's coverage licenses saying so; `null` on a hit
|
|
60
|
+
* (presence is not this probe's business) and on every refusal (unsurveyed cell, `source_present` basis, a country the
|
|
61
|
+
* product does not cover). Never throws on a refusal: the caller falls open to the ranking it already had.
|
|
62
|
+
*/
|
|
63
|
+
export async function uprnAbsenceAt(input: UPRNAbsenceInput): Promise<Exclusion | null> {
|
|
64
|
+
const coverageCell = uprnCoverageCell(input.latitude, input.longitude)
|
|
65
|
+
const coverage = await readLayerCoverage(input.contractDB, coverageCell)
|
|
66
|
+
|
|
67
|
+
if (!coverage) return null
|
|
68
|
+
|
|
69
|
+
if (input.lookup.nearestUPRN(input.latitude, input.longitude, input.radiusM)) return null
|
|
70
|
+
|
|
71
|
+
const manifest = await readLayerManifest(input.contractDB)
|
|
72
|
+
|
|
73
|
+
return requireExclusionBasis({
|
|
74
|
+
layer: manifest.name,
|
|
75
|
+
source: manifest.source,
|
|
76
|
+
vintage: manifest.sourceVintage,
|
|
77
|
+
h3Cell: coverageCell,
|
|
78
|
+
cell: coverage,
|
|
79
|
+
probeFold: UPRN_EXISTENCE_FOLD,
|
|
80
|
+
layerFold: UPRN_EXISTENCE_FOLD,
|
|
81
|
+
country: input.country,
|
|
82
|
+
countries: UPRN_COVERED_COUNTRIES,
|
|
83
|
+
})
|
|
84
|
+
}
|
|
@@ -25,13 +25,13 @@
|
|
|
25
25
|
* `@mailwoman/spatial`'s `shortCellToInt` via `uprnFullCell` — never reimplemented here.
|
|
26
26
|
*/
|
|
27
27
|
|
|
28
|
-
import { DatabaseSync } from "node:sqlite"
|
|
29
|
-
|
|
30
28
|
import { haversineKm, shortCellToInt, type H3Cell } from "@mailwoman/spatial"
|
|
29
|
+
import { DatabaseClient } from "@mailwoman/sqlite/client"
|
|
31
30
|
import { gridDisk } from "h3-js"
|
|
32
31
|
|
|
33
|
-
import { allRows } from "
|
|
34
|
-
import {
|
|
32
|
+
import { allRows } from "#sqlite-utils"
|
|
33
|
+
import type { UPRNDatabase } from "#uprn/schema"
|
|
34
|
+
import { uprnFullCell } from "#uprn/schema"
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
37
|
* Conservative FLOOR on how much CENTRE distance one unit of res-9 GRID distance buys, metres. Adjacent centres sit √3
|
|
@@ -82,7 +82,7 @@ export interface UPRNLookupOpts {
|
|
|
82
82
|
/**
|
|
83
83
|
* Pre-opened handle (tests / shared connections). Mutually exclusive with `databasePath`.
|
|
84
84
|
*/
|
|
85
|
-
database?:
|
|
85
|
+
database?: DatabaseClient<UPRNDatabase>
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
interface UPRNRow {
|
|
@@ -96,21 +96,23 @@ interface UPRNRow {
|
|
|
96
96
|
* precedent as {@link POILookup}.
|
|
97
97
|
*/
|
|
98
98
|
export class UPRNLookup implements Disposable {
|
|
99
|
-
#db:
|
|
100
|
-
|
|
99
|
+
#db: DatabaseClient<UPRNDatabase>
|
|
100
|
+
/**
|
|
101
|
+
* Resources this instance opened. A connection handed in by a caller is NOT in here, so disposal cannot reach it —
|
|
102
|
+
* ownership is membership rather than a flag a later branch has to check.
|
|
103
|
+
*/
|
|
104
|
+
readonly #resources = new DisposableStack()
|
|
101
105
|
|
|
102
106
|
/**
|
|
103
107
|
* `uprn` → its point (rowid-alias PK hit).
|
|
104
108
|
*/
|
|
105
|
-
readonly #coordinateProbe: ReturnType<
|
|
109
|
+
readonly #coordinateProbe: ReturnType<DatabaseClient["prepare"]>
|
|
106
110
|
|
|
107
111
|
constructor(opts: UPRNLookupOpts) {
|
|
108
112
|
if (opts.database) {
|
|
109
113
|
this.#db = opts.database
|
|
110
|
-
this.#ownsDB = false
|
|
111
114
|
} else if (opts.databasePath) {
|
|
112
|
-
this.#db = new
|
|
113
|
-
this.#ownsDB = true
|
|
115
|
+
this.#db = this.#resources.use(new DatabaseClient<UPRNDatabase>(opts.databasePath, { readOnly: true }))
|
|
114
116
|
} else {
|
|
115
117
|
throw new Error("UPRNLookup needs `databasePath` or `database`")
|
|
116
118
|
}
|
|
@@ -198,13 +200,7 @@ export class UPRNLookup implements Disposable {
|
|
|
198
200
|
return best
|
|
199
201
|
}
|
|
200
202
|
|
|
201
|
-
close(): void {
|
|
202
|
-
if (this.#ownsDB) {
|
|
203
|
-
this.#db.close()
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
|
|
207
203
|
[Symbol.dispose](): void {
|
|
208
|
-
this.
|
|
204
|
+
this.#resources[Symbol.dispose]()
|
|
209
205
|
}
|
|
210
206
|
}
|
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
* The layer contract requires every domain row to be addressable by at least one spine key —
|
|
23
23
|
* `writeLayerManifest` throws on a manifest that declares none — and UPRN is its own id space, not
|
|
24
24
|
* H3/WOF/address-id/street. The res-9 short cell (`shortCellToInt`, the same packing as poi.db and
|
|
25
|
-
* the OSM situs
|
|
25
|
+
* the OSM situs extracts) is the spine that fits a point table, and its index doubles as the
|
|
26
26
|
* `nearestUPRN` ring probe.
|
|
27
27
|
*
|
|
28
28
|
* The DB also embeds the layer-contract tables from `@mailwoman/core/layers`; the builder
|
|
29
|
-
* (`packages/mailwoman/gazetteer-pipeline/uprn-layer.ts`) writes the manifest and per-res-6-cell
|
|
29
|
+
* (`packages/mailwoman/lib/gazetteer-pipeline/uprn-layer.ts`) writes the manifest and per-res-6-cell
|
|
30
30
|
* coverage.
|
|
31
31
|
*/
|
|
32
32
|
|
|
@@ -37,7 +37,7 @@ import type { Kysely } from "kysely"
|
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
39
|
* Resolution the `uprn` table's `h3_cell` column is keyed at — the shared layer-spine resolution (poi.db, the OSM situs
|
|
40
|
-
*
|
|
40
|
+
* extracts).
|
|
41
41
|
*/
|
|
42
42
|
export const UPRN_H3_RESOLUTION = 9
|
|
43
43
|
|