@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.
Files changed (89) hide show
  1. package/LICENSE +21 -21
  2. package/README.ja.md +248 -231
  3. package/README.ko.md +248 -231
  4. package/README.md +733 -714
  5. package/dist/errors.d.ts +10 -0
  6. package/dist/errors.d.ts.map +1 -1
  7. package/dist/errors.js.map +1 -1
  8. package/dist/feedback.d.ts +64 -0
  9. package/dist/feedback.d.ts.map +1 -0
  10. package/dist/feedback.js +131 -0
  11. package/dist/feedback.js.map +1 -0
  12. package/dist/server.d.ts.map +1 -1
  13. package/dist/server.js +48 -2
  14. package/dist/server.js.map +1 -1
  15. package/dist/update-check.d.ts +38 -0
  16. package/dist/update-check.d.ts.map +1 -0
  17. package/dist/update-check.js +85 -0
  18. package/dist/update-check.js.map +1 -0
  19. package/package.json +111 -111
  20. package/src/attachments.ts +652 -652
  21. package/src/bea.ts +372 -372
  22. package/src/bls.ts +1943 -1943
  23. package/src/cache.ts +73 -73
  24. package/src/cbp-border.ts +177 -177
  25. package/src/census-economic.ts +431 -431
  26. package/src/census.ts +735 -735
  27. package/src/ckan.ts +495 -495
  28. package/src/clinicaltrials.ts +923 -923
  29. package/src/cms-facility.ts +379 -379
  30. package/src/cms-hospital.ts +344 -344
  31. package/src/cms-supplier.ts +527 -527
  32. package/src/cms-utilization.ts +389 -389
  33. package/src/cms.ts +634 -634
  34. package/src/coerce.ts +47 -47
  35. package/src/courtlistener.ts +465 -465
  36. package/src/cpsc.ts +333 -333
  37. package/src/datagov-catalog.ts +312 -312
  38. package/src/datagov.ts +907 -907
  39. package/src/datagovKey.ts +68 -68
  40. package/src/datasource.ts +721 -721
  41. package/src/disclosure.ts +61 -61
  42. package/src/dol.ts +515 -515
  43. package/src/ecfr.ts +248 -248
  44. package/src/echo.ts +496 -496
  45. package/src/edgar.ts +3046 -3046
  46. package/src/epa-envirofacts.ts +358 -358
  47. package/src/errors.ts +324 -314
  48. package/src/fac.ts +529 -529
  49. package/src/far.ts +1009 -1009
  50. package/src/fdic.ts +2052 -2052
  51. package/src/federal-register.ts +725 -725
  52. package/src/feedback.ts +160 -0
  53. package/src/fema.ts +680 -680
  54. package/src/fpds.ts +620 -620
  55. package/src/fred.ts +464 -464
  56. package/src/gao.ts +744 -744
  57. package/src/gov-domains.ts +237 -237
  58. package/src/govinfo.ts +497 -497
  59. package/src/grants.ts +290 -290
  60. package/src/gsa-csv.ts +992 -992
  61. package/src/gsa-perdiem.ts +361 -361
  62. package/src/integrity.ts +928 -928
  63. package/src/keys.ts +268 -268
  64. package/src/lda.ts +385 -385
  65. package/src/meta.ts +292 -292
  66. package/src/nhtsa.ts +352 -352
  67. package/src/nih.ts +375 -375
  68. package/src/nist-controls.ts +219 -219
  69. package/src/nonprofit.ts +460 -460
  70. package/src/nppes.ts +834 -834
  71. package/src/nsf.ts +706 -706
  72. package/src/nvd.ts +1124 -1124
  73. package/src/nws-weather.ts +167 -167
  74. package/src/ofac.ts +1166 -1166
  75. package/src/openfda-device.ts +356 -356
  76. package/src/openfda-drugsfda.ts +313 -313
  77. package/src/openfda.ts +518 -518
  78. package/src/pricing.ts +1075 -1075
  79. package/src/sam-gov/client.ts +774 -774
  80. package/src/sam-gov/index.ts +32 -32
  81. package/src/sam-gov/types.ts +152 -152
  82. package/src/sba.ts +357 -357
  83. package/src/server.ts +6692 -6639
  84. package/src/snapshot.ts +223 -223
  85. package/src/socrata.ts +532 -532
  86. package/src/treasury.ts +582 -582
  87. package/src/update-check.ts +88 -0
  88. package/src/usaspending.ts +2852 -2852
  89. 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
+ }