mailwoman 4.8.0 → 4.8.1
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.
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Piscina worker for WOF prepare — reads GeoJSON files, extracts structured fields via
|
|
7
|
+
* pluckPlacetypeSpec, and returns parsed data to the main thread. The main thread handles all
|
|
8
|
+
* SQLite writes (both mini-DBs and unified DB) to avoid concurrent writer locks.
|
|
9
|
+
*
|
|
10
|
+
* Per the WAL + Freeze design brief (docs/articles/reviews/2026-05-28-sqlite-wal-strategy.md):
|
|
11
|
+
* "Workers return parsed data to a single main-thread writer."
|
|
12
|
+
*/
|
|
13
|
+
import { pluckPlacetypeSpec } from "@mailwoman/core/resources/whosonfirst";
|
|
14
|
+
import { readFileSync } from "node:fs";
|
|
15
|
+
const ADMIN_PLACETYPES = new Set([
|
|
16
|
+
"country",
|
|
17
|
+
"region",
|
|
18
|
+
"county",
|
|
19
|
+
"locality",
|
|
20
|
+
"localadmin",
|
|
21
|
+
"borough",
|
|
22
|
+
"neighbourhood",
|
|
23
|
+
"macroregion",
|
|
24
|
+
"macrocounty",
|
|
25
|
+
]);
|
|
26
|
+
async function processFiles(input) {
|
|
27
|
+
const places = [];
|
|
28
|
+
let skipped = 0;
|
|
29
|
+
for (const filePath of input.filePaths) {
|
|
30
|
+
if (filePath.includes("-alt-")) {
|
|
31
|
+
skipped++;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
let fileContent;
|
|
35
|
+
try {
|
|
36
|
+
fileContent = readFileSync(filePath, "utf8");
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
skipped++;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
let feature;
|
|
43
|
+
try {
|
|
44
|
+
feature = JSON.parse(fileContent);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
skipped++;
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const superseded_by = feature.properties["wof:superseded_by"];
|
|
51
|
+
if (superseded_by && superseded_by.length !== 0) {
|
|
52
|
+
skipped++;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const { localizedPropMap, placetype, ...props } = pluckPlacetypeSpec(feature.properties);
|
|
56
|
+
if (!ADMIN_PLACETYPES.has(placetype)) {
|
|
57
|
+
skipped++;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
const names = [];
|
|
61
|
+
for (const [languageCode, nameKindMap] of localizedPropMap) {
|
|
62
|
+
names.push({
|
|
63
|
+
language: languageCode,
|
|
64
|
+
preferred: nameKindMap.get("preferred") ?? null,
|
|
65
|
+
variant: nameKindMap.get("variant") ?? null,
|
|
66
|
+
colloquial: nameKindMap.get("colloquial") ?? null,
|
|
67
|
+
abbr: nameKindMap.get("abbr") ?? null,
|
|
68
|
+
short: nameKindMap.get("short") ?? null,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const concordances = {};
|
|
72
|
+
if (props.concordances) {
|
|
73
|
+
for (const [source, value] of Object.entries(props.concordances)) {
|
|
74
|
+
concordances[source] = String(value);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
places.push({
|
|
78
|
+
id: props.id,
|
|
79
|
+
parent_id: props.parent_id,
|
|
80
|
+
name: props.name,
|
|
81
|
+
placetype,
|
|
82
|
+
country: props.country ?? "",
|
|
83
|
+
latitude: props.latitude ?? 0,
|
|
84
|
+
longitude: props.longitude ?? 0,
|
|
85
|
+
population: props.population ?? 0,
|
|
86
|
+
isCurrent: props.isCurrent === false ? 0 : 1,
|
|
87
|
+
isDeprecated: props.isDeprecated ? 1 : 0,
|
|
88
|
+
isCeased: props.isCeased ? 1 : 0,
|
|
89
|
+
isSuperseded: props.isSuperseded ? 1 : 0,
|
|
90
|
+
isSuperseding: props.isSuperseding ? 1 : 0,
|
|
91
|
+
lastmodified: props.lastmodified ?? 0,
|
|
92
|
+
concordances,
|
|
93
|
+
names,
|
|
94
|
+
src: props.src,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
return { places, skipped };
|
|
98
|
+
}
|
|
99
|
+
export default processFiles;
|
|
100
|
+
//# sourceMappingURL=_app_worker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_app_worker.mjs","sourceRoot":"","sources":["../../../../commands/wof/prepare/_app_worker.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../commands/wof/prepare/index.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../commands/wof/prepare/index.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAK3D,QAAA,MAAM,eAAe,6BAAgF,CAAA;AACrG,OAAO,EAAE,eAAe,IAAI,IAAI,EAAE,CAAA;AAElC,QAAA,MAAM,aAAa;;qBAKjB,CAAA;AACF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAInC,QAAA,MAAM,UAAU,EAAE,gBAAgB,CAAC,OAAO,aAAa,EAAE,OAAO,eAAe,CA+K9E,CAAA;AAED,eAAe,UAAU,CAAA"}
|
|
@@ -6,24 +6,14 @@ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
|
6
6
|
*/
|
|
7
7
|
import { ProgressBar } from "@inkjs/ui";
|
|
8
8
|
import { formatMinutes, formatQuantity, takeAsync, tallyPatternCount } from "@mailwoman/core/resources";
|
|
9
|
-
import { createUnifiedIndexes, createUnifiedSchema } from "@mailwoman/resolver-wof-sqlite/unified-schema";
|
|
10
9
|
import FastGlob from "fast-glob";
|
|
11
10
|
import { Box, Text } from "ink";
|
|
12
|
-
import { availableParallelism } from "node:os";
|
|
13
11
|
import { DatabaseSync } from "node:sqlite";
|
|
14
12
|
import { setImmediate } from "node:timers/promises";
|
|
15
13
|
import { PathBuilder } from "path-ts";
|
|
16
14
|
import { Piscina } from "piscina";
|
|
17
15
|
import { useEffect, useState } from "react";
|
|
18
16
|
import zod from "zod";
|
|
19
|
-
const piscina = new Piscina({
|
|
20
|
-
filename: PathBuilder.from(import.meta.dirname, "_app_worker.mjs").href,
|
|
21
|
-
idleTimeout: 1000 * 10,
|
|
22
|
-
env: {
|
|
23
|
-
WOF_DATA_DIR: process.env.WOF_DATA_DIR || "/tmp/wof-placetype-dbs",
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
const WORKER_COUNT = availableParallelism();
|
|
27
17
|
const FILES_PER_BATCH = 500;
|
|
28
18
|
const ArgumentsSchema = zod.array(zod.string().describe("Path to the Who's On First data directory"));
|
|
29
19
|
export { ArgumentsSchema as args };
|
|
@@ -57,9 +47,30 @@ const WOFPrepare = ({ args: [wofDataAdminDirectory], options, }) => {
|
|
|
57
47
|
useEffect(() => {
|
|
58
48
|
;
|
|
59
49
|
(async () => {
|
|
50
|
+
// Worker pool is created HERE (not at module scope) so importing this command module — which
|
|
51
|
+
// pastel does eagerly for every CLI invocation — has no side effects and ships no hard
|
|
52
|
+
// dependency on the worker being resolvable at load time.
|
|
53
|
+
const piscina = new Piscina({
|
|
54
|
+
filename: PathBuilder.from(import.meta.dirname, "_app_worker.mjs").href,
|
|
55
|
+
idleTimeout: 1000 * 10,
|
|
56
|
+
env: {
|
|
57
|
+
WOF_DATA_DIR: process.env.WOF_DATA_DIR || "/tmp/wof-placetype-dbs",
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
// The unified-DB helpers live in the optional `@mailwoman/resolver-wof-sqlite` peer. Load them
|
|
61
|
+
// lazily (only when --unified-db is requested) so the published CLI loads without that package —
|
|
62
|
+
// same graceful-optional pattern as `parse --resolve`. Without it, the standalone CLI would crash
|
|
63
|
+
// on startup importing an unpublished workspace (#481 follow-up / clean-install fix).
|
|
64
|
+
let unifiedSchema;
|
|
60
65
|
if (unifiedDbPath) {
|
|
66
|
+
try {
|
|
67
|
+
unifiedSchema = await import("@mailwoman/resolver-wof-sqlite/unified-schema");
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
throw new Error("`wof prepare --unified-db` needs @mailwoman/resolver-wof-sqlite — install it (npm i @mailwoman/resolver-wof-sqlite) and retry.");
|
|
71
|
+
}
|
|
61
72
|
const db = new DatabaseSync(unifiedDbPath, { open: true });
|
|
62
|
-
createUnifiedSchema(db);
|
|
73
|
+
unifiedSchema.createUnifiedSchema(db);
|
|
63
74
|
db.close();
|
|
64
75
|
}
|
|
65
76
|
const matchStream = FastGlob.stream(["**/*.geojson"], {
|
|
@@ -82,7 +93,6 @@ const WOFPrepare = ({ args: [wofDataAdminDirectory], options, }) => {
|
|
|
82
93
|
populationInsert = unifiedDb.prepare("INSERT OR REPLACE INTO place_population (id, population) VALUES (?, ?)");
|
|
83
94
|
}
|
|
84
95
|
const tasks = [];
|
|
85
|
-
let batchCount = 0;
|
|
86
96
|
for await (const fileNames of takeAsync(matchStream, FILES_PER_BATCH)) {
|
|
87
97
|
const filePaths = fileNames.map((f) => f.toString());
|
|
88
98
|
const task = piscina.run({ filePaths }).then((result) => {
|
|
@@ -111,7 +121,7 @@ const WOFPrepare = ({ args: [wofDataAdminDirectory], options, }) => {
|
|
|
111
121
|
await Promise.allSettled(tasks);
|
|
112
122
|
await piscina.destroy();
|
|
113
123
|
if (unifiedDb) {
|
|
114
|
-
createUnifiedIndexes(unifiedDb);
|
|
124
|
+
unifiedSchema.createUnifiedIndexes(unifiedDb);
|
|
115
125
|
unifiedDb.close();
|
|
116
126
|
}
|
|
117
127
|
})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../commands/wof/prepare/index.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACvG,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../commands/wof/prepare/index.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mailwoman",
|
|
3
|
-
"version": "4.8.
|
|
3
|
+
"version": "4.8.1",
|
|
4
4
|
"description": "Utilities for working with contacts for email, phone, and postal addresses.",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"contributors": [
|
|
@@ -33,15 +33,20 @@
|
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@fragaria/address-formatter": "^6.7.1",
|
|
35
35
|
"@inkjs/ui": "^2.0.0",
|
|
36
|
-
"@mailwoman/classifiers": "4.8.
|
|
37
|
-
"@mailwoman/core": "4.8.
|
|
38
|
-
"@mailwoman/
|
|
39
|
-
"@mailwoman/
|
|
40
|
-
"@mailwoman/
|
|
41
|
-
"@mailwoman/
|
|
42
|
-
"@mailwoman/
|
|
36
|
+
"@mailwoman/classifiers": "4.8.1",
|
|
37
|
+
"@mailwoman/core": "4.8.1",
|
|
38
|
+
"@mailwoman/corpus": "4.8.1",
|
|
39
|
+
"@mailwoman/kind-classifier": "4.8.1",
|
|
40
|
+
"@mailwoman/locale-gate": "4.8.1",
|
|
41
|
+
"@mailwoman/neural": "4.8.1",
|
|
42
|
+
"@mailwoman/normalize": "4.8.1",
|
|
43
|
+
"@mailwoman/phrase-grouper": "4.8.1",
|
|
44
|
+
"@mailwoman/query-shape": "4.8.1",
|
|
45
|
+
"chalk": "^5.6.2",
|
|
43
46
|
"change-case": "^5.4.4",
|
|
47
|
+
"d3-scale-chromatic": "^3.1.0",
|
|
44
48
|
"express": "^5.2.1",
|
|
49
|
+
"fast-glob": "^3.3.3",
|
|
45
50
|
"geojson": "^0.5.0",
|
|
46
51
|
"ink": "^7.0.5",
|
|
47
52
|
"ioredis": "^5.11.1",
|
|
@@ -52,7 +57,8 @@
|
|
|
52
57
|
"react": "^19.2.7",
|
|
53
58
|
"regenerate": "^1.4.2",
|
|
54
59
|
"spliterator": "^2.0.0",
|
|
55
|
-
"zod": "^4.4.3"
|
|
60
|
+
"zod": "^4.4.3",
|
|
61
|
+
"zx": "^8.8.5"
|
|
56
62
|
},
|
|
57
63
|
"peerDependencies": {
|
|
58
64
|
"@mailwoman/resolver-wof-sqlite": "2.1.0"
|
|
@@ -61,7 +67,9 @@
|
|
|
61
67
|
"!out/test/**/*",
|
|
62
68
|
"!**/*.ts",
|
|
63
69
|
"out/**/*.js",
|
|
70
|
+
"out/**/*.mjs",
|
|
64
71
|
"out/**/*.js.map",
|
|
72
|
+
"out/**/*.mjs.map",
|
|
65
73
|
"out/**/*.d.ts",
|
|
66
74
|
"out/**/*.d.ts.map",
|
|
67
75
|
"out/**/*.json"
|