@cliwant/mcp-sam-gov 1.3.0 → 1.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/README.ja.md +15 -7
  2. package/README.ko.md +15 -7
  3. package/README.md +48 -8
  4. package/dist/bea.d.ts +1 -1
  5. package/dist/bea.js +1 -1
  6. package/dist/census-economic.d.ts +1 -1
  7. package/dist/census-economic.d.ts.map +1 -1
  8. package/dist/census-economic.js +12 -6
  9. package/dist/census-economic.js.map +1 -1
  10. package/dist/cms-facility.d.ts +112 -0
  11. package/dist/cms-facility.d.ts.map +1 -0
  12. package/dist/cms-facility.js +311 -0
  13. package/dist/cms-facility.js.map +1 -0
  14. package/dist/cms-hospital.d.ts +105 -0
  15. package/dist/cms-hospital.d.ts.map +1 -0
  16. package/dist/cms-hospital.js +290 -0
  17. package/dist/cms-hospital.js.map +1 -0
  18. package/dist/cms-supplier.d.ts +133 -0
  19. package/dist/cms-supplier.d.ts.map +1 -0
  20. package/dist/cms-supplier.js +414 -0
  21. package/dist/cms-supplier.js.map +1 -0
  22. package/dist/cms-utilization.d.ts +113 -0
  23. package/dist/cms-utilization.d.ts.map +1 -0
  24. package/dist/cms-utilization.js +328 -0
  25. package/dist/cms-utilization.js.map +1 -0
  26. package/dist/courtlistener.d.ts +115 -0
  27. package/dist/courtlistener.d.ts.map +1 -0
  28. package/dist/courtlistener.js +398 -0
  29. package/dist/courtlistener.js.map +1 -0
  30. package/dist/cpsc.d.ts +81 -0
  31. package/dist/cpsc.d.ts.map +1 -0
  32. package/dist/cpsc.js +283 -0
  33. package/dist/cpsc.js.map +1 -0
  34. package/dist/dol.d.ts +2 -2
  35. package/dist/dol.js +5 -5
  36. package/dist/dol.js.map +1 -1
  37. package/dist/epa-envirofacts.d.ts +97 -0
  38. package/dist/epa-envirofacts.d.ts.map +1 -0
  39. package/dist/epa-envirofacts.js +292 -0
  40. package/dist/epa-envirofacts.js.map +1 -0
  41. package/dist/fred.d.ts +1 -1
  42. package/dist/fred.js +1 -1
  43. package/dist/keys.d.ts +6 -5
  44. package/dist/keys.d.ts.map +1 -1
  45. package/dist/keys.js +25 -6
  46. package/dist/keys.js.map +1 -1
  47. package/dist/nhtsa.d.ts +91 -0
  48. package/dist/nhtsa.d.ts.map +1 -0
  49. package/dist/nhtsa.js +263 -0
  50. package/dist/nhtsa.js.map +1 -0
  51. package/dist/nonprofit.d.ts +116 -0
  52. package/dist/nonprofit.d.ts.map +1 -0
  53. package/dist/nonprofit.js +342 -0
  54. package/dist/nonprofit.js.map +1 -0
  55. package/dist/openfda-device.d.ts +85 -0
  56. package/dist/openfda-device.d.ts.map +1 -0
  57. package/dist/openfda-device.js +277 -0
  58. package/dist/openfda-device.js.map +1 -0
  59. package/dist/openfda.d.ts +133 -0
  60. package/dist/openfda.d.ts.map +1 -0
  61. package/dist/openfda.js +402 -0
  62. package/dist/openfda.js.map +1 -0
  63. package/dist/server.d.ts.map +1 -1
  64. package/dist/server.js +666 -7
  65. package/dist/server.js.map +1 -1
  66. package/package.json +2 -1
  67. package/src/bea.ts +1 -1
  68. package/src/census-economic.ts +12 -6
  69. package/src/cms-facility.ts +379 -0
  70. package/src/cms-hospital.ts +344 -0
  71. package/src/cms-supplier.ts +527 -0
  72. package/src/cms-utilization.ts +389 -0
  73. package/src/courtlistener.ts +465 -0
  74. package/src/cpsc.ts +333 -0
  75. package/src/dol.ts +5 -5
  76. package/src/epa-envirofacts.ts +342 -0
  77. package/src/fred.ts +1 -1
  78. package/src/keys.ts +27 -6
  79. package/src/nhtsa.ts +352 -0
  80. package/src/nonprofit.ts +460 -0
  81. package/src/openfda-device.ts +356 -0
  82. package/src/openfda.ts +495 -0
  83. package/src/server.ts +765 -7
