@mailwoman/resolver-wof-sqlite 10.0.0 → 10.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -8
- package/lib/address/point/interpolation.ts +45 -39
- package/lib/address/point/schema.ts +17 -40
- package/lib/address/point.ts +316 -0
- package/lib/{address/index.ts → address.ts} +1 -1
- package/lib/ancestry/backfill.ts +20 -86
- package/lib/{ancestry/index.ts → ancestry.ts} +19 -15
- package/lib/build/candidate.ts +122 -174
- package/lib/build/population-corrections.ts +64 -0
- package/lib/build/slim.ts +44 -114
- package/lib/candidate/alias-bags.ts +16 -17
- package/lib/candidate/ancestors/schema.ts +77 -61
- package/lib/candidate/ancestors/sidecar.ts +15 -22
- package/lib/candidate/country-display-names.ts +6 -20
- package/lib/candidate/extract-fold.ts +10 -55
- package/lib/candidate/fts.ts +5 -23
- package/lib/candidate/importance.ts +65 -68
- package/lib/candidate/lookup.ts +124 -415
- package/lib/candidate/name-roles.ts +15 -33
- package/lib/candidate/own-name.ts +35 -32
- package/lib/candidate/place-attrs.ts +20 -13
- package/lib/candidate/schema.ts +29 -65
- package/lib/candidate/scoring.ts +54 -93
- package/lib/capital-schema.ts +21 -17
- package/lib/capitals.ts +29 -27
- package/lib/coincident-roles.ts +85 -55
- package/lib/convention/schema.ts +15 -16
- package/lib/convention.ts +144 -0
- package/lib/coverage-manifest-schema.ts +40 -45
- package/lib/currency-backfill.ts +34 -79
- package/lib/env.ts +1 -1
- package/lib/exact-match.ts +32 -21
- package/lib/extracts.ts +97 -74
- package/lib/fst/autocomplete.ts +54 -37
- package/lib/fst/builder.ts +37 -41
- package/lib/fst/deserialize-web.ts +16 -17
- package/lib/fst/format.ts +41 -23
- package/lib/fst/freshness.ts +43 -120
- package/lib/fst/matcher.ts +7 -5
- package/lib/fst/serialize.ts +54 -74
- package/lib/fst/types.ts +78 -75
- package/lib/{fst/index.ts → fst.ts} +1 -0
- package/lib/fts/query.ts +5 -36
- package/lib/fts.ts +280 -0
- package/lib/geonames/aliases.ts +73 -144
- package/lib/geonames/postal.ts +162 -71
- package/lib/index.ts +9 -8
- package/lib/interpolation.ts +48 -100
- package/lib/lookup.ts +155 -270
- package/lib/name-score.ts +9 -7
- package/lib/nsul/lookup.ts +37 -54
- package/lib/nsul/schema.ts +16 -43
- package/lib/paths.ts +159 -0
- package/lib/place-importance-schema.ts +62 -169
- package/lib/poi/lookup.ts +104 -121
- package/lib/poi/schema.ts +42 -26
- package/lib/polygon-schema.ts +10 -6
- package/lib/postal/city/alias/lookup.ts +22 -40
- package/lib/postal/city/alias/schema.ts +14 -10
- package/lib/postal/city/candidate-schema.ts +26 -20
- package/lib/postcode-point-lookup.ts +8 -27
- package/lib/primary-preference.ts +46 -126
- package/lib/proximity-rerank.ts +44 -33
- package/lib/ranking-weights.ts +105 -78
- package/lib/region-keys.ts +70 -42
- package/lib/reverse.ts +149 -86
- package/lib/schema.ts +73 -50
- package/lib/search-fetch.ts +90 -68
- package/lib/sqlite/convention-source.ts +15 -23
- package/lib/sqlite/utils.ts +19 -22
- package/lib/street/centroid/schema.ts +37 -42
- package/lib/street/{centroid/index.ts → centroid.ts} +16 -25
- package/lib/street/morphology/fst/builder.ts +60 -42
- package/lib/street/morphology/fst/loader.ts +40 -32
- package/lib/street/name-lookup.ts +45 -41
- package/lib/street/normalize.ts +88 -219
- package/lib/street/segment-schema.ts +116 -43
- package/lib/{street/index.ts → street.ts} +1 -1
- package/lib/types.ts +109 -150
- package/lib/unified-schema.ts +29 -29
- package/lib/uprn/existence.ts +30 -19
- package/lib/uprn/lookup.ts +29 -68
- package/lib/uprn/schema.ts +18 -40
- package/lib/weights-overlay-linker.ts +236 -252
- package/out/address/point/interpolation.d.ts +20 -23
- package/out/address/point/interpolation.d.ts.map +1 -1
- package/out/address/point/interpolation.js +42 -39
- package/out/address/point/interpolation.js.map +1 -1
- package/out/address/point/schema.d.ts +12 -35
- package/out/address/point/schema.d.ts.map +1 -1
- package/out/address/point/schema.js +3 -19
- package/out/address/point/schema.js.map +1 -1
- package/out/address/point.d.ts +57 -0
- package/out/address/point.d.ts.map +1 -0
- package/out/address/point.js +206 -0
- package/out/address/point.js.map +1 -0
- package/out/{address/index.js → address.d.ts} +2 -2
- package/out/address.d.ts.map +1 -0
- package/out/{address/index.d.ts → address.js} +2 -2
- package/out/address.js.map +1 -0
- package/out/ancestry/backfill.d.ts +11 -64
- package/out/ancestry/backfill.d.ts.map +1 -1
- package/out/ancestry/backfill.js +14 -74
- package/out/ancestry/backfill.js.map +1 -1
- package/out/ancestry.d.ts +49 -0
- package/out/ancestry.d.ts.map +1 -0
- package/out/ancestry.js +59 -0
- package/out/ancestry.js.map +1 -0
- package/out/build/candidate.d.ts +82 -112
- package/out/build/candidate.d.ts.map +1 -1
- package/out/build/candidate.js +17 -100
- package/out/build/candidate.js.map +1 -1
- package/out/build/population-corrections.d.ts +52 -0
- package/out/build/population-corrections.d.ts.map +1 -0
- package/out/build/population-corrections.js +40 -0
- package/out/build/population-corrections.js.map +1 -0
- package/out/build/slim.d.ts +8 -44
- package/out/build/slim.d.ts.map +1 -1
- package/out/build/slim.js +33 -94
- package/out/build/slim.js.map +1 -1
- package/out/candidate/alias-bags.d.ts +6 -6
- package/out/candidate/alias-bags.d.ts.map +1 -1
- package/out/candidate/alias-bags.js +16 -17
- package/out/candidate/alias-bags.js.map +1 -1
- package/out/candidate/ancestors/schema.d.ts +73 -57
- package/out/candidate/ancestors/schema.d.ts.map +1 -1
- package/out/candidate/ancestors/schema.js +56 -48
- package/out/candidate/ancestors/schema.js.map +1 -1
- package/out/candidate/ancestors/sidecar.d.ts +3 -8
- package/out/candidate/ancestors/sidecar.d.ts.map +1 -1
- package/out/candidate/ancestors/sidecar.js +15 -22
- package/out/candidate/ancestors/sidecar.js.map +1 -1
- package/out/candidate/country-display-names.d.ts +5 -15
- package/out/candidate/country-display-names.d.ts.map +1 -1
- package/out/candidate/country-display-names.js +6 -20
- package/out/candidate/country-display-names.js.map +1 -1
- package/out/candidate/extract-fold.d.ts +7 -15
- package/out/candidate/extract-fold.d.ts.map +1 -1
- package/out/candidate/extract-fold.js +5 -47
- package/out/candidate/extract-fold.js.map +1 -1
- package/out/candidate/fts.d.ts +5 -23
- package/out/candidate/fts.d.ts.map +1 -1
- package/out/candidate/fts.js +5 -23
- package/out/candidate/fts.js.map +1 -1
- package/out/candidate/importance.d.ts +60 -65
- package/out/candidate/importance.d.ts.map +1 -1
- package/out/candidate/importance.js +56 -63
- package/out/candidate/importance.js.map +1 -1
- package/out/candidate/lookup.d.ts +18 -55
- package/out/candidate/lookup.d.ts.map +1 -1
- package/out/candidate/lookup.js +82 -385
- package/out/candidate/lookup.js.map +1 -1
- package/out/candidate/name-roles.d.ts +9 -21
- package/out/candidate/name-roles.d.ts.map +1 -1
- package/out/candidate/name-roles.js +15 -33
- package/out/candidate/name-roles.js.map +1 -1
- package/out/candidate/own-name.d.ts +23 -25
- package/out/candidate/own-name.d.ts.map +1 -1
- package/out/candidate/own-name.js +35 -32
- package/out/candidate/own-name.js.map +1 -1
- package/out/candidate/place-attrs.d.ts +20 -13
- package/out/candidate/place-attrs.d.ts.map +1 -1
- package/out/candidate/place-attrs.js +4 -5
- package/out/candidate/place-attrs.js.map +1 -1
- package/out/candidate/schema.d.ts +27 -62
- package/out/candidate/schema.d.ts.map +1 -1
- package/out/candidate/schema.js +10 -22
- package/out/candidate/schema.js.map +1 -1
- package/out/candidate/scoring.d.ts +7 -8
- package/out/candidate/scoring.d.ts.map +1 -1
- package/out/candidate/scoring.js +52 -89
- package/out/candidate/scoring.js.map +1 -1
- package/out/capital-schema.d.ts +21 -17
- package/out/capital-schema.d.ts.map +1 -1
- package/out/capital-schema.js +17 -15
- package/out/capital-schema.js.map +1 -1
- package/out/capitals.d.ts +27 -25
- package/out/capitals.d.ts.map +1 -1
- package/out/capitals.js +23 -21
- package/out/capitals.js.map +1 -1
- package/out/coincident-roles.d.ts +60 -43
- package/out/coincident-roles.d.ts.map +1 -1
- package/out/coincident-roles.js +72 -50
- package/out/coincident-roles.js.map +1 -1
- package/out/convention/schema.d.ts +14 -14
- package/out/convention/schema.d.ts.map +1 -1
- package/out/convention/schema.js +6 -4
- package/out/convention/schema.js.map +1 -1
- package/out/convention.d.ts +97 -0
- package/out/convention.d.ts.map +1 -0
- package/out/convention.js +81 -0
- package/out/convention.js.map +1 -0
- package/out/coverage-manifest-schema.d.ts +34 -39
- package/out/coverage-manifest-schema.d.ts.map +1 -1
- package/out/coverage-manifest-schema.js +25 -34
- package/out/coverage-manifest-schema.js.map +1 -1
- package/out/currency-backfill.d.ts +16 -38
- package/out/currency-backfill.d.ts.map +1 -1
- package/out/currency-backfill.js +19 -46
- package/out/currency-backfill.js.map +1 -1
- package/out/env.d.ts +1 -1
- package/out/env.js +1 -1
- package/out/exact-match.d.ts +19 -10
- package/out/exact-match.d.ts.map +1 -1
- package/out/exact-match.js +32 -21
- package/out/exact-match.js.map +1 -1
- package/out/extracts.d.ts +66 -55
- package/out/extracts.d.ts.map +1 -1
- package/out/extracts.js +63 -55
- package/out/extracts.js.map +1 -1
- package/out/fst/autocomplete.d.ts +29 -21
- package/out/fst/autocomplete.d.ts.map +1 -1
- package/out/fst/autocomplete.js +39 -28
- package/out/fst/autocomplete.js.map +1 -1
- package/out/fst/builder.d.ts.map +1 -1
- package/out/fst/builder.js +37 -41
- package/out/fst/builder.js.map +1 -1
- package/out/fst/deserialize-web.d.ts +4 -4
- package/out/fst/deserialize-web.d.ts.map +1 -1
- package/out/fst/deserialize-web.js +15 -16
- package/out/fst/deserialize-web.js.map +1 -1
- package/out/fst/format.d.ts +41 -23
- package/out/fst/format.d.ts.map +1 -1
- package/out/fst/format.js +41 -23
- package/out/fst/format.js.map +1 -1
- package/out/fst/freshness.d.ts +19 -81
- package/out/fst/freshness.d.ts.map +1 -1
- package/out/fst/freshness.js +31 -94
- package/out/fst/freshness.js.map +1 -1
- package/out/fst/matcher.d.ts +5 -4
- package/out/fst/matcher.d.ts.map +1 -1
- package/out/fst/matcher.js +2 -2
- package/out/fst/matcher.js.map +1 -1
- package/out/fst/serialize.d.ts +28 -28
- package/out/fst/serialize.d.ts.map +1 -1
- package/out/fst/serialize.js +53 -71
- package/out/fst/serialize.js.map +1 -1
- package/out/fst/types.d.ts +78 -74
- package/out/fst/types.d.ts.map +1 -1
- package/out/fst/types.js +1 -4
- package/out/fst/types.js.map +1 -1
- package/out/{fst/index.js → fst.d.ts} +2 -1
- package/out/fst.d.ts.map +1 -0
- package/out/{fst/index.d.ts → fst.js} +2 -1
- package/out/fst.js.map +1 -0
- package/out/fts/query.d.ts +2 -27
- package/out/fts/query.d.ts.map +1 -1
- package/out/fts/query.js +5 -36
- package/out/fts/query.js.map +1 -1
- package/out/fts.d.ts +126 -0
- package/out/fts.d.ts.map +1 -0
- package/out/fts.js +188 -0
- package/out/fts.js.map +1 -0
- package/out/geonames/aliases.d.ts +26 -62
- package/out/geonames/aliases.d.ts.map +1 -1
- package/out/geonames/aliases.js +45 -117
- package/out/geonames/aliases.js.map +1 -1
- package/out/geonames/postal.d.ts +84 -44
- package/out/geonames/postal.d.ts.map +1 -1
- package/out/geonames/postal.js +115 -73
- package/out/geonames/postal.js.map +1 -1
- package/out/{geonames/index.js → geonames.d.ts} +1 -1
- package/out/geonames.d.ts.map +1 -0
- package/out/{geonames/index.d.ts → geonames.js} +1 -1
- package/out/geonames.js.map +1 -0
- package/out/index.d.ts +9 -8
- package/out/index.d.ts.map +1 -1
- package/out/index.js +6 -5
- package/out/index.js.map +1 -1
- package/out/interpolation.d.ts +18 -55
- package/out/interpolation.d.ts.map +1 -1
- package/out/interpolation.js +27 -69
- package/out/interpolation.js.map +1 -1
- package/out/lookup.d.ts +23 -51
- package/out/lookup.d.ts.map +1 -1
- package/out/lookup.js +136 -234
- package/out/lookup.js.map +1 -1
- package/out/name-score.d.ts +2 -2
- package/out/name-score.d.ts.map +1 -1
- package/out/name-score.js +9 -7
- package/out/name-score.js.map +1 -1
- package/out/nsul/lookup.d.ts +33 -34
- package/out/nsul/lookup.d.ts.map +1 -1
- package/out/nsul/lookup.js +26 -40
- package/out/nsul/lookup.js.map +1 -1
- package/out/nsul/schema.d.ts +16 -43
- package/out/nsul/schema.d.ts.map +1 -1
- package/out/nsul/schema.js +9 -35
- package/out/nsul/schema.js.map +1 -1
- package/out/{nsul/index.d.ts → nsul.d.ts} +1 -1
- package/out/nsul.d.ts.map +1 -0
- package/out/{nsul/index.js → nsul.js} +1 -1
- package/out/nsul.js.map +1 -0
- package/out/paths.d.ts +124 -0
- package/out/paths.d.ts.map +1 -0
- package/out/paths.js +104 -0
- package/out/paths.js.map +1 -0
- package/out/place-importance-schema.d.ts +51 -143
- package/out/place-importance-schema.d.ts.map +1 -1
- package/out/place-importance-schema.js +28 -143
- package/out/place-importance-schema.js.map +1 -1
- package/out/poi/lookup.d.ts +40 -47
- package/out/poi/lookup.d.ts.map +1 -1
- package/out/poi/lookup.js +69 -96
- package/out/poi/lookup.js.map +1 -1
- package/out/poi/schema.d.ts +41 -25
- package/out/poi/schema.d.ts.map +1 -1
- package/out/poi/schema.js +25 -17
- package/out/poi/schema.js.map +1 -1
- package/out/{poi/index.js → poi.d.ts} +1 -1
- package/out/poi.d.ts.map +1 -0
- package/out/{poi/index.d.ts → poi.js} +1 -1
- package/out/poi.js.map +1 -0
- package/out/polygon-schema.d.ts +10 -6
- package/out/polygon-schema.d.ts.map +1 -1
- package/out/polygon-schema.js +2 -2
- package/out/polygon-schema.js.map +1 -1
- package/out/postal/city/alias/lookup.d.ts +20 -23
- package/out/postal/city/alias/lookup.d.ts.map +1 -1
- package/out/postal/city/alias/lookup.js +17 -30
- package/out/postal/city/alias/lookup.js.map +1 -1
- package/out/postal/city/alias/schema.d.ts +14 -10
- package/out/postal/city/alias/schema.d.ts.map +1 -1
- package/out/postal/city/alias/schema.js +10 -8
- package/out/postal/city/alias/schema.js.map +1 -1
- package/out/postal/city/candidate-schema.d.ts +25 -19
- package/out/postal/city/candidate-schema.d.ts.map +1 -1
- package/out/postal/city/candidate-schema.js +21 -17
- package/out/postal/city/candidate-schema.js.map +1 -1
- package/out/{postal/index.d.ts → postal.d.ts} +1 -1
- package/out/postal.d.ts.map +1 -0
- package/out/{postal/index.js → postal.js} +1 -1
- package/out/postal.js.map +1 -0
- package/out/postcode-point-lookup.d.ts +6 -24
- package/out/postcode-point-lookup.d.ts.map +1 -1
- package/out/postcode-point-lookup.js +5 -17
- package/out/postcode-point-lookup.js.map +1 -1
- package/out/primary-preference.d.ts +38 -92
- package/out/primary-preference.d.ts.map +1 -1
- package/out/primary-preference.js +15 -99
- package/out/primary-preference.js.map +1 -1
- package/out/proximity-rerank.d.ts +41 -30
- package/out/proximity-rerank.d.ts.map +1 -1
- package/out/proximity-rerank.js +38 -29
- package/out/proximity-rerank.js.map +1 -1
- package/out/ranking-weights.d.ts +98 -64
- package/out/ranking-weights.d.ts.map +1 -1
- package/out/ranking-weights.js +26 -25
- package/out/ranking-weights.js.map +1 -1
- package/out/region-keys.d.ts +50 -31
- package/out/region-keys.d.ts.map +1 -1
- package/out/region-keys.js +68 -40
- package/out/region-keys.js.map +1 -1
- package/out/reverse.d.ts +78 -50
- package/out/reverse.d.ts.map +1 -1
- package/out/reverse.js +98 -61
- package/out/reverse.js.map +1 -1
- package/out/schema.d.ts +72 -49
- package/out/schema.d.ts.map +1 -1
- package/out/schema.js +4 -5
- package/out/schema.js.map +1 -1
- package/out/search-fetch.d.ts +16 -12
- package/out/search-fetch.d.ts.map +1 -1
- package/out/search-fetch.js +83 -63
- package/out/search-fetch.js.map +1 -1
- package/out/sqlite/convention-source.d.ts +12 -16
- package/out/sqlite/convention-source.d.ts.map +1 -1
- package/out/sqlite/convention-source.js +13 -22
- package/out/sqlite/convention-source.js.map +1 -1
- package/out/sqlite/utils.d.ts +19 -19
- package/out/sqlite/utils.d.ts.map +1 -1
- package/out/sqlite/utils.js +14 -15
- package/out/sqlite/utils.js.map +1 -1
- package/out/street/centroid/schema.d.ts +37 -42
- package/out/street/centroid/schema.d.ts.map +1 -1
- package/out/street/centroid/schema.js +9 -21
- package/out/street/centroid/schema.js.map +1 -1
- package/out/street/centroid.d.ts +30 -0
- package/out/street/centroid.d.ts.map +1 -0
- package/out/street/{centroid/index.js → centroid.js} +13 -24
- package/out/street/centroid.js.map +1 -0
- package/out/street/morphology/fst/builder.d.ts +20 -10
- package/out/street/morphology/fst/builder.d.ts.map +1 -1
- package/out/street/morphology/fst/builder.js +44 -34
- package/out/street/morphology/fst/builder.js.map +1 -1
- package/out/street/morphology/fst/loader.d.ts +33 -26
- package/out/street/morphology/fst/loader.d.ts.map +1 -1
- package/out/street/morphology/fst/loader.js +23 -22
- package/out/street/morphology/fst/loader.js.map +1 -1
- package/out/street/name-lookup.d.ts +24 -18
- package/out/street/name-lookup.d.ts.map +1 -1
- package/out/street/name-lookup.js +34 -35
- package/out/street/name-lookup.js.map +1 -1
- package/out/street/normalize.d.ts +35 -136
- package/out/street/normalize.d.ts.map +1 -1
- package/out/street/normalize.js +77 -194
- package/out/street/normalize.js.map +1 -1
- package/out/street/segment-schema.d.ts +79 -39
- package/out/street/segment-schema.d.ts.map +1 -1
- package/out/street/segment-schema.js +71 -21
- package/out/street/segment-schema.js.map +1 -1
- package/out/{street/index.js → street.d.ts} +2 -2
- package/out/street.d.ts.map +1 -0
- package/out/{street/index.d.ts → street.js} +2 -2
- package/out/street.js.map +1 -0
- package/out/types.d.ts +84 -149
- package/out/types.d.ts.map +1 -1
- package/out/types.js +0 -6
- package/out/types.js.map +1 -1
- package/out/unified-schema.d.ts +8 -12
- package/out/unified-schema.d.ts.map +1 -1
- package/out/unified-schema.js +29 -29
- package/out/unified-schema.js.map +1 -1
- package/out/uprn/existence.d.ts +28 -17
- package/out/uprn/existence.d.ts.map +1 -1
- package/out/uprn/existence.js +26 -16
- package/out/uprn/existence.js.map +1 -1
- package/out/uprn/lookup.d.ts +14 -44
- package/out/uprn/lookup.d.ts.map +1 -1
- package/out/uprn/lookup.js +21 -57
- package/out/uprn/lookup.js.map +1 -1
- package/out/uprn/schema.d.ts +18 -40
- package/out/uprn/schema.d.ts.map +1 -1
- package/out/uprn/schema.js +10 -32
- package/out/uprn/schema.js.map +1 -1
- package/out/{uprn/index.d.ts → uprn.d.ts} +1 -1
- package/out/uprn.d.ts.map +1 -0
- package/out/{uprn/index.js → uprn.js} +1 -1
- package/out/uprn.js.map +1 -0
- package/out/weights-overlay-linker.d.ts +138 -144
- package/out/weights-overlay-linker.d.ts.map +1 -1
- package/out/weights-overlay-linker.js +105 -159
- package/out/weights-overlay-linker.js.map +1 -1
- package/package.json +91 -596
- package/lib/address/point/index.ts +0 -328
- package/lib/convention/index.ts +0 -154
- package/lib/fts/index.ts +0 -361
- package/out/address/index.d.ts.map +0 -1
- package/out/address/index.js.map +0 -1
- package/out/address/point/index.d.ts +0 -53
- package/out/address/point/index.d.ts.map +0 -1
- package/out/address/point/index.js +0 -222
- package/out/address/point/index.js.map +0 -1
- package/out/ancestry/index.d.ts +0 -45
- package/out/ancestry/index.d.ts.map +0 -1
- package/out/ancestry/index.js +0 -55
- package/out/ancestry/index.js.map +0 -1
- package/out/convention/index.d.ts +0 -106
- package/out/convention/index.d.ts.map +0 -1
- package/out/convention/index.js +0 -93
- package/out/convention/index.js.map +0 -1
- package/out/fst/index.d.ts.map +0 -1
- package/out/fst/index.js.map +0 -1
- package/out/fts/index.d.ts +0 -184
- package/out/fts/index.d.ts.map +0 -1
- package/out/fts/index.js +0 -277
- package/out/fts/index.js.map +0 -1
- package/out/geonames/index.d.ts.map +0 -1
- package/out/geonames/index.js.map +0 -1
- package/out/nsul/index.d.ts.map +0 -1
- package/out/nsul/index.js.map +0 -1
- package/out/poi/index.d.ts.map +0 -1
- package/out/poi/index.js.map +0 -1
- package/out/postal/index.d.ts.map +0 -1
- package/out/postal/index.js.map +0 -1
- package/out/street/centroid/index.d.ts +0 -40
- package/out/street/centroid/index.d.ts.map +0 -1
- package/out/street/centroid/index.js.map +0 -1
- package/out/street/index.d.ts.map +0 -1
- package/out/street/index.js.map +0 -1
- package/out/uprn/index.d.ts.map +0 -1
- package/out/uprn/index.js.map +0 -1
- /package/lib/{geonames/index.ts → geonames.ts} +0 -0
- /package/lib/{nsul/index.ts → nsul.ts} +0 -0
- /package/lib/{poi/index.ts → poi.ts} +0 -0
- /package/lib/{postal/index.ts → postal.ts} +0 -0
- /package/lib/{uprn/index.ts → uprn.ts} +0 -0
package/out/ancestry/index.d.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @copyright Sister Software
|
|
3
|
-
* @license AGPL-3.0
|
|
4
|
-
* @author Teffen Ellis, et al.
|
|
5
|
-
*
|
|
6
|
-
* The shared ancestor-lineage walk over the WOF `ancestors` table — one place's containment chain
|
|
7
|
-
* joined with `spr` for canonical names + centroids, ordered NEAREST-FIRST (deepest placetype
|
|
8
|
-
* first, country last).
|
|
9
|
-
*
|
|
10
|
-
* Factored out of `WOFSQLitePlaceLookup.ancestors()` (#404) so the reverse geocoder (`reverse.ts`,
|
|
11
|
-
* #484) reuses the SAME walk instead of growing a second one. The placetype-specificity ordering
|
|
12
|
-
* lives here as `PLACETYPE_DEPTH` — a single TS map instead of the previous SQL CASE, and
|
|
13
|
-
* extended below `localadmin` (locality/borough/neighbourhood/microhood now rank correctly
|
|
14
|
-
* instead of sorting last; forward resolution rarely saw those as ANCESTOR placetypes, reverse
|
|
15
|
-
* geocoding always does).
|
|
16
|
-
*/
|
|
17
|
-
import type { DatabaseClient } from "@mailwoman/sqlite/client";
|
|
18
|
-
/**
|
|
19
|
-
* WOF placetype → containment depth, coarsest = 1. Higher = finer. Placetypes we never resolve (continent, empire, …)
|
|
20
|
-
* map to 0 and sort last. NOT the same table as the FST's `PLACETYPE_ORDER` (fst-serialize.ts) — that one is a
|
|
21
|
-
* serialization order, this one is containment depth.
|
|
22
|
-
*/
|
|
23
|
-
export declare const PLACETYPE_DEPTH: Readonly<Record<string, number>>;
|
|
24
|
-
/**
|
|
25
|
-
* Containment depth for a placetype — 0 (sorts coarsest) when unknown.
|
|
26
|
-
*/
|
|
27
|
-
export declare function placetypeDepth(placetype: string): number;
|
|
28
|
-
/**
|
|
29
|
-
* One ancestor row, enriched with the `spr` columns both consumers need.
|
|
30
|
-
*/
|
|
31
|
-
export interface AncestorPlaceRow {
|
|
32
|
-
id: number;
|
|
33
|
-
placetype: string;
|
|
34
|
-
name: string;
|
|
35
|
-
country: string;
|
|
36
|
-
lat: number;
|
|
37
|
-
lon: number;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* The ancestor lineage of `id` — self excluded, nearest-first. Returns `[]` when the place has no recorded ancestry.
|
|
41
|
-
* NOT memoized here; `WOFSQLitePlaceLookup` keeps its own per-id cache.
|
|
42
|
-
*/
|
|
43
|
-
export declare function ancestorLineage<DB>(db: DatabaseClient<DB>, id: number, schemaName?: string): AncestorPlaceRow[];
|
|
44
|
-
export * from "#ancestry/backfill";
|
|
45
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/ancestry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE9D;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY5D,CAAA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACX;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,SAAS,GAAG,gBAAgB,EAAE,CAc/G;AAED,cAAc,oBAAoB,CAAA"}
|
package/out/ancestry/index.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @copyright Sister Software
|
|
3
|
-
* @license AGPL-3.0
|
|
4
|
-
* @author Teffen Ellis, et al.
|
|
5
|
-
*
|
|
6
|
-
* The shared ancestor-lineage walk over the WOF `ancestors` table — one place's containment chain
|
|
7
|
-
* joined with `spr` for canonical names + centroids, ordered NEAREST-FIRST (deepest placetype
|
|
8
|
-
* first, country last).
|
|
9
|
-
*
|
|
10
|
-
* Factored out of `WOFSQLitePlaceLookup.ancestors()` (#404) so the reverse geocoder (`reverse.ts`,
|
|
11
|
-
* #484) reuses the SAME walk instead of growing a second one. The placetype-specificity ordering
|
|
12
|
-
* lives here as `PLACETYPE_DEPTH` — a single TS map instead of the previous SQL CASE, and
|
|
13
|
-
* extended below `localadmin` (locality/borough/neighbourhood/microhood now rank correctly
|
|
14
|
-
* instead of sorting last; forward resolution rarely saw those as ANCESTOR placetypes, reverse
|
|
15
|
-
* geocoding always does).
|
|
16
|
-
*/
|
|
17
|
-
import { allRows } from "@mailwoman/core/utils";
|
|
18
|
-
/**
|
|
19
|
-
* WOF placetype → containment depth, coarsest = 1. Higher = finer. Placetypes we never resolve (continent, empire, …)
|
|
20
|
-
* map to 0 and sort last. NOT the same table as the FST's `PLACETYPE_ORDER` (fst-serialize.ts) — that one is a
|
|
21
|
-
* serialization order, this one is containment depth.
|
|
22
|
-
*/
|
|
23
|
-
export const PLACETYPE_DEPTH = {
|
|
24
|
-
country: 1,
|
|
25
|
-
macroregion: 2,
|
|
26
|
-
region: 3,
|
|
27
|
-
macrocounty: 4,
|
|
28
|
-
county: 5,
|
|
29
|
-
localadmin: 6,
|
|
30
|
-
locality: 7,
|
|
31
|
-
borough: 8,
|
|
32
|
-
macrohood: 9,
|
|
33
|
-
neighbourhood: 10,
|
|
34
|
-
microhood: 11,
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Containment depth for a placetype — 0 (sorts coarsest) when unknown.
|
|
38
|
-
*/
|
|
39
|
-
export function placetypeDepth(placetype) {
|
|
40
|
-
return PLACETYPE_DEPTH[placetype] ?? 0;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* The ancestor lineage of `id` — self excluded, nearest-first. Returns `[]` when the place has no recorded ancestry.
|
|
44
|
-
* NOT memoized here; `WOFSQLitePlaceLookup` keeps its own per-id cache.
|
|
45
|
-
*/
|
|
46
|
-
export function ancestorLineage(db, id, schemaName = "main") {
|
|
47
|
-
const rows = allRows(db.prepare(`SELECT a.ancestor_id AS id, a.ancestor_placetype AS placetype, s.name AS name,
|
|
48
|
-
s.country AS country, s.latitude AS lat, s.longitude AS lon
|
|
49
|
-
FROM ${schemaName}.ancestors a JOIN ${schemaName}.spr s ON s.id = a.ancestor_id
|
|
50
|
-
WHERE a.id = ? AND a.ancestor_id != a.id`), id);
|
|
51
|
-
rows.sort((a, b) => placetypeDepth(b.placetype) - placetypeDepth(a.placetype));
|
|
52
|
-
return rows;
|
|
53
|
-
}
|
|
54
|
-
export * from "#ancestry/backfill";
|
|
55
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/ancestry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAG/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAqC;IAChE,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,CAAC;IACd,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,CAAC;IACd,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,CAAC;IACZ,aAAa,EAAE,EAAE;IACjB,SAAS,EAAE,EAAE;CACb,CAAA;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC/C,OAAO,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC;AAcD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAK,EAAsB,EAAE,EAAU,EAAE,UAAU,GAAG,MAAM;IAC1F,MAAM,IAAI,GAAG,OAAO,CACnB,EAAE,CAAC,OAAO,CACT;;UAEO,UAAU,qBAAqB,UAAU;4CACP,CACzC,EACD,EAAE,CACF,CAAA;IAED,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IAE9E,OAAO,IAAI,CAAA;AACZ,CAAC;AAED,cAAc,oBAAoB,CAAA"}
|
|
@@ -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,YAAI,0BAA0B,EAAE,2BAA2B,CAAU,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;;IAG5D,YAAY,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAM,EAEhD;IAED,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEzC;CACD;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"}
|
package/out/convention/index.js
DELETED
|
@@ -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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/convention/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAuCH;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAuB;IAChD,mBAAmB,EAAE,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;IAC9E,cAAc,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;CAChD,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,0BAA0B,EAAE,2BAA2B,CAAU,CAAA;AAExG;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,oBAAoB,CAAA;AAe5D;;;;GAIG;AACH,MAAM,OAAO,oBAAoB;IACvB,KAAK,CAAyB;IAEvC,YAAY,IAAI,GAA+B,EAAE;QAChD,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3E,CAAC;IAED,GAAG,CAAC,KAAa;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;CACD;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAgB,EAAE,GAAG,SAAwC;IAC7F,MAAM,GAAG,GAAe;QACvB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS;QACzF,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS;KAC5E,CAAA;IAED,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC;YAAE,SAAQ;QAEhB,IAAI,CAAC,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACzC,GAAG,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAA;QACrD,CAAC;QAED,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACpC,GAAG,CAAC,cAAc,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,cAAc,IAAI,aAAa,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC,cAAc,EAAE,CAAA;QACtG,CAAC;IACF,CAAC;IAED,OAAO,GAAG,CAAA;AACX,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAwB,EAAE,WAA8B;IACzF,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACtD,MAAM,MAAM,GAAG,gBAAgB,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC,CAAA;IAEzD,OAAO;QACN,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,aAAa,CAAC,mBAAmB;QACpF,8EAA8E;QAC9E,cAAc,EAAE,EAAE,GAAG,aAAa,CAAC,cAAc,EAAE,GAAG,MAAM,CAAC,cAAc,EAAE;KAC7E,CAAA;AACF,CAAC"}
|
package/out/fst/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/fst/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA"}
|
package/out/fst/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/fst/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA"}
|
package/out/fts/index.d.ts
DELETED
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @copyright Sister Software
|
|
3
|
-
* @license AGPL-3.0
|
|
4
|
-
* @author Teffen Ellis, et al.
|
|
5
|
-
*
|
|
6
|
-
* FTS5 index lifecycle for the WOF SQLite distribution.
|
|
7
|
-
*
|
|
8
|
-
* Shared by `WOFSQLitePlaceLookup` (lazy build via `buildFTS: true`) and the operator-side
|
|
9
|
-
* `mailwoman gazetteer build fts` CLI (ahead-of-time build to avoid first-open latency in production).
|
|
10
|
-
*
|
|
11
|
-
* Upstream WOF SQLite distributions do NOT ship FTS5. The index lives in a `place_search` virtual
|
|
12
|
-
* table whose rows mirror `(spr.id, spr.name, GROUP_CONCAT(names.name))` — one current,
|
|
13
|
-
* non-deprecated place per row, with all alternate names concatenated into a single search-token
|
|
14
|
-
* bag.
|
|
15
|
-
*/
|
|
16
|
-
import type { DatabaseClient } from "@mailwoman/sqlite/client";
|
|
17
|
-
/**
|
|
18
|
-
* Name of the FTS5 virtual table this module owns. Centralized so `WOFSQLitePlaceLookup` and the CLI can't drift apart.
|
|
19
|
-
*/
|
|
20
|
-
export declare const PLACE_SEARCH_TABLE = "place_search";
|
|
21
|
-
/**
|
|
22
|
-
* Boundary-preserving separator between aliases in the `alt_names` bag (#523): U+E000, the first Private Use Area
|
|
23
|
-
* codepoint, written as an escape so the source stays plain ASCII.
|
|
24
|
-
*
|
|
25
|
-
* Why a PUA codepoint and not punctuation: the goal is to stop a phrase query from matching ACROSS two adjacent
|
|
26
|
-
* aliases' concatenation boundary ("York" + "New City" must not phrase-match `"york new"`). FTS5 assigns token
|
|
27
|
-
* positions to TOKENS only — separator characters never consume a position — so any character the tokenizer treats as a
|
|
28
|
-
* boundary leaves the two aliases' tokens adjacent and the false phrase match intact. The separator must therefore be
|
|
29
|
-
* an INDEXED TOKEN that sits between the aliases and breaks positional adjacency.
|
|
30
|
-
*
|
|
31
|
-
* Empirical probe (node:sqlite, `tokenize = 'unicode61 remove_diacritics 2'` — the exact config below). Bag = the
|
|
32
|
-
* aliases "York" and "New City" joined by each candidate separator; query = the cross-boundary phrase `MATCH '"york
|
|
33
|
-
* new"'`:
|
|
34
|
-
*
|
|
35
|
-
* - `' '` (the pre-#523 join, no separator) — false HIT
|
|
36
|
-
* - `' ; '` (punctuation) — false HIT
|
|
37
|
-
* - `' \u2016 '` (double vertical line) — false HIT
|
|
38
|
-
* - `' \x1F '` (ASCII unit separator) — false HIT
|
|
39
|
-
* - `' \uE000 '` (PUA, this constant) — NO match, while `'"york"'` and `'"new city"'` still match the bag individually
|
|
40
|
-
* under every variant above.
|
|
41
|
-
*
|
|
42
|
-
* U+E000 works because unicode61 classifies it (category Co — neither space nor punctuation) as a token character, so
|
|
43
|
-
* the standalone `\uE000` between aliases is indexed as its own token and the aliases' tokens are no longer
|
|
44
|
-
* positionally adjacent. The remaining requirements also hold:
|
|
45
|
-
*
|
|
46
|
-
* - **Unreachable from queries**: `sanitizeFTSQuery` (Node + WASM resolvers) strips everything outside `\p{L}\p{N}` from
|
|
47
|
-
* token bodies, and U+E000 is neither — no user query can ever address the separator token. The demo's `sanitizeFTS`
|
|
48
|
-
* strips it explicitly.
|
|
49
|
-
* - **Never in place names**: PUA codepoints are unassigned by definition; real-world WOF names don't carry them.
|
|
50
|
-
* Defensively, the INSERT below also strips any embedded U+E000 from source names so a poisoned row can't forge an
|
|
51
|
-
* alias boundary.
|
|
52
|
-
* - **Survives GROUP_CONCAT**: verified — `GROUP_CONCAT(name, ' ' || char(57344) || ' ')` emits the codepoint intact
|
|
53
|
-
* (`57344` = 0xE000).
|
|
54
|
-
* - **Cost**: one extra token per alias boundary in the FTS document. Marginal BM25 length-norm impact, on a column whose
|
|
55
|
-
* length stats are already the known #189 problem.
|
|
56
|
-
*
|
|
57
|
-
* Interaction with #189 (split `alt_names` into its own FTS table for independent BM25 length stats): the separator
|
|
58
|
-
* SURVIVES that split as proposed — #189 still GROUP_CONCATs all aliases into one `place_search_alt` row per place, so
|
|
59
|
-
* both the separator and the bag-parsing exact check (`aliasBagExactMatch`) carry over unchanged, just pointed at the
|
|
60
|
-
* new table. Only if #189 were instead built as one-row-per-alias would both become moot (per-alias rows give exact
|
|
61
|
-
* equality and phrase isolation for free). Sequencing: if #189 lands before the next slim-DB artifact rebuild, fold
|
|
62
|
-
* both into ONE rebuild rather than shipping two FTS schema bumps.
|
|
63
|
-
*/
|
|
64
|
-
export declare const ALIAS_SEPARATOR = "\uE000";
|
|
65
|
-
/**
|
|
66
|
-
* The query/name fold every exact-tier comparison uses: lowercase, trim, collapse internal whitespace. The `alt_names`
|
|
67
|
-
* bag is compared alias-by-alias against a query folded THIS way, so the fold lives beside the bag parser — every
|
|
68
|
-
* consumer (the Node resolver's exact tier, the WASM resolver, the name-exact sub-tier sort) folds through this one
|
|
69
|
-
* function.
|
|
70
|
-
*/
|
|
71
|
-
export declare function foldQueryText(input: string): string;
|
|
72
|
-
/**
|
|
73
|
-
* Does any alias in an `alt_names` bag exactly equal the (already-normalized) query? The single shared implementation
|
|
74
|
-
* of the exact-tier alias check for every consumer of the bag — the Node resolver's `#exactMatchIDs` fallback, the WASM
|
|
75
|
-
* resolver, and the demo's httpvfs resolver — so the bag format and its parsers can't drift.
|
|
76
|
-
*
|
|
77
|
-
* Two formats exist in the wild:
|
|
78
|
-
*
|
|
79
|
-
* - **Separated bags** (built since #523): aliases joined with {@link ALIAS_SEPARATOR}, plus a trailing separator so even
|
|
80
|
-
* a single-alias bag self-identifies as separator-formatted. Split + per-alias equality — a true exact-alias check,
|
|
81
|
-
* matching the semantics of the full `names` table (`names.name = ? COLLATE NOCASE`), so it runs unrestricted: an
|
|
82
|
-
* alias match is an exact match whether or not another candidate matched on its canonical name.
|
|
83
|
-
* - **Legacy bags** (pre-#523 artifacts, e.g. an already-deployed slim DB): aliases space-joined, boundaries lost. Falls
|
|
84
|
-
* back to the historical padded-containment check, conditioned on `anyStrictExact` — unrestricted containment would
|
|
85
|
-
* false-promote interior fragments ("York" inside the alias "New York City") and cross-boundary fragments ("York New"
|
|
86
|
-
* across "…York" + "New…"). Delete this branch once every shipped artifact carries the separator.
|
|
87
|
-
*
|
|
88
|
-
* @param altNames The `alt_names` bag from `place_search` (null when the row has no aliases).
|
|
89
|
-
* @param normalizedQuery The query, pre-normalized: lowercased, trimmed, internal whitespace collapsed (every consumer
|
|
90
|
-
* already normalizes this way).
|
|
91
|
-
* @param anyStrictExact Whether ANY candidate in the pool already matched strictly (canonical name or region
|
|
92
|
-
* abbreviation). Only consulted for legacy bags.
|
|
93
|
-
*/
|
|
94
|
-
export declare function aliasBagExactMatch(altNames: string | null, normalizedQuery: string, anyStrictExact: boolean): boolean;
|
|
95
|
-
/**
|
|
96
|
-
* Name of the R*Tree virtual table that indexes WOF places' bounding boxes for proximity / bbox lookups. Built
|
|
97
|
-
* alongside `place_search` by the CLI and `buildFTS: true`. Pure SQLite — no extensions needed, the `rtree`
|
|
98
|
-
* virtual-table module ships with the core library.
|
|
99
|
-
*/
|
|
100
|
-
export declare const PLACE_BBOX_TABLE = "place_bbox";
|
|
101
|
-
/**
|
|
102
|
-
* Name of the auxiliary table holding `wof:population` per place. Powers the population-weighted ranking boost. Sparse
|
|
103
|
-
* — WOF only populates this field for ~15% of localities (and mostly larger ones); missing means no boost, never a
|
|
104
|
-
* penalty. Built upstream by `scripts/build-unified-wof.ts` at ingest (and copied through by `build-slim`) — this
|
|
105
|
-
* module consumes it, never builds it.
|
|
106
|
-
*
|
|
107
|
-
* Schema: `(id INTEGER PRIMARY KEY, population INTEGER NOT NULL)`. Plain table, not virtual.
|
|
108
|
-
*/
|
|
109
|
-
export declare const PLACE_POPULATION_TABLE = "place_population";
|
|
110
|
-
/**
|
|
111
|
-
* Name of the auxiliary table holding the two salience scores per place — `referential` (population-anchored, the
|
|
112
|
-
* ranking backbone) and `encyclopedic` (the Wikipedia join, NULL when there is no article). Built by `mailwoman
|
|
113
|
-
* gazetteer importance`; schema and derivations in `place-importance-schema.ts`.
|
|
114
|
-
*
|
|
115
|
-
* The lookup reads ONLY `encyclopedic` from it, and only to CARRY the value onto the result — referential is derived
|
|
116
|
-
* from the population already joined, and no ORDER BY anywhere touches this table (ROAD_TO_V9 §2). Sparse and
|
|
117
|
-
* schema-versioned: a pre-split gazetteer has this table with a single conflated `importance` column instead, which the
|
|
118
|
-
* lookup's column probe deliberately refuses to read.
|
|
119
|
-
*/
|
|
120
|
-
export declare const PLACE_IMPORTANCE_TABLE = "place_importance";
|
|
121
|
-
/**
|
|
122
|
-
* Counters for a single `buildPlaceSearchFTS` run. Exposed so callers (CLI, lazy-build) can render progress to the
|
|
123
|
-
* user.
|
|
124
|
-
*/
|
|
125
|
-
export interface BuildPlaceSearchFTSResult {
|
|
126
|
-
/**
|
|
127
|
-
* Whether the FTS5 index was created (true) or already existed and was left alone (false).
|
|
128
|
-
*/
|
|
129
|
-
created: boolean;
|
|
130
|
-
/**
|
|
131
|
-
* Number of rows in the `place_search` table after the call.
|
|
132
|
-
*/
|
|
133
|
-
indexedRows: number;
|
|
134
|
-
/**
|
|
135
|
-
* Whether the R*Tree bbox index was created (true) or already existed (false).
|
|
136
|
-
*/
|
|
137
|
-
bboxCreated: boolean;
|
|
138
|
-
/**
|
|
139
|
-
* Number of rows in the `place_bbox` R*Tree after the call.
|
|
140
|
-
*/
|
|
141
|
-
bboxIndexedRows: number;
|
|
142
|
-
/**
|
|
143
|
-
* Wall-clock duration of the build step, in milliseconds.
|
|
144
|
-
*/
|
|
145
|
-
durationMs: number;
|
|
146
|
-
}
|
|
147
|
-
export interface BuildPlaceSearchFTSOpts {
|
|
148
|
-
/**
|
|
149
|
-
* Drop the existing `place_search` AND `place_bbox` tables before building. Default false — if either already exists
|
|
150
|
-
* the corresponding build step is skipped. Set true when you want to rebuild against an updated `spr` / `names`
|
|
151
|
-
* snapshot.
|
|
152
|
-
*/
|
|
153
|
-
drop?: boolean;
|
|
154
|
-
/**
|
|
155
|
-
* Optional progress callback invoked after each phase. Useful for CLI output on the planet-scale builds where the
|
|
156
|
-
* INSERT step can take minutes.
|
|
157
|
-
*/
|
|
158
|
-
onProgress?: (phase: "checking" | "dropping" | "creating" | "populating" | "creating-bbox" | "populating-bbox" | "done", detail?: string) => void;
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Build (or rebuild, with `drop: true`) the `place_search` FTS5 virtual table AND the `place_bbox` R*Tree virtual table
|
|
162
|
-
* from the existing `spr` + `names` tables in a WOF SQLite distribution.
|
|
163
|
-
*
|
|
164
|
-
* The FTS5 index is used for name-based MATCH queries; the R*Tree is used for bbox + proximity filtering. Both are pure
|
|
165
|
-
* SQLite — no extensions required.
|
|
166
|
-
*
|
|
167
|
-
* Returns a `BuildPlaceSearchFTSResult` summary. Idempotent when `drop: false` — re-running against an already-indexed
|
|
168
|
-
* DB skips whichever indexes already exist.
|
|
169
|
-
*/
|
|
170
|
-
export declare function buildPlaceSearchFTS<DB>(db: DatabaseClient<DB>, opts?: BuildPlaceSearchFTSOpts): BuildPlaceSearchFTSResult;
|
|
171
|
-
/**
|
|
172
|
-
* Returns true iff the `place_search` table exists in the connected DB. Used by `WOFSQLitePlaceLookup` for its "FTS
|
|
173
|
-
* missing — pass buildFTS:true or run the CLI" guard.
|
|
174
|
-
*/
|
|
175
|
-
export declare function placeSearchFTSExists<DB>(db: DatabaseClient<DB>): boolean;
|
|
176
|
-
/**
|
|
177
|
-
* Returns true iff the `place_bbox` R*Tree table exists. Used for opt-in proximity lookup checks.
|
|
178
|
-
*/
|
|
179
|
-
export declare function placeBboxExists<DB>(db: DatabaseClient<DB>): boolean;
|
|
180
|
-
/**
|
|
181
|
-
* Returns true iff the `place_population` table exists. Used for opt-in population-ranking checks.
|
|
182
|
-
*/
|
|
183
|
-
export declare function placePopulationExists<DB>(db: DatabaseClient<DB>): boolean;
|
|
184
|
-
//# sourceMappingURL=index.d.ts.map
|
package/out/fts/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/fts/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAG9D;;GAEG;AACH,eAAO,MAAM,kBAAkB,iBAAiB,CAAA;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,eAAe,WAAW,CAAA;AAOvC;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAUrH;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,eAAe,CAAA;AAE5C;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,qBAAqB,CAAA;AAExD;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,qBAAqB,CAAA;AAExD;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACzC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;IACpB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAA;IACvB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,uBAAuB;IACvC;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;;;OAGG;IACH,UAAU,CAAC,EAAE,CACZ,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,eAAe,GAAG,iBAAiB,GAAG,MAAM,EACzG,MAAM,CAAC,EAAE,MAAM,KACX,IAAI,CAAA;CACT;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EACrC,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,EACtB,IAAI,GAAE,uBAA4B,GAChC,yBAAyB,CAsI3B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,GAAG,OAAO,CAExE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,GAAG,OAAO,CAEnE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,GAAG,OAAO,CAEzE"}
|