@mailwoman/corpus 9.3.0 → 9.4.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 (165) hide show
  1. package/lib/recipes/anchor-absorption.ts +2 -2
  2. package/lib/recipes/bare-country.ts +2 -2
  3. package/lib/recipes/boundary-stress.ts +3 -1
  4. package/lib/recipes/country-balanced.ts +2 -1
  5. package/lib/recipes/cz-pcfirst-preposition.ts +2 -1
  6. package/lib/recipes/fr-admin-split.ts +2 -1
  7. package/lib/recipes/fr-bare-street.ts +2 -1
  8. package/lib/recipes/fr-fragment.ts +2 -1
  9. package/lib/recipes/fr-lieudit.ts +2 -2
  10. package/lib/recipes/fr-order.ts +2 -1
  11. package/lib/recipes/german.ts +2 -1
  12. package/lib/recipes/house-venue.ts +2 -1
  13. package/lib/recipes/intersection.ts +2 -1
  14. package/lib/recipes/locale.ts +2 -1
  15. package/lib/recipes/nl-postcode.ts +3 -1
  16. package/lib/recipes/no-fragment.ts +2 -8
  17. package/lib/recipes/no-street-led.ts +2 -8
  18. package/lib/recipes/no-street.ts +2 -1
  19. package/lib/recipes/po-box-cedex.ts +1 -1
  20. package/lib/recipes/po-box.ts +2 -1
  21. package/lib/recipes/scaffold.ts +0 -1
  22. package/lib/recipes/si-bare-village.ts +3 -1
  23. package/lib/recipes/street-affix.ts +3 -2
  24. package/lib/recipes/street-bare.ts +3 -1
  25. package/lib/recipes/street.ts +3 -1
  26. package/lib/recipes/sub-venue-sources.ts +2 -1
  27. package/lib/recipes/sub-venue.ts +2 -1
  28. package/lib/recipes/trailing-region.ts +3 -8
  29. package/lib/recipes/unit.ts +2 -2
  30. package/lib/tools/fetch/acra-sg.ts +174 -0
  31. package/lib/tools/fetch/download.ts +217 -2
  32. package/lib/tools/fetch/gcis-tw.ts +175 -0
  33. package/lib/tools/fetch/houjin-jp.ts +135 -0
  34. package/lib/tools/fetch/index.ts +27 -0
  35. package/lib/tools/fetch/juso-kr.ts +165 -0
  36. package/lib/tools/fetch/localdata-kr.ts +194 -0
  37. package/lib/tools/golden-relabel-street.ts +6 -3
  38. package/out/recipes/anchor-absorption.d.ts.map +1 -1
  39. package/out/recipes/anchor-absorption.js +2 -1
  40. package/out/recipes/anchor-absorption.js.map +1 -1
  41. package/out/recipes/bare-country.d.ts.map +1 -1
  42. package/out/recipes/bare-country.js +2 -1
  43. package/out/recipes/bare-country.js.map +1 -1
  44. package/out/recipes/boundary-stress.d.ts.map +1 -1
  45. package/out/recipes/boundary-stress.js +2 -1
  46. package/out/recipes/boundary-stress.js.map +1 -1
  47. package/out/recipes/country-balanced.d.ts.map +1 -1
  48. package/out/recipes/country-balanced.js +2 -1
  49. package/out/recipes/country-balanced.js.map +1 -1
  50. package/out/recipes/cz-pcfirst-preposition.d.ts.map +1 -1
  51. package/out/recipes/cz-pcfirst-preposition.js +2 -1
  52. package/out/recipes/cz-pcfirst-preposition.js.map +1 -1
  53. package/out/recipes/fr-admin-split.d.ts +1 -1
  54. package/out/recipes/fr-admin-split.d.ts.map +1 -1
  55. package/out/recipes/fr-admin-split.js +1 -1
  56. package/out/recipes/fr-admin-split.js.map +1 -1
  57. package/out/recipes/fr-bare-street.d.ts.map +1 -1
  58. package/out/recipes/fr-bare-street.js +2 -1
  59. package/out/recipes/fr-bare-street.js.map +1 -1
  60. package/out/recipes/fr-fragment.d.ts.map +1 -1
  61. package/out/recipes/fr-fragment.js +2 -1
  62. package/out/recipes/fr-fragment.js.map +1 -1
  63. package/out/recipes/fr-lieudit.d.ts +1 -1
  64. package/out/recipes/fr-lieudit.d.ts.map +1 -1
  65. package/out/recipes/fr-lieudit.js +1 -1
  66. package/out/recipes/fr-lieudit.js.map +1 -1
  67. package/out/recipes/fr-order.d.ts.map +1 -1
  68. package/out/recipes/fr-order.js +2 -1
  69. package/out/recipes/fr-order.js.map +1 -1
  70. package/out/recipes/german.d.ts.map +1 -1
  71. package/out/recipes/german.js +2 -1
  72. package/out/recipes/german.js.map +1 -1
  73. package/out/recipes/house-venue.d.ts.map +1 -1
  74. package/out/recipes/house-venue.js +2 -1
  75. package/out/recipes/house-venue.js.map +1 -1
  76. package/out/recipes/intersection.d.ts.map +1 -1
  77. package/out/recipes/intersection.js +2 -1
  78. package/out/recipes/intersection.js.map +1 -1
  79. package/out/recipes/locale.d.ts +1 -1
  80. package/out/recipes/locale.d.ts.map +1 -1
  81. package/out/recipes/locale.js +1 -1
  82. package/out/recipes/locale.js.map +1 -1
  83. package/out/recipes/nl-postcode.d.ts.map +1 -1
  84. package/out/recipes/nl-postcode.js +2 -1
  85. package/out/recipes/nl-postcode.js.map +1 -1
  86. package/out/recipes/no-fragment.d.ts.map +1 -1
  87. package/out/recipes/no-fragment.js +2 -1
  88. package/out/recipes/no-fragment.js.map +1 -1
  89. package/out/recipes/no-street-led.d.ts.map +1 -1
  90. package/out/recipes/no-street-led.js +2 -1
  91. package/out/recipes/no-street-led.js.map +1 -1
  92. package/out/recipes/no-street.d.ts.map +1 -1
  93. package/out/recipes/no-street.js +2 -1
  94. package/out/recipes/no-street.js.map +1 -1
  95. package/out/recipes/po-box-cedex.d.ts.map +1 -1
  96. package/out/recipes/po-box-cedex.js +2 -1
  97. package/out/recipes/po-box-cedex.js.map +1 -1
  98. package/out/recipes/po-box.d.ts.map +1 -1
  99. package/out/recipes/po-box.js +2 -1
  100. package/out/recipes/po-box.js.map +1 -1
  101. package/out/recipes/scaffold.d.ts +0 -1
  102. package/out/recipes/scaffold.d.ts.map +1 -1
  103. package/out/recipes/scaffold.js +0 -12
  104. package/out/recipes/scaffold.js.map +1 -1
  105. package/out/recipes/si-bare-village.d.ts.map +1 -1
  106. package/out/recipes/si-bare-village.js +2 -1
  107. package/out/recipes/si-bare-village.js.map +1 -1
  108. package/out/recipes/street-affix.d.ts.map +1 -1
  109. package/out/recipes/street-affix.js +3 -3
  110. package/out/recipes/street-affix.js.map +1 -1
  111. package/out/recipes/street-bare.d.ts.map +1 -1
  112. package/out/recipes/street-bare.js +2 -1
  113. package/out/recipes/street-bare.js.map +1 -1
  114. package/out/recipes/street.d.ts.map +1 -1
  115. package/out/recipes/street.js +2 -1
  116. package/out/recipes/street.js.map +1 -1
  117. package/out/recipes/sub-venue-sources.d.ts.map +1 -1
  118. package/out/recipes/sub-venue-sources.js +2 -1
  119. package/out/recipes/sub-venue-sources.js.map +1 -1
  120. package/out/recipes/sub-venue.d.ts.map +1 -1
  121. package/out/recipes/sub-venue.js +2 -1
  122. package/out/recipes/sub-venue.js.map +1 -1
  123. package/out/recipes/trailing-region.d.ts.map +1 -1
  124. package/out/recipes/trailing-region.js +2 -1
  125. package/out/recipes/trailing-region.js.map +1 -1
  126. package/out/recipes/unit.d.ts.map +1 -1
  127. package/out/recipes/unit.js +2 -1
  128. package/out/recipes/unit.js.map +1 -1
  129. package/out/tools/fetch/acra-sg.d.ts +23 -0
  130. package/out/tools/fetch/acra-sg.d.ts.map +1 -0
  131. package/out/tools/fetch/acra-sg.js +126 -0
  132. package/out/tools/fetch/acra-sg.js.map +1 -0
  133. package/out/tools/fetch/download.d.ts +65 -0
  134. package/out/tools/fetch/download.d.ts.map +1 -1
  135. package/out/tools/fetch/download.js +160 -2
  136. package/out/tools/fetch/download.js.map +1 -1
  137. package/out/tools/fetch/gcis-tw.d.ts +23 -0
  138. package/out/tools/fetch/gcis-tw.d.ts.map +1 -0
  139. package/out/tools/fetch/gcis-tw.js +135 -0
  140. package/out/tools/fetch/gcis-tw.js.map +1 -0
  141. package/out/tools/fetch/houjin-jp.d.ts +24 -0
  142. package/out/tools/fetch/houjin-jp.d.ts.map +1 -0
  143. package/out/tools/fetch/houjin-jp.js +102 -0
  144. package/out/tools/fetch/houjin-jp.js.map +1 -0
  145. package/out/tools/fetch/index.d.ts +27 -0
  146. package/out/tools/fetch/index.d.ts.map +1 -1
  147. package/out/tools/fetch/index.js +27 -0
  148. package/out/tools/fetch/index.js.map +1 -1
  149. package/out/tools/fetch/juso-kr.d.ts +30 -0
  150. package/out/tools/fetch/juso-kr.d.ts.map +1 -0
  151. package/out/tools/fetch/juso-kr.js +120 -0
  152. package/out/tools/fetch/juso-kr.js.map +1 -0
  153. package/out/tools/fetch/localdata-kr.d.ts +30 -0
  154. package/out/tools/fetch/localdata-kr.d.ts.map +1 -0
  155. package/out/tools/fetch/localdata-kr.js +139 -0
  156. package/out/tools/fetch/localdata-kr.js.map +1 -0
  157. package/out/tools/golden-relabel-street.d.ts.map +1 -1
  158. package/out/tools/golden-relabel-street.js +1 -2
  159. package/out/tools/golden-relabel-street.js.map +1 -1
  160. package/package.json +10 -10
  161. package/lib/name-prone-us-suffixes.ts +0 -12
  162. package/out/name-prone-us-suffixes.d.ts +0 -12
  163. package/out/name-prone-us-suffixes.d.ts.map +0 -1
  164. package/out/name-prone-us-suffixes.js +0 -12
  165. package/out/name-prone-us-suffixes.js.map +0 -1
