@dangahagan/weather-mcp 1.33.16 → 1.33.17

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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![npm version](https://badge.fury.io/js/@dangahagan%2Fweather-mcp.svg)](https://www.npmjs.com/package/@dangahagan/weather-mcp)
4
4
  [![MCP Registry](https://img.shields.io/badge/MCP-Registry-blue)](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.dgahagan/weather-mcp)
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
- [![Tests](https://img.shields.io/badge/tests-4%2C206%20passing-brightgreen)](./docs/testing/TEST_SUITE_README.md)
6
+ [![Tests](https://img.shields.io/badge/tests-4%2C211%20passing-brightgreen)](./docs/testing/TEST_SUITE_README.md)
7
7
  [![Node](https://img.shields.io/badge/node-%3E%3D18-339933?logo=node.js&logoColor=white)](https://nodejs.org)
8
8
 
9
9
  **Give your AI assistant real weather data — 17 tools, zero API keys, zero signup, zero cost.**
@@ -58,7 +58,7 @@ Choose this one if you want:
58
58
 
59
59
  - **Genuinely free** — every data source is a free public API. No trial that expires, no credit card, no rate-limited "free tier" bait.
60
60
  - **No API keys** — install to first forecast in under a minute. Nothing to configure, nothing to leak into a repo. ([Three optional keys](#optional-api-keys) add extras if you want them; the default configuration needs none.)
61
- - **Fully open source** — MIT licensed, readable TypeScript, 4,206 tests. Audit it, fork it, fix it.
61
+ - **Fully open source** — MIT licensed, readable TypeScript, 4,211 tests. Audit it, fork it, fix it.
62
62
  - **Privacy-respecting** — your queries go directly from your machine to public weather APIs. No middleman server, no telemetry.
63
63
  - **Breadth** — 17 tools covering weather, safety hazards (lightning, floods, wildfires), marine conditions, air quality, and historical data back to 1940. Most weather MCPs stop at forecasts.
64
64
 
@@ -391,7 +391,7 @@ Being honest about what free public data can and can't do:
391
391
  ```bash
392
392
  npm run build # Compile TypeScript
393
393
  npm run dev # Run in development mode
394
- npm test # Run all 4,206 tests
394
+ npm test # Run all 4,211 tests
395
395
  npm run test:coverage # Coverage report
396
396
  npm run audit # Dependency vulnerability scan
397
397
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"nominatim.d.ts","sourceRoot":"","sources":["../../src/services/nominatim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAGV,uBAAuB,EAGxB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAQ1D,qDAAqD;AACrD,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IAGvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuD;IACtF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6C;IAE7E,YAAY,MAAM,GAAE,sBAA2B,EAuB9C;IAED;;;OAGG;YACW,WAAW;IAsFzB;;;;;;OAMG;YACW,gBAAgB;IAS9B;;;OAGG;IACH,OAAO,CAAC,WAAW;IAgCnB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;;;;OAOG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAU,EACjB,QAAQ,GAAE,MAAa,GACtB,OAAO,CAAC,uBAAuB,CAAC,CA2ClC;IAED;;;OAGG;YACW,WAAW;IAsEzB;;;;;;;;;;;;;;OAcG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyBhF;IAED;;;OAGG;YACW,mBAAmB;IA8BjC;;OAEG;IACH,aAAa,2CAEZ;IAED;;OAEG;IACH,UAAU,IAAI,IAAI,CAEjB;CACF"}
1
+ {"version":3,"file":"nominatim.d.ts","sourceRoot":"","sources":["../../src/services/nominatim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAGV,uBAAuB,EAGxB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAQ1D,qDAAqD;AACrD,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IAGvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuD;IACtF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6C;IAE7E,YAAY,MAAM,GAAE,sBAA2B,EAuB9C;IAED;;;OAGG;YACW,WAAW;IAsFzB;;;;;;OAMG;YACW,gBAAgB;IAU9B;;;OAGG;IACH,OAAO,CAAC,WAAW;IAgCnB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;;;;OAOG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAU,EACjB,QAAQ,GAAE,MAAa,GACtB,OAAO,CAAC,uBAAuB,CAAC,CA2ClC;IAED;;;OAGG;YACW,WAAW;IAsEzB;;;;;;;;;;;;;;OAcG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyBhF;IAED;;;OAGG;YACW,mBAAmB;IA8BjC;;OAEG;IACH,aAAa,2CAEZ;IAED;;OAEG;IACH,UAAU,IAAI,IAAI,CAEjB;CACF"}
@@ -119,7 +119,8 @@ export class NominatimService {
119
119
  await this.spacer.reserve((waitMs) => {
120
120
  logger.info('Rate limiting: waiting before next request', {
121
121
  service: 'Nominatim',
122
- waitTimeMs: waitMs
122
+ // The spacer's monotonic clock reads fractional ms; log whole ms.
123
+ waitTimeMs: Math.round(waitMs)
123
124
  });
124
125
  });
125
126
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nominatim.js","sourceRoot":"","sources":["../../src/services/nominatim.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nominatim.js","sourceRoot":"","sources":["../../src/services/nominatim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAQxE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,QAAQ,EACT,MAAM,uBAAuB,CAAC;AAE/B,qDAAqD;AACrD,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAS9C,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAgB;IACtB,KAAK,CAAQ;IACJ,MAAM,CAAgB;IACvC,yEAAyE;IACzE,sEAAsE;IACrD,cAAc,GAAG,IAAI,GAAG,EAA4C,CAAC;IACrE,eAAe,GAAG,IAAI,GAAG,EAAkC,CAAC;IAE7E,YAAY,MAAM,GAA2B,EAAE;QAC7C,MAAM,EACJ,OAAO,GAAG,qCAAqC,EAC/C,OAAO,GAAG,WAAW,CAAC,YAAY,EACnC,GAAG,MAAM,CAAC;QAEX,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,aAAa,CAAC,yBAAyB,CAAC,CAAC;QAE5E,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO;YACP,OAAO;YACP,OAAO,EAAE;gBACP,QAAQ,EAAE,kBAAkB;gBAC5B,YAAY,EAAE,YAAY,EAAE;aAC7B;SACF,CAAC,CAAC;QAEH,8CAA8C;QAC9C,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACnC,CAAC,QAAuB,EAAE,EAAE,CAAC,QAAQ,EACrC,CAAC,KAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAC/C,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,WAAW,CAAC,KAAiB;QACzC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAA8B,CAAC;YAE3D,cAAc;YACd,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;oBACxC,OAAO,EAAE,WAAW;oBACpB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,aAAa,EAAE,IAAI;iBACpB,CAAC,CAAC;gBACH,MAAM,IAAI,oBAAoB,CAC5B,WAAW,EACX,GAAG,IAAI,CAAC,KAAK,IAAI,4BAA4B,MAAM;oBACnD,kBAAkB;oBAClB,2CAA2C;oBAC3C,6CAA6C,CAC9C,CAAC;YACJ,CAAC;YAED,mBAAmB;YACnB,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;oBACjC,OAAO,EAAE,WAAW;oBACpB,aAAa,EAAE,IAAI;iBACpB,CAAC,CAAC;gBACH,MAAM,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC;YAED,4DAA4D;YAC5D,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnB,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,SAAS,EAAE;oBACpD,OAAO,EAAE,WAAW;oBACpB,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAC;gBACH,MAAM,IAAI,QAAQ,CAChB,6BAA6B,EAC7B,GAAG,EACH,WAAW,EACX,yDAAyD,EACzD,CAAC,0DAA0D,CAAC,CAC7D,CAAC;YACJ,CAAC;YAED,gBAAgB;YAChB,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;gBAClB,MAAM,IAAI,uBAAuB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACxD,CAAC;YAED,eAAe;YACf,MAAM,IAAI,QAAQ,CAChB,wBAAwB,MAAM,GAAG,EACjC,MAAM,EACN,WAAW,EACX,IAAI,CAAC,KAAK,IAAI,gBAAgB,EAC9B;gBACE,uDAAuD;gBACvD,+CAA+C;aAChD,CACF,CAAC;QACJ,CAAC;QAED,iBAAiB;QACjB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,IAAI,uBAAuB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAChE,MAAM,IAAI,uBAAuB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;QAED,gBAAgB;QAChB,MAAM,IAAI,QAAQ,CAChB,iCAAiC,KAAK,CAAC,OAAO,EAAE,EAChD,GAAG,EACH,WAAW,EACX,mBAAmB,KAAK,CAAC,OAAO,EAAE,EAClC;YACE,uDAAuD;YACvD,+CAA+C;SAChD,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,gBAAgB;QAC5B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACnC,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE;gBACxD,OAAO,EAAE,WAAW;gBACpB,kEAAkE;gBAClE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;aAC/B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,WAAW,CAAC,QAA2B;QAC7C,6CAA6C;QAC7C,IAAI,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEtD,+DAA+D;QAC/D,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO;mBAC1B,QAAQ,CAAC,OAAO,CAAC,IAAI;mBACrB,QAAQ,CAAC,OAAO,CAAC,IAAI;mBACrB,QAAQ,CAAC,OAAO,CAAC,YAAY;mBAC7B,QAAQ,CAAC,OAAO,CAAC,MAAM;mBACvB,IAAI,CAAC;QACZ,CAAC;QAED,wDAAwD;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEvD,OAAO;YACL,EAAE,EAAE,QAAQ,CAAC,QAAQ;YACrB,IAAI;YACJ,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;YAClC,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;YACnC,YAAY,EAAE,WAAW;YACzB,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE;YAC3D,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO;YAClC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK;YAC/B,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM;YAChC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM;YAChC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,IAAI;SAC5D,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,cAAc,CAAC,OAA2B;QAChD,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAE/B,MAAM,OAAO,GAA8B;YACzC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,MAAM;YAChB,gBAAgB,EAAE,MAAM;YACxB,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,6BAA6B;IACjE,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,cAAc,CAClB,KAAa,EACb,KAAK,GAAW,CAAC,EACjB,QAAQ,GAAW,IAAI;QAEvB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,oBAAoB,CAC5B,WAAW,EACX,8BAA8B,CAC/B,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,oBAAoB,CAC5B,WAAW,EACX,iDAAiD,CAClD,CAAC;QACJ,CAAC;QAED,+CAA+C;QAC/C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,oBAAoB,CAC5B,WAAW,EACX,gCAAgC,CACjC,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAElF,oBAAoB;QACpB,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAClF,OAAO,MAAiC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,+EAA+E;QAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE;aAC3B,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;aAC9D,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,WAAW,CACvB,KAAa,EACb,KAAa,EACb,QAAgB,EAChB,QAAgB;QAEhB,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,8CAA8C;YAC9C,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAE9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG;gBACb,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE;gBACf,MAAM,EAAE,MAAM;gBACd,KAAK;gBACL,cAAc,EAAE,CAAC;gBACjB,iBAAiB,EAAE,QAAQ;aAC5B,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAsB,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACnF,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE9C,oDAAoD;YACpD,MAAM,aAAa,GAA8B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAsB,EAAE,EAAE,CAC5F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CACtB,CAAC;YAEF,MAAM,MAAM,GAA4B;gBACtC,OAAO,EAAE,aAAa;gBACtB,iBAAiB,EAAE,cAAc;aAClC,CAAC;YAEF,wDAAwD;YACxD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAE3D,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;gBACxC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,WAAW,EAAE,aAAa,CAAC,MAAM;gBACjC,gBAAgB,EAAE,cAAc;aACjC,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,2CAA2C;QAC3C,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG;YACb,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE;YACf,MAAM,EAAE,MAAM;YACd,KAAK;YACL,cAAc,EAAE,CAAC;YACjB,iBAAiB,EAAE,QAAQ;SAC5B,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAsB,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACnF,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAE9C,MAAM,aAAa,GAA8B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAsB,EAAE,EAAE,CAC5F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CACtB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,aAAa;YACtB,iBAAiB,EAAE,cAAc;SAClC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,SAAiB;QACtD,kEAAkE;QAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAChC,iBAAiB,EACjB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EACnB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CACrB,CAAC;QAEF,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE,2BAA2B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;gBACrG,OAAO,MAAuB,CAAC;YACjC,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,+BAA+B;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE;aAC3B,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;aACnE,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,mBAAmB,CAC/B,QAAgB,EAChB,SAAiB,EACjB,QAAgB;QAEhB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9B,MAAM,MAAM,GAAG;YACb,GAAG,EAAE,QAAQ;YACb,GAAG,EAAE,SAAS;YACd,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,CAAC;SACR,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE,2BAA2B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;QACrG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAA2B,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACzF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE3B,MAAM,WAAW,GACf,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY;YACvC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE;YACzC,CAAC,CAAC,IAAI,CAAC;QAEX,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
@@ -7,9 +7,18 @@
7
7
  * The old shape (read the last-request time, sleep, write the time after the
8
8
  * sleep) let every caller that arrived during the sleep read the same stale
9
9
  * value and start together.
10
+ *
11
+ * A reservation alone spaces the *nominal* slots. When the event loop is
12
+ * blocked past two deadlines, Node delivers both overdue timers in one turn,
13
+ * so each waiter re-checks the last actual start on every wake and sleeps the
14
+ * remainder (G122).
10
15
  */
11
16
  export interface RequestSpacerDeps {
12
- /** Clock in ms. Defaults to `Date.now`. */
17
+ /**
18
+ * Clock in ms. Defaults to `performance.now`, a monotonic clock: only
19
+ * differences between readings are compared, so the epoch is irrelevant and
20
+ * a system-clock correction cannot stretch or shrink a wait.
21
+ */
13
22
  now?: () => number;
14
23
  /** Sleep for `ms`. Defaults to a ref'd global `setTimeout`, looked up at call time. */
15
24
  sleep?: (ms: number) => Promise<void>;
@@ -22,10 +31,17 @@ export interface RequestSpacerDeps {
22
31
  * which names the revisit trigger). The budget is whatever set of callers
23
32
  * share one instance. Pure and I/O-free apart from the injected clock and
24
33
  * sleep.
34
+ *
35
+ * Spacing is re-checked against the last actual start on every wake, so
36
+ * overdue timers delivered in one turn cannot dispatch together. A sleep that
37
+ * resolves without moving the clock is an injection error and rejects, rather
38
+ * than spinning.
25
39
  */
26
40
  export declare class RequestSpacer {
27
41
  private readonly minIntervalMs;
28
42
  private nextSlot;
43
+ /** Clock reading at which the most recent caller was released. */
44
+ private lastStart;
29
45
  private readonly now;
30
46
  private readonly sleep;
31
47
  constructor(minIntervalMs: number, deps?: RequestSpacerDeps);
@@ -38,5 +54,14 @@ export declare class RequestSpacer {
38
54
  * one synchronous run, with no `await` above the write.
39
55
  */
40
56
  reserve(onWait?: (waitMs: number) => void): Promise<void>;
57
+ /**
58
+ * After a wake: release if a full interval has passed since the last actual
59
+ * start, else sleep the remainder and look again. The read, the compare and
60
+ * the record are one synchronous run, so a sibling woken in the same turn
61
+ * sees the start just recorded. `onWait` is not called for these sleeps.
62
+ */
63
+ private recheck;
64
+ /** Record an actual start and keep later reservations behind it. */
65
+ private release;
41
66
  }
42
67
  //# sourceMappingURL=requestSpacer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"requestSpacer.d.ts","sourceRoot":"","sources":["../../src/utils/requestSpacer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,uFAAuF;IACvF,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,qBAAa,aAAa;IAMtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IALhC,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IAEtD,YACmB,aAAa,EAAE,MAAM,EACtC,IAAI,GAAE,iBAAsB,EAY7B;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAUxD;CACF"}
1
+ {"version":3,"file":"requestSpacer.d.ts","sourceRoot":"","sources":["../../src/utils/requestSpacer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,uFAAuF;IACvF,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,aAAa;IAQtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAPhC,OAAO,CAAC,QAAQ,CAA4B;IAC5C,kEAAkE;IAClE,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IAEtD,YACmB,aAAa,EAAE,MAAM,EACtC,IAAI,GAAE,iBAAsB,EAY7B;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAWxD;IAED;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IAef,oEAAoE;IACpE,OAAO,CAAC,OAAO;CAIhB"}
@@ -7,6 +7,11 @@
7
7
  * The old shape (read the last-request time, sleep, write the time after the
8
8
  * sleep) let every caller that arrived during the sleep read the same stale
9
9
  * value and start together.
10
+ *
11
+ * A reservation alone spaces the *nominal* slots. When the event loop is
12
+ * blocked past two deadlines, Node delivers both overdue timers in one turn,
13
+ * so each waiter re-checks the last actual start on every wake and sleeps the
14
+ * remainder (G122).
10
15
  */
11
16
  /**
12
17
  * Spaces request **starts** at least `minIntervalMs` apart.
@@ -16,10 +21,17 @@
16
21
  * which names the revisit trigger). The budget is whatever set of callers
17
22
  * share one instance. Pure and I/O-free apart from the injected clock and
18
23
  * sleep.
24
+ *
25
+ * Spacing is re-checked against the last actual start on every wake, so
26
+ * overdue timers delivered in one turn cannot dispatch together. A sleep that
27
+ * resolves without moving the clock is an injection error and rejects, rather
28
+ * than spinning.
19
29
  */
20
30
  export class RequestSpacer {
21
31
  minIntervalMs;
22
32
  nextSlot = Number.NEGATIVE_INFINITY;
33
+ /** Clock reading at which the most recent caller was released. */
34
+ lastStart = Number.NEGATIVE_INFINITY;
23
35
  now;
24
36
  sleep;
25
37
  constructor(minIntervalMs, deps = {}) {
@@ -27,7 +39,7 @@ export class RequestSpacer {
27
39
  if (typeof minIntervalMs !== 'number' || !Number.isFinite(minIntervalMs) || minIntervalMs < 0) {
28
40
  throw new RangeError('RequestSpacer minIntervalMs must be a finite number >= 0');
29
41
  }
30
- this.now = deps.now ?? (() => Date.now());
42
+ this.now = deps.now ?? (() => performance.now());
31
43
  // The global is read when a sleep starts, never captured at module load,
32
44
  // so a spy installed later still sees the call. The timer is ref'd: the
33
45
  // wait is short and a caller is awaiting it.
@@ -49,10 +61,34 @@ export class RequestSpacer {
49
61
  this.nextSlot = slot + this.minIntervalMs;
50
62
  const wait = slot - now;
51
63
  if (wait <= 0) {
64
+ this.release(now);
52
65
  return Promise.resolve();
53
66
  }
54
67
  onWait?.(wait);
55
- return this.sleep(wait);
68
+ return this.sleep(wait).then(() => this.recheck(now));
69
+ }
70
+ /**
71
+ * After a wake: release if a full interval has passed since the last actual
72
+ * start, else sleep the remainder and look again. The read, the compare and
73
+ * the record are one synchronous run, so a sibling woken in the same turn
74
+ * sees the start just recorded. `onWait` is not called for these sleeps.
75
+ */
76
+ recheck(before) {
77
+ const now = this.now();
78
+ if (now === before) {
79
+ return Promise.reject(new Error('RequestSpacer: the injected sleep resolved without advancing the injected clock'));
80
+ }
81
+ const due = this.lastStart + this.minIntervalMs;
82
+ if (now < due) {
83
+ return this.sleep(due - now).then(() => this.recheck(now));
84
+ }
85
+ this.release(now);
86
+ return Promise.resolve();
87
+ }
88
+ /** Record an actual start and keep later reservations behind it. */
89
+ release(now) {
90
+ this.lastStart = now;
91
+ this.nextSlot = Math.max(this.nextSlot, now + this.minIntervalMs);
56
92
  }
57
93
  }
58
94
  //# sourceMappingURL=requestSpacer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"requestSpacer.js","sourceRoot":"","sources":["../../src/utils/requestSpacer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH;;;;;;;;GAQG;AACH,MAAM,OAAO,aAAa;IAML,aAAa;IALxB,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC3B,GAAG,CAAe;IAClB,KAAK,CAAgC;IAEtD,YACmB,aAAqB,EACtC,IAAI,GAAsB,EAAE;6BADX,aAAa;QAG9B,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YAC9F,MAAM,IAAI,UAAU,CAAC,0DAA0D,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,yEAAyE;QACzE,wEAAwE;QACxE,6CAA6C;QAC7C,IAAI,CAAC,KAAK;YACR,IAAI,CAAC,KAAK;gBACV,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,MAAiC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;QACxB,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"requestSpacer.js","sourceRoot":"","sources":["../../src/utils/requestSpacer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAaH;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,aAAa;IAQL,aAAa;IAPxB,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC5C,kEAAkE;IAC1D,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC5B,GAAG,CAAe;IAClB,KAAK,CAAgC;IAEtD,YACmB,aAAqB,EACtC,IAAI,GAAsB,EAAE;6BADX,aAAa;QAG9B,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YAC9F,MAAM,IAAI,UAAU,CAAC,0DAA0D,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;QACjD,yEAAyE;QACzE,wEAAwE;QACxE,6CAA6C;QAC7C,IAAI,CAAC,KAAK;YACR,IAAI,CAAC,KAAK;gBACV,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,MAAiC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;QACxB,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACK,OAAO,CAAC,MAAc;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAC7F,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;YACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,oEAAoE;IAC5D,OAAO,CAAC,GAAW;QACzB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACpE,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dangahagan/weather-mcp",
3
- "version": "1.33.16",
3
+ "version": "1.33.17",
4
4
  "description": "MCP server giving AI assistants 17 weather tools with zero API keys: global forecasts, current conditions, alerts, air quality, marine conditions, lightning detection, radar imagery, river levels, wildfire tracking, and historical weather back to 1940. Built entirely on free public APIs (NOAA, Open-Meteo, USGS, NIFC).",
5
5
  "mcpName": "io.github.dgahagan/weather-mcp",
6
6
  "main": "dist/index.js",