package/dist/cpsc.js ADDED
@@ -0,0 +1,283 @@
1
+ /**
2
+ * cpsc.ts — CPSC CONSUMER-PRODUCT RECALLS (www.saferproducts.gov) — the consumer
3
+ * goods / import product-safety vetting lane (ADR-0058). ONE keyless tool:
4
+ * • cpsc_recalls — /RestWebServices/Recall?format=json + date/product/manufacturer/
5
+ * recallNumber filters.
6
+ * The third leg of the cross-agency product-safety family alongside NHTSA (vehicles)
7
+ * and openFDA (medical/food): a manufacturer / product / hazard recall history for
8
+ * B2G supplier and import vetting.
9
+ *
10
+ * ★ KEYLESS — there is NO API key at all (no parameter, no header). This module
11
+ * touches NO key seam (no KEY_REGISTRY / keys.ts / API_KEYS.md). It REUSES the
12
+ * shared `getJson` (redirect:"error") / `driftError` fetch envelope, the `str`
13
+ * coercion (null-never-empty-string), and `withMeta`/`buildMeta` — and mirrors
14
+ * nhtsa.ts / datagov-catalog.ts's fixed-host SSRF idiom + schema_drift
15
+ * catch-ladder verbatim.
16
+ *
17
+ * ★ THE HONESTY PILLARS (P1-P5, live-verified 2026-07-15):
18
+ * P1: the /Recall response is a BARE JSON ARRAY with NO count field and NO server
19
+ * pagination — it returns the COMPLETE set matching the filter. So
20
+ * totalAvailable = results.length and complete:true, WITH a disclosing note
21
+ * that CPSC reports no total-count field / no pagination. A total is NEVER
22
+ * fabricated (there is no upstream total to trust; the honest total is the
23
+ * length of the complete set).
24
+ * P2: an empty array `[]` ⇒ an HONEST EMPTY (returned:0, complete:true) — a filter
25
+ * that matches nothing is an honest no-match, NOT an error. A 4xx ⇒
26
+ * invalid_input; a 5xx/timeout ⇒ THROW (never a fake empty); a 200 non-JSON
27
+ * body OR a non-array body ⇒ schema_drift (never a fabricated empty).
28
+ * P3: dates stay STRINGS (via `str`); NumberOfUnits is free text ("About 6,500")
29
+ * kept as a STRING; nested arrays (Products/Manufacturers/Retailers/Hazards/
30
+ * Remedies/Injuries/ManufacturerCountries) are flattened to string arrays by
31
+ * extracting each object's `.Name` (★ManufacturerCountries uses `.Country`,
32
+ * NOT `.Name`), SKIPPING an empty `{}` object (never a fabricated entry); a
33
+ * genuinely-absent nested array ⇒ []; null-never-empty-string throughout.
34
+ * P4: the top-level body MUST be an array — a non-array (object/string/null) ⇒
35
+ * driftError (a broken response contract, never a fabricated empty).
36
+ * DEFAULT-WINDOW: with NO filter given, the unfiltered result is huge, so the tool
37
+ * defaults RecallDateStart to ~90 days ago and DISCLOSES the default in a note
38
+ * — it NEVER silently fetches the whole dataset.
39
+ * SSRF: fixed host `www.saferproducts.gov` (compile-time literal) + post-construction
40
+ * hostname/protocol assertion + redirect:"error"; every filter rides a
41
+ * module-built URLSearchParams (no raw passthrough); dates are ^\d{4}-\d{2}-\d{2}$;
42
+ * recallNumber is charclass-validated (letters/digits/hyphen only), so a
43
+ * `../` or `%` can never reach the fixed path.
44
+ */
45
+ import { ToolErrorCarrier } from "./errors.js";
46
+ import { getJson, driftError } from "./datasource.js";
47
+ import { str } from "./coerce.js";
48
+ import { withMeta } from "./meta.js";
49
+ // ─── Fixed endpoint (SSRF core — compile-time CONSTANTS) ──────────
50
+ export const CPSC_HOST = "www.saferproducts.gov";
51
+ const CPSC_RECALL_PATH = "/RestWebServices/Recall";
52
+ // HOST+path-only label (→ ToolError.upstreamEndpoint). Keyless ⇒ no token can ever
53
+ // appear here regardless, but the label stays host+path for consistency.
54
+ const CPSC_RECALL_LABEL = "cpsc:/RestWebServices/Recall";
55
+ // ─── Input validation grammar (SSRF + injection guard) ────────────
56
+ // dates: strict YYYY-MM-DD. recallNumber: letters/digits/hyphen only — rejects
57
+ // `../`, `%`, `/`, `.`, spaces, quotes, so a value can never break out of the
58
+ // URLSearchParams-encoded query onto the fixed host/path.
59
+ export const CPSC_DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
60
+ export const CPSC_RECALL_NUMBER_RE = /^[A-Za-z0-9-]+$/;
61
+ // The default recent-window span (days) applied when NO filter is given, so an
62
+ // unbounded whole-dataset fetch never happens silently.
63
+ const CPSC_DEFAULT_WINDOW_DAYS = 90;
64
+ const KEYLESS_NOTE = "CPSC SaferProducts is a keyless public API (www.saferproducts.gov) — no API key is required or accepted.";
65
+ // The P1 load-bearing honesty caveat carried on EVERY response.
66
+ const CPSC_NO_PAGINATION_NOTE = "CPSC returns the complete matching set (no server pagination or total-count field) — totalAvailable is the number of returned recalls (the size of the complete set), not an upstream-reported total.";
67
+ // ─── Nested-array flatteners (P3) ─────────────────────────────────
68
+ /**
69
+ * Flatten a CPSC nested array (Products/Manufacturers/Retailers/Hazards/Remedies/
70
+ * Injuries/ManufacturerCountries) to a string[] by extracting `field` from each
71
+ * object via `str` (null-never-empty-string). An empty `{}` object (or one whose
72
+ * `field` is absent/blank) is SKIPPED — never a fabricated entry. A non-array
73
+ * (absent nested array) ⇒ [].
74
+ */
75
+ function extractField(x, field) {
76
+ if (!Array.isArray(x))
77
+ return [];
78
+ const out = [];
79
+ for (const el of x) {
80
+ if (el === null || typeof el !== "object")
81
+ continue;
82
+ const v = str(el[field]);
83
+ if (v !== null)
84
+ out.push(v);
85
+ }
86
+ return out;
87
+ }
88
+ /**
89
+ * The recall-level numberOfUnits (P3): CPSC carries NumberOfUnits per PRODUCT as
90
+ * FREE TEXT ("About 6,500"), so this returns the FIRST product's non-blank
91
+ * NumberOfUnits as a STRING (never numerically coerced), or null when none is
92
+ * present (null-never-empty-string).
93
+ */
94
+ function firstNumberOfUnits(products) {
95
+ if (!Array.isArray(products))
96
+ return null;
97
+ for (const p of products) {
98
+ if (p === null || typeof p !== "object")
99
+ continue;
100
+ const v = str(p.NumberOfUnits);
101
+ if (v !== null)
102
+ return v;
103
+ }
104
+ return null;
105
+ }
106
+ /**
107
+ * Map ONE /Recall row → the curated recall shape. Scalars via `str`
108
+ * (null-never-empty-string; dates stay strings). Nested arrays flattened via
109
+ * `extractField` on `.Name` — EXCEPT ManufacturerCountries, which carries `.Country`.
110
+ */
111
+ function mapRecall(row) {
112
+ const r = (row ?? {});
113
+ return {
114
+ recallNumber: str(r.RecallNumber),
115
+ recallDate: str(r.RecallDate),
116
+ title: str(r.Title),
117
+ description: str(r.Description),
118
+ url: str(r.URL),
119
+ products: extractField(r.Products, "Name"),
120
+ numberOfUnits: firstNumberOfUnits(r.Products),
121
+ manufacturers: extractField(r.Manufacturers, "Name"),
122
+ retailers: extractField(r.Retailers, "Name"),
123
+ hazards: extractField(r.Hazards, "Name"),
124
+ remedies: extractField(r.Remedies, "Name"),
125
+ injuries: extractField(r.Injuries, "Name"),
126
+ // ★ ManufacturerCountries objects carry `Country`, not `Name` (live-verified).
127
+ manufacturerCountries: extractField(r.ManufacturerCountries, "Country"),
128
+ };
129
+ }
130
+ /**
131
+ * Validate the optional inputs PRE-fetch (0 network call). A DIRECT handler call
132
+ * bypasses the server Zod, so re-guard the SSRF-relevant grammars here: dates are
133
+ * ^\d{4}-\d{2}-\d{2}$; recallNumber is letters/digits/hyphen only. productName /
134
+ * manufacturer are free text (they ride URLSearchParams-encoded, so injection is
135
+ * neutralized by encoding — no charclass needed, but they are validated as strings).
136
+ */
137
+ function validateArgs(args) {
138
+ const dateChecks = [
139
+ ["dateStart", args.dateStart],
140
+ ["dateEnd", args.dateEnd],
141
+ ];
142
+ for (const [name, value] of dateChecks) {
143
+ if (value !== undefined && (typeof value !== "string" || !CPSC_DATE_RE.test(value))) {
144
+ throw new ToolErrorCarrier({
145
+ kind: "invalid_input",
146
+ retryable: false,
147
+ message: `Invalid ${name} ${JSON.stringify(value)} — expected a YYYY-MM-DD date (^\\d{4}-\\d{2}-\\d{2}$), e.g. "2025-01-01".`,
148
+ upstreamEndpoint: CPSC_RECALL_LABEL,
149
+ });
150
+ }
151
+ }
152
+ if (args.recallNumber !== undefined &&
153
+ (typeof args.recallNumber !== "string" || !CPSC_RECALL_NUMBER_RE.test(args.recallNumber))) {
154
+ throw new ToolErrorCarrier({
155
+ kind: "invalid_input",
156
+ retryable: false,
157
+ message: `Invalid recallNumber ${JSON.stringify(args.recallNumber)} — expected letters/digits/hyphen only (^[A-Za-z0-9-]+$), e.g. "25088".`,
158
+ upstreamEndpoint: CPSC_RECALL_LABEL,
159
+ });
160
+ }
161
+ for (const [name, value] of [
162
+ ["productName", args.productName],
163
+ ["manufacturer", args.manufacturer],
164
+ ]) {
165
+ if (value !== undefined && typeof value !== "string") {
166
+ throw new ToolErrorCarrier({
167
+ kind: "invalid_input",
168
+ retryable: false,
169
+ message: `Invalid ${name} — expected a string.`,
170
+ upstreamEndpoint: CPSC_RECALL_LABEL,
171
+ });
172
+ }
173
+ }
174
+ }
175
+ // ─── SSRF-guarded fetch (fixed host + hostname assertion + redirect) ──
176
+ /**
177
+ * GET the CPSC /Recall JSON on the FIXED host. Builds
178
+ * `https://www.saferproducts.gov/RestWebServices/Recall?${params}`, asserts the
179
+ * CONSTRUCTED URL's hostname === the fixed host over https (belt-and-suspenders),
180
+ * and sets `redirect:"error"` (fail closed on any off-host 3xx). Keyless — no
181
+ * header/token.
182
+ */
183
+ async function getCpsc(params) {
184
+ const url = `https://${CPSC_HOST}${CPSC_RECALL_PATH}?${params.toString()}`;
185
+ const built = new URL(url);
186
+ if (built.hostname !== CPSC_HOST || built.protocol !== "https:") {
187
+ throw new ToolErrorCarrier({
188
+ kind: "invalid_input",
189
+ retryable: false,
190
+ message: `Constructed CPSC URL host ${JSON.stringify(built.hostname)} (${built.protocol}) does not match the fixed host ${JSON.stringify(CPSC_HOST)} over https — refusing to fetch (SSRF safety).`,
191
+ upstreamEndpoint: CPSC_RECALL_LABEL,
192
+ });
193
+ }
194
+ return getJson(url, { label: CPSC_RECALL_LABEL, redirect: "error" });
195
+ }
196
+ /** Compute an ISO YYYY-MM-DD `days` days before now (the default-window start). */
197
+ function daysAgoIso(days) {
198
+ return new Date(Date.now() - days * 86_400_000).toISOString().slice(0, 10);
199
+ }
200
+ // ─── Tool: cpsc_recalls ───────────────────────────────────────────
201
+ /**
202
+ * Fetch CPSC consumer-product RECALLS → curated recall rows + honest `_meta`.
203
+ * KEYLESS. All filters are optional; with NO filter given, RecallDateStart defaults
204
+ * to ~90 days ago (disclosed in a note) so the whole dataset is never silently
205
+ * fetched. The response is a bare array with no total-count field / no pagination
206
+ * ⇒ totalAvailable = the number of returned recalls, complete:true. An empty array
207
+ * ⇒ an honest empty; a 4xx ⇒ invalid_input; a 5xx/timeout ⇒ THROW; a 200 non-JSON
208
+ * OR a non-array body ⇒ schema_drift.
209
+ */
210
+ export async function recalls(args) {
211
+ validateArgs(args);
212
+ // ── Build the query from VALIDATED typed args, key-by-key (SSRF: no raw
213
+ // passthrough). format=json is ALWAYS appended. ──
214
+ const params = new URLSearchParams();
215
+ params.set("format", "json");
216
+ const filtersApplied = [];
217
+ if (args.dateStart !== undefined) {
218
+ params.set("RecallDateStart", args.dateStart);
219
+ filtersApplied.push("dateStart");
220
+ }
221
+ if (args.dateEnd !== undefined) {
222
+ params.set("RecallDateEnd", args.dateEnd);
223
+ filtersApplied.push("dateEnd");
224
+ }
225
+ if (args.productName !== undefined) {
226
+ params.set("ProductName", args.productName);
227
+ filtersApplied.push("productName");
228
+ }
229
+ if (args.manufacturer !== undefined) {
230
+ params.set("Manufacturer", args.manufacturer);
231
+ filtersApplied.push("manufacturer");
232
+ }
233
+ if (args.recallNumber !== undefined) {
234
+ params.set("RecallNumber", args.recallNumber);
235
+ filtersApplied.push("recallNumber");
236
+ }
237
+ // ── DEFAULT-WINDOW: with NO filter, an unbounded fetch would return the WHOLE
238
+ // dataset. Bound it to a ~90-day recent window (RecallDateStart) and DISCLOSE
239
+ // the default — never silently fetch everything. ──
240
+ const notes = [KEYLESS_NOTE, CPSC_NO_PAGINATION_NOTE];
241
+ let defaultWindowApplied = false;
242
+ if (filtersApplied.length === 0) {
243
+ const defaultStart = daysAgoIso(CPSC_DEFAULT_WINDOW_DAYS);
244
+ params.set("RecallDateStart", defaultStart);
245
+ defaultWindowApplied = true;
246
+ notes.push(`No filter was provided — to avoid silently fetching the ENTIRE recall dataset, results are bounded to a default recent window: RecallDateStart=${defaultStart} (~${CPSC_DEFAULT_WINDOW_DAYS} days ago). Pass dateStart/dateEnd, productName, manufacturer, or recallNumber for a scoped query.`);
247
+ }
248
+ // ── The typed catch-ladder (nhtsa.ts / datagov-catalog.ts shape, VERBATIM):
249
+ // a ToolErrorCarrier (host-assert / 4xx-5xx taxonomy) rethrows FIRST
250
+ // (preserving its kind); a 200 non-JSON `.json()` SyntaxError reclassifies to
251
+ // schema_drift; a bare error rethrows LAST. ──
252
+ let body;
253
+ try {
254
+ body = await getCpsc(params);
255
+ }
256
+ catch (e) {
257
+ if (e instanceof ToolErrorCarrier)
258
+ throw e;
259
+ if (e instanceof SyntaxError)
260
+ throw driftError(CPSC_RECALL_LABEL, "CPSC /RestWebServices/Recall returned a non-JSON body at HTTP 200 — schema drift (never read as an empty result).");
261
+ throw e;
262
+ }
263
+ // ── P4: the top-level body MUST be an array (a non-array object/string/null is
264
+ // drift, never a fabricated empty). ──
265
+ if (!Array.isArray(body)) {
266
+ throw driftError(CPSC_RECALL_LABEL, "CPSC /RestWebServices/Recall shape drift — the response must be a bare JSON array.");
267
+ }
268
+ const recalls = body.map(mapRecall);
269
+ const returned = recalls.length;
270
+ return withMeta({ recalls }, {
271
+ source: `${CPSC_HOST} /RestWebServices/Recall (CPSC consumer-product recalls; keyless)`,
272
+ keylessMode: true,
273
+ returned,
274
+ // P1 — no upstream total-count field / no pagination: the complete set IS the
275
+ // returned rows, so totalAvailable = returned and complete:true (derived).
276
+ totalAvailable: returned,
277
+ filtersApplied: defaultWindowApplied ? ["dateStart(default)"] : filtersApplied,
278
+ filtersDropped: [],
279
+ fieldsUnavailable: [],
280
+ notes,
281
+ });
282
+ }
283
+ //# sourceMappingURL=cpsc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpsc.js","sourceRoot":"","sources":["../src/cpsc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAsC,MAAM,WAAW,CAAC;AAEzE,qEAAqE;AACrE,MAAM,CAAC,MAAM,SAAS,GAAG,uBAAuB,CAAC;AACjD,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AACnD,mFAAmF;AACnF,yEAAyE;AACzE,MAAM,iBAAiB,GAAG,8BAA8B,CAAC;AAEzD,qEAAqE;AACrE,+EAA+E;AAC/E,8EAA8E;AAC9E,0DAA0D;AAC1D,MAAM,CAAC,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAClD,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAEvD,+EAA+E;AAC/E,wDAAwD;AACxD,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAEpC,MAAM,YAAY,GAChB,0GAA0G,CAAC;AAC7G,gEAAgE;AAChE,MAAM,uBAAuB,GAC3B,uMAAuM,CAAC;AAE1M,qEAAqE;AACrE;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,CAAU,EAAE,KAAa;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,KAAK,QAAQ;YAAE,SAAS;QACpD,MAAM,CAAC,GAAG,GAAG,CAAE,EAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,QAAiB;IAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,SAAS;QAClD,MAAM,CAAC,GAAG,GAAG,CAAE,CAA6B,CAAC,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAmBD;;;;GAIG;AACH,SAAS,SAAS,CAAC,GAAY;IAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAA4B,CAAC;IACjD,OAAO;QACL,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC;QACjC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;QAC7B,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QACnB,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;QAC/B,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACf,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1C,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7C,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC;QACpD,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC;QAC5C,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC;QACxC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1C,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1C,+EAA+E;QAC/E,qBAAqB,EAAE,YAAY,CAAC,CAAC,CAAC,qBAAqB,EAAE,SAAS,CAAC;KACxE,CAAC;AACJ,CAAC;AAWD;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,IAAqB;IACzC,MAAM,UAAU,GAAwC;QACtD,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;QAC7B,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;KAC1B,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QACvC,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACpF,MAAM,IAAI,gBAAgB,CAAC;gBACzB,IAAI,EAAE,eAAe;gBACrB,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,WAAW,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,4EAA4E;gBAC7H,gBAAgB,EAAE,iBAAiB;aACpC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,IACE,IAAI,CAAC,YAAY,KAAK,SAAS;QAC/B,CAAC,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EACzF,CAAC;QACD,MAAM,IAAI,gBAAgB,CAAC;YACzB,IAAI,EAAE,eAAe;YACrB,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,wBAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,yEAAyE;YAC3I,gBAAgB,EAAE,iBAAiB;SACpC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI;QAC1B,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC;QACjC,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC;KACG,EAAE,CAAC;QACzC,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,IAAI,gBAAgB,CAAC;gBACzB,IAAI,EAAE,eAAe;gBACrB,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,WAAW,IAAI,uBAAuB;gBAC/C,gBAAgB,EAAE,iBAAiB;aACpC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE;;;;;;GAMG;AACH,KAAK,UAAU,OAAO,CAAC,MAAuB;IAC5C,MAAM,GAAG,GAAG,WAAW,SAAS,GAAG,gBAAgB,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC3E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,gBAAgB,CAAC;YACzB,IAAI,EAAE,eAAe;YACrB,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,6BAA6B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,QAAQ,mCAAmC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gDAAgD;YACnM,gBAAgB,EAAE,iBAAiB;SACpC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,mFAAmF;AACnF,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,qEAAqE;AACrE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAqB;IACjD,YAAY,CAAC,IAAI,CAAC,CAAC;IAEnB,yEAAyE;IACzE,sDAAsD;IACtD,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9C,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAED,+EAA+E;IAC/E,iFAAiF;IACjF,uDAAuD;IACvD,MAAM,KAAK,GAAa,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;IAChE,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,UAAU,CAAC,wBAAwB,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QAC5C,oBAAoB,GAAG,IAAI,CAAC;QAC5B,KAAK,CAAC,IAAI,CACR,kJAAkJ,YAAY,MAAM,wBAAwB,oGAAoG,CACjS,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,wEAAwE;IACxE,iFAAiF;IACjF,kDAAkD;IAClD,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,gBAAgB;YAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,WAAW;YAC1B,MAAM,UAAU,CACd,iBAAiB,EACjB,mHAAmH,CACpH,CAAC;QACJ,MAAM,CAAC,CAAC;IACV,CAAC;IAED,gFAAgF;IAChF,0CAA0C;IAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,UAAU,CACd,iBAAiB,EACjB,oFAAoF,CACrF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAI,IAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAEhC,OAAO,QAAQ,CACb,EAAE,OAAO,EAAE,EACX;QACE,MAAM,EAAE,GAAG,SAAS,mEAAmE;QACvF,WAAW,EAAE,IAAI;QACjB,QAAQ;QACR,8EAA8E;QAC9E,2EAA2E;QAC3E,cAAc,EAAE,QAAQ;QACxB,cAAc,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,cAAc;QAC9E,cAAc,EAAE,EAAE;QAClB,iBAAiB,EAAE,EAAE;QACrB,KAAK;KAC0B,CAClC,CAAC;AACJ,CAAC"}
package/dist/dol.d.ts CHANGED
@@ -12,7 +12,7 @@
12
12
  * • `dol_get_dataset` (KEY-REQUIRED, DOL_API_KEY) — GET
