@cyanheads/wsdot-mcp-server 0.1.8 → 0.1.9

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 (47) hide show
  1. package/CLAUDE.md +1 -1
  2. package/README.md +4 -3
  3. package/changelog/0.1.x/0.1.9.md +18 -0
  4. package/dist/mcp-server/tools/definitions/get-border-waits.tool.d.ts +1 -0
  5. package/dist/mcp-server/tools/definitions/get-border-waits.tool.d.ts.map +1 -1
  6. package/dist/mcp-server/tools/definitions/get-border-waits.tool.js +29 -9
  7. package/dist/mcp-server/tools/definitions/get-border-waits.tool.js.map +1 -1
  8. package/dist/mcp-server/tools/definitions/get-ferry-alerts.tool.d.ts.map +1 -1
  9. package/dist/mcp-server/tools/definitions/get-ferry-alerts.tool.js +4 -2
  10. package/dist/mcp-server/tools/definitions/get-ferry-alerts.tool.js.map +1 -1
  11. package/dist/mcp-server/tools/definitions/get-ferry-routes.tool.d.ts.map +1 -1
  12. package/dist/mcp-server/tools/definitions/get-ferry-routes.tool.js +3 -2
  13. package/dist/mcp-server/tools/definitions/get-ferry-routes.tool.js.map +1 -1
  14. package/dist/mcp-server/tools/definitions/get-ferry-schedule.tool.d.ts.map +1 -1
  15. package/dist/mcp-server/tools/definitions/get-ferry-schedule.tool.js +7 -3
  16. package/dist/mcp-server/tools/definitions/get-ferry-schedule.tool.js.map +1 -1
  17. package/dist/mcp-server/tools/definitions/get-mountain-passes.tool.d.ts +4 -4
  18. package/dist/mcp-server/tools/definitions/get-mountain-passes.tool.d.ts.map +1 -1
  19. package/dist/mcp-server/tools/definitions/get-mountain-passes.tool.js +29 -12
  20. package/dist/mcp-server/tools/definitions/get-mountain-passes.tool.js.map +1 -1
  21. package/dist/mcp-server/tools/definitions/get-toll-rates.tool.d.ts.map +1 -1
  22. package/dist/mcp-server/tools/definitions/get-toll-rates.tool.js +5 -2
  23. package/dist/mcp-server/tools/definitions/get-toll-rates.tool.js.map +1 -1
  24. package/dist/mcp-server/tools/definitions/get-travel-times.tool.d.ts.map +1 -1
  25. package/dist/mcp-server/tools/definitions/get-travel-times.tool.js +9 -3
  26. package/dist/mcp-server/tools/definitions/get-travel-times.tool.js.map +1 -1
  27. package/dist/mcp-server/tools/definitions/search-alerts.tool.d.ts.map +1 -1
  28. package/dist/mcp-server/tools/definitions/search-alerts.tool.js +17 -5
  29. package/dist/mcp-server/tools/definitions/search-alerts.tool.js.map +1 -1
  30. package/dist/mcp-server/tools/definitions/search-cameras.tool.d.ts.map +1 -1
  31. package/dist/mcp-server/tools/definitions/search-cameras.tool.js +4 -1
  32. package/dist/mcp-server/tools/definitions/search-cameras.tool.js.map +1 -1
  33. package/dist/services/ferry/ferry-service.d.ts +6 -1
  34. package/dist/services/ferry/ferry-service.d.ts.map +1 -1
  35. package/dist/services/ferry/ferry-service.js +28 -25
  36. package/dist/services/ferry/ferry-service.js.map +1 -1
  37. package/dist/services/traffic/traffic-service.d.ts.map +1 -1
  38. package/dist/services/traffic/traffic-service.js +28 -19
  39. package/dist/services/traffic/traffic-service.js.map +1 -1
  40. package/dist/services/traffic/types.d.ts +14 -8
  41. package/dist/services/traffic/types.d.ts.map +1 -1
  42. package/dist/services/wcf-date.d.ts +25 -0
  43. package/dist/services/wcf-date.d.ts.map +1 -0
  44. package/dist/services/wcf-date.js +40 -0
  45. package/dist/services/wcf-date.js.map +1 -0
  46. package/package.json +1 -1
  47. package/server.json +3 -3
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @fileoverview Shared decoder for WCF JSON date strings (`/Date(ms±offset)/`) emitted by
3
+ * the WSDOT Traffic and WSF Ferry APIs. Centralizes ISO 8601 conversion and the
4
+ * .NET `DateTime.MinValue` sentinel so every mapper handles upstream dates identically.
5
+ * @module services/wcf-date
6
+ */
7
+ /** Decoded dates before this year are treated as the .NET `DateTime.MinValue` "no timestamp" sentinel. */
8
+ const MIN_VALID_YEAR = 1900;
9
+ /**
10
+ * Decode a WCF JSON date string (`/Date(ms±offset)/`) to an ISO 8601 UTC string.
11
+ *
12
+ * - `null` / `undefined` → `undefined`.
13
+ * - A value that doesn't match the WCF pattern is returned unchanged (already ISO, or unknown shape).
14
+ * - `.NET DateTime.MinValue` (year 0001, e.g. `/Date(-62135568000000-0800)/`) is WSDOT's
15
+ * "no timestamp" sentinel and decodes to `undefined`, so callers omit the field rather than
16
+ * surfacing a year-0001 date.
17
+ */
18
+ export function decodeWcfDate(value) {
19
+ if (value == null)
20
+ return;
21
+ const match = /^\/Date\((-?\d+)(?:[+-]\d{4})?\)\/$/.exec(value);
22
+ if (!match)
23
+ return value;
24
+ const date = new Date(Number(match[1]));
25
+ if (Number.isNaN(date.getTime()) || date.getUTCFullYear() < MIN_VALID_YEAR)
26
+ return;
27
+ return date.toISOString();
28
+ }
29
+ /**
30
+ * Spread-ready ISO date field. Decodes a WCF date and returns `{ [key]: iso }`, or `{}` when the
31
+ * value is absent or the MinValue sentinel — so the field is omitted from the normalized object.
32
+ *
33
+ * @example
34
+ * return { ...wcfDateField('dateUpdated', p.DateUpdated) };
35
+ */
36
+ export function wcfDateField(key, raw) {
37
+ const iso = decodeWcfDate(raw);
38
+ return iso == null ? {} : { [key]: iso };
39
+ }
40
+ //# sourceMappingURL=wcf-date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wcf-date.js","sourceRoot":"","sources":["../../src/services/wcf-date.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,0GAA0G;AAC1G,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,KAAgC;IAC5D,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO;IAC1B,MAAM,KAAK,GAAG,qCAAqC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,GAAG,cAAc;QAAE,OAAO;IACnF,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAM,EACN,GAA8B;IAE9B,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAwB,CAAC;AAClE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyanheads/wsdot-mcp-server",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "Query WA highway conditions, ferry schedules, vessel locations, toll rates, border waits, and alerts via MCP. STDIO or Streamable HTTP.",
5
5
  "mcpName": "io.github.cyanheads/wsdot-mcp-server",
6
6
  "type": "module",
package/server.json CHANGED
@@ -12,14 +12,14 @@
12
12
  "url": "https://wsdot.caseyjhand.com/mcp"
13
13
  }
14
14
  ],
15
- "version": "0.1.8",
15
+ "version": "0.1.9",
16
16
  "packages": [
17
17
  {
18
18
  "registryType": "npm",
19
19
  "registryBaseUrl": "https://registry.npmjs.org",
20
20
  "identifier": "@cyanheads/wsdot-mcp-server",
21
21
  "runtimeHint": "node",
22
- "version": "0.1.8",
22
+ "version": "0.1.9",
23
23
  "packageArguments": [
24
24
  {
25
25
  "type": "positional",
@@ -54,7 +54,7 @@
54
54
  "registryBaseUrl": "https://registry.npmjs.org",
55
55
  "identifier": "@cyanheads/wsdot-mcp-server",
56
56
  "runtimeHint": "node",
57
- "version": "0.1.8",
57
+ "version": "0.1.9",
58
58
  "packageArguments": [
59
59
  {
60
60
  "type": "positional",