@mailwoman/corpus 10.6.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.
Files changed (223) hide show
  1. package/data/PROVENANCE.md +24 -0
  2. package/data/address-source-register.json +18948 -8757
  3. package/data/corpus-source-inputs.json +4756 -0
  4. package/data/license-decisions.json +7260 -0
  5. package/data/licenses/whosonfirst-licenses.md +3 -2
  6. package/data/reviewed-ve-postcode-tuples.json +5 -72
  7. package/data/source-additions.json +2450 -0
  8. package/data/source-resolutions.json +87 -0
  9. package/data/training-manifests/v0.7.10-gb-county.effective.json +2335 -0
  10. package/data/training-manifests/v0.7.10-gb-county.json +1132 -0
  11. package/data/training-manifests/v0.7.2-address-systems.effective.json +3 -2
  12. package/data/training-manifests/v0.7.7-no-ppd.json +550 -0
  13. package/data/training-manifests/v0.7.8-rights-clean.json +538 -0
  14. package/data/training-manifests/v0.7.9-country-gap.json +1132 -0
  15. package/data/us-situs-sources.json +128 -0
  16. package/lib/adapters/cordis/adapter.ts +1 -1
  17. package/lib/adapters/libpostal-dictionary.ts +23 -3
  18. package/lib/adapters/osm/adapter.ts +42 -11
  19. package/lib/adapters.ts +14 -0
  20. package/lib/az/adapters/opendata/adapter.ts +389 -0
  21. package/lib/bs/adapters/gbpa/adapter.ts +248 -0
  22. package/lib/build/types.ts +16 -0
  23. package/lib/build.ts +21 -0
  24. package/lib/ee/adapters/ads/adapter.ts +18 -0
  25. package/lib/fo/adapters/adressur/adapter.ts +242 -0
  26. package/lib/gb/adapters/os-open/adapter.ts +12 -0
  27. package/lib/gb/county.ts +59 -0
  28. package/lib/gb/os-open/open/names.ts +41 -0
  29. package/lib/gu/adapters/bsp/adapter.ts +434 -0
  30. package/lib/im/adapters/land-registry/adapter.ts +340 -0
  31. package/lib/international/recipes/locale.ts +164 -19
  32. package/lib/li/adapters/llv/adapter.ts +246 -0
  33. package/lib/recipes/bare/postcode.ts +10 -34
  34. package/lib/recipes/country-balanced.ts +95 -78
  35. package/lib/recipes/intersection.ts +22 -30
  36. package/lib/recipes/po/box/cedex/recipe.ts +8 -5
  37. package/lib/recipes/po/box/cedex/sources.ts +2 -23
  38. package/lib/recipes/scaffold.ts +28 -3
  39. package/lib/recipes/sources.ts +112 -1
  40. package/lib/recipes/street/affix.ts +17 -29
  41. package/lib/recipes/sub/venue/context.ts +33 -9
  42. package/lib/recipes/sub/venue/sources.ts +54 -13
  43. package/lib/recipes/sub/venue.ts +68 -23
  44. package/lib/recipes/unit.ts +20 -7
  45. package/lib/registers.ts +33 -0
  46. package/lib/source-register/corpus-inputs.ts +528 -0
  47. package/lib/source-register/effective-manifest.ts +37 -5
  48. package/lib/source-register/types.ts +20 -0
  49. package/lib/south-asia/recipes/register.ts +1 -1
  50. package/lib/tools/overlay/manifest.ts +109 -1
  51. package/lib/tools/source-register/build.ts +47 -1
  52. package/lib/tools/variety-sample.ts +633 -0
  53. package/lib/us/adapters/usgov/nad/adapter.ts +39 -10
  54. package/lib/us/recipes/skeleton-sources.ts +156 -0
  55. package/lib/us/tools/nad-skeletons.ts +395 -0
  56. package/lib/uy/adapters/ide/adapter.ts +275 -0
  57. package/lib/ve/recipes/reviewed-postcode-tail.ts +29 -6
  58. package/out/adapters/cordis/adapter.d.ts +1 -1
  59. package/out/adapters/cordis/adapter.js +1 -1
  60. package/out/adapters/libpostal-dictionary.d.ts +9 -0
  61. package/out/adapters/libpostal-dictionary.d.ts.map +1 -1
  62. package/out/adapters/libpostal-dictionary.js +19 -3
  63. package/out/adapters/libpostal-dictionary.js.map +1 -1
  64. package/out/adapters/osm/adapter.d.ts +12 -1
  65. package/out/adapters/osm/adapter.d.ts.map +1 -1
  66. package/out/adapters/osm/adapter.js +30 -13
  67. package/out/adapters/osm/adapter.js.map +1 -1
  68. package/out/adapters.d.ts.map +1 -1
  69. package/out/adapters.js +14 -0
  70. package/out/adapters.js.map +1 -1
  71. package/out/az/adapters/opendata/adapter.d.ts +88 -0
  72. package/out/az/adapters/opendata/adapter.d.ts.map +1 -0
  73. package/out/az/adapters/opendata/adapter.js +282 -0
  74. package/out/az/adapters/opendata/adapter.js.map +1 -0
  75. package/out/bs/adapters/gbpa/adapter.d.ts +64 -0
  76. package/out/bs/adapters/gbpa/adapter.d.ts.map +1 -0
  77. package/out/bs/adapters/gbpa/adapter.js +187 -0
  78. package/out/bs/adapters/gbpa/adapter.js.map +1 -0
  79. package/out/build/types.d.ts +15 -0
  80. package/out/build/types.d.ts.map +1 -1
  81. package/out/build/types.js.map +1 -1
  82. package/out/build.d.ts.map +1 -1
  83. package/out/build.js +17 -0
  84. package/out/build.js.map +1 -1
  85. package/out/ee/adapters/ads/adapter.d.ts +6 -0
  86. package/out/ee/adapters/ads/adapter.d.ts.map +1 -1
  87. package/out/ee/adapters/ads/adapter.js +16 -0
  88. package/out/ee/adapters/ads/adapter.js.map +1 -1
  89. package/out/fo/adapters/adressur/adapter.d.ts +63 -0
  90. package/out/fo/adapters/adressur/adapter.d.ts.map +1 -0
  91. package/out/fo/adapters/adressur/adapter.js +177 -0
  92. package/out/fo/adapters/adressur/adapter.js.map +1 -0
  93. package/out/gb/adapters/os-open/adapter.d.ts +8 -0
  94. package/out/gb/adapters/os-open/adapter.d.ts.map +1 -1
  95. package/out/gb/adapters/os-open/adapter.js +11 -0
  96. package/out/gb/adapters/os-open/adapter.js.map +1 -1
  97. package/out/gb/county.d.ts +30 -0
  98. package/out/gb/county.d.ts.map +1 -0
  99. package/out/gb/county.js +51 -0
  100. package/out/gb/county.js.map +1 -0
  101. package/out/gb/os-open/open/names.d.ts +17 -0
  102. package/out/gb/os-open/open/names.d.ts.map +1 -1
  103. package/out/gb/os-open/open/names.js +19 -0
  104. package/out/gb/os-open/open/names.js.map +1 -1
  105. package/out/gu/adapters/bsp/adapter.d.ts +83 -0
  106. package/out/gu/adapters/bsp/adapter.d.ts.map +1 -0
  107. package/out/gu/adapters/bsp/adapter.js +346 -0
  108. package/out/gu/adapters/bsp/adapter.js.map +1 -0
  109. package/out/im/adapters/land-registry/adapter.d.ts +68 -0
  110. package/out/im/adapters/land-registry/adapter.d.ts.map +1 -0
  111. package/out/im/adapters/land-registry/adapter.js +261 -0
  112. package/out/im/adapters/land-registry/adapter.js.map +1 -0
  113. package/out/international/recipes/locale.d.ts +24 -4
  114. package/out/international/recipes/locale.d.ts.map +1 -1
  115. package/out/international/recipes/locale.js +107 -15
  116. package/out/international/recipes/locale.js.map +1 -1
  117. package/out/li/adapters/llv/adapter.d.ts +69 -0
  118. package/out/li/adapters/llv/adapter.d.ts.map +1 -0
  119. package/out/li/adapters/llv/adapter.js +181 -0
  120. package/out/li/adapters/llv/adapter.js.map +1 -0
  121. package/out/recipes/bare/postcode.d.ts.map +1 -1
  122. package/out/recipes/bare/postcode.js +9 -30
  123. package/out/recipes/bare/postcode.js.map +1 -1
  124. package/out/recipes/country-balanced.d.ts.map +1 -1
  125. package/out/recipes/country-balanced.js +82 -73
  126. package/out/recipes/country-balanced.js.map +1 -1
  127. package/out/recipes/intersection.d.ts +3 -2
  128. package/out/recipes/intersection.d.ts.map +1 -1
  129. package/out/recipes/intersection.js +20 -26
  130. package/out/recipes/intersection.js.map +1 -1
  131. package/out/recipes/po/box/cedex/recipe.d.ts.map +1 -1
  132. package/out/recipes/po/box/cedex/recipe.js +5 -4
  133. package/out/recipes/po/box/cedex/recipe.js.map +1 -1
  134. package/out/recipes/po/box/cedex/sources.d.ts +2 -45
  135. package/out/recipes/po/box/cedex/sources.d.ts.map +1 -1
  136. package/out/recipes/po/box/cedex/sources.js +0 -20
  137. package/out/recipes/po/box/cedex/sources.js.map +1 -1
  138. package/out/recipes/scaffold.d.ts +15 -2
  139. package/out/recipes/scaffold.d.ts.map +1 -1
  140. package/out/recipes/scaffold.js +21 -1
  141. package/out/recipes/scaffold.js.map +1 -1
  142. package/out/recipes/sources.d.ts.map +1 -1
  143. package/out/recipes/sources.js +112 -1
  144. package/out/recipes/sources.js.map +1 -1
  145. package/out/recipes/street/affix.d.ts.map +1 -1
  146. package/out/recipes/street/affix.js +8 -20
  147. package/out/recipes/street/affix.js.map +1 -1
  148. package/out/recipes/sub/venue/context.d.ts +14 -3
  149. package/out/recipes/sub/venue/context.d.ts.map +1 -1
  150. package/out/recipes/sub/venue/context.js +29 -9
  151. package/out/recipes/sub/venue/context.js.map +1 -1
  152. package/out/recipes/sub/venue/sources.d.ts +41 -8
  153. package/out/recipes/sub/venue/sources.d.ts.map +1 -1
  154. package/out/recipes/sub/venue/sources.js +26 -7
  155. package/out/recipes/sub/venue/sources.js.map +1 -1
  156. package/out/recipes/sub/venue.d.ts.map +1 -1
  157. package/out/recipes/sub/venue.js +35 -14
  158. package/out/recipes/sub/venue.js.map +1 -1
  159. package/out/recipes/unit.d.ts +4 -0
  160. package/out/recipes/unit.d.ts.map +1 -1
  161. package/out/recipes/unit.js +7 -6
  162. package/out/recipes/unit.js.map +1 -1
  163. package/out/registers.d.ts +33 -0
  164. package/out/registers.d.ts.map +1 -1
  165. package/out/registers.js +33 -0
  166. package/out/registers.js.map +1 -1
  167. package/out/source-register/corpus-inputs.d.ts +240 -0
  168. package/out/source-register/corpus-inputs.d.ts.map +1 -0
  169. package/out/source-register/corpus-inputs.js +275 -0
  170. package/out/source-register/corpus-inputs.js.map +1 -0
  171. package/out/source-register/effective-manifest.d.ts +2 -0
  172. package/out/source-register/effective-manifest.d.ts.map +1 -1
  173. package/out/source-register/effective-manifest.js +33 -4
  174. package/out/source-register/effective-manifest.js.map +1 -1
  175. package/out/source-register/types.d.ts +21 -1
  176. package/out/source-register/types.d.ts.map +1 -1
  177. package/out/source-register/types.js +20 -0
  178. package/out/source-register/types.js.map +1 -1
  179. package/out/south-asia/recipes/register.js +1 -1
  180. package/out/south-asia/recipes/register.js.map +1 -1
  181. package/out/tools/overlay/manifest.d.ts +7 -0
  182. package/out/tools/overlay/manifest.d.ts.map +1 -1
  183. package/out/tools/overlay/manifest.js +72 -1
  184. package/out/tools/overlay/manifest.js.map +1 -1
  185. package/out/tools/source-register/build.d.ts +9 -0
  186. package/out/tools/source-register/build.d.ts.map +1 -1
  187. package/out/tools/source-register/build.js +25 -3
  188. package/out/tools/source-register/build.js.map +1 -1
  189. package/out/tools/variety-sample.d.ts +196 -0
  190. package/out/tools/variety-sample.d.ts.map +1 -0
  191. package/out/tools/variety-sample.js +417 -0
  192. package/out/tools/variety-sample.js.map +1 -0
  193. package/out/us/adapters/usgov/nad/adapter.d.ts +80 -0
  194. package/out/us/adapters/usgov/nad/adapter.d.ts.map +1 -1
  195. package/out/us/adapters/usgov/nad/adapter.js +27 -8
  196. package/out/us/adapters/usgov/nad/adapter.js.map +1 -1
  197. package/out/us/recipes/skeleton-sources.d.ts +92 -0
  198. package/out/us/recipes/skeleton-sources.d.ts.map +1 -0
  199. package/out/us/recipes/skeleton-sources.js +121 -0
  200. package/out/us/recipes/skeleton-sources.js.map +1 -0
  201. package/out/us/tools/nad-skeletons.d.ts +120 -0
  202. package/out/us/tools/nad-skeletons.d.ts.map +1 -0
  203. package/out/us/tools/nad-skeletons.js +262 -0
  204. package/out/us/tools/nad-skeletons.js.map +1 -0
  205. package/out/uy/adapters/ide/adapter.d.ts +64 -0
  206. package/out/uy/adapters/ide/adapter.d.ts.map +1 -0
  207. package/out/uy/adapters/ide/adapter.js +206 -0
  208. package/out/uy/adapters/ide/adapter.js.map +1 -0
  209. package/out/ve/recipes/reviewed-postcode-tail.d.ts +6 -2
  210. package/out/ve/recipes/reviewed-postcode-tail.d.ts.map +1 -1
  211. package/out/ve/recipes/reviewed-postcode-tail.js +16 -5
  212. package/out/ve/recipes/reviewed-postcode-tail.js.map +1 -1
  213. package/package.json +14 -14
  214. package/lib/recipes/unit/sources.ts +0 -44
  215. package/lib/tools/fetch/ppd.ts +0 -121
  216. package/out/recipes/unit/sources.d.ts +0 -28
  217. package/out/recipes/unit/sources.d.ts.map +0 -1
  218. package/out/recipes/unit/sources.js +0 -30
  219. package/out/recipes/unit/sources.js.map +0 -1
  220. package/out/tools/fetch/ppd.d.ts +0 -15
  221. package/out/tools/fetch/ppd.d.ts.map +0 -1
  222. package/out/tools/fetch/ppd.js +0 -86
  223. package/out/tools/fetch/ppd.js.map +0 -1