13
13
  * /v4/get/{agency}/{endpoint}/json?… . The DATA endpoint has NO keyless tier, so
14
14
  * with NO `DOL_API_KEY` this tool THROWS an invalid_input config error BEFORE any
15
- * fetch (0 network call; the message names DOL_API_KEY + dol.gov/developer).
15
+ * fetch (0 network call; the message names DOL_API_KEY + dataportal.dol.gov/registration).
16
16
  * So DOL is the 4th REQUIRED key — but ONLY for the data tool; the catalog tool
17
17
  * (and every other tool on the server) stays keyless.
18
18
  *
@@ -44,7 +44,7 @@
44
44
  *
45
45
  * ★HONESTY (ADR-0053 P1–P4 + KEY + SSRF):
46
46
  * [KEY] dol_get_dataset with NO DOL_API_KEY ⇒ invalid_input THROW pre-fetch (0
47
- * fetch); the message names DOL_API_KEY + dol.gov/developer. The key rides the
47
+ * fetch); the message names DOL_API_KEY + dataportal.dol.gov/registration. The key rides the
48
48
  * `X-API-KEY` HEADER ONLY — NEVER the URL / label / _meta / notes / a log (the
49
49
  * K-test). dol_list_datasets is keyless (no key read, no header).
50
50
  * [P1] catalog: totalAvailable = meta.total_count (the API's real catalog total)
package/dist/dol.js CHANGED
@@ -12,7 +12,7 @@
12
12
  * • `dol_get_dataset` (KEY-REQUIRED, DOL_API_KEY) — GET
13
13
  * /v4/get/{agency}/{endpoint}/json?… . The DATA endpoint has NO keyless tier, so
14
14
  * with NO `DOL_API_KEY` this tool THROWS an invalid_input config error BEFORE any
15
- * fetch (0 network call; the message names DOL_API_KEY + dol.gov/developer).
15
+ * fetch (0 network call; the message names DOL_API_KEY + dataportal.dol.gov/registration).
16
16
  * So DOL is the 4th REQUIRED key — but ONLY for the data tool; the catalog tool
17
17
  * (and every other tool on the server) stays keyless.
18
18
  *
@@ -44,7 +44,7 @@
44
44
  *
45
45
  * ★HONESTY (ADR-0053 P1–P4 + KEY + SSRF):
46
46
  * [KEY] dol_get_dataset with NO DOL_API_KEY ⇒ invalid_input THROW pre-fetch (0
47
- * fetch); the message names DOL_API_KEY + dol.gov/developer. The key rides the
47
+ * fetch); the message names DOL_API_KEY + dataportal.dol.gov/registration. The key rides the
48
48
  * `X-API-KEY` HEADER ONLY — NEVER the URL / label / _meta / notes / a log (the
49
49
  * K-test). dol_list_datasets is keyless (no key read, no header).
