@mailwoman/bdc 9.2.0 → 9.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/lib/env.ts +30 -0
  2. package/lib/index.ts +2 -0
  3. package/{sdk → lib/sdk}/build-bdc.ts +86 -117
  4. package/{sdk → lib/sdk}/client.ts +24 -40
  5. package/{sdk → lib/sdk}/common.ts +1 -1
  6. package/{sdk → lib/sdk}/data-collection.ts +2 -2
  7. package/{sdk → lib/sdk}/download.ts +19 -15
  8. package/{sdk → lib/sdk}/filing-dates.ts +3 -3
  9. package/{sdk → lib/sdk}/filing-landscape.ts +8 -12
  10. package/lib/sdk/index.ts +14 -0
  11. package/{sdk → lib/sdk}/list-files.ts +2 -2
  12. package/{sdk → lib/sdk}/nearest-infrastructure.ts +5 -5
  13. package/{sdk → lib/sdk}/parsing.ts +3 -3
  14. package/{sdk → lib/sdk}/plausibility.ts +42 -23
  15. package/out/env.d.ts +24 -0
  16. package/out/env.d.ts.map +1 -0
  17. package/out/env.js +28 -0
  18. package/out/env.js.map +1 -0
  19. package/out/index.d.ts +2 -2
  20. package/out/index.d.ts.map +1 -1
  21. package/out/index.js +2 -2
  22. package/out/index.js.map +1 -1
  23. package/out/schema.d.ts.map +1 -1
  24. package/out/schema.js.map +1 -1
  25. package/out/sdk/build-bdc.d.ts +20 -19
  26. package/out/sdk/build-bdc.d.ts.map +1 -1
  27. package/out/sdk/build-bdc.js +70 -98
  28. package/out/sdk/build-bdc.js.map +1 -1
  29. package/out/sdk/buildings.d.ts.map +1 -1
  30. package/out/sdk/buildings.js.map +1 -1
  31. package/out/sdk/client.d.ts +7 -9
  32. package/out/sdk/client.d.ts.map +1 -1
  33. package/out/sdk/client.js +17 -31
  34. package/out/sdk/client.js.map +1 -1
  35. package/out/sdk/common.d.ts +1 -1
  36. package/out/sdk/common.d.ts.map +1 -1
  37. package/out/sdk/common.js.map +1 -1
  38. package/out/sdk/data-collection.d.ts +2 -2
  39. package/out/sdk/data-collection.d.ts.map +1 -1
  40. package/out/sdk/data-collection.js.map +1 -1
  41. package/out/sdk/download.d.ts +4 -3
  42. package/out/sdk/download.d.ts.map +1 -1
  43. package/out/sdk/download.js +12 -13
  44. package/out/sdk/download.js.map +1 -1
  45. package/out/sdk/filing-dates.d.ts +3 -3
  46. package/out/sdk/filing-dates.d.ts.map +1 -1
  47. package/out/sdk/filing-dates.js +1 -1
  48. package/out/sdk/filing-dates.js.map +1 -1
  49. package/out/sdk/filing-landscape.d.ts +4 -4
  50. package/out/sdk/filing-landscape.d.ts.map +1 -1
  51. package/out/sdk/filing-landscape.js +7 -10
  52. package/out/sdk/filing-landscape.js.map +1 -1
  53. package/out/sdk/index.d.ts +14 -14
  54. package/out/sdk/index.d.ts.map +1 -1
  55. package/out/sdk/index.js +14 -14
  56. package/out/sdk/index.js.map +1 -1
  57. package/out/sdk/list-files.d.ts +2 -2
  58. package/out/sdk/list-files.d.ts.map +1 -1
  59. package/out/sdk/list-files.js +1 -1
  60. package/out/sdk/list-files.js.map +1 -1
  61. package/out/sdk/location.d.ts.map +1 -1
  62. package/out/sdk/location.js.map +1 -1
  63. package/out/sdk/nearest-infrastructure.d.ts +4 -4
  64. package/out/sdk/nearest-infrastructure.d.ts.map +1 -1
  65. package/out/sdk/nearest-infrastructure.js +2 -2
  66. package/out/sdk/nearest-infrastructure.js.map +1 -1
  67. package/out/sdk/parsing.d.ts +3 -3
  68. package/out/sdk/parsing.d.ts.map +1 -1
  69. package/out/sdk/parsing.js +2 -2
  70. package/out/sdk/parsing.js.map +1 -1
  71. package/out/sdk/plausibility.d.ts +32 -14
  72. package/out/sdk/plausibility.d.ts.map +1 -1
  73. package/out/sdk/plausibility.js +15 -12
  74. package/out/sdk/plausibility.js.map +1 -1
  75. package/out/sdk/technologies.d.ts.map +1 -1
  76. package/out/sdk/technologies.js.map +1 -1
  77. package/package.json +65 -16
  78. package/index.ts +0 -2
  79. package/sdk/index.ts +0 -14
  80. /package/{schema.ts → lib/schema.ts} +0 -0
  81. /package/{sdk → lib/sdk}/buildings.ts +0 -0
  82. /package/{sdk → lib/sdk}/location.ts +0 -0
  83. /package/{sdk → lib/sdk}/technologies.ts +0 -0
@@ -49,18 +49,19 @@
49
49
  * mid-build crash mustn't cost the previously-good artifact, which is exactly the failure mode
50
50
  * the house rule exists for.
51
51
  */
