@mailwoman/resolver-wof-sqlite 5.9.0 → 5.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +12 -9
  2. package/out/address-point-interpolation.d.ts +1 -1
  3. package/out/address-point.d.ts +1 -1
  4. package/out/address-point.d.ts.map +1 -1
  5. package/out/address-point.js +8 -2
  6. package/out/address-point.js.map +1 -1
  7. package/out/candidate-lookup.d.ts +1 -1
  8. package/out/convention.d.ts +1 -1
  9. package/out/fst-autocomplete.d.ts +1 -1
  10. package/out/fst-builder.d.ts +2 -2
  11. package/out/fst-deserialize-web.d.ts +2 -2
  12. package/out/fst-matcher.d.ts +1 -1
  13. package/out/fst-serialize.d.ts +2 -2
  14. package/out/fts.d.ts +1 -1
  15. package/out/fts.js +1 -1
  16. package/out/geo.js +1 -1
  17. package/out/index.d.ts +26 -26
  18. package/out/lookup.d.ts +5 -5
  19. package/out/lookup.js +2 -4
  20. package/out/lookup.js.map +1 -1
  21. package/out/reverse.d.ts +2 -2
  22. package/out/reverse.js +1 -1
  23. package/out/reverse.js.map +1 -1
  24. package/out/sqlite-convention-source.d.ts +1 -1
  25. package/out/street-centroid.d.ts +1 -1
  26. package/out/street-morphology-fst-builder.d.ts +2 -2
  27. package/package.json +192 -34
  28. package/out/build-candidate-cli.d.ts +0 -16
  29. package/out/build-candidate-cli.d.ts.map +0 -1
  30. package/out/build-candidate-cli.js +0 -86
  31. package/out/build-candidate-cli.js.map +0 -1
  32. package/out/build-coincident-roles-cli.d.ts +0 -16
  33. package/out/build-coincident-roles-cli.d.ts.map +0 -1
  34. package/out/build-coincident-roles-cli.js +0 -99
  35. package/out/build-coincident-roles-cli.js.map +0 -1
  36. package/out/build-fts-cli.d.ts +0 -23
  37. package/out/build-fts-cli.d.ts.map +0 -1
  38. package/out/build-fts-cli.js +0 -120
  39. package/out/build-fts-cli.js.map +0 -1
  40. package/out/build-slim-cli.d.ts +0 -14
  41. package/out/build-slim-cli.d.ts.map +0 -1
  42. package/out/build-slim-cli.js +0 -135
  43. package/out/build-slim-cli.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-fts-cli.js","sourceRoot":"","sources":["../build-fts-cli.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * @copyright Sister Software
