@mailwoman/bdc 8.6.0 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/out/schema.d.ts CHANGED
@@ -68,32 +68,30 @@ export interface BDCAvailabilityTable {
68
68
  location_id: string | null;
69
69
  }
70
70
  /**
71
- * Provider dictionary keyed on `provider_id`. Populated by a later registry-join task (2a decision 8) that task is 3a
72
- * Task 8's optional `BuildBDCOptions.providers` (`bdc/sdk/build-bdc.ts`'s `populateBDCProviderTable`); when that option
73
- * is omitted (the default), this table stays empty, exactly as it did before Task 8. No FK constraint against
74
- * `bdc_availability.provider_id` — SQLite doesn't enforce FKs without `PRAGMA foreign_keys`, and the join happens at
75
- * read time, not write time.
71
+ * Provider dictionary keyed on `provider_id`. Populated by the registry join (2a decision 8) behind the optional
72
+ * `BuildBDCOptions.providers` (`bdc/sdk/build-bdc.ts`'s `populateBDCProviderTable`); when that option is omitted (the
73
+ * default), this table stays empty. No FK constraint against `bdc_availability.provider_id` SQLite doesn't enforce
74
+ * FKs without `PRAGMA foreign_keys`, and the join happens at read time, not write time.
76
75
  *
77
76
  * **Decision 6 — this table is an explicitly LOSSY denormalization, not the source of truth.** `provider_id` is the PK
78
77
  * (one row per provider), but the FCC's BDC provider list lets one `provider_id` carry MULTIPLE `frn` values — and
79
- * conflicting `holding_company` strings — across its rows (Task 3's `parseProviderList` preserves every one of them;
80
- * see `filer/sdk/provider-list.ts`). A single-row-per-provider table cannot express that cardinality. `filer.db`
78
+ * conflicting `holding_company` strings — across its rows (`parseProviderList` preserves every one of them; see
79
+ * `filer/sdk/provider-list.ts`). A single-row-per-provider table cannot express that cardinality. `filer.db`
81
80
  * (`@mailwoman/filer`) is the source of truth: it retains every `provider_id`↔`frn` (and
82
81
  * `provider_id`↔`holding_company_name`) edge, never folded or last-wins. When `bdc.db` is built with
83
82
  * `BuildBDCOptions.providers` supplied:
84
83
  *
85
84
  * - `frn` holds only the PRIMARY FRN — the one carrying the most recent Form 499 filing date, per
86
85
  * `@mailwoman/filer/sdk`'s `readFRNFilingCandidates` + `pickPrimaryFRN` (imported into `build-bdc.ts`, never
87
- * reimplemented — Task 7's review found and fixed a temporal bug in that exact query, one a fresh implementation
88
- * would reintroduce). Every OTHER FRN that `provider_id` carries is discarded here but stays fully recoverable from
89
- * `filer.db`.
90
- * - `holding_company` gets the SAME single-distinct-value shortcut `frn` gets (review fix round 1, IMPORTANT-3): when a
91
- * `provider_id`'s rows carry exactly one distinct non-null `holding_company` string, there is no conflict to resolve,
92
- * so it's populated directly — no rule needed, same as a single-FRN provider needs no `filerDB` query. When they
93
- * carry MORE than one distinct value, that ambiguity is the real conflict decision 6 refuses to paper over with
94
- * last-wins (`holding_company` has no most-recent-filing-date rule the way `frn` does), so it stays NULL and every
95
- * discarded value remains recoverable from `filer.db`'s `holding_company_name` edges — the identical discipline
96
- * `frn`'s primary pick already applies.
86
+ * reimplemented — that query's half-open `valid_from`/`valid_to` scoping is easy to get wrong, and a second
87
+ * implementation would be a second place to get it wrong). Every OTHER FRN that `provider_id` carries is discarded
88
+ * here but stays fully recoverable from `filer.db`.
89
+ * - `holding_company` gets the SAME single-distinct-value shortcut `frn` gets: when a `provider_id`'s rows carry exactly
90
+ * one distinct non-null `holding_company` string, there is no conflict to resolve, so it's populated directly — no
91
+ * rule needed, same as a single-FRN provider needs no `filerDB` query. When they carry MORE than one distinct value,
92
+ * that ambiguity is the real conflict decision 6 refuses to paper over with last-wins (`holding_company` has no
93
+ * most-recent-filing-date rule the way `frn` does), so it stays NULL and every discarded value remains recoverable
94
+ * from `filer.db`'s `holding_company_name` edges — the identical discipline `frn`'s primary pick already applies.
97
95
  * - `brand_name` stays NULL unconditionally: the provider list carries no brand-name column at all, primary or otherwise,
98
96
  * so there is nothing to populate it from.
99
97
  */
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEpC;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACpC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,6BAA6B,EAAE,MAAM,CAAA;IACrC,2BAA2B,EAAE,MAAM,CAAA;IACnC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAA;IAClB,yBAAyB,EAAE,MAAM,CAAA;IACjC;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED,MAAM,WAAW,WAAY,SAAQ,qBAAqB;IACzD,gBAAgB,EAAE,oBAAoB,CAAA;IACtC,YAAY,EAAE,gBAAgB,CAAA;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAElC;;;GAGG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAA;AAE3C;;;;GAIG;AACH,wBAAsB,0BAA0B,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBvF;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAQnF;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEpC;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACpC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,6BAA6B,EAAE,MAAM,CAAA;IACrC,2BAA2B,EAAE,MAAM,CAAA;IACnC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAA;IAClB,yBAAyB,EAAE,MAAM,CAAA;IACjC;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED,MAAM,WAAW,WAAY,SAAQ,qBAAqB;IACzD,gBAAgB,EAAE,oBAAoB,CAAA;IACtC,YAAY,EAAE,gBAAgB,CAAA;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAElC;;;GAGG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAA;AAE3C;;;;GAIG;AACH,wBAAsB,0BAA0B,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBvF;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAQnF;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF"}
package/out/schema.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAiFH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAA;AAE3C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,EAAuB;IACvE,MAAM,EAAE,CAAC,MAAM;SACb,WAAW,CAAC,kBAAkB,CAAC;SAC/B,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACnD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAC9C,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC;SAC9B,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACvD,SAAS,CAAC,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAC3D,SAAS,CAAC,+BAA+B,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACzE,SAAS,CAAC,6BAA6B,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACvE,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACvD,SAAS,CAAC,2BAA2B,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAClE,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;SAChC,OAAO,EAAE,CAAA;IAEX,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;AAC3G,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAAuB;IACnE,MAAM,EAAE,CAAC,MAAM;SACb,WAAW,CAAC,cAAc,CAAC;SAC3B,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;SAC1D,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;SACxB,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;SAC/B,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC;SACpC,OAAO,EAAE,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,EAAuB;IAChE,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAA;AACvG,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AA+EH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAA;AAE3C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,EAAuB;IACvE,MAAM,EAAE,CAAC,MAAM;SACb,WAAW,CAAC,kBAAkB,CAAC;SAC/B,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACnD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAC9C,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC;SAC9B,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACvD,SAAS,CAAC,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAC3D,SAAS,CAAC,+BAA+B,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACzE,SAAS,CAAC,6BAA6B,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACvE,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACvD,SAAS,CAAC,2BAA2B,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAClE,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;SAChC,OAAO,EAAE,CAAA;IAEX,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;AAC3G,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAAuB;IACnE,MAAM,EAAE,CAAC,MAAM;SACb,WAAW,CAAC,cAAc,CAAC;SAC3B,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;SAC1D,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;SACxB,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;SAC/B,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC;SACpC,OAAO,EAAE,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,EAAuB;IAChE,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAA;AACvG,CAAC"}
@@ -3,8 +3,8 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  *
6
- * The `bdc.db` builder (2a Task 8) — ingests parsed FCC BDC availability rows (Task 6's
7
- * {@link BDCAvailabilityRow}) into Task 7's schema (`schema.ts`), producing a sealed layer database.
6
+ * The `bdc.db` builder — ingests parsed FCC BDC availability rows ({@link BDCAvailabilityRow})
7
+ * into the schema declared in `schema.ts`, producing a sealed layer database.
8
8
  *