52
- import { existsSync, mkdirSync, readdirSync, renameSync, rmSync } from "node:fs";
53
- import { open } from "node:fs/promises";
54
- import { basename, dirname, join } from "node:path";
55
- import { DatabaseSync } from "node:sqlite";
56
- import { DatabaseClient } from "@mailwoman/core/kysley/client";
57
- import { CoverageBasis, createLayerCoverageTable, createLayerManifestTable, LayerFreshnessPolicy, LayerTier, writeLayerCoverage, writeLayerManifest, } from "@mailwoman/core/layers";
58
- import { tryParsingJSON } from "@mailwoman/core/objects";
59
- import { openBuiltDatabase, sealDatabase, swapDatabaseIntoPlace } from "@mailwoman/core/utils";
52
+ import { pathExists, readDirectory, readFileRange } from "@mailwoman/core/fs/readers";
53
+ import { removePathIfPresent, movePath, makeDirectories, removePath } from "@mailwoman/core/fs/writers";
54
+ import { tryParsingJSON } from "@mailwoman/core/json";
55
+ import { createLayerCoverageTable, createLayerManifestTable, LayerFreshnessPolicy, LayerTier, sourcePresentCoverageCells, writeLayerCoverage, writeLayerManifest, } from "@mailwoman/core/layers";
60
56
  import { shortCellToInt } from "@mailwoman/spatial";
57
+ import { beginBatched } from "@mailwoman/sqlite/batched";
58
+ import { DatabaseClient } from "@mailwoman/sqlite/client";
59
+ import { openBuiltClient } from "@mailwoman/sqlite/sealed";
60
+ import { sealDatabase, swapDatabaseIntoPlace } from "@mailwoman/sqlite/sealed-db";
61
61
  import { cellToParent, latLngToCell } from "h3-js";
62
- import { BDC_COVERAGE_H3_RESOLUTION, BDC_H3_RESOLUTION, createBDCAvailabilityTable, createBDCGeoidIndex, createBDCProviderTable, } from "../schema.js";
63
- import { readAvailabilityRows } from "./parsing.js";
62
+ import { basename, dirname, join } from "path-ts";
63
+ import { BDC_COVERAGE_H3_RESOLUTION, BDC_H3_RESOLUTION, createBDCAvailabilityTable, createBDCGeoidIndex, createBDCProviderTable, } from "#schema";
64
+ import { readAvailabilityRows } from "#sdk/parsing";
64
65
  /**
65
66
  * Rows committed per `BEGIN`/`COMMIT` batch during both the staging load and the materialize pass — matches
66
67
  * `build-poi.ts`'s `STAGE_BATCH_SIZE` discipline.
@@ -106,7 +107,7 @@ async function createBDCStageTable(db) {
106
107
  *
107
108
  * `csvPath` is optional and used ONLY to name the offending file in a thrown error (the direct-buffer unit tests call
108
109
  * this without one; {@linkcode readAvailabilityRowsFromCSVPaths} always supplies it). The `Number.isSafeInteger` guard
109
- * below is load-bearing, not defensive dressing: `bdc_stage.provider_id` is `INTEGER NOT NULL`, and a bare
110
+ * below is required, not defensive dressing: `bdc_stage.provider_id` is `INTEGER NOT NULL`, and a bare
110
111
  * `Number.parseInt` on a non-numeric field (a malformed/re-headered/truncated CSV) silently produces `NaN`. `NaN` binds
111
112
  * to that NOT NULL column as SQLite `NULL`, `INSERT OR IGNORE` then drops the row without a constraint error, and every
112
113
  * dropped row gets counted as `deduped` — the ENTIRE file's rows vanish silently, misreported as ordinary dedup. A
@@ -138,35 +139,20 @@ export function peekProviderID(csvBuffer, csvPath) {
138
139
  * Bytes read to peek the `provider_id`. Only the header row plus the first data row are needed and an FCC availability
139
140
  * row is ~110 bytes, so this is three orders of magnitude of slack. A file shorter than this simply reads short —
140
141
  * {@linkcode peekProviderID} already reports a header-only or empty file by message.
141
- */
142
- const PROVIDER_ID_PEEK_BYTES = 64 * 1024;
143
- /**
144
- * Read the head of a CSV, for {@linkcode peekProviderID}.
145
142
  *
146
- * The point is what it does NOT do. `provider_id` is a constant per file, so establishing it needs the first data row
147
- * and nothing else; `readFile(csvPath)` was resident-loading the entire file to read one column of one row. The
148
- * measured file that motivated this is 920 MB for a single state × technology.
143
+ * `provider_id` is a constant per file, so establishing it needs the first data row and nothing else; a whole-file read
144
+ * was resident-loading 920 MB (one state × technology) to read one column of one row.
149
145
  */
150
- async function readCSVHead(csvPath) {
151
- const handle = await open(csvPath);
152
- try {
153
- const buffer = Buffer.allocUnsafe(PROVIDER_ID_PEEK_BYTES);
154
- const { bytesRead } = await handle.read(buffer, 0, PROVIDER_ID_PEEK_BYTES, 0);
155
- return buffer.subarray(0, bytesRead);
156
- }
157
- finally {
158
- await handle.close();
159
- }
160
- }
146
+ const PROVIDER_ID_PEEK_BYTES = 64 * 1024;
161
147
  /**
162
148
  * Peeks each file's `provider_id` off its head ({@linkcode peekProviderID}, passing the path through so a malformed
163
149
  * file's error names it), then STREAMS every row via `readAvailabilityRows` — the file is never resident. This is the
164
- * production counterpart to the test seam's injected `rows` — exercised by `build-bdc.test.ts` only for the
165
- * malformed-provider-id rejection path, same as `build-poi.ts`'s `readParquetRows`.
150
+ * production counterpart to the TEST INJECTION POINT's injected `rows` — exercised by `build-bdc.test.ts` only for the
151
+ * malformed-provider-id rejection path, same as `build-poi.ts`'s Parquet reader.
166
152
  */