4
- * @license AGPL-3.0
5
- * @author Teffen Ellis, et al.
6
- *
7
- * `mailwoman-wof-build-slim --in <wof.db>... --out <slim.db> [--top 1000] [--countries US]`
8
- *
9
- * Operator-side one-shot CLI that produces a "slim" WOF SQLite distribution sized for the
10
- * browser-side mailwoman demo (Path B). Delegates to {@linkcode buildSlimWOFDatabase}; the CLI is
11
- * just argument parsing + stderr progress.
12
- */
13
- export declare function main(rawArgv: string[]): Promise<number>;
14
- //# sourceMappingURL=build-slim-cli.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-slim-cli.d.ts","sourceRoot":"","sources":["../build-slim-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AA2GH,wBAAsB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAsC7D"}
@@ -1,135 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * @copyright Sister Software
4
- * @license AGPL-3.0
5
- * @author Teffen Ellis, et al.
6
- *
7
- * `mailwoman-wof-build-slim --in <wof.db>... --out <slim.db> [--top 1000] [--countries US]`
8
- *
9
- * Operator-side one-shot CLI that produces a "slim" WOF SQLite distribution sized for the
10
- * browser-side mailwoman demo (Path B). Delegates to {@linkcode buildSlimWOFDatabase}; the CLI is
11
- * just argument parsing + stderr progress.
12
- */
13
- import { exit, stderr } from "node:process";
14
- import { cliArguments, runIfScript } from "@mailwoman/core/utils";
15
- import { buildSlimWOFDatabase } from "./build-slim.js";
16
- function printUsageAndExit(code) {
17
- stderr.write([
18
- "usage: mailwoman-wof-build-slim --in <wof.db>... --out <slim.db> [--top N] [--countries US,CA,...] [--drop-names]",
19
- "",
20
- "Builds a trimmed WOF SQLite distribution for the browser-side demo. Default selection:",
21
- " - All ancestor placetypes (country/region/county/borough/macroregion) in scope",
22
- " - Top --top localities by population (from the source place_population table, default 1000)",
23
- " - All postalcodes in scope",
24
- " - All names + place_population rows for selected IDs (+ coincident_roles, filtered)",
25
- " - Fresh place_search FTS5 + place_bbox R*Tree (rebuilt from spr + names)",
26
- "",
27
- "--drop-names drops the names table after the FTS build (self-contained FTS5; ~2/3 size win,",
28
- "the resolver never reads names at runtime — see #359). Empty --in values are skipped (pass",
29
- '"" for a shard that isn\'t built yet).',
30
- "",
31
- "Examples:",
32
- " mailwoman-wof-build-slim --in admin-us.db --in postalcode-us.db --out wof-hot.db",
33
- " mailwoman-wof-build-slim --in admin-us.db --out wof-tiny.db --top 100",
34
- " mailwoman-wof-build-slim --in admin-na.db --out wof-na.db --countries US,CA,MX",
35
- "",
36
- ].join("\n"));
37
- exit(code);
38
- }
39
- function parseArgs(argv) {
40
- const out = { inputs: [], output: "", topLocalities: 1000, countries: ["US"], dropNames: false };
41
- for (let i = 0; i < argv.length; i++) {
42
- const a = argv[i];
43
- if (a === "--in") {
44
- // Consume the value even when empty — callers pass `--in ""` for a shard (e.g. a custom
45
- // postcode DB) that isn't built yet. Push only non-empty paths; build-slim skips the rest.
46
- const v = argv[++i];
47
- if (v === undefined) {
48
- printUsageAndExit(2);
49
- }
50
- if (v) {
51
- out.inputs.push(v);
52
- }
53
- }
54
- else if (a === "--out") {
55
- const v = argv[++i];
56
- if (!v) {
57
- printUsageAndExit(2);
58
- }
59
- out.output = v;
60
- }
61
- else if (a === "--top") {
62
- const v = argv[++i];
63
- if (!v) {
64
- printUsageAndExit(2);
65
- }
66
- const n = Number(v);
67
- if (!Number.isFinite(n) || n <= 0) {
68
- stderr.write(`--top must be a positive number; got '${v}'\n`);
69
- exit(2);
70
- }
71
- out.topLocalities = n;
72
- }
73
- else if (a === "--countries") {
74
- const v = argv[++i];
75
- if (!v) {
76
- printUsageAndExit(2);
77
- }
78
- out.countries = v
79
- .split(",")
80
- .map((c) => c.trim())
81
- .filter(Boolean);
82
- }
83
- else if (a === "--drop-names") {
84
- out.dropNames = true;
85
- }
86
- else if (a === "--help" || a === "-h") {
87
- printUsageAndExit(0);
88
- }
89
- else {
90
- stderr.write(`unknown argument: '${a}'\n`);
91
- printUsageAndExit(2);
92
- }
93
- }
94
- if (out.inputs.length === 0 || !out.output) {
95
- printUsageAndExit(2);
96
- }
97
- return out;
98
- }
99
- export async function main(rawArgv) {
100
- let args;
101
- try {
102
- args = parseArgs(rawArgv);
103
- }
104
- catch {
105
- return 2;
106
- }
107
- const opts = {
108
- inputs: args.inputs,
109
- output: args.output,
110
- countries: args.countries,
111
- topLocalitiesPerCountry: args.topLocalities,
112
- dropNames: args.dropNames,
113
- onProgress: (phase, detail) => {
114
- stderr.write(`[${phase}] ${detail}\n`);
115
- },
116
- };
117
- try {
118
- const result = await buildSlimWOFDatabase(opts);
119
- const mb = (result.outputBytes / 1024 / 1024).toFixed(1);
120
- stderr.write(`\nBuilt ${result.outputPath} (${mb} MB)\n` +
121
- ` spr=${result.rowCounts.spr}` +
122
- ` names=${result.rowCounts.names}${args.dropNames ? " (dropped)" : ""}` +
123
- ` fts=${result.rowCounts.placeSearch}` +
124
- ` bbox=${result.rowCounts.placeBbox}` +
125
- ` pop=${result.rowCounts.placePopulation}\n`);
126
- return 0;
127
- }
128
- catch (err) {
129
- stderr.write(`build-slim failed: ${err.message}\n`);
130
- return 1;
131
- }
132
- }
133
- // Run when invoked as a script (not when imported by tests).
134
- void runIfScript(import.meta, async () => exit(await main(cliArguments())));
135
- //# sourceMappingURL=build-slim-cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-slim-cli.js","sourceRoot":"","sources":["../build-slim-cli.ts"],"names":[],"mappings":"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"}