@@ -0,0 +1,165 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * Fetch the Korean road-name address register (도로명주소 주소DB) from the ministry's address-industry
7
+ * portal, business.juso.go.kr. This is the LABEL source for Korean addresses: about 6,000,000
8
+ * road-name addresses and 8,000,000 lot-number (지번) records, split by the publisher into four
9
+ * pipe-delimited CP949 text files per region (도로명코드 / 주소 / 지번 / 부가정보), with the postcode in
10
+ * the supplementary file. No coordinates. The public-data portal labels it "이용허락범위 제한 없음"
11
+ * (no restriction on the scope of use), and it is a direct download with no application step — the
12
+ * distinction that matters against the ministry's entrance-coordinate products, which are provided
13
+ * only after a purpose-of-use review (`docs/superpowers/plans/counsel-dossier.md` §4).
14
+ *
15
+ * The portal is a single-page app; the file behind it is reached in two calls. `selectAttrbDBDwldList`
16
+ * lists the monthly full files for one product (`rtlDtaDtlSn` 8 is the 주소DB, 2 the English
17
+ * road-name DB), and `/api/jst/download` streams one by the parameters the listing carried. The
18
+ * English DB rides along because it is the Latin-script half of the same register.
19
+ *
20
+ * Invoke via `mailwoman corpus fetch juso-kr --out-root <path>`.
21
+ */
22
+
23
+ import { makeDirectories } from "@mailwoman/core/fs/writers"
24
+ import { sha256File } from "@mailwoman/core/hash"
25
+ import { join } from "path-ts"
26
+
27
+ import type { BaseFetchOptions, FetchSummary, SourceCollectionManifest, SourceManifest } from "#tools/fetch/download"
28
+ import { resumableDownload, writeManifest } from "#tools/fetch/download"
29
+
30
+ const SLUG = "juso-kr"
31
+ const PORTAL = "https://business.juso.go.kr"
32
+ const LIST_URL = `${PORTAL}/api/jst/selectAttrbDBDwldList`
33
+ const DOWNLOAD_URL = `${PORTAL}/api/jst/download`
34
+ const REFERER = `${PORTAL}/jst/jstAddressDownload?menu=30`
35
+
36
+ /**
37
+ * The portal's product ids for the two registers this module fetches.
38
+ */
39
+ const PRODUCTS = [
40
+ { sn: "8", name: "주소DB" },
41
+ { sn: "2", name: "도로명주소 영문" },
42
+ ] as const
43
+
44
+ const LICENSE =
45
+ "이용허락범위 제한 없음 (data.go.kr label for 행정안전부_도로명주소 주소DB); 공공누리 attribution to 행정안전부"
46
+ const ATTRIBUTION = "행정안전부 (Ministry of the Interior and Safety), 도로명주소 (juso.go.kr)"
47
+
48
+ interface ListedFile {
49
+ crtrYm: string
50
+ fileTypeNm: string
51
+ fileNm: string
52
+ isExist: "Y" | "N"
53
+ ctpvClsfCd: string
54
+ tmprFileNm: string
55
+ fileSn: string | null
56
+ atflNo: string | null
57
+ }
58
+
59
+ interface ListResponse {
60
+ results?: { allMonthFileList?: ListedFile[] }
61
+ }
62
+
63
+ export interface FetchJusoKROptions extends BaseFetchOptions {
64
+ /**
65
+ * The month to fetch as `YYYYMM`. Defaults to the latest month the portal lists as present.
66
+ */
67
+ month?: string
68
+ }
69
+
70
+ const BROWSER_HEADERS = {
71
+ "user-agent": "Mozilla/5.0 (X11; Linux x86_64) mailwoman-corpus-fetch",
72
+ referer: REFERER,
73
+ }
74
+
75
+ /**
76
+ * The monthly full files the portal lists for one product over the twelve months ending at `year`/`month`.
77
+ */
78
+ async function listMonthlyFiles(sn: string, year: number, month: number): Promise<ListedFile[]> {
79
+ const res = await fetch(LIST_URL, {
80
+ method: "POST",
81
+ headers: { ...BROWSER_HEADERS, accept: "application/json", "content-type": "application/json;charset=UTF-8" },
82
+ body: JSON.stringify({ rtlDtaDtlSn: sn, year, month, expand: "Y" }),
83
+ })
84
+
85
+ if (!res.ok) throw new Error(`juso-kr: listing product ${sn} answered HTTP ${res.status}`)
86
+ const json = (await res.json()) as ListResponse
87
+
88
+ return (json.results?.allMonthFileList ?? []).filter((file) => file.isExist === "Y")
89
+ }
90
+
91
+ function downloadURL(file: ListedFile, regYmd: string): string {
92
+ const query = new URLSearchParams({
93
+ reqType: file.fileTypeNm,
94
+ ctprvnCd: file.ctpvClsfCd,
95
+ stdde: file.crtrYm,
96
+ fileName: file.fileNm,
97
+ realFileName: file.tmprFileNm,
98
+ intFileNo: file.fileSn ?? "0",
99
+ intNum: file.atflNo ?? "0",
100
+ regYmd,
101
+ })
102
+
103
+ return `${DOWNLOAD_URL}?${query.toString()}`
104
+ }
105
+
106
+ export async function fetchJusoKR(options: FetchJusoKROptions, report?: (line: string) => void): Promise<FetchSummary> {
107
+ const destDir = join(options.outRoot, SLUG)
108
+ await makeDirectories(destDir)
109
+
110
+ const now = new Date()
111
+ const files: SourceManifest[] = []
112
+ const failedCodes: string[] = []
113
+
114
+ for (const product of PRODUCTS) {
115
+ const listed = await listMonthlyFiles(product.sn, now.getFullYear(), now.getMonth() + 1)
116
+ const file = options.month ? listed.find((entry) => entry.crtrYm === options.month) : listed.at(-1)
117
+
118
+ if (!file) {
119
+ report?.(` ✗ ${product.name}: no full file listed${options.month ? ` for ${options.month}` : ""}`)
120
+ failedCodes.push(product.name)
121
+
122
+ continue
123
+ }
124
+
125
+ const url = downloadURL(file, String(now.getFullYear()))
126
+ const dest = join(destDir, file.tmprFileNm)
127
+ report?.(`=== ${SLUG} / ${product.name} ${file.crtrYm} → ${file.tmprFileNm}`)
128
+ let bytes: number
129
+
130
+ try {
131
+ // The portal drops a connection every few megabytes and answers Range with 206, so the transfer resumes
132
+ // from what landed rather than starting the 181 MB over.
133
+ bytes = await resumableDownload({ url, dest, headers: BROWSER_HEADERS, report })
134
+ } catch (error) {
135
+ report?.(` ✗ ${(error as Error).message}`)
136
+ failedCodes.push(product.name)
137
+
138
+ continue
139
+ }
140
+
141
+ const sha = await sha256File(dest)
142
+
143
+ files.push({
144
+ source_url: url,
145
+ downloaded_at: new Date().toISOString(),
146
+ filename: file.tmprFileNm,
147
+ sha256: sha,
148
+ bytes,
149
+ })
150
+ report?.(` ✓ ${(bytes / 1024 / 1024).toFixed(1)} MB sha256=${sha}`)
151
+ }
152
+
153
+ const manifest: SourceCollectionManifest = {
154
+ source: SLUG,
155
+ source_url: REFERER,
156
+ license: LICENSE,
157
+ attribution: ATTRIBUTION,
158
+ downloaded_at: new Date().toISOString(),
159
+ files,
160
+ }
161
+
162
+ await writeManifest(join(destDir, "MANIFEST.json"), manifest)
163
+
164
+ return { fetched: files.length, skipped: 0, failed: failedCodes.length, failedCodes }
165
+ }
@@ -0,0 +1,194 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * Fetch Korea's local-government permit registry (지방행정인허가데이터): one CSV per permit category,
7
+ * every business a local authority has licensed, about 195 categories. Each row carries BOTH address
8
+ * forms of the same premises — `소재지전체주소` (the lot-number form, 지번) and `도로명전체주소` (the
9
+ * road-name form) — plus both postcodes and a planar coordinate (`좌표정보(x/y)`, EPSG:5174). That
10
+ * pairing is the cheapest dual-format signal Korean addresses offer, and the coordinate is the
11
+ * board's coordinate half, which is why this is the NOISY source for Korean and not a side dish.
12
+ *
13
+ * The public-data portal labels the category files "이용허락범위 제한 없음" and links them to
14
+ * `file.localdata.go.kr`, which serves them behind a session: the category page sets the XSRF cookie,
15
+ * `/file/validate/download-count` is the portal's own rate check (429 when it wants a pause), and
16
+ * `/file/download/<slug>/info` streams the CSV. The files are CP949 as delivered; the adapter
17
+ * decodes. The restaurant category alone is about 700 MB.
18
+ *
19
+ * Invoke via `mailwoman corpus fetch localdata-kr --out-root <path>`, optionally with
20
+ * `--categories general_restaurants,rest_cafes`.
21
+ */
22
+
23
+ import { BYTES_PER_KIB } from "@mailwoman/core/fs/formatters"
24
+ import { pathExists } from "@mailwoman/core/fs/readers"
25
+ import { makeDirectories } from "@mailwoman/core/fs/writers"
26
+ import { sha256File } from "@mailwoman/core/hash"
27
+ import { sleep } from "@mailwoman/core/utils/sleep"
28
+ import { join } from "path-ts"
29
+
30
+ import type { BaseFetchOptions, FetchSummary, SourceCollectionManifest, SourceManifest } from "#tools/fetch/download"
31
+ import { cookieHeader, loadCollectionFiles, streamBodyToFile, withRetries, writeManifest } from "#tools/fetch/download"
32
+
33
+ const SLUG = "localdata-kr"
34
+ const PORTAL = "https://file.localdata.go.kr"
35
+ const INDEX_URL = `${PORTAL}/file/general_restaurants/info`
36
+ const LICENSE = "이용허락범위 제한 없음 (data.go.kr label on each category file, e.g. 행정안전부_식품_일반음식점)"
37
+ const ATTRIBUTION = "행정안전부 (Ministry of the Interior and Safety), 지방행정인허가데이터"
38
+ const HTTP_TOO_MANY_REQUESTS = 429
39
+ const RATE_PAUSE_MS = 30_000
40
+
41
+ export interface FetchLocaldataKROptions extends BaseFetchOptions {
42
+ /**
43
+ * Category slugs to fetch (the path segment of `/file/<slug>/info`). Defaults to every category the portal lists.
44
+ */
45
+ categories?: string[]
46
+ }
47
+
48
+ interface Category {
49
+ slug: string
50
+ name: string
51
+ }
52
+
53
+ interface Session {
54
+ cookie: string
55
+ xsrf: string | undefined
56
+ categories: Category[]
57
+ }
58
+
59
+ const USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) mailwoman-corpus-fetch"
60
+
61
+ /**
62
+ * Open a session on the portal: the category page answers the XSRF cookie and the navigation that names every category.
63
+ */
64
+ async function openSession(): Promise<Session> {
65
+ const res = await fetch(INDEX_URL, {
66
+ headers: { "user-agent": USER_AGENT, accept: "text/html", referer: "https://www.data.go.kr/" },
67
+ })
68
+
69
+ if (!res.ok) throw new Error(`localdata-kr: the category page answered HTTP ${res.status}`)
70
+ const html = await res.text()
71
+ const cookie = cookieHeader(res)
72
+ const xsrf = /XSRF-TOKEN=([^;]+)/.exec(cookie)?.[1]
73
+ const categories: Category[] = []
74
+ const seen = new Set<string>()
75
+
76
+ for (const [, slug, name] of html.matchAll(/href="\/file\/([a-z0-9_]+)\/info"[^>]*>\s*<span>([^<]+)<\/span>/g)) {
77
+ if (!slug || !name || seen.has(slug)) continue
78
+ seen.add(slug)
79
+ categories.push({ slug, name: name.trim() })
80
+ }
81
+
82
+ return { cookie, xsrf, categories }
83
+ }
84
+
85
+ /**
86
+ * The portal's own rate check; a 429 carries the pause it asks for in prose, so the caller sleeps and retries.
87
+ */
88
+ async function validateDownloadCount(session: Session): Promise<boolean> {
89
+ const headers: Record<string, string> = { "user-agent": USER_AGENT, cookie: session.cookie, referer: INDEX_URL }
90
+
91
+ if (session.xsrf) {
92
+ headers["X-XSRF-TOKEN"] = session.xsrf
93
+ }
94
+ const res = await fetch(`${PORTAL}/file/validate/download-count`, { headers })
95
+
96
+ return res.status !== HTTP_TOO_MANY_REQUESTS
97
+ }
98
+
99
+ export async function fetchLocaldataKR(
100
+ options: FetchLocaldataKROptions,
101
+ report?: (line: string) => void
102
+ ): Promise<FetchSummary> {
103
+ const destDir = join(options.outRoot, SLUG)
104
+ await makeDirectories(destDir)
105
+ const manifestPath = join(destDir, "MANIFEST.json")
106
+
107
+ const session = await openSession()
108
+
109
+ const wanted = options.categories?.length
110
+ ? session.categories.filter((category) => options.categories!.includes(category.slug))
111
+ : session.categories
112
+
113
+ report?.(`=== ${SLUG}: ${wanted.length} of ${session.categories.length} categories`)
114
+
115
+ // A previous run's entries survive, keyed by file name, so a re-run after an interruption fetches only what is missing.
116
+ const previous = await loadCollectionFiles(manifestPath)
117
+ const files = new Map<string, SourceManifest>()
118
+ let fetched = 0
119
+ let skipped = 0
120
+ const failedCodes: string[] = []
121
+
122
+ for (const category of wanted) {
123
+ const filename = `${category.slug}.csv`
124
+ const dest = join(destDir, filename)
125
+ const url = `${PORTAL}/file/download/${category.slug}/info`
126
+ const before = previous.get(filename)
127
+
128
+ if (before && (await pathExists(dest))) {
129
+ files.set(filename, before)
130
+
131
+ skipped++
132
+
133
+ continue
134
+ }
135
+
136
+ report?.(`--- ${category.name} (${category.slug})`)
137
+
138
+ while (!(await validateDownloadCount(session))) {
139
+ report?.(` portal asks for a pause — sleeping ${RATE_PAUSE_MS / 1000}s`)
140
+ await sleep(RATE_PAUSE_MS)
141
+ }
142
+
143
+ let bytes: number
144
+
145
+ try {
146
+ bytes = await withRetries(
147
+ async () => {
148
+ const res = await fetch(url, {
149
+ headers: { "user-agent": USER_AGENT, cookie: session.cookie, referer: INDEX_URL, accept: "*/*" },
150
+ signal: AbortSignal.timeout(1_800_000),
151
+ })
152
+
153
+ if (!res.ok || !(res.headers.get("content-type") ?? "").includes("text/csv")) {
154
+ throw new Error(`HTTP ${res.status} ${res.headers.get("content-type") ?? ""} for ${category.slug}`)
155
+ }
156
+
157
+ return streamBodyToFile(res, dest)
158
+ },
159
+ { report, label: category.slug }
160
+ )
161
+ } catch (error) {
162
+ report?.(` ✗ ${(error as Error).message}`)
163
+ failedCodes.push(category.slug)
164
+
165
+ continue
166
+ }
167
+
168
+ if (bytes < BYTES_PER_KIB) {
169
+ report?.(` ✗ ${bytes} bytes — an error page, not the register`)
170
+ failedCodes.push(category.slug)
171
+
172
+ continue
173
+ }
174
+
175
+ const sha = await sha256File(dest)
176
+ files.set(filename, { source_url: url, downloaded_at: new Date().toISOString(), filename, sha256: sha, bytes })
177
+
178
+ fetched++
179
+ report?.(` ✓ ${(bytes / 1024 / 1024).toFixed(1)} MB sha256=${sha}`)
180
+
181
+ const manifest: SourceCollectionManifest = {
182
+ source: SLUG,
183
+ source_url: INDEX_URL,
184
+ license: LICENSE,
185
+ attribution: ATTRIBUTION,
186
+ downloaded_at: new Date().toISOString(),
187
+ files: [...files.values()],
188
+ }
189
+
190
+ await writeManifest(manifestPath, manifest)
191
+ }
192
+
193
+ return { fetched, skipped, failed: failedCodes.length, failedCodes }
194
+ }
@@ -56,7 +56,12 @@
56
56
  * fails.