167
153
  async function* readAvailabilityRowsFromCSVPaths(csvPaths) {
168
154
  for (const csvPath of csvPaths) {
169
- const providerID = peekProviderID(await readCSVHead(csvPath), csvPath);
155
+ const providerID = peekProviderID(await readFileRange(csvPath, 0, PROVIDER_ID_PEEK_BYTES), csvPath);
170
156
  yield* readAvailabilityRows(csvPath, providerID);
171
157
  }
172
158
  }
@@ -175,7 +161,7 @@ async function* readAvailabilityRowsFromCSVPaths(csvPaths) {
175
161
  * rings for a MultiPolygon. Interior rings/holes are still ignored — a hole moves a block's centroid far less than the
176
162
  * vertex-density skew this replaces, and only 1.0% of measured blocks carry one.
177
163
  *
178
- * This REPLACED the first cut's vertex-average, whose "same res-9 cell for all but pathological shapes" claim was
164
+ * This REPLACED the first version's vertex-average, whose "same res-9 cell for all but pathological shapes" claim was
179
165
  * falsified by measurement over every real TIGER 2020 block in LA + Orange county (118,360 blocks, 2026-08-11): the
180
166
  * vertex-average landed in a different res-9 cell for 11.6% of blocks, p99 displacement 286 m (past the ~174 m cell
181
167
  * edge), max 3.7 km — the tail is TIGER's elongated rural/mountain blocks, whose boundary vertices cluster on the
@@ -239,14 +225,15 @@ export function geometryCentroid(geometryJSON) {
239
225
  }
240
226
  /**
241
227
  * The production `blockCentroids` supplier: opens the TIGER blocks database READ-ONLY and probes `tabblock20.GEOID`
242
- * (uppercase) per lookup, decoding its GeoJSON `geometry` column via {@linkcode geometryCentroid}. Kept synchronous
243
- * `BuildBDCOptions.blockCentroids` is a plain sync function (the same sync-by-interface discipline AGENTS.md documents
244
- * for the resolver ladder), so this uses `node:sqlite`'s raw `.prepare()`/`.get()` directly rather than Kysely. The
245
- * connection is left open for the caller's process lifetime (a read-path lookup, not a build) same lifecycle as the
246
- * resolver-wof-sqlite lookups.
228
+ * (uppercase) per lookup, decoding its GeoJSON `geometry` column via {@linkcode geometryCentroid}. The factory awaits
229
+ * its read-only open; the per-lookup probe and the `BuildBDCOptions.blockCentroids` interface stay synchronous — a
230
+ * plain sync function (the same sync-by-interface discipline AGENTS.md documents for the resolver ladder), so the
231
+ * returned closure uses `node:sqlite`'s raw `.prepare()`/`.get()` directly rather than Kysely. The connection is left
232
+ * open for the caller's process lifetime (a read-path lookup, not a build) — same lifecycle as the resolver-wof-sqlite
233
+ * lookups.
247
234
  */
248
- export function createTIGERBlockCentroidLookup(tigerDBPath) {
249
- const db = openBuiltDatabase(tigerDBPath);
235
+ export async function createTIGERBlockCentroidLookup(tigerDBPath) {
236
+ const db = await openBuiltClient(tigerDBPath);
250
237
  const stmt = db.prepare("SELECT geometry FROM tabblock20 WHERE GEOID = ?");
251
238
  return (geoid) => {
252
239
  const row = stmt.get(geoid);
@@ -300,14 +287,17 @@ async function groupProviderListRows(providers) {
300
287
  * `brand_name` is always inserted NULL — the provider list carries no brand-name column at all, so there is nothing to
301
288
  * populate it from, primary or otherwise (see the schema docstring).
302
289
  *
303
- * **Lazy `@mailwoman/filer/sdk` import.** `readFRNFilingCandidates`/`pickPrimaryFRN` are loaded via `await
304
- * import("@mailwoman/filer/sdk")`, memoized in `filerSDK` below, rather than a top-level static import — that barrel
305
- * re-exports `cluster-filers.ts`, which pulls in `@mailwoman/match`/`record`/`registry`. A top-level import regressed
306
- * `@mailwoman/bdc`'s import time ~32% for EVERY consumer, including ones that never populate providers at all; the
307
- * dynamic import here only ever runs when a multi-FRN `provider_id` is actually encountered, so a `providers`-less
308
- * build (or one whose providers are all single-FRN) pays nothing.
290
+ * **Lazy `@mailwoman/filer/filer-lookup` import.** `readFRNFilingCandidates`/`pickPrimaryFRN` are loaded via `await
291
+ * import("@mailwoman/filer/filer-lookup")`, memoized in `filerSDK` below, rather than a top-level static import. The
292
+ * cost this avoids is smaller than it was: the specifier used to be the `@mailwoman/filer/sdk` BARREL, which `export
293
+ * *`s `cluster-filers.ts` and so pulls `@mailwoman/match`/`record`/`registry` in behind it a top-level import of that
294
+ * barrel regressed `@mailwoman/bdc`'s import time ~32% for EVERY consumer, including ones that never populate
295
+ * providers. `filer-lookup.ts` alone imports only `@mailwoman/sqlite/client`, `#schema` and `#frn` (measured
296
+ * 2026-09-01), so the heavy graph is no longer on this path at all. The laziness is kept because it also defers opening
297
+ * the filer database, and a static import here is now a viable simplification if someone wants to measure it — but it
298
+ * is no longer load-bearing for import time.
309
299
  */
310
- async function populateBDCProviderTable(kdb, providers, filerDB, asOf) {
300
+ async function populateBDCProviderTable(db, providers, filerDB, asOf) {
311
301
  const byProviderID = await groupProviderListRows(providers);
312
302
  const insertRows = [];
313
303
  let filerSDK;
@@ -323,7 +313,7 @@ async function populateBDCProviderTable(kdb, providers, filerDB, asOf) {
323
313
  "provider list — resolving the primary FRN (decision 6) requires `filerDB` to be supplied " +
324
314
  "alongside `providers`");
325
315
  }
326
- filerSDK ??= await import("@mailwoman/filer/sdk");
316
+ filerSDK ??= await import("@mailwoman/filer/filer-lookup");
327
317
  const candidates = await filerSDK.readFRNFilingCandidates(filerDB, distinctFRNs, asOf);
328
318
  frn = candidates.length ? filerSDK.pickPrimaryFRN(candidates) : null;
329
319
  }
@@ -334,7 +324,7 @@ async function populateBDCProviderTable(kdb, providers, filerDB, asOf) {
334
324
  insertRows.push({ provider_id: providerID, frn, brand_name: null, holding_company: holdingCompany });
335
325
  }
336
326
  for (let index = 0; index < insertRows.length; index += PROVIDER_INSERT_BATCH_SIZE) {
337
- await kdb
327
+ await db
338
328
  .insertInto("bdc_provider")
339
329
  .values(insertRows.slice(index, index + PROVIDER_INSERT_BATCH_SIZE))
340
330
  .execute();
@@ -352,54 +342,47 @@ export async function buildBDCDatabase(options) {
352
342
  throw new Error("buildBDCDatabase: pass either `rows` (test/injected source) or `csvPaths` (per-provider availability CSVs)");
353
343
  }
354
344
  const buildingPath = `${options.out}.building`;
355
- if (existsSync(buildingPath)) {
356
- rmSync(buildingPath);
345
+ if (await pathExists(buildingPath)) {
346
+ await removePath(buildingPath);
357
347
  }
358
- mkdirSync(dirname(options.out), { recursive: true });
348
+ await makeDirectories(dirname(options.out));
359
349
  // A crash inside a PRIOR run's swap can leave the slot empty while the previous version sits
360
350
  // parked aside — restore it before building, so a failure in THIS run still leaves an artifact
361
351
  // serving. Both aside spellings: this builder's old `.prev` and swapDatabaseIntoPlace's `.old-<pid>`.
362
- if (!existsSync(options.out)) {
352
+ if (!(await pathExists(options.out))) {
363
353
  const base = basename(options.out);
364
- const parked = readdirSync(dirname(options.out)).find((name) => name === `${base}.prev` || name.startsWith(`${base}.old-`));
354
+ const parked = (await readDirectory(dirname(options.out))).find((name) => name === `${base}.prev` || name.startsWith(`${base}.old-`));
365
355
  if (parked) {
366
- renameSync(join(dirname(options.out), parked), options.out);
356
+ await movePath(join(dirname(options.out), parked), options.out);
367
357
  progress(`restored ${parked} into place (a prior run crashed mid-swap)`);
368
358
  }
369
359
  }
370
360
  const rowSource = options.rows ?? readAvailabilityRowsFromCSVPaths(options.csvPaths);
371
- const db = new DatabaseSync(buildingPath);
361
+ const db = new DatabaseClient(buildingPath);
372
362
  // Build-tuning pragmas — identical to build-poi.ts's discipline.
373
363
  db.exec("PRAGMA page_size=8192; PRAGMA journal_mode=OFF; PRAGMA synchronous=OFF; PRAGMA cache_size=-2000000;");
374
- const kdb = new DatabaseClient({ database: db });
375
364
  // Assigned at the end of the try — the tallies live inside its scope; the seal + swap do not.
376
365
  let result;
377
366
  try {
378
367
  progress("creating manifest/coverage/availability/provider/stage tables");
379
- await createLayerManifestTable(kdb);
380
- await createLayerCoverageTable(kdb);
381
- await createBDCAvailabilityTable(kdb);
382
- await createBDCProviderTable(kdb);
383
- await createBDCStageTable(kdb);
368
+ await createLayerManifestTable(db);
369
+ await createLayerCoverageTable(db);
370
+ await createBDCAvailabilityTable(db);
371
+ await createBDCProviderTable(db);
372
+ await createBDCStageTable(db);
384
373
  const insStage = db.prepare(`INSERT OR IGNORE INTO bdc_stage (
385
374
  geoid, provider_id, technology_code, location_id,
386
375
  max_advertised_download_speed, max_advertised_upload_speed, low_latency, business_residential_code
387
376
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`);
388
377
  let staged = 0;
389
- let batch = 0;
390
378
  progress("staging rows — raw prepared INSERT OR IGNORE on the natural key (the Redis-dedup replacement)");
391
- db.exec("BEGIN");
379
+ const stageBatch = beginBatched(db, { rowsPerCommit: STAGE_BATCH_SIZE });
392
380
  for await (const row of rowSource) {
393
381
  insStage.run(row.geoid, row.provider_id, row.technology_code, row.location_id, row.max_advertised_download_speed, row.max_advertised_upload_speed, row.low_latency, row.business_residential_code);
394
382
  staged++;
395
- batch++;
396
- if (batch >= STAGE_BATCH_SIZE) {
397
- db.exec("COMMIT");
398
- db.exec("BEGIN");
399
- batch = 0;
400
- }
383
+ stageBatch.rowWritten();
401
384
  }
402
- db.exec("COMMIT");
385
+ stageBatch.commit();
403
386
  const stagedCountRow = db.prepare("SELECT COUNT(*) AS staged_count FROM bdc_stage").get();
404
387
  const deduped = staged - stagedCountRow.staged_count;
405
388
  progress(`staged ${stagedCountRow.staged_count.toLocaleString()} distinct row(s), ${deduped.toLocaleString()} deduped`);
@@ -436,8 +419,7 @@ export async function buildBDCDatabase(options) {
436
419
  max_advertised_download_speed, max_advertised_upload_speed, low_latency, business_residential_code
437
420
  FROM bdc_stage`);
438
421
  progress("materializing bdc_availability — resolving block centroids to h3_cell (unknown geoids skipped, never guessed)");
439
- db.exec("BEGIN");
440
- batch = 0;
422
+ const materializeBatch = beginBatched(db, { rowsPerCommit: STAGE_BATCH_SIZE });
441
423
  for (const row of stageStmt.iterate()) {
442
424
  let resolved = centroidCache.get(row.geoid);
443
425
  if (resolved === undefined) {
@@ -473,36 +455,26 @@ export async function buildBDCDatabase(options) {
473
455
  inserted++;
474
456
  providers.add(row.provider_id);
475
457
  coverage.set(resolved.coverageCell, (coverage.get(resolved.coverageCell) ?? 0) + 1);
476
- batch++;
477
- if (batch >= STAGE_BATCH_SIZE) {
478
- db.exec("COMMIT");
479
- db.exec("BEGIN");
480
- batch = 0;
481
- }
458
+ materializeBatch.rowWritten();
482
459
  }
483
- db.exec("COMMIT");
460
+ materializeBatch.commit();
484
461
  progress(`materialized ${inserted.toLocaleString()} row(s) across ${providers.size} provider(s) ` +
485
462
  `(${unknownGeoids.toLocaleString()} unknown geoid(s) skipped)`);
486
- await kdb.schema.dropTable("bdc_stage").execute();
463
+ await db.schema.dropTable("bdc_stage").execute();
487
464
  progress("geoid index (index-after-load — see schema.ts)");
488
- await createBDCGeoidIndex(kdb);
465
+ await createBDCGeoidIndex(db);
489
466
  // Coverage is SOURCE-LEVEL, not survey completeness — same convention build-poi.ts documents: a res-6 cell we
490
467
  // have availability rows in is recorded at completeness 1.0. A cell absent from `layer_coverage` means no rows
491
468
  // were observed there at all (the meaning-of-zero rule — missing = unknown, never `{completeness: 0}`).
492
- const coverageCells = [...coverage.entries()].map(([h3Cell, observedRows]) => ({
493
- h3Cell,
494
- completeness: 1,
495
- basis: CoverageBasis.SourcePresent,
496
- observedRows,
497
- }));
498
- await writeLayerCoverage(kdb, coverageCells);
469
+ const coverageCells = sourcePresentCoverageCells(coverage);
470
+ await writeLayerCoverage(db, coverageCells);
499
471
  progress("writing layer manifest");
500
- await writeLayerManifest(kdb, {
472
+ await writeLayerManifest(db, {
501
473
  name: "bdc",
502
474
  version: options.asOfDate,
503
475
  schemaVersion: 1,
504
476
  tier: LayerTier.Shipped,
505
- license: "public-domain",
477
+ license: "LicenseRef-USGov-Public-Domain",
506
478
  attribution: BDC_ATTRIBUTION,
507
479
  source: "fcc-bdc",
508
480
  sourceVintage: options.asOfDate,
@@ -512,13 +484,13 @@ export async function buildBDCDatabase(options) {
512
484
  spineKeys: { h3: { column: "h3_cell", resolution: BDC_H3_RESOLUTION }, wofID: "wof_id" },
513
485
  createdAt: new Date().toISOString(),
514
486
  });
515
- // bdc_provider population (2a decision 8 / 3a decision 6) — entirely additive and gated behind
487
+ // bdc_provider population (2a decision 8 / 3a decision 6) — entirely additive and conditioned on
516
488
  // `options.providers`: when absent, this block never runs and `bdc_provider` stays empty (see
517
489
  // `BuildBDCOptions.providers`'s docstring for the default-path guarantee).
518
490
  let providersPopulated = 0;
519
491
  if (options.providers) {
520
492
  progress("populating bdc_provider from the provider list (decision 6 — lossy denormalization, see schema.ts)");
521
- providersPopulated = await populateBDCProviderTable(kdb, options.providers, options.filerDB, options.primaryFRNAsOf ?? options.asOfDate);
493
+ providersPopulated = await populateBDCProviderTable(db, options.providers, options.filerDB, options.primaryFRNAsOf ?? options.asOfDate);
522
494
  progress(`bdc_provider: ${providersPopulated.toLocaleString()} provider(s) populated`);
523
495
  }
524
496
  progress("finalize: ANALYZE + VACUUM");
@@ -528,7 +500,7 @@ export async function buildBDCDatabase(options) {
528
500
  // same discipline).
529
501
  db.exec("PRAGMA page_size=8192");
530
502
  db.exec("VACUUM");
531
- await kdb.destroy();
503
+ await db.destroy();
532
504
  result = {
533
505
  out: options.out,
534
506
  rows: inserted,
@@ -543,19 +515,19 @@ export async function buildBDCDatabase(options) {
543
515
  // A mid-build throw must not leak the handle or orphan the staging file. The original error
544
516
  // always wins over anything the cleanup itself throws.
545
517
  try {
546
- await kdb.destroy();
518
+ await db.destroy();
547
519
  }
548
520
  catch {
549
521
  // The handle may already be closed or mid-statement — nothing more to release.
550
522
  }
551
- rmSync(buildingPath, { force: true });
523
+ await removePathIfPresent(buildingPath);
552
524
  throw error;
553
525
  }
554
526
  progress("seal");
555
- sealDatabase(buildingPath);
527
+ await sealDatabase(buildingPath);
556
528
  // Atomic move-into-place via the shared helper (the AGENTS.md database house rule): prior
557
529
  // version aside first, forward rename restored on failure so the slot is never left empty.
558
- swapDatabaseIntoPlace(buildingPath, options.out);
530
+ await swapDatabaseIntoPlace(buildingPath, options.out);
559
531
  return result;
560
532
  }
561
533
  //# sourceMappingURL=build-bdc.js.map
@@ -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":["../../lib/sdk/build-bdc.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildings.d.ts","sourceRoot":"","sources":["../../sdk/buildings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;IAC5B;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;OAGG;;IAEH;;OAEG;;IAEH;;;;OAIG;;CAEM,CAAA;AAEV;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAA;AAEvF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;IACnC;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEM,CAAA;AAEV;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,OAAO,uBAAuB,CAAC,CAAA"}
1
+ {"version":3,"file":"buildings.d.ts","sourceRoot":"","sources":["../../lib/sdk/buildings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;IAC5B;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;OAGG;;IAEH;;OAEG;;IAEH;;;;OAIG;;CAEM,CAAA;AAEV;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAA;AAEvF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;IACnC;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEM,CAAA;AAEV;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,OAAO,uBAAuB,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildings.js","sourceRoot":"","sources":["../../sdk/buildings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC/B;;;;OAIG;IACH,WAAW,EAAE,GAAG;IAChB;;;;OAIG;IACH,cAAc,EAAE,GAAG;IACnB;;;;OAIG;IACH,KAAK,EAAE,GAAG;IACV;;;;OAIG;IACH,aAAa,EAAE,GAAG;IAClB;;;OAGG;IACH,GAAG,EAAE,GAAG;IACR;;OAEG;IACH,UAAU,EAAE,GAAG;IACf;;;;OAIG;IACH,KAAK,EAAE,GAAG;CACD,CAAA;AAQV;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACtC;;OAEG;IACH,QAAQ,EAAE,gBAAgB,CAAC,cAAc;IACzC;;OAEG;IACH,WAAW,EAAE,gBAAgB,CAAC,WAAW;IACzC;;OAEG;IACH,KAAK,EAAE,gBAAgB,CAAC,KAAK;CACpB,CAAA"}
1
+ {"version":3,"file":"buildings.js","sourceRoot":"","sources":["../../lib/sdk/buildings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC/B;;;;OAIG;IACH,WAAW,EAAE,GAAG;IAChB;;;;OAIG;IACH,cAAc,EAAE,GAAG;IACnB;;;;OAIG;IACH,KAAK,EAAE,GAAG;IACV;;;;OAIG;IACH,aAAa,EAAE,GAAG;IAClB;;;OAGG;IACH,GAAG,EAAE,GAAG;IACR;;OAEG;IACH,UAAU,EAAE,GAAG;IACf;;;;OAIG;IACH,KAAK,EAAE,GAAG;CACD,CAAA;AAQV;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACtC;;OAEG;IACH,QAAQ,EAAE,gBAAgB,CAAC,cAAc;IACzC;;OAEG;IACH,WAAW,EAAE,gBAAgB,CAAC,WAAW;IACzC;;OAEG;IACH,KAAK,EAAE,gBAAgB,CAAC,KAAK;CACpB,CAAA"}
@@ -16,7 +16,7 @@
16
16
  * 2. The `username` + `hash_value` PLAIN HEADER PAIR — read carefully off the Nexus original's
17
17
  * `axios.headers` config, this is NOT bearer or basic auth.
18
18
  * 3. The request budget: {@linkcode BDC_DEFAULT_REQUESTS_PER_MINUTE} requests per MINUTE, six
19
- * seconds apart. See that constant for the sourcing and for why the interval gate is set too.
19
+ * seconds apart. See that constant for the sourcing and for why the interval limit is set too.
20
20
  * 4. UN-UNWRAPPED response bodies. Every BDC endpoint nests its payload under a `data` key
21
21
  * (`{ data: [...] }`), and callers pluck `.data` themselves at the call site — `filing-dates.ts`
22
22
  * and `list-files.ts` both do. {@linkcode BDCClient.get} deliberately does NOT unwrap, so the
@@ -36,8 +36,6 @@
36
36
  * | undecodable body | programmer bug | `isTransientResourceError(error)` is false |
37
37
  */
38
38
  import { APIClient, type APIClientConfig, type ClockLike } from "@mailwoman/core/api";
39
- export { isTransientResourceError } from "@mailwoman/core/api";
40
- export { ResourceError } from "@mailwoman/core/errors";
41
39
  /**
42
40
  * The FCC BDC public-API base URL every request is resolved against.
43
41
  */
@@ -114,9 +112,9 @@ export interface CreateBDCClientOptions {
114
112
  */
115
113
  downloadTimeoutMs?: number;
116
114
  /**
117
- * Axios overrides, merged over this client's own defaults. THE TEST SEAM, replacing the old `fetchImpl` option: every
118
- * test passes an `adapter` here, so no test in this workspace ever performs a live network call. Overriding `headers`
119
- * wholesale would drop the credential pair, so don't.
115
+ * Axios overrides, merged over this client's own defaults. THE TEST INJECTION POINT, replacing the old `fetchImpl`
116
+ * option: every test passes an `adapter` here, so no test in this workspace ever performs a live network call.
117
+ * Overriding `headers` wholesale would drop the credential pair, so don't.
120
118
  */
121
119
  axios?: APIClientConfig["axios"];
122
120
  }
@@ -154,10 +152,10 @@ export interface BDCThrottleStats {
154
152
  */
155
153
  waits: number;
156
154
  /**
157
- * How many times the per-minute BUDGET gate opened a cooldown, counted off `APIClient`'s `cooldown_start` event. With
158
- * the interval gate also configured this is one per budget's worth of requests, and each is a REAL wait, not a
155
+ * How many times the per-minute BUDGET limit opened a cooldown, counted off `APIClient`'s `cooldown_start` event.
156
+ * With the interval limit also configured this is one per budget's worth of requests, and each is a REAL wait, not a
159
157
  * zero-length window-rollover marker: the budget's cooldown runs to the end of the minute the window opened in
160
- * (`APIClient.#reserveCooldownSlot`), and the interval gate has by then spent only `(N-1) * 60000/N` ms of it. At
158
+ * (`APIClient.#reserveCooldownSlot`), and the interval limit has by then spent only `(N-1) * 60000/N` ms of it. At
161
159
  * 10/minute that is a 6 s cooldown per 10 requests. Some of {@linkcode BDCThrottleStats.waitingMs} is therefore
162
160
  * cooldown, not pacing. See {@linkcode createBDCClient} for the full arrival trace.
163
161
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../sdk/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,KAAK,SAAS,EAAe,MAAM,qBAAqB,CAAA;AAOlG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEtD;;GAEG;AACH,eAAO,MAAM,gBAAgB,4CAA4C,CAAA;AAEzE;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,+BAA+B,KAAK,CAAA;AAqEjD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;CAChC;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAA;AAExE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;;OAOG;IACH,SAAS,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACvD;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;CACzC;AAoGD;;;GAGG;AACH,qBAAa,SAAU,SAAQ,SAAS,CAAC,eAAe,CAAC;;IACxD;;;;;;;;;;OAUG;IACU,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAUnG;;;;;;;;;;;;;OAaG;IACU,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAaxF;;;;OAIG;IACI,aAAa,IAAI,gBAAgB;CAiBxC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAOtE;AAyED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,SAAS,CAwG/E"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../lib/sdk/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAuB,SAAS,EAAE,KAAK,eAAe,EAAE,KAAK,SAAS,EAAe,MAAM,qBAAqB,CAAA;AASvH;;GAEG;AACH,eAAO,MAAM,gBAAgB,4CAA4C,CAAA;AAEzE;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,+BAA+B,KAAK,CAAA;AAsDjD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;CAChC;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAA;AAExE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;;OAOG;IACH,SAAS,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACvD;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;CACzC;AAoGD;;;GAGG;AACH,qBAAa,SAAU,SAAQ,SAAS,CAAC,eAAe,CAAC;;IACxD;;;;;;;;;;OAUG;IACU,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAUnG;;;;;;;;;;;;;OAaG;IACU,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAaxF;;;;OAIG;IACI,aAAa,IAAI,gBAAgB;CAiBxC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAOtE;AAyED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,SAAS,CAwG/E"}
package/out/sdk/client.js CHANGED
@@ -16,7 +16,7 @@
16
16
  * 2. The `username` + `hash_value` PLAIN HEADER PAIR — read carefully off the Nexus original's
17
17
  * `axios.headers` config, this is NOT bearer or basic auth.
18
18
  * 3. The request budget: {@linkcode BDC_DEFAULT_REQUESTS_PER_MINUTE} requests per MINUTE, six
19
- * seconds apart. See that constant for the sourcing and for why the interval gate is set too.
19
+ * seconds apart. See that constant for the sourcing and for why the interval limit is set too.
20
20
  * 4. UN-UNWRAPPED response bodies. Every BDC endpoint nests its payload under a `data` key
21
21
  * (`{ data: [...] }`), and callers pluck `.data` themselves at the call site — `filing-dates.ts`
22
22
  * and `list-files.ts` both do. {@linkcode BDCClient.get} deliberately does NOT unwrap, so the
@@ -35,14 +35,12 @@
35
35
  * | exhausted network/timeout | requeue | `isTransientResourceError(error)` |
36
36
  * | undecodable body | programmer bug | `isTransientResourceError(error)` is false |
37
37
  */
38
- import { APIClient, systemClock } from "@mailwoman/core/api";
38
+ import { API_CLIENT_DEFAULTS, APIClient, systemClock } from "@mailwoman/core/api";
39
39
  import { buildDiskStorage } from "@mailwoman/core/api/disk-storage";
40
- import { $private } from "@mailwoman/core/env";
40
+ import { dataRootPath } from "@mailwoman/core/data-root";
41
41
  import { ResourceError } from "@mailwoman/core/errors";
42
- import { dataRootPath } from "@mailwoman/core/utils";
42
+ import { $private } from "#env";
43
43
  // Re-exported so a caller branching on this client's failures needs exactly one import.
44
- export { isTransientResourceError } from "@mailwoman/core/api";
45
- export { ResourceError } from "@mailwoman/core/errors";
46
44
  /**
47
45
  * The FCC BDC public-API base URL every request is resolved against.
48
46
  */
@@ -95,18 +93,6 @@ const PERCENT = 100;
95
93
  * is an index that can gain a revision, so ONE TTL covers all of them.
96
94
  */
97
95
  const DEFAULT_CACHE_TTL_MS = 24 * 60 * 60 * 1000;
98
- /**
99
- * Total attempts (including the first) before giving up on a 429/5xx or a network-class failure.
100
- */
101
- const DEFAULT_MAX_ATTEMPTS = 3;
102
- /**
103
- * Base delay for the exponential backoff between retry attempts, in milliseconds.
104
- */
105
- const DEFAULT_BASE_RETRY_DELAY_MS = 500;
106
- /**
107
- * Per-attempt socket-inactivity timeout for a JSON request, in milliseconds.
108
- */
109
- const DEFAULT_REQUEST_TIMEOUT_MS = 30_000;
110
96
  /**
111
97
  * Per-attempt socket-inactivity timeout for a zip download, in milliseconds — deliberately far longer than the JSON
112
98
  * one. A BDC availability archive is routinely hundreds of megabytes, and Axios applies `timeout` through
@@ -128,7 +114,7 @@ const HTTP_FORBIDDEN = 403;
128
114
  /**
129
115
  * Build the absolute request URL for `path`, with `params` as its query string.
130
116
  *
131
- * `path` is APPENDED to {@linkcode BDC_API_BASE_URL}, never RESOLVED against it. That distinction is load-bearing: `new
117
+ * `path` is APPENDED to {@linkcode BDC_API_BASE_URL}, never RESOLVED against it. That distinction is required: `new
132
118
  * URL("https://elsewhere.example/x", BDC_API_BASE_URL)` would resolve to `elsewhere.example` and carry the credential
133
119
  * header pair there, while string concatenation can only ever produce a path under the BDC origin.
134
120
  */
@@ -270,9 +256,9 @@ function formatDuration(ms) {
270
256
  /**
271
257
  * A {@linkcode ClockLike} that records how long the client spends asleep, plus the reader that snapshots it.
272
258
  *
273
- * The clock is the only seam `APIClient` exposes that every wait passes through — the pacer sleeps on it, the cooldown
274
- * timer sleeps on it, and the retry backoff sleeps on it — so wrapping it is how the waiting becomes visible without
275
- * touching `core/api`.
259
+ * The clock is the only injection point `APIClient` exposes that every wait passes through — the pacer sleeps on it,
260
+ * the cooldown timer sleeps on it, and the retry backoff sleeps on it — so wrapping it is how the waiting becomes
261
+ * visible without touching `core/api`.
276
262
  *
277
263
  * WAITS ARE UNIONED, NOT SUMMED, and that is the whole subtlety here. Under a concurrent fan-out every caller sleeps at
278
264
  * once, and each one's wait is longer than the last: 40 concurrent requests at a 6 s interval sleep 6 s, 12 s, … 234 s,
@@ -342,20 +328,20 @@ export function createBDCClient(options = {}) {
342
328
  username,
343
329
  downloadTimeoutMs: options.downloadTimeoutMs ?? DEFAULT_DOWNLOAD_TIMEOUT_MS,
344
330
  readThrottleStats: () => meter.read(cooldowns),
345
- // BOTH GATES, on purpose, and the interval is the one that holds the rate.
331
+ // BOTH LIMITS, on purpose, and the interval is the one that holds the rate.
346
332
  //
347
333
  // `requestsPerMinute` alone does NOT deliver N requests per minute. It is a budget model whose
348
334
  // cooldown is `MS_PER_MINUTE / N` minus the gap since the previous dispatch — so N dispatches go out
349
335
  // back to back and the client then waits 60000/N ms, i.e. N requests every 60/N SECONDS. Measured
350
336
  // against a bare `APIClient` at `requestsPerMinute: 10` with a 20-call fan-out on a virtual clock:
351
337
  // arrivals at `[0 x10, 6000 x10]`, i.e. 20 inside one sliding minute against a budget of 10, and a
352
- // sustained 100 requests/minute — ten times the published limit. `minRequestIntervalMs` is the gate
338
+ // sustained 100 requests/minute — ten times the published limit. `minRequestIntervalMs` is the limit
353
339
  // that actually spaces dispatches, and it is what makes this client honor 10/minute.
354
340
  //
355
- // The budget is still declared rather than dropped — and it is NOT free. The two gates compose (both
341
+ // The budget is still declared rather than dropped — and it is NOT free. The two limits compose (both
356
342
  // must clear), so the budget's cooldown still fires, and it is a REAL wait: `APIClient` measures that
357
- // cooldown to the end of the MINUTE the window opened in, while the interval gate has by then spent
358
- // only `(N-1) * 60000/N` ms of it. With both gates on 10/minute, arrivals run `0, 6, …, 54 s`; the
343
+ // cooldown to the end of the MINUTE the window opened in, while the interval limit has by then spent
344
+ // only `(N-1) * 60000/N` ms of it. With both limits on 10/minute, arrivals run `0, 6, …, 54 s`; the
359
345
  // 10th dispatch opens a `60000 - 54000 = 6000 ms` cooldown; the pacer's grant for #11 is discarded
360
346
  // across that wait (`acquireDispatchSlot` re-acquires rather than holding a stale grant, under-issuing
361
347
  // by one — the safe direction), so #11 lands at 66 s and the pattern repeats. Steady state is 10
@@ -365,12 +351,12 @@ export function createBDCClient(options = {}) {
365
351
  // Declaring the budget states the intent in the option whose name matches the published limit. If
366
352
  // `requestsPerMinute` is ever corrected in `core/api` to mean what it says, this client already
367
353
  // declares the right budget and the interval becomes a redundant second ceiling rather than the
368
- // load-bearing one.
354
+ // required one.
369
355
  requestsPerMinute,
370
356
  minRequestIntervalMs: Math.ceil(MS_PER_MINUTE / requestsPerMinute),
371
357
  retry: {
372
- maxAttempts: options.maxAttempts ?? DEFAULT_MAX_ATTEMPTS,
373
- baseDelayMs: options.baseRetryDelayMs ?? DEFAULT_BASE_RETRY_DELAY_MS,
358
+ maxAttempts: options.maxAttempts ?? API_CLIENT_DEFAULTS.maxAttempts,
359
+ baseDelayMs: options.baseRetryDelayMs ?? API_CLIENT_DEFAULTS.baseRetryDelayMs,
374
360
  },
375
361
  clock: meter.clock,
376
362
  caching: {
@@ -402,7 +388,7 @@ export function createBDCClient(options = {}) {
402
388
  username,
403
389
  hash_value: apiKey,
404
390
  },
405
- timeout: options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
391
+ timeout: options.requestTimeoutMs ?? API_CLIENT_DEFAULTS.requestTimeoutMs,
406
392
  responseType: "json",
407
393
  // `silentJSONParsing` defaults to TRUE, which makes Axios hand back the RAW STRING when a body
408
394
  // fails to parse instead of raising. An upstream serving an HTML error page under a 200 would