50
50
  * [P1] catalog: totalAvailable = meta.total_count (the API's real catalog total)
@@ -95,7 +95,7 @@ const DEFAULT_GET_LIMIT = 10;
95
95
  const MAX_GET_LIMIT = 100;
96
96
  const DEFAULT_LIST_LIMIT = 25;
97
97
  // ─── Honesty notes ────────────────────────────────────────────────
98
- const KEY_REQUIRED_NOTE = "dol_get_dataset REQUIRES a free DOL_API_KEY (the DOL data endpoint has no keyless tier; the CATALOG — dol_list_datasets — and agency list are keyless). Get a key at https://dol.gov/developer. The key is sent ONLY in the X-API-KEY request header and is NEVER logged, echoed, or placed in this response.";
98
+ const KEY_REQUIRED_NOTE = "dol_get_dataset REQUIRES a free DOL_API_KEY (the DOL data endpoint has no keyless tier; the CATALOG — dol_list_datasets — and agency list are keyless). Get a key at https://dataportal.dol.gov/registration. The key is sent ONLY in the X-API-KEY request header and is NEVER logged, echoed, or placed in this response.";
99
99
  const DATA_ENVELOPE_NOTE = "The DOL data-record envelope is key-gated and could not be verified live, so records are returned VERBATIM (each dataset has its own enforcement schema — field names and values are preserved as-is; a value is NOT coerced, so a genuine 0 stays 0 and a missing field stays null).";
100
100
  const DATA_NO_TOTAL_NOTE = "totalAvailable is null: the DOL data endpoint reports no match count in a form this tool could verify. Page with limit/offset — when a full page is returned hasMore is true (page forward to confirm); an empty next page means the end. `returned` is NEVER passed off as the total.";
101
101
  const CATALOG_ENDPOINT_NOTE = "Feed a row's `apiUrl` (the dataset endpoint) plus its `agencyAbbr` into dol_get_dataset to fetch that dataset's records. agency/query filtering here is CLIENT-SIDE (the DOL catalog API does not filter server-side).";
@@ -241,7 +241,7 @@ export async function getDataset(args) {
241
241
  throw new ToolErrorCarrier({
242
242
  kind: "invalid_input",
243
243
  retryable: false,
244
- message: "The DOL data endpoint requires a free DOL_API_KEY (the dataset CATALOG, dol_list_datasets, is keyless). Get one at https://dol.gov/developer and set DOL_API_KEY.",
244
+ message: "The DOL data endpoint requires a free DOL_API_KEY (the dataset CATALOG, dol_list_datasets, is keyless). Get one at https://dataportal.dol.gov/registration and set DOL_API_KEY.",
245
245
  upstreamEndpoint: label,
246
246
  });
247
247
  }
@@ -321,7 +321,7 @@ export async function getDataset(args) {
321
321
  throw new ToolErrorCarrier({
322
322
  kind: "invalid_input",
323
323
  retryable: false,
324
- message: "DOL rejected the request as unauthorized (HTTP 401/403) — DOL_API_KEY is missing or invalid. Check the key (free at https://dol.gov/developer).",
324
+ message: "DOL rejected the request as unauthorized (HTTP 401/403) — DOL_API_KEY is missing or invalid. Check the key (free at https://dataportal.dol.gov/registration).",
325
325
  upstreamStatus: status,
326
326
  upstreamEndpoint: label,
327
327
  });
package/dist/dol.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dol.js","sourceRoot":"","sources":["../src/dol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dol.js","sourceRoot":"","sources":["../src/dol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * epa-envirofacts.ts — EPA Envirofacts RESTful data service (`data.epa.gov`,
3
+ * `/efservice`), the `tri_facility` table (ADR-0059). KEYLESS.
4
+ *
5
+ * WHAT IT ADDS: `epa_tri_facilities` — a location/compliance lane: look up EPA
6
+ * Toxics Release Inventory (TRI) reporting facilities by state / facility-name /
7
+ * county. This is the demand-side environmental-footprint complement to the
8
+ * market-sizing (Census CBP) and macro (FRED) sources — a place-of-performance
9
+ * environmental screen for a given geography.
10
+ *
11
+ * ★THE TWO-REQUEST PATTERN (the load-bearing P1 honesty): the efservice REST API
12
+ * embeds filters as PATH SEGMENTS and reports NO total in the data slice. So the
13
+ * EXACT total comes from a SEPARATE count sub-query — the identical filter path
14
+ * with a `/count/JSON` tail returns `[{"TOTALQUERYRESULTS": 1247}]`. This tool
15
+ * runs the count FIRST (best-effort) then the data slice: totalAvailable =
16
+ * TOTALQUERYRESULTS (P1, EXACT), NEVER the returned rows' length. If the count
17
+ * sub-query fails or is absent, totalAvailable falls to null + a disclosing note
18
+ * (never a length-faked total) and the data slice still returns.
19
+ *
20
+ * The module writes ZERO fetch/coercion/error/meta code — it REUSES `getJson`
21
+ * (redirect:"error") / `driftError` (datasource.ts), `str`/`num` (coerce.ts,
22
+ * null-never-empty-string / null-never-0), and `withMeta`·`buildMeta` (meta.ts,
23
+ * offset pagination + totalAvailable). It MIRRORS census-economic.ts's
24
+ * fixed-host SSRF idiom (a single host const + a post-construction hostname/
25
+ * protocol assertion + redirect:"error") and datagov-catalog.ts's schema_drift
26
+ * catch-ladder (ToolErrorCarrier rethrow FIRST so a 5xx keeps its taxonomy →
27
+ * SyntaxError→driftError → bare rethrow).
28
+ *
29
+ * GET https://data.epa.gov/efservice/tri_facility/state_abbr/{ST}
30
+ * [/facility_name/CONTAINING/{NAME}] [/county_name/CONTAINING/{COUNTY}]
31
+ * /count/JSON → [{ "TOTALQUERYRESULTS": <int> }] (the total)
32
+ * GET …same filter path… /rows/{offset}:{offset+limit-1}/JSON
33
+ * → [{ tri_facility_id, facility_name, street_address, city_name,
34
+ * county_name, state_abbr, zip_code, region, fac_closed_ind, … }, …]
35
+ *
36
+ * ★ SSRF (the load-bearing guard — values ride as PATH SEGMENTS, not query params):
37
+ * the host is a compile-time literal (`EPA_HOST`); the table + column names + the
38
+ * `CONTAINING` operator + `rows`/`count`/`JSON` are all MODULE literals. Every
39
+ * USER value is BOTH charclass-validated (state `^[A-Za-z]{2}$`; facilityName/
40
+ * county letters/digits/space/&/-/. only, rejecting `/` and `..` path-traversal)
41
+ * AND `encodeURIComponent`-encoded before it joins the path. `offset`/`limit` are
42
+ * coerced to non-negative integers. A post-construction hostname/protocol
43
+ * assertion + `redirect:"error"` fail closed on any off-host 3xx.
44
+ *
45
+ * ★ HONESTY (ADR-0059 P1–P5, live-verified 2026-07-15 on data.epa.gov):
46
+ * [input] require at least `state` OR `facilityName` — an all-empty query is
47
+ * REFUSED with invalid_input (0 fetch) so the whole national table is
48
+ * never scanned.
49
+ * [P1] totalAvailable = the count sub-query's TOTALQUERYRESULTS (EXACT — e.g.
50
+ * VA = 1247), NOT the slice length. hasMore = offset+returned < total.
51
+ * Count fails/absent ⇒ totalAvailable:null + a disclosing note.
52
+ * [P2] an empty array ⇒ honest empty (returned:0, complete:true). getJson maps
53
+ * a 4xx/5xx via errorFromResponse and THROWS (503 ⇒ upstream_unavailable,
54
+ * 400 ⇒ invalid_input, 404 ⇒ not_found); a 200 non-array/non-JSON body ⇒
55
+ * schema_drift (NEVER a fabricated empty).
56
+ * [P3] fac_closed_ind ("0"/"1" live; "N"/"Y" per the schema) ⇒ a normalized
57
+ * boolean `closed` — an UNRECOGNIZED value ⇒ null (never a fabricated
58
+ * false). Addresses/names are strings via `str` (null-never-empty-string).
59
+ * [P4] a data body that is not an array ⇒ driftError; a count body missing
60
+ * TOTALQUERYRESULTS ⇒ totalAvailable:null (handled, not a crash).
61
+ */
62
+ import { str, num } from "./coerce.js";
63
+ import { type MetaBundle } from "./meta.js";
64
+ export { num, str };
65
+ export type TriFacility = {
66
+ triFacilityId: string | null;
67
+ facilityName: string | null;
68
+ streetAddress: string | null;
69
+ city: string | null;
70
+ county: string | null;
71
+ state: string | null;
72
+ zip: string | null;
73
+ region: string | null;
74
+ closed: boolean | null;
75
+ };
76
+ /**
77
+ * Normalize EPA's fac_closed_ind to a boolean. Live values are "0" (active) / "1"
78
+ * (closed); the schema also documents "N"/"Y". Anything else ⇒ null (unknown) —
79
+ * NEVER a fabricated false (P3).
80
+ */
81
+ export declare function normalizeClosed(v: unknown): boolean | null;
82
+ export type EpaTriFacilitiesArgs = {
83
+ state?: string;
84
+ facilityName?: string;
85
+ county?: string;
86
+ limit?: number;
87
+ offset?: number;
88
+ };
89
+ /**
90
+ * Look up EPA TRI reporting facilities by state / facilityName / county →
91
+ * normalized facility rows + honest `_meta`. Requires at least `state` OR
92
+ * `facilityName` (an all-empty query is refused). Runs a count sub-query FIRST for
93
+ * the EXACT total (P1), then the data slice; a count failure degrades to
94
+ * totalAvailable:null + a note (never a length-faked total).
95
+ */
96
+ export declare function triFacilities(args: EpaTriFacilitiesArgs): Promise<MetaBundle>;
97
+ //# sourceMappingURL=epa-envirofacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"epa-envirofacts.d.ts","sourceRoot":"","sources":["../src/epa-envirofacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAIH,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AAIzE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAkCpB,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAO1D;AAwCD,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAeF;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,UAAU,CAAC,CAgJrB"}