57
57
  */
58
58
 
59
- import { isStreetDirectionalToken, matchTrailingSuffix, type USStreetSuffix } from "@mailwoman/codex/us"
59
+ import {
60
+ isStreetDirectionalToken,
61
+ matchTrailingSuffix,
62
+ type USStreetSuffix,
63
+ NAME_PRONE_US_SUFFIXES,
64
+ } from "@mailwoman/codex/us"
60
65
  import { pathExists, readDirectoryEntries, readLocalBuffer, readLocalTextFile } from "@mailwoman/core/fs/readers"
61
66
  import { makeDirectories, writeLocalFile, writeLocalJSONFile, writeLocalTextFile } from "@mailwoman/core/fs/writers"
62
67
  import { sha256File } from "@mailwoman/core/hash"
@@ -66,8 +71,6 @@ import { escapeRegExp } from "@mailwoman/core/strings/regexp"
66
71
  import { basename, join } from "path-ts"
67
72
  import { TextSpliterator } from "spliterator"
68
73
 
69
- import { NAME_PRONE_US_SUFFIXES } from "#name-prone-us-suffixes"
70
-
71
74
  // ── Types ──────────────────────────────────────────────────────────────────
72
75
 
73
76
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"anchor-absorption.d.ts","sourceRoot":"","sources":["../../lib/recipes/anchor-absorption.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,EAA0B,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA0B7E;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,YAoDpC,CAAA"}
1
+ {"version":3,"file":"anchor-absorption.d.ts","sourceRoot":"","sources":["../../lib/recipes/anchor-absorption.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAyBpE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,YAoDpC,CAAA"}
@@ -13,7 +13,8 @@
13
13
  */
14
14
  import { dataRootPath } from "@mailwoman/core/data-root";
15
15
  import { readLocalJSONFile } from "@mailwoman/core/fs/readers";
16
- import { makeLcg, sliceSourceID } from "#recipes/scaffold";
16
+ import { makeLcg } from "@mailwoman/core/utils";
17
+ import { sliceSourceID } from "#recipes/scaffold";
17
18
  import { synthesizeAnchorAbsorptionRow } from "#synthesizers/anchor-absorption";
18
19
  import { alignRow } from "#utils";
19
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"anchor-absorption.js","sourceRoot":"","sources":["../../lib/recipes/anchor-absorption.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anchor-absorption.js","sourceRoot":"","sources":["../../lib/recipes/anchor-absorption.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bare-country.d.ts","sourceRoot":"","sources":["../../lib/recipes/bare-country.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,EAAiC,KAAK,YAAY,EAAiB,MAAM,mBAAmB,CAAA;AAgCnG;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,YAqC/B,CAAA"}
1
+ {"version":3,"file":"bare-country.d.ts","sourceRoot":"","sources":["../../lib/recipes/bare-country.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAAiB,KAAK,YAAY,EAAiB,MAAM,mBAAmB,CAAA;AA+BnF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,YAqC/B,CAAA"}
@@ -17,7 +17,8 @@
17
17
  * loader's job, as everywhere.
18
18
  */
19
19
  import { COUNTRY_SURFACE_FORMS, CountryNames, matchCountry } from "@mailwoman/codex/country";
20
- import { alignAndWrite, makeMulberry32, sliceSourceID } from "#recipes/scaffold";
20
+ import { mulberry32 as makeMulberry32 } from "@mailwoman/core/utils";
21
+ import { alignAndWrite, sliceSourceID } from "#recipes/scaffold";
21
22
  /**
22
23
  * Surfaces shorter than this are the code register (`JP`, `GER`), not a name — excluded (see the module doc).
23
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"bare-country.js","sourceRoot":"","sources":["../../lib/recipes/bare-country.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5F,OAAO,EAAE,aAAa,EAAE,cAAc,EAAqB,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEnG;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,CAAA;AAEzB;;;GAGG;AACH,QAAQ,CAAC,CAAC,mBAAmB;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAE9B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACnE,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,MAAM,GAAG,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,SAAQ;YACnE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACjB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QACxB,CAAC;IACF,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC7D,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAElC,IAAI,CAAC,OAAO;YAAE,SAAQ;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAA;IAC5C,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC9C,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,gGAAgG;IAC7G,IAAI,EAAE,UAAU;IAChB,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK;QACpB,uFAAuF;QACvF,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzB,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,OAAO,GAAG,CAAC,CAAA;QAEf,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,mBAAmB,EAAE,EAAE,CAAC;YACvD,IAAI,EAAE,CAAA;YAEN,MAAM,UAAU,GAA2B,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;YAC/D,MAAM,SAAS,GAAG,aAAa,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAEtG,MAAM,SAAS,GAAG;gBACjB,GAAG,EAAE,OAAO;gBACZ,UAAU;gBACV,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,oBAAoB;gBAC5B,SAAS;gBACT,cAAc,EAAE,QAAQ;gBACxB,OAAO,EAAE,4FAA4F;aACrG,CAAA;YAED,IAAI,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC;gBACrD,OAAO,EAAE,CAAA;YACV,CAAC;iBAAM,CAAC;gBACP,OAAO,EAAE,CAAA;YACV,CAAC;QACF,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;IAClC,CAAC;CACD,CAAA"}
1
+ {"version":3,"file":"bare-country.js","sourceRoot":"","sources":["../../lib/recipes/bare-country.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5F,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEpE,OAAO,EAAE,aAAa,EAAqB,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACnF;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,CAAA;AAEzB;;;GAGG;AACH,QAAQ,CAAC,CAAC,mBAAmB;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAE9B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACnE,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,MAAM,GAAG,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,SAAQ;YACnE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACjB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QACxB,CAAC;IACF,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC7D,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAElC,IAAI,CAAC,OAAO;YAAE,SAAQ;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAA;IAC5C,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC9C,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,gGAAgG;IAC7G,IAAI,EAAE,UAAU;IAChB,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK;QACpB,uFAAuF;QACvF,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzB,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,OAAO,GAAG,CAAC,CAAA;QAEf,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,mBAAmB,EAAE,EAAE,CAAC;YACvD,IAAI,EAAE,CAAA;YAEN,MAAM,UAAU,GAA2B,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;YAC/D,MAAM,SAAS,GAAG,aAAa,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAEtG,MAAM,SAAS,GAAG;gBACjB,GAAG,EAAE,OAAO;gBACZ,UAAU;gBACV,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,oBAAoB;gBAC5B,SAAS;gBACT,cAAc,EAAE,QAAQ;gBACxB,OAAO,EAAE,4FAA4F;aACrG,CAAA;YAED,IAAI,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC;gBACrD,OAAO,EAAE,CAAA;YACV,CAAC;iBAAM,CAAC;gBACP,OAAO,EAAE,CAAA;YACV,CAAC;QACF,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;IAClC,CAAC;CACD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"boundary-stress.d.ts","sourceRoot":"","sources":["../../lib/recipes/boundary-stress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAkB,KAAK,YAAY,EAAiB,MAAM,mBAAmB,CAAA;AAoCpF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,YA6ClC,CAAA"}
1
+ {"version":3,"file":"boundary-stress.d.ts","sourceRoot":"","sources":["../../lib/recipes/boundary-stress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,mBAAmB,CAAA;AAoCpE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,YA6ClC,CAAA"}
@@ -11,7 +11,8 @@
11
11
  *
12
12
  * `synthesizeBoundaryStressRow` is NOT re-exported from the corpus index — imported directly here.
13
13
  */
14
- import { makeMulberry32, sliceSourceID } from "#recipes/scaffold";
14
+ import { mulberry32 as makeMulberry32 } from "@mailwoman/core/utils";
15
+ import { sliceSourceID } from "#recipes/scaffold";
15
16
  import { synthesizeBoundaryStressRow } from "#synthesizers/boundary-stress";
16
17
  import { alignRow } from "#utils";
17
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"boundary-stress.js","sourceRoot":"","sources":["../../lib/recipes/boundary-stress.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"boundary-stress.js","sourceRoot":"","sources":["../../lib/recipes/boundary-stress.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"country-balanced.d.ts","sourceRoot":"","sources":["../../lib/recipes/country-balanced.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AASH,OAAO,EAAgC,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAmXnF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAoGnC,CAAA"}
1
+ {"version":3,"file":"country-balanced.d.ts","sourceRoot":"","sources":["../../lib/recipes/country-balanced.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAUH,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAmXnE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAoGnC,CAAA"}
@@ -26,8 +26,9 @@
26
26
  import { COUNTRY_SURFACE_FORMS, CountryNames } from "@mailwoman/codex/country";
27
27
  import { dataRootPath } from "@mailwoman/core/data-root";
28
28
  import { isPresent } from "@mailwoman/core/objects";
29
+ import { mulberry32 as makeMulberry32 } from "@mailwoman/core/utils";
29
30
  import { stableSourceID } from "#adapters/utils";
30
- import { makeMulberry32, readOATuples } from "#recipes/scaffold";
31
+ import { readOATuples } from "#recipes/scaffold";
31
32
  import { pick } from "#synthesizers/utils";
32
33
  import { alignRow } from "#utils";
33
34
  // v2: the country TOKEN is decoupled from the skeleton's locale and drawn from a BROAD pool — every
@@ -1 +1 @@
1
- {"version":3,"file":"country-balanced.js","sourceRoot":"","sources":["../../lib/recipes/country-balanced.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"country-balanced.js","sourceRoot":"","sources":["../../lib/recipes/country-balanced.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cz-pcfirst-preposition.d.ts","sourceRoot":"","sources":["../../lib/recipes/cz-pcfirst-preposition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAA6C,KAAK,YAAY,EAAiB,MAAM,mBAAmB,CAAA;AAS/G;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,YAiFxC,CAAA"}
1
+ {"version":3,"file":"cz-pcfirst-preposition.d.ts","sourceRoot":"","sources":["../../lib/recipes/cz-pcfirst-preposition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAA6B,KAAK,YAAY,EAAiB,MAAM,mBAAmB,CAAA;AAQ/F;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,YAiFxC,CAAA"}
@@ -13,7 +13,8 @@
13
13
  * model learns that a leading postcode before a multi-word name is a postcode. pc-first leads the
14
14
  * cycle (the lesson); canonical and city-first keep the polarity balanced (the v1.9.9 lesson).
15
15
  */
16
- import { alignAndWrite, makeMulberry32, readTuples, sliceSourceID } from "#recipes/scaffold";
16
+ import { mulberry32 as makeMulberry32 } from "@mailwoman/core/utils";
17
+ import { alignAndWrite, readTuples, sliceSourceID } from "#recipes/scaffold";
17
18
  /**
18
19
  * The order-cycle slot for the STREET-LESS form (`«city» «pc», Česko`) — the exact surface of the
19
20
  * `cz-full-praha-100-00` board row, whose absence from the street-bearing orders was the v4.5.0 no-promote's measured
@@ -1 +1 @@
1
- {"version":3,"file":"cz-pcfirst-preposition.js","sourceRoot":"","sources":["../../lib/recipes/cz-pcfirst-preposition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cz-pcfirst-preposition.js","sourceRoot":"","sources":["../../lib/recipes/cz-pcfirst-preposition.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@
29
29
  * anchor REINFORCES the FR split (FR postcode is trailing, unlike German PLZ-leading — the v0.9.2
30
30
  * scar is positional, not universal).
31
31
  */
32
- import { type CorpusRecipe } from "#recipes/scaffold";
32
+ import type { CorpusRecipe } from "#recipes/scaffold";
33
33
  /**
34
34
  * Slice recipe registered with the corpus builder — see the file header for the parse behaviour it exists to exercise,
35
35
  * and `description` below for the surface form it generates.
@@ -1 +1 @@
1
- {"version":3,"file":"fr-admin-split.d.ts","sourceRoot":"","sources":["../../lib/recipes/fr-admin-split.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAQH,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA8GrE;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,YAyFhC,CAAA"}
1
+ {"version":3,"file":"fr-admin-split.d.ts","sourceRoot":"","sources":["../../lib/recipes/fr-admin-split.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AASH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA8GrD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,YAyFhC,CAAA"}
@@ -31,9 +31,9 @@
31
31
  */
32
32
  import { departementForCodePostal } from "@mailwoman/codex/fr";
33
33
  import { tempRootPath } from "@mailwoman/core/data-root";
34
+ import { mulberry32 as makeMulberry32 } from "@mailwoman/core/utils";
34
35
  import { CSVSpliterator, Delimiters } from "spliterator";
35
36
  import { stableSourceID } from "#adapters/utils";
36
- import { makeMulberry32 } from "#recipes/scaffold";
37
37
  import { alignRow } from "#utils";
38
38
  const DEFAULT_COMMUNES = tempRootPath("reg", "fr-communes.tsv");
39
39
  const LICENSE = "BAN (Base Adresse Nationale) commune+postcode tuples, rendered admin-split — see ingest SOURCE";