@cliwant/mcp-sam-gov 1.5.0 → 1.7.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/LICENSE +21 -21
- package/README.ja.md +248 -231
- package/README.ko.md +248 -231
- package/README.md +733 -714
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/feedback.d.ts +64 -0
- package/dist/feedback.d.ts.map +1 -0
- package/dist/feedback.js +131 -0
- package/dist/feedback.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +48 -2
- package/dist/server.js.map +1 -1
- package/dist/update-check.d.ts +38 -0
- package/dist/update-check.d.ts.map +1 -0
- package/dist/update-check.js +85 -0
- package/dist/update-check.js.map +1 -0
- package/package.json +111 -111
- package/src/attachments.ts +652 -652
- package/src/bea.ts +372 -372
- package/src/bls.ts +1943 -1943
- package/src/cache.ts +73 -73
- package/src/cbp-border.ts +177 -177
- package/src/census-economic.ts +431 -431
- package/src/census.ts +735 -735
- package/src/ckan.ts +495 -495
- package/src/clinicaltrials.ts +923 -923
- package/src/cms-facility.ts +379 -379
- package/src/cms-hospital.ts +344 -344
- package/src/cms-supplier.ts +527 -527
- package/src/cms-utilization.ts +389 -389
- package/src/cms.ts +634 -634
- package/src/coerce.ts +47 -47
- package/src/courtlistener.ts +465 -465
- package/src/cpsc.ts +333 -333
- package/src/datagov-catalog.ts +312 -312
- package/src/datagov.ts +907 -907
- package/src/datagovKey.ts +68 -68
- package/src/datasource.ts +721 -721
- package/src/disclosure.ts +61 -61
- package/src/dol.ts +515 -515
- package/src/ecfr.ts +248 -248
- package/src/echo.ts +496 -496
- package/src/edgar.ts +3046 -3046
- package/src/epa-envirofacts.ts +358 -358
- package/src/errors.ts +324 -314
- package/src/fac.ts +529 -529
- package/src/far.ts +1009 -1009
- package/src/fdic.ts +2052 -2052
- package/src/federal-register.ts +725 -725
- package/src/feedback.ts +160 -0
- package/src/fema.ts +680 -680
- package/src/fpds.ts +620 -620
- package/src/fred.ts +464 -464
- package/src/gao.ts +744 -744
- package/src/gov-domains.ts +237 -237
- package/src/govinfo.ts +497 -497
- package/src/grants.ts +290 -290
- package/src/gsa-csv.ts +992 -992
- package/src/gsa-perdiem.ts +361 -361
- package/src/integrity.ts +928 -928
- package/src/keys.ts +268 -268
- package/src/lda.ts +385 -385
- package/src/meta.ts +292 -292
- package/src/nhtsa.ts +352 -352
- package/src/nih.ts +375 -375
- package/src/nist-controls.ts +219 -219
- package/src/nonprofit.ts +460 -460
- package/src/nppes.ts +834 -834
- package/src/nsf.ts +706 -706
- package/src/nvd.ts +1124 -1124
- package/src/nws-weather.ts +167 -167
- package/src/ofac.ts +1166 -1166
- package/src/openfda-device.ts +356 -356
- package/src/openfda-drugsfda.ts +313 -313
- package/src/openfda.ts +518 -518
- package/src/pricing.ts +1075 -1075
- package/src/sam-gov/client.ts +774 -774
- package/src/sam-gov/index.ts +32 -32
- package/src/sam-gov/types.ts +152 -152
- package/src/sba.ts +357 -357
- package/src/server.ts +6692 -6639
- package/src/snapshot.ts +223 -223
- package/src/socrata.ts +532 -532
- package/src/treasury.ts +582 -582
- package/src/update-check.ts +88 -0
- package/src/usaspending.ts +2852 -2852
- package/src/usitc.ts +420 -420
package/src/coerce.ts
CHANGED
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* coerce.ts — the honesty-critical value coercions shared across the keyless
|
|
3
|
-
* DataSources (ADR-0005 v2 FIX-C: map-layer primitives, split out of the
|
|
4
|
-
* fetch-envelope port so each module stays single-concern).
|
|
5
|
-
*
|
|
6
|
-
* `num`/`str` return **null (NEVER 0 / never a fabricated string)** for absent
|
|
7
|
-
* values — a missing amount is an honest "unknown", never a data-absence-as-zero
|
|
8
|
-
* masquerade (the project's forbidden failure class). This is the single most
|
|
9
|
-
* duplicated honesty primitive across the sources; hoisting ONE audited copy
|
|
10
|
-
* removes the 3-way drift risk (a `num` regression now fails Treasury AND Socrata
|
|
11
|
-
* suites at once instead of silently in one).
|
|
12
|
-
*
|
|
13
|
-
* Byte-identical to Treasury's + Socrata's prior LOCAL copies:
|
|
14
|
-
* - `num` is identical in both (and, per ADR-0005 v2, output-equivalent to
|
|
15
|
-
* EDGAR's — "NULL" etc. reach null via Number(...)=NaN either way).
|
|
16
|
-
* - `str` adopts the Treasury/Socrata convention (null for ""/"null"). It is
|
|
17
|
-
* output-identical to BOTH over their real input domains. EDGAR's `str` does
|
|
18
|
-
* NOT null the literal "null" (ADR-0005 v2 FIX-A), so EDGAR keeps its own
|
|
19
|
-
* local `str` and is NOT migrated here (EDGAR is deferred anyway per FIX-B).
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Coerce an inconsistently-typed value field to `number | null`.
|
|
24
|
-
*
|
|
25
|
-
* Returns **null (NEVER 0)** for absent values: `null`/`undefined`, the literal
|
|
26
|
-
* string `"null"`, `""`/whitespace (CRITICAL — `Number("")` is 0, so this MUST
|
|
27
|
-
* be caught explicitly), and the `"(-)"`/`"-"` placeholders. Numeric strings
|
|
28
|
-
* parse; numbers pass through (a non-finite number → null).
|
|
29
|
-
*/
|
|
30
|
-
export function num(x: unknown): number | null {
|
|
31
|
-
if (x === null || x === undefined) return null;
|
|
32
|
-
if (typeof x === "number") return Number.isFinite(x) ? x : null;
|
|
33
|
-
if (typeof x === "string") {
|
|
34
|
-
const s = x.trim();
|
|
35
|
-
if (s === "" || s === "null" || s === "(-)" || s === "-") return null;
|
|
36
|
-
const n = Number(s);
|
|
37
|
-
return Number.isFinite(n) ? n : null;
|
|
38
|
-
}
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/** null for absent (null/undefined/""/whitespace/"null"), else the trimmed string. */
|
|
43
|
-
export function str(x: unknown): string | null {
|
|
44
|
-
if (x === null || x === undefined) return null;
|
|
45
|
-
const s = String(x).trim();
|
|
46
|
-
return s === "" || s === "null" ? null : s;
|
|
47
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* coerce.ts — the honesty-critical value coercions shared across the keyless
|
|
3
|
+
* DataSources (ADR-0005 v2 FIX-C: map-layer primitives, split out of the
|
|
4
|
+
* fetch-envelope port so each module stays single-concern).
|
|
5
|
+
*
|
|
6
|
+
* `num`/`str` return **null (NEVER 0 / never a fabricated string)** for absent
|
|
7
|
+
* values — a missing amount is an honest "unknown", never a data-absence-as-zero
|
|
8
|
+
* masquerade (the project's forbidden failure class). This is the single most
|
|
9
|
+
* duplicated honesty primitive across the sources; hoisting ONE audited copy
|
|
10
|
+
* removes the 3-way drift risk (a `num` regression now fails Treasury AND Socrata
|
|
11
|
+
* suites at once instead of silently in one).
|
|
12
|
+
*
|
|
13
|
+
* Byte-identical to Treasury's + Socrata's prior LOCAL copies:
|
|
14
|
+
* - `num` is identical in both (and, per ADR-0005 v2, output-equivalent to
|
|
15
|
+
* EDGAR's — "NULL" etc. reach null via Number(...)=NaN either way).
|
|
16
|
+
* - `str` adopts the Treasury/Socrata convention (null for ""/"null"). It is
|
|
17
|
+
* output-identical to BOTH over their real input domains. EDGAR's `str` does
|
|
18
|
+
* NOT null the literal "null" (ADR-0005 v2 FIX-A), so EDGAR keeps its own
|
|
19
|
+
* local `str` and is NOT migrated here (EDGAR is deferred anyway per FIX-B).
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Coerce an inconsistently-typed value field to `number | null`.
|
|
24
|
+
*
|
|
25
|
+
* Returns **null (NEVER 0)** for absent values: `null`/`undefined`, the literal
|
|
26
|
+
* string `"null"`, `""`/whitespace (CRITICAL — `Number("")` is 0, so this MUST
|
|
27
|
+
* be caught explicitly), and the `"(-)"`/`"-"` placeholders. Numeric strings
|
|
28
|
+
* parse; numbers pass through (a non-finite number → null).
|
|
29
|
+
*/
|
|
30
|
+
export function num(x: unknown): number | null {
|
|
31
|
+
if (x === null || x === undefined) return null;
|
|
32
|
+
if (typeof x === "number") return Number.isFinite(x) ? x : null;
|
|
33
|
+
if (typeof x === "string") {
|
|
34
|
+
const s = x.trim();
|
|
35
|
+
if (s === "" || s === "null" || s === "(-)" || s === "-") return null;
|
|
36
|
+
const n = Number(s);
|
|
37
|
+
return Number.isFinite(n) ? n : null;
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** null for absent (null/undefined/""/whitespace/"null"), else the trimmed string. */
|
|
43
|
+
export function str(x: unknown): string | null {
|
|
44
|
+
if (x === null || x === undefined) return null;
|
|
45
|
+
const s = String(x).trim();
|
|
46
|
+
return s === "" || s === "null" ? null : s;
|
|
47
|
+
}
|