@mailwoman/resolver-wof-sqlite 4.16.2 → 5.0.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/out/address-point-interpolation.d.ts.map +1 -1
- package/out/address-point-interpolation.js +6 -6
- package/out/address-point-interpolation.js.map +1 -1
- package/out/address-point-schema.d.ts +5 -6
- package/out/address-point-schema.d.ts.map +1 -1
- package/out/address-point-schema.js +7 -2
- package/out/address-point-schema.js.map +1 -1
- package/out/address-point.d.ts +22 -8
- package/out/address-point.d.ts.map +1 -1
- package/out/address-point.js +29 -13
- package/out/address-point.js.map +1 -1
- package/out/ancestry-backfill.d.ts +53 -0
- package/out/ancestry-backfill.d.ts.map +1 -0
- package/out/ancestry-backfill.js +150 -0
- package/out/ancestry-backfill.js.map +1 -0
- package/out/ancestry.d.ts +6 -6
- package/out/ancestry.d.ts.map +1 -1
- package/out/ancestry.js +6 -6
- package/out/ancestry.js.map +1 -1
- package/out/build-candidate-cli.d.ts.map +1 -1
- package/out/build-candidate-cli.js.map +1 -1
- package/out/build-candidate.d.ts +4 -5
- package/out/build-candidate.d.ts.map +1 -1
- package/out/build-candidate.js +15 -14
- package/out/build-candidate.js.map +1 -1
- package/out/build-coincident-roles-cli.d.ts.map +1 -1
- package/out/build-coincident-roles-cli.js.map +1 -1
- package/out/build-fts-cli.d.ts +1 -1
- package/out/build-fts-cli.d.ts.map +1 -1
- package/out/build-fts-cli.js +6 -6
- package/out/build-fts-cli.js.map +1 -1
- package/out/build-slim-cli.d.ts +1 -1
- package/out/build-slim-cli.d.ts.map +1 -1
- package/out/build-slim-cli.js +3 -3
- package/out/build-slim-cli.js.map +1 -1
- package/out/build-slim.d.ts +7 -8
- package/out/build-slim.d.ts.map +1 -1
- package/out/build-slim.js +9 -9
- package/out/build-slim.js.map +1 -1
- package/out/candidate-fts.d.ts +5 -7
- package/out/candidate-fts.d.ts.map +1 -1
- package/out/candidate-fts.js +5 -7
- package/out/candidate-fts.js.map +1 -1
- package/out/candidate-lookup.d.ts +7 -7
- package/out/candidate-lookup.d.ts.map +1 -1
- package/out/candidate-lookup.js +31 -35
- package/out/candidate-lookup.js.map +1 -1
- package/out/candidate-schema.d.ts +13 -14
- package/out/candidate-schema.d.ts.map +1 -1
- package/out/candidate-schema.js +9 -9
- package/out/candidate-schema.js.map +1 -1
- package/out/coincident-roles.d.ts +9 -11
- package/out/coincident-roles.d.ts.map +1 -1
- package/out/coincident-roles.js +7 -7
- package/out/coincident-roles.js.map +1 -1
- package/out/convention.d.ts +30 -35
- package/out/convention.d.ts.map +1 -1
- package/out/convention.js +19 -21
- package/out/convention.js.map +1 -1
- package/out/fst-autocomplete.d.ts +5 -5
- package/out/fst-autocomplete.d.ts.map +1 -1
- package/out/fst-autocomplete.js +12 -13
- package/out/fst-autocomplete.js.map +1 -1
- package/out/fst-builder.d.ts +7 -7
- package/out/fst-builder.d.ts.map +1 -1
- package/out/fst-builder.js +9 -9
- 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 +4 -4
- package/out/fst-deserialize-web.js.map +1 -1
- package/out/fst-matcher.d.ts +12 -12
- package/out/fst-matcher.d.ts.map +1 -1
- package/out/fst-matcher.js +25 -25
- package/out/fst-matcher.js.map +1 -1
- package/out/fst-serialize.d.ts +5 -5
- package/out/fst-serialize.d.ts.map +1 -1
- package/out/fst-serialize.js +7 -6
- package/out/fst-serialize.js.map +1 -1
- package/out/fst-types.d.ts +13 -13
- package/out/fts.d.ts +74 -80
- package/out/fts.d.ts.map +1 -1
- package/out/fts.js +65 -71
- package/out/fts.js.map +1 -1
- package/out/geo.d.ts +14 -15
- package/out/geo.d.ts.map +1 -1
- package/out/geo.js +8 -8
- package/out/geo.js.map +1 -1
- package/out/geonames-aliases.d.ts +18 -9
- package/out/geonames-aliases.d.ts.map +1 -1
- package/out/geonames-aliases.js +70 -12
- package/out/geonames-aliases.js.map +1 -1
- package/out/index.d.ts +9 -9
- package/out/index.js +7 -7
- package/out/interpolation.d.ts +8 -10
- package/out/interpolation.d.ts.map +1 -1
- package/out/interpolation.js +6 -6
- package/out/interpolation.js.map +1 -1
- package/out/lookup.d.ts +74 -81
- package/out/lookup.d.ts.map +1 -1
- package/out/lookup.js +114 -128
- package/out/lookup.js.map +1 -1
- package/out/postal-city-alias-lookup.d.ts +9 -10
- package/out/postal-city-alias-lookup.d.ts.map +1 -1
- package/out/postal-city-alias-lookup.js +13 -14
- package/out/postal-city-alias-lookup.js.map +1 -1
- package/out/postal-city-alias-schema.d.ts +5 -6
- package/out/postal-city-alias-schema.d.ts.map +1 -1
- package/out/postal-city-alias-schema.js +3 -4
- package/out/postal-city-alias-schema.js.map +1 -1
- package/out/postal-city-candidate-schema.d.ts +7 -10
- package/out/postal-city-candidate-schema.d.ts.map +1 -1
- package/out/postal-city-candidate-schema.js +4 -6
- package/out/postal-city-candidate-schema.js.map +1 -1
- package/out/postcode-point-lookup.d.ts +3 -4
- package/out/postcode-point-lookup.d.ts.map +1 -1
- package/out/postcode-point-lookup.js +2 -2
- package/out/postcode-point-lookup.js.map +1 -1
- package/out/reverse.d.ts +26 -29
- package/out/reverse.d.ts.map +1 -1
- package/out/reverse.js +36 -38
- package/out/reverse.js.map +1 -1
- package/out/schema.d.ts +32 -33
- package/out/schema.d.ts.map +1 -1
- package/out/sharding.d.ts +26 -28
- package/out/sharding.d.ts.map +1 -1
- package/out/sharding.js +16 -16
- package/out/sharding.js.map +1 -1
- package/out/sqlite-convention-source.d.ts +3 -3
- package/out/sqlite-convention-source.d.ts.map +1 -1
- package/out/sqlite-convention-source.js +6 -6
- package/out/sqlite-convention-source.js.map +1 -1
- package/out/sqlite-utils.d.ts +4 -5
- package/out/sqlite-utils.d.ts.map +1 -1
- package/out/sqlite-utils.js +4 -5
- package/out/sqlite-utils.js.map +1 -1
- package/out/street-morphology-fst-builder.d.ts +15 -18
- package/out/street-morphology-fst-builder.d.ts.map +1 -1
- package/out/street-morphology-fst-builder.js +17 -17
- package/out/street-morphology-fst-builder.js.map +1 -1
- package/out/street-normalize.d.ts +43 -28
- package/out/street-normalize.d.ts.map +1 -1
- package/out/street-normalize.js +96 -34
- package/out/street-normalize.js.map +1 -1
- package/out/street-segment-schema.d.ts +5 -5
- package/out/street-segment-schema.js +2 -2
- package/out/types.d.ts +42 -47
- package/out/types.d.ts.map +1 -1
- package/out/types.js +1 -1
- package/out/unified-schema.d.ts +6 -6
- package/out/unified-schema.d.ts.map +1 -1
- package/out/unified-schema.js +10 -10
- package/out/unified-schema.js.map +1 -1
- package/package.json +26 -22
package/out/convention.js
CHANGED
|
@@ -21,45 +21,43 @@
|
|
|
21
21
|
* source).
|
|
22
22
|
*/
|
|
23
23
|
/**
|
|
24
|
-
* The base layer every ancestor chain starts from. Reproduces the pre-engine coordinate-first
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* run.
|
|
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.
|
|
28
27
|
*/
|
|
29
28
|
export const WORLD_DEFAULT = {
|
|
30
29
|
candidateStrategies: ["postcode_area_resolution", "fallback_fuzzy_name_match"],
|
|
31
30
|
scoringWeights: { pc: 0.6, name: 0.3, pop: 0.1 },
|
|
32
31
|
};
|
|
33
32
|
/**
|
|
34
|
-
* The strategy names the backend registers. The single source of truth shared by the dispatch
|
|
35
|
-
*
|
|
36
|
-
*
|
|
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.
|
|
37
36
|
*/
|
|
38
37
|
export const BUILTIN_STRATEGY_NAMES = ["postcode_area_resolution", "fallback_fuzzy_name_match"];
|
|
39
38
|
/**
|
|
40
|
-
* Table name for the convention asset (#290). Carried here so the build script, the runtime source,
|
|
41
|
-
*
|
|
39
|
+
* Table name for the convention asset (#290). Carried here so the build script, the runtime source, and the shard
|
|
40
|
+
* auto-detect all agree.
|
|
42
41
|
*/
|
|
43
42
|
export const ADDRESS_CONVENTION_TABLE = "address_convention";
|
|
44
43
|
/**
|
|
45
|
-
* In-memory convention source seeded from a `{
|
|
46
|
-
*
|
|
47
|
-
*
|
|
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`.
|
|
48
47
|
*/
|
|
49
48
|
export class SeedConventionSource {
|
|
50
49
|
#rows;
|
|
51
50
|
constructor(rows = {}) {
|
|
52
51
|
this.#rows = new Map(Object.entries(rows).map(([k, v]) => [Number(k), v]));
|
|
53
52
|
}
|
|
54
|
-
get(
|
|
55
|
-
return this.#rows.get(
|
|
53
|
+
get(wofID) {
|
|
54
|
+
return this.#rows.get(wofID);
|
|
56
55
|
}
|
|
57
56
|
}
|
|
58
57
|
/**
|
|
59
|
-
* Deep-merge convention layers, later (more-specific) layers winning per field.
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* restating the others.
|
|
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.
|
|
63
61
|
*/
|
|
64
62
|
export function mergeConventions(base, ...overrides) {
|
|
65
63
|
const out = {
|
|
@@ -78,9 +76,9 @@ export function mergeConventions(base, ...overrides) {
|
|
|
78
76
|
return out;
|
|
79
77
|
}
|
|
80
78
|
/**
|
|
81
|
-
* Resolve the effective convention for a place given its ancestor chain, ordered MOST-GENERAL →
|
|
82
|
-
*
|
|
83
|
-
*
|
|
79
|
+
* Resolve the effective convention for a place given its ancestor chain, ordered MOST-GENERAL → MOST-SPECIFIC (country,
|
|
80
|
+
* region, …, locality). Starts from `WORLD_DEFAULT` so every field is defined regardless of which (if any) ancestors
|
|
81
|
+
* carry an override.
|
|
84
82
|
*/
|
|
85
83
|
export function resolveConvention(source, ancestorIds) {
|
|
86
84
|
const layers = ancestorIds.map((id) => source.get(id));
|
package/out/convention.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convention.js","sourceRoot":"","sources":["../convention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"convention.js","sourceRoot":"","sources":["../convention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAqCH;;;;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,OAAmC,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;YAAE,GAAG,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAA;QAE7F,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"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* continuation edges (`token.startsWith(partial)`). This is what a char-level typeahead
|
|
17
17
|
* needs; without it "new yor" returns nothing useful. (#587)
|
|
18
18
|
*/
|
|
19
|
-
import {
|
|
19
|
+
import { FSTMatcher } from "./fst-matcher.js";
|
|
20
20
|
export interface AutocompleteResult {
|
|
21
21
|
query: string;
|
|
22
22
|
normalizedTokens: string[];
|
|
@@ -36,14 +36,14 @@ export interface AutocompleteOpts {
|
|
|
36
36
|
maxSuggestions?: number;
|
|
37
37
|
maxExpansionDepth?: number;
|
|
38
38
|
/**
|
|
39
|
-
* Collapse same-name suggestions to the single highest-importance one. Off by default (the CLI
|
|
40
|
-
*
|
|
41
|
-
*
|
|
39
|
+
* Collapse same-name suggestions to the single highest-importance one. Off by default (the CLI surfaces distinct
|
|
40
|
+
* same-name places — New York the city vs the county); a typeahead wants it ON so the dropdown isn't four "New
|
|
41
|
+
* London"s. (#587)
|
|
42
42
|
*/
|
|
43
43
|
dedupeByName?: boolean;
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
46
|
* Autocomplete from the current prefix. Returns suggestions ranked importance-descending.
|
|
47
47
|
*/
|
|
48
|
-
export declare function autocomplete(fst:
|
|
48
|
+
export declare function autocomplete(fst: FSTMatcher, query: string, opts?: AutocompleteOpts): AutocompleteResult;
|
|
49
49
|
//# sourceMappingURL=fst-autocomplete.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fst-autocomplete.d.ts","sourceRoot":"","sources":["../fst-autocomplete.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAA;AAG9D,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,sBAAsB,EAAE,CAAA;CACrC;AAED,MAAM,WAAW,sBAAsB;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAChC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACtB;AAoBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"fst-autocomplete.d.ts","sourceRoot":"","sources":["../fst-autocomplete.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAA;AAG9D,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,sBAAsB,EAAE,CAAA;CACrC;AAED,MAAM,WAAW,sBAAsB;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAChC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACtB;AAoBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,kBAAkB,CAsE5G"}
|
package/out/fst-autocomplete.js
CHANGED
|
@@ -16,12 +16,11 @@
|
|
|
16
16
|
* continuation edges (`token.startsWith(partial)`). This is what a char-level typeahead
|
|
17
17
|
* needs; without it "new yor" returns nothing useful. (#587)
|
|
18
18
|
*/
|
|
19
|
-
import {
|
|
19
|
+
import { FSTMatcher, normalizeTokens } from "./fst-matcher.js";
|
|
20
20
|
/** Max accepting entries collected per BFS branch — keeps one dense branch from starving the search. */
|
|
21
21
|
const PER_BRANCH = 4;
|
|
22
22
|
/**
|
|
23
|
-
* The top-`k` entries by importance (descending). Avoids sorting/allocating when `entries` is
|
|
24
|
-
* small.
|
|
23
|
+
* The top-`k` entries by importance (descending). Avoids sorting/allocating when `entries` is small.
|
|
25
24
|
*/
|
|
26
25
|
function topByImportance(entries, k) {
|
|
27
26
|
if (entries.length <= k)
|
|
@@ -45,17 +44,17 @@ export function autocomplete(fst, query, opts = {}) {
|
|
|
45
44
|
if (match) {
|
|
46
45
|
// COMPLETE-token prefix landed on a state. Seed at the match state (accepting + continuations).
|
|
47
46
|
depth = match.depth;
|
|
48
|
-
for (const entry of fst.accepting(match.
|
|
47
|
+
for (const entry of fst.accepting(match.stateID))
|
|
49
48
|
addSuggestion(seen, entry, match.depth, []);
|
|
50
|
-
for (const cont of fst.continuations(match.
|
|
51
|
-
queue.push({
|
|
49
|
+
for (const cont of fst.continuations(match.stateID)) {
|
|
50
|
+
queue.push({ stateID: cont.targetState, depth: 1, tokens: [cont.token] });
|
|
52
51
|
}
|
|
53
52
|
}
|
|
54
53
|
else {
|
|
55
54
|
// PARTIAL last token — walk the complete prefix, complete the partial by prefix-filtering edges.
|
|
56
55
|
const complete = normalizedTokens.slice(0, -1);
|
|
57
56
|
const partial = normalizedTokens[normalizedTokens.length - 1];
|
|
58
|
-
const prefixState = complete.length === 0 ? 0 : (fst.walk(complete)?.
|
|
57
|
+
const prefixState = complete.length === 0 ? 0 : (fst.walk(complete)?.stateID ?? undefined);
|
|
59
58
|
if (prefixState === undefined) {
|
|
60
59
|
return { query, normalizedTokens, depth: 0, suggestions: [] };
|
|
61
60
|
}
|
|
@@ -67,7 +66,7 @@ export function autocomplete(fst, query, opts = {}) {
|
|
|
67
66
|
for (const entry of topByImportance(fst.accepting(cont.targetState), PER_BRANCH))
|
|
68
67
|
addSuggestion(seen, entry, complete.length + 1, [cont.token]);
|
|
69
68
|
// BFS a little past it too (multi-token completions: "new yor" → "New York Mills").
|
|
70
|
-
queue.push({
|
|
69
|
+
queue.push({ stateID: cont.targetState, depth: 1, tokens: [cont.token] });
|
|
71
70
|
}
|
|
72
71
|
}
|
|
73
72
|
// BFS expansion (shared by both paths) — find nearby completions up to maxExpansionDepth. Each
|
|
@@ -78,11 +77,11 @@ export function autocomplete(fst, query, opts = {}) {
|
|
|
78
77
|
const item = queue.shift();
|
|
79
78
|
if (item.depth > maxExpansionDepth)
|
|
80
79
|
continue;
|
|
81
|
-
for (const entry of topByImportance(fst.accepting(item.
|
|
80
|
+
for (const entry of topByImportance(fst.accepting(item.stateID), PER_BRANCH))
|
|
82
81
|
addSuggestion(seen, entry, depth + item.depth, item.tokens);
|
|
83
82
|
if (item.depth < maxExpansionDepth) {
|
|
84
|
-
for (const cont of fst.continuations(item.
|
|
85
|
-
queue.push({
|
|
83
|
+
for (const cont of fst.continuations(item.stateID)) {
|
|
84
|
+
queue.push({ stateID: cont.targetState, depth: item.depth + 1, tokens: [...item.tokens, cont.token] });
|
|
86
85
|
}
|
|
87
86
|
}
|
|
88
87
|
}
|
|
@@ -106,8 +105,8 @@ function addSuggestion(seen, entry, matchDepth, completionTokens) {
|
|
|
106
105
|
});
|
|
107
106
|
}
|
|
108
107
|
/**
|
|
109
|
-
* Keep one suggestion per name — the highest-importance. Input is already importance-sorted, so the
|
|
110
|
-
*
|
|
108
|
+
* Keep one suggestion per name — the highest-importance. Input is already importance-sorted, so the first occurrence
|
|
109
|
+
* per name wins; order is preserved.
|
|
111
110
|
*/
|
|
112
111
|
function dedupeByName(suggestions) {
|
|
113
112
|
const seenNames = new Set();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fst-autocomplete.js","sourceRoot":"","sources":["../fst-autocomplete.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAqC9D,wGAAwG;AACxG,MAAM,UAAU,GAAG,CAAC,CAAA;AAEpB
|
|
1
|
+
{"version":3,"file":"fst-autocomplete.js","sourceRoot":"","sources":["../fst-autocomplete.ts"],"names":[],"mappings":"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"}
|
package/out/fst-builder.d.ts
CHANGED
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
* every place name in the gazetteer.
|
|
9
9
|
*
|
|
10
10
|
* Build pipeline: open WOF DB → query spr + names → normalize names → insert into trie → attach
|
|
11
|
-
* PlaceEntry at terminals → return
|
|
11
|
+
* PlaceEntry at terminals → return FSTMatcher.
|
|
12
12
|
*/
|
|
13
|
-
import {
|
|
14
|
-
import type {
|
|
15
|
-
export declare function
|
|
16
|
-
matcher:
|
|
17
|
-
provenance:
|
|
18
|
-
result:
|
|
13
|
+
import { FSTMatcher } from "./fst-matcher.js";
|
|
14
|
+
import type { BuildFSTOpts, BuildFSTResult, FSTProvenance } from "./fst-types.js";
|
|
15
|
+
export declare function buildFSTFromWOF(opts: BuildFSTOpts): {
|
|
16
|
+
matcher: FSTMatcher;
|
|
17
|
+
provenance: FSTProvenance;
|
|
18
|
+
result: BuildFSTResult;
|
|
19
19
|
};
|
|
20
20
|
//# sourceMappingURL=fst-builder.d.ts.map
|
package/out/fst-builder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fst-builder.d.ts","sourceRoot":"","sources":["../fst-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"fst-builder.d.ts","sourceRoot":"","sources":["../fst-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAA2B,MAAM,gBAAgB,CAAA;AAmC1G,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG;IACpD,OAAO,EAAE,UAAU,CAAA;IACnB,UAAU,EAAE,aAAa,CAAA;IACzB,MAAM,EAAE,cAAc,CAAA;CACtB,CAoOA"}
|
package/out/fst-builder.js
CHANGED
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
* every place name in the gazetteer.
|
|
9
9
|
*
|
|
10
10
|
* Build pipeline: open WOF DB → query spr + names → normalize names → insert into trie → attach
|
|
11
|
-
* PlaceEntry at terminals → return
|
|
11
|
+
* PlaceEntry at terminals → return FSTMatcher.
|
|
12
12
|
*/
|
|
13
13
|
import { DatabaseSync } from "node:sqlite";
|
|
14
|
-
import {
|
|
14
|
+
import { FSTMatcher, normalizeTokens } from "./fst-matcher.js";
|
|
15
15
|
const DEFAULT_PLACETYPES = [
|
|
16
16
|
"country",
|
|
17
17
|
"region",
|
|
@@ -23,7 +23,7 @@ const DEFAULT_PLACETYPES = [
|
|
|
23
23
|
];
|
|
24
24
|
const DEFAULT_COUNTRIES = ["US"];
|
|
25
25
|
const DEFAULT_LANGUAGES = ["eng", ""];
|
|
26
|
-
export function
|
|
26
|
+
export function buildFSTFromWOF(opts) {
|
|
27
27
|
const countries = opts.countries ?? DEFAULT_COUNTRIES;
|
|
28
28
|
const placetypes = opts.placetypes ?? DEFAULT_PLACETYPES;
|
|
29
29
|
const languages = opts.languages ?? DEFAULT_LANGUAGES;
|
|
@@ -146,19 +146,19 @@ export function buildFstFromWof(opts) {
|
|
|
146
146
|
function insertName(tokens, entry) {
|
|
147
147
|
if (tokens.length === 0)
|
|
148
148
|
return;
|
|
149
|
-
let
|
|
149
|
+
let stateID = 0;
|
|
150
150
|
for (const t of tokens) {
|
|
151
|
-
const node = nodes[
|
|
151
|
+
const node = nodes[stateID];
|
|
152
152
|
let next = node.edges.get(t);
|
|
153
153
|
if (next === undefined) {
|
|
154
154
|
next = nodes.length;
|
|
155
155
|
nodes.push({ edges: new Map(), places: [] });
|
|
156
156
|
node.edges.set(t, next);
|
|
157
157
|
}
|
|
158
|
-
|
|
158
|
+
stateID = next;
|
|
159
159
|
}
|
|
160
160
|
// Deduplicate: don't add the same wofID twice at the same state.
|
|
161
|
-
const existing = nodes[
|
|
161
|
+
const existing = nodes[stateID].places;
|
|
162
162
|
if (!existing.some((p) => p.wofID === entry.wofID && p.placetype === entry.placetype)) {
|
|
163
163
|
existing.push(entry);
|
|
164
164
|
}
|
|
@@ -194,7 +194,7 @@ export function buildFstFromWof(opts) {
|
|
|
194
194
|
db.close();
|
|
195
195
|
progress("done", `Built trie: ${nodes.length} states, ${insertCount} name insertions`);
|
|
196
196
|
const edgeCount = nodes.reduce((sum, n) => sum + n.edges.size, 0);
|
|
197
|
-
const matcher =
|
|
197
|
+
const matcher = FSTMatcher.fromNodes(nodes);
|
|
198
198
|
const provenance = {
|
|
199
199
|
builtAt: new Date().toISOString(),
|
|
200
200
|
countries,
|
|
@@ -203,7 +203,7 @@ export function buildFstFromWof(opts) {
|
|
|
203
203
|
edgeCount,
|
|
204
204
|
nameInsertions: insertCount,
|
|
205
205
|
importanceMatches: importanceMap.size,
|
|
206
|
-
|
|
206
|
+
sourceDB: opts.dbPath,
|
|
207
207
|
};
|
|
208
208
|
return {
|
|
209
209
|
matcher,
|
package/out/fst-builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fst-builder.js","sourceRoot":"","sources":["../fst-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"fst-builder.js","sourceRoot":"","sources":["../fst-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* This is a read-only counterpart to fst-serialize.ts — serialization stays Node-only (it's a
|
|
10
10
|
* build-time operation).
|
|
11
11
|
*/
|
|
12
|
-
import {
|
|
13
|
-
import type {
|
|
14
|
-
export declare function
|
|
15
|
-
export declare function
|
|
12
|
+
import { FSTMatcher } from "./fst-matcher.js";
|
|
13
|
+
import type { FSTProvenance } from "./fst-types.js";
|
|
14
|
+
export declare function deserializeFSTWeb(input: ArrayBuffer | Uint8Array): FSTMatcher;
|
|
15
|
+
export declare function readFSTProvenanceWeb(input: ArrayBuffer | Uint8Array): FSTProvenance | undefined;
|
|
16
16
|
//# sourceMappingURL=fst-deserialize-web.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fst-deserialize-web.d.ts","sourceRoot":"","sources":["../fst-deserialize-web.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAA2B,MAAM,gBAAgB,CAAA;AAyB5E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"fst-deserialize-web.d.ts","sourceRoot":"","sources":["../fst-deserialize-web.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAA2B,MAAM,gBAAgB,CAAA;AAyB5E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,CAqG7E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,CAqB/F"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* This is a read-only counterpart to fst-serialize.ts — serialization stays Node-only (it's a
|
|
10
10
|
* build-time operation).
|
|
11
11
|
*/
|
|
12
|
-
import {
|
|
12
|
+
import { FSTMatcher } from "./fst-matcher.js";
|
|
13
13
|
const HEADER_SIZE = 32;
|
|
14
14
|
const EDGE_ENTRY_SIZE = 8;
|
|
15
15
|
const PLACE_ENTRY_SIZE = 56;
|
|
@@ -31,7 +31,7 @@ const PLACETYPE_ORDER = [
|
|
|
31
31
|
"dependency",
|
|
32
32
|
"street_affix",
|
|
33
33
|
];
|
|
34
|
-
export function
|
|
34
|
+
export function deserializeFSTWeb(input) {
|
|
35
35
|
const bytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input;
|
|
36
36
|
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
37
37
|
const decoder = new TextDecoder("utf-8");
|
|
@@ -110,9 +110,9 @@ export function deserializeFstWeb(input) {
|
|
|
110
110
|
}
|
|
111
111
|
nodes[si] = { edges, places };
|
|
112
112
|
}
|
|
113
|
-
return
|
|
113
|
+
return FSTMatcher.fromNodes(nodes);
|
|
114
114
|
}
|
|
115
|
-
export function
|
|
115
|
+
export function readFSTProvenanceWeb(input) {
|
|
116
116
|
const bytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input;
|
|
117
117
|
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
118
118
|
const decoder = new TextDecoder("utf-8");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fst-deserialize-web.js","sourceRoot":"","sources":["../fst-deserialize-web.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C,MAAM,WAAW,GAAG,EAAE,CAAA;AACtB,MAAM,eAAe,GAAG,CAAC,CAAA;AACzB,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAC3B,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA,CAAC,UAAU;AACvD,8FAA8F;AAC9F,mGAAmG;AACnG,oFAAoF;AACpF,MAAM,WAAW,GAAG,CAAC,CAAA;AAErB,MAAM,eAAe,GAA2B;IAC/C,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,SAAS;IACT,eAAe;IACf,YAAY;IACZ,QAAQ;IACR,YAAY;IACZ,cAAc;CACd,CAAA;AAED,MAAM,UAAU,iBAAiB,CAAC,KAA+B;IAChE,MAAM,KAAK,GAAG,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAC1E,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;IAC3E,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;IAExC,IAAI,KAAK,CAAC,UAAU,GAAG,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IAEtF,IACC,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC;QAC3B,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC;QAC3B,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC;QAC3B,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,EAC1B,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACtC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"fst-deserialize-web.js","sourceRoot":"","sources":["../fst-deserialize-web.ts"],"names":[],"mappings":"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"}
|
package/out/fst-matcher.d.ts
CHANGED
|
@@ -7,27 +7,27 @@
|
|
|
7
7
|
* introspection. The structure is a deterministic trie over normalized tokens with PlaceEntry
|
|
8
8
|
* arrays at accepting states.
|
|
9
9
|
*/
|
|
10
|
-
import type {
|
|
11
|
-
interface
|
|
10
|
+
import type { FSTContinuation, FSTMatchResult, FSTQueryResult, PlaceEntry } from "./fst-types.js";
|
|
11
|
+
interface FSTNode {
|
|
12
12
|
edges: Map<string, number>;
|
|
13
13
|
places: PlaceEntry[];
|
|
14
14
|
}
|
|
15
|
-
export declare class
|
|
15
|
+
export declare class FSTMatcher {
|
|
16
16
|
private nodes;
|
|
17
|
-
constructor(nodes:
|
|
17
|
+
constructor(nodes: FSTNode[]);
|
|
18
18
|
get stateCount(): number;
|
|
19
19
|
get placeCount(): number;
|
|
20
|
-
walk(tokens: string[]):
|
|
21
|
-
walkFrom(prev:
|
|
22
|
-
accepting(
|
|
23
|
-
continuations(
|
|
24
|
-
query(text: string):
|
|
20
|
+
walk(tokens: string[]): FSTMatchResult | null;
|
|
21
|
+
walkFrom(prev: FSTMatchResult, token: string): FSTMatchResult | null;
|
|
22
|
+
accepting(stateID: number): PlaceEntry[];
|
|
23
|
+
continuations(stateID: number): FSTContinuation[];
|
|
24
|
+
query(text: string): FSTQueryResult;
|
|
25
25
|
get nodeCount(): number;
|
|
26
26
|
/** Expose the internal node array for serialization. */
|
|
27
|
-
toNodes(): readonly
|
|
28
|
-
static fromNodes(nodes:
|
|
27
|
+
toNodes(): readonly FSTNode[];
|
|
28
|
+
static fromNodes(nodes: FSTNode[]): FSTMatcher;
|
|
29
29
|
}
|
|
30
30
|
/** Normalize text into FST tokens: lowercase, NFKC, strip punctuation, split on whitespace. */
|
|
31
31
|
export declare function normalizeTokens(text: string): string[];
|
|
32
|
-
export type {
|
|
32
|
+
export type { FSTNode };
|
|
33
33
|
//# sourceMappingURL=fst-matcher.d.ts.map
|
package/out/fst-matcher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fst-matcher.d.ts","sourceRoot":"","sources":["../fst-matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEjG,UAAU,OAAO;IAChB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1B,MAAM,EAAE,UAAU,EAAE,CAAA;CACpB;AAED,qBAAa,UAAU;IACtB,OAAO,CAAC,KAAK,CAAW;gBAEZ,KAAK,EAAE,OAAO,EAAE;IAI5B,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"fst-matcher.d.ts","sourceRoot":"","sources":["../fst-matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEjG,UAAU,OAAO;IAChB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1B,MAAM,EAAE,UAAU,EAAE,CAAA;CACpB;AAED,qBAAa,UAAU;IACtB,OAAO,CAAC,KAAK,CAAW;gBAEZ,KAAK,EAAE,OAAO,EAAE;IAI5B,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,IAAI,MAAM,CAMvB;IAED,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,GAAG,IAAI;IAiB7C,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAYpE,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAIxC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE;IAkBjD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IAoCnC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,wDAAwD;IACxD,OAAO,IAAI,SAAS,OAAO,EAAE;IAI7B,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,UAAU;CAG9C;AAED,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAOtD;AAED,YAAY,EAAE,OAAO,EAAE,CAAA"}
|
package/out/fst-matcher.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* introspection. The structure is a deterministic trie over normalized tokens with PlaceEntry
|
|
8
8
|
* arrays at accepting states.
|
|
9
9
|
*/
|
|
10
|
-
export class
|
|
10
|
+
export class FSTMatcher {
|
|
11
11
|
nodes;
|
|
12
12
|
constructor(nodes) {
|
|
13
13
|
this.nodes = nodes;
|
|
@@ -22,42 +22,42 @@ export class FstMatcher {
|
|
|
22
22
|
return count;
|
|
23
23
|
}
|
|
24
24
|
walk(tokens) {
|
|
25
|
-
let
|
|
25
|
+
let stateID = 0;
|
|
26
26
|
for (let i = 0; i < tokens.length; i++) {
|
|
27
|
-
const node = this.nodes[
|
|
27
|
+
const node = this.nodes[stateID];
|
|
28
28
|
if (!node)
|
|
29
29
|
return null;
|
|
30
30
|
const next = node.edges.get(tokens[i]);
|
|
31
31
|
if (next === undefined)
|
|
32
32
|
return null;
|
|
33
|
-
|
|
33
|
+
stateID = next;
|
|
34
34
|
}
|
|
35
|
-
const node = this.nodes[
|
|
36
|
-
return {
|
|
35
|
+
const node = this.nodes[stateID];
|
|
36
|
+
return { stateID, accepted: node.places.length > 0, depth: tokens.length };
|
|
37
37
|
}
|
|
38
38
|
walkFrom(prev, token) {
|
|
39
|
-
const node = this.nodes[prev.
|
|
39
|
+
const node = this.nodes[prev.stateID];
|
|
40
40
|
if (!node)
|
|
41
41
|
return null;
|
|
42
42
|
const next = node.edges.get(token);
|
|
43
43
|
if (next === undefined)
|
|
44
44
|
return null;
|
|
45
45
|
const target = this.nodes[next];
|
|
46
|
-
return {
|
|
46
|
+
return { stateID: next, accepted: target.places.length > 0, depth: prev.depth + 1 };
|
|
47
47
|
}
|
|
48
|
-
accepting(
|
|
49
|
-
return this.nodes[
|
|
48
|
+
accepting(stateID) {
|
|
49
|
+
return this.nodes[stateID]?.places ?? [];
|
|
50
50
|
}
|
|
51
|
-
continuations(
|
|
52
|
-
const node = this.nodes[
|
|
51
|
+
continuations(stateID) {
|
|
52
|
+
const node = this.nodes[stateID];
|
|
53
53
|
if (!node)
|
|
54
54
|
return [];
|
|
55
55
|
const result = [];
|
|
56
|
-
for (const [token,
|
|
57
|
-
const target = this.nodes[
|
|
56
|
+
for (const [token, targetID] of node.edges) {
|
|
57
|
+
const target = this.nodes[targetID];
|
|
58
58
|
result.push({
|
|
59
59
|
token,
|
|
60
|
-
targetState:
|
|
60
|
+
targetState: targetID,
|
|
61
61
|
acceptingCount: target.places.length,
|
|
62
62
|
});
|
|
63
63
|
}
|
|
@@ -68,30 +68,30 @@ export class FstMatcher {
|
|
|
68
68
|
const match = this.walk(tokens);
|
|
69
69
|
if (!match) {
|
|
70
70
|
// Walk as far as possible to find where we fall off
|
|
71
|
-
let
|
|
71
|
+
let stateID = 0;
|
|
72
72
|
let depth = 0;
|
|
73
73
|
for (const t of tokens) {
|
|
74
|
-
const node = this.nodes[
|
|
74
|
+
const node = this.nodes[stateID];
|
|
75
75
|
if (!node)
|
|
76
76
|
break;
|
|
77
77
|
const next = node.edges.get(t);
|
|
78
78
|
if (next === undefined)
|
|
79
79
|
break;
|
|
80
|
-
|
|
80
|
+
stateID = next;
|
|
81
81
|
depth++;
|
|
82
82
|
}
|
|
83
83
|
return {
|
|
84
84
|
path: tokens.slice(0, depth),
|
|
85
|
-
|
|
86
|
-
accepting: this.accepting(
|
|
87
|
-
continuations: this.continuations(
|
|
85
|
+
stateID,
|
|
86
|
+
accepting: this.accepting(stateID),
|
|
87
|
+
continuations: this.continuations(stateID),
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
90
|
return {
|
|
91
91
|
path: tokens,
|
|
92
|
-
|
|
93
|
-
accepting: this.accepting(match.
|
|
94
|
-
continuations: this.continuations(match.
|
|
92
|
+
stateID: match.stateID,
|
|
93
|
+
accepting: this.accepting(match.stateID),
|
|
94
|
+
continuations: this.continuations(match.stateID),
|
|
95
95
|
};
|
|
96
96
|
}
|
|
97
97
|
get nodeCount() {
|
|
@@ -102,7 +102,7 @@ export class FstMatcher {
|
|
|
102
102
|
return this.nodes;
|
|
103
103
|
}
|
|
104
104
|
static fromNodes(nodes) {
|
|
105
|
-
return new
|
|
105
|
+
return new FSTMatcher(nodes);
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
/** Normalize text into FST tokens: lowercase, NFKC, strip punctuation, split on whitespace. */
|
package/out/fst-matcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fst-matcher.js","sourceRoot":"","sources":["../fst-matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,MAAM,OAAO,UAAU;IACd,KAAK,CAAW;IAExB,YAAY,KAAgB;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACnB,CAAC;IAED,IAAI,UAAU;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;IACzB,CAAC;IAED,IAAI,UAAU;QACb,IAAI,KAAK,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"fst-matcher.js","sourceRoot":"","sources":["../fst-matcher.ts"],"names":[],"mappings":"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"}
|