9
9
  * Mirrors `mailwoman/gazetteer-pipeline/poi/build-poi.ts`'s shape closely: the same build-tuning
10
10
  * pragmas, the same single-pass `Map<number, number>` coverage aggregation taken during the load
@@ -78,8 +78,8 @@ export interface BuildBDCOptions {
78
78
  */
79
79
  out: string;
80
80
  /**
81
- * The FCC filing's `as_of_date` (e.g. from Task 5's `resolveLatestVintage`) — becomes the manifest's `sourceVintage`
82
- * AND `version` (BDC has no independent layer versioning yet, same deferral `build-poi.ts` makes for `release`).
81
+ * The FCC filing's `as_of_date` (e.g. from `resolveLatestVintage`) — becomes the manifest's `sourceVintage` AND
82
+ * `version` (BDC has no independent layer versioning yet, same deferral `build-poi.ts` makes for `release`).
83
83
  */
84
84
  asOfDate: string;
85
85
  /**
@@ -104,24 +104,24 @@ export interface BuildBDCOptions {
104
104
  } | undefined;
105
105
  onProgress?: (message: string) => void;
106
106
  /**
107
- * Provider-list rows (Task 3's {@link ProviderListRow}, `@mailwoman/filer/sdk`'s `parseProviderList`) — the test/CLI
108
- * seam for populating `bdc_provider` (2a decision 8 / 3a decision 6, Task 8). When ABSENT (the default),
109
- * `bdc_provider` stays empty and the rest of the build is byte-identical to the pre-Task-8 behavior: every code path
110
- * this option touches is gated behind `if (options.providers)`, so omitting it changes nothing. When present,
111
- * `buildBDCDatabase` groups rows by `providerID` and inserts one `bdc_provider` row per distinct provider — see
112
- * {@link BuildBDCOptions.filerDB} for how the primary FRN is picked when a provider carries more than one, and
113
- * `schema.ts`'s `BDCProviderTable` docstring for the full lossy-denormalization rationale (decision 6).
107
+ * Provider-list rows ({@link ProviderListRow}, `@mailwoman/filer/sdk`'s `parseProviderList`) — the test/CLI seam for
108
+ * populating `bdc_provider` (2a decision 8 / 3a decision 6). When ABSENT (the default), `bdc_provider` stays empty
109
+ * and the rest of the build is untouched: every code path this option touches is gated behind `if
110
+ * (options.providers)`, so omitting it changes nothing. When present, `buildBDCDatabase` groups rows by `providerID`
111
+ * and inserts one `bdc_provider` row per distinct provider — see {@link BuildBDCOptions.filerDB} for how the primary
112
+ * FRN is picked when a provider carries more than one, and `schema.ts`'s `BDCProviderTable` docstring for the full
113
+ * lossy-denormalization rationale (decision 6).
114
114
  */
115
115
  providers?: Iterable<ProviderListRow> | AsyncIterable<ProviderListRow>;
116
116
  /**
117
117
  * Filer.db handle (`@mailwoman/filer`) used to resolve a multi-FRN provider's PRIMARY FRN via
118
118
  * `readFRNFilingCandidates` + `pickPrimaryFRN` (`@mailwoman/filer/sdk`, decision 6) — imported rather than
119
- * reimplemented, since Task 7's review found and fixed a temporal bug (the candidate query originally omitted the
120
- * `valid_to` half of the half-open predicate) that a fresh implementation here would reintroduce. Only actually
121
- * QUERIED for a `provider_id` whose rows carry more than one distinct `frn` — a single-FRN provider needs no lookup,
122
- * since its lone FRN is already primary by construction. Required whenever `providers` is given AND at least one
123
- * `provider_id` turns out to be multi-FRN; `buildBDCDatabase` throws a descriptive error naming the offending
124
- * `provider_id` if it's needed but missing, rather than silently picking an arbitrary FRN.
119
+ * reimplemented, because the candidate query needs BOTH halves of the half-open `valid_from`/`valid_to` predicate and
120
+ * a second implementation here would be a second place to drop the `valid_to` half. Only actually QUERIED for a
121
+ * `provider_id` whose rows carry more than one distinct `frn` — a single-FRN provider needs no lookup, since its lone
122
+ * FRN is already primary by construction. Required whenever `providers` is given AND at least one `provider_id` turns
123
+ * out to be multi-FRN; `buildBDCDatabase` throws a descriptive error naming the offending `provider_id` if it's
124
+ * needed but missing, rather than silently picking an arbitrary FRN.
125
125
  */
126
126
  filerDB?: DatabaseClient<FilerDatabase>;
127
127
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"build-bdc.d.ts","sourceRoot":"","sources":["../../sdk/build-bdc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAOH,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAW9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAKrD,OAAO,KAAK,EAAO,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAchE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAQ5E;;;GAGG;AACH,eAAO,MAAM,eAAe,QAEqF,CAAA;AAEjH,MAAM,WAAW,eAAe;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAA;IACvE;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;;;OAMG;IACH,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAA;IAC3E,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,aAAa,CAAC,eAAe,CAAC,CAAA;IACtE;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAA;IACvC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAA;CAC1B;AAsDD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CA+B9E;AA8BD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAsCtG;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC7C,WAAW,EAAE,MAAM,GACjB,CAAC,KAAK,EAAE,MAAM,KAAK;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAS7D;AAmHD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CA6RxF"}
1
+ {"version":3,"file":"build-bdc.d.ts","sourceRoot":"","sources":["../../sdk/build-bdc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAOH,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAY9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAKrD,OAAO,KAAK,EAAO,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAchE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAQ5E;;;GAGG;AACH,eAAO,MAAM,eAAe,QAEqF,CAAA;AAEjH,MAAM,WAAW,eAAe;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAA;IACvE;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;;;OAMG;IACH,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAA;IAC3E,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,aAAa,CAAC,eAAe,CAAC,CAAA;IACtE;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAA;IACvC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAA;CAC1B;AAsDD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CA+B9E;AA8BD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAkCtG;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC7C,WAAW,EAAE,MAAM,GACjB,CAAC,KAAK,EAAE,MAAM,KAAK;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAS7D;AAmHD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CA6RxF"}
@@ -3,8 +3,8 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  *
6
- * The `bdc.db` builder (2a Task 8) — ingests parsed FCC BDC availability rows (Task 6's
7
- * {@link BDCAvailabilityRow}) into Task 7's schema (`schema.ts`), producing a sealed layer database.
6
+ * The `bdc.db` builder — ingests parsed FCC BDC availability rows ({@link BDCAvailabilityRow})
7
+ * into the schema declared in `schema.ts`, producing a sealed layer database.
8
8
  *
9
9
  * Mirrors `mailwoman/gazetteer-pipeline/poi/build-poi.ts`'s shape closely: the same build-tuning
10
10
  * pragmas, the same single-pass `Map<number, number>` coverage aggregation taken during the load
@@ -56,6 +56,7 @@ import { dirname } from "node:path";
56
56
  import { DatabaseSync } from "node:sqlite";
57
57
  import { DatabaseClient } from "@mailwoman/core/kysley/client";
58
58
  import { createLayerCoverageTable, createLayerManifestTable, LayerFreshnessPolicy, LayerTier, writeLayerCoverage, writeLayerManifest, } from "@mailwoman/core/layers";
59
+ import { tryParsingJSON } from "@mailwoman/core/objects";
59
60
  import { openBuiltDatabase, sealDatabase } from "@mailwoman/core/utils";
60
61
  import { shortCellToInt } from "@mailwoman/spatial";
61
62
  import { cellToParent, latLngToCell } from "h3-js";
@@ -168,13 +169,9 @@ async function* readAvailabilityRowsFromCSVPaths(csvPaths) {
168
169
  export function geometryCentroid(geometryJSON) {
169
170
  if (!geometryJSON)
170
171
  return undefined;
171
- let geometry;
172
- try {
173
- geometry = JSON.parse(geometryJSON);
174
- }
175
- catch {
172
+ const geometry = tryParsingJSON(geometryJSON);
173
+ if (!geometry)
176
174
  return undefined;
177
- }
178
175
  const exteriorRings = geometry.type === "Polygon"
179
176
  ? [geometry.coordinates[0] ?? []]
180
177
  : geometry.type === "MultiPolygon"
@@ -221,8 +218,8 @@ export function createTIGERBlockCentroidLookup(tigerDBPath) {
221
218
  */
222
219
  const PROVIDER_INSERT_BATCH_SIZE = 500;
223
220
  /**
224
- * Groups `providers` by `providerID`. Task 3's `parseProviderList` yields one {@link ProviderListRow} PER LINE of the
225
- * source CSV, preserving cardinality (never folded, never last-wins — see that module's docstring) — so a `provider_id`
221
+ * Groups `providers` by `providerID`. `parseProviderList` yields one {@link ProviderListRow} PER LINE of the source
222
+ * CSV, preserving cardinality (never folded, never last-wins — see that module's docstring) — so a `provider_id`
226
223
  * appearing on N rows arrives here as N separate rows, exactly as decision 6 requires downstream.
227
224
  */
228
225
  async function groupProviderListRows(providers) {
@@ -239,7 +236,7 @@ async function groupProviderListRows(providers) {
239
236
  return byProviderID;
240
237
  }
241
238
  /**
242
- * Populate `bdc_provider` from `options.providers` (2a decision 8 / 3a decision 6, Task 8) — see `schema.ts`'s
239
+ * Populate `bdc_provider` from `options.providers` (2a decision 8 / 3a decision 6) — see `schema.ts`'s
243
240
  * `BDCProviderTable` docstring for the full lossy-denormalization rationale. For each distinct `provider_id`:
244
241
  *
245
242
  * - Exactly one `frn` among its rows → that FRN is primary by construction; no `filerDB` query needed at all.
@@ -250,22 +247,22 @@ async function groupProviderListRows(providers) {
250
247
  * checks `candidates.length` first, mirroring `filerLookup`'s own `primary_frn: null` handling of the same case.
251
248
  * - `filerDB` is REQUIRED the instant a multi-FRN `provider_id` is encountered; its absence throws immediately, naming
252
249
  * the offending `provider_id`, rather than silently picking an arbitrary FRN.
253
- * - `holding_company` gets the IDENTICAL single-distinct-value shortcut `frn` gets (review fix round 1, IMPORTANT-3):
254
- * exactly one distinct non-null `holdingCompany` across a provider's rows means there's no conflict to resolve, so
255
- * it's populated directly, no rule needed. Two or more distinct values IS the real conflict decision 6 refuses to
256
- * paper over with last-wins — that case inserts NULL, and every value stays recoverable from `filer.db`. A `null`
257
- * `holdingCompany` on some rows doesn't count as a competing value (a row simply not stating it isn't a conflicting
258
- * assertion) — only distinct NON-NULL strings are compared.
250
+ * - `holding_company` gets the IDENTICAL single-distinct-value shortcut `frn` gets: exactly one distinct non-null
251
+ * `holdingCompany` across a provider's rows means there's no conflict to resolve, so it's populated directly, no rule
252
+ * needed. Two or more distinct values IS the real conflict decision 6 refuses to paper over with last-wins — that
253
+ * case inserts NULL, and every value stays recoverable from `filer.db`. A `null` `holdingCompany` on some rows
254
+ * doesn't count as a competing value (a row simply not stating it isn't a conflicting assertion) — only distinct
255
+ * NON-NULL strings are compared.
259
256
  *
260
257
  * `brand_name` is always inserted NULL — the provider list carries no brand-name column at all, so there is nothing to
261
258
  * populate it from, primary or otherwise (see the schema docstring).
262
259
  *
263
- * **Lazy `@mailwoman/filer/sdk` import (review fix round 1, IMPORTANT-1).** `readFRNFilingCandidates`/`pickPrimaryFRN`
264
- * are loaded via `await import("@mailwoman/filer/sdk")`, memoized in `filerSDK` below, rather than a top-level static
265
- * import — that barrel re-exports `cluster-filers.ts`, which pulls in `@mailwoman/match`/`record`/`registry`. A
266
- * top-level import regressed `@mailwoman/bdc`'s import time ~32% for EVERY consumer, including ones that never populate
267
- * providers at all; the dynamic import here only ever runs when a multi-FRN `provider_id` is actually encountered, so a
268
- * `providers`-less build (or one whose providers are all single-FRN) pays nothing.
260
+ * **Lazy `@mailwoman/filer/sdk` import.** `readFRNFilingCandidates`/`pickPrimaryFRN` are loaded via `await
261
+ * import("@mailwoman/filer/sdk")`, memoized in `filerSDK` below, rather than a top-level static import — that barrel
262
+ * re-exports `cluster-filers.ts`, which pulls in `@mailwoman/match`/`record`/`registry`. A top-level import regressed
263
+ * `@mailwoman/bdc`'s import time ~32% for EVERY consumer, including ones that never populate providers at all; the
264
+ * dynamic import here only ever runs when a multi-FRN `provider_id` is actually encountered, so a `providers`-less
265
+ * build (or one whose providers are all single-FRN) pays nothing.
269
266
  */
270
267
  async function populateBDCProviderTable(kdb, providers, filerDB, asOf) {
271
268
  const byProviderID = await groupProviderListRows(providers);
@@ -368,7 +365,7 @@ export async function buildBDCDatabase(options) {
368
365
  // all survive the staging dedup as distinct staged rows. In `includeLocationIDs` mode that's correct: every BSL
369
366
  // is a real, distinct row the caller asked to keep. In the default (NULL `location_id`) mode, when those BSLs
370
367
  // ALSO share identical speeds/flags, they'd otherwise materialize as byte-identical rows, inflating `result.rows`
371
- // and `layer_coverage.observed_rows` by the BSL count (found in review, ~100x at real scale) — `SELECT DISTINCT`
368
+ // and `layer_coverage.observed_rows` by the BSL count (~100x at real scale) — `SELECT DISTINCT`
372
369
  // over every column EXCEPT `location_id` collapses those byte-identical BSL duplicates down to one row.
373
370
  // IMPORTANT — this is NOT a guarantee of one row per (geoid, provider_id, technology_code) triple: BSLs at the
374
371
  // same triple with DIFFERING speeds/flags are NOT the same tuple, so `SELECT DISTINCT` does not merge them —
@@ -393,8 +390,8 @@ export async function buildBDCDatabase(options) {
393
390
  // Coverage cell MUST be derived as the res-9 cell's H3 hierarchy parent — NOT a second,
394
391
  // independent `latLngToCell(centroid, 6)` call. H3's cell hierarchy is not geometrically
395
392
  // exact: a point's directly-indexed res-6 cell and its res-9 cell's `cellToParent(…, 6)`
396
- // disagree for a real fraction of points (~6% empirically over CONUS, reviewer-verified
397
- // hexagon/pentagon boundary artifacts). Deriving both `h3_cell` and the coverage cell from
393
+ // disagree for a real fraction of points (~6% empirically over CONUS hexagon/pentagon
394
+ // boundary artifacts). Deriving both `h3_cell` and the coverage cell from
398
395
  // the SAME full res-9 index is what lets `filing-landscape.ts`'s reader reconstruct this
399
396
  // exact coverage cell from nothing but the stored `h3_cell` (its `res9ShortCellToRes6Parent`
400
397
  // applies `cellToParent` to the reconstructed res-9 cell) — builder and reader must derive
@@ -457,9 +454,9 @@ export async function buildBDCDatabase(options) {
457
454
  spineKeys: { h3: { column: "h3_cell", resolution: BDC_H3_RESOLUTION }, wofID: "wof_id" },
458
455
  createdAt: new Date().toISOString(),
459
456
  });
460
- // bdc_provider population (2a decision 8 / 3a decision 6, Task 8) — entirely additive and gated behind
461
- // `options.providers`: when absent, this block never runs and `bdc_provider` stays empty, exactly as before
462
- // Task 8 (see `BuildBDCOptions.providers`'s docstring the default-path byte-identical guarantee).
457
+ // bdc_provider population (2a decision 8 / 3a decision 6) — entirely additive and gated behind
458
+ // `options.providers`: when absent, this block never runs and `bdc_provider` stays empty (see
459
+ // `BuildBDCOptions.providers`'s docstring for the default-path guarantee).
463
460
  let providersPopulated = 0;
464
461
  if (options.providers) {
465
462
  progress("populating bdc_provider from the provider list (decision 6 — lossy denormalization, see schema.ts)");
@@ -1 +1 @@
1
- {"version":3,"file":"build-bdc.js","sourceRoot":"","sources":["../../sdk/build-bdc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-bdc.js","sourceRoot":"","sources":["../../sdk/build-bdc.ts"],"names":[],"mappings":"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"}
@@ -151,8 +151,8 @@ export interface RawBDCFile {
151
151
  * 2-digit state or territory FIPS code.
152
152
  *
153
153
  * Loosely typed as `string` for now. The Nexus original was `AdminLevel1Code` (via `@isp.nexus/tiger`); this port
154
- * drops that dependency, same as `data-collection.ts`'s `FCCStateID`. Task 2c tightens this against
155
- * `@mailwoman/tiger` if a downstream dictionary needs the literal union.
154
+ * drops that dependency, same as `data-collection.ts`'s `FCCStateID`. Tighten it against `@mailwoman/tiger` if a
155
+ * downstream dictionary ever needs the literal union.
156
156
  *
157
157
  * Nullable in live data for rows not scoped to a specific state (e.g. Provider-category rows). Guarded in
158
158
  * {@linkcode parseRawBDCFile} — a null value parses to an empty `stateCode` string.
@@ -161,7 +161,7 @@ export interface RawBDCFile {
161
161
  /**
162
162
  * State or territory name.
163
163
  *
164
- * Loosely typed as `string` — the Nexus original was `StateName` (via `@isp.nexus/tiger`). Same task-2c deferral as
164
+ * Loosely typed as `string` — the Nexus original was `StateName` (via `@isp.nexus/tiger`). Same deferral as
165
165
  * `state_fips` above.
166
166
  */
167
167
  state_name: string;
@@ -211,8 +211,8 @@ export interface BDCFile {
211
211
  /**
212
212
  * The state or territory FIPS code.
213
213
  *
214
- * Loosely typed as `string` — see {@linkcode RawBDCFile} for the task-2c deferral. Empty string when the raw
215
- * `state_fips` was `null`.
214
+ * Loosely typed as `string` — see {@linkcode RawBDCFile} for the deferral. Empty string when the raw `state_fips` was
215
+ * `null`.
216
216
  */
217
217
  stateCode: string;
218
218
  /**
@@ -10,8 +10,8 @@ import type { BroadbandServicableLocationID } from "./location.ts";
10
10
  * Snake_case identifier for a US State or Territory.
11
11
  *
12
12
  * Loosely typed as `string` for now. The Nexus original derived this from `StateName` (via `@isp.nexus/tiger`); this
13
- * port drops that dependency since 2a doesn't consume the literal union anywhere. Task 2c tightens this against
14
- * `@mailwoman/tiger`'s `StateName` if a downstream dictionary needs it.
13
+ * port drops that dependency since nothing here consumes the literal union. Tighten it against `@mailwoman/tiger`'s
14
+ * `StateName` if a downstream dictionary ever needs it.
15
15
  *
16
16
  * @category FCC
17
17
  * @title FCC State Identifier
@@ -6,14 +6,14 @@
6
6
  *
7
7
  * Re-homed from Nexus's `sync/fcc/bdc/download-file.ts` (relicense-by-copy, no provenance headers),
8
8
  * trimmed hard: the Nexus original downloaded AND cached the `.zip`, extracted it, THEN wrote a Parquet
9
- * file with a row-count integrity check. All Parquet machinery is dropped here — 2a's `bdc.db` is
10
- * SQLite, not Parquet-backed (see Task 7+) — and the `.zip` itself isn't cached either; only the
9
+ * file with a row-count integrity check. All Parquet machinery is dropped here — `bdc.db` is
10
+ * SQLite, not Parquet-backed (`bdc/schema.ts`) — and the `.zip` itself isn't cached either; only the
11
11
  * extracted CSV is written to `destinationDir`, and its presence alone is the cache check.
12
12
  *
13
13
  * The zip-extraction library also changes: the Nexus original's `extractSingleFileZip` used `adm-zip`
14
14
  * (a repo-wide Nexus dependency). No unzip dependency exists anywhere in this repo — every workspace
15
- * `package.json` was checked, `tiger/` and `osm/` included — so `yauzl-promise` is added to `bdc` alone
16
- * (noted in this task's commit body per the brief).
15
+ * `package.json` was checked, `tiger/` and `osm/` included — so `yauzl-promise` is a `bdc`-only
16
+ * dependency.
17
17
  */
18
18
  import type { BDCClient } from "./client.ts";
19
19
  import { type BDCFile } from "./common.ts";
@@ -6,14 +6,14 @@
6
6
  *
7
7
  * Re-homed from Nexus's `sync/fcc/bdc/download-file.ts` (relicense-by-copy, no provenance headers),
8
8
  * trimmed hard: the Nexus original downloaded AND cached the `.zip`, extracted it, THEN wrote a Parquet
9
- * file with a row-count integrity check. All Parquet machinery is dropped here — 2a's `bdc.db` is
10
- * SQLite, not Parquet-backed (see Task 7+) — and the `.zip` itself isn't cached either; only the
9
+ * file with a row-count integrity check. All Parquet machinery is dropped here — `bdc.db` is
10
+ * SQLite, not Parquet-backed (`bdc/schema.ts`) — and the `.zip` itself isn't cached either; only the
11
11
  * extracted CSV is written to `destinationDir`, and its presence alone is the cache check.
12
12
  *
13
13
  * The zip-extraction library also changes: the Nexus original's `extractSingleFileZip` used `adm-zip`
14
14
  * (a repo-wide Nexus dependency). No unzip dependency exists anywhere in this repo — every workspace
15
- * `package.json` was checked, `tiger/` and `osm/` included — so `yauzl-promise` is added to `bdc` alone
16
- * (noted in this task's commit body per the brief).
15
+ * `package.json` was checked, `tiger/` and `osm/` included — so `yauzl-promise` is a `bdc`-only
16
+ * dependency.
17
17
  */
18
18
  import * as fs from "node:fs/promises";
19
19
  import * as path from "node:path";
@@ -3,7 +3,7 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  *
6
- * `filing_landscape` reader (2a Task 9) — the FOUR PRE-REGISTERED ACCEPTANCE GATES this whole phase
6
+ * `filing_landscape` reader — the FOUR PRE-REGISTERED ACCEPTANCE GATES this whole phase
7
7
  * is judged by. See `filing-landscape.test.ts` for the gate tests; this module is only the reader.
8
8
  *
9
9
  * Coverage check (the meaning-of-zero rule): a queried block counts as SURVEYED only when its res-6
@@ -18,25 +18,18 @@
18
18
  * even for a cell with no filing rows of its own — a genuine "surveyed, zero providers here" result,
19
19
  * the meaning-of-zero rule's POSITIVE case (covered but empty is not the same as never surveyed).
20
20
  *
21
- * Res-9 res-6 parent reconstruction is deliberately NOT `@mailwoman/spatial`'s `expandH3Cell` — that
22
- * helper's left-shift reconstruction only round-trips a short cell that was shortened AT resolution
23
- * 15 (the address-id spine); fed a resolution-9 short cell it silently produces a full index
24
- * `cellToParent` rejects (`Cell arguments had incompatible resolutions`), verified empirically while
25
- * building this reader. The correct reconstruction for a short cell captured at a KNOWN resolution R
26
- * is a straight concatenation, not a shift: a full 64-bit H3 cell index is always
27
- * `"8" + <resolution nibble> + <52 bits of base-cell + digit path, trailing padding included>`, and
28
- * the 48-bit "short" form (`shortCellToInt`/`shortenH3Cell`) already carries exactly those low 52 bits
29
- * verbatim — so `"8" + R.toString(16) + shortHex.padStart(13, "0")` reassembles the identical full
30
- * index `latLngToCell` would have produced at resolution R. See {@link res9ShortCellToRes6Parent}.
21
+ * The res-6 parent is reconstructed from the STORED res-9 cell (`@mailwoman/spatial`'s `expandH3Cell`
22
+ * back to a full index, then `cellToParent`) rather than recomputed from the block centroid. See
23
+ * {@link res9ShortCellToRes6Parent}.
31
24
  *
32
- * This same formula is exactly what `build-bdc.ts` MUST use (and does, after fix round 1) to derive the
25
+ * This same formula is exactly what `build-bdc.ts` MUST use (and does) to derive the
33
26
  * coverage cell it writes at build time — H3's cell hierarchy is not geometrically exact, so a
34
27
  * `latLngToCell(centroid, 6)` computed independently of the stored res-9 cell disagrees with
35
28
  * `cellToParent(res9Cell, 6)` for a real fraction of points (verified ~6% over CONUS). Builder and
36
- * reader deriving the res-6 parent differently was a real bug (fix round 1): a genuinely-surveyed block
37
- * (real rows, real `layer_coverage` entry) could read back as `unknown_block_count` while its own rows
38
- * still populated `filings` a self-contradiction. `filings` is now scoped to units that PASS the
39
- * coverage check (see the `surveyedUnits` accumulator below) precisely so that can't happen again: a
29
+ * reader deriving the res-6 parent differently is a self-contradiction waiting to happen: a
30
+ * genuinely-surveyed block (real rows, real `layer_coverage` entry) reads back as
31
+ * `unknown_block_count` while its own rows still populate `filings`. `filings` is scoped to units that
32
+ * PASS the coverage check (see the `surveyedUnits` accumulator below) precisely so that can't happen: a
40
33
  * block excluded from `surveyed_block_count` never contributes to `filings` either.
41
34
  */
42
35
  import type { DatabaseClient } from "@mailwoman/core/kysley/client";
@@ -110,9 +103,9 @@ export declare const BDC_SPEED_BUCKET_THRESHOLD_GIGABIT_MBPS = 1000;
110
103
  */
111
104
  export declare function speedBucketForDownloadSpeed(maxAdvertisedDownloadSpeed: number): string;
112
105
  /**
113
- * Reconstruct the res-6 ancestor of a res-9 short-cell int WITHOUT a centroid — see the module docstring for why this
114
- * isn't `@mailwoman/spatial`'s `expandH3Cell`. Exported so tests can assert this agrees, cell-for-cell, with
115
- * `build-bdc.ts`'s own coverage-cell derivation (the two MUST share this exact formula — see that file's docstring).
106
+ * Reconstruct the res-6 ancestor of a res-9 short-cell int WITHOUT a centroid — see the module docstring for why the
107
+ * centroid is the wrong input. Exported so tests can assert this agrees, cell-for-cell, with `build-bdc.ts`'s own
108
+ * coverage-cell derivation (the two MUST share this derivation — see that file's docstring).
116
109
  */
117
110
  export declare function res9ShortCellToRes6Parent(h3CellShortInt: number): number;
118
111
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"filing-landscape.d.ts","sourceRoot":"","sources":["../../sdk/filing-landscape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAMnE,OAAO,EAAiD,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAE9F;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACrC,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,oBAAoB,EAAE,MAAM,CAAA;IAC5B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,OAAO,EAAE,qBAAqB,EAAE,CAAA;CAChC;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,aAAa,CAAA;AAEnD;;GAEG;AACH,eAAO,MAAM,uBAAuB,WAAW,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,yBAAyB,aAAa,CAAA;AAEnD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,YAAY,CAAA;AAEjD;;GAEG;AACH,eAAO,MAAM,kCAAkC,KAAK,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,mCAAmC,MAAM,CAAA;AAEtD;;GAEG;AACH,eAAO,MAAM,uCAAuC,OAAO,CAAA;AAE3D;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,0BAA0B,EAAE,MAAM,GAAG,MAAM,CAQtF;AAqBD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAMxE;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACpC,EAAE,EAAE,cAAc,CAAC,WAAW,CAAC,EAC/B,KAAK,EAAE,oBAAoB,GACzB,OAAO,CAAC,eAAe,CAAC,CA6G1B"}
1
+ {"version":3,"file":"filing-landscape.d.ts","sourceRoot":"","sources":["../../sdk/filing-landscape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAMnE,OAAO,EAAiD,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAE9F;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACrC,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,oBAAoB,EAAE,MAAM,CAAA;IAC5B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,OAAO,EAAE,qBAAqB,EAAE,CAAA;CAChC;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,aAAa,CAAA;AAEnD;;GAEG;AACH,eAAO,MAAM,uBAAuB,WAAW,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,yBAAyB,aAAa,CAAA;AAEnD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,YAAY,CAAA;AAEjD;;GAEG;AACH,eAAO,MAAM,kCAAkC,KAAK,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,mCAAmC,MAAM,CAAA;AAEtD;;GAEG;AACH,eAAO,MAAM,uCAAuC,OAAO,CAAA;AAE3D;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,0BAA0B,EAAE,MAAM,GAAG,MAAM,CAQtF;AAqBD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAKxE;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACpC,EAAE,EAAE,cAAc,CAAC,WAAW,CAAC,EAC/B,KAAK,EAAE,oBAAoB,GACzB,OAAO,CAAC,eAAe,CAAC,CA6G1B"}
@@ -3,7 +3,7 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  *
6
- * `filing_landscape` reader (2a Task 9) — the FOUR PRE-REGISTERED ACCEPTANCE GATES this whole phase
6
+ * `filing_landscape` reader — the FOUR PRE-REGISTERED ACCEPTANCE GATES this whole phase
7
7
  * is judged by. See `filing-landscape.test.ts` for the gate tests; this module is only the reader.
8
8
  *
9
9
  * Coverage check (the meaning-of-zero rule): a queried block counts as SURVEYED only when its res-6
@@ -18,29 +18,22 @@
18
18
  * even for a cell with no filing rows of its own — a genuine "surveyed, zero providers here" result,
19
19
  * the meaning-of-zero rule's POSITIVE case (covered but empty is not the same as never surveyed).
20
20
  *
21
- * Res-9 res-6 parent reconstruction is deliberately NOT `@mailwoman/spatial`'s `expandH3Cell` — that
22
- * helper's left-shift reconstruction only round-trips a short cell that was shortened AT resolution
23
- * 15 (the address-id spine); fed a resolution-9 short cell it silently produces a full index
24
- * `cellToParent` rejects (`Cell arguments had incompatible resolutions`), verified empirically while
25
- * building this reader. The correct reconstruction for a short cell captured at a KNOWN resolution R
26
- * is a straight concatenation, not a shift: a full 64-bit H3 cell index is always
27
- * `"8" + <resolution nibble> + <52 bits of base-cell + digit path, trailing padding included>`, and
28
- * the 48-bit "short" form (`shortCellToInt`/`shortenH3Cell`) already carries exactly those low 52 bits
29
- * verbatim — so `"8" + R.toString(16) + shortHex.padStart(13, "0")` reassembles the identical full
30
- * index `latLngToCell` would have produced at resolution R. See {@link res9ShortCellToRes6Parent}.
21
+ * The res-6 parent is reconstructed from the STORED res-9 cell (`@mailwoman/spatial`'s `expandH3Cell`
22
+ * back to a full index, then `cellToParent`) rather than recomputed from the block centroid. See
23
+ * {@link res9ShortCellToRes6Parent}.
31
24
  *
32
- * This same formula is exactly what `build-bdc.ts` MUST use (and does, after fix round 1) to derive the
25
+ * This same formula is exactly what `build-bdc.ts` MUST use (and does) to derive the
33
26
  * coverage cell it writes at build time — H3's cell hierarchy is not geometrically exact, so a
34
27
  * `latLngToCell(centroid, 6)` computed independently of the stored res-9 cell disagrees with
35
28
  * `cellToParent(res9Cell, 6)` for a real fraction of points (verified ~6% over CONUS). Builder and
36
- * reader deriving the res-6 parent differently was a real bug (fix round 1): a genuinely-surveyed block
37
- * (real rows, real `layer_coverage` entry) could read back as `unknown_block_count` while its own rows
38
- * still populated `filings` a self-contradiction. `filings` is now scoped to units that PASS the
39
- * coverage check (see the `surveyedUnits` accumulator below) precisely so that can't happen again: a
29
+ * reader deriving the res-6 parent differently is a self-contradiction waiting to happen: a
30
+ * genuinely-surveyed block (real rows, real `layer_coverage` entry) reads back as
31
+ * `unknown_block_count` while its own rows still populate `filings`. `filings` is scoped to units that
32
+ * PASS the coverage check (see the `surveyedUnits` accumulator below) precisely so that can't happen: a
40
33
  * block excluded from `surveyed_block_count` never contributes to `filings` either.
41
34
  */
42
35
  import { readLayerCoverage, readLayerManifest } from "@mailwoman/core/layers";
43
- import { shortCellToInt } from "@mailwoman/spatial";
36
+ import { expandH3Cell, shortCellToInt } from "@mailwoman/spatial";
44
37
  import { cellToParent } from "h3-js";
45
38
  import { sql } from "kysely";
46
39
  import { BDC_COVERAGE_H3_RESOLUTION, BDC_H3_RESOLUTION } from "../schema.js";
@@ -105,13 +98,12 @@ function asContractDB(kdb) {
105
98
  return kdb;
106
99
  }
107
100
  /**
108
- * Reconstruct the res-6 ancestor of a res-9 short-cell int WITHOUT a centroid — see the module docstring for why this
109
- * isn't `@mailwoman/spatial`'s `expandH3Cell`. Exported so tests can assert this agrees, cell-for-cell, with
110
- * `build-bdc.ts`'s own coverage-cell derivation (the two MUST share this exact formula — see that file's docstring).
101
+ * Reconstruct the res-6 ancestor of a res-9 short-cell int WITHOUT a centroid — see the module docstring for why the
102
+ * centroid is the wrong input. Exported so tests can assert this agrees, cell-for-cell, with `build-bdc.ts`'s own
103
+ * coverage-cell derivation (the two MUST share this derivation — see that file's docstring).
111
104
  */
112
105
  export function res9ShortCellToRes6Parent(h3CellShortInt) {
113
- const shortHex = h3CellShortInt.toString(16).padStart(13, "0");
114
- const fullCell = `8${BDC_H3_RESOLUTION.toString(16)}${shortHex}`;
106
+ const fullCell = expandH3Cell(h3CellShortInt.toString(16), BDC_H3_RESOLUTION);
115
107
  const parentCell = cellToParent(fullCell, BDC_COVERAGE_H3_RESOLUTION);
116
108
  return shortCellToInt(parentCell);
117
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"filing-landscape.js","sourceRoot":"","sources":["../../sdk/filing-landscape.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filing-landscape.js","sourceRoot":"","sources":["../../sdk/filing-landscape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAA8B,MAAM,wBAAwB,CAAA;AACzG,OAAO,EAAE,YAAY,EAAE,cAAc,EAAiC,MAAM,oBAAoB,CAAA;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACpC,OAAO,EAAE,GAAG,EAAe,MAAM,QAAQ,CAAA;AAEzC,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAoB,MAAM,cAAc,CAAA;AAsC9F;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,UAAU,CAAA;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAA;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,UAAU,CAAA;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,SAAS,CAAA;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAA;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAG,CAAA;AAEtD;;GAEG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAA;AAE3D;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,0BAAkC;IAC7E,IAAI,0BAA0B,GAAG,kCAAkC;QAAE,OAAO,yBAAyB,CAAA;IAErG,IAAI,0BAA0B,GAAG,mCAAmC;QAAE,OAAO,uBAAuB,CAAA;IAEpG,IAAI,0BAA0B,GAAG,uCAAuC;QAAE,OAAO,yBAAyB,CAAA;IAE1G,OAAO,wBAAwB,CAAA;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,kBAAkB,GAAG,GAAG,CAAQ;wCACE,kCAAkC,SAAS,yBAAyB;wCACpE,mCAAmC,SAAS,uBAAuB;wCACnE,uCAAuC,SAAS,yBAAyB;QACzG,wBAAwB;IAC5B,CAAA;AAEJ;;;GAGG;AACH,SAAS,YAAY,CAAC,GAAgC;IACrD,OAAO,GAA+C,CAAA;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,cAAsB;IAC/D,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAgB,EAAE,iBAAiB,CAAC,CAAA;IAC5F,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,EAAE,0BAA0B,CAAW,CAAA;IAE/E,OAAO,cAAc,CAAC,UAAU,CAAC,CAAA;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACpC,EAA+B,EAC/B,KAA2B;IAE3B,MAAM,cAAc,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAEvE,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAA;IACrF,CAAC;IAED,wGAAwG;IACxG,wGAAwG;IACxG,0GAA0G;IAC1G,gHAAgH;IAChH,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAE,CAAC,MAAM,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;IAClF,CAAC;IAED,oGAAoG;IACpG,oEAAoE;IACpE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;IAE1D,MAAM,cAAc,GAAmC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAQ,CAAA;IACrF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAE,OAAiB,CAAC,CAAC,CAAE,SAAmB,CAAA;IAE3E,8FAA8F;IAC9F,4FAA4F;IAC5F,2EAA2E;IAC3E,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA2B,CAAA;IAE9D,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,MAAM,EAAE;aACnB,UAAU,CAAC,kBAAkB,CAAC;aAC9B,MAAM,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;aAC5B,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;aAClC,OAAO,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;aAC7B,OAAO,EAAE,CAAA;QAEX,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;QAChD,CAAC;IACF,CAAC;SAAM,CAAC;QACP,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAQ,EAAE,CAAC;YACnC,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACpC,CAAC;IACF,CAAC;IAED,IAAI,kBAAkB,GAAG,CAAC,CAAA;IAC1B,IAAI,iBAAiB,GAAG,CAAC,CAAA;IACzB,4GAA4G;IAC5G,+GAA+G;IAC/G,6GAA6G;IAC7G,6GAA6G;IAC7G,0FAA0F;IAC1F,MAAM,aAAa,GAA2B,EAAE,CAAA;IAEhD,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEnD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YACjC,iBAAiB,EAAE,CAAA;YAEnB,SAAQ;QACT,CAAC;QAED,MAAM,UAAU,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAA;QAC3D,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAA;QAEtE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,iBAAiB,EAAE,CAAA;QACpB,CAAC;aAAM,CAAC;YACP,kBAAkB,EAAE,CAAA;YACpB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC;IACF,CAAC;IAED,IAAI,OAAO,GAA4B,EAAE,CAAA;IAEzC,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,YAAY,GAAG,EAAE;aACnB,UAAU,CAAC,kBAAkB,CAAC;aAC9B,MAAM,CAAC;YACP,aAAa;YACb,iBAAiB;YACjB,kBAAkB,CAAC,EAAE,CAAC,cAAc,CAAC;YACrC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAS,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC;SACpE,CAAC;aACD,OAAO,CAAC,CAAC,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;aAC/D,OAAO,CAAC,aAAa,CAAC;aACtB,OAAO,CAAC,iBAAiB,CAAC;aAC1B,OAAO,CAAC,kBAAkB,CAAC,CAAA;QAE7B,YAAY,GAAG,KAAK,CAAC,MAAM;YAC1B,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,aAAyB,CAAC;YAC9D,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,aAAyB,CAAC,CAAA;QAEjE,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAA;QAEhD,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACnC,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,WAAW,EAAE,GAAG,CAAC,WAAW;SAC5B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO;QACN,OAAO,EAAE,QAAQ,CAAC,aAAa;QAC/B,oBAAoB,EAAE,kBAAkB;QACxC,mBAAmB,EAAE,iBAAiB;QACtC,OAAO;KACP,CAAA;AACF,CAAC"}
@@ -7,7 +7,7 @@
7
7
  * Re-homed from Nexus's `sync/fcc/bdc/list-files.ts` (relicense-by-copy, no provenance headers):
8
8
  * the `URLRoutePattern`-compiled route → a plain template literal (this port has no routing
9
9
  * dependency), the `$BCDClient`-bound `retrieveAvailabilityFiles()` → a plain function taking a
10
- * {@linkcode BDCClient}. Raw entries are parsed via Task 4's `parseRawBDCFile` and returned sorted
10
+ * {@linkcode BDCClient}. Raw entries are parsed via `parseRawBDCFile` and returned sorted
11
11
  * ascending by revision (`compareRevisionAsc`) rather than in API order.
12
12
  */
13
13
  import type { BDCClient } from "./client.ts";
@@ -7,7 +7,7 @@
7
7
  * Re-homed from Nexus's `sync/fcc/bdc/list-files.ts` (relicense-by-copy, no provenance headers):
8
8
  * the `URLRoutePattern`-compiled route → a plain template literal (this port has no routing
9
9
  * dependency), the `$BCDClient`-bound `retrieveAvailabilityFiles()` → a plain function taking a
10
- * {@linkcode BDCClient}. Raw entries are parsed via Task 4's `parseRawBDCFile` and returned sorted
10
+ * {@linkcode BDCClient}. Raw entries are parsed via `parseRawBDCFile` and returned sorted
11
11
  * ascending by revision (`compareRevisionAsc`) rather than in API order.
12
12
  */
13
13
  import { compareRevisionAsc, parseRawBDCFile, } from "./common.js";