@@ -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: either a CSV member of a ZIP (`zip` and `csv`) or an extracted CSV (`path`).
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, and its county column is not read.
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
- * A read failure logs a warning and returns an empty list.
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;AAUH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAK9C,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;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,GAAG,CAAC,EAAE,eAAe,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,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,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;CAC5D;AAED;;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;;OAEG;IACH,YAAY,CAAC,EAAE,UAAU,EAAE,CAAA;CAC3B;AA0HD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM1D;AAgBD;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA4IhG;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,YA4K1B,CAAA"}
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
- // Price Paid Data stores the postal town in `district` and an optional dependent locality in `city`.
111
- source: defaultRecipeSource("synth-gb"),
112
- register: SourceRegister.LandRegistryPricePaid,
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
- // The `REGION` column holds a county, so the constituent country is read from NSUL by postcode instead.
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
- path: dataRootPath("ppd", "2026-07-22", "gb-tuples.csv"),
118
- districtAsLocality: true,
119
- regionOfPostcode: () => {
144
+ canonicalRows: gbOSOpenCanonicalRowsPath(),
145
+ canonicalSource: GB_OS_OPEN_ADAPTER_ID,
146
+ regionOfPostcode: async () => {
120
147
  const countryOf = openConstituentCountryReader();
121
- return (postcode) => countryOf(postcode).name;
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
- * A read failure logs a warning and returns an empty list.
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
- console.error(` WARN: read failed for ${part.path ?? part.zip}: ${error.message}`);
270
- return [];
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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"}