@mailwoman/tiger 9.1.0 → 9.3.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 (119) hide show
  1. package/{block-group.ts → lib/block-group.ts} +4 -4
  2. package/{class-code.ts → lib/class-code.ts} +1 -1
  3. package/{constants.ts → lib/constants.ts} +5 -5
  4. package/{county-subdivision.ts → lib/county-subdivision.ts} +4 -4
  5. package/{county.ts → lib/county.ts} +4 -4
  6. package/{files.ts → lib/files.ts} +1 -1
  7. package/{geoid.ts → lib/geoid.ts} +3 -4
  8. package/lib/index.ts +18 -0
  9. package/{sdk → lib/sdk}/download.ts +6 -30
  10. package/{sdk → lib/sdk}/fetch.ts +38 -59
  11. package/lib/sdk/index.ts +10 -0
  12. package/{sdk → lib/sdk}/redistricting.ts +91 -20
  13. package/{sdk → lib/sdk}/schema.ts +36 -0
  14. package/{sdk → lib/sdk}/state/TIGERTabulatedBlockEntity.ts +2 -1
  15. package/{sdk → lib/sdk}/state/TIGERTractEntity.ts +1 -1
  16. package/{sdk → lib/sdk}/state/block-operations.ts +3 -2
  17. package/lib/sdk/state/index.ts +9 -0
  18. package/{state.ts → lib/state.ts} +2 -2
  19. package/{tabulation-block.ts → lib/tabulation-block.ts} +2 -2
  20. package/lib/tools/index.ts +11 -0
  21. package/{tools → lib/tools}/race-dots-map.ts +5 -4
  22. package/{tools → lib/tools}/race-dots.ts +8 -9
  23. package/{tools → lib/tools}/serve-range.ts +20 -12
  24. package/{tract.ts → lib/tract.ts} +2 -2
  25. package/out/block-group.d.ts +4 -4
  26. package/out/block-group.d.ts.map +1 -1
  27. package/out/block-group.js.map +1 -1
  28. package/out/class-code.d.ts +1 -1
  29. package/out/class-code.d.ts.map +1 -1
  30. package/out/class-code.js +1 -1
  31. package/out/class-code.js.map +1 -1
  32. package/out/constants.d.ts +5 -5
  33. package/out/constants.d.ts.map +1 -1
  34. package/out/constants.js.map +1 -1
  35. package/out/county-subdivision.d.ts +4 -4
  36. package/out/county-subdivision.d.ts.map +1 -1
  37. package/out/county-subdivision.js.map +1 -1
  38. package/out/county.d.ts +4 -4
  39. package/out/county.d.ts.map +1 -1
  40. package/out/county.js.map +1 -1
  41. package/out/files.d.ts +1 -1
  42. package/out/files.d.ts.map +1 -1
  43. package/out/files.js.map +1 -1
  44. package/out/functional-status.d.ts.map +1 -1
  45. package/out/functional-status.js.map +1 -1
  46. package/out/geoid.d.ts +1 -2
  47. package/out/geoid.d.ts.map +1 -1
  48. package/out/geoid.js.map +1 -1
  49. package/out/index.d.ts +12 -12
  50. package/out/index.d.ts.map +1 -1
  51. package/out/index.js +12 -12
  52. package/out/index.js.map +1 -1
  53. package/out/legal-statistical-area.d.ts.map +1 -1
  54. package/out/legal-statistical-area.js.map +1 -1
  55. package/out/sdk/download.d.ts +0 -7
  56. package/out/sdk/download.d.ts.map +1 -1
  57. package/out/sdk/download.js +6 -25
  58. package/out/sdk/download.js.map +1 -1
  59. package/out/sdk/fetch.d.ts.map +1 -1
  60. package/out/sdk/fetch.js +25 -41
  61. package/out/sdk/fetch.js.map +1 -1
  62. package/out/sdk/index.d.ts +4 -4
  63. package/out/sdk/index.d.ts.map +1 -1
  64. package/out/sdk/index.js +4 -4
  65. package/out/sdk/index.js.map +1 -1
  66. package/out/sdk/redistricting.d.ts +29 -0
  67. package/out/sdk/redistricting.d.ts.map +1 -1
  68. package/out/sdk/redistricting.js +71 -19
  69. package/out/sdk/redistricting.js.map +1 -1
  70. package/out/sdk/schema.d.ts +12 -9
  71. package/out/sdk/schema.d.ts.map +1 -1
  72. package/out/sdk/schema.js +19 -0
  73. package/out/sdk/schema.js.map +1 -1
  74. package/out/sdk/state/TIGERTabulatedBlockEntity.d.ts.map +1 -1
  75. package/out/sdk/state/TIGERTabulatedBlockEntity.js +1 -1
  76. package/out/sdk/state/TIGERTabulatedBlockEntity.js.map +1 -1
  77. package/out/sdk/state/TIGERTractEntity.d.ts +1 -1
  78. package/out/sdk/state/TIGERTractEntity.d.ts.map +1 -1
  79. package/out/sdk/state/TIGERTractEntity.js.map +1 -1
  80. package/out/sdk/state/block-operations.d.ts +1 -1
  81. package/out/sdk/state/block-operations.d.ts.map +1 -1
  82. package/out/sdk/state/block-operations.js +1 -1
  83. package/out/sdk/state/block-operations.js.map +1 -1
  84. package/out/sdk/state/index.d.ts +3 -3
  85. package/out/sdk/state/index.d.ts.map +1 -1
  86. package/out/sdk/state/index.js +3 -3
  87. package/out/sdk/state/index.js.map +1 -1
  88. package/out/state.d.ts +2 -2
  89. package/out/state.d.ts.map +1 -1
  90. package/out/state.js.map +1 -1
  91. package/out/tabulation-block.d.ts +2 -2
  92. package/out/tabulation-block.d.ts.map +1 -1
  93. package/out/tabulation-block.js.map +1 -1
  94. package/out/tools/index.d.ts +4 -8
  95. package/out/tools/index.d.ts.map +1 -1
  96. package/out/tools/index.js +4 -8
  97. package/out/tools/index.js.map +1 -1
  98. package/out/tools/race-dots-map.d.ts.map +1 -1
  99. package/out/tools/race-dots-map.js +5 -4
  100. package/out/tools/race-dots-map.js.map +1 -1
  101. package/out/tools/race-dots.d.ts.map +1 -1
  102. package/out/tools/race-dots.js +7 -8
  103. package/out/tools/race-dots.js.map +1 -1
  104. package/out/tools/serve-range.d.ts +2 -3
  105. package/out/tools/serve-range.d.ts.map +1 -1
  106. package/out/tools/serve-range.js +17 -10
  107. package/out/tools/serve-range.js.map +1 -1
  108. package/out/tract.d.ts +2 -2
  109. package/out/tract.d.ts.map +1 -1
  110. package/out/tract.js.map +1 -1
  111. package/out/tsconfig.test.tsbuildinfo +1 -0
  112. package/package.json +53 -10
  113. package/index.ts +0 -18
  114. package/out/tsconfig.tsbuildinfo +0 -1
  115. package/sdk/index.ts +0 -10
  116. package/sdk/state/index.ts +0 -9
  117. package/tools/index.ts +0 -15
  118. /package/{functional-status.ts → lib/functional-status.ts} +0 -0
  119. /package/{legal-statistical-area.ts → lib/legal-statistical-area.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"legal-statistical-area.js","sourceRoot":"","sources":["../legal-statistical-area.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"legal-statistical-area.js","sourceRoot":"","sources":["../lib/legal-statistical-area.ts"],"names":[],"mappings":"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"}
@@ -13,13 +13,6 @@
13
13
  * non-stream response type in memory. The primitive that fits a body this large is the one that
14
14
  * never holds it: a web stream piped to a write stream.
15
15
  */
16
- /**
17
- * Run a command and resolve its stdout, rejecting with the captured stderr on a non-zero exit.
18
- *
19
- * Used for the `unzip -tq` integrity probe below — a shelled-out check rather than a library one because the archives
20
- * are large and `unzip -t` streams them without materializing the contents.
21
- */
22
- export declare function runCapture(cmd: string, args: string[]): Promise<string>;
23
16
  /**
24
17
  * Download `url` to `dest` unless a VALID copy is already there. Returns `true` when the cache was reused, `false` when
25
18
  * a download happened.
@@ -1 +1 @@
1
- {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../sdk/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAavE;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBlF"}
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../lib/sdk/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBlF"}
@@ -13,29 +13,10 @@
13
13
  * non-stream response type in memory. The primitive that fits a body this large is the one that
14
14
  * never holds it: a web stream piped to a write stream.
15
15
  */
16
- import { spawn } from "node:child_process";
17
- import { createWriteStream, existsSync } from "node:fs";
18
- import { rename } from "node:fs/promises";
19
- import { Readable } from "node:stream";
20
- import { pipeline } from "node:stream/promises";
16
+ import { pathExists } from "@mailwoman/core/fs/readers";
17
+ import { openWriteStream, pipeline, Readable } from "@mailwoman/core/fs/streams";
18
+ import { movePath } from "@mailwoman/core/fs/writers";
21
19
  import { verifyZipIntegrity } from "@mailwoman/core/fs/zip";
22
- /**
23
- * Run a command and resolve its stdout, rejecting with the captured stderr on a non-zero exit.
24
- *
25
- * Used for the `unzip -tq` integrity probe below — a shelled-out check rather than a library one because the archives
26
- * are large and `unzip -t` streams them without materializing the contents.
27
- */
28
- export function runCapture(cmd, args) {
29
- return new Promise((resolve, reject) => {
30
- const child = spawn(cmd, args);
31
- let out = "";
32
- let err = "";
33
- child.stdout.on("data", (d) => (out += d));
34
- child.stderr.on("data", (d) => (err += d));
35
- child.on("error", reject);
36
- child.on("close", (code) => code === 0 ? resolve(out) : reject(new Error(`${cmd} exited ${code}: ${err.slice(0, 500)}`)));
37
- });
38
- }
39
20
  /**
40
21
  * Download `url` to `dest` unless a VALID copy is already there. Returns `true` when the cache was reused, `false` when
41
22
  * a download happened.
@@ -45,7 +26,7 @@ export function runCapture(cmd, args) {
45
26
  * renames, so `dest` is never a partial archive.
46
27
  */
47
28
  export async function downloadIfNeeded(url, dest) {
48
- if (existsSync(dest)) {
29
+ if (await pathExists(dest)) {
49
30
  try {
50
31
  await verifyZipIntegrity(dest);
51
32
  return true;
@@ -58,8 +39,8 @@ export async function downloadIfNeeded(url, dest) {
58
39
  const res = await fetch(url, { redirect: "follow" });
59
40
  if (!res.ok || !res.body)
60
41
  throw new Error(`HTTP ${res.status} fetching ${url}`);
61
- await pipeline(Readable.fromWeb(res.body), createWriteStream(tmp));
62
- await rename(tmp, dest);
42
+ await pipeline(Readable.fromWeb(res.body), openWriteStream(tmp));
43
+ await movePath(tmp, dest);
63
44
  return false;
64
45
  }
65
46
  //# sourceMappingURL=download.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","sourceRoot":"","sources":["../../sdk/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,IAAc;IACrD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC9B,IAAI,GAAG,GAAG,EAAE,CAAA;QACZ,IAAI,GAAG,GAAG,EAAE,CAAA;QACZ,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1C,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1C,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAEzB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAC1B,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,WAAW,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAC5F,CAAA;IACF,CAAC,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,IAAY;IAC/D,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC;YACJ,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAA;YAE9B,OAAO,IAAI,CAAA;QACZ,CAAC;QAAC,MAAM,CAAC;YACR,8BAA8B;QAC/B,CAAC;IACF,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,MAAM,CAAA;IACzB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;IAEpD,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,CAAA;IAC/E,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAA8C,CAAC,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAA;IAC5G,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEvB,OAAO,KAAK,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../lib/sdk/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,IAAY;IAC/D,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACJ,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAA;YAE9B,OAAO,IAAI,CAAA;QACZ,CAAC;QAAC,MAAM,CAAC;YACR,8BAA8B;QAC/B,CAAC;IACF,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,MAAM,CAAA;IACzB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;IAEpD,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,CAAA;IAC/E,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAA8C,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1G,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEzB,OAAO,KAAK,CAAA;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../sdk/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAuBH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,OAAO,GAAG,UAAU,CAAA;AAcjE,MAAM,WAAW,iBAAiB;IACjC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,eAAe,GACxB;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACpD;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CAChB;AAwFD;;GAEG;AACH,wBAAuB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,eAAe,EAAE,gBAAgB,CAAC,CA2I/G"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../lib/sdk/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAiBH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,OAAO,GAAG,UAAU,CAAA;AAcjE,MAAM,WAAW,iBAAiB;IACjC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,eAAe,GACxB;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACpD;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CAChB;AAyFD;;GAEG;AACH,wBAAuB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,eAAe,EAAE,gBAAgB,CAAC,CA2H/G"}
package/out/sdk/fetch.js CHANGED
@@ -23,20 +23,15 @@
23
23
  * GeoJSONSeq` (mapping shapefile columns to the schema, WGS84 for geometry levels) → batched
24
24
  * inserts. Re-running a state replaces its rows.
25
25
  */
26
- import { spawn } from "node:child_process";
27
- import { createWriteStream, existsSync } from "node:fs";
28
- import { mkdir, rename } from "node:fs/promises";
29
- import { dirname, join } from "node:path";
30
- import { DatabaseSync } from "node:sqlite";
31
- import { Readable } from "node:stream";
32
- import { pipeline } from "node:stream/promises";
26
+ import { APIClient, pluckResponseData } from "@mailwoman/core/api";
27
+ import { mailwomanDataRoot } from "@mailwoman/core/data-root";
28
+ import { makeDirectories } from "@mailwoman/core/fs/writers";
33
29
  import { extractZipEntries } from "@mailwoman/core/fs/zip";
34
- import { DatabaseClient } from "@mailwoman/core/kysley/client";
35
- import { tryParsingJSON } from "@mailwoman/core/objects";
36
- import { mailwomanDataRoot } from "@mailwoman/core/utils";
37
- import { TextSpliterator } from "spliterator";
38
- import { downloadIfNeeded } from "./download.js";
39
- import { initializeTIGERSchema, TIGER_PRAGMAS } from "./schema.js";
30
+ import { ogr2ogrGeoJSONSeq } from "@mailwoman/spatial/tools/ogr-stream";
31
+ import { DatabaseClient } from "@mailwoman/sqlite/client";
32
+ import { dirname, join } from "path-ts";
33
+ import { downloadIfNeeded } from "#sdk/download";
34
+ import { initializeTIGERSchema, TIGER_PRAGMAS } from "#sdk/schema";
40
35
  const CENSUS_HOST = "https://www2.census.gov";
41
36
  const DEFAULT_DATA_ROOT = mailwomanDataRoot();
42
37
  const LEVEL_DIR = {
@@ -113,10 +108,10 @@ function buildRow(level, p, geometry, state) {
113
108
  * Scrape the ADDRFEAT directory listing for a state's county FIPS codes.
114
109
  */
115
110
  async function discoverCounties(state, vintage) {
116
- const res = await fetch(`${CENSUS_HOST}/geo/tiger/TIGER${vintage}/ADDRFEAT/`, { redirect: "follow" });
117
- if (!res.ok)
118
- throw new Error(`HTTP ${res.status} listing ADDRFEAT for vintage ${vintage}`);
119
- const html = await res.text();
111
+ // The LISTING only — a small HTML index. The per-county archives below stay on raw `fetch`, streaming to disk.
112
+ const html = await new APIClient({ displayName: "tiger-listing", retry: true })
113
+ .fetch({ url: `${CENSUS_HOST}/geo/tiger/TIGER${vintage}/ADDRFEAT/`, responseType: "text" })
114
+ .then(pluckResponseData);
120
115
  const re = new RegExp(`tl_${vintage}_${state}(\\d{3})_addrfeat\\.zip`, "g");
121
116
  const counties = new Set();
122
117
  for (let m = re.exec(html); m; m = re.exec(html)) {
@@ -140,17 +135,21 @@ export async function* fetchTIGER(options) {
140
135
  // the per-table idempotent delete keeps a re-fetch (newer vintage) clean. The download CACHE stays
141
136
  // vintage-partitioned below so zips don't collide across vintages.
142
137
  const outPath = options.outPath ?? join(dataRoot, "tiger", "tiger.db");
143
- await mkdir(cacheDir, { recursive: true });
144
- await mkdir(dirname(outPath), { recursive: true });
138
+ await makeDirectories(cacheDir);
139
+ await makeDirectories(dirname(outPath));
145
140
  // Source units: one (per-state) for block/place; one per county for addrfeat.
146
141
  const geoCodes = level === "addrfeat" ? await discoverCounties(state, vintage) : [""];
147
142
  if (level === "addrfeat" && !geoCodes.length) {
148
143
  throw new Error(`No ADDRFEAT counties found for state ${state} vintage ${vintage}`);
149
144
  }
150
- const db = new DatabaseSync(outPath);
151
- db.exec(TIGER_PRAGMAS);
152
- const kdb = new DatabaseClient({ database: db });
145
+ const kdb = new DatabaseClient(outPath);
146
+ kdb.exec(TIGER_PRAGMAS);
153
147
  await initializeTIGERSchema(kdb);
148
+ /**
149
+ * `level` picks the table AND the row shape, but nothing ties them at the type level: {@link buildRow} returns the
150
+ * union and Kysely needs the arm's concrete row. The narrowings below are sound only because `buildRow` switches on
151
+ * the SAME `level` — keep the two switches in step, or a row shape reaches the wrong table.
152
+ */
154
153
  const insertBatch = async (rows) => {
155
154
  if (level === "tabblock20") {
156
155
  await kdb
@@ -203,7 +202,7 @@ export async function* fetchTIGER(options) {
203
202
  const layer = `tl_${vintage}_${unit}_${level}`;
204
203
  const shpPath = join(cacheDir, layer + ".shp");
205
204
  yield { phase: "extract", file: layer + ".shp" };
206
- const child = spawn("ogr2ogr", [
205
+ const args = [
207
206
  "-f",
208
207
  "GeoJSONSeq",
209
208
  "-t_srs",
@@ -212,20 +211,8 @@ export async function* fetchTIGER(options) {
212
211
  selectSQL(level, layer, options.county),
213
212
  "/vsistdout/",
214
213
  shpPath,
215
- ], { stdio: ["ignore", "pipe", "pipe"] });
216
- let stderr = "";
217
- child.stderr.on("data", (d) => (stderr += d));
218
- const exited = new Promise((resolve) => {
219
- child.on("close", (code) => resolve(code ?? 0));
220
- });
221
- // GeoJSONSeq is line-delimited; per-line `tryParsingJSON` so a malformed record is
222
- // tolerated (skipped), not thrown.
223
- for await (const line of TextSpliterator.fromAsync(child.stdout)) {
224
- if (!line)
225
- continue;
226
- const feat = tryParsingJSON(line);
227
- if (!feat)
228
- continue;
214
+ ];
215
+ for await (const feat of ogr2ogrGeoJSONSeq(args, layer)) {
229
216
  if (!feat.properties)
230
217
  continue;
231
218
  if (level === "tabblock20" && !feat.geometry)
@@ -237,12 +224,9 @@ export async function* fetchTIGER(options) {
237
224
  }
238
225
  }
239
226
  await flush();
240
- const code = await exited;
241
- if (code !== 0)
242
- throw new Error(`ogr2ogr exited ${code} on ${layer}: ${stderr.slice(0, 500)}`);
243
227
  yield { phase: "load", inserted, total: 0 };
244
228
  }
245
- db.exec("PRAGMA wal_checkpoint(TRUNCATE);");
229
+ kdb.exec("PRAGMA wal_checkpoint(TRUNCATE);");
246
230
  return { outPath, table, inserted };
247
231
  }
248
232
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../sdk/fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../lib/sdk/fetch.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,8 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  */
6
- export * from "./fetch.ts";
7
- export * from "./redistricting.ts";
8
- export * from "./schema.ts";
9
- export * from "./state/index.ts";
6
+ export * from "#sdk/fetch";
7
+ export * from "#sdk/redistricting";
8
+ export * from "#sdk/schema";
9
+ export * from "#sdk/state/index";
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../sdk/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/sdk/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA"}
package/out/sdk/index.js CHANGED
@@ -3,8 +3,8 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  */
6
- export * from "./fetch.js";
7
- export * from "./redistricting.js";
8
- export * from "./schema.js";
9
- export * from "./state/index.js";
6
+ export * from "#sdk/fetch";
7
+ export * from "#sdk/redistricting";
8
+ export * from "#sdk/schema";
9
+ export * from "#sdk/state/index";
10
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../sdk/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/sdk/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA"}
@@ -15,6 +15,35 @@
15
15
  *
16
16
  * https://www2.census.gov/programs-surveys/decennial/2020/data/01-Redistricting_File--PL_94-171/
17
17
  */
18
+ /**
19
+ * Segment 2: FILEID|STUSAB|CHARITER|CIFSN|LOGRECNO(4)| P3×71 | P4×73 | H1×3 — 152 fields, H1 at the tail. Verified
20
+ * against the real file: `ca000022020.pl`'s state row reads 14,392,140 / 13,475,623 / 916,517, the published CA 2020
21
+ * figures. `occupied + vacant === housing_units` is the invariant that distinguishes a correct offset from a plausible
22
+ * one, and {@link parseH1} refuses a row where it does not hold.
23
+ */
24
+ export declare const SEG2_FIELD_COUNT = 152;
25
+ /**
26
+ * H0010001 — total housing units, the third-from-last field of a segment-2 row.
27
+ */
28
+ export declare const H1_TOTAL: number;
29
+ /**
30
+ * H0010002 — occupied housing units, the second-from-last field.
31
+ */
32
+ export declare const H1_OCCUPIED: number;
33
+ /**
34
+ * H0010003 — vacant housing units, the last field (and so the one that carries a CRLF file's trailing CR).
35
+ */
36
+ export declare const H1_VACANT: number;
37
+ export interface H1Counts {
38
+ housing_units: number;
39
+ occupied: number;
40
+ vacant: number;
41
+ }
42
+ /**
43
+ * The three H1 counts from one segment-2 row. The last field carries CRLF's trailing CR when the file has one, so each
44
+ * field is trimmed before it is read as a number; a row whose counts do not add up is refused rather than stored.
45
+ */
46
+ export declare function parseH1(fields: readonly string[]): H1Counts;
18
47
  export interface FetchRedistrictingOptions {
19
48
  /**
20
49
  * Two-digit state FIPS, e.g. `"06"`.
@@ -1 +1 @@
1
- {"version":3,"file":"redistricting.d.ts","sourceRoot":"","sources":["../../sdk/redistricting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAqDH,MAAM,WAAW,yBAAyB;IACzC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,uBAAuB,GAChC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACpD;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,MAAM,WAAW,wBAAwB;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CAChB;AAcD;;GAEG;AACH,wBAAuB,kBAAkB,CACxC,OAAO,EAAE,yBAAyB,GAChC,cAAc,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CA2GnE"}
1
+ {"version":3,"file":"redistricting.d.ts","sourceRoot":"","sources":["../../lib/sdk/redistricting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgCH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,MAAM,CAAA;AACnC;;GAEG;AACH,eAAO,MAAM,QAAQ,QAAuB,CAAA;AAC5C;;GAEG;AACH,eAAO,MAAM,WAAW,QAAuB,CAAA;AAC/C;;GAEG;AACH,eAAO,MAAM,SAAS,QAAuB,CAAA;AAE7C,MAAM,WAAW,QAAQ;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACd;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,CAsB3D;AAiBD,MAAM,WAAW,yBAAyB;IACzC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,uBAAuB,GAChC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACpD;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,MAAM,WAAW,wBAAwB;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CAChB;AAcD;;GAEG;AACH,wBAAuB,kBAAkB,CACxC,OAAO,EAAE,yBAAyB,GAChC,cAAc,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CAkInE"}
@@ -15,20 +15,15 @@
15
15
  *
16
16
  * https://www2.census.gov/programs-surveys/decennial/2020/data/01-Redistricting_File--PL_94-171/
17
17
  */
18
- import { spawn } from "node:child_process";
19
- import { createWriteStream, existsSync } from "node:fs";
20
- import { mkdir, rename } from "node:fs/promises";
21
- import { dirname, join } from "node:path";
22
- import { DatabaseSync } from "node:sqlite";
23
- import { Readable } from "node:stream";
24
- import { pipeline } from "node:stream/promises";
18
+ import { mailwomanDataRoot } from "@mailwoman/core/data-root";
19
+ import { makeDirectories } from "@mailwoman/core/fs/writers";
25
20
  import { extractZipEntries } from "@mailwoman/core/fs/zip";
26
- import { DatabaseClient } from "@mailwoman/core/kysley/client";
27
- import { mailwomanDataRoot } from "@mailwoman/core/utils";
21
+ import { DatabaseClient } from "@mailwoman/sqlite/client";
22
+ import { dirname, join } from "path-ts";
28
23
  import { TextSpliterator } from "spliterator";
29
- import { AdminLevel1CodeToAbbreviation, StateName } from "../state.js";
30
- import { downloadIfNeeded } from "./download.js";
31
- import { initializeTIGERSchema, TIGER_PRAGMAS } from "./schema.js";
24
+ import { downloadIfNeeded } from "#sdk/download";
25
+ import { initializeTIGERSchema, TIGER_PRAGMAS } from "#sdk/schema";
26
+ import { AdminLevel1CodeToAbbreviation, StateName } from "#state";
32
27
  const REDISTRICTING_BASE = "https://www2.census.gov/programs-surveys/decennial/2020/data/01-Redistricting_File--PL_94-171";
33
28
  const DEFAULT_DATA_ROOT = mailwomanDataRoot();
34
29
  /**
@@ -44,6 +39,46 @@ const GEO_GEOCODE = 9;
44
39
  */
45
40
  const SEG_LOGRECNO = 4;
46
41
  const P2 = (fieldNo) => 76 + (fieldNo - 1);
42
+ /**
43
+ * Segment 2: FILEID|STUSAB|CHARITER|CIFSN|LOGRECNO(4)| P3×71 | P4×73 | H1×3 — 152 fields, H1 at the tail. Verified
44
+ * against the real file: `ca000022020.pl`'s state row reads 14,392,140 / 13,475,623 / 916,517, the published CA 2020
45
+ * figures. `occupied + vacant === housing_units` is the invariant that distinguishes a correct offset from a plausible
46
+ * one, and {@link parseH1} refuses a row where it does not hold.
47
+ */
48
+ export const SEG2_FIELD_COUNT = 152;
49
+ /**
50
+ * H0010001 — total housing units, the third-from-last field of a segment-2 row.
51
+ */
52
+ export const H1_TOTAL = SEG2_FIELD_COUNT - 3;
53
+ /**
54
+ * H0010002 — occupied housing units, the second-from-last field.
55
+ */
56
+ export const H1_OCCUPIED = SEG2_FIELD_COUNT - 2;
57
+ /**
58
+ * H0010003 — vacant housing units, the last field (and so the one that carries a CRLF file's trailing CR).
59
+ */
60
+ export const H1_VACANT = SEG2_FIELD_COUNT - 1;
61
+ /**
62
+ * The three H1 counts from one segment-2 row. The last field carries CRLF's trailing CR when the file has one, so each
63
+ * field is trimmed before it is read as a number; a row whose counts do not add up is refused rather than stored.
64
+ */
65
+ export function parseH1(fields) {
66
+ if (fields.length !== SEG2_FIELD_COUNT) {
67
+ throw new Error(`segment 2 row has ${fields.length} fields, expected ${SEG2_FIELD_COUNT}`);
68
+ }
69
+ const counts = {
70
+ housing_units: Number(fields[H1_TOTAL].trim()),
71
+ occupied: Number(fields[H1_OCCUPIED].trim()),
72
+ vacant: Number(fields[H1_VACANT].trim()),
73
+ };
74
+ if (![counts.housing_units, counts.occupied, counts.vacant].every(Number.isInteger)) {
75
+ throw new Error(`segment 2 row carries a non-integer H1 count: ${fields.slice(H1_TOTAL).join("|")}`);
76
+ }
77
+ if (counts.occupied + counts.vacant !== counts.housing_units) {
78
+ throw new Error(`segment 2 row breaks the H1 invariant: occupied ${counts.occupied} + vacant ${counts.vacant} != housing_units ${counts.housing_units} (LOGRECNO ${fields[SEG_LOGRECNO]})`);
79
+ }
80
+ return counts;
81
+ }
47
82
  /**
48
83
  * The eight P2 categories that partition the total (P0020001), in `pl_block` column order.
49
84
  */
@@ -86,8 +121,8 @@ export async function* fetchRedistricting(options) {
86
121
  const cacheDir = join(dataRoot, "census", "redistricting", String(vintage), state);
87
122
  // Same stable `tiger.db` default as fetchTIGER — pl_block lives alongside tabblock20 in one DB.
88
123
  const outPath = options.outPath ?? join(dataRoot, "tiger", "tiger.db");
89
- await mkdir(cacheDir, { recursive: true });
90
- await mkdir(dirname(outPath), { recursive: true });
124
+ await makeDirectories(cacheDir);
125
+ await makeDirectories(dirname(outPath));
91
126
  const zipName = `${fileAbbr}${vintage}.pl.zip`;
92
127
  const zipPath = join(cacheDir, zipName);
93
128
  const url = `${REDISTRICTING_BASE}/${dirName}/${zipName}`;
@@ -96,6 +131,7 @@ export async function* fetchRedistricting(options) {
96
131
  await extractZipEntries(zipPath, cacheDir);
97
132
  const geoPath = join(cacheDir, `${fileAbbr}geo${vintage}.pl`);
98
133
  const seg1Path = join(cacheDir, `${fileAbbr}00001${vintage}.pl`);
134
+ const seg2Path = join(cacheDir, `${fileAbbr}00002${vintage}.pl`);
99
135
  yield { phase: "extract", file: `${fileAbbr}geo${vintage}.pl` };
100
136
  // Pass 1: header → LOGRECNO → GEOID for the blocks we want.
101
137
  const prefix = options.county ? state + options.county : state;
@@ -111,9 +147,19 @@ export async function* fetchRedistricting(options) {
111
147
  });
112
148
  const total = logToGeoid.size;
113
149
  yield { phase: "header", blocks: total };
114
- const db = new DatabaseSync(outPath);
115
- db.exec(TIGER_PRAGMAS);
116
- const kdb = new DatabaseClient({ database: db });
150
+ // Pass 1b: segment 2 → H1 housing counts for the mapped LOGRECNOs. Read before segment 1 so a block's P2 and H1
151
+ // land in one row; a mapped block with no segment-2 row is a data defect the load refuses, never a zero.
152
+ const h1ByLogrecno = new Map();
153
+ await eachLine(seg2Path, (line) => {
154
+ const f = line.split("|");
155
+ const logrecno = f[SEG_LOGRECNO] ?? "";
156
+ if (!logToGeoid.has(logrecno))
157
+ return;
158
+ h1ByLogrecno.set(logrecno, parseH1(f));
159
+ });
160
+ yield { phase: "extract", file: `${fileAbbr}00002${vintage}.pl` };
161
+ const kdb = new DatabaseClient(outPath);
162
+ kdb.exec(TIGER_PRAGMAS);
117
163
  await initializeTIGERSchema(kdb);
118
164
  try {
119
165
  // Idempotent re-run: drop the rows we're about to (re)load.
@@ -136,11 +182,17 @@ export async function* fetchRedistricting(options) {
136
182
  if (!line)
137
183
  continue;
138
184
  const f = line.split("|");
139
- const geoid = logToGeoid.get(f[SEG_LOGRECNO] ?? "");
185
+ const logrecno = f[SEG_LOGRECNO] ?? "";
186
+ const geoid = logToGeoid.get(logrecno);
140
187
  if (!geoid)
141
188
  continue;
189
+ const h1 = h1ByLogrecno.get(logrecno);
190
+ if (!h1) {
191
+ throw new Error(`block ${geoid} (LOGRECNO ${logrecno}) has a segment-1 row and no segment-2 row`);
192
+ }
142
193
  batch.push({
143
194
  GEOID: geoid,
195
+ ...h1,
144
196
  pop_total: Number(f[CATEGORY_INDEX.pop_total] ?? 0),
145
197
  hispanic: Number(f[CATEGORY_INDEX.hispanic] ?? 0),
146
198
  white: Number(f[CATEGORY_INDEX.white] ?? 0),
@@ -158,7 +210,7 @@ export async function* fetchRedistricting(options) {
158
210
  }
159
211
  await flush();
160
212
  yield { phase: "load", inserted, total };
161
- db.exec("PRAGMA wal_checkpoint(TRUNCATE);");
213
+ kdb.exec("PRAGMA wal_checkpoint(TRUNCATE);");
162
214
  return { outPath, table: "pl_block", inserted };
163
215
  }
164
216
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"redistricting.js","sourceRoot":"","sources":["../../sdk/redistricting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redistricting.js","sourceRoot":"","sources":["../../lib/sdk/redistricting.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,18 @@ export interface PLBlockTable {
42
42
  nhpi: number;
43
43
  other: number;
44
44
  multi: number;
45
+ /**
46
+ * P.L. 94-171 table H1 — total housing units in the block.
47
+ */
48
+ housing_units: number;
49
+ /**
50
+ * H1 occupied. `occupied + vacant === housing_units` by construction; the reader refuses a row where it is not.
51
+ */
52
+ occupied: number;
53
+ /**
54
+ * H1 vacant.
55
+ */
56
+ vacant: number;
45
57
  }
46
58
  /**
47
59
  * Kysely row type for `tiger_streets` (ADDRFEAT — named street segments + ZIPs, per county).
@@ -82,14 +94,5 @@ export interface TIGERDatabase {
82
94
  * indexes.
83
95
  */
84
96
  export declare const TIGER_PRAGMAS = "\nPRAGMA auto_vacuum = INCREMENTAL;\nPRAGMA page_size = 4096;\nPRAGMA cache_size = 10000;\nPRAGMA journal_mode = WAL;\n";
85
- /**
86
- * Create the TIGER tables + indexes via the Kysely schema-builder (the house idiom). Idempotent (`IF NOT EXISTS`). Pass
87
- * a {@link DatabaseClient} (or any `Kysely`) over the TIGER DB; run {@link TIGER_PRAGMAS} first. `us_state`/`tract`
88
- * aren't in {@link TIGERDatabase} (created here but not queried via Kysely) — `createTable` takes any table name, so
89
- * that's fine.
90
- *
91
- * The `text(N)` length hints in the prior raw DDL were documentary only (SQLite uses TEXT affinity regardless); the
92
- * lengths live on the {@link TIGERBlockTable} interface instead.
93
- */
94
97
  export declare function initializeTIGERSchema(db: Kysely<TIGERDatabase>): Promise<void>;
95
98
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../sdk/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAO,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEzC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAA;AAEvC,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,UAAU,EAAE,eAAe,CAAA;IAC3B,QAAQ,EAAE,YAAY,CAAA;IACtB,aAAa,EAAE,gBAAgB,CAAA;IAC/B,YAAY,EAAE,eAAe,CAAA;CAC7B;AAED;;GAEG;AAEH;;;;GAIG;AACH,eAAO,MAAM,aAAa,4HAKzB,CAAA;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA4GpF"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../lib/sdk/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAO,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEzC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAA;AAEvC,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,UAAU,EAAE,eAAe,CAAA;IAC3B,QAAQ,EAAE,YAAY,CAAA;IACtB,aAAa,EAAE,gBAAgB,CAAA;IAC/B,YAAY,EAAE,eAAe,CAAA;CAC7B;AAED;;GAEG;AAEH;;;;GAIG;AACH,eAAO,MAAM,aAAa,4HAKzB,CAAA;AA8BD,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiHpF"}
package/out/sdk/schema.js CHANGED
@@ -34,6 +34,21 @@ PRAGMA journal_mode = WAL;
34
34
  * The `text(N)` length hints in the prior raw DDL were documentary only (SQLite uses TEXT affinity regardless); the
35
35
  * lengths live on the {@link TIGERBlockTable} interface instead.
36
36
  */
37
+ /**
38
+ * Refuse a `pl_block` built before the H1 columns existed. `createTable(...).ifNotExists()` leaves an older table as it
39
+ * is, and the next load would fail on the first insert with a message about a column, not about the cause. The table is
40
+ * derived (the redistricting command reloads it state by state), so the remedy is a rebuild: drop it and re-run
41
+ * `mailwoman tiger redistricting` for each state you hold. Databases are never patched in place.
42
+ */
43
+ async function assertPLBlockShape(db) {
44
+ const columns = await sql `select name from pragma_table_info('pl_block')`.execute(db);
45
+ const names = new Set(columns.rows.map((row) => row.name));
46
+ for (const required of ["housing_units", "occupied", "vacant"]) {
47
+ if (!names.has(required)) {
48
+ throw new Error(`pl_block predates its H1 columns (missing ${required}). It is a derived table: drop it and re-run \`mailwoman tiger redistricting\` for each state, which reloads P2 and H1 together.`);
49
+ }
50
+ }
51
+ }
37
52
  export async function initializeTIGERSchema(db) {
38
53
  await db.schema
39
54
  .createTable("us_state")
@@ -98,10 +113,14 @@ export async function initializeTIGERSchema(db) {
98
113
  .addColumn("nhpi", "integer", (c) => c.notNull())
99
114
  .addColumn("other", "integer", (c) => c.notNull())
100
115
  .addColumn("multi", "integer", (c) => c.notNull())
116
+ .addColumn("housing_units", "integer", (c) => c.notNull())
117
+ .addColumn("occupied", "integer", (c) => c.notNull())
118
+ .addColumn("vacant", "integer", (c) => c.notNull())
101
119
  // pl_block is small (no geometry) and always probed by its GEOID PK (1:1 join to tabblock20), so
102
120
  // cluster it WITHOUT ROWID — one B-tree probe per join, no separate rowid + PK-index pair.
103
121
  .modifyEnd(sql `without rowid`)
104
122
  .execute();
123
+ await assertPLBlockShape(db);
105
124
  await db.schema
106
125
  .createTable("tiger_streets")
107
126
  .ifNotExists()