@cyanheads/wsdot-mcp-server 0.3.0 → 0.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.
- package/AGENTS.md +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +15 -11
- package/changelog/0.4.x/0.4.0.md +26 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-ferry-routes.tool.d.ts +9 -2
- package/dist/mcp-server/tools/definitions/get-ferry-routes.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-ferry-routes.tool.js +40 -5
- package/dist/mcp-server/tools/definitions/get-ferry-routes.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-ferry-schedule.tool.d.ts +10 -3
- package/dist/mcp-server/tools/definitions/get-ferry-schedule.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-ferry-schedule.tool.js +89 -19
- package/dist/mcp-server/tools/definitions/get-ferry-schedule.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-ferry-terminals.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/get-ferry-terminals.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-ferry-terminals.tool.js +12 -5
- package/dist/mcp-server/tools/definitions/get-ferry-terminals.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-mountain-passes.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/get-mountain-passes.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-mountain-passes.tool.js +9 -4
- package/dist/mcp-server/tools/definitions/get-mountain-passes.tool.js.map +1 -1
- package/dist/services/ferry/ferry-service.d.ts +20 -0
- package/dist/services/ferry/ferry-service.d.ts.map +1 -1
- package/dist/services/ferry/ferry-service.js +186 -49
- package/dist/services/ferry/ferry-service.js.map +1 -1
- package/dist/services/ferry/types.d.ts +52 -4
- package/dist/services/ferry/types.d.ts.map +1 -1
- package/dist/services/text-field.d.ts +31 -0
- package/dist/services/text-field.d.ts.map +1 -0
- package/dist/services/text-field.js +41 -0
- package/dist/services/text-field.js.map +1 -0
- package/dist/services/traffic/traffic-service.d.ts.map +1 -1
- package/dist/services/traffic/traffic-service.js +66 -86
- package/dist/services/traffic/traffic-service.js.map +1 -1
- package/dist/services/traffic/types.d.ts +3 -3
- package/dist/services/traffic/types.d.ts.map +1 -1
- package/dist/services/wcf-date.d.ts +6 -4
- package/dist/services/wcf-date.d.ts.map +1 -1
- package/dist/services/wcf-date.js +8 -4
- package/dist/services/wcf-date.js.map +1 -1
- package/package.json +1 -1
- package/server.json +3 -3
|
@@ -4,18 +4,21 @@
|
|
|
4
4
|
* .NET `DateTime.MinValue` sentinel so every mapper handles upstream dates identically.
|
|
5
5
|
* @module services/wcf-date
|
|
6
6
|
*/
|
|
7
|
+
import { nonBlank } from './text-field.js';
|
|
7
8
|
/** Decoded dates before this year are treated as the .NET `DateTime.MinValue` "no timestamp" sentinel. */
|
|
8
9
|
const MIN_VALID_YEAR = 1900;
|
|
9
10
|
/**
|
|
10
11
|
* Decode a WCF JSON date string (`/Date(ms±offset)/`) to an ISO 8601 UTC string.
|
|
11
12
|
*
|
|
12
|
-
* - `null` / `undefined
|
|
13
|
-
*
|
|
13
|
+
* - `null` / `undefined`, or a blank or whitespace-only string → `undefined` (the {@link nonBlank}
|
|
14
|
+
* rule every upstream string follows); a populated value is trimmed before decoding.
|
|
15
|
+
* - A value that doesn't match the WCF pattern is returned as-is (already ISO, or unknown shape).
|
|
14
16
|
* - `.NET DateTime.MinValue` (year 0001, e.g. `/Date(-62135568000000-0800)/`) is WSDOT's
|
|
15
17
|
* "no timestamp" sentinel and decodes to `undefined`, so callers omit the field rather than
|
|
16
18
|
* surfacing a year-0001 date.
|
|
17
19
|
*/
|
|
18
|
-
export function decodeWcfDate(
|
|
20
|
+
export function decodeWcfDate(raw) {
|
|
21
|
+
const value = nonBlank(raw);
|
|
19
22
|
if (value == null)
|
|
20
23
|
return;
|
|
21
24
|
const match = /^\/Date\((-?\d+)(?:[+-]\d{4})?\)\/$/.exec(value);
|
|
@@ -28,7 +31,8 @@ export function decodeWcfDate(value) {
|
|
|
28
31
|
}
|
|
29
32
|
/**
|
|
30
33
|
* 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
|
|
34
|
+
* value is absent, blank, or the MinValue sentinel — so the field is omitted from the normalized
|
|
35
|
+
* object.
|
|
32
36
|
*
|
|
33
37
|
* @example
|
|
34
38
|
* return { ...wcfDateField('dateUpdated', p.DateUpdated) };
|
|
@@ -1 +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
|
|
1
|
+
{"version":3,"file":"wcf-date.js","sourceRoot":"","sources":["../../src/services/wcf-date.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,0GAA0G;AAC1G,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,GAA8B;IAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,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;;;;;;;GAOG;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.
|
|
3
|
+
"version": "0.4.0",
|
|
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.
|
|
15
|
+
"version": "0.4.0",
|
|
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.
|
|
22
|
+
"version": "0.4.0",
|
|
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.
|
|
57
|
+
"version": "0.4.0",
|
|
58
58
|
"packageArguments": [
|
|
59
59
|
{
|
|
60
60
|
"type": "positional",
|