@mailwoman/corpus 10.5.0 → 10.7.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/data/PROVENANCE.md +24 -0
- package/data/address-source-register.json +18948 -8757
- package/data/corpus-source-inputs.json +4756 -0
- package/data/license-decisions.json +7260 -0
- package/data/licenses/whosonfirst-licenses.md +3 -2
- package/data/reviewed-ve-postcode-tuples.json +5 -72
- package/data/source-additions.json +2450 -0
- package/data/source-resolutions.json +87 -0
- package/data/training-manifests/v0.7.10-gb-county.effective.json +2335 -0
- package/data/training-manifests/v0.7.10-gb-county.json +1132 -0
- package/data/training-manifests/v0.7.2-address-systems.effective.json +3 -2
- package/data/training-manifests/v0.7.7-no-ppd.json +550 -0
- package/data/training-manifests/v0.7.8-rights-clean.json +538 -0
- package/data/training-manifests/v0.7.9-country-gap.json +1132 -0
- package/data/us-situs-sources.json +128 -0
- package/lib/adapters/cordis/adapter.ts +1 -1
- package/lib/adapters/libpostal-dictionary.ts +23 -3
- package/lib/adapters/osm/adapter.ts +42 -11
- package/lib/adapters.ts +14 -0
- package/lib/az/adapters/opendata/adapter.ts +389 -0
- package/lib/bs/adapters/gbpa/adapter.ts +248 -0
- package/lib/build/types.ts +16 -0
- package/lib/build.ts +21 -0
- package/lib/ee/adapters/ads/adapter.ts +18 -0
- package/lib/fo/adapters/adressur/adapter.ts +242 -0
- package/lib/gb/adapters/os-open/adapter.ts +14 -2
- package/lib/gb/county.ts +59 -0
- package/lib/gb/os-open/{open-names.ts → open/names.ts} +41 -0
- package/lib/gu/adapters/bsp/adapter.ts +434 -0
- package/lib/im/adapters/land-registry/adapter.ts +340 -0
- package/lib/international/recipes/locale.ts +164 -19
- package/lib/li/adapters/llv/adapter.ts +246 -0
- package/lib/recipes/bare/postcode.ts +10 -34
- package/lib/recipes/country-balanced.ts +95 -78
- package/lib/recipes/intersection.ts +22 -30
- package/lib/recipes/po/box/cedex/recipe.ts +8 -5
- package/lib/recipes/po/box/cedex/sources.ts +2 -23
- package/lib/recipes/scaffold.ts +28 -3
- package/lib/recipes/sources.ts +112 -1
- package/lib/recipes/street/affix.ts +17 -29
- package/lib/recipes/sub/venue/context.ts +33 -9
- package/lib/recipes/sub/venue/sources.ts +54 -13
- package/lib/recipes/sub/venue.ts +68 -23
- package/lib/recipes/unit.ts +20 -7
- package/lib/registers.ts +33 -0
- package/lib/source-register/corpus-inputs.ts +528 -0
- package/lib/source-register/effective-manifest.ts +37 -5
- package/lib/source-register/types.ts +20 -0
- package/lib/south-asia/recipes/register.ts +1 -1
- package/lib/tools/overlay/manifest.ts +109 -1
- package/lib/tools/source-register/build.ts +47 -1
- package/lib/tools/variety-sample.ts +633 -0
- package/lib/us/adapters/usgov/nad/adapter.ts +39 -10
- package/lib/us/recipes/skeleton-sources.ts +156 -0
- package/lib/us/tools/nad-skeletons.ts +395 -0
- package/lib/uy/adapters/ide/adapter.ts +275 -0
- package/lib/ve/recipes/reviewed-postcode-tail.ts +29 -6
- package/out/adapters/cordis/adapter.d.ts +1 -1
- package/out/adapters/cordis/adapter.js +1 -1
- package/out/adapters/libpostal-dictionary.d.ts +9 -0
- package/out/adapters/libpostal-dictionary.d.ts.map +1 -1
- package/out/adapters/libpostal-dictionary.js +19 -3
- package/out/adapters/libpostal-dictionary.js.map +1 -1
- package/out/adapters/osm/adapter.d.ts +12 -1
- package/out/adapters/osm/adapter.d.ts.map +1 -1
- package/out/adapters/osm/adapter.js +30 -13
- package/out/adapters/osm/adapter.js.map +1 -1
- package/out/adapters.d.ts.map +1 -1
- package/out/adapters.js +14 -0
- package/out/adapters.js.map +1 -1
- package/out/az/adapters/opendata/adapter.d.ts +88 -0
- package/out/az/adapters/opendata/adapter.d.ts.map +1 -0
- package/out/az/adapters/opendata/adapter.js +282 -0
- package/out/az/adapters/opendata/adapter.js.map +1 -0
- package/out/bs/adapters/gbpa/adapter.d.ts +64 -0
- package/out/bs/adapters/gbpa/adapter.d.ts.map +1 -0
- package/out/bs/adapters/gbpa/adapter.js +187 -0
- package/out/bs/adapters/gbpa/adapter.js.map +1 -0
- package/out/build/types.d.ts +15 -0
- package/out/build/types.d.ts.map +1 -1
- package/out/build/types.js.map +1 -1
- package/out/build.d.ts.map +1 -1
- package/out/build.js +17 -0
- package/out/build.js.map +1 -1
- package/out/ee/adapters/ads/adapter.d.ts +6 -0
- package/out/ee/adapters/ads/adapter.d.ts.map +1 -1
- package/out/ee/adapters/ads/adapter.js +16 -0
- package/out/ee/adapters/ads/adapter.js.map +1 -1
- package/out/fo/adapters/adressur/adapter.d.ts +63 -0
- package/out/fo/adapters/adressur/adapter.d.ts.map +1 -0
- package/out/fo/adapters/adressur/adapter.js +177 -0
- package/out/fo/adapters/adressur/adapter.js.map +1 -0
- package/out/gb/adapters/os-open/adapter.d.ts +10 -2
- package/out/gb/adapters/os-open/adapter.d.ts.map +1 -1
- package/out/gb/adapters/os-open/adapter.js +13 -2
- package/out/gb/adapters/os-open/adapter.js.map +1 -1
- package/out/gb/county.d.ts +30 -0
- package/out/gb/county.d.ts.map +1 -0
- package/out/gb/county.js +51 -0
- package/out/gb/county.js.map +1 -0
- package/out/gb/os-open/{open-names.d.ts → open/names.d.ts} +18 -1
- package/out/gb/os-open/open/names.d.ts.map +1 -0
- package/out/gb/os-open/{open-names.js → open/names.js} +20 -1
- package/out/gb/os-open/open/names.js.map +1 -0
- package/out/gb/os-open/{open-roads.d.ts → open/roads.d.ts} +1 -1
- package/out/gb/os-open/open/roads.d.ts.map +1 -0
- package/out/gb/os-open/{open-roads.js → open/roads.js} +1 -1
- package/out/gb/os-open/open/roads.js.map +1 -0
- package/out/gu/adapters/bsp/adapter.d.ts +83 -0
- package/out/gu/adapters/bsp/adapter.d.ts.map +1 -0
- package/out/gu/adapters/bsp/adapter.js +346 -0
- package/out/gu/adapters/bsp/adapter.js.map +1 -0
- package/out/im/adapters/land-registry/adapter.d.ts +68 -0
- package/out/im/adapters/land-registry/adapter.d.ts.map +1 -0
- package/out/im/adapters/land-registry/adapter.js +261 -0
- package/out/im/adapters/land-registry/adapter.js.map +1 -0
- package/out/international/recipes/locale.d.ts +24 -4
- package/out/international/recipes/locale.d.ts.map +1 -1
- package/out/international/recipes/locale.js +107 -15
- package/out/international/recipes/locale.js.map +1 -1
- package/out/li/adapters/llv/adapter.d.ts +69 -0
- package/out/li/adapters/llv/adapter.d.ts.map +1 -0
- package/out/li/adapters/llv/adapter.js +181 -0
- package/out/li/adapters/llv/adapter.js.map +1 -0
- package/out/recipes/bare/postcode.d.ts.map +1 -1
- package/out/recipes/bare/postcode.js +9 -30
- package/out/recipes/bare/postcode.js.map +1 -1
- package/out/recipes/country-balanced.d.ts.map +1 -1
- package/out/recipes/country-balanced.js +82 -73
- package/out/recipes/country-balanced.js.map +1 -1
- package/out/recipes/intersection.d.ts +3 -2
- package/out/recipes/intersection.d.ts.map +1 -1
- package/out/recipes/intersection.js +20 -26
- package/out/recipes/intersection.js.map +1 -1
- package/out/recipes/po/box/cedex/recipe.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/recipe.js +5 -4
- package/out/recipes/po/box/cedex/recipe.js.map +1 -1
- package/out/recipes/po/box/cedex/sources.d.ts +2 -45
- package/out/recipes/po/box/cedex/sources.d.ts.map +1 -1
- package/out/recipes/po/box/cedex/sources.js +0 -20
- package/out/recipes/po/box/cedex/sources.js.map +1 -1
- package/out/recipes/scaffold.d.ts +15 -2
- package/out/recipes/scaffold.d.ts.map +1 -1
- package/out/recipes/scaffold.js +21 -1
- package/out/recipes/scaffold.js.map +1 -1
- package/out/recipes/sources.d.ts.map +1 -1
- package/out/recipes/sources.js +112 -1
- package/out/recipes/sources.js.map +1 -1
- package/out/recipes/street/affix.d.ts.map +1 -1
- package/out/recipes/street/affix.js +8 -20
- package/out/recipes/street/affix.js.map +1 -1
- package/out/recipes/sub/venue/context.d.ts +14 -3
- package/out/recipes/sub/venue/context.d.ts.map +1 -1
- package/out/recipes/sub/venue/context.js +29 -9
- package/out/recipes/sub/venue/context.js.map +1 -1
- package/out/recipes/sub/venue/sources.d.ts +41 -8
- package/out/recipes/sub/venue/sources.d.ts.map +1 -1
- package/out/recipes/sub/venue/sources.js +26 -7
- package/out/recipes/sub/venue/sources.js.map +1 -1
- package/out/recipes/sub/venue.d.ts.map +1 -1
- package/out/recipes/sub/venue.js +35 -14
- package/out/recipes/sub/venue.js.map +1 -1
- package/out/recipes/unit.d.ts +4 -0
- package/out/recipes/unit.d.ts.map +1 -1
- package/out/recipes/unit.js +7 -6
- package/out/recipes/unit.js.map +1 -1
- package/out/registers.d.ts +33 -0
- package/out/registers.d.ts.map +1 -1
- package/out/registers.js +33 -0
- package/out/registers.js.map +1 -1
- package/out/source-register/corpus-inputs.d.ts +240 -0
- package/out/source-register/corpus-inputs.d.ts.map +1 -0
- package/out/source-register/corpus-inputs.js +275 -0
- package/out/source-register/corpus-inputs.js.map +1 -0
- package/out/source-register/effective-manifest.d.ts +2 -0
- package/out/source-register/effective-manifest.d.ts.map +1 -1
- package/out/source-register/effective-manifest.js +33 -4
- package/out/source-register/effective-manifest.js.map +1 -1
- package/out/source-register/types.d.ts +21 -1
- package/out/source-register/types.d.ts.map +1 -1
- package/out/source-register/types.js +20 -0
- package/out/source-register/types.js.map +1 -1
- package/out/south-asia/recipes/register.js +1 -1
- package/out/south-asia/recipes/register.js.map +1 -1
- package/out/tools/overlay/manifest.d.ts +7 -0
- package/out/tools/overlay/manifest.d.ts.map +1 -1
- package/out/tools/overlay/manifest.js +72 -1
- package/out/tools/overlay/manifest.js.map +1 -1
- package/out/tools/source-register/build.d.ts +9 -0
- package/out/tools/source-register/build.d.ts.map +1 -1
- package/out/tools/source-register/build.js +25 -3
- package/out/tools/source-register/build.js.map +1 -1
- package/out/tools/variety-sample.d.ts +196 -0
- package/out/tools/variety-sample.d.ts.map +1 -0
- package/out/tools/variety-sample.js +417 -0
- package/out/tools/variety-sample.js.map +1 -0
- package/out/us/adapters/usgov/nad/adapter.d.ts +80 -0
- package/out/us/adapters/usgov/nad/adapter.d.ts.map +1 -1
- package/out/us/adapters/usgov/nad/adapter.js +27 -8
- package/out/us/adapters/usgov/nad/adapter.js.map +1 -1
- package/out/us/recipes/skeleton-sources.d.ts +92 -0
- package/out/us/recipes/skeleton-sources.d.ts.map +1 -0
- package/out/us/recipes/skeleton-sources.js +121 -0
- package/out/us/recipes/skeleton-sources.js.map +1 -0
- package/out/us/tools/nad-skeletons.d.ts +120 -0
- package/out/us/tools/nad-skeletons.d.ts.map +1 -0
- package/out/us/tools/nad-skeletons.js +262 -0
- package/out/us/tools/nad-skeletons.js.map +1 -0
- package/out/uy/adapters/ide/adapter.d.ts +64 -0
- package/out/uy/adapters/ide/adapter.d.ts.map +1 -0
- package/out/uy/adapters/ide/adapter.js +206 -0
- package/out/uy/adapters/ide/adapter.js.map +1 -0
- package/out/ve/recipes/reviewed-postcode-tail.d.ts +6 -2
- package/out/ve/recipes/reviewed-postcode-tail.d.ts.map +1 -1
- package/out/ve/recipes/reviewed-postcode-tail.js +16 -5
- package/out/ve/recipes/reviewed-postcode-tail.js.map +1 -1
- package/package.json +14 -14
- package/lib/recipes/unit/sources.ts +0 -44
- package/lib/tools/fetch/ppd.ts +0 -121
- package/out/gb/os-open/open-names.d.ts.map +0 -1
- package/out/gb/os-open/open-names.js.map +0 -1
- package/out/gb/os-open/open-roads.d.ts.map +0 -1
- package/out/gb/os-open/open-roads.js.map +0 -1
- package/out/recipes/unit/sources.d.ts +0 -28
- package/out/recipes/unit/sources.d.ts.map +0 -1
- package/out/recipes/unit/sources.js +0 -30
- package/out/recipes/unit/sources.js.map +0 -1
- package/out/tools/fetch/ppd.d.ts +0 -15
- package/out/tools/fetch/ppd.d.ts.map +0 -1
- package/out/tools/fetch/ppd.js +0 -86
- package/out/tools/fetch/ppd.js.map +0 -1
- /package/lib/gb/os-open/{open-roads.ts → open/roads.ts} +0 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* `landregistry-im`: the property addresses of the Isle of Man Land Registry's land transactions, which the
|
|
7
|
+
* Isle of Man Government publishes on gov.im as one CSV of every registered sale since 2000.
|
|
8
|
+
*
|
|
9
|
+
* Each row is a sale, so one property appears once per sale. The adapter emits each distinct address
|
|
10
|
+
* once, comparing the emitted components case-folded and keeping the first. It reads only the address
|
|
11
|
+
* columns and never the price or date columns.
|
|
12
|
+
*
|
|
13
|
+
* `SubUnit_Name` is the flat or apartment (`Flat 2`, `Apartment 5`), `House_Number` the door number,
|
|
14
|
+
* `House_Name` the house's given name (`Ballacain Farm`) or the building's (`Spectrum Apartments`),
|
|
15
|
+
* `Street_Name` the street, `Locality` the estate or village inside the town, and `Town` the post town.
|
|
16
|
+
* The IM layout prints no region, so `Parish_` is not read.
|
|
17
|
+
*
|
|
18
|
+
* The register also records sales of land that has no postal address. Such a row describes the land
|
|
19
|
+
* (`Field North Of Ballawhannel Farm`, `Parcel Of Land`, `Land Adjacent To Mostyn Ville`) in place of
|
|
20
|
+
* naming a property, and the adapter refuses it, as it refuses a garage, a parking space or a substation
|
|
21
|
+
* sold on its own.
|
|
22
|
+
*
|
|
23
|
+
* The Isle of Man Government publishes the dataset under the Isle of Man Open Government Licence, which
|
|
24
|
+
* requires the attribution statement below. Every row records that license.
|
|
25
|
+
*/
|
|
26
|
+
import { formatAddressRow } from "@mailwoman/codex/address/format";
|
|
27
|
+
import { matchCountryPostcode } from "@mailwoman/codex/postcode/country-formats";
|
|
28
|
+
import { readLocalBuffer } from "@mailwoman/core/fs/readers";
|
|
29
|
+
import { resolvePath } from "path-ts";
|
|
30
|
+
import { CSVSpliterator } from "spliterator";
|
|
31
|
+
import { UnsupportedCountryError } from "#adapters/errors";
|
|
32
|
+
import { stableSourceIDFromParts } from "#adapters/source-id";
|
|
33
|
+
import { SourceRegister } from "#registers";
|
|
34
|
+
import { AddressRole, countDropped, SurfaceOrigin, } from "#types";
|
|
35
|
+
/**
|
|
36
|
+
* Registry id for this adapter, stamped into every row it emits.
|
|
37
|
+
*/
|
|
38
|
+
export const LANDREGISTRY_IM_ADAPTER_ID = "landregistry-im";
|
|
39
|
+
/**
|
|
40
|
+
* The Isle of Man Open Government Licence, whose version the dataset page does not state.
|
|
41
|
+
* It has no SPDX identifier.
|
|
42
|
+
*/
|
|
43
|
+
export const LANDREGISTRY_IM_LICENSE = "LicenseRef-IM-OGL";
|
|
44
|
+
/**
|
|
45
|
+
* The attribution statement the license requires.
|
|
46
|
+
*/
|
|
47
|
+
export const LANDREGISTRY_IM_ATTRIBUTION = "Contains public sector information licensed under the Isle of Man Open Government Licence";
|
|
48
|
+
/**
|
|
49
|
+
* Every jurisdiction this adapter emits, checked against a caller's `--country`.
|
|
50
|
+
*/
|
|
51
|
+
export const LANDREGISTRY_IM_COUNTRIES = ["IM"];
|
|
52
|
+
function present(value) {
|
|
53
|
+
const trimmed = value?.replaceAll(/\s+/gu, " ").trim() ?? "";
|
|
54
|
+
return trimmed || null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* A value that describes a piece of land rather than naming a property: it opens with the kind
|
|
58
|
+
* of land (`Land`, `Plot Of Land`, `Field Number 111277`, `Part Of The Estate`, `25.2 Acres Of Land`)
|
|
59
|
+
* or places it against another property (`Abutting`, `Adjacent To`, `Rear Of`, `Known As`).
|
|
60
|
+
*/
|
|
61
|
+
const LAND_DESCRIPTION = /^(?:(?:a|the)\s+)?(?:lands?|plots?|parcels?|fields?|part|strip|portion|[\d.]+\s+acres?)\b|\b(?:abutting|adjacent|adjoining|adjoins|rear\s+off?|part\s+of|known\s+as|formerly|situate|being\s+part|close\s+to|near|nr)\b/iu;
|
|
62
|
+
/**
|
|
63
|
+
* In a flat or house name, a land word anywhere marks a description
|
|
64
|
+
* (`Riverside Cottage And Land`, `Two Fields At`, `Agricultural Land`),
|
|
65
|
+
* where in a street or locality it may be part of the name.
|
|
66
|
+
*/
|
|
67
|
+
const LAND_WORD = /\b(?:lands?|fields?|plots?|acres?)\b/iu;
|
|
68
|
+
/**
|
|
69
|
+
* A value that describes a structure or a share sold apart from any dwelling,
|
|
70
|
+
* which has no postal address of its own.
|
|
71
|
+
*/
|
|
72
|
+
const NOT_A_PREMISE = /^(?:(?:a|the)\s+)?(?:garages?|lock[- ]?ups?|stores?|car\s+park(?:ing)?|forecourt|roadway|access\s+roads?|lane)\b|\b(?:site|substation|reservoir|parking|driveway|pumping\s+station|private\s+(?:roadway|road|drive|lane|access)|(?:common|shared|landscaped)\s+areas?|share\s+(?:in|of))\b/iu;
|
|
73
|
+
/**
|
|
74
|
+
* A house name that joins two properties (`Gorse Cottage And Willow Cottage`, `"Hawarden" And "Far End"`)
|
|
75
|
+
* records a sale of several premises at once.
|
|
76
|
+
*/
|
|
77
|
+
const SEVERAL_PROPERTIES = /\band\b|&/iu;
|
|
78
|
+
/**
|
|
79
|
+
* A house name that opens with a door number (`15 Godred Court`) holds a number
|
|
80
|
+
* and a secondary street rather than a property name.
|
|
81
|
+
*/
|
|
82
|
+
const LEADING_NUMBER = /^\d/u;
|
|
83
|
+
/**
|
|
84
|
+
* The flat designators `SubUnit_Name` holds that a single dwelling is written with.
|
|
85
|
+
*/
|
|
86
|
+
const UNIT_DESIGNATOR = /^(?:(?:flat|apartment|apt\.?|unit|penthouse|suite|studio|maisonette)\s*[A-Z]?\d+[A-Z]?|(?:garden|basement|ground\s+floor|first\s+floor|top\s+floor|upper|lower)\s+(?:flat|apartment))$/iu;
|
|
87
|
+
/**
|
|
88
|
+
* A door number, with an optional letter, or a range of two.
|
|
89
|
+
*/
|
|
90
|
+
const HOUSE_NUMBER = /^\d+[A-Z]?(?:\s*-\s*\d+[A-Z]?)?$/iu;
|
|
91
|
+
/**
|
|
92
|
+
* A second-line value that is a thoroughfare (`Main Road`, `Off Clifton Drive`) rather than a place.
|
|
93
|
+
*/
|
|
94
|
+
const THOROUGHFARE = /^off\b|\b(?:road|street|lane|avenue|drive|promenade|terrace|crescent|quay|way|close|parade|square)$/iu;
|
|
95
|
+
/**
|
|
96
|
+
* Maps one record onto the components the corpus asserts, or returns null when the row is refused.
|
|
97
|
+
*
|
|
98
|
+
* Each refusal and each dropped component increments its reason in `dropped`.
|
|
99
|
+
*/
|
|
100
|
+
export function componentsForIsleOfManLandTransactionRecord(record, dropped) {
|
|
101
|
+
const tally = dropped ?? {};
|
|
102
|
+
const subunit = present(record.SubUnit_Name);
|
|
103
|
+
const name = present(record.House_Name);
|
|
104
|
+
const street = present(record.Street_Name);
|
|
105
|
+
const dependent = present(record.Locality);
|
|
106
|
+
if ([subunit, name, street, dependent].some((value) => value && LAND_DESCRIPTION.test(value)) ||
|
|
107
|
+
[subunit, name].some((value) => value && LAND_WORD.test(value))) {
|
|
108
|
+
countDropped(tally, "row:land-parcel-description");
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
if ([subunit, name].some((value) => value && NOT_A_PREMISE.test(value))) {
|
|
112
|
+
countDropped(tally, "row:not-a-premise");
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
if (name && SEVERAL_PROPERTIES.test(name)) {
|
|
116
|
+
countDropped(tally, "row:several-properties");
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
if (!street) {
|
|
120
|
+
countDropped(tally, "row:no-street");
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
const components = { street };
|
|
124
|
+
const number = present(record.House_Number);
|
|
125
|
+
if (number && HOUSE_NUMBER.test(number)) {
|
|
126
|
+
components.house_number = number.replaceAll(/\s*-\s*/gu, "-");
|
|
127
|
+
}
|
|
128
|
+
else if (number) {
|
|
129
|
+
// `9/11`, `3 & 5` and `Unit 4` name several doors or a unit rather than one door number.
|
|
130
|
+
countDropped(tally, "component:house_number:not-one-number");
|
|
131
|
+
}
|
|
132
|
+
if (subunit && UNIT_DESIGNATOR.test(subunit)) {
|
|
133
|
+
components.unit = subunit;
|
|
134
|
+
}
|
|
135
|
+
else if (subunit) {
|
|
136
|
+
// `Apartment 4 and Garage 4` and a bare `7` do not name one dwelling the layout can print.
|
|
137
|
+
countDropped(tally, "component:unit:not-a-unit-designator");
|
|
138
|
+
}
|
|
139
|
+
if (name && UNIT_DESIGNATOR.test(name)) {
|
|
140
|
+
// A flat recorded in the house-name column (`Apartment 9`) is the unit when the unit column is empty.
|
|
141
|
+
if (components.unit) {
|
|
142
|
+
countDropped(tally, "component:venue:unit-designator");
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
components.unit = name;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else if (name && LEADING_NUMBER.test(name)) {
|
|
149
|
+
countDropped(tally, "component:venue:holds-a-number");
|
|
150
|
+
}
|
|
151
|
+
else if (name && /\p{L}{3}/u.test(name)) {
|
|
152
|
+
components.venue = name;
|
|
153
|
+
}
|
|
154
|
+
else if (name) {
|
|
155
|
+
countDropped(tally, "component:venue:code");
|
|
156
|
+
}
|
|
157
|
+
if (!components.house_number && !components.venue) {
|
|
158
|
+
countDropped(tally, "row:no-house-number-or-name");
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
const town = present(record.Town);
|
|
162
|
+
if (town) {
|
|
163
|
+
components.locality = town;
|
|
164
|
+
}
|
|
165
|
+
if (dependent && THOROUGHFARE.test(dependent)) {
|
|
166
|
+
countDropped(tally, "component:dependent_locality:thoroughfare");
|
|
167
|
+
}
|
|
168
|
+
else if (dependent && dependent.toLowerCase() === town?.toLowerCase()) {
|
|
169
|
+
countDropped(tally, "component:dependent_locality:repeats-locality");
|
|
170
|
+
}
|
|
171
|
+
else if (dependent) {
|
|
172
|
+
components.dependent_locality = dependent;
|
|
173
|
+
}
|
|
174
|
+
const postcode = present(record.Postcode)?.toUpperCase();
|
|
175
|
+
const matched = postcode ? matchCountryPostcode(postcode, "IM") : null;
|
|
176
|
+
if (matched) {
|
|
177
|
+
components.postcode = matched;
|
|
178
|
+
}
|
|
179
|
+
else if (postcode) {
|
|
180
|
+
countDropped(tally, "component:postcode:not-country-format");
|
|
181
|
+
}
|
|
182
|
+
if (!components.locality && !components.postcode) {
|
|
183
|
+
countDropped(tally, "row:no-locality-or-postcode");
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
return components;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* The case-folded key two sales of one property share.
|
|
190
|
+
*/
|
|
191
|
+
function addressKey(components) {
|
|
192
|
+
return Object.keys(components)
|
|
193
|
+
.toSorted()
|
|
194
|
+
.map((tag) => `${tag}=${components[tag]?.toLowerCase() ?? ""}`)
|
|
195
|
+
.join("\u001F");
|
|
196
|
+
}
|
|
197
|
+
export function createIsleOfManLandRegistryAdapter() {
|
|
198
|
+
return {
|
|
199
|
+
id: LANDREGISTRY_IM_ADAPTER_ID,
|
|
200
|
+
defaultLicense: LANDREGISTRY_IM_LICENSE,
|
|
201
|
+
addressRole: AddressRole.Premise,
|
|
202
|
+
register: SourceRegister.IsleOfManLandTransactions,
|
|
203
|
+
surface: SurfaceOrigin.Rendered,
|
|
204
|
+
description: "Isle of Man Land Registry land transactions (gov.im): the addresses of registered property sales.",
|
|
205
|
+
async *rows(opts) {
|
|
206
|
+
if (opts.country && !LANDREGISTRY_IM_COUNTRIES.includes(opts.country)) {
|
|
207
|
+
throw new UnsupportedCountryError(LANDREGISTRY_IM_ADAPTER_ID, LANDREGISTRY_IM_COUNTRIES, opts.country);
|
|
208
|
+
}
|
|
209
|
+
// The file is 4 MB, so it is decoded whole.
|
|
210
|
+
// The BOM would otherwise prefix the first header.
|
|
211
|
+
const text = (await readLocalBuffer(resolvePath(opts.inputPath))).toString("utf8").replace(/^/u, "");
|
|
212
|
+
const records = CSVSpliterator.from(Buffer.from(text, "utf8"), {
|
|
213
|
+
normalizeKeys: false,
|
|
214
|
+
});
|
|
215
|
+
const seen = new Set();
|
|
216
|
+
let emitted = 0;
|
|
217
|
+
for (const record of records) {
|
|
218
|
+
if (opts.signal?.aborted)
|
|
219
|
+
return;
|
|
220
|
+
if (opts.limit !== undefined && emitted >= opts.limit)
|
|
221
|
+
return;
|
|
222
|
+
const components = componentsForIsleOfManLandTransactionRecord(record, opts);
|
|
223
|
+
if (!components)
|
|
224
|
+
continue;
|
|
225
|
+
const key = addressKey(components);
|
|
226
|
+
if (seen.has(key)) {
|
|
227
|
+
countDropped(opts, "row:repeat-sale");
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
seen.add(key);
|
|
231
|
+
const rendered = formatAddressRow(components, "IM", { singleLine: true });
|
|
232
|
+
if (!rendered) {
|
|
233
|
+
countDropped(opts, "row:render-failed");
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
for (const tag of rendered.unplaced) {
|
|
237
|
+
countDropped(opts, `component:${tag}:not-rendered`);
|
|
238
|
+
}
|
|
239
|
+
const { raw, components: aligned } = rendered;
|
|
240
|
+
yield {
|
|
241
|
+
raw,
|
|
242
|
+
components: aligned,
|
|
243
|
+
country: "IM",
|
|
244
|
+
locale: "en-IM",
|
|
245
|
+
source: LANDREGISTRY_IM_ADAPTER_ID,
|
|
246
|
+
// The file carries no record id or coordinates, and the dedupe above leaves
|
|
247
|
+
// one row per distinct address, so the components identify the row.
|
|
248
|
+
source_id: stableSourceIDFromParts(LANDREGISTRY_IM_ADAPTER_ID, aligned),
|
|
249
|
+
corpus_version: "",
|
|
250
|
+
license: LANDREGISTRY_IM_LICENSE,
|
|
251
|
+
};
|
|
252
|
+
emitted++;
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* The configured adapter instance registered with the corpus builder.
|
|
259
|
+
*/
|
|
260
|
+
export const isleOfManLandRegistryAdapter = createIsleOfManLandRegistryAdapter();
|
|
261
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../lib/im/adapters/land-registry/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,12 +11,26 @@ import type { CorpusRecipe } from "#recipes/scaffold";
|
|
|
11
11
|
import { SourceRegister } from "#registers";
|
|
12
12
|
import { type LocaleBaseTuple, type RenderedLocaleRow } from "#surfaces/locale";
|
|
13
13
|
/**
|
|
14
|
-
* One source file:
|
|
14
|
+
* One source file: a CSV member of a ZIP (`zip` and `csv`), an extracted CSV (`path`),
|
|
15
|
+
* or an adapter's canonical rows (`canonicalRows`).
|
|
15
16
|
*/
|
|
16
17
|
export interface LocalePart {
|
|
17
18
|
zip?: PathBuilderLike;
|
|
18
19
|
csv?: string;
|
|
19
20
|
path?: PathBuilderLike;
|
|
21
|
+
/**
|
|
22
|
+
* An adapter's `canonical.jsonl`, read in place of a CSV.
|
|
23
|
+
*
|
|
24
|
+
* Each row's `components` supplies the house number, street, locality and postcode.
|
|
25
|
+
* Every row must carry {@linkcode LocalePart.canonicalSource} as its `source`.
|
|
26
|
+
*/
|
|
27
|
+
canonicalRows?: PathBuilderLike;
|
|
28
|
+
/**
|
|
29
|
+
* The `source` every row of {@linkcode LocalePart.canonicalRows} must carry.
|
|
30
|
+
*
|
|
31
|
+
* A row from any other source throws, so a file another adapter wrote is never read as this one.
|
|
32
|
+
*/
|
|
33
|
+
canonicalSource?: string;
|
|
20
34
|
region?: string;
|
|
21
35
|
/**
|
|
22
36
|
* Maps the district column to locality and the city column to dependent locality.
|
|
@@ -34,9 +48,9 @@ export interface LocalePart {
|
|
|
34
48
|
/**
|
|
35
49
|
* Opens a reader that answers the row's region from its postcode, replacing the region column.
|
|
36
50
|
*
|
|
37
|
-
* A GB part answers the constituent country this way
|
|
51
|
+
* A GB part answers the county or the constituent country this way.
|
|
38
52
|
*/
|
|
39
|
-
regionOfPostcode?: () => (postcode: string) => string | null
|
|
53
|
+
regionOfPostcode?: () => Promise<(postcode: string) => string | null>;
|
|
40
54
|
}
|
|
41
55
|
/**
|
|
42
56
|
* The source files and row metadata for one country.
|
|
@@ -52,6 +66,12 @@ export interface LocaleCountrySource {
|
|
|
52
66
|
* The corpus version written to each row.
|
|
53
67
|
*/
|
|
54
68
|
corpusVersion: string;
|
|
69
|
+
/**
|
|
70
|
+
* The dataset and terms the row's `license` names, before the rendering order.
|
|
71
|
+
*
|
|
72
|
+
* @defaultValue `OpenAddresses <CC> tuples`
|
|
73
|
+
*/
|
|
74
|
+
license?: string;
|
|
55
75
|
/**
|
|
56
76
|
* Replacement parts used when `--district-as-locality` is passed as true.
|
|
57
77
|
*/
|
|
@@ -68,7 +88,7 @@ export declare function cleanCityNoise(city: string): string | null;
|
|
|
68
88
|
* Streams tuples from one part and reservoir-samples them with Algorithm R,
|
|
69
89
|
* using `rng` for reproducibility.
|
|
70
90
|
*
|
|
71
|
-
*
|
|
91
|
+
* @throws When the part cannot be read, naming the file.
|
|
72
92
|
*/
|
|
73
93
|
export declare function readTuples(part: LocalePart, rng: () => number): Promise<LocaleBaseTuple[]>;
|
|
74
94
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../../lib/international/recipes/locale.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../../lib/international/recipes/locale.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAO9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAmB,MAAM,kBAAkB,CAAA;AAIhG;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,GAAG,CAAC,EAAE,eAAe,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,eAAe,CAAA;IAC/B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,CAAA;CACrE;AAyBD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAA;IACxB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,YAAY,CAAC,EAAE,UAAU,EAAE,CAAA;CAC3B;AAgID;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM1D;AAuGD;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAiJhG;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,MAAM,GAClB,IAAI,CAcN;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,GAAG,UAAU,CAEtG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,mBAAmB,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,GAAG,UAAU,EAAE,CAE7G;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,YA6K1B,CAAA"}
|
|
@@ -8,20 +8,42 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { COUNTRY_SURFACE_FORMS } from "@mailwoman/codex/country";
|
|
10
10
|
import { dataRootPath } from "@mailwoman/core/data-root";
|
|
11
|
+
import { pathExists } from "@mailwoman/core/fs/readers/stat";
|
|
11
12
|
import { openReadStream } from "@mailwoman/core/fs/streams";
|
|
12
13
|
import { readZipEntry } from "@mailwoman/core/fs/zip";
|
|
13
14
|
import { stringifyJSON } from "@mailwoman/core/json";
|
|
14
15
|
import { isPresent } from "@mailwoman/core/objects";
|
|
15
16
|
import { sample } from "@mailwoman/core/random";
|
|
16
17
|
import { mulberry32 as makeMulberry32 } from "@mailwoman/core/utils";
|
|
17
|
-
import { CSVSpliterator } from "spliterator";
|
|
18
|
+
import { CSVSpliterator, JSONSpliterator } from "spliterator";
|
|
18
19
|
import { stableSourceID } from "#adapters/source-id";
|
|
20
|
+
import { GB_OS_OPEN_ADAPTER_ID, gbOSOpenCanonicalRowsPath } from "#gb/adapters/os-open/adapter";
|
|
19
21
|
import { openConstituentCountryReader } from "#gb/constituent-country";
|
|
22
|
+
import { readCountyOfPostcode } from "#gb/county";
|
|
20
23
|
import { defaultRecipeSource } from "#recipes/sources";
|
|
21
24
|
import { SourceRegister } from "#registers";
|
|
22
25
|
import { renderLocaleRow } from "#surfaces/locale";
|
|
23
26
|
import { SurfaceOrigin } from "#types";
|
|
24
27
|
import { alignRow } from "#utils";
|
|
28
|
+
/**
|
|
29
|
+
* The share of GB postcodes whose rows label the county `region`, out of five.
|
|
30
|
+
*
|
|
31
|
+
* The other postcodes' rows label the constituent country, which Who's On First
|
|
32
|
+
* records as a `macroregion` under the United Kingdom.
|
|
33
|
+
*/
|
|
34
|
+
const GB_COUNTY_REGION_FIFTHS = 4;
|
|
35
|
+
/**
|
|
36
|
+
* Whether a GB postcode's rows label the county rather than the constituent country.
|
|
37
|
+
*
|
|
38
|
+
* The choice is a function of the postcode alone, so a rebuild makes the same choice for every row.
|
|
39
|
+
*/
|
|
40
|
+
function gbPostcodeTakesCounty(postcode) {
|
|
41
|
+
let sum = 0;
|
|
42
|
+
for (const char of postcode) {
|
|
43
|
+
sum += char.codePointAt(0);
|
|
44
|
+
}
|
|
45
|
+
return sum % 5 < GB_COUNTY_REGION_FIFTHS;
|
|
46
|
+
}
|
|
25
47
|
/**
|
|
26
48
|
* The source files and metadata for each supported country.
|
|
27
49
|
*/
|
|
@@ -107,18 +129,24 @@ const COUNTRY_SOURCES = {
|
|
|
107
129
|
parts: [{ path: dataRootPath("openaddresses", "extracted", "nz", "countrywide.csv"), districtAsLocality: true }],
|
|
108
130
|
},
|
|
109
131
|
GB: {
|
|
110
|
-
//
|
|
111
|
-
|
|
112
|
-
|
|
132
|
+
// The `gb-os-open` adapter's rows: Code-Point Open postcodes joined to OS Open Roads and OS Open Names.
|
|
133
|
+
// `rendered-gb` read HM Land Registry Price Paid Data, whose address fields
|
|
134
|
+
// Royal Mail and Ordnance Survey license for non-commercial use only (#2635),
|
|
135
|
+
// so GB rows carry a source name of their own.
|
|
136
|
+
source: defaultRecipeSource("synth-gb-os-open"),
|
|
137
|
+
register: SourceRegister.OrdnanceSurveyOpenData,
|
|
113
138
|
corpusVersion: "0.9.9",
|
|
114
|
-
|
|
139
|
+
license: "OS OpenData GB tuples (OGL-UK-3.0)",
|
|
140
|
+
// The adapter's rows carry no region.
|
|
141
|
+
// The county comes from OS Open Names and the constituent country from NSUL, both by postcode.
|
|
115
142
|
parts: [
|
|
116
143
|
{
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
regionOfPostcode: () => {
|
|
144
|
+
canonicalRows: gbOSOpenCanonicalRowsPath(),
|
|
145
|
+
canonicalSource: GB_OS_OPEN_ADAPTER_ID,
|
|
146
|
+
regionOfPostcode: async () => {
|
|
120
147
|
const countryOf = openConstituentCountryReader();
|
|
121
|
-
|
|
148
|
+
const countyOf = await readCountyOfPostcode();
|
|
149
|
+
return (postcode) => (gbPostcodeTakesCounty(postcode) && countyOf.get(postcode)) || countryOf(postcode).name;
|
|
122
150
|
},
|
|
123
151
|
},
|
|
124
152
|
],
|
|
@@ -149,13 +177,73 @@ export function cleanCityNoise(city) {
|
|
|
149
177
|
const stripped = city.replace(/\s*\(\p{L}{1,3}\)\s*$/u, "").trim();
|
|
150
178
|
return stripped || null;
|
|
151
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Reservoir-samples an adapter's canonical rows with Algorithm R, using `rng` for reproducibility.
|
|
182
|
+
*
|
|
183
|
+
* A row without a street or locality is skipped.
|
|
184
|
+
* A missing file throws rather than reading as an empty part.
|
|
185
|
+
*
|
|
186
|
+
* @throws When a row's `source` differs from `part.canonicalSource`.
|
|
187
|
+
*/
|
|
188
|
+
async function readCanonicalTuples(part, rows, rng) {
|
|
189
|
+
if (!(await pathExists(rows))) {
|
|
190
|
+
throw new Error(`${rows.toString()} is absent. Write it with \`mailwoman corpus run ${part.canonicalSource ?? "<adapter>"}\`.`);
|
|
191
|
+
}
|
|
192
|
+
const reservoir = [];
|
|
193
|
+
const regionOf = await part.regionOfPostcode?.();
|
|
194
|
+
let seen = 0;
|
|
195
|
+
let regionUnknown = 0;
|
|
196
|
+
for await (const row of JSONSpliterator.fromAsync(rows)) {
|
|
197
|
+
if (part.canonicalSource && row.source !== part.canonicalSource) {
|
|
198
|
+
throw new Error(`${rows.toString()} holds a row from source ${stringifyJSON(row.source)}; this part reads ${part.canonicalSource} rows only.`);
|
|
199
|
+
}
|
|
200
|
+
const components = row.components ?? {};
|
|
201
|
+
const text = (value) => (typeof value === "string" ? value.trim() : "");
|
|
202
|
+
const street = text(components.street);
|
|
203
|
+
const locality = text(components.locality);
|
|
204
|
+
if (!street || !locality)
|
|
205
|
+
continue;
|
|
206
|
+
const postcode = text(components.postcode);
|
|
207
|
+
let region = part.region ?? "";
|
|
208
|
+
if (regionOf) {
|
|
209
|
+
region = (postcode && regionOf(postcode)) || "";
|
|
210
|
+
if (!region) {
|
|
211
|
+
regionUnknown++;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
const tuple = {
|
|
215
|
+
house_number: text(components.house_number),
|
|
216
|
+
street,
|
|
217
|
+
locality,
|
|
218
|
+
region,
|
|
219
|
+
postcode,
|
|
220
|
+
};
|
|
221
|
+
seen++;
|
|
222
|
+
if (reservoir.length < RESERVOIR_CAP) {
|
|
223
|
+
reservoir.push(tuple);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
const j = Math.floor(rng() * seen);
|
|
227
|
+
if (j < RESERVOIR_CAP) {
|
|
228
|
+
reservoir[j] = tuple;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
console.error(` ${rows.toString()}: ${reservoir.length} sampled of ${seen} rows`);
|
|
233
|
+
if (regionOf) {
|
|
234
|
+
console.error(` ${rows.toString()}: ${regionUnknown} rows have no region for their postcode`);
|
|
235
|
+
}
|
|
236
|
+
return reservoir;
|
|
237
|
+
}
|
|
152
238
|
/**
|
|
153
239
|
* Streams tuples from one part and reservoir-samples them with Algorithm R,
|
|
154
240
|
* using `rng` for reproducibility.
|
|
155
241
|
*
|
|
156
|
-
*
|
|
242
|
+
* @throws When the part cannot be read, naming the file.
|
|
157
243
|
*/
|
|
158
244
|
export async function readTuples(part, rng) {
|
|
245
|
+
if (part.canonicalRows)
|
|
246
|
+
return readCanonicalTuples(part, part.canonicalRows, rng);
|
|
159
247
|
// The stream stays as bytes because CSVSpliterator decodes UTF-8 itself.
|
|
160
248
|
const input = part.path
|
|
161
249
|
? openReadStream(part.path)
|
|
@@ -166,7 +254,7 @@ export async function readTuples(part, rng) {
|
|
|
166
254
|
let header = null;
|
|
167
255
|
let seen = 0;
|
|
168
256
|
let dropped = 0;
|
|
169
|
-
const regionOf = part.regionOfPostcode?.();
|
|
257
|
+
const regionOf = await part.regionOfPostcode?.();
|
|
170
258
|
let regionUnknown = 0;
|
|
171
259
|
try {
|
|
172
260
|
// The first row holds the column names.
|
|
@@ -266,8 +354,12 @@ export async function readTuples(part, rng) {
|
|
|
266
354
|
}
|
|
267
355
|
}
|
|
268
356
|
catch (error) {
|
|
269
|
-
|
|
270
|
-
|
|
357
|
+
// An unreadable part throws rather than reading as an empty one.
|
|
358
|
+
// The sub-venue recipe's DE leg once emitted zero rows behind a warning
|
|
359
|
+
// when `europe.zip` left the data root.
|
|
360
|
+
throw new Error(`${(part.path ?? part.zip)?.toString()} could not be read: ${error.message}`, {
|
|
361
|
+
cause: error,
|
|
362
|
+
});
|
|
271
363
|
}
|
|
272
364
|
console.error(` ${part.path ?? part.csv}: ${reservoir.length} sampled of ${seen} rows (${dropped} city-noise drops)`);
|
|
273
365
|
if (regionOf) {
|
|
@@ -312,7 +404,7 @@ export function resolveLocaleParts(countrySource, override) {
|
|
|
312
404
|
*/
|
|
313
405
|
export const localeRecipe = {
|
|
314
406
|
name: "locale",
|
|
315
|
-
description: "Per-locale coverage rows (DE/FR/NL/IT/ES/NZ/GB) from real OA tuples, both orders → renderLocaleRow",
|
|
407
|
+
description: "Per-locale coverage rows (DE/FR/NL/IT/ES/NZ/GB) from real OA tuples (OS OpenData for GB), both orders → renderLocaleRow",
|
|
316
408
|
mode: "generate",
|
|
317
409
|
options: [
|
|
318
410
|
{ flag: "--country <cc>", description: "Target country (DE|FR|NL|IT|ES|NZ|GB). Default DE" },
|
|
@@ -420,7 +512,7 @@ export const localeRecipe = {
|
|
|
420
512
|
source,
|
|
421
513
|
source_id: sourceID,
|
|
422
514
|
corpus_version: countrySource.corpusVersion,
|
|
423
|
-
license: `OpenAddresses ${country} tuples, rendered ${order}-order — see ingest SOURCES`,
|
|
515
|
+
license: `${countrySource.license ?? `OpenAddresses ${country} tuples`}, rendered ${order}-order — see ingest SOURCES`,
|
|
424
516
|
};
|
|
425
517
|
const aligned = alignRow(canonical);
|
|
426
518
|
if (aligned.kind !== "labeled" || !aligned.row) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../../lib/international/recipes/locale.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../../lib/international/recipes/locale.ts"],"names":[],"mappings":"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"}
|